From 85bd35d795dbc2c1e94b55963c916ebc3a14cd26 Mon Sep 17 00:00:00 2001 From: reebhub Date: Thu, 23 Apr 2020 16:50:02 +0300 Subject: [PATCH 01/56] RDoc-1703_TimeSeries Time Series Documentation for RavenDB 5.0 --- .../5.0/Raven.Documentation.Pages/.docs.json | 5 + .../document-extensions/.docs.json | 7 + .../document-extensions/timeseries/.docs.json | 41 +++ .../timeseries/client-api/.docs.json | 50 +++ .../client-api/api-overview.markdown | 85 +++++ .../bulk-timeseries-operations.markdown | 42 +++ .../client-api/creating-timeseries.markdown | 66 ++++ .../client-api/deleting-timeseries.markdown | 59 ++++ .../loading-and-including-timeseries.markdown | 82 +++++ .../client-api/modifying-timeseries.markdown | 66 ++++ .../client-api/patching-timeseries.markdown | 45 +++ .../time-series-and-the-changes-api.markdown | 44 +++ .../timeseries/design.markdown | 80 +++++ .../timeseries/indexing/.docs.json | 14 + .../timeseries/indexing/map-indexing.markdown | 49 +++ .../indexing/map-reduce-indexing.markdown | 37 +++ .../timeseries/overview.markdown | 98 ++++++ .../timeseries/querying/.docs.json | 14 + .../querying/dynamic-queries.markdown | 56 ++++ .../querying/indexed-queries.markdown | 33 ++ .../timeseries/rollup.markdown | 38 +++ .../timeseries-and-other-features/.docs.json | 26 ++ .../time-series-and-ongoing-tasks.markdown | 38 +++ ...eries-and-other-features-overview.markdown | 56 ++++ .../time-series-and-revisions.markdown | 45 +++ .../time-series-and-smuggler.markdown | 43 +++ .../TimeSeries/timeseries.cs | 307 ++++++++++++++++++ Raven.Documentation.Parser/Data/Category.cs | 6 +- 28 files changed, 1531 insertions(+), 1 deletion(-) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/bulk-timeseries-operations.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/creating-timeseries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/deleting-timeseries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/loading-and-including-timeseries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/modifying-timeseries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-timeseries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-and-the-changes-api.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-reduce-indexing.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-queries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-ongoing-tasks.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-revisions.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-smuggler.markdown create mode 100644 Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/timeseries.cs diff --git a/Documentation/5.0/Raven.Documentation.Pages/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/.docs.json index a091a1be82..484c05d3b1 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/.docs.json @@ -39,6 +39,11 @@ "Name": "Users Issues", "Mappings": [] }, + { + "Path": "/document-extensions", + "Name": "Document Extensions", + "Mappings": [] + }, { "Path": "/cloud", "Name": "Cloud", diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/.docs.json new file mode 100644 index 0000000000..35d6d96819 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/.docs.json @@ -0,0 +1,7 @@ +[ + { + "Path": "/timeseries", + "Name": "Time Series", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json new file mode 100644 index 0000000000..e0fd0a1a3a --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json @@ -0,0 +1,41 @@ +[ + { + "Path": "overview.markdown", + "Name": "Overview", + "DiscussionId": "2bc22ef1-450e-4ae9-aa6f-56b0b47977d9", + "Mappings": [] + }, + { + "Path": "/client-api", + "Name": "Client API", + "Mappings": [] + }, + { + "Path": "/querying", + "Name": "Querying", + "Mappings": [] + }, + { + "Path": "/indexing", + "Name": "Indexing", + "Mappings": [] + }, + { + "Path": "rollup.markdown", + "Name": "Rollup", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + + { + "Path": "/timeseries-and-other-features", + "Name": "Time Series and Other Features", + "Mappings": [] + }, + { + "Path": "design.markdown", + "Name": "Design", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json new file mode 100644 index 0000000000..a8659d1519 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json @@ -0,0 +1,50 @@ +[ + { + "Path": "api-overview.markdown", + "Name": "API Overview", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "creating-timeseries.markdown", + "Name": "Creating Time Series", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "deleting-timeseries.markdown", + "Name": "Deleting Time Series", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "modifying-timeseries.markdown", + "Name": "Modifying Time Series", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "bulk-timeseries-operations.markdown", + "Name": "Bulk Time Series Operations", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "loading-and-including-timeseries.markdown", + "Name": "Loading and Including Time Series", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "patching-timeseries.markdown", + "Name": "Patching Time Series", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "time-series-and-the-changes-api.markdown", + "Name": "Time Series and the Changes API", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown new file mode 100644 index 0000000000..c558a46b1f --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -0,0 +1,85 @@ +# Time Series API Overview +--- + +{NOTE: } + +* ... + +* In this page: + * [Managing Time Series]() + * []() +{NOTE/} + +--- + +{PANEL: Managing Time Series} + +Create, modify and delete time series using the `TimeSeriesFor` Session object. +You can Use `TimeSeriesFor` by **explicitly passing it a document ID** (without pre-loading the document). +You can also use `TimeSeriesFor` by passing it **the document object**. + +**code sample** + +* **Time Series methods**: + - `TimeSeriesFor.Append`: Add time points to those of an existing series, or create a new series if it doesn't exist. + - `TimeSeriesFor.Delete`: Delete a time series. + - `TimeSeriesFor.Remove`: Remove specific time points from a series. + - `TimeSeriesFor.Get`: Retrieve timepoints. + +* **Usage Flow**: + * Open a session. + * Create an instance of `TimeSeriesFor`. + * Either pass `TimeSeriesFor` an explicit document ID, -or- + * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + * Use time series methods to manage the document's time series. + * If you execute [Append]() or [Delete](), call `session.SaveChanges` for the action to take effect on the server. + +* `Append` timepoints + A time series can be created with a single time point, and + populated over time by appending it additional time points. + Time points that haven't been populated yet are marked nAn (not a number). + +* `Get` timepoints + [session.TimeSeriesFor.Get]() + +* `Remove` timepoints + [session.TimeSeriesFor.Remove]() + * Removing a single time point + * Removing a range of time points + +* `Delete` a time series + [session.TimeSeriesFor.Delete]() + +--- + +#### Success and Failure + +* As long as the document exists, time series actions (Append, Get, Delete etc.) always succeed. +* When a transaction that includes a time series modification fails for any reason (e.g. xxx), + the time series modification is reverted. + +--- + +####Managing Time Series Using `Operations` + +* In addition to working with the high-level Session, you can manage Time Series using the low-level [Operations](). + +* [TimeSeriesBatchOperation]() [does this exist?] + + can operate on a set of time series of different documents in a single request. + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/bulk-timeseries-operations.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/bulk-timeseries-operations.markdown new file mode 100644 index 0000000000..40ab3b3d19 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/bulk-timeseries-operations.markdown @@ -0,0 +1,42 @@ +# Bulk Time Series Operations +--- + +{NOTE: } + +* the difference between store and session +* timeseries can be created[, modified?] and removed in bulk [using the store interface] + +* In this page: + * [Adding Time Series In Bulk]() + * [Removing [deleting?] Time Series In Bulk]() + * [Adding Time Points In Bulk To a Series]() + * [Removing Time Points In Bulk From a Series]() +{NOTE/} + +--- + +{PANEL: Adding Time Series In Bulk} +{PANEL/} + +{PANEL: Removing [deleting?] Time Series In Bulk} +{PANEL/} + +{PANEL: Adding Time Points In Bulk To a Series} +{PANEL/} + +{PANEL: Removing Time Points In Bulk From a Series} +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/creating-timeseries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/creating-timeseries.markdown new file mode 100644 index 0000000000..18b4d14a11 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/creating-timeseries.markdown @@ -0,0 +1,66 @@ +# Creating Time Series +--- + +{NOTE: } + +* Use the [TimeSeriesFor]().`Append` method to **create** a new series or **add values** to an existing series. +* Use the [TimeSeriesFor]().`Remove` method to **remove** timeponits from a series. + +* In this page: + - Create a Series and Add Time Points + - Remove Time Points From a Series +{NOTE/} + +--- + +{PANEL: Create a Series and Add Time Points} + +* `Append` Syntax + - Appending timepoints using session.TimeSeriesFor.Append. + syntax (table) + code sample: a **single** time point + code sample: a **range** of time points + + + - Bulk operations using the **store** interface: + syntax (table) + code sample + {CODE-BLOCK:JSON} + using(var bulk = store.BulkInsert()) + using(var ts = bulk.TimeSeriesFor(string documentId, string name)) + { + ts.Append( ... ) + } + {CODE-BLOCK/} + +* `Append` Flow + - Open a session + - Create an instance of `TimeSeriesFor`. + * Either pass `TimeSeriesFor` an explicit document ID, -or- + Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + - Execute `TimeSeriesFor.Append` + - Execute `session.SaveChanges` for the changes to take effect + +**Note**: +Modifying a time series using `Append` only takes effect when `session.SaveChanges()` is executed. +{PANEL/} + +* **Code Sample** + +{PANEL: Remove Time Points From a Series} +... +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/deleting-timeseries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/deleting-timeseries.markdown new file mode 100644 index 0000000000..889cfdc24f --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/deleting-timeseries.markdown @@ -0,0 +1,59 @@ +# Deleting Time Series +--- + +{NOTE: } + +* All time series for a document are deleted when the document is deleted. + +* You can also use the [session.TimeSeriesFor.`Delete`]() method to remove a specific time series from a document. + +* In this page: + - [`Delete ` Syntax]() + - [`Delete ` Usage]() + - [Code Sample]() +{NOTE/} + +--- + +{PANEL: `Delete ` Syntax} + +**code sample** + +| Parameter | Type | Description | +|:-------------:|:-------------:|:-------------:| +| `timeSeriesName` | string | Time Series Name | +{PANEL/} + +{PANEL: `Delete ` Usage} + +* **Flow**: + * Open a session + * Create an instance of `TimeSeriesFor`. + * Either pass `TimeSeriesFor` an explicit document ID, -or- + * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + * Execute `TimeSeriesFor.Delete` + * Execute `session.SaveChanges` for the changes to take effect + +* **Note**: + * A time series you deleted will be removed only after the execution of `SaveChanges()`. + * Deleting a document deletes its time series as well. + * `Delete` will **not** generate an error if the time series doesn't exist. + +{PANEL/} + +{PANEL: Code Sample} +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/loading-and-including-timeseries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/loading-and-including-timeseries.markdown new file mode 100644 index 0000000000..8aa74379ba --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/loading-and-including-timeseries.markdown @@ -0,0 +1,82 @@ +# Loading and Including Time Series +--- + +{NOTE: } + +* Use [session.TimeSeriesFor.`Get`]() to retrieve the value of a time point or a range of timepoints. + [is there a `GetAll` method?] + +* Use []() to include a time series in a query before it is requested and minimize + clients' wait time. + +* In this page: + * [Loading Time Series]() + * [Loading Selected Time Points]() + * [Including Time Series]() +{NOTE/} + +--- + +{PANEL: Loading Time Series} + +#### `Get` syntax: + +* **code sample** +* **syntax (table)** + +--- + +#### `Get` usage Flow: + + * Open a session + * Create an instance of `TimeSeriesFor`. + * Either pass `TimeSeriesFor` an explicit document ID, -or- + * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + * Execute `TimeSeriesFor.Get` + +--- + +#### Retrieve a single Time Point: +**Code Sample** + +--- + +#### Retrieve a Range of Time Points +**Code Sample** + +{PANEL/} + +{PANEL: Including Time Series} + +You can [include](../../../client-api/how-to/handle-document-relationships#includes) time series while loading a document. +An included time series is retrieved in the same request as its owner-document and is held by the session, +so it can be immediately retrieved when needed with no additional remote calls. + + +* **Including time series when using [Session.Load](../../../client-api/session/loading-entities#session--loading-entities)**: + * Include a single time series using [?] + * Include multiple time series using [?] + + **code sample here** + +* **Including time series when using [Session.Query](../../../client-api/session/querying/how-to-query#session--querying--how-to-query)**: + * Include a single time series using [?] + * Include multiple time series using [?] + + **code sample here** + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/modifying-timeseries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/modifying-timeseries.markdown new file mode 100644 index 0000000000..cdf87e4b98 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/modifying-timeseries.markdown @@ -0,0 +1,66 @@ +# Modifying Time Series +--- + +{NOTE: } + +* Use the [TimeSeriesFor]().`Append` method to **create** a new series or **add values** to an existing series. +* Use the [TimeSeriesFor]().`Remove` method to **remove** timeponits from a series. + +* In this page: + - Adding Time Points To a Series + - Removing Time Points From a Series +{NOTE/} + +--- + +{PANEL: Create a Series and Add Time Points} + +* `Append` Syntax + - Appending timepoints using session.TimeSeriesFor.Append. + syntax (table) + code sample: a **single** time point + code sample: a **range** of time points + + + - Bulk operations using the **store** interface: + syntax (table) + code sample + {CODE-BLOCK:JSON} + using(var bulk = store.BulkInsert()) + using(var ts = bulk.TimeSeriesFor(string documentId, string name)) + { + ts.Append( ... ) + } + {CODE-BLOCK/} + +* `Append` Flow + - Open a session + - Create an instance of `TimeSeriesFor`. + * Either pass `TimeSeriesFor` an explicit document ID, -or- + Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + - Execute `TimeSeriesFor.Append` + - Execute `session.SaveChanges` for the changes to take effect + +**Note**: +Modifying a time series using `Append` only takes effect when `session.SaveChanges()` is executed. +{PANEL/} + +* **Code Sample** + +{PANEL: Remove Time Points From a Series} +... +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-timeseries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-timeseries.markdown new file mode 100644 index 0000000000..c531a6c062 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-timeseries.markdown @@ -0,0 +1,45 @@ +# Patching Time Series +--- + +{NOTE: } + +* Time series can be patched to a series of documents using the API or the Studio. + ... +* In this page: + * [Patching]() + * [Patch by Query]() + * [Query Samples]() + * [Patch by API]() + * [Code Samples]() +{NOTE/} + +--- + +{PANEL: Patching} +{PANEL/} + +{PANEL: Patch by Query} +{PANEL/} + +{PANEL: Query Samples} +{PANEL/} + +{PANEL: Patch by API} +{PANEL/} + +{PANEL: Code Samples} +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-and-the-changes-api.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-and-the-changes-api.markdown new file mode 100644 index 0000000000..39519efdf3 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-and-the-changes-api.markdown @@ -0,0 +1,44 @@ +# Time Series and the Changes API +--- + +{NOTE: } + +* The Changes API allows you to... +* Using Time Series with he Changes API benefits... + +* In this page: + * [Why Use Time Series with the Changes the API]() + * [Code Samples]() +{NOTE/} + +--- + +{PANEL: Why Use Time Series with the Changes the API} + +###Time Series and Changes API + +[Changes API](../../../client-api/changes/what-is-changes-api#changes-api) is a Push service, that can inform you of various changes on the Server, including [changes in time series values](). +You can target all time series, or specify the ones you wish to follow. + +* **Pushed Time Series Value** + [how does `Changes API` return time series values] +* The service is initiated by **time series Value Modification**. + +{PANEL/} + +{PANEL: Code Samples} +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown new file mode 100644 index 0000000000..4867d36b31 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown @@ -0,0 +1,80 @@ +# Time Series Design +--- + +{NOTE: } + +* ... + +* In this page: + * [Design]() + * []() + * []() +{NOTE/} + +--- + +{PANEL: Design} + +* A time series is an array of `Double` values. + Its keys are Time Points, ordered by time. + +- | Key| Value | Tag | +|:-------------:|:-------------:|:-------------:| +| Time Point | An array of Doubles | Optional, indicates the measurement origin;
A reference to the document | + +{INFO: Time Points} + +- **Units** + Time points are measured in milliseconds. Measurement ticks are rounded **down**. +- **Offset** + Each time-point in a time series' [segment]() is indicated by its **offset** from the previous point. +- **Distance** + Each offset's **distance** from the previous offset is also indicated. + This is helpful in series of a fixed change, like **1, 2, 3** - where the offset would normally be + 1 and the distance from the previous offset would be 0. + RavenDB uses these repeated 0's while compressing the series for storage, to minimize the amount + of storage needed for it. +- **Encoding** + We encode Time Series usinf Facebook Gorilla encoding. +{INFO/} + +--- + +#### References + +* The document refers to its time series extensions in its metadata. + - **The `HasTimeSeries` Flag** + When a time series is added to a document, RavenDB automatically sets a `HasTimeSeries` Flag in the document's metadata. + When all time series have been removed from a document, the server automatically removes this flag. +* A time series contains a reference to the document it extends, by the document's name. + +--- + +####Segments + +* A short series is contained in a single segment. +* A longer (over 32k) series is contained in multiple segments. +* A new segment is also opened when a long period of time [25 days?] has passed + since the last measurement. + +--- + +####Number of Time Series Per Document +... + +{PANEL/} + + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/.docs.json new file mode 100644 index 0000000000..c9598c56a2 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/.docs.json @@ -0,0 +1,14 @@ +[ + { + "Path": "map-indexing.markdown", + "Name": "Map Indexing", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "map-reduce-indexing.markdown", + "Name": "Map Reduce Indexing", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown new file mode 100644 index 0000000000..3d6a19f8c9 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown @@ -0,0 +1,49 @@ +# Time Series Map Indexing +--- + +{NOTE: } + +* + +* In this page: + * []() + * []() +{NOTE/} + +--- + +{PANEL: } + +### Time Series and Indexing + +Indexing time series can speed-up finding them and the documents that contain them. +RavenDB supports time series indexing **by name**, but **not by value**. + +* **Time Series indexing** + Re-indexing due to time series name modification is rare enough to pause no performance issues. + To index a document's time series by name, use [TimeSeriesFor](). + +* **Time Series Values indexing** + Indexing by values contained in time series is **not** provided, changing values will not trigger indexing of the document. + Time series are designed for high-throughput scenarios, and performance cannot afford the re-indexing cost of each change. + +**Map Index sample here** + +{PANEL/} + +{PANEL: } +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-reduce-indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-reduce-indexing.markdown new file mode 100644 index 0000000000..c4f89ac0e9 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-reduce-indexing.markdown @@ -0,0 +1,37 @@ +# Time Series Map Reduce Indexing +--- + +{NOTE: } + +* + +* In this page: + * []() + * []() +{NOTE/} + +--- + +{PANEL: } + +- What are Times Series Map Reduce indexes +- Samples + +{PANEL/} + +{PANEL: } +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown new file mode 100644 index 0000000000..1729195fd3 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown @@ -0,0 +1,98 @@ +# Time Series Overview +--- + +{NOTE: } + +* A Time Series is a dynamic array of keys coupled with timestamps, that + extends a document (much like [Counters]() and [attachments]() do). + Time Series are commonly used to measure the changes in an ongonig + process over time. + + You can, for example, populate a time series with the data streamed + from a wearable pulse monitor. The data regarding each heartbeat is + reported along with its timestamp, so the person's heart rate can be + concluded and monitored. + +* Time Series can be created and managed using a dedicated API, + and via RavenDB's [Studio](../../../studio/database/documents/document-view/additional-features/timeseries). + +* In this page: + * [Why use Time Series?](../document-extensions/timeseries/timeseries-overview#why-use-time-series?) + * [Overview](../../../client-api/session/counters/overview#overview) + * [Managing Time Series](../../../client-api/session/counters/overview#managing-counters) + * [Time Series Methods](../../../client-api/session/counters/overview#yime-series-methods) + * [Managing Counters using `Operations`](../../../client-api/session/counters/overview#managing-timeseries-using-operations) +{NOTE/} + +--- + +{PANEL: Why use Time Series?} + +Time series ease the storage and usage of long data sets created by fast-pace, dynamic processes. +They are referred to by documents' metadata, but **stored separately** so high-rate updates would +not invoke a document-change procedure. +A native Time Series API makes it easy to create dynamic statistics related to monitored processes. + +Time series are mainly used for data analysis. +Queries are often performed over a time window, e.g. an hour or a week, +to produce measurements like the min, average and max values during this window, +or to create a curve. +Useful statistics can be performed, for example, over memory measurements sent by +a device over a day, extrapolating high and low usage peaks and comparing the data +to that of other days. + +--- + +####Tracking Changes Over Time +... + +--- + +####Storing a Rapidly Updated Series +... + +{PANEL/} + +{PANEL: Overview} + +--- + +####Rollup and Rotation + +* Rollup + ... [write about rollup aggregation] +* Rotation + An expiration period can be defined so that time values that exceed it would be removed. + ... + +--- + +####Plotting + +...[for the Studio documentation: presenting queried time series values as a graph] + +--- + +####Time Series and Conflicts +... + +--- + +####Time Series Cost +... + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json new file mode 100644 index 0000000000..9ad7877f16 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json @@ -0,0 +1,14 @@ +[ + { + "Path": "dynamic-queries.markdown", + "Name": "Dynamic Queries", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "indexed-queries.markdown", + "Name": "Indexed Queries", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-queries.markdown new file mode 100644 index 0000000000..3218154203 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-queries.markdown @@ -0,0 +1,56 @@ +# Dynamic Time Series Queries +--- + +{NOTE: } + +* + +* In this page: + * []() + * []() +{NOTE/} + +--- + +{PANEL: } + +###Time Series and Queries + +Create queries **using code**, or send the server **raw queries** for execution. + +* Either way, you can query time series **by name** but **not by value**. + This is because queries are generally [based on indexes](), and time series are [not indexed](). +* Time series **can** be [projected](../../../indexes/querying/projections) from query results, as demonstrated in the following examples. + This way a client can get TS values from a query without downloading whole documents. + +* Use [Session.Query](../../../client-api/session/querying/how-to-query#session.query) to code queries yourself. + * **Returned Time Series Value** + ... + **query sample here** + +* Use [RawQuery](../../../client-api/session/querying/how-to-query#session.advanced.rawquery) to send the server raw RQL expressions for execution. + * You can use the [**TS method name here**] method. + **Returned Value** + + [**if there are TS and raw TS methods - samples of both here**] + [**sample of a TS query using a filter**] + [**sample of a TS query using projection**] + +{PANEL/} + +{PANEL: } +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown new file mode 100644 index 0000000000..737f2bcf95 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown @@ -0,0 +1,33 @@ +# Indexed Time Series Queries +--- + +{NOTE: } + +* + +* In this page: + * []() + * []() +{NOTE/} + +--- + +{PANEL: } +{PANEL/} + +{PANEL: } +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup.markdown new file mode 100644 index 0000000000..8743b4a92e --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup.markdown @@ -0,0 +1,38 @@ +# Time Series Rollup +--- + +{NOTE: } + +* Time series **Rollup** allows you to represent a large data set by a smaller + one, and use it for quick queries when the complete data set is not required. + + You can, for example, represent a long set of heartbeats data with a rollup set + that represents each hour of heartbeats by a single entry, containing the average + heartrate during this hour. + +* In this page: + * [The Rollup API]() + * [Code Samples]() +{NOTE/} + +--- + +{PANEL: The Rollup API} +{PANEL/} + +{PANEL: Code Samples} +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/.docs.json new file mode 100644 index 0000000000..a5939e9a6d --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/.docs.json @@ -0,0 +1,26 @@ +[ + { + "Path": "time-series-and-other-features-overview.markdown", + "Name": "Time Series and Other Features Overview", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "time-series-and-revisions.markdown", + "Name": "Time Series and Revisions", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "time-series-and-smuggler.markdown", + "Name": "Time Series and Smuggler", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "time-series-and-ongoing-tasks.markdown", + "Name": "Time Series and Ongoing Tasks", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-ongoing-tasks.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-ongoing-tasks.markdown new file mode 100644 index 0000000000..078a7e2a45 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-ongoing-tasks.markdown @@ -0,0 +1,38 @@ +# Time Series and Ongoing Tasks +--- + +{NOTE: } + +* This section describes the relationships between Time Series and Ongoing Tasks. + +* In this page: + * []() + * []() +{NOTE/} + +--- + +{PANEL: } + +###Time Series and Ongoing Tasks: + +Each [ongoing task](../../../studio/database/tasks/ongoing-tasks/general-info) relates to time series in its own way. + +* **Time series** and the **Backup task** +* **Time series** and the **External Replication task** + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown new file mode 100644 index 0000000000..f0161d7f1f --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown @@ -0,0 +1,56 @@ +# Time Series and Other Tasks - Overview +--- + +{NOTE: } + +* This section explains the relations of time series and other RavenDB features + in general. + +* In this page: + * []() + * []() +{NOTE/} + +--- + +{PANEL: } + +###Time Series and Other Features: Summary + +Use this table to find if and how various RavenDB features are triggered by time series, +and how the various features handle time series values. + +* In the **Triggered By** column: + * _Document Change_ - Feature is triggered by a time series Name update. + * _TS Value Modification_ - Feature is triggered by a time series Value modification. + * _Time Schedule_ - Feature is invoked by a pre-set time routine. + * _No Trigger_ - Feature is executed manually, through the Studio or by a Client. + +| **Feature** | **Triggered by** | +|-------------|:-------------| +| [Indexing]() | _Document Change_ | +| [LINQ Queries]() | _No trigger_ | +| [Raw Queries]() | _No trigger_ | +| [Smuggler]() | _No trigger_ | +| [Backup Task]() | _Time Schedule_ | +| [External Replication task]() | _Document Change_,
_TS Value Modification_ | +| [Changes API]() | _TS Value Modification_ | +| [Revision creation]() | _Document Change_ | + +{NOTE/} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-revisions.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-revisions.markdown new file mode 100644 index 0000000000..467e878444 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-revisions.markdown @@ -0,0 +1,45 @@ +# Time Series and Revisions +--- + +{NOTE: } + +* This section describes the relationships between Time Series and Ravedb's Revisions feature. + * [How time series are supported by revisions.] + * [How time series trigger revisions execution.] + +* In this page: + * []() + * []() +{NOTE/} + +--- + +{PANEL: } + +###Time Series and Revisions + +A [document revision](../../../client-api/session/revisions/what-are-revisions) stores all the document's time series' names, +but only selected timepoints [start and end timeponits?] + +* **Stored Time Series Values** + [specify how values are stored here] + +* Revisions-creation can be initiated by time series **name** modification. + * When the Revisions feature is enabled, the creation or deletion of a time series initiates the creation of a new document revision. + * Time series **value** modifications do **not** cause the creation of new revisions. + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-smuggler.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-smuggler.markdown new file mode 100644 index 0000000000..8a9bed92f3 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-smuggler.markdown @@ -0,0 +1,43 @@ +# Time Series and Smuggler +--- + +{NOTE: } + +* This section describes the relationships between Time Series and the Smuggler interface. + +* In this page: + * []() + * []() +{NOTE/} + +--- + +{PANEL: } + +###Time Series and Smuggler + +[Smuggler](../../../client-api/smuggler/what-is-smuggler) is a DocumentStore property, that can be used +to [export](../../../client-api/smuggler/what-is-smuggler#databasesmugglerexportoptions) chosen +database items to an external file or to [import](../../../client-api/smuggler/what-is-smuggler#databasesmugglerimportoptions) +database items from an existing file into the database. + +* **Transferred Time Series Values** + [how does smuggler transfer the series' values] +* To make Smuggler handle time series, include `DatabaseItemType.TimeSeries` in `OperateOnTypes`'s list of entities to import or export. + [sample here] + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/timeseries.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/timeseries.cs new file mode 100644 index 0000000000..2338e3f728 --- /dev/null +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/timeseries.cs @@ -0,0 +1,307 @@ +using System; +using Raven.Client.Documents; +using System.Linq; +using System.Collections.Generic; +using Raven.Client.Documents.Queries; +using System.Threading.Tasks; +using System.Threading; +using Raven.Client.Documents.Smuggler; + +namespace Rvn.Ch02 +{ + class Program + { + static void Main(string[] args) + { + var docStore = new DocumentStore + { + Urls = new[] { "http://localhost:8080" }, + Database = "products" + }; + docStore.Initialize(); + + #region counters_region_CountersFor_with_document_load + // Use CountersFor by passing it a document object + + // 1. Open a session + using (var session = docStore.OpenSession()) + { + // 2. Use the session to load a document. + var document = session.Load("products/1-C"); + + // 3. Create an instance of `CountersFor` + // Pass the document object returned from session.Load as a param. + var documentCounters = session.CountersFor(document); + + // 4. Use `CountersFor` methods to manage the product document's Counters + documentCounters.Delete("ProductLikes"); // Delete the "ProductLikes" Counter + documentCounters.Increment("ProductModified", 15); // Add 15 to Counter "ProductModified" + var counter = documentCounters.Get("DaysLeftForSale"); // Get value of "DaysLeftForSale" + + // 5. Save the changes to the session + session.SaveChanges(); + } + #endregion + + #region counters_region_CountersFor_without_document_load + // Use CountersFor without loading a document + + // 1. Open a session + using (var session = docStore.OpenSession()) + { + // 2. pass an explicit document ID to the CountersFor constructor + var documentCounters = session.CountersFor("products/1-C"); + + // 3. Use `CountersFor` methods to manage the product document's Counters + documentCounters.Delete("ProductLikes"); // Delete the "ProductLikes" Counter + documentCounters.Increment("ProductModified", 15); // Add 15 to Counter "ProductModified" + var counter = documentCounters.Get("DaysLeftForSale"); // Get "DaysLeftForSale"'s value + + // 4. Save changes to the session + session.SaveChanges(); + } + #endregion + + // remove a counter from a document + #region counters_region_Delete + // 1. Open a session + using (var session = docStore.OpenSession()) + { + // 2. pass CountersFor's constructor a document ID + var documentCounters = session.CountersFor("products/1-C"); + + // 3. Delete the "ProductLikes" Counter + documentCounters.Delete("ProductLikes"); + + // 4. Save changes to the session + session.SaveChanges(); + } + #endregion + + // Increment a counter's value + #region counters_region_Increment + // 1. Open a session + using (var session = docStore.OpenSession()) + { + // 2. pass CountersFor's constructor a document ID + var documentCounters = session.CountersFor("products/1-C"); + + // 3. Use `CountersFor.Increment` + documentCounters.Increment("ProductLikes"); // Increase "ProductLikes" by 1, or create it with a value of 1 + documentCounters.Increment("ProductDislikes", 1); // Increase "ProductDislikes" by 1, or create it with a value of 1 + documentCounters.Increment("ProductPageViews", 15); // Increase "ProductPageViews" by 15, or create it with a value of 15 + documentCounters.Increment("DaysLeftForSale", -10); // Decrease "DaysLeftForSale" by 10, or create it with a value of -10 + + // 4. Save changes to the session + session.SaveChanges(); + } + #endregion + + // get a counter's value by the counter's name + #region counters_region_Get + // 1. Open a session + using (var session = docStore.OpenSession()) + { + // 2. pass CountersFor's constructor a document ID + var documentCounters = session.CountersFor("products/1-C"); + + // 3. Use `CountersFor.Get` to retrieve a Counter's value + var DaysLeft = documentCounters.Get("DaysLeftForSale"); + Console.WriteLine("Days Left For Sale: " + DaysLeft); + } + #endregion + + // GetAll + #region counters_region_GetAll + // 1. Open a session + using (var session = docStore.OpenSession()) + { + // 2. pass CountersFor's constructor a document ID + var documentCounters = session.CountersFor("products/1-C"); + + // 3. Use GetAll to retrieve all of the document's Counters' names and values. + var counters = documentCounters.GetAll(); + + // list counters' names and values + foreach (var counter in counters) + { + Console.WriteLine("counter name: " + counter.Key + ", counter value: " + counter.Value); + } + } + #endregion + //Query a collection for documents with a Counter named "ProductLikes" + #region counters_region_query + using (var session = docStore.OpenSession()) + { + //Select documents from the "Products" collection, with a Counter named `ProductLikes`. + //Querying upon Counter values (e.g. using "Where") is not possible. + //In this example the documents that contain the Counter are NOT returned, only Counter values. + var query = session.Query() + .Select(product => RavenQuery.Counter(product, "ProductLikes")); + + var queryResults = query.ToList(); + + //Show ProductLikes's value, or NULL for documents with no such Counter. + foreach (var counterValue in queryResults) + { + Console.WriteLine("ProductLikes: " + counterValue); + } + } + #endregion + + //Query a collection for documents with a Counter named "ProductLikes" + using (var session = docStore.OpenSession()) + { + + #region counters_region_load_include1 + //include single Counters + var productPage = session.Load("products/1-C", includeBuilder => + includeBuilder.IncludeCounter("ProductLikes") + .IncludeCounter("ProductDislikes") + .IncludeCounter("ProductDownloads")); + #endregion + } + + using (var session = docStore.OpenSession()) + { + #region counters_region_load_include2 + //include multiple Counters + //note that you can combine the inclusion of Counters and documents. + var productPage = session.Load("orders/1-A", includeBuilder => + includeBuilder.IncludeDocuments("products/1-C") + .IncludeCounters(new[] { "ProductLikes", "ProductDislikes" })); + #endregion + } + using (var session = docStore.OpenSession()) + { + #region counters_region_query_include_single_Counter + //include a single Counter + var query = session.Query() + .Include(includeBuilder => + includeBuilder.IncludeCounter("ProductLikes")); + #endregion + } + + using (var session = docStore.OpenSession()) + { + #region counters_region_query_include_multiple_Counters + //include multiple Counters + var query = session.Query() + .Include(includeBuilder => + includeBuilder.IncludeCounters(new[] { "ProductLikes", "ProductDownloads" })); + #endregion + } + + using (var session = docStore.OpenSession()) + { + #region counters_region_rawqueries_counter + //Various RQL expressions sent to the server using counter() + //Returned Counter value is accumulated + var rawquery1 = session.Advanced + .RawQuery("from products as p select counter(p, \"ProductLikes\")") + .ToList(); + + var rawquery2 = session.Advanced + .RawQuery("from products select counter(\"ProductLikes\") as ProductLikesCount") + .ToList(); + + var rawquery3 = session.Advanced + .RawQuery("from products where PricePerUnit > 50 select Name, counter(\"ProductLikes\")") + .ToList(); + #endregion + + #region counters_region_rawqueries_counterRaw + //An RQL expression sent to the server using counterRaw() + //Returned Counter value is distributed + var query = session.Advanced + .RawQuery("from users as u select counterRaw(u, \"downloads\")") + .ToList(); + #endregion + } + + + + + } + + private class CounterResult + { + public long? ProductPrice { get; set; } + public long? ProductLikes { get; set; } + public string ProductSection { get; set; } + } + + private class CounterResultRaw + { + public Dictionary Downloads { get; set; } + } + + + public class Product + { + public string Id { get; set; } + public string CustomerId { get; set; } + public DateTime Started { get; set; } + public DateTime? Ended { get; set; } + public double PricePerUnit { get; set; } + public string Issue { get; set; } + public int Votes { get; set; } + } + + #region counters_region_CounterItem + // The value given to a Counter by each node, is placed in a CounterItem object. + public struct CounterItem + { + public string Name; + public string DocId; + public string ChangeVector; + public long Value; + } + #endregion + + + private interface IFoo + { + #region Increment-definition + void Increment(string counterName, long incrementValue = 1); + #endregion + + #region Delete-definition + void Delete(string counterName); + #endregion + + #region Get-definition + long Get(string counterName); + #endregion + + #region GetAll-definition + Dictionary GetAll(); + #endregion + } + + + + public async Task Sample() + { + var token = new CancellationToken(); + + using (var store = new DocumentStore()) + { + // export only Indexes and Documents to a given file + var exportOperation = await store + .Smuggler + .ExportAsync( + new DatabaseSmugglerExportOptions + { + #region smuggler_options + OperateOnTypes = DatabaseItemType.Indexes + | DatabaseItemType.Documents + | DatabaseItemType.Counters + #endregion + }, + @"C:\ravendb-exports\Northwind.ravendbdump", + token); + } + } + } +} diff --git a/Raven.Documentation.Parser/Data/Category.cs b/Raven.Documentation.Parser/Data/Category.cs index 4068b88d16..b9c1c3f7b1 100644 --- a/Raven.Documentation.Parser/Data/Category.cs +++ b/Raven.Documentation.Parser/Data/Category.cs @@ -72,6 +72,10 @@ public enum Category Migration, [Prefix("cloud")] - Cloud + Cloud, + + [Prefix("document-extensions")] + [Description("Document Extensions")] + DocumentExtensions } } From 89cfa7e68fb63952f1a0898677313904871f739d Mon Sep 17 00:00:00 2001 From: reebhub Date: Thu, 30 Apr 2020 11:51:03 +0300 Subject: [PATCH 02/56] RDoc-1703_TimeSeries with an initial API Overview page --- .../client-api/api-overview.markdown | 153 ++++++++++++++---- .../TimeSeries/TimeSeriesTests.cs | 107 ++++++++++++ .../TimeSeries/timeseries.cs | 8 +- 3 files changed, 229 insertions(+), 39 deletions(-) create mode 100644 Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown index c558a46b1f..5d67b86e95 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -3,70 +3,153 @@ {NOTE: } -* ... +The Time Series API includes a set of [session](../../../client-api/session/what-is-a-session-and-how-does-it-work) +methods and [store](../../../client-api/what-is-a-document-store) +[operations](../../../client-api/operations/what-are-operations) +for the creation, usage, editing and removal of time series and their values. +You can also use the API to [include](../../../client-api/session/loading-entities#load-with-includes), +[patch](../../../client-api/operations/patching/set-based#patching-how-to-perform-set-based-operations-on-documents) +and [query](../../../client-api/session/querying/how-to-query) +time series. * In this page: - * [Managing Time Series]() - * []() + * [Managing Time Series Using `session` methods](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-session-methods) + * [Managing Time Series Using `store` Operations](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-store-operations) + * [Success, Failure and Conflicts](../../../document-extensions/timeseries/client-api/api-overview#success,-failure-and-conflicts) + {NOTE/} --- -{PANEL: Managing Time Series} +{PANEL: Managing Time Series Using `session` methods} + +* **Transactions** + Manage time series using the `session` interface when you want to guarantee + that your actions would be executed in a transactional manner. + `session` actions either fully succeed or are fully reverted. + The session also gathers multiple actions (being, for example, + appending a time series value and modifying a document, or the + modifications of several different time series) and attempt to + execute them in a single transaction, either succeeding or reverting + for them all. +* **Caching** + Another advantage of the `session` interface is the caching of + retrieved data in the client's local cache. Having retrieved a time series + once, the client wouldn't need to load it (or any part of it) from + the server again as long as it hasn't been updated by other clients. + +--- -Create, modify and delete time series using the `TimeSeriesFor` Session object. -You can Use `TimeSeriesFor` by **explicitly passing it a document ID** (without pre-loading the document). -You can also use `TimeSeriesFor` by passing it **the document object**. +#### `session.TimeSeriesFor`: Append, Get and Remove -**code sample** +You can manage time series using the session `TimeSeriesFor` object. -* **Time Series methods**: - - `TimeSeriesFor.Append`: Add time points to those of an existing series, or create a new series if it doesn't exist. - - `TimeSeriesFor.Delete`: Delete a time series. - - `TimeSeriesFor.Remove`: Remove specific time points from a series. - - `TimeSeriesFor.Get`: Retrieve timepoints. +* **`TimeSeriesFor`Methods**: + * `TimeSeriesFor.Append` + Add value/s to a time series. If the time series doesn't exist, create it first. + A time series can be created with a single time point, and + populated over time by appending it additional time points. + Time points that haven't been populated yet are marked nAn (not a number). + * `TimeSeriesFor.Get` + Retrieve value/s from a time series. + Data retrieved using `TimeSeriesFor.Get` is stored in the client's + local cache. + * `CountersFor.Remove` + Remove value/s from a time series. * **Usage Flow**: * Open a session. * Create an instance of `TimeSeriesFor`. * Either pass `TimeSeriesFor` an explicit document ID, -or- * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). - * Use time series methods to manage the document's time series. - * If you execute [Append]() or [Delete](), call `session.SaveChanges` for the action to take effect on the server. + * Use a time series method. + * If you execute `Append`or `Remove, call `session.SaveChanges` + for the action to take effect on the server. + +* **Usage Samples** + * You can Use `TimeSeriesFor` by **explicitly passing it a document ID** (without pre-loading the document). + Here, TimeSeriesFor relates to a document by its explicit ID. + {CODE timeseries_region_TimeSeriesFor_without_document_load@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * You can also use `TimeSeriesFor` by passing it **the document object**. + Here, TimeSeriesFor relates to a document object that's been loaded earlier. + This can be useful when you want, for example, to manage time series + for document objects returned by queries. + {CODE timeseries_region_TimeSeriesFor_with_document_load@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * TimeSeries methods can handle a **range** of values rather than a single value. + Here, TimeSeriesFor.Remove handles a range of 4 values. + {CODE timeseries_region_Remove-TimeSeries-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +--- + +#### `session.Advanced.GetTimeSeriesFor`: Retrieve TimeSeries Names -* `Append` timepoints - A time series can be created with a single time point, and - populated over time by appending it additional time points. - Time points that haven't been populated yet are marked nAn (not a number). +You can use session.Advanced.GetTimeSeriesFor to retrieve a document's time series names. -* `Get` timepoints - [session.TimeSeriesFor.Get]() +{CODE timeseries_region_Retrieve-TimeSeries-Names@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} -* `Remove` timepoints - [session.TimeSeriesFor.Remove]() - * Removing a single time point - * Removing a range of time points +{PANEL: Managing Time Series Using `store` Operations} -* `Delete` a time series - [session.TimeSeriesFor.Delete]() +Use store operations when you prefer them over session methods. +For example, you may prefer store operations when you want separete +operations not be included in the same transaction. + +There are also actions that are available only via store operations, +though not many. --- -#### Success and Failure +The most commonly used time series operations are: + +* `GetTimeSeriesOperaion`: Get time series data. + You can use this method to retrieve data from several diffrent time series + of a document, an option that isn't available via `TimeSeriesFor.Get`. + * Pass `GetTimeSeriesOperaion` a `TimeSeriesRange` construct to provide + it with the **start** and **end** time and dates and with the name of + the time series you want to update. + * Retrieved results are put in a class holding a dictionary of + ` TimeSeriesRangeResult` classes. +* `TimeSeriesBatchOperation`: Append or Remove data from a time series. + Pass `TimeSeriesBatchOperation` a `TimeSeriesOperation` construct to + instruct it what to do. + +{PANEL/} -* As long as the document exists, time series actions (Append, Get, Delete etc.) always succeed. -* When a transaction that includes a time series modification fails for any reason (e.g. xxx), - the time series modification is reverted. +{PANEL: Success, Failure and Conflicts} --- -####Managing Time Series Using `Operations` +####Success +As long as the document exists, updating a Time Serie will always succeed. -* In addition to working with the high-level Session, you can manage Time Series using the low-level [Operations](). +--- + +####Transactions +When a transaction that includes a time series modification fails for any +reason, the Counter modification is reverted. -* [TimeSeriesBatchOperation]() [does this exist?] +--- - can operate on a set of time series of different documents in a single request. +####No Conflicts + +Time series actions do not cause conflicts. + +* **Updates By Multiple Cluster Nodes** + * When a time series' data is replicated by multiple nodes, the data + from all nodes is merged into a single series. + * When multiple nodes append **different values** at the same timestamp, + the **bigger value** is chosen for this entry. + * When multiple nodes apppend **different amount of values** for the same + timestamp, the **bigger amount of values** is chosen for this entry. + * When an existing value at a certain timestamp is deleted by a node + and updated by another node, the deletion is chosen. + +* **Updates By Multiple Clients Of The Same Node** + * When a time series' value at a certain timestamp is appended by + multiple clients more or less simultaneously, the last one is chosen. + * When an existing value at a certain timestamp is deleted by a client + and updated by another client, the last action is chosen. {PANEL/} diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs new file mode 100644 index 0000000000..93db5e3518 --- /dev/null +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -0,0 +1,107 @@ +using System; +using System.Linq; +using Xunit.Abstractions; +using Raven.Client.Documents; + +namespace SlowTests.Client.TimeSeries.Session +{ + public class TimeSeriesSessionTests + { + public TimeSeriesSessionTests(ITestOutputHelper output) + { + } + + public void TimeSeriesSessionTests() + { + var store = new DocumentStore + { + Urls = new[] { "http://localhost:8080" }, + Database = "products" + }; + store.Initialize(); + + var baseline = DateTime.Today; + + // create time series + #region timeseries_region_TimeSeriesFor_without_document_load + // Open a session + using (var session = store.OpenSession()) + { + // Use the session to create a document + session.Store(new { Name = "John" }, "users/john"); + + // Create an instance of TimeSeriesFor + // Pass an explicit document ID to the TimeSeriesFor constructor + // Append a heartrate of 70 at the first-minute timestamp + session.TimeSeriesFor("users/john", "Heartrate") + .Append(baseline.AddMinutes(1), 70d, "watches/fitbit"); + + session.SaveChanges(); + } + #endregion + + // retrieve a single value + #region timeseries_region_TimeSeriesFor_with_document_load + using (var session = store.OpenSession()) + { + // Use the session to load a document + var user = session.Load("users/john"); + + // Pass the document object returned from session.Load as a param + // Retrieve a single value from the time series + var val = session.TimeSeriesFor(user, "Heartrate") + .Get(DateTime.MinValue, DateTime.MaxValue) + .Single(); + } + #endregion + + // retrieve time series names + using (var session = store.OpenSession()) + { + #region timeseries_region_Retrieve-TimeSeries-Names + var user = session.Load("users/john"); + var tsNames = session.Advanced.GetTimeSeriesFor(user); + #endregion + } + + #region timeseries_region_Remove-TimeSeries-Range + var baseline = DateTime.Today; + + // Append 10 heartrate values + using (var session = store.OpenSession()) + { + session.Store(new { Name = "John" }, "users/john"); + + var tsf = session.TimeSeriesFor("users/john", "Heartrate"); + + for (int i = 0; i < 10; i++) + { + tsf.Append(baseline.AddSeconds(i), new[] { 67d }, "watches/fitbit"); + } + + session.SaveChanges(); + } + + // remove a range of 4 values from the time series + using (var session = store.OpenSession()) + { + session.TimeSeriesFor("users/john", "Heartrate") + .Remove(baseline.AddSeconds(4), baseline.AddSeconds(7)); + + session.SaveChanges(); + } + #endregion + + } + } + + private IDisposable GetDocumentStore() + { + throw new NotImplementedException(); + } + } + + internal class User + { + } +} diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/timeseries.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/timeseries.cs index 2338e3f728..5a65099561 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/timeseries.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/timeseries.cs @@ -20,8 +20,8 @@ static void Main(string[] args) }; docStore.Initialize(); - #region counters_region_CountersFor_with_document_load - // Use CountersFor by passing it a document object + #region timeseries_region_TimeSeriesFor_with_document_load + // Use TimeSeriesFor by passing it a document object // 1. Open a session using (var session = docStore.OpenSession()) @@ -43,8 +43,8 @@ static void Main(string[] args) } #endregion - #region counters_region_CountersFor_without_document_load - // Use CountersFor without loading a document + #region timeseries_region_TimeSeriesFor_without_document_load + // Use TimeSeriesFor without loading a document // 1. Open a session using (var session = docStore.OpenSession()) From a3fc85b4a19de51b4e664fc92e3cf8a748c67cd0 Mon Sep 17 00:00:00 2001 From: reebhub Date: Mon, 4 May 2020 03:31:11 +0300 Subject: [PATCH 03/56] RDoc-1703_TimeSeries with API documentation including - API overview Append Get Remove Include Operations for Append and Remove without API documentation for - Operations for Get Patching Changes API --- .../timeseries/client-api/.docs.json | 26 +- .../client-api/api-overview.markdown | 136 +++++---- .../append-time-series-entries.markdown | 136 +++++++++ ...n => bulk-time-series-operations.markdown} | 0 .../client-api/creating-timeseries.markdown | 66 ---- .../client-api/deleting-timeseries.markdown | 59 ---- .../client-api/get-time-series.markdown | 94 ++++++ .../client-api/include-time-series.markdown | 154 ++++++++++ .../loading-and-including-timeseries.markdown | 82 ----- .../client-api/modifying-timeseries.markdown | 66 ---- ...es.markdown => patch-time-series.markdown} | 0 .../remove-time-series-entries.markdown | 117 +++++++ .../TimeSeries/TimeSeriesTests.cs | 287 +++++++++++++++++- 13 files changed, 875 insertions(+), 348 deletions(-) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{bulk-timeseries-operations.markdown => bulk-time-series-operations.markdown} (100%) delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/creating-timeseries.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/deleting-timeseries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/include-time-series.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/loading-and-including-timeseries.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/modifying-timeseries.markdown rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{patching-timeseries.markdown => patch-time-series.markdown} (100%) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json index a8659d1519..057ff7e4dd 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json @@ -6,44 +6,44 @@ "Mappings": [] }, { - "Path": "creating-timeseries.markdown", - "Name": "Creating Time Series", + "Path": "append-time-series-entries.markdown", + "Name": "Append Time-Series Entries", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "deleting-timeseries.markdown", - "Name": "Deleting Time Series", + "Path": "remove-time-series-entries.markdown", + "Name": "Remove Time-Series Entries", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "modifying-timeseries.markdown", - "Name": "Modifying Time Series", + "Path": "get-time-series.markdown", + "Name": "Get Time-Series", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "bulk-timeseries-operations.markdown", - "Name": "Bulk Time Series Operations", + "Path": "bulk-time-series-operations.markdown", + "Name": "Bulk Time-Series Operations", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "loading-and-including-timeseries.markdown", - "Name": "Loading and Including Time Series", + "Path": "include-time-series.markdown", + "Name": "Include Time-Series", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "patching-timeseries.markdown", - "Name": "Patching Time Series", + "Path": "patch-time-series.markdown", + "Name": "Patch Time-Series", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "time-series-and-the-changes-api.markdown", - "Name": "Time Series and the Changes API", + "Name": "Time-Series and the Changes API", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown index 5d67b86e95..dde5d622c0 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -1,40 +1,50 @@ -# Time Series API Overview +# Time-Series API Overview --- {NOTE: } -The Time Series API includes a set of [session](../../../client-api/session/what-is-a-session-and-how-does-it-work) +The Time-Series API includes a set of [session](../../../client-api/session/what-is-a-session-and-how-does-it-work) methods and [store](../../../client-api/what-is-a-document-store) [operations](../../../client-api/operations/what-are-operations) -for the creation, usage, editing and removal of time series and their values. +for the creation, updating, usage and removal of time-series and time-series entries. You can also use the API to [include](../../../client-api/session/loading-entities#load-with-includes), [patch](../../../client-api/operations/patching/set-based#patching-how-to-perform-set-based-operations-on-documents) and [query](../../../client-api/session/querying/how-to-query) -time series. +time-series. * In this page: - * [Managing Time Series Using `session` methods](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-session-methods) - * [Managing Time Series Using `store` Operations](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-store-operations) + * [Creating and Removing Time-Series](../../../document-extensions/timeseries/client-api/api-overview#creating-and-removing-time-series) + * [Managing Time-Series Using `session` methods](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-session-methods) + * [Managing Time-Series Using `store` Operations](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-store-operations) * [Success, Failure and Conflicts](../../../document-extensions/timeseries/client-api/api-overview#success,-failure-and-conflicts) {NOTE/} --- -{PANEL: Managing Time Series Using `session` methods} +{PANEL: Creating and Removing Time-Series} + +There is no need to explicitly create or remove a time-series. +When the first time-series entry is appended to a time-series (with a timestamp, +a value, and optionally a tag), the time-series is created. +When the last entry is removed, the series is removed. + +{PANEL/} + +{PANEL: Managing Time-Series Using `session` methods} * **Transactions** - Manage time series using the `session` interface when you want to guarantee - that your actions would be executed in a transactional manner. + Manage time-series using the `session` interface when you want to guarantee + that your actions would be executed in a transactional context. `session` actions either fully succeed or are fully reverted. The session also gathers multiple actions (being, for example, - appending a time series value and modifying a document, or the - modifications of several different time series) and attempt to - execute them in a single transaction, either succeeding or reverting - for them all. + appending a time-series value and modifying a document, or the + modifications of several different time-series) and attempts to + execute them in a single transaction, either completing or reverting + them all. * **Caching** Another advantage of the `session` interface is the caching of - retrieved data in the client's local cache. Having retrieved a time series + retrieved data in the client's local cache. Having retrieved a time-series once, the client wouldn't need to load it (or any part of it) from the server again as long as it hasn't been updated by other clients. @@ -42,76 +52,84 @@ time series. #### `session.TimeSeriesFor`: Append, Get and Remove -You can manage time series using the session `TimeSeriesFor` object. +You can manage time-series using the session `TimeSeriesFor` object. * **`TimeSeriesFor`Methods**: * `TimeSeriesFor.Append` - Add value/s to a time series. If the time series doesn't exist, create it first. - A time series can be created with a single time point, and - populated over time by appending it additional time points. - Time points that haven't been populated yet are marked nAn (not a number). + `Append` is used to create and update time-series and time-series entries. + When an existing time-series entry is appended, it is updated with the new data. + When a non-existing time-series entry is appended, it is created. + An attempt to append a time-series entry to a non-existing time-series, + creates the time-series and appends it this entry. * `TimeSeriesFor.Get` - Retrieve value/s from a time series. - Data retrieved using `TimeSeriesFor.Get` is stored in the client's - local cache. + `Get` retrieves a value or a range of values from a time-series at the + specified timestamps. * `CountersFor.Remove` - Remove value/s from a time series. + `Remove` deletes a time-series entry from a time-series. + When a time-series' last entry is removed, the time-series is removed as well. * **Usage Flow**: * Open a session. * Create an instance of `TimeSeriesFor`. * Either pass `TimeSeriesFor` an explicit document ID, -or- * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). - * Use a time series method. + * Use a time-series method. * If you execute `Append`or `Remove, call `session.SaveChanges` for the action to take effect on the server. * **Usage Samples** - * You can Use `TimeSeriesFor` by **explicitly passing it a document ID** (without pre-loading the document). + * You can Use `TimeSeriesFor` by **explicitly passing it a document ID** + (without pre-loading the document). Here, TimeSeriesFor relates to a document by its explicit ID. {CODE timeseries_region_TimeSeriesFor_without_document_load@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} * You can also use `TimeSeriesFor` by passing it **the document object**. Here, TimeSeriesFor relates to a document object that's been loaded earlier. - This can be useful when you want, for example, to manage time series + This can be useful when you want, for example, to manage time-series for document objects returned by queries. {CODE timeseries_region_TimeSeriesFor_with_document_load@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - * TimeSeries methods can handle a **range** of values rather than a single value. - Here, TimeSeriesFor.Remove handles a range of 4 values. - {CODE timeseries_region_Remove-TimeSeries-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} --- #### `session.Advanced.GetTimeSeriesFor`: Retrieve TimeSeries Names -You can use session.Advanced.GetTimeSeriesFor to retrieve a document's time series names. +You can use session.Advanced.GetTimeSeriesFor to retrieve a document's +time-series' names. {CODE timeseries_region_Retrieve-TimeSeries-Names@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} -{PANEL: Managing Time Series Using `store` Operations} +{PANEL: Managing Time-Series Using `store` Operations} + +There are time-series actions that can be performed by both store operations +and session methods. Each interface offers its advantages, e.g. the transactional +guarantee provided by the session interface vs low-level commands' lack of it +(in case you prefer not to bundle separate operations into a single transaction, +for example). + +An action that is currently available only through store operations, +is the loading of a document's multiple time-series by `GetTimeSeriesOperation`. + + +--- + +#### `GetTimeSeriesOperation`: Get Time-Series Data + +You can use this method to retrieve data from several diffrent time-series +of a document. -Use store operations when you prefer them over session methods. -For example, you may prefer store operations when you want separete -operations not be included in the same transaction. +* Pass `GetTimeSeriesOperation` a `TimeSeriesRange` construct to provide + it with the **start** and **end** time and dates and with the name of + the time-series you want to update. -There are also actions that are available only via store operations, -though not many. +* Retrieved results are put in a class holding a dictionary of + `TimeSeriesRangeResult` classes. --- -The most commonly used time series operations are: - -* `GetTimeSeriesOperaion`: Get time series data. - You can use this method to retrieve data from several diffrent time series - of a document, an option that isn't available via `TimeSeriesFor.Get`. - * Pass `GetTimeSeriesOperaion` a `TimeSeriesRange` construct to provide - it with the **start** and **end** time and dates and with the name of - the time series you want to update. - * Retrieved results are put in a class holding a dictionary of - ` TimeSeriesRangeResult` classes. -* `TimeSeriesBatchOperation`: Append or Remove data from a time series. - Pass `TimeSeriesBatchOperation` a `TimeSeriesOperation` construct to +#### `TimeSeriesBatchOperation`: Append or Remove data from a time-series + +* Pass `TimeSeriesBatchOperation` a `TimeSeriesOperation` construct to instruct it what to do. {PANEL/} @@ -126,17 +144,17 @@ As long as the document exists, updating a Time Serie will always succeed. --- ####Transactions -When a transaction that includes a time series modification fails for any +When a transaction that includes a time-series modification fails for any reason, the Counter modification is reverted. --- ####No Conflicts -Time series actions do not cause conflicts. +Time-series actions do not cause conflicts. * **Updates By Multiple Cluster Nodes** - * When a time series' data is replicated by multiple nodes, the data + * When a time-series' data is replicated by multiple nodes, the data from all nodes is merged into a single series. * When multiple nodes append **different values** at the same timestamp, the **bigger value** is chosen for this entry. @@ -146,7 +164,7 @@ Time series actions do not cause conflicts. and updated by another node, the deletion is chosen. * **Updates By Multiple Clients Of The Same Node** - * When a time series' value at a certain timestamp is appended by + * When a time-series' value at a certain timestamp is appended by multiple clients more or less simultaneously, the last one is chosen. * When an existing value at a certain timestamp is deleted by a client and updated by another client, the last action is chosen. @@ -155,14 +173,14 @@ Time series actions do not cause conflicts. ## Related articles **Studio Articles**: -[Studio Time Series Management]() +[Studio Time-Series Management]() **Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() +[Time-Series Overview]() +[Creating and Modifying Time-Series]() +[Deleting Time-Series]() +[Retrieving Time-Series Values]() +[Time-Series and Other Features]() **Client-API - Operations Articles**: -[Time Series Operations]() +[Time-Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown new file mode 100644 index 0000000000..7fc76b5f95 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown @@ -0,0 +1,136 @@ +# Append Time-Series Entries + +--- + +{NOTE: } + +A time-series is an array of time-series entries. Each entry is +populated with a **timestamp**, a **value (or values)**, and an +optional **tag**. + +You can use the session `TimeSeriesFor.Append` method to add +a single time-series entry, or update an existing entry. + +You can use the store `TimeSeriesBatchOperation` operation to +add or update time-series entries in bulk. + +{INFO: } + +* When time-series entries are appended to a **non-existing time-series**, + the **time-series is created**. +* When a **non-existing time-series entry** is appended, the **time-series entry + is created**. +* When **an existing time-series entry** is appended, the **entry + is updated** with the appended data. + +{INFO/} + +* In this page: + * [Appending Time-Series Entries Using `session.TimeSeriesFor.Append`](../../../document-extensions/timeseries/client-api/append-time-series-entries#appending-time-series-entries-using-session.timeseriesfor.append) + * [Appending Time-Series Entries Using `TimeSeriesBatchOperation`](../../../document-extensions/timeseries/client-api/append-time-series-entries#appending-time-series-entries-using-timeseriesbatchoperation) +{NOTE/} + +--- + +{PANEL: Appending Time-Series Entries Using `session.TimeSeriesFor.Append`} + +--- + +#### `TimeSeriesFor.Append` Definition + +To append a time-series entry, use one of the two `TimeSeriesFor.Append` methods. +One method updates the time-series entry with a value of type `double`. +The second method updates the entry with a value of type `IEnumerable double`. + +* **First Overload**: Value type is `double`. + Use this method to update the time-series entry with a single value. + {CODE TimeSeriesFor-Append-definition-double@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `timestamp` | DateTime | Time-series entry's timestamp | + | `value` | double | Update the time-series entry with this value.
For a new time-series entry, this will be its initial value. | + | `tag` | string | Time-series entry's tag
The tag is optional. | + +* **Second Overload**: Value type is `IEnumerable double`. + Use this method to update the time-series entry with multiple values + of different types. + {CODE TimeSeriesFor-Append-definition-inum@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `timestamp` | DateTime | Time-series entry's timestamp | + | `values` | IEnumerable | Update the time-series entry with these values.
For a new time-series entry, these will be its initial values. | + | `tag` | string | Time-series entry's tag
The tag is optional. | + +--- + +#### Usage Flow + +* Open a session. +* Create an instance of `TimeSeriesFor`. + * Either pass `TimeSeriesFor` an explicit document ID, -or- + * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). +* Call `TimeSeriesFor.Append`. +* Call `session.SaveChanges` for the action to take effect on the server. + +--- + +#### Code Samples + +Here, we pass `TimeSeriesFor.Append` the value using a `double`, +and repeat it in a loop to append multiple time-series entries. +Note that the session will still execute all actions in a single transaction. +If you prefer a bulk operation, use +[TimeSeriesBatchOperation](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-store-operations). +{CODE timeseries_region_TimeSeriesFor-Append-TimeSeries-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we pass an IEnumerable with three values to `TimeSeriesFor.Append`. +The three values will be appended at the same timestamp. +{CODE timeseries_region_Append-With-IEnumerable@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +{PANEL: Appending Time-Series Entries Using `TimeSeriesBatchOperation`} + +`TimeSeriesBatchOperation` can append or remove multiple time-series entries. +To instruct it which operations to perform, provide it with `TimeSeriesOperation` constructs. + +* `TimeSeriesOperation` + {CODE TimeSeriesOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +--- + +#### Usage Flow + +* Create an instance of `TimeSeriesOperation` + * Populate it with a new `AppendOperation` list for every time-series entry you want to append. + * Populate each `AppendOperation` list with the properties of the time-series + entry that you want to append. +* Create a `TimeSeriesBatchOperation` instance. + * Pass its constructor the document ID and the `TimeSeriesOperation` instance you've created. +* Call `store.Operations.Send` to execute the operation. + * Pass it the `TimeSeriesBatchOperation` instance you've created. + +--- + +#### Code Sample + +Here, we append a time-series two entries using `TimeSeriesBatchOperation`. +{CODE timeseries_region_Append-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time-Series Management]() + +**Client-API - Session Articles**: +[Time-Series Overview]() +[Creating and Modifying Time-Series]() +[Deleting Time-Series]() +[Retrieving Time-Series Values]() +[Time-Series and Other Features]() + +**Client-API - Operations Articles**: +[Time-Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/bulk-timeseries-operations.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/bulk-time-series-operations.markdown similarity index 100% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/bulk-timeseries-operations.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/bulk-time-series-operations.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/creating-timeseries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/creating-timeseries.markdown deleted file mode 100644 index 18b4d14a11..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/creating-timeseries.markdown +++ /dev/null @@ -1,66 +0,0 @@ -# Creating Time Series ---- - -{NOTE: } - -* Use the [TimeSeriesFor]().`Append` method to **create** a new series or **add values** to an existing series. -* Use the [TimeSeriesFor]().`Remove` method to **remove** timeponits from a series. - -* In this page: - - Create a Series and Add Time Points - - Remove Time Points From a Series -{NOTE/} - ---- - -{PANEL: Create a Series and Add Time Points} - -* `Append` Syntax - - Appending timepoints using session.TimeSeriesFor.Append. - syntax (table) - code sample: a **single** time point - code sample: a **range** of time points - - - - Bulk operations using the **store** interface: - syntax (table) - code sample - {CODE-BLOCK:JSON} - using(var bulk = store.BulkInsert()) - using(var ts = bulk.TimeSeriesFor(string documentId, string name)) - { - ts.Append( ... ) - } - {CODE-BLOCK/} - -* `Append` Flow - - Open a session - - Create an instance of `TimeSeriesFor`. - * Either pass `TimeSeriesFor` an explicit document ID, -or- - Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). - - Execute `TimeSeriesFor.Append` - - Execute `session.SaveChanges` for the changes to take effect - -**Note**: -Modifying a time series using `Append` only takes effect when `session.SaveChanges()` is executed. -{PANEL/} - -* **Code Sample** - -{PANEL: Remove Time Points From a Series} -... -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/deleting-timeseries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/deleting-timeseries.markdown deleted file mode 100644 index 889cfdc24f..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/deleting-timeseries.markdown +++ /dev/null @@ -1,59 +0,0 @@ -# Deleting Time Series ---- - -{NOTE: } - -* All time series for a document are deleted when the document is deleted. - -* You can also use the [session.TimeSeriesFor.`Delete`]() method to remove a specific time series from a document. - -* In this page: - - [`Delete ` Syntax]() - - [`Delete ` Usage]() - - [Code Sample]() -{NOTE/} - ---- - -{PANEL: `Delete ` Syntax} - -**code sample** - -| Parameter | Type | Description | -|:-------------:|:-------------:|:-------------:| -| `timeSeriesName` | string | Time Series Name | -{PANEL/} - -{PANEL: `Delete ` Usage} - -* **Flow**: - * Open a session - * Create an instance of `TimeSeriesFor`. - * Either pass `TimeSeriesFor` an explicit document ID, -or- - * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). - * Execute `TimeSeriesFor.Delete` - * Execute `session.SaveChanges` for the changes to take effect - -* **Note**: - * A time series you deleted will be removed only after the execution of `SaveChanges()`. - * Deleting a document deletes its time series as well. - * `Delete` will **not** generate an error if the time series doesn't exist. - -{PANEL/} - -{PANEL: Code Sample} -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown new file mode 100644 index 0000000000..a99afa5756 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown @@ -0,0 +1,94 @@ +# Get Time-Series + +--- + +{NOTE: } + +* You can use the session `TimeSeriesFor.Get` method to retrieve + a time-series' data. + Data retrieved using `TimeSeriesFor.Get` is **cached in clients' local storage**. + +* You can also use the store `GetTimeSeriesOperaion` operation to retrieve + time-series data. + With `GetTimeSeriesOperaion` you can retrieve the data of **multiple time-series**. + +* In this page: + * [Get Time-Series Entry Using `session.TimeSeriesFor.Get`](../../../document-extensions/timeseries/client-api/get-time-series#get-time-series-entry-using-session.timeseriesfor.get) + * [Get Time-Series Entry Using `GetTimeSeriesOperaion`](../../../document-extensions/timeseries/client-api/get-time-series#get-time-series-entries-using-gettimeseriesoperaion) + + +{NOTE/} + +--- + +{PANEL: Get Time-Series Entry Using `session.TimeSeriesFor.Get`} + +#### `TimeSeriesFor.Get` Definition + +{CODE TimeSeriesFor-Get-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + +* Parameters: + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `from` | DateTime | Range Start | + | `to` | DateTime | Range End | + | `start` | int | **Paging** first entry
e.g. 50 means the first page starts at the 50th time-series entry.
**Default Value**: 0, for the first time-series entry. | + | `pagesize` | int | **Paging** page-size
e.g. 10 means the first page includes entries 50 to 59.
**Default Value**: int.MaxValue, for all time-series entries. | + +* Return Value: `IEnumerable` + `TimeSeriesFor.Get` returns the time-series' data in an array of `IEnumerable`s. + Each IEnumerable contains a single time-series entry's data: its **timestamp**, + **tag** (if there is one), and **values**. + {CODE-BLOCK: JSON} +{ + public DateTime Timestamp { get; set; } + public string Tag { get; set; } + public double[] Values { get; set; } + public double Value => Values[0]; +} + {CODE-BLOCK/} + +--- + +#### Usage Flow + +* Open a session. +* Create an instance of `TimeSeriesFor`. + * Either pass `TimeSeriesFor` an explicit document ID, -or- + * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). +* Call `TimeSeriesFor.Get`. + +--- + +#### Code Samples + +Here, we retrieve all time-series entries of a time-series. +{CODE timeseries_region_TimeSeriesFor-Get-Single-Value-Using-Document-ID@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +And here we query our collection for a document with "Name: John" as a property +and get its "Heartrate" time-series data. +{CODE timeseries_region_Pass-TimeSeriesFor-Get-Query-Results@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +[add a sample that uses paging here] + +{PANEL/} + +{PANEL: Get Time-Series Entries Using `GetTimeSeriesOperaion`} +... +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time-Series Management]() + +**Client-API - Session Articles**: +[Time-Series Overview]() +[Creating and Modifying Time-Series]() +[Deleting Time-Series]() +[Retrieving Time-Series Values]() +[Time-Series and Other Features]() + +**Client-API - Operations Articles**: +[Time-Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/include-time-series.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/include-time-series.markdown new file mode 100644 index 0000000000..1fdeba47fc --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/include-time-series.markdown @@ -0,0 +1,154 @@ +# Include Time Series +--- + +{NOTE: } + +You can [Include](../../../client-api/session/loading-entities#load-with-includes) +a time-series or a part of it while loading a document. +Included time-series data is retrieved in the same request as its owner-document +and is held by the session, so it can be immediately retrieved when needed with no +additional remote calls. + +* Time-series data can be included while - + * Loading a document using `session.Load` + * Loading a document using `session.LoadAsync` + * Querying documents using `session.Query` + * Querying documents using raw RQL via `session.Advanced.RawQuery` + +* In this page: + * [Including Time-Series While Loading a Document](../../../document-extensions/timeseries/client-api/include-time-series#including-time-series-while-loading-a-document) + * [Including Time-Series While Querying Documents](../../../document-extensions/timeseries/client-api/include-time-series#including-time-series-while-querying-documents) + * [Via `Session.Query`](../../../document-extensions/timeseries/client-api/include-time-series#include-time-series-while-querying-via-) + * [Via `session.Advanced.RawQuery`](../../../document-extensions/timeseries/client-api/include-time-series#include-time-series-while-querying-via--1) + +{NOTE/} + +--- + +{PANEL: Including Time-Series While Loading a Document} + +To include a time-series or a part of it while loading a document +via `session.Load`, use `IncludeTimeSeries`. + +--- + +#### Usage Flow + +* Open a session +* Call `session.Load` + Pass it two arguments: + * Document ID + * `IncludeTimeSeries` and its argumrnts: the time-series name, range start, and range end. + +--- + +#### `IncludeTimeSeries` Definition + +{CODE IncludeTimeSeries-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* Parameters: + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `name` | string | Time-series Name | + | `from` | DateTime | Time-series range start | + | `to` | DateTime | Time-series range end | + +--- + +#### Code Samples + +Here, we **load** a document using `session.Load` and **include** +a selected range of entries from a time-series named "Heartrate". +The included entries are then held by the session. +Then, we **Get** the same entries we've previously included. +Getting other entries (e.g. minutes 300 to 320 of the time-series) +would still work, but the values would be retrieved not from +the session but from the server, with a much costlier delay. +{CODE timeseries_region_Load-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +{PANEL: Including Time-Series While Querying Documents} + +--- + +### Include time-series while querying via `Session.Query` + +To include time-series or parts of them while loading documents +via `session.Query`, use `IncludeTimeSeries`. + +--- + +#### Usage Flow + +* Open a session +* Call `session.Query` + Pass it `IncludeTimeSeries` as an include-builder argument +* Pass `IncludeTimeSeries` its arguments: the time-series name, range start, and range end. + +--- + +#### `IncludeTimeSeries` Definition + +{CODE IncludeTimeSeries-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* Parameters: + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `name` | string | Time-series Name | + | `from` | DateTime | Time-series range start | + | `to` | DateTime | Time-series range end | + +--- + +#### Code Samples + +Here, we **load** a document using `session.Query` and **include** +a whole time-series named "Heartrate". +When we **Get** the time-series data, its values are retrieved +from the session, with no additional trip to the server. +{CODE timeseries_region_Query-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +--- + +### Include time-series while querying via `session.Advanced.RawQuery` + + +To include time-series or parts of them while querying via `session.Advanced.RawQuery`, +simply embed an `include timeseries` statement in your RQL. + +--- + +#### Usage Flow + +* Open a session +* Call `session.Advanced.RawQuery` + Use `include timeseries` in your query, with its arguments: the time-series name, range start, and range end. +* Pass `IncludeTimeSeries` its arguments: the time-series name, range start, and range end. + +--- + +#### Code Sample + +Here, we include the whole "Heartrate" time-series while running a raw query to +load the document that owns it. + +{CODE timeseries_region_Raw-Query-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/loading-and-including-timeseries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/loading-and-including-timeseries.markdown deleted file mode 100644 index 8aa74379ba..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/loading-and-including-timeseries.markdown +++ /dev/null @@ -1,82 +0,0 @@ -# Loading and Including Time Series ---- - -{NOTE: } - -* Use [session.TimeSeriesFor.`Get`]() to retrieve the value of a time point or a range of timepoints. - [is there a `GetAll` method?] - -* Use []() to include a time series in a query before it is requested and minimize - clients' wait time. - -* In this page: - * [Loading Time Series]() - * [Loading Selected Time Points]() - * [Including Time Series]() -{NOTE/} - ---- - -{PANEL: Loading Time Series} - -#### `Get` syntax: - -* **code sample** -* **syntax (table)** - ---- - -#### `Get` usage Flow: - - * Open a session - * Create an instance of `TimeSeriesFor`. - * Either pass `TimeSeriesFor` an explicit document ID, -or- - * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). - * Execute `TimeSeriesFor.Get` - ---- - -#### Retrieve a single Time Point: -**Code Sample** - ---- - -#### Retrieve a Range of Time Points -**Code Sample** - -{PANEL/} - -{PANEL: Including Time Series} - -You can [include](../../../client-api/how-to/handle-document-relationships#includes) time series while loading a document. -An included time series is retrieved in the same request as its owner-document and is held by the session, -so it can be immediately retrieved when needed with no additional remote calls. - - -* **Including time series when using [Session.Load](../../../client-api/session/loading-entities#session--loading-entities)**: - * Include a single time series using [?] - * Include multiple time series using [?] - - **code sample here** - -* **Including time series when using [Session.Query](../../../client-api/session/querying/how-to-query#session--querying--how-to-query)**: - * Include a single time series using [?] - * Include multiple time series using [?] - - **code sample here** - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/modifying-timeseries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/modifying-timeseries.markdown deleted file mode 100644 index cdf87e4b98..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/modifying-timeseries.markdown +++ /dev/null @@ -1,66 +0,0 @@ -# Modifying Time Series ---- - -{NOTE: } - -* Use the [TimeSeriesFor]().`Append` method to **create** a new series or **add values** to an existing series. -* Use the [TimeSeriesFor]().`Remove` method to **remove** timeponits from a series. - -* In this page: - - Adding Time Points To a Series - - Removing Time Points From a Series -{NOTE/} - ---- - -{PANEL: Create a Series and Add Time Points} - -* `Append` Syntax - - Appending timepoints using session.TimeSeriesFor.Append. - syntax (table) - code sample: a **single** time point - code sample: a **range** of time points - - - - Bulk operations using the **store** interface: - syntax (table) - code sample - {CODE-BLOCK:JSON} - using(var bulk = store.BulkInsert()) - using(var ts = bulk.TimeSeriesFor(string documentId, string name)) - { - ts.Append( ... ) - } - {CODE-BLOCK/} - -* `Append` Flow - - Open a session - - Create an instance of `TimeSeriesFor`. - * Either pass `TimeSeriesFor` an explicit document ID, -or- - Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). - - Execute `TimeSeriesFor.Append` - - Execute `session.SaveChanges` for the changes to take effect - -**Note**: -Modifying a time series using `Append` only takes effect when `session.SaveChanges()` is executed. -{PANEL/} - -* **Code Sample** - -{PANEL: Remove Time Points From a Series} -... -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-timeseries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patch-time-series.markdown similarity index 100% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-timeseries.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patch-time-series.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown new file mode 100644 index 0000000000..a736a64d1a --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown @@ -0,0 +1,117 @@ +# Remove Time-Series Entries + +--- + +{NOTE: } + +You can use the session `TimeSeriesFor.Remove` method to remove +a **single time-series entry**, or a **range of time-series entries**. + +You can also use the store `TimeSeriesBatchOperation` operation to +remove time-series entries. + +* A time-series is removed, when all its time-series entries are removed. +* When a document is deleted, all its time-series are deleted with it. + +* In this page: + * [Removing Time-Series Entries Using `session.TimeSeriesFor.Remove`](../../../document-extensions/timeseries/client-api/remove-time-series-entries#removing-time-series-entries-using-session.timeseriesfor.remove) + * [Removing Time-Series Entries Using `TimeSeriesBatchOperation`](../../../document-extensions/timeseries/client-api/remove-time-series-entries#removing-time-series-entries-using-timeseriesbatchoperation) +{NOTE/} + +--- + +{PANEL: Removing Time-Series Entries Using `session.TimeSeriesFor.Remove`} + +#### `TimeSeriesFor.Remove` Definition + +To remove a time-series entry, use one of `TimeSeriesFor`'s two `Remove` methods. +One overload method removes a single time-series entry (by its timestamp), +and the second method removes a range of time-series entries (from a start +timestamp to an end timestamp). + +* **First Overload**: Remove a single time-series entry. + {CODE TimeSeriesFor-Remove-definition-single-timepoint@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `at` | DateTime | Timestamp of the time-series entry you want to remove | + +* **Second Overload**: Remove a range of time-series entries. + {CODE TimeSeriesFor-Remove-definition-range-of-timepoints@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `from` | DateTime | Remove the range of time-series entries starting at this timestamp | + | `to` | DateTime | Remove the range of time-series entries ending at this timestamp | + +--- + +#### Usage Flow + +* Open a session. +* Create an instance of `TimeSeriesFor`. + * Either pass `TimeSeriesFor` an explicit document ID, -or- + * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). +* Call `TimeSeriesFor.Remove`. +* Call `session.SaveChanges` for the action to take effect on the server. + +--- + +#### Code Samples + +Here, we remove a single time-series entry from a time-series. +{CODE timeseries_region_Remove-TimeSeriesFor-Single-Time-Point@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we remove a range of time-series entries from a time-series. +{CODE timeseries_region_TimeSeriesFor-Remove-Time-Points-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +{PANEL: Removing Time-Series Entries Using `TimeSeriesBatchOperation`} + +`TimeSeriesBatchOperation` can append or remove multiple time-series entries. +To instruct it which operations to perform, provide it with `TimeSeriesOperation` constructs. + +* `TimeSeriesOperation` + {CODE TimeSeriesOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +--- + +#### Usage Flow + +* Create a `TimeSeriesOperation` instance + * Populate the `TimeSeriesOperation` instance with - + The time-series name. + A list of removals. + * The list of removals is constructed of `RemoveOperation` instances. + Each instance defines a range of entries that will be removed from the time-series. + * Set a removal range using - + `From` - the timestamp of the first time-series entry of the range + `To` - the timestamp of the last time-series entry to be removed. +* Create a `TimeSeriesBatchOperation` instance. + * Pass its constructor the document ID and the `TimeSeriesOperation` instance you've created. +* Call `store.Operations.Send` to execute the operation. + * Pass it the `TimeSeriesBatchOperation` instance you've created. + +--- + +#### Code Sample + +Here, we remove two ranges of entries from a time-series. +{CODE timeseries_region_Remove-Range-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time-Series Management]() + +**Client-API - Session Articles**: +[Time-Series Overview]() +[Creating and Modifying Time-Series]() +[Deleting Time-Series]() +[Retrieving Time-Series Values]() +[Time-Series and Other Features]() + +**Client-API - Operations Articles**: +[Time-Series Operations]() diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index 93db5e3518..fd57322b6b 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -47,6 +47,20 @@ public void TimeSeriesSessionTests() // Use the session to load a document var user = session.Load("users/john"); + // Pass the document object returned from session.Load as a param + // Retrieve a single value from the time series + var val = session.TimeSeriesFor(user, "Heartrate") + .Get(DateTime.MinValue, DateTime.MaxValue); + } + #endregion + + // retrieve a single value - use the document object + #region timeseries_region_TimeSeriesFor-Get-Single-Value-Using-Document-Object + using (var session = store.OpenSession()) + { + // Use the session to load a document + var user = session.Load("users/john"); + // Pass the document object returned from session.Load as a param // Retrieve a single value from the time series var val = session.TimeSeriesFor(user, "Heartrate") @@ -55,6 +69,36 @@ public void TimeSeriesSessionTests() } #endregion + #region timeseries_region_TimeSeriesFor-Get-Single-Value-Using-Document-ID + // retrieve all time points of a time-series named "Heartratea" + // by passing TimeSeriesFor.Get an explict document ID + using (var session = store.OpenSession()) + { + var val = session.TimeSeriesFor("users/john", "Heartrate") + .Get(DateTime.MinValue, DateTime.MaxValue); + } + #endregion + + #region timeseries_region_Pass-TimeSeriesFor-Get-Query-Results + // Query for a document with the Name property "John" + // and get its Heartrate time-series values + using (var session = store.OpenSession()) + { + var baseline = DateTime.Today; + + var query = session.Query() + .Where(u => u.Name == "John"); + + var result = query.ToList(); + + var val = session.TimeSeriesFor(result[0], "Heartrate") + .Get(DateTime.MinValue, DateTime.MaxValue); + + session.SaveChanges(); + } + #endregion + + // retrieve time series names using (var session = store.OpenSession()) { @@ -64,7 +108,38 @@ public void TimeSeriesSessionTests() #endregion } - #region timeseries_region_Remove-TimeSeries-Range + #region timeseries_region_TimeSeriesFor-Append-TimeSeries-Range + var baseline = DateTime.Today; + + // Append 10 heartrate values + using (var session = store.OpenSession()) + { + session.Store(new { Name = "John" }, "users/john"); + + var tsf = session.TimeSeriesFor("users/john", "Heartrate"); + + for (int i = 0; i < 10; i++) + { + tsf.Append(baseline.AddSeconds(i), new[] { 67d }, "watches/fitbit"); + } + + session.SaveChanges(); + } + #endregion + + #region timeseries_region_Remove-TimeSeriesFor-Single-Time-Point + var baseline = DateTime.Today; + using (var session = store.OpenSession()) + { + //remove a single time point + session.TimeSeriesFor("users/john", "Heartrate") + .Remove(baseline.AddMinutes(4)); + + session.SaveChanges(); + } + #endregion + + #region timeseries_region_TimeSeriesFor-Remove-Time-Points-Range var baseline = DateTime.Today; // Append 10 heartrate values @@ -92,8 +167,171 @@ public void TimeSeriesSessionTests() } #endregion + #region timeseries_region_Append-With-IEnumerable + using (var store = GetDocumentStore()) + { + var baseline = DateTime.Today; + + // Open a session + using (var session = store.OpenSession()) + { + // Use the session to create a document + session.Store(new { Name = "John" }, "users/john"); + + IEnumerable values = new List + { + 65d, + 52d, + 72d + }; + + // Create an instance of TimeSeriesFor + // Pass an explicit document ID to the TimeSeriesFor constructor + // Append the three IEnumerable heartrates at the first-minute timestamp + session.TimeSeriesFor("users/john", "Heartrate") + .Append(baseline.AddMinutes(1), values, "watches/fitbit"); + + session.SaveChanges(); + } + } + #endregion + + + #region timeseries_region_Load-Document-And-Include-TimeSeries + // Load a document and Include a specified range of a time-series + using (var session = store.OpenSession()) + { + var baseline = DateTime.Today; + + var user = session.Load("users/1-A", includeBuilder => + includeBuilder.IncludeTimeSeries("Heartrate", + baseline.AddMinutes(200), baseline.AddMinutes(299))); + + var val = session.TimeSeriesFor("users/1-A", "Heartrate") + .Get(baseline.AddMinutes(200), baseline.AddMinutes(299)); + } + #endregion + + #region timeseries_region_Query-Document-And-Include-TimeSeries + // Query for a document and include a whole time-series + using (var session = store.OpenSession()) + { + var baseline = DateTime.Today; + + var query = session.Query() + .Where(u => u.Name == "John") + .Include(includeBuilder => includeBuilder.IncludeTimeSeries( + "Heartrate", DateTime.MinValue, DateTime.MaxValue)); + + var result = query.ToList(); + + var val = session.TimeSeriesFor(result[0], "Heartrate") + .Get(DateTime.MinValue, DateTime.MaxValue); + } + #endregion + + #region timeseries_region_Raw-Query-Document-And-Include-TimeSeries + // Include a Time Series in a Raw Query + using (var session = store.OpenSession()) + { + var baseline = DateTime.Today; + + var start = baseline; + var end = baseline.AddHours(1); + + var query = session.Advanced.RawQuery("from Users include timeseries('Heartrate', $start, $end)") + .AddParameter("start", start) + .AddParameter("end", end); + + var result = query.ToList(); + + var val = session.TimeSeriesFor(result[0], "Heartrate") + .Get(start, end); + } + #endregion } - } + + public void ReebStoreOperationsTests() + { + #region timeseries_region_Append-Using-TimeSeriesBatchOperation + const string documentId = "users/john"; + + using (var store = GetDocumentStore()) + { + using (var session = store.OpenSession()) + { + session.Store(new User(), documentId); + session.SaveChanges(); + } + + var baseline = DateTime.Today; + + var timeSeriesOp = new TimeSeriesOperation + { + Name = "Heartrate", + Appends = new List() + { + new TimeSeriesOperation.AppendOperation + { + Tag = "watches/fitbit", + Timestamp = baseline.AddMinutes(1), + Values = new[] + { + 65d + } + }, + + new TimeSeriesOperation.AppendOperation + { + Tag = "watches/fitbit", + Timestamp = baseline.AddMinutes(2), + Values = new[] + { + 68d + } + } + } + }; + + var timeSeriesBatch = new TimeSeriesBatchOperation(documentId, timeSeriesOp); + + store.Operations.Send(timeSeriesBatch); + + #endregion + + #region timeseries_region_Remove-Range-Using-TimeSeriesBatchOperation + // remove a range of 5 minutes from time-series start + timeSeriesOp = new TimeSeriesOperation + { + Name = "Heartrate", + + Removals = new List() + { + new TimeSeriesOperation.RemoveOperation + { + From = baseline.AddMinutes(20), + To = baseline.AddMinutes(50) + }, + + new TimeSeriesOperation.RemoveOperation + { + From = baseline.AddMinutes(70), + To = baseline.AddMinutes(100) + } + } + }; + + timeSeriesBatch = new TimeSeriesBatchOperation(documentId, timeSeriesOp); + + store.Operations.Send(timeSeriesBatch); + #endregion + } + } + + + + + private IDisposable GetDocumentStore() { @@ -104,4 +342,47 @@ private IDisposable GetDocumentStore() internal class User { } -} + + private interface IFoo + { + #region TimeSeriesFor-Append-definition-double + void Append(DateTime timestamp, double value, string tag = null); + #endregion + + #region TimeSeriesFor-Append-definition-inum + void Append(DateTime timestamp, IEnumerable values, string tag = null); + #endregion + + #region TimeSeriesFor-Remove-definition-single-timepoint + void Remove(DateTime at); + #endregion + + #region TimeSeriesFor-Remove-definition-range-of-timepoints + void Remove(DateTime from, DateTime to); + #endregion + + #region TimeSeriesFor-Get-definition + IEnumerable Get(DateTime from, DateTime to, int start = 0, int pageSize = int.MaxValue); + #endregion + + #region IncludeTimeSeries-definition + TBuilder IncludeTimeSeries(string name, DateTime from, DateTime to); + #endregion + + #region TimeSeriesOperation-class + public class TimeSeriesOperation + { + public List Appends; + public List Removals; + public string Name; + #endregion + } + + + + + + } + + + } From 395f2e743f708a5155455057029fc7c9638a90e7 Mon Sep 17 00:00:00 2001 From: reebhub Date: Tue, 5 May 2020 05:01:02 +0300 Subject: [PATCH 04/56] RDoc-1703_TimeSeries - overall changes - Operations complete --- .../document-extensions/timeseries/.docs.json | 4 +- .../timeseries/client-api/.docs.json | 4 +- .../client-api/api-overview.markdown | 69 ++++--- .../append-time-series-entries.markdown | 29 +-- .../bulk-time-series-operations.markdown | 42 ---- .../client-api/get-time-series.markdown | 10 +- .../remove-time-series-entries.markdown | 34 +--- .../time-series-operations.markdown | 184 ++++++++++++++++++ ...markdown => rollup-and-retention.markdown} | 2 +- .../TimeSeries/TimeSeriesTests.cs | 47 ++++- 10 files changed, 290 insertions(+), 135 deletions(-) delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/bulk-time-series-operations.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/{rollup.markdown => rollup-and-retention.markdown} (95%) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json index e0fd0a1a3a..43d4ba5305 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json @@ -21,8 +21,8 @@ "Mappings": [] }, { - "Path": "rollup.markdown", - "Name": "Rollup", + "Path": "rollup-and-retention.markdown", + "Name": "Rollup and Retention", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json index 057ff7e4dd..e335b6886c 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json @@ -24,8 +24,8 @@ "Mappings": [] }, { - "Path": "bulk-time-series-operations.markdown", - "Name": "Bulk Time-Series Operations", + "Path": "time-series-operations.markdown", + "Name": "Time-Series Operations", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown index dde5d622c0..58c7baa35b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -55,18 +55,19 @@ When the last entry is removed, the series is removed. You can manage time-series using the session `TimeSeriesFor` object. * **`TimeSeriesFor`Methods**: - * `TimeSeriesFor.Append` - `Append` is used to create and update time-series and time-series entries. + * [TimeSeriesFor.Append](../../../document-extensions/timeseries/client-api/append-time-series-entries) + Use this method to create and update time-series and time-series entries. When an existing time-series entry is appended, it is updated with the new data. When a non-existing time-series entry is appended, it is created. An attempt to append a time-series entry to a non-existing time-series, creates the time-series and appends it this entry. - * `TimeSeriesFor.Get` - `Get` retrieves a value or a range of values from a time-series at the - specified timestamps. - * `CountersFor.Remove` - `Remove` deletes a time-series entry from a time-series. + * [CountersFor.Remove](../../../document-extensions/timeseries/client-api/remove-time-series-entries) + Use this method to remove a time-series entry from a time-series. When a time-series' last entry is removed, the time-series is removed as well. + * [TimeSeriesFor.Get](../../../document-extensions/timeseries/client-api/get-time-series) + Use this method to retrieve time-series data. + You can specify the time-series entry, or range of entries, whose values + you want to get. * **Usage Flow**: * Open a session. @@ -101,36 +102,40 @@ time-series' names. {PANEL: Managing Time-Series Using `store` Operations} -There are time-series actions that can be performed by both store operations -and session methods. Each interface offers its advantages, e.g. the transactional -guarantee provided by the session interface vs low-level commands' lack of it -(in case you prefer not to bundle separate operations into a single transaction, -for example). +Time-series and their entries can be appended, removed and retrieved via both +[session methods](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-session-methods)` +and [store operations](../../../document-extensions/timeseries/client-api/time-series-operations). -An action that is currently available only through store operations, -is the loading of a document's multiple time-series by `GetTimeSeriesOperation`. +* The main advantage session methods have over store operations is the + transactional guarantee they provide. +* There are actions that are only available via store operations. +If you need to perform an action for which you have both a session method and +a store operation and neither has a clear advantage over the other, simply +choose the one you're more comfortable with. --- -#### `GetTimeSeriesOperation`: Get Time-Series Data - -You can use this method to retrieve data from several diffrent time-series -of a document. - -* Pass `GetTimeSeriesOperation` a `TimeSeriesRange` construct to provide - it with the **start** and **end** time and dates and with the name of - the time-series you want to update. - -* Retrieved results are put in a class holding a dictionary of - `TimeSeriesRangeResult` classes. - ---- - -#### `TimeSeriesBatchOperation`: Append or Remove data from a time-series - -* Pass `TimeSeriesBatchOperation` a `TimeSeriesOperation` construct to - instruct it what to do. +#### Commonly Used Time-Series Operations + +* `TimeSeriesBatchOperation` + Use this operation to append and remove time-series and time-series entries. + `TimeSeriesBatchOperation` has an advantage over `session.Append` and + `session.Remove`, in allowing you to bundle a series of Append and/or + Remove operations in a list and execute tham in a single call. +* `GetTimeSeriesOperation` + Use this operation to retrieve time-series data. + `GetTimeSeriesOperation` has an advantage over `session.Get`, in allowing + you to retrieve data from multiple time-series of a selected document in + a single call. +* `ConfigureTimeSeriesOperation` + Use this operation to manage time-series roll-up and retention policies. + +Learn how to use `TimeSeriesBatchOperation` and `GetTimeSeriesOperation`in the +[article dedicated to operations](../../../document-extensions/timeseries/client-api/time-series-operations). + +Learn how to use `ConfigureTimeSeriesOperation` in the article dedicated to +[rollup and retention](../../../document-extensions/timeseries/rollup-and-retention). {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown index 7fc76b5f95..a5e730fa4e 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown @@ -93,31 +93,12 @@ The three values will be appended at the same timestamp. {PANEL: Appending Time-Series Entries Using `TimeSeriesBatchOperation`} -`TimeSeriesBatchOperation` can append or remove multiple time-series entries. -To instruct it which operations to perform, provide it with `TimeSeriesOperation` constructs. +Append time-series entries using the `TimeSeriesBatchOperation` operation. +It has an advantage over `session.Append`, in that it allows you to bundle +a series of Append actions in a list and execute tham all in a single call. -* `TimeSeriesOperation` - {CODE TimeSeriesOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - ---- - -#### Usage Flow - -* Create an instance of `TimeSeriesOperation` - * Populate it with a new `AppendOperation` list for every time-series entry you want to append. - * Populate each `AppendOperation` list with the properties of the time-series - entry that you want to append. -* Create a `TimeSeriesBatchOperation` instance. - * Pass its constructor the document ID and the `TimeSeriesOperation` instance you've created. -* Call `store.Operations.Send` to execute the operation. - * Pass it the `TimeSeriesBatchOperation` instance you've created. - ---- - -#### Code Sample - -Here, we append a time-series two entries using `TimeSeriesBatchOperation`. -{CODE timeseries_region_Append-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +Learn how to use `TimeSeriesBatchOperation` [in the article dedicated to +time-series operations](../../../document-extensions/timeseries/client-api/time-series-operations#use-timeseriesbatchoperation-to-append). {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/bulk-time-series-operations.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/bulk-time-series-operations.markdown deleted file mode 100644 index 40ab3b3d19..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/bulk-time-series-operations.markdown +++ /dev/null @@ -1,42 +0,0 @@ -# Bulk Time Series Operations ---- - -{NOTE: } - -* the difference between store and session -* timeseries can be created[, modified?] and removed in bulk [using the store interface] - -* In this page: - * [Adding Time Series In Bulk]() - * [Removing [deleting?] Time Series In Bulk]() - * [Adding Time Points In Bulk To a Series]() - * [Removing Time Points In Bulk From a Series]() -{NOTE/} - ---- - -{PANEL: Adding Time Series In Bulk} -{PANEL/} - -{PANEL: Removing [deleting?] Time Series In Bulk} -{PANEL/} - -{PANEL: Adding Time Points In Bulk To a Series} -{PANEL/} - -{PANEL: Removing Time Points In Bulk From a Series} -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown index a99afa5756..3981b55e7b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown @@ -76,7 +76,15 @@ and get its "Heartrate" time-series data. {PANEL/} {PANEL: Get Time-Series Entries Using `GetTimeSeriesOperaion`} -... + +Get time-series entries using the `GetTimeSeriesOperaion` operation. +It has an advantage over `session.Get`, in that it allows you to retrieve +data from multiple time-series of a selected document in a single call. + +Learn how to use `GetTimeSeriesOperaion` [in the article dedicated to +time-series operations](../../../document-extensions/timeseries/client-api/time-series-operations#gettimeseriesoperation:-get-time-series-data). + + {PANEL/} ## Related articles diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown index a736a64d1a..33b53ae3f3 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown @@ -69,36 +69,14 @@ Here, we remove a range of time-series entries from a time-series. {PANEL: Removing Time-Series Entries Using `TimeSeriesBatchOperation`} -`TimeSeriesBatchOperation` can append or remove multiple time-series entries. -To instruct it which operations to perform, provide it with `TimeSeriesOperation` constructs. +Remove ranges of time-series entries using the `TimeSeriesBatchOperation` +operation. +It has an advantage over `session.Remove`, in that it allows you to bundle +a series of Remove actions in a list and execute tham all in a single call. -* `TimeSeriesOperation` - {CODE TimeSeriesOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +Learn how to use `TimeSeriesBatchOperation` [in the article dedicated to +time-series operations](../../../document-extensions/timeseries/client-api/time-series-operations#use-timeseriesbatchoperation-to-remove). ---- - -#### Usage Flow - -* Create a `TimeSeriesOperation` instance - * Populate the `TimeSeriesOperation` instance with - - The time-series name. - A list of removals. - * The list of removals is constructed of `RemoveOperation` instances. - Each instance defines a range of entries that will be removed from the time-series. - * Set a removal range using - - `From` - the timestamp of the first time-series entry of the range - `To` - the timestamp of the last time-series entry to be removed. -* Create a `TimeSeriesBatchOperation` instance. - * Pass its constructor the document ID and the `TimeSeriesOperation` instance you've created. -* Call `store.Operations.Send` to execute the operation. - * Pass it the `TimeSeriesBatchOperation` instance you've created. - ---- - -#### Code Sample - -Here, we remove two ranges of entries from a time-series. -{CODE timeseries_region_Remove-Range-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown new file mode 100644 index 0000000000..02036dac3e --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown @@ -0,0 +1,184 @@ +# Time-Series Operations + +--- + +{NOTE: } + +Time-series and their entries can be appended, removed and retrieved via both +[session methods](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-session-methods) +and `store operations`. + +* The main advantage session methods have over store operations is the + transactional guarantee they provide. +* There are actions that are only available via store operations. + +If you need to perform an action for which you have both a session method and +a store operation and neither offers a clear advantage over the other, simply +choose the one you're more comfortable with. + +--- +* In this page: + * [`TimeSeriesBatchOperation`: Append and Remove Time-Series Data](../../../document-extensions/timeseries/client-api/time-series-operations#timeseriesbatchoperation:-append-and-remove-time-series-data) + * [Use `TimeSeriesBatchOperation` to Append](../../../document-extensions/timeseries/client-api/time-series-operations#use-timeseriesbatchoperation-to-append) + * [Use `TimeSeriesBatchOperation` to Remove](../../../document-extensions/timeseries/client-api/time-series-operations#use-timeseriesbatchoperation-to-remove) + * [`GetTimeSeriesOperation`: Get Time-Series Data](../../../document-extensions/timeseries/client-api/time-series-operations#gettimeseriesoperation:-get-time-series-data) + * [Get A Single Time-Series' Data](../../../document-extensions/timeseries/client-api/time-series-operations#get-a-single-time-series-data) + * [Get Multiple Time-Series Data](../../../document-extensions/timeseries/client-api/time-series-operations#get-multiple-time-series-data) + * [`ConfigureTimeSeriesOperation`: Manage RollUp and Retention Policies](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies) +{NOTE/} + +--- + +{PANEL: **TimeSeriesBatchOperation**: Append and Remove Time-Series Data} + +`TimeSeriesBatchOperation` can append and remove single or multiple time-series +entries. +You can bundle a series of Append and/or Remove operations in a list, and +execute tham all in a single call. + +To instruct `TimeSeriesBatchOperation` which actions to perform, pass it +an `TimeSeriesOperation` instance for each Append or Remove action. + +* `TimeSeriesOperation` + {CODE TimeSeriesOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +--- + +## Use TimeSeriesBatchOperation To Append + +--- + +#### Usage Flow + +* Create an instance of `TimeSeriesOperation` + * Populate it with a new `AppendOperation` list for every time-series entry you want to append. + * Populate each `AppendOperation` list with the properties of the time-series + entry that you want to append. +* Create a `TimeSeriesBatchOperation` instance. + * Pass its constructor the document ID and the `TimeSeriesOperation` instance you've created. +* Call `store.Operations.Send` to execute the operation. + * Pass it the `TimeSeriesBatchOperation` instance you've created. + +--- + +#### Code Sample + +Here, we append a time-series two entries using `TimeSeriesBatchOperation`. +{CODE timeseries_region_Append-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + + +## Use TimeSeriesBatchOperation To Remove + +--- + +#### Usage Flow + +* Create a `TimeSeriesOperation` instance + * Populate the `TimeSeriesOperation` instance with - + The time-series name. + A list of removals. + * The list of removals is constructed of `RemoveOperation` instances. + Each instance defines a range of entries that will be removed from the time-series. + * Set a removal range using - + `From` - the timestamp of the first time-series entry of the range + `To` - the timestamp of the last time-series entry to be removed. +* Create a `TimeSeriesBatchOperation` instance. + * Pass its constructor the document ID and the `TimeSeriesOperation` instance you've created. +* Call `store.Operations.Send` to execute the operation. + * Pass it the `TimeSeriesBatchOperation` instance you've created. + +--- + +#### Code Sample + +Here, we remove two ranges of entries from a time-series. +{CODE timeseries_region_Remove-Range-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +{PANEL: **GetTimeSeriesOperation**: Get Time-Series Data} + +Get time-series data using `GetTimeSeriesOperaion`. +`GetTimeSeriesOperaion` has an advantage over `session.Get`, in that it +allows you to retrieve data from multiple time-series of a selected document +in a single call. + +There are two overloads of this operation. + +* The first overload retrieves the data of a single time-series. +* The second overload retrieve the data of as many time-series as you like. + +--- + +## Get A Single Time-Series' Data + +--- + +#### Usage Flow + +* Pass `GetTimeSeriesOperation` - + * The document ID + * The time-series name + * Range start: Timestamp for the first time-series entry to be retrieved + * Range end: Timestamp for the last time-series entry to be retrieved +* Use `store.Operations.Send` to execute the operation. +* Data is returned into a `dictionary of `TimeSeriesRangeResult` classes. + * TimeSeriesRangeResult: + {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +#### Code Sample + +Here, we retrieve all entries of a single time-series. +{CODE timeseries_region_Get-Single-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +--- + +## Get Multiple Time-Series Data + +--- + +#### Usage Flow + +* Pass `GetTimeSeriesOperation` the document ID and a list of `TimeSeriesRange` instances. + Each `TimeSeriesRange` instance defines - + * **Name** - The time-series name + * **From** - Range start, the timestamp for the first time-series entry to be retrieved + * **To** - Range end, the timestamp for the last time-series entry to be retrieved +* Use `store.Operations.Send` to execute the operation. +* Data is returned into into a `dictionary of `TimeSeriesRangeResult` classes. + * TimeSeriesRangeResult: + {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +--- + +#### Code Sample + +Here, we retrieve chosen entries from two time-series. +{CODE timeseries_region_Get-Multiple-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +{PANEL: **ConfigureTimeSeriesOperation**: Manage RollUp and Retention Policies} + +Use `ConfigureTimeSeriesOperation` to manage time-series rollup and retention policies. + +Learn how to use this operation in the article dedicated to +[rollup and retention](../../../document-extensions/timeseries/rollup-and-retention). + +{PANEL/} + + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown similarity index 95% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown index 8743b4a92e..7dfb8dddf8 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown @@ -1,4 +1,4 @@ -# Time Series Rollup +# Time-Series Rollup and Retention --- {NOTE: } diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index fd57322b6b..925c5c00fc 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -325,6 +325,39 @@ public void ReebStoreOperationsTests() store.Operations.Send(timeSeriesBatch); #endregion + + #region timeseries_region_Get-Single-Time-Series + // Get all values of a single time-series + var SingleTimesSeriesDetails = store.Operations.Send( + new GetTimeSeriesOperation(documentId, "RoutineHeartrate", DateTime.MinValue, DateTime.MaxValue)); + #endregion + + #region timeseries_region_Get-Multiple-Time-Series + // Get chosen values of two time-series + var MultipletimesSeriesDetails = store.Operations.Send( + new GetTimeSeriesOperation(documentId, new List + { + new TimeSeriesRange + { + Name = "RoutineHeartrate", + From = baseline.AddMinutes(1), + To = baseline.AddMinutes(10) + }, + + new TimeSeriesRange + { + Name = "BicycleHeartrate", + From = baseline.AddMinutes(1), + To = baseline.AddMinutes(10) + } + })); + #endregion + + + + + + } } @@ -378,11 +411,19 @@ public class TimeSeriesOperation #endregion } + #region TimeSeriesRangeResult-class + public class TimeSeriesRangeResult + { + public DateTime From, To; + public TimeSeriesEntry[] Entries; + public long? TotalResults; + internal string Hash; + } + #endregion - - } + } - } +} From b92ece08b8f7133b19eb8be175b5699a5c32b97a Mon Sep 17 00:00:00 2001 From: reebhub Date: Tue, 5 May 2020 13:50:56 +0300 Subject: [PATCH 05/56] RDoc-1703_TimeSeries structure change --- .../timeseries/client-api/.docs.json | 10 ++-------- .../client-api/append-time-series-entries.markdown | 2 +- .../timeseries/client-api/get-time-series.markdown | 2 +- .../client-api/include-time-series.markdown | 6 +++--- ...ries.markdown => patching-time-series.markdown} | 0 .../client-api/remove-time-series-entries.markdown | 2 +- .../client-api/time-series-operations.markdown | 8 ++++---- .../timeseries-and-other-features/.docs.json | 14 ++++++++++---- .../time-series-and-ongoing-tasks.markdown | 2 +- ...ime-series-and-other-features-overview.markdown | 2 +- .../time-series-and-revisions.markdown | 2 +- .../time-series-and-smuggler.markdown | 2 +- .../time-series-and-the-changes-api.markdown | 2 +- 13 files changed, 27 insertions(+), 27 deletions(-) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{patch-time-series.markdown => patching-time-series.markdown} (100%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/{client-api => timeseries-and-other-features}/time-series-and-the-changes-api.markdown (96%) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json index e335b6886c..5d0b4b437e 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json @@ -36,14 +36,8 @@ "Mappings": [] }, { - "Path": "patch-time-series.markdown", - "Name": "Patch Time-Series", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "time-series-and-the-changes-api.markdown", - "Name": "Time-Series and the Changes API", + "Path": "patching-time-series.markdown", + "Name": "Patching Time-Series", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown index a5e730fa4e..d51291963d 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown @@ -76,7 +76,7 @@ The second method updates the entry with a value of type `IEnumerable double`. --- -#### Code Samples +#### Usage Samples Here, we pass `TimeSeriesFor.Append` the value using a `double`, and repeat it in a loop to append multiple time-series entries. diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown index 3981b55e7b..0fff6ac628 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown @@ -62,7 +62,7 @@ --- -#### Code Samples +#### Usage Samples Here, we retrieve all time-series entries of a time-series. {CODE timeseries_region_TimeSeriesFor-Get-Single-Value-Using-Document-ID@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/include-time-series.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/include-time-series.markdown index 1fdeba47fc..e05f7a5007 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/include-time-series.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/include-time-series.markdown @@ -56,7 +56,7 @@ via `session.Load`, use `IncludeTimeSeries`. --- -#### Code Samples +#### Usage Samples Here, we **load** a document using `session.Load` and **include** a selected range of entries from a time-series named "Heartrate". @@ -103,7 +103,7 @@ via `session.Query`, use `IncludeTimeSeries`. --- -#### Code Samples +#### Usage Samples Here, we **load** a document using `session.Query` and **include** a whole time-series named "Heartrate". @@ -130,7 +130,7 @@ simply embed an `include timeseries` statement in your RQL. --- -#### Code Sample +#### Usage Sample Here, we include the whole "Heartrate" time-series while running a raw query to load the document that owns it. diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patch-time-series.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-time-series.markdown similarity index 100% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patch-time-series.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-time-series.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown index 33b53ae3f3..6507fcce1a 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown @@ -57,7 +57,7 @@ timestamp to an end timestamp). --- -#### Code Samples +#### Usage Samples Here, we remove a single time-series entry from a time-series. {CODE timeseries_region_Remove-TimeSeriesFor-Single-Time-Point@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown index 02036dac3e..44c243e108 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown @@ -61,7 +61,7 @@ an `TimeSeriesOperation` instance for each Append or Remove action. --- -#### Code Sample +#### Usage Sample Here, we append a time-series two entries using `TimeSeriesBatchOperation`. {CODE timeseries_region_Append-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -90,7 +90,7 @@ Here, we append a time-series two entries using `TimeSeriesBatchOperation`. --- -#### Code Sample +#### Usage Sample Here, we remove two ranges of entries from a time-series. {CODE timeseries_region_Remove-Range-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -127,7 +127,7 @@ There are two overloads of this operation. * TimeSeriesRangeResult: {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -#### Code Sample +#### Usage Sample Here, we retrieve all entries of a single time-series. {CODE timeseries_region_Get-Single-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -152,7 +152,7 @@ Here, we retrieve all entries of a single time-series. --- -#### Code Sample +#### Usage Sample Here, we retrieve chosen entries from two time-series. {CODE timeseries_region_Get-Multiple-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/.docs.json index a5939e9a6d..617b13517a 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/.docs.json @@ -1,25 +1,31 @@ [ { "Path": "time-series-and-other-features-overview.markdown", - "Name": "Time Series and Other Features Overview", + "Name": "Overview", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "time-series-and-revisions.markdown", - "Name": "Time Series and Revisions", + "Name": "Time-Series and Revisions", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "time-series-and-smuggler.markdown", - "Name": "Time Series and Smuggler", + "Name": "Time-Series and Smuggler", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "time-series-and-ongoing-tasks.markdown", - "Name": "Time Series and Ongoing Tasks", + "Name": "Time-Series and Ongoing Tasks", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "time-series-and-the-changes-api.markdown", + "Name": "Time-Series and the Changes API", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-ongoing-tasks.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-ongoing-tasks.markdown index 078a7e2a45..fa6e99196d 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-ongoing-tasks.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-ongoing-tasks.markdown @@ -1,4 +1,4 @@ -# Time Series and Ongoing Tasks +# Time-Series and Ongoing Tasks --- {NOTE: } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown index f0161d7f1f..7b3826e726 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown @@ -1,4 +1,4 @@ -# Time Series and Other Tasks - Overview +# Time-Series and Other Features - Overview --- {NOTE: } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-revisions.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-revisions.markdown index 467e878444..316cfe34ab 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-revisions.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-revisions.markdown @@ -1,4 +1,4 @@ -# Time Series and Revisions +# Time-Series and Revisions --- {NOTE: } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-smuggler.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-smuggler.markdown index 8a9bed92f3..9443ef29af 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-smuggler.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-smuggler.markdown @@ -1,4 +1,4 @@ -# Time Series and Smuggler +# Time-Series and Smuggler --- {NOTE: } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-and-the-changes-api.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-the-changes-api.markdown similarity index 96% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-and-the-changes-api.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-the-changes-api.markdown index 39519efdf3..22543e1ad6 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-and-the-changes-api.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-the-changes-api.markdown @@ -1,4 +1,4 @@ -# Time Series and the Changes API +# Time-Series and the Changes API --- {NOTE: } From 56105e6ce85079caf2168db8fbcccc719e20a686 Mon Sep 17 00:00:00 2001 From: reebhub Date: Tue, 5 May 2020 23:16:34 +0300 Subject: [PATCH 06/56] RDoc-1703_TimeSeries BulkInsert --- .../append-time-series-entries.markdown | 2 +- .../remove-time-series-entries.markdown | 2 +- .../time-series-operations.markdown | 78 ++++++++++++++----- .../TimeSeries/TimeSeriesTests.cs | 25 +++++- 4 files changed, 85 insertions(+), 22 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown index d51291963d..4d16aa3e9d 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown @@ -98,7 +98,7 @@ It has an advantage over `session.Append`, in that it allows you to bundle a series of Append actions in a list and execute tham all in a single call. Learn how to use `TimeSeriesBatchOperation` [in the article dedicated to -time-series operations](../../../document-extensions/timeseries/client-api/time-series-operations#use-timeseriesbatchoperation-to-append). +time-series operations](../../../document-extensions/timeseries/client-api/time-series-operations#use--to-append). {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown index 6507fcce1a..4f141c4448 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown @@ -75,7 +75,7 @@ It has an advantage over `session.Remove`, in that it allows you to bundle a series of Remove actions in a list and execute tham all in a single call. Learn how to use `TimeSeriesBatchOperation` [in the article dedicated to -time-series operations](../../../document-extensions/timeseries/client-api/time-series-operations#use-timeseriesbatchoperation-to-remove). +time-series operations](../../../document-extensions/timeseries/client-api/time-series-operations#use--to-remove). {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown index 44c243e108..37174f2f7e 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown @@ -8,28 +8,35 @@ Time-series and their entries can be appended, removed and retrieved via both [session methods](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-session-methods) and `store operations`. -* The main advantage session methods have over store operations is the - transactional guarantee they provide. -* There are actions that are only available via store operations. +* The main advantage `session` methods have over `store` operations is the + transactional guarantee `session` methods provide. +* There are time-series actions that are only available via store operations, + including - + * The retrieval of multiple time-series' data in a single server call + * Managing time-series rollup and retention policies + * Appending time-series in bulk + +{INFO: } +If you need to perform an action that can be accomplished by both +a session method and a store operation, and neither offers a clear +advantage over the other, simply choose the one you're more +comfortable with. +{INFO/} -If you need to perform an action for which you have both a session method and -a store operation and neither offers a clear advantage over the other, simply -choose the one you're more comfortable with. - ---- * In this page: * [`TimeSeriesBatchOperation`: Append and Remove Time-Series Data](../../../document-extensions/timeseries/client-api/time-series-operations#timeseriesbatchoperation:-append-and-remove-time-series-data) - * [Use `TimeSeriesBatchOperation` to Append](../../../document-extensions/timeseries/client-api/time-series-operations#use-timeseriesbatchoperation-to-append) - * [Use `TimeSeriesBatchOperation` to Remove](../../../document-extensions/timeseries/client-api/time-series-operations#use-timeseriesbatchoperation-to-remove) + * [Use `TimeSeriesBatchOperation` to Append](../../../document-extensions/timeseries/client-api/time-series-operations#use--to-append) + * [Use `TimeSeriesBatchOperation` to Remove](../../../document-extensions/timeseries/client-api/time-series-operations#use--to-remove) + * [`BulkInsert`: Append Time-Series In Bulk](../../../document-extensions/timeseries/client-api/time-series-operations#bulkinsert:-append-time-series-in-bulk) * [`GetTimeSeriesOperation`: Get Time-Series Data](../../../document-extensions/timeseries/client-api/time-series-operations#gettimeseriesoperation:-get-time-series-data) * [Get A Single Time-Series' Data](../../../document-extensions/timeseries/client-api/time-series-operations#get-a-single-time-series-data) * [Get Multiple Time-Series Data](../../../document-extensions/timeseries/client-api/time-series-operations#get-multiple-time-series-data) - * [`ConfigureTimeSeriesOperation`: Manage RollUp and Retention Policies](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies) + * [`ConfigureTimeSeriesOperation`: Manage Rollup and Retention Policies](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies) {NOTE/} --- -{PANEL: **TimeSeriesBatchOperation**: Append and Remove Time-Series Data} +{PANEL: `TimeSeriesBatchOperation`: Append and Remove Time-Series Data} `TimeSeriesBatchOperation` can append and remove single or multiple time-series entries. @@ -44,7 +51,7 @@ an `TimeSeriesOperation` instance for each Append or Remove action. --- -## Use TimeSeriesBatchOperation To Append +### Use `TimeSeriesBatchOperation` To Append --- @@ -66,9 +73,9 @@ an `TimeSeriesOperation` instance for each Append or Remove action. Here, we append a time-series two entries using `TimeSeriesBatchOperation`. {CODE timeseries_region_Append-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +--- - -## Use TimeSeriesBatchOperation To Remove +### Use `TimeSeriesBatchOperation` To Remove --- @@ -97,7 +104,40 @@ Here, we remove two ranges of entries from a time-series. {PANEL/} -{PANEL: **GetTimeSeriesOperation**: Get Time-Series Data} +{PANEL: `BulkInsert`: Append Time-Series In Bulk} + +You can append time-series entries in bulk, using +[BulkInsert](../../../client-api/bulk-insert/how-to-work-with-bulk-insert-operation). + +--- + +#### Usage Flow + +* Call `store.BulkInsert`. + BulkInsert's return value is an `BulkInsertOperation` instance. +* Call the `BulkInsertOperation` instance's `TimeSeriesFor` method. + * Pass it the document ID, and the time-series name + * Its return value is a new `TimeSeriesBulkInsert` instance. +* Populate the `TimeSeriesBulkInsert` instance with Append actions. + Pass each Append action - + * The timestamp of the entry you want to append + * The entry's new values + * The entry's tag + +--- + +#### Usage Samples + +Here, we append a time-series two entries. +{CODE timeseries_region_Use-BulkInsert-To-Append-2-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we use a loop to append a time-series a hundred entries. +{CODE timeseries_region_Use-BulkInsert-To-Append-100-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + +{PANEL/} + +{PANEL: `GetTimeSeriesOperation`: Get Time-Series Data} Get time-series data using `GetTimeSeriesOperaion`. `GetTimeSeriesOperaion` has an advantage over `session.Get`, in that it @@ -111,7 +151,7 @@ There are two overloads of this operation. --- -## Get A Single Time-Series' Data +### Get A Single Time-Series' Data --- @@ -134,7 +174,7 @@ Here, we retrieve all entries of a single time-series. --- -## Get Multiple Time-Series Data +### Get Multiple Time-Series Data --- @@ -159,7 +199,7 @@ Here, we retrieve chosen entries from two time-series. {PANEL/} -{PANEL: **ConfigureTimeSeriesOperation**: Manage RollUp and Retention Policies} +{PANEL: `ConfigureTimeSeriesOperation`: Manage Rollup and Retention Policies} Use `ConfigureTimeSeriesOperation` to manage time-series rollup and retention policies. diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index 925c5c00fc..d1704b62fa 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -353,8 +353,31 @@ public void ReebStoreOperationsTests() })); #endregion + #region timeseries_region_Use-BulkInsert-To-Append-2-Entries + // Use BulkInsert to append 2 time-series entries + using (var bulkInsert = store.BulkInsert()) + { + using (var timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentID, "Heartrate")) + { + timeSeriesBulkInsert.Append(baseline.AddMinutes(2), 61d, "watches/fitbit"); + timeSeriesBulkInsert.Append(baseline.AddMinutes(3), 62d, "watches/apple-watch"); + } + } + #endregion - + #region timeseries_region_Use-BulkInsert-To-Append-100-Entries + // Use BulkInsert to append 100 time-series entries + for (int minute = 0; minute < 100; minute++) + { + using (var bulkInsert = store.BulkInsert()) + { + using (var timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentId, "Heartrate")) + { + timeSeriesBulkInsert.Append(baseline.AddMinutes(minute), new double[] { minute }, "watches/fitbit"); + } + } + } + #endregion From dd447d3df1ceb8aa68794c1b6c133b4838758a0b Mon Sep 17 00:00:00 2001 From: reebhub Date: Wed, 6 May 2020 04:32:32 +0300 Subject: [PATCH 07/56] RDoc-1703_TimeSeries session patching --- .../client-api/patching-time-series.markdown | 65 +++++++++++---- .../time-series-operations.markdown | 12 +++ .../TimeSeries/TimeSeriesTests.cs | 80 +++++++++++++++++++ 3 files changed, 142 insertions(+), 15 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-time-series.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-time-series.markdown index c531a6c062..8c31af7f37 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-time-series.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-time-series.markdown @@ -3,31 +3,66 @@ {NOTE: } -* Time series can be patched to a series of documents using the API or the Studio. - ... +You can patch time-series to a document or a series of documents +using either a `session` methods or a `document store` operation. + * In this page: - * [Patching]() - * [Patch by Query]() - * [Query Samples]() - * [Patch by API]() - * [Code Samples]() + * [Patching Time-Series Using `session.Advanced.Defer`](../../../document-extensions/timeseries/client-api/patching-time-series#patching-time-series-using-session.advanced.defer) + * [Patching Time-Series Using `PatchOperation`](../../../document-extensions/timeseries/client-api/patching-time-series#patching-time-series-using-patchoperation) {NOTE/} --- -{PANEL: Patching} -{PANEL/} +{PANEL: Patching Time-Series Using `session.Advanced.Defer`} -{PANEL: Patch by Query} -{PANEL/} +To patch time-series entries to a document or to remove entries +from a document, call `session.Advanced.Defer`. +Instruct `session.Advanced.Defer` which actions to perform, +by passing it a Java Script. -{PANEL: Query Samples} -{PANEL/} +--- + +#### Usage Flow + +* Open a session +* Call `session.Advanced.Defer` and pass it a `PatchCommandData` instance. + Pass the `PatchCommandData` constructor method - + * the document ID + * the change vector if you need to (or `null` if not) + * a new `PatchRequest` instance +* Use `PatchRequest` to pass `session.Advanced.Defer` a Java Script that + specifies whether to Append or Remove time-series entries and how to + perform it. +* Call `session.SaveChanges()` to execute the patch. + +--- + +#### Usage Samples + +Here, we use `session.Advanced.Defer` to patch a document a single +time-series entry. +The script draws its arguments from its "Values" section. +{CODE timeseries_region_Patch-A-Document-A-Single-Time-Series-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we provide `session.Advanced.Defer`with a script that patches +100 time-series entries to a document. Timestamps and values are drawn +from an array, and other arguments are provided in the "Values" section. +{CODE timeseries_region_Patch-Append-A-Document-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we remove a range of 50 time-series entries from a document. +{CODE timeseries_region_Patch-Remove-From-A-Document-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -{PANEL: Patch by API} {PANEL/} -{PANEL: Code Samples} +{PANEL: Patching Time-Series Using `PatchOperation`} + +Patch time-series data via the `document store` using `PatchOperation`. +It has an advantage over `session.Advanced.Defer`, in that it allows you +to patch multiple documents. + +Learn how to use `PatchOperation` with time-series [in the article +dedicated to time-series operations](../../../). + {PANEL/} ## Related articles diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown index 37174f2f7e..8898e0f55c 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown @@ -15,6 +15,7 @@ and `store operations`. * The retrieval of multiple time-series' data in a single server call * Managing time-series rollup and retention policies * Appending time-series in bulk + * Patching time-series data to multiple documents. {INFO: } If you need to perform an action that can be accomplished by both @@ -32,6 +33,7 @@ comfortable with. * [Get A Single Time-Series' Data](../../../document-extensions/timeseries/client-api/time-series-operations#get-a-single-time-series-data) * [Get Multiple Time-Series Data](../../../document-extensions/timeseries/client-api/time-series-operations#get-multiple-time-series-data) * [`ConfigureTimeSeriesOperation`: Manage Rollup and Retention Policies](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies) + * [`PatchOperation`: Patch Time-Series Data To Documents](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies) {NOTE/} --- @@ -206,6 +208,16 @@ Use `ConfigureTimeSeriesOperation` to manage time-series rollup and retention po Learn how to use this operation in the article dedicated to [rollup and retention](../../../document-extensions/timeseries/rollup-and-retention). +{PANEL/} + +{PANEL: `PatchOperation`: Patch Time-Series Data To Documents} + +Using `PatchOperation` to patch time-series data to documents +has an advantage over using `session.Advanced.Defer`, in that +it allows you to patch multiple documents. + + + {PANEL/} diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index d1704b62fa..3842920c22 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -249,6 +249,86 @@ public void TimeSeriesSessionTests() .Get(start, end); } #endregion + + #region timeseries_region_Patch-A-Document-A-Single-Time-Series-Entry + // Patch a document a single time-series entry + using (var session = store.OpenSession()) + { + var baseline = DateTime.Today; + + session.Advanced.Defer(new PatchCommandData("users/1-A", null, + new PatchRequest + { + Script = @"timeseries(this, args.timeseries). + append( + args.timestamp, + args.values, + args.tag + );", + Values = + { + { "timeseries", "Heartrate" }, + { "timestamp", baseline.AddMinutes(1) }, + { "values", 59d }, + { "tag", "watches/fitbit" } + } + }, null)); + session.SaveChanges(); + } + #endregion + + #region timeseries_region_Patch-Append-A-Document-100-TS-Entries + var baseline = DateTime.Today; + + // Create an array of values to patch + var toAppend = Enumerable.Range(0, 100) + .Select(i => new Tuple + (baseline.AddSeconds(i), 59d)) + .ToArray(); + + session.Advanced.Defer(new PatchCommandData("users/1-A", null, + new PatchRequest + { + Script = @" + var i = 0; + for(i = 0; i < args.toAppend.length; i++) + { + timeseries(id(this), args.timeseries) + .append ( + new Date(args.toAppend[i].Item1), + args.toAppend[i].Item2, + args.tag); + }", + + Values = + { + { "timeseries", "Heartrate" }, + { "toAppend", toAppend }, + { "tag", "watches/fitbit" } + } + }, null)); + session.SaveChanges(); + #endregion + + #region timeseries_region_Patch-Remove-From-A-Document-50-TS-Entries + // Remove time-series entries + session.Advanced.Defer(new PatchCommandData("users/1-A", null, + new PatchRequest + { + Script = @"timeseries(this, args.timeseries).remove(args.from, args.to);", + Values = + { + { "timeseries", "Heartrate" }, + { "from", baseline.AddSeconds(0) }, + { "to", baseline.AddSeconds(49) } + } + }, null)); + session.SaveChanges(); + #endregion + + + + } public void ReebStoreOperationsTests() From ac41fa1b64121ee59ab458dad2ce7dbe2a55f4a7 Mon Sep 17 00:00:00 2001 From: reebhub Date: Wed, 6 May 2020 21:14:18 +0300 Subject: [PATCH 08/56] RDoc-1703_TimeSeries API improvements --- .../client-api/api-overview.markdown | 20 +-- .../client-api/patching-time-series.markdown | 45 +++--- .../time-series-operations.markdown | 83 ++++++++-- .../TimeSeries/TimeSeriesTests.cs | 143 ++++++++++++++++-- .../Raven.Documentation.Samples.csproj | 6 +- 5 files changed, 249 insertions(+), 48 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown index 58c7baa35b..a2ca9f0bd3 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -118,24 +118,26 @@ choose the one you're more comfortable with. #### Commonly Used Time-Series Operations -* `TimeSeriesBatchOperation` +* [`TimeSeriesBatchOperation`](../../../document-extensions/timeseries/client-api/time-series-operations#timeseriesbatchoperation:-append-and-remove-time-series-data) Use this operation to append and remove time-series and time-series entries. `TimeSeriesBatchOperation` has an advantage over `session.Append` and `session.Remove`, in allowing you to bundle a series of Append and/or Remove operations in a list and execute tham in a single call. -* `GetTimeSeriesOperation` +* [`BulkInsert`](../../../document-extensions/timeseries/client-api/time-series-operations#bulkinsert:-append-time-series-in-bulk) + Use this operation to append time-series entries in bulk. +* [`GetTimeSeriesOperation`](../../../document-extensions/timeseries/client-api/time-series-operations#gettimeseriesoperation:-get-time-series-data) Use this operation to retrieve time-series data. `GetTimeSeriesOperation` has an advantage over `session.Get`, in allowing you to retrieve data from multiple time-series of a selected document in a single call. -* `ConfigureTimeSeriesOperation` +* [`ConfigureTimeSeriesOperation`](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies) Use this operation to manage time-series roll-up and retention policies. - -Learn how to use `TimeSeriesBatchOperation` and `GetTimeSeriesOperation`in the -[article dedicated to operations](../../../document-extensions/timeseries/client-api/time-series-operations). - -Learn how to use `ConfigureTimeSeriesOperation` in the article dedicated to -[rollup and retention](../../../document-extensions/timeseries/rollup-and-retention). +* [`PatchOperation`](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies) + Use this operation to run a Java Script that patches time-series entries + to a document or removes them from it. +* [`PatchByQueryOperation`](../../../document-extensions/timeseries/client-api/time-series-operations#patchbyqueryoperation:-patch-time-series-data-by-query) + Use this operation to run a query and patch time-series entries to found + documents. {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-time-series.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-time-series.markdown index 8c31af7f37..4a46d25cf5 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-time-series.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-time-series.markdown @@ -3,22 +3,25 @@ {NOTE: } -You can patch time-series to a document or a series of documents -using either a `session` methods or a `document store` operation. +You can patch time-series data to a document using either +a `session` method or `document store` operations. * In this page: - * [Patching Time-Series Using `session.Advanced.Defer`](../../../document-extensions/timeseries/client-api/patching-time-series#patching-time-series-using-session.advanced.defer) - * [Patching Time-Series Using `PatchOperation`](../../../document-extensions/timeseries/client-api/patching-time-series#patching-time-series-using-patchoperation) + * [Patching Time-Series Date Using `session.Advanced.Defer`](../../../document-extensions/timeseries/client-api/patching-time-series#patching-time-series-data-using-session.advanced.defer) + * [Patching Time-Series Date Using `store operations`](../../../document-extensions/timeseries/client-api/patching-time-series#patching-time-series-date-using-store-operations) {NOTE/} --- -{PANEL: Patching Time-Series Using `session.Advanced.Defer`} +{PANEL: Patching Time-Series Data Using `session.Advanced.Defer`} -To patch time-series entries to a document or to remove entries -from a document, call `session.Advanced.Defer`. -Instruct `session.Advanced.Defer` which actions to perform, -by passing it a Java Script. +Use `session.Advanced.Defer` to run a Java Script that patches time-series +entries to a document or removes them from it. + +You can handle a single document at a time. +Since this is a `session` method however, you can call +`session.Advanced.Defer` multiple times and call `session.saveChanges()` +to execute them all in a single transaction. --- @@ -42,26 +45,32 @@ by passing it a Java Script. Here, we use `session.Advanced.Defer` to patch a document a single time-series entry. The script draws its arguments from its "Values" section. -{CODE timeseries_region_Patch-A-Document-A-Single-Time-Series-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +{CODE TS_region-Session_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} Here, we provide `session.Advanced.Defer`with a script that patches 100 time-series entries to a document. Timestamps and values are drawn from an array, and other arguments are provided in the "Values" section. -{CODE timeseries_region_Patch-Append-A-Document-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +{CODE TS_region-Session_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} Here, we remove a range of 50 time-series entries from a document. -{CODE timeseries_region_Patch-Remove-From-A-Document-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +{CODE TS_region-Session_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} -{PANEL: Patching Time-Series Using `PatchOperation`} +{PANEL: Patching Time-Series Date Using `store operations`} -Patch time-series data via the `document store` using `PatchOperation`. -It has an advantage over `session.Advanced.Defer`, in that it allows you -to patch multiple documents. +There are two document-store patching operations. -Learn how to use `PatchOperation` with time-series [in the article -dedicated to time-series operations](../../../). +* The first is `PatchOperation`. + Use it to run a Java Script that patches time-series entries to + a document or removes them from it. + Learn how to use it [here](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies). +* The second is `PatchByQueryOperation`. + Use it to query your database and perform time-series operations + on located documents. + `PatchByQueryOperation` is very helpful when you want to perform + time-series actions on multiple documents. + Learn how to use it [here](../../../document-extensions/timeseries/client-api/time-series-operations#patchbyqueryoperation:-patch-time-series-data-by-query). {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown index 8898e0f55c..593d874557 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown @@ -12,10 +12,11 @@ and `store operations`. transactional guarantee `session` methods provide. * There are time-series actions that are only available via store operations, including - - * The retrieval of multiple time-series' data in a single server call - * Managing time-series rollup and retention policies - * Appending time-series in bulk - * Patching time-series data to multiple documents. + * Appending, removing and getting the data of **multiple time-series** + in a single operation. + * Managing time-series **rollup and retention policies** + * Performing **queries** and patching time-series data to + **multiple chosen documents**. {INFO: } If you need to perform an action that can be accomplished by both @@ -34,6 +35,7 @@ comfortable with. * [Get Multiple Time-Series Data](../../../document-extensions/timeseries/client-api/time-series-operations#get-multiple-time-series-data) * [`ConfigureTimeSeriesOperation`: Manage Rollup and Retention Policies](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies) * [`PatchOperation`: Patch Time-Series Data To Documents](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies) + * [`PatchByQueryOperation`: Patch Time-Series Data By Query](../../../document-extensions/timeseries/client-api/time-series-operations#patchbyqueryoperation:-patch-time-series-data-by-query) {NOTE/} --- @@ -164,7 +166,7 @@ There are two overloads of this operation. * The time-series name * Range start: Timestamp for the first time-series entry to be retrieved * Range end: Timestamp for the last time-series entry to be retrieved -* Use `store.Operations.Send` to execute the operation. +* Call `store.Operations.Send` to execute the operation. * Data is returned into a `dictionary of `TimeSeriesRangeResult` classes. * TimeSeriesRangeResult: {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -187,7 +189,7 @@ Here, we retrieve all entries of a single time-series. * **Name** - The time-series name * **From** - Range start, the timestamp for the first time-series entry to be retrieved * **To** - Range end, the timestamp for the last time-series entry to be retrieved -* Use `store.Operations.Send` to execute the operation. +* Call `store.Operations.Send` to execute the operation. * Data is returned into into a `dictionary of `TimeSeriesRangeResult` classes. * TimeSeriesRangeResult: {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -212,14 +214,77 @@ Learn how to use this operation in the article dedicated to {PANEL: `PatchOperation`: Patch Time-Series Data To Documents} -Using `PatchOperation` to patch time-series data to documents -has an advantage over using `session.Advanced.Defer`, in that -it allows you to patch multiple documents. +Use `PatchOperation` to run a Java Script that patches time-series +entries to a document or removes them from it. + +--- + +#### Usage Flow + +* Pass `PatchOperation` - + * the document ID + * the change vector if you need to (or `null` if not) + * a new `PatchRequest` instance +* Use the `PatchRequest` instance to pass `PatchOperation` + a Java Script that specifies whether to Append or Remove + time-series entries and how to perform it. +* Call `store.Operations.Send` to execute the operation. + +--- + +#### Usage Samples +Here, we use `PatchOperation` to patch a document a single +time-series entry. +The script draws its arguments from its "Values" section. +{CODE TS_region-Operation_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +Here, we provide `PatchOperation`with a script that patches +100 time-series entries to a document. +Timestamps and values are drawn from an array, and other +arguments are provided in the "Values" section. +{CODE TS_region-Operation_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we use `PatchOperation` to remove a range of 50 time-series +entries from a document. +{CODE TS_region-Operation_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} +{PANEL: `PatchByQueryOperation`: Patch Time-Series Data By Query} + +Use `PatchByQueryOperation` to run a query and patch the documents +it finds. It is useful when you want to patch data time-series data +to multiple documents. +You can also use this operation to remove and get time-series data +from multiple documents. + +--- + +#### Usage Flow + +* Create a `PatchByQueryOperation` operation. +* Pass `PatchByQueryOperation` a new `IndexQuery` instance as an argument. +* Add the `IndexQuery` instance a Java Script that specifies + the query you want to run. +* Call `store.Operations.Send` to execute the operation. + +--- + +#### Usage Samples + +Here, the query we provide `PatchByQueryOperation` appends +a time-series entry to all user documents. +{CODE TS_region-PatchByQueryOperation-Append-To-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, the query removes time-series from located documents. +{CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we get selected ranges of time-series entries from the documents +located by the query. +{CODE TS_region-PatchByQueryOperation-Get@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} ## Related articles **Studio Articles**: diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index 3842920c22..bfb261cec6 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -1,7 +1,18 @@ using System; using System.Linq; -using Xunit.Abstractions; +using FastTests; using Raven.Client.Documents; +using Raven.Tests.Core.Utils.Entities; +using Xunit; +using Xunit.Abstractions; +using System.Collections.Generic; +using Raven.Server.Utils; +using MongoDB.Driver; +using Raven.Client.Documents.Operations.TimeSeries; +using Raven.Client.Documents.Commands.Batches; +using PatchRequest = Raven.Client.Documents.Operations.PatchRequest; +using Raven.Client.Documents.Operations; +using Xunit.Abstractions; namespace SlowTests.Client.TimeSeries.Session { @@ -11,7 +22,7 @@ public TimeSeriesSessionTests(ITestOutputHelper output) { } - public void TimeSeriesSessionTests() + public void SessionTests() { var store = new DocumentStore { @@ -250,7 +261,7 @@ public void TimeSeriesSessionTests() } #endregion - #region timeseries_region_Patch-A-Document-A-Single-Time-Series-Entry + #region TS_region-Session_Patch-Append-Single-TS-Entry // Patch a document a single time-series entry using (var session = store.OpenSession()) { @@ -277,7 +288,7 @@ public void TimeSeriesSessionTests() } #endregion - #region timeseries_region_Patch-Append-A-Document-100-TS-Entries + #region TS_region-Session_Patch-Append-100-TS-Entries var baseline = DateTime.Today; // Create an array of values to patch @@ -310,7 +321,7 @@ public void TimeSeriesSessionTests() session.SaveChanges(); #endregion - #region timeseries_region_Patch-Remove-From-A-Document-50-TS-Entries + #region TS_region-Session_Patch-Remove-50-TS-Entries // Remove time-series entries session.Advanced.Defer(new PatchCommandData("users/1-A", null, new PatchRequest @@ -326,12 +337,9 @@ public void TimeSeriesSessionTests() session.SaveChanges(); #endregion - - - } - public void ReebStoreOperationsTests() + public void StoreOperationsTests() { #region timeseries_region_Append-Using-TimeSeriesBatchOperation const string documentId = "users/john"; @@ -459,6 +467,123 @@ public void ReebStoreOperationsTests() } #endregion + #region TS_region-Operation_Patch-Append-Single-TS-Entry + store.Operations.Send(new PatchOperation("users/1-A", null, + new PatchRequest + { + Script = "timeseries(this, args.timeseries).append(args.timestamp, args.values, args.tag);", + Values = + { + { "timeseries", "Heartrate" }, + { "timestamp", baseline.AddMinutes(1) }, + { "values", 59d }, + { "tag", "watches/fitbit" } + } + })); + #endregion + + #region TS_region-Operation_Patch-Append-100-TS-Entries + // Create an array of values to patch + var toAppend = Enumerable.Range(0, 100) + .Select(i => new Tuple + (baseline.AddSeconds(i), 59d)) + .ToArray(); + + store.Operations.Send(new PatchOperation("users/1-A", null, + new PatchRequest + { + Script = "var i = 0; " + + "for (i = 0; i < args.toAppend.length; i++) " + + "{timeseries(id(this), " + + "args.timeseries).append(" + + "new Date(" + + "args.toAppend[i]." + + "Item1), " + + "args.toAppend[i].Item2, args.tag);" + + "}", + Values = + { + { "timeseries", "Heartrate" }, + { "toAppend", toAppend }, + { "tag", "watches/fitbit" } + } + })); + #endregion + + #region TS_region-Operation_Patch-Remove-50-TS-Entries + store.Operations.Send(new PatchOperation("users/1-A", null, + new PatchRequest + { + Script = "timeseries(this, args.timeseries).remove(args.from, args.to);", + Values = + { + { "timeseries", "Heartrate" }, + { "from", baseline.AddSeconds(0) }, + { "to", baseline.AddSeconds(49) } + } + })); + #endregion + + #region TS_region-PatchByQueryOperation-Append-To-Multiple-Docs + // Append time-series to all users + var appendOperation = new PatchByQueryOperation(new IndexQuery + { + Query = @"from Users as u update + { + timeseries(u, $name).append($time, $values, $tag) + }", + QueryParameters = new Parameters + { + { "name", "Heartrate" }, + { "time", baseline.AddMinutes(1) }, + { "values", new[]{59d} }, + { "tag", "watches/fitbit" } + } + }); + store.Operations.Send(appendOperation); + #endregion + + #region TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs + // Remove time-series from all users + var removeOperation = new PatchByQueryOperation(new IndexQuery + { + Query = @"from Users as u + update + { + timeseries(u, $name).remove($from, $to) + }", + QueryParameters = new Parameters + { + { "name", "Heartrate" }, + { "from", DateTime.MinValue }, + { "to", DateTime.MaxValue } + } + }); + store.Operations.Send(removeOperation); + #endregion + + #region TS_region-PatchByQueryOperation-Get + // Get ranges of time-series entries from all users + var getOperation = new PatchByQueryOperation(new IndexQuery + { + Query = @"from Users as u + update + { + timeseries(u, $name).get($from, $to) + }", + QueryParameters = new Parameters + { + { "name", "Heartrate" }, + { "from", DateTime.MinValue }, + { "to", DateTime.MaxValue } + } + }); + store.Operations.Send(appendOperation); + #endregion + + + + } diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/Raven.Documentation.Samples.csproj b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/Raven.Documentation.Samples.csproj index f42e2b97ab..2113de36bc 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/Raven.Documentation.Samples.csproj +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/Raven.Documentation.Samples.csproj @@ -6,9 +6,9 @@ - - - + + + From 79180bdd6bd2609390a80db84479865296a4c68b Mon Sep 17 00:00:00 2001 From: reebhub Date: Thu, 7 May 2020 09:04:09 +0300 Subject: [PATCH 09/56] RDoc-1703_TimeSeries --- .../client-api/api-overview.markdown | 38 ----- .../timeseries/design.markdown | 105 ++++++++----- .../timeseries/overview.markdown | 139 +++++++++++------- 3 files changed, 156 insertions(+), 126 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown index a2ca9f0bd3..98f6f6cacf 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -16,7 +16,6 @@ time-series. * [Creating and Removing Time-Series](../../../document-extensions/timeseries/client-api/api-overview#creating-and-removing-time-series) * [Managing Time-Series Using `session` methods](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-session-methods) * [Managing Time-Series Using `store` Operations](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-store-operations) - * [Success, Failure and Conflicts](../../../document-extensions/timeseries/client-api/api-overview#success,-failure-and-conflicts) {NOTE/} @@ -141,43 +140,6 @@ choose the one you're more comfortable with. {PANEL/} -{PANEL: Success, Failure and Conflicts} - ---- - -####Success -As long as the document exists, updating a Time Serie will always succeed. - ---- - -####Transactions -When a transaction that includes a time-series modification fails for any -reason, the Counter modification is reverted. - ---- - -####No Conflicts - -Time-series actions do not cause conflicts. - -* **Updates By Multiple Cluster Nodes** - * When a time-series' data is replicated by multiple nodes, the data - from all nodes is merged into a single series. - * When multiple nodes append **different values** at the same timestamp, - the **bigger value** is chosen for this entry. - * When multiple nodes apppend **different amount of values** for the same - timestamp, the **bigger amount of values** is chosen for this entry. - * When an existing value at a certain timestamp is deleted by a node - and updated by another node, the deletion is chosen. - -* **Updates By Multiple Clients Of The Same Node** - * When a time-series' value at a certain timestamp is appended by - multiple clients more or less simultaneously, the last one is chosen. - * When an existing value at a certain timestamp is deleted by a client - and updated by another client, the last action is chosen. - -{PANEL/} - ## Related articles **Studio Articles**: [Studio Time-Series Management]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown index 4867d36b31..b1b39302fa 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown @@ -1,4 +1,7 @@ -# Time Series Design +# Time-Series Design + + + --- {NOTE: } @@ -6,65 +9,95 @@ * ... * In this page: - * [Design]() - * []() + * [Time-Series Structure](../../document-extensions/timeseries/design#time-series-structure) + * [Success, Failure and Conflicts](../../document-extensions/timeseries/design#success,-failure-and-conflicts) + * [The `HasTimeSeries` Flag](../../document-extensions/timeseries/design#the-hastimeseries-flag) + * []() {NOTE/} --- -{PANEL: Design} +{PANEL: Time-Series Structure} + +A time-series is an array of `IEnumerable`-type time-series entries. +Each entry consists of a **timestamp**, a **tag**, and an array of **values**. + +* `TimeSeriesEntry` + +| Parameters | Type | Description | +|:-------------|:-------------|:-------------| +| `Timestamp` | DateTime | Entry's time signature | +| `Tag` | string | Entry's tag | +| `Values` | double[] | Entry's values array | + +* A time series includes a reference to the document it extends, by the document's ID. + +* Time-series are encoded using Facebook Gorilla encoding. + +--- + +####Segments -* A time series is an array of `Double` values. - Its keys are Time Points, ordered by time. +Time-series may be constructed of segments. -- | Key| Value | Tag | -|:-------------:|:-------------:|:-------------:| -| Time Point | An array of Doubles | Optional, indicates the measurement origin;
A reference to the document | +* A time-series of up to 32k entries is contained in a single segment. +* A time-series longet than 32k entries is contained in multiple segments. +* A new segment is also created when a period of more than 25 days has passed + since the last measurement. -{INFO: Time Points} +{PANEL/} -- **Units** - Time points are measured in milliseconds. Measurement ticks are rounded **down**. -- **Offset** - Each time-point in a time series' [segment]() is indicated by its **offset** from the previous point. -- **Distance** - Each offset's **distance** from the previous offset is also indicated. - This is helpful in series of a fixed change, like **1, 2, 3** - where the offset would normally be - 1 and the distance from the previous offset would be 0. - RavenDB uses these repeated 0's while compressing the series for storage, to minimize the amount - of storage needed for it. -- **Encoding** - We encode Time Series usinf Facebook Gorilla encoding. -{INFO/} +{PANEL: Success, Failure and Conflicts} --- -#### References +####Success -* The document refers to its time series extensions in its metadata. - - **The `HasTimeSeries` Flag** - When a time series is added to a document, RavenDB automatically sets a `HasTimeSeries` Flag in the document's metadata. - When all time series have been removed from a document, the server automatically removes this flag. -* A time series contains a reference to the document it extends, by the document's name. +As long as its owner document exists, updating a Time-Serie will always succeed. --- -####Segments +####Transactions -* A short series is contained in a single segment. -* A longer (over 32k) series is contained in multiple segments. -* A new segment is also opened when a long period of time [25 days?] has passed - since the last measurement. +When a session transaction that includes a time-series modification fails for any +reason, the time-series modification is reverted. --- -####Number of Time Series Per Document -... +####No Conflicts + +Time-series actions do not cause conflicts. + +* **When a time-series is updated by multiple cluster Nodes** + * When a time-series' data is replicated by multiple nodes, the data + from all nodes is merged into a single series. + * When multiple nodes append **different values** at the same timestamp, + the **bigger value** is chosen for this entry. + * When multiple nodes apppend **different amount of values** for the same + timestamp, the **bigger amount of values** is chosen for this entry. + * When an existing value at a certain timestamp is deleted by a node + and updated by another node, the deletion is chosen. + +* **When a time-series is updated By multiple clients of the same node** + * When a time-series' value at a certain timestamp is appended by + multiple clients more or less simultaneously, the last one is chosen. + * When an existing value at a certain timestamp is deleted by a client + and updated by another client, the last action is chosen. {PANEL/} +{PANEL: The `HasTimeSeries` Flag} + +* `HasTimeSeries` Flag + * When the first time-series is added to a document, RavenDB automatically sets + a `HasTimeSeries` Flag in the document's metadata. + * When all time-series have been removed from a document, RavenDB automatically + removes the flag. + + {PANEL/} + ## Related articles **Studio Articles**: [Studio Time Series Management]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown index 1729195fd3..ef65ff76c8 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown @@ -3,86 +3,121 @@ {NOTE: } -* A Time Series is a dynamic array of keys coupled with timestamps, that - extends a document (much like [Counters]() and [attachments]() do). - Time Series are commonly used to measure the changes in an ongonig - process over time. - - You can, for example, populate a time series with the data streamed - from a wearable pulse monitor. The data regarding each heartbeat is - reported along with its timestamp, so the person's heart rate can be - concluded and monitored. - -* Time Series can be created and managed using a dedicated API, - and via RavenDB's [Studio](../../../studio/database/documents/document-view/additional-features/timeseries). +* RavenDB’s distributed time-series are series of numeric values + ordered by time. + You can use time-series to track changes over time in various process like – + * the heartrate measured by a wrist watch + * the measurements of a thermometer + * the peaks and lows of a home cable consumption + +* Create and manage time-series using API methods, or through + the [Studio](../../studio/database/documents/document-view/additional-features/counters). * In this page: - * [Why use Time Series?](../document-extensions/timeseries/timeseries-overview#why-use-time-series?) - * [Overview](../../../client-api/session/counters/overview#overview) - * [Managing Time Series](../../../client-api/session/counters/overview#managing-counters) - * [Time Series Methods](../../../client-api/session/counters/overview#yime-series-methods) - * [Managing Counters using `Operations`](../../../client-api/session/counters/overview#managing-timeseries-using-operations) + * [Why Use Time-Series?](../../document-extensions/timeseries/overview#why-use-time-series?) + * [Time-Series Are Document Extensions](../../document-extensions/timeseries/overview#time-series-are-document-extensions) + * [Managing Time-Series](../../document-extensions/timeseries/overview#managing-time-series) + * [Time-Series Entries](../../document-extensions/timeseries/overview#time-series-entries) + * [The Time-Series API](../../document-extensions/timeseries/overview#the-time-series-api) + {NOTE/} --- -{PANEL: Why use Time Series?} +{PANEL: Why use Time-Series?} -Time series ease the storage and usage of long data sets created by fast-pace, dynamic processes. -They are referred to by documents' metadata, but **stored separately** so high-rate updates would -not invoke a document-change procedure. -A native Time Series API makes it easy to create dynamic statistics related to monitored processes. +The need to track and monitor series of dynamically changing values, particularly +fast-pacing and large series, is advocated by the rapid growth in the usage of +wearable devices, monitoring tools, navigation aids, security sensors and countless +other systems whose output over time may or may not be accumulated and put to good +use - depending on the awareness to its existence and value and on the resources +allocated to process it. -Time series are mainly used for data analysis. -Queries are often performed over a time window, e.g. an hour or a week, -to produce measurements like the min, average and max values during this window, -or to create a curve. -Useful statistics can be performed, for example, over memory measurements sent by -a device over a day, extrapolating high and low usage peaks and comparing the data -to that of other days. +RavenDB offers cross-system support for the procession, usage and storage +of time-series. ---- +{INFO: } +There are numerous applications to time-series' like - -####Tracking Changes Over Time -... +* Routinely updating a time-series with the **data collected from a wearable pulse + monitor**. The data can then be rolled up in a comfortable resolution, queried, + and plotted for a graphical view of the heartrate during the day. +* Measuring the **changes in a home cables consumption** during the day +* A statistical curve can be created over **memory measurements** reported by + a device over a day, extrapolating high and low usage peaks and comparing the + data to that of other days. +{INFO/} ---- +{PANEL/} + +{PANEL: Time-Series Are Document Extensions} -####Storing a Rapidly Updated Series -... +RavenDB’s Time-Series, like its distributed counters, attachments and document +revisions, are **document extensions**. +A time-series is always attached to an owner document, so its relation to a user, +a device, a company or a process remains clear at all times. + +The time-series’ name is kept at its owner-document’s metadata, while its values +are kept separately. This way, changes in time-series values do not cause document +changes. {PANEL/} -{PANEL: Overview} +{PANEL: Managing Time-Series } + +RavenDB's time-series support covers many of its other features. + +* **Indexing** + Time-series can be indexed to minimize query time. +* **Queries** + Time-series **can be queried**. + {INFO: } + Queries are often performed over a time window, e.g. an hour or a week, + to produce measurements like the minimal, average or maximal measurement + during this window or to create a statistical curve. + {INFO/} +* **Rollup** + You can set a time-series **rollup policy**, to aggregate it in a comfortable, + usable resolutions. +* **Retention** + You can set a time-series **retention policy** to automatically remove + time-series that fill their expiration period. +* **Including** + You can **include** time-series while loading documents, explicitly or by query, + so they would be held by the session and instantly delivered when the user needs + them. +* **Patching** + Time-series can be **patched to documents**, explicitly or by query. +* **Backup** + You can set an ongoing backup task to backup time-series. ---- +{PANEL/} -####Rollup and Rotation +{PANEL: Time-Series Entries} -* Rollup - ... [write about rollup aggregation] -* Rotation - An expiration period can be defined so that time values that exceed it would be removed. - ... +Each **time-series entry** is consisted of - ---- +* A **timestamp** that indicates the measurement datetime in a millisecond precision. +* Up to 32 **values** +* An optional **tag** that relates the time-series entry to its source, + e.g. a document ID for the specifications of the device that provided + the values. -####Plotting -...[for the Studio documentation: presenting queried time series values as a graph] +{PANEL/} ---- +{PANEL: The Time-Series API} -####Time Series and Conflicts -... +The time-series API includes `session` methods and `document-store` operations. +To learn how to manage time-series using the API, read the [articles +dedicated to it](../../document-extensions/timeseries/client-api/api-overview). ---- -####Time Series Cost -... {PANEL/} + + ## Related articles **Studio Articles**: [Studio Time Series Management]() From 8323ca5dc9fc217674c0243e886ded8eeca24530 Mon Sep 17 00:00:00 2001 From: morhilai Date: Mon, 11 May 2020 11:38:51 +0300 Subject: [PATCH 10/56] RDoc-1703 rollup/retention page WIP --- .../timeseries/images/rollup-1.PNG | Bin 0 -> 62602 bytes .../timeseries/rollup-and-retention.markdown | 93 +++++++++++++++--- .../TimeSeries/RollupAndRetention.cs | 80 +++++++++++++++ 3 files changed, 162 insertions(+), 11 deletions(-) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/images/rollup-1.PNG create mode 100644 Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/RollupAndRetention.cs diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/images/rollup-1.PNG b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/images/rollup-1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..a5dd29362355859dd98c75181c1dc8ae71881e4f GIT binary patch literal 62602 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

v~ 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 literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown index 7dfb8dddf8..d8e1fca87e 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown @@ -1,26 +1,97 @@ -# Time-Series Rollup and Retention +# Time-Series Rollup and Retention --- {NOTE: } -* Time series **Rollup** allows you to represent a large data set by a smaller - one, and use it for quick queries when the complete data set is not required. - - You can, for example, represent a long set of heartbeats data with a rollup set - that represents each hour of heartbeats by a single entry, containing the average - heartrate during this hour. - +For time-series applications that produce massive amounts of data at a steady rate, +**Time-Series Policies** allow you to manage the excess data in two ways: + +* *Retention* - limiting the amount of time that time-series data is kept. + +* *Rollup* - the process of summarizing time-series data by aggregating it into the +form of a new, more compact time-series. + +The same collection can have multiple time-series policies - each with its own rollup +aggregation span. + * In this page: - * [The Rollup API]() + * [Time-Series Policies]() + * [Time-Series Configuration]() * [Code Samples]() + {NOTE/} --- -{PANEL: The Rollup API} +{PANEL: Rollup Time-Series} + +The **rollup** process divides a time-series into chunks of a specified amount +of time (such as a minute or a day) and aggregates all the entries in that +chunk into six useful values: + + * *First* - the value of the first entry in the aggregation. + * *Last* - the value of the last entry. + * *Min* - the smallest value. + * *Max* - the largest value. + * *Sum* - the sum of all the values in the aggregation. + * *Count* - the total number of entries in the aggregation. + +A new rollup time-series is created with one entry for each aggregation. Each +entry contains the above six values for *each of the values* of the original +(or "raw") time series. That is, if the raw time-series has two values per +entry, the rollup time-series will have 12 per entry - the first six will be +aggregations of the first raw value, the next six will be aggregations of the +second raw value, and so on. The timestamp of each entry is the end of the +time span that it aggregates. + +!["Rollup time-series entries"](images/rollup-1.png) + +The rollup time-series belongs to the same document as the original (or "raw") +time-series. Its name will be a combination of the name of the raw time-series +and the name of the time-series policy: +"`@`" + +{CODE-BLOCK: csharp} +public class TimeSeriesPolicy +{ + public string Name; + public TimeValue RetentionTime; + public TimeValue AggregationTime; +} +{CODE-BLOCK/} + +| Property | Description | +| - | - | +| `Name` | This `string` is used to create the names of rollup time-series created by this policy.
`Name` is added to the name of the raw time-series (with `@` as a separator) to create the name of the resulting rollup time-series.* | +| `RetentionTime` | + + The rollup's name is a combination of the raw time-series name. For a base time-series called "exampleTS", and a policy with `Name` set to "rollup", the resulting rollup is called "exampleTS@rollup". + +{PANEL/} + +{PANEL: Time-Series Configuration} + + +{CODE-BLOCK: csharp} +public class TimeSeriesCollectionConfiguration +{ + public bool Disabled; + public List Policies; + +} + +public class TimeSeriesConfiguration +{ + public Dictionary Collections; +} +{CODE-BLOCK/} {PANEL/} -{PANEL: Code Samples} +{PANEL: Examples} +How to create time-series policies for a collection and pass them to the server: +{CODE rollup_and_retention_0@DocumentExtensions\TimeSeries\RollupAndRetention.cs /} +How to access a rollup time series: +{CODE rollup_and_retention_1@DocumentExtensions\TimeSeries\RollupAndRetention.cs /} {PANEL/} ## Related articles diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/RollupAndRetention.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/RollupAndRetention.cs new file mode 100644 index 0000000000..b80ee6f2fe --- /dev/null +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/RollupAndRetention.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Raven.Client.Documents; +using Raven.Client.Documents.Operations.TimeSeries; +using Sparrow; +using Xunit; + +namespace Raven.Documentation.Samples.DocumentExtensions.TimeSeries +{ + class rollup_and_retention + { + public void Examples() + { + var store = new DocumentStore + { + Urls = new[] { "http://localhost:8080" }, + Database = "Examples" + }; + store.Initialize(); + + using (var session = store.OpenSession()) + { + #region rollup_and_retention_0 + //Policy for the original ("raw") time-series, + //to keep the data for one week + var rawRetention = new RawTimeSeriesPolicy(TimeValue.FromDays(7)); + + //Roll-up the data for each day, + //and keep the results for one year + var dailyRollup = new TimeSeriesPolicy("DailyRollupForOneYear", + TimeValue.FromDays(1), + TimeValue.FromYears(1)); + + //Enter the above policies into a + //time-series collection configuration + //for the collection 'Sales' + var salesTSConfig = new TimeSeriesCollectionConfiguration + { + Policies = new List + { + dailyRollup + }, + RawPolicy = rawRetention + }; + + //Enter the configuration for the Sales collection + //into a time-series configuration for the whole database + var DatabaseTSConfig = new TimeSeriesConfiguration(); + DatabaseTSConfig.Collections["Sales"] = salesTSConfig; + + //Send the database time-series configuration to the server + store.Maintenance.ForDatabase("ExampleDatabase") + .Send(new ConfigureTimeSeriesOperation(DatabaseTSConfig)); + #endregion + + #region rollup_and_retention_1 + //Create local instance of the time-series "rawSales" + //in the document "sales/1" + var rawTimeSeries = session.TimeSeriesFor("sales/1", "rawSales"); + + //Create local instance of the rollup time-series - first method + var rollupTimeSeries = session.TimeSeriesFor("sales/1", + "rawSales@DailyRollupForOneYear"); + + //Create local instance of the rollup time-series - second method + //using the rollup policy itself and the raw time-series' name + var rollupTimeSeries2 = session.TimeSeriesFor("sales/1", + dailyRollup.GetTimeSeriesName("rawSales")); + + Assert.Equal(rollupTimeSeries, rollupTimeSeries2); + + //Retrieve all the data from both time-series + var rawData = rawTimeSeries.Get(DateTime.MinValue, DateTime.MaxValue).ToList(); + var rollupData = rollupTimeSeries.Get(DateTime.MinValue, DateTime.MaxValue).ToList(); + #endregion + } + } + } +} From ee4518abb2918d4be328df9d4bbd5c26ab81c053 Mon Sep 17 00:00:00 2001 From: reebhub Date: Tue, 12 May 2020 01:47:30 +0300 Subject: [PATCH 11/56] restructure, API documentation improvements --- .../timeseries/client-api/.docs.json | 34 +- .../client-api/api-overview.markdown | 182 +++++------ .../client-api/session-methods/.docs.json | 32 ++ .../append-ts-data.markdown} | 67 ++-- .../get-ts-data.markdown} | 52 +-- .../include-ts-data.markdown} | 33 +- .../patch-ts-data.markdown} | 46 ++- .../remove-ts-data.markdown} | 43 +-- .../client-api/store-operations/.docs.json | 26 ++ .../append-and-remove-TS-data.markdown | 101 ++++++ .../bulk-ts-operations/.docs.json | 8 + .../append-ts-data-in-bulk.markdown | 58 ++++ .../store-operations/get-TS-data.markdown | 94 ++++++ .../store-operations/patch-TS-data.markdown | 119 +++++++ .../time-series-operations.markdown | 301 ------------------ 15 files changed, 619 insertions(+), 577 deletions(-) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{append-time-series-entries.markdown => session-methods/append-ts-data.markdown} (63%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{get-time-series.markdown => session-methods/get-ts-data.markdown} (53%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{include-time-series.markdown => session-methods/include-ts-data.markdown} (71%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{patching-time-series.markdown => session-methods/patch-ts-data.markdown} (53%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{remove-time-series-entries.markdown => session-methods/remove-ts-data.markdown} (61%) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json index 5d0b4b437e..400131767c 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json @@ -6,39 +6,13 @@ "Mappings": [] }, { - "Path": "append-time-series-entries.markdown", - "Name": "Append Time-Series Entries", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "remove-time-series-entries.markdown", - "Name": "Remove Time-Series Entries", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "get-time-series.markdown", - "Name": "Get Time-Series", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Path": "/session-methods", + "Name": "Session Methods", "Mappings": [] }, { - "Path": "time-series-operations.markdown", - "Name": "Time-Series Operations", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "include-time-series.markdown", - "Name": "Include Time-Series", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "patching-time-series.markdown", - "Name": "Patching Time-Series", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Path": "/store-operations", + "Name": "Store Operations", "Mappings": [] } ] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown index 98f6f6cacf..fefe1933b8 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -6,137 +6,99 @@ The Time-Series API includes a set of [session](../../../client-api/session/what-is-a-session-and-how-does-it-work) methods and [store](../../../client-api/what-is-a-document-store) [operations](../../../client-api/operations/what-are-operations) -for the creation, updating, usage and removal of time-series and time-series entries. -You can also use the API to [include](../../../client-api/session/loading-entities#load-with-includes), -[patch](../../../client-api/operations/patching/set-based#patching-how-to-perform-set-based-operations-on-documents) -and [query](../../../client-api/session/querying/how-to-query) -time-series. +that you can **append** (create and update), **get**, **remove**, +**include**, **patch** and **query** time-series data with. * In this page: - * [Creating and Removing Time-Series](../../../document-extensions/timeseries/client-api/api-overview#creating-and-removing-time-series) - * [Managing Time-Series Using `session` methods](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-session-methods) - * [Managing Time-Series Using `store` Operations](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-store-operations) + * [Creating and Removing Time-Series Data](../../../document-extensions/timeseries/client-api/api-overview#creating-and-removing-time-series-data) + * [`session` Methods -or- `document-store` Operations?](../../../document-extensions/timeseries/client-api/api-overview#session-methods--or--document-store-operations?) + * [Available Time-Series `session` methods](../../../document-extensions/timeseries/client-api/api-overview#available-time-series-session-methods) + * [Available Time-Series `store` Operations](../../../document-extensions/timeseries/client-api/api-overview#available-time-series-store-operations) {NOTE/} --- -{PANEL: Creating and Removing Time-Series} +{PANEL: Creating and Removing Time-Series Data} -There is no need to explicitly create or remove a time-series. -When the first time-series entry is appended to a time-series (with a timestamp, -a value, and optionally a tag), the time-series is created. -When the last entry is removed, the series is removed. +A time-series is constructed of time-series **entries**, which can +be created and removed using the API. +There is no need to explicitly create or delete a time-series. -{PANEL/} - -{PANEL: Managing Time-Series Using `session` methods} - -* **Transactions** - Manage time-series using the `session` interface when you want to guarantee - that your actions would be executed in a transactional context. - `session` actions either fully succeed or are fully reverted. - The session also gathers multiple actions (being, for example, - appending a time-series value and modifying a document, or the - modifications of several different time-series) and attempts to - execute them in a single transaction, either completing or reverting - them all. -* **Caching** - Another advantage of the `session` interface is the caching of - retrieved data in the client's local cache. Having retrieved a time-series - once, the client wouldn't need to load it (or any part of it) from - the server again as long as it hasn't been updated by other clients. - ---- - -#### `session.TimeSeriesFor`: Append, Get and Remove - -You can manage time-series using the session `TimeSeriesFor` object. - -* **`TimeSeriesFor`Methods**: - * [TimeSeriesFor.Append](../../../document-extensions/timeseries/client-api/append-time-series-entries) - Use this method to create and update time-series and time-series entries. - When an existing time-series entry is appended, it is updated with the new data. - When a non-existing time-series entry is appended, it is created. - An attempt to append a time-series entry to a non-existing time-series, - creates the time-series and appends it this entry. - * [CountersFor.Remove](../../../document-extensions/timeseries/client-api/remove-time-series-entries) - Use this method to remove a time-series entry from a time-series. - When a time-series' last entry is removed, the time-series is removed as well. - * [TimeSeriesFor.Get](../../../document-extensions/timeseries/client-api/get-time-series) - Use this method to retrieve time-series data. - You can specify the time-series entry, or range of entries, whose values - you want to get. - -* **Usage Flow**: - * Open a session. - * Create an instance of `TimeSeriesFor`. - * Either pass `TimeSeriesFor` an explicit document ID, -or- - * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). - * Use a time-series method. - * If you execute `Append`or `Remove, call `session.SaveChanges` - for the action to take effect on the server. - -* **Usage Samples** - * You can Use `TimeSeriesFor` by **explicitly passing it a document ID** - (without pre-loading the document). - Here, TimeSeriesFor relates to a document by its explicit ID. - {CODE timeseries_region_TimeSeriesFor_without_document_load@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - * You can also use `TimeSeriesFor` by passing it **the document object**. - Here, TimeSeriesFor relates to a document object that's been loaded earlier. - This can be useful when you want, for example, to manage time-series - for document objects returned by queries. - {CODE timeseries_region_TimeSeriesFor_with_document_load@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - ---- - -#### `session.Advanced.GetTimeSeriesFor`: Retrieve TimeSeries Names - -You can use session.Advanced.GetTimeSeriesFor to retrieve a document's -time-series' names. - -{CODE timeseries_region_Retrieve-TimeSeries-Names@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* A time-series is created when the first entry is appended to it. +* A time-series is deleted When all entries are removed from it. {PANEL/} -{PANEL: Managing Time-Series Using `store` Operations} - -Time-series and their entries can be appended, removed and retrieved via both -[session methods](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-session-methods)` -and [store operations](../../../document-extensions/timeseries/client-api/time-series-operations). - -* The main advantage session methods have over store operations is the - transactional guarantee they provide. -* There are actions that are only available via store operations. - -If you need to perform an action for which you have both a session method and -a store operation and neither has a clear advantage over the other, simply -choose the one you're more comfortable with. +{PANEL: `session` Methods -or- `document-store` Operations?} + +Many time-series functions are available through both `session` methods +and `document-store` operations. You can **append**, **remove**, **get** +and **patch** time-series data through both interfaces. + +There are, though, functionalities unique to each interface. + +* **Time-series functionalities unique to the `session`interface**: + * `session` methods provide a **transactional guarantee**. + Use them when you want to guarantee that your actions would + be either fully completed or fully reverted. + You can, for instance, gather multiple session actions + (e.g. the update of a time-series and the modification + of a document) and execute them in a single transaction + by calling `session.saveChanges`, to ensure that they + would all be completed or all be reverted. + * You can use `session` methods to `include` time-series while + loading documents. + Included time-series data is held by the client's session, + and can be handed to the user the instant it is required. +* **Time-series functionalities unique to the `store`interface**: + * Appending, removing and getting the data of **multiple time-series** + in a single operation. + * Managing time-series **rollup and retention policies**. + * Patching time-series data to **multiple documents** located + by a query. +{PANEL/} ---- +{PANEL: Available Time-Series `session` methods} + +* [TimeSeriesFor.Append](../../../document-extensions/timeseries/client-api/session-methods/append-ts-data) + Use this method to **Create and update time-series data**. +* [TimeSeriesFor.Remove](../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data) + Use this method to **Remove time-series data**. +* [TimeSeriesFor.Get](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data) + Use this method to **Retrieve time-series data**. +* [session.Advanced.GetTimeSeriesFor](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#retrieve-time-series-names:-session.advanced.gettimeseriesfor) + Use this method to **retrieve a document's time-series' names**. +* [IncludeTimeSeries](../../../document-extensions/timeseries/client-api/session-methods/include-ts-data) + Use this include-builder argument with `session.Load` or + `session.Query` to **include time-series data while loading documents**. + You can also use `session.Advanced.RawQuery` with an `include timeseries` + statement to **include Time-series data while running a raw query**. +* [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) + Use this method to **patch time-series data to a document**. +{PANEL/} -#### Commonly Used Time-Series Operations +{PANEL: Available Time-Series `store` Operations} -* [`TimeSeriesBatchOperation`](../../../document-extensions/timeseries/client-api/time-series-operations#timeseriesbatchoperation:-append-and-remove-time-series-data) - Use this operation to append and remove time-series and time-series entries. +* [TimeSeriesBatchOperation](../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data) + Use this operation to **append and remove time-series data**. `TimeSeriesBatchOperation` has an advantage over `session.Append` and `session.Remove`, in allowing you to bundle a series of Append and/or Remove operations in a list and execute tham in a single call. -* [`BulkInsert`](../../../document-extensions/timeseries/client-api/time-series-operations#bulkinsert:-append-time-series-in-bulk) - Use this operation to append time-series entries in bulk. -* [`GetTimeSeriesOperation`](../../../document-extensions/timeseries/client-api/time-series-operations#gettimeseriesoperation:-get-time-series-data) - Use this operation to retrieve time-series data. +* [GetTimeSeriesOperation](../../../document-extensions/timeseries/client-api/store-operations/get-TS-data) + Use this operation to **retrieve time-series data**. `GetTimeSeriesOperation` has an advantage over `session.Get`, in allowing you to retrieve data from multiple time-series of a selected document in a single call. -* [`ConfigureTimeSeriesOperation`](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies) - Use this operation to manage time-series roll-up and retention policies. -* [`PatchOperation`](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies) - Use this operation to run a Java Script that patches time-series entries - to a document or removes them from it. -* [`PatchByQueryOperation`](../../../document-extensions/timeseries/client-api/time-series-operations#patchbyqueryoperation:-patch-time-series-data-by-query) - Use this operation to run a query and patch time-series entries to found - documents. +* [ConfigureTimeSeriesOperation](../../../document-extensions/timeseries/rollup-and-retention#time-series-rollup-and-retention) + Use this operation to **manage time-series roll-up and retention policies**. +* [PatchOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data#patchoperation:-patch-time-series-data-to-documents) + Use this operation to **patch time-series data to a single document**. +* [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data#patchbyqueryoperation:-patch-time-series-data-by-query) + Use this operation to **patch time-series data to documents located + by a query**. +* [BulkInsert](../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk) + Use this operation to **append a large quantity of time-series data**. {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json new file mode 100644 index 0000000000..5f42b3b7a2 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json @@ -0,0 +1,32 @@ +[ + { + "Path": "append-ts-data.markdown", + "Name": "Append Time-Series Data", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "remove-ts-data.markdown", + "Name": "Remove Time-Series Data", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "get-ts-data.markdown", + "Name": "Get Time-Series Data", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "include-ts-data.markdown", + "Name": "Include Time-Series Data", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "patch-ts-data.markdown", + "Name": "Patch Time-Series Data", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown similarity index 63% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown index 4d16aa3e9d..698e0a6795 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/append-time-series-entries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown @@ -1,42 +1,34 @@ -# Append Time-Series Entries +# Append Time-Series Data --- {NOTE: } -A time-series is an array of time-series entries. Each entry is -populated with a **timestamp**, a **value (or values)**, and an -optional **tag**. - -You can use the session `TimeSeriesFor.Append` method to add -a single time-series entry, or update an existing entry. - -You can use the store `TimeSeriesBatchOperation` operation to -add or update time-series entries in bulk. - -{INFO: } - -* When time-series entries are appended to a **non-existing time-series**, - the **time-series is created**. -* When a **non-existing time-series entry** is appended, the **time-series entry - is created**. -* When **an existing time-series entry** is appended, the **entry - is updated** with the appended data. - -{INFO/} +Append time-series data using the session method `TimeSeriesFor.Append`. +You can append a single time-series entry at a time. +An entry contains a **timestamp** that marks the entry's location in the +time-series, 1 to 32 `double`-type **values**, and optionally a **tag**. + +* **Creating a time-series** + Appending a time-series entry to a non-existing time-series, + **creates the time-series** and adds it the new entry. +* **Creating a time-series entry** + Appending an existing time-series a new entry, **adds the entry** + to the series at the provided timestamp. +* **Updating a time-series entry** + Appending a time-series entry to a time-series that already contains + an entry at this timestamp, **updates the existing entry** with the + appended data. * In this page: - * [Appending Time-Series Entries Using `session.TimeSeriesFor.Append`](../../../document-extensions/timeseries/client-api/append-time-series-entries#appending-time-series-entries-using-session.timeseriesfor.append) - * [Appending Time-Series Entries Using `TimeSeriesBatchOperation`](../../../document-extensions/timeseries/client-api/append-time-series-entries#appending-time-series-entries-using-timeseriesbatchoperation) + * [`TimeSeriesFor.Append` Definition](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#timeseriesfor.append-definition) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#usage-samples) {NOTE/} --- -{PANEL: Appending Time-Series Entries Using `session.TimeSeriesFor.Append`} - ---- - -#### `TimeSeriesFor.Append` Definition +{PANEL: `TimeSeriesFor.Append` Definition} To append a time-series entry, use one of the two `TimeSeriesFor.Append` methods. One method updates the time-series entry with a value of type `double`. @@ -63,9 +55,9 @@ The second method updates the entry with a value of type `IEnumerable double`. | `values` | IEnumerable | Update the time-series entry with these values.
For a new time-series entry, these will be its initial values. | | `tag` | string | Time-series entry's tag
The tag is optional. | ---- +{PANEL/} -#### Usage Flow +{PANEL: Usage Flow} * Open a session. * Create an instance of `TimeSeriesFor`. @@ -74,9 +66,9 @@ The second method updates the entry with a value of type `IEnumerable double`. * Call `TimeSeriesFor.Append`. * Call `session.SaveChanges` for the action to take effect on the server. ---- +{PANEL/} -#### Usage Samples +{PANEL: Usage Samples} Here, we pass `TimeSeriesFor.Append` the value using a `double`, and repeat it in a loop to append multiple time-series entries. @@ -91,17 +83,6 @@ The three values will be appended at the same timestamp. {PANEL/} -{PANEL: Appending Time-Series Entries Using `TimeSeriesBatchOperation`} - -Append time-series entries using the `TimeSeriesBatchOperation` operation. -It has an advantage over `session.Append`, in that it allows you to bundle -a series of Append actions in a list and execute tham all in a single call. - -Learn how to use `TimeSeriesBatchOperation` [in the article dedicated to -time-series operations](../../../document-extensions/timeseries/client-api/time-series-operations#use--to-append). - -{PANEL/} - ## Related articles **Studio Articles**: [Studio Time-Series Management]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data.markdown similarity index 53% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data.markdown index 0fff6ac628..239ed7a1af 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/get-time-series.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data.markdown @@ -1,33 +1,43 @@ -# Get Time-Series +# Get Time-Series Data --- {NOTE: } -* You can use the session `TimeSeriesFor.Get` method to retrieve - a time-series' data. - Data retrieved using `TimeSeriesFor.Get` is **cached in clients' local storage**. +* Get a **single time-series entry** or a **range of entries** + using the session method `TimeSeriesFor.Get`. +* Get the **names of a document's time-series** using the + session method `Advanced.GetTimeSeriesFor`. -* You can also use the store `GetTimeSeriesOperaion` operation to retrieve - time-series data. - With `GetTimeSeriesOperaion` you can retrieve the data of **multiple time-series**. +{INFO: } +`session.TimeSeriesFor.Get` retrieves a single time-series' data. +To retrieve multiple time-series' data in a single call, use the +[GetTimeSeriesOperaion](../../../../document-extensions/timeseries/client-api/store-operations/get-TS-data) +document-store operation. +{INFO/} * In this page: - * [Get Time-Series Entry Using `session.TimeSeriesFor.Get`](../../../document-extensions/timeseries/client-api/get-time-series#get-time-series-entry-using-session.timeseriesfor.get) - * [Get Time-Series Entry Using `GetTimeSeriesOperaion`](../../../document-extensions/timeseries/client-api/get-time-series#get-time-series-entries-using-gettimeseriesoperaion) - + * [`TimeSeriesFor.Get`: Get Time-Series Data](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#timeseriesfor.get:-get-time-series-data) + * [Definition](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#definition) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#usage-samples) + * [`Advanced.GetTimeSeriesFor`: Get Time-Series Names](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#advanced.gettimeseriesfor:-get-time-series-names) + * [Definition](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#definition-1) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#usage-flow-1) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#usage-sample) {NOTE/} --- -{PANEL: Get Time-Series Entry Using `session.TimeSeriesFor.Get`} +{PANEL: `TimeSeriesFor.Get`: Get Time-Series Data} + +--- #### `TimeSeriesFor.Get` Definition {CODE TimeSeriesFor-Get-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - * Parameters: | Parameters | Type | Description | @@ -52,7 +62,7 @@ --- -#### Usage Flow +#### `TimeSeriesFor.Get` Usage Flow * Open a session. * Create an instance of `TimeSeriesFor`. @@ -62,7 +72,7 @@ --- -#### Usage Samples +#### `TimeSeriesFor.Get` Usage Samples Here, we retrieve all time-series entries of a time-series. {CODE timeseries_region_TimeSeriesFor-Get-Single-Value-Using-Document-ID@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -75,15 +85,17 @@ and get its "Heartrate" time-series data. {PANEL/} -{PANEL: Get Time-Series Entries Using `GetTimeSeriesOperaion`} +{PANEL: `Advanced.GetTimeSeriesFor`: Get Time-Series Names} + +Use this method to retrieve the names of a document's time-series. + +#### `Advanced.GetTimeSeriesFor` Definition -Get time-series entries using the `GetTimeSeriesOperaion` operation. -It has an advantage over `session.Get`, in that it allows you to retrieve -data from multiple time-series of a selected document in a single call. +#### `Advanced.GetTimeSeriesFor` Usage Flow -Learn how to use `GetTimeSeriesOperaion` [in the article dedicated to -time-series operations](../../../document-extensions/timeseries/client-api/time-series-operations#gettimeseriesoperation:-get-time-series-data). +#### `Advanced.GetTimeSeriesFor` Usage Sample +{CODE timeseries_region_Retrieve-TimeSeries-Names@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/include-time-series.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data.markdown similarity index 71% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/include-time-series.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data.markdown index e05f7a5007..8dc7d38477 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/include-time-series.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data.markdown @@ -1,31 +1,30 @@ -# Include Time Series +# Include Time-Series Data --- {NOTE: } -You can [Include](../../../client-api/session/loading-entities#load-with-includes) -a time-series or a part of it while loading a document. -Included time-series data is retrieved in the same request as its owner-document -and is held by the session, so it can be immediately retrieved when needed with no -additional remote calls. +[Include](../../../client-api/session/loading-entities#load-with-includes) +a document's time-series data while loading the document. +The included time-series data is held by the client's session, +so it can be handed to the user with no additional trip to the +server the instant it is required. * Time-series data can be included while - * Loading a document using `session.Load` - * Loading a document using `session.LoadAsync` - * Querying documents using `session.Query` - * Querying documents using raw RQL via `session.Advanced.RawQuery` + * Loading a document **by a query** via `session.Query` + * Loading a document **by a raw query** via `session.Advanced.RawQuery` * In this page: - * [Including Time-Series While Loading a Document](../../../document-extensions/timeseries/client-api/include-time-series#including-time-series-while-loading-a-document) - * [Including Time-Series While Querying Documents](../../../document-extensions/timeseries/client-api/include-time-series#including-time-series-while-querying-documents) - * [Via `Session.Query`](../../../document-extensions/timeseries/client-api/include-time-series#include-time-series-while-querying-via-) - * [Via `session.Advanced.RawQuery`](../../../document-extensions/timeseries/client-api/include-time-series#include-time-series-while-querying-via--1) + * [Include Time-Series Data While Loading Via `Session.Load`](../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data#include-time-series-data-while-loading-via-session.load) + * [Include Time-Series Data During a Query](../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data#include-time-seriess-data-during-a-query) + * [Via `Session.Query`](../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data#include-ts-data-while-querying-via-) + * [Via `session.Advanced.RawQuery`](../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data#include-ts-data-while-querying-via--1) {NOTE/} --- -{PANEL: Including Time-Series While Loading a Document} +{PANEL: Include Time-Series Data While Loading Via `Session.Load`} To include a time-series or a part of it while loading a document via `session.Load`, use `IncludeTimeSeries`. @@ -69,11 +68,11 @@ the session but from the server, with a much costlier delay. {PANEL/} -{PANEL: Including Time-Series While Querying Documents} +{PANEL: Include Time-SeriesS Data During a Query} --- -### Include time-series while querying via `Session.Query` +## Include TS Data While Querying Via `Session.Query` To include time-series or parts of them while loading documents via `session.Query`, use `IncludeTimeSeries`. @@ -113,7 +112,7 @@ from the session, with no additional trip to the server. --- -### Include time-series while querying via `session.Advanced.RawQuery` +## Include TS Data While Querying Via `session.Advanced.RawQuery` To include time-series or parts of them while querying via `session.Advanced.RawQuery`, diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-time-series.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown similarity index 53% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-time-series.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown index 4a46d25cf5..35ef80f132 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/patching-time-series.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown @@ -1,27 +1,38 @@ -# Patching Time Series +# Patch Time-Series Date --- {NOTE: } -You can patch time-series data to a document using either -a `session` method or `document store` operations. +Patch time-series data to a document using the session` method +`Advanced.Defer`. * In this page: - * [Patching Time-Series Date Using `session.Advanced.Defer`](../../../document-extensions/timeseries/client-api/patching-time-series#patching-time-series-data-using-session.advanced.defer) - * [Patching Time-Series Date Using `store operations`](../../../document-extensions/timeseries/client-api/patching-time-series#patching-time-series-date-using-store-operations) + * [Patch Time-Series Data Using `session.Advanced.Defer`](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#patch-time-series-data-using-advanced.defer) + * [Method Definition](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#method-definition) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#usage-samples) + {NOTE/} --- -{PANEL: Patching Time-Series Data Using `session.Advanced.Defer`} +{PANEL: Patch Time-Series Data Using `Advanced.Defer`} + +Use `Advanced.Defer` to run a Java Script that - -Use `session.Advanced.Defer` to run a Java Script that patches time-series -entries to a document or removes them from it. +* Patches time-series entries to a document +* Removes time-series entries from a document +{INFO: } You can handle a single document at a time. Since this is a `session` method however, you can call -`session.Advanced.Defer` multiple times and call `session.saveChanges()` +`Advanced.Defer` multiple times and call `session.saveChanges()` to execute them all in a single transaction. +{INFO/} + +--- + +#### Method Definition --- @@ -57,23 +68,6 @@ Here, we remove a range of 50 time-series entries from a document. {PANEL/} -{PANEL: Patching Time-Series Date Using `store operations`} - -There are two document-store patching operations. - -* The first is `PatchOperation`. - Use it to run a Java Script that patches time-series entries to - a document or removes them from it. - Learn how to use it [here](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies). -* The second is `PatchByQueryOperation`. - Use it to query your database and perform time-series operations - on located documents. - `PatchByQueryOperation` is very helpful when you want to perform - time-series actions on multiple documents. - Learn how to use it [here](../../../document-extensions/timeseries/client-api/time-series-operations#patchbyqueryoperation:-patch-time-series-data-by-query). - -{PANEL/} - ## Related articles **Studio Articles**: [Studio Time Series Management]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown similarity index 61% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown index 4f141c4448..e4506606df 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/remove-time-series-entries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown @@ -1,28 +1,24 @@ -# Remove Time-Series Entries +# Remove Time-Series Data --- {NOTE: } -You can use the session `TimeSeriesFor.Remove` method to remove -a **single time-series entry**, or a **range of time-series entries**. +Remove time-series data using the session method `TimeSeriesFor.Remove`. +You can remove a **single time-series entry** or a **range of entries**. -You can also use the store `TimeSeriesBatchOperation` operation to -remove time-series entries. - -* A time-series is removed, when all its time-series entries are removed. -* When a document is deleted, all its time-series are deleted with it. +* **Removing a time-series** + Removing all entries of a time-series, removes the whole series. * In this page: - * [Removing Time-Series Entries Using `session.TimeSeriesFor.Remove`](../../../document-extensions/timeseries/client-api/remove-time-series-entries#removing-time-series-entries-using-session.timeseriesfor.remove) - * [Removing Time-Series Entries Using `TimeSeriesBatchOperation`](../../../document-extensions/timeseries/client-api/remove-time-series-entries#removing-time-series-entries-using-timeseriesbatchoperation) + * [`TimeSeriesFor.Remove` Definition](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#timeseriesfor.remove-definition) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#usage-samples) {NOTE/} --- -{PANEL: Removing Time-Series Entries Using `session.TimeSeriesFor.Remove`} - -#### `TimeSeriesFor.Remove` Definition +{PANEL: `TimeSeriesFor.Remove` Definition} To remove a time-series entry, use one of `TimeSeriesFor`'s two `Remove` methods. One overload method removes a single time-series entry (by its timestamp), @@ -44,9 +40,9 @@ timestamp to an end timestamp). | `from` | DateTime | Remove the range of time-series entries starting at this timestamp | | `to` | DateTime | Remove the range of time-series entries ending at this timestamp | ---- +{PANEL/} -#### Usage Flow +{PANEL: Usage Flow} * Open a session. * Create an instance of `TimeSeriesFor`. @@ -55,9 +51,9 @@ timestamp to an end timestamp). * Call `TimeSeriesFor.Remove`. * Call `session.SaveChanges` for the action to take effect on the server. ---- +{PANEL/} -#### Usage Samples +{PANEL: Usage Samples} Here, we remove a single time-series entry from a time-series. {CODE timeseries_region_Remove-TimeSeriesFor-Single-Time-Point@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -65,19 +61,6 @@ Here, we remove a single time-series entry from a time-series. Here, we remove a range of time-series entries from a time-series. {CODE timeseries_region_TimeSeriesFor-Remove-Time-Points-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -{PANEL/} - -{PANEL: Removing Time-Series Entries Using `TimeSeriesBatchOperation`} - -Remove ranges of time-series entries using the `TimeSeriesBatchOperation` -operation. -It has an advantage over `session.Remove`, in that it allows you to bundle -a series of Remove actions in a list and execute tham all in a single call. - -Learn how to use `TimeSeriesBatchOperation` [in the article dedicated to -time-series operations](../../../document-extensions/timeseries/client-api/time-series-operations#use--to-remove). - - {PANEL/} ## Related articles diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json new file mode 100644 index 0000000000..7b6d84eecc --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json @@ -0,0 +1,26 @@ +[ + { + "Path": "append-and-remove-TS-data.markdown", + "Name": "Append & Remove TS Data", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "get-TS-data.markdown", + "Name": "Get Time-Series Data", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "patch-TS-data.markdown", + "Name": "Patch Time-Series Data", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "/bulk-ts-operations", + "Name": "Bulk Time-Series Operations", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown new file mode 100644 index 0000000000..ab86a54dc3 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown @@ -0,0 +1,101 @@ +# Append and Remove Time-Series Data + +--- + +{NOTE: } + +Append and Remove single or multiple time-series entries +using the document-store operation `TimeSeriesBatchOperation`. +`TimeSeriesBatchOperation` allows you to bundle a series of +Append and/or Remove operations in a list, and execute them +all in a single call. + +* In this page: + * [`TimeSeriesBatchOperation` Definition](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#timeseriesbatchoperation-definition) + * [Using `TimeSeriesBatchOperation` to Append TS Data](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#using-timeseriesbatchoperation-to-append-ts-data) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#usage-sample) + * [Using `TimeSeriesBatchOperation` to Remove TS Data](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#using-timeseriesbatchoperation-to-remove-ts-data) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#usage-flow-1) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#usage-sample-1) +{NOTE/} + +--- + +{PANEL: `TimeSeriesBatchOperation` Definition} + +To instruct `TimeSeriesBatchOperation` which actions to perform, pass it +an `TimeSeriesOperation` instance for each Append or Remove action. + +* `TimeSeriesOperation` + {CODE TimeSeriesOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + + +{PANEL: Using `TimeSeriesBatchOperation` to Append TS Data} + +#### Usage Flow + +* Create an instance of `TimeSeriesOperation` + * Populate it with a new `AppendOperation` list for every time-series entry you want to append. + * Populate each `AppendOperation` list with the properties of the time-series + entry that you want to append. +* Create a `TimeSeriesBatchOperation` instance. + * Pass its constructor the document ID and the `TimeSeriesOperation` instance you've created. +* Call `store.Operations.Send` to execute the operation. + * Pass it the `TimeSeriesBatchOperation` instance you've created. + +--- + +#### Usage Sample + +Here, we append a time-series two entries using `TimeSeriesBatchOperation`. +{CODE timeseries_region_Append-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + + +{PANEL: Using `TimeSeriesBatchOperation` to Remove TS Data} + +--- + +#### Usage Flow + +* Create a `TimeSeriesOperation` instance + * Populate the `TimeSeriesOperation` instance with - + The time-series name. + A list of removals. + * The list of removals is constructed of `RemoveOperation` instances. + Each instance defines a range of entries that will be removed from the time-series. + * Set a removal range using - + `From` - the timestamp of the first time-series entry of the range + `To` - the timestamp of the last time-series entry to be removed. +* Create a `TimeSeriesBatchOperation` instance. + * Pass its constructor the document ID and the `TimeSeriesOperation` instance you've created. +* Call `store.Operations.Send` to execute the operation. + * Pass it the `TimeSeriesBatchOperation` instance you've created. + +--- + +#### Usage Sample + +Here, we remove two ranges of entries from a time-series. +{CODE timeseries_region_Remove-Range-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/.docs.json new file mode 100644 index 0000000000..21080c3820 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/.docs.json @@ -0,0 +1,8 @@ +[ + { + "Path": "append-ts-data-in-bulk.markdown", + "Name": "Append TS Data In Bulk", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown new file mode 100644 index 0000000000..0f0f13751f --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown @@ -0,0 +1,58 @@ +# `BulkInsert`: Append Time-Series In Bulk + +--- + +{NOTE: } + +Use `BulkInsert` when you want to append a large quantity of +time-series data to a document. + +* In this page: + * [`BulkInsert` Definition](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#bulkinsert-definition) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#usage-samples) +{NOTE/} + +{PANEL: `BulkInsert` Definition} + +{PANEL/} + + +{PANEL: Usage Flow} + +* Call `store.BulkInsert`. + BulkInsert's return value is an `BulkInsertOperation` instance. +* Call the `BulkInsertOperation` instance's `TimeSeriesFor` method. + * Pass it the document ID, and the time-series name + * Its return value is a new `TimeSeriesBulkInsert` instance. +* Populate the `TimeSeriesBulkInsert` instance with Append actions. + Pass each Append action - + * The timestamp of the entry you want to append + * The entry's new values + * The entry's tag + +{PANEL/} + +{PANEL: Usage Samples} + +Here, we append a time-series two entries. +{CODE timeseries_region_Use-BulkInsert-To-Append-2-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we use a loop to append a time-series a hundred entries. +{CODE timeseries_region_Use-BulkInsert-To-Append-100-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown new file mode 100644 index 0000000000..5c580e641b --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown @@ -0,0 +1,94 @@ +# Get Time-Series Data + +--- + +{NOTE: } + +Get time-series data using `GetTimeSeriesOperaion`. + +`GetTimeSeriesOperaion` allows you to retrieve data from multiple +time-series of a selected document in a single call. + +* In this page: + * [`GetTimeSeriesOperation` Definition](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#gettimeseriesoperation-definition) + * [Get A Single Time-Series' Data](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#get-a-single-time-series) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#usage-flow) + * [Usage Sample](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#usage-sample) + * [Get Multiple Time-Series Data](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#get-multiple-time-series-data) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#usage-flow-1) + * [Usage Sample](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#usage-sample-1) +{NOTE/} + +--- + +{PANEL: `GetTimeSeriesOperation` Definition} + +There are two `GetTimeSeriesOperation` overloads. + +* Use the first overload to retrieve a single time-series' data. +* Use the second overload to retrieve multiple time-series' data. + +{PANEL/} + +{PANEL: Get A Single Time-Series' Data} + +--- + +#### Usage Flow + +* Pass `GetTimeSeriesOperation` - + * The document ID + * The time-series name + * Range start: Timestamp for the first time-series entry to be retrieved + * Range end: Timestamp for the last time-series entry to be retrieved +* Call `store.Operations.Send` to execute the operation. +* Data is returned into a `dictionary of `TimeSeriesRangeResult` classes. + * TimeSeriesRangeResult: + {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +#### Usage Sample + +Here, we retrieve all entries of a single time-series. +{CODE timeseries_region_Get-Single-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + + +{PANEL: Get Multiple Time-Series Data} + +--- + +#### Usage Flow + +* Pass `GetTimeSeriesOperation` the document ID and a list of `TimeSeriesRange` instances. + Each `TimeSeriesRange` instance defines - + * **Name** - The time-series name + * **From** - Range start, the timestamp for the first time-series entry to be retrieved + * **To** - Range end, the timestamp for the last time-series entry to be retrieved +* Call `store.Operations.Send` to execute the operation. +* Data is returned into into a `dictionary of `TimeSeriesRangeResult` classes. + * TimeSeriesRangeResult: + {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +--- + +#### Usage Sample + +Here, we retrieve chosen entries from two time-series. +{CODE timeseries_region_Get-Multiple-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown new file mode 100644 index 0000000000..e68b085bf9 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown @@ -0,0 +1,119 @@ +# Patch Time-Series Data + +--- + +{NOTE: } + +* Use `PatchOperation` to patch time-series data to a single document + loaded by its ID. +* Use `PatchByQueryOperation` to query your database and + patch time-series data to the documents your query locates. + +* In this page: + * [`PatchOperation`: Patch a Document](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchoperation:-patch-a-document) + * [Definition](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#definition) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples) + * [`PatchByQueryOperation`: Patch Queried Documents](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation:-patch-queried-documents) + * [Definition](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#definition-1) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow-1) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples-1) +{NOTE/} + +--- + +{PANEL: `PatchOperation`: Patch a Document} + +`PatchOperation` allows you to run a Java Script that patches +time-series entries to a loaded document, or removes entries +from it. + +--- + +#### `PatchOperation` Definition + +--- + +#### Usage Flow + +* Pass `PatchOperation` - + * the document ID + * the change vector if you need to (or `null` if not) + * a new `PatchRequest` instance +* Use the `PatchRequest` instance to pass `PatchOperation` + a Java Script that specifies whether to Append or Remove + time-series entries and how to perform it. +* Call `store.Operations.Send` to execute the operation. + +--- + +#### Usage Samples + +Here, we use `PatchOperation` to patch a document a single +time-series entry. +The script draws its arguments from its "Values" section. +{CODE TS_region-Operation_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we provide `PatchOperation`with a script that patches +100 time-series entries to a document. +Timestamps and values are drawn from an array, and other +arguments are provided in the "Values" section. +{CODE TS_region-Operation_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we use `PatchOperation` to remove a range of 50 time-series +entries from a document. +{CODE TS_region-Operation_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +{PANEL: `PatchByQueryOperation`: Patch Queried Documents} + +`PatchByQueryOperation` allows you to run a query and patch +time-series data to all the documents it finds. +You can use this operation not only to append data, but also to +remove or get time-series data from located documents. + +--- + +#### `PatchByQueryOperation` Definition + +--- + +#### Usage Flow + +* Create a `PatchByQueryOperation` operation. +* Pass `PatchByQueryOperation` a new `IndexQuery` instance as an argument. +* Add the `IndexQuery` instance a Java Script that specifies + the query you want to run. +* Call `store.Operations.Send` to execute the operation. + +--- + +#### Usage Samples + +Here, the query we provide `PatchByQueryOperation` appends +a time-series entry to all user documents. +{CODE TS_region-PatchByQueryOperation-Append-To-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, the query removes time-series from located documents. +{CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we get selected ranges of time-series entries from the documents +located by the query. +{CODE TS_region-PatchByQueryOperation-Get@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown deleted file mode 100644 index 593d874557..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/time-series-operations.markdown +++ /dev/null @@ -1,301 +0,0 @@ -# Time-Series Operations - ---- - -{NOTE: } - -Time-series and their entries can be appended, removed and retrieved via both -[session methods](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-session-methods) -and `store operations`. - -* The main advantage `session` methods have over `store` operations is the - transactional guarantee `session` methods provide. -* There are time-series actions that are only available via store operations, - including - - * Appending, removing and getting the data of **multiple time-series** - in a single operation. - * Managing time-series **rollup and retention policies** - * Performing **queries** and patching time-series data to - **multiple chosen documents**. - -{INFO: } -If you need to perform an action that can be accomplished by both -a session method and a store operation, and neither offers a clear -advantage over the other, simply choose the one you're more -comfortable with. -{INFO/} - -* In this page: - * [`TimeSeriesBatchOperation`: Append and Remove Time-Series Data](../../../document-extensions/timeseries/client-api/time-series-operations#timeseriesbatchoperation:-append-and-remove-time-series-data) - * [Use `TimeSeriesBatchOperation` to Append](../../../document-extensions/timeseries/client-api/time-series-operations#use--to-append) - * [Use `TimeSeriesBatchOperation` to Remove](../../../document-extensions/timeseries/client-api/time-series-operations#use--to-remove) - * [`BulkInsert`: Append Time-Series In Bulk](../../../document-extensions/timeseries/client-api/time-series-operations#bulkinsert:-append-time-series-in-bulk) - * [`GetTimeSeriesOperation`: Get Time-Series Data](../../../document-extensions/timeseries/client-api/time-series-operations#gettimeseriesoperation:-get-time-series-data) - * [Get A Single Time-Series' Data](../../../document-extensions/timeseries/client-api/time-series-operations#get-a-single-time-series-data) - * [Get Multiple Time-Series Data](../../../document-extensions/timeseries/client-api/time-series-operations#get-multiple-time-series-data) - * [`ConfigureTimeSeriesOperation`: Manage Rollup and Retention Policies](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies) - * [`PatchOperation`: Patch Time-Series Data To Documents](../../../document-extensions/timeseries/client-api/time-series-operations#configuretimeseriesoperation:-manage-rollup-and-retention-policies) - * [`PatchByQueryOperation`: Patch Time-Series Data By Query](../../../document-extensions/timeseries/client-api/time-series-operations#patchbyqueryoperation:-patch-time-series-data-by-query) -{NOTE/} - ---- - -{PANEL: `TimeSeriesBatchOperation`: Append and Remove Time-Series Data} - -`TimeSeriesBatchOperation` can append and remove single or multiple time-series -entries. -You can bundle a series of Append and/or Remove operations in a list, and -execute tham all in a single call. - -To instruct `TimeSeriesBatchOperation` which actions to perform, pass it -an `TimeSeriesOperation` instance for each Append or Remove action. - -* `TimeSeriesOperation` - {CODE TimeSeriesOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - ---- - -### Use `TimeSeriesBatchOperation` To Append - ---- - -#### Usage Flow - -* Create an instance of `TimeSeriesOperation` - * Populate it with a new `AppendOperation` list for every time-series entry you want to append. - * Populate each `AppendOperation` list with the properties of the time-series - entry that you want to append. -* Create a `TimeSeriesBatchOperation` instance. - * Pass its constructor the document ID and the `TimeSeriesOperation` instance you've created. -* Call `store.Operations.Send` to execute the operation. - * Pass it the `TimeSeriesBatchOperation` instance you've created. - ---- - -#### Usage Sample - -Here, we append a time-series two entries using `TimeSeriesBatchOperation`. -{CODE timeseries_region_Append-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - ---- - -### Use `TimeSeriesBatchOperation` To Remove - ---- - -#### Usage Flow - -* Create a `TimeSeriesOperation` instance - * Populate the `TimeSeriesOperation` instance with - - The time-series name. - A list of removals. - * The list of removals is constructed of `RemoveOperation` instances. - Each instance defines a range of entries that will be removed from the time-series. - * Set a removal range using - - `From` - the timestamp of the first time-series entry of the range - `To` - the timestamp of the last time-series entry to be removed. -* Create a `TimeSeriesBatchOperation` instance. - * Pass its constructor the document ID and the `TimeSeriesOperation` instance you've created. -* Call `store.Operations.Send` to execute the operation. - * Pass it the `TimeSeriesBatchOperation` instance you've created. - ---- - -#### Usage Sample - -Here, we remove two ranges of entries from a time-series. -{CODE timeseries_region_Remove-Range-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -{PANEL: `BulkInsert`: Append Time-Series In Bulk} - -You can append time-series entries in bulk, using -[BulkInsert](../../../client-api/bulk-insert/how-to-work-with-bulk-insert-operation). - ---- - -#### Usage Flow - -* Call `store.BulkInsert`. - BulkInsert's return value is an `BulkInsertOperation` instance. -* Call the `BulkInsertOperation` instance's `TimeSeriesFor` method. - * Pass it the document ID, and the time-series name - * Its return value is a new `TimeSeriesBulkInsert` instance. -* Populate the `TimeSeriesBulkInsert` instance with Append actions. - Pass each Append action - - * The timestamp of the entry you want to append - * The entry's new values - * The entry's tag - ---- - -#### Usage Samples - -Here, we append a time-series two entries. -{CODE timeseries_region_Use-BulkInsert-To-Append-2-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -Here, we use a loop to append a time-series a hundred entries. -{CODE timeseries_region_Use-BulkInsert-To-Append-100-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - - -{PANEL/} - -{PANEL: `GetTimeSeriesOperation`: Get Time-Series Data} - -Get time-series data using `GetTimeSeriesOperaion`. -`GetTimeSeriesOperaion` has an advantage over `session.Get`, in that it -allows you to retrieve data from multiple time-series of a selected document -in a single call. - -There are two overloads of this operation. - -* The first overload retrieves the data of a single time-series. -* The second overload retrieve the data of as many time-series as you like. - ---- - -### Get A Single Time-Series' Data - ---- - -#### Usage Flow - -* Pass `GetTimeSeriesOperation` - - * The document ID - * The time-series name - * Range start: Timestamp for the first time-series entry to be retrieved - * Range end: Timestamp for the last time-series entry to be retrieved -* Call `store.Operations.Send` to execute the operation. -* Data is returned into a `dictionary of `TimeSeriesRangeResult` classes. - * TimeSeriesRangeResult: - {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -#### Usage Sample - -Here, we retrieve all entries of a single time-series. -{CODE timeseries_region_Get-Single-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - ---- - -### Get Multiple Time-Series Data - ---- - -#### Usage Flow - -* Pass `GetTimeSeriesOperation` the document ID and a list of `TimeSeriesRange` instances. - Each `TimeSeriesRange` instance defines - - * **Name** - The time-series name - * **From** - Range start, the timestamp for the first time-series entry to be retrieved - * **To** - Range end, the timestamp for the last time-series entry to be retrieved -* Call `store.Operations.Send` to execute the operation. -* Data is returned into into a `dictionary of `TimeSeriesRangeResult` classes. - * TimeSeriesRangeResult: - {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - ---- - -#### Usage Sample - -Here, we retrieve chosen entries from two time-series. -{CODE timeseries_region_Get-Multiple-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -{PANEL: `ConfigureTimeSeriesOperation`: Manage Rollup and Retention Policies} - -Use `ConfigureTimeSeriesOperation` to manage time-series rollup and retention policies. - -Learn how to use this operation in the article dedicated to -[rollup and retention](../../../document-extensions/timeseries/rollup-and-retention). - -{PANEL/} - -{PANEL: `PatchOperation`: Patch Time-Series Data To Documents} - -Use `PatchOperation` to run a Java Script that patches time-series -entries to a document or removes them from it. - ---- - -#### Usage Flow - -* Pass `PatchOperation` - - * the document ID - * the change vector if you need to (or `null` if not) - * a new `PatchRequest` instance -* Use the `PatchRequest` instance to pass `PatchOperation` - a Java Script that specifies whether to Append or Remove - time-series entries and how to perform it. -* Call `store.Operations.Send` to execute the operation. - ---- - -#### Usage Samples - -Here, we use `PatchOperation` to patch a document a single -time-series entry. -The script draws its arguments from its "Values" section. -{CODE TS_region-Operation_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -Here, we provide `PatchOperation`with a script that patches -100 time-series entries to a document. -Timestamps and values are drawn from an array, and other -arguments are provided in the "Values" section. -{CODE TS_region-Operation_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -Here, we use `PatchOperation` to remove a range of 50 time-series -entries from a document. -{CODE TS_region-Operation_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -{PANEL: `PatchByQueryOperation`: Patch Time-Series Data By Query} - -Use `PatchByQueryOperation` to run a query and patch the documents -it finds. It is useful when you want to patch data time-series data -to multiple documents. -You can also use this operation to remove and get time-series data -from multiple documents. - ---- - -#### Usage Flow - -* Create a `PatchByQueryOperation` operation. -* Pass `PatchByQueryOperation` a new `IndexQuery` instance as an argument. -* Add the `IndexQuery` instance a Java Script that specifies - the query you want to run. -* Call `store.Operations.Send` to execute the operation. - ---- - -#### Usage Samples - -Here, the query we provide `PatchByQueryOperation` appends -a time-series entry to all user documents. -{CODE TS_region-PatchByQueryOperation-Append-To-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -Here, the query removes time-series from located documents. -{CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -Here, we get selected ranges of time-series entries from the documents -located by the query. -{CODE TS_region-PatchByQueryOperation-Get@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() From 896a680648f32438963cfa4d28ccb0f029d9af34 Mon Sep 17 00:00:00 2001 From: reebhub Date: Tue, 12 May 2020 19:31:33 +0300 Subject: [PATCH 12/56] design changes --- .../client-api/api-overview.markdown | 21 ++-- .../session-methods/append-ts-data.markdown | 13 ++- .../timeseries/design.markdown | 109 ++++++++++++------ 3 files changed, 95 insertions(+), 48 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown index fefe1933b8..99901428f6 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -5,13 +5,13 @@ The Time-Series API includes a set of [session](../../../client-api/session/what-is-a-session-and-how-does-it-work) methods and [store](../../../client-api/what-is-a-document-store) -[operations](../../../client-api/operations/what-are-operations) -that you can **append** (create and update), **get**, **remove**, -**include**, **patch** and **query** time-series data with. +[operations](../../../client-api/operations/what-are-operations). +You can use the API to **append** (create and update), **get**, +**remove**, **include**, **patch** and **query** time-series data. * In this page: * [Creating and Removing Time-Series Data](../../../document-extensions/timeseries/client-api/api-overview#creating-and-removing-time-series-data) - * [`session` Methods -or- `document-store` Operations?](../../../document-extensions/timeseries/client-api/api-overview#session-methods--or--document-store-operations?) + * [`session` Methods -vs- `document-store` Operations](../../../document-extensions/timeseries/client-api/api-overview#session-methods--vs--document-store-operations) * [Available Time-Series `session` methods](../../../document-extensions/timeseries/client-api/api-overview#available-time-series-session-methods) * [Available Time-Series `store` Operations](../../../document-extensions/timeseries/client-api/api-overview#available-time-series-store-operations) @@ -30,13 +30,16 @@ There is no need to explicitly create or delete a time-series. {PANEL/} -{PANEL: `session` Methods -or- `document-store` Operations?} +{PANEL: `session` Methods -vs- `document-store` Operations} -Many time-series functions are available through both `session` methods -and `document-store` operations. You can **append**, **remove**, **get** -and **patch** time-series data through both interfaces. +Some time-series functions are available through both `session` methods +and `document-store` operations: +You can **append**, **remove**, **get** and **patch** time-series data +through both interfaces. -There are, though, functionalities unique to each interface. +--- + +There are also functionalities unique to each interface. * **Time-series functionalities unique to the `session`interface**: * `session` methods provide a **transactional guarantee**. diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown index 698e0a6795..ff12ba2ea6 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown @@ -5,9 +5,14 @@ {NOTE: } Append time-series data using the session method `TimeSeriesFor.Append`. -You can append a single time-series entry at a time. -An entry contains a **timestamp** that marks the entry's location in the -time-series, 1 to 32 `double`-type **values**, and optionally a **tag**. + +You can append a single [time-series entry](../../../../document-extensions/timeseries/design#time-series-entries) at a time. + +Note that you can call `TimeSeriesFor.Append` multiple times before +calling `session.saveChanges` once and carrying out all the append +actions in a single transaction. + +{INFO: } * **Creating a time-series** Appending a time-series entry to a non-existing time-series, @@ -20,6 +25,8 @@ time-series, 1 to 32 `double`-type **values**, and optionally a **tag**. an entry at this timestamp, **updates the existing entry** with the appended data. +{INFO/} + * In this page: * [`TimeSeriesFor.Append` Definition](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#timeseriesfor.append-definition) * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#usage-flow) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown index b1b39302fa..27d3c8f491 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown @@ -1,75 +1,116 @@ # Time-Series Design - - --- {NOTE: } -* ... +A time-series is an array of Gorilla-encoded `IEnumerable` entries +that extends a specific single document. * In this page: * [Time-Series Structure](../../document-extensions/timeseries/design#time-series-structure) - * [Success, Failure and Conflicts](../../document-extensions/timeseries/design#success,-failure-and-conflicts) - * [The `HasTimeSeries` Flag](../../document-extensions/timeseries/design#the-hastimeseries-flag) + * [Document Extension](../../document-extensions/timeseries/design#document-extension) + * [The `HasTimeSeries` Flag](../../document-extensions/timeseries/design#the--flag) + * [Segmentation](../../document-extensions/timeseries/design#segmentation) + * [Time-Series Entries](../../document-extensions/timeseries/design#time-series-entries) + * [Updating Time-Series](../../document-extensions/timeseries/design#updating-time-series) + * [Document Change](../../document-extensions/timeseries/design#document-change) + * [Success](../../document-extensions/timeseries/design#success) + * [No Conflicts](../../document-extensions/timeseries/design#no-conflicts) + * [Transactions](../../document-extensions/timeseries/design#transactions) - * []() {NOTE/} --- {PANEL: Time-Series Structure} -A time-series is an array of `IEnumerable`-type time-series entries. -Each entry consists of a **timestamp**, a **tag**, and an array of **values**. +--- -* `TimeSeriesEntry` +#### Document Extension + +A time-series is related to the document it extsnds, by - -| Parameters | Type | Description | -|:-------------|:-------------|:-------------| -| `Timestamp` | DateTime | Entry's time signature | -| `Tag` | string | Entry's tag | -| `Values` | double[] | Entry's values array | +* A **reference to the time-series** in the document's metadata. + The time-series' **name** is kept in the document's metadata. + The time-series' **data** is stored in a different location. ' +* A **reference to the document** in the time-series' data. -* A time series includes a reference to the document it extends, by the document's ID. +--- + +#### The `HasTimeSeries` Flag + +* When the first time-series is added to a document, RavenDB automatically sets + a `HasTimeSeries` Flag in the document's metadata. + {CODE-BLOCK: JSON} +{ + "Name": "Paul", + "@metadata": { + "@collection": "Users", + "@flags": "HasTimeSeries" + } +} +{CODE-BLOCK/} -* Time-series are encoded using Facebook Gorilla encoding. + +* When all time-series have been removed from a document, RavenDB will + automatically remove the flag. --- -####Segments +#### Segmentation -Time-series may be constructed of segments. +A time-series array is constructed of segments. * A time-series of up to 32k entries is contained in a single segment. * A time-series longet than 32k entries is contained in multiple segments. * A new segment is also created when a period of more than 25 days has passed since the last measurement. +--- + +#### Time-Series Entries + +Each time-series entry is an `IEnumerable` with three values. + +* `TimeSeriesEntry` + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `Timestamp` | DateTime | Time signature | + | `Tag` | string | Optional tag | + | `Values` | double[] | An array of up to 32 values | + {PANEL/} -{PANEL: Success, Failure and Conflicts} +{PANEL: Updating Time-Series} --- -####Success +#### Document Change -As long as its owner document exists, updating a Time-Serie will always succeed. +* **Name Change** + **Creating** or **removing** a time-series adds or removes its name + to/from the metadata of the document it extends. + These actions **will** invoke a document-change event. +* **Data Updates** + Modifying time-series data does **not** invoke a document-change event, + as long as it doesn't create a new time-series or remove an existing one. --- -####Transactions +#### Success -When a session transaction that includes a time-series modification fails for any -reason, the time-series modification is reverted. +Updating a time-series is designed to succeed without causing any conflict. +As long as the document it extends exists, updating a Time-Serie will always succeed. --- -####No Conflicts +#### No Conflicts Time-series actions do not cause conflicts. -* **When a time-series is updated by multiple cluster Nodes** +* **Time-series update by multiple cluster Nodes** * When a time-series' data is replicated by multiple nodes, the data from all nodes is merged into a single series. * When multiple nodes append **different values** at the same timestamp, @@ -79,24 +120,20 @@ Time-series actions do not cause conflicts. * When an existing value at a certain timestamp is deleted by a node and updated by another node, the deletion is chosen. -* **When a time-series is updated By multiple clients of the same node** +* **Time-series update By multiple clients of the same node** * When a time-series' value at a certain timestamp is appended by multiple clients more or less simultaneously, the last one is chosen. * When an existing value at a certain timestamp is deleted by a client and updated by another client, the last action is chosen. -{PANEL/} - +--- -{PANEL: The `HasTimeSeries` Flag} +#### Transactions -* `HasTimeSeries` Flag - * When the first time-series is added to a document, RavenDB automatically sets - a `HasTimeSeries` Flag in the document's metadata. - * When all time-series have been removed from a document, RavenDB automatically - removes the flag. +When a session transaction that includes a time-series modification +fails for any reason, the time-series modification is reverted. - {PANEL/} +{PANEL/} ## Related articles **Studio Articles**: From 7062b32a064b29a9fcd1c56115403cc4619bafe7 Mon Sep 17 00:00:00 2001 From: morhilai Date: Tue, 12 May 2020 20:01:52 +0300 Subject: [PATCH 13/56] RDoc-1703_TimeSeries Rollup & Retention Policy documentation FINAL --- .../timeseries/images/rollup-1.PNG | Bin 62602 -> 62741 bytes .../timeseries/rollup-and-retention.markdown | 183 +++++++++++++----- .../TimeSeries/RollupAndRetention.cs | 19 +- 3 files changed, 140 insertions(+), 62 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/images/rollup-1.PNG b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/images/rollup-1.PNG index a5dd29362355859dd98c75181c1dc8ae71881e4f..422deabc0f80206e198601d45fd0124ea4c46e08 100644 GIT binary patch literal 62741 zcmd?QcTkgE_%?_IQ51bu5CH)dl@2N$q^U^nJrE)yHH0V-A{`5$R13|}OK2epEp!q@ zrT0Jrp(!0g5ip?y$fEE2oBjUWo%v>VcK6IAIZu-3)a%^WbME^(?@WxeIoNsGSy)&& zbaft@v9PeBSy+xxPM$dY=2)R~*Wt$zA2aRyESR1vi-#A-T{R6gSy;;APwzRh9$ue% zreo{F!g9g;&+CYTv)wcc%kN^{hnf~I9G1t~d^s)oTGoYCU*5QJ?bI8i1w(}Fc}^3~ zZxJ~s{XE}BH9lFRRd91Ib8(%HGCQvIPy?ZZ&Hf~C^+uk=WY?-^dC_tNOX@FXx{NT~ zMYx_w@9C-u1-wi13QG@;qKi` zsFETzurk3SWoIzu_EjIU$7cTkiG@Y+?BOh#T#LI}RdN+4SEiw)NqyB+72ING!{nRd zjj4J?5@3CnzE+`+3f(nS>DKM}QL!0Z;%ug*39UCf+RwUXDY0Ph*GF+y(wlABIQqBD zD{MOFj{Xoq6`cUqi+1sfOO-&Nfla%ma`(Qx5R}nay&y8No9eRv+jjPNSohX0JehOg z{yGQRJ#tz{TKaDZ8eE4UX);YH8qDkRKHAvgE5oX5m0yk)<>I>J67hY@1N2$4PW%fA zttWRdcrw~AMld3`yy5SyES4;XK+-lfbf4D?%u*=UYA2B#A)}N{s{)K&(SDpRR}~!l zxil98fJ1+#{Fp7K{75fP3eRlgL0Z zW&giPD(u<24sKO@l6a&EqIm~xDQ!lnaE>)QXLIrNpvg*pHz&qoWw`Qz(p=t;U60|y zDsQ+nc~zB>h~Uo6=in7r9K8a~mLE?Qx#9l#5=3^Ck8CxbMB{po*Bt%W_3&EU`un_a zgd777aj0&1JlxnCv{`;Rv!WfLaL49(%RGZ^P(De;F14C3(@D~NBHtacNe)WhlB_bq zA&TA8O~MBkv+^a;UxK84{G;F>-MUkqLB_3lrMvu`K%ZnQ=I_@@+(8j{QaVk(UHfme zekf|_gIQWzNTH_zcCAWwwph_iEEofx({jBdAC+Wt?xT~C|nRN?~;0>iClhYMOC8?Fmy|51X zO$+XJ{ou=S3;%(`g8vUV%vHEkL={4aM&JhTN|V-$bt5Wj%R}-M#3l5leYRpvotsG7 zZ6bWHzH>t9=}%XSK~tOmS}xWsjMu7vZN1_7(hX2h~0wQ zO?y;oK>FBy#$nGpt0=Bw+NWXnP^liChd+hm1q73$M!#z@qd>a{?9tT z%R!tHSy&1k{Ja3phnYj3IR^ND6`}n6%c`g|SDX(#p3xz^BwXClpshuMv0#5MxFmV( zhjnO{RIPW`601_nmPCj?G_?B5omYC?rLzFMcJ?yLOL@xONHXfr1?uV^3QzdvT}UOO!EssV6R0e2Q}f3w6sFDS59!qfx4 zsLD&a2?*!WEKjWQtDpm%{%r$GG21JW;_lRm!UxBweVu#8(U)eGI*{wo!VK~_rUDSb zB~Vf&0YT8C)DC1!+0eR{QK9;@#&y5+iLS~2=}6PNEV;P4>-@K+GSSCT_V=IhrK`=| zqCx)gG`u|{3~qNd_87?2jdV+2L3V}FXvrwo@qneEk@4f0mlupkHSYu$3!orkO$aH^ zX(g&PX7*0f;?7Uf@gFCn)GW7RLqY0>yP2yhk{yVXe;VD&ow8cDHyr4c6HLs$X#oAG8sBZz(Zl5=cT)YuN|6zd&*L-K$DhIA;VLbauIqLI zjCu}I3b*%(5^BxypO7NJ#<~vzpPfdUbGVLi=R;YHbX}c=Epc5#GY`CD_xlj`h!7`Q zdpD4)sC(CM;Q`{Yq1s&CIdblUufKa6*Os)w10OD8eW0~A>E@vWLYaGDLzJiKlJ^(q zIv1V5AuQL8(2;}+ctO&>vMn^IO2awWIa+KCdvn+u7YapGl{gfNW(F16YVA704nPre zjeZpwDb9v!NnKgATEjdJb!tgHzVud-?2inxZ(uxtloGvntiwQ`RE#7nGO+pJ=jC$z z+L~JN4|-z)4um)$E>?@De{aZP!TEBHL8iP1-zw@#Anz0KI?}-XsA(qql9DLo;017Z zIdg6>H+P4pZhym1Z-4b>aOp6@FKzh$#QT4Yhzd8dCS-N?3KmZ6cV*XmcU!@jL zzyF}j*vnp0fA-!;es0l!pxuM4sGWK+UhE03I(l%&V}Kcy9^7-Aramn}2oz@N?JS3wx&lieeQcgbRbujS`t&0FV8%{ngZ|C(Uz zN)OE*6QV4B>!CT1t&Z{!@5CS2rn|)Yr|v56wDd1o7T73!RJ#_Xk{#{gnO+dx}{QvLG9l)m$t`EYXDX>;)526XpT#GfXXjk90>*~3)Hf}GA@iti@PI2DwFy+;wf7N^f?e7siu@;g$+s#Rl&oP!o~Ydr6kCkN*=w}cYPhgUSewZod3kat2^;a z5&A~TGYqbiQKso`+WpuA4WRd^TY5jTDChoBcE38135OQzZqbVrh03owz|AJrx zk2HsnS#z|{bSv8$4!C)%cQEc4sZe}U#4Oz6Imh*{B?G2?!jy@ln{VFUDK?14<}p_a6b*(-(GNmbfF z$6=qO>XxoG;+hb?327J1J3jp-nrCPJsiZ%A2m;=lGs9t59;J{J9>VJFbHEstiY^v& zH?nEn0i|M4Vl2HBo7p^iW=PIS%H&w}lhpH3#jXd7sMFXhg%Q_~YfFvp^(7x4Ea>LK zx=VYayun=5qD@w~$4rsPar~W=E{W?1&Re<|E=k)j@_~9bp?)oW1`1E=5112ctPVaupy*R(-{5@4L zt#u3JK2qnatuM;F{k?K2-$*r(`lbapBb@5j6Yxl|R}a^_)`1<-;)U75wG^FzRT9XO z9sP>=9wJGS#1OT~jy39gSCE;Fp>O%LjVRi#1>LTGDn9!}DdS>@zuqa~F%+KGakdbW z?uS)l64?bJ=|kVE({o!`Q7KqeYQf_C+PsH;gwV^kAh!o{iv#-Ob#O}|nPIQde07Hq z+tB)c_B#5HK-uDgX?eBH$#((MVDeiVRtsDj=~7_lmN;8+h79(dxOC6+6`B${x1PFT z`e2aY^x*sP)XAhEXJP2jBq0QO4!?tS6PVi-UW}kd78`F;qDtq+tHEfOppCeR{mxm2 zN3Zjk4j5l+CXKYut&gOeOuNan`e3Yr)byBsFYM;4i>@*3I89UHM?TCC=c_Zf3PT{i zIIkRngw`;wur>ut40A@BgFbrMw04{>&acjg0-OKM-vl{0gKd%ArI!=M%Yd? z;)x+`EPD&wHDtW-`dVz>c<9p4{%Kl#u!quNpGT=Vol*loFf_|iJb#z{Xgj6mH#~TE zJ^rSTmi5yEQz5xZ{j}zzF&xRE8oE?hY9kEoJNeH!Z$Ppf=-o6KU_E+N6~5*vhySS; zxO-!>0#ZM}wAjD4AWa30j~BS0X2hlWvod0Hms^pNWW{Pv`z)+lMpowOVteWfDsk+& z1Y$BV1_)3azv=2<>)#MbO@y+c{6DNY&SIkxe63SXt|+Y@-r)7IPrJWO3Sz2Sykq%F zw)1T3pvw&J8{X@CiUu{?nz4kM@V(gef|zxGQc$>2->`xgxv54%GGjYTAnhaIJuzT^ zD}G^;e(v(@zVrOkc(n)d1X(j+%*`vIj7u~@sHZ+TjpQ86W>3vUC%bq3av;h3&ZL24 zcaEv9kMn}(n(vJwG4Qhez>Z;87*Q8y@%7$nwCFAqExX;4%}e>}zpRKiN6iPJ6ebw@ zalb-`9vb~|TQ$`uG^l7U-VZE#t=~kca>}0w^l!MNe2kRe(5MGkPt7-eVUKNGFALdO z3^tUy`55BY2B-K-9ibjmp>4Isdo<6RjVf}YWsliyiPm`WrNbG( zx}t~Th9Iq~Kn-Ic(GFKp<iXSz6%Itlm1<(2oV}$o5xU~Ha{ArSsRv$zP6{@i zc%KTAr-8|R4@|JEFbqYrZF&ErE0Yf?YnXmMonYKOG}g9u~fI>90m zUYKOd+pL(^7FDON$z1&Xvp2x6m6#F04pb;&m1nFCvH0uTw+K|e zZJUlH@7QS+>dRKlP$>zoH&)q?@4duq>|@^uC^a5EORlMpTpZj6bWHqAleWVF(sKH% z$Fe5qpJTS_=N-nqu0UaXcPrcRz$(#hET#^qs0Ro7rceR4)F)kmt8WiHxN3leOQ&p7 z)8E9AP}7tBGg$QjfHlO z2Btk4u`UxeWQ3O)#zQ_oG-9biyp`YYzusr6bV~IgCoSN8V7R z$0~XH9Zb0fX?ulE8^tQ26FugY3Fdq_aYB{R<)HKo<&U&KuE((Hvyy1Z$UQ<&uJ7m$ zq$H^8J3u5*WG2B*)@zXwD3oz*3T3`(39%U-=sW+m zVc^9YKf-%$KLFf#2fb5Uw}!Z+$JjA%+;25%4RX1?g4c%WR|6>Z3ql;B-Vsja6>>Re z6N1)`B5}%+7Ja*j~jFY5n?9S@HA71#`v+Hfx;jr$7L4^LaJ8c}H_Rj7gLMzQUtp$g8pr zrw1mGnM-r6A#xL)#GTXC;GX=&fW5_dAi$BkCsa`q?W7z#SX19?viZ1nxxN|lRNOgp z#J|+oxM7x6HNd0f!hAyx>Y%y}(P=_JDzhDKrcZ1Rt62Aj_`jrp)7AJkYt$rPs5=qh zF;?_)TpYx*%Kaqs7^1VI9eU;Np&2Gd zX^Edc+IYl}fpM)>@p<=9 zowL$w)yF`CWTLN`%=CgDphP-~E%B2pHJwn!Gg^@W*s20t#V{R=CmF8}X(yo=#B_kJ zCCHX&HW>LDNIV|Bs|`)yE%lq6xT&6Wp;R6+$la@+9~rF*$dsKHM9XJBIT>r-DHZ1) zc{ix(RFnnA%9vU6u;~}!Tqv>pjMF{>CoT+yipK^mn>N09U>$xFOU@r;8B(F?HNKc+ z`3x~Vo${p>sy^_>&ZzWO0`^-7gcoI!Y45yNEqe8?J#yd6{Ed&`yjLG~t?opYAz1cj zI$_!WOJR6 zdnWGcLybk~POtCc7E;Y#HJmV}yLW47ONxV-Ig$?5Slm%kz6R?sDgd;@HS((nuy)2q zFsZ|qo90#=f#=y>!!`@roEY=Z?E&-TRfY?Cbj`w-k^%*ZGWs$xG6p&Fk}%BVeaMKU z*25uO%V~e_D?JQPjMY4^U6HA9`si1LTa+58AkBmr;@O?Pe9|V_W$q2nuC$8AdI7NT zrxdz1GG0+PHb@5dy8x@Nt1^{Q>8#FqXr|}(D@^A$FX3_2wniwjpk(dsPCCM5Pg`PI zWrNC&MCBtgpOwpX%eeeQN!O^X-~8hcE!;f`s0VA8(`~fO_r16apO?x_y-Sgb!a@=` z7WtBgp|ayo#@=y1ojUo}{PnA(pU$Na;^gE(b}(rnd)erD_h!Eiu-D7{u7=I|?1JK8 zA*x9y5Ove16RZ~)^j!E^@T1PCD{hvbMy~%V$(}ufl`LmVigvqLV6zD|kd9@LK1eme zO6QB^it8w_@#S<$k%unZ1C}j4v04Ct)wfm1EY3^H_`L@wD9emyMyzw`yQ=|_4ypa- zx4k%ua+W`8^$?Qi084Qf@*4a_$0bz%bX5%+cdA>QIQQFiLvv`=?{h}zR1mIu&U2&~ zqq?2aun7X|?dYwN1AVu)-2nx4%Flms1kCRIWL*P_&8tmRnG*F*MR@EhLljWhFdMm* z$9pv212qmVSFgJL`bs~%(pN`zwD}E1O1W1lT^K`NmUbWw+f6D|70H2K-hfErV8yPC z-&>j7qSruCE5WZFLN~9)*3TKx3ZeLT)aTvcc88Ip2=`%q>;n3EE=-qsD=~$X?M-sl zcKZizIz&V%I=vsM=j}tywF@_r(7Q7y{8@bLgxi{t+T|m znU63hXYUa0qX4&W+f$65%U;VlC#PrI4!4z1|8Jg}kh9K8gVaN4uoQE@BCS$(tF44b zO3pid)$${jj;{9C7QieZ#!sTwX)}oDcXLL&>lkI+V|=Rug^E;W-ZQPivMA?~DudI& z>AuKPM&_)Zl#Lch%NMVwFy@Uk^5BNse4$c;>pMocpUxE%Dw_lEI=o;F{IQ#!nPBqh zN8R+>(Rfr7u61w!3fBmJoK?w2|15K9OG(Oq@Nh@53~pKat^guiXBzayyYzjZ(3~i{ zfRuVIO{^&Z^%V%J_|TNicx!r%L+Bi)vVxFx$DK5SrH6gh&Ohm+l4kf?>hF~bkfL&# zeg?W=jcFnSpA&0XsSViv{9)+=KlTVZ7SUD(1V1H8k zpUkUO&2oc(+S(Uh?>$% zfshR+Lx!|glsm@Zwe~_bd4imbjTvHPC5+@PF@!Vw^gnUC6DLgM76$Z_Cw`~g3fYNr zXsBbH@6xq@IqhQ{@RPnYazFN%C#7=R9Q9g@$m2o2q47D@+Rk0hV0^GmQNd*uCj7?k z;JKo63qeozAR@g_UuXr5tX~?t$k#@$GV~#cP5|(E%!vct%~+pjPs!KnO0=zkewxC$ zaqWG3Yia2Zt*-T~>3AU$*%~Vy6J1i<56-XG+DF`qg*|VamPu&5wg?%Cv=@eD?B|J8@&W`dG`xjBxJ&Ir5}^=1}$% zeoxCl#yQ2fkvwF;+(fIdcG1_<0bA1Aoh>OuuK_mbIGXPS+;a1zd#@MD>DwFGWGAM` zzg}|Fc#uzBfE@PbilMJB#>J0!VZo>0FtE$ev29>CQ*ZP{+|LQ-zI{Mb2@I%}nrOaG zYHzQg4Sda{93#sCGP2n+>TC;SH!SH(TD#c|N%^Zbgok`9rn88sN`+Xd2M+jULIF>r z!;a=qu->Ti-nwrHc6LY25TFdi-t#Sx67Y*(4Pgj(k2Zkhc>RWk;BheB(-r0wY9U(H z_A+|blQhIcYMGws&Ib?GnSj{(>l28Aa?2mvXW~T+^vzWU74_(%!PRnJZ+QkxB|TD% z??_bUD;CU(IU4?~d>}?uOk<)hdESZ33v*ct#+Lz4q!(jajwDw2W#i>Hrv(Qx16-GQ zof$2~y(!?qg1GfYTcrnU7Tc{EP9j43^zrJ@PazV{1f_@q+8#VI`BA&YJyxCd=YN)a z>tO&SLx=eQMA)oNTJG>Z{*ZlJ^mcKPa;D#BOdUga+?SZRWc6tEeH$R#YVr06U1WTv z;ri<67P&rvnaWB@wDjfZo+&Vmtw%AxJHa-O#V-`=pD4tr#D?0ztcVCJCFi0!!GnEI z9M?cOaw#Pql-%rhRco}`YGZn4==(=B#a#fyF@@gyHmhXlB(;XQOgJN%w*4N%^Ze7H z`-#0~uhi7#Zdfj)jmAx#aZ^W1?pio$gHRt7)ZAFZ@;%Vnr+;HfUNX#U_J%6HFoTVU zesRlpHrf_GDm`C$NrlV7I*+hwldV!N$Zb*A&hdG}BKZ?Qq12DO^|Z zSVQv_YJ znETiJh9R5oFskSL3~u7w3kf1>5;mwu_TF9XeBSb;#S_WOp>&{WT4^(N?}3X z9_}z~aAd^HAUC6>QbcY|T`xY)4U4Fsr;bXi7D;z1pH*0*@`&TeH5ML0Q&(eGh$Kb2 z49>IXX?6U5o-PPXvPwPr04&y51*}j*#jM2!ZfuA@KPNR&h@NvgiQ`>7PQEg!{kFmx zr}X~9@x$p=R6AcuHwoFeZWy|$*|^)%y6ZC}wbCgWV!lwoTedO;9n7tpYc>)S$mx;x zyZHH6XL`VDHv5_Qd-4*13-Lp2%e7XK z6XtgnybTH}U}Q*7P*;DHEFq!x9bjwACHaSG+Aa`D2rI?t(6x9AL|qT-DYrFC4JGmR}Y}jv4B{nQ!N^ zR{(P{5t}*=eBsnCd!B<*Wft^i(>l?HhNmm1KW`H})o~FiWxZvsEffEo{zy_3OIw`c z*#$qqG=8V@kS|d=&Cs$-yPuxANKG=K=Ic>z;K71R6pn4d9Oo3LbWKnAoT~MH)NCEb99y-&ZLD8)!CUbdGnPW7 zTwnZQxA-bDpy>KanJOT8C$)0OO21p#_QDsGAY2E$&mHpU>q?caoDgDd0!aZv}EJSiMS zlSV6b=_OM9yyDlJdABf?ayE~*Id`-?fkmQuy8YM4CXpD&b&gS^gHT~A7~ za#5o`q1OKmWvV1YfLa!bVK955yj4+oddc&P{5z@LaRV(OZiZ5ZgtFal8G!*6c>dk@ zw`@LjbMj4R)S5Ns1SM8Wo1Rjk58H9Dy=g6aK91PvH6DOsC$hQczkz>uo^#g`a>D;! z0c55)_aFf@UXi=7iVM?-BGb9+jlMMTxGS~R_wqA)AUTyg)3C(~=h;$8dWQQEk3JC{ z@dt{us{dmimFFqt(PP=SWo(_$JNQbGmw$@H!89Vf@_5aDz6pA0p!N8{@C#n z;j}N6n(&2au!>k$5_0_1C@jm$>ATBbe&pJ-nOz7}Vl%hpF59SgVx6ic-O}RilhhVb zF%1e~Lwj6lmG5TCr|5S|kP?T6Y?KFslJKd{obS^LvxL`_!%|vV2hV^n#T(--mcsgZ zDH1v(D$K#{$W|)ZjQECgmE5R81_zcMSc4xbSRHeE83b`hY|(QAnuo2<_Aom|>Lwt) zQT3Atg0v?B9O+_uM{~TPnI>bE{rgFm}-kw6*`v4tI0>Oh6E_*Hqzc>p*zMd$0U=T<5v@7CK=j`Qk=$|e%`2rtQED$ybHc-IV_Xi;R3g^}D z;xBp)I^H}(7N0z8wdtE2aJbvjsHK^Tt`UP$90Ha-aqLnd2HMo7ImiasY9mEpqsfkU z9G8#lJttD`UO5mNtf^ou8+sG!Tr!_dU&Bi(7>>##hpFP>gH}QNI;>*);&^|1c<8F_ zoFBBzhbV^nW5S#G5-!|&?YfbG3;uktv&s=0x_2%3cdLstcclT{@*(-<(hTBQ0KC|K z?Q`x@Wu=~j1Qh$xYA=8BV#WY7!~a33*K^(YDL!P+KBKtuH|0a43b$`lO1)!Q67h)B zscfM3qBp=s5I-{#Fg3yb`)69W-e#-?G3k$Apn*3+urKaAk=BfMX`-Y(&z<09CeA^| zh3#GhGw!WFzoxf44UBDsm0NMsA1)o)R3(rJ?QD4`r&ale%&eOA(8E6+0$$Q2M$IiC&NdWMod~ysTx33e=5wQ6{jJ0p;#ZR()(@w$t?XW5q9o#1S9IK(MwU-7U!j#(`N6(_!>YnD(p>63J!-X# zV2$yR^KP*2tb3_9s%R{zwpGsc$7K>J-H;>AEi5K;Rj<2i2SKvxiGtF8HG;swtO{=# zt**st`%mjg^9ln>)sw{)T}eONnTxH)x0Z$!)cfb@VL0~!7ej9YM%Kfoy22=dNU$*W z{XTqTj02%k`?QGyMrY;~WHL0F%M@v*+h&UVQvHIxBy);&eBFPs^>+dsKWLB}(seq{ zs$#B;{WiUmfJ*PpE9rkzFEDUg9XqhPFK5w9iR*USODOMA49Td$cAO~r<4Jgt=|LW- z>qZ(=my>$5hvOgVQ$Ko~!)xaTC=2#YV7Wl|@-ow2vM}*=FUFKSmd}{w?-iZG23ae) z%fwmeQ!gx02g|C90wG{u=H1}^u2!)C@ipaMwf(I{q21bY;%AHXBoaN0HUi-UXdNYK zV~}zz2|Xjb>URSRF759&PB6BycaIS{>e7o&M`Yw>xu09C-5BV8(Ka%moI55gWir%1 z@JE&OOKJ#%gte%VGdexQWCz3qv_!%3^_BT&tzvJZ+&b)X3{~tA3PY=T0_YOeY zT5)5E!b%qTP;ZAevQ%+3Nj-a6ztH0dm__l@GMWk6wFLV-8Cu!n``wcVr+pDWxA@)F zK7#vjH=5aqg|G5uAHX&e{IX&iR=5T%=QD;i@Kq25gX8f2!=wl(2KEKC_S{HrT|73J zrNxG_mnZBV8&d1xEjoTJcFN*%fsysnS(IC~b@U}PZhjPY(sJ~rYbVbnnzwl{D{cgw zcvGnMs@%)hV73^uj=FH)riE8wax68{i&$e=>kxe5%T_*kV)qQ|pqD37{Z8Z|Qu#_s z-XM2(X_3C&L-C8_gfac@>9`a}*N&iPVy-LqgBvIQl@}>a9kvZ1F7KAC|6uNYl`HkP z3q}_i&A#&NgH-(=iJ0xhjzNP)Y^X^tmY{>q=?qcdskWGu;wU-)z~vPQit9+)(=x}2 z6g|5Z?6m7PlelkzN~@M*l^4i5y&7Z%SN9IBrCK-|o}dn>2o56WVUlp$Jp_kUK>+FP zH6LnmjwYCi@fiB1*Z*WRXExLmo}hWCD-*k686A3HV>|{gc;uk0=X$Qu-gP7r<@?21 zVG+S_=x4C{W5o5vfkEDZT8XtTrtL9IB5K>VS5dbsz|` zjCggNKf_@*l^C-X;|?n~QblDVE7v?}=~fmA$;uJ=l?vI?rvU4?IBbTSO0A|5 zH=e|62paWK2*?vLJV*>q)%L6B&Ap9}c!>>>szXfH0u&DS#tu(Hvzw#*J}xS)opebK zK4Y19iS$Qizk2eM;*~_K)R5<~8HdPCi(P zmfcT<;%?O@D5#Yrkxno#<9NM4_bgZ#e~GmJeg^${w<=#kM~o6xH>4BGGcxj_SJ~$s zK8S99a~M=uvvj^vKJkqGC>=d8xPGxRhduAO60at>AjU%A8(Y{?mX$?}<%ZY4#|74= zxNTMF=TY|PD`WMV%>71-(ctTxd_4J0VJtg4DcBitSL2)uR$YVff?_sSVJIaJ*-(x#5uk;%U`(d!JB1RX%vha6o*PKQ}ke55vnQOBY*zJcO9C4hSZW8)m#9TyGoRUcr zdz$JY2Z>2HmaW%8_jtGJHPWfaDV?IxguW73;L7Y*)9OtPx#-eIVn3RCLVx!z$%2<{ z%H4Y@1e{#uCkhFB%`*Ei;2^QFz$$R|=}NU8OIWdl;Du-K4pp)4%6u6n@XK z`6N0w{wESW#GmR(mg@Hc$5~8(9}eID&_m__1BXcdN0$4C5)M<-9j!yT`oHP_A7@jn z-PN`I%Jejb>7 zLl&-Dpcm7**l`B1$$vcREQ<+`TwdW|F4$AM*VLRvj1NyoNm%&J1@GI zq;DUwX_1SgT@MrLRJeZ!4G_V6>(js$cK-{RV%9&p;In{Pv6cBYDdj)I#jkYDxS{YZ z9#?Y5Jfb|a?tweOCRc-XXPe>vjPfLK$Bn<2>t|gWCd6$l_hYh>&Idz2QN=#qM8Ye( zN|SCAL2yIi>p-|za4^D?RO3C6h!@qhC5b$fNSRFjGdurksGImJ4UhjoHgl5jXb-sG zS;@{bHmO0)Q=GQ9v3Dx5*sIk4j%xiq-0(s))sxLT0rc~lvE{*?k4MO;iG=FGU(-}e zBI3_VWMMHG{~++~L9484TkJV8uNO}I_M0d(Y5j16b#_f2zXzdRgj~Ozklrm$?ds6TS8_fP$_i3NL9VZ z+^AfxG3QWO3`w6!uCgdfZp<|Rm$wF-wd@Md?x@=oTB*48bK&Ztjrfx?a*;5u8RC+! z*1dl15Yh`v-`nn~-qxNHPC6zIb#hKxzt@W1_r%T$I>zR*M_c7q^jb203Y>L?4}6%| zuS!o%sHhu$U#hK!OBI=U)oD539mxfIWZS=zi<%1)VD|!o4oHfBD+*H(as%Gn>Acjxm79+Zj?0DyxW)%R@q=^s*-o5lgMBf3aYK$+b^k00$ z!I%ABT-w~Gl191HZ+OseLHpa7tfi|3xX6ZU1vt`Pak^l*D1H6YOf^*+$&p#;2~IjX zJ5zb~-WGc}$685Pjmb_*SxH)O2j~tc5VU7+YZtRF1GPwJ)VC=t3L-(js>+v{&hDya zcc5FJ2p1Ck`==?N+zhL!1%;wQT%2`42K0pu4+`Bbm8OIq@4-Pp@ev*SGs;M4-9sE^ z)lstAkZo&u;H9y;DP@bq6;dhl)Az@$7Sm%E9dh?MlLLfUVAcJRfi7maUKJ9Z~k^)lRJi^K0j zd2&h}3}*!|J&xg<#5Rg{d{)(RUz50v=XWlviiDJzt!|qiQ2^%jUG(TA@10%Ez|NQo z4pYw&dR)b(I`HgXHl6DTN$Z`|B#*WFi?}WIR+Z0(LXDD~fRRe(&U^w-Al@S#_UdTP z>zUjjegmUE{MLl|Zl=_z_6K%>Ic1P2$(T&CBj6s1)n#yL{}q+7u-wz$tiN6-KK04k za(=!%5}^9E#6P{6Q?}~2fBJ*2W8-Ll@&2@TdQ34*HY&}cW^@OgYcYKw%mvdHWNn!d z4NXjZ5D;k?lFlYF6{=ADsN~M5G%BIKb(@c9qp7;Ww7L4&M1Ln$I~MwY)xkzWwf!@M z^RdgEjty!bdAvlt$2z1yEqj5@C^6J4XQOL&qQO}0Cyg^`9~V_QkT-*t%g2sp2L;|x zvfkkGkp)j3`(HwpWr{F@TCh08no2};oV^?>(BjaBqt#(f4p6kX19 z*|>9TtRkd%FifsEcM=ym>oASQ9tFT9x8qL4)&OB^0(tLSG&_u+%{9x%&F7C>P+#(K z_D>+nuB_sEY6el0h{Mprg2W=L9B zok3CCJ8X>quF_`~|5QpfgVeI+X6$-Q%DJ%EAde(9=$C)IpVp~&`fqZq>{&yLT=TSq&&by;0gP&uTAla8GczvqV`9*qu?JN)zujd_`k~_>?;0#YPTLgUuhtQ= zaZhjIfl7I8eA9^N_kd*NMnS+uLH)u-RnORPu?WMwn`Xts5FZjJhc5BT={_YaA+ z;~rf0Dv!R*Ol^ugn38H_HZgEO49`C$zs4f-zONO^y*fo`|=8N^S&9wV9;R4>U_Uflc7L3ee5@`Q2 zpEj!|RZP;70ovCb(LKU`IiUU8rd?#l(3jz#wH==~!s*<)RL2udu2c=gbB#*R+<%;c zm<_RX(&rGgN_)`T2@DL%Do-E!LJJiESIiKL(Yel5KsHu61!Dg4?TN`3>;D8j;T6dO z2DM+qR~=4S6|1`Fe*N`sWa2*g*2pK*Z{HFGXT-bn2?^`@LTH`y@5~c+T%$}2i<*c% zq8Ad*;TMhvif`_*hPn~tx<{7-nQV+_BC9=-9b7?vuB^Ol;E73f@$s9I5u!{owsLZB zN!GKNcXp-;6SE~Et0Pw*!N=8f%NZ|2UJn*4HCi+$UnY8pWjU2;OX;;)(DUF4pFLyi z5If-))>3U`SKjSR=)-wKgJ&o6&`uwt(|DvsbKCaZJ8a6j9X6tiT$$opZDa#Jryw`4 z4=bfcpT)b_rR+mk*MD^Y{#zZg|5Rd@F3gLplr47P+R71Gkloh$CAq+Q*i#U~S>7;kQ)frC)E&dXS?7fFfN^IR2J z5oLMZ)G8p)^V|bgnwld$0tW<$*2}F{t}!n8GHE zyx?Hhp?li_^u%z}C~%VbMJ-|01Uub!s(5W1znvNIn%Br5HT)}~c`BAWSZD^+bIv4j zU4Yfd{c7kYcV?3dJ2PuLkmqZ+@Nj62=o!xBn_9KzB{`8nuevka$4Vu0ZAwSB4^l_0 zJ%&sle@GCMw5Uk8J@3-)a&YjpxblC%bxf0boh}A7bQG8|i_DwK?#ZeBq|aZ4_>d^% zHgW^mSbx7NMT$Mt)6KDS;riaJo4ozO#$1<;8*Ir9d2&70Tq9IQ=MoZ;&PTBm6WDHh zkt|A0a1AokNdC0!!`{8^@ej5-pt#)nGWe$*NRt~@WxP>e9C`HX&Cx0K z?&Yfvy`EY?z++0L%*dbl`B&p1y3Qvr4h0GfkGrs5-GilT~jrG1qq-ZW$J>6h3=k+6guHA1H z#f;|hVy81O^*UR}^&`qP6Wf>&Xm>y*>Ed6*X~F)Aq$NR~2xQ;9nk@emBbISF$8B|H zAYu?67j*ST=s+Zep^XTloHaq4ZQ893X$HzF+tp4c;M3;bZwyPb@}E&Qdt+0Ja$*xH z4ac6v07L^j7KVHhobpe)6RomcFw~1(m!ejYC)PuXC@M}kAyvICe6eE*XrX9*!!+vb zo?_=6eJ+!~LHH}~1%;37DyFRtpDLxxt1nbJtAq@+gMN8w8qHq#D)gz6P$|oo)bS$z zD9?zp+rcoywb8W~@{}u->>hxfCWh+5aDpnE0OrSo0N8)K`Jdm=8y#>a0F+ zM6Xe1J4T+Ic-PF?_q{)0`~5Af1!i4Z4GloGgrm708*@x`9Vs2rJ3nBdX$>*P8ZfsD zdvV#kLP2b0opL>1vJO^jcjYEI;WlY;9qC)|iN>@FosRH_j zI!30$#ap}DrPjc4&2Zw(xfl1L}|HQ$# z`R|`Qy5CtmTZRJUwXHHq2*~%Q#TDbpKy8orLmkzv%|~aQPMi_kw7#> zD9Tv6V{>a5z2|!v^$yZ&psi7=`|N8(hAsy;dR$s-DAR;%sogH0@rBD3-vn(+e8QWL zYyy?dp><&Pm(VS14J}EWy*7O(L_RYN!m=6xZ&R`-w54!#gUBI}e||k8yfRd-NdSp_}J9 z;+pP~P0&`coKO97=HHE-S+T9}?C5p)%v;#fXT*N;PSt}q&-c;??6QvmBPx1Kz99?5 z@^lM>=xYN9TN5T7(o%*YTUcwqh;@PSLq>(b!)er~4cgMvp~j}$L-S%KfyZ`Qcg5Bs zk#SCv2M@z(#p098zz#%1+nsLW)_d%$6KQ!(Z=bRLUM_xbenMm_LWV1$N{6BFR2(`X zzvH)-lXZfF^X~BW0gRf1n5#>JS6!E0bT^1kTzfg&u~%I=w%4=rAv>-2K%%x$AzW;G znZ6MpW&VrBNr{2zRMNmntrau{>ndLc>f?*}aP!HQ^pRtX49xoo%?=Rl)7|JT_|n)V zsm;-)O3PSz80TX@M8L#9L%ct)oDdCqX3R?NF`-YT(+96cR%dXzhJe(1hrMF|0*VFR zH&Dmhk-3pSK+t z8W8~j>AfpR4IM%c*Z`%fG^s%#lvL>?bP-T`O9G)p3_XM%df?=FpWohRzjO8 zIw8zSM9}pR&wGJ=ypZ`mdGejmO{_LNuTjW3c(=3JNAUzR z&*De8=OPty_S+`c(bqrYz5X&Q<_?;-2FAx@_7hY7A}MII&)w2!zt8_{9D(pv8(!rV zH18geL?%e=w=@?`aYUo(ygN^8D9XoZDEAiwvz?SR;BFZQdl({YN8qAv1Q5o4hu8Mb zErZud?V$TFlGwcrs~j9lw{0QD-6_EII)K$N9((r3fmk&4v5U&lmn(qr7k!j+Qu;xs zZ?{f=x?x^y=b@a*qaYM}1cV)>2|fIax?pK`mh*I2dRtf@pD z|0QA*--lb)+WJN@NIouz7%hI+{jTw*5QaUhQFNO zoy&cH^7r_ve5w(i5;ONci&TAn4k<3~Zg)9-e}D3Xf9zGK7c~Cy2JjM-5$EOV*bs%S%k=fb zpg!5SUn%Y%WyeQ7w#5%z=7ajOjw=KfzB6cJXj#`rkfeO9VEzqvedKqgWE_oP|22+u zqHD-eQ(|tF*dMj++?OqD-(nc1>8xav>Oc8A`?`Ws`1EFpTG*=RlpmcRtAJ;0%9jQF zhs6cWZm&pNMGx$c^C%yPZEfB5>=IRVDV3c+C0!rs=!>h>>dAzWAk9|0Cr(KjT{N)i z!t#eL!6CClR!hp1b!HiIYax9Wu>F%c1&EbpiDOwa99fi?4GCoh7R$)Zy<9aOp6AS_ zlS>c6mz9KU&`hu3@i@&hw9(myAl)?C<=3)~xhOcPQVUid?={lQ5mi`f2q)k8VMBL9OO$GYZ#cDRg>fy>*ET*t)LiF)iLD6PHN-E~~~CQLg{nwqn#fmNOG zdj4iBl8JoeCYyx%`Y3SUTd{i*^0k=r#C@|kg+}{+rwf78O0;29vb1EZ1vCs4kIGi>zj}MVOKDyhv-&?}pqE_<4u&>79)GM+EK0gR< zR--7D^GXc9pepEYASzL9Y#qsICH4$6jNfmcb zF^SEm=xo&txh9>h8~k{A!Rq$hqCe`K!Wn#Q-&PAv;ki9Ei0|u&@|RPPRp?`ZKfiQs4~3u?Ye#r((B`sp1aG**vGLaK7a>O+1tf<=o+^mH z<(}03vAjlF7&t8N!e&Y%xB~GkIc4(AHswuWu0`+d52*Ayz3Qh+qj!?eV1`%l->)2Q z$kUq?H5DzGegG;{C8Ou(bioMPwguZY29u1>_sTXQ?GG*a!9AjPlaCnECmXTUgUmD@ zU6zuG&`g%S6;nt3%8CfEK44c-ry(l6a%vV!W$`~ZfP>#sM}I`U{#0}lb@CX#VyZ{1 z^Rf8gJObL=kb+B)d+TIh>_{H&%lNM8f;V=C++C&|HfXRD^Wjeo*DsmD+bl6$>+$^M z35KG+itJ$h2s7r|!H>Y$Zlrm`(dj&!x#S{to~<8A%Z^>1&bb)d1UD;E54T>;)a2#6 zq(~v};{jvTAE&rUq$Q-@rc@^2m?^8YX~J@O_f4SJ2Jj%(^V%osjq(6?^E!Hg;B_m) z<(WKCCv!3R)GJsS%pTkd=Ns&2_FbN{?BP)xOvB+3aW9r^ok8=jMsN$;J=?$2{-mt2 znH6FAI@8@!@abbIhLmLSSjwLUVNdnSEiriux^GnV@TPxlVnVGhQ!)T3X zkrFqit+^aVCU`_A3T*q0g|*v{9;Qd@M{LK0s2UPz6;T!IFsCys?@doSnWfpbLoDk6rLv4$De)GExYeVw;!}pHKInO2ezxN+yPyv z>n6fAr2&O&Zv^s2zjIeP)I1ebh&MOz+QRzmXqd$CR{+&>ymm;-U~@F-ev;Ul4V2c$ zGt|Ih|B*+0-l|4{t-k&Uh>@#fH-(6WBEjLMp`2#G91G9KA9TIpB~1sfP!W404xo!vW?Qh^rIKvZ-F-2P2pblYZg;-(X|$=&XE~`}2>qaM50ayp=8N{5=Xo(Rt`o=^CkK z#%zBvV;BT zg=Kh)9M>qJSpvH>Y_dh@bRQMvzvh|bvHO_*JG%jMdZOOUwX~(5YHKt7qAIn1)4@_B zFR}xitx)c#*b96w3Q=`*HNcOVqK8e_qFi&`5Wr+osb^=gJZ+Ti%;;El>Ai}nKdi&h zm8W}MV*HX-sQ}=3($}AgsON{zaLSfBkmwHrav9*xXI+hfYR&rg2y4y>OM>b~$=#Eq z)Y~al4~~xE{*sY@c-XvVzd#ox(7T!2Q^wNsjl2gmc&B@f$xK zS?_vGVVjbjo-5}?=vjjvCrUP#K>i>bU}>_Hv_B#lM$59uDNwe%K4fFFqw^pH=fc55 zSwob%(u*NU&h!jZanTO-;d6?Dt`}GQGJGU}${p-D(3#%;m1pHPRd;a?VhIz6ioqZA zLHm-up`e!^TEkX8YH#OlHK@_Or~b^0fRCdj>oEQsKJzk?3(B7UQ*qGfxad*f?c&bT zlp*C*1oio93&$#c9RKhOx@l)zo*9%yA5+T(jtf{W-HV8;U~f3yvqD?!=_JSUg!ZH! zjMkuJGoo#*L8ZVcdry)~Ojqy*;k@bwly)q*s78(|+@=P6QnKF4QGrifcc0pMrv2dC zSK=lAYp0mZ&#MFZWGhOOab0WEa8_l4sf3%M$Z=b|cSycKb4@18pN!S_iRNA}%O0~t zTyHb3+%BCXI;AHyFx4oIkEvP3AiJeF3+oVwTcOd)mg_V5SXn z(lD2H$)UqBLQ>kU^y158^FMYTR@Dm_=WP-&98Uyn)F zKDN34sKJ$v>cdL`Y9btq8+4VY5AC3=4Y7*disIXJjyOWFZ1J4+!JnqmpmvYW17(UR z=@IT>GA%(c%G}Ug3v%n!hwKLv;}>q~f+e|a@7!N}8GJ9S5ND_8wr`kiHxCP|hg>aP z?zp(c^5*a+ztkYO-Hre(@M(r+I;|)JY=O<-cJjYg3hg~Ce*HCVE)TwMEH&vDYaC}a zlKka)P2=xC{Tm_q#4ekOw#jIHLju(>1>ZX4OLU}|02&Jm~ z5V>}A3eM71Jy7O5MqLTpZ^r%Sn5S^Xp{{zth)Rt*h$?@ zWF%w7qQqY$Jm~)MX42g#&!ZNgwtW^wwtacKEI{e?lX45R$s0Y5obV*WYTe78(~ZrZ z*~-JUj>?%w^J845*WKaiCO_n{bv}(`zOMIoDXANs6lnqwA`1<512X3!Xc$`#JA!?3 zbI@iQHW(FEy|cAOkzSFvZyvG-QNK_|J9C*I)ex%9r8U#bu11Y?UlRX*ZSrxuZ^Jm$ zKtVgiku<^bW-P6uc|H32TJX|)F<(e6`U`w5D$7;B?E4kK@QRCtxU|L;I~Ye0Q?60m zIt#B-*XS4PJ4W1pMA?^9yTWiX^$kG|f!bY89m=MGE7<295a~{6jXU>Yc()zB4h*S~ zlY=5{jC_Pchh}7vCh@f=PMj&9f6nud-dC_~$XgilZ61tpG^l9_ZsR8`r@42rSGjmq zD_KeR$A||jDDCOlBg3Sj<*91;uFez5Nf!tX^)&92=`nr?^K5gQ*h&Yfh!Ng+pchjy zc+C`F=e!57(1hpYJwCj4^6_sk;sfC4yH@l=bE`fDS%eFs8wJgF^@hKDMp0hiMXGVJ zqtn*xhzX7!$$_}++!COa)b&dtRIA}yQ|XqYpL?rm9b5EVg*jO;cF^+|>VBTWQS6)R zmEg4&vr?O`NBC?(+Olo_E;dKOxdMM}M_Zhf&4#0VR+in+(}vRyC6_@zg(bzrWRz^w zvutGtqE@csvtIWN44vVsHG0p|LK?9s=JXS&yY02Wzxm5<`_{Xs_3ii(8H|(Sgspn{%pEFBj14}Y0?fV&GXytAJf_Kgp)+oM< z2`VNLd`y1D3aE3hSjx*Y&h!($vFftBLCm%bTYKXc8uw(j5a6)gpKtn&1e$0jQ}n)b z7&}Ys3rsVw@4qedd@#iqK2p@ZeD(@d$0)nUmE%(I^q3T3ORCA$?rGH5lPPeLWFyU^ zt2y-e)YRs5;T!h0@5;Hw2~_AE`cC=A!J8?i=YsN_RIk3FUp9$a_K~`6Y%}wM44*(y zD|B1gYAim~PQp|0`i9Tp&Dh0{{4A%+4nA+s1xiu8$>(UQ}^GRI)+KIbRGdrz{A7j5y1pO!lgv5y72 zHr(RZGT56FncJW-Z1^omMVIi#)RC@pV#8H_lfPet=s%O?EK~h^&#n+nf^+)AVa zmZI##H|)bli59n~>7~zY_vO4xN5r8}icHf{I}7DN*-H2l7WOm62F0(pYQ3G;IpCkB zx3Cl?mj&t-wt3#P$P2DSHMi7_`Xf+)DV7X3^vJAyC$JpM&Vdv_TejFsxHY!C!g+%K zj?#V&T&1mJpru?&_sUtfhuJJC28R{E(X4@ijN6^dQqj?(E~`1%HlkL_w1SqPM94HV zGt3`2aCLVNQ}S463aM!^bhW~g4gX7W*E4lh907!IhZJeieNmqg-b*}BQ1@zQ!@_4^ z2|={_OayhapqVr~8TP_+s*m{hpKZ>_?2*Tv%HT79YthB*`u$ozT`4;D=H=w`I?T`) z-*`_NrZuogiWtR=OWhG(q{L`O+%n9qHdaPfdd7+q#jrvhS#fG%k@rE%Yrmm&*;qVz0{#PQW>%PoAes#8oAU|0KSI% z6}PJJt5K@4VxRnh)Lrj%z^P#6*1vdo1OIN=StPBy0f@{Mg|NIZ(q+g<|`e9uE~&{r@z zVv+q&EP(CH9y0&HX#;Rm-FPBuc%*Gxga%0GGo--q2PU#lKFey6G9 zN};^2Q?pbQwX_owau0YRsp`>hf|UAc@wuE$&rbQ#v*G0J?{4h3i&7r_MgQm|gRtaP zMAzyySnB0&#+IPPFWm}RR2>zwOs+PMzCPt@Q)E8DVj#mwl7v^W@O14RDB65F!vtez z&~z`AAJCUZaEEE1+ZD-ng78(uL9$yAwbpkJFZR{b6Y=xS>KHV4<-7Jk!h7$pK270^ zjpDtnkE^~5Ose9b`MGR>-h!Yy6Pq0l@kH$UqM)ChXW7-n1J~c0MTrOVPdd`^n6+Ng zb_!>%al7>P=sWEowCZ{o#36$IFwb38=5v)l)KxJa_hg8j`^-eph=}-wQ1zCph*vpZ zL(eA))mJ2?yxOx8_jA4AJ%oNqk5&iN1gWi?{`J?PJ*&m_**iwNK*&(BBVeR-UJ+sakCet)#^l`rX>fvtsc;$9o41DhW(4kn#1nz*e0Px(5GhA*?IN*!1Yf5iT z0-o`;>jF$48k|_QIGn9jGA-(tw{RIVS86H;z5c9Z2x+wXlm|xi;r4tpt<=enYIq_s zl13HDLJLvQ1ywe_2tT$j3QL;c-_NdI8G9xy6Y|bLJo|ca{ktXKMc1v12^4`5AnA+f zn;nrZ>zmnP59V~oH`AjB#g<=HieaDzQO!LpnmA)i_@Y|KD(-XjgNpm_`FKXwFZfC` zF)=c~>t+-=PrDl$gURor5ueMyo||5Oe>b}cY8Y-R1=xDGiX~nW3o_1??fT?0a@-Wd zHOd65x&aalZ*VwV;bo*OjeWUkeeKS%Tx?F)A6OcyY$aI`A)LGB$oVEvt?J^qqy4f% z{_8py6rQja6|{Ig#{Ai*zvp6c^fIz|tOsPn<;HW4L4dFi!zQIvtUOc9zu{O^Cm8ia zP(nxafH|B@}lTJrjCv|o6bEO&UEY_2?qAw)TYeqqpWN`KD>jWq_Mq-pPZ^yNy?_SobF@kNUc z;v2X7tX8~;3-G;uH&|a*-Y9YZUT6jT4SuouB=IaD>-Rpuq?vBh+QVG`Otp%6^FOzm z0x5p9hCg4Okm6v@8wC5JwWfwArD-u4?wM8XGi6pCwwh}ni<#G^p@D`iTDy%Kc};=e zFNxPvc&#j(Pz`$IMwoA0yd7`of)Xm6qTE-NoY2ay0m{d96KlyK;B||QHAC}CE#Jt7 z!DWP`k?DvTUm{~GX z?u-%FRv$_}ELe*rd3tBQoaWx-PodKR|GVS2c6a09Ns1+a?p;Nc9)l5FeFQj zQ6cB}5|$!P?6H;368rNgyxZ*o6Tt|2Q0xJlz*l%zQ>lmMriX6x`V=&Y;zsDm@M zi)&U&f_SP3`evg3S(qf?QFv<&^NS*j($IXObB{_UKAq%|2U6QW5{6gM6_<2~sY@yw z@5CzO%(umCX$zLVW6HvODw|P^LOqO=zb9D}tjsrE^STa6mT6K6!=z(>h}xbQfLqc^ zufe`JP7l`gAkvf!#>KZ&bNKZH`lD8ZMsAR!`D;FTPuS5{SLS5v-%9e!R}PQtU;Ei@ zj50T~spP{&qwJ);&A3}4ixm5*u4NIMPm?wlJw6K&S65tyj9RQc_F>M~1bJViL%}+> z{QLq~Imr#JikSd4)3llaC{%%|K$pREFM6JIJYf?W!W;M)kY_*3QvJ1mZ9?}G{)@Jq z?;CKWI2t6S`<@#7;dpnD+0%t~$9HFO_234W;7Vf^O9KHMkjjp9n~`~X>Dj=?U4xa% za^e9M6!DfTA;OU5x;NL~7%$5*LJMo>7#`2xobt<+rs9~}{7eoWMiW{r72Tp+(<8K$ z=)$#miD90q#}9pAz>H767>!f~ZB@=eJB|FH`D(d1J&*%hU>OhNA>0gX#!c#5cvB{x z@=qvkMXcaSrtzRw_p(Jf$&t<<-!ooaW*cpO`bbENZs>0Gmz5uFw~n=D2s4H}x0r0A z^ellIobOZb^Yl}o26>vxb8ksgc~#f0-nfAk`{L)w>wwd1@DRn!+S)&j<sfNz|2(V+u$t;tNm@nCA}PEh^;a5HLq-FVC%&c&@IQ(x^pm*>AVz6m#6|HJX8qSBDV~ z4_f=|bU2&Otti;kB^Ki!pBe-x`(%K{*-&=Z5ec)rz{4og-hE zjBpAAD*ukx8@6Iws%LcBDr_F;(?P~<%w>h)9xIdq%8Nsl-K82SM*_8}NIdvHcKWP# z@Ce9Pt*~^O{&?i>q@C{bt8v#+*M)Y-;P8!hDMq}~so7Gc{iE>-eTUetDNtlMZOS;e z1a-9a;jWhI(PrGi98_JbYGCaaSA)LnY=Ox$@fFNH(B_4dMNLD}AZv)?^4kbVs3|F0307d* z@h6z`2+~q$qZDY9)6R*dWC?F??itEZax8=NYK~5MC6!1{IWg}>Cgns%sMqRm(Qtg) z{|3uYsO>G8gC^H2yP(_FkH4oJ+OLMv=;VC7NWdy|5@1_BR(Y_|c^^dhwo2qa3-(zo9 z+^^>yCyO<0{kWaI$LPGXZXqreloANSfB3ZX2pyf*j6KR;O@NCX9n z4jEQIVIF?y(shyrBBe;#!>`&OfD|jWJb!wynU9pg!N6L4Op%t&NY8o?IeZolVm3Uz zhhHw}fgC;}Men_AJFcgpw72`+QfWg}I`00M|r->vov*Cu($Zu3y^(Y+hv?lIL_} zh+JId3F~>(HS0nKtpP`BaM^u;%8KxOR|$s0GXwMvp~S?)s%lrNxlWlm!=n!L#Pe`k zeqb8UpE8dA)se@>7@#cGH`Acp?nwGj(7O)6;ggCS4NOL#E}B^WbGV9!;?tIk8R1>9 z95Ux5hJ1O=Ner9Rv-9@u(Kn({!4l$v z*W7X``~ZbZm5?p!g7AccH|bm7@wQ=PPI&w`NYxRi1u3lQ!P6!l#bK^5fX4pgquX@v zjGl)cnA~xZTNB$KE#Dz?YE8~`#s2~z^08J6ZB-FUr)^y+8&lDdJdfHq5GQ`lhW#79$w6x+C#)Q$;_t z=v#YNIXbGGxnB_Tyep8+@ z1#6hjgX>4+<~h!Ziu>o4G)1(a8t3>W#P-ssuO_o1Nb-uxRu89TCsvFoK=7u%`RcW< zoG*E4P~c%a=3qOES9YbbVLKVfDlA+T)3ryczWZR}!2kOYW;`0uR9L~KT1c2jie{W2 z7S$0{*=TIG`&4|7V##LPFW~L?(EO?}=XC2A`48=Auok4>y7b4hg$FPD8yr0*GCjL_ zIXp&xE^HU&q*R_R`)*-4dd4ss-oczl$pS@V<>>S*f#ywDRi!!7_Z(}z(ji~Z?@e?w zz`xA59I#s8gDi{%^2Hb<@7z&NwEC;qySNtjAUcW>DzPcTWp;BOn(&%2l3m@f5MO+r zFPF06%J|m~l8W;vX}}Y&wO}~WAwhU&t3^q+EaB-%b?`%dbJSi53@Y3oWh;`M2W$5X zCZ!4v4Z?NvrF!Q`&9lm?;kchy0F4VZXXl)%x!2a3%0OgXbh!^*r$sc=_jy5=s^%BShUpf;h}<(%tBbR#}Xld2T1E#XD|VsrKRv87CS-Os(R7i#8ek^(;MZ&cqQszw@ge zUc!?CqiQ>oo4b#W-V^OsIIsAj3iwCO*!0kq^>h8iQKx}`siK#CYRsOfydoQ3SF{KTFNc< z)pCSq!d!qqJR6fMxR%m6Q0AFG1cRp1(dh@XPiO%ueCQaZDSGp?0z6~BNyRMWdhu-Q z*P3CfU?Yq*`#`t0udActG!v?Fr`Q$>`!`m&AltU6_!1oF^$3`BW9>5+iBBNX1QI3R z&tk>P71rarq~YW9VBbx#s^DD+z_u>)vq6#4ePyeLvOs-k@1X_6Y=qo=fO1akZ=Q<; zm1n_Pnk7|nhM+*ksW2-!l-iz?G3q~9I(YZ0#;w1_t~BQqP@_Ly5qDyB>Xm2w-@P2m zcGSMCH(A&WSabbK@MSLrSze8BbCq*JK?+Or_o}T9PVqtJmyx19{2pwPyyg0Whd(^$ zom4{ueQ^eP@DNAI{NN&NStmu|k53ZyDl|<|aIr(9q_LbmIgX4gZ&+9nz8&BO}tpo*8QG|X7 z0Mu)JsjT9o|0!B_jy}D9&cU9G>QF3LiXP6-o{3K=gBBD#VzvTIEx4?iZq`DxX)~1Y z_3>W^QX>zhc#T>FZL@lUMGCcrmr~@nXKi!RUg)FMuA~=&Z5|w(gIn6O&8TK%&}1I$ z?V-g|-U+?fv*9paK_J<(luFE&5(1y(Pun(W=pG(FY*w(zha4}PZP z_{KB+{oydV0Go(cx%hR9|BC=_w)(C+_0*gH_^7ETI$_=hx?BV%Oj}$mJFr-xkBFIr zsoxE1b)gaA#x!ff?YU;uoUaB`8EWzU<$pAdOs{mc^ne^+B=S;ZZET8U{?DIkGM%4Z z&YZ%!T1mjqnt^dk%Hd^et{_B;7%z?Y6`5^Gy|H(QQH3G=pAx;MtLnhk28N4jHL~lmwlYWDk7C*i%pGz}qqg754i{{oT zg|~lRvT=+m{Jwj{$e-?8C?kKl4u(H+_UNfTr1eDt3%L}Jyq8xuh94z0FBTX95q9M{ zH5;Ag-L+b(e}e5jbEOS@QT0{4JTvEQNO;h`;@kqkCH}>ot#tHQue3IlhQ*Z2UoYk z_cig!;2(^o#VPeRi(jg>jdt+aX01M=XHRT8er(7x3*vZNMfY&G*xGq@gYCjMU3262 zHu)iW2lBE$t_ac11S4`V8|e9zF13FXHPTet<)*pgcGEE?aTU3juq>+ZqvTAEX?l&g zY1sa27N09cHgxiAgA4p&NWI--S@#01fxI#z+ZpJrjEm2BX|C#dP9uQLj4H3F%3aN+ zlX`~(!K49&vxjU;zhD#7^+r>5+J|yfV*``?NQ$Ny!dXMJcEF-@<)P$JB5U`#fgnq& z!q(%VF+gW!iKN2s(7rRr8V%(gY)PCZrrqOdf5y($K98v`EBa|l>2{;k7ETnrs-SD- z74N;MVEHE4dRVhd;a{DyGk>mpz@ci~hX%s3jib6J@)2}p25MohwBW#)Wes?*#k=95 z1^+?pD4C|33pRW9lN)($+(_x0+W0X>QK!ExloSI@-*hh7w2wk>F5zwZ1OV!nX{Un* z>o5PD^ztW7v8>Cn1l^Nlop&(-XkR3|k!^_bYLlp~-em>uKb;CqD#xU!JqBm0co1J_^LNj-sEKt2;#<68Q_oWUvns~*d4g78JfW)XRO z&6R;L=*ANMvHqF|`rC!T0p1DMj&Sm%x72meCG=HYuHyCc2W9>czy0il{B%?`Bc)fG+H%k~;zn_5Y(mEbJWe_B9(IBp792;!X*UXA8D# zoXC1j+55}erg6HycuPQA)_n?ElbxKH4)J$xA-~2D_oob~`{2@tQB%c1w#EJru6@l$ z(rfB|J2huGL6%|fZT5+~eSF^GqUzk8M-fpIur%gzmL*e5*=$~}Zk>z7oaa+_1d;|s zEMIvhQIJYWk?C86)5vJ|JTg6sR5I%Lc`hR049@Es{Nrz=?n&LEe#V-P1a7v!mW55V z?C4oeJ=a`JqJCWf4h&ezph zZTVOdx2fI038NXL6X(kbr^&%Iu&oh!KGh6u{wg5zsEBPBVUbPC;%@P>h&6n7OSw~| zTBml{mFizz_`$nSt4`j60mcaisA^9Ds%mR6{n93L1o-RkM6I3>va5?t-y7BA#G=Fk z(42Cv_wxA0XLN2y1H$=R+6#4*Xa2;~Hg#)Vx}Rp-gC$ABWs{abtk^N)!u}m$k(r$s z-Rya**lmcsXq8Xyt!!-(gn9F@TXAN1(dq~?>5n!pa1@XtVRDcW59U3RTq?OMOc-r@ zCrb=kFoE_~*LEcK=}uiPTNkKc0g?k&VeYDH$t=07D#ZDG6uhgKX;8;=OwsB*0W}y~ zT6g`Th$3_HGE{3ygKukc3vGg&`{t_w5z(xLL$mdv+m5FEhs{@NG2FeL!vM4MyF3#@ zKU=OaS|=cYF8N#WTjs5bd7~>ttQPwX34n>tlp( z5WLumuJPoV)w6RdxN_{O1i5!HiV2Nyd}u~rb*<7zv{^=>bq8l=Ie0z1?_g1no;eeK zD%5D)Lx;I7fo$A&OiR?e<#Eyr)g{e;nNQoL-laZ}nl5y@7WKwCd*HWgeEiM>A1?y1 ztJo=piP8Ly3b@P5<*N<@x!zVJ-s8_>*gd5r-iInho%))$W+RU^=uGNf{cy2cR+0kD z9ey0cG4&-SDcCY0CtLK6h;4-0p@wb7tQ9(}+j7QD)}&xf-I@0YUhR}3wg7H0Yrykx z<-DL>3(W8N^)nK&JKhWy^6_;(8tsp~Y7f zF^?l;L>5BfMP>c!ounXWBgAZ_lTb3LBc5J4G4@b`7iNKQ_G}$zGiz61T{vkl5bY2Q zA*I5m067vqkFN~@h}nz#ZofkWY zsDyqhE|*j3;8-$hRul!CG<(p5{DtC?F>2?{5i!cr4GT2>aL@(58NVXnF{-3U+}hIO z7uhMpP|-MD8QVEcoaw0Od>RXWYju6k?)Q@1Zjim|0-zes1F14V>IoI!%$YHJ;k4NiR5{NHx}gc@F}>+xbFvf69f7{Y2^Us5ytEq{ zE{Wa-+LhjRFf^ORc1W+{t`2o#B!2AWpneeQIF;-8jShOJcECJ?O8qclv4CEI`LLgC zUA6fP0N~pKS=fV2KK$z>9Qw)cgM!Ms-oXXOlOhxJhvci)5DBC2=UJ=iIm0#~3t}XJ z_O0|3|Gt;UNSrj@!T+U%RMgkSk0;dYRB2QgIJ=Yc?BnE4w>06s>hK*_!jY_Unl-WC zq0!pIHR0norFfD0n{}eThA6Ly&oz`^q#A0Rll=Ak3+1Kn<>ryvu{+Pip>y#SY{MtI z57mb1*H>n*+?dKJVyxj^22QjoYj(CPh5JTgwfx>K_l8P1GDKcPRysev+`02jsyU?w z{j4*FZdzL2=T=%iqiA7NaGGNK2|OF9t6a19@*}a4Xrh^4^MTE@z+doVi)!EA9r@Aq zI$vS_`^lPz@0_kw@=r+J8#^ZJEuBsb?>x#8wk-rdeqh}_0X$|id35IR?0$@bT%kn6 zHdN(Hnzy4si{An_bP|u^lT48*N>(^Cj?6j6<8c zn>*~-xsR}FeA0=(!xo@IZv72qEKkGpvZ0Vg9R=Fwyi1=~aaes$umaC89 zo)3{XI<83qa3U9`W;QUbBU_nql;v_sB=z-+2v~+&caKCqa@1eC`d|~I>)@>)fWyWX zu^SAefmsDtwUH_ ztT51rZx)UAoJv(rvz;!q{FcAIC_Onlj%nOP`?Kt7UU0m1a-AJ)!tmm5rJxfj6HX`Y~snck;yU zWb&vyyk`)if*t=>tEcVGt=kALkvm3*itB`!c_|A#>$kv5HRuiuaa}1Lyz6>X@4VbZ z>C>cTm__8P$jCF-h#lC5zkPabisufjl!<(G%r$j26ZUrnLCp#yr=3NCQJfm1;-zkI)tYitRn{I$aZu5 zQf);xqAEt+wv9HTQ0A)~ZK>GNQtL0|dQv{D@*(RiibTGUDD$C~G^qR~#U{jz>Q1Ib z<3*-gl06*-&_5G;`;Wu|Fgecj0v^Oi3+Ry@=asKENc+>$oG6BY?PFT2{%v3vr3EQC z*Ph*bP{XOakkmg(^x>zU-0+`CU&Srr*8j!K=2=t{(jhM53;7I~c+NK!+de)&ACLv` zJF93j%N5Oncs%Jqh#DVme&>7BYeott%Cf=8~0TG zd5Qbx$il%90NyCWX1K^NByT^anZBg*i@*>$s>U>V5|+A^kA z1^ye5j|JBjB7DY6(x6%0hK8oYhC2-i7KCrdj`4hN9}$vYbViRLN^?BCqkNLxT{Ybc8!(?)PBwO>VbF{f~ahIgRKQy|VJ1D4l02srOf#p4|x7{52l`bLG^%W6xmCtIQ={qw}^4B17YEn!is>THY)&Ffyz5-#elC&K&Yz zH^k#uQF<%M!=Ue%jfTSiJY8S0bJ(9aa^F0{cJRkJ8eY3lUNn~43n^t6ah_+d>$imR zS81>A!QvUzCO+FypEB2Ob}MDR(dlEke_QH|H6CZbG?}9KHbQu_PA{Ge|6dEGlMGPwT<@=yT@#W zYs`yIC2uq7toa6bbOb(%$luoh`s~^M;>2$3MuPJW7k_^T5hL55d55~XeX`IDBi$P& zikAZWB(|z)6`IL2`J|fp*PO)6x!WyxZ?oNJ1fE+O9|rE3Y7y1;+Kpvd#S!b z*ooUt;XMMlRvRxpu+dp3A3_uJ#x7YRWp;XCImg30LWeIU@@46&{QENrn)<*6tgJ+`-pWHY?w}8Q-{eHikFzxOPswx@xpqK-0YY z0p-^Qh;Q^NlhL?X0PcKfxyE^fwEQu`H`-2}l@g%%=2xHO{XittgTUIef)o?`)0$iv z#b35EaKX$k!78RkLg}5HOwQ%-l1U5Bx$>*#f416*THJc`<(oDnK1G)`@h(m9k$zGV z=$F~SyBO#K5Ayy1p{|f&EhQ2}TIN1=*V3JEqw7hjw{i`5`w}wx(2;r+mJ}S_@OXlB zY}+80?aje2|EOVJ$@TxB?yaKY`kF=G5CVkY5L_Aw?k>SSNU-1@g1fs1w-78iG#)h2 zXmEl{l|L@!T?z7Ls9pl_{9&SA{=(XmWvudrHRll0Wnn~Q5Tgi*XI(_39 zcY8PAWDWJp=X?D2Gt{E!%ag#R$4@h@7-Fwgw<#t2ht3}m=u##7a{Do9|mL7ikx+# zbq>M9D4Kyw*Jj_L#hrcy^J?27KhGnC!z6sjq;Z3CdHsITa=fd!Ak*=W>$N)}iUU-5 z(qYG(K^3Eku;yu~34!KJjY3XkBi`hKg0{UmPbcTM|Ii2i=TwLSi+KAD{UYXpNttJ; z+y*xn2-a72GyA5hrv)+^^Vl}@t6xv@?H91Fwor$OoI+&iebw+rup?pW-9t(b;ZQr1 zKDRm8fQVen!!}mOEPJGb&n){04^!Lxhyb}eh2`fGY?k3ig48Ff?zZ}yKfQ`N143YcI>6Gi0 zu*wVU-~|+=Mb%;gpn-UsJ;aPPH#!9^tC&P=^Fdj{5~ z*rs*Tu}%Ndjt7bb2Psnfk<(nwQLG2OCU)p= zp=4;2fW8r(osUH9<30nlu%SB#<@a=z_1NXhWO*#3X_R$9E!8PAj;EZx#!!}N@0;yi z_Ee_fgb{gLz1`~3%$1incovL_KA*>WXHx0u!Gs1cA5-_ftE%YKeRGW=sc{gE4_`c3 z%ghJxXryOnUZhlAzrva5{(h(jyy^>bcagUh&WSrvtecq!v&-n7bYVD_Opn%fw=m7B zvY|A5-iN&iH%{gMnx5b<{ib`W>dL5+_gBst>y0Lp`#U*K7bi>$rq=y%6$OiUv<4lO z5N!ZOWO2^Bl&SgMg7fcjrT1QCLTKAEJYpof;-6f7cF)NKm7RJ0T3CnGd_K~-b(vm0 zY>e)y*yl#ggoW6q1cCRe{GFG7+O+y*<1*a36&#m1Fa6Bu6t%*cQa93?rVgxUh$$f7 zYw~@vfQ5ZTX9^yeB>ST`LSq&sg{h8m@Ega787bUsM$POX6xnhZ9pcWMNV^;maHY(% zig#0trVa)dSx^2PBzo{a7?$6(?f%Ho=_bLLW!eA66swb7EMerOM*3Z`Ao%h1P|8mV zV$DQP*{Et<^A4!+^;nsnufcII<9RVJ5|p+U>4<)0((WMY9{V?|iU+`R-TI_ax~M4U zHO&I3brCG9Rxi{8-7z~Gd0P`-FfwL;uh8fd5@}`1X{Br(k8rp(-UHotRddfr^eLP2 z*55kXb(TPHU1Ibst+1t`uqfd&FrumsB>8FE(^;7AefcY4uT`afh+LuP0{4ro{*I3Z zer*v#w+RZ=lPU8%yczJ5)Z`K>JsF`4X{=?Z`^WZyd~8`G$5cz*k(Hy139ozN(ntBk zyTG2kwo4>??h;)2(}ye?kyC|8( z6YQ*j+;o)P8!Oh|c!HTl^NylT#@}gvoXubixo4OC!G8?aK@zM{zygtwf0dgGebp1i zcNAW?HSafB%fy{T#v2izmu<^bdrWD0TZprR2qCpx$?bB@ z$9`+S`f4QZ{f^8?A`Zv>bwIq($0F_Bfn+kj{IoJ-10;XK9-OEbD^f^=!ceSkj_4qF+>Fw?94Hz?xpHqGXyMOGwD&p z`1{9BwI)m{&@8kR)^18)LuoJUN}R*Llh3s?^->t6yyQtqQ&#-OZdj0m>0J4zeMZ00 z9LXl29+5XU9*5;)WT|J)32uEP@fcP`&}hCx>W8lB>w!U>Ykev5mOe=O>inzQyu0I} zA_iglR-V_BdL{fU!OGKs0`}~$T!i)yBrC7dc+B`QTaIm2+m+j38tAOU2T zraK@efF%3#Of$oeo%~3t-wW%6+9i+Q2QC?I)C_|s$=MR^H~gNJ{Rb+oP@o5r3h&R- zA0mTtrW16KEQ{Sv^vBu7uw6tKW}6ku8~E7UH^*&^ps155UBF5sAH^$5`_H(g^gN1` z;7zOH`dx3ES-kT?-W)zjc)va8t-QTeI8!WM{i>p4G4hu+;;bI5VPP1ORp{Q;&kole z7415=Yimx<;REcHR^)($o1gxRGTJ5(yxVfI(T*=CV$~G{%cJzuxf^C6o4}*drNQo> z%vJr1KR<$l>Sr&~2kt+8=?s|SOSZ3x#7xBsRiWsQ3f zs>z?Vwu0)_f-mPJvrqsXT7@PiQJln`$4TE{ZUT5CGr|9l#KBS&W|i=8O*KHuUVWhN z)g>;y5*?+}opM$auM3|pazz?J50Kz7)?G2N@z2-J^Q1jLsbg}_>%7zSyV+B2BR2OR zy(aGjkXHvqW22?Ue`nRC{K&t=%7@Xj=W)Aeoksh8sV2=eT9+K#E&`&7e0@S8%_9p2 ztXS%=NAZ%%nThH>?HhbDJi>-(zF2{OTpc;kbbAxI=lqDgFNl1ME)ekROP{*9uV6|CgLg436o>vsIx1Kq8yV9+~W=N?^I;_ZQ8(zrEMAjG45^`ks zEJ?`Ji>kCpw!+I+ZTB;Kb>V!KeZ5NDM)4>o?bkGlhxeXE zCc{Wr>+jHzi%fYAN-**#Flc#!ym&B9vz^XMXfDGC;=2I?Yl%)E0a3r7^-7-FpcE$} zcReZ;(wVjRhgJ8O9-pY80UDil7j9V%7vF=kPEW+ucsVX0ma1Z-wb*0&?6UiBti9N( z($0Aw3MTc^!VO~ruw>&ghq_3mOsfQXfyYEAl8YTD>2Cfx3TD_(v!Y(mqGz0fCms5O zD91=2$<|m83>6%$g!mI5V*29rqN=i$DHpPg#gJEv)lHLn(HE=Lp@s)RF+aqKb~(Yb(J#O` zty5?PZ@F?tSkFxF^!k#0SNdX<&YZ>^b-gs>gdd&iyQ;resoj8du&@>Y?@0u97VCQ0 zzf}8esQ0BSGzTCY6K_o+X)~w(Qm&q4VT?_(YthA&=tSan^LWSwV?!kT6n+qZ+mw-t z{KjfTs&JYW-0-%%nP%~vi+S7mBsc3dR3j%H?Y~Y@tw5H;#!7rlOGm>$93+RK-ZbRH zPPDvl>UY{JmGtj3l0XW$Bpuij`*2TZY%_kDTZKOSXemU024cJ~bkpF(6>#VW29M!xefGH5Krrh}2a=Pz?C-MmcXRgCxK@~dqG)z+C{gpDSIoO};@ zED918c*{4C4Y$Xx)7~>~*0Y7khXsGwVH#nI{X-F8eytp)p_C&;Z)TMx<6yHx7~S3*i7e(?ZqNOq@PQ%o#%R6+C?057@#`Lx2hk8VJ755;! zmLU?{i~I@T_B%UzA78w<+8M-?#Qx@ymQ)RvW4BjC*`NJ;!c{;P_3*aG>m#Gxj_H+% z6IoBCY2Yq{>^v*83HOK4G41g)F>e37{D}J`eYIaQUs`xxKxavbz5`mhF-BoO#G)WF z8#ek47`D-@L;~kLnAy-Hsdc?5cB!rS zDFy8-f|Qx~hfJ`zM*}WdDJNT2Bu9N?kePGPqAq z@p{^uCq=-7)pKZf;$5GCnLBXhY1_z6lyqVh)wYhM*Q023sIdzhclW88f8wsqj3}y< z=C8Tx>PA1z@Vz3<{CF+1!&RBF(CU>Sr5?GF38B;$0jIKznSVoUJmv@ zb_$tGwH>_tR8G%R_%AcP9Mfc2Ev(|PACul05}u2u9yX?9!T6)0w9 z2Gb6_ZSKakSPUnFXc`-{-_#a{k-dF(;e8PEp)ib?QAVTIjF)1zmVH915qajx0K{=K zWHqSMR$6E6?pAfxGRvtw-xpXnBy0ZM@`n3(`%AJ`jXx$8q%R$Rje%0d4CsVJzOLE( zMceA&;oyu${PpR2zOKkk+6S>M1KW_}QxZ z3~KF)h+gwTetXj92=5pv zEiHXXxk*m@TBMdVd#XY$Gvnf$;Y3*9X(P*-{Y;q)nV#ex~CY^1pi=+lt$PPRv@4pNvOE{?4&{4uz;dAf!85^HRH= zL4@o)H$Vd;jg-HvnhtgwdYL&}T@f8Xwz+e;013H%CG%N?)6?Q7eI$d3v$8Gqe+m$( zFMXE8shHPN4@@`)qElEJILm`Zch7SjACx!uv@qOTB$ZrxvyRB!1Fu|!W_y1P-TRfe z7ay`}UgrG!vR-XC*+v3W8GpzAFR=>#mzs>G&t8UcS4J_A|6)@R-C@Lm%fv>5j-?*A zRb}v79wRGsJ$6iVJv=p`&xXlGiTTHwd`GRo2VdKMVcNe#)LR1eZ3>?RTxJS$$AG@4S`Py*vYadYhYxe zc=8V!sV&d5vg)sRIo)aLVZ3*J)JSvCC5Qk>c&o%y+h;?;4_xpPj;6g8#Kp1X)!U z`v>2kLY2DYY}cB8S6z8frT|Naj4#^jxdO z_vaw(!s97zBgh3ZTUHz|0_FITpHAOFjW0gi^l|}UKZ1KhMzAWyPjoTA=wOUfMVdff zEWJ-C*j>-xUj=_hg(#CI>SrT7EBcN*LGqwz_HMSrs%PsLQNpj|pd3C;NXu9}U3jcm z-9&6U@ss6>CR{hb&4tHE*lXMYx#fk=TkX{^Z(Nws>6ZUI@55GUhy<`zpKUDAz8ekx zhUDK2892umpqk#bTTa|WLN}WR{Jsy#J--gm75h2{vt$6^p>r7iA`9Ey?%v`Wf?;{L z5s55(jW^~o<58e?)ASx_FD4kPX~n#1;yl|ky?PW`xSwcGxaWekSYdvUIK;C5>VL+& z^n4jH0pGiZ%q|WG?{ut&KQ9(IC{fjcr{+@$MOYxYQImC*=YS? zeO{M-3gkqR10u1B{_cA%jihjt(XvimFQ~h^>g#e*&zvG`+$+uZz;(L);~pjm5U++hNyOcdiq+p znimKQT(nqaqgQq8GgPtqSgr-cX!f9qW_Rl3V2a=7b7q<1wRSGiWMWoStKr4k`QYw~ z;`8kGQYwNP{AiFe?{r?|UbXm|T1ezSZOLL_jI~J<{x0GgA%JV88`ZJ0ll2T2h=)uw zFe7kqsY7rIVKuUW;*&hRJNZ-!{_u(~`HGP}{xWJxSJ=?Z_8Iy6NK6$QcWh89SbA)i z5g2+s$jZ>s`oh9i)$Izlc1RX1W)jj&O?Y!0HqPJpxsdhfheC|n#qqUMiUs8~_Y0Lv zj=rT0A(lajo%EuCq0>-bV=o;u(Hl<07)0;Ym5>KbAUZnM=fZ&3X3GJ4G1&tK`Y(5x z0LZxs6M}?@VBjKOr{+5h2ANQ*cy|+(mr}omXA2JS%zhxZ910BLd+b@s0&WwdN4t40iC4>*p=3kiM|J^lN9fvjAzcQmh9HC|V zlB54dv4%WU&H~ebUEW7C)pNRA7dbWuyPy5${jA6n@7KgO_q{;3SHU&la<@!dHRnqv zf#|r`?ooa=IQP>cZw%uR8+f^s6P$su+X1I6Z|y-nYlNXQNe;2m{!n)<9h=Mbx1mJO zht%YzX+N_d5N#@M;cDNP9LdqGD{r?S-qj@B^ZahHiWf{XdtCVZLvGR839N=*o{2W= zAeVyY1UdebsO4__ zSI-Z;SAg`L<&BT!P3=$HcF8%%U#Th_Zcs)ymMnV$J|?@05t{Q!3R`C{@`b=7bb6c4 z0mfXS!Ny+bdbXW;^$jua+?&2_lSwYFvwf-5iF>K2BUISw9*6G^i#L;APJXk)Yt<&< zRwGS6wstJjUs(-2tj;D{n2G8t$ymb_S~obx4i%sYr+v9;1dfGPKaCeRycRLs6F z?+%uqUAeb<7`naWr(+{6*Zdo)C(cG_#|$tv6!chbNm(tK@GH$&?(x`t2zG4K)0xyZ zo@h-e;zbi?i-ajwg^C)qRO9WrvX%os~Dq-p< zx=TOtYg0}g^sZIQh(7+5d0g~B7hcAEj{ZECw%tu;hmZI)2XN9A^+$e_M#9$lR2N7H|$c!0z13=EvKnc1xXSg>YR(e9XdN{)et(NT6Go(F&ucQJkIJva9 z#En;D6Fs~M7j8MhM4*rD^IQ8B!!d71pl(GB1qEjj=;H}=6rfq7v;$MWTN|~6hh6 zlQ1~wa+q{|2(eYAHMaQu^aGxI9&Cc|4w6P)K7v#y^Y9=GOf+Du@kEY>Wa0>Uyp0pH ziz|(wMFq|1r{y2{3v!@)im^5+JEnqn zh;R9Q`P#@-l!Tv%&=Z;Su$3a|0$?AXT$)q0wdM;j1fGCWvh^0MO^dA+wKd$T-uk$h;lATQ-YS<&7Yb$9oNhDxBA$u!T5BI8&e;fKa+Q~xda6)OS2~Wi8 zBfD}C8dznfk{kV+W}{+zULZe}(0>jh`}z#-A75p3v9RVOyC2fpr0uPV=0|VUO=urj z)IotwTz=)@RzVkU+$|-ohi4<}bW;hf3HIWKW&A0T*E&l3t>%h;DpR|cp*DaWB#L;< z?A@^2p09CRGN+AY60i8AEP@ZwORR|dIIg@9WoeiS#)tbSTy?f=JgBl33t3TTeb2`Y z_-#gA(YUten;xCSu$$lhVOXlhh&&bgQC^#(jLKoqKtOA$AADi~da9v?UXVtCW{?OX zpAnw*MVt*|L_c6+`c|j8OqTZQK)Lc-S{*7nMdT>O5)k{~4QMgW z@zYY7$k5`pOR;cn#ssR6nQdL;-?>J7cSzGrUefq(Y|-;4WmeFRCNlD)8EU25Ej%av}58CK$YgFp68NKl+ri+8ZjxWqL{QoUC>241d16*{1l$%Sub7)3Kf)E7M>!! zYT3fTX@wt1@s2yT=mMFj!X;R4oY3Ei;NWJk->fE~BQvQ79@y)L79VYtc8XV{M+s= zV&IKn{(|BhA(by`x(LWdgh@R&8$G*tlgDpSBlZ1(Pbv|i&2JwGJC-z4k|HFpXT(TFYO_5*?&HWVbSgmC+XGZ6t-Oi6 zq-iI1;g%VbtK#TEUip6>40@C;!@#lJD0;N=WzfqO z_-L!=Pt;^j_|eY=3kqcQtTQmUoxBZ5Xd?OeAt0Tc&{A)=Hja{7DDIbN;nb%;QiQa{ z3U(dP9=zZ~f0Uf=w%cQ)>ADKq{06F6;dw$cI#p4-$u9*_2*v~>NRu_=Xs7Esb(GNc zlr%1<&Yxp_f5X1Tgyfp$Ip3?<^eDA9!b&t3w2>>A>yniv&l36JVX4Qx+zSrEIITs~ z?{7Y@QVOe~m~|f_D(vd%g=(x&5=);d{~o`Z8qk$Hmp?ObhpqY7GD8<)QeS=<;uL3> zCEaEfZzfXJR>bNY46^sHsOx}X#r+0cj{U&ZR8?AwFuNyTUxud0k+cJ6! zCU|dBNj6^d{h?26nZ8}E2A&kt5T&048`gelB;M=`&9wNDCW|_+LpGpCp~d~q;IvoD zS3i#x+_vZY6EQdsX)K{S)HUhig|JR6ham`;b~mQr`UZGws+^m}R7f1DofZRU@NV&r z#~mw!4u7f(u)B$im31rER0dqUgX)Ehvl@of9$qF=jgsNJ0gXnVpe|q1C5aXdBl4r3 zzJ@6R-wLkaS#L4yO6^8rk^gzk^{?dXMdKlE{uR6+6&NB=gB$1xTa+^ z_dC!{f7XjlG0u0!jp5OD&5pS2$JfPuKGclvNrA8YZ+X8e8~ljjDvx|$>AE0`jg#GuTb&=Ju9X~Aui#jg z^V*=}4Bi`JYKrEvR=qj&II!&l`I&k5JCwLTl$1M4VODj{X7KN0O7U!zW z(61-?+s;wS&pOeT2ugqlkKut5p?~d7?vdYHsolT|>0$xh{634TxDHDVQs@eiL|)(v z{{&B_#T~}B9Lvo0V?fUyDgDHAaf=#<#R2wJ^euoWc-MA&{6p0M-3EiSSNc%15){Kd-`>z~45RV3{FE@I zB;40HzFb+l;TxH$-AwpbYMeT1mt)UXc;PbX5X~9jQQbYqHY0B;8#sLAkU#%RImxuu z_Y=o7t5rGZU=VX1%KOuH#M`GQiihiV-?KF1<=_rT+#o>MLCBXAoHfhz>w;S3NBJ3x zwRI?g+k-5Oq~enO-aWfJ=4rQ(*2k^Js1@~|aDKY8fC7qtKk(aJ#K2{d>s9rqXE=3` zE1XY{1$>IfBf=C&e7?U-&KnENj)=x06!+YCMbgmEj*| zH1bQC!>lcLu*x8964k|wGVh8`@p><8lI1-~BkRh_OC{G)Qlk#@v<$GA)h^g~^P#gY zKY%iWmR(Qm8zk+Q2F@61R0WMVtj3FRIUhV&%X=4+EqZ;Ze)`hMA98ciWv7)(U@b&QA2;U z;y)1Wz-mKfrTXUOBjtNI{%~(-^`N#}s4Mf-K_>oKk|VdAcAJ0v8zs3q)3|Ri@O?B+ zHD>s>;{_Q z7OO`fp{xa5O-JfqicYE?p7=VK^81+*ip6JHrJ}gp9DO#&>y>f!W@ME;cmF&tCiFOo zyl+?B!j{DYtG+&Ucy+}mAm&G4^Q1V`0e`68qMfO(R? z676uho;xU~S~wvo*9TR(vCRI+(^ziG(j))gJn@vevWl5Gg?NDEU5S6D{VJE>V{mD$ zy$hv?`-qGl_gd>uT#NHSDVk8Crd#tYY)IF+ZLU;LHOU%r@Eip9J{0;T-24&afcFSf z+*m8>`yxM$r8>3`+t86gG4J)lU+uy*%ET*bPDh;Wp$GJaVs-Qq&rYceJ>Z|F%zhyg zzkPns07h2+qhnjKXq(iQfc_(Gi^{cki(Nl`mTC&U&b&D3G^_S`1b-}Yn|yS|rSGT*kYh#NdOa|-Jb?hC30E}lG!-Ua zK+_(Fa(`}h!U#R{_bJXB4+0jST*Z)~MQ!10zBe4mba90Br<tul zg@CgS1gl)@42t6N!{RsHu*J60=OH6dlx>~9L4hGwThz|)#kI5x6)5)U?GOsn0*jIe zAc+dt}NZ&~4ESj#d| z>!v2CW1nz2n5Bs=#y9^Qb<^Ixul`WYFC1f13QJ!U#+5-MR(hpx^1Md36^{}$DNu=K zzhg`P;+&_Sp4US3gtO2nWxu#+L^2r0@8T0|`{TfBDPmE>Lb! z$b>V5CY_QnYE*5H7;FuSv8zy0@@jwAfGEqo5yli7r@pAhL1ZUQyfjs#Kae^TrMRIo zdIRz0UQmlwVr-exNw{IO{h=t4jqFvpHhh7LfmJ&aQYi^t(*cqH29A1Qe7-AkC=z9J z=}cDD&qnGO+80DJBYL=;eveoP=cbMDNUya78p^S{6c<5bVS-H_t^NljbHIxCTdWzh zv+bkPjnho+Pn}i~wcoEnb?bH0hoacA>U`=FE>O{0?z$9cbvq*Bgy@~{WNeqkz6{+6 z^ET@T0{9M=em%8{-50a=bLt^SRH|;Jwel`J6lR4mculS5W7a7ocvWNY8`b>ORA>GLKc}xPk!O*0n+Y~eo<zW@R*<^+V>R!LGBHk zyFSSE43fy+^EHmwXUyahQ)kLsCfX+6n@I$>;|%W?_Dy!Q7e!sbM#5~*F!ml?sh6-k z8M}-N++=n=wHw2U6Ouvo*F)unVjT!M*zc@nKE0DUo=)QDV^*e zL)R< z@3`kuIMkrU?rbBy^=9Ezy6#d-$NIwl!+(?^fY&n^G2HKxn?AFlSXO8rfW_fw5{!c4 zza_UPV3QHY;T%yI)A;kD4+vDhzN!1n+Q9YNxbbQ^Hnyp1eLiKrX)2@79?tYiejd-5 zB!d%(R6-BAOCghui!u=%gxRZcyi&B0`PxM&8c}R32h_BYI1+)nsCK}9{GX>^eJ5*? z|H7qyV7CE8q@GDhoq}cNrhGCFYgN8Eq+2#~4R!DLYoaV+0P=waoXVtZDxuX$B_Ou2 zBWTzm_>1v8ul|5-NSBQmc@hHCLwbNkkJPm&A`fGl1+xJBkE75&^Vu$^!@>5ttw$z^NolRyO_N}fWi%o z#pQ)l$le)2S)((i=sd~ndImgHu_=!SjgLeqZ^K3cxGM*US(8J`6=k$JU!7J7y%Q+= zg8bR!&I_$CL`Y|)0XP0994d91XWC-N@9FKryb@&r&wuy_D#ddVVOq^)9?QV3ISKGq zx1tL{)ioAEn-QCTdo!MS|DoE!m3Jth76ady={2cc48l=_7Uk|S&OSamAq%|E3@7N! zBmXu54o#p|9j2*_6vnm-M-V9mKH4SjTsyI8@XK)cImMAI;ch>Q9VDmgO#RxTd@dL= zaXu<~-1BnT`CjP_C`qw!b5msW$aAqDEi{SA_j=z@DSy^}H8p3DOlYlTbPsOGe@GgN zkU*31HRKP#s16eun+LVn539K~2qB&mPNXu*7p_bNkhyN8uz3~k#SC-+hp9sufsaqp z_;%ES`8N*eLs;3LUWUzxEru+8zSvSPAEr)qq~_IjJ|F)MKo=#vR3PwUJ%WJIT? z;pt6xe2$pSn`0qwo8nTh+|LtQ+Wu``>V_iOcL&V&{))%fn!=C4I9FoKNKd`>5A6f4 z>|^uS1v|!8_%?c5*DQE!NYf8BLXc$XOR^xcOT@6`oCGX5^BVB zwLoXH0 z3DEl}Wj))%i;d&K(eOR#9|@9I0lrCGwk3ftXpYq*I1r0TP`Lgy@j7k2Ch5TAbp80S z@=*0sXL=DiuDm?aFf+I_3i+zNXypeSX;X7wBUwn~7ZvE8l&SsB?Vhxn6H2kQlD~=_s`pBi^yLJC6#C9F-Jf59`dm78U zE6LwYRUv1`f~dEubapa{uJV0rkFXC{#{@Lb7YfON<+5&fy_%j|*dP7mjEGeEAp7(q5uO%6la8HsRMRsmLVxfFA#}&GI%H!AIWb#~go2 z)hNjanCOn&hC7a`*Eyk6uMkSca{%d+V?v9w!Cwp@g0Fk!>ebVwk^7eMlY`$@Xy*Df z62}}{)dxl}iy#9l2-wyPFy9U%^4n~@TQ&0ydybzzVF#nZTLJI;m~#CBE9PP z=7(}le5SuQ&h>z!j0p88=&76YTJP1-YSW9b;iCMOCZj&cSppM0J_GOHDAs2SxSTb2 zdi$cF8qh0VP|K>i8kOI6ux6xa*jP-EVq6yK4aZDxR?OIsr8apyd98llg2*Cv8pQQ; zhCLyz?1aev*uf15UMPjL<1ft8@pf25BxywU9%e~xvUR?07*|UdPsak@$8N6LB=O1O zXq7!@J*zmKi}hn!qVg_?d$JgOOE!^9_<2sYFK{s5h<&2r&5LV zwb_bbP#>H>6>Rk|d3!t~2yEku43>CdHtJ85vYGh{oVfoNDO6_qZFKc~N9zXW$mDH@ zD)_E)JwX+4Ed#{~0#4e_C;;E592f?|1?9G;3NLv2uPr3~`vj&)9R2aNawOXvV%-$B zS&pCwHqyf#S&@6YR!WC|M5T=#Hx_Vw8Ha*<@x3u@+3Q@>XTL)Gq@_b*un4pA&ua~LHoNU~j_rB6Kztz+J~uOy1R*CPvhKAphgZ@i zBkDF0Me+}TG=#1(wyVd}%)JM(?Hm1GzatvV0Dx?cZ3H+6$+gI)c zEvNe$$fWjdP95VhoDulNxXxAEmn=7#>!GLDKA?b8?C?TjA+^1gW@P*{f&4UN4ETHJ ziH1`_rvuPeDN~an;`D4RB5ZFOXvr=<0ZHr3pu)H^mK$!HuwV|G>baVTV@R|>R0yp& z1#}PaFsBXhoSHqoGa^LLRc!dInNNJuk}WX#(}8T)ApY7m#?&LXv)pk=g%8*KlnB$E zNcEF?$Wg2Cm)~SH_lsvkxzD8UVa&fwbtztw!+t$CwTd5?-4faNcZtZ+TYSQ=SdM2Z z@%n8AQ%0y8)X-HQiXp$b-KOgKn^Rwj3T|69jW8?1fR4Woe^${wp=^O;BYs<}ATqY= z+Z`qI@_hM6Uu*pu?q7TbQ&>HG{~)AxR$ZO#b8>8>e}Lchxt?s_)yxE5-IZv2EZeE{r2e z7~{_#dm%g%E`m8oX7qj|Qa0DN&qU=#_;;lrG09vGLxbX_<%Ew|?ZG#z*D6AC!Fi~< z`UV_({cH0x=n0@KSr%t_U=^OcglLmM5o_sIrD4XEUf&%cjyhFYMN?DCL2P zJoPp!tNVsEBnY^qy=#XcX~fV(9CQ&+Z2RZ==m|!^h^>;X4jjUdK2%is8(4Kj+r7@>e<4+SUPBKgs2$C)h9N3N5yaM z*Zeow^yhOY-KQCzf)iMF(#y~?aM%Mp=65!wJ?<;L45C!u761(eU9L8CLpRW@0w3J4 zY6}(grUbx^Y;rTO{_%^Hqz}3o3~FWS#=lmSP+}M>rIRrU4wVi+MN8t2s=r?8D`^Uc z^Mw49)f%#aiI)%&+m}fJsO*o5EA{pxcR+%xq$n8f|nS-c4YBb%pFQflMvLbFSzQKVm zie8P>$l4za1{buV*n5Ih+G+h(ir}{}4>pr}z3iE#3KrirNv= z5bM!@`!dKg+UM_GVMPb!VV8g1nQDvvzrKui3{=ApBwCq_TT<^w=OP*v`91Ex;I90Y z=K=}8jr~(rh(Jb#a0bBse<4Ece<4>AhrRnxaP$9X$Y%gJ5^Cc-#9S`pd5L;maz|9j zca1;F`~QMHrvIP8Pya7bp8qpsyJwSHg;`cTl`*rfZrs~{N~~tw>j*EUDy=3MtD-;A zHXi+Gq|4fpsRE}R`>pEBs;#Q5S#zVZRH%Vp%>E1dtNgbR1pe8&YXLCs+-36mpOsf{%4EWyp1ib-e^1qGS?hN!De!IjJa-ewY6eS zcJK~V&N=n$56a!PyEB-@f{*bDwx=>CkcBc#3w`cjk#>Z19s3vb+z<) z{S2NrHpz9DXAQ-1U`4+?Ncgqc(l6u`0BgkjT-+>Hdvt(1EEbM_K0>*+jMWgei!hLr z95$Za9&cViZ&0Q?GSYXhqFulIb`gvo8;h7Xf4d9!eoi^UjRis)e1$l6)Sm2Q)3Sq8 zw6}+!1Ak&82R;*JP^brz5vHrC-|qps*XmHlZz70?`d=Zk01RTjqje{&BCf6rfu1T5 zj2bVr*WG5q24Hh8TVJ=`^L_)`umIw>NfToUH~u4O^AH(V`8RrhYr+1bw5vt;joxYL zE0WwhWQw`Ue^a3;gv+T#r7i6Qvm-CUPkb@su%OecR>_^$v@?J(ZOv{q;roTXzza$t z0LA1AvOI{Q-))m+6pJjq~MISTciQ_ZJWcQJo#|;yp)np;`3gnf|A|DFL<F_iabX%Z66;JsFRI`^MdOLV*x6V^TG( z@aRPdwcg(IO_mSRfG1$*_x^>o*(yJ!~?ASQC<3g zaMB2l15By{9<2CEe5bA3yg-#Z4%2`187=I&9Ye-}wD3rblb?xTuAR-NXLpytoeCinINSP`wO2RINs904lYY~s|lIW zT?K205mwI~ygLdEH;p%zI(*)WU}4c<--x!bGOPN+gqjq%un*qePrth;8%8mVM@v7n zU;u0uZgy1teM+(p4x%e|z*Ge1QG&Mk8%i@NT=RQ~ZXX16f8O8gelaqZzvY zU;?vceks?y(C#+fxCL!c-+OQ_GQR6TErn|jwHyrcHF~FR> z&>NxPw~@r7W5kTHRnovUuTkI}nJFZ^^mlCU{J?@Lf~6Wi)M#QH`E^EultLizSXP*) zk@dV0=|kC+g-NR)9+Rg){@)V;ZXSsaGy`#DU45xjbmNZ24+?oF_(Ulz1lqkRn82>$ z?DzyKVo(a4`@9FPSOyw?JE>7$G*iBWZr4IABj-^RCCtRY^9G#s0azpJz*wrsyUB}L zXXp5>G}J`VyPr=BBy)z`t;V=e|CSj3yqj9GL^R0};f$P{i{x10T-gi=-lQl~HB(5F z%f#i>@}8jZC@;3B-l)^E4+0bWP$**$%BdPHSk9lgX7+8T;N~^m({oxQWyeU++62Gz z1uVNxVYA6=Qm7Gr3`6!9y!hfl)c$enQ!l*!0A6)qJH8OcvWvZd=}BeVYx7no`D2~Z z8v}@rTH|Tc-egg{H-?_0Uhn}HVJ9W>=gL(-1p7eiP+v<@WQuC3Kn{I39hrXjFq}|4 z@<94G?RCU#mM^5RgcDlclW(lj!ot}o9 z87juju6nhd9#YNV@Ti^asoC=X=~?*H}6h%<+* zjr`-%B<52XuLxO*B#8Vwv;|9FpAI!RXe8}4>}i=i&4h0bkwOL8;r&j8Eu_-@JxwXG zSLIZATp^H$MB-<)!Sd~lU_$0M%=tqy8RlXJfb$42(3g`{_V>nj^U(<0iUC`}yA^QAB!bk=uapJ_NLmfwU?}O2fP&`w z9Wp+$zn#;=tbqZj7a=q+V7ey;?8)k9Ki_$f@0J{AN$SU#yBk!lLk9WL%Ho{`y@1Wf z^k`@G=|Ml==P!s|jYClf-adiD!}E)--N^Y?uMtmc@0D5wSDU~@b#u0*sm$T%x*vdZSx|4CS2ZO_&ov%GUm7D}H zykdE3)+M6%EwF8g?9`@%^W&7al~LW}ADN{AzlDR5c6&Er)yFBN%?l;zgW;)g!AX|m zE{r={dTH?9n%%htvXz<`ZR0#d2XfvJXO%wA+(g=<9S(VNaDl)I@Gq(E5D?n+GA;qip z)s8B)-v!NiBqCnGQ4O)^DM|Uc@4x3FlR}#13+J#mx`=s-(l(H#w1Gxc3$cP(C9xxH z_nVk4J_;=Q!Kp1}b85DZyQ?_ODR1`OaOW7Mz4=R@<@-BVTVKbwci(ipg%^w;$4f9C zFX5cZ&s}f$AG+59a2}l#uEK;$dA~Rn-rZlZ8gl@rezA-kc6Fpm7%4FVa7YswR3al# zZg6uDlYKqp-ekIEQqZ-)P^72ZMM{iSi~;NK8#bx{*)o-2=5{o zW<=Mq8(oPGygc4nQ5N1?@sUND$&4nW@)Fy;fdmOZL8%^MPb+944o4(Mmjc9L`{Ba( zwB7e^_~O*`prphO{Va!Hp6cWdImEavF4*GE^4Lyut(%^2Q?D#P@9cSPE9~85bvX#G z$x}>ZeqOOw@FFp|^Or+*a*XdFWb5l`U87V7QSc@4>0DZc~ z+wD1OHdqx4<$5k6dfYX7$#ck}p}_oW7w4zzhTrLV_(f@{!hPfRI!5<^P_8BxTKEoB zyF=4V>ucOumuuDPcX~32liU0iHZbpmx})?4GGzRO=DzbA@yk;}3ip;y3ixnl07{K0uOffm%<#5?Fo zo}6@Lcj;t#J20fmQeHb`EG~^4N3|SDRkJh)>!q{Kf$CdL%q&ZvLpG#V12hRdD+y$CDvC?EGB7?Nw>k?fy%fX5 z+Hk1sy57~sw^q20ao};}*9%Fvq_TgMjK$2+KAe>iEWyyfe{R)|&&|8?% zQp!F=7+b^urv*RZ;HD}P9NsL?x1#sJd<86c1mZi7c`v8IMK`~|wwLnt)#ik8faB$z z30Ecpl)8f!6b}Cf+yv7CkLu^j&H&&8LR(<|3V01%!->ZUho~%`Su7r-xe(3jT5gFS z{Oo_w3s$>1y~miZ~$W3c{6}}H?LT_lKpT@Tdp`7vIa3Wnp9l6a2~>k zmGIPBt~`9#gJUc#`{c5pe?K}OR)O76ESMBKVdb{KKO7#ZluW*e&{$dPdiT4aQW|o4 z&ESM-Wa>9+L)EyBsX;2={Egu`x!P7Ux`c=)HA_@aoL)0Q4C)L?nWMDkcCB7IE5@@S zIkemkr9-?{RIVG}F@R}s{8eu{-h2Y&U(|#;dwQae2>ehv=r))EOz~6Cp_M-RKvq3#( zP~H!*Uwp%sDi_}LC_@!W8>nRSOyyg4nV+*>mNAp9s+T>%=ylY~qwPk^^Gn3+HnJZ0 zq{^|%$Hjee(z>}b2L6+oR%ReG({Fu_#G_j*E7=i*T1<7OcgtaIXHb+sRkH{8w*J%? zvmM%Cz)qONxS2d%_503?B_7}7vUFTMti0?T^o*dYpMkApamdz`UhA9qOTbO2Djqma zz*VIM(PxVS3Y*rA5Gd(Don^P138Oz80SkNFm25_(KP{Q0Kp)hU-rehYHL(;|Sz+4f zUL!`Te~i}m2Ou8fFwA1g%=I zn4#~}7-fLJzYv-w0`tIl==&AO0h z+;_=WrU#wj55mtsAGp7Eyi~Zgh@~ZJ&KXJ(Ffl;QM^#nCZpfoY6)hdL(Mn8g*T{zI zJQeHLf0<;XNS+@0-p50_Q%VCFH>;DdFPwQ9`TSOx4o)3$I~Gp$Q7|7g34bPWtWi3C zKDZ{&)qYH0mki}L#oqo?v`{ADP0(KSV+nItGELdN?muJVZEJvHe3lfZ^!ki+Q=nlP zi0z7%?5%%Xk6Rr_r%4!J3^OS4AHoOPzgCGWjyQA5?Z1543$4aTYAMc_b@lloB^pa; zr`iw|BMW+#TH#L;buoCmq+wiUY{zflO#nVCuR=J9NZA$j$4e%B<&nspOKvgCxFF?T z>Wy-?ux$$2@3R>{h#!h~(+#DIUb3YUNGjA{yTTr;&%l4UIL2W$F_$}BRdRbN63bvJ zn%_&b!A9X|N3G4$tY>B{(U{Cw)3jtnVEy}zo#1ItUNf`U=7S->+eT>JUMiNA>Fy`G z(N9<|h3;HCn8^83JsAXE&IAdQS=pH3ca|q`Zn2?&v(wW`7)*2D?B-(9T#Ba6svTLG z1~1RDKw@k-`*(}=kh4Y}DS26!d4Wf7A6M`V%YjmY?5o7I$R|PrJq8o=f%2(&2h04u zHcY>-FjC6Df1XGEL_smaf1eTcYtsut7I-h=CQcv28lPzbro$SFYdVlXj{E?5-vRuZ zXc+Et4_p1PTb+w2pIR2sNLP?Wp5a+u+OnYGg;$`tFnTri-Ytpfd4tKBnJ%j0H}^;m z>`8;po#AZ;Ik*B;HhPktX!Z-q9B?LSUe>6uG;Ucp`Q|PTHVqOU%37x;AM*Gv9aw|@fMwn@$&^5JiPCE-zCT_6ivO3Gg+=|CR@-nfl zK<0c&sH%M)9*D=X*#*D6Cz|ZB*M8DLsLb$<@QKVSm0&jp)(n;Srq=9 za>lWOe(bK$>^{1&tZ z6T|Bgt@X{z8v8OuRLl|@I;I+aRvl);;n8M5@YAegrwH)IKacFR_p;3xpcqaD*XO#U{h@~X^wmh{Db~xXJ-k&kk51J zMeXN#KT7X2vTY=_#sY;4+UdkS1hxuatE;c{ZkWi7JNhJ6R3PUeouQxUVsL|rIW*i{ zkm+f_(7|4hlqp8=%vuo?L2vDG&b<)*UBxxKGuM~QvrhJYN3TV4F)9fzPOsF+di!&> zN+x3&LXZS;dRkqbupIL61C2LQQ;C1m&x0z%oO%%C*!e|tk?r8a+P95t2XGQHKD`-v zI4ov!PQ8c=PBp!Kv9SHsO~GZ;Hdidxbv1!Cjg`w_AYxe-9B0Z|hu*UUK|-LgeP`jz zcG&Xai;5hT>m{ic_0eQ_M|rWm>d&*uQ4ar0fw^tjkrkPHP+jgdf-5TMdesQ2h|D<+ zer>9bm5V12 zS6Ycgo)yi@cImfKmxk^z)dy$1>%Rh2$n_&{mU)Hm5J2JQa*3%~%u!7fzNI-@@j3QS zaf+FW^WXN!w3FR2X!aD~LZ&jhX$?=xbK!1Z|~+gTL|djYoF)8{j@_BAGHZ-B=b z!_?J>P+c@O$1cjreCCqPJ7o2D#xkBsDU2VJKXD^)&h+c)Qdeu=H);vRvrf;9!UU_r zA5uo5lPmscH={=t+&KtmhW8gcjwiqUQ6xPBb!goFM~DD)6toV4 zY}q`rlHy)8CzWB{J}qvX?s){f*Z)dDcJIEc#)dB%sv*K``B~pYk{=i(-}r)$2t$$t zhsM{v{~pipP`g*jjv}~4*)l`?oHOl79P^gXn>?ij9>YFiT??sZ%Wo8Bhd&|1PPKm( zsaARL)X(XL6H@XgE&_8pLTi{uVPxV!T0D!>b=Do)ev~MZ)4P2}?|pFhX6g@C!kgqL zq^cB8)-?m1mn4vJDp<}RETPOD??io;{UF3EkskMiF6QO;o4tVLFF3t@<8%}6P@_I5 znlfpfNZ4vbRJ0J$))-wcL#z>`mxwKhz)vVQf>2;WiD zk9N6IolH0lHm+bBLdfy-%TK$;ho z*$?NX_s{fLhl%eBCr#uSnar3G^p08G&KOdDVzwxv^sIY>V=x@^r z@L-KM3#tM4j}6%qPhzzLWUe+|zO%=r=+?~;*l28_n`AtgX`eE(rrwQTxyymXzH6Yl zQyq)o)YI)Vw2{XG;w`{gXX@fNeMUoX!E$#w$r7G84^o3jYPFa%!W#stZ3YIB%}vt1 zmp;XbsF5EaWI+b2aY&4lb-wqX!K&Y_!&}qTvLQb|w*L2cPM)IqP6^s>Z8=Zx7)2_H zRTj~CZmV1929Y&|CVqy8^@Lqn*x9N_RfT4;tY~;#kSmYnzN(O~CZDTOrK;C~2a(l2TErw~U&a~Ywykwcu zltqh_N@19LA(EmYCGM4C`;Y!d_HJ-!sNqa5zX?>0oYT8$^nBdYDGd(AGw57l|s3!j3ZaEGO}rco(>!@-G=O@>@fHkCgQn9de!*6)!zMcQ^C-Oys5wpT-MubOSyhm zyD3o5Qe%t0E?)L*tXrKJ$XkTkrR<6iUj7ovgeyV|C^`rprhbEB$*h;8xWJ|pFetVr zOKurfabRJ}=-oUKWta+Lbm?K zS?CKJrh96I(;FxC*G#-qgxtM>+Nq(UKn(TiAQz_8+4$eJD9_@ip4uUDr{SS~TNFcs zLHyf45OPB{b_$hv`^im#L*5gn#9krO#TD_*39kW7>Q`4IWiO70`wClOe8&iwy2yf- zDSCp0zq7bnzocZyP$(aH{n!5ZDKT|xr3R08@1)9w&Yr5h0&J-!q8k>ULNGFdj)NJ= zOp}chsMJLbptDp*fv^U(*}Re=w1MhP$8hsR6{Gwd#=5h<9sntFnI-;NX20Yr8pFn( zAk$>?fIZjQH$TLm0Yy?;NFnZ3qTjO>)qB+`;o4l%edwj}=x#Y3hSxM}bti#66dgb# zWSeY9RW5sBKKl7ba@J+MNc=zq85OBtsiqsTJd4W)FRPF@vmySzA_XtSM0=ejb#)0# zvL0fM@=fg^?e%2Y=5>S^h=q-CK+&%C=!M>UYp5_-IUxJ4YwP`Q>>kw(%PV8UxO!_b zW6T10Tu_cb>48?3?i1og$IfYiK&-#^?!f5w&g{69tKsbflVIfNk(~EaMD$Bm1MXlF zi#OwEH+smq?;#NU_25((GJPd4H{`;%Tlknx)-H}v6f8zz)mZR%!_M74Pbu|c{j-3T z@jC3i9M;=&)*FiuJr@3h7i&k>j|mKBKZ;yad= z9IAc(kI)DqCAd1N_e4n0c3r8|uL_T>_3dW57{d-kE@Cy`F1(u6s(n3B}Ao!?ptGqIq2BdqG?MsM8!spM4vZ4nYw(e z-9N=qF?)W+dp*`yiQaDSsE!)7*JkxBaS9bl#zo8W$MvXx2+NHt|3+NNmbq7y*S6rj zx*7_VMjEb!`tkaLLTh4McTm>#Qs`L9#!QT*L}&ce5p-@n zS*vPe7v}Ghkh=pO#dhkCIhqC?J8thDX3Cq=JKE}s-da4ItI!X}T|P__v(7IQqB9Mx zEp`KdBBXZ4DOHaMG@8aIIgKF(uLrAva+bM)i@D+gKmMPa;2;-g<1uUVNn$v{QM(Y- z_BY_jX9lyQ>=)FN0}X_z zkTG}04fELrG~#HFE%l5?O{JMeNz8hUD|6o2C$duKOz(RW^v`S+zTz(c!&v{+uT2Lc z0usXGE!4ciO?$oxoc#0?f9-0g9tnEx-J}4J%A?d#zG(-#5ODOeQ|PeG$sN(qKX7ye z9ty}^Cb+%)u-ywg1{{u-41ZK1Z8I~Z_RbTlS9{6nDfIc5n&!M6fdO-%QP`RUJ=LGyLr$)N3MKtm-aKkgl zhbB-e_<(2thcwG3O*_MG{xYjcLrY{>ZauN_dCi-$jq>1%b<#22*k3 zUUfB?ddo1N^X3(Q*~8UHX9wO!Idm*(;|QQ=KlxmbrgL`HwN;NvHR0*T5s~9!rM#v3{4*eXC!&|t19H|tN`1SMP`?Slw zRY7a6@zfE$fY4VXe>VFIowvq5(}~tE=^(MT0iGV;Jn6U6uo>yGtQ-$w3U$Uk6Xsw4 z^j3ZTc&lVD|LLt7Gc|GiFTK^l|JGZbvP=ITyj3>oIHmucw~Fok-+QaZg&J-c`r6%t)=BXZZRW4nNRepB$nS7dY**EBBPjiiuOMJUD+UVdk>Quwx#hAy=;DS zmJRIymvS&4S8w$nc`RtrMPU9O4Q<;3+m7pZ=*)$cEH@6t{#;Z>$3N;=S7md4yxfC8 z1ep`gji@4TzmxvsG$jf%*vH_9uUjZM;)9uU;o&dn$MXaC>KEEZUUSgcF7(_gwQv#Y z&Q?3>X*smFg%!H69&@?Dl^qOBpPaPuwzQb~RmZXVC?4vhJ?_fS@9pE3QmZ37y)rx; z104JuhrFC_;RD>CLp=A2X3Q!5@k}`u<{-8?5LP1?%1f>zkJ0nACrAjAPj!vy(E&dW znLs#@*>r+j8v&0YGlF@&?|0w%AROBYe0Dv84E$LK>^ccA&X_1Aanp=+4f_)jJYmr5 z%|7qiJ6rB16Cg2HdJSS^!pSq+&=}VTYRl3D9J$+d+c9Dpsbd@==}eoF8o}<-7vb4f zyW$k1Cxgjn_h0z zIzr#-{wSub)SOdar$%*kXq8pyJSj6*DE^XCvrDn_4|uXK;-2ERHr#w9|V|3I$^Gi0>|0>lBs zh(MNIaM3;6oX?^YS}9WXT$k<^RmS(W5&{vqxm+g?>K%}x^>Dht>3CB z`6aT*p326(VM6!l$VUPBJnJz^jI3m9{$zo=HSzz^1dd+UYAUDy4;bi(cbvul_aO5B e=A;rmzV#3ML9`+hzxvl-!7ItD$(75Pef&4Z3owEJ literal 62602 zcmdqIcT|&2@IQ(L5fHF|DAkS-0g>KS1QdkOOF~hQ8bS|94Z;g52&gor_s~LUp+gW9 zq}K#UfJm<)(n1L#7k%H~x!-^9Ilptyy}vyt$vjVzeP(B8XLn{k^IlI^lZ}Okg@J*A z?b*{O1`G_0NCt)z__Jq@@0=>I>pA{7;boxtn4z?fZ~6G*w8JBvM+^+*v8;zL8IP}- z-JhC!F)&>G`#SOAMjaCa!?xhFCy$I?Tdhqpd2<@`wr>b2zqxhmI`coeOFGF?7dZ7e z8CfH5n4Ms?Au|S`GMX~4`CK@@V{lsi$;0HQsH`}FYqxSYde{2yq;$ESEn}t=<-I%| zd@2;7} z`;Y#8vOMpHlbq<;1%GRY*PNV?}c3GfwhBRWthEOy+Wf@(z+Q4T9 zt~;xQ&^4yrq)!|K;|^QDe|1^p#Ief8G|-9{A(|S~I2^?Uw~R0UUTD~s&3D2Qkrh<9 zpDXM511RZ|VS8!hIU@1mId+!`%ulLSfxUDIx3;a%j3eyx7oxoF*JIAI`tL_PMiyCG z|2IiRJwlE4+p{KD87wZJ#~Q#|^MVLC;r)-&64ugKmx(7?TDVfthIl(&mXhKFHfNCl zvKDF5SFclE-`N6{byBi-!`>N-{uFxA#Ie)9vdKdS>uO~hT$oaI^V@Sy8$k{&vl4kP z_$ZDIu=Tcy+9N9-y&(@S@tZxxWgFOxvevP!lSIQ18}hgZ^DbYr{NSSA{=^%rMmgm? zqbw$RNFV2k37($a2T2G=q4&7PtJOPIK$b#+?kDW7BMGSLXm{jrC9LjTIN!_vq@{bZ z>UfT9Thn0gfgzpGyK^ zS&bu_(_h5?RgQ=A$7ZO786EKHtLLmNsk$AYA&FMai$cz}2_SDGojy6^YA`E|#(E$Q z$)FBQfJ>U%u5pH;GxrC@PWm}b#E08G;6VA*SDY?6H~$;Q@zVSs7WbpT z>3@a8@W0D$qsHu^>|i^FyT%z?Z_RHrFcc-qs|LMH`16?8C;z8a_doyNqyHc84gdEu zp3j zrT^QOA0`|tyHJFiEXV zP?FJ<+T@g#$XAx6&0P?|J(*KXmHLR0{_lqmv1-R%K76N819jmK9FGJyJ*lhqbhiJq~|t8#egkvXYK667O}ECuz@sttZ`TwHIYM zgyqb(9#q-2uO4jozvi#LV=U6#i={3!c>7$khWxvUFfcHM;^fv@U@f(tr86a-5^s>+ zlrP|s2CGczZy!?%?5ve?I^lQtvS8J3ADqI;S|Qibs|B;hyBBKDM9N#*3I%3oIB@&)*IKLsZrsw%%W`A7P~AEtH1{>-LPS9?)G34ZyI zsZ>A3+1?Lz6ufnt_UT1HR&Ci){YuPHWO*>CvwJL4Uhu={=O@K>J~`dq!|zI2(6LU$ zA>W-T-;@#wj=8gDqn<3Si?<=;2yy3y{0E?vfOmgp-9TM3EMB%i^GnqRwHQY2z|DQ$ zuCvUT#G6m!i-f}jv9BSU%%iY^^ecSXaDlyts-U=-G&9TBg!z>(hj9Y*HERe+JxULu zT{=|o25MZR5fYeyD4{i=XGRPCsZr`8Bmmg#Td?RIaWK;^!jXXgkxUuC)hj&0Q9Mf@ zs`}Ln-r44ZY`%YW1}W}x3wmI_NTeo6m)8dGVhS7Tv1RS4a{>nbTG_aJbR8mG*--lu za#@bOD}b-wVNN^4(fv}TmUZr^MpNE6Zo5L=acNk5sR(z%VC7>C4OQ2K;(yq0TH&zVyQcjr z3j@a3>cgzwLR^%cJDDD6oHH-K;@f#XEnxjxnjfW(LRZX*Rmi~W@8kr8Cgyd z2WK~#;~;OMvBAIG+3H`H9Z&=_hok-KGkogtQawY7@S5YZifD#gJkL&(S(wN( z)D&%vkl(S~G;$Pg&$9b$cwM=(%LB$Gs*)x?;73}kE8OxqEF>>LO$s3ib{WiIB_h}(W(kUj|o509}E*r^**dbpay~TTjr?vtbR8C7cYWxR3u-m<3h>Y&Qa!5$w&~Q+T?f%9oTMm z94y`qU3TU5j&7&K3^sEKY)&f1u;*?<{@B=G&z^G3l$Nn8kSPw{vt_}~;F|ogVkkj6 zSpF;lT*?RND$Y>nS>G8Tp9TyfT;Y};i;ii-h2=Lw4>x`5fe)qC_oxMqUu0`1-J|{Y zf-P|kIW{+nI=|e`sImU|I6I|yHY7!AVd~iGQSTz=l|P?{txs44S9?~=h<`0U2d?vG zI`TJlQ&BWQH67K-)c&3gTf`SK8ahBmuR}(@`kpR)EK=t`ecfbPZi&kY^2V>{2|Jc? zvTZ)CNr$NHQ>>x-J9jdH}L-+oV^_;pgP7s{!0!$Y04O1YqqPn6IB)9HrIfOqzT;!w9-q$oAHwaT{lddR~E;JJL?pEjLN>3B* zaO-AFT$v1T8?+l$F7o9zkBf_i_oU4~HH`q@=vcZWq`wY25gVSlDV9|S;Z zCBjRa?LMQgKp`(m)mrDVB{TKlZWZ=LG>_N&l{!wsIm0LXTR=BUe<&QwA>wCB29Db% ztc3!3k@{*1BCUDGB{?xk6FJi~XLG}tYb(#uFz=Sv?&!oM?1`MXiJqRWubBFG6KRs$ z^WU$YE-g+KD7xgwS3Gn^Iu<%mZz+nEGIi+S397-XblNW(H62Z9`mg?2K0v*ZCOO_Z zLWrBJm2uHlr3_TTg)9VlFu8By6|3Hv_G%L@)?qiusF8AQmaB8L%6p~deYqtjZgnN;jbe^l7{imw+1nvq_d4gQ+`+3*Z+RE`iU<7{mbHYTY&(@ zmxk-jI|s8=6xv3us3|Yr?Ois=TmS94GEA$DXH!4jr{B*iqwiUDFS!TNX~*MdY#J_a zW9fHQ3$&ZG&}W@VB9!bJW`^>nW*hdaXr@8Q4oPUgqNxly%xl2>4f*uhU_TQNgi_`d zOpBucnz0emd^pS^z_g2-_qEE5*f0K49K`Fev`AirfRmNqyaT!iNw18kS=RfQoRS<% zuTg_HQj(8+vbel^x7J60u2Tqm+i;;Jl3VIcn|Zx)PY~Eel!zjs6k;0h^eM@8pgR_; zV%Ca^HQ9}blpQWE$6&B$!q-|$IQ;;9CzxtIt<(bp4(rIWo1pTgx$JubUiAC-9;^ig z{Z1O*#U^&wzQF|rAgy$G@~CHg4cnedc6e2r1j!rFs{?@CHAQy_U`~UNvE%8BazOYI znVE)v@sH~|Q49U}a4sz=lW5fpMjb-?1ank!O0mDw%Ofl1KPGyze~0W$pmtVH1KxV0 zcz2GXEsYVNZ^IY&Bj-S_0ew%|FlCh>4W@457kP1N2&EL9*-xa8gf}*+ZLi3Njm-RF zX$sf@B-`u2h@W;LBkvH>9xqNgku&^Vw&iHHDIg8q)t}Y%Yen7OR*UsTP6T%QQqmKs z)lq{AeY<0(F1uTj{&SjVLRjN^aC=0za_&FTUOUqfm;K!{dF7GXDX6gx2of@NqiL_j zLb`Do1U|U6Rk=m!8}-T|j#}d|_4UABlg?4Aao{Ac##l^uqs#0>h2N*YOeOu~O@WBb~=SVN1 zY5{%ww+)3>mdQACN$$CEF^{IGHKL>|{83G+i8i)pw)tHvo%nchQpqf=K|Y3`>g!Bu z6!xdKVP0|2O?Bt~My-^zHySR*->ZF#muD>5^6ACBMMV$WXtvH-DoihJ+Z1}w{D(qtr`SEDf`D-Nky1i1zHl1w)5<1mgo7{R)#u-U!)-> z;f*C6DqqtC%Vg#S#!7YIfk>29@bg(A9jv%@;EX{F$QkKM;v@B4ta3imKT`sb09gp0 zLW<*9#fc@|4OmmX6?Ooug+0$0k}3I?SXw^H8TgWiz1H%Qb;GkTJWh&T9njlCImJ>k zsl`1BL%9m$w1&acPyt+Jj(?GTyAM=qk?xkYARZ^P@FN)W^Yo3!Q~Q5jJo2G z%O%loMP7aU{(Cd_o4Ox{{k_uXqoj%F%w*-XZ99~U1NtC&1#RysyVe*(rqFCyS4+yy zoDQynJXHisndMAMh4S`lO}PdoN_>~!T+~=fC0LDIl1s+yscXAH#cdiKUW^(%TFf*#`Q}f>c}Vwa(LT8Q8-T^*6h>h77U0s;Op#F7m`S|QX=dW2NL`|6&t1g%sV$RApX z_MpffOp&CzrXp2Hj5Km}v-8I$&6HkfZ4jnWZKbFqK^C%Re)}GZ)yEB=s{{5C=`?A2 z1rY9QcI$arJj<;*tLQmO*mdkN7d4V3Y^32!l^L|0dbMQ(USN@!oLj_rYTS+K;JVkf@O&E7h6jV*4c9l^?q z=)F6%IVJ`y)K(qYBjdQ!Yfd9e19iia6>;vx_Nx1d7CpZ_o~Wd0E?2XH@zvH-G1l9Z zT64`FhoC13Re5MNJBUY+5(t#SpGT_F4AH)G&MtpC!PDeJ-pDFWo&FgJ$%f%U9m}$92^}jhYmgoz>q{ z0raWT7|EI;r=fC95R98(;zFL|w*cVMvblPgMLCZ@Il(#MfwrI=+USGADm#t5pv$7F zSNo%KmS%7{W;j9o&`AevCh7;dB|Zq|Xe_l(J81)rhWWLcCAlo_0QCP!reL&e-BwEO z+BW(2(kwWdBx>BXVM+1j*0jgQs7F;r{CH%zp(>Ud4r)yr=^81I4T`VYGgRK5a6x3c zvCg6cK8&8Mg6}WZ?{r#6?|S+kg_4rdcKPZ4>xKxEF~%)H9qrWu_BLrsv)71}o-VcY z1@C-9S-;D~7y>axsYsWT1Z`|tjl$?)n_jyDf(8GnOK6ukzctGO?mL#*)%Z;DcBQ=j zEn@!|nRGLu&Za2{%;oeRY<5)?32?L=*>-N)Iy8?oTL^6Aq0a0#c0)^q9!m%#-hCVj^mz}SM`U?Sk1Txm+z(FzRT5LOk63>el-8R&YzCrZ>N;xBq}2>zvIP>dT}(a zahA#4ULD2A;uUVQ6>=9Fk}hq{LsJkn+ULv~Tks-FvY|?7%pwCzl87;Nw5l)PzTOw-|2 zFJ9AN(Yz22GY8j{oZWWr{qjf4piLa~} zWP$Fzf_k4WiPid15>+p45=54w?V5h$xJO&BGv}7((CeCsm0nm0@FtuBuI$e{wO_qs z1x{4Nxs_Lw5?XIKgJ&5hHy^@lNSUe&yuvR;j#OFtfEoyX{03@pieEyE_6-O9=Sij zH8LwzM|HKFH+@8uwvJ4KAQh!R`m=EClZ)yJBW<9v^zQ z=CubX7r}`78X%nR_kPARZz)}N8R;v49n)Vd0$XkcrS{^;-4sAS>U~7xLH!iJBFJ02>wWYn5HC2%>6Om3TG$190em-n2C0*=$`|zo|P}%B78DwsT*Vd!AZE zr0dACd|C;_nNyr17Px)&wQZ#h68k)y^Q=O@lXsQ{6%)9}9-l(hAbQ^^tU9x~@MkuX zqNEDVK%a7?#LHh#ntkFUUclJ%$doQMOGcz93irI0SE?B32fIpu^-|QFVzw2IRU@P* zJQH19O-G`c{c!Kfr&}8wf2QrOwpQYc^A#n2j462b$z8?Gn@sM`b(ga3?wEeqfg2RG zI-CC(S~JV~(dV&rbBx-rb$bDoUDK*yg-CI2FhQW-%NPBE^-iVDFR?xd>a_;V%U=~& z3Keyy9RVW&x7{a$$1H`6f8n9cDwN2zmZ?L&k{@s3J5(iv(#j{OwBrcLe?F~dd&gmR zC+DhnIqaiv_LG8PKU1eQFY(naAb*`dNtn%I@unal;%;he^-`JV6j4M%jNqLqwsujB zyvCNi*=kDBUAwrrQukH`w>CM>0u9O%2neoKP;W1?*3P-pMJU`+A7ZL?tug8SlKa-` z(3rO}ujP(Id|KF8dF+;FRMqc$B4*R}rwE&U8L*%8g8N;s@-5t1V%X~sHP|rw&ziP( z3}nF%8tQ~xWyle%w zk_B+{Gq`l8snk@%TRB4heYZ#8y0++;)nrOxmUVjdJ=(;|i$U)gyws-Q0S;{fVl(8H zzTX$UOtoa5P7LDHP1!-sL}RWawg=q7kmbJm-y{B;eT1xi;$^6)^#q(u%MEXrmuuX5 zXo*Eume%Kn>38HhP5Z{^-T++a@V%w@qbtm6s7%AF_Z409n~S=o!3%t<2J4?t{;xTk z2BtRvpOsi3f{W#zKa+Z)I=NVCGmG21gWuNMhfIlN5mQW4(?e&n;FqR0RSaZe8!eKC zLgxsyoMxYu--CxAT7Fh5&^8-j9k%_BBR{*nol_22JOQ@hUQ8dDs_f=F2`6mLJufXT zrQAGS+V5uC%wAp881{Cp!==?zncfmt-|&6f?${}Ava=mAuW_7d*j>)wQYd!%Qssui zO4wLL4wu9E)YA)@I-0T(8fi!Y9mrGaEGez{YuXt+)xvvF#mn%@gQ^Y0=jt~>uYbW+ zllbmK%)y`R=Z&gho--Cr2V;xXEim-L;?lH(8}=$&V?v$J`{299d4&KOv0;0#QC)p2 zR3}IKQyhRmcGAc*_0ii2F`!(5PoxoT>oCAeiTxw1u~RwSZzoXHDe5!UY5^nkL7MbT zIw5VSbq$vav>t`#XgGgwa$9LLhs4M8mL{HZ8ySPxApJx@@-h7bWuaA4(qYj#b0G%1 zpxKCmHzaIH@;+yq4J6VQR6T>^dajr~6w?-taUPVJeYy$BPUq$&*tL9JapBW5U*%rq zl~g^tKr7rupbYbUtNf#{=2@XXkb76m{V@}&l+=e#S1U-(Vc>0BW@@jB5+bQtv0h3m zKU?@=WXvB3g`E8PDj&@i!Gi^wINAjmp?vLgzvj_}XzWHwvG-(9|575j)Hun&^X)&Q zXREa|h21g?Ec*a6^{3!LnX%25xyo0=M+cq<^9+_1A6Nx9xCZTcSo*4~Vtw*9+@fNf zEha^TL`Pe5Fd4{-&}3Ot(XEZui*x*1LwzK!LpeX=a+e05l(Gk~gxdEd~N;s%i} zA)P28r6T<{*TI4YWJothirt-4a#LrfUf1cyZtHh_?mv!ru1X&+XqGSxcq4rwZ;r4B z{0pl86nQlCQJ$^;?D;IJAs}F`Bvg8AU*6=qDdx8POlHwN0t2|-hM zleE}?{F#IRv`h@m8~H^RJ8!G{a#J?BQW<#k4LhGvW9Zdf@Qxe}@$>|^bBIlrkQQvu zO7kpnF7gpO-sRY##nue(7k|S!{2u`g7CQN7-L_OzCrT- zDDctz+1EH0NmXfZgRB@%1CiLh<6mPkdGYcR@igIWr)uV2)Udtiu)r*pXL8FqTDf@1 zci5~$zh)I@Gb~zpG<-(#E|*WFSX15W=b(D;#3Ot>6tdypx1+8QZp0ehxFPlRYxgc)kvMfgnB2d_?L=a)%q}io zS6kbEyM9uDjR9BhS)&J<@qloxk4KlyGoCq%pD+^kBohSIh~_n2`q{ z%a5k_E4ankE73|5O<$?3-dJt;o2^zvKrNpcC5FKMWa)q>UIP{%HqQ8vD$zU?)@c1UJa#@MC6hQ+3r6)s zVV6b)uq|iW0}B<=5-M$}+Q;!=!`GW8KRTrJ!?thx!@jRl`07TL3Nyr9a^u5iz2{l; z=F3Dk(}jbJMz1|Ao`OFI_Gy`5sKgP=N$2=_*IpFd1a+=Jh&&+$CB$E=%tAox+6=0M zvl2lgss)U0Q$+~=Z&fFJSBqB(fLr2f0kb|UdeIS)x>TLmNofBL0cW-#^udn3r`u$+ zPj1{q|52nXU(Q+8LVOE(cw)8!IJ*oi3d;<6%Xhd1nJ!evr~%bXngTcH`7s zkbBM1p3CRY)M(tVJ14p(Xoz-Y8C^``mpi#HFzdu7eZ{D43`n#hYvn5IaS%D1k*u7B zh=$rN?qRB0S0@i_n%s%u&XB-q*2LasvQ21Ed|d5QveLH6w~AUtcm{a8^Gj(pO!W%J zl3>uA>03}P4iT{(*4>wO%e*gXy3=HBPS;DdwI+Cik|eB8bktv#PmgkkW{Ba;#Z|Mu zmABW+^Ao0bR*Freg`K9KOww8{Zf`ePW)O$WU*b06Y=ZSevq!3e+4k*ux;LuI`Knu- zOG^EY9$Dg)9{Mp|LfdH;ZKPGWVL;{tG#2s61|lc!t6m!A7pUR5S1Imf7B_jY{=WR6 z#o~@6H?7VRD<`GR455#d5PJmEZAKh^GN7ZnhMM_{rB~l(`?Ylk@Lm2%kKtL|u3ZMM zEO5wxQJh!yhlJXFTf-GfzGV3ab@@3buNaZzDg1XURYazPlGz7~kAurmE!iF3x$Mx% z>lt@`#4f+#z!VRr6@#gVA6t1fMRrD$V5_IMOgAsL`%l?Y*B9*&jva}&z(IML$&pB2 zF}R&0wg$M|EI!#iu`cZ6W^Vg0q$TuX>nnF)%mbg&0aaoX(gUbm1Uwom>N!m8oMKs> zu;x$odPvqu+*0;>f?P1^44YpwZ7m{7c^y_B5Vzb``=Pqa`i(b7%H7-&;;j@L9Xbx# zuT;v4Vzm@r+`Ch|_0&>_bu}kR&J?KnyFw+s##nf2+Iga}5F`_8OdC+cqrLO3n%mBq zrAWHs8fKeup(LhwZqTR<(B=8Zi${A8YlsrY5LW*iu(17f;wtgGn!%TibT;R^H(k*t zBu`Q0ZwDMIxbNYLXjSniY#-)br)sNWF!3T#M@)6dQqW{sbD$hkrp|hw>Y}Lf zcKh?$D?bzA-fFf}?arK@di21Z$aR{3F?-_TK*6?L!R$v|-(;+WEB+OrAk+*x-P0;3@! z5GrNXnuAqsfG(FowT;?zfD2a~SnTS$d%1~yS=XDYo)(GPMicGL>Drvyn z+y9bIIl9#=v(k~;@>JT1M^x1obJ&2}c;2NDjoH<2I^5zRDVyoQN=Rc;U7F8$Kg=#J zGXbD2f5K5Ai-n$|NU-I8>KSQYrPko%XeYPnRwGrqqG9#~DGaoO%{l12aP~LpI9qz0 zX^XjLHlbJO`SBd49_BGOUVMwQF0gEiRbh=Tv+kD!hd?sB5ZlP-Gtq`X* zHH5!hCNQG)E#cOSpfwQa)Wc3bB)v`27t)C$uC@W`BGUIQQQdX*uYNnReAy_lx(As2 zkisX59PSF7IhnvO`WFY>Z!ix6A^6?b>q_cF+mJIJ@l~$HhLDwq#;oO$`KfmJita)` z!(R3kT&svFk0RP5MHyA9^8#&C*MOaQj`lc>UJfb$(sjA)Ovt5gxC1)Y8m$5VS&B73 zBLj~fUb2Q8p_Ir{jhhuJ^qHGY^k4UPkO?{QYI$=|@udIZlwB6f;H5(eHA#*ZK3= z{^%a7;(Jc-_Y0ZVQWamsf0ntIe@a8>bjgVp7&APmv_W$Msi~4$$jCc9XIhz+aP*yz zr&!-R^TABwYD$d&w%`JAB@APs-8&muaDA~W&|L&Vvk9skOg?+e8iU+Ik;MS0SjH*V zP;DU-7j}$vTFe~^XRK*>ZfZ%ehMg>7&U4OAmsQCgl(ovg{3#EU5tvf!i}1(2yRNLu zTLZS!UjMud`m9&>aZ0~Q>JYC|q~A_RKIEkg-`;J^qzb?bdSD_o8jH(a0Rn>w+%PdO z^T6a(1Uszcg4zK^Iy?;5oQBQ*l#qSfEyd)heAw#DF|h1z(koHgzM(ShmoiWA{8Kib zKy+UX+vxJ=;$ts?$$C_C->(#)#cCOR3}Y6t1T5$vf9?LodB^|w7t>nj{1czQ=8q^= z*8!}oaOHmS;Wv^5=qp~jlwjv`W{EeON2k7!`0;{5O@M9qmCA*Mg)Rc&!n2-{bUV0X zrQz?g1^FDQ0v#R303PpT@C z2nE?(=0vpy`k*SrutcKYaQqbR`gDvEiNXEB)1hqZ=3(x*;2{f;xv3wML0W+QAAp^E zwsBp|6=ZSyD!Sn?%Fl95o&aYl&YRo{E;%1`*z+cEgt+3T=Ci%XPkCpzxWe$c9 zyuEbv(NL-8e8!zHZ|s01Cuzu2p;H@IKqqDCQi;@Js z#~-|H{wk+NkWAhDC;s>VMWDYnCF>k}Fq56SX+oD1a`;u7OE@scE~}I70HMG0}!@oyXM)hX0^eQJiU{+Kzjnv+mzRY?psCyGzzJx?-`&{@rI zDs_uoV27=TNYGS8mAgV<*q5picSLoiC^l~zPeG*8;;$X^ble^`|6$AXHT@24ch{4& z&0^^N`rRSzaL!iS=~Hn@&_*O!8my|DT7Vfv;KSaHzjO|C280uaV4Oe>o9dq`RlW%( zhw?zkEJwF$W5nZ=C+8L+KWJMO312@I{exzenoWt7+9Hc8%xV3W^@^1dPtSpykd1Zq z{s~n(oL`+aGqH8z;5YK$WQXqgM%V}M*V&7k73PNJHE!tVF-gqv8+|T6WTjgbD!&cm z6fjUbanxQhhq8%yFidfroDtlfO|piVPkgg+Qstr4J>iG!6S|&hV}?@M^5~quitzl@ z;%8r^4cOD;WNrbeI69K_jen%xRl4(>Su8Kg_}EzM9D{Ek8ms?>;I>p6^=@C2lL%~Z z`W>b=GJ<28Wv6Y-Kn@y8@)v|et$(CTnmuC0luDg|Tv|RZLNVt0^UlD~Zy-G!_UoUs zE8{xl)gkD3v|qW&`7$x}7#TXK?&N>v8!a2hn0l_<`V}Sz=T*G=f!7Mb-(e=u&J6XZ zi{lnj{FLKl%k5mI6URF9=beE;iS^%o;m_Cq@70IA{viYL8WZ_nwJYwA|IO+AVd8%m zHu`^}pZ`Bp)AAn#IRW24omO&D&o3>hVuUg}9P7~GsX)zoDO-HHWt`E275Nut%;2t` zzycEN>qNJQbaix(BJ>9EhOrKd^WOGnko)W>!@m-_{~KrR+wE(A#P_HDA5+BB&`Caw z;`AqQ>9(mC;fDM#w3N^D=NDY=j*YIf%^{$UZ8YbN%33HuS+pLZ^Dy9zGyr4({_VCEWfGv zAY-av1$XQ3KthUQwy(J=WGz2(4Sph_#=G*n-Z~+W_R7vYPWx4F%5KML5q#Tdcfu|gp<=X`f`HT(>i9wgq_h0 z{O;^YyW61Q?(TCS;`k#K;qHV$ELE%KP6LwqLfw+5=Q^zwG={0f9^( zTZ#6Wj14!<*+!dcyuIXeHvqd}5Ft083zAIKB(AfpjOjJM#L0=2Kb5}XorPzId0iQK z)ZxFoNSewnL90j925lCNKYf&BfdrA2^51!BMY#%EW2rF17v1%n==Ogx@Jd%7t!j0G zRhq;NmRin28aL$|?ISK~s)D=Ry+w1woWnu4e~opT|IVgN8NRBe>603#Me{`8jZQnG zje~lEBDX_Y&~8u4{$iDnGsA(Wk$@bw?u4)Bvs(!5cdMGD+4ch=@(8yRF_qt?@w+_` zE%T4gBV{jH>M0`OPe7=&^OkeG&x|?#4qJr76V%Xo$rA*bMB!=A-eqSf=%@r78FURW zcU9SUnri4m=&UIHp93+QQOt=+SG&6uGAE2#(ewoIg!0}is=M}B|AM&2OGo-Ex5>h7 z6zjyqHm)5j!F>_kxVRgIF?ng~ z^U2yfME-3>d#vI5zAdK_^<#xf;FD(=w+KfyAE$Qrc*iXUMP`VY&OiZFlHDSPA&Ml zlONxXNp&n%4OB=kE`tOB%7WRb5Wn%R$qEaq>X%F!eVo{7M4RU39J~o+vi8?s9^@`= z-$(oufAG+%3p@Q?j(_jBTHeueRS;)s%k{pkgcq~Vp%~jpX@jYqd#axQ7Eb;jccOq<6!)auD<0u(>s$F!&?p1gWk4R<%NpNeQ%~8yHt6-y4oUR>} zDUiubNf=+Rc+<#c-5o0mdzA;f7 z<*XDK*NQ)0*59zZKk+a42)vi#9eA}(b%T#c&@SCdo%kC8A~q9O!gt+7GS;4~?#Rv0 zY21A=Agw{eZvEWRep(gUF;y^to9Y_pa|np-+3$8avD(5bU_=rUGeWmN>LR$pMFH1M zRdnj_u1yoP9K)?Fk4z_Weiq|96`@HLz5BcN-GB!s*L^vsR8HJ^?z~bj5&FAI<;2c{xMu*UU(TCiws)r@N5NKD?Q~iASp}KN47;YSY6|Vs zos20pu3#@Oi1XDx{-TdwkWRqM!l8)CoYR`@%f)1aAyW?pKJ2sWyW0}>sX0AZ`;@-B z`@2vFs%e8p5$?K%R{y|D+om8ws@2_}m%RNi5l$pjdLCT>-}6VWpnm!ail``!jV9;Z zCqEUpYo>gmSXq|!2v>goz}?FA`lTwt^A#{XGj~uj9vY?3Z$!BTv9f&%ld7uPtAZ3X zqO65qV+cZbgOD2n8R901SGSzKi$cY#`%_T!42;zqaTKI+yXNhxRtm$nQOnFPsw&=2 z_ZNSZCo~T`b6H4gy;&gIhjIBhN%}cJhmXpAA-kmGiL^y8lIFX1+%i87s%h_i`~IGn z{7GV3bQV3|RZg@0{9tp-4TG$LyIeA+wX+&E#bkJL2WCy0sya0tWm7En>nUzMiNM$> zE{OpZx5C3!;cJ1>pWOsf=yc{wCSz7z6IJTt#g_r3av|14*qkCBGhT4}F{t1mj}5xT z^*heZ@iT=xnf{CfhV}@KJ;aK6AAZJ}W-Us6G{v!#;M*riyb<=`(&3!!UgXV%8g>;-T6tS#f;0)he=i=_b}pnJo5eXB z;y9)CsD1AnV+s^083gkAxPQJ$r#pSqZ3)@NOV?{R=`2=<1a!Nk_^>!S=j)8yHDWeq zF1%L9##yI~&8WHPKw?@qFVk{I$Sl%HCJWZ!SK1mExQu;1qHckY4DgDSsvF_ofrbYe z&or{?5Buvg_4HJJR~Wh=d%U=5Sz$OSpx3V)L6^2qwF-hFCciRcHf7mysTjCPks;`u z;X2BCHFFWx?n&bZQ^ zPBK7wkOwA11^iHz%W}tG+GH8*;AJ;AC+}b}^ySfWYzxz7u?@QMI@pe@R>{a{1P6G1QeW>bu03oywO(4@?P3% zn?26$s_H}I?*Vg)Iq8AD)`5p9cfD-}cOOK6f#o!J!}E8=bUs%g%++Q67?V}w>RxDq zKE0^ipvhLEMhb4z9}62N7y9#7-ssUw->1eEw&E`Rl?ETjX(a17Diy})_febgVq}B@ z>!Plh$C#^zNlX@3T*Brzk$H8P!BSipD@fzms036_S0u?oa5lw;ngI28z8?+`k{?x^ zH71)8aRwU$LhTLD37LGeafb?N_9+DNwnlYL|Gw|k1;en{jp*Tox-K(Tay?6JNe=Wl zM>{zuC^9cf8}4DB+2}DDxy_j0>r_>ya-1EJhBH67b$hJY)JlaSBI{O@0I$oP&VYLl zq?_kF;o1<`cVS*(GcTk}4Blp6g}F~@Q3L0VQN@qRb?RuL=AwFHqa6n)hwF) z*aKB?8PWd+#AM>di3m`;9yJckb#WEZ#v4su*~OJ~K$QO;wjPEbtHw_)5(aaP!}FQi zL2~x{>nz9OaC#a{A7gs#DFiQ}!E=8W!&I?%B``a|{MG6?k_j|uXSWmkGvLu@;+yk3iTO>DSoTJld%zg=z8>i3nB;qA#C^fAM*ZtVBo zEB<@Jy%Bjgrfyn;^4U}19InGhpQk!x4uQ{zu4TPe0w->+8&3L`8b(WkJ8MAso;9wO zOz(YD{I+8IvY3gE8T+#!tB}AH*+h7Ed%FXl9&Uo1u(!?0U$LMl@So)oVSltLa?_lt zBRF##_L*om3TO--v}`aiC-hv?e|M-b4(1RX9Km+U9Q`O(*EVjb$~$x^e8eZuPz@4( z%mesUFSaSkt5g4lC)ePMg5_86R_;I|OFf;BQA(zIF%h1i((m8&*}bYnhRGn54>(

v~ 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 diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown index d8e1fca87e..a54132b01b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown @@ -3,53 +3,96 @@ {NOTE: } -For time-series applications that produce massive amounts of data at a steady rate, -**Time-Series Policies** allow you to manage the excess data in two ways: - -* *Retention* - limiting the amount of time that time-series data is kept. +Many time-series applications produce massive amounts of data at a steady rate. +**Time-Series Policies** help you to manage your data in two ways: * *Rollup* - the process of summarizing time-series data by aggregating it into the -form of a new, more compact time-series. +form of a new, lower resolution time-series. + +* *Retention* - limiting the amount of time that time-series data is kept before +being deleted. + +There are two kinds of policies: -The same collection can have multiple time-series policies - each with its own rollup -aggregation span. +1. `RawTimeSeriesPolicy` - defines *only* a retention span, which applies to the +original, or "raw", time-series. +2. `TimeSeriesPolicy` - defines the creation of rollup time-series and the retention +span for those time-series. * In this page: - * [Time-Series Policies]() - * [Time-Series Configuration]() - * [Code Samples]() + * [Time-Series Policies](../../document-extensions/timeseries/rollup-and-retention#time-series-policies) + * [Usage Flow and Syntax](../../document-extensions/timeseries/rollup-and-retention#usage-flow-and-syntax) + * [Samples](../../document-extensions/timeseries/rollup-and-retention#samples) {NOTE/} --- -{PANEL: Rollup Time-Series} +{PANEL: Time-Series Policies} -The **rollup** process divides a time-series into chunks of a specified amount -of time (such as a minute or a day) and aggregates all the entries in that -chunk into six useful values: +A collection can be configured with multiple time-series policies which apply to all +time-series in the collection. +*Raw* time-series policies define the retention span for all raw time-series - there +is up to one of these per collection. The other time-series policies each define the +creation of rollups. Each raw time-series gets each of the rollups defined by the +collection configuration. A rollup time-series belongs to the same document as the +raw time-series. +
+###Rollups - * *First* - the value of the first entry in the aggregation. +The **rollup** process divides time-series entries into chunks of a specified span +of time (such as a minute, or a day). The data from all the entries in this span is +aggregated into six useful values: + + * *First* - the value of the first entry in the span. * *Last* - the value of the last entry. * *Min* - the smallest value. * *Max* - the largest value. - * *Sum* - the sum of all the values in the aggregation. - * *Count* - the total number of entries in the aggregation. + * *Sum* - the sum of all the values in the span. + * *Count* - the total number of entries in the span. +
+!["Rollup time-series entries"](images/rollup-1.png "A rollup time-series' entries") + +**Values**: +Time-series entry can have an array of numerical values, so each of these six +aggregations are made for each of the values. A new "rollup" time-series is created +with one entry for each span. If the raw time-series has *n* values per entry, the +rollup time-series will have _6*n_ per entry: the first six will be the summary of +the first raw value, the next six will be aggregations of the next raw value, and +so on. + +**Timestamp**: +The aggregation span is a round number of one of these time units: a second, day, +week, month, or year. The span includes all entries starting at a round number of time +units, and ending at another round number *minus one millisecond* inclusive - since +milliseconds are the minimum resolution in RavenDB time-series. The timestamp for a +rollup entry is the *end* of the span it represents, so it is a round number of time +units minus one millisecond. + +**Name**: +A rollup time-series name has this format: +`"@"` +It is a combination of the name of the raw time-series and the name of the +time-series policy separated by a `@` character - in the image above these are +"Heartrate & Blood Pressure" and "ByMinute" respectively. -A new rollup time-series is created with one entry for each aggregation. Each -entry contains the above six values for *each of the values* of the original -(or "raw") time series. That is, if the raw time-series has two values per -entry, the rollup time-series will have 12 per entry - the first six will be -aggregations of the first raw value, the next six will be aggregations of the -second raw value, and so on. The timestamp of each entry is the end of the -time span that it aggregates. +{PANEL/} -!["Rollup time-series entries"](images/rollup-1.png) +{PANEL: Usage Flow and Syntax} -The rollup time-series belongs to the same document as the original (or "raw") -time-series. Its name will be a combination of the name of the raw time-series -and the name of the time-series policy: -"`@`" +To configure time-series policies for one or more collections: + +* Create time-series policy [objects](../../document-extensions/timeseries/rollup-and-retention#the-two-types-of-time-series-policy). +* Use those to populate `TimeSeriesCollectionConfiguration` [objects](../../document-extensions/timeseries/rollup-and-retention#and-) +for each collection you want to configure. +* Use _those_ to populate a `TimeSeriesConfiguration` [object](../../document-extensions/timeseries/rollup-and-retention#and-) +which will belong to the whole database. +* Finally, use the `ConfigureTimeSeriesOperation` [operation](../../document-extensions/timeseries/rollup-and-retention#the-time-series-configuration-operation) +to send the new configurations to the server. +
+###Syntax + +####The two types of time-series policy: {CODE-BLOCK: csharp} public class TimeSeriesPolicy @@ -58,26 +101,47 @@ public class TimeSeriesPolicy public TimeValue RetentionTime; public TimeValue AggregationTime; } + +public class RawTimeSeriesPolicy : TimeSeriesPolicy +{ + public string Name; + public TimeValue RetentionTime; + // Does not perform aggregation +} {CODE-BLOCK/} | Property | Description | | - | - | -| `Name` | This `string` is used to create the names of rollup time-series created by this policy.
`Name` is added to the name of the raw time-series (with `@` as a separator) to create the name of the resulting rollup time-series.* | -| `RetentionTime` | - - The rollup's name is a combination of the raw time-series name. For a base time-series called "exampleTS", and a policy with `Name` set to "rollup", the resulting rollup is called "exampleTS@rollup". +| `Name` | This `string` is used to create the names of the rollup time-series created by this policy.
`Name` is added to the name of the raw time-series - with `@` as a separator - to create the name of the resulting rollup time-series. | +| `RetentionTime` | Time-series entries older than this time span (see `TimeValue` below) are automatically deleted. Applies to the original, or "raw" time-series in the case of `RawTimeSeriesPolicy`, or to the rollup time-series created by a `TimeSeriesPolicy`. | +| `AggregationTime` | The time-series data being rolled up is divided at round time units, into parts of this length of time. Each of these parts is aggregated into an entry of the rollup time-series. | +
+####The `TimeValue` struct -{PANEL/} - -{PANEL: Time-Series Configuration} +{CODE-BLOCK: csharp} +public struct TimeValue : IDynamicJson, IEquatable +{ + + public static TimeValue FromSeconds(int seconds); + public static TimeValue FromMinutes(int minutes); + public static TimeValue FromHours(int hours); + public static TimeValue FromDays(int days); + public static TimeValue FromMonths(int months); + public static TimeValue FromYears(int years); +} +{CODE-BLOCK/} +Each of the above `TimeValue` methods returns a `TimeValue` object representing a +whole number of the specified time units. These are passed as the aggregation and +retention span of time-series policies. +
+####`TimeSeriesCollectionConfiguration` and `TimeSeriesConfiguration` {CODE-BLOCK: csharp} public class TimeSeriesCollectionConfiguration { public bool Disabled; public List Policies; - } public class TimeSeriesConfiguration @@ -85,25 +149,42 @@ public class TimeSeriesConfiguration public Dictionary Collections; } {CODE-BLOCK/} + +| Property | Description | +| - | - | +| `Disabled` | If set to `true`, rollup processes will stop, and time-series data will not be deleted by retention policies. | +| `Policies` | Populate this `List` with your time-series policies, including the `RawTimeSeriesPolicy`. The order does not matter. | +| `Collections` | Populate this `Dictionary` with the `TimeSeriesCollectionConfiguration`s and the name of the corresponding collection. | +
+####The Time-Series Configuration Operation + +{CODE-BLOCK: csharp} +public ConfigureTimeSeriesOperation(TimeSeriesConfiguration configuration); +{CODE-BLOCK/} + +Pass this your `TimeSeriesConfiguration`, see usage example below. + {PANEL/} -{PANEL: Examples} -How to create time-series policies for a collection and pass them to the server: +{PANEL: Samples} + +How to create time-series policies for a collection and pass them to the server: + {CODE rollup_and_retention_0@DocumentExtensions\TimeSeries\RollupAndRetention.cs /} -How to access a rollup time series: + +How to access a rollup time series: + {CODE rollup_and_retention_1@DocumentExtensions\TimeSeries\RollupAndRetention.cs /} {PANEL/} -## Related articles -**Studio Articles**: -[Studio Time Series Management]() +## Related articles +###Studio +* [Time-Series Interface in Studio]() + +###Time-Series +* [Time Series Overview](../../document-extensions/timeseries/overview) +* [API Overview](../../document-extensions/timeseries/client-api/api-overview) -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() +###Client-API +* [What Are Operations?](../../client-api/operations/what-are-operations) -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/RollupAndRetention.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/RollupAndRetention.cs index b80ee6f2fe..182bc29b40 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/RollupAndRetention.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/RollupAndRetention.cs @@ -49,30 +49,27 @@ public void Examples() var DatabaseTSConfig = new TimeSeriesConfiguration(); DatabaseTSConfig.Collections["Sales"] = salesTSConfig; - //Send the database time-series configuration to the server - store.Maintenance.ForDatabase("ExampleDatabase") - .Send(new ConfigureTimeSeriesOperation(DatabaseTSConfig)); + //Send the time-series configuration to the server + store.Maintenance.Send(new ConfigureTimeSeriesOperation(DatabaseTSConfig)); #endregion #region rollup_and_retention_1 //Create local instance of the time-series "rawSales" //in the document "sales/1" - var rawTimeSeries = session.TimeSeriesFor("sales/1", "rawSales"); + var rawTS = session.TimeSeriesFor("sales/1", "rawSales"); - //Create local instance of the rollup time-series - first method - var rollupTimeSeries = session.TimeSeriesFor("sales/1", + //Create local instance of the rollup time-series - first method: + var dailyRollupTS = session.TimeSeriesFor("sales/1", "rawSales@DailyRollupForOneYear"); - //Create local instance of the rollup time-series - second method + //Create local instance of the rollup time-series - second method: //using the rollup policy itself and the raw time-series' name var rollupTimeSeries2 = session.TimeSeriesFor("sales/1", dailyRollup.GetTimeSeriesName("rawSales")); - Assert.Equal(rollupTimeSeries, rollupTimeSeries2); - //Retrieve all the data from both time-series - var rawData = rawTimeSeries.Get(DateTime.MinValue, DateTime.MaxValue).ToList(); - var rollupData = rollupTimeSeries.Get(DateTime.MinValue, DateTime.MaxValue).ToList(); + var rawData = rawTS.Get(DateTime.MinValue, DateTime.MaxValue).ToList(); + var rollupData = dailyRollupTS.Get(DateTime.MinValue, DateTime.MaxValue).ToList(); #endregion } } From 4d97fb8eacb70b8ca627039faea9025ee050626c Mon Sep 17 00:00:00 2001 From: reebhub Date: Wed, 13 May 2020 02:04:00 +0300 Subject: [PATCH 14/56] new API structure session append, remove --- .../session-methods/append-ts-data.markdown | 133 +++++++++++------- .../session-methods/remove-ts-data.markdown | 77 +++++++--- .../TimeSeries/TimeSeriesTests.cs | 7 +- 3 files changed, 142 insertions(+), 75 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown index ff12ba2ea6..d84debea0b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown @@ -4,67 +4,93 @@ {NOTE: } -Append time-series data using the session method `TimeSeriesFor.Append`. +* Create and update time-series and their entries using `TimeSeriesFor.Append`. -You can append a single [time-series entry](../../../../document-extensions/timeseries/design#time-series-entries) at a time. +* You can append a single [time-series entry](../../../../document-extensions/timeseries/design#time-series-entries) at a time. + Note, however, that you can `Append` as many times as you need to before calling + `session.saveChanges`, to append multiple entries in a single transaction. -Note that you can call `TimeSeriesFor.Append` multiple times before -calling `session.saveChanges` once and carrying out all the append -actions in a single transaction. +* In this page: + * [`TimeSeriesFor.Append`](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#timeseriesfor.append) + * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#timeseriesfor.append-syntax) + * [Overload 1 - Append Entry With Single Value](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-1) + * [Overload 2 - Append Entry With Multiple Values](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-2) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#timeseriesfor.append-usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#timeseriesfor.append-usage-samples) +{NOTE/} -{INFO: } -* **Creating a time-series** - Appending a time-series entry to a non-existing time-series, - **creates the time-series** and adds it the new entry. -* **Creating a time-series entry** - Appending an existing time-series a new entry, **adds the entry** - to the series at the provided timestamp. -* **Updating a time-series entry** - Appending a time-series entry to a time-series that already contains - an entry at this timestamp, **updates the existing entry** with the - appended data. -{INFO/} +--- -* In this page: - * [`TimeSeriesFor.Append` Definition](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#timeseriesfor.append-definition) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#usage-samples) -{NOTE/} +{PANEL: `TimeSeriesFor.Append`} + +* `TimeSeriesFor.Append` is used for the creation of time-series and + time-series entries, and for the modification of entries values. + * **Creating a Time-Series** + Append an entry to a time-series that doesn't exist yet, + to create the time-series and add it the new entry. + * **Creating a Time-Series Entry** + Append an existing time-series a new entry, + to add the entry to this series at the specified timestamp. + * **Modifying Entry Values** + Append a time-series an entry it already has, + to update the existing entry with new data. + +{PANEL/} + +{PANEL: `TimeSeriesFor.Append` Syntax} + +There are two `TimeSeriesFor.Append` methods: +[Overload 1](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-1) +- Append an entry with a single value. +[Overload 2](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-2) +- Append an entry with multiple values. --- -{PANEL: `TimeSeriesFor.Append` Definition} +#### Overload 1: + +* **Definition** + {CODE TimeSeriesFor-Append-definition-double@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `timestamp` | DateTime | Time-series entry's timestamp | + | `value` | double | Update the time-series entry with this value.
For a new time-series entry, this will be its initial value. | + | `tag` | string | Time-series entry's tag
The tag is optional. | + +* **Return Value** + No return value. + +* **Exceptions** + Exceptions are not generated. + +--- -To append a time-series entry, use one of the two `TimeSeriesFor.Append` methods. -One method updates the time-series entry with a value of type `double`. -The second method updates the entry with a value of type `IEnumerable double`. +#### Overload 2: +* **Definition** + {CODE TimeSeriesFor-Append-definition-inum@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -* **First Overload**: Value type is `double`. - Use this method to update the time-series entry with a single value. - {CODE TimeSeriesFor-Append-definition-double@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* **Parameters** - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `timestamp` | DateTime | Time-series entry's timestamp | - | `value` | double | Update the time-series entry with this value.
For a new time-series entry, this will be its initial value. | - | `tag` | string | Time-series entry's tag
The tag is optional. | + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `timestamp` | DateTime | Time-series entry's timestamp | + | `values` | IEnumerable | Update the time-series entry with these values.
For a new time-series entry, these will be its initial values. | + | `tag` | string | Time-series entry's tag
The tag is optional. | -* **Second Overload**: Value type is `IEnumerable double`. - Use this method to update the time-series entry with multiple values - of different types. - {CODE TimeSeriesFor-Append-definition-inum@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* **Return Value** + No return value. - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `timestamp` | DateTime | Time-series entry's timestamp | - | `values` | IEnumerable | Update the time-series entry with these values.
For a new time-series entry, these will be its initial values. | - | `tag` | string | Time-series entry's tag
The tag is optional. | +* **Exceptions** + Exceptions are not generated. {PANEL/} -{PANEL: Usage Flow} +{PANEL: `TimeSeriesFor.Append` Usage Flow} * Open a session. * Create an instance of `TimeSeriesFor`. @@ -75,18 +101,17 @@ The second method updates the entry with a value of type `IEnumerable double`. {PANEL/} -{PANEL: Usage Samples} +{PANEL: `TimeSeriesFor.Append` Usage Samples} -Here, we pass `TimeSeriesFor.Append` the value using a `double`, -and repeat it in a loop to append multiple time-series entries. -Note that the session will still execute all actions in a single transaction. -If you prefer a bulk operation, use -[TimeSeriesBatchOperation](../../../document-extensions/timeseries/client-api/api-overview#managing-time-series-using-store-operations). -{CODE timeseries_region_TimeSeriesFor-Append-TimeSeries-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample we use the [first overload](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-1) + to append an entry with a single value. + Though We tun a loop to append a few entries, all entries are appended in a single + transaction when `SaveChanges()` is called. + {CODE timeseries_region_TimeSeriesFor-Append-TimeSeries-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Here, we pass an IEnumerable with three values to `TimeSeriesFor.Append`. -The three values will be appended at the same timestamp. -{CODE timeseries_region_Append-With-IEnumerable@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample we use the [second overload](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-2) + to append a time-series entry with three values. + {CODE timeseries_region_Append-With-IEnumerable@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown index e4506606df..f9c2bc92ce 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown @@ -4,42 +4,77 @@ {NOTE: } -Remove time-series data using the session method `TimeSeriesFor.Remove`. +Remove time-series data using `TimeSeriesFor.Remove`. You can remove a **single time-series entry** or a **range of entries**. -* **Removing a time-series** - Removing all entries of a time-series, removes the whole series. - * In this page: - * [`TimeSeriesFor.Remove` Definition](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#timeseriesfor.remove-definition) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#usage-samples) + * [`TimeSeriesFor.Remove`](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#timeseriesfor.remove) + * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#timeseriesfor.remove-syntx) + * [Overload 1 - Remove a Single Time-Series Entry.](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-1) + * [Overload 2 - Remove a Range Of Time-Series Entries](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-2) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#usage-samples) {NOTE/} --- -{PANEL: `TimeSeriesFor.Remove` Definition} +{PANEL: `TimeSeriesFor.Remove`} -To remove a time-series entry, use one of `TimeSeriesFor`'s two `Remove` methods. -One overload method removes a single time-series entry (by its timestamp), -and the second method removes a range of time-series entries (from a start -timestamp to an end timestamp). +`TimeSeriesFor.Remove` is used for the removal of time-series and +time-series entries. -* **First Overload**: Remove a single time-series entry. - {CODE TimeSeriesFor-Remove-definition-single-timepoint@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +There is no need to explicitly remove a time-series; +the series is removed when all its entries are removed. - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `at` | DateTime | Timestamp of the time-series entry you want to remove | +{PANEL/} + +{PANEL: `TimeSeriesFor.Remove` Syntx} + +There are two `TimeSeriesFor.Remove` methods: +[Overload 1](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-1) +- Remove a single time-series entry. +[Overload 2](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-2) +- Remove a range of time-series entries. + +--- + +#### Overload 1: + +* **Definition** + {CODE TimeSeriesFor-Remove-definition-single-timepoint@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -* **Second Overload**: Remove a range of time-series entries. +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `at` | DateTime | Timestamp of the time-series entry you want to remove | + +* **Return Value** + No return value. + +* **Exceptions** + Exceptions are not generated. + +--- + +#### Overload 2: + +* **Definition** {CODE TimeSeriesFor-Remove-definition-range-of-timepoints@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* Parameters + | Parameters | Type | Description | |:-------------|:-------------|:-------------| | `from` | DateTime | Remove the range of time-series entries starting at this timestamp | | `to` | DateTime | Remove the range of time-series entries ending at this timestamp | +* **Return Value** + No return value. + +* **Exceptions** + Exceptions are not generated. + {PANEL/} {PANEL: Usage Flow} @@ -55,10 +90,12 @@ timestamp to an end timestamp). {PANEL: Usage Samples} -Here, we remove a single time-series entry from a time-series. +In this sample we use the [first overload](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-1) +to remove a single entry from a time-series. {CODE timeseries_region_Remove-TimeSeriesFor-Single-Time-Point@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Here, we remove a range of time-series entries from a time-series. +In this sample we use the [second overload](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-2) +to remove a range of entries from a time-series. {CODE timeseries_region_TimeSeriesFor-Remove-Time-Points-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index bfb261cec6..4964742b11 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -13,6 +13,7 @@ using PatchRequest = Raven.Client.Documents.Operations.PatchRequest; using Raven.Client.Documents.Operations; using Xunit.Abstractions; +using Raven.Client.Documents.Session; namespace SlowTests.Client.TimeSeries.Session { @@ -127,7 +128,7 @@ public void SessionTests() { session.Store(new { Name = "John" }, "users/john"); - var tsf = session.TimeSeriesFor("users/john", "Heartrate"); + ISessionDocumentTimeSeries tsf = session.TimeSeriesFor("users/john", "Heartrate"); for (int i = 0; i < 10; i++) { @@ -607,18 +608,22 @@ internal class User private interface IFoo { #region TimeSeriesFor-Append-definition-double + // Append an entry with a single value (double) void Append(DateTime timestamp, double value, string tag = null); #endregion #region TimeSeriesFor-Append-definition-inum + // Append an entry with multiple values (IEnumerable) void Append(DateTime timestamp, IEnumerable values, string tag = null); #endregion #region TimeSeriesFor-Remove-definition-single-timepoint + // Remove a single time-series entry void Remove(DateTime at); #endregion #region TimeSeriesFor-Remove-definition-range-of-timepoints + // Remove a range of time-series entries void Remove(DateTime from, DateTime to); #endregion From 3009cadc291b2bd887bd490465dc628ff8afbae0 Mon Sep 17 00:00:00 2001 From: reebhub Date: Wed, 13 May 2020 21:15:47 +0300 Subject: [PATCH 15/56] RDoc-1703_TimeSeries session API docs restructured --- .../client-api/session-methods/.docs.json | 4 +- .../session-methods/append-ts-data.markdown | 12 +- .../session-methods/get-ts-data.markdown | 114 ------------- .../session-methods/get-ts-data/.docs.json | 14 ++ .../get-ts-data/get-ts-entries.markdown | 100 ++++++++++++ .../get-ts-data/get-ts-names.markdown | 75 +++++++++ .../session-methods/include-ts-data.markdown | 153 ------------------ .../include-ts-data/.docs.json | 26 +++ .../include-ts-overview.markdown | 32 ++++ .../include-ts-data/with-raw-queries.markdown | 85 ++++++++++ .../with-session-load.markdown | 89 ++++++++++ .../with-session-query.markdown | 77 +++++++++ .../session-methods/patch-ts-data.markdown | 99 +++++++----- .../session-methods/remove-ts-data.markdown | 4 +- .../TimeSeries/TimeSeriesTests.cs | 84 +++++++--- 15 files changed, 624 insertions(+), 344 deletions(-) delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json index 5f42b3b7a2..657679ad43 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json @@ -12,13 +12,13 @@ "Mappings": [] }, { - "Path": "get-ts-data.markdown", + "Path": "/get-ts-data", "Name": "Get Time-Series Data", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "include-ts-data.markdown", + "Path": "/include-ts-data", "Name": "Include Time-Series Data", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown index d84debea0b..6c31a4d430 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown @@ -12,11 +12,11 @@ * In this page: * [`TimeSeriesFor.Append`](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#timeseriesfor.append) - * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#timeseriesfor.append-syntax) + * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#syntax) * [Overload 1 - Append Entry With Single Value](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-1) * [Overload 2 - Append Entry With Multiple Values](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-2) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#timeseriesfor.append-usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#timeseriesfor.append-usage-samples) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#usage-samples) {NOTE/} @@ -39,7 +39,7 @@ {PANEL/} -{PANEL: `TimeSeriesFor.Append` Syntax} +{PANEL: Syntax} There are two `TimeSeriesFor.Append` methods: [Overload 1](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-1) @@ -90,7 +90,7 @@ There are two `TimeSeriesFor.Append` methods: {PANEL/} -{PANEL: `TimeSeriesFor.Append` Usage Flow} +{PANEL: Usage Flow} * Open a session. * Create an instance of `TimeSeriesFor`. @@ -101,7 +101,7 @@ There are two `TimeSeriesFor.Append` methods: {PANEL/} -{PANEL: `TimeSeriesFor.Append` Usage Samples} +{PANEL: Usage Samples} * In this sample we use the [first overload](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-1) to append an entry with a single value. diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data.markdown deleted file mode 100644 index 239ed7a1af..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data.markdown +++ /dev/null @@ -1,114 +0,0 @@ -# Get Time-Series Data - ---- - -{NOTE: } - -* Get a **single time-series entry** or a **range of entries** - using the session method `TimeSeriesFor.Get`. -* Get the **names of a document's time-series** using the - session method `Advanced.GetTimeSeriesFor`. - -{INFO: } -`session.TimeSeriesFor.Get` retrieves a single time-series' data. -To retrieve multiple time-series' data in a single call, use the -[GetTimeSeriesOperaion](../../../../document-extensions/timeseries/client-api/store-operations/get-TS-data) -document-store operation. -{INFO/} - -* In this page: - * [`TimeSeriesFor.Get`: Get Time-Series Data](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#timeseriesfor.get:-get-time-series-data) - * [Definition](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#definition) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#usage-samples) - * [`Advanced.GetTimeSeriesFor`: Get Time-Series Names](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#advanced.gettimeseriesfor:-get-time-series-names) - * [Definition](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#definition-1) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#usage-flow-1) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#usage-sample) - -{NOTE/} - ---- - -{PANEL: `TimeSeriesFor.Get`: Get Time-Series Data} - ---- - -#### `TimeSeriesFor.Get` Definition - -{CODE TimeSeriesFor-Get-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* Parameters: - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `from` | DateTime | Range Start | - | `to` | DateTime | Range End | - | `start` | int | **Paging** first entry
e.g. 50 means the first page starts at the 50th time-series entry.
**Default Value**: 0, for the first time-series entry. | - | `pagesize` | int | **Paging** page-size
e.g. 10 means the first page includes entries 50 to 59.
**Default Value**: int.MaxValue, for all time-series entries. | - -* Return Value: `IEnumerable` - `TimeSeriesFor.Get` returns the time-series' data in an array of `IEnumerable`s. - Each IEnumerable contains a single time-series entry's data: its **timestamp**, - **tag** (if there is one), and **values**. - {CODE-BLOCK: JSON} -{ - public DateTime Timestamp { get; set; } - public string Tag { get; set; } - public double[] Values { get; set; } - public double Value => Values[0]; -} - {CODE-BLOCK/} - ---- - -#### `TimeSeriesFor.Get` Usage Flow - -* Open a session. -* Create an instance of `TimeSeriesFor`. - * Either pass `TimeSeriesFor` an explicit document ID, -or- - * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). -* Call `TimeSeriesFor.Get`. - ---- - -#### `TimeSeriesFor.Get` Usage Samples - -Here, we retrieve all time-series entries of a time-series. -{CODE timeseries_region_TimeSeriesFor-Get-Single-Value-Using-Document-ID@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -And here we query our collection for a document with "Name: John" as a property -and get its "Heartrate" time-series data. -{CODE timeseries_region_Pass-TimeSeriesFor-Get-Query-Results@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -[add a sample that uses paging here] - -{PANEL/} - -{PANEL: `Advanced.GetTimeSeriesFor`: Get Time-Series Names} - -Use this method to retrieve the names of a document's time-series. - -#### `Advanced.GetTimeSeriesFor` Definition - -#### `Advanced.GetTimeSeriesFor` Usage Flow - -#### `Advanced.GetTimeSeriesFor` Usage Sample - -{CODE timeseries_region_Retrieve-TimeSeries-Names@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time-Series Management]() - -**Client-API - Session Articles**: -[Time-Series Overview]() -[Creating and Modifying Time-Series]() -[Deleting Time-Series]() -[Retrieving Time-Series Values]() -[Time-Series and Other Features]() - -**Client-API - Operations Articles**: -[Time-Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/.docs.json new file mode 100644 index 0000000000..3d999de3eb --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/.docs.json @@ -0,0 +1,14 @@ +[ + { + "Path": "get-ts-entries.markdown", + "Name": "Get Time-Series Entries", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "get-ts-names.markdown", + "Name": "Get Time-Series Names", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown new file mode 100644 index 0000000000..31b0930485 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown @@ -0,0 +1,100 @@ +# Get Time-Series Entries + +--- + +{NOTE: } + +Get a range of time-series entries using `TimeSeriesFor.Get`. +Results can be sliced to pages and retrieved gradually. + +* In this page: + * [`TimeSeriesFor.Get`](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries#timeseriesfor.get) + * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries#usage-samples) + +{NOTE/} + +--- + +{PANEL: `TimeSeriesFor.Get`} + +Use `TimeSeriesFor.Get` to get a range of a document's time-series entries. + +* You can retrieve time-series data **for a single document**. + * You can, however, call `TimeSeriesFor.Get` as many times as you + need to before executing saveChanges(), to retrieve multiple + documents' time-series data in a single transaction. + * To retrieve multiple documents' time-series' data in a single + call, use the [GetTimeSeriesOperaion](../../../../document-extensions/timeseries/client-api/store-operations/get-TS-data) + document-store operation instead. +* You can slice retrieved data to **pages** to get time-series entries + gradually, one custom-size page at a time. + +{PANEL/} + +{PANEL: Syntax} + +* **Definition** + {CODE TimeSeriesFor-Get-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `from` | DateTime | Range Start | + | `to` | DateTime | Range End | + | `start` | int | **Paging** first entry
e.g. set `start` to 50 for the first page to start at the 50th time-series entry.
**Default Value**: 0, for the first time-series entry. | + | `pagesize` | int | **Paging** page-size
e.g. set `pagesize` to 10 to retrieve 10-entries pages.
**Default Value**: int.MaxValue, for all time-series entries. | + +* **Return Value** + + **`IEnumerable`** + Time-series entries are returned in an array of TimeSeriesEntry IEnumerables. + {CODE-BLOCK: JSON} +{ + public DateTime Timestamp { get; set; } + public string Tag { get; set; } + public double[] Values { get; set; } + public double Value => Values[0]; +} + {CODE-BLOCK/} + +* **Exceptions** + Exceptions are not generated. + +{PANEL/} + +{PANEL: Usage Flow} + +* Open a session. +* Create an instance of `TimeSeriesFor`. + * Either pass `TimeSeriesFor` an explicit document ID, -or- + * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). +* Call `TimeSeriesFor.Get`. + +{PANEL/} + +{PANEL: Usage Samples} + +* In this sample we retrieve all entries of a time-series. + {CODE timeseries_region_TimeSeriesFor-Get-Single-Value-Using-Document-ID@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* In this sample we query for a document and get its "Heartrate" time-series data. +{CODE timeseries_region_Pass-TimeSeriesFor-Get-Query-Results@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time-Series Management]() + +**Client-API - Session Articles**: +[Time-Series Overview]() +[Creating and Modifying Time-Series]() +[Deleting Time-Series]() +[Retrieving Time-Series Values]() +[Time-Series and Other Features]() + +**Client-API - Operations Articles**: +[Time-Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown new file mode 100644 index 0000000000..f6e542972c --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown @@ -0,0 +1,75 @@ +# Get Time-Series Names + +--- + +{NOTE: } + +Get the names of a document's time-series using +`Advanced.GetTimeSeriesFor`. + +* In this page: + * [`Advanced.GetTimeSeriesFor`](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names#advanced.gettimeseriesfor) + * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names#usage-flow) + * [Usage Sample](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names#usage-sample) + +{NOTE/} + +--- + +{PANEL: `Advanced.GetTimeSeriesFor`} + +Use this method to get all the names of a document's time-series. + +{PANEL/} + +{PANEL: Syntax} + +* **Definition** + {CODE GetTimeSeriesFor-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Parameters** + + | Parameters | Description | + |:-------------|:-------------| + | `instance` | The document whose time-series names you want to get | + +* **Return Value** + + **`List`** + An array of the loaded document's time-series names. + +* **Exceptions** + Exceptions are not generated. + +{PANEL/} + +{PANEL: Usage Flow} + +* Open a session. +* Load a document. +* Pass `Advanced.GetTimeSeriesFor` the loaded document. + +{PANEL/} + +{PANEL: Usage Sample} + +In this sample we load a user document and use `Advanced.GetTimeSeriesFor` +to get a list of its time-series' names. +{CODE timeseries_region_Retrieve-TimeSeries-Names@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time-Series Management]() + +**Client-API - Session Articles**: +[Time-Series Overview]() +[Creating and Modifying Time-Series]() +[Deleting Time-Series]() +[Retrieving Time-Series Values]() +[Time-Series and Other Features]() + +**Client-API - Operations Articles**: +[Time-Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data.markdown deleted file mode 100644 index 8dc7d38477..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data.markdown +++ /dev/null @@ -1,153 +0,0 @@ -# Include Time-Series Data ---- - -{NOTE: } - -[Include](../../../client-api/session/loading-entities#load-with-includes) -a document's time-series data while loading the document. -The included time-series data is held by the client's session, -so it can be handed to the user with no additional trip to the -server the instant it is required. - -* Time-series data can be included while - - * Loading a document using `session.Load` - * Loading a document **by a query** via `session.Query` - * Loading a document **by a raw query** via `session.Advanced.RawQuery` - -* In this page: - * [Include Time-Series Data While Loading Via `Session.Load`](../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data#include-time-series-data-while-loading-via-session.load) - * [Include Time-Series Data During a Query](../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data#include-time-seriess-data-during-a-query) - * [Via `Session.Query`](../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data#include-ts-data-while-querying-via-) - * [Via `session.Advanced.RawQuery`](../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data#include-ts-data-while-querying-via--1) - -{NOTE/} - ---- - -{PANEL: Include Time-Series Data While Loading Via `Session.Load`} - -To include a time-series or a part of it while loading a document -via `session.Load`, use `IncludeTimeSeries`. - ---- - -#### Usage Flow - -* Open a session -* Call `session.Load` - Pass it two arguments: - * Document ID - * `IncludeTimeSeries` and its argumrnts: the time-series name, range start, and range end. - ---- - -#### `IncludeTimeSeries` Definition - -{CODE IncludeTimeSeries-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* Parameters: - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `name` | string | Time-series Name | - | `from` | DateTime | Time-series range start | - | `to` | DateTime | Time-series range end | - ---- - -#### Usage Samples - -Here, we **load** a document using `session.Load` and **include** -a selected range of entries from a time-series named "Heartrate". -The included entries are then held by the session. -Then, we **Get** the same entries we've previously included. -Getting other entries (e.g. minutes 300 to 320 of the time-series) -would still work, but the values would be retrieved not from -the session but from the server, with a much costlier delay. -{CODE timeseries_region_Load-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -{PANEL: Include Time-SeriesS Data During a Query} - ---- - -## Include TS Data While Querying Via `Session.Query` - -To include time-series or parts of them while loading documents -via `session.Query`, use `IncludeTimeSeries`. - ---- - -#### Usage Flow - -* Open a session -* Call `session.Query` - Pass it `IncludeTimeSeries` as an include-builder argument -* Pass `IncludeTimeSeries` its arguments: the time-series name, range start, and range end. - ---- - -#### `IncludeTimeSeries` Definition - -{CODE IncludeTimeSeries-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* Parameters: - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `name` | string | Time-series Name | - | `from` | DateTime | Time-series range start | - | `to` | DateTime | Time-series range end | - ---- - -#### Usage Samples - -Here, we **load** a document using `session.Query` and **include** -a whole time-series named "Heartrate". -When we **Get** the time-series data, its values are retrieved -from the session, with no additional trip to the server. -{CODE timeseries_region_Query-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - ---- - -## Include TS Data While Querying Via `session.Advanced.RawQuery` - - -To include time-series or parts of them while querying via `session.Advanced.RawQuery`, -simply embed an `include timeseries` statement in your RQL. - ---- - -#### Usage Flow - -* Open a session -* Call `session.Advanced.RawQuery` - Use `include timeseries` in your query, with its arguments: the time-series name, range start, and range end. -* Pass `IncludeTimeSeries` its arguments: the time-series name, range start, and range end. - ---- - -#### Usage Sample - -Here, we include the whole "Heartrate" time-series while running a raw query to -load the document that owns it. - -{CODE timeseries_region_Raw-Query-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/.docs.json new file mode 100644 index 0000000000..b117b5a08f --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/.docs.json @@ -0,0 +1,26 @@ +[ + { + "Path": "include-ts-overview.markdown", + "Name": "Overview", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "with-session-load.markdown", + "Name": "With session.Load", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "with-session-query.markdown", + "Name": "With session.Query", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "with-raw-queries.markdown", + "Name": "With Raw Queries", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown new file mode 100644 index 0000000000..a576fc5b41 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown @@ -0,0 +1,32 @@ +# Include Time-Series Data: Overview + +--- + +{NOTE: } + +You can [Include](../../../client-api/session/loading-entities#load-with-includes) +documents' time-series data while retrieving the documents. +The included time-series data is held by the client's session, +so it can be handed to the user the instant it is required - +with no additional trip to the server. + +* Time-series data can be included while - + * [Loading a Document Using `session.Load`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load) + * [Loading a Document By Query Via `session.Query`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query) + * [Loading a Document By a Raw RQL Query Via `session.Advanced.RawQuery`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries) + +{NOTE/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown new file mode 100644 index 0000000000..4ba5d0b015 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown @@ -0,0 +1,85 @@ +## Include Time-Series Data with `session.Advanced.RawQuery` + +--- + +{NOTE: } + +You can include time-series data during a raw RQL query +via `session.Advanced.RawQuery`. + +* [Include Time-Series Data with `Advanced.RawQuery`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#include-time-series-data-with-advanced.rawquery) + * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#usage-sample) + +{NOTE/} + +--- + +{PANEL: Include Time-Series Data with `Advanced.RawQuery`} + +To include time-series data while querying via `Advanced.RawQuery`, +use the `include timeseries` expression in your RQL query. + +{PANEL/} + +{PANEL: Syntax} + +* **`Advanced.RawQuery`** + * **Definition** + {CODE RawQuery-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + * **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `query` | string | Raw RQL Query | + + * **Return Value**: **`IRawDocumentQuery`** + {CODE-BLOCK: JSON} +public interface IRawDocumentQuery : + IQueryBase>, + IDocumentQueryBase +{ +} +{CODE-BLOCK/} + +{PANEL/} + +{PANEL: Usage Flow} + +* Open a session +* Call `session.Advanced.RawQuery` + Use `include timeseries` in your query +* Pass `include timeseries` its arguments: + * **Time-series name** + * **Range start** + * **Range end** + +{PANEL/} + +{PANEL: Usage Sample} + +In this sample, we use a raw query to retrieve a document +and include data from the documkent's "Heartrate" time-series. + +{CODE timeseries_region_Raw-Query-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +The entries we Get after the query, are retrieved +**from the session's cache**. + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown new file mode 100644 index 0000000000..ea459378c1 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown @@ -0,0 +1,89 @@ +## Include Time-Series Data With `session.Load` + +--- + +{NOTE: } + +You can include a time-series or a part of it while loading a document +via `session.Load`. + +* [`session.Load` and `IncludeTimeSeries`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load#session.load-and-includetimeseries) + * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load#usage-sample) + + +{NOTE/} + +--- + +{PANEL: `session.Load` and `IncludeTimeSeries`} + +To include time-series data while retrieving documents via `session.Load`, +pass `session.Load` the `IncludeTimeSeries` method of the `IIncludeBuilder` +interface as an argument. + +{PANEL/} + +{PANEL: Syntax} + +* **`session.Load`** + * **Definition** + {CODE Load-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `id` | `string` | Document ID | + | `includes` | `Action>` | Include Objest | + +* **`IncludeTimeSeries`** + * **Definition** + {CODE IncludeTimeSeries-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + * **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `name` | string | Time-series Name | + | `from` | DateTime | Time-series range start | + | `to` | DateTime | Time-series range end | + +{PANEL/} + +{PANEL: Usage Flow} + +* Open a session +* Call `session.Load` and pass it - + * The **Document ID** + * The **`IncludeTimeSeries`** method with its argumrnts: + **Time-series name** + **Range start** + **Range end** + +{PANEL/} + +{PANEL: Usage Sample} + +In this sample, we load a document using `session.Load` and include +a selected range of entries from a time-series named "Heartrate". +{CODE timeseries_region_Load-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +The entries we Get after including the time-series, are retrieved +**from the session's cache**. + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown new file mode 100644 index 0000000000..2c275770cf --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown @@ -0,0 +1,77 @@ +## Include Time-Series Data With `session.Query` + +--- + +{NOTE: } + +You can include time-series data while retrieving a document via `session.Query`. + +* [`session.Query` and `IncludeTimeSeries`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query#session.query-and-includetimeseries) + * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query#usage-samples) + +{NOTE/} + +--- + +{PANEL: `session.Query` and `IncludeTimeSeries`} + +To include time-series data via `session.Query`, use `session.Query` +with the `Include` LINQ expression and pass it the `IncludeTimeSeries` +method of the `IQueryIncludeBuilder` interface as an argument. + +{PANEL/} + +{PANEL: Syntax} + +* **`IncludeTimeSeries`** + * **Definition** + {CODE IncludeTimeSeries-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + * **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `name` | string | Time-series Name | + | `from` | DateTime | Time-series range start | + | `to` | DateTime | Time-series range end | + +{PANEL/} + +{PANEL: Usage Flow} + +* Open a session +* Call `session.Query`with the `Include` Linq expression + Pass it the `IncludeTimeSeries` method as an argument +* Pass `IncludeTimeSeries` its arguments: + * **Time-series name** + * **Range start** + * **Range end** + +{PANEL/} + +{PANEL: Usage Samples} + +In this sample, we retrieve a document using `session.Query` and +**include** data from the time-series "Heartrate". +{CODE timeseries_region_Query-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +The entries we Get after including the time-series, are retrieved +**from the session's cache**. + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown index 35ef80f132..8fad740634 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown @@ -1,70 +1,85 @@ -# Patch Time-Series Date +# Patch Time-Series Data --- {NOTE: } -Patch time-series data to a document using the session` method -`Advanced.Defer`. +To patch time-series data to a document, use `session.Advanced.Defer`. -* In this page: - * [Patch Time-Series Data Using `session.Advanced.Defer`](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#patch-time-series-data-using-advanced.defer) - * [Method Definition](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#method-definition) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#usage-samples) +* [Patching Time-Series Data Using `session.Advanced.Defer`](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#patching-time-series-data-using-session.advanced.defer) + * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#syntax) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#usage-samples) {NOTE/} --- -{PANEL: Patch Time-Series Data Using `Advanced.Defer`} +{PANEL: Patching Time-Series Data Using `session.Advanced.Defer`} -Use `Advanced.Defer` to run a Java Script that - +* `Advanced.Defer` uses a custom Java Script to - + * Patch time-series entries to a document. + * Removes time-series entries from a document. +* You can handle a single document at a time. -* Patches time-series entries to a document -* Removes time-series entries from a document +{PANEL/} -{INFO: } -You can handle a single document at a time. -Since this is a `session` method however, you can call -`Advanced.Defer` multiple times and call `session.saveChanges()` -to execute them all in a single transaction. -{INFO/} +{PANEL: Syntax} ---- +* **`PatchCommandData`** + * **Definition** + {CODE PatchCommandData-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * **Parameters** -#### Method Definition + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `id` | `string` | Patched document ID | + | `changeVector` | `string` | Change vector, to verify that the document hasn't been modified.
Can be `null`. | + | `patch` | `PatchRequest` | The patching Java Script | + | `patchIfMissing` | `PatchRequest` | Patching Java Script to be used if the document isn't found | ---- +* **`PatchRequest`** + * **Definition** + {CODE PatchRequest-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + * **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `Script` | `string` | Patching script | + | `Values` | `Dictionary` | Values that the patching script can use | -#### Usage Flow +{PANEL/} + +{PANEL: Usage Flow} * Open a session * Call `session.Advanced.Defer` and pass it a `PatchCommandData` instance. - Pass the `PatchCommandData` constructor method - +* Pass the `PatchCommandData` constructor method - * the document ID - * the change vector if you need to (or `null` if not) - * a new `PatchRequest` instance -* Use `PatchRequest` to pass `session.Advanced.Defer` a Java Script that - specifies whether to Append or Remove time-series entries and how to - perform it. -* Call `session.SaveChanges()` to execute the patch. - ---- + * the change vector, if needed (or `null` if not) + * a `PatchRequest` instance +* Fill the `PatchRequest` instance with your script and its values. + The script can be used to append and remove time-series entries. +* Call `session.SaveChanges()` to perform the patch. + +{PANEL/} -#### Usage Samples +{PANEL: Usage Samples} -Here, we use `session.Advanced.Defer` to patch a document a single -time-series entry. -The script draws its arguments from its "Values" section. -{CODE TS_region-Session_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we use `session.Advanced.Defer` to patch + a single time-series entry to a document . + The script draws its arguments from its "Values" section. + {CODE TS_region-Session_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Here, we provide `session.Advanced.Defer`with a script that patches -100 time-series entries to a document. Timestamps and values are drawn -from an array, and other arguments are provided in the "Values" section. -{CODE TS_region-Session_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we provide `session.Advanced.Defer`with + a script that patches 100 time-series entries to a document. + Timestamps and values are drawn from an array, and other + arguments are provided in the "Values" section. + {CODE TS_region-Session_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Here, we remove a range of 50 time-series entries from a document. -{CODE TS_region-Session_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we remove a range of 50 time-series entries + from a document. + {CODE TS_region-Session_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown index f9c2bc92ce..3eaa55bbde 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown @@ -9,7 +9,7 @@ You can remove a **single time-series entry** or a **range of entries**. * In this page: * [`TimeSeriesFor.Remove`](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#timeseriesfor.remove) - * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#timeseriesfor.remove-syntx) + * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#syntx) * [Overload 1 - Remove a Single Time-Series Entry.](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-1) * [Overload 2 - Remove a Range Of Time-Series Entries](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-2) * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#usage-flow) @@ -28,7 +28,7 @@ the series is removed when all its entries are removed. {PANEL/} -{PANEL: `TimeSeriesFor.Remove` Syntx} +{PANEL: Syntx} There are two `TimeSeriesFor.Remove` methods: [Overload 1](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-1) diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index 4964742b11..5379a44121 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -14,6 +14,8 @@ using Raven.Client.Documents.Operations; using Xunit.Abstractions; using Raven.Client.Documents.Session; +using Raven.Client.Documents.Session.TimeSeries; +using Raven.Client.Documents.Linq; namespace SlowTests.Client.TimeSeries.Session { @@ -57,11 +59,11 @@ public void SessionTests() using (var session = store.OpenSession()) { // Use the session to load a document - var user = session.Load("users/john"); + User user = session.Load("users/john"); // Pass the document object returned from session.Load as a param // Retrieve a single value from the time series - var val = session.TimeSeriesFor(user, "Heartrate") + IEnumerable val = session.TimeSeriesFor(user, "Heartrate") .Get(DateTime.MinValue, DateTime.MaxValue); } #endregion @@ -71,13 +73,12 @@ public void SessionTests() using (var session = store.OpenSession()) { // Use the session to load a document - var user = session.Load("users/john"); + User user = session.Load("users/john"); // Pass the document object returned from session.Load as a param // Retrieve a single value from the time series - var val = session.TimeSeriesFor(user, "Heartrate") - .Get(DateTime.MinValue, DateTime.MaxValue) - .Single(); + IEnumerable val = session.TimeSeriesFor(user, "Heartrate") + .Get(DateTime.MinValue, DateTime.MaxValue); } #endregion @@ -86,7 +87,7 @@ public void SessionTests() // by passing TimeSeriesFor.Get an explict document ID using (var session = store.OpenSession()) { - var val = session.TimeSeriesFor("users/john", "Heartrate") + IEnumerable val = session.TimeSeriesFor("users/john", "Heartrate") .Get(DateTime.MinValue, DateTime.MaxValue); } #endregion @@ -96,14 +97,14 @@ public void SessionTests() // and get its Heartrate time-series values using (var session = store.OpenSession()) { - var baseline = DateTime.Today; + baseline = DateTime.Today; - var query = session.Query() + IRavenQueryable query = session.Query() .Where(u => u.Name == "John"); var result = query.ToList(); - var val = session.TimeSeriesFor(result[0], "Heartrate") + IEnumerable val = session.TimeSeriesFor(result[0], "Heartrate") .Get(DateTime.MinValue, DateTime.MaxValue); session.SaveChanges(); @@ -115,8 +116,8 @@ public void SessionTests() using (var session = store.OpenSession()) { #region timeseries_region_Retrieve-TimeSeries-Names - var user = session.Load("users/john"); - var tsNames = session.Advanced.GetTimeSeriesFor(user); + User user = session.Load("users/john"); + List tsNames = session.Advanced.GetTimeSeriesFor(user); #endregion } @@ -215,11 +216,11 @@ public void SessionTests() { var baseline = DateTime.Today; - var user = session.Load("users/1-A", includeBuilder => + User user = session.Load("users/1-A", includeBuilder => includeBuilder.IncludeTimeSeries("Heartrate", baseline.AddMinutes(200), baseline.AddMinutes(299))); - var val = session.TimeSeriesFor("users/1-A", "Heartrate") + IEnumerable val = session.TimeSeriesFor("users/1-A", "Heartrate") .Get(baseline.AddMinutes(200), baseline.AddMinutes(299)); } #endregion @@ -228,16 +229,16 @@ public void SessionTests() // Query for a document and include a whole time-series using (var session = store.OpenSession()) { - var baseline = DateTime.Today; + baseline = DateTime.Today; - var query = session.Query() + IRavenQueryable query = session.Query() .Where(u => u.Name == "John") .Include(includeBuilder => includeBuilder.IncludeTimeSeries( "Heartrate", DateTime.MinValue, DateTime.MaxValue)); var result = query.ToList(); - var val = session.TimeSeriesFor(result[0], "Heartrate") + IEnumerable val = session.TimeSeriesFor(result[0], "Heartrate") .Get(DateTime.MinValue, DateTime.MaxValue); } #endregion @@ -246,18 +247,19 @@ public void SessionTests() // Include a Time Series in a Raw Query using (var session = store.OpenSession()) { - var baseline = DateTime.Today; + baseline = DateTime.Today; var start = baseline; var end = baseline.AddHours(1); - var query = session.Advanced.RawQuery("from Users include timeseries('Heartrate', $start, $end)") - .AddParameter("start", start) - .AddParameter("end", end); + IRawDocumentQuery query = session.Advanced.RawQuery + ("from Users include timeseries('Heartrate', $start, $end)") + .AddParameter("start", start) + .AddParameter("end", end); var result = query.ToList(); - var val = session.TimeSeriesFor(result[0], "Heartrate") + IEnumerable val = session.TimeSeriesFor(result[0], "Heartrate") .Get(start, end); } #endregion @@ -266,7 +268,7 @@ public void SessionTests() // Patch a document a single time-series entry using (var session = store.OpenSession()) { - var baseline = DateTime.Today; + baseline = DateTime.Today; session.Advanced.Defer(new PatchCommandData("users/1-A", null, new PatchRequest @@ -290,7 +292,7 @@ public void SessionTests() #endregion #region TS_region-Session_Patch-Append-100-TS-Entries - var baseline = DateTime.Today; + baseline = DateTime.Today; // Create an array of values to patch var toAppend = Enumerable.Range(0, 100) @@ -635,14 +637,46 @@ private interface IFoo TBuilder IncludeTimeSeries(string name, DateTime from, DateTime to); #endregion + #region GetTimeSeriesFor-definition + List GetTimeSeriesFor(T instance); + #endregion + + #region Load-definition + T Load(string id, Action> includes); + #endregion + + #region Include-definition + IRavenQueryable Include(this IQueryable source, Action> includes) + #endregion + + #region RawQuery-definition + IRawDocumentQuery RawQuery(string query); + #endregion + + #region PatchCommandData-definition + public PatchCommandData(string id, string changeVector, PatchRequest patch, PatchRequest patchIfMissing) + #endregion + + #region PatchRequest-definition + public class PatchRequest + { + // Patching script + public string Script { get; set; } + // Values that can be used by the patching script + public Dictionary Values { get; set; } + //... + } + #endregion + #region TimeSeriesOperation-class public class TimeSeriesOperation { public List Appends; public List Removals; public string Name; - #endregion + //... } + #endregion #region TimeSeriesRangeResult-class public class TimeSeriesRangeResult From bccf568195964c5ccb32391adbc879cfd6275485 Mon Sep 17 00:00:00 2001 From: reebhub Date: Thu, 14 May 2020 04:47:33 +0300 Subject: [PATCH 16/56] restructured API operations section --- .../client-api/store-operations/.docs.json | 2 +- .../append-and-remove-TS-data.markdown | 124 +++++++++++------- .../append-ts-data-in-bulk.markdown | 99 +++++++++++--- .../store-operations/get-TS-data.markdown | 116 +++++++++------- .../store-operations/patch-TS-data/.docs.json | 14 ++ .../patch-a-document.markdown} | 2 +- .../patch-queried-documents.markdown | 119 +++++++++++++++++ .../TimeSeries/TimeSeriesTests.cs | 78 ++++++++++- 8 files changed, 435 insertions(+), 119 deletions(-) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/.docs.json rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/{patch-TS-data.markdown => patch-TS-data/patch-a-document.markdown} (99%) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json index 7b6d84eecc..4bec9584d9 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json @@ -12,7 +12,7 @@ "Mappings": [] }, { - "Path": "patch-TS-data.markdown", + "Path": "/patch-TS-data", "Name": "Patch Time-Series Data", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown index ab86a54dc3..374c6f62f7 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown @@ -4,84 +4,112 @@ {NOTE: } -Append and Remove single or multiple time-series entries -using the document-store operation `TimeSeriesBatchOperation`. -`TimeSeriesBatchOperation` allows you to bundle a series of -Append and/or Remove operations in a list, and execute them -all in a single call. +To append or remove single or multiple time-series entries, +use `TimeSeriesBatchOperation`. +You can create a list of Append and Remove actions, and +execute them all in a single call. * In this page: - * [`TimeSeriesBatchOperation` Definition](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#timeseriesbatchoperation-definition) - * [Using `TimeSeriesBatchOperation` to Append TS Data](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#using-timeseriesbatchoperation-to-append-ts-data) + * [`TimeSeriesBatchOperation`](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#timeseriesbatchoperation) + * [Syntax](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#syntax) * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#usage-sample) - * [Using `TimeSeriesBatchOperation` to Remove TS Data](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#using-timeseriesbatchoperation-to-remove-ts-data) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#usage-flow-1) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#usage-sample-1) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#usage-samples) {NOTE/} --- -{PANEL: `TimeSeriesBatchOperation` Definition} +{PANEL: `TimeSeriesBatchOperation`} To instruct `TimeSeriesBatchOperation` which actions to perform, pass it an `TimeSeriesOperation` instance for each Append or Remove action. +{PANEL/} + +{PANEL: Syntax} + +* `TimeSeriesBatchOperation` + **This is the operation you need to execute to appends and removes + time-series entries.** + + * **Definition** + {CODE TimeSeriesBatchOperation-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `documentId` | `string` | ID of the document to append TS data to | + | `operation` | `TimeSeriesOperation` | Operation configuration class:
Which Append/Remove actions to perform | + * `TimeSeriesOperation` - {CODE TimeSeriesOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + **This is the configuration class provided to `TimeSeriesBatchOperation` + as an argument, with a list of TS-entries Append and Remove actions.** -{PANEL/} + * **Definition** + {CODE TimeSeriesOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * **Properties** + | Property | Type | Description | + |:-------------|:-------------|:-------------| + | `Appends` | `List` | A list of TS-entry Append actions | + | `Removals` | `List` | A list of TS-entry Remove actions | -{PANEL: Using `TimeSeriesBatchOperation` to Append TS Data} +* `AppendOperation` + **This class defines a single TS-entry Append action.** -#### Usage Flow + * **Definition** + {CODE AppendOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * **Properties** -* Create an instance of `TimeSeriesOperation` - * Populate it with a new `AppendOperation` list for every time-series entry you want to append. - * Populate each `AppendOperation` list with the properties of the time-series - entry that you want to append. -* Create a `TimeSeriesBatchOperation` instance. - * Pass its constructor the document ID and the `TimeSeriesOperation` instance you've created. -* Call `store.Operations.Send` to execute the operation. - * Pass it the `TimeSeriesBatchOperation` instance you've created. + | Property | Type | Description | + |:-------------|:-------------|:-------------| + | `Timestamp` | `DateTime` | The TS entry will be appended at this timestamp | + | `Values` | `double[]` | New values for the TS entry | + | `Tag` | `string` | An optional tag for the TS entry | ---- +* `RemoveOperation` + **This class defines a single Remove action, of a range of TS entries.** -#### Usage Sample + * **Definition** + {CODE RemoveOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * **Properties** -Here, we append a time-series two entries using `TimeSeriesBatchOperation`. -{CODE timeseries_region_Append-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + | Property | Type | Description | + |:-------------|:-------------|:-------------| + | `From` | `DateTime` | Range start: TS entries will be removed from this timestamp on | + | `To` | `DateTime[]` | Range end: entries will be removed to this timestamp | {PANEL/} -{PANEL: Using `TimeSeriesBatchOperation` to Remove TS Data} +{PANEL: Usage Flow} ---- +* Create an instance of `TimeSeriesOperation` + +* Add the `TimeSeriesOperation` instance an `AppendOperation` list. + Add the list an `AppendOperation` instance for each Append action you want + to perform. + +* Add the `TimeSeriesOperation` instance a `RemoveOperation` list. + Add the list a `RemoveOperation` instance for each Remove action you want + to perform. -#### Usage Flow - -* Create a `TimeSeriesOperation` instance - * Populate the `TimeSeriesOperation` instance with - - The time-series name. - A list of removals. - * The list of removals is constructed of `RemoveOperation` instances. - Each instance defines a range of entries that will be removed from the time-series. - * Set a removal range using - - `From` - the timestamp of the first time-series entry of the range - `To` - the timestamp of the last time-series entry to be removed. * Create a `TimeSeriesBatchOperation` instance. - * Pass its constructor the document ID and the `TimeSeriesOperation` instance you've created. -* Call `store.Operations.Send` to execute the operation. - * Pass it the `TimeSeriesBatchOperation` instance you've created. + Pass it the **document ID** and your **`TimeSeriesOperation` instance** ---- +* Call `store.Operations.Send` with your `TimeSeriesBatchOperation` + instance to execute the operation. + +{PANEL/} + + +{PANEL: Usage Samples} -#### Usage Sample +* In this sample, we use `TimeSeriesBatchOperation` to append + a time-series two entries. + {CODE timeseries_region_Append-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Here, we remove two ranges of entries from a time-series. -{CODE timeseries_region_Remove-Range-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we remove two ranges of entries from a time-series. + {CODE timeseries_region_Remove-Range-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown index 0f0f13751f..6abfad524e 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown @@ -1,45 +1,102 @@ -# `BulkInsert`: Append Time-Series In Bulk +# Append Time-Series In Bulk --- {NOTE: } -Use `BulkInsert` when you want to append a large quantity of -time-series data to a document. +To add a large quantity of time-series entries to your database, +use `BulkInsert.TimeSeriesFor.Append`. * In this page: - * [`BulkInsert` Definition](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#bulkinsert-definition) - * [Usage Flow](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#usage-flow) - * [Usage Samples](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#usage-samples) + * [BulkInsert.TimeSeriesFor.Append](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#bulkinsert.timeseriesfor.append) + * [Syntax](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#syntax) + * [Overload 1 - Bulk-Insert Single-Value Entries](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) + * [Overload 2 - Bulk-Insert Multiple-Values Entries](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-2-each-appended-entry-has-multiple-values) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#usage-samples) + {NOTE/} -{PANEL: `BulkInsert` Definition} +{PANEL: `BulkInsert.TimeSeriesFor.Append`} + +`store.BulkInsert` is efficient in appending large quantities of data to +the database. Use it to append time-series data by using its `TimeSeriesFor` +interface's `Append` method. {PANEL/} +{PANEL: Syntax} + +There are two bulk-insert Append methods: +[Overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) +- Each appended entry has a single value. +[Overload 2](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-2-each-appended-entry-has-multiple-values) +- Each appended entry has multiple values. + +--- + +#### Overload 1: Each appended entry has a single value + +* **Definition** + {CODE BulkInsert-Append-Single-Value-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `timestamp` | `DateTime` | TS-entry's timestamp | + | `value` | `double` | Single TS-entry value | + | `tag` | `string` | TS-entry's tag (optional) | + +* **Return Value**: **`void`** + +--- + +#### Overload 2: Each appended entry has multiple values + +* **Definition** + {CODE BulkInsert-Append-Multiple-Values-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `timestamp` | `DateTime` | TS-entry's timestamp | + | `values` | `IEnumerable` | Multiple TS-entry values | + | `tag` | `string` | TS-entry's tag (optional) | + +* **Return Value**: **`void`** + +{PANEL/} {PANEL: Usage Flow} -* Call `store.BulkInsert`. - BulkInsert's return value is an `BulkInsertOperation` instance. -* Call the `BulkInsertOperation` instance's `TimeSeriesFor` method. - * Pass it the document ID, and the time-series name - * Its return value is a new `TimeSeriesBulkInsert` instance. -* Populate the `TimeSeriesBulkInsert` instance with Append actions. - Pass each Append action - - * The timestamp of the entry you want to append - * The entry's new values - * The entry's tag +* Create a `store.BulkInsert` operation. +* Create an instance of the operation's `TimeSeriesFor` interface. +* Pass `TimeSeriesFor`'s constructor the document ID and time-series name +* Call `TimeSeriesFor.Append`. + Pass it - + * The appended entry's **timestamp** + * **A single value** ([overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value)) + -or- + **Multiple values** ([overload 2](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-2-each-appended-entry-has-multiple-values)) + * The appended entry's **tag** (optional) {PANEL/} {PANEL: Usage Samples} -Here, we append a time-series two entries. -{CODE timeseries_region_Use-BulkInsert-To-Append-2-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we use [overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) + to append a time-series two entries. + {CODE timeseries_region_Use-BulkInsert-To-Append-2-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* In this sample, we use [overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) + to append a time-series a hundred entries. + {CODE timeseries_region_Use-BulkInsert-To-Append-100-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Here, we use a loop to append a time-series a hundred entries. -{CODE timeseries_region_Use-BulkInsert-To-Append-100-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we use [overload 2](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-2-each-appended-entry-has-multiple-values) + to append a time-series a hundred multi-values entries. + {CODE BulkInsert-overload-2-Append-100-Multi-Value-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown index 5c580e641b..b79822200c 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown @@ -6,79 +6,107 @@ Get time-series data using `GetTimeSeriesOperaion`. -`GetTimeSeriesOperaion` allows you to retrieve data from multiple -time-series of a selected document in a single call. - * In this page: - * [`GetTimeSeriesOperation` Definition](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#gettimeseriesoperation-definition) - * [Get A Single Time-Series' Data](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#get-a-single-time-series) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#usage-flow) - * [Usage Sample](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#usage-sample) - * [Get Multiple Time-Series Data](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#get-multiple-time-series-data) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#usage-flow-1) - * [Usage Sample](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#usage-sample-1) + * [`GetTimeSeriesOperation`](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#gettimeseriesoperation) + * [Syntax](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#syntax) + * [Overload 1 - Retrieve a Single Time-Series' Data](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#overload-1-retrieve-a-single-time-series-data) + * [Overload 2 - Retrieve Multiple Time-Series' Data](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#overload-2-retrieve-multiple-time-series-data) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#usage-samples) + {NOTE/} --- -{PANEL: `GetTimeSeriesOperation` Definition} +{PANEL: `GetTimeSeriesOperation`} -There are two `GetTimeSeriesOperation` overloads. - -* Use the first overload to retrieve a single time-series' data. -* Use the second overload to retrieve multiple time-series' data. +Use `GetTimeSeriesOperaion` to retrieve data from a single +time-series or from multiple time-series. {PANEL/} -{PANEL: Get A Single Time-Series' Data} +{PANEL: Syntax} + +There are two `GetTimeSeriesOperation` methods: +[Overload 1](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#overload-1-retrieve-a-single-time-series-data) +- Retrieve a single time-series' data. +[Overload 2](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#overload-2-retrieve-multiple-time-series-data) +- Retrieve multiple time-series' data. --- -#### Usage Flow +#### Overload 1: Retrieve a Single Time-Series' Data -* Pass `GetTimeSeriesOperation` - - * The document ID - * The time-series name - * Range start: Timestamp for the first time-series entry to be retrieved - * Range end: Timestamp for the last time-series entry to be retrieved -* Call `store.Operations.Send` to execute the operation. -* Data is returned into a `dictionary of `TimeSeriesRangeResult` classes. - * TimeSeriesRangeResult: +* **Definition** + {CODE GetTimeSeriesOperation-Definition-Overload1@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `docId` | `string` | Document ID | + | `timeseries` | `string` | Time-series name | + | `from` | `DateTime` | Range start | + | `to` | `DateTime` | Range end | + | `start` | `int` | Start of first Page | + | `pageSize` | `int` | Size of each page | + +* **Return Value**: **`TimeSeriesRangeResult`** {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -#### Usage Sample +* **Exceptions** + Exceptions are not generated. -Here, we retrieve all entries of a single time-series. -{CODE timeseries_region_Get-Single-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +--- -{PANEL/} +#### Overload 2: Retrieve Multiple Time-Series' Data +* **Definition** + {CODE GetTimeSeriesOperation-Definition-Overload2@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -{PANEL: Get Multiple Time-Series Data} +* **Parameters** ---- + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `docId` | `string` | Document ID | + | `ranges` | `IEnumerable`
{CODE TimeSeriesRange-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /}| A list of time-series ranges to Get | + | `start` | `int` | Start of first Page | + | `pageSize` | `int` | Size of each page | -#### Usage Flow +* **Return Value**: a dictionary of `TimeSeriesRangeResult` classes. + {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Exceptions** + Exceptions are not generated. + +{PANEL/} + +{PANEL: Usage Flow} -* Pass `GetTimeSeriesOperation` the document ID and a list of `TimeSeriesRange` instances. - Each `TimeSeriesRange` instance defines - - * **Name** - The time-series name - * **From** - Range start, the timestamp for the first time-series entry to be retrieved - * **To** - Range end, the timestamp for the last time-series entry to be retrieved +* Pass `GetTimeSeriesOperation` - + * For a single time-series: + Document ID, Time-Series Name, Range Start, Range End. + * For multiple time-series: + Document ID, a List of `TimeSeriesRange` instances. + Each `TimeSeriesRange` instance defines a Time-Series Name, Range Start, and Range End. * Call `store.Operations.Send` to execute the operation. -* Data is returned into into a `dictionary of `TimeSeriesRangeResult` classes. - * TimeSeriesRangeResult: - {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* Data is returned into a `dictionary of `TimeSeriesRangeResult` classes. ---- +{PANEL/} + +{PANEL: Usage Samples} -#### Usage Sample +* In this sample, we use the [first overload](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#overload-1-retrieve-a-single-time-series-data) + to retrieve all entries of a single time-series. + {CODE timeseries_region_Get-Single-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Here, we retrieve chosen entries from two time-series. -{CODE timeseries_region_Get-Multiple-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we use the [second overload](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#overload-2-retrieve-multiple-time-series-data) + to retrieve chosen entries from two time-series. + {CODE timeseries_region_Get-Multiple-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} + ## Related articles **Studio Articles**: [Studio Time Series Management]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/.docs.json new file mode 100644 index 0000000000..75c0874c74 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/.docs.json @@ -0,0 +1,14 @@ +[ + { + "Path": "patch-a-document.markdown", + "Name": "Patch a Document", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "patch-queried-documents.markdown", + "Name": "Patch Queried Documents", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown similarity index 99% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown index e68b085bf9..0e66e833ea 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown @@ -1,4 +1,4 @@ -# Patch Time-Series Data +# Patch a Document --- diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown new file mode 100644 index 0000000000..f568a715ac --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown @@ -0,0 +1,119 @@ +# Patch Queried Documents + +--- + +{NOTE: } + +* Use `PatchOperation` to patch time-series data to a single document + loaded by its ID. +* Use `PatchByQueryOperation` to query your database and + patch time-series data to the documents your query locates. + +* In this page: + * [`PatchOperation`: Patch a Document](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchoperation:-patch-a-document) + * [Definition](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#definition) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples) + * [`PatchByQueryOperation`: Patch Queried Documents](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation:-patch-queried-documents) + * [Definition](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#definition-1) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow-1) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples-1) +{NOTE/} + +--- + +{PANEL: `PatchOperation`: Patch a Document} + +`PatchOperation` allows you to run a Java Script that patches +time-series entries to a loaded document, or removes entries +from it. + +--- + +#### `PatchOperation` Definition + +--- + +#### Usage Flow + +* Pass `PatchOperation` - + * the document ID + * the change vector if you need to (or `null` if not) + * a new `PatchRequest` instance +* Use the `PatchRequest` instance to pass `PatchOperation` + a Java Script that specifies whether to Append or Remove + time-series entries and how to perform it. +* Call `store.Operations.Send` to execute the operation. + +--- + +#### Usage Samples + +Here, we use `PatchOperation` to patch a document a single +time-series entry. +The script draws its arguments from its "Values" section. +{CODE TS_region-Operation_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we provide `PatchOperation`with a script that patches +100 time-series entries to a document. +Timestamps and values are drawn from an array, and other +arguments are provided in the "Values" section. +{CODE TS_region-Operation_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we use `PatchOperation` to remove a range of 50 time-series +entries from a document. +{CODE TS_region-Operation_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +{PANEL: `PatchByQueryOperation`: Patch Queried Documents} + +`PatchByQueryOperation` allows you to run a query and patch +time-series data to all the documents it finds. +You can use this operation not only to append data, but also to +remove or get time-series data from located documents. + +--- + +#### `PatchByQueryOperation` Definition + +--- + +#### Usage Flow + +* Create a `PatchByQueryOperation` operation. +* Pass `PatchByQueryOperation` a new `IndexQuery` instance as an argument. +* Add the `IndexQuery` instance a Java Script that specifies + the query you want to run. +* Call `store.Operations.Send` to execute the operation. + +--- + +#### Usage Samples + +Here, the query we provide `PatchByQueryOperation` appends +a time-series entry to all user documents. +{CODE TS_region-PatchByQueryOperation-Append-To-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, the query removes time-series from located documents. +{CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Here, we get selected ranges of time-series entries from the documents +located by the query. +{CODE TS_region-PatchByQueryOperation-Get@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index 5379a44121..e8b85a563a 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -16,6 +16,8 @@ using Raven.Client.Documents.Session; using Raven.Client.Documents.Session.TimeSeries; using Raven.Client.Documents.Linq; +using Raven.Client.Documents.BulkInsert; +using static Raven.Client.Documents.BulkInsert.BulkInsertOperation; namespace SlowTests.Client.TimeSeries.Session { @@ -446,9 +448,9 @@ public void StoreOperationsTests() #region timeseries_region_Use-BulkInsert-To-Append-2-Entries // Use BulkInsert to append 2 time-series entries - using (var bulkInsert = store.BulkInsert()) + using (BulkInsertOperation bulkInsert = store.BulkInsert()) { - using (var timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentID, "Heartrate")) + using (TimeSeriesBulkInsert timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentID, "Heartrate")) { timeSeriesBulkInsert.Append(baseline.AddMinutes(2), 61d, "watches/fitbit"); timeSeriesBulkInsert.Append(baseline.AddMinutes(3), 62d, "watches/apple-watch"); @@ -460,9 +462,9 @@ public void StoreOperationsTests() // Use BulkInsert to append 100 time-series entries for (int minute = 0; minute < 100; minute++) { - using (var bulkInsert = store.BulkInsert()) + using (BulkInsertOperation bulkInsert = store.BulkInsert()) { - using (var timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentId, "Heartrate")) + using (TimeSeriesBulkInsert timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentId, "Heartrate")) { timeSeriesBulkInsert.Append(baseline.AddMinutes(minute), new double[] { minute }, "watches/fitbit"); } @@ -470,6 +472,26 @@ public void StoreOperationsTests() } #endregion + #region BulkInsert-overload-2-Append-100-Multi-Value-Entries + IEnumerable values = new List + {59d, 63d, 71d, 69d, 64, 65d }; + + // Use BulkInsert to append 100 multi-values time-series entries + for (int minute = 0; minute < 100; minute++) + { + using (BulkInsertOperation bulkInsert = store.BulkInsert()) + { + using (TimeSeriesBulkInsert timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentId, "Heartrate")) + { + timeSeriesBulkInsert.Append(baseline.AddMinutes(minute), values, "watches/fitbit"); + } + } + } + #endregion + + + + #region TS_region-Operation_Patch-Append-Single-TS-Entry store.Operations.Send(new PatchOperation("users/1-A", null, new PatchRequest @@ -668,16 +690,42 @@ public class PatchRequest } #endregion + #region TimeSeriesBatchOperation-definition + public TimeSeriesBatchOperation(string documentId, TimeSeriesOperation operation) + #endregion + #region TimeSeriesOperation-class public class TimeSeriesOperation { + // A list of Append actions public List Appends; + + // A list of Remove actions public List Removals; + public string Name; //... } #endregion + #region AppendOperation-class + public class AppendOperation + { + public DateTime Timestamp; + public double[] Values; + public string Tag; + //... + } + #endregion + + #region RemoveOperation-class + public class RemoveOperation + { + public DateTime From, To; + //... + } + #endregion + #region TimeSeriesRangeResult-class public class TimeSeriesRangeResult { @@ -688,6 +736,28 @@ public class TimeSeriesRangeResult } #endregion + #region GetTimeSeriesOperation-Definition-Overload1 + public GetTimeSeriesOperation(string docId, string timeseries, DateTime from, DateTime to, int start = 0, int pageSize = int.MaxValue) + #endregion + + #region GetTimeSeriesOperation-Definition-Overload2 + public GetTimeSeriesOperation(string docId, IEnumerable ranges, int start = 0, int pageSize = int.MaxValue) + #endregion + + #region TimeSeriesRange-class + public class TimeSeriesRange + { + public string Name; + public DateTime From, To; + } + #endregion + + #region BulkInsert-Append-Single-Value-Definition + public void Append(DateTime timestamp, double value, string tag = null) + #endregion + #region BulkInsert-Append-Multiple-Values-Definition + public void Append(DateTime timestamp, IEnumerable values, string tag = null) + #endregion } From f4c3ee4e067aafae916bea0121b43161250a3c40 Mon Sep 17 00:00:00 2001 From: reebhub Date: Thu, 14 May 2020 10:30:05 +0300 Subject: [PATCH 17/56] RDoc-1703_TimeSeries API documentation restructure --- .../session-methods/patch-ts-data.markdown | 8 +- .../append-ts-data-in-bulk.markdown | 2 +- .../patch-TS-data/patch-a-document.markdown | 125 ++++++++---------- .../patch-queried-documents.markdown | 109 ++++++--------- .../TimeSeries/TimeSeriesTests.cs | 49 +++---- 5 files changed, 123 insertions(+), 170 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown index 8fad740634..679ba89ed4 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown @@ -18,7 +18,7 @@ To patch time-series data to a document, use `session.Advanced.Defer`. * `Advanced.Defer` uses a custom Java Script to - * Patch time-series entries to a document. - * Removes time-series entries from a document. + * Remove time-series entries from a document. * You can handle a single document at a time. {PANEL/} @@ -56,10 +56,10 @@ To patch time-series data to a document, use `session.Advanced.Defer`. * Call `session.Advanced.Defer` and pass it a `PatchCommandData` instance. * Pass the `PatchCommandData` constructor method - * the document ID - * the change vector, if needed (or `null` if not) + * the change vector or `null`) * a `PatchRequest` instance -* Fill the `PatchRequest` instance with your script and its values. - The script can be used to append and remove time-series entries. +* Add the `PatchRequest` instance a Java Script. + Use the script to append or remove time-series entries. * Call `session.SaveChanges()` to perform the patch. {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown index 6abfad524e..f41aafdb96 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown @@ -8,7 +8,7 @@ To add a large quantity of time-series entries to your database, use `BulkInsert.TimeSeriesFor.Append`. * In this page: - * [BulkInsert.TimeSeriesFor.Append](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#bulkinsert.timeseriesfor.append) + * [`BulkInsert.TimeSeriesFor.Append`](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#bulkinsert.timeseriesfor.append) * [Syntax](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#syntax) * [Overload 1 - Bulk-Insert Single-Value Entries](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) * [Overload 2 - Bulk-Insert Multiple-Values Entries](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-2-each-appended-entry-has-multiple-values) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown index 0e66e833ea..181a348549 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown @@ -1,4 +1,5 @@ -# Patch a Document +# `PatchOperation` +## patch Time-Series Entries To a Document --- @@ -6,101 +7,81 @@ * Use `PatchOperation` to patch time-series data to a single document loaded by its ID. -* Use `PatchByQueryOperation` to query your database and - patch time-series data to the documents your query locates. * In this page: - * [`PatchOperation`: Patch a Document](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchoperation:-patch-a-document) - * [Definition](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#definition) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples) - * [`PatchByQueryOperation`: Patch Queried Documents](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation:-patch-queried-documents) - * [Definition](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#definition-1) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow-1) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples-1) + * [`PatchOperation`](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-a-document#patchoperation) + * [Syntax](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-a-document#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-a-document#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-a-document#usage-samples) {NOTE/} --- -{PANEL: `PatchOperation`: Patch a Document} +{PANEL: `PatchOperation`} -`PatchOperation` allows you to run a Java Script that patches -time-series entries to a loaded document, or removes entries -from it. +* `PatchOperation` uses a custom Java Script to - + * Patch time-series entries to a document. + * Remove time-series entries from a document. ---- - -#### `PatchOperation` Definition - ---- - -#### Usage Flow +{PANEL/} -* Pass `PatchOperation` - - * the document ID - * the change vector if you need to (or `null` if not) - * a new `PatchRequest` instance -* Use the `PatchRequest` instance to pass `PatchOperation` - a Java Script that specifies whether to Append or Remove - time-series entries and how to perform it. -* Call `store.Operations.Send` to execute the operation. +{PANEL: Syntax} ---- +* **`PatchOperation`** + * **Definition** + {CODE PatchOperation-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * **Parameters** -#### Usage Samples + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `id` | `string` | Patched document ID | + | `changeVector` | `string` | Change vector, to verify that the document hasn't been modified.
Can be `null`. | + | `patch` | `PatchRequest` | The patching Java Script | + | `patchIfMissing` | `PatchRequest` | Patching Java Script to be used if the document isn't found | + | `skipPatchIfChangeVectorMismatch` | `bool` | If true, do not patch if the document has been modified
default: **false** | -Here, we use `PatchOperation` to patch a document a single -time-series entry. -The script draws its arguments from its "Values" section. -{CODE TS_region-Operation_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* **`PatchRequest`** + * **Definition** + {CODE PatchRequest-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Here, we provide `PatchOperation`with a script that patches -100 time-series entries to a document. -Timestamps and values are drawn from an array, and other -arguments are provided in the "Values" section. -{CODE TS_region-Operation_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * **Parameters** -Here, we use `PatchOperation` to remove a range of 50 time-series -entries from a document. -{CODE TS_region-Operation_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `Script` | `string` | Patching script | + | `Values` | `Dictionary` | Values that the patching script can use | {PANEL/} -{PANEL: `PatchByQueryOperation`: Patch Queried Documents} - -`PatchByQueryOperation` allows you to run a query and patch -time-series data to all the documents it finds. -You can use this operation not only to append data, but also to -remove or get time-series data from located documents. +{PANEL: Usage Flow} ---- - -#### `PatchByQueryOperation` Definition - ---- - -#### Usage Flow - -* Create a `PatchByQueryOperation` operation. -* Pass `PatchByQueryOperation` a new `IndexQuery` instance as an argument. -* Add the `IndexQuery` instance a Java Script that specifies - the query you want to run. +* Create an instance of `PatchOperation` and pass its constructor - + * the document ID + * the change vector (or `null`) + * a new `PatchRequest` instance +* Use the `PatchRequest` instance to pass `PatchOperation` + a Java Script. + Use the script to append or remove time-series entries. * Call `store.Operations.Send` to execute the operation. ---- +{PANEL/} -#### Usage Samples +{PANEL: Usage Samples} -Here, the query we provide `PatchByQueryOperation` appends -a time-series entry to all user documents. -{CODE TS_region-PatchByQueryOperation-Append-To-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we use `PatchOperation` to patch a document a single + time-series entry. + The script draws its arguments from its "Values" section. + {CODE TS_region-Operation_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Here, the query removes time-series from located documents. -{CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we provide `PatchOperation`with a script that patches + 100 time-series entries to a document. + Timestamps and values are drawn from an array, and other + arguments are provided in the "Values" section. + {CODE TS_region-Operation_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Here, we get selected ranges of time-series entries from the documents -located by the query. -{CODE TS_region-PatchByQueryOperation-Get@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we use `PatchOperation` to remove a range of 50 time-series + entries from a document. + {CODE TS_region-Operation_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown index f568a715ac..4234ebcd8d 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown @@ -1,106 +1,75 @@ -# Patch Queried Documents +# `PatchByQueryOperation` +## Patch Queried Documents --- {NOTE: } -* Use `PatchOperation` to patch time-series data to a single document - loaded by its ID. -* Use `PatchByQueryOperation` to query your database and - patch time-series data to the documents your query locates. +* Use [PatchByQueryOperation](../../../../../client-api/operations/patching/set-based#patchbyqueryoperation) + to run a query and patch time-series data to the documents you find. * In this page: - * [`PatchOperation`: Patch a Document](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchoperation:-patch-a-document) - * [Definition](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#definition) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples) - * [`PatchByQueryOperation`: Patch Queried Documents](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation:-patch-queried-documents) - * [Definition](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#definition-1) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow-1) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples-1) + * [`PatchByQueryOperation`](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-queried-documents#patchbyqueryoperation) + * [Syntax](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-queried-documents#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-queried-documents#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-queried-documents#usage-samples) {NOTE/} --- -{PANEL: `PatchOperation`: Patch a Document} +{PANEL: `PatchByQueryOperation`} -`PatchOperation` allows you to run a Java Script that patches -time-series entries to a loaded document, or removes entries -from it. +`PatchByQueryOperation` runs a Java Script to perform a query and patch +data to documents it finds. ---- - -#### `PatchOperation` Definition - ---- +You can use this script to - -#### Usage Flow +* Append time-series data to documents +* Remove time-series data from documents +* Get documents' time-series data -* Pass `PatchOperation` - - * the document ID - * the change vector if you need to (or `null` if not) - * a new `PatchRequest` instance -* Use the `PatchRequest` instance to pass `PatchOperation` - a Java Script that specifies whether to Append or Remove - time-series entries and how to perform it. -* Call `store.Operations.Send` to execute the operation. +{PANEL/} ---- +{PANEL: Syntax} -#### Usage Samples +* **`store.Operations.Send` Definition** + {CODE Store-Operations-send-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Here, we use `PatchOperation` to patch a document a single -time-series entry. -The script draws its arguments from its "Values" section. -{CODE TS_region-Operation_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* **`PatchByQueryOperation` Definition** + {CODE PatchByQueryOperation-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * **Parameters** -Here, we provide `PatchOperation`with a script that patches -100 time-series entries to a document. -Timestamps and values are drawn from an array, and other -arguments are provided in the "Values" section. -{CODE TS_region-Operation_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `queryToUpdate` | `IndexQuery` | The query, including the Java Script | + | `QueryOperationOptions` | `options` | Additional options
Default: `null` | -Here, we use `PatchOperation` to remove a range of 50 time-series -entries from a document. -{CODE TS_region-Operation_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* **Return Value**: `Operation` {PANEL/} -{PANEL: `PatchByQueryOperation`: Patch Queried Documents} - -`PatchByQueryOperation` allows you to run a query and patch -time-series data to all the documents it finds. -You can use this operation not only to append data, but also to -remove or get time-series data from located documents. - ---- - -#### `PatchByQueryOperation` Definition - ---- - -#### Usage Flow +{PANEL: Usage Flow} * Create a `PatchByQueryOperation` operation. -* Pass `PatchByQueryOperation` a new `IndexQuery` instance as an argument. +* Pass `PatchByQueryOperation` a new `IndexQuery` instance. * Add the `IndexQuery` instance a Java Script that specifies the query you want to run. * Call `store.Operations.Send` to execute the operation. ---- +{PANEL/} -#### Usage Samples +{PANEL: Usage Samples} -Here, the query we provide `PatchByQueryOperation` appends -a time-series entry to all user documents. -{CODE TS_region-PatchByQueryOperation-Append-To-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, `PatchByQueryOperation` Appends a time-series entry to all + the documents in the User collection. + {CODE TS_region-PatchByQueryOperation-Append-To-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Here, the query removes time-series from located documents. -{CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* Here, our script Removes time-series from documents it finds. + {CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Here, we get selected ranges of time-series entries from the documents -located by the query. -{CODE TS_region-PatchByQueryOperation-Get@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we Get ranges of time-series entries from the documents located by + the query. + {CODE TS_region-PatchByQueryOperation-Get@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index e8b85a563a..59c791f8a9 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -517,15 +517,15 @@ public void StoreOperationsTests() store.Operations.Send(new PatchOperation("users/1-A", null, new PatchRequest { - Script = "var i = 0; " + - "for (i = 0; i < args.toAppend.length; i++) " + - "{timeseries(id(this), " + - "args.timeseries).append(" + - "new Date(" + - "args.toAppend[i]." + - "Item1), " + - "args.toAppend[i].Item2, args.tag);" + - "}", + Script = @"var i = 0; + for (i = 0; i < args.toAppend.length; i++) + {timeseries(id(this), + args.timeseries).append( + new Date( + args.toAppend[i]. + Item1), + args.toAppend[i].Item2, args.tag); + }", Values = { { "timeseries", "Heartrate" }, @@ -551,7 +551,7 @@ public void StoreOperationsTests() #region TS_region-PatchByQueryOperation-Append-To-Multiple-Docs // Append time-series to all users - var appendOperation = new PatchByQueryOperation(new IndexQuery + PatchByQueryOperation appendOperation = new PatchByQueryOperation(new IndexQuery { Query = @"from Users as u update { @@ -570,7 +570,7 @@ public void StoreOperationsTests() #region TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs // Remove time-series from all users - var removeOperation = new PatchByQueryOperation(new IndexQuery + PatchByQueryOperation removeOperation = new PatchByQueryOperation(new IndexQuery { Query = @"from Users as u update @@ -589,7 +589,7 @@ public void StoreOperationsTests() #region TS_region-PatchByQueryOperation-Get // Get ranges of time-series entries from all users - var getOperation = new PatchByQueryOperation(new IndexQuery + PatchByQueryOperation getOperation = new PatchByQueryOperation(new IndexQuery { Query = @"from Users as u update @@ -603,22 +603,12 @@ public void StoreOperationsTests() { "to", DateTime.MaxValue } } }); - store.Operations.Send(appendOperation); + Operation getOp = store.Operations.Send(getOperation); #endregion - - - - - } } - - - - - private IDisposable GetDocumentStore() { throw new NotImplementedException(); @@ -755,10 +745,23 @@ public class TimeSeriesRange #region BulkInsert-Append-Single-Value-Definition public void Append(DateTime timestamp, double value, string tag = null) #endregion + #region BulkInsert-Append-Multiple-Values-Definition public void Append(DateTime timestamp, IEnumerable values, string tag = null) #endregion + #region PatchOperation-Definition + public PatchOperation(string id, string changeVector, PatchRequest patch, PatchRequest patchIfMissing = null, bool skipPatchIfChangeVectorMismatch = false) + #endregion + + #region PatchByQueryOperation-Definition + public PatchByQueryOperation(IndexQuery queryToUpdate, QueryOperationOptions options = null) + #endregion + + #region Store-Operations-send-Definition + public Operation Send(IOperation operation, SessionInfo sessionInfo = null) + #endregion + } From 6be378982c5a601f941947c8203279d10577d2ee Mon Sep 17 00:00:00 2001 From: reebhub Date: Thu, 14 May 2020 22:15:36 +0300 Subject: [PATCH 18/56] RDoc-1703_TimeSeries API refinement --- .../client-api/api-overview.markdown | 25 +++++++++---------- .../session-methods/append-ts-data.markdown | 3 ++- .../get-ts-data/get-ts-entries.markdown | 3 ++- .../get-ts-data/get-ts-names.markdown | 3 ++- .../include-ts-data/.docs.json | 4 +-- .../include-ts-data/with-raw-queries.markdown | 5 ++-- .../with-session-load.markdown | 3 ++- .../with-session-query.markdown | 3 ++- .../session-methods/patch-ts-data.markdown | 4 ++- .../session-methods/remove-ts-data.markdown | 3 ++- .../append-and-remove-TS-data.markdown | 3 ++- .../bulk-ts-operations/.docs.json | 2 +- .../append-ts-data-in-bulk.markdown | 3 ++- .../store-operations/get-TS-data.markdown | 3 ++- .../patch-TS-data/patch-a-document.markdown | 4 +-- .../patch-queried-documents.markdown | 4 +-- 16 files changed, 43 insertions(+), 32 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown index 99901428f6..13b81dbb1f 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -68,17 +68,16 @@ There are also functionalities unique to each interface. Use this method to **Create and update time-series data**. * [TimeSeriesFor.Remove](../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data) Use this method to **Remove time-series data**. -* [TimeSeriesFor.Get](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data) - Use this method to **Retrieve time-series data**. -* [session.Advanced.GetTimeSeriesFor](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data#retrieve-time-series-names:-session.advanced.gettimeseriesfor) - Use this method to **retrieve a document's time-series' names**. -* [IncludeTimeSeries](../../../document-extensions/timeseries/client-api/session-methods/include-ts-data) - Use this include-builder argument with `session.Load` or - `session.Query` to **include time-series data while loading documents**. - You can also use `session.Advanced.RawQuery` with an `include timeseries` - statement to **include Time-series data while running a raw query**. +* [TimeSeriesFor.Get](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries) + Use this method to **Retrieve time-series Entries**. +* [Advanced.GetTimeSeriesFor](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names) + Use this method to **Retrieve time-series Names**. * [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) Use this method to **patch time-series data to a document**. +* **To include time-series data** - + * [Use IncludeTimeSeries while loading a document via session.Load](../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load) + * [Use IncludeTimeSeries while retrieving a document via session.Query](../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query) + * [Use RQL while running a raw query](../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries) {PANEL/} {PANEL: Available Time-Series `store` Operations} @@ -93,14 +92,14 @@ There are also functionalities unique to each interface. `GetTimeSeriesOperation` has an advantage over `session.Get`, in allowing you to retrieve data from multiple time-series of a selected document in a single call. -* [ConfigureTimeSeriesOperation](../../../document-extensions/timeseries/rollup-and-retention#time-series-rollup-and-retention) +* [ConfigureTimeSeriesOperation](../../../document-extensions/timeseries/rollup-and-retention) Use this operation to **manage time-series roll-up and retention policies**. -* [PatchOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data#patchoperation:-patch-time-series-data-to-documents) +* [PatchOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document) Use this operation to **patch time-series data to a single document**. -* [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data#patchbyqueryoperation:-patch-time-series-data-by-query) +* [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents) Use this operation to **patch time-series data to documents located by a query**. -* [BulkInsert](../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk) +* [BulkInsert.TimeSeriesFor.Append](../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk) Use this operation to **append a large quantity of time-series data**. {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown index 6c31a4d430..5f3e1e0c46 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown @@ -1,4 +1,5 @@ -# Append Time-Series Data +## `TimeSeriesFor.Append` +# Append Time-Series Data --- diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown index 31b0930485..25f7aba5d5 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown @@ -1,4 +1,5 @@ -# Get Time-Series Entries +## `TimeSeriesFor.Get` +# Get Time-Series Entries --- diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown index f6e542972c..cb53d39989 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown @@ -1,4 +1,5 @@ -# Get Time-Series Names +## `Advanced.GetTimeSeriesFor` +# Get Time-Series Names --- diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/.docs.json index b117b5a08f..e55582c43a 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/.docs.json @@ -7,13 +7,13 @@ }, { "Path": "with-session-load.markdown", - "Name": "With session.Load", + "Name": "With Load", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "with-session-query.markdown", - "Name": "With session.Query", + "Name": "With Query", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown index 4ba5d0b015..3398808bbc 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown @@ -1,10 +1,11 @@ -## Include Time-Series Data with `session.Advanced.RawQuery` +## `session.Advanced.RawQuery` +# Include TS Data With Raw Queries --- {NOTE: } -You can include time-series data during a raw RQL query +You can include time-series data while running a raw RQL query via `session.Advanced.RawQuery`. * [Include Time-Series Data with `Advanced.RawQuery`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#include-time-series-data-with-advanced.rawquery) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown index ea459378c1..8037d31e75 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown @@ -1,4 +1,5 @@ -## Include Time-Series Data With `session.Load` +## `IncludeTimeSeries` +# Include TS Data With `session.Load` --- diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown index 2c275770cf..5bd708a3dc 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown @@ -1,4 +1,5 @@ -## Include Time-Series Data With `session.Query` +## `IncludeTimeSeries` +# Include TS Data With `session.Query` --- diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown index 679ba89ed4..d69f72a2d5 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown @@ -1,4 +1,6 @@ -# Patch Time-Series Data +## `session.Advanced.Defer` +# Patch Time-Series Data + --- {NOTE: } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown index 3eaa55bbde..45c1a726ec 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown @@ -1,4 +1,5 @@ -# Remove Time-Series Data +## `TimeSeriesFor.Remove` +# Remove Time-Series Data --- diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown index 374c6f62f7..4f1941ae77 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown @@ -1,4 +1,5 @@ -# Append and Remove Time-Series Data +## `TimeSeriesBatchOperation` +# Append and Remove Time-Series Data --- diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/.docs.json index 21080c3820..3c63741a0d 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/.docs.json @@ -1,7 +1,7 @@ [ { "Path": "append-ts-data-in-bulk.markdown", - "Name": "Append TS Data In Bulk", + "Name": "Append In Bulk", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown index f41aafdb96..74968ac310 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown @@ -1,4 +1,5 @@ -# Append Time-Series In Bulk +## `BulkInsert.TimeSeriesFor.Append` +# Append Time-Series In Bulk --- diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown index b79822200c..18d02488aa 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown @@ -1,4 +1,5 @@ -# Get Time-Series Data +## `GetTimeSeriesOperaion` +# Get Time-Series Data --- diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown index 181a348549..e8ba8ba047 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown @@ -1,5 +1,5 @@ -# `PatchOperation` -## patch Time-Series Entries To a Document +## `PatchOperation` +# Patch TS Data To a Document --- diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown index 4234ebcd8d..626722dca0 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown @@ -1,5 +1,5 @@ -# `PatchByQueryOperation` -## Patch Queried Documents +## `PatchByQueryOperation` +# Patch TS Data to Queried Documents --- From 401fe1487c6eb49e986507734ee5f094d75c2ec3 Mon Sep 17 00:00:00 2001 From: morhilai Date: Sun, 17 May 2020 18:59:18 +0300 Subject: [PATCH 19/56] RDoc-1703_TimeSeries: Studio page - Review comments for Rollup page --- .../timeseries/rollup-and-retention.markdown | 32 ++++- .../studio/database/.docs.json | 5 + .../database/document-extensions/.docs.json | 8 ++ .../images/delete-range-2.png | Bin 0 -> 42087 bytes .../images/delete-range-2.snag | Bin 0 -> 65560 bytes .../images/delete-range.png | Bin 0 -> 41250 bytes .../images/delete-range.snag | Bin 0 -> 57368 bytes .../images/document-time-series.png | Bin 0 -> 149262 bytes .../images/document-time-series.snag | Bin 0 -> 163864 bytes .../document-extensions/images/new-entry.png | Bin 0 -> 60861 bytes .../document-extensions/images/new-entry.snag | Bin 0 -> 73752 bytes .../images/time-series-entry.png | Bin 0 -> 76881 bytes .../images/time-series-entry.snag | Bin 0 -> 90136 bytes .../images/time-series-graph.png | Bin 0 -> 191135 bytes .../images/time-series-graph.snag | Bin 0 -> 221208 bytes .../images/time-series-query.png | Bin 0 -> 123886 bytes .../images/time-series-query.snag | Bin 0 -> 135192 bytes .../images/time-series-view.png | Bin 0 -> 75277 bytes .../images/time-series-view.snag | Bin 0 -> 90136 bytes .../document-extensions/time-series.markdown | 136 ++++++++++++++++++ .../studio/database/documents/.docs.json | 25 ++++ .../additional-features/.docs.json | 8 ++ .../images/time-series-graph.png | Bin 0 -> 191135 bytes .../images/time-series-graph.snag | Bin 0 -> 221208 bytes 24 files changed, 208 insertions(+), 6 deletions(-) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/delete-range-2.png create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/delete-range-2.snag create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/delete-range.png create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/delete-range.snag create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/document-time-series.png create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/document-time-series.snag create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/new-entry.png create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/new-entry.snag create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-entry.png create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-entry.snag create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-graph.png create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-graph.snag create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-query.png create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-query.snag create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-view.png create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-view.snag create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/time-series.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/document-view/additional-features/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/document-view/additional-features/images/time-series-graph.png create mode 100644 Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/document-view/additional-features/images/time-series-graph.snag diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown index a54132b01b..76890e023b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown @@ -69,12 +69,22 @@ milliseconds are the minimum resolution in RavenDB time-series. The timestamp fo rollup entry is the *end* of the span it represents, so it is a round number of time units minus one millisecond. +For example, if the aggregation span is one day, the spans will start at times like: +`2020-01-01 00:00:00`, +`2020-01-02 00:00:00`, +`2020-01-03 00:00:00`, +And the corresponding end times will be: +`2020-01-01 23:59:59.9999`, +`2020-01-02 23:59:59.9999`, +`2020-01-03 23:59:59.9999`, + **Name**: A rollup time-series name has this format: `"@"` It is a combination of the name of the raw time-series and the name of the time-series policy separated by a `@` character - in the image above these are -"Heartrate & Blood Pressure" and "ByMinute" respectively. +"Heartrate & Blood Pressure" and "ByMinute" respectively. For this reason, neither +a time-series name nor a policy name can have the character `@` in it. {PANEL/} @@ -95,6 +105,7 @@ to send the new configurations to the server. ####The two types of time-series policy: {CODE-BLOCK: csharp} +// Rollup policies public class TimeSeriesPolicy { public string Name; @@ -102,6 +113,8 @@ public class TimeSeriesPolicy public TimeValue AggregationTime; } +// A retention policy for the raw TS +// Only one per collection public class RawTimeSeriesPolicy : TimeSeriesPolicy { public string Name; @@ -110,11 +123,18 @@ public class RawTimeSeriesPolicy : TimeSeriesPolicy } {CODE-BLOCK/} +#### `TimeSeriesPolicy`: | Property | Description | | - | - | | `Name` | This `string` is used to create the names of the rollup time-series created by this policy.
`Name` is added to the name of the raw time-series - with `@` as a separator - to create the name of the resulting rollup time-series. | -| `RetentionTime` | Time-series entries older than this time span (see `TimeValue` below) are automatically deleted. Applies to the original, or "raw" time-series in the case of `RawTimeSeriesPolicy`, or to the rollup time-series created by a `TimeSeriesPolicy`. | +| `RetentionTime` | Time-series entries older than this time span (see `TimeValue` below) are automatically deleted. | | `AggregationTime` | The time-series data being rolled up is divided at round time units, into parts of this length of time. Each of these parts is aggregated into an entry of the rollup time-series. | + +#### `RawTimeSeriesPolicy`: +| Property | Description | +| - | - | +| `Name` | This `string` is used to create the names of the rollup time-series created by this policy.
`Name` is added to the name of the raw time-series - with `@` as a separator - to create the name of the resulting rollup time-series. | +| `RetentionTime` | Time-series entries older than this time span (see `TimeValue` below) are automatically deleted. |
####The `TimeValue` struct @@ -133,7 +153,7 @@ public struct TimeValue : IDynamicJson, IEquatable Each of the above `TimeValue` methods returns a `TimeValue` object representing a whole number of the specified time units. These are passed as the aggregation and -retention span of time-series policies. +retention spans of time-series policies.
####`TimeSeriesCollectionConfiguration` and `TimeSeriesConfiguration` @@ -153,8 +173,8 @@ public class TimeSeriesConfiguration | Property | Description | | - | - | | `Disabled` | If set to `true`, rollup processes will stop, and time-series data will not be deleted by retention policies. | -| `Policies` | Populate this `List` with your time-series policies, including the `RawTimeSeriesPolicy`. The order does not matter. | -| `Collections` | Populate this `Dictionary` with the `TimeSeriesCollectionConfiguration`s and the name of the corresponding collection. | +| `Policies` | Populate this `List` with your time-series policies, including up to one `RawTimeSeriesPolicy`. | +| `Collections` | Populate this `Dictionary` with the `TimeSeriesCollectionConfiguration`s and the names of the corresponding collections. |
####The Time-Series Configuration Operation @@ -162,7 +182,7 @@ public class TimeSeriesConfiguration public ConfigureTimeSeriesOperation(TimeSeriesConfiguration configuration); {CODE-BLOCK/} -Pass this your `TimeSeriesConfiguration`, see usage example below. +Pass this your `TimeSeriesConfiguration`, see usage example below. How to use an [operation](../../client-api/operations/what-are-operations). {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/studio/database/.docs.json index 8da156927e..19fafe0a1b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/studio/database/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/studio/database/.docs.json @@ -5,6 +5,11 @@ "Mappings": [], "IsPlaceholder": "true" }, + { + "Path": "/document-extensions", + "Name": "Document Extensions", + "Mappings": [] + }, { "Path": "/settings", "Name": "Settings", diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/.docs.json new file mode 100644 index 0000000000..b575a930ec --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/.docs.json @@ -0,0 +1,8 @@ +[ + { + "Path": "time-series.markdown", + "Name": "Time-Series", + "DiscussionId": "19d1538e-bb89-4887-8a9d-e6b8dce5d6cf", + "Mappings": [] + } +] \ No newline at end of file diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/delete-range-2.png b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/delete-range-2.png new file mode 100644 index 0000000000000000000000000000000000000000..dc1713b8918a9b7ad28c77b829822bb25af2eabc GIT binary patch literal 42087 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 Yv|t(^W9=Jhe6dY}H4QZ?)E>Y5FA)b+ga7~l literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/delete-range-2.snag b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/delete-range-2.snag new file mode 100644 index 0000000000000000000000000000000000000000..b290268832a2a17acd15704bf490e3089e9b183c GIT binary patch literal 65560 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 literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/delete-range.png b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/delete-range.png new file mode 100644 index 0000000000000000000000000000000000000000..5039394f095929f1ac534e7c3323d87a1af3e2f0 GIT binary patch literal 41250 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 literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/delete-range.snag b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/delete-range.snag new file mode 100644 index 0000000000000000000000000000000000000000..ef855e5341a9dff47dbd51ba60ed2ab76844b66e GIT binary patch literal 57368 zcmeF41yohdyYNvuRX~uCPU-HDMjBM4yPI?95(Vi-I;2yO?vf5cx;u_^cYXV)@B9Am z_uX~B_ulocyVkvnjkC_)vuB=}=eK8O&ph*-WA959Q5E^;lJcwQ384gHjuDoPR`;73 z{Jsx7T1YFwUxfL;4nY_=n44QP7=+*P_khno!q2FOFfjLj$KBlC-u_Mo1DxI+|APqp z@!ak{?+DxxxFc{!;Euo@fja_s1nvmj5x668N8o=qfoou`3SGbd5#RxJp=*9bARqw& z83-sqKm`IC5TNPqjynQ(1nvmj5x668N8paY9f3OncLeST+!44Va7W;O76D}#8{iKN zLjofXV-0-T!?*ye{J($Tz`*~x=MVJ{_>T@|YPE02^kes6fke%}9Sfv^QVn5@V4VM> zjQ_zsG?@GMpv0lR2++^}AnCukW&it10?=3w#tNtb^S`fo1uNwS4{h_RQ{^V~3=x+k(|6e-*{(qJY zt;64u0+V+7-Gk`~U6#qXTI$fbakaz*hiZ9svOp z2v|VC2Etr=Wrzawx*;Euo@fja_s1nvmj5x668N8paY z9f3On|GfnGg`BM{NgR#rL1s4A0@N&w%+w@C)&@3)X4WPG)DB={25xE+AwhH$bQFGR zYeOSv;FMp&UeC%%)(iyx^MXVkh!LRvc>|EZ1iiuZZ;~De2-{!SCXInjM=u`M5b=n;odDkpURW8Eo%h1n~OJ@TH3_knJ}~Ad#M>18@z%k}$Kh{QYFu zxH;IFxd7E9Y^=e*+;JAiF|YGnB9>HaPds?ke( z0F1GXy%ou?QsvC-?QQI#t&CsH-o_SWs%L29MDkYwB9;z7eF2>nZ1oJxz%IaJVB}zi z9zc|_F~|t~3-PaWfG?osuNDhs_wO@gWd*?fw=e|i{lAqV570jTTNncE_dVZ`z_0=B%kEuk2GzES>o0{|EQ@(#H> zy(4f(;Euo@fja_s1nvmj5%~KA0u<#X(NXZB(VyLq|B3N2Z9B~C66B!5bX6CHmXO#FGFfc1LwXuiEE9#R1 zqR_xVl$a67z~0OjSXWxZU?G!|1Mw)(cu^Z$7klUm7^d(+A1@G#@iW%m2)YEdCIOpS z8NqOzK7jrN0W$Q?AFF&AE!$gYa@3!~%|Hg0dO%Wpn5yRTFd!NU8m+2lZw;6*V44Zm z{D3&bU-=#E4UAxpZ{KhJkxbOa3Tjb+Iq8dO0^$&$$zGa)EsbDucZR58fUiYJi#>no zoU}FT0!}(khFm&HXKBS4PCjvosF*l-wusJL@ZN3$Q|gU~6iN8UZtxIzAZe{Hc{s{# z=ZfVt=~8l_VR(Hdo(l|Q@J0$=dCpTaXX(27=moW1$V5^|1OH;Zo0}gj;Sg#cN{zG@P&3!M zhKl{XlN`2)NFSSsq$N2BxrYXsSV9Wn$%ezd!Kh-)@g8SgiDrJf-P(U*?WgqbMqu$o&kz^#rH6BWKrgnMi`>&sI z1(PBv)&toKlORh2#`w=DHf-L0r#YD_L%jt_5xPC`eI7?A9hq4$*nWZ6nVLl*?G?Hd z==|Y=YBDFv8(*iIId9;8MK1N=Wym9Ztv<4G(IZbgRzRuDg0~S76w- zc%_3s{G>__(|;`F>X?GlU^61d84o(Kp!!FGDFZAR2g9Ea`JzVX z2cL0;-P}-0M;6)3vqLM&Vu*$v0BIjY4nsfDw0CWK{k{^ zy4G33sbk=+z=J0wA==LDiniGGrrv|_botv47=YqB#DRpC`|hfQYMYDh@?bK%7yEWBQ&fCgST632+Oy}Cj`o_inq%n>fL@w~ocaZH*vqeF0s zk~g#HxKTpqPOk@1f|e{j9(ldlhmb)vvaJMi?-P7%H`@1939c!tw$9>QsM8-1#BbQ6 zdFZ`x?lnvt^2PMXI(h8@3!vISWB`z%)tR^?Q8Ay{M0g#D9QJ%bgP* zlv*up(eyVixgEmCS3s$?2ie+rp47a(l$N4mV2dh`HpIMt5A*&bUfwC>3eLfq2{Da2 zp=s$zMoEE|KE?Sw1bW-2s_!T6DfaEroJ8pnNSI<v} zfs$(RH6yx}-ezv?uVf;)9Zx@(9A6gxbeYoz_b$%>FY%3}g9Fyn3?4Y?NPWDI>5|M7 z(do}cGw;D>>V1%euxy&fv4wmfc+!p$L?Y};5x>E{35}qRJXs)l?`Lvv4OnH7nB6HjmbGWp-=LIo~K|ESPrPyJzPs(U6{0y@8AFiCTdKE_$_##ou1n%pm*~2BLp94+BeK z6l^5xiV`r3l|rUBl`t?gG11fhxhzh;--kX@HP+m&NB?~lKIXH?3oL}m(^1Z3vqg#Ji2TQ?(b;Opj5UD_zmT+tm5%ik{NtU{Y~aszGF z;PJGqL?mzaO26%oKgGS7689J5y;ZS6rhwz8j${meQzQP;@e$vd|3;qE``m0%8~-`{ zQBPg(Zj~JL@9Dev<+?APrH#eht6g8$-|~@uzoYo`O(307yf(70J)l4E5V_4Avu+!P zEoAAL`bd@4%r-DQ0;2)@#!{R(cAfNAC5uSLk7m<_T2TavUwLCgl+Z#id?jGvB}!_! zn14mqZnddFXfCAZ9g$ho(Mq%C$Fwh>mRkdz5_+F8H}~DRXdf^Bv(o_W6i!8+45_Bi z&>)zu7))qtdR6y~di+$Nv7?WGVe1hnA3u-`I5CgAh^QcuAGQvPmg>La0O z!M|_NiNZ^^zRBk7Iw=29Vfv?nHHT=SwUlT#2Z~HXOd6~Lze~g>W1)gUA9C)BMTj%Q zUQRAqqJah8mw>Fy-j3#$LEYmJeH%G{lbAt8rx$F0fZ<0=8b+&>WvDd@j+d~Td$Fy_ z_Gd0>!)AArPrRdp=kiV8O~dmiSvV!&CDwqKDpYKkMWy|z!zF?sDpX4oLLsfTRg zf7bnTwSD4QOx`g{$dcx+qqRlh3DuwZ3LhJ`CSMPi3Aknt>S6^VXvG-o{!$riCN2R~ zro#dmwvqM6$%I_+AD}~?(0%VOP!b8YdjCNPmO8I>!!<;$woi#A@vmweNe+(W-vBoEIFZBO2UAe(3)g zzg_S^QNyA*_Hvw+mHU@Usu}&wKlTer6#H}r;1G~PsWNd6g-l`;laOQ^d?D4({0?xj}Wf02)c#PT_NeoIPQd$*$x}e+Q^yWE6Es~=Csw@peo0Z zy#+~e6f7LC03+0(?r&0L-i}lF`8>6ouwzM`4goRUNkNW%K`wifbzQ`n;;V?a@5i}x znn{l$ogfdKo%J|JH@#Y93goqul3zeodrLCU*qBAfyb&Fv-KP^K7neO0m-@sY5Tyo}2PR0tK~nPjeCDO|#y(~!2HhvL$d6Ia$&e{>ve9NWp{lY6 ze!WURz_RX6`j(`t&>R_~_H{l6Myo~Xr7oPXPe-l7S!@vY6Y9ruN@gHAG*f)^YWsl59khj$7 z4bav&urD%cSt*a}MBm##ybYRN*8^rd89McEI%Zp*8u65S9`L2yURzJqaoT7!z1s&F zi=LapOTbVw-LUu#*y>)ZOITSCRMfPw#TU+#(0FZk5)u$(W@X!zO8}EX3h6-A+{m2M zub?smM9G#H&h`?8&8AGZtGblaj0d&`M#7@9y!c;M&p#eEqP@W5*m4Wu;!+)q5cD%T zjn*9T2zwf3r*t|lS-n4mAOYixg@^dkV+!ku1Byz83H7Utrwdvbo$f@XWu3u$u;VWb z|?tued2k>TX2$uw}iV#7`S_dSrsEsMa}bQ zYC89`X6pghm~H;!I52LQKz;arp0w~inbhk?GWVX%uM%r(&rgcmVjk{zy%mRF?v_IN z{>Xe`r14bk=B8gM?+{BXD6fohXeOcRJXUVmd2h~lC5w7!4jheM+|ZSsAY$$QLmNk~ zpY(}o&iRV`>-v2vKUcYE{FC#IAD>{m67AUH6NQNMTP7YtuyqHc_{+fbd^$IeB_aG@ zlR;FGF-RO5o*k%k@)&Qto`J>$W*nyZsn#f>r1-2V9$PwZzN#eJ+~MvzBOqQX64!Ew zB_qWbn*Ju~<(ddP3UOh<5$I-fmV3@y6^m?O_x`LKRk8kt42`+mAC!lwf^&=}n=|-0|$R4Pe4) z#;$vURY&g#OtHmr=Dy|R?2z3~AX4&2I`eQOzO!9xIi~>)L3^)SjhL$lTIO-mK-+MAy*}Upz}? z!ojQQGqg`9QYN@9`a5SQv?d5fSvqT*leAYGALZC}KB+`7+tJRS zi;zp6x_9MQBKN7k=~=qmF_5i}UiWUWRBwRqh%L1}ao=&P_Vv1LcYDe9_3)MFTLYQE zuGISAoJO6mDIpdU)t4k8N>ScR+&PdbV;uC34o1oEA$`=MYs?sp! z+bv5G?T)>DSMzjqYxaPYuiHp{k{>0OzoRt4Yav+yqXe{V-rrvv4 zZ+)+W$vweOS)Hf;9M;ii!LmK{-szL^pbPq96QqY>xQC9b1j}FrW6(wP z;N_a#Fa#3yl(+c+qMcsv#@c;hHR67KNndk*xMJgx{HDSmtGF&~`XGv@Y#mZxT}oXz z;j(ux#T`sqHD4Y$U&z*8E}fB?SBYk8|W}_OE6tGQMn^D{>5an3atiy`pyLBSmWVMjT--c@^FfxxvU6$@y!)_=mQR9 zn(DWF)^sG!#&rC_@eXfbNrz1D$Y5qZ2!m-S_Av5`hFQ)Bs2 znfp<1iUrpf?&9&_cvZx1K$t~6-9RB$A=c#N^e(mpVi!B zwBt$jL{_|l4@sZ1_2dY-ICZIsD}QTdke22yI>0mnGg7*_AT2du&{I8Olgv{PMWp--NLDMBfp8w13l5&xv2A64iackWG9VpN4yIbvj2iaqS9$EA?HXhW^tFsvVV zU92j&G!A$%ec2HM4-a4z?$+@aAFx*lD=V9Wm+!F?s}oD=id~HtG)CYoB&4?oA9q+l zU#Z|Z{dvmIk|uUr`a6WLrPz8TSW=NYbOvY~uhV3S$Q@D}JDUNyJv8^T5l_OoS` zOpQlHVkE6MHM~VOfE5;$xfu?7gSq*cL(~^0s{0#4TqpTJf6(NTaoed^ucpnsl)APoIk5#4q4&O${PF;Rqz1 z+jOv{EO;PmG6q#{rVRK2pC?4;%?NaQUOKqyIx&tC08FG@H{S%*0_H7-i#Fce!qKP@%-F#$zYtPav3gk7fRoGhYlZS7!5z- ztiK|{@;nm{WCe8@&(kCgPb6qezm@2j_w+ty=_RTdL{hB!SOrXzM)E*v<$F}dxZh07 z^zaU=>bp?so=KGN$~@cIeARn1?$zggB$7P~h7B^7%h~GJU!$MsvJlegZ~mAL9c!c; z(6OJ4j_xek&@HZea)b`C%A8Hd2N-VM`fxF3FdKdUXwIS?tcApv(ty^unBLQ1buS9` zJ6IP4NgkGesWbpCEd%9#p5h8l$>&zVeP=gm$dQ^|Z%2{ABjF%`ZDJDj${~TAe0@ou zVE-InxVot9iK8Unc80yYK|w)2Wt($pSwh|{$H-PDGlOJR+1d}sF}NVLi`h=vR85}}=#+NovGw=n+=3qtg-a7= z>+M&^vI~)Lk`RsYTosXlx&aV5^-ksAA zx(ImduqH-`y>zAqWLZ_X!(IXU%C8*>IqdQ$ys863%Q120;)cB-nZ`z9$8Oyrd+w`q zSKJR~*<$-Vr?F(#RFaT65UcDH2Dx)!C#qt5IIAlyX`?P4uuvuj@9+xJ;$@zA3b+TB z$qBoeV(%n5BDZ-oC`)aFw!e;yaNXAvQC;zd+H;56aaK+&s8qP6bm73WudJZ6F4)NO za(?T9CzI~UhxT(kawdr6gy-$WCebYCIBTawRzK(8;X;DR!pryOTuR2ZGP%1yJf5aK z?{T+wJ79_{H{qkkC#B5^$Dzc>`N;NiHH{g#ii<#=JlMq$7$=X-S}C|5bG4! z!J$qa^x12bC6JHAhb@DsZjB#IC?FOnWyZM7lvQy#D7Ymir}xZ7!=u^Wmk!Zpj#({# z4&%iYMu#L}$T;&67uAH)%0TuPoH|noL_0XjXldi6E&@)^&SfrZc1nnC4PJBj)rQiM z-@2}85u{mPVuU^z^Rguz#+?_@4vyWx_`JHezKC80;+b_eW;`dWpf06N1V;)reo41^ zv|HWg)X+b7f<3R9B)8pCRNN9QvNn(?B{^$+qU~L90PO+mOQ?tDtN2r7RR=m$nNbgc zg%M8v%6h}z%+_QdG6Km^+lIo}ffsw*Gdg=aG|h1uK~X=6*zT#i89XQZ%V2E+GE(); zd>WloDuS_(D)YP68rzR;4mNdO+Fs)B7_Qax#it-WO+(118#}lRd)V=)7CMr`sKV7C72ie*4?9L%In&T=gS_WwH9~KWKa$!8n^+n zfLMP%hA*F7N41|iyl6gg#eeI1@Or0VcMW7tb}may{n&;fSJ?Yl4J^yqN_@@+jQ!B66%l>-ZKVs;H~lS-h8!iNQ2W;f*yxE_DAr?q zafI!jKeX#%w=Ke=dw~CO)lA~25Ww=}H`rt5DncGb{7V@jn}!2YRJ~stOtd{ed?or{ z{vuIZ4!rE`{wO{@Nz!y>;g{O~UYTvg_~IX&8Gk9* z+v~EzBli%C=`hQ}^7q*!;vQqNY3<4o5ZE*MR`HPW>kpUYo zm3lP4ty-Rm)6=H8JbgQ1b4IOcQ$-=aY*j*aA@f&9a`M_+Y1(qEMG$YB`PP>`E~lwp zqAt}IZom*9E6^3G=3+7|p_#YEVf1f3Q{uT%ayi3$@fXRXwh9;b7^ z*zpIO$;smlzpZMxrp`Z`jV?u+5=q1ei-EL)Jc+Q66vfb?@`AF0W`4H&D5v12YfLm- zat+A1^lVXt%43hP*rw>|(JX#;Fkwd~oD>ozmh8P+k&JpH1zVlTC-`C3hOfk7P3Qz` zGF!JSP-IeWaM~qPA+f!5jK{i+OsFXfe!ZAyd*R-Vy-ff2VDr}5x+{@q?gU#`i3tw9Xg7MkD)_HY_8>>?m&}CDZ5P#P+ z2Y=4o^6G7a@5qTczD6Av4s!uBDt_hR3Ei&km2xOkHh+h))&`4aN)et=4BQ6eF*9Ra z!SxxmCzzF^TbL`7a0DG?7FB`SRdhT)eCT*BvaL7Os`vG?9Ik#aBxlFqB-vkhhyo=L z(4a_gTdn~%L)%x1_rW=6l@<}9MNRkN))8N4%XXVuGnXcrkWCFqdN5E~kbTEFtB zdq37u=EL|3IYSS{uT?laGrC26RnZ+1TU`NW<>?OiJ||(diXYQd@!2o! zi)}lB1w3@O_4c}16wfBnPOTLY z7AR60fH#H0S%3UYBdq;}?$Q&Tn``&Y5|@$sTdzaU!|RzUFe4Ugq?D=6(n`u|eT6$0 zdV_0_&F%BjHF|?dhS}{4Vww31#cii+N}a^m;qx&Tr~SS%r+c<1&4OQtO(Hz>DQ_<} zN7+w#iukQ>PMm54t+Zeeuljc}HSvC=l3^$&@~wEyr0V4x@1nCf%g zvpLgL!taJLQaF&s6P~}|Zf#@?N?D1|GMGF+DCXvcJlaWOizpY%ojhREeq$HeHiJiB zd&sz^&`(N9D=eAot-?3Ia{L$($-zPCXA`f8kM*nwqJ7{VKycU@nKV(e>tNIP^(0DQ zc=;lKTwaNlD)sjvEol}6iFYlJ^(MLk(oQ%@(=opw}` zQ{(oUiovg{)b7+X^mP?zyL?lPo9lfK10wIV-1Yr==dITVyn+VvC*Pup1tmbQN!es@ znTtGOQ?qSBJTYv zqF!aaTxL5Da@m;h3>~Ei=WtxGzIkDNC?UCY! zqb<|gFZAWYR&>P9gwgd~XY9xDIeQ-~f=c^Or7_WFRZ0oC6vD-uPdh8j%ut7CV!rwW zO!|ab8P1+u6AHM-1qNcV`$#xy#j%IAi;qX92)$P`7$|jHevLuMU^38ezky}F(mQ{S z$u^9iJ5iQ0i-@6;%pGr5hNGBth0GTQCffBGqQsW#O3MWcj#qko4NZ1CD;Mp)y3cc0JSAROeVN5HubbY$X)1kBc(FCw>Xiza+c%DE*t z=8(M1cZ&5QRxx_ECvSF>N0}I6!nLy;q*!4>KHc-cwv_b!)eu2ES51IGT^JUEGOCTC zk{)Nv9<8GdU!S5<40NE>vJ5%asz`!;_-ULqQFzznUTrFztAOBXeE~9>Nw$*xP)$d~ z$@dyH%-GM-miAO1?Js9#Xk^0_t3Z^~1O{Ak^*e&ry$Wl6*{O$1Jt>!Y+x%xR3WBxa z(>ChuHe(#kgHFz?H4l(Sxla1VCT3*Ubmqkulg__bVD-gyM;mgV3^pCieJG+u*;Fkp zt@E(G=QQ(Lc(0H5<{EcbX|}@UU#(zDWp>%j8O(k@o(}ISKl|HF5H331UQu<{QF~bm zzPNNE&M7~7ZQSJLuhmv_TVzMYwY?Yu(O#Bv@&bfEdy*+Iwh}qU8@fFudHk7+Ii8L1 zP1DKD>^i0s(NagiaGZlEvc=7W))T(2zH>I|FhY~fizlZgn?$XX+w~WRT>VdnD~}1P z_Y=Lkmn>W>LYAl438%U$zgP6>gg+R)oTzLhGuLUYV-)D1czJ|pkb{1;k9(QcSOhsN zy?G)%?-f}Z39ngpz#yM$ktlWiA@$_hSYyl!=q}ldI6l%xTK531J>54$m*>Yjs`j%Nm~uQ|;dZ#-gVu3QePP7((n3;t!w zyc~yrKSOz{9P@N-LQ-hC0$pHv^UA$%8FV_|(eeb6eF*yabyADz;A+~hUn|xsG4`M$ z$7XeA6|ngd&zo?iEL$vppT6xPc5+DlQnB^n?`|KV1c^IE)#^Fc(Gteik^#H*&I`B>sW?U-Ss zwL<;Kv*_7^O9b5Q$8~w8NX*tlaKp6FpE(moWfrx_zz$<2+ZyQ<5Azlo8HAg zt$L@ub|yl86FPP=KKm+NVXi6+=yH#`XmpLGC5}onweiDtwg@!A$1=K@@MRxLZi^gE zPTWU;eV)|Vy}g2fs@;h;Zz`!&PXV^N;m+X1>LTWV?1PFD*oGaJt=npyCn_>3BR1Q1 znu#sJKWdN8EFp;39TT)8e9ZShy~|f8apNC9ne>c=z24bzD$Pfb+NdjJoq1ugdtLqk z2^JYyOXqPE4zm?Kd$i3Dy}pX@b(}{}b==w!w=U2y zspJhLg3oFWL9g0xLaqhf9OOJiV-LAc_q`nbxEnusSk8`~-siNWg<#{!b`g77YveX2 z-~_EhS0)#1EPZu3T05a7JFzzQI|#ema!H@f2$|_OUN-xb+#^Y)yj_>14;am)s({$N z5X^F-H+tSJR;nE3s$5m3Oq zS`&699k#CZ7B9C-qr=o2SY+aIVead_LDE~BqM;8W^+>P7lYg~M_}q#a!+({$(aN)cb%SG5{& z(wpv>IBE~)r8-Vnf^`SHmnZs-S1XYC1kCK6GW$xK>)_!WLDI{ZUC?mbq9ek$M4iRY z7LA>_GP{ud_){nA;Bs5@;ez^E0h#Oy(E5*fbfM*0fs*uUNA(Y<_i7d-Ja?9Fw=fEQ z6_L0PS(-fEB>Q-+p2~5E9{pVLtLB`EX4u9#@|wJW!;F$j2c~!y*s;(0M|^cPIn}=9 z&=ND_A+cU&`v!04u4L%k5KM2@R^ci>39z1>1N$62mZZ^nWH{6yv=A|*TtuhV&-bdr z=ZS*jYqp9yga>Zv70P8^=ya#WdPXPT_^&=2VaG61SZzwapX;W*o!S>>lRH)%$DhAZ zP#yjL93y_xMYwN%#gD1}<2K^XC({!`oH>q|^>xx`uZsz6w{k2t-qJ^^uzI)jkM0%8 z(K|pKwDf!H%ve-Z21+-%gcjcirr_yiafN7tWA1Uh z!e3@yC&AWT````UE`PK zeoI@HrTOw8Lkg{*&Fs~)n*@n8oT=JdE_Zzt+C1;)i8|64F{;~~yYLz+1YHvdQ3 zu`MgcVfQw21;;j@ltEaHGKZ@Vs96~w8p`gxG0jh_%-7L{vo*%`8xWJC)9$O^@+^jD z>yjeg2^>+FbohcFi9*v*vfGS>8l&vW08ZkbDE7n@jw7eef6E^TIrh+5OULuri+grLT$E1!*~gdbq>1^ta@ob$Lz$i)N?`pn0{GQZNWRto#y+9yYdW?FWz(8HCwu3WIzbEo^}P~L94 zSFiDA(eFrW)V{O$ah1riohcA(*Pg2RE*}dZrA*`f%A2Wy>#?|bp2q8DE8frDQ(cLnTJ>Om9lgZsaWUDQg z)lPR?FdX&e2>wY@b&3WxLhfW$kqutbO@E=m^dLNaqAQ<{2Y*m9Vga&|Y_?^;p()0o z$`7hW3s_+lRIBFd_}(+k?Ht38tDubsLMGRF5t^|rPX%4yh31{l9EBiC&$$IEN{}A* zQa!T9x73~>!Pr{bTe=@;eZf0lpErIY<=-*Dd3YkTYsc>%iB4Cka`5qd=43^O*=)d3 zo?S#)o|NrHU>CX-q)NymDmUP{um%mBtkI&VQ}`HXh+06R^ZtYByqh0Zj`EkhMpa&6 z)KteewT#BH({^L^1eg8B4g_3wN40M8u7_35hJBnEW0essc7hN%z#* z?3OT_W4%6q;-^o+@Jajt?wPMe~Lh&OWNE?B-F4 zbLeF+ot7^(0lAE)=itb1&-F!|NMpy!<~UD*QBV)MFj9@@r-b%y*4V%>$9@VCZ@81M zx_zHTsXsX&_>0pvqr_Y57WejKR*m$C_KBKe(88U zHtnd7$oFh2p4kd#IQygGOT{*yLgrVOuS>4Bk4GdwrspmFC~>q$%~nxnjY@y#-l5#P z=+LzK`J0J9jNyQ;rx{V&Z0{stTq}AOh$h7qo%S>J74(28UaS@~Cu-H-UhJMb9~wJaPWQD$9kb`GL9c;==^Y4OyZ z0E>2^WV7}%8b*43Wot~ikBQEwpC1!igeD)Q@XWPUuZyq9(d*mG^O<1mu0~~yg25xU zhMmvVi)ksEKKZPRw?i6>gwAF+w~FvdcrczqgvI?WPy*v$DvB*ecV}`~u7ok!kZ_v_ zx_tJV_)=H))~O!Sc&J%nZ+_|;IwD%1I-3?|^I$aI7h8cYEz=nvKB_Zf1ngtAd*$um zmlyyOv0oM^WJS20bNa<$z^*<3YL3n9l{4^AeKZXN_oG6D{`;lc+Z}3e?XUrXUGw`7 zdGZ4ZT6TO-hfpd1?5St!k;7673gomUb-hRtp#{316Bu)6+Jm|j@{N0+ z!Di_3D0Qz_o@38nz!Krty>G2Z{#aNWo4m@tvldo>{>!m6!^DSDiyU0eIrM#M;+Wpv zI(x|Hs89(%p@_G|WkxeWrZeE9C7wHa+6Af&WE+>adc9vGj^)tUT0tI;%tynV=e)bF zzRn&tN0aHNH!i+-t4@mJj$Wo}nReP>^jB0KZD{QyDcYH*dWSI?XB2-q?SivdfBV!b zV~hUsOr;QK`QH&0ty_ zMZf7)He4cB5?M5iWNa!oKZUN8Sq6*CtCF+U&ICD&oKs;(7lVY@e=5eP($7BBWu!R( zt02^FGjps% zKoO?rzKA|^x_#T$S|v+nHv!vaxQKNdVv^z!Ii%O53axo&Z!B8~yZ*V;jJ%%t+t6C8 zs~ub$dw#S`S=|l@@zPiux@F$BWvt^i_mFoPt}a^Z&gGfk)z<2#&A>wTp*?ee^Yidh)WRpm1iKW7-7j zC|LeBG{ff5hVP(yx1aT32#d$f_QAI(8H8;<&kA6{mz$OC+&{A&%S-&~K`V~mC@L~lmQ^byHOkikVN*A`te8?G=@Q3{LD#OtEyBLCbh zjpY#~4^f2gRPduAh!PVy;U~I!j{M5csl=rhAA`thE6HdCpN!BfhdfeD1cq0Hq5K2+ z_n8-b;r7=m{0^Njc{feChGkjJ@UUnvm$-hIUP%h(Z%t}^U8!?6HzzCS7@i?qo5&e8 zl*6yy)hpm{-d{WKlSK_zWya;?`f^mKlL3~60d~a`MJckgBUP${C5bTh3sgBDq4=5E z*!Z=HeFC;YIH$bFn1#coPp>42p7oLfR{t1dk$^lyg&Ob6#)OfwBn8#z6D_9wVo8v+ zWq!6%wT<905!3B1LuRGwuyf6be=M}6K7WF5*48tx)15@?6p@NXkFIqN#-oEDI{b3-@|^De59l#|?gF|C%~pV z)Qs@KTwQqmk=RsXXz5}F?&M3Au8;?_z3JUNaIo9#sWaVyTytA$@^M~5P~SWQsB3R6 zN`9>133-gM)moO$wtf$+&Qix!2?cfK@N12hS}q;E%kCX-`n495U9zTA%pP%tgT5il z%BHK`mkbxYsfjV7;SWbI=T=U=W)!|&A)YNUls!pJk&?`f$slg(0Q_rruL!~LF#^4$ z>vgG546eQvN&wN)>-GLX8M0EOAWAb*mXm2=T&BB!ALW25GC6YMRVP)*QDKW)BEOy{o& z{zw^@IM)v^_rOS}ajt3`ZO(6!T&4L?7h5)`e$1W5ig&oL-BJEOuC%Zz^F9GG=l!_& zJhc$f*A;TQV_%hV=ADQQzGlfj*fJX4U|?>H_AP^e=35!AE}7;sT)(s!53G6bYD!9e zv#uWhm~(%w#rs02 zy%usCvaQAD?>LsTe>8hYv#lcK0ehV1)jBI)Mw5I*MEsOEm+7roKG#*b1)e^H``I}i z5d)px4n23N#g|hNi*pP9TgP$P+GD?kx_JY=N%m(#XVh~OGv8gd{9xUe^9X2?*oYmi z@atPA+|sT>Qum&VS1WiK`95~vE5n@}o#5HYxOz*C(}8yZ^=qij$HO;UQC5~Rx7ya2 zr_>x*Tj4@BFL?IW`(4KVj59<|R?0WKhoip99JMoaoMk7aX=$*OG#Bp`bf zee~T6WeWJ0401^#>*boJ6a8bJW!CtW(IE3~R;raSzxS{sA?7@-CJj5fk+6{a8AS}QID~PeX+@vXjil@}934P7-SW@aBkTD3b|o;T9l zcrBo2E|_pqBdS3RmsZVSI^TtE`U z$>=66&{VT@ZU*|S3l@*k1PXQP0y9SSbXjXAVGf;FCS6$ExDzAqp%qU!S2Mh>$0Z48 z?pq8C2+i4h|ZA4b;$!G&~R#|%=Xat6VH(n<@{IxxsjpJt^c2s0( zDKtzH3gfom;BUd`M9mYSIow1W6M4(LdBbh%71Pt@X2Zs&Hq)7AOB7so{!tTnTW1{| z@Y4&(_l;T0;!WBpSWIzD$7;N!NCL=(pLFXx3t9v?%$?5e&NYEzK3DXsy6rmAzmJ0T zfxloqZ!vkIqx78Pkyxh~rUZlU=A6Mc^4n!Xe%E&;w03O|yuz8#QH5JjJa2m+uMj;L zVq%E#t`d+-C9psa3m{cgd(IJY?ETFp`SUJlOKAAemFRY8<->d1bp4EtrniW6+~rqJ zeO7S{%I+j#Q3iEGdD9d`=Px*4i9I4vlM{c;ZfW__X7~BQdsr#-Og5k|>e_z_^f+u9 zAV?I{?XHcOiAt6QT+UZemwWT_tq6e(kBEjb7 zb3fG`S*!2u6;c<8Z85;(Fh)~*Pi+TTu$VZ#QHZZAdbeRt;>FXHeEZ0O0j%a!`bBH* z=fXjYfp=vWQhR?ZxihHg3YO04X+~lChc9t&^bNk|(ssO71^$P`U%v}5H891Mx_r6| zNwRibcwaS{pdOZQbAMJn&esfm|3bl@4ld(EKL^P~ zL~QEUUu@4kdn~+RMv`e3#N_y4Ty}*zZRRxFThgET2U2o!MlJ*xY^fhucsh&%U+=2p zcIQWmFgseGw-4G&iw7gh6MaiNhbw%6QpIF6C?m9V+wU1B%E4lYF+dd~iX9CT5I{jF zB%y>VL`gl{t_GdHGk#zTIVu^&*;;7j;XB)NM-SpU++pH6wC*~0s6RgZp6ob(p%@RDP1z532TqmNMe!!xlXxyGw@_jxv$>tKQrx(P!d1Z+mGlc0 z45*BzD|8Czi7{5XTh|$Q{MU|^D}Bqh!~E2)FvCEIY8&dCWB#iD) zDb~k@>8o6rs;72ZwO%+o+%qaVPWCIXBQ$N}HZ`UWxLtmM$(#zl#%F~pRFAD%w~5Pw zYu=!1LwVd<^P?=el*D4ukr0C4TpGt@WWBzr8L$?t&+MUkF_3P5(%txz;RY)g9yUmq zne6Pk%zXI1xIP+^2+UsftlyK6hdGX4EhZ7EIQM4Mec8i~v6=UrU40qvHEK?s_Qy0Q zBP`!zE0j#LDVxh)os26yls}ZeR5DBfZ?O$3ynxe4l}x^)SYB8q9W6i3(E#=G=s0G` znFD9Tw@{F8rq(C>YwN>Zq*oq+kKY-Cd-v3-=JE6lB>rQsX#d+@@#!CX#lN$NFtZw= zqrC$b0whSR;Wuvuegtk1{MKDS|NQ!$+2?TI0zSgF6=Vm3K}qMa@%`$P^ZEi2j_@TS z)$E0Akh1mRFDpjDW43qNoKMm~>+;xGK+3?O=SKCLhpR+-T&-RbklAJ2Ot0K)m-Xm< z?&95t32Tq<*v8&Tb{hZ^>WnE$HCk{;Os9n}l8x57BIqyPqi^drY>tRHTT+mNup(Mn z)2sKDPZwH`dJEImYxkAQua=&(c?Rac*tv13T|baS<~bW`C7^*UUYD6L4ElS9cf^xX zttQl*EG0%GPXg`HFbsx^PQ>ZfKP8{B@$}nA0f)-sd)0`}lDjds2pcwyF@C}652G&v zLM6X^dz2O{FeP%#;9(_#?m(k)b3CIWhr=17!NXdW6PiVqG0riscCXaHazUJuY1_h+U33SXcGHurM0E zxrZIL@v*LykpTzQt6gI2)C)|~(-Eq}U3VJrVWwy(M-p;!i2if(e69`ot&b6?Ok%bi zUC6kvMn)F$EBGlzS7z7X>GoP){Y^t{tf2RcniJT zP79xltn@@dpAIZ!P4xrnDIThh9IKCU+>hCu4noc_5-`WZ?&VYP3;|9 zGcdxvVg{UFLRsWV9JI78i~k?&8y z1s3zyI!1L;!y&>(8+g=PkGaOi*!l0o?S=roNu{q!E_3Wi44$YF=6{}U{eo}qu(T?+FlJ1=yhdf*{5;IVsk|C zH5*)$_mU^=X^&?4VGoDraw+{pW&){ir6sH$?kxYin92B{nCFwnO6FM_+0Rs$2m$Sd zktm;cMAYZby4u)Y9};LmJsB+4`X0Fv$vV?V9L0`XgrRUpbdMsGt;XWb!ZoTaoFeMM zwyYI{*WI;mG$c+x`*L;=h5gJRNxFTZ^hnd3u-Hv%*kLlidONgp0#i-I+W~{2Ohj_C zBylCYRarH7tss*RDt577*f~ekZB$1rFlVWwLsDGS>VdmJ+x^j&wXkM0;?(3S>bVwQ zqsGF5LTenV+CpRnkt;%Kga}*?v9aG)lceyZL~o=wtv6&(6Agr9YtE&V4^5kXcx-ZX zOJQ}kwIr)HUJp8Xy$mZ#03C+lwz029JJtzzP(DsRXyvz|x6>Um=kq|>9jP=opa>V! zwav`PKgc{_$`Dg7*JilsI{GzS?}@PqZ631ETe6_U#VMxG)d4Eh zbfIKbBkWvN>?+TlgzkH35kIVSnb^N5sQ3$B$QYOiLGjP!V!BXe z5y!(?5}0q{Q*F`d{1a!g`M03ASwT)fy`1B9W6sOd#(p2$qO?RlZ%)EzIuvBkz@CaN z(e6=ek*Amu7X)*dhd7rzT+%or@mtP2g<-{rS=N5MkechedN^Og7nbaoy+gp|6Za$| z9R4UVqpUMHm;!J-!U3bmH{DX0Zbyb5rKJqT(^?OPw^=-D$ec28G8rvFq|eVGH7W_2 ze3`$hS0e_Q+I^$rjfqQm2jzb0T*LngtOD@qow}uW#!kFN{7TNh^V7Oj=Z z-;Vzl^@BN-{t@X{#rLm|*yNwdv+EiViF&TAx*p>u6(RN5E!D3+8c{PBP}?j-zpOyK zB)RMEd5zDjlNB;H2{huL5R)CQ$_pHEK&AnKq9d8Gps!NwhuXlcHqgY%uB504miji$ zhFoo(j-gRR&aE5oOLlEfR@XZ=H>B_3#Dqu!Gg-_Zr_)=!kYTq=^}0e16;lDVWWSZe zmBi|nk4P|0U0)#Jd(j~j!*4bNL1wP?2RzkAzq*l~QY2kDpD8=NBLGWte2O-JAOGzNCtZnMERO?)B1shKL5n zFBiSFEg^&t>1jj0$Rfdq3#rjcHZcxNkDj=K7*Xyx%+LLmZ@`-YE%LQI9f*>OE!^0LK!_xNXXqOK%nPLYf!)jyWS@KQUq; zSH@(KnSYnY6CE+k2UwjAlx%(oi1P=|nII7r)kf=lG2&8JwA-<}>u_6Eo4mSnv|a_8yP;FQ=~QX@xK!Xp+zJk}O~*EM z-m`Q^V8-bsYRe7}yIXx+_q~cOSIOv!O|IN-sPx$~b&0`=A5o|u->kURw*cGmc}ChT zTDq$|T1J|}NFK~oJ`y8r#3zgVs5@undKguAepr%{OgkgdzL|Nlq$&hy%0K1BHRMiB zgs;d7tyz<|Ylg^d>p_m4#OCj5jpy0}4*IyoT(3XDW2FuKTKgjU7Uf6f9W@J{X~n`t zU%2IpTS{RWAR7^1K)~uPs*|2rAuoTYORjbn2*F4xP8Aeh<4FhVlG4D?ThD*rri!Sn-kXy zP355t8R;wt>;mx5)}p6SQp(X?x&TuLl*I&8ZXf*bNEB3@qZ{aaV>Z2Su!>lAUuZ*=xkh*&O7YA5Rc?k6mvvp# zxH@dSeD6UKaPw(8r!ziJ5E`K)O5kl?l6X;kOKDO~6XWBxMY04XF2;{D^?|fbzjGTs zp|B%6+S~VZ-uO$=z?fO$5o3I_=Dx4;7>iDl5EmnIIi8N7c?owKMr>Zyyw zr@7N0#q$UdIlf0^spXG6%;`ZlIln`%m_4iXa6QP|@!(mw&AA-P{QT^B?^#u15Oj?U z3&zAn&jALGm5wL%zp4oHeUuM-sm*k{&^mRkSr+UG*f--=MBn?p($N{=eB+NWCiwvZ9D*N~r3o4qq$_4Tv0)H{ zLA@OvE#v>S=KXhwU%{KdA?<&M96sV|`DTZ*diNJQ;~R8Evo3hSztA(D(*feQK$S`U zx!5=PSB6W3{)^#>!sa@_+VlE*k%`-41bfw+CG%_l#{YT-O3Av zC8MZe)M6~%n&!p-ow3!racLCvmi#njz3-_q?`LdHt5o}|TS+txYM}64Cyw?V_jWOG zm+-0cAVGx%Pb80Vd)Om!mMl#h`8kY}!e=;zSqObp&!&O&&3u#O%jZRNBza%~_mtgy zoqTRk@o@^FGsV)GV))UKa=M+!$ZMKIUd2+d0h*8!0xft367q~>t1W0+SE7c)u!Voj zlczN75nj>y#If>PR#;NmVX!XRF{*K|2meZ1|AKGN_Mi_N7=X9ZK@qt1o--WGr%#n1PU0Yq{sHYB;GN)aW9`%?#S|f{+?m&0#+c~Z?9_M6A$vb$w zr;BQ06q=13on{$OV#ZhZ6cgLrC>nA(FO$=g;xWh2{LBgtQB^~vM1|v>Za;)uaj4aumq~)k^Fr@EbW>)KE!njz!t~=Smq$$#;Jd2|opXX%%P_Vo2E*6C*Fs0>3HIAHBlG zi89WMDYACC6fq3U+#y1qR}v>RX2i>8eYC|9yjQ2EeFED8z1*yerQbL9BBKs9x=`X> z{*53${;ScbWJi+7OCRg{?zWBrxcp%nhqtMOTHKs4K0ojoyRZm*$4k(8K!31~-Y`2i z3Ilh!EbMc<^xK`I5|!)NJ9P35x6Q=U3yM=MW~$_S7?#bc*0D)U zowb&aWv5&C6}x;fwTpD`v2`|8;Oyr&8GnGr0!Jqh%4I~H!so#aatZ|FHUR&+xn&6* zjo~>%w8%#A$&p2oGKH!XOh2P0#D&Km)2Hz{#L4dp{nW*@jYOJ^5!r!6yZCKstvRe=||-nzgr*IKmwO?qOu z4Jfd6G$khyT%uCtyPmGKO$LI`o3F*42OrGm{CdjqUaFkb<}7v-OZh#iMV8G%o~l|C<>4{go{y2HbBkS1#a^E`2c zzFvh`w$Cr;d`=EBSS#i`)aUu(it0vkcC{~ttxVCwO|2D4cOmVtk-ojscHbboiddr1 zq1?j^x}C_wE8{XJFnPSN9+7yBn^nRI`=y~j(fI#{+))2{IF-Ei7?WX%z0bm&Zmdw_ z3?mYp<>5Y4>7o-g5=A;tVh$%!0M?IqYz`{{X8xIm5(Wu4o^`4zG|>k8i!?Hm0d_xH ze6PSkWX0$yX=Bs?qE?ePCK&(}A9@OCYCcMF2*X0Lr^@T|;80iOWh@{FT9Sgu`?@Yq zz^6a6T(VpF2LJv~x2b*|_&&+VK(2z}KinWzIR|Cp7V+qNu2_g3aD{lZrUmlTM1tj>Msm(wyNQV509+JIY*&ZjO#4UvhX`0OGQ!$ zh3S>&MKeqv;(G$-AH$P*Pkw!V6jwvfJT{hhz9jp?_A<^4K!xXM+A!L@!Wz4#kZghX z%?)YdlNAgso@LQ~E@1{YsXkK5N}qbJEcLc3NDgT8!QG=$VCh0U(lMv>5p%}u+5)&U z0J()Z?0Vo3QX7}Mj)5z5;q;IbqThopC6^_VSCq<3-&@>!rri8Yxi9N~MJ!<0avR{GDA{8_X#3^Xsj=Z|=8cp7a>N zHA?pdXf8Y0XHP(y24%_+niKrJ?CvC|aNUtkKKY!6_Sy8U7IdW1kY`Yl-^12}^OMMA^{CNOUptEr*&1f;*(&$UXg~}OZ&@NDBF@^Z-#cjUJ?X%2 zO?i04F7IX0;gQf1#f4X3YmP7E%wEQf7q?7v9hmLYqT^vspGIcdGfOxb;P6RHGc`kHf5FptqE#y z=NG^eX}ckG95i%!WyncIg)Y0AV{U1!1HOt2o5Mop^pj2B3f7C|P|7 z$aDS^+;#0%GF$I*2N^~jb97>QfuWT&W|USCy*nTA7OGT|5d2zq0pxdzrM5+vYgxEh zFHo{c7@y#`9me!V`!Z^=6IT=A{j8SjZPjMkkse{3`pOQgf+%8MBGFSMVTCOCQZJon zsx47Cng^U2NBaV2KNsb2D|Stxvx^8)Dg#{wlWS;MTI*o%|S zHPC9!bQO==zRswnsz^(w@Bd_Qdq>o;S#i>}b2ITyDFMQ`TJk>}wCB*2^8d`Y z{TKB8?~CN`#U8mTpP3STnzORt*b^3RyDi{u4jBzN8h%KK3yPo<0Fk12Qq71IM#cyt zt!$cPtTn>oT&a;s5x+ItRC*4aUbV`AzDz!-{tpKGjTg_H?P=Nb$;kbkhE82P@4dH( z(j`i()-|2lZRkz6luw7|m8>S7%rv)8-$tw3*Eu&_rI{QM=qt}S^@@cpx5vqc@SK{@ z%a)og(s8t1)x2wY5kjiY9`YhLc|c*Lw$asm1kJW)&B;n>>H2VMavOCzcK^Y1Wlk1c z12M?xZk}7S2^M4zXaXgOe4F}Kc6!X{)!-Yam!3S_yNeV*& z$g-$s0%_LcZ}$4zfVHDVjwGS1N)tYV%-JMeNYV&#LLPH1#;CV(Qb|F1(ezgw4D#!5 z5upmW69=x6ae8R5wpyD z+`VT)rspEPLrw7N(!dKqV5NxCsU9f%3FFh@%1&jeS;t`F!{LgLpN7a4F+B&oc|Uu_ zmXGTd_R7|f7g*w;`(Dw*ZC*v6Xavbutp4-q^G2H|MqX|2qg!c-nWNm*t3E?xe}!;R z)AEw^i;W6P$B`a7)jHr&s?W!>v@sG&7_M@JFk=kvClojHcf99A!(`@BiZTgu~%rn z$8crerNuq_nT%ex(enF2i!8+TGb2;tg2bOKwR9!Nm}CPk6?czHu`Jx^$^+%7rInTW zdKA*b@B4|4O+;(q-JRwKmt#iFR-G;)igIixl8Z;!nI%lIVIpPp*Q+s2N-{35m7*F! z>FHt>lm>v#Bx^1VH8#*@Z?R{!R`a~RNi6Emi5<8dDezBeaNxFZuXmkV#HE4Nb(EkW1aVA! zJXkdhd+da#nwpjoYIVxcn`IRZZQi1S;PG*Jg18&O{B&i*6Ft#}qv&S(ck}7Gw1hg4Z%zn7lrlS`LU-jTq}Rb2SYrc_2s<#h3y8{#N?LCVfG;xHFAYsDdNK*}x?dbG zlX>byp=Jamxf!GH8xt!Q7af`vf`D(E!EKn8;lkJ1oU*n|FrUe;+2Cak1V$8pTn&Ju%KgAD=~<) z>_|!*M7KAi)z=@~Q;L=-2X6C`+@<9h{*{?&9gnX`2hySBEQuG*ys6W@>X%u1~4jm|7Zj z^5Xo%pJ<3}cxyaZw+j5lnzvaX?w#c|Kl0~Q`CWVmu;Nm1sX!d*BlV$-G}dvCSt@|Ua#zOJci(p< z?Mvb1IaC}>f%^ws20FGc!+8mP(9r!;;C>Lo#(UkXxuh-bo=EMq!OBRzt$}>?hMatesOeZCgk-?%WR!sJ5p&qwRo99zK}A|dBOU-2lAH%_K$ZQXqBfy zLcc_^jQ6m(Oey1y;B|M>Ug=)RjI?-N&L8u(C&0CIF(PV?#5M+f;Kxel~(RNyUfX5Yb8feWHP{YidOA zk?<7K`ZR*fbu+#a?KEtDY;g7+YVV3_H8noIMJoWpteJ8D+S_UtoMqOLa#nZ4PE}R) zu}HV9Z;K#&$bWKbdaT*S*kgtY2rou%wt2KP|7WSu0FixJ5~)1D&DrhsU^}+La5_uL z<-X!mR*&FrNz2{BmORt?qbojrsl#9gwoaWA1gQz#)?3M{?c;LSl|Bi9L0tNf+OS!> zqpVKy|LWVH=s}QbW|O$v7v-j-u>lo znC)D7#YuZ|^(%R{r80|>Jwf03cy^G}!l$!6f@TZp?~IT0V_Z*9V{Ra5%&mB1MuvBK zOi0uIpTNWayU^IjvG~+C5PmfW(jfW0G~h|9gtt(zOl}A%TWq775GgH`tCD{On^uE7 z68_xvUoGzcEUL*$Z2t1;1io8$fyV@Sb^2yLEJo10tf!+L1O7?cDDZ!B-u!QSeg5ac zzte9D3Til`!9y=paK4BY?f-|mP1ZEV|adGzy%nBre~X=NlW&hY+*Y_$r8C4*>mon<=%B9NPYV88Nt+=zDX zck8e7No%RIK=VTMCehQBruW6-hlgJUh`=DgVX<&uW$3t-Bt8C&yYd0ck&ufru8eV- zLdf_LSB^1)MUtj3=YiIzFIc8QvbqQkF?{&b2V0oe+M{WF$OYl|MKfYs8@A^YoUKn3-3j?u;Gp z=^BwEHye$4GVz(T_Hjr8S4)zzx&5@D)YHC$`!+J0`^VUNPD9s-!{+_~P2Iq^^bu0P zf_li&-P^5_77IcxZ=R%(*18`aH2hXfd3jQQvE(Ay^&+{+&V&@DWUck+7W_DsgZGf! z`+SScb%WPKM;LsF#C$vE;^zK9nTx;ZXNZqiQu{4Bui>Rcq{9Q5)X1X9Ojl%7&CN0k z_C`utQ`ArETg9q#x&*jC&3SywXkOuAdsuRIseLdtfOmB*09QV4zKaqk-Tga_10K~frG*mt{YxCSABxfw zhdbA)&5>l!QJ~!o@^5AouDN8UPI`7v4};qn-W|KAWOjAQmc?flM8^}En7dnb=L4W`$b4S-fbR|+xs&n@^xoh-D)D9ZMDx;ku)3D zYv&->v%LqTqajku`>)3L_;C+*)K30A6Gp}oE|S>;)R>dhPX;kwQSov&&hPaUY`9!* z&Nst5iFa%>fmFHaO(H`4(B&&>uH`mc(c5RQ;r!!9n*==}x@~WkCfXII&oq3l!wa;0 z1?)8zDGPWy_ZW`eF1ua^GXf49e^E@SBfmX{CLSTMIt^n4pr&u7X@4X8GCSELs_`(3 zIb%P}u5LL(Ob}JqRT<2=p{`YA(ZU6qabE;VLxle$`5Ed0zkg@#L1I$+kh$t!%G%?A z1S=t_xeYEl$ZT&{vzA1b)GpO{h1_)13puwye!1E+qy&s}2OGgHdH& zVSGctm$EFnXA`vIkKvA@;k#WU6g`rW3>{boSpM-Q$sQPJ$3Gc}>$;R^PqUc~yNeZR z?ZYl@X#<7!gI!ie`^MtsEiB%&9^14?mN0uivJ8YGC7#TY8gSnY1(xq$(`G&wZzo&u zg3hoU?T)hc*L%K;(d4e@g)@4IKh?!IY+52E9g#Dgi@6WFol)`2KRyY;r}58_C8v0w z;eTNrk(U01q`TdD*W!JKhx#VC)3e-c1sTY&<6$z#3+!L}TV^}W&nwGI7oyQPhB!Wi zI(s=DjUHUIWt5Rn^N4LTZC@cpc~+5O-ot(>`GID~kB0sM37z;`6-<+A``K@Fx?9-7?ceO>y^3R9(k6GS1$~!x}PuP!Jkv2L-xtvE+$i!s56L*)q#|Cf#vm#gN8FM(3L z!{Th)8PiL3V5=vmt-I@FUbWuCN)MZisUI=I(}1P=dTv;+mu+ucQXiH*IO-3rSH%HH zNY#hNSXv?$uh+m_iORSTUVpB(?EMrp3=j?^7x{C^hIHfcce~`vKE|L!6&AE%^2@RO zx%<{OUj;E-b?9aDWH2z>yl;wC$0usUNthZriSy8;Yxpsd>5uMC*TKc8@>=R zHu1mS1-9rV=lXdQAd(IBdQOLTSWHUXNN-f4Zggb!rwj}(yM3&OjvPqmr;ByKsRStV7gmz0s6sGP&Z3b@Fi6Q&4p z?^8;8rDu^yhx_@grqR~MlkxtcrqNf9K0;&(;@E6*2?sgs4|&!rPR2}+8BwQCqbh%1 z3dY(!Y@|(6P~T!BLqz-M!!UxJrIDi-s`doeJl-Gv;Ubu|h^w>#ms8LXlev#Yve~j= z@GR_WrK`?24vAM%WgSR3oJ@qb;ID;s=Nv?7z7J$)Q}okSncyXVDqeNg-0~KV!2Oz# z_Yw8ajf-z)V%8@Gvf7|Ik1YN$$d?}2k}g+0J_yw8AET=;p2AANIzbIA4n9&NIq}pGc z-Ap%Qx@Zvw#aO-`8)L{*RW=fn%hY>~{L$Af!iOa0f3DOi9UhA>aK96?NpeDR320YX zT%NwGw>^M)z3e+v`niTYJWBEts*!!=kc~NgM3mgvXN$>L$(8W3A~n%LmOn(+A-f-G z7*19mSW*^Hpf0luN0^+Bu-wi0JS!H8hinTHi>TG-%qp42szh?ssA;4mH|VIPWcN=O z4ReqnYaL4LEGr77T~A}$dxEd#(y@SJ5OtG+)xjN9<=iWel=QK6w@P(ardXa|URJnV zN?&4@QI%BhT=^Nesn<`{3YJ`!$yIa87Lsx#I@?yIq8M=>0@^UDzvi6f%sy5v=Vzwq zZYlKI5*^QkcEIU|VI+fveKbG@3;X87$Fh|CX!X;%j}l6Fm`7bkSIJ@JVg6CScr>4= z7Wmn*B%JaK$;8jQjrYm@*7skD3PQY^*5tBA_W+k?*o?mh0s3GH`^a|?_2EPG8}DG- z>i(u3BM8vP2YFQ-!qJf_jH{x%IorWzu2K7OZ@2E=3@f^O`UiX`=R&V4>celjdt-?b z>S4+5_mSCG@>RZIeR9=%x2q0}WakL&j4yI%JKTHx_N30+-iTf60PUh$b&s#3J4xd* zWlbwl>0>*>aOOgPnkO{m*b7jiW?6V6qEwzWq&!B77j06Ilx%%9Llq?^33b|8 ze9~KZ&e3bRS?+M>XNWe{e^{C^Y}+eWUK@VIXQrw<*-ACE(sd+$Rht(u%wisg02g7n zgrl*%W!|W+>`JUc)|ilU+fIy${3L=qye7rplVzZe1Gb0-YF7rGvru3&hj&3!qxV%+ z_*VhqX=W75y1h!)=^};7xZxfSNX!CRqjSOw$*Qa@>_kKsK1626B^^?BaR|&U-Ig=X zTGYDsG9S#LrFKm6(q{Z-{03p$QoClMUfb4cyw-Jeb=p;fF}m1OTd$f&uX(|fy+^KG zeY0s7cQse9cCNBb)kn(1Tp6X`kz=<52F&^dD$8>=wVQSMH~HRj42CE;Fza^)$bU72k35swBlgv2LBrD^ey~r|>QK|!v#fh| zXES0KZiyULR6q`Ue5n3P#GKZVKPI}7cLr9MP&|bg$P8KF$+k-=F12qbI=oF&KO*pq z)vYu1KQ%JWVhc>w9Ud)Yog}{~r3rKlH;$QFs*=Ucmb@s3Bsn5#EEJrnRxPWU0{bD= zbB&>-wWwkvi*Qo&NcCE!`L~+F-DbC!>+LYF9QZTfeBr8e{VHO=BVVZ;Y@;tLs*8f7 zTQ3n~udrg71vq11tAHRDu{D%BB0o?QDNOjOE+zt2H4y52&14QG<^>${bvOqF_+RtM z()7?nzV@sa4ue^%jIu4daHh0q-M4320ju8#w|G0+oDDKj6df3&v2Vk%eIfgwEmL!fov#9=})>WvrZ>113(hdc_=#K7R>6ECUAv zaas=4k9}uMX2CqHI_zv^tCkq(sOC|e-Uw?Aj6ZOT^+WY=XGG(WXMll0kBbTNEB2{W_^q6>!L2!|0j~{0(`SBRnn%BO;vFLuPfEm}VZ_WL=qvJrl-PK?DHh94Jvh!Mv9!)d?^foS@|1LrK#4e>RPq*0(^Jdpx#zW(+{kOAv~;uTM@dv(c3F<0 zIBuVM@?;riud335VRb#3?2ALMu3+M=h?dxe8TH4RuB*Bn@$`oIGqw~9<S9bV_lgq*M9AHw=#<(^BH^aa{QEKS>ounfndu<6R!bHm{AE}LXw&#XYX8pu$ z*=4)%)xGn$($=FPyCr(W>p1EA=U8i<9ZNvsUe8p6G``~j>cz6rh&D$laGeZBd?T(x zd3NH~P50ij>-K1V#Y+q8!~WEnno`NT?-bnnoF)%OS^n zL-O%SAlyCo*5ARD0xsO_*ihwkI)93R`#H{>*8__-8LP`jf9O5l-tRHZuDNn;n)5<` zw;FkGf9|))-j~SSNuQ_Hi{^uCUCR{#qGQV})9E9zk~t6AEGOEUduN8!m8>cpwAYf% zZVlXPygKzVvgg5>#41-!c%;Qu9BKmxQd3V~zAmji4h65RYZm3~=X8r-Bb(Ldr~Yy% z8J>}k{+w95-#XtimQ}A`Ilf1D%yv*P-fTLtQ@Av>jUi={gkv50J})FjbI$H?)4M`3 zUhH)6X<+6@P0@9|^O|fE+k`nLxi{T8ytJNG4-9gmWscFI%V!T~0F^}S)7Qq8Pxs$0 z*-vKmiLJ?)D@MXW3&6d=u(#!sgj-}o`#%o|6LQ5iI7r0_QEz{!P39=ZbO_$|2>_b2 zn4-@-UCTa+nGsJk964xP3>paa$HDllddKaT4n1A3*Tru$N?m0ibUHL^2FFP*%&^N} zS!Qr0e&$}B3`Q!bQ=No}*6VrdKi0a%Tx-IUy!65QJ}%m?tUmRmYU%a#c}& z9DtgfvAX79PNW(pLQV9t|5M)F(Qn%W^yBi}AjB$AwhCug;#8dU-9a34fJ189(uri? zC?aRZB@LQ-Q?JIQ18Th-N>6kj>LCeemsn@>B%2wt+=tIfP3RWYy*d7>V_i9Dw94b2 zg;jX)@#CiF=ugh|VTOc49>R&&ogc_U;EZTle1yc(CZ9%hVsLGq`{ikM(4&Km~&70#Hg4)IG})h>OhYLk2~~ zihGOWD5o}ol5)2R#lLD8yCziC0kPGQQ-licv7eV2`)L8=H7GLSjxF-bcewrW0qf0* z!D>b9d5Ahdga{?1&Fch@)DzwisTZI)DtK|{n61c5w zN|!WwFn9C*1)lC%Tuhxi0oJ2!jyV57dLx+R`wu}#bhj_&mc_=G)fEb_4!sG(QP z%ITs&P6wfZ0JJ>e7^3?m@(=@Z?D?Z<5W`G!FUI86Za;aXQAmfKRbB#yn4qvoEcy_w;@--4t%=1R|DA5Po|T6?pbgQGhns0X$@0Q$_>x4$o>6$@G~gb>|LSxp{&>lq;?F>jEpqsl)bc^x+ycQ-3X7eH~v zh!R4C?S>G^nY)_0SUb5{J30V}FkdntqxS4DD~X57usW=768a zlPmxL9Y9%5=7U$p;j;IKY0s>aCzg-$RVQMhbabJz0Mey~pFhJWYSPqAilz#IUz&@6 z7NU?evE3buogFv?)||G*In^MRW-z%Qt;}Maufbme4x_rW=gQlyZa;GY&J_AR9H$w){>PEKyC!i4M)E%bkF zpgd15;6GoNMA8MU^bwuRa##uI=>KV+*ab)ki5yxMA<};&{}J;rA^#Qsw;h|jMg8BD zp-a7q82JCW_uqF&#Q#nAcd!eo7QOVpBN0!;S@`b*{GDPzUo{Nyzp-)6ssDetF&~Zx z%70bf;xr03?ZeBW;{a69+y}HfaCY&|+Y=&Gmi||9h^4C8J{Bz0h1287E1z!5h@*>{p&$+gs?9d{0i|Cj}`OB{&!7X z%c3r)XJ!_jY&!z6m_2C&O{daY4^M778OXixJQz;+^9p&qKT!S7H5gkRUsZnmh-I|? zr<0nhxjc%9fFSPJ>fgm#aeHF>kAGsD3)iBW`3agr0E|1M`v)ghVK${osTrX#A}sY;ss7rd$ypt7{aKYBw< z|IbP$f5ZpfscWLI5e}Zd4_eL=`;IB)7}M$S4WZLT!dsNE|L9ix(dWBu0Qwp&6-pw2 zXXJM9O8K&Qd%oxiT&WVMlvd^rey$lLBmY|2%!bx6 z`EGQEFJwNhHIt86joM?$nD)EFH+8+Pj4EeTABc&SLw4YE(eM*Ywh&LDzcq3;HZSdg|-iNOuj3M5pE=Vdj4wCm;BAXyV z@T)v>yc&Cf?CBF2>_fjoMch+od(Dv@6#mBjQ7rQeIvgo^i-6)^K({(t;ytHl;8_B>6 zy_d&ymMH%jS?8p5P;cadj*2^&F@VQ{Ge(L(3?Fz(rGkQ!$^-VpP){9t!w@f0zb?@x zX|SLFcc?tC|KyZvv{TTILOQzLikY8-8rWS`ZtP3v##wIdaW&G2 zMN3dZDtwDeY4M7O*1?r`_iGW}S01din*m|Fkm-P4yFRZ63iA(Io+wVX`Na#NgS~>k z&!Y-0?uOi#_O=t_+2;1d=;1*{J?>$Kn6zSTWvc+6+NBj5{Zh7ObKSlRF!@!sKQ zaD!R=dDHc2AF^5t#^B5d1GoR5tpxK31_A&StnE$}Q+JQnc=+4z$G(oQn9mJiv7iJB;!?30}?cim0>HGF^wP{w~>gh*x zIcKBmv#6*6maQeX5+0qslC)Mv2I#y#U#Pz|#nndP?95ji@7T*Hx8OWK5_7ECRXy;a z9EP9v7Bc9ebN43*u0S8hlnT{pzNT4l9{GaDJ;dSx0HMb8C(P`_mH=YIKGn26Gf>+# zgl4mJ#&7{~QLS#;;6$hC=hF{MHOofwvXuH7i_z$0#(<;7^Z8l}v6S>q7IQRKIA_E< zX7?FtV=Z{R-BwF*ug_fF?gs0mY(=&=pza+4BaZ)v5n$T)rYYw=LoCW?NR6Ef)RekD zOAY3&zfz7^nxDtV(2LAs1^fv-5&m*u7FS5`v26(G5D@%s#$tL|id8M5w{5oErT4rP zNe?4DvY}OwH%Uh$rz$iEn2|&gm>$H!ih{k)5PEXqz(g( zv8~J~s3^rzjHX*c$%(6m>8Ferivh!I=ue$7nOsn*Bp0B`DNY51r%2lE`1gPxvS$Ep z9LpVzEX$^;%gA~Nik`mi4!+e#wFU2@^_#B*{E?}g6I z#8sg%y7AxQ*QSQihbv<%4Bw}10*(HL;QzzhW0514mb$8GgZ0B=iNjT3Wa$HrAY~Lh z_sV@*^x*f2Q*MTB03MCkE!>_|`*o#EEm!KYJtja1Xtml)EQB|AtnE;5as)kg$SP`< zxLFGvT+R!Tmg5_ZMl*O!cL$?**{Kss8gwhQJ}GOSG`#cNei70J?RwPO&Sa4!L7+j= zzj;9%P`#bGrS(lCxETYky?eF}@*V4iLNg>A6&}&YnAwiMjOOBb-~A*dxEi&%_rt`- zI`3l;4hvHuQWk>=fb?si-o-Bw6Iv_&iO{(UBOTe{lbT{IQXpAmF{G8~6x!Y)Q(rXo5>WTLE z?-~%0OIx-NuiK#*(R3ab(Y)m8Dc_dJvn13?k$M}BH{ts|2jrKJ#v+yASsL9l5ALzV&CTP z%DmS_J55J%bEkKq9w}!ua+vCoNk3y!th_j|LWI6!fpmudCX!}!ACD{^ zEG5MsCm3b#75JXe^U@rx*Met=g|tbbyrTjy?ESMdQ!*WYRFqIuZppK27HQ@2Tq#We92rM&-2`^# z3oOV@FSW$2VgQO+zHZ9es^1^+dGz%n!y-{?pn8N8ywsHQuGnr7!MP4 z%vNP_9sAJt?PhbwrZ4h)aFeZ`WL=6r6whhh=ZR&ueDEd}M>2-j_JgoN1!wuu!rU9e z4rg^v3)tXEOoFgG5|N_f+QD)70(Nq+XbBf-EVw4g)Y9gNfieBn^1ZG<$nCZ3Zj_~0 z0G>q+c{*h=hm=ZZR^_~V?b5#0bA)H^k1#oGrSAMEX+wAphP10IUzR^o&~l^Y5!kI#9*NOKN)#0n z^hfyTaS*&D4%*Y3pr}gYbqPed^o8mSry<$J|LuWjOFsWFnI$&8`_F%9WZ$(5O^hIG zVLpA(E-?EqO&Y-eF)59heo}?=8f@Y<$`HFAwEP00^53>E@DDM{N1qd!HLH^H=p5!( z9sF+s9QRW0pJ=uJ^}C;YzqjK5wke{_C>^F4j3^^Kt~!lg6waNJ zjiTgO*7jwE_tTzs*B6wWv#XEr|0d8&HvcHAM2nqk7QmYBtRXR6hAI^aPhl6TaBclV zXg;$>L>Qc%!eXIKD;rOGuDbE!dAm2bZZ&fT1BoE6ITG})=RdSEU*q*K7xo^)jALa; z1_t`GOy9pHQ&4%v((aou4%f!^$h#eoyU%;-ndFz!8?)aMYQIZw>U4+?9pISx$lLK9 zRK`~16swCK0OW;fKg8AoP>j|Wi`9H@7I4QtxF4RML|+XQkAPl9co|A<)cB9Nz65O? zX~g{ICOaY_h|@L60V(|r&)5Qe0XY*O@~z_M0{jVP3fIpIGc7@?(c<8d?0}IL#|JMEntmH zR?c_i2A5JfT%{*fvUU3%!@w2klzR<##Lm!eFr`SUXIo>-2@(HI3#lFq{( zOMPp%89xf8142h{DRV#Lg=^fZdZzZEKlJ@acgi?d<3O_>e5kcOy z%)(h&QJO;IdyN>n4fJv~=3ov31%&`4hm4nZM^D4`L`RB9*LW(7oRV=rbLuN+wa&Mn zwwKE-tvUjp=FLZ<<~o%BW4jQsJ<T5#k z!KYw2l~k%2p=ZGwqLi>+ruyy`9_5gC`7V+s3YW>t&(@F95=HHgM9pJY89DYdatpIk zRZKgypYeA!{-9tjTpe5{de(Uz@_woq=xOkxu53&4gW1!@Tb%Z=sf1d);!bL}D12g1 zwDbLn=aRvG;3XQnJL=CNe2V5+aa1gv)JpvksPk}3@m8#rcD!X*J8pgMcBsyw!PYRV zqF(651w2(uubU)ktL>6akQC1-p|EVD_t_Z=5P`FQeY^Xwd4B2~jCqWDdiZVBkOzv~ zER5ZH_O36ETCw@_WY4b~P`{}b1NUkn0xGeoNPV#_;+sCxUnvmCaAJxZxk2p9U6?KY z2nXUAag17YAOG>U%T0e{Tcdn;$4)QX$HQYSVMv1Q#dkMAk{`u&s1^(S)k{QZ1bl%{ zffr5AK&4FdeBt7patr4Z?91YBV#SPqA>K)}6w_*h3 zHni15`09*H@u(_WlPNkhAQKE0r+;Fc4}vns`SZo4Cx^00dn4WGk4YiC&YaEr71M-4 z#IS5{ZXW+i%G-H+o8r)c(KCx;ZC(}hW^##e7M?!JUoL0!>NdB{X+xPW633WKQiZw+ zO>=V008p<6HZ#}(*DpwS>HgI!k}^OM4^|@kHq>*nl$t(e%!(8r{gwV5+b0;|aQ~Q* zfgPL!FJRTdPjqL1&X={QZ2qPmO>=+I@a)f`ZaeK?n~DQ|f1Vh6k#fbZ8B7UaEAUAR?v3-V5omwgr6apzKzC&lTISeKMNWbG zaa*q~Q?2E@EXo7=fBcEQAxZ%?^g?SQ(piooppR(l*onp|-0#|QBnXbIs7;+mcOf}|GND-YG7w5!LN&2*@mM( zI?;u$<6esTe&~vRaF5ErOKF-}xmw{nvCXbKLHXsNR1A6DBlF*Bp)f7KA%qp~CFm`YO|Uuad5r*llL!QBOMWn8bQ!7|}W(|EEsp6KlPNlAvrYP1Od z1Z{=Ep%!_j19V~e<`4hL8!%AZQE%=*?Q?GgR-h=gW6Bj%8as%IXzvu#7&cz6CE-vB zv-~9wy9BaiS*rHQ!GW4@R1@@`!8(baW$r*F_z`~bf3*tMp( zt@78OF@KH+8jZGB{Q1YlU#35XjZMJY5eC(W4rEQAE{NggU?rp#$}8s}#jD=l)Ogi6 zIc?GIn%Yd4@NELHq>p1{pWk*)6;fYeeAijciHxHT55bISOf!?<{!Sp{pBh!`z;;LE zf~&U&zebAeG))x-k|^`6Uju<_Hdf1hRm+ARKwN4m-?Evz>(kYhqMoW&Z!F~qtg1|u zGX7b;!o3c(dUsbz=ws*~s?@!X7qW+C?1e><^z*AL7VP|bY@18J?dlyC-gx8bAC3Oi z)srHx>*36)M$OI|@?O4o0U6h~IXZ}`b-$E$eBMl#vA9Y&dsClE_bhlcL)|x(;BUNL zg*#6UeKn3w8yhJ$4I`%s&n}`=_yzi;?s9s-HSgC_dZ&)4c&-!6tNNM znl-@#?Ach3LiPKGh>xJ_!iMEC+EAaijyeOw)V9>li>k+Wbs-GB%j`QTgXhHG;V?VL z-T9B=&I@PDeFS^vkG}MC_c;?Q@Uh)tk=3eFFK0W?T?lDYGnaMi zTqU(vkoHkFNN`7~Pr((;rq%}*d zP!F9|2JZAkaw$ghKg778bFsD&Pf4$(zJLZ0ci-BA`1$7d$WyB+dc-X6)5I?l=mZ~j zaL!*hr?Stkg#*_xcxfLr7@1r9fwt#O#nyIE+CqFyT0`YeE+M8)cDDOcPOE;D*RVh3 zV?ihS<*OEySryIJO;rZ9abl&r-cH=?6&dg}& z-j1S@EHjL#kLPCI^8T_r!+}sndXkaw0buiLzNYy=+GiA3()R(MMr~$#`IrikXVrWX z@4a@4;gn=!RR!AcvxWehPUPf*LtV{3AhmgIQX(fV7`Dd`dx9(1R*cVvepCn%uWi}` zC*G|-F#_E7!f<0p(JA{+Hv+xl3#ARB^X$f&X6X#hC{}zS*>|Oj-8PEv>b-Cda2XeY zGGab7q}4Z@5K<>Q6Mpj#gGO{L&wX zJ=V;WoJ>S-2(&Ox2LS9Bd$NSfSE0Er&nZ*!)GbRxBXvD)1zU!sU25q0 zOScO@M#Y7AoW7hvad<1=z0c)}|E1(r);ZB9v#44YiZcFBSw%m82Eev))~ID<@0EVY zw(>N|$KFhHIs5H?6eO*WX+a+aMTZtS)znpY5MYTxz@S!ZR&A^9;&nGDX*VFJnrJ_*ZN9*f`l_)u z!cAskyqU0kjrG2`4dj`mbm!+ih3F^g^AGXigKVEEO4_X^`%wyVA1gkEiFE7pu#9XL|B@b2Uu<#g zMw`^Wk1x~l?8qcY*uk#_mczms9Q(ReS1+X&JaR{6 z-C2aSW~ILbu+6F4n;fM(HqOIe*sTsEUz>|xJ*eK}tO@uCZnnS{rp!H^rG9L7Xl4yt zp7>8xU=u>67=S~s{cGuH_>9yudZ%Ms%~IU!$~mvcEzYQbgdJZ-2f0AQO%g}L3x_Bp zVH&50T12NpsPXU)S=@UcKQK%w$6ztK)lNS;TjdG z?8YQ&PC_GMc*R8kGg_9AP06)N_c!r(6H60M*S! z!&ahj>5QhvV3A|BzyL{4KX;^Z1oN+k;jF{Uj4w~^*YxeCtm)6;j#4A}MSQ2cs2eBf zbs=*#Ra#)S0o|IYL{gG@<}4hF!BqSv%w*kS@l(aeTKKmF__Wsfe)fXUJ?#KCGKTTU z^l!VnJ*#GztKDV$yF>dQ6@A_uzAEc1hp$G~I^!yg$kZoMY2kK9K8dp31&%j+QnO+l zcUlQG>H1d>e0=msU7^ZnUmfbVRY#W6%td%X2BvBVeHURX3ISB^r2UexBB5gtC;?2w;wnGm)JK8yLWEv4ddR`pa))H zEBI%rvq8d7W=m>sqQk3jZ9>+(+^wHe^73-Qk)}XASC9#sL3g3^)1JMrb8V&jf@+Th z_bA-a#ha!XNO3t6G^=bccHHpN<=?Xav#lrZ`U=(d@f86LQmv2>&bxuofKG>y(Frx= z+9BYCH3-Qwl+i42!iL+gzgKEw@;r!~#-@5Y~8ezs^5Zo8JZs#4X% zEA&^Z{d3Dn2hQ|HHVOx~1tNC)g4{+}8*_`-r;ah9*AA%=Zac!i2B(& z=i9^Sj4j!uO=UWn?j~!BqJ>R<%!$RU<&d#Daag!IbJ-NHnm#iU)d{WCGQ}Dk9z zJNeRA%!PRU03DT>c#tCLY~=|rrjcuwmL-)?7E9aLH!NJQ=utW}hq!EG&cJNiDWaC?=w#AH{TL-Rm~sA1xywUogNR((Wq9zu1>BH5bqb8C^Cjfb@_>yLsAF9Y{r+J&6vH4oC-Z*=V)c2cRg)1NzPK?+ySSh%aR zOGV$ZsTn933jV&_trr5J9}c5_^K2bQ1pBpnzEsH}L5jS!EM=;2gpVnKu+!u^22y7$ zdz0iLe)q->^qfrsRQ}r+omnc+UQqqGZhELXa58BQW%V5YbTU==HTXcELtEB+*rg)% zjm}OOcA%!n;mt%=UJ?)Vo&5GaQA5vPy#?lApx@VPxSA70H zLQm%38dUq1DwZwB-_2Tq4u!G`hKq=%oo5GDLQ|!E@ueB$?;4g17oQ~M)b`dJwQjF$ z=N6Zi&gZ$jI!X@02i~o1s2BbYiQ{~;Q!35%(bekGaG=%ZS%cTkn<*s zNY-F@e`L}S3dmUhcy#Ri_~(;Ukarb4DB z-lvp`R@z8w_~D2&lr@i>dS=#IT_QlvZBER^85&X|VK(h@x%viHJQDfrrT`xW5$QP$&r_yl6a`C zQab|$TxT0>m30OnyVf=PJdDRh|E`VBEsRtytJZAlBfIg(n_3o2`jm=l!xTHoc^wRY z1Y>TyteJhh2A)BV8nYdqa9>n=7x`sZA_DQzqbpU2L@rTt{;2;E1A)o<;#alwS2}iYr>CBizGTD^bOB>l!Xb(NGG}OMFV5I~>AN_lG8fN1zh6s5-wJ4y?1E0~ZWA>j{y-z$^>aKfc-|)LC z3n&Q18=JeZJcOYghUnxpBA7)x(s(6(ca`c4&8PO3FrM+sKlM2g3`UD3m%fWO&ErN* z3_6Dw=^m0Sep7`W?VJ7qV@TKk5|CQQYtSdrt?>K$**U;>4&Y*ig;hmQD>U5UR zD-MMEcYX#-uFVeF2zJ7jk;KNUd%SClzOpvMv8e<3;WwVu!U0UJrLVb!kqZZnI+{b@ zJ|-^4^V{3PQxNseqk^;6`=$B?4Fs=9u5yv_-4#JQ#DtU)^9=ym!2i&d7V|Q_-yZFr z8v^){yGW`enRiN{ruo6vA1#N-EHS(FK((u=i|;i+C9@nzPZZVE63is1{AlaT!%ekq zX_U=D)$H9R^wG%fsk`zB-URk7zdCYgt{fwZy7T~zC7;-|GmCF9^Vu)T5&n2{>dfcS zD#9W~)9mPo9&PabVc`?h{chk(OZ3yjCl9c6bXcr4o0pq9eH%62oaUQ_uw}dDmb48v zebj3;BJZti8kSCC8@$$DN6DtNz*|2^;TTJbZP768^)YHx+GvmUKI1pEwc|zi(BrI1 zOm-J8Zn<;PN_<_}ntgV>*^jaN$s`1=;GYtm=JxAeAKA}HkrcS#Vby=@F#>sl0&ajyi(duVuHU$ohsDEaHL}6L}k&)bY z_}sP(mr10ot$&2y;@vZJpItfGrv>eue~r1evZwKM+ZG~#lp?b6uz zn`3*B1zjNt)%LLJ6aRj2vu|knuh_v&1tOw9Q3M@(YD(u+$xLeNhYjtfqq8-cK7kZd znqkh*UTqFULq$p}%0sqxBrD7#(?=&+Nby%$4_?ww8oZf$_6XD>N*KkwpSJr^vQMEM zRQ=Dihl(FMFMRwd!sr!wz{Q_fKv-|U-k;wQT1(5&#;?c1~ z_K>*X(~j^>0AM|`M||43*2@y-MR0l8N}%CNB=^RTv_ z9ZY}jH$i^GuOB=Zk=4~$fuMuuSI}5(_b8^%YDERZ%aF_sx z-qG_5*x=1&lHkeB_}baW2(oo!4I~|hcg|<8SYWtXPPc>tbDWx5<7$^ZwC_mRJ{=}} zCW|D?y(*w+n*1<&lWBWx#jS*ZHSa;5=jRBj>nn0eY(6beSB%9@k1UO{%Ykq6oN=-D zS(!W4v%d5^owYw`eF`4@`fITTxl9D7Il3>jR5_(_KtD@!n!JC7Ah~@Q@69}^_StPt zedxlBp;Y_ndC*)(8sh>ldsvkui0hot4FCDYyRbx}%pbD(3h5sz^+--12Ix04sJBGQ zJ(D(ko0>S!d~}Jzy|zhH-0tJ~k!bI@9)vp9a>P!0%o zT|Ip?6m&XM$Mt`aq}izyh!hw?fbs%o3x2>RQsata>EW+-8*YezGu&&w*L+E%y*K5< z@*^+ZQ;~jY`q=H-r!zLT`;rM+{*b^lDmXty_dOl-FA1LDV5e_LS$NS25}1L};#gjf z!{>s*CO6p?Q5gVU=MmDiK+Jhl`wpJ`k#8!yI4ijnC7dqISM-)>%`fTcsfjDsM^omo zJ=l&#D&A|QiHK!3(t(!r^Z{5n?sJX4He6!$N9*S}7}-x)G#Z!RYrr>`=*{TOgAbNN zM!&~t%)Z(3U9w1SULD|y8FIRDYWRT&WjIIm?vJ0&*ExxY5qsbeUF@_WZl+ybl&dzL z;`-aZ)>*mV3$vF&iuod$hrcrO??NwYr5wcHoP|jqIlb$RjCK@}JlH1u($CAt`+D{_ z&N)@{N^^Gt0AQ{tqH7L16iL5uZg}naQD&v#<^wd_+pD2cnIbXHta+D0BeprOX>-Vv zWXfwJWI<|i4tC=c6%U}FBogA4h`&zIpfJ47KLw3gjPWN`w=P6gNfSlye`EiEY>Ja^ zrH81J@q*%$9|LKnM8I38fF)J6rJtpF6-XmANZ2Z)8)3Adm>wDsKkiF42o+}uik=f~ z+*?gjsnRY!1)?ov{_OSnwy!G4UaDU@#|^x~3O3Q~68`QdE50$41L!TssqAk(Lu^sx zoQ-70kD`kZ>vKB7;hmaV%bE&>%eQe_ji3vXHsQsOZv3&%Q(C9hQntc=v74T%bTcR# zpq%Q6h6hVNrUimS$NW7bb+D%B%j^2YH;poWDXRyn*jNX;CEK&CTOC!ryv*ML6+NR~ z-;B}coGPFP>(L9XS;3ObB9X>lIp$g_c5J|&3Vb{QJ#e2+hv+4qD_K%{@r7s|SfB*bD@X@aNF7EZdSBnYFsbf}So( z#^By!lB&KJ1j+f&HXHyHoK;6$Csl1;{NsG0R($3_r zAtpU<-yD5>?$Ty{)WCEki~We1CZ6g}%W5o{8f9c(vg`6&M$j+0yYsar@XWZcX4v~x zCv`yZ-=4w&rR_2#AF<;YTEvmMtL=C#*rb+kZsbol$13 zs*KyWY6nnZ5ZGoi13{u3)$5M#=OgYcI<;CPIm$xN^i7~D2>n6|WTz}(aV1$>t(#DQcO(RwXdI;Y#G>g8Zt( z1+k0WLn6(wJPvE0S(4y&!^s3i*w)9nP7^>pSeR{@U_{HA>|_H21>>+O(kHfY4z-?n ziwApj>Ze+7zMb`KUZ%c<+v6VbmiUG4BR=Xc<5dT+R?l}W4DqZ|_maw;>Mp{M`{LK# z-{r*84U)SX?x6mNBQ0!ks2xu6MegYw1WStC>kCg^SG>m=O=sKSdZ+W?qpFv53H_hg z8J89cy1yAN@@Cx>XAfckzQ#BvRxkeP5{6-rkcX&?&>>1@9zRH9lm5hfwJ154 z+Uc(Rf`~j(yPl^Dlutv3f_S+i8$P8@r2Uo1jf4r}6_*XwZ|=!V#E~dObYsN=+P}79 z!rQ^Y+83HGyl3|QE|gutJUk^Q;4@k&@ON@Vt+p=so@)+@l1)<9nwmanQ>Q=J_$#h6{$uWzZgcdL#k0wn@9?$ZBI26=S!-Jt7ilRbZ)78ZOA1*ZOJeTFRKVF zK-HZFS7=j7s3(a5uN(fFn@`o zmZ14G_Do|92Byv9!#j&C$x_YzHafONH8 z9a3`cnX%C@EH2PmZnv4U0JB+`5G;Da)m)L4L|$ zwpA){w=FxY9ciR{=X69$J^ye?Ib2;YhlCI5w{lNpDC5MaGxCp6+I{7fl>-3kxL;@_ zoi?`F`2<&=^MlLFzqR|i&U%OY0V`i>qJ!k^*vx}@NZ9+lP5T7Yl-;W49NHs14b%I9 zXa@G+-;2)ODSP`@4Nu&&+1mpv2@e?&MnZ~Mq&z11Y-<{eS5Ili@;6jse&5kfFbFpk z35owi{r=Lw-_3%dp?nDWkQ}mYB)&=B!KY3F;|@O6I>CP|TtMdROK$&2 zvm@7LrTcQ=#VD!dZ#WB1L)iiXse~8=B?d`e*s+^j3Ca6mcz`i7uU}v>M|F(PJR82m zqFO%Zfkrnx>hK50nBJBtGs>eH2?iFdzqa)B8%hDbJ-SO9m?YgHSbo=`T^d7l(;==9 z0yMF6$S+|8bIl!Zy-hIHO&I*b9XC(ssG4cw&1C0yM2(BGlDEU>_=SSt(IQgkXR}Lq zE2Y%-n!M%m4VTNI+cQ%XWFBnFH|cW@xYP9_LV25rB4Ld-Z8GTF z_d8gac2TW&CCa$rhV}Il>}`kVLgE(B>EVv|i9yCOr+H~-Ui0mIa^wDC+2e%|8Cd?9 zW@BItg<5;s**=QbZ{g>o!PI*7o*1qpGw<9_soToZhfosi=hhEr4XfbizR6O8NUH}o zzBm2juiD-yI2Gl~P3Eq#=N0yJhxnzQ{L-guHtnbma4$VrIGCye6|q>ucDY|pV@xBC zkOJAA-TtL&tk|MO@K{bS@e1KWevBN>*DP<+F zR03u$GjP)e|Z(B|L+Tc`L%34$>mBLOW|12r(;lqthe~5RC#!KtahxyipJ7#`Y z9uUk387Y(3ul)WbyRTMBx2PjnCFFC%{)@=0v3O^hRGgK_H1V%{e!9X?=$!>j`yL)i zn|W)i5WPJp(tU#&%h>X~-oX;6R_kY2feq$Q=)F0qdi1@U!EVE3 z_wzwB&s4~9V+!w2Hp4eZwkrIyC-_)<=1V%<2isyO{)Usui3kl8vSEOneN^!3HBr>K zgqlUFm{AX(8!BrqgDAUI!J`Roc5B^i7OIv06L|Gr>UFkH@@GtcvSvNnUwZ4OEbW`a z_Z7oI)VB4vHFPhNxW~t!WZ21F0{3TEN$fxi&fhd>+&)Bv2{KBm3PtAS?gdo$=hXF7 zEi31XNtLUXwpP%CEF}dilii2Jll8pS2IU;Dae9UoINny$rkEJxCm&Xa=U3wqCl+7v z<98*bU7#r?@OO(Ra?(VKvyODzmMWpnDA+WpOlG_sxuf*acXtiq__<=GGuh)%<9+d+?3I2$051QpP(2` z*Y%jgQe*}8jk}oq%}wOlKA%4nQH>CEe6dYy5`nf(ONjlS>U5&iyCB9${&(7|q2OjV z|0-86tM!j71|X`4RXGwa@SEC&wsK|^3p`g9Jbzm?;*SAWjVG{+L$Z;8g4}4)5ie90 z9@B*coyU9JkjzA<;(5Q&2=W>X&oDa4888Y*0#XqV^O%Q236`t9xzasz^#wXCwEifd zNt7EH9Lv3Fy~N&bdGz?!t|0l-xl@T$u;9_@b9IwG)0p=S4`?J2&#)9C;a8OG9Z?EU z2k3DgB#zRZB=UF#m1Sh-%o6$fLL*yiaYytfU%Zz{0cG~q=TG`;VMFZo%>+9cjchMM zlbl98XSl8<|K^c-@=w;?A3UK>co?C|jNfIOQcEB~@UMplMJ}Sx*x6K6M743U8WW3T zk33b(d73>?$UBA6`sT7lM$%i0zD{|?P#I$_Q6h)Y;CM0No6=HDxWVZ_kN5aV9aW+4 z%|@cSzF~E)Gkir+*KN6q2r^?nc|*!PDfBaqpk?`8zr*hj)g{p6`@@=Vf_gn z50XBH&%fd4!)l3C3s8G+hNrtT@5s^OLi4k^5+z z>CH;su6;qFPwe@gFLUr>b?NNzO_~3RQ%X{U7ER{hyfkS}SRpe}VJ@)@v9rzIa^GeD zJREEoCuJcxWf5a37n|+Zn4Z+vWb=BQ)M>352SJoPR+{tn+3%jtR|jJd=V#K0ltZ6) z4R_BZr`0dzRQ%!n9@0>C*Bq3%8b`GMrSW3sz)nIkGtIRqj*2{>xfJQwgj0E>t71d7 zx0X;sw_v6btnw*}@AGhKmLN6=Pa8YhRl6mo94w^eTY%Xp{Tt%bC(O~#FU-CxbT$Wq zDo=m=u1b^A^DEgFFPU<#xJk2PP@;Ju0TkX8-M>2O-XJ*p9(c*#?=qXI_MbzbMMaeq`Xt+aw^^4CS7@2Yw z0iy+KjU$v;_<>ps4@juj6eV$!V%;OR6_|Z)70%T?#j>7qCs6L}jS{unZhXli2AM@& z(aPFH*P=g-RAI^5)EgT3^{j8$<8)Wbu>j3U4V1pS6WuX$md+X^KV`x_rTX#F(EF;C zo}EMHhOBT@dGnM--A8k7=e?IR^Ev_Nw-~C3{tCN4fK9)=BPI(r;WS<3RHbyW;pE7l zL$;U$l%^zS7pD7i8oJUOk5?iDq7k22AIYq?CM!IzubVa5Q%|WS;u>!mGG3Kz^~l^Q zVdS{=ACxVhSgAt&sLYlPXI=FN6!*p1q9lgdDUSh7MZdg;!0ux3bL}A&1t{#$oc7MZ2 z7El(9T0O$Yr6eZIJF1iLU?&mvQHMEUQ|N6q&tf=cY2G#<{$hrzzIB??pb{Db%MV(J!+2VSG?ugagSwqK$5y{vNbEF*;S%A`#CbFDbYLW_NeW(DvG)#$ft`KR3g3KEwmXn+k;G zD|i5rkFkZkSM|hoMj-n|l<2LF~SWy#qcYSGFRgt(ghR`7` zJLshRK6Nu@_ZP)TJ@KjAhSHyn8GoFSt^qRZJl9%>X7;3klgGOY@x%Hl*GL0iv5J%T zc6Zi|a_}a{CK~w(i-llU`3$%QV{yohuv~CpZVCnA=AoEQ+`FH8(L2b|5YCXNHf#fn3e{p{AvV8#<&X z@Zwex$5R{iImat&UA38vRY-7*2i)U3{MKVRPl?i;EqdC?hUKm~Ll1&3LG{F;1xjxP z`IU!+#f~LB9FYG0AVhyf;;2QoO8H|IfB-Kv`F(#~LIlJM7i`CFVOj`rtv!FI+^KDA zRnE95XT9*TgH+rPGe9sbz()OeX@OTrW^_Sin(%8(DVs%3Zf@xSg^@=;%1`p79&YWN zs#twPk+)O=?{7!_IrGO}zNXL8!4<_!n{nc94;=~h((6`8ph+AZb0NZH2!RggX04r? z2kUxIbqzI(hN*1igNniOXBX{3FlqYYl{HE6@8(1m@fyfAgmw>g){Q-3dI2_L znWAG5ts@~Zfv$EY0;jsNQr_2s^4Uk5O4a3-5X&Vpl9(7qj>%c(gKZ+;%qfbWqg-tx zBgV$57-knO%8|>Tl~1=A?Rf4ihE&v@Tb5__!@z0sdc&?L7VTC$oWR&{?ej1Rzbh$It= z8Qd;1y0}i3_UwibLLrBjep7LHup*{;6)FMOsx@i6Jo2tnnA^QDM8+QaTNU#0gG6|_ zcybIE1GIe3Vmhc3JdI9La~)nY7=)w%8)=EFuhtHj!SBeod`woJ^{IG4wK1#)eD%|% z+OC_)MKFtb5BO%2hHyWu3qY@rNfiy@O<8U}AAo|kaMQWJ$mO^H5uW`ZZ@4@4r&-}R z5!V~Rc*=*0+iW z_~3u)x!L$zlj3LEc>*L6=_NsDeMhS;GR!bL;XM4`vjARUH`GFtqmmqoF|H0C;tYC0 zVH#MLmLAxHaKhK5F-O%*?DPzn)kgu1&$!ND&oVs%inzW#TWtTRCvsAo?a=TA?i>}4 zbrj;J{c#StbL~ijuKoiS07vNdv*e{mx{^&9_{jJ{K6)3B=w$Kfg){SMBu(cB+-j5n z-g9*WGriDq%PUskG_Y%gr(U`~^Y@_z8;&`g#ds3=({1{-CkvBWp?au&F&F4kuFa1Y zp!oUD8^d3Pm+Y9lrza$Nk~hWi4bxrQQilagL4Jpz_h|+yumE67ToglsB8jbnQLj<| z$Ee`e1ar3}`drOGba1MRJM9q!KNjaKff?Lihxl0rt9g7*lE)_|ZXk0CbB+k+PtSip zb=X?2oKP>+(0*$JynE~D=m4&tUD;u_796!8nf@8364{6I-dP@1US0^%%o+A!AjfJ=FHG_{V&+F! z#sJ>szMXFI;P{%BYq7ya9oAuL;~I@ZqptB0P1l~XlamnHKuq_nXp z2t4R<%vgL{2%t3X=LHs^aI<&4Mj;A*>BP=zjzOT@U^ny>;| zX?K*Gws4hhihge1Zr?L)zb}8liMq*$w2htno9@_@<+D8RBG3)}Y90_Z(Wh4mjSc0J zRrPh+wiNROiQH){zEs|K+07y`l*%z`pKP`HHN8%Of;+ZeU6Y)cJRQn((xK6M8kSJ> zhQBx1b1(tcwe4!wC7b=$Pz` z4U`}cU1Dwv)8y93(b2K>6@4rfZy$C>AYKv*$n}%WxZPv0o*fgfFfCc=PnHUc!Yg6Q zm3!S@epl8RanPorO$encZ*7>_BusVH3;H;#F%!$pDU7e-M z$@9s_a!_F0Ghu0axyk&usCm^uB9`21uOxnYzsHOUL;q6QsxuVCLXW6eUke0UQxkNq zvIgUtnk=GoOnExb_#6M^>Z{WXYOZ2bBw^nCdq&erR1+CP61;VtJ=N^=p_%*(^+C@t@du$Yn)#CcAY$8%GDRK^u@Lkrbbt25ohlPIG*n+i za;lI`8}vI!#8J7mG4Z*f(Qm3Ta|+IZs9N+Q#4`Es^C~4sz`Gp$XLI{>Hb*bD&k$pK zm*_JJ5-}Vb(=~ccts-TWl^a!&QL=rB<80YklTB*f7U-{#DwI>If_FcW0?!L<-m{!V z_C1R30?vV(Wbsf$iZi3{@1h(93s;^O_)V~ z)==F119L{*mN^L7FDIHWsOxG_0}KiWO^Mmj%4e1GgFXdM;-3R5_Z;PjXuC*1N8xH$ zE%XbQ5r#(~70}+-Jl<#vqu9Sk_#-HPq{YFF^PcW7C6vjh1UfDF3$Hfl)A2nvbqG^+ zzr!LJcN0bWR4Dl`Ft52=Bx>JdnRSvK3&U;*R%MItx4MXKht^_k5DY*wh$*cX$P83g z(&muxWcr9BnU4;W+gXw`jWfx#3&f9TT_svo-5MSQi}GG|Y`Z&9jS!9#k`(jCFcImZ zTz*y3|FA>EhTu!EFS^Fs1Fq#w=FOf-nHBC>+#>QozszbT;8Yhixq}@Z@Z8>Hjk;8Z zqMpP;CUOx-(5YE!IOiRkomxa#45*K$C{{fbzN$iJpa%V|=; z0l|Un^r>iuoGM4s@HJogqJn>XUcPf~f#m=vU_1P7CK`7cgV%smUfz6tl--_MGR-+C zb(*kA!zfXUueeSM73Rlel)<#U+igFpBN`sgHzG4eK+D4_nw$=F(;$a90}ClRlv>%v z9q~8*#QccuDXN6I8)~WQty^$n){n=`G0+?E5yI|^3v_f2926Kwaab_&#$%K}x!hvK z6sJ%_uMXVXTS|RUeu4Co4~;pyVTEILZ#t})jtftG6#c>OfM{^`-Y)bf4GvsXmai>0 zmb7us8Gn+)-7lwMf7dl%G@U3a+GV`5dYIterW{*-4ng-TMrV`H;HDv0nTnDTG1=*< z5wg@GiD*r@a$Usb7U{8iE;BogHSeL0|P1z@!^kcOkA8yUx6 z42QLaBqJI=0vRXXyrol*K%U{!VBuTr(qi|gVBA4+43fXBPB6w6y`rq^a*8>TUwHKz z+Jmh6@9S;+5*zd1%k%Hxd0g&l{iyj*F$8BFbUK7+U5)FLG@a^x@h&;>XO};XcUBs}SDG>hB+f zmt)nTg!Q;JD$Z|8e&h1l2x8)sy{ONpAtB#cLK{ z_PCH^QLioNTn=r!+nufhGi#@rsh(9oHlZDr6{O^N#4G-J+@Y{8$=;6!s<@*^{;WFh zut)4Q$u)z8#}yO6nxOx}l~z5aBeKiXv9#Q+1Ox4h8IR!N0=3|7DAG|lD5Lq<@t&75 zoRkn%5WnWuY)3_}!IqZk+LVpWg_`VOoW3srAI09NuG4m>Eh`NGx1WhWz(}=woE(pQ z!VkPGEiVH?umNM*%TtAN1^3<%54f)*5d&L-I7r_xyt%FE1KZN?XYN}=V}^g5Yh zZNGGIPBks?^kE^q_L`fq=GCnx)tKF?P9J`|y{tlzGt!Mqzv#|8+y(Fc!a>7IcF-$f zm|xuDV1-l&)NqIsNfhoD)VS=AiB0KDzwem8=z)%V3hc5$Q6=Ey-nOtGb0D?EfN0W4 zkXO_|5YjbOBE_?`NWzcbilGSb=jpMXe>HXUbNk1hke+$V?o0Z;oo4`85{8WOE@wEm zc7o&WI=7I_Vop>{fiwLw&d{)09QKPwr1>uy)oyi#MLW1F97J9F-TS!bz|8UH_vtNB zr9!ehw(ik3W^;$9X!t#*v_`s7Jh~mEf=u<|0(&pN5>lC*2y%5RIG2Q+M7TmUT9>Lp zfL%un*+Y}kV&N@`CG=EFN#PU83$(Aret;)dN9|HBIs#@O^v(gGa_yDh`imgWldP=1wMN!>gY(7M0g$)L3YD48q zOj5*E(r+C20u{-A;Lou?qI$kF~Xia&`Bv)D?S$s5LKn3pK)vcO=!sfoT?!P2i?9^F5JXpc8sH$XZ0LnBb+gpV9e zafS7(<1R0T?GkCH*FCZ648qu3V~PYC#Lw%8n@$c#3Aaq4hS?p$jm&#wJd+#lbboQ| zYlRG&=!F`MPDenP=SKY4ap}I8%?YMNR52fJQEhciFCEzP;8Tx`?Mp3*_V|=T*u5u~ z-8>riK7tlYAgIu?aSZx}Lpm@%y)TxViEV@Neb~e*bk{BSBVSl;M29F>fYXk9mTak+ zybEKk(QFdEEJX(I_w`36G`k&<^8t6$ZJ+ldr4Og3bJf5}a{ZXWv z9R5JZq_&%%uChom9~@mWaD3a90NFp(uua%t_{EG}?iA z%~W7wc!78x6fYt{(-W*t|RAdZ4}R zSWxBQ4KXDYDre}J0~M=ve^*wMvWg8w+ihbGhfmp;G%6w9Za6^;Zng9B^)Ea?(36hp zyoXAxvg#iwu;CRRoE8l{DYr+&??+FLVm4ouGI51Vmlx@`K+Xn0eEh*DrM90F5m}6u zT5dO;J51)?z!IEtj^5wDoK$jH8!_FvB(WKA9(|Iw`xO>&A4kNU zKGfm5=oJ#jI&~q8-(9RF|ZdMY6wK00JNZoX_>^Jcp1E@c=MfNv-2D`JHmXRGC z)u}+_-o2MV;s9Ga<1*KcxQG z6{c`-VE^w}z~6BDtU;~N|Nas5T-Cvp`{TpC8%G~u#mO?(_#VMrXY#(3de2SsyDitj zZ~s0c9Boj)`~b0NB92$B=lxYicozBpuMzyem$2al2>E}e65dUbD6Z%Gy*g|7S91LJ zv(KE{2WJqcEjeG}Ff?KorzSKi1vr#p0$jVCdoi1?v7Qkh#)j3>&DTvTX!J~--(M_s zj}Q`^!_yL!_Y+aCg4AAH3b$*m2Kc)su*Eju6fy^j-`e9ufE{pC`JoeAZ*>L+-0mtDe$&`Cg;U}R&C}%K416(pp%`QQ&s+v zFfdl+|0+kJrQSCOS3x40g|# zuM$cEx1u+p@bsoPZaBdhZitTrB*D8C+MIm)zNRt)$VjA~LNX}tvTPX2eS##Af}xy@ zt}`cNWDV}jvDbknq;!Kj+8l$PWf;%np03u7elZ45wn2*Qdt%nIgt7s8FnlyVcjNv{HNn7hN~G zO$Gy#eV0)y72_KV!Brbm9$<&n$S7V1U?I*DO-$GYV)>8;f|qn#Rzx@zADUR>{Wf9g z7b8^rgjJiB#r#-IHicxb)L$(rObI`Te!)O$+G5xGfgl~jjn_^%pHIp!!vWGq9oEzI zL7ns%3K{*K4f}`kbJ|~rQ}Y`3=PvMxWTOY}UE`Ag8PWjm-r7 z$aUZ9ER-36SfJSV7JJ+lT%Ebpgp6Y-^LAsV+wDWCP9Jk)QF**52**zcZ_v5IAjw zz7H+vpwiAMI6gxa)9`T0_9(QKL8dji>ti0HeTBqn+S=`{EPgPwIsIZD2+&6BTG8=H z{z+3|&wVePq7&|Qp!?fh6H=CyZOPD!hAe^Z)@Fa0&O~BoM&=gYzHep%hdP&Wf)(N2 zAi8e&EIech{{RP|c3Fu4(E;cCe~g-_yd=I{a9aAa>68O=8C5OGG-O?O6d|gH_)1#n z`Wv;p>{V~YE0P!glS=j-mHQsA3ki{??M}4?FwPY^d4;1u5f@*yNtOw8Q`=2gRcixU zUP5llkT&&wzwOgz{&~dIrvfLEGIin*O>o0FSr)aA$h_Ghd1kIR0=;Ud2l(TuZ<{vU z877C+PoVOJCJ2ed`&B7R{;CJAWSFaeH|HI=ZV(mL`t=3J8$L&Ji;6++<0_Hnu-xUi zUSk~e_d5T#3_#4U`gkXPWuC|#2=nHw-edw)<=>!9TV$67x$8L)s5G57vN<36(y^wf z5Zn>S4DE7vAS}t5DS!XEHSD89e%$r?c>%Tc$8Bg}Rij02?iF(@|65@BW3sl@+YbWb z0<@h4MR!Kzmx6J*9`|so-KRrGF|SgK+#_41a#XV4 zl_5X3B0r?Tzy$KT4BZ}=(%S(PDyd8J;Ph4@+-w*(0>YN-ii(mq6%7_=zdAl`xs2lT zrOd*h&I^icdeEDPVa}Nly;Z188GaWns9y7K55C~~6a~mb_MeMu^`gQ{!sW%>qh^Eo zhT5QRac1(!u#GssXfU%X(cdq_@5uqYauyZ7$zRb3C;Qjqp~yrd3QG3s$_uSIxbCM+ z!}ue=yF`Se^TA~sMHjcKa=4;m)&vr8rp`wAF8*TBA`H@a*pm0SRTJ16xX#1NTX|VF zks}_~zlIFzDGvyEID%76|J>{-{CM>o>Qd${5dG%kMuSI}dApXvbuG>^OJrWUH|y4V zNHWrj_w_{AE%+LBmz#Zc z@}TZ1sB{fp_aasfZ85NemU;#0o6@F@a7I=(Rz@52DNqaw>mZsj$Jpnpd(_yYe(bKg z$=3TYC3L556g@LZB36=qYvD~G^5c3`I7>HvSXw}D+%CI41x9w|Z0sq{Me780TExN! zIQbREyrk3OyCs4*Ch$<2CAjY;UjXGxtjXc1ffOk8{heL2VDITF8pJ9B zK1(Dn5dDh?Q!~{VD{{u@bF~c{BK}qE#gea+MWoD+Qc?_Dfl!6$%q!lN#avYRtxIu3 zyIZK>1LgnXpo4dkePP_xdh=KbwZw}qaneWba1y+$Bo0lW~FX+Io-YqPk%G2!@Z@}xSK`eEnvC77!ta#ox;ts z|L>GdMal`)0z1$?A4%MTo=*h$la``nbXjjxSbBuiI>UbH(i*r5*G=aiYIx_JFon&_ z^x#Sd5YI+?L!q)z1vZH9qHT zCr08dK6S+O^Qz{C11w(d*x4COs}s=$VP{71n!G>2qUV=B)&9Kye;thsXA_M^5s!Xc zqb`(21-E{SypI*`z5^2AW(}+OX_bZbRZos+O2Qg(B7@AC`e&dJYv35N6}loM1i;Bc z>Gc~Y#*yIin2qqx;-smUj7ouh*>STIay}e;!1zu$f;Obo_2bDTY*$2_q)3u4ck70Y zC*GgKngZHXdpa3o(K6%>|HxL0-hi%Xjb86Lp*G5ISFzOTvDgaV2_$~dafXRAC2U*6 zZ!iPi&i$6mouj<@J@$>{`a`x9U6aq9Dp<&$h_LxslNqV1h?p}hBzZWqAz@o%?LV8s zU7o3`gT>}}6Jz^~Rhz<2pv$by*MJ;xb1Z}3@td%B^Zsk|Xyk%^Bw6qKfp=|hJU@R^ zve0NsO3(g%dIOEWj7U6TRAk}#H`~%+XVr(Kg+nYB9lLFu?2txebJcEXkDLRp{aD9? zNB%6$nUDNEL~egw+>`oCyxmS}IjMs44(2=|l>OFpBEs&Yqcf`;n=lGz&BuS^gsp~V z2l={AZuOPXq^(~^Wu|uDhMmcx8&C+@tAp@fAl9BTj#YNz@5YIyotz$gfmGgJy0XPV zaGmzs?LFt&6FpO!6qyRrY*d|V=DxpO!k{!5IRZ$${JH6kv-U!>naNfpIUJ2m!qRQ` z{EF#o4V>61=pg177a_(LIQ2P^TbWY=m3F1I18}%2#PP?EC`5KpUqB zlTr=_?1YxKh4tHR-SZ7L_1&2gENP4SY(2BuVpCWy4Q=aeQZ9!NHa-z)ru;MQx+aKJ zcP1A;F*P%D8GP1*(-eM=wl@VkvVg>QloT!PWD3O%#M>E!JI$T4)Pxq`41Yu%}es5bvU$NBr z|(P1s#g9+aP3BeJ`e}voi&7CX&l?YqjDVw`qtZcaLODe=av0Q)gAU490*#%zx$af(JrCf&_gL(HjouGg@1q23Z?Sg+&vvB zxlrYWXp-w5I@6umc*o0@2mySlyEGY&50SB07*5^@=d4>VbhDz62=Mh^7kxEYdjlEl z9#59G)v?BrBtlKEbn-3?y*oB%4M`5n|3f-K1j>}LR@Qa)uR2*42j5qsG%B;vfDNICq?Y2~~iVmsoCQR3W3y19(ij-{NtU@C(mu4m|% z3kTKCil%W7dPSA_Lr>I@)SkBFY0bt?p5^LKqcOJ9wO`|#gBY%O7X41VO$R=gMy6E| z?9RwR6AG_38-Mwi5a_eHr1&%{O<49nn)wpt?*Ef!-U-ur!MgLl`2@I*wLemNuh>f{ z1nAG(C#}iBPU)h4@7xdn6PdGxxXx(*YUa^$7)!Hsbg6egmF+=1WE0%*H-W~3;^@Sl zBk*IpLoFnM&5ciu0}2@>Qra)6$1|Yc!Av`D+M69i9DzT-8iS3FAi7DpAreZ zf@~!J%0Gu`TIEqEWWPBz?%ww;2mB~u+_kz_I0F>^f|!zW5TeHzfu8AE zu|!qbO^7pEZ-|wf8+N3N75pTS&^yJdvwu;9uCB#j|CR+H z9sO^Z)OQ+=CsIe>?J@H8YI>!(`V*(p;GBc*gGNxj9fo88e;vwo?-ag07)0X_hWP-P z!(WC}@-o4M>bJctlAs_~HHYUF9fFUE;>BnK`8G1djho6I+{+hH<=RiLc4ez*d&tj$ zZ;K(keAqv08n0SodF1bn;wBFZN?3krRb(50l1GeT_u@Zf`De2=eUaao`eDt_h5Egm z_yQhWTZ{}!VsP6}Vdh{~AgueDd*J8Q;nm6~#g^Fqjvyp}ykj>}Ml8adcC@#0G z*m{^JJYnIk0B6078T{1rZ`u8=(eXIDfp;lw>|BC8ufBPJIaC%#hI(gHSaE@%XL~|T z{AP0%xqV3CaLUe+Xi{rsgh;+Vg5dV6fn&ADU0+hY^-g8K`ZO^Nzo|#&DDS;%`NI!G zIEVT;QTc+7LENW9D+B|J+th)DxWs|j(0#me~zd1g5j%lhAS3qSrRB`Y& zVV&0Is~gxDwUl$f*67=oX8@ZnQBjnrK09f9-sVzR9`I_2BI$HIf@A&w8a z)>=094T;m(x5q6?m01sJ(h$)Bt08Wp+n7>;J0Ld z^Xratl6r#(4Q8GrOCivCqsMYY;=G)*e0_Rkx~f<&5E|>AnV!|Z(mrf@$7aTl>>`x; zbWFf5g$VP(>}nox{P6Vf_485s?0!oK_^lLIXx0Y1Z>MLB#C{V>6RFJ!_v^r-o2jY! zt<(v8jsYS70iQj2?3Jmx#ZU5cXIBA!4&fhWVBR+vHlpQep|dqu_}c$`Z^O)}|7~^$ zU~`2Yd6?Z1zT&vsW0Ak07eYR@?EGu#p-<4z#Htq>hvlgiAROKr?2U%e;|ONbh!_P} zin3wh)8^+@GuVh;fT*N5l&dVoovkEr5zt;8^L}&_NmYrPPGo(j-~aI>hFyr?@cP5$ zz5x;cp((2}X8%cwfDUtG?tH2=k-2OLNY+Gh^XvK6dA_CTcQ5@9@p`8JCo;N$GUFwK za$tPMDLRDX7*A4|vGW0o2h+tvLXGjeS~2sg85_rIs^!**ywM1_S$NoXQUOh=?l5y4hq>9;c=9~Bd#W3=mf}jX27EXoY$^ai0 zcs%w|FGJF8yub;WiebZ=`S$LZoi~GwPGZPjGDJpq4sLdg`y)TI-MEh9U;i7*5O^qp z#r3)GG&Q+xj7;p%=T#S@5e8sAS#fh-PFch%(<7xyJ-u{d3H_?5xvHb1ppfz5VmAZg zTy+|27s<+G(nSgm_nh=t?o+al^!RU!=L*Dj5|W<)Ylq#n>yNAUk&*qt!diA!bx`oe zZhl8uvxE&g3{;(;7j&cRI_K9%rV0j+Yiu>rf~{5y$~%vhPY)W)(!1F?b|GG2-Z3Oh-gcz9Z%za-)%Cs{fJ!x_EQy5WFLWb&8*9)$0 zVKv|q9(!d+^=g(ggW9saB^t7~eLXKY@-E*Txi{s{}&B}l>30e+XR3Imw1%X*3c z17#Zm47Vp3`CPi<@sJ$5$!pZ6hyjtaS8L~$=jFzK8#`KqD(!Kp^yVyt14GThvSKx0 zH3EM|TMt>Bb%h)q%!eD4|K+q&x#7(Eya;yrlJX1Btk7e`$c4`p1jYH?9%2ZFu=7GG z-%8ckr|l12RDQ-&R66G@?Zt9yOHp^3G#=hn#YAnuTggV^watxlX-TK^wH-oTz=Ci@C5HpeLP?{Fr24kks@7%Ek?A zsFL?3)UfA)z1!+7^50{y9nrx=sH!<1^1e#8D({Gp_2-adN#K^1Es!QPF4+=Thg(*{ zKGX#;`%Khv)*M>GOqo8>Bt*bmb#wv+{O7bAmmBC#RdH!SeCarXnn!kB)aaF|&%LKe zRO@_P-@FDOEuDz^EVdK~vS6HlLCwwz*#tyNtBlo>C`>N-%D;Zwn9V(MrJ#$Wn*4sZ z-7tqBX45pr4F{fqS?fLclyyjb+xRVsORxG0T`yrSol4FlE)ij4mET87Q2L(bmCz=D83 z;4MJ$mgMNWmSq*9$|z5*fEf8aEWY+tI}g5F2-+L7X!9k}t2A zrmQ)Dky+0B?x?@$}RWg^J%_ zAz`n5WxCslm6JF=G|EI=>F7aEzL!o$H4KPiJKt8#LrByo86_L|Psce@uc_k6co7?ONmdvb5B zn-xCLT#4!{ZuO(dn~f#~kKv8d<&T5z?-?~RQM=lwVF)N~E35AaV0u&KNl z(Ir)u7ab8>Su{`aTsv4bnkm%!ro7h6`n$FI3!dJge15&Q$?xgD1<6B5eb2dk(9ry4 zX9zg4a<&GQUYVk!o9 z39f|}+R(tdR_wG#Nll6|Gr>BSev?tdY`d1;MPEL+RK{pL*m6mO1Y|>yU@b(Pv8I2( zsCZa{pG|Hx5-<>khi{&HQJKl^<(f8jfdF?pugQd)okIevncB~f*O~hob;hWv91vxf z`1Rp_Z*$IpPpwv-u~m*j=B;?g=g&%bJF(gqURli6x^Y8#DEt8G&XI1iL;fs7hQsEh z9N8Vn-U-A{5u#SDok|W*G?A$#Y^ji)P86|~!v)&ugR#1Y#}nva@ol&@0ozqc9(Yk1 zcA_5~&EhSt!+cOmx;x^h{5Yq(b5wHyuN0QwjrOI8IFO=FcIVhq6OHz26PmH$kB$(w zuf2yO!D4=%3UJgS(t0LIpHX#tS~rSZk!SrI)%MKlB;XIK`0QC|eopFsOCH8QVv*lY zWNuI!pL2hv#TuA^vMKelhH7*0+7rs}_7jm+tK8PVXxS7c0%I1#6vimATXk0^gQq9x zmK^`yf;h3#0OvBkRnLoW!CUXd#31%-R*Fv_!Av7;uIO(*DCa6#;zdR6@sXBC(-FfY zic`sn8m`l&yXbcKar;3+sy<9W&ZFi#-qb+8u09hOJI(oya(VwpBVIfgD^RI6Wv~(S zVnK(Hy(Q>A{e?=f(_|Q1I2>|E7;b$r%J8m<;(4KRSoKN~H^g^ZlTi`TpsZG!3b6v-r$__-8g0w6uALX`r;p$9^=Y(rDLY z1#pS4412m3_k5qT_bHYEO`zsL3NN(R~iy1knQ%M`jNTgskH^T3{XFS0Ldoey%P(yo#OfFl9HZ zYNDfmmD_(899V|3`lA;_n z(F?ZmTVf?M<+bCqv1)<$@GqXEA=q8KR38@o_45V0tSOiXTT3-ENVvYJ*Q|@nWfyg! z*3>s*X^g*lMdx0fbo@bI8P<7x9EdVD`o-9YvzhBg)%97w(;9O)u=&nsc+vt}Y(OFA zv<0sZBv@4;PQ=BgHGPx?4%U@)=crzYWLybG^9h`|JV8T+HA2_$$6d^j#pZ4s?{ClZ zK-$0T$=tVwkaX3o*K&;&hzTDppfo6T5|`@?h{FZF7FB`~2N=vB4C??8sxB|P zPKzU_+G;*DX4C)vUFu+gsad(O)D&f?od^5Yytw*0bi?(;Gm;HLkWU?g%6~}2-1iSx-)`%gv_J}o0VxaP zK~pm_Ni;n_31#r+keK%6v*vFK-CWpED~=V}4v_rX@kVZfpzwM`H_zDb;ZSshD- zs79QL!o9eK{WOm4QWML774(`RXttzS$@C@#l5EV(ioKb_iyf<_BaMnG6qa~dFI!lI2m)@3j)QP=4M*BWf_bPC>P z=$uOQNylwUcF46Sb};&}*Z8q|<_;FwX>FBnIx@Kaii#V*x6N*8;82j?wenq)fPdpO z@BtYu{gSy8R1f<$hHw^lU5{1dl{{wgJLEO%X~vShc#PDg`zM;&Nc*)5$XTVYd*;lrbv)9*<`Hl<}^cxpT*l-92F47czdL7A9!?E#EJem z%!ju4zoNUo{MxT@z?RoD1d6#0r%}3fGM}6sjUfIyyA(Z3C3mjfFZ?p;`LjATeef%@ z!s8PSz@R@6?W#{pMrpRyn4$~#Ie2GZwdxs%=3$7X_VPHd-t6l7c?U-d6cWMb<@<6O zy4ouu@WLkWc!(Y`gWFKw&&M3HB>x;m{HDER_9z`Y<#c>LcJt*=h>P9qWd(B+kT%f) zn;75+#$GvSXJEzt6WZLI{#?^Fn-y#17Q|s>oK4gV218yj{QAL{U4dJ@*|9f`g33w7 zaq&dlalQw=B>LFDB5=#osXfedL_At*@rx;=5@^!#`Ule&Ux}A)cI@KWT|Si4p8vu2 z?FBcxyLEGI)|0W7^pYewMrWMuH*nnysn+xYzi%n*l#G_2fdWeQmt0V~_#yj692Y7a z90e~wjv@(Rp=j4D4Y!#x^zcJwr0q6fHWH9{rb`}sX=ZsJX#$na-nUs4Eo+tn6e2$$ zgWUxGeYf2YPylyRn?74Q4sM&piij?#=lyzlZRPgNeI?~2Q#_r!-E7u(#3--kt zKm;>q*R#!)kKoQ-a_3WjEyRfL#2)M)Pp9#6Iiuv4kN)`&dc#Bo>4DLK(z@YR>x3rf zMN^7ecHaXLSlm-)ZGfDi7(N4ijI9{50Du0;ufy3f%Rg3%XxLZdD%Oa@t+mCN=nIZrzfle| zn8v9s_hv3O#}Ck{%e{^>q@-yybb_aNVmSF0w9dGoE!e$!hX$G!_Xx7nAfuC2zpIo| zzP8z2;ZV7(C0<`9#^zZo7_|N(2GsY)r?{TBHRv2)&Vj)k#RepkfEjV;qba@1r3{R+ z6T$$gv~9$dza4b;h{qbyNwbqM_4%?P%5?u-dnDN+MBXm z;`0_uAL8V*_>E2(Dak|h<=E% z0)_u@I4Dnog3=~fV4CFK6JthH zP4i|if4HbBE|%wj^^2C&Z(U~{r;YXOvx?4!G=TdX-wDrj`c9t~?}~TA&S5JEl;mfY zou9kd(t z^=U%}44tWPZvyYFwP~#(~SF$;d%xA~PF`akqR}MaTSLR~;_5 zw2AdTLQQRq|B)<`|1k3PCi<|l>?0f06?@rz*2HQ%v?KqnW=L zKH#*fmSsr?bLb(p7MJiOpdA&QwD0t?Me6EZ8~f|lX3YATlG$vH560@W+M+}9aA`(G zGnGJEfJRsHMaeSps6V}0K(kwY<}AHn${{+dfAkaL1Nhe5)a7YjG#ib9%dG~4Kog(T z{%rx=Fwj_n_sclkl@|>}E;7^yYqPm!!}x41LrM&=be1ra*m5uGX=|bd=MX}nG;~^E zhS7A#z7(-MN0ycZ>X)PY=J=k!OtuJt>-aOEhJqXCWzxXu$hiK0m^c)Dk5-L@1s9e- zVKa&xRfl`Ry3fkoz*M^SVZz!C%*YJNsk_Z%4l=~5r{_n~U=!<4<6NQaz8`FD$#8ib zk<;Z$^4H*gLE?{_IsP_-atIB8kbRGwGDf~g#OCJ5!X8uME?#tTp@cr)-WZWbDaaBs zE1qy!3z-Hev8n1O<9>He@2To>`*{wPzG-;{qMUVZZffyon;AIwB`EXqpxtWgy>H3< zdvn{8LTs;$w)`J02a0I|>LRLzyFQnZ(LKFz_K_saFjo`6p7MIpJ$%(er%|`Wm4gjxfokG#MFZ3QK_5evFniTgho)WS`(T`-HGIB(Wv}R*FR;>&Qs~E`EC2+FHk6) z!P?wUZK!iqXRaRiQP9d?n!CM4$8hvjQT9+1z4lY*`_|tA8Ix2%Er{6bX2`J%2B>iP zRwt%}$fSKaB>$wuPBBzuj>M}t2qR1p7HUa!G6sTrP7nYbgcF!r&1js_nFVEV=Iz3J zF||$n%-#A_T6w1AnAYfYNdu3Tw_->~7RYGkVoYAD^yk(cg0oRW!(Coqv5(jFlfF*JOM1ZStGiPv#4YO46Fwn z4Q#0UMkvo^q#8!$x;a1iz;mfsfB#pR<}ZG=PYf4*>Tau_XT6Hh;){7XVyETKLp)#Q z&g)^B7pguhzhq5z*w>vcakMo$M5^J=$sWx6uxln6s)rdMmb}bo*3#kT{?dSi<#8F9 zwP8U;LOtWg7DjlY^vU@@Y0tK5n9W|ypR8bc#h5G#=oq7hjG(IEZ1+y~>E{6hG)&%?wY@5{k8D5 zjx2%3KhqB;7kDUb0tZg}a9IOgXqkNNh4|2@P8iO&`Y7lF_Kv@~?%Z@?gu`W28Xm?p z^$B1gsKLb^R%*2&rUbW#L+J{X*YW$-XuDyY#A8da?F8fl*O4SAaCFgSm^;A| z$i&PowRiYPT^uoxRQxX&VBluWwESxY2P=E9?fU*G+c4j8!Fr4E=+pM$N?o~_VwQM9 z5=^R9-dl1GE;yixJ{E!DkSd26M0+&yVLbCTiQg5qb<$dx z82%}QU8og$Ohlh5%YH((b$^XC6HMp;&Os#z_wfx5tOIx;S|v{><4RfBc#sjvhS_d&UrHo?ZF&u@Fn}LMEAE z58E`Hs#-x!q{lef+d&Af-zs{d{&^R z#Y~C5x`j~_WkqEVNbJSBb>UMBG-sBjt#Fn_%Vrm#lvI?$)=8BIwoq!y09e(OSHyh| zZ9+>8&gxc=HLUa~XdDnnluc`%aabS|R__U!6I_d=Te^ba*Cqu5{B@`2_>NzFY_nI0 zbA(^~F6TRIm0JT7T}xA1;;tkRn9To^uHTd}dtxF#k4qHeHn2uyKDfPch88Lx`Hk92 zM$~9Ornr;tLtQ!2WK%P>o=TFkrhPP07b*wqnt$OZ{g%=@G1O>(9iT?Tiyi)>sTRe% zb$FjcSvN-v!HFCM`_(P1f`T%A(o9sPbtw$}??>ZE(8%XbTJ5MopkMP}CXurS7WJFo zgb}XcM850%bBq<-^y|a+4FS(@>>fB}0q+L5X3`%h%;kWCst zq?z`qKS5XZ2zY+1fLPq(xBR$S!MAu>CUa#ACHJSm_q`8LPm3W`t~nM)Kj%`&vxr zEab11>a!-O|=+?3V0-)lz)fzVDn*6U9@feSe1O>uQ_h~)p`E=|Ef1-p^*LXrG0e3 zo-bxmQ%L$x8K)<k92z`WGokW|+Cc?r@DA577g{>_jd!>( z2W2@`saVjVFXx*e7cJ+F{yg-ikn!`E!Et zt3+@*IDvP?ycDDECt;4W+B06b$2ZKBD&8*|E|bal68BNKMQ}<7N@ymh0>2mg^Ccep z-%t7wI}b2_I-?E7)&5T<$7(=YW%lN*3o^c{Y1Ql4N3jV%|I2P7PR^yNX?5Adevy+0 zQ)0EbIhcC!g{wl~$Gzu2Ej)OCUXNbC-m4_t`J_OQ29S68Ly)Ngcm@|Kf6GbOb92t< zZd*_#*lt-2Slr)?G=Xj((%K|f&lZZPA~AU`<6|Vb`vByNls)Wl#_U0h??^}kV3zOe zk4A~VQY00;*QA!DxCA|HF=u#=mx>q5B^7}9Cwv&P#Z&|_AZ2$yw7tQPoAUOk*&(3;rg+26!FIL&mX_K4Nn@8=AfB)VSd zgSH+d?3*c|RBnEA!gu8B41FCLBd^pwvW}82Sb%U|=qTMi@i~Kbze01&UX@r-5hJm1 zJiYR;a)Lsy)SF~m2n}3Vs^duyTaZ6znkG~~e_GB@sc~}ZsNI>sGRy0I;r73-U-Y7| z8Qgz7*h3%mo+caAyMj#5;u%wGxsx^8Z9F5XpLlep&|j5|j=z7nb%HH>o`>es4Rg@> zEhP%q|09cSfZ$jXWrw(Dy8G;YCgY(DPQdc>QS~R2WmF>;oMuXsefgXJhq-tK}Mwv(K$bz5Zl(ENpd!+B-Qnn6m_-;g`El-9)IVTxcD$pF1 z`&gUwaQVKN3w}Ad{*)O%Z|{5ePi))E!@Z09EKF!0< zf%77>)3|t@`G4yx!>`@>+Xzze5&ru-{3pTOH7k~-K))|49YMNTZQKPR{JN-rnk6#n zbnQ;6g#^Zb#sy6CW5j+UJFt10rwR)j7Q_EK;tgTNqy2y3alYRd@jvt6jho*XG`t{k z%=)IH8;oF$=HOvPx!C@#eW0|;f<9o(OP5b9=B6hDc7z70ioeK&SAVYH`&+~L=>rG3 z3tY}+A0r}o-UAVH3kc}B!*h2_I1JCx*DoP+fwt81eDu|bJk!9$E)n=03k$LdzBq8^ zlUN&K@vQk>vTL+@TFnU=gklotZbA$q`fQBOUh{ zR9e{tkGDhat25E&zGTQNeiy^2N~#q1K`S9lyjnV-MA@lWedBm6PaStfU7XVzNZ(u{ zo2gY9-o11|F*Ft!j5V2!5&de|Cm5^QeN0DAj*0049bVM?sU?`D2@3R)={ET3=f3-hlJPyAAeLEPi~z-WVdZh_<6)G~b_d}RbR z+O{+Fn)2J$v}X37wLRA5$w}IkE}OF{;jmoIc^q7K1)t|v>^xL*GSxH(J8*TXCR`QK zkcl*Yr9!|$p=k|$P##jbxbtevYn1{{-k{`CDdd zaK|N3(jd(kE+)bYUaxA?N&koUBMY`%8T0#PP01T2&m?wC#QPIub6gH*h(s$IEPxc8 zoSf7Y&k;kzs>vo+W|5`6K}dHVj^rW1?d=i7h#1j1L**uqsGd4xKep!iqN@?{$SezA zP0lCW>ig{*V^ysh9Ww(_OQaPGQd)17pRw5LN_)EVYCI>bJ%^0fOy7HN)Q_`BisG{r z)>sB-BOSZSM@cf@$a_J<-aM(pm+ih-fA-=vmWskPpi}bu?`Y{Za{d+n1hbOG3rQ5c zRa&uO0DW*VD`u0`FruUWyZ&{l&h8?}LL1ck+UxGj`ATZ}RnWp`7(bL{&e3xF6F(wP z3Hvo?=X@Zxm>^U6gP_TnnnmAF80E5S>RCICP}Sg-|0Z5sy!B!8xGmr+>*8X@xOq5m z5`!UZJcE(B@}a`6FTzf8akY^49-)S0S@taCN<4e~Ti1u{%yzMrJpTc|3hBUAK&M#R zgvNWM-xBXn+(?!Uay#@t z64*c1mj%@!%ann}W+w=V126C>D<5MdbTDI(G z*5zfL+(czDY>njhPeZI^`EIE{TKre;=W#POjrq7r5#;r3kL3lod>vVtpv@!_h_Jp) zj-Sk8eh4G3D+k6zU(!{5k(0LCg`|1SSw{>N0pqQ=@s5F6*G>{^Y%a*BlhQ+I%L80+ z`z8hXT&W=^=db#|X?HZ>W4B+pVdKe-j=tXFFanMCnsUgC>zx->LBgg=4=Km)1lSd^ z!Y|#R=PTdk0r*-Q7y$G^%Zo$`y=A|~FWkQrc1p=oQ+@;T%GHN*;N-a;irw-}I%ZwX zR#&{F%C~+QfdsM~TFM~Cojef9=nBy;lpxA{VSQ*`mrLd5_;BcyNit z$abaha092?%Tg%;V*~RKATw~*`xD~Ml3Y)!lhqr$^$#dIkP~X5~ zAiI?uY7P^5Bpn^E;QyF=y&45inu01Tn}XfO9@RYe`z6~8Nbe%-?2M3O z#?AdejL?TNub?9un>P32IrK4ylQ4F0D{9@g6ahQ4kU=PR*BkgF7fnYoJMssfB9id8 zw;GuFo&pS!XPb}@gT~S~hx}iGT#Vn$&rr2NyGmGC`B=w3IBg&%owcCjo7k-#$1Qdi zGPt}saac(FEl~2rn(_9d*Joa^OD}4R?L%S1BZMlZ)&5LHfNB!)C5gM*=4`!kG@r`; zvz5)w4Nx`?jfAurAFeA>V<6A89us;O@xTm`7q8U3hl$0ER>z+s=;`2nBcBbSqeo_j zPyGr2Mwl!ucUeAq)V`{U`7t;9N5bKULpI1XJxuG2`c|2i&X3bXC7#k>gx*WbY*K;& z$LyJcSCCrI7bZ?Ry1duyi2pU{yFW;HfJ(T?Okdk~I(cp{i5HIEBg!IHn@{Qg!N|$J z=&+mNEFFsD1&F;!GuciUJsu#BbFe-K@%gtvD5o7W)Ml1$z3r{p9kOt7DPzU}1J79k zwgV88ITy<}E4pt>_nf`+0x(}s({zKBU+p@ENXKH``5x)x$7?Fa|9!IU)!9If ziRJOIq2s6u6CM1NyNYNA8;f{TEY7*|?k*7gWx`Y^8j(HZ#S01QgXgXloF7E~(A?b& zk1Yibm``o~!oUFd`C%0(NLddIpv)jq{tJIs`_Lq-lPb%+P@5}_^_g=Tv)O^$jnuSP zaQSR$@GZ~C`3De$LkgE-?FUiFC85tc{H6s!+Cyk76qm__8Z%YFhYS9d(H|=ce>GFg z116kt;IH!Tx(@7HHZnI&B${(?oqfh@u9V3C1C_;Zkk%&4;N{QmKJ!S}#fi)&!i_b8 zKuQ+N42N#Nm;h#SG-x#gC8JRB!`o3^by>@e!6(zsLueo9vh|(;4r^Am;{i|l6y6dr zY#pu1`7<~3;RursEbuSYnOMJp!y=shf6*N;!Z)X&1l7d>Ut+j6 z!KwS#X2QA567hc~^#A6u))YRCQ;N^WL7`5gSTz0Fv4nTWK7j!f5bgh7r&l-Y(YzlrxT<=h)I}y=t7i9?k!kkK)yAc- zAMVubm#B(YyW^q>x5l=1KEf+5eE66N_QW%ol^7ezgV!B$HiB+-_TEb^pm@ehXdHK89)1|UpAA({ix}UQk6E&PA2p~!Jd;0d@wu=$KE?|^rYK8J zs0mFHhOBOU)dAeJ{l#gI`Eu|gQZatehg-fjF*rZa@YRZK!Xd9*@8e(eNiagIY*`#GtG;&%*3eOq3wCP@ z+Mx3)P>bAENrwE2!_dZ7`1_6hVo!`>XF!s%MJXqXED)gsc^j6R{bI| zF+)(Jq0rBMeG%vEI-*qk(iUprR{~xsN(mWArH)Rd%$_?VSI?CjdUv5H=u?^iWgFXY zc&q>ia$B_Nb@%H~TllzNB_o(rmKq`5Q`TBHStX$QRzzi+9q7;19NRSQ*Dv1Q&0LfV ztlrj>Zgx->Nr{g|h%xhhW8o#{DB4emXqV?i#hg__^?MJwzV{gn2J1_KKSO}a z($H9)RiHX&Z?F2P@bRvmqf^7~Nrd7C8OW66Nui%;7W;+5mCGI6}{ zyEbdhN9NsUu`b$KpH>Pi@ei~5?2B z2fOdU&M0G&mIi!!7VYMkqj^Q$d@OC=RyA#zhx>-5ijHurWs3=Y8e5CbiJ!T2~GjJT-IzZK5 zDS7n#(7KFl!OsdEYyg)k&zylalBQLGmscf373WA1PF~|S@VPoS-X6f!;!?~C`wLI_ z_*v0W)vXO#+aZ8AgXVoxfsysewa}idLv}ki2XuNjW2tD$oV`c=Iagv{a0}9m_M4B# zKF4rv(~yZ`TgpQIC$;0fgooRz-PrvCaJ0h~vFPez>bBN#?W+IfW#-QVn0T|u=%p!WDNR@(+C#^yDc}n^o6{=I^ zVof+hZK@7!RXWFZJ`15tzOrT0*VfzbiN4sBAri=szdOH{F(Qj7!i?T+Z~q?CqM1GX zlQ9hxyaa4lPCYaqFS+0_*{{G1O8bc=!eQb@v(;RIsbgBblXP%FHJU1UY+;P*o$S2N zS^+KH$1c92m~f{$KRoTQk~fx6TVHSoXH9`|-6;<*b^<%DS>aSnvoqO5xv9`_=^)0f zy%cDuIPxn_-y-Uo<99xKi9=>$F~Occ9L$+3@Gq=$`p5pR^Y#EnbvXQ;H9 zU~ckKopF17%QEZW6YCK`T}jVKLb^qD zEjDcD{i9SDw6;RQ74&|PUfIpigc(HZ=kTI)0X5!!cjdUPX?JdApHEL*)3_K2%-D%g_wRh z{F6FNcy+Y8sJlaGsnpB*oaKs#D=#i_F%#NZan!5`s*$FNb>GYSo*DmSD8Z2MgZn?d z?D1h=|HdtNk^kZ$0%apcMiMTpYsgvg%r}?c`Ilw$(AjsWJ6-6gu1i>4jUK9vH@ynPtVdkqnB7 zng0b_2^cC**d@E+#^{5AF{seKBjRdFP zT^S8!z?V)FPfqOM$j>fRvWX|4nZg`cap4~eSF{M16fv(lh0d^@YXm=SD^L3|nM*YI z9i{OgqIyVD`$m=<_;%>bTE)2I>pf{NCc3BiD;$PC00a9|im=2T?S~P3W<;gTBbte{@n z&Aryh^^pT^J+bfB_7k{S7?^9><^j(d*B{XMMlvV=%2vg>EH;61WF+>`tCyQ9z_O6y zPtzHE69>TGF3U);L0}Jq5-{>FIC?Z4kR7k`CvX_e*Mhl|M(iqK|zsT1HSkh1PTx5kh_tn9@uGq zV!C;bI#Bl$+kxpG`HJ_?8TwS{^An&}Z!*pCkKK|Bq__l^iWB;W>s#!?2t=YyNJj?M zwt#pwe-v||KaE&RDC`(t*W=LVUe!}2OJa@muM2j{rT^qu1#YH8yNEiSIoT1Jo_me? zske{3!m=Kfb8jz0CmnCON%bz4m~cbsGVTAkI`!$ve@i&{tNAyCDh|39k$=bq$9RDQ z=%ks%|8e3fq>`(%{}z{h3T4Av4CVj4yC;6;{{MOGbt3&Iu#tc-pHT3gIVnH* zchiGe+}_)#HSCvyI1v9EDL3JHj-*1MeSq}zsv;V}l=RqW89{#EfYPCk?iOHn+womkBEqPLp43Kq}XTjPf)3u z`hT%^UY3=g>=b#Dm~i@j*ZSA7%||1cM(zows4Xiq#+QEo^IIx<*e-WiF?tv+1%E^8 zj9@DKu#Sc^2vk8&MJaLs=;BVIg@3~1ce$<$I$s2KX!~ar?G5xgnfvaXv)V>b+(p?F z4dCtWQ^?SdwD+@>&lrG(u`>+Hov-e{n7;WKQdZ&&!B6ab^u>jYs9qAgS8;ZRwGSK$ zdtDf5(K7HZ00+L>6+Oh#@fx$>IZIS=?vw_#W|!qwXaBR>A3sXDCf^NZJFbhFV68Vq zAk5jzVy;j`hWxhuB0|Q?q<7s<6_VMqwl)rXNB`2udWhu48Y(m+cX5k z%=hAXsb+VA)I-EZb*2VLhBq|00rT+YsB%yW92~#_q5r!UQ#4)@#0i?_=}ePmCsH)n zW@Bg4p@^0DH*U-**6Ov+vMt{_VOqF8XktDW;|`Rfo44-};s1!FN!JA|LuMLf@Oyav zl|Hm8=E7Y(JUr4AVc7HW(=vp--&gc+|8)1fn%-~aqioViQAe|^*P|XeV<@J|>CeO? z&2aIoPYQ?-mg>cW$K$-t`fnZVAIqjMgm-_E;3Xs!$_0<-a|0Cx6A`;7HI*k5TX0 zDY&xoJH(6yg^7-iUO5_&!&;EvmhF6wjD}4zX`eGxlUbde_#fJP^Qr>zO~-gCq;AxT z)s+yizV(?qZ>mt7*OrO8KtsHQ zQ@A0f`6+(FEZH1+UsR~JcU6taSO9jm{HrqH@gAT^ZYDfca8+S|31e-@oF_HIY*XQJ zZ1~=50oK>*aAyO(sFg8g_zF1QWP_`hsYHB)Kn7vqk6+eI5s{Eu8|oVyr>7P~N9h;P z)7rkgCY$WC8U|fkrvF25y3IH^v8DBEy4_YW=$U>6wcP4)pq}%Uw_UHw&Ii>b<~Z7H zZ_;~q>1n}3LtFZ+cxwu3IU*x7Gpr1ZOzsY)CFK;ew!w-f^Mm)8c?iz#Z{05Mg$k!_Q46pusXCWGZJRA@B=9{( zdiXAYl(wd(A`r-&$XwujszoLsP!IN3`OJuG5RAjb{Lj33k5f~bNK=;@Ci;gd?r%vf zd$`fjgT;u^YRrvkp@+7ceUJ8eZ3}Xr;d;ul=?+Mh37D8#P*PRpOsRaUp{*@;SRMixpyc42(-Cv@1*$Ti~{bZ~32Nd|1xu45~VZr5h z`|&;x3)jVjSKu{Wxz$AW+7V7f0Bg(8(jI15 z7T!lT?{%8J-{7>6pn}5^#e$FuBn#_TG)UR4}qsiY$KU^Fq5gN!F)Lyp%YX@>Qd#3a8j1&$v(bDzRcPi@c{S@nh8 zBrlT!ns1$pk&J@F3+78`-cN_;5GEt9(Tr3% zrnqTE10GE==vc(FQ&Z6oFGxyCopP5YXA{#0?UCh~@G`ign^LQe$Eo}XJcv??E1Fa+ z3?RB{C+Tpum9=Rs0~-57%P~f8_kDK|CR8Swp;{Uu``Yjd+E2}-hT&`d9dThenXvv# zx9V%UF}W{al3%H~6VH#VuMON5gQtS=h`w@vp3{KFrxo_-$qY<(FBFuAN5!dpa9gY( zKVJ2YOuw1L#D!}VIdt*51({>S#GE#}8iCa={;_IhR0d>Ti}$(EIFhC>yA!Os&TAi} zLewZUtDA=Jz(cDK zYm^zQl?+T%{Xgc{52aRiry-;t`?%jIhtl{H9P1yh!B%^kM+ou_HEz)eb%ftM3+Yd1 z_&QxX;48nW{sEN_Sj2nyN5udG_zbkMSV7|Y?v>tXs|TJ-i1A8iWbBvx2#yxc2yGgO zX5l*^cu>Z93V(+yQ|&{gl|mdy@UTLz!wmD6H3D~4BvV4e3AGl*xXWSfc(Fa1$$TIq zqJQyq;uvB41w&htd%?4hOdNC=P2#iD|12jNB=qCw`2O7J8iHj-K#}z@HWl+W2qxF3 z`XX3VwEsggScpJ{V0yjFtdW3f<5p)KUe`mg(`0CWd-Cq&l)nL5LUkbra8JS17ol++ z4F*fPpPZMY9vlC9NW~Stjbgvs%`y#qu-*EN)^NP$%H9=37Hgv_j!@mpq)InIUo65f zCh&|ht}vHlr_xa65Wu{Qu41-x*2i!2dtRUlSHwc#yw=y(XU(Uzlg1FnLGk+)nZ+mX-_fh2OhiDzgA~Q7{1G4 z2v%JDCQB)@%Z6kb%U}lIrOGCcM&bTdw{L&VA-7T$Nl_#=&KT$Wl4@xvZ6x*&$y8&b zQQ^jn6&om=Knlp{Rw!>?-S?%#A1hg6QCLjvD}oZTAx<20$6HlUghyNN^hBx_u~_O_ zJMeOLzB)VY9~E;AzYcRMU)X*urAb$F_3E^0NF^>l7oND4V)t&OJHK`JIhS<8Q|yI*jZ8kp`Y?X)HWvbHlHyqQV-Qmz%-W0!n}q(zt;A0l|KJQe7_p)3wonhb3;56y8T zs2H_;-N_0fBPmEvLT`GRX*Hl8q;wC4TKMQc??y-t@%o2r6S^@}fj3JWq3nk%1PIl9 zX*@z{v*+KGkgpB--bJl$nktXu@bsSkCCzijlxz02}myMY8bu=+gS^=F zZH~w-)3pw-w4IgwyAR^0ii&e$3ofa$^OIfpxNj8BHKn726HNDnN7j#k03D2Uzo_{T(VXk+iII{{5H&aqWX?MiK883RtA#RQ1i zeBi;rpq^HYW1Hr;afn(CI$Vp866RKgd;&bO5#;~q%d1SQxoZ^R%eUn{wOsaOKBX5Z zILKtAP2bJ8lqmyH)xG_u^=@I-DVkj0U@yF4T!burSMNO9%^IOtr1>iSc*BWnUfFCI zuIkXcl7(~jT!13)woB9Eo--o$R~Hu}r0>JG4V%OB2?1;`Q?R(Tp1}E*t)bTk&m|?$ zog#A6dz92Ej6^m&ye2a?siL@RwEjZ+l7xb!uCWZ8wcUPs7rmit72FLgjz+mlR zq@)j5qn}J>=)J8l?*-kaJ5_<_$vLZ?Zue?gCeUN}w{f$Y(zEF82pubYU}JQnc}>etuQk16AXd+2PL4-*6|O&%E9| z9W@f85aA&K6*tHX<0CVx-AnDSo9H!&b<_UM;a`8`y`8!3sElkvw&H=#zV1cw4N}k# z-AJpsc9e;?-*#5?s#+j#4fi2i7D8Dp<>G1J93DvPEfGHNX7V73b1Sz20Mg^!N_>g+ zs!?adOL{fsBDmtjWd662kI`e?o^$WFIM~6HNK2ri@-qW5tvDKg zIO5C*;7Bd3C2fngd)?)&jKcpw!Tb&ofUJw25lA5fQex-=C;%xu(M-c}(?m0xOKLx~ z*QFpueQKL2NwM4D#4z=onlwXG1|SGt-2?;7Yn`lY`*NBm_Eiu$jFS~V`U%x0e@%P{ zxN7c{{6d2~eM$}TqWroPvTb+Op?n_vc z6B0(b9Ap+&XD5$~s3e}Ji24M&(Fff%QGMG1CPgA%(f5Amirn9ei%m zMGGlm*YlR8OYXjc? z>4Uj{(EU~X zdM9Wo7k;3xA=r6M3s!qK6whbBxvF)X?t+%+YhMbHJN|6~@t_cPR@IvgL@bYhBn z@bs%Ru~jT|HXXz(&E$i&cs&`!?|Rrq)nndc&QqmZrdtLgLI6n-KmS}{=Mmh=|LoGz zQNVb&`(g$J8uE!g|7^a}`8Op2y?2754X-RseqOhDW}QRd-BT6jfsxL8TeLx;AT=@ zk6vO$`zLwYr2|^05IgmXwNn8#M&2{KvQIg2^=5pJdYb;R3K`OLG;5Pvb*0Zw#$afu zJ`yoMJX_BxPD-pr$*yGuuAQ8iM3^UVLd zm_z0!V2LQk>wbhPA4>2ACywDVh?9XATlA88YfAYd6=0ICexqYid3GlezuJR49{<;- zSL*(9H1!0jAc|$|eGs_*V>$Pc39*m~t=iXzUprBODRs*^HIvN|0$UY0T{#v6FFz(% z`7Z$QT7?KnaKT0 zLf+ue0J8lN=RhDEZMDVkx|rJ#AXT_>y)kFZl1JAp8A;_6i=bsh@b7mAengT*MNn2okHucJZY+RHG84@#Yvf;sCEM z?`LA*83j4)4g%5)a}-$!^3&@#Rd(NfV$#8AXsUFx#Jdt}BHy>pi>6^lkFF~PQjyc$ zj}=juHP*DG=?lBaA3TJ^cHB)XkDV$%{IW)sQN^Uve1UAuWcs~Vy(8KH-Pc(V&jmH^ zS7H(za`f=Go&Sx;Y+$0!&QTI`s4!1VDrPK)+EiEH2M_(!a~K^XPm{h6DBWy!s)s_; z1yvJ2*@|`g7iFtPQ$ztD|lVgc;(S4GI1@-5of*&JMXO+`k^)5c7oH|Z9cY(;`(WG-bk z+87Z4$|}zijt4jr7{*!?^L8&?`!2mbgZb$ zHVc01mvn*xAt%@P`|JVy5$Rel1E4W(eZ9DPv!jeQdgyPzxx!$)zL`^AINDprB5N;C z`L-bBy|BNy>@=iHvGEI^6YqNkX6)x2#F+1ElQ%;1?hZ0S?#^;Hs`c-gSypJ^c*aox zCTol&6_^)U!$#0kg*!uZ-RLQRcC3c1D^8B$m4b9u!~hWBynE20k~r@FmN1L4K0j)b zbj-m=z#DJX$l!XjnPuoMaqP_Swc`WR1)BQg)+a$U6chw1ch6wB0IX|}`o2N5{+hmI zWY7E;NGQaH;T%iO&bF6Itp+gbWl(r!wA>|z z#qz0FPN)1+@-w#kHjgm49+}ajTDp&P%#m{6{s$5I zaq*95!TRY(UG>R0{Dp4X3qnmVaQE#3N0L9eQNL2BC{d(n;$w>e?NHryxZ|uF)$g@N z42XB-@krn-HmbG9eyrlE;kCg&Z2)l0?d_Ho*6kZf{%oD$o7jKpF!Kk2%S8OO{!)q_ zC0`oLXQHV2H&#bzhsDB?x97b^T#s<2?{8@`Hr$KCfP!qwBlf{jqW@SKs=352OpWV| zq-O|@Dsxs2tf=HCs?DzeDqI@L6x9IY_n=qw5cBNPUp%zso&MC0(KI~9(fxU&dP-?J0hN4l|D$Rw-C+Y@ zKS-$GZh)!ai?cdq@~kb}3Vv?^qe^C2`sIPX$ z+Ct^w&RU>u6HC@w9IskHrh*=rRZ6}4)L-3`c>jbWrZouuo4Q0?eoJYZ2tJ=V!84e#CibK*cZ z-_HY)=AJo0$;)70!*fd5c2rtsOYq>X0EfdhS*t-7&Cl5hE;r@3q{5$uxE5vkddgop z(Tl7vE)fwNoxX5n>`Lyc%UAe_d6*UKjFH}Vr0vAW+2mL9vk#q_XNTQ?(zq{q|BSjv zHm_p{EWuEeLrvkXN`O-Yg}^_x*Z;;2LnT4XU_A>lRXS2Ns0C9?;-op?a4=TMK8Tv zEpnW&ypG6AE_pnDW}lc5qzL?bFFp(m`|l6TDE!7}lV(x=fluy4e|5|G+XhP>MqBC; zo$+2Xj9-z8BikDXxn;$j|8@SW%*@k4t?O6{D3G%&jo<6f;}(xlAJ0CMTdQK3+A4K* zMNz#jv@!Qe-J-GEe0+>2Kf|s!H#My$HS&TPa1fU@WJd>6TLqs?zXLd`mLD!3GfEKK z;(mym_{4R z*p|Jzjc|KQpsvKgf4zaae-Pc5dtfxDrRpGc1z0#x*Qz>a(3M5UaE-J*a=@y)eSHxY zouBy?vp(PQwFPnkkHz~JIaHmzciu6K2{Fw!pj)ajwwIYNX+FgB6v=gc#AJHOMp&h7 zQjVM2S=HDvFgwgJ%bd^62m74K9vJVslPG2*_@YkJ@WDW>Mbf$QZQI~TMFi!s*eQjb zG4T9%I!e@1j|0!-girRJvXje?dJM5wa#4XH227kUcy>N-&D@8N`-0z97kst0%lmm8 zaQT*UtENZE|L}f^Dn~}8*O0DspIGDTRoC5^t^VNM3RF_H)&AWKrT?ut6R zx@MZ5*XxEY#EWPJ#VPqw;L5pQFE1tVW(=PASdvAFh$uC(>-BW@XYowJMH!TIpKw>m zyP!hxs)3(a?E$qmK)0s0=|o(aNu56TRG2wns@yx(&?@9G>Sv}GAhT2D{F^&sfD!eF zHyp?kg7L+cVw^$ZZ!TVO@)N?X3t6@j=y-_P6lVTaCbTN`XeMV>xf^3yLQK?NZrrFR zwCnnSx!jy)rn*1}&_$k%=1>tw&APp2<0?1cuLQVH(;1HRg2VQ-Gn_d-v;u=UR zj+%Yot3P`peOzhvc|Cd@?GhrEao|yd+&ECpn%1L$q`24#l~TAa(_W6B~(5X(|&~5@BtE&&(T=OnvMTR=E-%T*XDCF@sWREEv$O8+9q$< zh1kJw@oM$Rc>lK$_%1}^dr;4q*?BYL14ER(*H>$vl1dnoPb|3M(AM{licHgJ_r|Jo z-GP-;UIQ$k;a&cTvlg57uT5B43z!Slnv+>MsJn>sSUp~itu)@1Q8Gd?*);UK0v$ks zCnr0oo!!RF>49LtV5gRY|I-H`t5k})BsDX`?5Y+Naq1;Kk2a5H>AC>Y7F_86_uBp3Ocav6m)G&EG zLoRq;Zn8UUCgvhMKSf_H8ImA)^jRgkIi3p;cZuY`Rc<-{B|m|Z62MT+Z9$KDOGadh zh2$Hc;ZE#QSa8LK2D{sH?*Loy&ju`gLw2SDv|`{&OGDo!&8j%6==P1C=>Foc@Bu3` zDR!eeM}M_bX^Nq#sF6M*;tyJAub1fj3bNAfFBAWQhqrs@@nSF%MZTIp>1mCP~_t-`-1kz&!X zwdp(uyVezM!&tp{#j4iKqo8&XR>98xu$cm#J1V|*8m8M6xEmf5n9Uk6JE#Zjhm$1WP zrUx)>>X3A+b|Xl$cM_A{jWe;&!UD0VZ#I@xXmJ#`=_7uU$Sv6w_O&jVLads~uP z3zxeYIg(_q7fqrVYHjvLE(u`ZQa}YJBf(_upKA@Y|o_8mg=*9pF}& z#v>&PieZJJ%vntugVbzqLCXH`Q8l>Hw)|o{o>gSCj}=}3`J(lQB)%|10;TY!g)L#~ z1(3Cbd|AX82cA*TnYBtq;g$Tm+Pr?D3I%z?S-48mYhFARAshE@L1-z=9q4fP`wnuFc3Q6tlZ= zXgEGFWR?%>?!b-H@Pk9a>239r7+9uX#{!n!u2hOBFUR+;$Wy~(IFyqi27tu<{JyxTtMfnYl(gE~`1!(I}{VOmNc z{+fo(w6411jYa#nr6y$Ox+!bq#O#`EGDuL5O-@_%XV{-V2QgN9zKx2fLOer=ahIF^ z{x)K-k5rAkg2vO^5;A(^-2^>>8BQH}iN=jk7*4pHq8Q*IgDN*ssF79xuE4D+(V$ zby{o^F=6frNSB+N1C=-PtsqsnEvt#*o?MK8iQ{{yn8#C$5@Cu2T>z zk7{Bh6B-mEbUxy>KNnQfKJW}s`6|fE&2*fn0$)1&9?(yr{3F(<3-2nj1fh2^m|gX5 ztC{#^9is5{$-wXMJ2%QJmBufrwgn1j(x{c|=xFC^<_!pmHxygBwFR$$-uZP@o9D}d z#4odC<$^SIYqNfaI#6ojo4%bdy{dMCSn(3SG;?*Qjbuzc$>*?UurdlzsLi_hF)r+R zhFHGIVF%A^h(}Rxj?N%1z?UcJ^J{d=_pd|p#$~;z7mD z$Q^f0D}3YvdHZ2YXb^+y2o_U^E>nbtEzEWj$-t2m_mD+We)0Bkkrh!8L}z&H zf`w&v_+Ri8+8{1t0HWFnTH6yrAne1ethzegVkegquW_BT&tCi2x3@o9AEc3}hc_y9xIF9SCCfZ$ZqWG=g{!4>1h z4Ali@gS4IMl8RY`YXv@t%gCg>K`q3Uk;06%HkDE$DJ(qZ)sm^X%M7*kV-%xGT4PL! zq9$@PG}zsJ!q8}No<6F?e)8&L_1cH#t~7OJ5gLgs8$MtnKFJCc>t|tm!UE=ih}RC~ z1$=2QwCK8`LZ_Y9lTi}U3q#ym8{Jg4gYQyfx5E9JUQFcXvBt-fliN5f^_QGDIm^x+ z`SUcSa{k^9xNMoyj|hA7i%!SYB7jK2;9xgne{aivlQB75&D?g_tEtwUy>%ZnB_7F6 zMwJ@;%D-1t4jiPyY1SLgVdgT$tEJG+^PZJNKRuOzRPp_pks%8#Sc@+?=DO0^O@*!_ zTTK^a;s)g;Ll&ShyJdHBF{?Z0Jx|1lMNoRyd@^o)13)hN@&{UruBghu(UBBcz02iR z62smZV|uo#%5>IgJ^gTKM$Q%6Egqb|*wG__xlvu0y*(`y*mHUla`hAwArl*WOJq;~ zIP7md2BH(?4=v6|hsatpbAAJ|ybT7*)xXW$+Q^kpPi3lj2f)_JT?y$i8*mr4%gtc& z4=hZKdelKt2BMvH8R2oH5y{F8znfbNYNl~ z`|gkwcOl-3iI!C#kvYV*^&GD0WYMEDRhmlm4gKz4lV=zh7KHW-!MBpFnJ^tQ<+uTO zDxEMpl`Gz#Kh_>=ydbBV%UA7>CVY959Z>v*SNOEJbBC#nrkldTb80UxdidKtr#U)0 zmsa>4_Uk&D@9!5(9DSV@_|Y@ZZSXO6Db4 z?_3SUWnxhIYaN~J;Sm;8jh~RYj|~bTc`>dwPXJZkiz)! z_(e)>?9ym3^blIpbw7OWf1iBSLb3ueSawdo*~Mar;MlA^Prh*4sQTty#vcFMVn2(! z?a;>!gAYNokC4kJadrl~MWC>f)+z6zG%8ubtNfr(}Fbe&Vvq-{peb z2qpssYuj9c#hlP8vO(&VT0tDyGrvz6{MmD|AC1+#R-JqolfRrtctf!^c;7tQMBct8 zz%r3k9tgKfkn?;`_X?HP{-qtY;jca+keYYplS)b)3Aq4~DII4bSfIc7-c9-q=!eP+ zQ1j|(!E-is9}nK|{k?naP7cudvNrdcLV=6l6p+k`zH^Qv$1Nome*J;oMN{59PbC~x z)-NTj@I4yX@ydBeNeE5q=*N~44k>BUV~_@}=|?<3HUc2^H9eqWZqCoDh5d!>Ps!ox z{!<|&QQxFX{bQ8&xt4`$52HelmQr2}Li8_w@is&hiM2e_svgT?#^(rg<(=Dk$%fRi zu~x5cEZ!PD3cSmffMo$ioO`-|){Tu~#=5E&Zt7sBI6Y!IxESaXr6}8La8HYTQNgX52GUBhN+0GMF zz)-rYM39&nD+TL`Fq60qynd+;3&+xwBaTF*au48r`-p*Nq_f}*`urlF1!Xha<_*qP zg~F9`&QxmCr(Pej{5w6g#!i#XMRnlU-)=WuWIK+X@gIB*Ds!4IF(@wz=% z>UqHz-EG>nM@jkI8IiPWZx<6?*jW_o-VHsoW2UD>d8{JKJNA!fY#ZwM8m)Ii!1l(iY2b6?n9%F=4siCP2bhUKU$p~j13kN&#ed_*g2?ffSK>4Mq zV;{m00To9}t!7QM!3%G!lhYp3*yyGd=${V7$#X{(CAJ>BZ7CqQYx|szy6Y%D!IWc} ziheI0r@%0TOtrky$yGQtoK2m{oyjvL>5;mKa8FiKTyvQp*CGQer2&x-!68tFuB%@3 zr*wS5XYi{*2I~y2w@hj~oQ4rH>%QGbs=pk4i1vQ!*|Lz=lv~(ERKjmljE59U*ri1t zdF>hQgpezs$d9{g4G#gy4e|QHo|F75@wo-rbfKEj;(p`u|Y&m0@vh+m^UH z1h?Ss?g2uOAb})6aCdi?;2PX12o{1%a46iNaCdhvT)H^to_pWx?(g;2>rZ{Ksm+qT z=9+uVF~>w`j*dx2Ve`9qORG*&dWF^#IZ&kS5Gy9SpIjQrPR!Ac~xB%sVf=nMO(}xj9<$C<`>lWS?P{jp8Jv;U|85N9tzyBVOg2Yqz*hJ6?J?!^)(JOjOG)4v$7wE zhCnZXE`WaG-_Egk^DMgQfpJHK)2=`idb&~MI`V6Nr+^0qNfafL z4tS+U|JB$LKv814Lr+ThERe5uG5-6jT$Yx%5QgY{pTP1P2vIk!7_B6NVd;smrln~U3^`q6e$O0^z*HgLmmRWSZlFI>dx`$A zgO9=&1nctIMqGaKqKDZw3=ub=m6sgs zS7``aDX^?&IKM~a=qyR)fGU+!oNzLS)QK|5>5$aHS()+Knqn{Q_~5;GlV^|h2yHjg zbws50LkBMlIHoEy`J+E0b3kPSrObmXsnuOtzsDntiLy>=qL1=Vdn`^Wf+7yOmj?{lVWW-L`PgF6P=3>X1HusK| zxTwK3fPdmniI>Ec1Zyd>)hLYWkSi<(VaTh!lst#Azf+{K5f>SBEWk|2C z`P9^I$bqdok}o?aQQg*KZr?<+N#w##}Xv<3t=P*E9^J@V~ zEY2$BO5R;D)nU`9xvF{MhEGolzFK;`4JnVQpjleS<5_o81?aa~MIM*I%i5@)$8tL4 z*|DbPPRIugbBkcZC_EFwc#Bi_e{N6Wr~lM7`z$jIV5NE(u`XqAn73;9X-LbBiKQdOLA~$>?csSP38P&EzdQ?)vl*>hPlqV% z9&V}G?(*~ZNwUUMKKN43KKierlW10VcmXz9#r0Wc{X}luIJ$m%3_lG~QFW4PVET3@ z`PsTsn29)PM4db4x9Q%X3t|k{ z7HwE5CxcaFiK7!&;`&M-u{mY@IUK72IhE@sgW3gY33oPasl*_O=F0H3H9Qo@ws($u zz;pR8jc!l94sB4EI|Nv^Fh5hOyti%3$%qWTj|;hnpdy0YS2SZEg)#Cr9h(xQ$gK48OC( zOz`om{NMrGdnWs{u9T`~T^G>eQaZb8Gj%f?8)fbIQXLk?LBCAlg#g{F{xZ-C+-wjt z^7VxztD7cBU+{~6lU=D%O?0w+kz0T^{90+M zBc@YO;ZSF3KmIE?wnl`%(@2grWp!RzakZ&G5*F;Bpw*a=8FM4(S!K}uR8+P!@Yo-4 zpa1$v1CRutIK^moq`U0%cvq)fe2oQjGHcYJjh+IP4tC;3=Y7b!yi=6R*UR%1#1zPN z)~Ee)2X@mvbkr-3@h7(1=q#AsxBv;hr*e)XR+(kQ-kH89hayL!XP4QRWkolQu8u=D zzKR8Xh8_;hFGP9ePrqX*THv*S8Ny1W4PB>ObWK7H$@_&TEjpjiR$!mFv%J zU#tMYko4x;RlkLI#j}#LzPs10EOwiRt2G$9Cu;Q_5A{xuAEF;?yPq5_XkHE>l07_w z_wE%p^Ru<*m)WH^?wHNuQj)E8`&%>g1ju^zfoF$pAh?qoi^M|+&@odQxgqm%$v12! zv17`&UH{-s7j-gE`rPQ$n*9mXn+jnZ5?;*+TbQ>w1T)w}E{!cH@bb0penxI(%UzShRWha-3rm#dVILnVMb5}ii0 z`XjUkeBSj5@_tNN%gz?oE?(>#=w)8ocX-;srl`-N-(h>pXDj$VL@m*?wzQz{jiHrK zMoRgIv+juznm*RICA%VaS%UJT8x^XgnUdcK6E*$&*{fN3$*tAz_71EPon7_m6L0rI z?~Ynr@(aW|V8MQ%KIl}Qje~7RKI3hp6NZ9X=dFu`-YooIH_~Oyyoz_M3zn$JsP3LQ zoMDPIe08DaMrIA*8Z8Y72HpD8iHir+Eu1gWFa*E9T&GF z1GWF&5gME1gnIkwX-e1ec&5^Y$b*E6(_I zF-U5CR_K+a^&6KKENv*40i`DyybvCvKM0Xb5t>gy#Xn({Z9>UHJwxPk?j=SU7 zWvR*jO;G`9SX&Faj0>mmrn$AJ`6NID`2L~%smI-p zs}SVRDU#78?l#QU)aaeRp ztXaHidhwC=!EKnRJpyaAxt*CqL4BY{7x#?409H6FGg{;o~`0D2$`ojJ@ldU@Vi~ zz2{mNKIdlo09SpW%7^8bIpt}RO`wSG#wEk;^d`&s)6LTn6q&wb)bYI+;r0_42mix8 zCOIW1a+A2=@EbpB^j^#O)6<5(c7hHQD{E5WMQbJygDCh8dcjI;K<>}doL{QeRzk{t z)$2YP6x?3assPiN^(~F5johjBYo_j1vBW)^?DHhXx*X~9?kacvOxkQj2$z*KEt1h0ZH^>jTnB4yH0CgvZo<_aTw5p)9uxYentNpEFQa_whWC6^@ z#DpUBO@!ElglhDWLDbaT~DnSPBqY(A_KJ#3IVDe<>=-3$dGPn^@1Jl0Ehm}N?!r&bk$Z1Tk zdFlPtOl)vtPWtD^JXw)d-9Zb`!>m`_B>FSL=uRBA0m6hv^A%z#nW0+;-D<98O`0(4 zkFxZ-@30E2p;lEk{TUF`dT!Y$HA&z00eo_dUL|du?yoW7`zT-`bu@^FkLC=GEIrH# z6e_ z_=}Tc)=%~H6t4U)TgYGvF9=z40qA4SX^mNvc$vE(uc`N}+OpnH??)#jKHJa_O< zPU~kSC!>&kp)MMh`_@tTK^^UzHTbwx?TdWZ4q`uWdDf`~V(Pj`ZH8#ai_FbWx~vCX zfM+R9MPQm;Ve*@OP7z}C#FW|UVt4wC2>LNE7c`lcnAfFonHbwK(>Zh@X1Obux#mP* zwp7wK9>~j(BQXOFVV}MO3>$KFS~eb?ATRiyQz^zat>UUBx>~3vI-ia2CU~51GK;&T zY7h^|EZmN2oh`Wns_({IZX<+o0?Wj0#-Nyi!o(f?ZArsS2ouj}994s@7&#_kwbD>M zAQ_JO#*9_;lu@&=`^1xjtp(;27vD*O5xl#tZJDvp2Sg$YCeL}oX{WxtV-NFhcr;Ep zf4-g!IRj zo6Mxds;>h(|5q_3-(lU}M1uzLELDhG=##40Si`7%qmk%zouDyOI$UH*DwrDDifC}h z;y1ONH=}wIchK#l?M561xw+=E`Ew$iHeFXUaNlr~I}Q(MVsgj*Hu0$x)|+b@Hcu8E zuArIt?w)N)@F@Y}H=4EU2Te(2qd#ohct0tBxQ+Dgzt_0ym@MCZ^&|Opktz80IR1!` z5DPbg2dut>#;R$&&!)ZN@H3D-|dPZW>J-=5^h1XuOFtb^LU~)Mgu0HyJfIY#G+4R z(4^?J4-0)}vDr?!uxt5(yA|PS@cOW-4BiCG0UY<6zo>~D8p;qIg8}}9R@x7gS$E2` z+`D$_>$gLBJj*Ckqx28YN*!Rxnx~y#$SDPm(ZuS;LdCUtRP`}%C%99E-Rx~6Vu{hm zUCba@T3V(7PURsT(=GY((3n}5z?&hwe!q@_J$IV*|6WoW-_sh^rn8gDHApX5&U@CtB2Y6SI}4>6?^LE>J5^ zx@4zf_(PEyQjDf_QD}Qs=FTI>oP4m+eSgTZqX((&_>aum-2o$?MBHk?^Y+o*_9N?9 zsWfHb`GqnPsi*zb1BX=hbtfTr_x@Y6erx2pv+_Zi}g?Qn-ME- za)u?;wsDFM4&Pd1D?EwZRlSXa`aIh1MRPG6ttvj4UWU$OuL|Uas)$-_wWIlcNFnj#7lHm@adCxE z^pB`q-n%yGpOY8MD?E*U&094ZOdH03NT3=sCtQRMWfh+}6z6R9icxE;$M(|TBJyhv zOpS`GC(3YGS|xJ!fk2_AT_#n4^)RbUq#ddY3Dw^xHqQj^u}SM_XIX zbCrjTb|R3sq05PfyB7c90x&X%R$jloaEtu{yIr(6pqVT-coDwEK78XzMl>(ibu4$J zD74|?T)-60zH*d+!3psY?(CoJ{n&>g2d(78NvzgXrnBT>Nr){+$pR?4AF)3iZFv9o zX{6hR$Z+PoFfbDnRKWN_qv&LKacqH-TyW4Yw+7kEOe-{qJac=LN*m zDgD)Ti02h}*nMX~zk)t7`0~Y^It$b0GStSjE&vKX0PmMguxp?&_)&u(T&>=tyNN{Q+GcCopNPxni`!1R-~@wBaxCk*A! zCkA>_L|F-mXkz~xCX{h79yP=r9*$_Mz4i!rNJFG#$!Jke!AVL`(sqPL=VlZA@jdx6 zdU!yYaz_C(9@iyZ3uy7vt$#(vrdH>WPLMG(s3_9B*&{sWgv0RJ96pW2@DWisnVrV2 zIef+^sW#iv<#bV6TNW_6JD=+-MW5$2~*G7d5`OUA4SgOp6XU zN@vwn@w3_a20^5^dCad5+b4`BJyFT`OAtsymj0nRvhlvm$yt%c1tf5K`msf9U+X21 zUcFGiR(rjRK<{V1iDL`|Hs&&gpaeV&>U>wbJ!~r@97{y7dlw|bFB_ykYkq)NqstQXgH}6=F0fW z_v=WnM$*QF?N}LyyDU}8h|G83j1dcAgo%B$0cLvf@0X|I2;t%9Ew}QkFzQS>0UmHI zyGT%emq-mQ53O{ndSSag1c4!==cn~zU%8MBH<<@SR_a??qAUFD=qhBL)fK{tT}B_VHXw>{X~8>hXCCrR z22%T4DBfVNPnw^UR;;;dG7%k~m9PFCa}Yn}hh!Baitk*AD{py_Z{CFz#67Vyhl8J5 z9GxdLE$FD|=U%`Rmck(odU=rgaEIbEm&eV|CbXG8ZR~=J?VMTQH!B_fRc+#ZUVik) z_fhI7B+pyy8d+PO(@xtizE_tCxGN^QMOZjNwLSCZuGZ?=iP{fHC@d`OgeY92-1cAKdM=S3~P zn#+pRY z+I|uklR1R;dj|!DSVoXxZ%FAq@KF(SN^$a%!V#RMrIGGM#3|%?$Ta)B!%~Lssy@GB z%L2$QIMUkPyO@3dJoUaD`1PGv7WxNBESk(qN7PMs;lq4TAk?OQaqfj*cEO+WQ*E-V zmA0NT;5_Jf(7>}(!}8bT;pUWHy*`CvXxgU~icK(Pm~Hy=YTneWFelA++>P5MG6mHS z;h*O#t3+--C-%3?xU~(Sj?DNW^90nt@!_!k;X-Wan$(}8R8%+`PV*PLFKG{k?VrvO zUe0Q|CUxFIm=v_pNLY<-zoLyz)Aj+y5REjR53d|h{fOcGvs`+H2Ka^7wz< z5-tqpRhjHY0Msa>jf;0`u$o3BV37W=t5K1EU4^-}T_70}eCQA+1!{{IJ7xUSpQ*p% zfm`J27n62sT+2y+3-Dma$r)vyp#1BPUO)P`KD|c!{%Komg%bZoWT;=~<9~v0kkDXr zDjh0*+&sN2BVhhnFxiv_%Q~=5*{`#lze3Ti?4O%Ro6^9;828E#d1n`?8U>(;2{cAd zoRN7KnA46+Y=d{_COMXQTbf7a4k>B_*}XUAE~EbtZUNQ&(K<>R&z{cffuDRB68yS04H9gg`APc~?J}#HiOA0ZxR%|Cx(n{d8*m z>L7w@=Kx_O%1u=x3&*E_#jHxmfRRdzYZrxMkd&TyyJ}w16ahCZsCMIsw~Xu9bt3~A z5td%as300f0l3LTig{qwlv(Ml-|wK{Py;y2n3iE|_`ejB{+b_|d~E0hs=yU(Sk9Xn7_eAcaEC1{cE?$7vKf$av(gH?y8suRAbCAh;o)?B!CmDYu| zy`XPh+AoZF1h~llWz9bKO#jNnh8$Iq3|Jh)@AIJPA=z{^DOx>In3m;nd7vPQF6?ANqVo z-S6y_Mc@26wXeM9A|t1LxY$zKM~%-*ne7sZwKRp6h_0B3zAq9R z0u*>sEc1if1oKl(EC2@Yv?GMe;=Zq}m|7mJY}VH+v>Z%=en`K&#~|NR4mR#HEz7U9 z#0=Fss8Y@mGirR!rkeGQHmk$Kn(#>H*P9#pV}VBe&l-h6wnV^e3eK-+EO}Af^Ifv+EuFrAGP>IDucqzFo{n95hm5m@Kza zU*89Lvhd&-E9FvN4sA&TM?mGI#8bEAX}9zuxJh#MFTTSN(W|XX_^;2P;MFmK;=VJ-tjxxLenFh)!~o?X8wo&0oO z0vn*st}eFR!3Smd@0qaZHD*|Spi})joK6t@zAr{wR@xY0Y&R)v7#{@=?z5hJj;$@3 zxFnb`Atf{<1Ph;7-rnAio0~5KJ#w0O&2z;BO_L@F>N6x2+j-v*XM)`5y)?sIiGbtw zi+xjGFu4@XzMSx#_lyXY5&3#KUfXc>Z-DUR@ZFetgQNMkJ zs+rzCLxdBBk#6O97RtVjQvLLp6a#kLkY-Aff}V(R3z(<^V$tV+B*ix7B~Bo}r}Bo! z=G*m621Uc4sHl?r$b& zYYoI4J^neBh0wopZ8ciUZl>leg1p||KtEo#wy7X~rDEPjmyvqTcrs~O9lA*?kgDDQ1sHho+3Rhjy!wOTMj(!t)hfs#Wwm827I%w3ycW-SPd7y^|Ry2#h zWdcSqsDr~>{bdeI9rNX2VYcxI8?OC_bRxiBM?oD|RKj`bA`aw63Qij!RifAL7VuJj z_s_9rEN>w#A(7~C6wUQgvSVYqxItsiuzoBhl^BP7u&oNVnCUL3<8!7Jjxf60TF_;4 zo-uL>oY(FToEpIsTGnmsR0aY|ab|S&`;?8+ix^vf3 zNwL9{R|j1njF#yf`z!ynQ&S$iALA2*zNAk>>x+9H{b24W6HoXj#-)*D;F4b?cbib% z6JG_dI+LA+9yc5Soj@6tj`fLm`%4SUXgPLtt*7tkx5ClyS63KH1ELzd8Rgdyn#xMs{%{c`V0W2m}3^OY z2~(tm0tVw%lRCjf0~0e`%U`h4Jgr{1L84qKAzgkT<<(~HDcLJoTUH9$&pQ`mXJ10v+}-80NAftQqPe0IjhV3Gb-cW$uKDFG@sI0!MlT12gjzv z|M(WD=Ksinz1qG1(=q(Z9sS#ZqoQ)-9QmiZz)f8a63z}A4fhP1gz}I}xlT#Pg766V zRqGfT3({|CQ;x3RR4C8RY;SATZn|KnveQq9Upu_?J`gAMX6>}f;uA_P!s(ZcW1T78 zr9Ll;>^w#2*Fqg>+jvM=X*3pTpv%veEGiv{^lqPs+rC%emC+FYYI!F0A}(wW3E-U^ zXHkUSZqWxVL6BAVmXC{l zr$jYm zi5qqMJzu%#zovVXo%Ng|jf3W##E+E@c-MKM@Wf~?$ybQIFe7Vb2ZKGSvPop7gD^g> z?{SJZ5=QtqfhuyrsY7HYf5$xh(jJX8Bo_=YNxk8_ioL~9A<+u6C zaRhsdB@=U&P1)jg;-q2T2SCLQ82;^tuUXRD{H#H2Y0mVr+%?Qf`ZKSfNq&ca8a?K2 zj=^ZExnQP&l_L4^2N5-fr&mUCu~+Qs3R|w9lbdC3@*&8H=N5S8?kUu9Z5fl&+TQr1 z$b-ucnlr@KcF8?JkDtej^lez`96f|=PQhr(Eps$yjlT5jnHE@9LHyV^@jr68V%|WZ zijqmRC=1qL!|IE>1Si-2=@!9K02kv^#^rzcq!CMzBWQ+;eHRz>?#15T$bc(6_6?36 zsg!*KGOQA*PL?ydnDTbHusa|`_(??**$hxYdjJXFXaXc;e_VP*@Xjr#?l#Km?wLl1Iy=nL3JXJMdm`%F|@kIVH5vspK zm>0Z4n7?2qWSG&haDFFbn-rpTdClWRW`Wo&It56Lh=Bn;ca~pkT@$;v_Nj`cVA`d@ z1(|mTOkxe5-eK8tP#)F{kMUNz0lqSUfjIpiR|mLr-#uBhr0fEPBDaPKvGhdQmdtN{K&GBxSkmT_AkD6Jy7+l2NrZ_)g*5`CBAE;*VO zyl5qRVY$Vtj}}W~Ib^v*4_ND5ow?LVpHoZ{>Tls-Skg9Q0wmrk!#uIW>V2)*rS z9y2o1>fgeA-z9=W#EkRo*Ylt*Y#`idYY0C}luCSR@PL_Jl^yo;N6Z+v-7YIk_I`0W?KS-yy?Rl<^C? zUBF~z3p?zdQ{1ZM#6?K;?UUrEwU{$|WbV#I{|a!_eF&#D>-nZCh3Go}?U^mbvh|QS zu0FiSsdK4()E^4?3X*{RJza}C>gL`t6y#&Ocg)x#jzqiz#<2d)Bt0%?6vY4&A{%MOEJBv9VL z9>u~y#T1$f*k3p0Ua7O4S5on5Vm=^CWh0Mbr{;1dF8Lk~bLvHuLW|yaP@O%c<}EXY z(+9?a0^HTr)b|KrL}8)WnTZ;qqy`s#cgpCT2rlBmx4j_Kn3=EXvAX#utul~m4gTS4 zA0h|5=pujg2zCcgk8LeliSWhE&5<|7WUbGDYz>O}vF?-pZ27TeSN0IWIn5{OWka~M zzhNtE6$P- zRM0^PF;vfbMdnQVy#d&2pQwUCI%z-yJTaUq{YnHLv!&SARGBrE&~fXso75{;(fN`^s_xhyTpzz3{Bm|)KylAfGcoljWVVn} z$taYa&yh1^^yd{A~iyUTB{mRM(mt0mpM%r5pDn z;4!POW>N>glVg9l^7`h1Fs|5U3^n_OasV+r2YGldEJYANyI{ZAdSe#PP{X{?YLzuM z`{Z3}dQPoQ5^9x4EJlgg*V}&)fOa(fO6l=s%l@Tu z2}id=X6Dn|o`l~oGkNZL6OZw&!Z|MfKwK0HDp~0F^96(A36I3}_uXPYnv|$VB+1JF zM<{BC!wC+9BJeI^BRHn3wF>qDOxL6Z4Umu+-a#9#Rk@t)Ge1)1H14Z=!I_QUWPCQH z8b9nRZk^h0T{o}rOC-t@7TU7jb5-^{ZuiZNX+nMIb6tNu=@FXbTzoJi^M-@A*$OE4 zxYR=q{Bf%y0(oZH2aa9%iTr>O8l7GKJD0Gcr^0OZJ7e&(pt$$L;g`p0tDVsayU1F= zu%OSsO5iPHorX(xeQ8q$CpEGF94ZKezY+Z|r~s5uVh>TyPav=SPL)0g7#cS(9pEo# z(r%1FEhHGbk&mVd0)oypUNX$E;B z=(es^V`Y4DZm5b#7M}2isi`~B@~d3;F*Ss{PXZO)Hm@4VcmP)PCPUsEHoQx>NoJd_ z3_C1)FOiJY0b4}`36&fXYh!P5=e?}{qRcE0w0gb7F1jCZTb|TP)LAZIV6gllE$^v& zYuA4zQJ0W%{~d}ABNGD(xA3gZFqMxWr%Mr?&*6YVc)#S`Ema8&=1Dp(jJdAp{JBXDh)^|7b|w7vHL+*JL7`;|&I zwK@I|KvPjE@sQx8yc#w$RbMHy>GD)H<@NB1)M)j^UK57Vul2Y^+`UDVIdAsiG05fk z?z<0py@_MYmuNSx*4l4!3XY%ArxI6})|M5(&XMqs>R<7O&>@2HXzi#vKol^V`x*UQ z0bQQSt4XH?OAF(x{d(GGu;dphQ@+DYw`&kgp4#T+Gm2s))Y067P;83c&fxV>mo4u3 z6wJ@gc1^v35kE2I#o+AcaElKKAn`G}X0h^GiT3y;mb)Y%PFFr6ahzA8gf-mv7dBo) zLPvWkvM-CV6Ff20F-rW$%`x^KDd9PP7-?*oD02lu!q7_?KHeuPtd2z=4QG>FtV*gXw^pfMMt|3PD> zg1WqtcwAtO;|bhu`cTkiV8;|eVWKUa$RiF*h?jrR*Vx#u>{{4g|Ftu{<;okv&X z#f8^?q+6W;KtUHmAv}>U{SW+C`%oBs34Anr-c%t%*ZD5>cwJ6BO4ck}g3Hkj5i`*< zQCsN;5=4Jpj?TCWeIq2aM;A4fS!z%hM$7ninD^6J1Kn|1eic!e0<{Mz7$TA$H-CI$ zx1Ax=`-5SFD?+1zGEz3D`JSm>W=X!gpz7X;Nwq!!kQ#EjWP(uy%Mp(Q48QI5;Sr>k zi~82rv=qGsuYA?ts%=|tXyi=i;RNi$P4b$XRgu}Hq5Tl6{lJ?&uPPzCYq8>Oz&{(3 z{>uizK`7Hd;H;n#4(Nrh6`S^hS1@0c7m#|}Tq-uit@F^}5OC=y=1vaPSv}z8!uUyW zznfNljAI8VyJ+4#qv)tAfUHa~?s|zswrtS-IF7=_-+hbBCSWeO+MoFdXV`W{Dfp?V z5u8Eix!CLG>C37oyW)yl_P}HzI(@KGAD&Z+g$7l(;vbD5yLwL`(#Qp$w~a#4c8fzR zmH+%Y8v_%H%jYlpHx3*h=&@6hrAm(xT%v7iYa7$|6~FL3>-VV|E_Fby+@?50q1hK* zR%N<@FtHRy1Fa>^w_I7<;menlOwUPA1>xceY-lU|aMs&A5O(5mHTUJ;CcbXX@};Ld zxd%H&xka36?#;!~RpJQQawegzlayu!~75A{`Si+VR&^mT=(q{2Q5xQc^& zg0YttU1sxfnS$oi{~g9Et@;bb>d^NuIN3dleS!pwyMLrS^?Cb@$!@k6pr`*g1WOjm zRS2PQjFJ$~l1O)PU+4%`m1CRTuwy7vWaesY@}OH}{A5FTrgDpM)%V*v&C~QIO{3nQ z(-noD?12j9IoM)2*yL)->jzZ_&WQ5tUhd>>YH=!~;~;8$^MbZP8GP)fQ-Q108C)uwQl%I8wINj=6Y^oJ^$);&yq*?&Sg%v8oF|=-|I`pQDOY={^6BA}3Gv&82e1-md*{DD)wkpB~z_ z?jP)1`Xs;4^HCOy6nEGh7W&=!x&*;Bzmf`hb>NcCKu{2Ihe1(MVTdq$${0i;6P|?b z&*1lux;}>CT6h?>e)!ANHy^4RLj|@}dG1xoq zRrO5EcyWi_oP|*5nk_t^rJ8^(VS-k#ua%DADa=GQg2rd!eDTD0(uN!|)N7SScIH3V zN4S?f*j2cXme(i`rzYhXgN}Wa+iB^R94U%`IkUPuD0aWeP&M{>P% zV7vhF?bU?%nZvB}tgLjm`2P*8?6;ns(BOuEzpsOZSeE}8m4tE1+`7G^A&i#bf=Bl7 zUiyOV-&$_g7hz-U!D_XB6nuJV;17eY=Hes6{67GfpJ(VYTJ%_H2dy*-z<%|ymb{sR zEci`AS!4RJSc*%qRa4oPX~~|$rMo(iF})7!0>bTN9PS>~k$-1P?695-mw^T~1@Ou; zQZH(>mQSz;0&L@A8 zP?;QR(S8%={|+k3*{3kQj6k?O*wtF%Ol7;XGtAu*@jG4!tF~g7 zj`ISH8>!cBg~#?)#fL9^EFuZ{Ygp<&AueH}^q62E(<@iCC#pHZS8*Cl#5#10K}jl9 zItRs~yI4j`)-1 zT4*%=ZIK9gX;T9HwsmM2R2^sAV`_z&rPfMV?%mgQ?3lBfBQ#US6U|ZOgb6H)J7GZJyr2V}* z;H2IdU*jIF zHf9*{f@@vi3`My(>1sE5p_e0PSC7}z>2JT>gcsRIWX42`)En`dDbGwomn#puBfCRq z03;MZW*cozV*C5VzpElPmF)`J8enn9CUC=mZT_WEHSYWp{3|XLsyN>m%a!Hd-f5wx z@k|Ez44}mW?t_}H2{Bc|lwg6YkS-x{J_pl3@}lo3ebLs1yVLxES0M`_WMCY9jmF31 z;bX=COwIXdeA0$##6~*;pSUln&@JdudXlZN&dEWhA;rFaPF_lz^R-122B(?Hqhx?*jBOSgBM!odF zA)6cnoL_c@`^zJwI@5Ygsg zV&)}cJrUz##Zy<8>J zqn=uSwO*iq2Mu{ZH&ftXe$vIY9N{^C>0436fy0uR1bBE)0-8ltdKbuUs`*S|iRJL= zw!LHDq%k_v_Hb3sb20Qk@!^ubbk%&gxj{ofyS(25F|?aNh3{7Bk2{gFkZ-}q-Rm`tZ6WDkkoT&ZDQGfy=XKW8C58jHwWBzUdEU?5?+?rA(8?Z-B(+ zew4U??ocOc+9v_%yhSS(wae6dDAL>dtXgokH>lrq(9Sd=(dhV~XNS^u|8DCKu&=G? zo6rN%{GnjxCH&!?LTX&ff=gRdfQu!$+Uez|dv>qyfA}C~?iBRaeG?1JTrI0OOyhxE zTYh?1>+l7ijcj;glg9-W2JOyM=3f)o3 zA>(qVTs9u)RkESj`NMkM)Hq)_m$C}ajW;`9{NgC~+eJ#7EYfGq?2GD~{Pp;Ralm)4 zB>2gak5BbwfLy6fCvw*vilfr!S^J_*jOZa#J3cF^OF5}#OWQG}_npz3zU(dvG zY8blJuM$fWcg8K3>YCIe3iEm5N*uOmFK8^EQ`|^}*%Jcp`Y{tP)#&X8;63g||i)c3iuk>`uw zEzB8zx7^&{JH|^BchFsTZP7z)_f4r!hs5M1=Q=+_atQOrEfV=vTGiwCh^1lfC>ZmxBq+i@MxN9J|y9~i0 zI0O&w?(PH&1b26Lcb5Rc-8Hy74DyD1_wMfZ&$8{2heQPiY|ECM`=<-Rm9rZcloKzCW*;pPqay>-$Og5)Ik>8Qj=KB|v} zXmNu1=gA9?3Xvt9SywIEe!10l@u4&-J6T%3Hu6!V@``m)cXd?}=xC6Qf7<#6#^!(t z0GfXK4KGOi6aFdF`_l*QAIFS-#)#~k390QDIfHFluoj?658(*p4{)K_-w+Ea6?9VN z3A6K^0CTs*GJT&NUZLreQ~W8sd1qqplpT(OQiLPe+>M4b{KM!o@0r74&5YT$#T^wW z#=A_YfeR-+E*iusqeU_7G${A`O#L0@Kc4^$jS2ozl(y_qq(kXCQ(g-R&{-4DR=tPnhy5%l)L>1!f?FW+2=-NpdZ(e_#BIXN1x;PDGWoN~>?iV$!*s z262~LJ_$Tkf~c2^tg>gag1qTpmoseQWfEDP8M>C2&#tdJZoK z2F*X4sbxQa(V`+g|HC3GY}~avz@CBBWj2sGqrt^ z8!x;L`HU)C*(H>tvJmnPt=PXJ{mc$8pq0Nh zf3So6*^zno_~Hk0G~kPgPN(2m5JucwXE6FHt>197M=ZD>yYYEn-zdc^^YascYkAh81p3TXphRY z=7N3Y9GvFvy+gB#zsKhumaOr0J7;%M&&}HFG+f|7=!Hu_iH627#=-86DCJZTyA?1< zj0cCbP3S@@f@zHMk^@awMy;R)f|8^fR+Ah+<2L3?*o91fJ-8e zujEOC=4*lSFPi!|uK~))DpVX#fwfE5A`D+CY|d`2IX*&y5)evE@o&H#7QGf+*Pl;( zej>?~wrF&UcKS>;oFwGwg3Tx(G}GGG0YS^s{J!_W_@sz-b=1!hwHE=<$}|wk2j)aF z!2LMx?H9D2;kyf?E`I}?%)zR&Su+8>o!vC4`h@s?UVJd4PBN3 z+1p6_8zb1IB`KLMGnNX1CIyZ2o_Z=4^Kt0(IDNmafSn7Vk@5#^3kYYAuuL!<`_{}fZSzawi)0kGMkHeO>kqc$}R-;BYd9*VM%kB2Tu!p8qb{v(W@YIc$)@uczYTW{sLjnW!<2H7UZar=S32F z6~Lkmyw$D5vn4%(WLG~;S#t3APWmUjy$6vS6|P9BF}FxqQWlhZ028HY4AF013mtqL zmc)0E25jV50Hz~)gHGF*WYpWkQo${RknUe2>fg33ygLXdprI-0Wri}+1NJKNJ10cn z4!+5Q&Y)q^mBbr04vPy-?`JSEAyno+d%T2)HK-6b+2+}psg?@@KU_j)lWj~iS{lD{SD&NkVRkMFyK;Wy30Oj zMRq;j_F{~t1D3F({_`Unf*qdFwmZH04IylJ-sEBQ0j~KWrT52-o2r`)a)s86KHnqS zu$B5pO8*o*+?fgez4M8~`RR}OH0#Y^QW4tS>*9Gmy~jBFET+>~LY##N|%?k%W%nvP4( z?kA!_j^`a<7TBUZtcWj<8Lh~i1TTf(`7`9HgGu7l0|CTP@;#6Yf_mls9(b%NvySn! zKKoT)B*zQa(Z>GZr~D0i)k+y>u8JDHxG6g*RZ8eRYBR${{0crnXkB2X4uprb(7J#T zCcsX}N?i8#x;sld;ipjqLpMBPd+oHuTG7J46mKy3D!_O5k~$~hs(gBi>p!>q4drAl zYUsPr42nyCK538Q$eSbGTpPhQ6QY4=9qvC) zof>>94=!|ufkp};w>Bqu1n_@8YC!%Z;HT8%s6+}FdIwZR&Gnll!`BUbQv;>)5N4_d zuAj3;86el=+qh?CzFrC9c`GW7yGkeOyJ*0!8Jp9;RJB8t&GG7`S!=mmO?g&DK5kIN zD>bhUqc?aD|B9OxG7Y=10qbIgN9*pW4>Nz8hJXOAm1|XQ zn~U-9l{Mr_6wridWZF<&JDEyfHeM9)?gcc*>#blX1XQ{uCer&b0O{i2;<6^*EaA)6 zi9gA1F$Y0H1osLoh^*hsvu^Ea#;-+{sF*T9N#Rj~6jswn0X}?d8LV zT|};V{Aa<|a{CfTo|$2#N9#=>T*cL{)M&U}lrb4&qFt-W@m|DuwUwTMcIbGvBD;FP zIM&CRF6^3Lk9;YhG|z>x;#SuXm_lqr#bbRXnD(B~*5 ze+T&#l-O>0sn`c&QGoz8pSLV3XBhC_J?#FPlU~ZBwC9Wl$XrGh1$B|FUpH)z1kSr& zK*~fU`K+~fhpFH0@3sHlM1+PkG$J%?d>AT*Wh~y@>;7)r!}M2kZDwl0(ifDJLVqQ* zU~==$kcVfK(hb?{r*kP>X_1^sjuIl$?`Q^YlxU!Df3FnELeq}Y$;J^~Sp8Ad)%v+& zbQ(qmsJwDux^spNRy%F2C}7joT7)RAV8m!ke!1#Gt1F%BorR&I#-a}o^RAx=Qpg|{ z|Fc?InV?^9m5kM8UJ~WL1YMNE#;)m7kkqcML&UN@-wd?*k7je7!gXcYy^0=#UTLzD z0MP#;rJVeiUL|9u-=O#;OQTQ9&__bCeF(jyx6dh~)yx))Fq(RI?_cE5aGy{!wRq}FtMD_P2GBgiHJ zuNn+P%~0t)8C0N3EzF~1Nacv5nEc`EDzJP*C-sU)fr+I4dAZeC-Ms%AR5X5@N7Ge% z;!JRD=Pq{{hb191FY&w(N$8aQLo_7i^M{j=Muf=J>6XYbeh32vY0f%F|5185Z?*!B zoD(FULH@ooD(}7h$B-%y_bXJAQ2_tnEQYhkR{ZV)^NCr}sosJ+PQpg5dkr^LvQ&eB?~%lu1ng251<9>_K%+Zfs;T zd3v6q&;E^q5~Dy*NXNp?RZ^N(HTn^kY>)>YO7zRCu{MC(d(vc%FUz#gUlDf#Pj7{7 z!;k<)DO}ZV24^oez9~8Akfg4Xcb?*(Q_nK364e#*s=R5ApRzN@`Sf@vV$A<0hdfhD z)P6JCn+y#eujH1hx01%|`D#I-vk=B5V@2CcCv1)oB!2Oh*TT>pWntb|@6XBb)Z^Fx zsGMzsn0Z7_7{n$CC4MmKovM>>a(Dnu^VAHK=m-F#U@uGn6gd3Z90MKKKuknz!}O44 z2H)L0NWtz%0T)D;f7GHM1jW%p&8k9LA~#WrD+l{Ww&z=qt`_RdbeZyRZZE|iXg(IkIDM&R@+J`J5D{i=IQ@TzZjkHQj_&H1S zcn#SbK{s~5{Yw?d41^Fr_AY?M=a%-9+S)rI{(9+q0X|sCBO;m%T+jPXkk1J`&3u%m zv7p5~2b>q}QXuoeF!ptq9;$N?g%=u{;ftH0b{8kYg6SdHA7`56_fm|1oS8K5uj|BJ zhdBQx#$DM;us`DCFthPOLAB0XaIL&i+5|jjpLXd(lNnQ%JD$#hab;M2|0P1j7m>p_ zrEEIWw`~Pk|H*LRXv;>Cf@4#sr+JkbX&4Rn8E7r7z}+*F@(txkPrp2_Em1UF%=jAP9OTO-DE<*b1e4|gKqf?27EVvw;Y=21iLx1ipZ64%+*k`*lw~{j?hJ zq4Z`Pl!TSuI4jk?n3pb z>t0c*yjo9h!8yGZI>cskmZ90{%fa=gq03lz;W2J%WF$6Hq^Py1h=Ok9{+M%p=Ox)X z#nd6IHf3{zg#I$lWg=tWa)+5606fq~Y}tk$?q@ zk5A2zWGUxLSzPr#kXY#Xr(tI0OdpCnkr9$uE?sYAXehsj(tt#oZ_@^ja#kLCYc|** zba~y*^M|pLHht82BXiW5z4|rP6|zkpDQ9hn_VCMeGmKe*5^83wq{mTX@V_4|1y z3&Hoe%T!E1KSoh{N(ptq_Tlm2513|mcfs)@2P9~tlMLJ&!!Hn zENQ$gFQ0$FX)t!2)Ni`l3}01t2=2h^iBx>XRYr?tuAA72|8y6){?$B`%V7PBK<-p2p zoM6D67*sz7XdSw};_)tU&z~1Qb`BM{owFRB0T0-(&X@-6BMFXBwhy^{y{dA1j2n{u zoL_&u;=6{`uc=?Ca)5Vx%&l=#c#qA|NuE@3+x=xEtdd_M`_=smlNy;DH%f%li9liy z28n@m2GqwAA0MWEY5y>@z%%`6h3;QKx^0Ed_`wP^AkQf~R7jvM6Ns8Q zS6uZ&uENg@0S7{`esuR9aJtF#wpCO}-#oHWpv8*_(T2=t(-*u_9b>i_x=_)NrwTe# zX(mvvfbS4sJ)}YrM-cVIg*#O}U8!TllH)_pr(W7kI-xtucQpR~mX19J?T)HY-XTa5+kU`3a0WZYs>zy66<5}l^|hH(PY zK>h93qPD>eb7=E>CW^DyqLhcWN+AhuhUk{Fg30k8Id=pVHH=h`31@~{GFRWk4&rwb z*1&}OiO1m_L^i2ztq+1Z^id3%V!IoG;vV5sNP%IMo) zS5RzP7rGO0<7ln~<4d?bx_9%so|cr6umhaI$}^n7BF1yOQO3F}wW^OjJ|Ra(a$w#} zdd@+F9xgdMIgML8J@12@idVS%fp7&NLCtUZq16lOBcB?_&VA`XA!_P7&!noX)3fFQ+0H0uPYvbor-R=?eo5_#4eQyt26a!Jw<wO}7dHM$iz_Cd&&utQR|UJNsh?dkIP*BZ^(0E4{iE3t>?Sw~ooxmaUL)`XS;wV`KQoU26lSX%4M#~wzS!E ztehlY$-XF*9k1Oo?&-9P=PR-!T@vvcJy49*SEzwxgAgw^tEvPkmX;UYYlTxxg_0DZ zjV6Rd8Tf3Dr|!(WjnI748dO6Z{ZF(qlZ`HoDymka=jmqLq2Cjh5IDeF#gCm`pnv0w zs8*QkRW*Fwb$9jP>V4uvlCG)tlm*o%9y<`cVn97r9iyin##P>bsG6?H{7G-_M(^|H zB%>e5A(8v|5o0A{Q`Z_trq7Hi=Mm`J@3>2G)b&CvD1f&D&1S$S4kEaSvcx}^-dz>^ z5avPd#CT&-$ILOfbbE)3lXb^3TynZ6l_i0mlk89Gdz~Eg_Xf|?lL{b22Z3oN-h(ru zPr=0@6}WOu*P?{1m>7;S3x(9Aupr`YP7xUkPdfzD0#W;XT~Ths!ez0*7-T;)TP zImk`pP`Ox~WD|4|#CGOCLonNYhF-M`~slUf{iWH!@u2JKI zB*2v?E6oI2)2x!m*^xppq?ay{Z3TIAYx7QCLO=Q+gCwrxmeCHQ&d%&iWQ?EODy%Pt zUj7kmavsJPXzhpWd%n4yhHOI5&P?BzWuPXVBU8+8ReKx}=%J|r00bdqG%7Dlx9?T!3 zMYyV6SHSgVZWYKj6%a_-kz@&)!2e21fU1Q3$v6jQ`4;yC?RQTm5P@8UEiQnSjTgSG zvkKz&j(^UDy@&{;to|otcA~UGAyheQvm9+8C{0z_e$MPnD-A)ogwZ|gB||&Ovk#FG zF^pgN{Q_3Kd~&ML%sTi8VE{CK2y9GIA%xp|<*MI2@(r&vJZ=DKp)}C&yatkVk&zH= za!85jog~wbf3fL3I9!2id@p6bYZFVSlUz51W#ER+1o{_Y`Amo$$%h-uguY#lMM>eS(U>tn?}CP7gfX~FHC>!+7Ptsf8q!@ z78@s281>1(5+9jKXG9M(EEic3nth zp|1z3qORNa-U+bwhExPs>$3NT3PW*oA^8y*ge0LXLJ;o>n!i5-G@pHr1ZvfZ56)qy zKlm1R-x}G+eh3E*={3?{CG(t|EDddm^xXyeyDQ{@CNr)c{3%qmIq$pzZML0ew%uFe zcvNM*XzB^rI~QQ2NdHP7{k8ax+_|1#;h|q}VF(07YUDROH)o72yzZj3hlJiD8Hf?2 zGdKk_nGcxh%?k~79yy!4KHMJ_Og%`y4M|^|2hTTL=_V0@fmRyihKKrxSTqCeX*ju7 zx}TXG5b?oZ4?#;+%6PT<1L8mYB9TVLM1s00N6)_h#9i(>M<8^5xhQn#+iUpYeHBoo z0{WVj@2>4I!|{7mZoounCUMApJ0Y-!IN>if3I!iC==Xp#0KF$&dA5Lg@CgYMy8!M} zkSq-Z$T9O%f?`(8SpzFwIqoy}j+pHC<(7?Jx4iYeZ~XAr=7}XizJ&&cxeG9jQez|Gx*0;BqeJ7qN|B>wtW%|$W2Mr{% zeo}VXi3AJ3 zBu1Z}C8B-j#M+deO+GI|)UUTE4H#z^~!Cj_7c0QwBJ0GSIAhq<-hJ5N5?@vws?_ok(Jdq?9TiBm^Mi&GLr z())gJB#IE)wvW|Ajz{9lK`2O+p>m7aJPeo2*iUu82D7@rMAlFWrajL>ajM>OnOpT_ zI5DXGNgonz!w82dT#EGV&Vme?ekHfjaTACm(A`l3y2JnuRT)Q;Woq^HQpZ#>ynZf3 z+T<0;zm2wVx(ec{((!_~uj8YrwRfk@NdPq-&qxh>lbS6I1Zg<=V5oe21rn$iF60KV z@qzhmga$x;ZC}5K0oSWrI>hQGo4te${-MwCz5hN>!f@!ypniZvJ6`NBv^*M34#q=? zIs;xI%bEJxZ`sdy(9KAsm;BiD9+80qf$jeR9uN@af=ap^#3Lh-Y}T)o+f+Zsln|n#KL4?Kj)s$45A%CBai0g%00qtLyQ2;j2)8DO zW^WqvmwZ^(*v>&5Hs#5$$Ze>vL8t_gTZ-6(jpo|w7sz|}wDiogcNtbKyDR)ESM)?%h&l`x!%0rzN0e_egHOIxCnb8IwOqPsY{4=)oTaH9zU001i^!WOrKmG4a zg-~P?V_4sTmD?>if0C%Ccul68a%TS7yR~9omy;Ld^F}vbUFEMW2_q*~R0JsLLXZl{ z_9%?BH0#%xY2I5np2e0=1Wbfudzq`+4$7?RYKmB1BX)W-V9-9kkewH9{CtZF^AjgP zg_W$}#BFMK`jIxU+C)INT6ioNv$r#$mnjyBn#4Wse{Zn_v_<3BJ5}Cigz|4;JI>+Z z`S2y&kqxYi%dbaA_|HCoxLPWQ_T1Q~r{EZ(3p|Q=>|gXb!`x#a_jy5+ZDEcW?L;`C2X9jtGY(Uz$0c;fqyi%XD^r8g_)g zp)|ZKDqW5Q@<0Cwd^k+1eNG%rakymAu0BRz!ulsW2V$ov6o^6wabiakW4)Q>Pj3&% zF6l^#&K1koWM4x}s~>)}RNG;K+*13~12~h;Lkf5`8qC{A@6umHa3`0Gn!wPEpL$i?LH6&^{0*Pw(1(^jHm)knTV?LuXK zAqD;7(;;kS8X*ZT1A!0!mTTxG8UI$5rJYUY_SIu_7PQnQLKEVLoo<^cvr8e7vfOrQ z!+SC@d-xMZR2UdaA?8j{GleFv*8{lKQo5r)xKwwT31*YuX?Sr?*&O$TM?hJ*uS25rJx0Cf7iU3 zwtSMkm_3A z3=~QEfWtVw4#ntn=LR9xU^@bDR|W3u$b9-r~c$96Doj5zY6 z_h#*{NlomJ5?Js zi@-ozaJX0JIYkx(q%o;6#H?|JP{X(IGZ_zSfLhmG*Z>-!aWrkLjU&kNtc`H_p7yqnOszF%= zAwNMk4D=K*ECQYV9RZ1A+uILtMGH#c?Gotk4ur!$T!4y#%!%{+6u$HATW;>?7 zefBa=tV-BhP!|WM9QS0oR_uxTiaCOG^w-f+&G|yPU~8I%Ev$b} zYE#F!r7;1|k@?Vud)4EG8_MOi}P^6OVKbp!Gs)W$= z<#Lj%;`wsOrBYo_uffbrb3uaAqlwEYSzvB66H9gdp&&2>bn~}OCbl#mW&%7bOF(`5 zVcpQP8qM@6vT52~VKAtnD0HgnL2K3Xmfb?|6?&pwK;c5--QH}Uu$~8uw%m-+Rcls2 zHZC<9QAzqEmbRBO(M5HEqw%9_5WD7Q?Ga z)i+eJdmn4nhgHHriF5ml)u>bLE_G^LYTRqfi3wh%zm__oF_C{E9RHH}JGSbL?~7j{ zL)3LY9ju`M>wh?X{|>r9TpCQ+%x@h~SiLtUSi&$MfjW?z zsn;7JhaAr`X7+6z4_SfWfBlgq@JD(Ydcg0$B25q{3|19BLARPXTxtgvT+J_0?tVlw!Q)Yc7^QMwVytd$ zCBr<$d#v{_Cy3&6$!3U6Hx^=U+K1xCsfj36;w@0u#Esjt79H#3;aZ%OvxF&aOI>z# z<)`%W%U`Z1Uiw;oZyv*6hS8;P*p)yv?S8nFWJiGRI4E3wZ-P9rTl;-lhZ6%w_*bh{ zu46hp4V&bgvmOL=iF>&vUAWv3g;jl}e17`9wp5Q2j$LdXm$&d*0MGB|&%~VBk1c96 zTHa6Io(tZR!+FS4__f^O5xXz%T{iDT8+aXPvQ&k-CjZW|5p8%Y>*@%ZxU0V?D4Tv5 zI-Zt_;CiU~O6~SMfMK<~)>{b3Aeh?;LPXF)YCho)3}Pc{zsSr=@V%Xy_lJVYm4N_P zEF9WbQfE)2p}AD&V1^_HUHWJW+!J7bFc9EH$1s5<0z2hk2M>c}=WE*3ue9T;_P(Fc z;QRjdh5GnTiI1$ALQmH^A`t9J^oq(W^9%K#o%!2eR5ujuf_a0-)L_+ZcuaZ()j9q< zbl1sV8dQ-+i1-L~6$yLyP4*`#nz>E(Ht7z$pw3WwDh3o?5`|0`eoqwp=a#_w#1wBG z1E2wVOIB8B=;IbVFU1rI#bOn=+Ihbxfz2;=3 zV^x1tV**X#$^^1wBa%f)fFd4p?_Oa>jdTg^CQoH9LQ1*xzJ12(-6Cp8voe@6Pchdf#*3Bz%vkh+^E*a8~yN5 zz!qj~t6zgX{F&RfD{gggS0#NI+u-64$#t-c?|XyPyKZnR(?AEKgqw&raSFKv|Fo_6 zwc8pV3*^6#S}3@F=HqDZDq%VD_p2Uv`uypt*6DSJ5mrqXZBuQ+lco&RDLO^!?`OtR zo6<%a#XTlr_^8@=!Y>*=(VfVjvJ{RTdpcrxb^_Vnl_xk)fyFWtxd7$Fw9aM~?B+18 z*1|mpU7AsfQRT4cOt+8fZvLj;Ca43U)4fMMIem?{-=!_;l7qEOP~u~QLH)Y^HjqK~KG%z*d4*YpgB3TP}MYhBvg9+oP*fEvx$8(ag=+Z8e$ z9Y%9tLxjhe3wc(Y`n9txx$&3qb>hh9C%lK(e^pcA?5PkcBPF2UWWG%2EdyiS!!pX= zV5cYfuP`{*W}v_67%9Y`Z!R^x@IP_^de*>6!Tq;lgoNsibH7sdT;1ef_=%%o09zaeIaxu=)S@iLQvFDb9GCLMMWibHL}`Z~H8Vxhf|pM1O84 z8}$i7NGgsRMD#zspo)=)%>?N7CvtHrXsw<;m;F6Mw#H;?dIn@{EWlxNHJ{M&-0LA3 ze~g4=L;R(w7t+c~t9HMPgMRoIx`lq`>2!p5|B}8&Y+iJ?g<8DKDh>H5b@;~9QQw;d z_*Q1W>B7ZmG|yoE!p{u6-pVWhE$ zb=T7mpVnrre=@EuxJqqf;a)JQGuI9v=0zN{K1%U$iwcheuPQ@%oYZ2JAK&}ww8ZzM zWz(Rc%2&U)n6S#SD3E-h!hQmQAZdKzaSlt$0pbj^|l?I`9Uiow5&TOF9EV5x~gWAkBmO( z3s`OsJ7)_er&i|rO5^wHF)6}oUQ693quHeQD>8P^s1w9%8(2tY?wO|dNcPNq?SlWa za~IbAbH3o>$Qf#*i)Xg~4?dlOT-UZQb&}Qow0xkOdVrNy_f^XheH`Zb`S~&2M9cTC z0yvTkMuRUJ>U>P4k;b4=E)qY;x5l`}yUL+&_uAsG)6F(-<%hV#HnD2jKj?NSq)95y z`82X(#^N`AQ_&RB8ONA7qBY%kT`g}MH;U*dzewZtF!k2;cs_WR{7SYT422#f`&V}&tf?{!2B zMB}{R7nQ-%7ajfCJU*zVSN2fp_QfS-+#7u=PH3X-+=sF_u(vdg&OYvJh>E%YdJ{w) z-bNJ`xM0arM|G3FdwT7CFc|c^)flBtmFk8-<&dELq$102<0oQ@^Op@nRH|vuY|Cw4 zw{?v&#vZ}^u*dbdV*!rmhcR#n#2m+hAA>UwKG>J;qFziCe7+AWQtypD#yC{=$F;8zvlK<1t=aA~$e9n7c8_uEKftOGLCtWL=qMUUAqz-6+>hN z%qT-npdv*#2Q}jVbFz#VQ(fJGvE|E7cFhk%d8X2F0yxnSN^5H`MW_sMupB+675Phcra;n>NLNdoE%<`b?gk6`?2G^$Sareo7t}rw%nUzC zaUuf*u}_Zg&M=D5+HJ%2{}?FQYDi9x_Gt(RHu7}FZ5V#Q?Y;)NDuW+)8HTCz4%GLd zyg`Vt~HE28zl$mn~3uGz`HpiUtOH;%Zx{F*B7Tdo{(WK;&9T34?O}xoERQ5 znIadSNIiZ>S5~Esq8Bez{4H|G48ZA7z@L#f9UFR54rs4qIyplNhUx3jXC2~_Dqnd7 zNy--zYQqwSokbDjegILA=%jh`&G_0Z7j)8{ET}KJn`nu`qg@%k2+@Iuz0)Nj;Wy<2 z;O!5E+c$AGTs>+=x~SE3qjFUO)hrwmLHx+G9XBxw?^x>y7Lc#=;o69Zp>8I0f;Z|K z(c4NuA&5&)@5?xOlO2k(vY~)5nIEWJapo03lyfcvYSLI*Zuk3wp)Bb<)sk1vyhEt1 zqSU@m!|CdSbNzqJ;91Pd=M+3h5r@w+`sq*JYyz0qM+(7L>eU)P=OE^p4ic!`qN4~j zH_#y~nB)C9m)TAyPzp^;0EcQ?{;%1){Ru_z_VWZgJ7I+VN=b@KavW-Dk3asbS|#o` z-jP-32#Ri*g2KlfG?d)sxH&_?YrfxSVOJJSk(qBTmF;DJQ2{%xsNA*8HR}R@%u!#W zcpU~)^|ha=4!fo7}Ro9IL1MC*ae1$Sc{<ZYCvO1 zZQ~+~X;2mljUslaadIi$+8~!Sfo2CO*wYo;AXb}Ap{Wx+VfXm4DugumJvq#E@Mnqk zjLxrp-ANiiGlsl$h_FB14jLSuFJuZgRyKCM4i=q5fR)j{EwPDO)77Re{>rDsKTe1@ z2g7=X&(u8R@3>|ZVK2?$xp9q7EvvBZBD1vFHY@#nhTO&Q6+~{Cm57~x-0+ikCQ0la zZ&W>MP&Q*#oSzi+eV=y;nqm2UjOGsz;LhlG3tWR;dF-(rZ8>QC=4B~HMdusMIvI^;RD;{-V>sPpZ!xhmDKV{X3y7#W?xQr$XuvlpQy%GFUNLpxJTHx7{?pdR5rfzdUNpTqq3K;glt zN&nAPp$Ub~SP^dvaHu=>%?>i?G(HqaxM)%B@i)Ws@tri@^Y(M!NF(=+pK4ajFjj=U zos?)0vXD}7CLx?s)Q7R=GbXJ@g|ai8u378XH;4I-rmQK2-i5N$a!vUKQp5A~W8&Cw zXuT$B)p&MDFp!Oxoh#EVZ_!3yYOO{|H5wl~b#b*!XPhIAG+KQYZh;#9MztgzF(;oR zjemwgdGQ_*Oenl{p7TR*Y}fDGKcgRbJ2HiAtjh0FBmQbN=N*pQk$k#gjjgmP+A5JH z^reCG#f0SDxL_uy2un{Fd)jA}(oh)5Awh{DFKG@fcTYtI-B13(;tVCFo(X4Wm+K|K z)yH(jv}!ANf|V5Z$!`|V$B_^9Hf1|XPreB{DXv$I*Ah|d0|5?Tw z53EYg`c>e#-Lie={d`na^mw!^vxgOFlNG(DujG;+^7f!iy@JZkOpi?;42{Gr8>nCm zS6eu~HCow<@%L? zfJX_?Sc*f7hQ^*j==lSQAth5w?B{P-uFu4ch%H$Mv> zaVO69q9?#vlQrykkM(hylKe;bu%>+k#yN0hL3p}iCTuYOGz0Q)xk{g*CzU*6K7Y*e zhbH-!!BdHH;ZJn$b7jXwZ?gB&*^;r=k}JTwVXM(AmemnV^PI7h0GXEfyc2_UBby0; z-&jI!#2Rf0l zWUhe#5411HwvU>39pgMIF~>6?F%|lFks>JTGzT8!!y9coOhs%~fpXg5QaIp0AFEJE zhB$5INA{38^aw}_1U{rui53j`ElJ+%*r^lFaz(A19=QkEue#h)`rIzew0Bn6&q9C~ znomz!?Q=0TT)zQU!t`tO8q`^2FlNAHgfXE)^`@t_TDGptMVnNstzULdc$UPJ#IZ9n zckn3;!fL@qW6bz|llZ=&G~PUFyNp>>zACZQaRK^9NmNl|H9c-<(9l$@XHR{jTwyR} z$BcW}vkQm^z>S`ZH!Fyu(1Y2Z4K;@@v1JUx#^r}Lle60I5Bp_d%nI0|Ax2aebjz1b zvPgxHzgjja`mQq&%M?eQkChka?SCf%ZtHpzDbxbZjgt@HR7$kPwI<69ZOPfKCu~QY z`6i2DK@hmnp{=;dy<&@@G-(Q}FkTu8VE86Xc1ZLdFW=SXLhN-6}Yyq>m$WLxIr@lx3qMmkq_ct3T7DZ% zJ>*5qFN|^P2zp8iAlgE`y$spTZp%Ro9r!@R^I(!VMSp`K9iyHHE+f-*K0z+kF(W{r z2dKcXfeilD*U^@`_vEE!V;Y(Y6`zGrUU!uE5wkoL zkJUQbdcc8EbF1UG?Nj#CydQ5`E*lIF>iyH7l*J3lpSyXcy#>zb@Pe*>Rr@a$;Fw1O z^29;@Oi!bPRbRb{_PwD!fXEq@^k^+I_E;|!cQOQfX{z+yddHg(>Bx5D``o|W(?hPk zpJDT}`Lu?oe3zrzW>&xmQQ}bVZynZ*KbuvLg5K50T4>^^eJu(CouKYiO!=-e!ga6P z+TG2y5)zaUDKTf%x7&TH%#~Sq^=fr`To438_AxWt&BMa|M4{!f-4}hea6n9oR#OrS zIxbmoDo%-**yvlBciIUJrOd5@w@&BYj-eqnhq*T0|FEPn+&E@P0SATv^*!Pvt^aqa z78$zKf!%ybvnoB`mR>Mc;v0wRoF8Aq+%aX|h`ES1y3?FP%m^qnw6~Ks#&8xeKg>0T zQO7<8jxv+1NUhB?60&d_*y!}vA1kvQydz|XoOxes!Wr$z@F3=JGJy_)Y29;iNWG6EkT~L@=Leu8m;)k zR^t?3cX>(uX^P(mbl(-~I39%T#sd^IUBFkjg#_V`ekGgZDuP0f>tuXCAWHDinkh}Q z4b=Bn?5Q!nkPhf&l$7#1@@Cr|+;EB%iQ~QHeygH^^l^1r0r=|eaGeDJ&`iRZkGdl|adz`$>}>9D(T@mT?K?0NzYVTIDz~SAH4sG; zNbC|;C#k!cTT*XyP(*%L|KhjLS8uzPId;5)|5%izs=&`s$n-L?RH*ZsrAxej5GGft zlSo)wF9gEhRg6d*|1-PD9+yXPnw)Fm~(x0ctIcjx(6bmTS8B z_9ux(6{pW*;_K@?3CB35lYsUqIg!KgcE?%wQO-w%$}V>v4I19uNQz|mE;qZ_fK2->x${Kj;e(_ zidn^LOk3(V#Im^9PsvYFUe2ZG*n;MP&yBE!GM=Hf@{X^oUQaAO%3tkmkgu2xRmo~p zN$t_YlPdQQ=C1{J;hbkK76oHT(j^R5DQml~X==N6TGl`Bx2cewkh#mC`)+%)kC}jIq3Ib3w|D~$dP^UG-PM#c)8v@)8mQcHMPnNQeW0(9HlPO9tH z+SJT-XIt|*p@~o4$Iy(I{ULV&@g}(Z2xk!-R_FP0yFI1zU8MiT*;@w1)op8|jYDt< zu0exqa7_qqfdmgOA-Fp<4#C|a1P|`+5WI1BZM<=p+vMGQpYxsXRNY&5{Gf{J?lsq% zbBsA;K5IO}OlOZsGm;EuUVP{aC}k&<7;7p zM4~{Y)IO}iXQ#YqyAMBuRs#7YwuzKsS&ryDFr2FGJ3|IpG4~hn7#^}b3eH-kqBx%G zRPgm)D`}~~Qyg35Wj7`jC()i4AfX0}jv=Syhb~)J*_k0>ica^e{Ln?~_Urx5*RH*! zr>3s|)5jSQP^QeTaPNA6Sy0q=OmWl0vTAC&O{eQ+jyeqy>9o1VD`HwuFoc%;(a*-Bd6p$ zWwj?g%fbaIE0@`1hVQVpTWbaaWcoI&Im|i;Xo{qpn>HXtWX^~0YSY~| zSO$H@*S-k;blB7dc`7TZTi86Gt>`u>Wv=xo=@uCJL%yA`?o-V5$EYigjgK7^V07NT z+CDAjyYjhGZY~c!cJ^4U967dz{viKq6jJrHnA_DxK*cRKhjooxUPgDrT)*&+OyEvLvBj({Z9C+?m>XQS|W%li|gq2M{ zS;AmkfppXv@^iJvyqaCyBzz4;M5!*#(P>bMFnD$bYC6DV1p z=AQlVuy5GXOm{En_#w4gBz!5OBOXG=T`{Ynf>d;CytGl>CA{zDb9w8ua-Bzl`UR=A z`Mkxy8Z+Yky6yFW#h3*gye&DkCu`K;W_v+uqGX6Rf85*dj&&e!9TM-7!!rS$!$n@8 z&`DIImlLdYvpY`tLre1P(>+ytEgUGg+rYk}D%gWuV2I$UUEs>w(#82oJA>?5tr!pb zt{gS8euD};e;|9SEkyIG{X{O)-HBJhoT>4WWOei0WodXqr*P#GW6_x`ThIuv7;=Mn z?YW7{EN78>F-`A!7FbCD4`6>~3c~QFP>t@T3F5h)a-AM8A;p9e#l`QH+=7IerD3Id z&xIcDS=OziLqY=jALPone!MHLoVWD1R;}`2OM_Bi5Bo&2E5yy^#slk)j*uOD5}GHG z-mVULtBWhN=kPAOB;$m zT_$3iNQC8MBT=Ut{EZIA?Iy%9m2PJ#WotFg-|gXTf+%BOjpS)PeQe`f6K3>v(oFNz zsVTvmqal`uvw1rA!()(_3nQg^L3^)XudTOB`866WVYfU|NC;7KPkp-^$}-D zjqi`zPj^{T?QNZ$KM$UJ{8@{Jhf+$sf^x=8&T4LU>hGOOU;pBYJQ?Qpn_ z$2}dZE_!Y4dT_d7u%2Xl;77q_pB9HhZp<})VAkwt_5wGdPkFbsus3XOXK5Vg#iQVD zW}ofowzBXOTuT1l-5}MuC~8Hm(uE0|)IJy3X-j7Tn0V>NNxn zVSIK*N8_=6(?~#5b?<-rcsiDe0lRySD>f?@D;JL>G~C@b?gvVAIqxp5VNFu$gj=Bz zIZ0HBjVWYY_k8R)26vgMEC6DX({*J1k(N^`R|7p`p`1LPQYW z2C}~%225I?tv``_-?+j>Eu~3*Hog%6kzvHON;Tb%tZLmHELtTus61%gN!@BQtAQ;6 z*TcZJ%QhGQ_*T~TE!KZ%*{C@G5C!>~r(PhyK`Q|Hq2?TRbEPdcd8mcpK0O&K7B|Oc zuOo~&VWj5UqoEO@Yu#opglK~!xo57QZ%=@)#bn`LfB(BC|IAuQINYPAJv5Hq!$YfB zRM4GU>Kw;i7P7Y?Ccu*js$n^%>YzA0+Pe0!S)XPhOKuRjX7PUwdnF6A^%beZ&HEJ~ z;KzSwhT8ON?p|_qDuc@p4MoWh?S{#dIx6v4Llb?HWt`O`C%O16{!b{j6MXb=wTN#jQ>I$^&--R zgow%cQjBC_2w|f<=%vobkD9{I=PF#+E2;enVMdknpw{YTZUty^@knufGMMQ6bRo%9 z8xi>g08Z~xY(qXhxZD7M=cF_j(6vH|Icz~{5N0C!n=*gGZ;oUe)s>~Peb~I8S0+fm zACS)YnA!_#temXYk$?4Ljg+rP^58BU9lBTd@v=`_Xi|H4-{Y>7p#8b}M|-I3*V)<8 z%t`^aBd<<0G4)e1u1Jr!%aBIxW$aL&ZJkKvSbvzxs!51ZpDbrQODSDd<>kgD)zwrx z*(5PNMlk{OPmuwHk9)v7KbYh99fUsx00wztVgRbxv$qYdLSP zp?)93QZi$tYo-C!Ni%n^FpgO_KNov(r?D6X=7g~VBLz}@d&GItv~RGAqn%I#4aguu+e7lg&_=+F9;0Yp6q7LP0kD6M8fD&{9Bvt zxB%5Q0j<5%#QJNb<`7%H*_3>Lt9$pkx^kFegDP9K*R#xF1~Z>Y7*Oz4HcDw|wL4o;1Es6v#Oj8FG18SC0WZNvz0tgj0M_I-_a&9jL* zYBm8sGwP1lmZMsa_@62c8rR59NPB2j2CV|aq)$D`crAN+K|4RfAk^m1?dN4mwnjB& zqjMFZ1wJ)JkeP>O@}1ug`qnRfkY9v=7@AosjOqg&8uxVOXR)DAThFC{aX9%?0E<8z+FCpq5$x*qKl5>MWa2G>x-b9f3$S$Y;aDSixN`P* zGa)gp!Fq&ti*B)k&;6TlZ7^?^cTjf(T)oZ8BNMsDdf{y4QqFZ$t22d?jqr2bzqcH; z-uX|fdR!eH@L|5@#K}Pj-M0Fvh!~SS+${R3W%|HSF2Xerp%co3j<9 zsaw%Hs6GcYef2RrKS|@?HjcIwgQQS@c6I7mNak*i{>&uCEVDPRJWF(#Kd3SFK<{0< zsYH&-IH%z(O42<;8IpCO(3Tu6mFwYaK+WpSFpKAWw$+xzzgTYqA9sGd$)#CDZeCd; zA!(|T{OrW}>p58TGa0#QfaqLv>Mp?YNiB2pGKHf!T7xONA*5Gs)`2@DfVer(I+mQ ztb|v~Qm&BxECzFnUPbPrP<6Y@a6DtP+O^vjfvuR5TOxn5rQ&K zl8&WdfTuFPK+0+fFxT^M+O1yAj>G)ZUFW)lFO!0saqHHp$Ro8j7YH!v?v-f(9;$m? z^jG~6)iCqSS0&6I>prSO~*XuUp3n;BEJNj{z0f zM7Wte|2CBH^ycmrGQw!o45&&Z@|@#L0Hpe423J-kzZ75d?OxU0op8$=*ATifv)sL6 z!l5!Rc|;wBSC;!Pn)3Hj&>J@YZiQr+Q4L_!sRjtmnB@xKHn=#|1mt;9QLA@q3z8d2 znBPRCcp6@PWe(>^7Y7dFXnmL#`uE<4jRNJ87T@4=O5B-`ldhSybIfwV0`5}1s-p5W z-B(0Y{rZLGFj93DL1Oz;G>*9D2S|knKtFBtUA1)%A2IRhgD*Xl3(xGP^-tb@YPA?= zUB5>8_RLR$jMe^N-FDheu_JiB47#ul

b$gE2HM)0Z*j#!^`5@>!E}VW#CD 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

n5$^Su^sSY&$#eP%zdnJ(d^Thv2 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 K0{_3F!2bh`4QOis literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/new-entry.png b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/new-entry.png new file mode 100644 index 0000000000000000000000000000000000000000..524250c94757a00515066bebbf0d7b6699aee764 GIT binary patch literal 60861 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 E0&P$0ng9R* literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-entry.png b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-entry.png new file mode 100644 index 0000000000000000000000000000000000000000..a97630dd71f197c7d5feb7e84f3d528688a554eb GIT binary patch literal 76881 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 z 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

3!S$TFHLvGJcvu@EbKkAV7Cn}edMv8 zFi9e!xS2LPDvET@GVLrKtTPr1!*rV9hfR=(x?C}TC<*WHb{@7}xn%xW5>F2g83<9BlXxnl`hr_3K~l4(L1u7iuzl=*_?vJ=6&Q+6Y2 zx{}r7BlToLyg9a`E>_H!>AqjBK@MCS8?(Xf_HHhZXp-Q&oaJJBJYxfbFedV2CP~4= z@;vLJI$e?ZQz9FYSVvtHy9PIdVnj_{JFqpyso`}2h=@bmwmTw8hVqn<70v3!ll%Nu z^)~6{@{z}S$}|p$ZF>i)3s#E-*(p)sTWicNjo=4hiQ>snDM~WtX}jSk#J<5*DQ9_3 z*g2I`&%0vvILA#A!XP4U-xN4kk}a2{JMKCTFmT>Y(1{1ic*->H)?JV;`q%L5;?}>{ z4u?lLdr7$2K9fBk1D8>)9(i;VCQ;b=&28?9t5wfpyY(6A>aD$9oz8izllC_|036g6 z*=o)zciZpZHP)fE+bVx`Hs`@5Oyj7%1{}^+&AoguRQib6*BfJ7%fg}Wv16GSOqj%t z`-Wvv(Y%ytgvuz22&XgR?16OXc0HPqvs~r`laMf;G~@b|Tg3PO(LZs)H|lo&^is!D z297i$|Bd87nEPnCb9obP2|@@Vgt#8QXZfDmaSNZqUOXcV8>e*DVoq_XC095lj_uRy z8N(R9;~C2OnM}?62`^?5-qDOrgupX31@VUAd-nOp)*2fU`v&}oB-q*-x-um#YN|53 z{&nAHk}+57Y-SQIi;W?;u) ze$)B?0m1O_dgI|^olwnF(2tc6LJ0AuaGSUCW)rx?!;7bcm;U&BwqxCMi?%-VTH`7s zEdwV0A(_xom)T%+Od*aEL?rS40x9FiBtDd>M8d06l~gVwNbb3_`Nmh=cIkZ1B7L5K z4>pbos7Y562!(hTd3FyegVxpOlscz;v!f_0h$Ch%ymqOy0X%FN68VO5wR{$V5HD`5 z+HWruaxl|2$EjlBHu0!n*e%~>P&gdp=|4BmKd^-mLI|-(>-_%~)I|kh!Om8{QIkwhRRpaY(gz{F`(MK7V zvz$Ye#Drl?vJM*IDyn?NoaAxUJRT9N5{7VjdjtRgUPmAV(+1JH zkx;~61t~eljFU4Vt=2M?SR$bnLD0GAZ+k=a$HL&gv+c7`wbiv4EvshP7n=8vK{Np z)4N*JTp@%I;;le)?FOT+5H~_&O9&yZhwiB-a>HIax$2`H3Qx8;Jeb`a&2f}rfw0;5 Z{{ejBiByEj;64BV002ovPDHLkV1fzC(kuV~ literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-entry.snag b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-entry.snag new file mode 100644 index 0000000000000000000000000000000000000000..dcfc81b01b06194796032f847e2911a5facdc000 GIT binary patch literal 90136 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%0DKNKUYfE6>4}_wB$cZ%-Ejog>B5$soTEAEgU= zA2q%RoPYIT$%IC`6b~dmB$ReMsMr}l)>q5X9r{&Pe%hgYr2I$SyG_KAYWGNFc=N@= z0cQEfEbJ3n-jda;s`k>&IJb;+|X{B47CuwN)7Iqe9fvH z{OrH%dubRy8O*LTFmyh+{8aY1o8||H;njS?!eSeY4DhcMxT5xMR#jR|xk*Y$KK-jP zBf+T39|8Wq{jM7O5+Z1=ts^5te02dk@JhyHdW95?A=Uj^nZTE!crt!oD_Cv?QP6PmO&}+2y$jHy!uPA9F>&d z$D4ZV@&0~&HoPPGSG@@z5ipRW5BsoyH}i*u)8ZxXUnXMmk~Ty-8sv-q_F}tBi+Z(vHfQhC#m_6Qx!=20T?zB7UelMYLEHicPOCEA3lq^=_kQTXW z5;hJR{sAC>-NfIkk8voUv>rCnL9^Mijx~$f>d#iIB#X%F+7?q@wiNGF=T(CE^Yj_b z)80a@SnXU+3lD>-SZzAzjbLjg!5G=c`JRs_>T|ulF*BA+9qy&??@KK>q}?Qx ztbTtmh3$K9LA0vVmt%x%<|#+cTkTD%;bu|q{qRbAY;B@pr#@B^6lXK3VU3h`lj}Ay zaWw>dpf~lW64$BeNFbLZo{u+I@bNY=Z}r*eI}4=YwEGArrUY-oil{e;%Y+Sy`OVZl zZ6d6nK?X8-h3FL&&eAU{d@QLz_{hBto-^Hk4xB*0&Y;w5hT0D%I3DPHU~36zewTRU zI5pm(8%t$1WLtDPV_jpT$Td5-T;}=avFf;MVXd^rK7B7S`K+5?T4-)WesF{LBn3-twxDCAQ13$ zG)aF)pPR6;8q2`RO-VQUSBXxI+Q;5P+*`QX)l~uZtk*ICr*$qxTeCsj%wh8R72OEV z>C-Skd^xa&=UPLXd1y}=2d_NA?P>KY+yI3ROH0+~<{A_4GOKhBVgLy;ImN#R%&l%= z{gfSmCJheK_wScGh_D?}YcIK#TT2_}XFt%HI>2uC8z;jGA%x~`$0^Wh7X{8ZN*vu8Ekc9F@v{Vf%VP6mg* zXo>tmvkt1f_p`qG25?J-3Bh4|ZOq2$4?ok(@{{bLY5|>yZ!Ufu9}OX1+GybOMmcp5>B^2jz-ixv38FqCgX=HljP~b5bfV8w08;4{82tQSY^CUUenL{W7oP0 z=2l*e-9hQokH0LoY=}!eEO-Kr;1r{YjuyLV z=+Ox~Y;7ha!z>AF{fzhT9lbM>$ZhfDd#qcTO-gn&K#poFiV{mWEOoBn%_bRH!O9nJ ziB?m4Pt?6-}5F`g%G!0Z^Mip}BpJu;UqpQ32B0EOv->8-_8j$BWJi4!NXpW!6f zSY<6EcI~n04fZ;mquMuey}%RixMO*wq@>zopB~xcDI5xg>=_6CST=R+s_%3QNhL2( zep2ub0Cb2=Qsvz0g@wug-Jbe1oSW?XouvmOG zNLr^3vJ%~09U#~q5tkNAt-4Ge{6zg!k6Jj(dMwIH+s1kM*-F4|S!PnCFI1Q4*^-+L zC8KdpFLCp_Wt|yrS@|B_Gi+84G=hAq2`bU@YqMSNnqizwX}?8iE@?(I8L><6*^qz} z(d}U^lH6^ccW*R`YqC@gZMa6GK&i#}s5-rIs`P(&m`1XQF4 z5R3xSL_k{Tkc1M77((v|2vRmp5kiy_dM}}O2pt3zOsE2(3rY)3kkF)`?DzM)&-n|^ zoj2=dU94w)=A2`E=O}Y-jJCY{R4PJKd)BZ$9u`HwF5eO%3lts_XFh} zeGXDhg-Xen{&}$oI_~q$jFDr=b6M{_X^dk>KN~LvT9*IoN^=h@lZqXBfweOt0yOcc zt1IA10GIqqaxAu3!;XgaE#_iNLkKe*fArn<&(SQ_$56NLZ33no8eS6oQ^v0s5qzRT z-0GFt`g#gt=>-*|Ek2)XNsy459Y~chH@8EDhnRXpSVn2-`c9neL2`-+Uh|%T2rdQD zjypaG0Y^FRvFRMZrKBwN=$DT5;6;ZX5dGx=`?4DM`y*S;gj^FDBr5myH?GFQ0NqH| zgUO=N__U##gj=uQQ7P8s?QT>9X#qlAU)5X&0RNzY8W(zBIXn6^q{?=e5vHS9E}?M| z0b^qa!BWORDriDay}G(Htj63@#aKpn5;RS%iNdr!aO;;{uAKY^WsbRFxLJdu>ld+h)TmWf$`sEmV8@z$v>6BNV!Dm|$Ps zRbce7>=B2};C{1ZdR+?5=WCq!UxOZr&#t-pr+Yu*moIHb36}KQm(?F{md?M?(Hfr+ zTx?Muy&LCQLAm~d4eMSEa5o4XJh3qB>H#NgEf|rtndxUw7RFLdQ_Iq?IRUx z&o=nz+gxY6eb8!jTv9Tk|6x(@=9p=oMycJoEaYJCE0r$!0{>c0){dm1Rk*QnduqD0 zuKoA80P1Z$hYqW(&F6fAYYxRDo~a%7-~BrkYY7ivJzTyukJqj1#b~+G60zMk*c*mx zR_LajRYp52O4U&N+_KH8UC_e+Uke~3;S~6xaZbU#&E)QYLO<7?lKwlY8mCpViwx1$ z6w=Di$cLzU39@wGzXP7S+A7Yqv|DEzt4KfpysP5qO5BKEQ=$`YJe_p#{5|FVCy1Ml;p(8l~v3dbuq3+KBFgh&D%2dakuUs&H0Z-0E)0fYzI&u7znbW*B{7VoWfBiBXV5-%@}qqx9oAV z(#*|VsC(<@CeSu?;CIP?rVnGN+h5D_j<+x2k`JSXRVu}jw{7@z`W!B9_!XC2_%E~W z%V$y591|)L;5;5p7l4~$+tBtCgf-Lvq{_z#dtk`Ij>N8kQ&QqloFk?UM>0jYq#>BZ z#F(fdOHcfK18M1KQ|9#(Bl%?Eo}vH?vf6O6*YZqo#k^Vz@`iQ(2UvRzU66kOLXgYS zL3hmKi1}hz6dA8UvrBEaZ$a(8OqMAc1kTm`5JOkKF{6nzCjF+Q+b6pB;!$v<;^&BC z=>AlEfMea{?Qb!a;%_Ig?+!jcwdyPUZYxcG(Dy>*3Tt3l?KZ?qJIt|Q;(=BZ#$Iwg zXV~@vq|x^~Mo1$XoE7cxhE$IRvVO~aQPZ_OS=7R)A|4)C3g4OwoQZeriFr=~AJ~bQ zHu8m1sm2X_@$!MXUrcV#B>)%jFxP654cJURak8PAR_q&RlS2Aa^qfu$4IwRprJr;l zbluSA)j_;DYTpLO+V+rQp8^OXNc}{r$3yPpgE6C|<|;zopnT?p{=D>|rM7{TPEx8+ z;M0SjS3UZ=;pM5R?qwoj%6)wYWKnuQTu(Y+SPD&*f;ZO0dALiVOVku>i$wC04Z<;0 zkSYQ;)V>s-jni#d32t^oU^7C!+>BNr6CX;~VcPMEI8w`y+qJW1-U$NlO+(n;NgQSD z#7Hi~TLYL*H8w=7J2=m5hC9U%B+eL2VP79zO3SDfs?FFC+f3rFm+Qj0bqy=g&gjTGDS&;7VqxzbW*?eDGNM{N*)qkPkL`F1J?4O1NR>yh#A2=ZTJ$mFJjw zaZbTtJX%BVu@zEVCI^Gc{kpk4b0^LZj)|T}$ITQE!@H_;>$CNd;cPe!DvC(0qP~^M zX`OpwGKiV)e9S>`D()FTe*(N+kS182hfkKFOy9GBh*jTL2VT@WJT3EW!3gzyE{Z!D z9XP4Xcy)zfiq;SK-PI>VnTP=M;bu0hsTSZ&3+?2HYb?CseZQ84TYQij79)ei8-SwjP9E zz#T(-T8SCwob@$P%`4bP<%Bz!!;7JXI*q#ucgb#LDYFJsUbNPplAiT0qPn-ma82B) z7`mG<8oKKg#a>64GeZLRHiD=1t8^GT`>Fn({q|LZ$+S!>vxf8S?j6xuJLiYiCY!`{ zjAK*wpiBDJcucG(5GUQezls1sNZ*id)usEW6f1|*oH>XIxgl0vBZ|xKK zjR2?p!M+dQQ>n%}UjFEUOw$oR)tmH4^QYyQVK!vHC}MSXyUz5sOpf0J?(QOgi@PMz z{^F5`y2d1f!T=_KP;2&J0kchozJG6S8l?3eyi=2N^ z?`x_WkLmcNb6{$u$F{UMS!P;10_vS8;{biJRMzWm&FT<~7e-=*;JyKaUNMy-oj#lb z>Jz4jbSL!);5#6YLSeV0RbDi5y;bH+6dH3_K0dL1iZhuofi4TA3<%DTL#-39!jdx* z?sgS@kTUX@Ft_w%W`ZO4cv=`!0#3cO4Z<)b6}cfEc?2B{0b(#rGHPAA-n+l<^=n|W z{6p;cDa-2J%_yt4%}euzW9p5B?$+Rn>X`y&@Sbc#nUH~jer zK=Lotx_vWQb-KvqM)I($h$GfR0E-Ei{+O{Him!hqVCJAt{%lU%8)!P@NHf(=2NE+< z67GIjlXJA}+D}go2X80eZI{23Bdt1BWi_Y!Q+IP)1?$w4_)H_QA-TyJ z=jl($B}C7U$DF6Li)ug7wd{|b_l4x`?I%l2*p>F1P;IW0ya6Pew1t+3Se7`-V?)5& zmZ7z86xFMQy8aXxGWkXkqNyoHF>Ch+buGL2q*yaI0Ouw3oS5e5IUES-v9I zP|)P2+OI>&w)pSC_-!l;xeN8!y?HhB%q{m`NqR;!rV?ii|Ck+d?9K~P9q_;jEdcMP z8uBtOB#4Yxd=z>g0D-?gNZA3hW*&rCYxVXw>{G_)(rg+ev*6f(R^YqREzHbyWIa${#^ z$(-N*?9aSM`27*Ej7(neSWC#tv)~v;jMZF>eWYH`@Q7v(ryU0!Rbw0Md74?A>Z>s< z@N1X#T?C3dPrJ;zhY&ONI(MnJVDFx0Yr#X}M~GP)sW|YQLrq7t*dFoKcHgQx#D#Xks3 zO_VhE#^JLg7+L0XvEv4O8PS{v$>kEpIxbnDVpA&4`w?;Q{P%R!37@na!@5cHR)x22 z!BXk&?DlA;Zj{-GsBno3NMP5Y@xZ|cm%G{Y<6#)h4wE1wlEa;b=IqUl-}Kw#V?B$y z#UT^TrUr<0E32`ghx1>(oRqbO^}R+PQ4KgljBrCG=Vzl6dW6<$0++*C;+Eh$N+8kv zRKGq>0U~Ju{@k?W(Gou8oBf;>tQ!#$ z5e&^7-&^n{E-)AnzOA?GAO3NT&)W&gW+qZhHAH-La8BZriMbodlgsu~+LZoM8;cgk z=->lm;F_qr#TG5q?B(#!*o<5MwkZe>b4(7+F^$IKt0B09!;-1mlWb}bzLFMwNrWf6 zn>Ccdwor5d)R|>+=U&aWldQ(<^*CY!6;cM>#p|l1CtxOwS7pd9bv<)@ZASojSwO`d zqPT@)3n9Yt8cIw-VFBguT`|oVevK@W zQ|$h$M?1TZvpVj`tHFVilGH323xp*B*^^iaGavtw|LP?c!=1j=y%P?|0Mx@k!au!?EBa&e=_hh#LbQ5gruwvpOGP>ih*u80~ z!C5MQHogyBF!f32FE_f@Uy6|(;}My>6|>HUoKQ4R2MP)Fk@>+!JK}ehTlf}j2F;sS zZiD#qQ*DIGdhKRhPA^&+oXtV1`aisr26;;NxXNv4yvrJN zO3Ewdier#@E0|)<(Rhor1*=4g69mMo#NEI0!!*yg`Pnuu;y+0vWsLq#RcoAoFjD`h zqifStT$yt~WatIu<$XBRLqy5u53fZ4Z+>ARW?B>Bm6ymoi9m)K9)0#s58TdGm796d zn31$9O4<+~3By%oFPUFafc%U_*}HhvMot?Wa7bz$8i)+T4CYTneiVrNHew~ZM{TACk>3x#L9D`Pu4;y+L&|sy zvm<7G{lU0r#{71AaPy5gSJU#+rR%W5yXW5((+>J7Ox(+uu!S8ztDGl#nI^>ro$It` zm~igaL41km=>KJDdU8HXBNOq45}vKwWd%h5v!XjZ_H}9i_OmP4<>Q< zV53`cLKh<FC#CQs- z^EHbZ_!_O)W6=6BniD5(cy%bSRW9IzrZqIIg!?8gHYuPfUYulATzXj}KsC+F8HYD% ztWu#;7z^qP)+S)chRK*oH?$@X$h&~@OB##0e~`CVRp}=W8+BW(FVn0@-7KCz-Iqpi zus1XaHt3(s{@^NR+mw1s(Z11lrh_zcIBK(DS%OrT9qt0Hjsd zg72w5TAK$Dt{M+{oyRW*>23S5^6dbh8>6d+Np#gUwq5X z%pKekyub8zF0ZAH?syW&OXmjtH2~SX^OL3JZu`BUtdST}l%y;zlPZK=c`Y_nq;=9- zxUH0p#!RYqs#~|N9aoIe_P6Ql%}{5D?t!9d|c zzrf}bk`4uab@FM+9^iw0lB&lEz6b4OZsCLm#xvTtPK`s&OyofWI0qhX!!UC3FoO@s z=gTv>cj6p%l`RD6Zj7mw=lqE-(&6&-B9mS%FzuI-{-Bg+v=b7-2V2c0TIPA`M7;*@*Z`U|4tkQ=9n(2^gU2s zdKUcVY^L_Ccdn}ZUP^2Vkp!lvZSFLU^gVRuNyq2toIJfwBaBFzrTYERihCHba}DTAmyX-WtNW3k7MF_p1S5(}usgjAZ6%n#lvJ zx!~YM7|?9fE}MxEEA{qp1lfF(Ws>UhXPS)em<;xHwV7t z8FLEP-Fm-Py*U!x;kUfSy#i5m34-d$&yD$;HHBv!g=#dWecx_>9q^#-l?LZ#(92GrR$ zi+77PI?_$8SX}U^N{jm;mXKf*QS`@hSWdOhSH&w^t~Kn=1&6_T(C!_eUslok^huZZ zr~?m=s{H)8N(iYwI+-ENl80DG5O99v-~P5y&zeE=`-yAtLru_I|;}#CiSnZ-DVwCMha}a3K=%J z1g3%4SVwiek27G2%iJLTiMnYC;ovP(shI2v{l2>5(i>A?yW^Ya$uT~QfSN${lF25M zd9Bet%EEJH&eZKSqS5~TCIL0_ft>&Pu4Sd{LSm?(l*Pbug@~l%EBwk#k=TI?v}5YV zEs0gTHpZy?_<7gPJ<-)SQ3)r-bhHMGxPJD;Xt;wkxNhMVHA)@IBA6;F=v7_you@#I zCh+@+`|MnB8#(T$dY*)@pbUj34}?oXx2wtSR=o66j*H;FTj+s>A{5=1D35|aMGKq_ zwA3s4*mB})k1vD|!E_PAcknM)cYI1E%o(t(*@YYSYsrZK>mfj*#hPy-+g2OC*jYTI z?Vho@%V#c|rj4fLQgP|9P@dnYjE6&N$?Dvt$7g48Qw`j3!nt#bc0cF|l~HDdwe<*V z)Fwpjd??f0@Q}&1vK1Bin8rq4+bF2W`(kslFW*)&p|(X-{}B>fMh+&AmCuTDNIx3z`%`vc@q=}vSVFyKTcoUE9FmQNwX`;8c@pmiaGz&?(M*D$t}`618y(dqcZzGDm~*8bBexNB$JL& zj0jI5;Bns;Qk$*G>8ALvAE29azx&t0st)e@v9Y5e-UMAML~MAxJLM{iLQJ?na>Z23 z0ivIhv)Xsh1!^s>_!tKF&OO15eIvrU!p-Z?3{vfF0K9bP-?IcYUXuyg*@ism!-vN@ z)qN@1)-v9?J265t?>UW8W|=AW=rRj(vX;zk@k&<4~kafVSayX^w~0Q z>$vLOg|SYfE<=65n?74 z;L3utwgaj%v?*yBgY+E|MS03LN-ta459$w!zvIQFdAv@`S Vvz2DjN5SMbwD#`a zx??z+>!H+Y8si+29sWETF9>-unnC#%bu;b$jTYNiE7B&a-$5lqY{tJtnr8ZoClQxl z(av`#w7#)sd?k77B(z)v!2H%YJ?Hsb7km4=|ESwPhVFc8-dA*$MoA6xWLa)k;<pNhAaewCc!G}5XDgVuyFn4E6zZE zd~?g$Q@>41$-zKh#>Vd5%K0>JmZ`iVnK}UF{Lcn8cExA+z8Pze@!68ACRDDp*v77N z*49}u`D1ke2<~?bAK+qc5_+ zQ0vZad{Dn0Ot7c7!U$?=Hq51G63b^fn_$sOnwLw6%GdF&xy0Z6A6eV?@EvTa@|z^ZU_i3lK_9yiI&_3h3!=+@ECYYtY(|%h~5FZiQ=qYdAFh z0}`ar*&N;BV@NA!7X9M-Sr%F_>bMZ&n?)zn0W3jI{FGIxa{gLv6Jfn?AG=rj zd30-q39d&R%S3tK&?sx)p5P= z()G3v2E2)~N@2+_J)We06f7jLp^4RR2j-rxWtV~7?B7Pe)x6Y*my)Ol0lB3cAN;#+ zi+?*t_vuCLbb1|EPuEb*kK};exdrJ!c*Dsa!KiZ8y4NuRH+3i1K|qpyI;HGknYnW3|k<=VexFO-4_7djT#k%a)lMjQ(^zQ*z;)3=5%-HHc?$p{)D%K$k;*9JTsA zh8@yXZstaD3Nv(X%zuJB>?1mDwr1JNp5$tZ!fvAmtEEQ$^`kt;SS3eTl(mu_YWj}6 zEt)t1#oso0qNf@XVJ@atJ-4~9u0Co8PHg0XtND=D|Tr42`K>eDN zG+j{L67gTXzT`&qbhO)y8yTifELwcM*}W>CGEY?G8r+sobQoAVlb719_c6ZLd-Cuh`oY*=Lm7WwyL zp}5MG$*R}1R-Tt{iucAC!c4VZsXc@X%Q`j-vN3L72LTyHw`gbP9HOY21z?o_+3zv$vri6=dD38PT`nMRw2J79sm8`BW_&@Sf+oSABKs z!!P&w?sq)~33n{UeLaV9)s6KI`WxNh1_uB0gQIGK2PuJl?x=rx`gD^H5C45y^G8d{ zmHF&>=#N?bA1C{X2=%mB%B8SwpaaQQmKnXU{~UVYZWdF%*!lf*|jt~Ez0j$IC z3!XHx`q~O5ldGXO2LNoZ^-Jo3-Sc^W@Go}t?tArroBy+_x|Q~SzxR~yt4FNY_Zmq* z7>DfSAC4fV&l2IIk)a*!>03J}8_D~(_EJQJm7i+8j$cR~eREVe(7V81hHN|x_d_Fnsnclz9V$yztUcHW$ou>iZ6oySLXZo`Io?70)GkoCGeNP WUjly#{3Y<0z+VD?3H(1N@P7bESgt|< literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-graph.png b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-graph.png new file mode 100644 index 0000000000000000000000000000000000000000..027f49d3f0d8d6f218c57619989f3198dbc0f18c GIT binary patch literal 191135 zcmdpdXE@t!^su&%YN_g?MNutk6s;OXQPkccMy%R|*rRq^MQt@}uMkA+#Ei5&s6AsO zHA>AGtr0W4(e`<-_sje3|K)vu*Oe=`liRt^@7!nK=Z?_URHCJ3qNbprpjAedsrNh`AT|^tdvuq{zg#~1Mc2jF)5pTyhQieK^lUoKZ{!XhR!$b= zsqPeYpKIgD;7ey<0}FR&2WLBq&&-SAWEj<-|MzmYvZ2^L4I%tDP2L3pv2pgKAoiwU z$gqoN)ASrXoopzIH-;ZlP~4+Xc`2*+I&*ExH$ZP;>g1QBZFRLZ=OYW6_rPn3x%Y~l zsPA98&s%@bzD$274^_Nhi<~I(zFr{1uhm|dpAVE(cp>}Gt(Oe4qLkLO@A==q_$v2R zQD|wevzOy(Vwd6#uFE-l@QJR>r%NpZLJ!j%H@2mU`c3^A&y$Hcdp@i6PH+4fQc%op zDQeUH{o^O^JMiD(8-we57ygc$BXgPl4rhV?VE+y&D()Ab?dRF^nqF4q&xqnP{8H(; zzhg6n|94OaG*6xT{6O~&*P+6y?MzYR<21Dv9UdWS&$8uOY3^rmwkvIL(|`WFn6{*P zRul35y1bMnpjOMDB>q^>g1+AXN}{CN4R1ZaV49!(mj%VlNhdF)EQcvD0)BbJ@t}l& z(LPL**|tmmXSKnnf7#>}p3AiRo*x=i4f;}}!cUSQRJ7<-{>8u~bfe`Whx@mh^jo*@ zt4LHI^YqQkE?mW?Z^?n>?V>c7V~(#No|aJyA2_}@ril;bi|Kczi@mSfN%0D3Paj;#l6HR~133Zt$Nn&H?9XFJx(&GPsC6PuT4@bUU>fyR ze9LhA?qGVpcls2E$#>4EOJlFh6I<$EG1UnukFg!&2?an)ct_X!>6vKWRb z?}Hy3W<2kMj^FG+MEb|az$eoiYV@_0wSyWdG!lkMg>7T^{kcs=q24LL06ChdGR=Wc zx7KfZsvOe%#Y+?^R^Izo9=G!={ieXcfznI3e-6P5xOa*2Qy=y6V>#U-k@4`;&8LO0 zOLEMxuJy;g_mv$aoocE zFIPunF4F5Uho*Hat9bm$}fC7UwoFDM|1?KuQ&*p zyZGdns!K;c6*Ca5;Wrwnwk3qm(WpL+2bXJvaQby@0yHy#UV`;# zzpEnO_kzSq>Bj<3jW}gWv0teQ3A=LH{dOEHFrXUJVbdYm;7#jreueWL5j`oqQgH)D zAwkb1zOW`7Wxv~F<(|_y}KQwz~M(-^!9UY-4wo=a3aFk@YCR~fVRb-@rFU?R3%Yv~eAjft8ydOoX z{ycSQ0f=w(SN%PMC8_=&1+zhko&)@7dTX~VOCqh_b_&{ygf`%|J+({U`@+=_Hv$p; zIUdP21U%<#HN=1NC34xffXkDu*lGq{LJ5ycX7(I!{A>%xK~;9cI*&X@V&Y_=E#GZK z-<@xj;31}TVqr7h{JxtQiFl)ttNOP9w+WdR%0gW;)^11cU(7>D#>+L|MkF3h%CCB_ z+PJegWCgM-Y#KV^l>SmYJ^bMvm<<`VUUctBYckv?Ddn8ou+watpR0B4F^AE%CgF3e z3o?-KBr6d*Ti)pR^|2|or6Jv`Nq#T3XAmDnOug6->9BwI04mTA7(V0#oo@5cD}$#| z7)zIWkg4%L+}Aa^dX7&~Ydj7tg$Q0)GVw-!{iAtrI-no_!Aetah$&cAP*;%* zU0*Qk`*LRttw~G?jWPiE9AOL?QZ~WfNYp4Ok zV3UCtOSNv}`z|4P;KF;m^qLPkb&(6pTDa=xFTY5OcbDp{EN#iJN*x^Sz-VrpT(B+B z-rgqmh*iQisxrrwmgoo<+KTT%r3-F*=+;(o{pSp3y=ZxhMGr!`Yi%4;m(uIjD<%k* z*g~79MjTy!`c0_;`8iVmlzk5=H+UGV(mk|M(aq6ZyfIVELGB7o$0oYMUH`+Awd z0P`eu!C@-OuI|U~wY9_XhwsOj{<`_W&mzUSjlP@yJFc5su-kT<Y*S&&I}CwH*AimRGXvSK7y&T7bMV9u-l;TKAeMpkZk~PufFtWLC@Xe{5gvPD z8~U#_)L{zX^>b;nHn2^TrLVhU1#BXhQR~+E$}5^CaZ&~(b~0d&-J9@+99a~2Z%P(5 zGue)@1V{p(KvCFy=aq4V(NvKhuMfGZS$D8q9*_$l=rO zJE1tpco9%-XXInlr5TOyhgrefk&b|jbjRHGpthIzs9SR*ni!X{@>YeLfWNLgMwjeR zvgnuAhR4~0D^M8LG6vfkxw#GOSJFV!x7kXQPW=@`yJYETtjJ!p8e(zoCVbauZjXBH z`HOM$8FN!fl-^VG8va_=o!mwzDtB+g?mI>hwuQvHcg?h~y z{Otp`$>f&cTKc0gFjDZ`g4^GyvRGk(H%ZR|9q{h?zi} z&Hk8`U8(9{n;jxYoHbIJ#A;zd`BYa2YE6%g5EhGL+vd8bm6Zcv^e7 zOsSF}o*(X~kkoI11UbU18k2(oD)8x1W47aBCl$b(e7|;m(r%G$q`P?j)=r>>W?DRs z9sUfcJFq#F5xV5r{rFoEDA_18uf4%vIP`zZ-Y8RmHh8+%lLu0_S7QkIEv`nwcd?mNRS|GO6_(l6i;|%R7+N2MOzu5m!06ZouvQ_3>`(W3_5tk4~m_w+%c|1Se7kvkc+%_@NOQ{77yFajd9R!$IkT z#fF3xYjwU#qu%n8J?Dkk#&$lHU)MQ@ z^25?;4yH}gcz)w~$gc^?rIXplPR(1<+g5QG_s}wpEL@~hReqsGIf->oehEw z%t*r>Pao^EI9AdUUA~p~3XpDDrX1sT$3Gn%rK(3YxK)m!NmwFQIC~@F3q}zTL=jn&wc%T9{DHu1!)42ci zr@qWkuFd#l5}#G9yv-Ui3X4I!RQl4zkE<3dc-OF<)VN)L-mjCpI>M;vvnZI&(?oJF zTc>KoB-B9?2^rBWWRi`%1QC!iH#bsGD7&2$yip4vx(t_U%?x$3U4`dDJF0;VT^UH5 z9(MYFkN{Whn+HcAYk#9`_u;*j&i2jKZJ@v2Y@VHB2P>&o(o`DpfPPx|g)~DV0v%m| zYgm*IZ2U=;#SboxC0SyJ2eum}T%yWC_-cS7zyQ z?7z>kc}?^3$N;HC5hK%&WJ2Fl!W~|`d1R}?t8d{PrnzQP(!Lp3oCSji-~5W!XN%c! zEal=H*e_0WsSiu%r+yr%=j2@aD+sdN^!bvPaKjiSPj%5s&XN|`3TgZ|@*j*(lki!$ z(UWG@29l$=&2pLj0|PjP1pD9g-Sq%`S4{V%l%>7Z7gex{&AN{i>1w(7oO5;C`pH^>8u;)(P-`Jq zE#5{(2b}1Vg0w#^MWkiybU(n1FO{UCwEpt*4Gvfl0-hn~F4N5oOA&o8!<#c7ckWsI zSFaJarfu8_*CJ%>9QmB&;f?*9$Q7#J&zmT0ZV0&Ry1q;WIf=hSL9wex&hc#jrQ7lr zd!uF@&&Bl|{#|E!gNi)+&8q!RStQ3n?MALW5&#D=8L^0f)6EWlss*05aY67W1t`c2 zlx-}qgzog@%|+q-Aw0UM54&e9wsPdF#odq3D(NNXi{Fp)o`T=8YABEX`xZH&IQoyq z-P`MVQ!k}fPo9HSYQtoVei36La!Nm`O%!Y?IKDpqN5K!i{*b_JADy17M6k-8|0QLX z82DKE=FJ--^If=!aGgfNCJi#^C=Q2ORiHCZ(ibJ&h)U0OED%DH@JJDJedIs{(Ml{Y zWu|ijbCW5nl!f5s6I6>f2cI+z7;lCmajAFnCoBTQ&q6U_j+pz!s0Kx?X6+H7dkD{? zGQrwemqd|TyZS9Hr}5PRnK1(b9XH~ciIj6%sf?7H2gGZFAlE8)%U+bP66lEB^|o7m z`^kcIYn5nX-Q%hPPy`JZZeCkEmr*BaA?Etta*FPn2}op;N(TYi+>F*M9EH*$T!z_} zFmO9(hlS(4z#5-97XS+Tk99Z-%nW zIO}_l<|-cBoQ2_o`=f*m9{to{yrF4u%+A5>+k1y*BPS)Wu)37E-P)F;C9A`!hh3Vw zR$fbOSzgPC3daKYZtEc?dOS>6VJzl0Ty+QegNzE*G+)ki)QfQ8K zDA>$T*^PbpV01(Xq*R=Se{_1V>_V@J*|}KapX6!n%O71d)}DED9DLG?b6}=bCb+4- zwrX@8#b3;?xZ@4&+`;xL=>3>0>Qb$nU+BQ;S>O~F@U zx93J*kbq9lnjmRCTn6mEX9XhZBuGRzm<`F=W@(+M3Z6P=<(~?f`VeE|a~hNsUl$*bx!oFH4%!e>?JGkQCWSEnq`0P27EiQ{`7@2%N z5SqU>kK56CSA=ds*RE$jtaT?!ARCXocVmAhHgFrO^w<%CPimE694kKCwXW`34g*w? zO?$vN0x-!(l?oGN5WL?5Lp_$<2tx0K^E8(0Rv!22(`QdtxSSkSpX_Ikpnh?K+Hx{W zCth_9q~WCZ4u-D>U4Vf*lwoSoHKK%&R0chlA6BFPNHNW5$;Rd+rrM90jKAUFlGb^U zuNo|UR&LaC^D`aQ>-*pVo@wcgUeIzl3ELWLZ@JsK^Hx{H3R-Kq=4I(XWvAvP$f4)UN=3a&DAWC~Nz z7%ccTm84f)!E2O)59;+cx=n`{@U7{VbkE$wo)wAW38J1esWy1`#j(vBn)uRhEs}fU zpu`)8CB46lrw<$Y?C>t^oF1v-T;Jj>=#IK=(0myiB{|NJyOXGfUVWbL&r+6(2%t{K z%xMGqI^c<$5z?y9sQoB+czv}w`ijyiL`Lah-_VUI-NVDkekmRYRhiThXpGCsN(^aN zzcpUyyRpqkPi4+_hLdseK%jFa$*eLP8|QLbG5xj4027BH3x;$xL*`hymigGz2)L&z z0RDYsw{^#@G2bgUKo7b$FS)aTIWgIi%zvrp7|N@w;>@S_>j>tFKfWf4mCgzD?`abs zBGr3Uy7Z*{ieS3FI#CXs+DOhC=hZHl*LPlerw%c1F&}!+wi|*becC6p1izV@u-&4| z#wX6^C+!UPZYhb`w%YB_(vuYkC*xSct^8G zQ9@eya)a1ODPH1}m$XftzKaAqX2MY{p~2NHxyZsYe!wk=D$s;>zyjmRwEN_fzqK}I#!@+a-8fC-^N9067tlxXF|f(zFr792h%n6!?i5%1k6doQ%rJ8w+w3mzgJrjV@~vaO|h zslxB^_gmbUjUCxQ#pZ9VmzOH7$eN-K?Cm9M%HmkUPiQOMYWA4TtX|)pv|=UW#*0!9 zZb0du<_rf+UWoWO0Dc__yVh@kXqgdJPRu{z1*j0$M-7I)B#dgH^Px%B_-cQJaBhFR z5+}Qt=kVRW>N=L2ImOqtG_^r0+`{@SS#s%TYPeRvtU6ZH>{ao~=*$Lub%o>{B?YoT z0{uNRjc1K*@hX$7ApDa(p7o!%PQJFaoH^Bb7+BG8Qt)9WhT_x0x40`XU%r*2?$qpI zXRYtxv~}GRH-S!q>DbiDr%JXqoPMLAT3rP?qPS|cg={*~jT_Ap=X6cuereYc=W~)5 zQ)a^WJ$uSrF>xR2SbA)TvXqeafBh%Me}&W*^q!PNQWL*?E+JN~@xTOii+FA2vHdKv zZn`4g_`7}SX&hSkT0K4X{HOsr6jOpvvKVOfe?H?sJXtLEO-d^5K<=_FeQN2{_Qp;3)!R4@^rgkgk zvHld5swD5-P$w(+mqsWDG{tF`ry_<8`d!Bn2|$6el~N>wb1@&(hNTcaVd96m3pM5E zYJ`x1&JM;rQDdvh-zMCp2UAritIQ|e3iCXz)x{_|UB-you%6U{Ltcqzx+;=RU%JlZ zTNP%rHjx3n{(z;Y5*yy9DWQYw$Y0v^+a1G|=i5vYt%xXbP1%41eP?yR+SlumM#4&x z&z+m-ani3!OTC)Px#^CCeBYXxvz9YH@aIu<>Hyes>da z7}`!>czzl-B_ZVQ)D;xNIHo0Ql(GAER{w@ZCy~UgkO^>0MPll+ zK!S5_c)QX_mVP`AaAflny-d*UuP`8$GJjPH$S`^uq+#jmnuov25}PjRxIO; z<1lfeTs+>^K%8gsab|-4$UN#fa1w)+3irEI!s%~lw$0j98nq|uS`Yett}Lv0v}4rj zINaO0^FqB+$otV?*?Sutkguo3*y@N%O{J$)+R{(;UCJ~A@X%vXAAR=}yn7x}XJhT; zr<J=3lnNSNhUAS%0lPYIVHoS^XQ7ahRo=;_a>H_Te6Ry2Yr7Y<6~AqU1!ub zVjr>!mh?9}NPsecp8^1s7Q3HVS$;fRSvx^!%5T&WmVR8B8WJ~QX}lV*$E0T*#d5Aw zeBrh-SU)$Q^V;w(V|PmTbZ_NsbAL*}GN@oAEdjS*0<2`@YW%MkApC8DXc7Q88Nv-45u{c}>m}f@WQbMdT<5F@2bO@hTzL%>^+&m=uUZf#2F<8k<|0 z#%)44>`*_qzbfw0EkE=WRf}AIqKwm?4BxXi=4N=V|MW&jqee~Ktr)V23-6hM^Htl_ zCn3$75>0coRMb-Mp7YRPaxE$0*^Rt9^f88}w#lY0p(pi$RU^+=G~Gs_uBzf!oP5DE zW0gcz!S!-&g`Vp5&U;6~2E?H+3rC!-d=$=j$H@=BIDwbSL>{tw+W&&C~))XPdo0@=7`P90lr`Cg3O9|<)xfnJJRG-$-a5bVwW_8+Y5q(jwXbm0QJz2Ch2ldeHBg%2M2B^ z8Z(%ny7uTk@0gzVKW+05B`F)@ma#kplXr^(b$y9sNnC~j0ZV>|Q9gtWm`n;;`22z$ z=GVH2*Y=&!jgMvN&~}72dBOgX{htUw-)5-^*0X#^)Oet@*$=P7B-2--<(0oi~0*IR@S3BA^yYpoXOjwoeM|4bP`(*H;1bPtzY- z9vO{C9CU%;x;WyG5S%~$js}yooPqh2nmpS+ynLM*p~Q9C^drO?`4XvL42@>m{Z`a^ zO|+VUDSlMw5p*jJ{I8kr)5ePX1<>VJ#-HMEAk8O#p>Gx3jQnubjhdNdSN*A)AbXv; z`-Zmr_S4S7DYx5f5_+hz$P{K>HGH}HPyG^Px=fvyN-!j$*0PAex$DL9@3Yk*+tj3~ z%2efItUfPw^F^LV6Z7vS?A0_M6hjE&4=kK$G2A>_E6StffY|t_&l8ai=A?DMh3PI_ z&}kNv|A^PBfBTCV|3wgO^buUK-xUq&&_B%GSz5&e^XdrQ5Yu^jw;=W`3t|dmNn^+S=zW{JlZ7F6r9)=nuA!x+!6IfAc2r6YF)e1WrFr}cHnd>WE)rTA z-5umoq$oL1=LaWF&lp_ro8d1Jp6#31v2~Dyn`0$OwvK+Md^_>bA7d!YvR2CbS~fz& zFJd@(#|M`mK{D5cyZv|JASrNmM_i*ZXr1R}|8U2ov#ft%k9fK0_k>}sWX)jm3I-N8 z^^D1s@T&R8Nn{(6X<**42S?=Mx*q!ZESNIAwtI+VB!05JI#ck^5-0~zft|9#flrNd zR-({KyPX!_sR?5S^2lQ7j#5sswu(NBRArTS)7T-aS41LWJCfWDu#9MPSq!g4zlgHfggkga z7O{Ru-<}p+qAziO43*8|INxE3WeRkp`C&PCQ>68THCgXr>U`?hIzltzLm02o3_7QH zb6P9u;&T{h#Z;-cTZo9Fc}hxrg40pAgR#LWNjFV4eHjqdz@WF(tk06nQrA_|9e)ca z1WImE;tiJLbV7hc7gg2W*tbav1C9!Y`HKH)VORWo+U43eLqMmN&Xjt5Z9by;%akv76*kkG*l&uJugE%av|lZx~)E8`++T863tdI;^zn2rS5f zr~LV9-F`kGwwU}IR33h*G|TA-FSDb+WaRg(Jh6l1kyq~T8HI9E)qOFZy*gb3zn=l} zDw{HzB7VEe&-5#u%abwheIW!n>GrgpyQa*+ac8Irqc?46(@N#gF)ZHbts5&r+h`{B zj+2lF^z&(fM%X2D@|4ZU`^|3#0w>Tphf1MeK_j9|7+8B3sT)ku}B{W~gdi1)noJYbbgF!_3i3SJZi>UzeWl!Zed#u;D=Q`CfvCQ%1bY>uJ z!2MTqpOKnk6-@A0)!|6q*p^!CZI)ndeAnJ>X5wuDFLL*KRIq z5ms8_;Kjoz6E?MwQ7P5#X8oXJ&IG4dB}3L6EetYjoW z0zYo%xGSi1Z)s~5a215`NmZCaRpX46d<*=A1HwmWm6aMVj-v#pGUXP8w)MVe0+Q!Z z`P&*1QQ|WCr*|fv_{84N&RlhuSHlDE^PbX#vM26%V)PeUZVRmPKC(-0p<5GUEst?O zYoVD&c~qGl;(cy2&e8J}H2N5r1gfr#Km~x8)7EX|z|Wt5)^QYfNK@<#E=w3}1koHA zYDN2$vZGzIJDNr-y=f{0L7Y82j4aM@INI}ju|z40sl>bADcE7HFGvD`8XJ;a_0kR` zeq~+%W|ZuRja!C7i6YK!P1CRK6M|w-*)*C67rkPcij5`Isu@-Ta6yQZADDDf={h_j zSo0_`@^^s|ExbeIE6jhMb?Dn-E0bDmlRPz1%G=L6+S2UI6yzTtP!=jd+E!8xShRs8 zLJu}qrU;S_tDlukJ$f{{H9@f8(@lq%lOk2G9MK==- z5B1!sBt1_>8nHdn8s>lrHazct>QmFvA-TS%+Rp=M?}RKYF=LmH4M|qHJ6xTKH(HUF zi+8)s`b)m?C0i;jXZ!o5oS5J@L%XM`oW)qlUcr8_pTp6=p-{4s5Q{6@cfo>L4sDoV64K1H#dVxn5ePcoCBp z`uHGYagDvkDcj z|5MCXHWgFW?^5#WtYRVxG(4oT!3pX1Z+Tl(nH-Hx4|8B;D}OVzSkT(Pfri z*Xb_=zEN~)yNg)g|p_H+$SFI zNArZ#sN>Rd8J_~9ERg83f0O>e5UTeHXY!NkQ!A+_P07-q^l<|rQ4byS79H#rVkE{3 zQj&(W0Oahdg%jU9-^a%MDeOspV|vgL`-9SR&lsNppDHR!O6gFEfiDQ?qCoBaK9W2Y zo`4JOzfVU;KSr_XOlgXdyi0?yVkWk!O9)l`;YYK81%F`OBQMgDv=F1$7yN@#W4j5wKX!GWs10_?=oWZZW;r(G2#oVM%TXZhE8yhak!S;?_!tWd@rsGqy zRNTli2)Z;6r%97A;=40GTo$b8+Di6ypx^`XH zOAYx;`RMJ~>!Vzl7oo9-S?NSZftomTM4c7?SKaBiwB6JD5!7+(wMZ3v+SwcTiUp|t zUc4x#yUUJrd1;5N_b58Xc_NNP5&8=cH?{lYa`=4q>Jpd?UQK-$Bs7y{Y+Ca0+iq&D zlnWL1oBH+NOw7HDipOcs(#z9(6Lhy682nUlB58fpYj!D*5_f%|MeEx7hSDN>7iT_odD9P+5Yj&jMDM|`!d0Yb~P56TuBylA!6oaoH=l|)q z{2XI(C&A)tg{ffZ3^BU51!*4F*m!L0^YL^&Si9!LhueQDIJt?ytU?>?xmzgULNRKW z>S1(O@$W^HXKwFDQ{qLzZsR#N4mZ};1sZyN&0Y%=p?K-?5<0{qo?i zI#+rm9X-AxpI3LR-(mqlPjSYnb0waaFe&+PWTy9TV9gJFk>p#EHy306Yd+DuB2T?6 zs;%K?vb0{V*KI8dSJ@-nx)vDIf7%Q%nmJKwpL9Su&^B{idecKgwqL(l08O~w6=nfk zt~Bqmc79eBG1;lrH?Iiq8}+#*%wbl&|G1UuMaZygfBheZdHs8RnJFyKHqa$8xGCFg zW2n7Km{w=GGJJHgY7YzD(@1z}NSiC0yK~l7L2j(LE2dLh>QKS%h0}CiWrysqV^;&l zPfNF1o~}Y^F(0m;u_O7mq^c2oTKjufU;>k-c>MIu9PA)5!Sf~j=FGT2oQKzFy!lK8 zUxqg6;JBK@3awYgQlSMWUc zMEuZ_+i^+haC1CdZ_Q$3Ozc$A$CUBMaK#p$Ti>GJsBmot>P7HL+PQ3B_Mhfokr%qc z81!~)a}d^_-ry==Drxqqm`0q@Yb-3J%NmeaPNE;IigQOj(pju?>EiC?OB*Y`b6YRo zoCAKe?MtcowhDuz%gEPp<6p4z{}{Qot@rBF59Vw4PHnHRy05dWy7#Fdf|nqW9#1pv zD(Y=&srLhvyzU2+&{@9C!B07M>hY^4ib7q$JkM8aXbm9>-Q# z-%*^WhI@EBM&Q3X7)VDpA6UeogN^NNkAxG-;k^aCQ8{7Xuy+o2Ve( z#3yXyhry|0)%Yw7&Rk3pP1jOkYJ@e4sD|vL(3%AuS9QXR`00I)+O|kLUI=l3-o}kL zVbM%~JlJeC5P+Gil)Ae7txgjsPQ)_fe&XTDUaz78GD62xn3I3eM(ORZ2kZ5yL~O-; zXl!;yO}Kvu+qwGDXgKud%xVFhfh4(#sh1m_MQ&+1C26=kI_|QXj0OK96o0wt478>V z|6um4$}CF8q|hofL7jb7#OXsT7$=sS{onPjRPh3i+Fb`$GlJT{zD<@l=}1Qf&>I~$ zdQg6f*cC19wie>4#8V*s_Gu|;1C{#;)1Q!-Mb*#@j+HX+pc)-KI!6J|A(D*AAvHt`7n(NImU_)SbsEsl}o6OJhtJfkTJ^GX`j0^&HpK&vfm>DA(Dmg0?en89qs1KxPr9J-KShO( zUhjL~h{=wN%aLov7gy;E%C{erGK!5Jiwp@EywwO9g&OrauH{*P8SV<4elD8cxY*3` ztPB|tKtfN&^mOb;?7?R~%T8~Eaqw{0CI<-C3|FSAuIE=};|3ZpXkvWLDWIpN!EvqlkU{12%dLRK&adU|}+6!nM( z(2|MBAsiJ@CUAKC1V*mEb~8W!UZJjTCh1r6aO@KS<`~_162v17ZvU^RO#$LJPwSf} zLX6~j`@4R6+X+O>HG4>GPdzUb4A!uXihINmbtO@St1VtVfg}^7xJoDKS-N)*DMVS) zxqG2@p&*8sadQlLmsI`pDKg+Et0|)sV0*C-j`=Wq!Za$Wo?xvpQvy*zepATJe)TtG zd}BJ)&>;oFKE7hJd8kQco?cvQQ-hw$;{B=fD(X^bJ&6Vk=&MRKazuhX(jz$!P-vY! zDOY&odvU=wrE@H;z=z|p^en^alyJ|o$}OWQ@&wJgDgQ*=k&2KI@(3>?VN788XO)WV zkKZt3a#OZkCXEu3JYK`2=V;6}&H{-yYMgtswv?SybL-Bd5${GilN#5|yZ0^f)NN~e zQ`}uBxw{y^{unbaW7DJ06Jc5-b4H)q{(6D&oRyx*Cs?ax*W7Jxna;(>k)C-IfwI4KFJ&d%Q=M>ve&Nq&98;!o zXz8Xl6+8~)4OT}wGTY`*930{5f-TZffd|=RY&@l9oVj1ljGI{KIdVPqn4OpD0Vst*;w@D3IM7~9~LRcjHNEPhi{+c*x`LW9>rQPWxc`)ge z(&dD5xsZ6*My8n!U=Y$}aPpRQqX770)6?VM`-Nq`Y97HGMJ*v=r3T@TMYd`5ayb~u zzAmxkY3H6}PuQkcZEvLwS#vH(39p$ixFYty8i0Q3`o}c!mSr-FHrDBswPx0+PGVFD zW1HHFvh>X7nYhWlJKW(VAFPVh-nQZrT=3YSA-oRmJHXsLQG>I%6ILC3 zV8#=5Gdb9)u9qvZ*S3aa?x1YSq?cjSQ;I${vL8QQLc*!H5x(=jh?2$XsDX{~MTH|| z1H%zJONpF$WK#8(2pY9ziKk!^BQN?BYRz#b*>4p4IMS}*FC=ym1&?6Kw9>`>T2jza zL33con4pbNnsrrNzGz0Tka4e28b9Y-$~%kJLQQCk~2@_vo=5JJnRvW@X>d0oE|S(sOYlh=Vjzy7fQgHFzHFE z22CjHk}t^oWUZ-_B)6vC4$eHIER_oXg1++uIB^oH+jF9&=$0nAiZvdip;VpuSwcJs zj2=!Qso5IYpbV|6_MefqlPBk_PVLxqAVOqZ#kcQ}eFJNn^-rp^fYsHgGNwR)wnRg} z#y#jjbFyiSd%u(!J%y%bY;W&AS&+;+o}*u2!E+{dIW-yOcS*m)750WpC5fhnjl_QZ z@y{qla}4=iySZ63$fV8EawV$R*0kfNCU*Mg$T!yCcQjgjm zU&)fG)qu4e)>ZpdR8fsEzyNIJaT-Kso|NcpQJpxZ7bH3ImFf-k1a(`yOm{GuO2Nwg z{cgeBh`Oe8CJf~G_DY*s0giP#UBi~qHZf8N;JGvP5W6xY_G9GHDBhI+qrY{kCL%yL z&A270%gMcgJzq^5@+397j4St|_6%7E-aO<=lsXHb>vtjrZt=?OWu9TyR~MQTC>PGK z5xSCgB}&~^{y-^cxQgx+8cWy0QB#32IQrxtP@x%o6x;87{4YbX@gq)ySI=f159t;4 zDmjoKov-f7fhl%r$xc4W!ky{23(l>2nx-za7T3p>Xf4|FxL2sxw(BwB+W_BhlD+55 ze=y$)>N-mG|6x~%NP|Vk(3q;du75wmfRDLuDhKv|0TFarHZ-6pjw1)2xmWOPMMB2K z$7fPtqIkxLL?cug?opfN$1Cz->^7&hatE-hCG$xyDN&gG{v*p#=U0L0m~9;9mQ|QZm{RIjoO?eUmpG=W|E`p5hDX*7>7S%3N`p&FMtUI9baL!DN`^q(*n~kU^Q^f$*@L^J~Df9 zMgD;2D5+}QF^hB}Z~DxqaqCSZ^rTidg6?dA&u0r{b#WwiS@Mz2xG-C7#hm5@zhrm_ zCCL<7ssLoWSy_Cy-6*|db)yIy`Xl8AJs5>>-tabZE_;vPXo(2XTSVD(Pd4RQ3)fCI zM2ByGa5xX9h`DpNYv1*L^W(Ekd*MGH$a>AGWCls#rxESqfFlj{jgoy{H^s8zxERCE z7nB3+*OVzy>jG*c+D7RYdteS9dRxx%_V?(xITvkdvFL9MWs&vAe}VJVx~Iid&Ouk@ zlIacAo7xxZuUsQbVAJWqbXG^V*R*fYsq}!6Bbqt2XTg0)4w1yE1}?#a>wZ*$q)^v= zwB{`08EyRHFJIw^H(yaWf63_Dg)bE6&l_I4p~dy)VfU;2OR`Njy@QyO8 z%du?jzy^Y2%xFstN{g|eXMvh8Xubu)@1h{MbOxdN`A}eO-&tBwgwN$OC?Y*kaW6Ze!ojG0*4V?a!4$cz6WL92P z`g)+O)`+IW;5@-&54iR-^O|2^`%cH|N-_gGJVu@)lR+*ZRz*87gprYDUgpH^^kDVi zblv^?;uyiRhn*%aT}2;mzK*vb$`Zl84p$soR=EvXs`@sC6k>oatHdkt3UmOqiMu$Hr&!@flh{0FH zkjjSN+a?3s=IXaE?OjOu)t3_s_LA$M1!DQW2;Vqkq$Zh>uTFljomiQj9%$|3bB;gE z1g^RLh6Mc-G^@`KgchhJ?NOxBq`gxwh*n%^E5zCpatH123b*xy5!#2pU|IF}si~-F zQ||AeE;?>o?0P++*;=(}+nsCv;#9vTM>tsBjp>U*Bh2*Qe*hT?Uz9T0gkDEDeZCjh z<-z7_ovSvAzuX{`qu)B0yb3PlJ`WxRKZY0?s6YgX zW|nv4%gDcw0;SpYAVMfpT|OWC;B3T~j@F$!-O>#l7-K?dD7Gqq;Z@>;6%QyD9*H^CCK*VP*Q&PoJp`J-<*=IbA#2P4m)`1IF-2 z^!wy~1u1N`49gMad(FREu~Q0U5h&ecZ$0P_u}sE#ogWA z-JL%?-}}!Tm_1V^J4Z6eXs=WSvnc7Z--InJ?5_XJ890FOwIv zdDkQ(^PXTg=ijojd8Do=xE<7Js4PF~zYTvjUY)#8@3rIbK3Z??aao&bDC@nzY|tgF zV8rdy1N0BYw;1&ULNByPHAp6S3OREYV^B4o9t%4q=&h2sD6y$VKrxtU)QZrwa`URu zeev{iiSse2GD+S52_ur~+f%DoBv zFJ3f27tc(iv#uh|c5cUMe+`*=#tRu5J$MBDWkVN7BoY4Zb4W0Z`r3o|{PeaVxRGR> zu{B(nL}&E`RiQ6knXhJa6Ko$xK|-ed^P45GUn>;E(5OG4DY1($-xtG!twlFA@JP-} zW*1`F3#EA;+pB<}Vyc;I6Wa@qDP0i2z&pz|B3pcC%|ISZB84Ot118VoCeE<)Y)Gew z2i7J|$53IL)2q|O3uQ!TE&F{u>B!+a);h2ua4jK$m|0O0zXqRcK;f9nSV<)e5S z(nFQ-qCd-C0E79)57GLr~s<8Jh5?ES%gBR-k3ktf!!i#)FYl;naV^| zT@|U#!#rEl%Lshp3N@3IBL+!Ui{zXa`A-yR8Od4)a+XN)@(k}`oP;rD(wqvUphnEO zG!svJs4rL@^+)|P31gFf9-W7_it3Mhk!}f460+Ru?Z*nc*_HSYiH?(~> z&3l~0!>6$1+>MB z94>l*HxJHbibeOkMa1!yy_#nm7Q7dkZvTcT{$L9Q$%ts1E`K|1JcELG^jXUd-G^0| zBNgEDzW%b^8ccD5R)m6E@$+WBR2VeOyu;Yv+tj$5+MHQ4%=L|R=rZ#QLR9mW@HveK z9cWG{-YA$xe}k3UkY2(+BXd^e9Sk(7F`dZ&kOPk>{0Yo_Vmb?{mnRoFsp#wYzJuBa zp}<0uwK;@87Hi1~C91(}UX&2A?q!4_D@sGpk@@4`&pyz;m*LitQm{pfkqQEqv zw5*SF&Y1MNFp_tlA*5Hev$M{x*Q9gOWLO9v%ub)ylX|N+sypx{iFAGpBXrrs5ihTl>1w zDOfa->x-=-N~KHscGtCY~N|N@O0zm9YBC<>-uGwiIen-6P)&1uE&cvs*p6bU$%5 zdO5kYD>J4yTH$0nma()zvr6%%IP=Am4l|*KKATsEtyAT~e5z8l!R-CRT9;@wfo&UIX#{-X5x;^;$`2_X)!3DcVEk>p8augqfR~z zW=HOnI~r`64GfHycDm5cpt~WmI^|ev;D&?3Y`1q(GRIIi>yRK06(LGeOBj zTNIbKW+{}e`RK?M{FQpk->~T<_lO@8L>NnZQ|pDZnFo2pS1HoX?`N*4KQ-aVw!lb_ zmQ{+2u^#c9U00SK7JPE;Kaz##+^ADBwz4ZTZ}PYuGveh@$hMaDol+9r?L3zhAP2q| z_;H3SN`Xq|Ly5BN8pOP(56OxXbjr9k;hcAvUZpM^$bX{k)5@xsmeP$E%-n3|jMFW} zW@$PE!^usc|L(e(E6dll^k^6Xb=U>I6vhcyKlLt^5QFho?;btM!{zAw9Rt90$$F+G zgwk~lRxd((4BUf0;wFVi&xtnE#%y2A?KvQ! z@SBcXtfWeN=!69g{)jUskQtBRfvWJ8v!r?3zCK}6Dp)R|-F!^W3A*>0cj*PqF`=%a zUVbP397Q_6eo7*RJ;pE|jD1ogC3uFugQi@RTqb}xk7Pj^_v3%?ho+BiRg>BUnFbP% zHEH0BtiP5T`4YE1mp^P-zmT?zo$Of%42%h=7W+-oc~@w|myYS^ z!2789=!u#h>SH~wKqXpe{n7NBHut`LfVz9Ui90gMm34LY2)Og|Ub1R|(K0slSTQ`BP1|Vr&8?Ix|B*t>yR_00}lVmXdWi?A6+nBROx&`}e2gs-hf>LRYkNrhO*g8zF; z>ZZh=?d`AarJ2L!CfYu@A&P(q&ZB@z5RYYL9M9NDl>Ykpq zTk{B6z0&;)UlCy6_1FfBZ0U!qP8kaqhTUx%6ylkvy>$L|;lG^t`R&wTILI1LhRZx` zkbI=L^~1XL%eFx6o!^Q4>w_@#J+2M8qA9G0WRxt~G}LG@i^BqMa#Y=ZiqVMsdv>K! zLrw9}&_l)M)v&rR3(a=$Fdo_e;Di#sWB|t{sr={4(P?E7@5Oy`n_B2mQRnNg0FQ&u z!vMU1s`st+kj8qRo2K(z6XFKU%uOB_uWk9O%=J2KFyEoQHo#WIiRs=hq7*sLiVd$h<15PUK`ZFu+i2+zi)Z|#g zz?fTV9sxrtgKlKJyFrU9I*Yp^i;H4~2}2fS@9SG5Gs z+1!j9+-(nAH}LSSrER~RY;sm%=zqKYlCbWqYX@KC-#~kNd0(Hgt82OQ++?z7F!Pthm`BNItvzF(5@1O@} zTxW3_xzTKGg)_t+TnhdTl}BEb#zF4kvIc1|I(ZQ{Ti#y@)+8j&>Clf#k6d2uwLb+H z#d6i1%-?fsYxS@!IqBt2y51)e3-q>8o#w-KW!O1(RjxQAG1|3s4I0-S?`+16?LDJt zo!@PI&JGOOlC42b0={tzG@Lpewp?f*a);Q7$ue|1jLRUs?D(;T`}sTeT96rSE;+)$cKGQ!T#v;;^%qAteNIAT46g4#y%G`@7Cf54 zJ9zPA?#KWzw}`3$6PRleG6w+9B&kyCKdwNNXvdiv{97)QzhR-hkh+_S6A4Xiu4&_6 zzRT`7SxYOrLD>@L!?e@=Y@;P(Uix-j*V>MMLcmh{E#WOFEFr@ydg1qgGJ@cE9&HKx$v?=B>aEjjBbz%8hx?B2v(u}u;DID`l@ zD#~F;dO}qcWZr{b?b&>9--Y?wdh1!c?TCgQ<{`lSv$p4JbC>?*XRpT--jTV`zD90X z8M`xrpX)k))5s`-Z>^Em)~r_uC4kbB@$ zgxpErPu1M+I@iJbfPe{`!)F0XExl? zFyM8y>6Vho_P%bjYSr_g*=C<7J+a8{eB2ITuwoE`>Y3zQYl`Ca*57p0-fKA~ zP_<#aHZHyc{Hf%&w;yUwaz9M>JTswjKWiD;L69I2vFQ%Etd(N)j;z>xTAr`JBl(;@ zxgXrp>J<2IBM%)}-+;{G&9t^ouFs3`%Ximj*m-5Q3n@-f zlN<)Vq}#nhO9nL-fomd!xPLgXQ3DCJ`(t%}N9q{S7F19L(ePOEstqQw=VkaM=cTw@vI${l z=&)uWU-+Fv4U(wt3Ngzxfg$y~7p6RG^T$WVX8IB@ZH4E1RVP(F@8|o3!s;@ijB1&D zrNSDbmQ0waj$>qP!3U*DJ6sxG>3`*W$dG-L1^u+}G`7HsEP0hZ_ip`=pY?}QCS^)F z;Kd|`y81aKlTJxozl$Z~tYx;xE901{^#qS~R(Ekhqs@ldXom#`iLo5Hk*SjYDQrQFU*;=thy?Q zVW%hXdoQuCRe^%2t+rD|R15zlbw@MWI}vM-4Qy3Zp+4hO za#L`-J@&su4II3XQ`3~}J?TICMIs=m+_`)(Q-^U!#LKna;vPD}X|oOe5^~4N)1!WK zUlG^MCR1|c^s)|>$J=-R@ae~8T-y)?yLfs$MIg!;G@!RQDXT|GdiVavTehaqk!k*p!jNKy01LpC>4IG7@Wej=~6Mj{H)GZRy*Wh(U zOctD;mNfeUc?z9V`4GaQ!XdvckhyHuZh*;7RqT!0ATK=?kDZz{oiAqinV;e^zWzUK zcfxhk4DQHZlEQj=F)bz(F^Su$S3NYh=P7!4%0wNiTwBncKyF#mL*A=hvW{0 zk7blLN|mR`b1Ql)PFQWlC2Ma|4#7k_@QCTC&gK-mM zy$PB70ldmM;1ML5Hk1p8ic>k+uGD!wIaTw1%K*Iel937nUAr);;Hw~o3DSW<6~=N! zOTLdY;rvDaDHY-h!+DRfF0pIPn5EhdF#ur4PqI*aHWak(;VoGZta)V?|427S+TAkH=abZh~Apqfa}O&Fh(p+zqhzNag%@_Y$%6 zRW}9!)lAFXxE*lXJ({=$AyVg0ZvvQz?sK}?GyfM&u zq0&)oY9ou?>652-$z8w&->dcbB|O$YukG!rmApGQKoV9P4N+%KgQ`E zwhlB$gjQ2=WgyHc!V6;#V+{x>ZAs|UJel0U<=eSxDXfk zF*{# znI)x^D4*=_Hj=&MsFhVfCM^1!$Em6OBfp_#Tb8LYY*q+5PM!{H>BHtSb3X&x7dnZ} zZ-+EhA1)yUSID%&c9Kv}@>fuyh=5ujEANS1iW3MHpK8ikeS3_X>R;8Ah^MW?cWf@|8^pyJSX!y7pc`3-64)@#(CxE)b%=nb2vdSpi{Qj z9{&C5v26?-Vn)&pD`ytO)@92i3Z?EX|MMwaj}SPPuS}f3lB%&n)b!Kek%GGOSbSd= z-T}=v0Z^2?QFSa!$EOHW@Q9b&!ECcWZ_qtvgt7W!nBmX$1nI=!Lpm`=s-b$7suB~> z9|Nd3mh)`Jr&pr#>jXPt%!R}2{=XJLAGNC47Os!a`l`5BBjN1>wbJptL64Z&&;RSY zHb_Rmsi|M*JGLD0<3nh=0SNM1e>md*Oj5=GDgV9@sA{AR2QblEJ#YG_;FVaLB6V4O zDE&8sFem5Sm3vg8wabg3LI-quaXAO{)S*SXoif_#E>kqD?Tx&|W3-=6BuWQ0KNxx$ z%0v0Ocj%10`9N^SG2NM7-#xztveVV~Js2Z6W8Ce80%*mi{a{O5X4o3Lq&vp{GLDtw z;6;TRbQ{@!@iK^xd@NNcsJIjNR~W@WSxHLNEVD8w$uf7jvAnyCA4+CLePiU?)oV`Q z!WLQ@8;zO)V+J8q_E3gbfl)tw_j&#vcXkOX%jktLWUMW^zcm9P z73%6<7UE^MpB;ijRP?(EvUkH}uS9HOCG_+zH@1@-NBX5$HjG#-c+1ucUIB)SdLl6Uo_IR<*^Ur!>?D%O@>$ zQ}8r-V%#@*Q~FG0S4DFVOD_}90w#iJBlqIp)9_0E<$;JxqPoE5_co}zeSr4tzxhXs!;ekE`>~&w(Y-OUCder%N69vUlq|k_E8XNS!d&K4lJN(|D>J$p?}hSa zOpQX#YXx?0?tiih5Cw!G6SAQ7ojzYZ2s-e0X|p$u6AUtY-muCTY-3$IqXk`>WHjpB zm}ZDGx@GjLzqapGrv||SIh%%Yikc_l;2q=Mg0@z+0B5i95BnA%!`u)496X7DT+N&; zSG)6?F-1c`g*c5uw`^gT47L|=OWXZf(4|1q2y-1oQ5dV&<<+&-RCP+5&;bu`A5`A8 z;reaeFZKogcJ8!8eaN<|1Jd-(ckP=K82-QNFA?ZZ4;5SU`u?gc>fKs6vCK(E7!JPf zoe3OI>>B`m!RTc=p<+%#s zd;*|un$~Q|xLS@8D6vY9*UW8jzkA*f-?X_?~F{qb{E)wxX>flHoHS%kig5%EcUx z#pZhyS*5Xf`CRDIrQbsB8!)I3u!b81J1%}5&6aT|#@4u|dP|Ha8p-Jl5*#cL{8u0- zy&u1@wc2Z78lpUz8Am@QnJ^&v7~J>nteRm*4}Lp~H$(vqq-Lsegg8f&*^nNPUjr!w zJo?Q~KUQvZEhOsOv9!+>UYekQF&L$1443$!h(9G~7MYHcU*oWD&i2(CGpoi|`w?^P zsY>go%hG5(vp6<$Q2L$>AE6+BN=&U_k%+mLEs((44=K((R;K1tDq8)V{mRYZO(iateE8!aY6DZ98S0HC>3Ros$5xYG); zlo+61o>v$+T>rZI)a>ja^rF_tNtSXPrF!7cusW;xKq($0ljkx(XX8HP5GCV8hr05l z4LwuUQ&8`8&I7+sFRNk9{_ICyGqJpbIYcn@+sQ?+e)=>MT*u9q_?waU2cK!oQta|> z0-ze=E*GGZ+C-WAjp7D@>C>l57s%iNmdjk=yICT<+hN1sR7<0l%OUJ`-if_Jrm*vH zOT$&3^z#UPxk#mj3)!Tkj2jd8FKG2lFS})N6wgw25vY%r>43EX2Bo2;4j8rm#QL~W zF=VGrx!q%p;h)C)hH2(+KUO~q)l04r7!GIXlFs*@UJ5{*sBxd2xMt0WNBe6%UJ^tP zjdm{}OSngX(cDlB6rz&hA#&j1+%IDsqx3~wl{TGs)JaN1Ric(^upgytdGq3$DAU{g z)?X?UKAs}Ob5qTDq5#QN`-WN(4r|6uPGL=4gLO7=eB#ZG*`CBB2Eht17^w#`Q_?9a zProtVTPH?&TB;9@aU%@|I=t@&{vVCJ84yDtAy}EJDSjWSQQwq)DS<jW3EkZZwbnAG zb^FL^`mYQBS+;y#bJ*a z7RZzfa>-d4P7tTsuz&lQB$kV>195=+mMQ6pZ2W+$v|sOmspa@*n?q5oJE5?q;5!{- z^$XJ1tNbz*Zi~%_S1$!?L16bVXwsk5&8pxCI-_HAl<3&BCQYW&tLnF@EMaB|I4BUM zV08VS9uYsk!+m_mnib4DF&s$#UO3m!o*KB-fsLvp$<%UE>IAzo-0kG40Xy=xbg^j& z6!nq=g|d!xCOeq{YaTOl(Pbes+f6*) zgtDFiJsjSn(4QY!`L>%gMQaTC;V_>*^i1C1T>xW?=bMWC>Q{b0CFWwghS6p8GzNkD z+-hV*uQg~E&Od1^j|L~>f%vEnVDC8s(@<4#n<;b;UV>(W6Nhu`rNp_+t4lN&O~G>3 zsc2rQ<1{R4i#@^>agG1*;x}DjUCyex0q?EK2BOrP?+%PuGeSX9zdgQsta%QdtsvhW zD;zIb;T3+%{Ro0C)drc}(i5i!%&q>Zk0|$_Mb`}-^Z5vQ2SNNNY+gLXG{*dR49~M$ z1XSfAgDE^|tSl{omsSL-@p}#_Cr%3W!C$U8UQ^@Mu;H6jBcF(hXYuUVlfW^H)x*Xi z^GRQ?>#8`GzmG6L<}VJQzm!NY9j#)1WM!! z3m&02YQ@+ll&t3RP2|_|{|t;Th@ME6v2p+DQ7>beFY3@NTC+l7wu6KXX`=p^91)u% zY);++X*Bl2%&?$v?Ku}OU`Oz!b&@%N|UliH$HhZheg zyjo|w`N+lYrFDVJ(!AViU)$ly{iC+@T|UnW-*-C8sKk9cwxrd;oIrI`b`)__TB~q5 zYea2BIKLl%}>b(=$6fXAhx1r&AMeQR!_Ge0<+Oq*59`({7uH3 zbuy4Vcc>t+RUdflT;ZcKdyT`UPNk<#g|1Gee>t6H+rUt8ao_JKEyAyD&BW4NhFUwh ze%}L!N#^EG*(Td5xNo=11vC0;nK2v4Vxk%gZFv@6MNjkpzDFf*oF#s zV&AUzkY8_oiFD>QHoadA+csUEpG%=03Vxg$cyMp%CCpy<(F^P$`$2}kIv63R(RaF% zc-1j?>Cec$8Vp$x5iAUvhw})SwGY6htuaFYo{Ax{PWtl`d(2O1N5M@=uVm%L`(t9i z;$L*(tV^b*-Vo$JOHO<__+@X7u z(YiGF)-;b8cw$!`eQ}lpnoV4zJzJwaWu^1<&I~B)a?(b)%XYX`HK`j*DO2U_ z(oVS$xiMo1yr@0T-UUV6cxYNvMOt{IPQ93}TDMElsZrJ^q+dg%CVpR1G8Sd!7$B|H z&FX4&SwS1R=dE(}Hg{P$l=9VAEtQLH-}9ZPb*4zw*C#KSR@F{3&<#XA4CAs_s&g@_ z(XP(#HRgeOex4mE_KTrADmT%h5=TRto}B%Ohj_FX(w?ob7VRL~s+wnW&mnxy7cm(l zha6ZY2e_mz)<%<8yf)*WpoX-9ZDKjqpbe{Oqqkorw`$SUHemgj`&`NTSA zseRH^>(=xOOI-l?nD*>%G(8I+_lP`DCibrU%-0US>=F_%%vSf!B)~-~RMRBU!9iD0 za;tmJPVm{tN&2P^*uSJC_0T6b;4|xn^fx1-qFbRN%J)Z%hhLjytT`#ncDqYM;i_jb z`Mq@3;d^S+72c+w()Lw<*jR(6GNsqw%_EKOzRZ+DUXQw z93PiG14XNi6Saeqw8gn!wS}&nr5lFyk6xpK*HDA=6tE*juJ_pNA%mC3Rx>->DmqU) zcI=xvE>20y*hXQt+WX{zeUfL~5*N$H_BsEBNGa-Y9lU?M_{N6<7GLxo?UT_izsME6XuxjVjWJv->Cp~XKTTF`lw z*Yl(2rS{j*BYq?j&RlAaVNT?sl`u&7v|uw_oBb0EN^t81!2a#J=KR@uT2Uit_yEbC z_C89wmw+iP%2CqPQBvNq;L9+u+OQD%#HhThOK$baW-Th=#y zOcy!QTRZtaYQe_vm|D-e%SR)zl1fd}i{~0LQ8jdnmT*Ew#McWHlJP|a^XbO?$(0u2 zt3(>@9llk_Vx1So^i_!8xg!(cUi!^@$eJ*{fTO%{_z)JSxqHcptPd$4m*x375(WRc z+sA9qlGHEc^S1qmDo{#D>aiyiop%{p9vS-;!Z0EAW0`kc)MHA!`9ow|R)f=1YlLk9RMupK{2ssKhKxY=2yk||2A-)!H7{i^ zyF9Or%!hH$R}FwL7V)3$RVDuv{HU@0B`FD!kEB&$zm&MGdctV+cG0O@OtWt^NEjAN zSk}uJHj7STQ{n%`)fMITM zBvm&Rx+8b;M97$G&+nE^W_6I7Nq(xjG*4qJb9JmuUbG(5Wrb*=VO<>SlDIcidUhh< zX1;yK7-GmC8o;_4twrC|9V_W(OW7x2Ck)gG15y4UN;Mf;X>J%X)0iFU;f0Ndj~iV! zw>`5 z`7uGM&E5UyrA~A^TD|XmNG$*Y&iyB;UC(562EVX9um#=8=BX}RYe|C$58NH$`Y=S3~yhIrF<)qxDa|Kw0+m? z)juF%v#Fm6`!z#5o+2%<9oh|bDGhpWTCnZZ8|%OBa`Ah*ab~gg4-8X1eftX0hjjgU z>N~@NdM#aoK3&GMohyr4TiL~MPCjr_z#a-Iy;CyvEF27OKVrQaBFc|{Of^NhH+AzC z#9tav5uxJ7a&oS&|7FnEXueHUM*&XV_v}8_4fsAwRjtCbkMmv|ayYIUgz#{`-VlPn za21Gpy_wHF3wXYsysGm1vFc>7l7#>Nm4F z6%7&KvDZ2Y);{+4DJuwG9orE%M`kL%#AZ_qFkJbv&Vp&ZQ^IFaus;jloK4(B)86mU zI2)G@@i)5@weoM%DP>f*kMPK$Ch@_*y-g?s;;P2WnP1GE_XSgOnkYnhqL9BvBC8n; zkV)_bkby!iT{=7mkMR_F7KqN3tHbLFde0C|=2)eluW_l=sXnLvk#kA~dC}E}FOQIE zy#5hs8rEa&69Nv|HvJMj)0!AlbS#1h5yPDI!(6u@zx|qot=JaTLLFzf4cvVk@1$V! z1TFaWLIzN4q1GtYC;O)0F>43@48TECqMUxUB8Xp=;J(QgXnhC+f@IZ#Gq1%WNBu29 z9z!aqz$%rih=hSN@pi72Btr~Iat55;@EwgI zTgfLh*pYYOh+orZcwIV}~Y_>TABZ*2tj|PL!<$Cz-QV-Rm(CyNX z&(emm?+Y`CFDSwuqdQsi=_9S^>}{BVM@i)K(D|CqTIu z47ca?BpXz0N|E{c;)cBT8nF4Q!KL#BsIK&U^`>~00kr06^;1+1mH7z~rT=l1IoW~S zFCkNlI)*54!;QJ#NHjZGJ~1LfqXc*>K6kTk#np}a_jFY;EwR9pW~ZCqSB4gtjeUEk zDeb`e__FDnI3*|svIrTVr#s`bK$)GNxnZN+YY?A5iftGwJ}+SVmlR1VJuhIVz_PlP z3>J(CzVb7ymSj3$Nl2rZCNb2?-HvU{b^QZ#Nc5QZ_Ezn*C+C>9lXljAw)!-zFp^6f zmp2JqiUI0sT>cr+)&KhCD`jFKj2N%YlMx3UN$dVn{ZmZb%pGNY7b!V1dAHcFuU{Ua zp;C0|Ew;t#EX>pM zka00lP$=u-WGVmJgiMJwK!H6&Cz%ya+4Eg$P6FkDD5Ep8S2{(PV8=LlR}lVpm+lYt zo|RyAN25TKJ59|lQr*OEp%BX<9}5liZQ=614XeO(vox%>yDEuhVbu4Xt7oq=S_t9O-ka& z8NIx)Pt!*UkI$>wHe(_%Q;AzYwR*E)dvLs91nxM(p$ki}Riw~+k7VtJ(3^M{A=G^N z>p=pO%hF!^IYrgMKXY|oq39y5Z;V_aXM=?YTm(Z1=rS`gVyN1891aWY_E7mguv#7@ z&pQ-fMf4Z*7OruJvG8O=(p!IUHv-$-9tiD!&^$u_wynfW*_shX0{btL&LCtnP+lwn z4!EMP`i9uHpd+{4nQL1FlvOm-u$ZkOMi(o7mVF#<-3~wGLQEr^(NS; zTzX*^pNUIv@bGg@t?2~1?o0urUR43-w}ix>YJNP&j6qOUz2DKu$#+Gsowdx|0tr?7 z8xhq;X5pi(FX1#jl`*1)10=Fr;FD2Mg`Hn|^jC9ennP%k_(YOJrF3mB(SM=infUO9 zA6}$UyKsi`_h-@G9N~nC2hoa&eXC#<$A>8CE~1g73ao^73F!mJAPaPdyfgl zGHhyS%vR!e2=pbO5^WTky6#r~as3{*Yj+kHc*gu$i;9YM#VvGmHC$kfupl*@1O~fD z38Loajr~P=VA2kGPNAQ(`DNXh_bs&1bU=?+!IYlMus5$+wj*^)?m($zu4h|In-6r zd?f=%IwnYatT4KQWC3Xpb%MzMm{T^Dx+O#RL>^6;b}uFr`y^-U{T62NDO9c(9OxyU zGWqvNZiMTK`<}Aya>c8_i5w&;psl zMg6{ICM7oh3Bn`8E6}T$7M&H-f8xY1G{b}>>s{n2ANky%d^=+Hl8+Lu5aD8Wl|)x+ zzX5JrNFV1%^M`M=(*1b5fn=tO)Pd7b7y?%nyVjT%=$;&st%}PVb=L3wvfD zSsQZDdAqLgLdzA;;^Fsii~PewVp3a=$~E%9s@#wt`5bObmtot$kchDzqf4H}{A$I_ zYDLqzal~lHP(#m{x>}4Dde6_U-A}dpCew zG}KZO%n&`lax*rSHlhxB*d+yIb~rM?n6WdBR+$pYC(IOV(MEk2q$xk^V}S0q)atiH zbGIdgR08|?D)vr~BXs)FF2ug8D8=b=lxk-;pVb$ah?6m!BBmj;G+nn6ZwBQk9MMSD z&E5h;217$z|S%d%t2?pnJ_Wy!%KvNKl=tw4>|6;m@iwJ8+oDldFd z`HuwiBM4V2GWY?rto#6AyDyOPbEYeLl=QAF{AxcQa||F^ePt8Bk@^&`euE{dB@N^e zI^vVhnf-Xc5z_L!`~g-slR36iF(m4@tp2CMI-%*0g9-lLU+RUkr{~Ig<)bbDP2!)L zj-gi^y-x@Gd>!F4>WSt9iWv@P{nRQLM5uqq2&ilhPniZt$Db318$VSq#xq+amP9~k z@tOYg;SWrCPkq+SZc3@m%3Mm(kYPn%KZpr`SM0$ZaCx>F+iyWF>qM*7MIqK6 znURJ^LtW;^iwC2mOP+RuI?vNWuj?3y`7aN|i)QC9IuDu15Oda`gm5=Pk~x?N;pP8s zIJk*mLss%HuTh+9I6tZ_e%W+N=>nWFUOX-U^IgkJRPt~C4LsSm#P%%VQ#AEwy{>+? z(g;4IuKl}2Hr#F&(O7pDIgyKJ)_bTjEXkZT!^t+zrCv|5_( z$mWej^WA5qBfi3<-0w5K*^I;wU0X=`#%1F>vsfV}{Z!Tj)a=PuN;8Eg89VwKlfaj_ zGh0CDNTf%!TT8}8?b%7vW#cdf>gC_N6)_J}rnR?6nf;_nrO*eV_hA8vzwp3E(Y2@u zk5h~X(a>5yIO(wcRA(^r3TZnaK3igiU{{s@YbjG|z~yS3eeP)7Df8RQ<7XuaA!jF3 z*Sj5%?T+mHT(S@2U1_@bICBsIwiw;7NrWhN81m8&G<4sVE5>8#Vl;&0)O{u{BcP)0 z_^Z;pZ03LGjQ+E_hF3~4!3gOhYSa$250omK`&Yfk_^kCMtb#*M0`k}-16Ur7{+J-z z*?QpyCrh8Q-zjs_32R?%cI9La>2@IF{bv@kWV{v)rR;+8ioT*URn0G{WqNcQ+4NH^ zpbIO}%tP~cQG^f*wDNy~q+D#Z@5zc`C7igIKiGe&|AH;Tt%Jj*y#YHKjQ@o+CRvth znjq>CI0f1w|3pM3y3-v6;?}tC#=VDI3^yae5@jeWL|AGbms^>FmkIT*{qNHBYCRE< ziQ)3qT$%Uw#?g__8=zaj=;*%Vrd&@~J;C!3BXKDb=H8Ecf2kYXAEKskx}U;1qId)x zo&h>nPy*-uyz&T9JfmF5?+P8g7{t|q+n0+Y@v=O-`M-Aa8>&vh;i04@TDV3>Rn*90 zp^K-aT3slmvQ|Ej?I&GvJ*870UGCc0!mr2o>x%*b!TkbOGu5kKj~2MjB@83 z9^?r=%i$m?5F=p}a?((^!xme>9$7r|enz3QH3q;+W8oe97nD;|hw5blViVknMaQ(2 z90n1pIFk)5*$2u+p19*>^!?mtYlR#1e`e{Z3wB5)44l}Rf}g;$!Gt>{uY?T~J9Oh>xs0p)qKm+($nzWi z*Go#>CEfQOJw6FtDS0F*|1nJLwKf=o72_B_W~Cmn5H%&s(ICkUwz^M8h}->kzEs;o z=}Mf9{Uf=2@qNHVPyMLF`DHf&bm;x=Vr@z72d(wSEvEB~svVC@EGYqB#h(}cquj%=)%4^AciXK&)!v`Px<=CSJ1`r)K*b-vKwED;^hM)tq; zeTuC6wfc%CQ00O5&z;y;1g4g)Nu4F*y&?GpCwZPoADENYf-%9iInK6u{+I+Lz!7cm z((+-D$OfF!o*xzh``pB10mOY%3CAa?2Nj?zfxiu6Lo1+Icn>%P=iFjMT@Kl6eqM1G z$dc7fL}1JL+$$MhA}QO>BFS!scFJtxF3^4X7gtJHmgMJ}4{58Tw?O_c$k_BTnn`OM zF*nBa+Y5Ua=j>c0BqdKBciwD02^!9Bd5bU=@Qr3V{&6SkM%_=AQ*}HteAfF%HW(y> z<)f;YM|nu}N?#Nl{1*Xzwh*)V>HvzLg>yOm6+b$6dEFMB{}6#&Yu<@#t#It->c`LT zOOHz7tWlKCaDfket6 z0Rgcm6Yw>Y6s@+g;F}pNe>>O6+4BWW5g2>z0j!jIL~{|SW12EyIjcfbb2|j(;F3k! ztzHn>W#g6G<^dv`L9*Rl-tOzI_lWItqz~{`dAM+jsCouRO2~R(M5{ii zHEo^1{TyB8!@Zcl#5ifWcTk6T{UiV*4w_`9(aPc`g9`ztT?GjoIE9{a$D4j~H=u>PjD= zc%k0LGhG9Ln&!?qx{yn@>FA{kX>ViE8Ne;`Ci7@_?L>*06!nrfuc0mzx z@x`he2Kc=QtD_ldv5HF@5k$=3(MblQ%m`z?rUxqj`b77<&e@Z)bZWK-?tH&2LlHVB z3-Z1K?RXfQiKsBHwq!iJNNqXDS_Y~SO9@#{4!M8*Wl-xdx&nv!x(Y?R@%?-sS}dmi zy6!p8yuDl^M$xcjPQSUtKT+J!tc7jBnc4X!;qm=`eYbgE1RUYaJlyHN(~bsN>zcXu zs1GshSr=T_?!Uv-txA>shlPdxY2$k%Ht8d$~hxPFLwe^w^SlqO=SR! zC4%dcGdag@q{|wJyhADN?q=Ftx(0ai;?st1lKy66c{CLW_e-g4rW2fX-O>5GW>6XV zg%)1f=8e2l&(3(vT_=Wtc)LjBI23^8Jm@4)bc$4@9k;SSR!9~Q$Gs_LQ>gt%gfH5E z`z&yYKp}swHeJ6ss`}#bmIS17f;;b9@Qg(zK?{y>KdMm=Ykcf#aa3fH6!1OY#xP;Z z=uXbQXnC}E#>0y_@@+YVoIVMbjyHoBpEu(Vvo+%z+Na9hitt;OXPa`+b9nuiI+Hq7 z%w)KFVsvut2S6(8W$x~_9S`3T9KA03uFQ3|*mp$q!q6hE>_NU zj+kv1&|S{wxL}U9E|O3KnkaPzbR+WfIUX}dn^_a$>piK{y39-aQ%*I!TD2~&Al17w zPBjet+82|`F#g7Eq9$@N3voykHxlXUj=|BjpJ(t8WY^N_1l1JJUCrJ(%n2Y;f)x27 z>^!v$=3u38BV~65LAcm3V9*vI{D6;>zA>5Bm(sC3~TE=-haZVU8>c3r+K|Whp`s zdnWc#WR8imWGn@f*z%oFE|nlaWMb28{(-x`f7|M$&mn@v@Z zK$)P8JnV_(^loN)6&tk6B@VA+wB9cIST4wdYAnEx#T|FAQd_oPf>G_SY3`!vI$rT1 z`pMe_Dq!*1z>fd84;Zk-EG8d(kWgMwLLUA>z_(Rpd*TT65|Lv0GI*d#3tiSzXL(E& zN{4pr7?C2!;t|#?%CXvPeg*uu4JD@Zu8u{{%s0?GEBx4X3utWtXZ4dvyAjYXvwe!X zIX`!^dh^)d$NqClAjR@rajkq6C0SEuk(?DYC40v0407r_;PdnkyaZEW4OQ=;m$DQL z8*1W5Q&Oichnr`)m`!oPm`)n7_M7{SeJQ9YH|L}Y+fs_jquoC(wWTA7i5P|zR6(;3 z0}N=ch0bXN#1s5~34=$YjX86+7FAqJUsy^nJC1qKYP$gW$(8Ztq7uOsVrqTXT0>8{-VfU2voy z8QK2nH(oE<43mhKeb1GC&z)K}mcLTRH9emv&#rO*eB|m&<+qSWWNsyqwjTt88>pVL zTRs-ENi>dQ%QzrO4!R$VB&Sh{M~x%pkPznxSAIZy|JVOHFSK?CW-mt{0DhH0>EY7G zuhd*FDS1G1Ts(EkpZ%hlAnW_rXPFFDPp)h4@?#Dw*jO1@zo+-i^n{=gp83YNkve}3 zwt<+VKL+0UX7KyrB?h1IW!EKeSNf@hK$E=X69c9qskyX9ruUSf>j!l%2hdb%XP5c821O;eEG;cQKHaSNeM6_evnl~OP!T6EiMicK~tA&_iHT_^q_$i0VuC&1K z(!xqL0nkz0@lfH5CqYnS&H9$ow<(8~(SwBZZ4xxGi46=xjwK@&HHto;v$yL`9Bl9~ zadXZrrSq2z<|^*5g0%?4Cam*?70V?a>jf3dr5?qBO7}rJ`y+lP`9}%w{Ibv>hK*2l z09j;y-E82Hk)GT?=LFmo=~8POFY#CMU#`*`JNa^k+U_73I;D+ipgSt{){G2+Lu!P` z>S$;ky5Dise8-t6VNaG_zzKJ->`dp3hliQu>c;$)WR}OWEundZQ^H7wVIM;7F6?zF zuJ<3xj0%#-{z|F)uloiV3%@L{aPz!wAk^3WREe3PeuT;NdD4AdpI(FFg<~4j?)yP@ ziI}5amli6(BW$hrBAi$=wx0fd7c`(q2k~;96E@pe%S?5iju66>4i%U)OPx=VmWm=FyO6ziEA2Xs#b};0#UZBKhi36;<29IZh@) z^7(wS!0RaqQI$P$e{_mg>>_a(pcVC@pBxvhFk8nOfW`)lt+>9`ZUw?y?U0Y>zW}S@ z?FpUjj!w|1-HJ;yMeve+8Y`k(v_(62hQa|cxNIC<5;F+a(97%~Krbjv|34BgkU))CacP+bF0$Fr;p<1#Vo%Nbx<~UAX%WCk!hT{z?G+?-2VK*#a z#$RA{(tu>>`xo6DULQ=hrjE)*xuY%Y&-)j_i$9i{T5i6Hr*Dq})ir*F&wa7JDEVN1 zH`4cww~8QGG(NfS>1D@!oN#=N7!v;8P9Vf+yN$6AnKv}0usz({@k}-DBPa&57#Ml^ z7``7_Ds%PzGt&dJ?)z%&^Rk{vqdNKPAH_E)qzJkMJ^QyxRY~^H@`gL=z}$f(2at@~ zL#%bg56#P-F9@??2CoG(s#=%*HYd>rehBNNEq$32u7EA=vIkCCT^`g zNg>{eM|w12sA-H5lv+5hl1a9zozDe;UsY$XhE<v zFL`-km1^cLd!0Pczv^ZQQ((3E{`-a0<3MbmnzeKFtNv7n=jBSp!}r!&=OXB^8R5Qr z>DR|!d|w&tU87@{E`zWC%lp^z+)r%?5=j+C#q#aDakOquut0(q#PGmE=M?0ZWY#VWx)d=-HnPZdJ z-6M8-dj~W{5i0Rsa4HZh7%TKJKugR4S{?hteP~+U^E>*90KpvX!ivO_rbK;lw^*^< zkf=Ct=sk`75Pt1e|1Sf&z#<(78<+5UEpJ6C#=D( zFA8&_%W1SCGv-1b2e(%(g}D5k&9yWKX(gXT84Pf4oo7~7KYE4oI0gHj_1`ZXU#=cG z4VT?Rv=KvFNO#4~CaopAkYj%~(|Tb!v5*Q~+sr-*kn<|i1&pBaUh@T5LCKZ+X6uN4 zW#N?}NjnnzS->$qiF~~DAoEs(_8;KOLPn%v5HUH=P6oFC`ST%CVdN@>Nq5sJhR&7O zlRNJ{p$rayN0t59%k8UX6=7diCU%7zz_)d3u3%qRCf1{DuKCkYMj_RG>i7|iGlf7} zrim@$nV#L{p4sU;hDNVGb0kDKkY}$ zv}l`|N^1W^z!b*jK&H5-YBR(Z#CI#;3q{w)Fy@mO0*DdNRX^0DZS+WJD#_yO#|rqT`){DMW~eq)vyiO$ZT||G%D|}!4b5Ha&^e>VajwkdbuNL^T7KR)vJT^ zJ7LSHYs*fF+twPEZr`t`x|ycs7c4GaRXo*hIOE);U_;sN@57N~-ls-d-wRo9-71z6 z56KIjv;xD?;!`n14-)uB^qZ#R?Ix&gSIO|64HlspM@+O$?2@A^HkW0?U9(&1_oNPu z1!MG6EXrC=?%s5@@D7D2Y6Mh*cmw_y74Qo#(S;GSiLBu#NphRaEVF;HyH0+v|JQsc zC08RXW3tc%Z=4)IxPQ|?&ZzuuNsW#BN%`#d zJF|rD#VUMx{vZY>ga}kX9y-g+7=JF|}Qd>%|aY42gJ zx!xb??k}h-l_z;uo@ILg>NMFvYpW=Wk_)9tPx#^^OLY|m2hUl6Xs=S_l#B_rTQ$mL zG>!ZG2=c(0`J|s1GGzv}G1pG(I(Oc+z#*{==L$DC z(A9!-&g8AM!nQ%$rZYDM=n@|fMMU2lq5EEMd*m!-X%xwCfwI(x2t0LmBH5nb;wje` zPV`lLB!wmpHDZL@LI1^v2WD#oz@=kz&)~FR`1|sZ zx+1y&T;JTMdw}bZ*(Q!K#n5gYkW55Zm5$Nfzrgc-?ds@ta>nI*GY5LTgG7kZ z$s?dMv+xmfeMI(ngop1%Jct_qZ|oT+2PtCF(3PX$+I|z%(Hr_ubYKbPfCiNs+Nv5JKWVnlP+ z4DTngX^YLX5Gv#yP-wP)riBp)AsQwEon%-_>E#~h0*=ku4sADcbwry`u%|!UNFbfx zV|Z}OlIz#sSlb&s0xc?EZN8Z?W)DOZe0uqwg7#qe1RCh$OMg{D^R%H0e zdphwh6YJ{N@6|rsF_C3bO?9oVpyO4EHyCRi3~n*qIt0;mf56bzNN<_E8|5O68x-!| z2OBbHad#NPHz86h6-I27ABbo>H_?%uc}^llrOckZ=t140OkTh^s6)}HKz^i33ti=v zXy5(!EycF=!pl4Cc?h zibxy{bVVN5!l-dkQnWiFlXYnn6HpXwhbJBmTC9qh7v1ggjToN25IU6j&>a)1r*k|( zlzTKN0pBk{OHI4#M-?n{yF*rgj+}l~62SGZ<_T59{L9@m?wUt&SMWLX)iq{twbS8= zsuDtk>uX_!iK}U&k9q3eTAGrO1scQFn`kg8?!WvH`ItA2plufjy14(Q;K2Mog9@n@ z&Y3c@s)kLvk!*S@7I!#~xE{5;macXEu;^;8w@Sfq@gPu~5_M~nJcK5Xt1&u!=pbQ( zD^DfjYws7CVX`&P2EVth2!A^#=u;nqQVVStJ-=dd2%It|dTVy*|CSnTn(Vh{hE zfR90-lo|6+#{S!G&dm3{{g}0MBG{Pmx8jw~L*7*18jpX$x~lF-K=MpoNJGAm#2>lG zwYuD&NP`CCYmzGOkGj9+MdR-j4zs+z6d*@!=skt)v_dCOi(Z6-A1XEw`7^47mS7rr zjl6ljO<33JRUc6PO?Pt|_X+6MUys2*TdJULG_U{MJz47;#GUyDHW*p@v{v-`ewn0q zS|?MLjnIbtQ8*%uHSCfmu0*p<`oFrATLO96sLMkq8FoIK7Y*E8;cjObFvBG`;`#*3 zv~Q+BC0OZ3Jamg6v%AK0f4^mV@}mB&U+Is$nXEA!KImXmv(;a|2;S~Mw#wv?O32Cm zYXhJspJ!crw#pPqC+O$H!5m88ze-}BmYFcVz+?OiciL-(OTNhQT4CSHc8~tpA#wjE zUHFb?97p%ZQ}QTfbDpPZ@|aCjld1S#7Kq{Kiq}^v;ja%*cKEEvan!{S28zP$)h9t< z3;U-3)E$QL)b@HM0SkNF2JNY}ub(|^Kdx6354%zAb@0jOeG0{<-smUrq~>28qWfnb zp1B?yW&7@dLc7iyGARMO3FW5Box#g)R7-ha59pq3DZC?NS|xXXX#O7yu+nG?I5KBL zERm)l&z(cT;{0tl10?zHSW!}2EpC_qz-%1~1pP4sV%fVOo%j8O%lByu=h+JW?o?a< zY8xfLX{~b~QQcBnGiHP;)Vllgp35`3oxF(B|KU}_qT#NtouDweRznN0MOh=5^Ko$^ zPOSLj;^S48z41GWT_+Ba6_RE7?ErW^=got#8o4cgW^DUs-vH*74yvIvW7znr6AqO^ z*YALYXG}INf)!RrkoJ&FtyhDRv9^N30JzFl!y-^%huhC2j>pk)#HFxET zam_|Wt3mE1H=U0iMO=S+uZADt>0Gdpe64N+z3YCj=S$TGh(mgmWi*h25t$gG=aex$gpERFD?@{UD zQMolz7^|`F6J|+VP*C%$tlT196YVx4=M%$kE>6Gutwc9DRwL}p;ZL{)4eHW9_}%yz z4qeV9QX@)CwPd_IVQ9)znKo{*z9T3Vb2H$oA{|_w{XwjdS_Uh`{A2{rAZ z6m&sgGVwP2FHCiEuEwSwKnT5=%!7T6pE1QR6}+a4KX)nB#m+mbW(#5Qtw;V{!so*H)^I9fXUx}|fW>ai@C3K+)Isu>Rmfg4{VNbm;w;T} zK>iNLBcdyF49}R~hz6$M6U93;G9mlc8X%56@?n#X(>$XM)y96txr?O%D*0!bhY}|N zz{JUI;%f8jCerrcNLzOL<+sUrQ3!25zj@R$xW<`;CZe|aC&O|}`yIQ7LRND6P0kJEq=hQ6REWS0vr$!_75lT?r&rGbv_GKTsP68#TW9QuXJ8#^)txfgEjUf z&~TuF@=knjf3~e)2ZTWOEWg;(bvyYmbS(q+$j3Q-`S#R-yeL;R9f-mKJzgRMoUiDh zmV>`zK{&ch+h!ftWV?}H?&aJ9$dqP6s!7;h0(=pY@BD!jRhWSE`7^JnS#*lWDxS5z zu>)9inHg1P-|eOOMo21N2xA>EAu)M}I7KjKO&}jA(*n~RgJHn?r}+ z+w2>A)8&M_ky__1dBYzRIL}fi0vK53N7d2DsYyX1rSEsi-iet`9k81Qa%}*)p#VXZ zlvgiw5Pf3f5BYH+ii6?zubm*ST|RW70iFzWuvNr*a;G-8NAO3>U#TK~djOMyr;nK~ z{nUl8_v;_pI{wx3nCS!O_G(gph`5_U_3xwpkK&cE5$UeC)36Z^MaIbTgfcmDb^49r zkJzm#P|!zT2h0!a>$1b9N={AXmyEZjSWnjY)q3;D5PP0ymacZop+vzXO4aF6?od~` zn@DqKI&{N2*{L(I22G4geU7R$6&VmL?xY8xCLz}#pYq;X(Aly`az@TE2 z(R?7Ql5|#m1fo>j1Z*H{UOdyfUmnZr1^w!4o8~ST60|T>P{GQFtI#C=%tf%(?_utW zgUuDa8(Cib!aZClg$m|itL%p_;B3Y1w5Y*&a^u*UXsL57hhEu*Pp)qI{<~QsMiXS~ zHDtE#z=yCL-u*HSoDQ+F*o^a{F!tEe82)-F<)wfHPaI7h2$NvL4f2w(`J-Hp99;i8 z=yUb>N}IyencdYP^{uN%0hV+#uyx1cOQ_&l4*XopC zgIsaD)xMP_KzeS8ro619Uayxt_;^&qe=8@xsZiQ1TsVA zmB=Ji-%pWTwTGh2EIS1jnSMMFxx`>h-ArIJtg{c8n@mDWx`D&cJXIK9qW&U_-{db{ zhk}KI9rw2Gx*WzqS20~ThD2T@R97h=@ivG((bq7^dL2}FeZlA&Y-BzExEZ+qKG3vz z2NY+}qVWMzTG)zD2e~Q>v^-JHlI&C3LFZ`~7BbI>Q}1+F8wm$j@1TJ#+RtW_H9>JN zT_y()6RHJJf%>anARzPpcCgw0hEA>@xrITxFK`9@QW#kL>M;|Fz(6eL4}glMSSD_xDjx0`+d=eHv_oc@ogau#j? z^#;te1opM>=UzFU9--kUhCy?j4!X3GH_`M67@t6lwQv+bPG+JQKzwvLuKUj+;^(Q zwfprW4D9-YtEZb#e5Ap55tJK?Y38nu#ytCL+?73g=y;@ilzV&TW&Qa{s$Exa zZ;R_?)|$F1%8(*T6DRLr3ID!f>v9ySFG^a62Edp_G8Wq`D3_HE$MUA_534$P0nmh7 z5zXw{5M{L>8FrxxYP8LtByEfRurn9%)|w0>byloEHK9v&;K{?uv5-nrr@w;{RRzRX ze?uf<3V8lz1G}O66dC$3NG+XE>ad)tZiE2LH_7Fw&v#`pUs(9>hrcyWJQ&dJAhd9# z&^m2_s-|+^FC#p)Iz-nToggRCRBWSlkJnV{jkR$@uJ&)PsBj%Bk1HKK^cA^><)4iF&W+T3R zh-844B>0!65frry_4#H@cBe0YO-E>zpuV3dF>}A!^o`vCyfQHuYx3?*H#$CN-$oEZ zmI0Qzx+^1H(%SS$Bw3{InteLXo%g&wX&6hmx#$1Kp9Q^F9)3ZrAXDKSmwex6eC)rX zuXVhu``kYJPF?AUS+~Ya)v;@Ir=s3j06SkDOf#qp2p+w#GY@YhG&__((Q5ln>?tMQ6g`PX#JTW zGxdCF6K4|9=zZ>!tZgmOqUtd*h21nY1tDKs6kH#gK{NTPG-xqt<`c&hA-h!RMy6&q z9qZ}?!9E{-yOzE$OIN#}^ZVRj`?E>dYSX2U!H7-bQy`|@25HYGor=@HeC zaJ&#bJC_2qG?=g4&}zbPUf7n2C=e+Ru1LDnt!o2CQDPOIAvLyyb4`)|+~4t=Yz+(A zp;&bxXP(-ZZD=efI{w=A=Hd(i%Bu>~-rDE)>NEt_{veUGQP+^s7A$u#yw|1lJ0Qkw z1LQv;J=i#Q%l zh{-tSBWL@-J>{_DLr$%iUD~1vc*?l%?q5`jgkf(A;C*I=sxN)w_}&*BBxssYZ}naK zdYuQwa!lmqeE8XRF*5(6VzB&0O>Y$)pQVJ9<<%GtCLi;3T?EzB6LNGNsGeYV3YB#JVAn>-|1aR;}I;UWLFlNCQ&= z35L?0P;}i3Fy5I?NIARog1G+f7o@iEO|SX7zY=e;dKpb=^_9o&`B?DX-Ca#mVanLK zC)Z3_M8e(}o-=)EF@=wHq4RJca`j1<-C6MJR(SfNyM2A1+3CJi)HTR(jQ4#9B&6*} z6hKELE8Qj`NYOi#M7qSv{EuzT7r-1|RA%=uh_NUuMPp5|nmZ9wjT4*whgugk`;VJ> zD25Mh95{7ml5CvqvM>0)T)yy(+?mUqc&eemG*D_pm>|2eN)BTVEht_P_gJFhde3ugqw-c4AOG`cRgTda{4<9u)$TBEv%@*4r*)GL} zIfR;=MXzu6A?%Wei=ZW275PhXz`#;GBC!3c8BU1u*I9FKeH&ZhaT#x6JOkA8WLeq(=~tx;X-dt<6l zJ$wIU_)Y5QgzM$MB5DP!T(R1^=gpN2efzw#;b?E{y27Kg>WorwrgEi|$KGv8*Tr`b z0-1PasoZE5A<9MkXlG^j10s&nWInKWu%xX4^RaE#>WHU3o zc_w0{A&7d2riwoq8$69RWi%bJC^GbkaN}sVW8ob;-#`EQ*1*FLS0r_)jyzZlB(P3J z#yC38d10ZQ8=x%6$&Cjn#xLVH6#Zgd~M!iOn2S4>B^_Je5Y9}iYlg{w+5 zkO!f*kmGXbI8J%rJ?EXnF;_iknSmT|OIXHlhCM+M z3z6mOKFW`M!|vcXF-kkjF~$JEMgv<=ja9d*N{;Ux_nmi%5UxdPTDpgWG1ZOKFXW=r z$7)^8NzxnpIG*g9Z9YJn%dCdKiY4gc|SJ{WAV6kxw|?NdTn{9hm%?qzAqFX zbPrZk8VN!e&{Es0m_o9|4 z$;z*|4*J|3UH1q!?Qhin6%ESU=m4ij^C14bbgG+5q7W_8+=4yr1;mJ$gVBj0eXYys*5W26XVg3xQ6;1 zH>m1=1|ii9r&S{`ZJ5Sy`NsjNWoBv6Ze}8_0HGIb6hq!%S)QE?yZt|ts7Mt|-4lHR=_~W5t%PzBBv@m? z=zA|DZ<5>%p7c>7OziVD(8WKM$Ng~A&at$=Uu=YPtD%?j^(iPf5LQ+rT;MnZ005t;9hlz_rB9XGchakUCQ>``Ze`D{OW8 zU}8pAYq>aR{}BBc({wv6c&=kRjl1HUtj6_*eZVJl-zZsY*89C}548doqO-rzv&uc} z`i@gi@374T_;&<6z1!0xmrv2xi#G;kpIsQQCm^=Zhn%|s*5RIcD_>T8pKprb|IK0EWm3BM=Xt7K((p`8JF89ElK2r0WKi+ zmTs-lB7C-`p3BVGk#Of#bV`fvM!Piejs-F(?AI&@7m$R~iQ`Te+8$jzXvut!MnT0C zl_-=nuNQjKF0#U_!y=zjuA>Tfo?b_Ujm`gw-9p9VfnTY??3z>~3;Fet(7Q7ct~Nz2 ztO65QCSsO!O#q84Uo|&LdDi81e=Ry>kyDNCJBkjtsNz@I0Bh4tbCG%Wt9NKSSipRR zsat+U@^dGv(7|uEr-Zq9yb%C2eH({ii4U$!UVBeAt<=%|!}puN{Yqyz{;A2yDr~_< z@M#x*_(?~zd8>b4F1c&xU6*UiU8Yy3<*|OpBFQF%sg^m7n1QW#471CGEauygEN{8x zrW<1Y%>6E-a~19n4gPMPGDY_16S5QVmAeYL$vdapLl?IAxW3EhY0er;rC`|(wOO7< z!JL^$8Y6Z`sZEcFM+nvwDgX<~=2R1}Z7rsmRDc~93t$zogNe@*B#|gvL#=4&p2!mj z0SRV?2>@P*-k;^ubb=bGhp;c2cs$%GpPS@W5~fc2Stx`8I4E%5a3yiTY5J=i6NzvosB$&$ z>!@E`ED+g?({m^gI#Y^#jGF~!>+P}6R$zdWhq^p97YCnQx5M;%Sa$7PoAbhWlN){2 z1-8axa1(ClXfT2L(HEyUs)e+e5bYROc-Y2W$<66!F4@I$pjaAbevZIScI-3AO zfm3N*Z?{8j@|VTxPTqBo)?{cDdeUYEnnVibeh_U(s(Dadcw6mX3J_HGF8*;~PG=?T z*~}P9skIhPi~>tgRphB+9YHM4eU9SNad#o940w1Mn#KG&*e6cL5qLpTAzq%-{Y!XI zd{b2NtAZt+DhPH-?hkg=2eJ%a-3zHvF+@`PZ|;N|Fd>#d`F#3V;A;Gx?wfd+sHN9h zWUmh$VAv_zd7vRF{L)f4CpnBSmpw{O2=;4nO9B{DNz!U!2>OHc8@9vOUYGGPfDj-h z=t?Qc&d3n-^mdo|XkG4lX)aSr!&|P#Ur)L#b;gb8-9ejg+7t&J8_KN5@o8?@CC7bUmdvMT8zQAHoi=E z3HWl$DBC;9(c1|ZRrft1d%fx3x;P*6*B;4Fs!-QDsr~NwPAHMpb_)`wfusKbFX8q( zqP9XjjCR&0P)O(uhTyeBr}5`1(eX(0Pp-1E!qg?+c%>ZiXma!J$`7`P5-9+>(8CDg zH{1F|arrtXD}zBy3r#!VG?qoE)6$iiw*+>z6#fFDgg^Ou1I3ofZ|z1`)4?}vW6 zn*`EtVx4?U%y4^q0-TfJ#R&0}Hd z0NyWxkFOM}vU)nQdJaU`yr4cKh9$xcfndYbIt_;uEki)gs~Ka%`99}~)*UmeUpY}K(aBJO${!Mfb)As zQ?Uqc*UR4|KgR1`mxV2+r0dmbP39HX8d8{qAi4l2t)%rbV@(~!8osxDM_wk_$l9NV z`VQpX=Ujb>c5@Af7e3#9kEP)8)h-HmrV&lLCR#WrmJCXVctc0O7=j>~g zCH5%LMU$x_bcd6S$LIU1zAi`aGBv|i`-$~M)zLIXhNtFr@raL1VlDD<&atMFMEvws zualN`a)G_j_1Eud+n?L}Yu>I+J@QgTf)W(N^Hq_HP@17~JWBQjpZTo4d=@Q>Q^CEC zxxr^Hl6#B(ETS&9-5carb%TTe36Lo*nlWQVnNT*$Rn3_(%iU&YD|{g7rLGrf6r=^@ z|8h6+O^&5eD-v)b2dNqEZKnu#(mzzgBxCh7c>JRfUCb92RmWja9`Wl{KST>XNPHF& znekW9B)vYBg1eOx9z+x(v|UkP$>z9*%F1}bMan5<=3rbAJ8H0@N@CL=RIBo?xWt5g zx9-sC{U7Xfl5;Z$FC@5_)otymDn~l(Zykz1p(*H{QuZbCKknB2osup^h0c$;QubGc z{(L`i2av#2Z#~Vm7X^r3DFH@hu>GGje2Kv9LzBQgT1e%OZTWLrszJ6oy`0^Q*n&;M zPhRag)#|GWB92uB*NK2$M6gMaF^Pags3{A0DQS1R5Cp z8T~eE?N8U_J01kIdG^?YgQ+310y+E%;09=PRWx!>_i$R+yqhF}{8))RM9@fjBu0qK3u4dczOt13oRJis?s;)y7F7&F#D0NSp3%AYq96q<3(Y*!>r9nvk9?mc72rKI@G3Mj z@VAi{J7{@S&JzI)l@qU0bgHi{&%LK6RU6pv*DTDhW6rLR3FM?n!zQQ*gzhf?8DA?x zNln29kII%Uqnj>M67qxj{PLvo$=|84HH=~5dB4h8($7KuB-}gufJYre=l(APqX3go zE%1;D|LZT(pd|WWLhqA6BUo1mWL|L0TW(l|5y2m9=qA_eLdfsqS%fC)$!#NO4+n+_ zn(4*d;R9{b_)E0ZJB-^6h86!G3jn_LQ&8u~zK@Pkfi{j3K_AjTmq>>A0&Bg1YE{k? zhI3K!0Y&D3!u2hDlJWc})v88Ib|vRv%ruvDm$99yH5IE6x?V6a@g>~oA*o0ve>+Up z1DdSj&7DT&vX*?JaklAaUT$iD9nE6XK&_0G6FYO2H;lnrAcn}$?yDGHZd9_frraK4 zmuGeKQsC3#lX#12k72z67odP{R=_N*OgbjnZYaYV5ntud@#= zRe^#w+PVLl2|f}WvvPQFB~J8}t3{QlV+#c*Vu*H0$hiGWR?=Gt6qES?IHbZ7j7?nu z4|K9}XhpqHxO^J4Ig<>v2INoQCufPbI6Q;HUm~_)Nmte*wToM z)cwVO$WYaHNRHSGxlP_%=QRZkVuQ!^}78c6FhBUN`_ z`&KX<=8d$;#~4c_D1Hy2*V4xtn&w5)Nv{*(QpeQjw{rFJwWahq(6O^RDxX)nBNKr3 z*UJ0YXFi5f79-Yy*A9539x|%c-V&a+o?PrGsDO`(2wT=&Xj6yN>^_`rsdjPaCju9_ z-Jr$D_9)ISyBWuLcXl|b6!PfC`n+6m;C&_xbY96OmD$4l^otVpZ7{`4ue~k*s zs-^}5DkB%abH1AuCzL3@*f>oiVvI`<8~HaatJW$$d1{|vHKg|^8Yhf4=;d#Xervb! zq87I!Z4hhydamW+zk?E5Bx^bB{bd4lKZL=uig4I>hVF5fhb+|aAd&d(#;2H0gX@BX zC0mn1^pL@LW!EuDFC*n1U|uZJ{n?^SG(c0)h*AWN->GE9@t0n)4Ej83106NHEVIhR ztRHPo9wxp$H;aQa@C9hPA!^*2V8R6-Fqf6hQzO^CsC5Zm3lL%eK*=*>Jlu5V^|u40 z-;QVDQ9$Y0zm?zfR>IWT%{x*(@TwkF-hBlAvfTikSL&fWL*JHf4zl2;1cE`@Pygr_ z4QP1Hm=*tTRb~jwH6_Pi%}D!V$MmB02fx~i6kyp%d@dj39<{eMHl#fHVjUGP#!YXc zu>J;2ErMf-f&UHD6t@6=G}=OOr<3dhv?Va>ctVbUlse;tZFc*mL!gS$%IT6qTt8WV z0E4`ra>*8gvo(B*QbRB9Hd%#4d+NVHsw$MJm~L=}&vZiYc;pb^+1H#hjKojBE|OAj z+j~w0ZJZ}0(ONarcZ?ZfTY^fAIa+sPhTj?VaZn08GCwji0njV8xReR?8|U&aGGWNYy6VbleldsMzI-_%`GFA6xEKXHcT3L*k6 z;8q=HnZp>xMC6iF`@+McNdj+~Kkt7v+$5!$9$jK{5VH34>R=Wi6_CwxSv2ZE<;6tC z10PU2PU*7x;*7b@_6}y=Jm<7VAbV@cFlLnrw6jL`7;7&60BO74x3382Y}2+?@4!JW2dqGex^M%~9t%dnzcQTDf#Han3we~+PZGFIPrW}}Q^c}g)}BsdOl)Tx z9lE7er#KkN$mV2lAGCF5W9A>ee~26y#CH#DE8zR@DyWbwJ2H3VRAyuc%O2vu`GZaz zOqhpP7LoOY7PJ|{vbUM*y0&MYK!B8}VVCWFwS#?3_aA*Ym1cmv!hRMp!6v=0k!|Pl ztV#jWL(-VDm33=Gb-(z(!iG8%dvEgGWmatpm=1T`1)3D(#!o#DspY0+vm+He3?Y_G z*r)(As{O!*d{#|%gJl|U5z1WdA#b0W~J5}nU>IQJ+Jy?;1mN1!FHIbZ{LWkn#`WW%Rh|UHYr;uun1dE+#W>bPc)PuJ2=Vyz0z0bN#i(@T2=y zH)ZDS%TQnbm0M7`Bs))yo5PRk(ySbHfqYa}EfL{MsG0G!*7X7F)eu$-6F117+?Qae%C{j-Y#VMY~@ zIlV;pP>IK)38E|oK=Z)|L?uwbxxGyH@7421-|#x>e~}lhVklBK96XfcP%cLU%N%pv z={(i*CZOIHQU7V)8wKuA@I0k}+tUtGqfR2aY`d5#xlP(X7UGr^U@#~iqDte3N3Tyb z{!_0=bWn)F{02yrrBI7M8{$Ey5NY;QH2SNIHkC+#3OEI(r?j3t7qmh#NYS?;P!pNL z?11~5-e}#Sf+}H2==kZEdCb%7tWbZ_2WyU%F(3!|*8gfB`^@O-=S z_}+x|ycpt1cr@YxFMTW((75gw0g1NLweC z`0s50|DCh+px_Xd`|mRVVwrxSxWaWlmg@mze7bpj0dfj-fUOTTP$&^NF}QTeXUv*0 zzu3Aj@yM+L-q5-q3!e2Y?y%0y3u`n z(*xuG5N!dma=`5soW>z1i56QKUWKA6am}!+6k2SR#Dpsd;D1*FxRl_e;@7ts)@G$-%Q?})1hw$o z3GH0B&BUcq=c$(YCNwIcgoupIF4lo%Go))>yn{Cpt~|a35}kXh&ZtGHaNT-|3pyqA zEhLggO39Z=E^vgjTj^v3Wi-G1?silV`N((%%`mD?OXV;*i_h_+?OFJR7>MvDB4%5CI8cpEDW=h zF8T6&vj9Cd+-g$m$q*~EE$?{>`fK=|OjCV0dX4i5c+2A1khb0Kn8)K@QI_O9y~ui< zaEVQ--x^t{R8jhVKtJE(%PI5c_WM`w*9_s^>82=f03aq?T=CbHNWwAZU_F)fa1Nb% z5tU=jJ?QZPKqH1@#aYGwEL+OLg^m(k$$BGP2Xf+AZvIFc40>z7^vRzRbFsN-mCY+x64II3&*6 zIE1>``XVVw0rBKJrPgVs`aJhwg$EL0(wx ziLA-Ix^7l*r*m`eY%GNPUsh9b_EfoMJ1;go+l-K^Nu>O_7Gx}}_DN%vEB`=Y{x**Y z(UXz!M4~~tUtnCl z@Lhd#_;%;w^?jqTc$)@y{5U`SXRP;&VDxR{=1Dob!SlV^#)8jl{|&a}u=LA+`n;7j z_bL45JmNp55x@Wl!7Qy{!fdQ_{bTbIcZ?NxiJTfM*7oRS%UTnqy0tj#N|N5=in>Nh zx0PDpI&Cl(N_c+%b+e%@@)9u_hXNM&m?o9)?D&wBMJ8me0ouNosO{~6D(R8tVpC8{WB^b*qUFV#Lu{=nm7VvVld7P+-oOv4n4B?q|$~)S0OvvArwXh+z>G zVQU0k6pLP(Vi5V62L$byVme3n@Op~{zKMKM#O7Pk{@Wn-v5AF4)+_iTx8B$H=zu!C z$$wH38gvfugiD=w zZ5@Ta|0l#E?UoGVx;*7PkRX){a_i>k_h2V=Xo>-nsEHh-uk(Gb*g0YQuOn2YQG;LQ zfsJQ=6@sQY0AT`73ibSEeP%>q^_8eWJ^tP=4EUS11-x3T z+X{<*Oe4k=!VB=NsLfj*qs5hDPI<>1`n|K@cTeNXWCODf(Ov7~SZKK<6#JQVgzLUP zi1}(L^)gEW;!4pp`tJ{!LvIT7II^f2W&C7*Uqdg|2I2+bah(~WQcUU>1+CUJL%K=h z$qKlZIX%wl!b>M-eWQhY_aVYY%D#bGC0_|8`HvK3{-eJdUOCTq($Gf=zFYUHMb)}} zD##Mj>JrJDX||;H+Lu$YjE89yUHepIPO4a=RLSNUDJ-G`bwpSd#p6ksWpHj+tf_Lw z`Xxz$^H_zaCwC0QNF~SEqVnvWl0sA(NQ&7GfjuA^-PS8Gl?UO0B8t5sFWVjvdgU@* z9S%S3z)M*AMgCCKTY8ZTxsXPx#D0FQ#0AnAo5;rV<|#TMo4aoe6`u@4ufvFtWQbw? zF9CXojTp|Kd*KJZuiub~bE%CWUj7zgKi|!D)zr!-&`AWnyT6`?dp%vt`ekbbTt%D3 zSxj2C-eze00UO>w*3bmP0KuN~ucBWpk^*V_$+t)DQ|0&GOV9M#42p{`P3$qZASM9i zC`M$lFV0Ebp0HcX{&fg7h4Ca?yh}g+OOHM6JCq*P^H;`T{YW!^7_QdHUKiKg#3!Sy zWVo@1nF0bg>;>J4ncuEetkM8$paB-PQ}Q{6r}CF?S4we-FEB8=xUKpy`aTtb2Dj zitt-$L>s{;y{8F14@eVR4!bD}dNS$vCCY6oRfWM{|LS1zB?+Xp4)X|1Y&{vMF$pMC zQF|7k*33?eHPS}K&Hwpq#@z|%7$XQ^ozdX{v)F<^bP4dfzdR6l-#=uL z`uW^xoz05)dMAqa)yi?ZD>xq$D1I^5Oclzx-cm`=wpA4RFLPi|YXPhVmsnFtT7iXD zzOvmG8BXxVxbqp#kSre?L-VmV8(=iy2R7I^SraP=6l4f$c5zzCffHs_6gX%06L*Zz zgC|IxFGv~HK;OmsuKuf%6tY-Z9Q?Q-?c_E@5DJAz7FgrWhmj6P1oMw0-n?#fhWf9d zwz8g|6cC17#miIbrc#nI9d!wiPw+kRbhkD6F3X$tL@YC}NAw=D*N`ZXOk}p#&9H?+i{JVp{9|pT;QUeh z0qP1XjmTQA_BZIjzx$o|Cmy7bvdEk1o({%9im{ezgM=BgpMy32S8TbYu$u!b{@9Xp^leV~kanBo)`((L>{p{%+xhF8@n5Qd+aT zD_bY4{*J-j0>QW^@ApFJ?|@?8Jrz3ue@3yR2pWteyD`#43;RzP5@Zlj76beWn_Rf# z-}klN(eJES|J5b22^$zmbL@nLT_$c9?!KWq(Hkh%F+OF2lkK((afol8_S*oSsW^|7Bs_wU973Zgx>TfB0)f@k zi7sV~70t%Bb!$I^tLE zttMD*SJA_Qj5G~b5v3KI_7trJMy120w3}JM0NTz5gWd<^VVgkSlUuMIUx#0B^NBCP zN}r-I>WslelP-F>Hqd5Zx4sx65l{iW(ixru1GYNheuv{+6?;#iO(GTq5VXh&v5XDaxx0Ks*tsz#L1ly@q^c_YDhMCh(eA^2$p&xXMzC6`FKk z(!NfTyFSZWciPh93I?gX-`;t%ytun22%r@*y8a)McD+|kFHTICT;y-xF61qELrquK zk8P1eG18(>tV&CDN{yPC*FC3i_!Erv?H?xq%;OUzxh5t7!amoWx0OHB0?rT(H%Zmm6Vq^cCR(m{Ax7iTbr75 zGij#Sw}T`bw+Qdg7VKgq#*{7!5h6;@YMW9ULIsCJF$1Ij@a@qI?uT@zbY6f9;PV$6EUI$x$i77tj< zWYVHG@I}xj)ejthbiCqOI;BNC2_uBHT6WND4{yTGI9(0tqZsog=geg z6wgb07e(eLN!nj4c!T=bfkCGg&6oz3+#o|u+jz$m+X)Qh_E2yth8cgO-cya8*{q7q ztH$qjw#i4{i>?G15r!%3a?}&AID+5?e4np4aU;{Ex|Mm@Uoe4)HXU3ZIKAi~2~t9Z z>Dk508XK92Gs$M(XMUwbo7Am@S|D-wB`~9xLiLRPi9`d;A4fLC4PD&IfaN&f)kxM> z*+@uz?{9#8pJ4f+Fe?r3}p{3I3YCVA>({cEHqZZ^tm=F5a1{Hr8y zwCYVTs+fdOn8Sm#<_-xc%>-L@cek3U%%48g5S+TAF2?q+K#>x#BV;eCN zFz-={ilH_PK9~x3i@Vq*QoWnX@aqlI4|2up0@V0ev{o=pgGknVDnx6h>sHM@qdrNY z(1G5!kUyIEUMCF2h{q;|tV`~l%o4>CLs`MkR}^ zdtl4O?@hO;I%J}vPHK&aY6PFKOB_wffK0-W#B=(sfk(8B)sqUainunVO)P-`Z1V&b z@l~ASEp?)0T0s_(?F zzy0PSaP2Z@v=bd{k{0e67ne&B#q&c~S_#tZ!cvrDb$WWS*|LxNtQA-Fi?~5sRcmovI%*9RsK6*hasXic5{2i1uuY={X@K) zWv)D_bPvc(XOLY`<~^AjrCBl(pOrnxqzR zj%6~{AfxwGfey1=z-`cZ+F{L_^(H~}!zysq8}bp^oa#Z}9?uRU*vRx$@7sBUxUQ;J zJP&YyVE}gQ`o4cS_$=>zLomo2#0HoiX*_hvG%9(lN4hXY7!%x@|EV1~@oW-6`amf` zN5z@0R1!;gPuA!nngSGtbudD?8u>!g86#W46s70&QdGp*U%0@!Y&pUZX{Bt9w0yac z28m5Eai`txN5+7po$tqNStuhIU>k1JC`*a*`$5E-R79N>LJibWC-6i2U5sn7P(zZ) z6UDP7i^WRjgTea^`-}($M0MmcT0)gBkwDl8F{RTf(LY_Fuw~F@FU~2#on;_>_FsuY zxw8Ws0q469QklTEh-pz+q#?8|m(-lB;^}0F8N1{vSio&aREkYVj3qLTI&0Y6x~WV0A+e3 zgqg>yRVwbnr}(EUx1%^0H~%6kM}n{=jJS`a^SbK7dEEfW;-p5uCjYRcRI@x$RSjNXu+{(SwdTKrN!Hf1Nc9p{({{Iy zobUw_26a#hyhK1-D^C4L;x$r|wO!%c!Su1Yg8E9>8dEFK4qUGp6`s2z1jJ%u7{LH# z+GRVX%ZBmsTrK5M3yy^q2AcaXd_dx*^BJs*Sh-vNRk_SOcm;pA1f(u*!x*;rc*Z+u zF=6V13oU|gFK;YLyLlK3*&0YqX{oD^#9h{)>}Z;qw{PVgRbE}>#_}IqHR3>MD&7zh zNuw9#p9kO$cTcFiyqf&8iqgw>F(|#kr2X+7k|fV6(294Dw6G1twkMVEquWjpU_~#G zU{+##-p-$NSx7o$*$BR=>P?94v z+kq&{h;#=Rg`2tF_;Yxz+fW*h@hVhTN=|M(`_~0Afd?6@V~EE!iLGG@&uLv|Dwlvquxqh8L@4%B5B1!@ zCSSC3(}ymopoa5JSmgtnHRW}~} zLhq&_LaQ>eADDD36!tDoE4Ih`RbByFaq^t+Qp2mf_oYjJMT+M7)ivdPx-fWp$(te| zw<6O<(E^onCi3w1Bwz`y5`{bpVNwFF0JveHNh~l%${ztitM5vdn(B?|oPR!`HSED5 zL4cVe*!nX>Lm$${iK~E8@hV_JWlL4!qw12c4i0G|!b%b4Om(vADcs5+H{#n677*1UI^rhYvaiGPx+?}}1#5t;F@kD060^%(-G|-`nb%ejUy|~D- zV%U1#Fp0CT%=->rEq1@Y4((q?J-LbsKI0zub+z^yNW0_`dNf573;N-}8Hsr}*vMvL z;#{u^F7QnM`FZSJV|(xKx~JYk@K1x#*cz(6@E=!r(f?Yvse}J7q_Ad*!cb#MaC((B zeG5v3G$^_7`l-=&K$U1nm7&hz16mqv_urzvV+tAy!F6)Q_W zMT6RNf0v4oQoW3a?1rV$l$r=iGw2k?mwwRh_jh!80oi^y6<#ki`2;$PU9&%G)jET_ z=-n6*I3zOj%Bbv*-O&tzq3su?@!Hkc8?mYkLJqF+Jh|$Q5M|7iTP?Z8M1=!eBS38y znQ|wWccC>!DAyar?4nufrDH{;PmfIr#ftbr4g97-{@BA~DYNzDRDzx-|jp58F=0%Tm4 zx19bPO|-_3A|z>SMnjRp08fArDaK^;9jf8CMh}3MS}HrJb0KC6oN{r#Nu(iG4lnX} zs5|!K-FbQUEL>Zk=;XOJOQaGkUG+Jy=GDM#2$}yi`bPps#qF0Cd!a9b zS<0+FmgvRxW?77PlgHW&QW`LM7DU|0*2$J^j+a@eBN=K3ALEdSX45t4!Ta$B)-JAdz5G)-d zv%3kkJvaPSPCb^0C`M|A{SRkoMqg;{<-VxSy|I59b>1vOn5jT%vIb;cO>DD1?f<^` z;aswqtFZfd-rS_02!vd1yCW*rU4ZR}17!mX5v!5{l^}zdW1<3@SrHfNqn42?tAd-8 ze1FcEcRti2A#Nb=9k!8<(%6EklU$u{oYDh+hFKvL#-*Jl2Zt)6mMlm{7>+s&SEp8s zwHeL+e%27digH2?=2mP8^f-1V?WR@D?_y6ki_;){U-M|KJ=pX-7Y~+<*q^sW&-z`K zF%i4P`Ne+)2KYWrV2Z5;0sd0cX;IS-ZW4Xs_%J zIz45A=N~>$xFTZdk8tbw!H=FoZ6{7vN#i8e0l9<^b>LM*1AP|XC9XTC0^A7L5C1Qye zQNH3cltGMn)3=i0v@>an6c{#`jFmVT{Zf+^A_ANDcK(enbcAfx1i7NKssuto;pD`C<=+1ULKbrR9z);9EEL^YnrR9j6spg0BY)AVx!s zR6~EFW6Ho8%`Lz7cuXb?jKm>O!{lYV^xhRQh5yzFqlFV~xg1@T%uhkrc6}uyIBV!& z7GL@M&qCj}3asiNRZ}2VBJjQap&?fWF_q{UZhcpfYg!^kl|}|ubdEvNWy!WiPa6Ns z$>bdR==5;>oH47>?ub-d7J`qpq7PfCFOljS>rbaaI@qh_eVzZ%I)!&Mp8bdBaPnMh zyZM>TOWZs1^D#y1si`C5bukLqdqzB)+0D?vcVxIyWBSz*?#YUEn7!loH86I~(&@R^ z{u>j9-RZ-5c<;o00fM!@Gdy)!Nq^fbYM{>_Ucr$Q64}nO#OX<=%|eCltvLQ}04(t+ z>jLUOoRr1E7o-Tvf;^f)cAp$E*Mdii7+E|Z6&1!*?v7Jvib9Pjm<4Pm;aCu+lbcz#ySZ+)qCv@x+Ok^0ob3LD5&2y~+ZgWqygRW*(3crPMYYIAcn-~0 z+n7Y_rinLCW6zv`wjbwi`Zsl>0>B02Oq1-Ot#;UFe`fme%BKL5i6VneZ>o^ORz{@AZV+-Bbt<%qH ze%fRwuiSHg2|3_vi}yqRJr&Y=5R*bVzWJ+d@c>L%DMm79fc2;-5tADEx1i&CQ~GZs zh{zhiD71ut4m$)V->Ua_QM;Ms?L);#z>ceu6n|l0qNdTdEsOd1G z;;@f&Iz5`#@}aZU??n796n9kxJvXfJcD8~bMD9oL{hn%nsSuFzM8iJ+IyK86yY88| zxb^hwA{l-(;Ev@JKeLbHW&_E%}8>XZyd5P`Wh(Hrwf`X{#$K+{gQCfmKU1T z7B&Bs+Tn?@@^B>xT1BlHFV$92hEenJFRJ%F9XQ}Am)FA<@^;sb$iA0pY$5bGM$EJn zHMg6;{@UYp83jyV;FKt&0(#+uxN`d3#3@hGkIJ~2#!uDB`>Z`fhDdr?T6l#f!WGa} zC~q=^uKGDjA?Rgx?-LNz{ABWa%-h;OZ#j~*J;~8ye;*mYGrb=23)XsNYcjtET~qz( zGgT~3fW?EDjZ~|5mwdl{^v(MPC#6A>RG{wz(O|yz+xPS!`t_&h z8`I)=R8({tP4K_@$z!>A^g|7r5${zhX5 z_#&W4u4;l*!&GU2R%B)ZdM4GhW$)%h3GZ`2ysROC3<%1k_F%8`yFatr*<#~PTNZh} zJ|x61wd$x<(3F=vkd6>kNof_se@oI18)+S^H~8{e%#Z&n2*~FDJDHj~cr2dHvD#p1 z@u_j|tZnRSp&f6Mlp-Zd+J#0Q62FwW^104z+~z?@Y%Wmz1uYl^mT*Ucl8L3W9Wg<+ z-?{VkJ(y#s>Zn~5Ukoh2G}*<-Gg7?f?%y*v@?sHQ*`~Ez&aTXkc4Urar-AtPq$K`C zR|INAG_gU*`GD*^`L9CLJXNQe`7c0yG1~AF6}A_{yjtL~`S#^ezjO{^(%VR=`q%JN z@z~!4%37p6zlS#TdMU?GpRw=&wA{1c4aBMwP5lP@t;hS|W>si1H0`s{2c}xjtG3bV zQQf)QUHD`L{FsNn7EB!?cCrRNxyCBWrGbxs>3lsu9n(G*U+Schki(Wl+Qd)9 zjoM+v%{jAxEm9KA%eBIh973@HfttMtPJ_ak)q$CTEpn8z;sz2G;DR@T;XD?sbhzu4xdpRb*i86jKlS1No z^Mz&xDSyI|DG2sb82G&Iuv8QWpwO~P;5tuuOs29;aD;3pehtmh{B}6xNZSizTd%(h zZEUeRI;#dmM0p%i?wBRqvdDITaS0(>lexx!1%48^y_J@-Z>;9N?>JQWh+xhG`>6}0 z6c=P!(K(UW72x<1RV+gxyZyF20_n52>R-?-k@V7UZo7+pwc%Ke|M}V6L`4q@g{2oN zl0vPVYueudz{abt?RMbtdwjIhb@s4OfqITMEs!v$uLmTnK*qio`y3^{aOgRCIHQc} z`xmW7L%y53<%f8Y@a7zh+WD;F6Oe75m0#zz|5&>%KSF+@ZuKDtDC4=xU1ehOToh)9 z{dCEccZ4n_RuRE!ZaZ}&It^r%BqPd&RelHjb}+9Ui0iz*I^8E!C7!3)=P&XN7WhGV zoeuc2f=AWvJ()1Oy$z>PhRGyxD64$K!aw_AhA`phM<$Isprez>uY&b6GH_W6PQW=IkH&Ae4$dvIr@4b&&cAH_#Ss~w0sldZjFdN z0b;3ts3pMHdCpc~i;^kh9Z3I4KUw8`Ve9-cxcB+MV0&x-$=&gR57U1ac%4ba>GeKc z-xf4j`Gx3b;inoIavl*80XZOjV}1TP%`k8iWE`dGgCACy{aGa;D!R#j zB;ME94-NsI1kiJq`lr_A)id+z1D9k+9y;yxH@Hu2wbZOf1T=$5=p+vm@Y808@nJ1? zPqDgcz{R$3ppjFd(q4tTXT#iY_lpvrmqa|C{+JWT;-OqU~gf!xnH!^yVW1~g&-ET1#~Wn07(}oTm?@n^p&n?)Z5YYGuEL)q!OSnb!p_5 zm|v17;=PZM0GB{52>QUOKaw46oTBVV@B!x7P^C!7pW`ei=n>Hj|-EkN^AzCDBNQFSjpGGWAcCEeb*ECx5=N&e#?A% zpZk69?W1lv2^Bx?yvlq?`L~wGf3xD&PSJ5qfBdspTkHHix*P;e|6qN$ypEm2J$+l= z(&S~xkPUB&)llI5&W9fV`;6<669+|2{`2Z*T1EpM^wKYW>#nW^)2Ibl=ibZtpNg*j zJhz0`ceaM);}>r4d>CqJ`d zSgUmRR>*-19vs3{#&-YDeTdXgYyQ22fy~N=V2I{{1i{@kV@cy7-8mJVS^GQwo$7tl z#Xzu=cJi7qvs^yfhcR>aEsc%Kg__GsygGu3M1UWDZXiBoz4s_)Tmk={&)n{ zkz|y$?wOoilA2+!`keJ6|52E=cXx#?FsD~}<^%3lZubT{vda3$KW&vi{xWELA=^0| zhG+GBeb%>Kz$unGQ6gdBkab@mMHL5q#aQ zp$CgmEfZ3#VM#!kKuMJHdAmQfkoybx9_0s{SpFFK~VyJ_R3H^WzG zwq2KOF_i0bBNRI5=_|W;owi37OM02tY2p>{qh`>gLn`_-i`3!1XX<;>E;T_XXXt7! zMJWXqFPGRj$Js1~;WMX2d3hbSz+nzS*<+@it@l2cw*tdV5&M~+D*~RUF1O#KIS;B6 z0SeU8f7vNwPE9Sp{jF%ha9Yn(9k&+b)*5mr)RVlUEh3_A@>QCJ_u%dTMeX^C!pmGE z%%PiIX4j^!OV?~S6P6F5^v-U2=mQRz<5LwHs4>QLqnA=K{~jx#Rmkn|SgY)X6?+a^ z0}PhS?R)Z7Z1o%Fu?*Umt0ne_oo$S)GtPtJ8ld=<^_(@#5K~LRW^%u^&zP>_c8_Cn z$T6bnQ4q*jz;wjoGGcx%nmm#saMM8lPA@qyMEa|6EoxI68mSH~yUc1nr#ijf^*9YhKx|Hb%!@(U*T83*0a4HrF>4mZO-*GaiE2 z7PqP>b~5_fjj4U9>2tX!7;rl#)PKsyy~OL6$;Zs(#y9-o3F3Jq(dS23Q~spgXHFC=A@L4&o)d`5)1&J|$Uv2gRO!T@*E^fI=ci5f74G8@XwZ1pCymkd%YpwaRE7amqMjdqu15pz3%~+SKE;DdG#+ zdm$e!7H~V+T+}DnfL^GhMr5EAKIw|H)vm?^($s8wWjbfoU~G&0$uTquJ!kbzmf(Nz z$2v4of;dK@;{p_((gO^}`mY`o4?nSb43R8!qdR*^tE204Y_q-mPXXXaM^CZM zbWve9QBhG);wk#>N?<;Wug2xLb5Kxv?_05_)mj1WHU>UvgUKb5&sI?0r*jlbCLma^Lac>iSLbWI1fxtGLE$4xwrFsYPFN zYakZ2eB&*P(2lXHqI;aaKlS*>b*QY9F>m}1tYus&7l#0>N;SA^Sv!W->Hh_%AI^8i zi(tVci9;?xBj?61fnSE%5<>h{lV`J8I(sO>PfL!CcM}7BlLLd3;GC0hyRkg@Y#Nur7y&chuu+2b%JEgl9Aap~J6))YVKsQ@**#Q!G;Wq2 zn;D#!GVX5I@P{1o9{fmxnNx1~lIx`EfUg>r5YwfKH)+g~Jwqs=oMt}SBE7=1)Xac{ zSk(1KGZh=IgF9C8uwd?`5PE4KqHu&C@<8Air&yTjMt>+K6v<#k#0F9~y)fwidI5Yz z3laGA+s#`n#R4|fo7K?*bwq4A1Kn*1q=UM_?l@`N+7fv1xGTYot^?XQRyHUaNx@CO z$MulP>xIE+;)mzouk&Q2L5!hpvkOK1$y7)BD}}4BuA49TB?uWyrDm*)Db{8?9=(mV zej7W3UfT!A0}kKNXq;q49Kb%SDDY5h>gFlvBNN8L*W^L*c^Fk&V@d!JNc7JUl^|yI z^VKue!rcNZ$DL{!q^qpRbNhJnWzzN|ly@9HdHev5zE`u~!=Bz45=cr0AQYP;vaxV^ z8p)#a@b-N1M-ud6gBD;fPhXv^xSD>?aSO-wqluWw-I&SSnCL4j;L^L_j8#Jh(;12C z+cf=26|l8))6A&vkTIO;SKK?eoqaA>-MncRrV`Yn0<$rWby}r$zKd>)t}2l0)0_rp zn}V{^@ET>FrLMJ-bYMetCM(oW`+m0oWpD@B*$(PHj$R>po@UZS%+#K$ZiEx7 zGMM+9Z9#))qU3~%Th6U;X`yKRxJ*A^W19mP2IF|p(vEoCR8XGDA%PFb7F{vF(!@N> zQKMER6U^sWvjlmb+C;eWoag=^R84yL>myK+GGS2=*jQND3%t3;DI4ch=FyP8Y}^t( zwTo?Lmpm98862q}Y#K!jp8Q;EQ@8>wobW#jM+BmE=p2uf)io<#2_nM3E%p44`0w(F zkeit`Yhz(^c`b80mWEna&&9t;ddtQ_z#3Ufwh%l~5WS;H!^}=@lElEDadM`IWnRTE z;MqHnC-p!M^)Lr54H&4 z9cJ)=OJIfV5nve@f4`?c(OuXroTln=uZZo(O26sWDO-nqJx8%~O=Z(*A#=ixTF;PR zToFn*18?mw**M%tPWR&60u!Edpqd!hZvl0qUzypjqO5<%KK6gMM`d%Op+va%tNv4) z%1EKg@P&B(3qXZs+DDY~cRkkx;*k`)j;th3KhN8H7<2|MLtYivYwWHu+8b1;^S|F` zN5oA>u+c92*7ot9G#zI_CUnw^@BEtY>{XL>GK;g;!w=o$J}mAH^8V1N-YG~c);91$ z!Tv*|LvgEUVKCx(9YBJ~19p_Sht6*%9>`QC-`O3#lO|mc2HwcwgqwI?hFFVH;mb5#_gK8J1IxMCiM#(IH%5}gIh zTCX$HRF?zz!9Vm%$HpgH17TIufyP@W`z0dWMhQ}q&{V&DFIrj!`cXFiWhgT$-C<@v zVN!X=pzDpu@b_PV>b8pKpI$(vg@GLl>zCI8&#=*OavM&#cyeyYXJZ}2POuWNPH5D2 zaOmxh>r#}V`Z{=rJWNy1FpHeE)<(Nn`eb!~No{w`?VhHBW02#91g0x2zowS2J7MFS z;E`VtNHcwU!`*jBh@$ho!cTZmLicwbNm1Gs8M2OL1)F~Vnl6|r;fq2M9T;rd9NY7O zvFr@qMZfpGK^=r1?kpt`-GKsIg9yMvlG#Ghe}`DdKT3=%kHm>|96+@tAN~3J5O9>6 zsp0AKp6b}KeA?$=ro=$80G+|W>xn~2pocB~cqzoghWWGm+~Sh1DP#1G4NHT2)Uq%; zdc-j&Ow2A2xB11jn3-R*ZUFevQczwECnaszZ<>F;`4M zm?#3z8`fmQfp!1}ETe5J=}=0sra+Bh(egt(4iU{-ttPIpTnXF0SYAY&LSV3c5c-gq z%TK&-|9|!#Fy^6g!>?^r#FGi#f9z7c5}hYNLb3_Lu$+lm)6I~aOK$aaBpeq=ABa{j z_chrQf|S%u!n-)Qyp~(oFrRlsEf>$q!EVf~d*^T!_6aK6grwvE?h}EG$WChcDpds#5&oop+fL6qIH8&WOM6#jFTX!5$QHO^AM`TU^VYZMX` zu)2II`#aNdV$k`r>IPUrDZ;XN`HqqzZI;XBa`2$4Oz@Y)iCt%BbioPdvZy-4K+U_E zdE{ahx!jMR5l;ihk12cNhQh(L)6NZ3ahIlgjEA#3M@I=dXp-85zA zWjDXvH$xO${n8-T333DYSB#h`v;`LKSg#u0cm>`)6thF#Wvh$5vF6oh(R8}x#+h#C zP6EO>Uu7a(M&1f<;UgBx=pO)Q8x*?j{hHJD>pP+C~t-Gy(GT6oyJyricUsZLfGlEJFA^0bQXs zLU(l6IFtt<2y6-2Saw9M%r3nx=FxV(Bj@0@U{QHnP;lU7(nvB;6&= z;+$OQW;xr_REgL$@C|E9F)brch6bw2E~qq|+Wa}SiJ#YLu)JZd>;yXU*34+!gr!^t zu5uULQeUjo$Wa<|R2^U7)rAyGG{c_R5SO&+!9aSt#_;NZ*^b;a$&Le%vzam!*#9gbVNiv4j`g-IFl>bPTqz>JbW%) z{87aQl4-UUfi^BH=-t{s%f;gFW|;Iz&*lxN8EEWZ!U*~s)=}KXxaVj@Jf)8g+ywPI zXa-ZK#FQu!k_srfz6Ij6f%H|F55 zZ1p z>QylQZGt)(pp4-pCMG@{B1Env0sdeZf`R#Qt8QfgqYit+Zg@TXMS8P>carkaDgk5}~#1(|+>_W4l_HcQ|?w)Rk@6lRQNDbVRlQWE} zxrW`H(qX)U8+CLKl=O8VkVUZR9NWo|Wqzt))_6G?qz|> zhUHr|zCLHQT*j+qR#BB$}n0HfMt*cB_=8g zVgxZBA{EBLu>5}g7k6pJztR?kQf@F2SPW)RwnT`odt`pe!)*ZppG((s&A*IF*sA#t z=wi{TS%JoU`-8cy%EI92oGMsPT2O~m*ds{ITZl>qA?3k2Z-u`--iJR+HwrVTU zPQJs0?Yc$<0fKDN26Qs$p5U?zw1O9ni`-=58&VDv^^OS2=>Mo1f%8mrOI(TI)<6{3 z&|W3_Je6@AQHNo9C1P15Ch`PTWp8o+r6DpRmCVp$Hcu^17)@?SCE@DUyD_zsOM-$T z7amW&?;<>=5ASnY3S4E~$wcReH(|-H8a9>)H2jeiBNROf=h_sB!TBe!fmqi~p0`(9 zRG-yW-+9%PCK4DPmV!|%&H&c=JjIQ1)_DHDP13_?cJW&on!0ejnMFu;w81pGJ)!@0 z6YdES1xoLN&SvTsG#_cX!qd!3KSQ}jNbTp7+-{p2ctC&h>eruz(UdFtD|+h3cgwRS zxH7s~m?R5N{!Fj1;6>d+91*ACvQ3-0AH~6EY zQdXVA6Irz@xLNTq}fsQ z!5->bOFk%Fkfp(c;Aj>8x$=#S^nfG;NT>Y7<=3zP&aSz=5TVdrEv~f+^IPUhcEQ5; z6GmAD8D7@V4{Re?0qta#GFi^1a@@@1EiPU{m~Xif8oR|b*1ru&IDIv<9lPnd0tr*( zjbt2$vh56LB70>VmBw_~jp~ayW|OvkadwRL<8mS@4|_%=@J1X|S=)%jVV^?oaI8ujh4`cqrp7mGh`DdxP>;WW!;*zWWOG z^G($1EwokK^bYpH3w>hymW70Ka*LKD94LxEfM9sabgs>#pLtb+Kh~EYP~?nl1IrpC z*K9&u^1-KgLu`3edDAAe;-ot!rxjBsl%&uW&Iy!cH_321~x0Yeico;c~lZ49Fkf7+Ao4ckWT=M(aGI?&% zLNP=AS}Sa#=2UjQu#a2npuU2R%oITxWI8)p30&F4IU#1j<$ESvWPlExSwFd z6KCPXDubeHDa%++hQ%TwQJ59$&SCo?|JcBO>6_B2QFNIG_;9(-k0{D?w<_2Hi=g@? zi$p?hq8VlPM_zzLNOv>>r{HRCjbE-$ex`2z{>ptaXKqrT7M7kvuEsQYo-RQY%x->o zrNF-nJFqynBYNCrJnz z!`zH#cL228GDH;?7Lpn~=W=%KxBT`K*C2%Ty0I90pe8>T*GD4`k!06KlhI4-6~zVW zb9H;fTbQI&w9^*{k=1Dq$-Md7x~XX4khm=|xH$vgUzPL0JEJ0BKaNaUzMZ$2!0^x! z;LsVOU`_N+x%tpt{AHi*L(D@4mnCUN$+B+&7z!Rn3sawHL!CZG?ns^NA&Ri?Z}tVd zZ%+62H9_!#=?{wKy?O;a_w#9c;^X~SAZGWVk8ZAa(S)t%RJ0f&l7wJhtOA(B2SCtb@9Tn9goXYE5BdXmVtfZnGhPbjhjCpWK3M;QhrCuxxp0C*TADkl zkJ_-^yVY}z7n|NwZb5tJ7se1QB)HTVRGiDGI+wD~PysA57T$PQN#8beH$t#Ug*+q0 ze527ULL+nq^W&+S8LW%I2Z^g{9$E5d@ieOT&&gd{v^vR&oPuMtiuRGM-KVYk~-)VR^DJ#cs0Sb5z7?&V0)Z%R6vS2uV)5lkQ$LnWo5jd`vWg=@*_ziM=%_T zjrJNZih9SC7!*#<$x#)2W#~tBoDNMKkE)pVgkcSQF}KV_o~d9yY2YWkOnGbhck6U7 z{KMx$?wWyj@?mjHIRw;60pG(Ngz>R&?PUzBoRaVz=zNT2}NY ziKHwo(ipQg9(CbLf$?yHI4++@XoE1Q(c1dya0FHXh zl)|b@!3`|Wjw|oU0S$&m*K!Xm8pHMRgUdRo0|oszn^5L{oiLoD2dc~A4@?Cg@Q3@l z{Jr-o_1QN%!%-dhJD#`d%@alMI14*J95>K_{&;dM78!-cyqOF<${H+dcxKH`$&LDg zPYl5y(U525<}{|Bbd5etjXvlTt|%us$#w0jP6rBW^I{N&Qc{zQk`!>A zD30)^KzA+*34^i-t$RReCMM9;pWK!ovxSS#%E{>QR!k7sjf#5f{+|{GL_Lwuhk>&) z36a)Cbq&${(6_5u2P$CQ8M^fw_v2cI5gRQmx?NzQUqPV!@dyQNG!kFV-fUy?l~vfE zQEMC?dI8%i_VB5ErlSG`=(_6sV-L;XILFPmpT%~_=1%JVdY9G~kd&~Y?l?N3*gs1K z2Ndv0Oec4H6wJy{RI%#146VnfFsnRQC_u&AEm}i|j)LQ=)Sozc%=)$kmwlN*;u+A) zvQ>T^+-v#z?2z;C?Mif^os}GN3RM*~9;{))WJa@vF_wrCt;$<;hxIOlbUh;ML(%{0 z6Q7)pXH~IeRjZR-p<%j`ckJ+u&D6-iD6X50?`@KdQKQ(x`}?h-Rla(rFMj<&OWH`I ztq=0a0ttV@y^%S6Xg!l~3HQ(C5Ls+a4BU|l&~{iIM^-`c*qyXB-q&Wakp_&)1x2Zy ziC3{$2Tbot_eNoGV)n{uaa1h-KyvyQ@h;(SX?BoFcji@i5(&R^&qN}$IgP|}IBber z!-iHjT+KHE#9gd>GfMZe-RQ2wYL7k&nucquNgPY#%2xkF?eI%BBN->Ojke+Z+iE3m z&gA>^kWXP`{$v_Q8vAZe?ui)jcf`fT)nGFc@HRQX!4`>4di4zlyJTD>4E-4s1rctJ zML@RR9oRvxD+xL0hLF$UkQw6DW|!3Tpam$6-$)Q2>g#F!r*P*E`XY1rdMUU#yYldobwN031BR4ZYSFklUF{hy-87kSt z3dKn)_e3+5R$7lQvKd`(f93@@h%p-NERS|qmEaZEuT#NuX@~-)o<9cxGZQq1?YR4S z{zz%=k{I^KmUmaj(B3|=mOdU5L17DSwlf>o?tZ{M=?@BgYuPtY1sMkIY-&vcP>B}Acv?c> zl-PlV2P6kxnJ_5uz|gp>1+be%qs)e-Ylfn&85|C#qs|M8#`W@yny&!8w!;fWN5gSG z{U{fIi~>fJ2Y~!eSZm3|Fj-I&{n!uSIRYpHYV|D)^ZQ{)-Px}mk^4y9KTVSY6wEJn z^GtsWA5gi(5Eg+d(3pFN-N_^TG3|}|u?PuUI`XH*bFvT-&Y{W}7+iR(mV>6S+$JKK)r^`N3_c0&cAf<*)Xw}VMWD)`VWo7*$J4oftK;Z2cC9DwNKNFJP2!u3W)x$w+Bp)ef&gl6Elj>pC+p*J z2m*nqHv=wI3s?j9PQdw29KQG2tiAz_vky9Vn=k;?oPKxX(42HVesg;C30;tJ z1J`U3zvxs$(hg?5kwVVAN319@-ZxuQOi5=LQRQGA!wJHcXs|27xAR>!Q^h|yI8SCkS zpw1GO?%uPY1#?h=|<8`?y_Z~x1C=FH}Vs{2e|0bLtlOlGV?eqRKk{aja`b! zn`~>LLOg`Q^Wo9LIuLAeM1Q%T9i?CHNd{+>$h?$3IH+cX8Z1D;3WKN|yx9&jx@|&) z*l4DU0Y-W(7v&N`s@K3N49$zmk8RL)dzNPn#wv8>QGXn233#Z$th)+IsWk*`}47)G(T zUCK{>dF8`%%vxqgmvyegi`6|PYt+oqWQoe3qXfQDMShOiyUQRw6EPq_3@XEweEjQ> zbt|#JeW!y$s)xt{4u!@9x!st^O;6jBwC%7w6}q_H(+`e_F*ti~t~+@dYR}wzt8CoG zu3(D3B^60>m@TdZ5fd8T-Wzk0lE#} zV^vjVkY=F6#RIo5tlv3UzKXcVrgjKnSrQu@JR_DPMuo>Ls;=p@UaB{7{o&<6yes@O zTC%)X!Q;irAYYrR&V>btjdE8HE7hmS?@Fg|4s*GKngTDVkF*~AG)+z1nuuTjC@;g>Wnkh8Uj6BVQ+_Y zQQ5}vxV{$ocO8<`NMO3PWB?V} z)gcU2B4Bk)1;m|_w+8+8IZ*M20j*N!utm5C(qFvoZ)oT9pOO%GG0%b_WVk{!PGZ59 zQ=Zs?>mLUv!ksGdd$bQdoYEO|NSS1XZS9^P+x(4$fegEM1#J@jvW_R)@bErH>D5L` zjC75qAw^&|X!Fou^i|wtYLE(79%J@AQR2vS=)-4l`$<%#3_Qo5zmO+5g#|?@GY8FO zw=D6*LGlA|pPtz}yc^)(eMQ&Q<=MKp-ghB%co^zi+9Hvlrv(iuBUBBk1JER8$rzIb zp$G%-9iftn842ehl#wve1C}kp8CfyGi~<=UG4EIBN;ke`Zh(TaspSf(T@SPS%2&0s zTZkWdSCE8$ixyLVX@`Q)j|L6Ddr^g2B7O^b0uh;M*nvIregP*bnhLwt<=yXcj zgr|^~9e~kp5>FwU+$&B=vL;r(v^y@f)w52n^czc<&4P5kwwjLTvs(ju0>Pet^ux;G z?xEioV8}wc*sRHO;Y<6*O{4WJL&dfUE!^kQPmAc*6t?C-#nz;LLZwD2)-vGZ7w^d~ z&jV)_)^`ImpCc6P_qc=~-t(+MfES8e2iDJ>`Kp98TMfa__}lhBwmV>8LW7ct4Zod- zyDp+%lc7gn%zoK1+i-Qu-w02dVVn+`tJk4H{fHe z1DqD`L~`9Ple*sq1s=`|%2qq6fLA|~sLXzkhj@#6r3+d&JM>T|d)G!qP=??Wfv%%a zr56flX$bu&>%0`JzC?jw|{?AZYK0?e&KF zu`IB+`O@h|$Sx4D{lqDWqQnrorHL&=ELX35UhvAPN7rPb7Z3za1)o>J^7I?6s_$oW z-1VkEHowbITDS391r)y=+I>_G&NwzYP$KLwPyIGL?X~RE(8gs zAV@n@{?frPR{RI|a%-|UBq6J&HsTT#3~4AjqTrAQ?w`pwX(AUH!DX7}Na>1IlbAX}#Yn>WH=(Ne5-YPhYOxh0LOE72t(S(; zU#cj{7|eW}!3PePTPpjk^U?+_(=D+FJH|Wj~JuLdZ~zoZTP?K zKZr>^2#;4wW!h71-11;}oue*q`X6U5UP!$&6y);v;+=RYI{%5l4z1-TS=STC>jid3 zn{4@jv;Lt)i4^&@&?t5q(qJJ&OT^zN@(<;#`<6K%wexU_Xx0{9W#f&PzuM^<-pwP- zHbV3iqJb3Wi|4qHv2gc&(?W8IPNXf&_Lth!+dAe2SM>0sfww9`5XiB#Clmw4bEVU+ z#>}(LJOde*pQ;%pw${-xKa`8R=qiu!)AT7-dJhlTw8!`ttX`3aLQw;Ysi=nOUR=!I z4rAfj?HK{kaVAA<>$ACkPYA>X z+{DIgS_>iaG#?`4sVug?!s$>R4wezkacwmTe7)4s0vMCZ&0$96L9vT6&J-FEPPTBOL@nPBWPyu~6XyitkNR+PN5Z%AQMtDeCX_5w?cNs2 z_D+D~=5zm?1CN}n2;(^Eg2%+e){9zPEM zvc*~35#D^$gID7}m8HxGj6RhD;~}fa8G}qx_*pK)hXw;Jiw5i*VqiO?BsQ?$k&+H7 zW|fp8@wN+|Yg#0wB84%r!%9kKwS*3816mF2H$Bty3*eXCda;7#l|BL>_+tq33&1jK z#{Mj&z^48D3VEl_$AXx?80G@HpvJ@@7IVMVY@(N5vD?SZ-OHP$hQd0i3Fh11=JZ(g zuErxF$`s{L3k`{UT4g}m``Z`oeP1!o6QzptKmQtcrl(P*sd04i-{QU%cAs{KFT*iI z?L09qJ(0KTh}CkS))8htWq;?`^NY;$bB%l({;^=xiv>WT#Ve2v`NM4R;BZ}Av;R43R1NM%w@ zr;zF8PVcH|eauTA7V3Dr3k<*tDPA262> zSdTh#>U&!K^^heh_#zCmirgnip4fQVZjF=(NKh8B5+cyBsWTMpF2B!0Npm2jCScxo z|4QWw=$p46FDN3x(E& z<42Ca(I)gT8`r8fFj1W+22OWa%!aQyg>W9WLbw?1NOawayamR9HEr32U~l1NCw;k^}d?Pd1+e(zs9q*F|5#TeLGi*g#>dH6@*0T)mJ^!MEe~xmSl2d9+jW( z40=%qls^N6JRu_lrmzug44E)3mZ4ODS-2%VL@TOh=x`#K4z%}BpfdtT$PwYF2X!=w zi$5!C>B(ET2^70zcF_xXA381~s|4$z^{|%eWnHmgZAf?1v?cbsqt~6pLm!g?ylvB8_y#yEwKw z7(bU7P@QP9&KAq;=!`l1mMsueIhoO6Vz0VPw)?n5q<``^@D2Dil?B#zS^heCIJ(ZQ zAh}{o2HgzwL`-a&!u9EaKsOW<>SHEnG(l#eXEXsLp<{$)&!}N~Y&hqD)w`#LZ7aO5 zgsm&Qr^c=;EdK%eYmZRW1m7z&-yWw$?QRHvm+#KkW6EB_wR*t&>z}_SGcteEPPh#R zGycX#u%Ht3%Mbdb6PVRemFoH=?`CVVSG13HJqE}5ip6<+6sth1qS1T~|GkFLr4IUA zde;WIfntu?XaT7ShQms-aLQgd?;&BUm}gf#lqr$mFuy=;M;`NYq9_d4)ZhnF>eK=5 zF9_k!1-@mqLWx&o=W3zmn*LmVbiUV-q=oT8GDG&rPLAH_-Zxle@x(%bnTbiJLE)5b zd9k}lTA*h*51umqQ$V_VOkQ2;{L9?8rrgnK3soo@X4s5R8M|-bzXvNF}89&}x zvseV{g~AcA=HN@5@Dm!1q?uDJUYEnlHZ!dT8H`Q{uzJ~_H9BDnUcVNeXmulx&U5@z z$)%}imwMZun^|E}gfY=eu|)Kb@-MZG*h2TxU%e2fF)>%!-sOTB5rygBEdW#Gm>U8X zU8@lmm3@I1=jZ9(%=}2BkEIY zL7T<*f)_X{o_8TG=tYS|9F_#aJYn>*BE`FpJrOJ5DP!V!A8eBQrx_bAQQVKhU|_52 zuOSY%N!vk4}QA$`vJHp|Xz!xFp~R8=wsn$Qpk930_?)9znbp)@QLAKHmgcUb>M^=NncFdQ~{ zPkB;d9C8|1CUrOLb@SwI1y(+P3o!$aS#Q_(jNeU%_tgjwTqhWxS88CtmY^cwCEY$W znWdL3rsZcKJjt7SN6$Rat~R)HYIK4LjbsvA1#!~@Vq=V#bq@@mr|pQbKR zl$|G&;Tjyh?Ym>I#X;QAh=J_=9j;m5ki7m#Gr%)^o#;3_?8MI!_}qqNrsCw~6(wJb zT}8BvDPj{wd6tGi$k}u3w zt*oIo*tUT^oJM|rf73&rDxqXc1CzEBc#;}_w&4X$6KkQVq|+w)JU>WSj*$?8rdehK zVVKFT;VLYiK1fP_G;9`FESuQ2*-#R*nh9VMA`=L>rb@hpWFdmlrNmcK4P$+V5jxMD z`Hb^mw;O?0?N5#6e6_PQ(V8t@YQ=iN?q)l3uwmXGcJ3FI14j<_G3U|7d`p2*{nR$~ zf$Cy)*ZN#RuH4&lAK{jO!k*S0=+wiL;_sLs*LQl`wM$cx(eFa1vy;_^J^D4=ctUfb z)9NkX{A4Tl8HeHb@|4}^_aR}R?ZA`wZxEv*6&P?q4<=OG6Q*4g3|re@*EsSk2C!M| zbfY?{B7>yjrq}T3gNawwaD&-$3HSC>;xJt+N|P2|9jr`0HW5=_To1QT_;{f5UbR6H^NF!2H}#((UXqFu5|Wph_(mMz~<}H z`u9%B=QO&8C~=Ayv{a9$V^%Qwop-b>h5A4E>(&!a3Ip-AGrwtM_3XDywRIp?N2A*o zdbOO|D||u$8gB22xYGi<(*i&IQQDX;8jV-{aQe#GcfzKUw9c0Wv&M(mf;3Zbr+z1= zX?eKqD{mj zk8njPyH&xhR^+u^0Lp$sn6YTWWLK$Czu&`lafIh>N3`%28YUUFjI^C$CS*>e^s8hY zH)~K>#qxvcE@pIWF68SQIOGv4H*}*Vsb;%#(P|AUYL6{Qu>N+j{TN@js*Rt~HNqjT zk-8Xf6{aFqxH$b+U`4;SUlc*sD4PMecMC`v1hC!*?N4`FoFV2m(Jp5{*V)-Is4iIi z{IwA*MPzHZvN=ED>fHKM+4kCPmGF`!e3^AHqoA!JuMrM!$ZZICTRf~zs$E`r_=cBr0_!#CdH zPne_rC)6h278H&->{Md~P;S&H`Wz1hbA!@a)6Y;nQVyqFhprUW?8jUZLT77(HI&F? z13+Ox9+pDHa6BZPh~QN@phP(ZiTQ%7Fbj09gT#&$!B6^ull%ky zSciS9iJXU%fZzFV&! zBnj6e*WYjZ*Lo(Xd=K{-fbS6x+h|&6Af5KM|Nqq3|IR$F(1%ms9}oDOJ+A=CokFpw zk)mcOG;tU!`Uk`^RsTo5_!pN6HUg`8`3tZFY(Xifhuy3@MKH)p_6WaN$zS`pZ!qeW z;J>HpTYXUd_7G}Se(5y3yA_m3rC*4*)d)|8)F81U5);B9Vo05~sB-?u3k*t#Yiao| zioXcCKzaL-m)!=`O%a%lFs<$ogv5X`ZvnUK3gJhbl4mljI61F>I}{5kkdN@MLDC2T z=F47NQGMl@oTg)bca1{4uP|+Li~@9UhQeV+U%9hC02zz9W+ITuHT-l$Mmk6PAQKYT86u6yV#>Oxe+CQ|Dz6W&HX8GbVd z=jD@m$)I{F%CH&J;DX5EeMLZI2wHFm+Sdh9-1Zxdn_da%B;VsT1;r=G*x zz7jls7NG`XxtcjNI^t1XGz{k(?l)wV@fn_bj*j7qp5;>L1t=7``s2e}6PyA!oUF&P zo(uUw5rO#LNcBu;yrFaeD@1`#5gmL;^30=a7TOK_6i=ZCIT2R+6DQN{Z^QP12*YfSYwU7uMrJj+W^8!>DRt z8d%)(DxB6LMZ<%SgF7LnsiOYV*0Jfb?<%A^*;gVRK7281f33g|x~lJh`%{oxSsp=ZK9Q zw2f_=re4%@JstG;^iRKa6!&q|(yU&|ljGxWN{my>S>+vVPC*2h#kJY;$?V)3@X)WmyYA$S=vPG3|yy678%q3!pdZ(V)hzNFpO z5R+8~>54B_ibS&m6b-BVf|fH$1SfD{RHm#%bKUY;|Iu+=T{p7BT|~5(LMep;QcT&$ z?%yCr1;TbkrX!&cuA7GEC)7oCYmTK1y$q#@q`)>TmNYA^?LiLV9xpn1%*0EE*R65b z)HY#2mAcsX(WP1z;rDk?_$BASepb}qO6}%$y9{gCJ06uboc@pX85!_axftI!0Tp77ll!lwnb!hYkySC9uIt`kj#01mn3d{O%69 zOI2;5wz-YJ!Ow#f@)6&R!pqY*_ojw^q6+M)oWAl~4oxG*r8!04Ii2qio^K`)E?F2^ zz;U+@7mfF#;7jRaMGgc7O6}VI_>FpX58gVC=8u0s46yl^&YE+L};rLQ?1i{%`#S z1hsU*-P^T9FAoi5LOHe0pg<9iYCGW>i&&V=M>R@2voS^`r@S;IlEU|rAJ9;Be^_#!E{4n*l#3Q3nR{yT7g-VW*&0h9E z_~wd`!0%AS82LZqc-Q~otoqm-AO6MsAcm+{*69H-Yi5DWD4)nCX{znm?qzdws%wR69I~x18XQKOTsZ*5@t^MQRo_x_{ zQE<-PQE3=F5+|$+OpT`0z?5+)xOs>xjrgl3hlB)n_yV|6fEq%R>xxr!FRzqs^+38) z=ENxF4{7^&<|b6*9Ou!lja^q9DwZKplVB!`bfq&^m0M0vq1XG7g7{#&@5!P~8gV-W6hJ=DqR4oG9^gqh_Q*cSlYZ z$1vtk+TKr7U-z%y&>5G)80sQ2<-Tk225pIh3o5vMyJ%c- zM=bpCFs;7%dCwk-DD)VnM@$?K<9A<9?4zOXFH;65Gf{BnG`#m--Y>22(p`U93_dT; z$pre&^1ea)+WDsTRSXUZ^!qCHI&6Nwe#7_umdT*_dz^(kYI0kEu+=JMrnJQ_AHkqb%^%4plH(;--{jy)>P-zC3{WD5ot)sF(#qiFW-18AJG zl?KNzGpJO;dj?F4F68_2Wv}&V1LVk_JUThWxuDmRCm*+buDA|VwXhTx>_*C~{O{!9 zeh*Wz9I}-|@c;F|(OE(}^0`v6F-X|&5K(i@DR=VTE;`l!_#h1qh$cg-a7F!nFzu5T z6JATVw%^Ht^Kip%=6G>U!R8YGL=|Mb1;6b~K)f>Bm-Qy9S~d*L?UOCgZi1*1yk1I( zmc+}Few<JDVg#a*J=&ZKydS50=5u(lG1rzr_Gh@ct zjZvqlq+ODS!^iNUV;%UG2g~EII`8cI z$>ewXG421a1>h0imIU&4#nY@nRjXS!0ukxbEvL#Z#L_K9OMYPH9ckaXqj5S$Gm|~d ziWH_mVE2tdzWzIQIum7eaQ*<9+P^6=8cKMf(k$tgFwqk6Md^fw-wURvk~&)6CkxPc z+w%v_PLU=lBIWH-;}GMuh$I;Cb0N;hwAaxw%@DqN2WzMldGsoHFBJ-J?Ilrb0w$W( zb0zIw9@vU7gC)|0pQ zR+2RV_Z3~|^W0+1pq>TQhCyn#VKMjq{pB_GHjtymzhR4vKIMJ0wbbqW_hUdvpNDg1 zR428;(IS(>K=Ygnz}IGTA$V!@(&r6G`0!lX+lt8Mmpq2*i@gO?g*T|)1+;oUs@Tl! zoR=2Sq07jW+btA|{Ui$iJ;y-&A$&zCvf|=!h8_xI=d-JAHP>-Gw9A7{gt#dB<0pdG z>L-E7_9Fx0l%3swm6aAUG@>3QAJuqi=zM37|LBev12iAIZW?a;sDFH?mB%>1P*kE1V5m z>|$*A2D=X`i~2u1O~fB>c(^UUZh zL{{2}=7tH=a(UCIX~^0SYusAR`i;Oz%uaTn6P{Y(r-VFW_1!>8x1IA?&pQv|gb(!8 zjs8xr_icOZuM-XZ(??}9{mki1`QEPyWP^7*kJ|a{xremAt(nwdkdue$HHF7MT%NOX zW)+)rc=z|MvA4m4kT!vyJ4}`~)bm|$gb)mTi(L}$Z&!6Pp%`Fv!&bboDL_laO-PZC zD;RvfH##=Bl$EP_ANxYbFW^(Xe}5lyD$SrNvb8-HINqTHJIc0+=fIpu;z|rBiAopL z5O+RNBS677Br@pxGs|u@2kl~XVLg3dZ8XtG>tH00;eLv>Y6CjmZiytgEY26UF!Ymf z5i>AWMSc0DCy5HaAeKK&w-qH3(!u&XK!YgTz!E$CDLf5)T$25nY=f^9%d-F$d-((& z$Da9m)lpS2AC1p7aOjyiEC+V!k2`l(C}AG!dL!*@>iec;r60u&;$ z9)9R01o2V~do>wqB`_@7N}uT92~ie7EbU5{z<32O+=hX8=~st7ehqz)ENC_7M-71@ zfHr|FXm!4vcyle^=|_RHC!lrfSizTjvhTCR&U4G=@3qs^dsP_)7c=^|FA(DQ{-|YN zeHA4k_o= zc;4gJ10eYKstDR-&!WTpnZFuBi_qv~Ml8*UCHg|1TjvNqVlqM%s4K9g?E2)pgg)|< zSO%42e&*2%hz=NSg-08&6~K5#16p6m+^yg794N)T)pB-wNkanV8VMao!M1;gUxl(J z52_LULOZM^4xldd$% zO|+lZ9am42wzrdv#M&SMaX~H23iy;xhV4QlFhmIw(m(aG1c>g<3WPCvqA9CIU+;pK z=zhk#k$-!Cz48x+CRn^x`SDIeUi4_}_^B5|DYD7m@-!X;11oYA8r9mHm2#WDfYuH+ zQV`uQni1O~c-{ZLxjJLf=166>z1?uOF46wZMTIYeL<`LQP1tHLbNks=?US8{%hTsS zF^YF3weMtnCqwHvxn4ri5W4VWAhD&t+g~8!~#XJ^pcHk>G6E2;72OdfAO_ z`VC(o7r(<2YYEZWT-Hu6>G+7_jFWY7f5HcC7q@*-VtQUgAqS!?{Cq3a(jW$Z*UM~+ zo1kQmN%$F8dgz?v9}#lRQck#<8?k2_5$x1LieswtaT4tOkQY*iz9?~&zHotdwVyvQ z4|U39&Nl|Zk8$*4m-FA>rm0gpFZaAtogbrf^yxAAIXh}bqEoetk-~W-HVUlvJW$sB z@-?w{dgm$(?6Qh_t~CEX?UomqyBXmCr4V2pAJ)Ur$ zYM9SEc%%-$$vb?=ZO7z3qNEx(3ul@EP1mJ*3W8Mkl#u)*4(XKwLLwXKlcd(>=W^CXq? zpv&dnrg5F-x?ij>Be}oeh{9o{%J3{?$jA8bAnmkM2+wPNm#d#<1ey6Z)9Vsp++b2_8&s%Xpaj%N54*aj$V_E!;jr{%sqj8g^Q)ka_WCk4Kq&c&{` zZjVt6+|y5j6z0TWr=LY9k{-^&QrY}Wa5J!6 zoL8Xi(_eq~xubsMP^#w1xPbNCDLwT{WGy_UK$2Y4rEjX5)*;Q&U6`M|#1$y?%%z=MC`^8h)cy$-4xt32=SR(Ht|rd=Ty(w3?h=Z5I*+g{vP8D z8O7xrc9F8+^M!tXG$7&N^OkDZP9_JUXF4nwMmp6&*(>7H;VQ6^oaRUzd@~m>pyxFx zSL(w&WF9I*YuqGW3C=tz1x3+!jt-?@*esyhV*Iz-0l7IeK4P0aL=bwe* z<%RUK2+IFaC6G*)M1|OEH{2mZ+LtBUqioz^Yq4ig$BD)Owc>bt%AxY+ts15#uUpR! zS&6^7(Kax`@V@{}&AL*MijX9W{6D6Ro6m zg0?3N*TyZbpYjLh*TV_rbxpQ{ZE7V;$CalWra;9zbd$rIr(j0(4cC^}1!ykF4wvU= zYw+-9Myo~E;kB~^Gqj7t8yNn0LC5_d*hA!pg@m>ItKc(BlZD**$J>?jZ5w+XLlyS_ zDoL*FLMWmVkTo-<8p*s!I+}uFk5_^?WsUG0GVX0y zhtH7-m!_E+P4@fCYFR?BI}k@j$VcmO5%TVHuY0Rs`d%JPP6G@fdr~)(;nsAQg>us!xOM{$f$>Op-^})zOk9zl$2Hjp~ zeDfC8F&)Z%X>h~UvA}hsxeX>0@F3aeQMYOR#<>yt@+ zMfTJ4s$_2cEMv{=UQT0*7z_~mUzeZF(H)3LUSD{CUC5Om$;jKE`f*!)BZ}SVqNRXc z%!w)Sk?s6tI)by}j7DT$K>)`V%1)7YAi64sA`}nU|!D6nm^UWg+ zq$?pMkfE7;mhibQYevr%WHPlyP3xp10}I);P?emV+qx%R@V_6aXf6tyi9IT)dHm7{ z4Wx}fvF7e_=t@wwI7MrdJsa7Jn0%;tC^&BRt1(@(tA+gYc(d?je4WvCL!wg;kY@ps-Xr!U|2`o~5DdfCjtB~KHuS3ws( z&`9^E18f{~+@~ur|6Q=^PJZ`$(bvVP+Z#JvSqHz^5~W79(${$sjtc)lks5<9Q8mU#WvdEu+8343r zdsfE=GVOJe6uHZ_+BYuS?Z1Os)iwu{53QY|h0HZs-$w#JC@K^aBQfCEB*tS*R;bif z(8lm7))Xpqg$-NO&VHVX#D-PvwYmnOV*BECXh&%LeEu1#fplXHU;P&rAHG-bxRbC{ z6F+vO2sMTxsL-f}H{0BVRmz`CgcW(?1D+b4Sv<=m7`a_(k;k#^S7aRjzkNdX*JbC3 zrh|kN%{sd#O;M`NeL8>C+t#fQlC=!uMyuW^Emt`n0{>Uui1`oduqGId(P+2 zoD?3gfWxFCDG%c_Ucs5m>-#guqe@S|lW%iAS3}YGA8gO3e&(E8ic_yT(jE7<7_}Ym zoQutYcq>Ersup9f2eY0wImUIc^jEp~RVtx#q3nZpC3+tu+ndXx|78mQViRT>mNVAa z7Kt4k8X1LGVNG^Sqr4Vh`#MlVL80+k28cqi@DaooxW=>fq465-%G|03l^CLi5h~bM z(&8PEEH&5Yg~3m~?rg%&Qz;kCr8J?dfYT6D&-8I^5ghd4LpE0_&L*>#az~|?JErUZ zo8*~0fE_DKH8l&Ls4V|&dmIZAWDknSIgk;V0J01Is`E`3T@B8ZVCn?DV3U!X^9RbN zSL(-_!9<=mH%VD26R}pbjq{~ozQ-lQ;a}7qdso%=I%iw)$GQkfaQ9{9!_AIW)88q2 zYi9iR(sleZ%O-1&uzxCI!;p3%*6woN&sbn>W{1g&Nstq$ak18;>t*a(z{mo;V8NSc zPbSk%+lFRt;Nx!v{Tjb0lN&W~({EF0VA$h4*nKR!1Z0+)C?w@o_%ChcEEK1-FOQsxp8s}%v=b= zKr`@s9_>>l>U7F*MltYy&XdaZg}~gl$q{}D;qBJ&+xPX=caI=Nq_;AW$wWL8UYR!4j5+2iuJH_|073cJo> zcxNJzcdtl7*S#Tb^_8*{dp_yrm|xFb==Hc>uI&O#PS}dr-~-{gamz0v>&5v}?@!-N z$ycP%*GVI4S&^NSdwb6eZSdC1fgh38l83f&G{AXshb~e}IJXo-?3AMBd~EpR7ggCV zr~Qdn^3jmdOWcF$pm(Rsrmg@GjESAYN25##hdx395Y(PaqV@F|F03D0%OC~cXlNaPtS0a zV*_SB?z)7|SiHsH7XqyEO0Z?0_=QgA%conB&kmKguU;?L{-+V)VBv7CW<`lhR{})y zv2XL#dtxzv>gX536sQAUVXd5O$+k5Y4;~w7-KylL(`s=Ty<#xFNt*LZMhk+3P>@T< z^&=8HxddqMp-ZTb09G%l^Rk}At!h@;x6tie%y&cjI+zW>v*ATl@ig@t=UZ)VT&a>{G z#oU9P+Q5uiC?eYXI-VpGhsNQmQTCE`JS36%8O%k;UObanX&iJ|H1nv2G*UD35zYTd zo|7I-R&=0#D7#^d4>h6_)hY8{eKJ~;X|&*_gjOb$*fB!Haa&@!Z%p(4G$qu zn8C}3W-#Wjj!g?m2>goqtCPpO(T$5z8V}9wO)hkjTa|(OTu zDeYb<#_{;ig3J$O2L85F9neyL1)Vn&*PdVeA4t{5H;wJTehPMdWPbNQj`sN!V}71b zc@F2&m|J5ENaBB9GuRhl-0xxX0m9JMKV5y2E1@tB2sV0@%=}+UYtEULuTHO0CfGjN zXbKu(N(yZd{z(Wsr!N}bX)}yT(K8e7A9bvcl7+t+2H$9T!#GrfS{%!Jv(LFD^ldC(GN>65)T}J6!SkurwkA@zZguVPy@3-!z$}G54 zz=u{;@FY)r(@6CL-oQpsBSSo7Ova_^5E}`_fX=5Vzcp@j{PW5xv_#ZedygXpYT}^& z00I?Fj_z_f(NIsssSV?nn22z1xkYZ{U(6#FP^zMp>Gs$UUvlZ>7AM~U=H6C|TeEQB zp@>#psKF$RkoNiaP*vrIl&fJn@kN;<+Q1Fm#2_KvGf{xf-oqVo+Bb)o>(&DF3c22S z7iMbOU1QiMV$fmAR4L?qJUt^4m3Pqb{s$O0pHFvXD3zxBkzG5Xa|!=0=HA~2$)@~1hB6`E;Q<|^ zC|{>EH!r>2T)r^|{}A+FPYVc03zc>M`dZ&87W{v$lMOUi1O?PQQF9esExMPvrz0el z?f~gjnL$`v0}GDL59757t^Gx{rM;{E{-+Jd%a&!!_rfA%2jux1QD@?cVW@9vj$kms zVCIVv8x4ryu=_~##aAKLG14qTC@OeSoDU;#q5d}AO>`M2$x1NYh33;w z8}Q&U{EIjJyB<^>5gvwrE~s^MAEUH~)K&(Umhc<0(*a@W ztRwsFVI9B_$5L(V)dY)Bas=<9KdG|oQD53UU+GGO_-$ojNh*{?+$GMd@sP*2^4~~R z!s>pny4W4*ge5VPTbDYKNR|g`>jU}xpNX=O?`(|;V&se$R>5W$oEuuv@h;Q}O+C|U z(tc9u=!95e-e(v}E!Y&WYT9$tASwP96w^l4lcyf(u91k+k(HQ)wHU$nc9UK}SE-05 zNJ&u>N_KNmW6B;`Sdb`x^M@?i*0AKe<_V7E_b^WSm@tVp(>e9V2u~_p0hv*h+6_QG zL2fj774k1J^sRXGmh|qQAyrg}9C?d0mCBYrm6m|)7a=tO+CSn+Mn3l{j-52KnNJ(Y zC$rlQyjSiOv-gKj;(T@*bD?mywH&>wqY9KJC_Ag*#~2x#Ts{4!14~~rctlfaQ zlBw9b&C$B|B2NAMOEAKZilBN37h6IB=f$l3=|~y-Ry%>_b>PuH-O=9xsvBFxE?tvL zJuzVubBJ0VDV2D(>qW?cZc{BrlsRu6ex6@(t}<$Fo4-U98eHBRsY+W28ZW3lIZM88PoR#p~=vg68XXX+lZ@*d1h5p5RvNU`_g)uLfO0=7^7{1JfS_D9>Xd2)r(Mq@6yEDdp#bvJ|a6q(_*6^s;aL zQEt9c|COUBls-AHgR@VMK0~ut;=Q7pWkAM?Br=+8I%S3KEF;5cln{k4{mX4zibOOn zj>}_DE$gEMU;a<^^(z@e2>Z1Dp557xIg@YzC|kJ{LM++x(Ge^dXb%Y+BlbVKh&|3$ z_`948&QTYxx97Yi#KIh;U7OkNcYwYOGkBv~-eToVEb^g(WeBt4+%P_Pk>UBgB-n!= z4m$Q>yHS_8?D>Q}C-lbRQ29l_cJ;>K*Xn@c5UbYny~d}HN*#m$(f>^7cAh^jZp@q4 z@YNOiTY&4mE9~E)u$HJlQy_Qr|A=!5Dr^YgcmNr@LJ_2Agll>m+zWfehFFs#rY=F9 z6WA}CM$PnPbRrs=PqrofI$jIZ^d<(S#Bw_SwOC` zXzU=NS9tOqd!dq!^N2nSz=}?|FqpP+YGBkVh%ll`z`L2s2LX^{*;6a%RRXlWz_e{> zvLv68m&<5^?u|{`NEhO=wYvAZlqI}DGnc}Z9X^g(|NWIvEwz_W%MpP(CRZZg`g*gR z>vVZ>PH6UnM&p^Ua$vCXB^yIQ7rnbB`%}%<#tU5rK?ZWs|CURd;=3@+q{h*{x@^VC&5Ujc8TaB46uTJs;Ld~R8gK-b!6 zZLiRt+|q-d>qN%Xb@7FLRo1_V1slq|!|%vlHwcOte%VtllNmU?eUn4}qc8ZErWfl6 z695d1PC2N)!2$&|1j7l4)p046|Qkm*3Bi2`Q@d9eIElI^SgV7tG48bJWAs`=&upj zY_<|al6`C1XF%*Rz(9EgE`f50@G&&&ezSP3vZEj#>iu)*=_YIlh3h52^#*=!1K@dw znoU(I5Gn6QT5J%^|0%geX9cu;+9Wan_0UOr12{X>y!*mXs+C8aGQxsCvWF1)E5fpP ze{-7E<$m`uek#I+hFnf0gX8EE=olTMPkO5)Kp)ZiNNMCjZNe~}dwGUd@R`UxiJ(OQ zx>9@l5Wvd(#e-1efb{q`ub>>4W#+8fVlByf$5sjc72OF~=mcP|iq3n;r~4QMiO7)9 zz(LE4l12icjSK>Ax$x7j;#v-_}ZzJz5C})(t-#NgA65AV(-dXw!>Wjh6e^l04In#J76@oQ zY8p!&(ih99N5$HVqxb#=*v$DRZYaV37>WyFXNanA5g(z68wT!k;00;QU}r0jKjyFRrqNt8ON zlLaY09gx}`xudevvhte&TW=aPsrNn)uVRQbDDKFJ@>U%K1V-v8qmK0QE?5sEo2Shk zgv}L$H_Zvex&3*hFFMUPd6$Fcih(IcKQhk@Un%&`sCd$JO$#;&ckd~MO00b{+iX3T z#!m3enTOLSPdN3}9pcEr zg1d>C$cDw1rE%WYpUY1QaO;H{Icch(#P z+sXE#$XXHWut7IyQQP!DU)+nR<@VJ;sa{Le#eht~nd7j`ecHTQYBlp)O$8e4 zgm8L~5q97p<}9Sr?*jxvn0!Mx71{kN>aY?a25eFW7>Fimmyc&pcv%Ak?zvZ{(luy% zo7vTX`_>tAy?9R-zJ|p|ZFXDP4!_7H6noUc3nb?or-WJfu}(4u8EU?t)NEQ7=5fJh zbBVuJA-5RkYNMGEig|hbd4&J14Z-YqDK9d6lA?_iC-=rIfnjCA_odl_s zDB7nhDz=H(r^jZpkG0XTNerPgTRmhnyila9QBX5^IC=-`UVL$Q!*|NlSa3Qd6ZYXV z-$2X1i^y0mW1K9*PSjKl0GF#3j(W2B-!Ete;n3o#$C<;w(_&~)>}k&YpuvdBBcG;^ zw>G%z)_CM3-ADnXg-UzR)*vj@b-juS*2MOKXaG~$;WqhS@bS5;{E2qB+G~?xa(`Lj zAq*2Jpdb`buL7DBEp#Gqn%y*4hr*s42bcNORGgvznFuTzTLFI|!Ww7*kupU__o$5! zL?j(WKC8w>vR$-Aqiuk2%-KI*G_2|{v_?m#Qd>D0wf<968g5fEm48TfaK)u_DS!2L zD!?c>-9*f$nkfWY679HBoow+%dYE3u>n3I=Eka|XO!-@3W0cDVg%)X#4~(z|^E{y-b6})zMfW^@F>+91S+v^m z_o+5(;LH0VFI^SjKm;EuIs+r>vh0tDp+sKiBt&M%x>~1Xa{1w4!+Y&Wa=cWK{v-E` zLd*n7K}tSuJO$sBb-<00poz?3j*3>qIe$kQY6+vklgo(6+pfWz?UN;w#AUx#K(D&} z2bie7cw+e;s8ZQqzMnoyxsc~{H+z^-Qr#7YX*2*En7Hy4)rNY5cg57RPPxCL7hy%0 zko5MdGz*J*hVpGid&_@?4$g{9AQpB>t%ma9qho|oQlDOm$luvf;i1lFRj706O}5$R z*AKe^vB8=J0_x_^f$hcim(CFOEvy$F?3Z?u+plsTD)X0y;VDg0uz4vz=wR@Dsw%!n zv$=odYnvrRL@SR}U`hU4N>p7q=Uz_-M#qt&c{pb=IrGz?8^c0?s9qSi+Zh5{WWCuz zP3Loab0Yf#u%h znAA3p25%NpKo~h|Y-a`{7Ba~S7_nncYRRH-5HrT%ny1hx?VyH3m^8>Q36RJXn@vJ6HN zIRgR}XY1{sd7vc)KadoH_7@X=05c8?wLDzdnZx`f8a4x+#naxnZ2=D03}&-h-aO^R zdM-8Um}8JRLaAZJAzR#%yt!wE1bb@bF8NtLpTl?W;Vr+byK2(=A>4c^Nz|e zqRYq2K##FBR!6PvPwjR}vm)yQ-=~3F=;eU=i{hr|@kx^3<(+R&Vk`6EttMr~8($$9 zGfW>dH%aMrPVLD4@uP;P8|%%pT+bD|P*L>K(>jE&=s)KSy4#(~i^TAuyQ7l$#^SD! zTJBNI5O$9b!-vry=BdO0N%7$eCUEs(2Q7b`J?T=c0DBl(5_Xq7JYmkvZyS-C9(=dM zO(FATIA(=#m)eERBXui0*K0GEGtYyLn%UzUq1K@IKBO^zd{}ga3y68%jAPTu3nWp1 zg+d+CB4-?m=D|m;^4Xuc5NJQJksNR9bXT&P03(O1KeSx`<~zF<0_y=_tCGm}D!Dp} z>aN35?x#AAPTN)*@4}^;5X)X?A=@bRy7kXv=s;T0MN+_K9&6S?eSxDAaAw_XG7k#u zKiUKFJwWu8aJCP==X)&UNaeu24dA!A$>rC@wsRo&+;p0(2~@FhjfBVk?45;aD0lOX?F)F3{6bLcMw zC~U|dnY$yQ#9zgetgr$mLhaO;>C6)o4du5>FLP_^+PJxwz z#edmb)k(|t7fzKtzbP7ZyzS@On2o;Tqzdq~{%^nwCTm?4Jnw>|*{Wjw${;goCI?ot08?D%g4obNoA;ts-cvAS9|58>rDy*13^X zTl2=|93+6CYh#-cm9}A6CWvU|qH59~h#-$r*WR_VA-r9-F;o&AZ}V$t=jfElh(Yx5 zy5ZmynWIN#m*uw9s+LzPw1Qg@jh;gzXNl-NFjNXWM5t{)Xhm%Lvq?7{6R~s;cA1kc zY3f>LhPtrTB$-J2-Izq7uo=$DLUgC@abR^rfkr!D-lx>f}6yM97u+gF06(E^Q#VZ-bCtV87#TJR;^}6RG9PcUBP*_)2mSSvMLsH$*TZ-=& z`XU69(S*IpdX6N)$SCo_YM+s%M}h{wmlBEa1xSlG{s;L$-28_;O_{`jD5{VSDSLQ*wX8s2nL01FzzpHU<2$8x&yCskBj05q% z!!5|F_q+uQ?%k^b#9%uDEq_3yC2=v+a$PY2Fg+vHBs1MaVzN=GStACrH#sE1MRQAy zxG8a*(jv~fYmgzVFRJ^TL39;SBp1mApNs?FXql>0ilh5Lb}U}2J{E*ABNx)(b+k+9vJ{tED4FfDI1 z&$5)`XHt$?6my)s{LTM+D1iT6hGmF-uGH@^%ESZ|tyi?RDia+SeC@&Q0qYGQnmaMl zM%bk^zKafd9M}eP7=uQN-wwb_ma3`99hp`|WsIh~X`8B{21Vewhtm!>9ZgmWl6)o9 zsNQ6bS6>U!9jT2RQ)gsIvese`UBCjmZL>WqIILe1wl6JeCq3v=dSDtdo%06$^aQzt zay(vKXHGpIMw?~*9|g^~Qbvh-Y9orL7_UV=)f$Dgc*Z_N$dHl%;GXbjU)*@=-qlo!Z@%#}puToHLE zQFTlxd5sz>c4y9(x%;JaVt{%fRFL`DKgaIbjX1NV>iJO1R*v1M`<%lGba2w3j@vfs zwDHUn54R#}cxE#G!l~aIzoCjO6CB6Q6OD0XpidkMa|H*d1C71XVKoTF=UmR67Yjr{DNR80J!U^dr1aQ;OJQ)k zefI-oFBL0BOnJrDnPf}}i!?2qhYk?@s)hr#f#+m z&zShKD)16|eDvG2lNF>l?`;U)cjjQfeOOq(&knTx7qMZnsV5!I^CtlEqr4aHpTr*| zV1CU>h)#eI9c$RD502G3Z{}Fj+`JDqT;yGW7eQ@VB6I&ppKzci9K?X8@?=rJfjic_ z;C`MEq7r)6=LHhm{*};59Vk>{#MG<**)6XvKU|LWZH9puD2{9?krX=@N8Q6)e8ZQX zZ)c(>*TbPs=?|J+(Qe0x`HK*rVUuc7*-PQ^mPuLJMNOU>Ug+%|`UyaOGwo}r25E6+ zKpWezD&J7pm8DA9LcF8p^J?k3jf9F)*Whg~rQi%Pn1*2fu{GU__JlGR1)9;a6#L04 zW-J4o4}$>KSn*v#dTi5sed?P(NQ1x+x5VR~OL(w&Wu&H5X(m^3$}RKSeNzo~jb8{8 zO3QD0Ms_?PcYpWxq4UTff2yp4-LR)LCXi4fb?tPwHlgvVpH-61sz& zC6z`vheD7}??QenOtTz0v6Qj0lsT~s`!=@~c49|5|0A;Nm3vdw8%|y4=@1pW#tg^P z9z|Y@dHmx3sTGn9M@r;Bpa@!GwehdX0&!{0hAcy)a#HR1@B`11tjCrOEpQ&pat6XW zow)GHWH8^=acdwF4;84fvq??1y#j-yf zEuW@@@y%B_8_F-Cy=B9HRIZ_F4ZyO+5FA<*{xQsHN^LkG9ul-;ku>+K&abz3&o41E z$zabad^sCl_7KW@mG!YenRYXU`E(`*C#TUKV^)g~bib)(zOMKmp$3BX3<2a{W~R5H zZ^U5Ru?8L7qyLm?sKCg9fiwi-AUN2c5W~`iIueTV*TW5SM7(KDaf5wnW6bbF%D1F! z;3PRy3M5AYalzXA->EP;@m-hV`$szsX? zCGr=@ApdPUh{-dEK(FRj<}H24fa|V#@`{ypCnO^fAJ+}$|M-M;wS;|N zzMDokexY1^aH2G|iniZlMi!2Y5ry>x!uS(^$!=0fJCR0JNvfZpXjZKWb4f>ddvL>w z5F4MWn09~59$Wm-VoPAoW`vGkL(>->a`SvOX3j+W8$ zqz+7<^B8rXZS%)B-{0gnuMmZn`O?TC_yl+VPc*sg`Q5`@Hf8r-qQDBhC~5T9bc(W| z(d2m%pf!Tg(x*>iU;5{6)VHyHP-?qSJjjo;F+-x&@FfB{F$aDXLC@9T6Jt5Qs2U9Mz2sbV&!GB@LU4PDhCY!~Nnu}WOU%ec{UB76 zNs1XojyYpch-{d!v)QqoAH5pPo(u_maajU}tv71&;OvHz&zr)3~j{p4}&9x z-jq0FMg0I^axm35=?z8cIiNXCUrnCW8Wu$RMx;IBqbDsx;0jRmHP)bq=gVtMHZl-l zG;2)GiV~wiDJ|A_)K+)N7kR5pz~iw?x^x2%a&XJjW`xK$i!E#-&?;SHupb8W&~R)T zG9~m&@zxo*Kal(HeL{}74@a8OHrPUq*YiV8f64zG&{}7hz>ufABvpF~pE$&EdV{FJ zL;FmAf@~I*JM4)F%D?O>Et`5x^^IDJJ-- zQjf|?Fzg7cH)r#Rp(`o(jwD-h3|3E?0M(@fiV=Pg1P()k;&$A{r(d}BKvm_};wdrT=i2?-(s z1wn{rq^e{gC_FKB+Bn^$LDRQ|;nTRa2 zTCAr74;OX#7gD|b{l3rz(cxRMJ#`^2N#Ai+oX{*@#Vj;l4_(m%rGC&b1J%W1wTXN> zI0e;iYr7=_0WAf?y726}D?rK@m)hg9$tP8mUmd37)?K3&kN2gqG~U1y*(YpP%mdoJdC|1n2<1PKgXU_ ze5$Hh#Rja&O}5DSySnbKHpVJE4gq$pKY=G$YKi!pX?foLWWse^S&g<=;M6$hY@j0?IXgadq zIGHF{KQuoYSLGeP+O4IYoUIJk07@A%Hj$m9E_q*qE*o)zReL@5OOTT4pMlqF)hIp# zf8J)ewqk3(rCQGEhHSo@`o#%RMP0=RTmj$#Y`tPUPc(P{|;c@s|%* zV>5^tn?F=(tj3JUS5{@a&VaPX$XUimwica0Wp_D7ZV`Aha|I~Bq)hD!=`M56YivrH zv;t{p0M;1X`vLcj;(Z;W29UV`pWIutm+Ig^d8o0R3~gyAuJhvAq2Y^sw~?dSg!QrQ zNMYhkh4La8v?I($Fs&_@d&y2-_oRb2eYg=)Vu^HneOJpM>|~xhu@+*>AAjW3cp$Tp zRR~D8A0md`#y|DLv7jg_Bo7HIaW#eXVju``ta-Yd@P%XWpP8N-id3{_?Bzg$5aee- z0>tF8yAJM1-FXYczS}W8>r{SZoQ_iAT<<(J#R`{5rK(=#C;345OKU%3!-?wn64xD& z-M;q(=9DlXSwd+9k{6A&kqrgIzE)aj5C_};GP%p;FrY|a!wwP+$ol`a00wdlEoajq z$U9(u)%aa&)@w;g;Y)L(G~6|ul@S&qv+qczzUL0ps%+s3^l^)HMUY}c`VElYGsf>n zV^$j<-mA!6i$&`mxo@7o7f#&2LRDIrHFM4p7tIG~RlY@FB%7H9lpK9@ov$pVJzP^o zVPlB=RGP7!sUUMC-d`|6&)uVpk7z7TJC-He1qu>0}>&dbK=eydPh20UiGH0}bvT`bFLPfQhYFsoq$FJ*n^t zV>zKWz0ao)4K~l^t`i+&GszQG+YNmYwNyVxHq@EApsaX--pR{y%*{#P3=7Aqj{Kop z%uvj8?PM;O2mQ+eF^o&V zAaSkuM(p{A7J0n=ehH1EWNPh;%%yQP`ZJA->%z0 za)SV_mBWxQ{^88h^z0p=iq;oYN2i`x=uycNV*Zk*Xn>RwXXN)h);Y$NIk5hQ_^dNi z^+IN<5M7=1SwmgG(D|({`t7*9h73W++KY(|aoEIxB=balw_$RBT)6#^X*$^ljbCB7 zkLi&SER70Mo8ilG;F^^EZ2igxP-e{3n--VaXuto;K{SI{LoGIqy(KV(NFJ?lDl$W_h7DQr?YuL=Wo#@eBY=iX2(H#QWkbs$Xdfs6Z zZ9{2d-jbuz#94Psznzzw!+#cD#sKm^U?AgyLQS_G2&w!JQVQu?p=izC;`8Z{8r!v; z4Y?dpEFnF)O8$~mwuE#Lf2bI~xwR zp1X892MzdrLjs&RGXxvKht2l5i1xhwT{(V>O|YXlLke$Bl+&EEKL6;MOhMUYT<^~s z^EPmpX_S*GU)>OcoX}zZCcBkq+wEGtJ2@d|wR*$*kFajiwcZCgRIR4qcd7PckI1?e zTdKx#YkakPRNUso9p86py4K)_P%w#cI>jNqSJ5FiH9HdnOpHlwj?#}g{|q2_&ZODj zrW8fC`)*I~aOf0A3r9P8Z@nEnM7~XvS5?dRm{a*lwA>N!lYUI^zS^UIA z@%dmI2k$l$Kv;StL`M#xfX>gE}<4r{`dQ2ox_s1UjHez zKZ_4~D@g7PR+bf=cL86~j!x~w!@cb*G7%Vq1rI~F3IpCqdTS7ig2EM?_zM> zHgHaA5I}ZLUC@XyIc-&g~4goh9b+K(iuXWnSahB(vt3ly&nkIgm7q23e&Do8- zxYs(;BsW=n@VRl;0II(bDGAlavypFr`*IeViLMbHe>R?uqp&c25-@NfX(OZh9h_vJ zg~!!iEt?%O(ivVRsv-MMXH3l5CNm6+{9gETMf9-K?U%+&iG6WfJKQ}>Ph}DKCjR6% zW$J|G!E|o6h3j5&Ad)^wK-I*PXq=x5V!(spR~P$zPi}E;To_T2!G8+SG4XFri2UH} zRs=xi)v%^02MHpKN*F17Kuzi@I>-`7tPo0}OV}YXzC;4mgow-mOEx2g65H80!+%O8 zmR}8vlU79B0OQPU%0%?JV^SNjfctggRJdUvKV8Zo+5yjZI=Vt2Qr!bn1+K6!oO}SS z?5#f4y0TeZMB?h0GlT(m#fjz9HAs+dlrxYM$0XemR@6^?)znnB$<+Z(o8l{bQKlhI z^2Ay%)V8oO4z~$f*bEe!wa_qO0f-)`lZw^nVRN@W$euEm4c^ny^xkl_yUqz+08k>5 z7d0<^KMqkR)CeW8!f|Tsh~3j>2p-q|1-G>jZsmC-<5TkFLd%8)8y*Dt{;_;d5dubS zJ?R)Bv!2ccX~ssTo;0ov^~UEDb%a?Wws0w3crLcC>JxU<*;Of~*?!>`=lTQ__xsrn zLDuu(ZEgE7yd@O-KfIM|$~e02A|Bak4@ObqL`Urp#6GM00ODcwGle^oOizV>_)_+n zR%gR0+IZIZZTnX;AO2-1QgSqe;n3yG-u_qd4i_Iy1V17i+ zhClJ`Fys@i*ZPSK{x7!ROwruGaa6g?eNpol<&(7`lqyUG-N@r@ac`Z4cXtLCmmH^l zH4#=hqFb86&y_>%ehE%OuNH!#j@E{phMm_-sS8>AKR>+0hXW;u4p7}Rvm`JUuLeRt3Dx|2Gem+-BC%G*kLGe#sZ_}mD9^vp7@~#%4f{0 zz&FD9KNq_@+L8E-KN%wa*qTn8d~Dem(HZ-&+d`Q-bF|o?hM{|&;N0GO8-_uv%a~A( zw@6CdB9r$5L(ZpOza=nmz-H{pvXtTwq_gBw_<=odEKVhf4u^YQKQRMX{3))R-3TLU zc`CoY!8LqFpm{DvWNHns?ge)WNJ&^nN**$x7>}j%7DF16hAc=a^l5cqSoDzbQwtS( z9_>NeC^n?v+7iqyhrC+NKR!?l{~2t`i7ZiC9At8&O+%a3M@Db7dK(z_ z*B6!4?ybP~qCryO1$Uh?`9M@@r&=h#2`b*Lks-A)6m#QWUHSJ?a4fUJIhWC>)rk?3 z+c!&RO#jad>HGR8f;GPz$m)KYhe?yEYxNN^+e|+?|0jQki~Gn76K|7BmMGKxL>PfY z^eUQ=zk~uXlvoqr^R2g3Z;;f*&lo$hbYyeyR}`BtS&o}8-D;m^1kWN97c*eHJkdih zgZZ2PK^Ui-_b-QWuSRc}v!@x!g-daEf0iucRhOm!<=k?1oxH@aL7ZSK9-04v6^D6O z{$S6bHI@f^>oA2WGk3@wqxuX`20qR?nUp2pB8?>c>Jritk$Xn2s@n*@V=H;N4r9Za zSNV!@NKAZ2Q}fIlQr(~g#0yw`qU~x4;!wq^u|0I#D}qMo|8`6y=jiO?7bOJ3rF z8ZeXnN+B@1AfF|4F}~ATaXiHk0SOQUh6-TzikJ#*c7oCwQzfbK7G%#yu>(RPguK|e zi5U;FePVCWMEP&_%xr-AMN*}%c;-x4S{9o)M4y04AyL2aZ(R~o-|PBsL?RlMr!3$o zCOVV%TbJVCW}5l*ely}xOc_KwAIgIA7Rj--F0yr%t)g|!p(7hHF3GQQy@|&SwIo~P zfeDE}cGZ^gxxS6j9$1(w`S*!n)k5&jBVeYQ#PlV!R zhrFqcC1%o=k07$p2$2iz$5PT~OI~ZXA_^`Qo3N&aXs_Ecyhg{OIUOR!-G+GBNCrP~ zH8YfNJTTn_J3?XjD8phhih1!~T^xw$mZaQ^o$fw}E%Zdtw0jhM7HaN(Z>6|KEDW4I zXE4!UQK&RKnXX;EEM)Jb5mJr$2|r&fdB4mDWDai|VBF@tMC(p@yGS?i;TyxL8@4fI{pS5V5yeo&kGWIE>!Pz8UfH?! z%@z$GM|j%6l9i8~o?VEYvC&?v-v_y^e{tShaQ{hFwh}rEaM1DW2jPhdnnZa`s5O5| z*+bniUfk;tSdYasn~-crf2W1%A8!NKQi9cQV69&~Txq_UYpWc4$8g22R7Y!E%VzA@ z#!i11W9G6MMTs_E>*#>GIn;7v-4xXxVi~O1-Kb8mlz}jg|n3o?NGC4+P z50P%uC&Ef!2Ur&oo7&+nP>5LIMQ)(0Y=IYCSqFlK6I6eIETjtEsC8bX% z2AsXP^Y4DXD`8#N5M;lB^d{DH-o5XKc*9&WKEZ#;_ze6F+d7ZSs`)uMt(>?e;kx=tU;$?^o+dh)4>}fjyzf`f z<}z!2#|sLu#~ZU;1GCXI z<73$9&30W|qB;8gb#KmbAS*`wFVB$V9l5{2Ezf?V=}0mB$dGjDi-iZis>uD*z&6}2 z%AfR5j6d}bsQpj6FfZ}M{9&4aZU0*g%~5m;G~u!OIO7~1drh&ep_@lAro=g^%&=RQKbn&bUk~ki+A?&US&WCly+QEjC{Wz$v)$kXq@Mb+8)N^QR!JvZ!q|r73RP zcrXkrnJ#dyzFGqPm)!xrUtOr~xA_10ZUE} z^)@o^?qCWv%W;8l{;$zL6Bk+h5D=y5>i!)cv&>tJOcF|`-J=Tq2j7Z_WeK(MI61HS z*Xe+ZoYuAI1gS>*zpHWT^+Q_Yd6n}Yx@;9N8_?cf8jmVR;WN5J=y7L0CsFvCX?6!u zBf2i&+Zj})Nb{nFAFCY&*SLN{$B601z zhsAcAe*5t5yiTWc131%nbho8E66ubu`*BCL0~o0)5ofdMR19+Xf;PNA0DGNWPk?wzW>A7t_VPD~^#<(Z`!o0o1)NkP2_(i^?o%ADwJ*XMJ>n^&C{by8#$ zC2#b-xDh9iE%|xEyE6dQRn$T-_3-O-N5)49YTreSo(UO!9AM`KetCZ!ST_3}S--ve z@lB@0{OWU$=KQP;dqx%*`X%`0p6&Zr_^_o$;}3Y8Ps~|;ulE}T(fbd}7O$Fv24p}? zkFN!!3IW*3gzvHS+r6lJ14o~ZVgrCv%~Gb#+__~><=#sJKgNRXz8fd#>-e(LpLC*8 z%)ROkMz69C#;71_Q(}Svz1E0VJBCwD^M67<_L{g6t#l3!+5Jv)-Zn=?b6pKc$eDbs zr*2o?z1V2UgK)>=`$rXx=t*tt4xk+ZJc8n~Kn@RM%OKvZ(oz&ruZLc#51%;ho zoV6kM9)~#D_5R6%-yu+2IZZWfe!Ly3E!}cPcbWq1W<)kDWqdR4SE@`$_8xN2`p{Nf ztg?<@20GAo?@@4jDBWNFvi^Po_r{HSh~<0!zZQ|U)|)oY%KJMDhI#7`9ns}r=RGjXP-f&eta6#z6aZe81%=ZRkIAfbDSrrG z+pl11wFi@6{?+<&CDg?|bj!f``j1+u&(LQssI_?0b*M(^4$dYBf*&g-$#-3Uz_@Sr zYLuRD6dWdh_T4G?f}6{Kslt@x`q1At+7|SQF4}%$S6Kp38eX`5(_Q$H-2r8Oji&wB zEj7R1BLd}fVM+<*hJ`_QWL~IAR%?wU=-m4aoFsL6LKdo|3;4YqMXo$eezB}tBp1`R zD*~j+L1?1iYWp!FyVc+3p1NjNTv*C6)o^uf zI+0Qpm~YdyznV*~5k*5g2zK61Zy$a(3QTASa)g<3`l3yMO=1FX=ZW9LOJe&9D|A3S zJDVP5xiJ0vsmAlZE|r-Mch74}&S34E=0I_W!05(94^_iWwL*R3F9_myLLj9JJSY}; z+?@(57!JdEr6DsKiY~sSoi*fheU!8RClhgZhx|T`oguo=Z;GMH4teEp*Nk#Whei3( z3!^yqya7&fdcfOjdt4)zd%h}Z0IG8Fb%vC7*&nfZa;Lj|6At!xFb4fS&)Bfm5&&MrdR;J?*0bFe){Ko9L_Ir|d4AOg+2QPk!?l#8=VokL3+$Xzf~0=X;c4tN8@|z{gu{WP z0Dez1u2ElA_yWNMze0?ghD2~-l1uQ+RpUeYcL7ohcVFb&5n2Z)$sW_etQZh-2#PXj z>;0mU{Xv8!s1|0_{Tx(1UQ*R~Zo&eOI^{wOn_ukyBKXn~iqd}Yxz3RCLuQ3jG^N%u zw2Ii9rBU|}->tyS6Fzve^Ra9>ZKgqQ*!DU{aFqrE2J6`? zw+lMeNM>?>Xd6MLzS07tDG369YX0qE&jU&4qpzPvecN%_oZGKE@x5ak_&@CZ!~0-c zA6jSzIDB|)3#DSe@;o-tv~d>6>Gs3v@J;@*D#p1uN@Ny$9C*-&=pr}6L3FDAElKmS zfx2ROYsn9?S{${G2cfv|Cg|vST4V3?XWiLm-_%GO@q0i=74Sa*LM!H>cQd>|@SCb1 z?amP4{dz8*FE~m{sWKOf0+hwZT>u-X@VoTp+`((p!GZqhfqPl^o=SK9t4CyW!zKiiWlZViqD zyzfm|JjI*;ertNS9&Q3k!vS-6`U?Mg+g zzlb*Lg*N^O-&J)^X6Uz3spEeY^m4#)4QRAF?8~VLS(KYt+nX4E0R(hBjc1t zAD^{i&ArSMtea!mZ#lu`DFNsX#5h+KR;_P1N1PKTUb7;Rsf9`=;E#22?fcskI$e>L z@|>pA?`edXghto-70@l7{B6AlSZTXX2|x9R+gg{nM;`RmcCx%ca~YHe2A6a8gW%)4 z|ITkPw?w#Sd&a<#9ADND1!YCE<%TXLOvjbs2>*`;)eUBsvzhSx78dkx@p9O(6A6v2 z%eyoU^8`gyqOnCS$>ipxzb<)ts+K;miHvh8gc?H8f3E!O zYQ+o^Us3sst1cML;aDNRvLZqChR>YPlh5fritXS!>iuBKlKoBupyDgdhEn z@6ZGo?W~2>nIAfna{a5GIY}XADwFAj8OvdnyhRsyQ3IjWT<2M>f{yHXSkK`56#B&j zFao1eavx@##QR;^2SiKnr5&A3q>YqUr*H zU<2Aj$a!&GE>`^WN7E+naNsfHS#PD*MpJYecn;a)*gWEF9azdUHHN~hM2zvQ$wtR0 zxr7ZPXZ3dc!_!L*HiI@PdcXVH_Ua>!BJIG`ZZk6kyz+{4Zo~+b9y05^7 z^=^kcXf>lpLgZV5M}ei(Zw|Z5{>p+JO&=)-FW5vM^Z=bjn`l^U5`aKzJvN-%6%!4i zDs#6mp#3DL^_c$iy(H)oDnsG?OK(DQ&WxM!ERi0)u!38HXaD=RX+6>TGr>N;OY*{` zJ+^jGI0YhS$)2zdGyAQVHJe(phMs9hWx;R%8X~!5f=0C7kR3LPsQZ1$pG#VMoIfc1 zUlsti7^9)_TTc8ie#alTSjQ(-cxRczh7)*qrz;QozN9ibUB%#n^^T{5$Dey6=hMpd z556CCpG=Yr&4Kh$f4FbcQZRGhTH@--hcxp4bP}|7=9HuK(%m>iRFzE6cbPv>v|QK8 zu`+?C9~Zx&V6XS4G{hI(QW`)0KDf|uf7Fy@uA6yb%m-aOdXkjbeOjbutWjvf!Fs}x z8|ie6gHs|GlZb8FYc}QEQV*yiGb(L@9TiXPdB-l+H&;DgfVxP2Uc*Bd9E4&aYBKHL z_@iJmGeUfZv)1|BKJ+G%@dm#>23=kLAnhZ_3u5er#3SQg2`PuNb1iW|9d$~_YbGpu zMOqJJ@Lw;u!!&awHk_L!-kL>gc8G+#SrbY2eRUH2tTEZRajoSYjx|mF$5T>bH33z8 zmA(ppZ>Lg%=pVFfBk&S`($ple8|5@-HCc1kyDf@1O~O40d?Ek`qStB21ebH0iUZBS zlz%u$Gw7dQ#(fPC?KxOx1QyjV3SXw1#Nxh5NS-ZKPtLurPYvS`k$fH3`R+j=T{FojR?er z(uZHk`i&)@3rZ0RDZ0-biwcwn0@9i{>UnTrd^sVsQ3o~1K|M$xyT+*fUu^FSHsJ?7 z$ajQSe#Ph29Vl!DG|tgTN8nnBJ9EA28B?ov-QbuCzQ8pv$g01O$D+m*$A;kE>}}nW z$=QEkkUbEOL5cl)LO6`JG?>i*++Wy#lfI4H$BveCh%nFnuPwe!jK92SbmeVMP?$+H zC9Y}qM`O6A-$(?C5@HGt@m*kX9H^5FDHQ!H_(YP^E)xj~q)b9a?lyO9#2*I|P;Yys z;HF=on9wm&p?4M)s#-MP2ZuEi-7#TM938G_wsd@=qBX08_Ec??+y1b=bzI@kdq!T6 zvou**J4L3E^HDok=;_4#Yy-E*5VF7{EBa!@nW)IYh$GR+% z2(Q&_3q~u>S3YdSG8iHDEngdhLDY*uRAzGErWDGWw{tT5Z7@Yoe0=a<3)%3Y7?k&q zxmE04utF1e-R=IET_GJ8-qxFhDpx=%CZ5qyQ_2cXSZ%QG>Q(>Ju*(xN>!iAN+5Bf?>v zczjq3bg!#TvcJ8JQ%QE9!wm+D{gdj9HVQ!PWjEO50Pu-Qrj%baprcED$NN1OvEwg@ zrq%|oOQB#qnBuxao6m^~S><3CVTD!_cj@=xiH_1`RgkFG3};qU9UG5?jS8E`s;r^ zMSFO*_t>Z>p79*81f$?l{AhSfE~YAw^f3_4-<5I)sHs_YHwUTza`DBN+wcbK-*ofB4!7JzoH{KQ1)$8;EH8 zyv-PK$L-`T(4jx?r-y>2E^4ZB50k6dE<91?&@D1zQ8JPrMJ)V#$NcleK##*e-x3+X zBC;z1>R3q7ytAa8Sr!a-_$GQFP|D+vV_?!a;~HFCV43kEz`Y@bj(SJN2F?Z!c<_RG zmF&=n7(^iNlskTo0yUn2%(G*hnSum7;u`@fOYjw2-gMWOMnj^w7VcRmvp)yU;cLGv zex!&0aDF|`5^A6#Puh$(s%3loJm2&L&C&ooy-&9_Sn9`v8RC2k(nLs%At%^n-@!5F z{YD9|HkZW5W_hN6L0l+z@^YNos$iL^-~US=Zt`!TWmY@`9~+HbIAUJ})6crT6#D4Z z1RSh9NcsXj)<-_S4O~l!4BVJPRPw&ZcdyY2C(uxhEiF0#@X=S{VxKX+klhw|-k;OE z_B$IpJMZM;y>K!kCyAtK2~Xc08j#YY$Em;@*w7OZE%mNs;wcrt=RPK=4!s!13PLxz(Yt(6G>KhSX14 zp1O#gVH3G!D}))qV5Uu3%nHeG%h9#WK;i8Lo7ecGya(TJO7?}NWY4}U?VLtVD;@rF zFf}2_>dd5(dr>}*xu@TTp2;Xg@^ZCx~aL=BL z+XuW~;_%JMr&@JlOP*3opfZijWq#E}fizOcL|yCibPK6{sz>I~_K~vi(OK{l3QSL9 z>gMlJKI2>~=r}7%_fY^WF1pCLPv<~#*LMD}GXdsEJ_iDR=p;_3EzS~IWWc$VmXs0< zX)ub>-8V(hZBUM0Cn~1uK-mQL^W9pvY9b1mPx?kL;95wkZvdWs-k&-;(~h%B9Xo*$)P=n{CH-t5ZdNk4@f; za4OD!`-+A4v#h{`}(d?noI+*V==(o2 z(>!4lAimdz=ZfTkrw_nc0QLk&^{#2=4pXANqdPuwo~o0iA*$HBAI$LdUtl$meTWZ$ z#0X;e5}FTpy|zVPR~Pz7ni5Hx{yn?{I8rfIqyzir&IU>LVxS+>^7inE=PB)gG}fM_ z=HW0w9Xu;5K+QTSz2mc<75+rTDSh}idmrY*S5@L}d|uqgsH#FP)kp&g@0 zv_dS<^#|jikCtMI$RbF7w;CmSOQUs+{<`zFTPionT4T`h zDx--_Jd7H^fuM+1*6rJ=X*#|Yj=N|8N%syQ2{^55;O@N)rX3#I3addTs2(s^ zTPG;Bv~#)8VQR!`I+1+zQYvff?+HlyQr0%JnZ5E1!)!^d=;fd!oO}Bo)Y#(}e!i|j z;q9bkSvBh`crlEm{Q2fqfz(8%xYXaP*k@y|v11 z+I>!;Ph8UNny?2%@GCFOPgJ{fvvRXN%BA|#Y>L0qSdL;pDWAQmk8SENqApMukiVvB zJ2Z|*el()~K!DiAzw&1-b*BsGHAxW!)$T5rQM)0*5Sk_P%`F0Y8HkFiISG z)Yo}G;>}wCk&qyTWnD6Re;u9Kc1)|qlpQ>5+}WS7Be17JXSjt;T0C0{7?Kz%ozenD z9Jl!B0BOz9(4ACTqcPFlwRrAp#(1BH-@061XN22#BAHRcerT{Ntf2PfZQ1yWGM&~p zjaIi7jO&TC`-(d4EfD)2X|C@NuP?LF{#7I#KM0~c1O>hSQ0SmtsaiJa=;CUk-vft3 zbyu(S?b(9u9F#VWCbBntH1~BcCE<2bU=N zI}HPbJ^L#q9T;KFS0|P;E@upfROKYC;RHkBQ=anXi+vnT;l9X8ro6t>6Ca;5{krZI zZl`%(-zeM9N1)T=1nNh0&Na2)^q$W_DdN<1ucMoaeUO~P)D$2EnlW?C8k%k zT_-yFKZ_ZRLIy|kP8yts!@)at3E{_RwJSZ6L;TqsN~rdRxg;cubu`zpPC@~{H#MD$ zRV{*9RV(k?CK#LnfG(7vo@PetKu_jIznvJL@u2kL71aV>=lKBCPmoFNq=K5#W8!5^ z^c$e36+Q^`C9UhJxIosuy8W^AeKwW*y=r>)xi7ExZ+OC(_X@L(8$zZni9uDMslXqW za(e>3nx96~M~sfmrffQdhtbe1QPMOx54zlgc2`SF!RD2eqN^esTUZ%jX8Vb_orn-e zCuMLDWnW^6@`o}_A$O=oqMH=1i@a}7Y^}(a%4t~Debb3Q-&0$?i{qM`HG4$mj`lKp zdf%S`Y#cGRRbd_&l{CYIZZ~+VAOQcI%v=&F{)qA$@?(K+0>;Ibpj z6?5F8ibtr?88#1~(u~6Csu}_j71yO6!|6;EwVCJ4hmuGLNaI&?HAxYelI9d5jf$$j zTH@nuCC=_5xc2X8^^qMm-)9D=@)240c&M)_<{vv^$mULJ$Y--2@%E)s%chei*5Mrz z*jvXY4Gx!J`EOs=761UpDN&`B={QkD1LqeIKp4OL6@t>DIISqkpI*rCm(!A*cH<#W zG7N=gI-gcFpN@KIlrAm#aye>CyAnvMuP?niam+xwiJy#(Kcyd{i?RCcx)g?lLGBNs z12fCbEccvY#S^YQh54ZU) zS$n|mn$MB_$4|BwU@hYPPoCEdPw&U=+qXCA@4y_ax=q`jPql6zKLPq0-(SQT_|H+V zR7QUTgf3=&A!p-Rb&XSxF+z};Otml9Z*0m>)<*wzQcn`OsBTw!)Kf+si4}l5BU8tP zyTFITL#i{@IakJAf{h||=JSG^E??ZA0OND``&`9be=h0m^B1=vzIeI0o_sE?DrSMT z@$CnJGYr&47~OBjb6LU)^@Bv@1!w`@h4cN@_klWnNJm1!f2;m=QDx$En8^G(aW3Fh z@cGDoeu<~t1)8)P-ISig?E%xp4||BeCv1#XY#2^;T@T0I50>2;_ON1GQs2vdq2ScI zsT3DpNt{?>xf{1@cjKURgZo%!I35$T27NwE;4`#I@u&1sjNaG2?J&<5l%cL3Wckr@ zB6`~uCBWVUpPfM5^IYulv;wV|=|nA-txIdAINF8$nKXO{{J|JR7`&;oRvfp=Oc!Aq z@Xh?(iJ=(z!d9qld}i}vX_U2y1d!2`TS_J3s6lE6CQZ}0q)wuNixVng4Q`8r1B&~+ zh_RE*9?ZKV$!US@Q*t1iu=Z%-V@XACe;I+6%b_^NvF}^EFl^B5;h=9%=ZlBj?2zta zr-Qp|74HEVs8%$1;NVg#fBiR~?ur1(WX#SCFw5;`zs`%J>1{(#6}ki+tMXI;<6C zG(I~_`-#M*DPR>Dv|i>&h8R^s?rg&ItGnx5%FLH9d@H}7kOBCof;jUt?UyiC&qt&b zyk@+{Ln6mk;yK=svY%-~XvVqhckX#}PQ8NN(W^hE??la6zk6eO9p`(KahM7LAyP+L z)x)~6KEjkmKla8yrC)hpzkWIG!&?i2r_fGc2m-xFuv&;A$VHlK zB(^-_L&A!tQj{a4vRbF1*OP)(H{ihmwZ*|g%stps-7%)V>>XXDXj5Q^LVrl0(dpFk zciIR$QjCW!jXh`zA17wfX-{ivbv$!J*h#94j15H2o zU)Tmq4y_y0_`M`6G>ohc*!y0w^;q~zqBGCdjik$eLD0!^Xv61I>sOFY!odE^UC-M6 z3$w3#)7rBT!^$lrsVdxHpc^`{Yu)$(Jqec{M!ycPr6ptY^^C-5HX7y?W!NKO7=giT zML?4rf9F`zsfw_Wwm$$*?J?u2&-hZTHl%BQ_`2xue>X?s z@$=nBXCossZO9wWRQfHety5%cgLKx-Lc%}&otbO^QI>}N>hmWp4nioDO@QQkM)x=s z*KO4_>+5{-KEtQxADIA)s%v-mIp502p;TXy<>!`umQv7aUWubuouAB*u#=h!*lmEh z{#^tLMwhs-k1u05+4yY=L0xp$?r1TMU}2bk=}c%X`2}uLU2ZZTpNPB_{-ssq#(B*W zB$e&4d+<7~Co9jYCqX!nNz!0^-EQ=ONaoI73XnRj2&lyWh|OGki^B3L{G za@*>9R#t99KlhyqyG6&e&m&lS&uj^aeiG>hvrf^1lM&?1#^53lr8d~fP-Kc=g+}XG zlTS`W&5|q~k$dIb%f_vKoBOwXifEj7aUY=Q{_5it}-S;-y?=*-Ic43c%0wpn+ z>O*g_?|G|_F^%9%MQoKMuCMVEmr6uAO0nF>Oy1>K^_FTQY6t~sq5u{6Bq%GT zFgqS{_gaiG>eqpOoPXw*?%#r9F?RhP$L5EfELI;x_6Lo3b|m?TVKFzN^TcR)F(-)< zgB5C<>ose^qJUpK8}#w!Y<|t|)x3deZ-GztqdkOv?YnjROF83(tD9c>r(?#|9x+FM z3BjVe3F{GkIrT&|2LM?w(av-QmB)VfXtci>>3OngGHrHRyP8|Wy4rxlJ0E9fFLba8 zCw{O*mcIqnO6ivsfxm4~Wd#XEjSzi>y#5%+=3*nP*s2o_RAq3BE(D*{XPd>!X2^?9)iPj|TW!GuhI zyi=8<=6F>k23cm9J0YV)1DV&WoQ3*v}&9g}nBJcZe zxzhBgTI}tx3uV{(5;i-I4)hSb?K9$_X6`FoH&s9EDVjH;+56$EN$tR~tS^WqOw|iJ zX@6ePO{nqR!lDeC%UVaNL*~;1CoggG@+7Q& zcgK2qprsRdT9PVFD}K;u`t$Qc>u7T{-w`BjM)Z_``)S~JAvU?_d*sBT*UVj%2^%J# zIJ7GlK$KL8qme_EL!T;wBYg0t54?0E3M_B)M)-arF_dd&KxTuJ_HE_Ck3w1rNz%U? zn%W~VOmQ^=YAGM~D)|I(vUHyZpqyfD5NQt-fn@~-lY1u3M9o-^6Vo9}DySeS7!3&> zyAUdO7lpTl7|!oJp~Um5V6ZXg18LhE$!`4)Vf%H0FZ%X#lGtXW54!gqQ$d*n-3h*u z7P4W#9Ov?8f8R9cxF7~#{p zi~bSg%Y*QeL^Vu&3%G8qdh&R=7C+PfX@L+Gz56gu;yYfzH|^i z;}P%|*-)E`y%VACo~Krv$WIQ@=>|+LhwZH`RIAzIG?(UliXBg+hbeO$-^!mnrg0EF zy|k0OVvT&S1?4&(et}7b2K}*4BcJE?(rY|grUMP#K}(u-Ruyz%mKhd3#67q$s?b48 z#l*JSU#zR-UKj~WPX0Oyh1Ia<;f52_Rtafot;=^f*Sbh*`mb?Z*%xXrK*#|6U3ss7 zCKzWOO>`0`_k5zmIT;{4ZO2$1LhvH+EgLBHO& zcenK;Rwf~MCbDg7?PRX*zl1{ifeTNBuP)SK@kEyZSMu*cS!Ze7CDIA60m=GyL#nxZ z-%w=V9GRiUR|qTv2x>$C@CypxEb|xu$5M7@rMgN{3HRXx!B!&>dmdgV1KD`aow33~i~*fAYY1FhEhHCYh3;pJ%O zEMlc6E#Hh`Nb|vRBGpYuf!D3$SM)ibc18`tH1}9~kmGv)aYIcmzC49-Ggzs2j*y{I z_e;>#aH>FPMia*Ep#3*XGnJh2onAqlBY=}tebNPk2xV(C}nXQWBTYF9RwUXS0 zJGvy6`@mdDq->$aJW<{_)6xlzNNNct zf+a$dfG}0ORZuL&(AJ93*b)f(B#!kd&rbs-g5wm^kg?s*+ADhr3_(EP#o#WU?aW&5 z`(j%XJ&S}LoPY6i&zXm3YLYxUtYUM3Tt!;i`F+H>j;_1%i)i>+MF+s>V=5}O5KW$R zmAj4a>1ueT;Z+}9JJqYV^EI~y{C0zOW*!QAJ7AqiVzLu)PqZhbTiu$TkFyIWnIC`C z14{lJA3^%j&3_ZJ%{lj4_U{o@B4{?CB;3%=_7LBjv2|W8wW@kRlY^1|vTK$B1ph@m z%f9le7Dap_B)!vQdh3)A;MmxEw^>qg{wRnR9&kuuA&_&PE+@c2RZ8=-0I&C4GKb4Q zyA5W}X_mh}G^mwZi@ib^*I#{UEiyo;t_))g2SK+YK&UBVDIn|AFyYjI9`rB?se<=e z8e7C`)4(t!QnQzaFj2QH8alP#rZe+9sU6w7~sv50`rG&oqL z&gXOO@Z_di*>8 z4`h~;SV{*jrQ1tTmWv6N41ga?kL~s%D|1HYr12AcSz(;vc4h+Q$K~e@$EP_3`0|wA zX1^lqd1pEBzrC7hkXfMfWL70=UuY!q3a5ohQ(kn9R}a#eG9}?Y@d}_R;Lor{`BDg*P~MfMLBknb=$iWLWao zDkW_#VM|klg?c2Yk{}Au+!TGETCw|`zhOb9e9?Wc0qZJ7onilqS;08p0;~)jQ-vSs z?xH?Xo}Zh?k6YZsAiN6R>bDmoFRzX002sF`TcZi6B?uM!q91Q2(TZ=+)CRc4oBiuluiNeF%V`mjk zGb|ZA;oK5bGZhJ^q1{Sm9YB;XGSgu%9D}?&*P0yuB1Ym=Z1;{rcPZ zuS0-guEGc2?UQe9TRwC`5~9y$5WGEQW)1e-?H9!;qIxXz#Bt!DiQ&sEsFJE*E{uz$ zYRFBe%YNflH=!N*a`l;<_Dm7A33&LJQs+begt zbIs@)tsruIX-0pckp({#OcVX7{7AT*;Xumd z72p<6OHTIKTR~MI;#;AqBBP1u3R+2FHDXpGnP?$M_+c}_h+1y-w|i-vY@mqN_T*fV!Zr*WfRKGfVp7G zdgrV^Qx9|=-wne9hJ#t|bQjb+|7bc;5j!^5TibAo<@i3I7cY^YoYaUV?gRRziy!Ct zmPw!<_JASEn%DJpuk_@0cGxe%bLVVkJ1C>hV2<7f9~)G#M)7iXfTQwTL`w$A>WUu5f5M=sS>?MU0JhyaHNCesq(s3*5!*T7F+ z&^WhtSIF`^bmsL6NLr$nk0v>2iAAWSygd zcF&)?*I)dQ|Lr8lUqVf_Sp4T!@;*JkWBf&utL3z-tdiO1;Tkz|8n9-^M?e*ORvPE@ z$Rt|yD)!^}orcHn68%3MOp&IS&Vi8go!!3(0xm5=8+Bcxs8&@_jZ`OEJ}`Ok6g^w= z)!*#)B_L%CK_aDHf91z&Z~x1i^)bA?h*j)8t9luC>8iVd&l7wpMV#jS2UW(<3j-=B z(rNkNVyy}Jx6G8Ru&UeVSe0Kp2(=lhy6x@3U;eI_F6h>-O4 z^TzSh-b#Ck%;e}>=C3pUZ_9vQ(p%QzhUdYv+*QLd1qPzb)?2fGDs@~Gyki&2As^BkwbVjoS zQH+bX-x=>Zrt@y#l;DZQHru~~xek{Y41K*j$QUVNS*sD+%#2s_uiKx!Qs%!N$qLA* zL;1uP9Qr)_#J=6HQPN_)-n_U4~c*&${7wBIq9Eeaa(KC*oLO~$eQgeu04Gp-?vNhd4%A0!lv@|QBX&ja@1zQ*tnD<7x}-SvB=`gcjq1N}?qo(_dM{w#JURF917Iy#Xc$t;|ohVG_0e8*tCe#l4S5x0Bae9Me*SPKRAbM zt!K(uXB>594>UNulEBwaXGLoguO1DTx_>N3h^}DqfpIq|aku10u_~GC*I`u?7G!t( z*1G1eXAEupFFpV{+_E2E7de^vt6)GzT%m`pZqJ2d@3E7$8Lw;)m(v^Tf;|U72tSOqBMmtQLUn$4n{f<9K|WcKhu3p z$5VjEZv8{|AiHrg#I4Y1={)3v8Xo_}>&own)}hdFv$@G1gl0 z^>r4Is6Zc#vfMxM_Sx6oX?eXEw6I)S{Yq3LSvsYvtTg)FotM3%*?9)taJ?SUMq4es z#f)nDvL=c}h?F*GMM%lEl4H*_Cc)W+);l(Ii^xW)){ON`rUB~GyZld14$l8WgGksl zojWTu9JB!QnZ_dwA7)(+G2Pzhw{Pu%5*9wg#5d>73U$4n8Gf%LzkIw!4)vzm=_?$e zfnG?p#>>0CglA7FW)fR0bKZF%MCG8WZ`k;rKkL37^`0N6!5*Zs=B&y9j-f7_Y$`P+ z99|L*d2hT;UH)GnWY3u|;~x+LVhFy1EaL!Z%W^%A-Q!l)pz~B4CGmxN-f+%%S^gcK z$oj%B8c3MB6$0`K)pRsUs8OtlUY!O*NPK7A^41BmMKi;Xa$_$GBH>^_wUL~#x+l^J zWM9aS?qge9Hz7oQDfYw@s{>OdED1%=H+zicG->H1}XCFKk8WTs)WY$}RWLn&6otfZQm; zFkNyq(Tv9faXL+3UH_wW5?y6YYQ1=fw_h|W8DqOr2BH~#e%b1OA6)cIKE>W1;&q37 zWbla>e1jLn7JNhw#sts&KY&Nt3`Jn2fvNnYyxVyVIZoP^sxXO#)^MMBvy;QI*}prQ zCV6q)ZWzbtzU*kCp+^8f2Hqyj(dF{rsQ&)}9_L+ue~u4D&ODACKN=P?2MM1B__un~ z(&KnB27iAm+JA|L|NrFR7By@cM8-aDa%9%|?b5D0I>Ip^N{zwyQ!caK2^ke!va=9+7+ zIluYMy}GGK7Yc@#rCfD_)fuF3bGvV3SH!DHe4P{0o6ZpEPY&X?eBlHMK{(D&1)cSx z0K41OU597bvDe0)m6`Ng>}k_t4X{iJSFF!oz{JizhP`dd<@nK_d?0B8AhPYLtU1#p z3p0uPArnT=wE|~nUz4|lX!H10V?Q^t|3I;j2*<~9l5tg8!*;bl`=)5#Ig@ib+IV)% z&o^=pGV$0O-kSB>A%^k_<2rpT09!5bz57Sz4j#<{(!1=0f|a(t6wBFR z`4M^tWmEYFCWAm8!6}U3wUQE@iSlRqgskw2QIdNwR)CyA=w1?nJPi>wS^TDKMmwZ~ zoT!vJo9o~W0FwVEOL;RrEfA0Ek@RF7mq847c$+}?Zh$yY6c0tQFB1RwY^ns74*D`Y z65;^9&6BOX@&2W0RSX2Q*{DCXSA`=)Xy`tW^jFn9)n10ut#UkkLqd!kZ zXU##yyr$B&E4^51!gZF!Ea?}Q8&RCg635DRYgASKWCo(A596Ddns(`5Fiq713nbbI z4;@=(AbYo1Pf^Hb3#cLwsxy~2UNm(KY56R)UG?cZ!3jVh5;RJxId?2EUWt_}FnYbt zGf7rUPq*^tNQ>FT%R`Ih`JblK;EUaC&xD0@;j7ckDCuVY1DfWG9QunRRP&IlE`wL$ z6oHdVZf_`OZDMb~o$T3`MVDl{%SI1@G6_VdyN5HRA;FWqZ+>^Yf&W!z zP4dGm-10)1Dc8UJW9aF{R>Uf8pPLE(3A29W1HHW)JijQ!YZNAUNCG|8v~i%a2-#t7x{mc^}Inc6tz9lGq7GIw6GQy#TN zPG@2J7N<&rnE=9Y{QbJw;V(s0M|(uL{>*m9U&Zjgc)IPRS%QHl=b?)efxa1Xt0TlMXsZY>YN1H|=%WA~DC89GLRf1-%dA=J zEdvv4sl!{#@l?Sg`I^s*0v{9>>%*#wc8blru2W>QRVr)xi&YO-3p2gVyJ%UO(wMM~}=5&?(9ZXNIAk^r;Y;!a(*AH~Tw>f4~ze&Ltc;PZrz znnay70+@$SQ2j#L*JK4VYZ?#jEi()M{^afwvmUX&?&H*zKcy=TcTp`X2dFQ=epE2G z1RZJrc0zJ;Pj2i1TY}6p_E+v$C?^NA9EiSIfrlo6Z`r*C)>c*m&21S78CMuL&QoPy zsipI53aZ=q;i3V)7uvV$^O@3r;c?ck)?+I(7vaL`05b)-Hd86%xlJ0*ko4IoyMr%% zcur%~A!jH<7l@?H%Ab%ZQ1C;eAW2spzi6vZ?^0KH-vZpD0)&%{V|mWwZ?ct0Rv?Ve z{n?elVN*a%dkR|7rJI0-i=S8?L*uyRCJj~x-rszB=Y;kMw1Staw$*K&eZ#)WnAFM4r@A|;uuuUuTdS$zOs&@HGGthVj9z+`=m ziK+tP*nzT!vtdnWs_>T2e{ci1O7CjV>+LS!Y9U#4*DHdPUol+V14F9sF;EXoW{IAR zzj;9YEVM*yh>W(d3vgX+$w9y^A4$rJ{ZU0b z5Z*m_D%XySb}3nlRLO-tWEBw(Yw~Md$UoIFW!0noMe5mMF}GmhvRC34snjSfES^cj zTNAI3)(f@znkfRkXUl$)yt&#@c#Gz?np&d)>xe%E9*Q}#6#LzGtMzt`x9xVxwmKF3* z&}1twz6>1l`P0qnQg){ondqwTvr!ol{V2y;kewUr!RAr>3?x%eKmL=v_f1H}TQz#u zdrrK+vj(;HBDyfaV!}_s+a=Akb;bG*VBzlNlrtI88&s@n6m^#tJN(Zg65^)qZ681@(kt9ApwR%> zmv?z*JrAb$ASTl~Y+uq@lXTi@$rtC&1hXeYXx1e zrvcaK3FGD7;gMtWH|nb>S++CzSA_%ahXCc5gpaG_YvWC;iYH%TvTaB{E(BoCJaB5`#Mq)2jV+Y*Zm}i?M$de z%ws!3mrdI;7jSx1BJlvJjhHF&T1i!dp7-Rq>rco2lG;i;Qj3A*(0ny#bAcOTIWl4l zn-1(Y_=UVKwzX>EYqtAAy}D1$$O?H#-}?M~;8&>NY`Yu5{E#`RPOnFlM=an?dBVy@ z{SNlFw9FcUL?%?_%G%f&<%=;WHZ1s-Ufk6IONV&3Th&|xMwmtT-u)jQU zHT1T_0+_2`nc0`-3!;ggw*99=FF=bw;BmW23JanI-fmNTgrA7)nYXQcfs6)#u`{CA zBuh23)-y=Zf4ngu5I~KhH0)spaOf=z%Lo9UL2SR8YZ}V{Goql;rBh(y-f^87?@*-w zj3d?3^4f~9PpLR(BI)hOFb|`2?i;TQAs0GM;}yfwy@bZ`IBUJJ!`OW+XDB{@k#BxH z(eBeu0ugW<>RkS|d{WPgwUKa&6|r;OhSSl$2CN6Mv62I2lCq`IIZgF3LmYCy(977E zvcviYp@;*IpNv-<0mm?LcB|yMS;qBWc=Qb?6)#BvLO2s2akM)%O$%AH2Q@{1Xzc$o zUB2ufNOPzSeO)mAPBymeGjn}PqCSiKJ6Eq|8eTgUmeHVu?q#8{oc%&gMSE&GBB9i$ z9sY|&3_A6~#h3ZP=u^T+(of3cGh|7@633O9bBw-)8id=b^Bw|%yo)opeYTpESRIwW zeJFN{X2z>P$hyU5-Cgb+b-@E6K7W#ng|q-C)-zZDP}#16HZ z-%ca0-pCHcL>axl%{}36k$YnDK~qz(G%&+>SCR~`dZ2xv42P;L-t{X-DraRQLsp?wI0ZvB9+-b)+tb} z{gI2!6)Eh_rTfv#MoIMM-hLz8qQ-iR7s#+;$Rt264Q% zLv{#&j}`)c?aR z<|(w?lTm4a^RzV-aO`TX>kl4nJE{U%B`thPa(Z{t0QbyndQ^S{o-7Vg;G`&{S7YJf z<5u^M3f%*`8(Jw({#%D*X9ET>wjtDXI8S3ZHT{s$ymrycAFmfa?CTUNKD%j8WMNqS(tDVQ`lFLQ&lCf9%>m3PTUl6BUD zFR7{!ztDk@FIIRtZ}^ZLz!AK=1@YqS;)heFEt=pKlL<_!~A$>wZt60w-4yL z&M#-7116JXJ6#dP2YT$MK5y@?OqU2EugRJpjwsktq6;XpOxB)w-VrDSSR{a-xLtGp z{(1S)9Wz_Yw&PIlqsauDm@6(&{9dzOOcE7K=8j_oFTv3iEO355_WpRX$ggU0fbQKT zhWN&_^Bk43F)2UnB6M&$)IhR!9X#ac(g|yE!7l9k&ny2c@tS^Lf||q)Uh~rjq17RowBpy-L=d(XFI01S3F{Vr-loQLr~nz4f1h@ve$Wq_M!ITM$*z>53kF!d}b+| zTo|z~8yf|+i$8=#3|d!Q5wP+u&nr2eY`J(Zyi5Z}Vv%cDtO>{3-y`Q7bxpl%uj`*FpFMdWI`AD~!B9KDW*8wr7Q>tLmwPsTA=b%H87`Z~ z*?j1h0-hTFbjsvqD*wiADMwVbP$6SGgM-Lv2}$%rB~@?68JMjxTcUUY;~0TS^JiKL ze;Z-WxCJ8nsNp8@>tZF043lj!B+wv)>EzoGe0TmYTCM9+!W1vNGf(ZxoDMZI71xoa zC?<$(M4)qajwEckZWBoNmj0y~eOG`Ma06EBTo``ze#jGAA*CwFXfgh}aH?uH+^F+u zz281eSZaqOL_{19TEWGss^zRb%W>_O4ILmC|K$QCky~+;ihOV(&@{x0g_z?dId6pH z?*hTvq2Oe59p=wTZNKhq?lY$^IAG4zfwx&k`uxdC$dGH#K)H_Gwi!3=8rbF*l1=yc z;Xt|2D>GHN2Ho3}MSkkcX(p&x7Xlc98qWD86JfQiG2HY;e05@jSxO!a5#rXXE>lU& zcq?xnF7~zoSp;ow+r<~Vgw1r`qb7btkFvj8I>%F1aG7x6>!xWd{*5#OIFb2sU9Y?X z2avVC&e<9%GuxkgrsvQbw&Fyj3Lw3COx3g4IOu{(F8!JH&b!1Hr0sqiuw7Zp4z-JZ zc}M{iiv<#nz;M14ZA|t}y5|0a9^a0{{rN$x}fTgkNM`M8a?V=&zJ0 z0O%c=|Bh_%6ThN4c4hJ8{}(N_QMvvqr^@Ow!&y}h-9mZfC*UD6em0HY5-W&DkGiI1 z7@ev^Ey(A+AI2o|Rvp~$SZ}Gadnk@_aMGn*rP#nrqee4@x45Q&xO0$ z&}@8(H={63lmO$6gt^yhR8;;ul`_gGkbBKJ6W@~?pn~7NLn8Ra+)Tz`OVrZzjyRYT zInHL4nXC(*WZST6bw2@7byR`qL+$!h#xFeWb-Z0GKQd5SyDlX)-&d*lu&Y)oklIOw z+I9d@eJ3ILtq^(k<4-x1o~l>21r-?o!^(x_&eM`B#oqV)JEWB9KgAwK63Z<)W$RUl z{1l5yk}KSsU36?r(cxNkd;ttNFi#Oca9;$p^C83^ES8E43v=5te|&MS#krIQd62Z( zHR8>UutrzdO1Z0I7B zY*KFO@Gi7PPU+FGp~HDx z`KE*tv_wy(e0Mg+$9`(hm-*pQQQGLNSL#9;D)zzOX18H?;O9qIa);Vcpw2iH?J2FG z_>XPn?p2Xr{vHvTA_LYXYn)H%N&O+~yJL>$ z9jgZC!`3H2R+D?SNx|ZjC0xuJ+&NdoE zn!K6*;MiHpm9{QtK(o87em+qiED$fwbvYT1^y8)HGsJ#r%P`{!^d0Pn>@!TP_;(co zDkyLtuxULVQ^Df)Sdfc~+#Ri9X1sh7k)*9DtYj}2m-cv&h)Ja+r2N+p;7~eYw`V}A^`GXKxeV7B z4+WIPI+v+mOdl*YI)%WSugI((sXkJ`6!k91wh07?2qHh zTt&!xNY{qS6x-saoA?Ju_5n2N_wP!wxMoU6#FzLuSjW`eU)tY)*%>Q#!KQ-TFLRy) zOZysSL~dkOA5yLjo?@OKqwMwI?y1G}m`{JbeOfTbeM{SCQFBKx=HWD3eoFV(SiX0I zkwrT~G#(-fHC9VUS^g<*!x%h2l@y*61S?zcc`H0aoC|8ZR=p~Kw0+2^MC z-o`T3x=n)>c}`?I;OK{5g7)1bs|oJwa`Jk|z`HMW$9e_Y*OcgT zUC0?&31c4o1t7#4Zuu^nUHCxpOTMT^w0MoM?J(`&1Q5|`KOtBN zsyC@}@%%y&@>fFY-*!qMalLxG2DK@yV?jHh8X&atNUo(Y*+9U}(y~pS^~rx!h>A%A zMOlTtdD;2TO=0O5{r(?$|y?=E9;{6k()1+(u0wmtvrk*p}S7E z#!T6HmRycX_~UX3B*`;~6YTebO(7 zqxiZ8$E8d-&h(6BZ1ap(659k(tW7H{-|mjcZjy1kpLuXgOoxAH!q%o<8hYU`*N0b6 zH1EMJbo964y~a{i-8%eXT=;yJmf{tg`bQh%((f?}fjJDtpAEha*EP46-+MIsXF^xK zaqjh`tpns*5PE^)RRY>^Bz{ zfXMh#3rfwN8K<4y*-q5WdIZAW23IF*r)TxdERlKdKLp~rMSYA-n+d6^iEt%93CZ~6 z$oQQsA-tA-CYu{oLafCX{v2 zoe`lgvPhMzxgxizxH=DS8+wfyJ0UPGv4UdjQu z*B~72;ALPfuuzw9GC;qx&_r3&Y^oh8;h%fa4Y0D1#}OgHBLjgvx$7_A6EjYr6|+7udz&2bP`}j8uPDzMj}}(m7F8> z2#*qdPR;9l*3TCojJsD`CeJ>8%tM2hzqY*YxhNd}p19erj{9ywy9Am)nZ~&E?Y-+u zh%8RP+xz=e?$SrbqK18wu^5s3v1@myVk?wUEn`~g-c%GH$?C-Z*n_uD5t7mw{ay-@sj% z*r9rf_RMQ9nBj^i>FUg2+IuQi5f3_RxL+e#C{#&lz)b42isTgw>Hcal>2r-&nSc00 z3_)2_3AFvCuDS1k(;2#^xh+i2y2bl<87zIQkd9uQ%GN`TsWL*;?}yjjtGvc9Sswq) z9A$K{KhoY1^3kZgwa&>Nuiru{^-QCxI4BUf`n?$T7`E1D15|!5sEN?iiBA#@s8#R? z@Vzm{QbKqH(&I^OMg@dXOyH-+k8E#;<;KwOEk5BYY2r^JnQ3b{k4*Sg%X5EB zWKoO2GxaP@^ehUe!IZ)g4ZbkMluCzMC|%MwyAHw61jsI4z|i2UXj@TO5P@44Cbjt@ zZESk}pgT6>d30a4x4Rn?pUCi%8Kh0VIz{By{_%6@>57#|lDRV4&@h_xMeGIxwGJsh z`K}(yO}Qp|T7p~)u9G^`6iPpfQh`;)C|bh_nZic{DhxS>^{f<*oTcuH#5{K;dn*lGxPrBooClL6g|!fWzk1=r z)*ePmJZwj3x)7y0L7lt!iR8d}k(H*dDC-BFkCp!JC$)=O%qM&uJ~hjL05+Xd-Jj%s zY~1$QJ80CkU3z0_>%%CaW&j1aS$ouVG|ipuC_a66deM_2iM5tvm-vxBL0lHB`(5Ah zn7g{OZGfecXw`XHGploXuy{7+!I`8PP?T@YT66%1mO0u6RRyD+bhWrPU}0_K`gvE~CfJi`mNt3z*a^G#?XK1@a1u2`PRR*Tuc21PKvFrXE_+^_o; zv~!~)o9>G|#h>J~$%^c>8d&({Gv#pdn|wDMueH@`V3X*+grY#>+mn1pnxtUf{NOG1 zYU`(zvsN~$aG5=1lt2wX8^W-QYGl$cEX$hP*;IloBtg$RQO zd%SQn55A-YQ($FvW$`zpUx)vF3a=jo{N5pFsz0X~uRdb>ETblJf^L_?wJ57cWxL)- z@Fqz~JdW2o{Dy~{rJsHYZHvNLF{?KU3f``D>^pIShkwkgB8nZr%ab8iiU*NW#*{u1 z+1KOTWmd9@&JPwZyW}l)j?EnsuR7T25(q4TwTw>KmFj_uwP$Vx;XK8sp&xQ_4)MGS z3XIMGR?@+d_QgU}Jl>QZh4@WP6Yld_JnH+Jv>xQ|@j;Q2g`>!n3wuW5@((ZW-f;aiMA7xWLpvl4D zRI5Gz)1#ef@dPQ0ug&Y5VtY$(#argV$8kHSjhshl7)HKoq2cb&fHT~d1vRF_ z$R*7R={4{YF&LL(rax~jwO^eZ@{S|PLpP|Lsz5@CRYr!mSP)Uw#UnR+7J~UHwbjxp zMj-nNC~4Bt`p!_%;D1zJtH>J}_5t!Ef;**Hiv3w6&AJDVT&=vl-d&M zo;y+Qxp%2U1 zEeoAQ_EuRz6V`pJDh^pbED!B(DAkl$=T^#&5XSCcg)^ccV`_6luJn8%J9v^*E7DBg&hy9dsmo!>ti9EgVAWe`qgN(9 zpII*)Tr;A7%$z&8F8zd<_o=#A!H`WeTvS`@{G+pu_(MGkDnp%m{#<<${?2Qmr}Uos z3->Q{#lx=J{KDuxI;S0Yyq0nQNIy;^{+io%HG~MRyiUx9tK}_1-i$w1Z#)jx- z&;@GhR>WUfw`DTPwcmu;V$c-gAK>guz`?~X%UP-tS%e0-Jz~I3pk!nvy-mT{9Cu#T zc1Vh=@q3%7Jbz{AXf-vey*xj7RtH)YlOJCp~%7X=os}wnK zbkMDdilqPi83W4LCit%qNAfkUJ#Gb3=X95wT65?Ok=B#IK!xO66OY$EAS5Aj;O_pV z+SB z&=+#xX6PI6S$F@k(5dZ(?M7G{SmW;|diA(so37o0?ww!FUPdPNyr((g(e;#%udk22 zRDM~K5TJYgkI(yLZdzQ;FzTJhzW#di%$v7>kG_@R%Ln#SBbO0f@tY4mrhM8wM}HT% zD}n#cC!l}8rETOTDmumPDsbIQb|@f`n~RbfhO!gOnVbK=?hf&a!2tgP`t4(J-POOZ z7X|NYMVQE|0qw?8a_T%AS%Gmn+TL{R=4FA=_|p)VD+ozMCq6zHwmXYeW4~K>=py@H zx2%Fx-klJusKHt?vQ4}(tHD@w;>Sed4(*!W$WfxT-T0f%_6x3OGwSJ9>v<8?=j>zP z@Ph?fAxq;~)ky)=Xw%UnoxnJ^oh?sjC14KGhN5)^hS3izOA*z3#s_6(vF^>j&f|Nt zogdLew(xb`p%g9Piv^tw&{FTM; zyOt&7xcbxu17$o=D|yIStv7$w13n9{F00&P$83@7u8Ty?pET&BSuvs_E{K5zLZq#w z;-*Zj2S=gRY;PiB?zn7*A@5q%=X-OzEc&a+3EU3rhwRGtu?MOhb!T5X%yUk_^im*a z=!1Fxp{LJ)iYX0K1mur;-vc2qkRmXg_+8P>UV2fpWic9MOcFPQr_|IIbtPD-`;-3aJ&$bT;t|XM-Km;! zxo5w~QW8}gF!qt`uBez|X+P*#Emn+JCY)7p%IJ#PiM@Il9QWwZTc4mhpa%e6Hq z;WE5TL`Qzxx>{E+X=Rq;UgXI0%=7y(v~~xt;WtJ@)*Yf<8=WNX?Ko1ILu3QTWM54R zc-zu=ex3oG67{jFAGE3xA3tHz4<@($TJ%0V+X9}1gqx7`Aoe40RxX98iT3Wpm`7$y z2=;<Bz=bVw0C(x^~xHd>?Yv!m_UL8D8N7Jdlm?CbTp-XrM@!Ubi~hEi^}D zfu!FZ03*E9<>I1Hvm0X#-PyRbgP*H_fN~WY<;L!?UBkFu^%>%W`S$agE0X1Hf%nZ= zf$dAC)uA643^UNCqT5zWK%MK(bI2fKEZNBIEXw})5oIMzcW$ngnZ8gL)*`xSgoM1g zHao%gR%$CX$h5$2vj@4UK3iL~(Vy9G^eif!@v236Un2;zg+sZZz^^`0ckD4O@hQg* zn5MwJ0h3;vbwr1Zy91i{jSpnj2EM<4-m>xvQ;xTL;fCh5+cxoz$#Hj5>ncs`@NqwZ z3^!c+HbyxLU#KJSf+>fwUd>(Vo*mU=i=KyHg~(Kct)&Od1qZg#sY@pyyeRSGl3H)V z2=BOR9l~dqhs~Fy)mH*vwNBR`9J|W`(bF)<#I2>;k9U4p6DFG{d2+3TQGzW?OFq5V z+ArAKcMt@bciT3Z6mTu|MC&Y`kA7jdpjC=}t~ds0DW8-5Go`8vdCo2+65TBTTsV|k zk7D*Mg0d3KC@Y!KE`kbqwGN+9J`i`$CNk^6_Zxx*yrW^VcUpajn^PxS`ptbn^5WIJ zq$4Oo7qqZT1Fs4M+)$q_>L+SRbydZwsR#~>?XAC#kNT}bQ9stWVINp5)flo5oP zH!AFECwoQ0bFCcZbYaTUh%^eQEy|eC#$eK8yAkpmxm4a)tju5F#3pmi1>Y-jIhgu3;dn z!C4paY4mVSnEn3-hA3;6#>qU^w?U~Bjho;sc)DA7BL0j$XTiBMBRUitUIzr=4uDch zdDPVlj!>IIe^>^&HVl-nO&y;9QsL{r*^rH@ZU->0A#P!@xb8k(sPo~guClXJlM(kr zcD-$_(2ig?jmF*|%=tG6r%^q8^nnL!3cw$9>XfA-4if8AczF!@1Z0hDJfDr_QDQ`z z(XW@HqsArBPsKgf0%}0i7l-?1;Z|#yfaad&re~dt+scO!7??DkEID-?)5r-`dEhT6 zLHV3&!|t&)fpeZY*ec|Z76>NO3p+lp5br;$lldM8Y!Cw`F5ySLU+<$$4YvF7!b`40 z80aT1uGJdnv~@Q5PIbN0Z9^~XR3l7$aP$oL@ne5r?E2ovrzmKpF>7CJwL=E);E;~T zuemSxuXoT$o^mVNA=IwDl#WX9Ov=9wVx`o25BU7kl9$NB4-7LCcA zbqU7JE+g|qhaW;wJv9e3Y_;fOG}{5HD`BTPwv}1>D-ZzVG(KmLPng*yG@CT+eF0%@sf;6shhr&R_t4C0UTyjFa3F1`GXvN0O;=i`*aWd(Wh}Y z7V2k|9O?bAcYX6DOai&f_haX0-oFYo@cvqhT&^3YL_C=f(xf2cJdz3${u7XD()CLf z@zXAC_FpbQJ&E_lys2RAxekBPCJnP>3a@`FgjLmnoge`J{l##oSLwZt(4#&p2P^q) zIWviP62dBnt2En{im5+TJ6@?0^XKpj(X@l}^Hr3s0+fdn5cqFHGe#5n#*o|VVE`YD zsE^_ey22mY@*lv0vUapZy&hCM!bAF*1JX$TLy>bi4jFP(C&HL+yqkmXEBp^~sAf{b zfN7*G)Kmf=hmPY52>}rj-kZf9A;?wka#B-OU^s_Xmj3;q;BOBZ&;@zvh7`jfO-(H= zCd@mjSW~V=O+`@g4{M@r8?Cnkxg>bdqyhO7M&mOkGu1H+D6eDdqyWgnae8m}24`@WWoypqdYWi=+7*iBbcyi_=Cy{x5P>gc zs>`P34$mvXkC+$zlA8L+FgwbpeKG>>Q?amiY>5>aC{_f+Tdc-!aE2HkSPP%V&Zy zCnl2_UyaUn){r`D*K0F@yVsa*&he}C5k8_GV!Xkz|L6sY3~ZuV5Ho+bd%({1IrXj!G)QJY29Zv`|Nf z+9<)F(!M<$^Kre#mYzb7M>gp>mHFs)!hSZtjJvL zQ&+F&WzFSM{Xe1Oh9pjcsa0M4nzO94b1QPm0(AuvONB1T3Wpt_-E|h zKY?H*wZY-7iLaoC;~}OI(k;8bf0D>`0|LA8-luE+7VV|a1s<+?6Qo2!yFui=XwWBM zuX&>Ev!$`o#A%a}U1jszGvu47-!MQ>5{ z(MG$-yWOs{N%kniy0FXdvj{!t;V%no|8On)UFSKkzLGWg=KbYO0nN?tbM{Kd$Pl;2 zCPvEhg-21A!r`7aUs!}!E;bJK!qwHnQpv|m>vU0B;^=_ptGKOjh0sl5j3EdU&UX{1 z;{uxnB%75>8wg8NT)|<|w#p;N_2Ou}`;CpF=lfw7alZ#wx{m#gX%tS%bb)WzUT}Jg z>DveTv^a*kFu|z9uDjEmY*VvKia6h){BcWzN9=y1SYZvaE(6|n7{f?&pcy0I=R}9P zZkCkM0)A$iwq88s?L#|Nykg4Ph}Dv_cczGJytpsnxrt|^UC(i~z%*u9r-RA_A*UuM z*V1TtF0;>1!%xm6CPi_yUaV>WC9d&})NIJ8B@ku)sDwyDDtZjceJ{w1N4ihr%~KgilW7MClvz zPIQ3_hpx)jZxS7=&oedOQF)sqKPqD)+`4AZ(2R|nD`)ZoUA=?5+q?RJYd2Tp@pUvQ5BYN~}h;t@cNS)Oggickjl1+Gpe$E{QKTHU%#abBxBMnBjA+>9A zhz7Ld8M@YLdd~PVXhDa9j}Kn4O4Qd!%!w}bS_@EjY@f++G4fEHupjDaT=2Y(pdE(- z0M`w{ncJ~B&UC`3G*}Z5=bh;$cG%!AzmgZSLIc^$HE}#M_Mqb>`neM* zXDNWm0FaC`^y*bo*owp?VQ%6~UB*!Q63ZK73&p8ziJWoxmD|n4bnj#V*czXvUJW2d z3ybYTU0KW-WyxVA?PNJHvJFvhVkYokt_>^JfT-AX&wde_zT>d4Sl@SSUIf&35KO2N zy0yuja$QR^Rc7VRDsj5t`Xd`I_w`k^cAgZncSG8gpifm>9%zAr4`O#Z%=wP(Bb96+ zJNI2vL~UeWzvosD<2w8jSe=w#CNGb~I4Q*5^&0Yoqon~G7IR}AfcGkZ&P-Pt7vPU2 znXCz8YEi!0cEYYapZ2cCEbGFq%+jvlNi1XST6T)H^-PZ|;+?ln99*TOISlT6l8>Cr zimx46IvOKt%3bBy#Fsrr>I{1T<2lna=U|#~>M#IluxIv&BWua;8sa^2z_z7FA9jDi z#{iuv&&^9<6vKdkIbzey-tP@i;WKso9_Q7)xrv~G;G0{2X$-ZR4jf5`t@*1 zNA0i?e7b1E1Ib=Fjr%Dgm5@1vIgG!a20-Q*{%dS45-RUw@!}^DPfV{J>qD#jyrRZ* z=ke(7;mE_penW{!&I}KZXk~O1*R}9)-yzE89#KR) z37BEE^GWx}cH>3%;b~uoZGLz&@TeN#I`mdwLwwcNc7Qy#)vhPK-BfA?2ovaCobGz2 z0Eq5(lO3@5*S3e0jOc?FQZIxZc5~?@-4!RxN(yWj*R{Mub5bvs0y#4V*wrYEt>BYc zR=tPrIY)vw?sJ9Vp9bw%Cj?5y_Tn^m7cegN8N51`{h^jqz(IS>Ts>m3JzN@HpqjZO zJs{Zd(Q6r>s^GJ8+&id6J!nM54Sk}&DvS2GD#kjm>vl+bfYhjP{70hsR!;_eb{&nM~AGaM$$^ z#IGD#O5UMoC9fkW+!nT43x8dNQnbnkEnNi14R{%-{i*oWFYd59{K`8*`)}NR#iIfL zCnmxTA37_ut@oS%jronU87LKHiwuq4~Y2aTkevdN#?KEA#s;K@8++MdStMTIf z-@wAn9map7!oVBa_Z8MO*NYm{EX9w~G`zbmUlnP~KYtZTfzV&W2`^obO_Ec%qL5GY z^(2~=W9OYyWIJ1CF4Pu_Jkd?2s1j?Nsq%bw0X*U_lW1?~bcQqxo@GZ2 zGBP15(rcv$w}tAS-%=~FdQAL&mK(3f~+=gJo8qahOI9GmHcM#XB2G3nVwh7#Dxpp7Zdvnm^=hp zp)>$cj3u+$dizJh&FxJDee;C1b}K@SPaenJ|F1E0=AZs)*5CAvqC3M(xtCC;$KX|8 z3PbiVBr-bIIagUF2fd4GKr#wLqW0&Cyh}NB^!=D~f8Hij6PWDMQKCIR3)O;Qc{Z7l zjn)`L>KkAMk=6y9EVTC$*kp-&mZ1GZ>E^)X@=Z07Z}}w0m}Mm+A!;QrhVFWsvZgPw4%92411)W!blqCh76 zIsv4Jygl#*>XL{s9k9MDfy6GhD59+j8+mB0y!?<<^n(7}fj79yJeLd*Zt!QQbBJ4i z?yjwo^>*hDrZFIfY_3JJRXhc3L|I4__69{nE5z?=M*nu!zUfl?6?nRdVqrlkI3_X6^wU$K)cCH+>hXjjrKPOd*hY8u-b(#o2DagSK6g{k8yq+_^Ud+ zPm1fXHg3~fkD5qd{jM7us-Tg#xG1C9wPk`p zo_*CdKfW{^FOr|33!2=(cin6NtMYc%iCo^MmLPtp{CnI{xCS8MKAT$e@s?dr5rNnG zlAs4C+p!1hezZdIMY@goyt5@Y^Zgfvcs0xI1xlp(iJHc&3)$W-o1lH!)ixBAJa235 z7z9_k{Xm?|!MVJL9@b`fH@V?<7(1KQY?}uC6_{NU28Z}`b zs^Hzj9_Uoh1Vo~q7?A{^@F|>>xP~aZ<60Kqa(X7V5kca~`i2 zYs+Zcbe{S!kXlv|OmvdWU0EvgclETDgKUj63n@R({EO%#s#cOm8~yeYW8V!yZllgTwhCcC|)7+E|2I_Lysbr(1Kx zhehyIulUuUPA_PnB$xGInT(q`JoVzT_rv74YZa}qE(i5asx~xaJ7c#8za&nD=VRS@ ztZkXaffk+H{`T=2LO{V@pyIsVL)PW;jNlZ7=T_RChGWOb^j}6eCj;=C1ZCLiC`|YhdFMimN#FdCp^ck6@!Q61JWWZ8dN?lPArO@*irPePsE9D(?^VN4gL%xc8n>6muYytq|Rq zr$Z*yS)0P^<00{4MpycEL}<~c-{YE|bA%r(NHnQ5zyQP6v$eD9Wrw;p>`A>!6q_Q) z6qVi%(JG8WP>-b{im4+GHp`z{Hg20yqtA3~-bt^jWQP2cj7<2296sB^r@#b*JAO`) zIaaRF?Q`UyFyEx7>Y>K#?;ZQ#X8GcSTAbni5nrZVEZ^tUN+S`R3)t|UT+*8;CwGXec&WnorX3IAhwoTn%Ud z?PJ;4s5(77@?LY)ZY=ag07nzOLBpP#%DgoZ+aBLu(d3Ad(}z;1c^le#Ya+yyrLzb1 z_Tn>X6oicb$uf5nBk}jd&PaZ4H}{t-+ZZej_z8xQQSGSXJyG5t{0PecN^9ZPe*rz~ zmH9WZoUpWzWs2G>LosURYL|bnJHH+A3|bbBKnd48=VS&}SLEY=eWC8G)=j;|P*VKf z`D=_Jf$P6Oyqky^s`zi4*MGiX{nrC9;rfUm1$Y2FjU_?-O8+)?ZH8qv%(?!iEkde2NHnu_48k2WWw`>ne%ZRP1KdLw8_2yYOmBe?c&q*y*zmjGAI&K{xt##tvYj; zQP)9;kps2ghe}PO$q%7_t88RKzpMQiwbxJ=sFONI>b0sT~3+<^lwl5CDkrk<<}6t+6J+)^*Fo{$b`V|)eryREZ1ZGAA`M~ z_1}g4KMPc~qt|+0T5R{tUff2s?s>wEL1ywV(g z!08D9uT;lBjrxxI4VgmWhROw617qrbtKegipyHTuRFiRz^XhYTM310glizl|V5;A? zsU3)*%eA7Jw?>C+sJ->1yw8)Al(d+V&D1W4D$Owgdrn`&KQl=E|IqZ6QE_xlx53@r z8G^e726uOYySsaUf#B}$t^tC(y9EgDF2UU;ck({>ThnV+|LpFn+O>C8opV$QJz(lE zg^U>jPun`P&i3!N5nwk0=r$QBD6o=x)Ye!=tC%y%I`Ig_xD2X=gTqJd;(gYp{~8uH zN?o`PJgpqu5&Q#aJUW<4bJY;}@Jc6?v<1Vdw^4I7b#=^)OALn#fJs{`ofBN2!iyJO zP*$W7J1m1~EpgDn@^Vez4Wr#wKSkQJ@ea`yD991nNV=W0CJ%5>BHd2M?gu+PWkisL zZrm>pp9OD>1=D-0uSd+kH8f0P=UWI%k=n=3hAXL=Sfek~GbiQwf?SqZ2FwzS+2ctb zS4@bKx*}%7H@!(~I%E&^-5R*xaPd&u2i3*IbUhUn$6gLR!d_qB1{@P_J+e{L>I-Z@ znSC0B9q@O101h>gZ6@;yzu!=cXVOxkW3k` zkb$t=raQ%;S?fG`LgEo+vMBV3RWFZpY%aR3A-Na)38OF+56V}piEV8WuI5W#{3XD? zcd&k1_z}hfh;fNJsivQ_ykBXaExmkqz1KWj5d~UAacf{3!r*E|kXev4_j1=9s-Wg_ z_X#YM60b?vbH#>TWh@;#x}(DIpmU;Q>_xR;T7shS$)+D0?0r_Y`aoOL3KK9DzQkK& zQ+Y4K?dEnA8o}l2BJ;5rO{Rlqh;~^0_ay8Fgd-E%PXz1+up^$eu5oom;$kWk1+>Ok zeK%tGjJ|uOR|xe!lG=57St?h29c|RyEU)GaKBz^sDx;4C;C8r=na4C&bSu_yeIkycnfd#sb{-aEBDw8aD$n?J62 z@gATn-{{MLqo7mRKAY(QSAD(d0r#LpDuN}dJ>Fvdu;eVj0WW0^vdlDsY^E0}V1n9g zE%;3NquD;}N*fFaeAVuY9ATQ-?K{j#+O)NUU1j5~IQ4!KP~Bg=%Vp<>5o+5$c#oAu`W& zvl+-4ZlP|&fF$QpAZn^TR+L0}dAO=JMhQD{Nq;2fgQ!+_A3j+S-W!)-Dnt+&^s>uV zU45Sw#~F9`m_dIgk_Mb%uYBLR9@y~-h}ZhqNOSkZW?{NEGq>?pK!An3kD~moln#ru>^AeWy${nhk#f(O_wD1_ySoU>psD>!GpAmYThQ zm0Bmp-j*z4bRWrNMi7TO_&^t03?I4U#Dbq@`-mxkL#ix4%;h)7Kt2Dz{4E_|Ll8#3 zoq%MhGh9lcHkQ5Yn`!ei|C<9+DYJs%2AyIt+Vuk;2~didi!pPe-PXoh&&ZV`q0n*$ zko4fhA;@eHpJeCDh-5cml(p^2=()ueEE*b*QV`$Q%w#t~p#}q(P_`Cf&naeM6Xr!I zFbnr)33c?9gwI;-wp_ZR$Z*^M-e|q@Q&X;?X zg1b4Yjs%{^i0=u2CrU6IJ7nY-Y^DUG!5)0Dx(z4P?YPs1TVs3GNshHKw2jqAE!LB@ z?baUUP?jcGhBxBs)QMbkfQ}l55F#2ZRzMESMN15;b?vD}2h<0+Vo{jc^#|A1Az)CP zh1Jzwi4m};fLgzRl$VsMUWk8(hne!En<3k>h7wc_Qx>JGVGHfXSIF!xpqkKohih3E z79(_^HXj9C8b1pTKh|B>0a}$rNF;i_sNs2DSMWKF-pFa~-+c9Wbw35axpW6a+y9B{ z7dB517-t=mhdy${K9z@QDx**5U=3rKjgscUP<4Qwz<*)aAB2m&)i8v!{94w~v_R77 zyeN*Bp$1!9RmeJU^)qRBKX879O#XqdjLs{%uRf3gNbb`=;koswPJrWgl?x~#;ETqq zpf&oL!ZiZ0WgL@V3(&l z!)pWR&txk_7t~f4CZoR8*P37~px_iU3k|J2|Ga+K!OG@c7dyz`dC7$JJ1;`f^J|jp z6dE(^%G`cl>bQREFEAM0Vt(^!yE5}Lj;6wMVuP6oVH8sck+2U@u%9d~U>6rNhhIX0 zoB>&<1td%Pj~5B~@MT;(>k0YXcg7u|RZnt-wk>eQpcv!+ikaaQ61{z+ZSwHguqd~D zMjUMpKo@&-OXO}EpiMGym;m2;vuAa`-y>CBuzWuJQTfTj*| zJZC#y`G;0GtY6?rh_@_dszT$waJs77L%AM>{6StY(ng8^s%s4oqw$D@ej6QX(f6Gg zYS8!H+a<)CcIorNPwLl#5@(95jF(F}SHZa{uP<1AsHg|g+vTO7W7O%30`RbIdZDJj zv^WJKM9A%9u6}gcFLr#+UZFE75y_(|=JV?Hb$GqT(QZ@>7oE*R^EB zYj_AC*T~K>;B+jfHg(9g7n2w?QB(-$X#z0+MBymo6<-KMhjQJ1vhg}si(EpZI_5j8 zcghcBpg(jrKcLVdtTB_hSHClR`NnZgO^a~;{C~3mBd>9@Nyipu%s)omYKOCl%+&DA z)X^ql+3^cKq9=af&Z*VmFL@rz<{j#ta9XOC1v0QPU$v2Z&G)t|fcL1<08_jSOhLg^ zG#mr?3Fx%X-kCg3dl!^o78d5^{f3pjl7)0Ie0BKC{&Js}trGNpY&6Axx-WRW1v&b3<%h^{e zWVd^wevd0G1ehKW8S&PLd*5|nZ{z7RkhFDk6v6`Wo=RWw9@zQp5IG($VLsolHSp0% z<~%YDS0u;6F~9X@zlFWk+{=z$Pi`ZoZ=W9e&6w~oxcn!A^Dq7=+f$}lxgyG0z!VR& zB7Xv0c?L}`2NI8^WK#Su*b$-W(0B`oh<}G zuLThx62AIfK#Md7Mjjo-#eH?FBKJfrqIKfxWc(>~Q!KTElDCe45+2N02oR&R3lC+a zFT{1V5%V>&h9S$vvp8rnj%DH^7E0Rh-9dfG`4;x}_AOF^8vykv*jKVtF-&Vm+z-ark zZSB13w7ge@9-N~Sn29R^vgzBao1QKs!ZzMl^iHSuv$4)?Rd|NA_k3)0Eo%9mB+4D+ z?H5H4)_Fbq1tUJDs%=?xtbQ(IM$-frI2j+hHQyMci;S!8GVB`FNTyyDlxsoT$L)KsnQ5X8o zCLV2Xo$bhuogD zcqk67`9x&HV0U5*zQ9&ro7Y%Y3qel7$kK|DXk09(+hjmsNF#hJ3=5$F|PnTuaRmeqB%@}Jw(NTx=@0nQ9e0)- z`LBrebNY^VpuE>yHIwz0dZd-m7ul?*V@@(H^n>~dib-vBlbu9(B>LIx(=p{8kFR9T z5uvks7aH}W71T-531=vK?h;PEXiJaIzGx$lV^4x0#ZbR#s)M%TuKZ4gafQV2Q0Wjm zMqZf?x>M;O% zJf1u6jbaL@R)VxzyaH+sxh8v#M>m*@6^T|T(wc)^wNL7T3AGA?E%0q3Apb4=w=-Z% z?)5c_mK0xGRYlFVEKZ!A_22CtBVrwSCkQEJ$T1@NHLP{6XRSsB;Ok~G>hPy4$yDk( zR;|>&VG28B0CG^S(l`m_@x$B^m=WFW><6tM?CAm+mol0&cPQ9>_F;EngL1lTSnwUq z3NN_@KNtwF+%<0arL&nmS-=G62ArP~ke8dqHu_O*PCiWxaT^HkT9uKz4I9Ds-ukYG zlK*JrKAFpKUUn^x^Y<+hqTM0K+Ql*>^t|VDyXSMN_ag5Z4xHJ0IzRX)Zi#r?Xo}JH>#|0(Rn|bbJ7V_sMK{>T|-*%tCO{=BWh3l~S`m(RQJJZ$LXGsII$r?HF zhvyM(nX4we%VkiusX_9vRioq{puk2LjmAhPcP5WY3fcv%38PAOwPnGS8Y#*> zlM=mX`vel@PeMLxpMJ%>gO?BzIX)nZJd&Uh!&?MuXP@ z4wqqWHL&L5=oN@uY00y82UzN{GUJjChly~Dw)f=r1z>Mf2u>Aansrjvdf-8m{*;IC&d7fV=3^yIcf{ec&iYAZLUZw+JyuDe~MUH2o`e%+N;mRNBq8A zioY&0GSQ-jU8cUa|#Wa-f4Q$Yb*m*wwEC<$N1jJU$eY#M@6L+cd6(Tzo^ zUrj?0vYb5pg5z;YX^71YC6b5a7H1Q$uk_*q+=Q+?pWQ)DDo9_{0hPA)m8VSfhrnf& zGWaidv+;Ksu3Yl>ziFun02aEzzEOSABR-DB;T)qKDMvs}|46qWDbC}sd90HpjTxF4 zCJxmK3ie##c9H&{h>e_|hz)9DJIQ=w_s8G7QsW%Wl?*b-!*ilCpQuM?rxyNRHI%fv zW-J0&MpIFraSQB797b+Omjz?b!K^=|_lr>?I*+y-NK*i5F0F1<8#x1eOr8ayEbqdN z>?m6hHpi^bb`a^~vFq%VUivh5aw!hNY1nTX7lV#0XsZs7bFud<`D{SQ868(o{UR4! zK>CEJHbDzJOB(mL3duB--4qF~rs&GnSLCp2w-7I^PS$1g4?mgTn~vjECk&u}VO5m+tJ1DoW+{&@Xfu+o z%ad0+fyc(u9G^L<*DrqkBhkwkPUvj+$luaYN)Mh7T}GrB56c6f4IzcQ!+4qR*e63Q zB;n1f-&oVe-PH%lFc=vA%Nz$_Qxux?jyk3Y$9;Zl0ILY;H~Jl}`@mHFS^NYg21874 zo&q;&7iyz>qT`)l^Hk>d=E}&}1#%fCDpW|A9;Q>l}yHiq31>QZx)c11*o4 zw%AXADYAwGfobHCw%AI5!G&ncTz zd*hDpF8ho4W<|-k+E={Hk%PL4QFMxfwWsc&BRDEA*lY-IcF-MTU=o$1-4shoTD=xIH7w)-)bHsv3ye}V@ebjFJq#M zz}PR+U0qk+AAik6jGXJZ=fjn2>hv{UCg8HeY_HX5gN&($3h=4&XY#Mkq#*Ix@8jK|)vF zgj-L(IGQm}r-)2^r1yeM=lSw;vmAA420dfC^AF^qB%V<%{LPvG|K1J}+Qb6_27nj= ztMVR!+pL#}e8oMsFBiK&Fl{_uLVdZE-VCm1fJ+@iOnq`YL|+vUmYhRPGVTPO^^iPp zQ1(?Xg^+x&Oq!2Ci+%nlPXvTF9EkT7p`>*eYt>y%c2imE00CxO|1H^EO2qi);1JG54UCo1l z=$?S+!OL&CWMhdE8xWCTmO&0aNiAt~bSO$caJfi`uAZejz8IZBnp5BLELdwKn4V%* z<$~#_iE2*#arAn~$3+k|)e(H1;-gN4RMe0OgfQ_d<>4fEpOw5%+tQAfM@kdq2=`Kd ztrjD0REefm!Kz7})qtrs6mn z*C-^Vm)8EFBteO?Q7hx660_WvHHBy{d|BeF&~Jv$;kJF0Y47w%GC8p) zRl_L+O((b2(V_$)2B6Mnd4iCY-7WHvxtO2g{;a}z+`?llDzwkou==oQL6k-01(e7z zFjP!*vI<7Xs>N2^fFyv-Dgc$Yyc<7*5HYuSUq*H_Q(51Qgcu@Wu~A)8x1{lN$P5H^ zluRn`Jl>jHVz5W2O8Lh}98n{tm1L;5Rk`OKFOJudR)Td58bIwJ6R=<))0NG#R&cdJ|hZk(I&<+$eKL6P;7U<8OUj=jy@*h$^70 z2g?POLtRX`QA71owW3W!CUxsH)zZ%1lFr^1ObwdxQ8S8~(H?>L$J`Mk zhT9B|i%und`eSD9;(jc>=Yk$otu>>LijRk~#Blsl%2&j1D5rxbAHGt`PB1Wd!O6f` z^YSgrW$bGOoCV?n99%1#wAf_Ih<0}CZ?Z;AS_s6;^=_ZOV z1QjY)MW2FL+oY}|Y3j7cj&U&KfwO=s$ng@)&!3^9Q(ozw2;X2WtTJwrn23{9M3vPr zf7&~(65^QuQ8UJthVi3E;8a6|3|z~oga88>{ab%*n!sdn_ zX~Spf*?zGOqpNn>gE?r~vZo+{qaz7U{?>eb0m6AeR;kR;mThfL-fl}gHjV=$psEO_ z7v>g@SFA7(oopyjKMs?r4+xpPPAVZSV?-ReDnXA{ATY`=uS1R$6O4R^nxIwk?{opYuAzD) z{`sZT8l$`#Pt%{XQVhUvRUECwYGQAM<0Y&St6 z%3ugFDJw#DR)uHXiyanm#EJ9J9vrA<|E5ifuMDP*`C|sCZWLociKvGU$p3@$hvDJ3 z;aSn{gUURW6NehQC_oYy>jh5d?y-pukLW1`9gDJfcIF~7G%R@gdqp9?NEOO?<1dqS zQ5tUAQf8=Xh(HZ8iU(&*ybSN~s_-$r`biOU<_r&IokZ)fNg(YF(J*;5WD+2{Kb;Y8 zKOX;>qBv?$N;(JuQ{Ep=KtQU_I~8KZSeXvCDZi&cWgOkZs4dsUp6*~$bhIKQ{y;I5 z?c1T-HUgxQ>K{~AD;J~;k18vvOpPk*kxXD$48E2#2E5wru$yS()Qs%8ET6X)n{cA_ z)Moh3@Hr9zujsZL!1Yh&Y;nHW%uWnjVcpwb~gQ0|8GpCOO~r_ z8XgAG)gjzc#u?T8U~+eH?hZ8yy@)Hy;iPR@WYqF?<^psd>{UTAd$Lt?w>2n0JQN_r zCaiubpW^F_yrcxdOK<@uKB9;u$KvFdugnIqt+m977KBpqTcZtw0#eGz#Pn2SMk@uX zZspK{k&d(|+;q{+3GnPF1cCEzwpx*IrN!i~&>6w<_^KNlTu>>pYA5-a5wRq}*sWAC zh8oz7rHP_ESlB4gHN#A$ZmXF(3T!RO&Ngg^>!PE4NcNd^qNl#!Dds}uGn)GAPdn2! zJ2Q-{h4Z;i?Km95et#EUx96J>D3Z?|A}tHGX!Yn~HvbUzNIElLvekvhuWsl6RzA8@ z0r{Fcm+fGg%{ym&{DSg!XkLmKMEsL@AM~!IGQHZl>or;xBz&j0e{a^S%-XNaI-V~S z$W9PbESc=?L>w2WTS(E#Kd0mUq$pg7MJN+<;1!@#FJ5SxWo-ZL&KauHRvWlTNFoDPx_Sii1w2 z*9GBPc6agN5@dqEi<`BnOJ^oZMpCNM;xRXJYG93@Z5v2qSgwD;@34Qh@3~EFTItDZKG5CMFTdKOcJfGy} zCTAjX(i{fm<6ww0k@0y|_Q%bJn}(84m(sMVnlcbW@sUDVRVmnq`ns`#t&_Y}KhNfn zyk}8jYIoIO3CKIWHuF*!vBsd5~5Aj6OzqwuzuU<3QL<-SN69_9- zNv?<@^N3ppJB=}46y4y;CU=fp^2-KuI*7cZ?hulz)g>qWysG+^_%}|)(zE~1b>*g=_rG<;5_(b=><;(h?yDnXs z?3z*94wD#RBur$#&GsUA%SA%0cf2P@Hhq0<{+;Hn zQ>)^1_X)Fy;yMzug&f0A_9R679=3kPg7uyNQ^EwZoG{x)(y&kY0R}`Bax@(L&V1hc z`4?oTGJB^og&iDcqTh*il#Xgq#^Mau#Oe(#fY|Ki50Zt&@y*m35J|+*#Q+O(+;sGs z<`&stM6Bl#kM(wVYS6e%z~R$pDdUHnw{KcuH%^Ww7!;3EEnJk~)Me6#xbTnRa7g1h z-<7dm`ZD=n;F6aM+ZMDqyUU~)H>a}euI18S2I`eB+Qoh9Qg4K)My~J{PtgNl?9muK z6BhGjh1j-n7s|W3)9sw7_7_m)nZ6=M$2}1fJY?WMX0%~6a2iU<;U$YEuOg>R+(iK} zzYO{==aV-7DJH?hNjeFZKa!C9rC>0FiW=+Y92~`*QWDuOT_X)Ek7=2fWK{1hI- zz&6Jd;k@CYCBldl|E{EnK|FYR6e`a zq=VjKgI{G6SHr)sC)6l!2BS2In4RxB!==!~K-4GK^Iva)E=J>uQ5ysJ`I{=8-hlm> z2>_fVq@q0DjOxv!pnIsCaX>qkGgq~W8WSuMj4UXskw2`P2nLoVZLHszQ$iIh;TSq- z&^6MkC_-JjoHtlIOs8Ht-F-$x)L2hB=YdwKy||$88&m1^K>Czus75|V(6P5eha_wI zvoAlf`L#)uNwUfXcXk&pho)SHqgkV2muTPv~t66pj<&MGs7>`XNG2> zRDq}JrH;s~xcoydm~3-x-GIv?IJrpuepus1xCs9NPXidSDgU79ztQDy+fwr_kVUHF26NH4SP z=a!DH&uZoL8EP1VvvqAghfw09(kek?=b<{Ww5p{-@?&lDkW!7z95o`S%YTk4j|$Hu z`wi}j55R`%B`=EqN*^X7>CdFFx2{)C8X{VY6lXobdy@VO?~Kk?hnAYM+cXC_au^(} z0LXG?Z0hM;P-c2CYTMCUq+&|G@IRpV$SdHW2cg)QVpQsz{gF)QZhM!f`pP&W$4GTM zpTwI{w;Ob@BhvBQThD*Z@Mo@PZO_UB*7?kQG9xRJhA>9E`^M;1;LdpR`EuPas3W3) zzOVDe$HT~@jPA}JJ0#{fN0|v4NV@nj@GlCDLTteBwnEStICZn?Y8z$T=GczsFk6Rr zfrgPIJ}1L@7{5J#5HH@@8&>Kk{5vgLcI+zNtggUni6T`znr~NGV0(@|)XadwBup4y z7PXahl-^8TOqpv`SUDaBwh7JNilvN^Wr$Okpg=>M`m-BO!lF2D%QpTa62JDj=~jFY zVRX6@<`lDdb~mZY>H3D^aC&FFS+&dR_b_DB*7Y1@5NBsozBkFRYSq&TmML_InIArgi0R!j(tdDsNXX9iHm5_B`(|@ z&vEv{Oeh-ORLh|(xe|4YZ_UE6XQV(SuL2M!N?zWC^DCD6M?m^ixf1PRQMgB8FMeRJ zu@x|1%RK=ENgU5)M4+bsHIjsXPlX-TIX^sxnk`d{!K6B(k@`!dSPG_;6k;(H29wEV zIzk(eY%cclvJ<;BlR*w)$%bxjfRu(eGQcKsiL6gNEBTXU^SE+XoQ)1O%1axex>Yd> zuXdKQRP$A#`E=p>o9~ae{vw~cMv|3=_peS3+g-e@JrP&$R`YdAYr6Xeqk>loY#fqDuxBse~% zhaIsK=;*#yX5+#(Rx(#-Kp$hut;7i$Vz_RT+*=Oy z%ahXgLDP52t4_v(J7CPe3!ip{lOw(+t|5)#F=aLt9n<3P4d+v=a|xHXoE(Xo6z49d zlCvrrjUHYO;GZBhp(kLvMwf;_g_H`!#+0%l#@GuFRuh(krwpY01?0fH-r!*3t&nsKlI|jfnq({q zmWh&-x;8EoW!2tJCITOAq0O82v#v*ZN7*`1YzROdY1*jXAM=M-lULK)oGa%ACvGe>RT zj32d)@lZR6&9Cc($07~+Wtn$iwF*X)gxNY)Gs&5z3oT`NoiwzKEcE)78^Yz>Q=|UR zWf1;@)-?sfgA8GA(-519u6pp)HyhW=AAtA?wmtUv%JKoba3Nu2k zlE^K888r=cbr@WjaK}AmGq;R|_}Smxk1i#yBkqmp{^E~+l}b{d|Nnx~UN;Tt+})jHgnUgKE<#nbafmNb?+yZcLT! zUPJt!+x_g{4VpM9)0v&j zmZgYsvhe~-GJ+30MqO|rxziD0!D5QmN9>FtS{WT`as($e5%yP=2#0NgO_upPZ6Y$+ z0M=A0D8Vx-CG~JHu2h)`wHrFkV8yrOcltyB@Ohj+X5q_WGr4uRHOnDOwZ6e4#r3wt z_lbdL5DVg)z{y#OwjV=L?V8H=+`nvwCh#9OIxpsI{U)Vbk{-3S_3p)p#$6%;-i%!G z)Ga6loI8a}<1Rmm(JXd?sLU!duCHkrvWXv@ln|$$0-xtFv^AsiB5WrIzaZWqCW#2a zO}r8?otYK_C1`#)w|~nex@OP#=DRf^g|i3Sg}TGFZ~s*yYxy%jWctfJ-%)kDtpxH= zgi^rN#UFj9%DwdRfIoTtob7ZsGCo)ZFQonhyVQ5*P*uuZ)!3E!i3%Eb<#BbhEp%ui z>+K45|CGizy=8CjxPRQGd3d(uR~nMfc+)z=sjqlS(}x%Bm_`)?>GbiWEK$vpYWG7C zuPXTq^MDgFTjpyOW`As+E}Ox~s(VX|w;ab+ubOPxoN#ql}gpCiuMBfe2KR z=0gJci5=zfPIDlFti~jAiseIhu_)>+Yge2R>sO`nA7j>RfQj?=^NU>-jbu z?L(=hCVr}V;sOTHxAr550FBMr6)VnWE{oB21ga-lC|3w6u8O7ef6pCxeyz*s1Ao2F z(l?r55N7-h{f?xRX%&(!)kmUaMjKWb$XpMc-}}z^D4VJe*L!CE#Q~0Ozk4A@`F1=5 z7mr!u&U1U{8dAx(Sk!q`g14}v8o-e$P19J9dc>y*+~Ake?w?zr!N02PdN(Bn6#m{Z z2>bMXDbtjNe!*mjog383Kf93j7v_+t=UWoXodP`A1f93B4+0@iZ#{#)_e*SPhFz}# z1LjstqJ%X8Ju6jz7%TxN z3{1{~f3<^_E0DMPOs741nI1>mZ$(x+0~B=xkcV9iX>Bzj@?(r^60R>&!Y4E--kNuY zA}DA!HB0^12d=q49;}gnRsCAH;>BCj#J_$8s^yx@tl486{H7!pSUp9*>a^}Wyzk-( zUn6l#)sEBz{@ydX2s&W!)U%&@zt>;N5_-P(;Vpjt?cX=q-Qm3RGQCI(Z~NG&RF7}N z@%TVEk>d^6#rDnS?rFJMd%(kV_cCibr^V*?Mdg9nBUKAe&FxY?$P zs4^oejxM`Z&Zk5lOYOL%d-`NWm(8NP`p+@x`@J27KAYCcko*gPx-OU~^Pj8_(1&4v z5v~WPwb)LKOMp(6r)ah;zPjSyikARqV1zPiJPHj%K#?xGp@~afyccF{;@E7(zTtLk z!PlDS_pBYoQcA6e?U42~CE~_6$#JRt7OLi%P9M##pE-=f-0w$rK~y$J`Qwg@Z$moF z>o`jwX2+wrz3ych7}tBC`gd@3&!`2~TRvB!EBEzyD>W>?aq7Y5&rFwYxYnXF!C^BL zh5&eUJl_3hU5@#`r{;$gV2L`|ks|iOaAjsu`|K8pQ$(uT7&wIFx!k+_@kky1+caNw za9Ir4r(ZJ?^rxWv#5?lrgGVtw=`w04AGHDuS z%@fx<)uWhWqDI`4PcC&1UMu=T<`=lg=&~Oq5F^5eiZ4-dS>{7HVu9cG0Q%xd$N!|P zywUQYbus%WDNT#A)qb|=*~q1P-WxS)=?9_rH(76o`_1uqiy`=1<})47gfoshe$Lj!A%>% z6($SEv-n7vG-Mt6hVioQhgk1rn6b!=3R1*)Zgq<)iNb20F>oB}CI`am6uotUNw9lE zQRi;KCQQA)-aDJgi^QkN_2UhmQUD8lr>L`$sl}ZJ!fBhb{+ZOL7r4I=q#=Dlxii1g zyG{Mw()_C(VoUrH*Nr?)|1}~fa{EgQ!PSR=`|jcUQ&v{@B~f5%S6JKI03WvMAmTy` zRSzxZh(BS2Q_V=-8QaBtE~5__9pG2b8e&gph zzc18P)i_0Vr^y*+2rN#^TZX-IFXfV?&Y1}W3Kq!VY8wZkb&Pktw8e$q_pHz{H4FR;aM zeh4b0p~Lt3z|z12xzpTJe$xj7XV5-JPq?+-h~5*bxI*}}ondwy4(#sX`RNYOFBjB9 zbZ!cgKgGc0YqSO1H;(&XhV+gG-Z)RTUDgP4AN4?iOa-DxT?~^$F9b^#?)z9oe2hI! zbf#wjRxF2jv_2>)-+!mKbkCkjKj4Z|3@e#1ceQ7xScLJCGDm-wQOoVJ3T{l>Yyr%L z{*XgB*ZPbie~A|V3gwHyfl67?cMToOG6wlewWQC>9d`-4oJ&7DH4f{WSN}+wU|r~` zGg(?ZSl7}Pv1a-D=tFIVl8&v{D3OUG2a+}*QxUDRh!2RYw>1rdMI9+6f!9hvl z#bfTBC$BO@KOZTP^=SiSl|MEyE0H#xcNw+q*;dzduQyl@XVK!7KoGZ^d5;zzvA>Bp zsxA-QwSzN+psF4IR`4fYGU#n?;*-H$By$=gmv0D86L8%*94ZEN$9eoC5~)(K{}f@D zg%Re|-(SP#&Gat=VH&yei>8PFu1%v27Je8C3<;3i(g!YLiv*UFeW`q1EA};2k(q zujx_iQBw%g#!=!_50%-OE54Q}SM5$fUUI5tTA$5x~nQc{VGr@D{va)B#v~_vfxQ^DcKqV168Rw<7!oaW)qRee_+{?+_C% z-1_~33Zo(WnIY%!J>8ek^|@)y&gg>W^j)O&pzQae>%Y%6Lh|o(35XNFLLcrjv@i?3 zsZ0|6C2KBwxFT2V^nHxpE=Ne&;d5;GYR0w;>WOxS0=~y=4muG{R{Z=ah^yoaYZ`L$ z#o^{07fY$Hgeh?uZF_&r{H)TQU-gcca0c_8oy8LAdOTM zqlRxZdwQzK5(;e)Tj-&Dzvw5Vq{x+s^r059OifiuiG;la8B{!Krvs!;eg7nIPsHMe zQ6M1y1Q)pJnGN_k?#nqr6vKgE#IvNmZ&fjlH3T8+5P^%hgT`*K9w%Iz%~+q!s49mG zu8FlhvFYq=tsnecHI+{Dc(PZftH0avNnLYvI0B#U;^7dSG?C8zi>o~6i5ArKmGb!6 zC)&75fxe^}|vmHaJ zjvo=&FVA$)WR)~~l>DvGJG)ZXge&s^Twgto|8!g^ zHdLaRV?nd~U3W*kATQI#iO0Z*`3tmSz>ZNeXoyZV$Eg`Onon4ev8Y15HgB@;01YCe zcJT9m-I`pht4YuFxHK5OayakQ)%}m{djD&}q>=(qJIQVr^X$53osF+PF&b`eJ(y2`z_WPUxhc8|S& zfr0KuOOb_Z$D+^mfffAQ7XAEftfC>&@jYc=#T8XD9mT|5hhP%UBvz;rc0?AUnqM~dfGX}+PKEINo+M+PP)U3hB|Ts5{uI)j>j7dr zL$k)(IAwSE1}>5X>TzCtWK|%rzYpW$q>G&(B39as`TKCu*O{Ul2#2x&!w<@w2g8ke zhtqT7#Z{hYPXWuz#VPYyNhk_A?)3Vndu_M6NTDm|-PH@rA4Jm>y-zdr#~n zq<*MZ!QjcqxeEKNgIwShBOW00q) z4T~K+{#`3F@&9Uj9RG`y$XRmEBQC=#9_K=Q@?tsuBpQ75` z?T{lPW>0FaNp58y$9R8~o>W|^~h5G(IhX+cuf>$QPA9M|hjcYI8bm9A! z(~a%quYaRibbf>mXnqVH+@v@>RD9B}A}{F(lZeYH!LsGOK98Y0BqT^X#FBi`Lydis z9|^TlVQ*#0|9R#l>)~~|i%bzH;x7az`;`{!>plHs$WjK|(wL+vEb0q9g0=3RS75%< zE;c1fj!F~}vKs%eTd&$l{1+Wg9l$xho<3!b;tsTOVVi_PA{Je$M}X#Im}-#9+a$6TVH|HaOph7TR z!kX@q^u01K_xD^92#(qN3_j0H^#{{h(Ort6B#tldy`uoB2Bzmg)h&?$w~vi(_{q1w zry^SXactf`umL4da6<4)k5^Tr`QU9BTd_Jels3-1Kt=J5q-$G(|J3bz9e74)mf_{0 zucBw&cVivgLmj+vB8S%PcDj_1yx-=0l4y0N_peEOqcBPfvAJH~8t%N_a?qj8Z|HRX zT@Yu2>%FJoy#=4J)^6vCLBVIxM5A?`A?TrYy`p5v{}^4Wtfl?BO_sQaXyC1K`__Q4 z1*W_HZ=f__YTIPnQknH*x;&A^DP6;T@)ENfu={7P6s@aCPn?(JO{v3mQj{jJkb@dA zjJ7pse%H2hgGZ@$i`A|1`yI4q&l*J~UG$WY?J*+aJ8ECP95DVj@nm^)2ef(|&Fps% zfxY1&dcXC3n`gvEit)lc8`iW_sPPv! zQdP248uMaU1`_I_2-MxuE>uE7ml}M3l??f^!V+pGO0m&Hg@PX_Bz;3?d&>~g{_Y0E zfmp0YXyg|=v&}Q@WXd0C{=(V3qGF*b&iOaz-OZ9+=*6QUIomQ_7cN2FbI)<7T7I>> zZbl9be+Mr{f{q12y1o$kxGM8lZ*7d1(um$G9Hq5!%m_g=Wo)oqSpCc8x!_V>R0&*o znP41`|Iu;P?!G14&%Y4O`MaA^#IMI4c&d6OaCv2h>*-xRZgkTx$3$UBTWdM^l5qnw zfIoSwT54l$3uFtOw+kB)*19VJcF!)JwKkxKB%B)0keJ-gP_*vyr;Id?T%hr?jF0AY zP~Jr7MGOuz{*Ovylt-Bcs3Aw=2ld+7;e*8 zAF7bVk`?&ABST$wOYV)zyvB49H2mtXcI#uP7GR0n_C3ifFnkT_>>kKLXP;)iU=&k6 zSv>dpj_h?TlA3S$tZH!QrR4WwV%zW~a|QJHz>Lm!us{K8>+o{$1j|oW@OI_8)5FIip)pr-_}}J^KV})i$1GVxK73!!rX;`rBm9qkVKFCR z!o<(`79VHTECfOb+?#7Vtry?|4$>R9Zr2ml;MnxPshuW|L^8Fj>ws54z!UMb7_toh$XRG1N^f_;z~3jwL6tzfIZK zPob&!j(yYhS9U}_{8P5@E~+#vH8fOgTzJ8(3otpkP0KdEY3(io5Q`n^B^JBuk&4kz z#nJJ3v|QAXnXsn$Hh9|aWy|@Gk&k9`ZKHV%xScadKi~VxDAT%p{rEwr$%J+crTq_uA24v!LI;0y{U0O!zfyM2_SFDSw03u$xgR7Y7L&;w$PJ&`H&P)CxNMIy%?GA)zr;K^3Dld)#eCts z_xG@y1aK+7RX#I5@hTUdt(jx)hU@lC%(bw-|42j~{^fiO3_G6%oj`V`&!|=Q34c60 zlE)`MeE{Bga7rt+JE{6KT&#t969bDg(O+SpyvHni*P-zHK+2CUk(~%OVf{gJ+|^5V((QIXraVBp@r%4e`Hg28c7t z83H$`s_slrPi*L8s{Nrs^TK&5o}oP6XVI^#Tn_jR;k%XdIlshA0}=rot*+k$KLqqw zb#iq{oeJf%g~2ZVm|_e&jin`3*)LaVfBU;Sh$U*cUC;mJ-AYr0x=s4CZ~y~c8BU+f zDWvCYvsxgzj|>aC3VKf;*|G&~Qbn0-)$_nHc%t$=Z}A%@B$ox!!O?VEiFW_ zQ{ney7FW3E8NeU|V6X#JOu)z-8Y5!bWE;>lE8W)pG;jyYBK$O4M(V)y{?pN$o?pmh zD?TNa`?4l>^wmZgNbGV-@CYbzhCcbVxPH^wnJL{OM_Lj{uw3!q0M~2cKl;9I4fAE^ z*4AT-$-4hKml6A<{tl_q==pZBiSthC%l!6G-Qj4er;FO7qb4uI6Gkvzxu0{13jz7? zLU`j%@-;iGT-ZBjFLD+&GoRTWV9^8+`;*zDzdpbuIdZ{_*$AHnH!`iqbZ*|tf5u)S ze5W>qv0y6+VUc;1ak5iaNP=#|7ZW-o7+5!A@YmM_61EK-YcmFY`RHba`l z(tj02G?@E?NhC$b6dy!9hMPBl`aO+>Ricz!NzredLl!1ttQ*LfiPjGLta|1~H%jiJ z@KfU7&R}5q{ogdXV-H`tA7Qh12B*}73K}cjiS@5^P~OHkC@_*E<<*wr}FrYWZQIBv+iiUu*&{{1@-^1 z0(@VFMXr@ekAleOt@-05fJEHa(lXYoNY&+htu8Cd3#GeD9xJxby?7Zy+AU2A4X6J% zZuA544>T~t1}pVsVp`#BfKQ@&Tm`$3OhFsAd%baaSxO@?!xQ0sQOlv!qjy&FP7feT z{0_A{2$1T2HVe_kzeC4DnF)tT`51X>2Q!N-R-ktyyn;Nkfg&oYRR(d_M`OuZ58KR-SU{W4Q-Mx z-nhMFWxmQ#4kx99h!tB$YJCP1o>by)=`0wAUxWw0TNc9)yjx&ZGv7oAV>G|eYeBAd zQVQDWJ;(l2s_;NH;gK)j#7rHjeW3(hA8yppx@rUVhQf4W6DiohP?9kVZoK7hA&~1B zPIt=ByOGa&YKw>JVl~#cc)*Xh^6KIS1@3;%PieMC>VmmX2#;i&bA;BL$ygn^y@6pT ze^;MeKK#uvkDd9@4%Z_kh$GEi?a@0o;C^m*|7zzcc8#8cy*+EJeRW*ahGqL63FZBDVf9TBK2+9Y7_YR@H7jht5Ful$Z3=E3M-iy@DDl)3HaF!+ZmJ}t{ z9J6uNhm|RbeBs~As;jpo8qH>*GkSPd(9!KGxd-UAi>O~36+_wd^84}@Z2-k@P{s35 z#bnukf~H}(|2U-faL=u&jn1BN?3{yqt;emTIR&Ogl`^y5iyDuz|# zhKFZ&4&Z!E*ek|v+Le0KxO~)8Gb{#@c75?nbu{n|f)tIgqziiMoC(s8UekX}LyESI zMoDO4!2tpMr+1Id0!~hTQGW;eOh2@i|7Wx1zRv|D~!x+Ltv=`=a9Xc&I*S$yKKXkB%R)QD`u z;Q(M7vY%j$)E@jlxwZM8c#u~RfZ83+4#^4pxctndM)2%C#9Nr1+}dk#dwn+mQfv+1 zQmuXdk0XWpUwq5DL2N#+CUN5|++1=9(raJIhQ_R?x0I_*46a$4ZIG;~WWJxq7=I!@ zb1c|rB+*9$(LrO$4hA3dQ>KQm?;S=97fflci;Z2ap8mt`5c{`SnEN=n&HAM93fjXR z?>~+i$gV3B@I^jLjos@G`BD_3*;FkqN!S?usDSbGHu=?q1(j8Bj40Pt za4g@TwLRExj*zu2fA1$13NZQHZg2RJF0T~IUx5e8#kT#I717d`P&2O*~D{@6VVI84C*k5Q>jM;thm_v+Q_TSDea>Y0vn3F z#F3keyTc`lo;EyGUeg~oTDcq$u4#cU%AjS}1&MDiR>Kd*o7CsBIoITidCe>CLb zF}c{Zml|<=gB2s1{yFYi=K!wiq|S&!cDv#jKlSS;*K>}3fh(R}Mlm06)I8I7>=X^s z*!c~iXk>pdfLy{1O=c{fqy-yWW-PvB8M|71?C~FsVoIsl6C`uYRhonuJ=@_0Ac2J~ zf(Qb)u$ByoIU6}q{_dgRcX`~F7e1bkMF6=OliHHyVnE|3)nTJ7&-x?0IX+YWaDZWoTO0V5`GYFRrRX47U{a(21S4GQ=^G6UcL8eT~TC z4sm$dZ51!GnsPCraY8WswjaZ-W6XlnMm(kC>to!}nWFsILGo3SJ~3^~RY)BU@~*ts zNk1J7{;~hN+j?7UON5Y$A&==s8l;1P1zl!WR%)K4O;PP{E_`7xOY3y@!%4;^hobu6 zBdrK~z6-%xay9^PMmUS zIdiD516$6drBHFZJ1{s$7`a6 z1+8x8?Jo`NRE=~MVWiSY;8f`)+f=dRUbCZj(vc703kolxyoc&Hga$shd4ATHceZ}D z*zm!h46w=xJrMoqDNQl<&$u)k;0Qm^njsQ2^jpi*$C-#IiT!OQN##mg52D%Mu3aNN zjrNR8A&WS8R=px8%G@fHQF2-6V>^HTeD>xlB|{ja{@Q^CClKkECHA*?`^c#{LM|I; zuZ!fMXiJ0$j~m`rn`cF|NG^a;-Yda)@@WHAN|~Ub!rP|OJ1&B*$slq?!GIFpj;85$GS;B4h!BAa9W4Zg_bl;ymPrqd z$?CfijtnOa1EHMm_MzH*wqhKKL%#lq+O;!gCq$JqEjP=$a7Hl(-dZ5^K|_Zk5SKOELv$i;0J+`e=iQ6_8Wva3l4a^@zU+xq)-$>ERD9Hce zG>#i}EOX*~@y~UMA`+Zv^zL~_nI+Yc5cw>9y*@<*r%B9ZG#fs+nwLn7B4vNIRV!8m zqf`vYX2P|-@VsH#k!vlu+m5E!&s^1hp1|fLr0PFn#ukf}TNfZA1Ep1g(%`IKE7j>i z0ecwVaPVDu0S16EYgepE-dF(I9NT8t%W65K&=YueQ&Y2)*@=doHVXIFHfTT{Tkcqg zLFBt|PKK_Wy>0H^pohLmnH}r4j7Ms{IB_v7wUWLfm0HYCE(|HnttM+k{GY&(Gy2e5 z)OkzKX9;3(N*lwXWp^S&0|Gk3uw(_7&y{o*MCjX-2rqb(2Y2r|SSP(SR#;41J;H~K z8eAF7QKV#6yX1vZO1Xq<1!PSK05zNhp7kpnzsM?hpC%C{7_oi^zi1 zT{~XI?({$nXM3| z&ak&@NQ{RViRZMwfw*s+7L0Cv4*b&7MP+|SD@l< zRMh@}q)2a~VwE>SkbzSP1!J_bcBNSkY*<9XF;K!1Je^?6Le4Tb8C1vhqhB$DY_E`# ztCDX@DL!sX&_|g9!9m~@j#(WTuYHebQ50~94_~9S3v019H3=1K{KjZsP!c|m8y>l! z$nr9UqJ_5|Mvv@@dKjZZ_qMr&5Cm0JCEETy)hJ6=Yo4-`Esbvn(oKWx(Sr|e}fdvmE=C)QO`*nLP60KEX!&oeF4gz-e< z2;$5qyyxg2zihT5Mv%#2l!F@RW2_sH20HlN?w=~T&$n)4J-f-lW*nE2(rn`!Src(8-K>0O~a_jHx{mB1pc2l@xRfy1>vZi54bf&#b&MJ?!{6x$?oo;ebn727A+qz0b zVd1D7pNMy{%j30cn~;I$r6(jL0`L*uHR$Zv`H!32M|APXdbIkt#571sjDLseWP|HE zciz*!H}K=A>L`;PN8v<5b5x2a(#P&FruRw2rdIJb1LcAx7}mmt+L@6m@t3lC#{2V< z8oS@|96`12ZavaM`%WiR^2szeuPAq*k#GY?Y(B^pFet#^nrzk zwbYzqVY`%nC=JqO@>ph?IkC3__@3ku^c?$jKxly&Th-ocOztosp`f`6LYzG8Urnno zGcu=D=hw$VU_SR@PRj47VAM@S%`5{lV{^WjG=#j7@RVnp@Lkk?uixCX zakF5`|B&Z2bqySjhgut|dh6YR?)f9nxov(DL6$=G-K#=RE)0fw+8q1miVMrCXzZht z*@A>~1(VDSI=)TK;)+5TS8r>t8l~e>s>{XS&ti5En*WgcAtBF6ryVt- z!442^{XE00dLxJL;rC)TG@vLb&cYqB%pPce0}VU~pd*y!%0fG_E3GTUHN+QW@Ffi< z$5);ec2uOtO{g5xZFldgn>ysSmi9C%!bkdvXmt-C45?nC>@ivOv<@Fk>$}TkL>WahJQ~$y`<9p;S5z!fw}6EibNII zj1B2h26>VCfIR$!8hZV{QL-W-0Cf(ZAS67QC4(*Wz!;afXu|Y2k{VsZ{Eh`pLhf{^ zRBB`o9Jjd@M5!t|1pL^vDVMA+X#yPcFZ69$iC(d9OQbJp%K{q8yl%ASQ)FQOh8R!Z z$wTivC%IN+VheNz8W7*|QuaaPO0|=t;uXPiiK@{t%p8MtCM|?4$1wW{-!j_}=fKnv z7{rZIA?9GTR_0fPiZFM+_n9itHACZy8KFjVK}gWRAgYLIG_m~iZm|P7tQ|$XxpOUa zM#M#moL&=x3kBAlk%p~lU%s~VS9$`Ypv(y>Aro$=sZh4uYJk`K%_a)Vd*r6?+@e;|QN-ek<;}gPSO`YjtC+5)%=V#kxgS(hm~!ya zsyJ6hye-g*nNlc*ehB)q2XsC+N6w)u^;RA065rh{rcx zEt#vY;CAa!LN+IUUzcI0JBoI@Urh|3zmdL7i?b64apaosO^lMBX^~ZZGK9Etzm#@o ze(-RUFae0j<{)hXlK6DRK`%8EJM5&x@JpHum~Z8M^FXS|%haqJh{in{A?N1dNp3nq z*d#iHcaP6=9zc6@I`ReU$93~+X*uf?iSYRj27qrOzS`nxjk&Vg2B^nnV@KWNGI(6~ z&??ZV=0pN^m=%;z{RZLwX`$i1<1Xq*?XcEhe)kY0O;^qXweE7ji4i?sv7uN&u0cOO zG+~({mqkb-N~EkG(rgDg>$Vf}DF#+TlwHi^g&49kcg|~ISFmmf{&;_$J?jtfP@I z;V@eQ0s|bk0nb+~hR?st3?EZfbk%=yQYo|l4N~tj_qU8C>7>*#bgToK|FNgv^*ui2 zfuKpiG6V}73p81=0B(`Wp_mfnj%+Mj?c&Cf{u0wsr?VY1mmEc=!NSxL&e^7obof<` zse3#oP+PU^8=RhCvVKwfE{0G5C5})49!eIAt|0z5l3;#V@RUH%CcVA@QdU+()XF)l zD8-&4_DU2vsnu1*nFBDzWtl?3nEw2JUp+np*z&IB#Qyf`148p?oQFCaH`9vn#C^{vo7Aq`8jgX&uH9Tt0n$!ycYv~*>T=)W zm8=b8oF*LHB&ny=E{Rq~J1#}%JJzyYiDGd2iw@6;Ck?xNFpotg>7K=nBT99AgZMR&}ZFTuL)j^m?zq+H-YaDhzs#}ASMk5sMDth`q{ z;ljRI&vNPiJo^&3?rwsTJL`vulMIs`^J7o1KB2Rb7~GDx=2HF_bV)7HY6L_rS9TGSYZlEM zu;~v#?U>vQA{jh?py_MR;J9^0+OH%{S$Q?11|+A^1zvpoWcS-su{)Q!P%_q$0HD)u zwCFlljY5DaK}BtJZA>|?-Ab?GTVUhY<`(ywiqX7I-kkl?pDtL2c>x;3h7X+j{ZU%N zq70e2x%{HOJW89^W+T-U#W@8Ka-tD=fE-BK%mtNN5*lS&j5xkKo&!#;9HifTr-xsB$AT7<2*UpXccOw(ak-S~TNAd6f zUL8if8z7m<-B|)d5y2&uRcXS24r1Gt$Svv>YV{^HkCsqpTZ*NAs6dOusV^98^>BT) z45aO4fx4{XGxVi^T(osPL09`lCJrv#!Kk81)OWnY%84rFAunp*XQUIP=wq94K_BNy zufS#x(_bXoOgoANQNYMT6qM)a(k49EcIcN--iw8a!0P9B>ReTQWfaCKvCb{~0yEmv z_dqEstIkC0s}=j8-q6A;7Xse!gEaN7)E@Pzs`n6c*&^aYEyB?MZ-uG)7ce?mg91;0 zAX!5wiLiEXQ-BG=)#AcpHG3i|p@O5x=(zR``3r$0svv@l4>*b3;x3uqfuciuP=has z!<93!i72EjiVGL{`>*}{f+lan3R>?g)d!xx|JRWx;nuzbk1wBJaAQojC1?mAhz~oK z{o(KsNI8N!xzV7~vA2tz)`jyxVs>x<#xaS%@umIvy=bjT$X~m(41K3A89XHj z9!`}xwnLpt=}$dEj5_^Hy~n%QHz{X4eQ)ZQ<@l1L4<^hbf~8=0dPF0Mf`5hl(v@h3 za#|KCJ3IAudYwSo!P6VndHPidp&MHveh(;l3xAd@c0neBRns@XV+A4B6P zmhY~7*z=0I_z$dWFs79vuRGb0c?d=h6RGOczoe`WFNw}mriY8B6;Gs>Do$UGHHWXakJ+*!$g za4czK30KU~O7KHPZqhg?e^& z5YSh+Uh|eZ^VnD0wZL;@=;yZadp-Sw8!6LazmC%YE?=g0sHh#sY%y<82DP3rl1{Xl zp0^OFyGJh#v`PGSeWSt#c0y4w^!K}3;mN5GGAHXIgI-i7OAS#36%{r*I~?j*eqmS7 z`-gWLLYOM~9kQn3FL%yRbe=wPw55h31%#)Je+j(&gx;kn9J=9e92oIH$8E>9!m=gb z+ynth+R9^DAHoZ?WeXaJ^w6FfzU#G9&)Vi+n7O0|CE;u40E`mEZaJF66m5DagH{N5 z_1Ky%Qb)wyCQ4&@z6`d0Da6SQDi1r?G+s}N$I4}FR~B&w^_NQ zdVYXjer!=s4YaPDd&Aw{b^uDy39hg}V;Zym3y-}f{9N*K;v_s0k}|3%eszUvS5YX# zq-;z8skkyABA}i)tC&}nPi>Q9oOZ^Vgy>=xEw--oU)GSmswuIiYIH zMRl2MN^5T!b<)b3s8EX1WtSMisp;?hNPSC*`*HXM*fNYP9JsnBq%4g+OAzrY4G)qc zOn@Ggy#1&z-V5z0U8W>DT-zpYl4ZHJh3#KdoB^EztkdW#ni6`07)pjjwr3N%A1Z4= zh&QjTL1*I19ss9u=B8~lj6q`Hm_KsaoB!o$F1K@#5Y2WgWb?6JC$E(L;*^&q4BgF2 z9OAE)#O2cu*KG{`Yq-HnXbJJ*v)m%QTgcza-X$6|?ue|SJlIyjvp<~wCMj4Skx!ON zo@*mCUgGoI5axYqd)lB*(&53$Gvx5%-UAgDO1l`w_? zuvQo^Br~r2xJ63$!2Y>=?S6IC==PTp7E_R=P&I;%$m<`9*y`>N&RZae$N8Yx^KO#C zNjk0u>YznY+*_Ck(;9?Qmn`4vS_8?vqh>d*il9$8H^90(zwA^{6aI{Vz!YU`x@>`@ zo@Rv-*dq-Kj%oxKMaDSMV^)4f;rh+I5bm69j3!?KuR%UXU_!(=iIN1KxQ}U!C31mGIZd=)#J_Z6XOo=zWgO|Cf7GPDGU`N%!2F8l-!xSTC&}Q&ljuVArx<)f z(XowGw|PilPEhW|pl!Aa-D^T9%;@2|ijmOLm}D0m-S&hp!u@!7ksGS#F?)5$>jZAw zUg3=R9pY9nR&w78H}<-_Alr>YN-m?$=M8Oi+LKN$=e}H|eyM^qfX1lWsz!Thx2AT| z*#5U5eyUI$V(z%(cVn5fD5O;94F7n~prH>!Dk3TRGr3mXFb^p527uFcRG^|bQ&hV0 z9PhES`^et;-(jP?SjYoo&4rc<`&ykjySZtoL6cuNRyBQAN4*WwM>)f(qRCa~LfLXMtLFEeETZ8V9Cfn&}p*w+cG|>Oo0?==n_oCNpiOp9_t;zD--<}Uo1?zzo z!_@A;xDJE%h)XKy4dHJ1XpV;SR*GkH8op_1WxP`GtpqQ-)7J(t$-NKbMXfL41K)J^ zANW;4sAa|IrSXlle9;*xuIE33Uzw<2dPXB{uVf(Fii%(i`QH$6#O@fQZWS`qYuu&$ji63g{I-?AGb$(bCDecGL@{?TcVL$4k&Z{K*I zD>=!5Xdv}oHcW)_SB8i1QefmTQ4eRcxG@cNho;`^8`h5N5eu?x{7Zo-urG(nSS9;! zh4w|AoewkPICIr;7vk#F!ho!*J>QdDJR^+RZzF~^rJr}%xVT`RFilt6U7c$!4hM#d z4D~BBS!SM<-z}dCCK;&YQR|^@{gR*B`QRxN+;H9O&FsxK13I9o;9H>Tf^+_;-m7f~aPBuJ!uT=hK@k4IA$_|Kix5C^vW#t>P4m4t%AFdqI*Q99TJ3L z62JSFsB)TdW2F#F3)8`?zdy-7I3shVIBrTwG^!$$lV7dSOJrGYqCH&$1H&i6Y;+I! zFH#32mA~2_26*SSi!baE05bXE#5(6rEAT3e4Ny8FF41|~cG0ZBH5slBotdL(Lbluz z$pk{KR*RgsAa-6IA;yqrAogd1}J;`Ku*2>S{R$Jo2kBNiH=3l;2 zTmz-a<)BfGIdq4;mp~@VX;8QriDcRc5y`Jb#bZHXu}8wRu4)A|A^N8E$W0#-$x2j; zl>(^|_xxx<@F?4(jyBUWnbScD&E}@2KamTd8>p;EwAfX5Op@2|Da9q&L`r8I*kOM8 zxAA^R--}HLd>ci-v&+S@rP#7kIL~|oGk1Bi`V`=}KgIZ=hcR|tO9&7o>VK6YNoF?jbb7N9%vxI`}h=vFk8fiL<8s|cB`ASjsKC>UQ1wynp-1knS@UpdF;yT%z z3eoY_$-Q~fywj%QdX+yJM8{(12a!*0`y)a^C3r@^NP*=dQgtL;CYTZMm@B09v4c~g zSxL#FV|7=~fW;>v&)$7mbKsL+y~>ZY+zG+B^<98%{{w-|=4-NHnA?95xV=g1qm>ze3t+!!c~8XE@v3aBAw$4~aey zLpPMr{wt2V11$!^*l*ENmeegujtpDA+LXubYdn_o)EL=D@~Rigm#Aze{f_JiU*VU+ z75|bc_{!mZ}48)*+ojYf|JB_F=AY-0n4f@k#jG80EfrrPirB2Js&4-r-e<|Fd zyN?A(>KyBfjB#6o){L~aM2vxxuPb|&i-QE`p9r9!ATS?o;dfCS%Z&EZ?fsR8|(j%u@aAXsOf`+Y*&(aIgI=6q#VT}CWu?qt2>(|chWLD4D` zwW}*~>s_Ds^vLD-2<%}S?75QLR3q4?_OTp;cquq9`O3Q`SZI`2YsMI!km9bNh{iw? zXbZFUPu*00H`>fJy?614(`}Yw5w6NDRuio(FZwuAJYtl(l};_ zHNNo_ceZxPno3vpQ)aTyK1)6EyIgCy1zFLBKYoC}--J*C3tLqm15Be`H1@D(ux7QVQl3;o`JM$wY`e^2W&}2{XI6sDY6Gnpm zSdcJU3YLF5=DmB`kGEnKx)@;ouMbp4zkO%Bt+hqq@_k@+<2ayH0PIM&hny~EfqYRv zO6YE6e>g#GnbTCO+L&{|CfD{O?;o7Wd%L*pZx_K#^>H-*O9-r-?6>q&JwFEMRw2)W z*9DCE#4sksMs%Yr<{Az(MuM4QLzwDdzdfM=bCPcqtHqJO>UP7&FJTT}+x~SL+(`Jw zX=hHEtvrVbi`YUt_}#&tbsuxSwH^}*dQdjqkpR5FQ)twf7avR|8q{<_3!e_xH!(2l z&Ou#PxS`Vj?$;X?cOEF+r`C_UQN} z^e~_2pFcwIsWneO=j-=h#gxdvA#%D8y!wV|vRr&F+)qrq{wy=ObK?Y$&<*P1^_A zyH*|#rze5@rb9betrEiZ(=6KvY)t2Fn$~Is4k+F0EY|*8GUqi$884S&(J)Bp4izb@ zSR#92SKohNP-QHDf6|r}#jFl`#UFjE^2wNvr1NM~j^h>c3KC1i+nqn@29AQupE5!CYT#JFZ z=Myu0kcq6>nWAy!j0V#(Wm*8m%D6XGnzo`1>)WJqNoeWdDK8nNJ6A@6E?q3X$RN6^ zFv+mkORK;$M;5}cY*8!3mat`E%59BLG@9KTW$(~frj z0(w2AIUt@MIzb>xIHu&-U->EF(F~$P;03Ea|mzZ8A>M< z$7CxJnmWZ|Hvw?>nU^Xg3&#)dePYQ{Xo#MiOFt$nOog#&E5Pq!vz9272qv3>T*P>^ z#2VgT_>aDxb)W&{WglD2aTRy27to5G%@u#9iD=_SKjqjvAbjI7XY*|^!+!R^F%o%F zD5CIcl;>LRREO>jA>wp@F)u*pgc&N&%{FDmC-O);iZT)d5lKX$zQUiCGW`(SdI#$( z{Y5I;*a+>I5{4RU?AX;2ehR|&H1vhXt-M58Q-msoTnJ}#RGO-4Qp`$Jr1XQ*BM;Wl z%BurY^I8i7N&r}!*cP~gO}MUL5up*UYLz=s^LmN}p{LJE5IMyU8yUqYt=Ra&OM?TP z4K^={5UEwuWtKv2RwOGovzRe(1OM95G$9PeatvRJ;n$ubTs^ysg2L;u?zedp9pxU)Q`0=nTWv#|@ zg@36uo0DQ}PJ4lZCh`OhJ!2?pHdVL#XAslTA#@qv!*%n-siXFJ6STssyymF7w4Wr{)<@pa<7Pa3aH`k-+D`-_2*TxF|_mn*$C7r zkmCd424*@YTZ>jQTuP3)ZbG`(Z`{WBKU{=!uZ{;^3te#wScs_`ITr0ek{R*BrnOK^ z-cu;5%x|VVTwWjPiCff&6%>XfAH=#7k)!`ZGi5(-{t-GKO_JieGm!xnA(l-wTP%oGm` zlmWGx4+HjZR*ko+uYS=b_Rw>w4=pwn&FcuQlB+AYh)-yk)zV*SEyO2}Y3xV(=dUtX zNT0^kM@XYn@D6*pODDc5Esb(K)< ztXJ4O0^!u#4o~ubtBPmZ?baIupl<@<+U-88FJHsKkTov*(kvN4p|DiqdMLOMfx#_c z_rR4e?Rb54%drh5VHrGjQd(f%%hEM><1yW^*L+py!In&u$C0b z2X?Ri>m7O?eSG84<|j%kTy6_*?0(av-eCsRjN(EN0RLjnjr-klEJV_;NhyFU6YsTE z)dOqG(-Y(K0VQ-3?cLW(yLLKaC$v*I^X6tbR+`qX6}YR^-$%zxigyXYV)!cWd{&k7 z{XT03=zVll`|yF>cHj&Ku|`JI2~8cmRc3`8R9sG?C`hsnVKNwf{Wz~*^S#<=`bdhV z-D_mR5oL$42$bz8hmlP=fu-*=L)d3mub(Ezmi;z#bZdhHhDgm z8m)o2D?9&g#jls=!qs4$=03UH=Jm(F(-id=COA0VWUaWEuVBxg3G3?P1wKm;@zV~Z zZ5(%g@-^=v25lGoJ*%#cUKk7|=#7lo#QM^VjHHCqP8&OCw{|Fp1T4R0jqPuGp=LCs zy{*hocU>pq_gnTo-aU)`0gfSnLj+*%SinV)QBqG?bzNt>yp3u(XIxbI1s1wIKl-~w z4y6P3ag>z>S3Iu7A;HdJs{L7_A@b`5qe@6m%)3&Me$v z>vyzofAK5l~F zBkEuO`rW@K>nQanO_4TjK&D@cI&{L;p3H?Sl1SS&v9 z*Gner2}vj(`R%U)2-d9mmfw$*r^|((1Wux~j8-p<2KysYoUsj_{g8KWbmYQI=yY@I zH!>cfHjcRVz7F;^Z}Bz<6-Op?X=}AxPY&3&f4PFNlO{PLGD;o>bbw-}VTpg$gRWs> z{!3zQHS$8TytWoET->9TGORli#P{GW2W-;WU%ePR+eIuq#xeX}K1S~J- z@hv7sc&+Y0=vn_-C{fjI2hFsxQB19C1kwFyaAu6I;eFZI2fmX-N$<`ZJQtoHYcgkXZJ3LdsOfB+$FHlsarNML$FKbi(= zzL|Nwxhg{(#Us=mlPIV@dXruteuXv-$&U>|dat`d4io|I3C`@z z@nHwYqN*X>jU^S^+kWP$NkfyW4lfy1I(gS?2=^PTWoMMZ!yoe_?KCI?3LQJ0X7Q6e z;>CEedI=fXEIHpkDZus$FMJ=22Og&K9sw1Gf19Jt5P(J;YQ0je!q0SMG^w#I^UXfMhbRodz4t&%ST z87mlEaZfm#ZDYYc8xXj9@b`jvrQ(}eOfq%{U!X3TZkma&Xws*84arU znGyYpgO}8h)}aNJrO?Y2;ZJbuE90Lw)Gycfgc&q71o8q$iw)m^+r6iWmc!H!+14@g ztv&UQ);Mg z{O8M~<=6mGYm1&+hY%zyDSsW@%xbl60&+f zoI`p4&;=kSzB`x^b~#2Pz)oK;(HUE=w8inxo%fNv&U~p4vEBr?kkBtLI*q?;s4DTo z&TdVD2}jC42B%c3@%_{!U5HxlQuH>2dITq1g2w;fyFL_e^nI0&-Xo|GUl3-vTi#)k z3oN*cMfi6H1qwyz(9o149miaOf5R8Fa@#jEHrSu_zl0pz_amSSeux_u^$r=Xd|1A+wZ)r^ z^huvwT+9PZJH$H@@vF`lXcU=F6CSiL zh&ajR(WgY-v=t%r;(32+0Oj3+G1G$W zw!8AI1J^;3Dpi7w{v}OuHAdxo%=onE9dIwy#p%j3!A9Uzq;!_YO#Lom6@W?_n^H$^ zggA6Ak}#lxE)M-9N0zudW9gga=@9NCgnyLpF;rSzo<(zi^JSI!bOEXn)g^_EfqC1V z`ITZ#5nLhQDBAj&JdouJ*7;sv5Zx&OPjiqZZSc@d5%yr5G^asf!RWVZZDt}UYD`RT zS|-8fBuI6291Qf!Gwy{bYJ5}b$lnq@{)LMwPr1@qmpMt_?7Thy@rC>u8>3CUiOY@3 z1_fSt<6G{5?owzf+LJE~_`SF$n1CLX1@oZ7tqP>4ecetoB z197~D{lzvuspCl+EU#Hm1nx?cW1IcZzA8deRRE~)6Zb!^C!RS#E9LzOI*0#J3{@9% zbX+*NtRi%N>K*bH_zAAM7V7=sFLrb$ujc>1daxTIC4vSLvuiVdfnDT6!7MAeS32U`;mx{p@WFQ9^cPA!4+>cuii3aZ#r6bY>q<4b!BE8oL2rAN%s`TD_F9AV%uTq2bByxdb8HdtT}%K zxZIqw>u>L~?>*mXdyCuqiPWW66$A-Q@jp6BkJ_QYds?#nU?%m3_1u0xfvb(=HrUis68 zsWc7C+Kn$f&3SP$q^(`h`ObF@VHYFJ2?4y{>*J*d7W8SpsIA3~!+R12_>}9h_%n}% zNU%Ds)yz}h7DQ@IsS0jrI$O{Zq&)d5*yu(=9OxxfOMc% z^L?1ExX!^DlR@P~Kl0Emd4ho6XCBMUpU{GWfagzgdk2k$vddNJy>^jdCK1Y|;5>8YngT^0!Sp zjo)6rW~5Ji<4EcY*TVT+Ht#wj?~Q9BvQhwwqemVXD-Az=sQctjgSB`t*&EA{QH$lL z8;wFH=Ik;J1f`kb+dbMk;0O97$PF324)D%NFWcI^aJCm_#F+=7R1y|fBx>mbrWNfe z3MM7@Xdi5hvZ~r|>`Ya!ehav9+M}G%PKG7GluS>w`l1+gzQKl-Os`>kf9v-M(NEx~ zm*f&_aUJk)gT6@7mmP>)lG)-=_iZ82gUS_n&tU9MZv3_m<<=ZYH z`A6V~8!uod6BIGr!Mvj$76^V#DJ%DKimLw?WwUH8H@ z0c6M0qmjT`-julzW<196cW}?lHy!vKHk>Mu0g7_`_oE?)4|iOQ_(O?bKjlLY?m5nu zZBS8+h%);kmu83Z_+D^*{}(EAe8ogk{<(3|p@vQVP(r(J&*wSM%d%YYJR2zlpRAK+ zRT!#P;PqxKw{r23F_#t_^MXCeHM)fTfsGJ}rYjhm`kT#+$*_&eU)}Cr6VGN7*t)sY z0}L@~yO6(3{gR%ZoqMTW;Y(+HdzN&qXW@gZ*$)mL?1YkAI^<;p`$C)k5cNf=@$n|K zg-PGMNh^6_>0{g+8RnKpQG2m8$z1odbFvag)}Ayn#_+O=c=fx2z}f=~VW_U^s20UU zpJ?wF$G|rgj9;s&-efUKS6w4z#!eByj2$>G@6B_nBZ+q0uA8w9yb~AQz8`;KvV~;t z?9D>|>T6cG)rI#h6Uiqb#``= zN0#rakdi4fXR!ynbFvKA^V9nL0Gv2e6prEe8`JN5)S!rtzrG3WGBGPihrZbM94GKT zn|Z}KqawrA_B3mNE;jV4UQNg6p8-px^w(7y&DLu#(vVKDPeYn+=YJmmgtHnEWnSup z>%}hWgb%5jjCwDse}IGcb5+8bB~Kcu3a@xoB$wa2?ZG^cGt$h=*D6$DK={{__PRWb zAE(I!K>c}&Eh`)o{MeGI(O!45SO@N07{?T&Y1+^tI z*prAfj|vIKCTD(DZ2#$TNmOxlJY6Z5dDm--FBHW1U!OhdBDu$jn&ayz^1GNLIqF>7 znPG~q_uhQM#y5criQdpewaL0>W0=+#&|l)m)-Qz~Dj5w~IbdRadD2~sB*$#>#ncVD#9eivY) zm@dJLEVH@EAbj!0|GB|a*R-R-5Jrj<4cX39sV(np1+pwzP{2`y%lHOFy2e@omQNiQ zqxp{?xBuinzj!EKl5I+!i{>RJerG&K0X)_sw4YIYRrCVa)*1z|QQhA~4iu#?Qh#we zlDlMx*qj)bL;%X_QcrZfI$!k!8Z`hS1J0|9TvLT9Ok9;%pcLL*6d1ajjpttKG?V}R zAGH8r88k~Gbw()VH*qu2?dq}XjCkLn<};{%9^>_?wanj>-6tV_THYGp0I!+o08Jk= zY`u1!;yd}XN+{-DGdmiS!>W~-{IE34-cXVmV{)2wH;_xlw#mv;PMpxkx%QvQ*>fqx zAHfUAbKTf*Z&ec&2fJJ#rVwB#j(e4Bd?Ri&O8g4>Sjd=$x4;n*r91ZQzO?PFX?(R)-FD#{c8 z*!YkAh};i?(oMdYIBp=CB9D8;I6{wqnmzIWg~jrxqJNvF3!GuX_kt3Hroqy z&o%jn;3#UhFy;My9Td}Vnh(-iwmuw)cs3{8lk`H@@^fAVEz#ej;Pt*7S&ut|je3Pj z#ZVWL50-~8c>6H@42bx~iepp(Vhq00+M;4o=sZ72|LwV*e~G?*?r^Q}tDESY8AxlM zl>U&H7yMw6HTpKLu=~S<;4#<|7B((}ngO8iTF&WwitX2zED!I*KYCPL4~F{7_~=C! zLY~zB#7LnImgUId^Mx)_%+8JeT!5`53sjr(zQ6H3JUR|M?EAU+uS=pbW%=p+#UFY{ zb>cMpMFAwCr}aw1D<`>`LHlhqO9ANhctgF1Zd+`X8Rz-ZM1$QOpb4@+is zyDTorm5jIJ+3U^-=h0v0IG2(Yv4Y$c=d+Z4m^#2Dx-NVkS>@1aoM*iY=EQQ(q#nPj zj18u)J<-VlFO|zbUY@`$y!VOjVD||0dnf-W4pfNnzZ2%W*0&svDf~(kyV?5o#pVaw zy=;$b){^%v|T8+wXkJs3NLDLk^$d`}aWG+%F z3IN_}yE@WtEKTIBT@6iNw|B~ukHMxgt2G@so_~6?OPE@9s{OduM$8!hut+NB}(t44QtD&Ve`Tie*{J`r{u5?>py|)d=Uf7)uK_?)b_uN&hxX0DL*_U&xOYc zzY~9SLGtWgLHD~T*&)^0(&vUvxQJ0BoI>)t1c0=`08-}d*&4mc73Q7s1|K+?cjG~h zwNIoE&jtWPQ|?idt}Po%A5?MWX(;!}ZNCY62LeSmH;I37S=t6_Ie|YX(H8|>0LlRa zexE{<4(!DJUzzxQaM>>T_|*K{eo&jEdV4%~OEyL^4Dg&PThIb=*)q^mu7%~Gtymg^ z56$uY(_FoC`@8>*&SqgU(xO|S{wk^E7?3VU8=%lBRG^Zi%T4z^^Q)57Z*MD zX|&BF=OO>$B1iVK#IMBc&2y0)O-cIuFMG9ipuh9J^SVtta|*&X4H#4Hb>qi_mu^hEaZ1WDER$TaXaO0M&ZW@}7aisI$ZJ zCl61c#CBEX{>P<)KzNK~l|&-9D>p|L2MNh5&55r zo@j9$!`R;cwv(p2=WiePzjQa^21kaRET2gLxM=o28ajI~i!gX|b=UM{E1t8HgeH+N zlQu>cHSYZtn)LnjO}&61XLmiqrDypwYV(Veba)6PTQ(+%H)B3GPO_^n*@;Fx=1`)p z5B}y&v^*E49>3Hvp)gXvuapVrX<&Ell6$An-{9&mF0FK{m(xE-gqCDJ#V+K;29=?Y*jl zmxP<*thLk*Gu|e30RgLLld!pVjTD2x!`7}{pXBqOEF#ow!czU_8vC=K#AgYttmyGc z2;^ix#*mZY-aGG8zE`k#87CDe95+2`uW0h{$l$TS=>BJL*7ZTB9q`f@2+YFgZ1qv` zJv1s^Hn>%K>Y%^Mg2Ex`J6zpzS-r9)(~XBrftrj zashJFu|2#Da<#|yOf@lMI4a8hJ)K!(FoUUGV9yOXY$h<;_iUZry(||KwosQL#KQX6 zdry~Hgu&cl7>BlX(^{03G3ZNT65p!h#D{CLUe@ho5`II=?oa87M{Us%K>VV+ienj5 zR~?I+{tR}hz2#L-)FH+cG>%qFtc_7xJQAq)=zXo?izDZ#a+-}wze%|zY)!hS3+Bk= zZmr)|wW7}-VfjRO8r|_c{QzMzj%MCAmC2DP)Uh!gdN3ggM{J8B9i7A)y$5(Y&sCdK zq~i<02<@sA?!ozUj>Avk{zVSZyoG9Jw!^&`uovu)3TP#AWSHH1(WprO)hBLW;4!b^ z{r6wwdc95>k5bx0n(rU^>sFpIYBwE8x5lD0w*wgG#vIOceS+e|VW_0K3v_CUe+)uw zNZ52(8sXYDBh=92@t(FKdl~oJMLI8>HrS)x6beT`cCoOqXfTJWGPCad*0i}rftA-N zr(I>yXT2|lh$eNUs0++Xg(ej#e}2+VBNlYg2W@cAj+tp7YKz81=7 zeTWP!{g4s;TXST4TpJ8Rbwi4<^IxMHZAriLnfRev0?N90>IFhcAp1BrzKtVZb{v#c zSDW~!9^%H{%Lm#n%Qi#x#?66kvzy}&Y_l$|k)hGLTxq*v$kQK1(y!)=<&}a3)g8=} zO#ne|89Q&=bB8%xk{{7>a`St^no46ebQmxMh6#ILm}ajbOO)8?5Y{yM$Nb9&hh*!m ztD)Uy`cHH0NV#_fNm>={IX;=B0t-*fR@+2E!U7(nj!wZRrB~;2-i-(P<{`O<+<&+? z_fpo+jSh#PLp)mJ>eVi*=$1Mcux`(9Pl1t7TaWn+CK?|>e}aE+z&%sn54v9Aid2|E zg^=%Q=f7T@5mMVa9R@G@n%xPatSv=}B9xaY)&F?6bi(z*h_>Ptz5|`#XuLr1*XZ;S z7T=~(SoX;69&5U98>Rg>jIk@Pk2P=^~!tBoN4-_?U*m2?A**uJQ(?zDGq@US2quEPG%;xqNC zc=y|ZX?2cv5BYwaIZ^pY7xjwo?%PFrn+yBN%ly_W;?>;E%lEg^d9Pz+i%KDhVAoXT z8XUjiA^@rztnSUeyq&^PzAv{Iu%DKjY34Xcb#D?M$B!5D_)oP&ni-VNtfzgAan)go zLc}l^v0@HiK?DloghCIA7}I0;OlGb_xNNpL%QuKtd4H63?VE1z+;({cNqgU{&1HsJ z(&8o`{>sV2oxhJ)5rg{Zt&Lo{ZwzkyM*&*79J=w-%i#``k;j?!_D~BjCOVO09_vf6 zuXUCT%h`%jB8X4u01t~q#Q?V4<_QLBo1;3RuvkD`OLdLp)#jFlx!ewYN-~>J^UI1^ z+4)*D$BY|1Rh3^oJyOkOrdoRDJ9xV}%&#i`gHCF)yQ5v^QmCX#PfiX+qKzZr&i;BP zSG<-Z{>f{CBw~(m{)}+nPP1axN^PwkRd1hzgt|KB7kgSqyJ)ql3D(PKQpaqB&GyO% zEjiCFm&eh&giaYW&yXve9k!Db*jQNnmdEW(<0Cu`1d{t550T~?q0u(L=L=V=Tu+0G zm7s0UFzY#GLL>`nFVkVgQ!Ijz)oqZ>@W8W-|9=g?XAxsmzDxV z%1BxeXcU*Pyc!lMbbyOhpm!Ma?Nk#Lb!)KpEyVM6%x(73J(N)KLB>NGo2RPt(eO4s zQFUH0DST%~?eJ%}L`dlb-w`5-s^ zN659!1>y1N@o=Zl)mTlv5-x24Z|@x1wU=t}wMf71devph=~7k6vS)T3@2$t=kgFLg zc{oTKzGGcHOUBQC^9nP6MLL{0x2*Td_?v~xtNQEWT$=s2;M5>7>yTsS1QAj!tIx1g zHfUz;>nMtn3%k$YhK`x3oSz(Vu!};mhsHi~C!DJplIp=myxU-VeV@SgEuWDi55nOm z=R^Fgy}~v(>a;~1z2Adyxn~{}q}M^OGD7__B;tdi_idBgUJJfGST|e0wJ9uLQmYU1 z6MS8#QrVq}46v9MpzRnrGmqy0{z^a1WH_>JkgEBQC_N-Ei9CC&g6a-mGinvwsZ18H z8kTI=#4E+N_|UrQX>4Rhyq$qkUzJ7&{0THNV|c&)G$1fzn+aWVTGzz^zZl*-NE#8g zxe6?l2API>eukuuayJLO2=EGA!K2ESct6*tVbv~A_?4JJd|Vi(r%jfijP|OU_4LW( zQKJ}6UyE~)R1vPPSUcF@;`(c8s+XMN)SZa0v)qw!k?p!_#IQk55MiC=&*#(Wh}E4o z83<8dH9t)qeg#Hn1VR_KK`52khAIg&Xx2-$;Khj3UFwnvGxpx|k<|s(%@obZMJN2R z`%%fjla{&%Xb^PR4Iy8zNjh`CIo-#N?+S>^`;_H7_07^MMN9jP?-=C8Q|y0&NFs(a zM?*^@FBoW(wZ^r&h4UDzzoBcHQwo*fGVv#8%~M|;TD1t!I$Q%NX$Cs}SV>%=;G?Fh z(gpZ5iM-5HOFW8l@n#tJ8tJ7$CbU?{j(=YSl!*D{IiNeb*=6rsTesV@cQFZnHJV3z zt6#0&$Li*XoOW`dgTV%J7avxk62%?mc8Q!9vykN^%zG{(C>RTI`&s@8nP8}_2o{#x zo3%#UYqt54oWP>!Z`ouoOP*l_5X<6&=c`rBPdDGTU`T44$XdS3gz&XX*RI!{eqmuf zc>azQ3+qYJ%vzp=|8H$DL-7xsyX$V`g)$i6XBF@RFw-*r*=qz6d3PD>iGt$YV6&A? zmzggA?(BY#SBBxyzZRQ!j#&y#qRQ{<;fcR&_*gG{Tr;NiicRk9l$WU<4%WwKMjo!M zMX7O~ZM0Z!3j(ay$Pfs)>ecEa%xKS;-vv`I-L9Nzh+$*JKb^ryI1&nj%^WN@&w9dA zTvnke=es=)Ss@pJ!y_XGF6LPt9;aJA?KUl@f+Wmmq_?1ESSYhpVt^os7fY5#M_&=n zpaML%1Lm5nu0mVqcpzZHV*i_T84NNB^*B3C&dkiO*#AHqDImFfZ=JVh`#1GZ%%Y-c z@yd?0f4)_U8=H`txWs1}?4l5xzo4BF4##!^fizKF(#Tz=a}auBIfOfPnJ2YeMpnuc z`wLIsD@BrVYT1qcX_Vy>8u1qx7aZ$%%@&)<%-vtngb!n?dym$^i4?Xic71h3oUOdNpJjnng>lZSp23hl`zEif*jg=dLgZKasS)t z6NMbQ|NgpO!d*;{wc@M~L<)>$ipg9ZWp|#FIl4NLq5{u6C)5&o&Ftr4)wf=QXV}bR zLck6qh2N}N)gZ)=O!1I&x0P#E)sgdqBb0+Kn6MuQLDPky>@V|XM6jJwyE$qorJ*to zNn~XN4^uFPAGgU(aN*WoCWx6MTE&-^!+@?XH16@7BqT%h6SZF zMT9{1D%6eDO@9)Q=GOgcthg&bi7nRQvKl-qmVFc3b+t`(vlrgUF+muuD^J9TWu=E1 zv5cDg{<7H4oMg^;tPi0HezdgbF3;o;<$$p78qT=L$Cn_Cr6yAaV)gD_P4&K~C5AH{ z>S(!t#VkTs+qj5hhSTfxN=s#Wh*C*}EnY4Y8ie(6YIF9hRfeE*z#k`_B0VVPj|YwS zXoB~_3Yag?e0QMYeU6QuVH(Xb-g(juzS#a&;02Dudo>81P-1) z1b{d=Sk^D5x@zd-zg_^^(VtV6zjBj_RPSK(1RsyQAHi0v_ZK1C+xlvS;q+V~@mPkz znQRSUc{ePa2}r(w8J?-MKh4x_FFJcRaz|~95NuqMV?EuxTa<8fKq%(IgL1MA<;qFj zU0lT|J+kVVo!u-llo1j>5Ox&2IV3ZCH`^3yz+^jUk=CcjdKp8UfX&8ir@3BO*rEqU zip2dlN}4*Z!o(#c2u#ri3zB)hzb2I3g!sTptU zFyb^Fakk6CLG#hx<;FCV;Q&LYj~FtmXuDwJR1smMDu7ZD4tYMmqY zI{9_|X&$>^V>;r+SfzQ+PSJ#jjd7ty)=N4O^*rRlcv>Ka420l7WO8;Sem+cQg<6!1 zKLaE7ET!l_!MA(wD+Bz@j%i%V(e?nhHr)y4ZhN8cXT+e-SXjLgvLfqPfx-cZ+WmK| zg*NW>`8t_oG(7v-q8InzJqz-@DX*D&4)>LLHl5)MOvEWty+9|07@v#{owQJr{9?yZ;!nQMqQ|=Qr~3CJAzsy zx!+~Rp55bLB7xujI(mljUr*nWlGOY4*dp?V9z1-M`aLqH52GsG_Li4+?Qi5t3_~09 zHZ}?tw6u*M2XW?hR*IA{S`|=|WCs#NhX%~c;aY3X%wLqvzR{Cj)sIi zJ@rlOjQf-&|N8Q)?l@-E!n6Nfbtv6jH$O(rX39PAo(4m+;fymC39oz^$itG@EZ*Bhw@dp|UT*~WMXeu`D^gqEC0 z6da#2iXy~xo@3;Sn|Am*0xXa9@vp3+2!HfGmWlPnGJQ4DbWA-P1~&*P!*~^@E9}K5 z6*E8X=yP75ijo7P4zmdek85E@%ZqMe5=-H6-pgXH``^ zRG)9ghqfjTe_=UlbhDlcKXmo!4?4maE@RAJy%(iD7~&d!hhG2IU|GM@>Y4x3#R$ke z#>QfnSJ>{nfo3TEBA}(yC~`0c-iBNwgHJEvkUwN0)ImTL0L*vi4M%u-w-evf2$J+B zG~skB>tRf&EAUd&Di$t~;U3%V=6-Y6{aKsD5tNZDWzK%8qIjpQ+N#S7) z3ggUSVfDRV806*UWuRj9ew&_HL0I_K^Nln=KGryqHKP*=0}~<+K7W#JB_sI00m+DQ z+UDO;7&rKdejiit3F-p4G{cpfxsDB+`>a+m=!YKzmao-8x52@u2&7}q9ZXRUohg)| zc}s!yQHxjjDK?gD2}OD`9u^ik?j7`@vAHMy&l~n*Fgzv_!BPAP!o`Xw*I>LGCI7C2 z{K*cql~0XNqnWF)p|7xE;P(-|6LAm;|wN7!BQro&6pc;>Jhhz#U}0IM(LSt5dDNmw8-O|L(hLKYPVaDmg>Fq439{C)S2a!O z2A8Y{3m@ANs|9wRjazXRhM}*uj5B2bDCr{xHqfNs!??hBL+=lqy(((@3 z+}I4idz#A2Vi5Zj4{OD26h)twXiZpRR&`wW4uk2jy6-7sT>eKb=6I@Ik0I6}VbXNP zb$3^aECMXNPqAj}9z*=5eI=Otz9{{>@2O#uapJR7lGHF1xXB^CS@q! z&0+E19HIbWk53qU04*{;hAoBiYz_n!6;pNmLY7c zUo?NwcAbjxn14sR-60p2m z$za1vDE>uor>|Gz_1iyANt}mC5?sraHN>zs{>Ap3266;`}_mo{ExNr|0i(!e>eUA8*o|o z(*T?{P5_Bt zL!&NW|4Hfzd<$XL11EQrYb(e{Pm3iGLByM;W&Q;TG*1d;`aec=g$Z;@M>|9IHP6)x zblMP}V(#>Uw zfERAAe`{6yGA>u8f?eq5n`S@wnRBVd?KLuiSgVm6i7^4D%kci(_s+v<@t{2iw_1k5I~Jk1N|mr_$M|Bj?%MywD=ZWGw@*x-&`C@oZRi_eNh~ka(=U(Pkht zm(TC3=dy5{p5tOsabwG9=HzT}C1{SXscRKzs;s+?pnZ4d;=K5m^nCNhfxmk@U832< zJ6*{#Dm=ME~Y*y^=<(Yw{e2S?zA1m?hJUA`A0j&PGdzLa)i5 z7txmWWe-WT)e;kmY4zr&|5}5NUK}7#h?nSZeKQ$>E{&>IcrH?B!z?P!JiWA&qeQts^o*p?NZ#n1oy3NwRik%rO3p#pLB;T9On zg=s@A5;$`wZ=~}WjijG#2p~`%_w)(MFFMHef92cuo*9?EG+NFbF~05)ttK(cZtSr5 z*(j7}I!LaLngTma7p68GO(A=L6W4PDX8vBE3v4nB&}PZyX3aAVUG0iF=mva5=qg_m zC8GcH|EL8hcP=%P?&H*%e5jxJqRmUrFDLj|o2YO*Igwy6Aa>c8(8W%ER@C7hLZysT z_(0R3tYwrZfB*g5t+swmn@{*-=U_vHP1EVbiHgQ-?Di0-22TjRgyWSkNTRr*u;(X3EE=t!WlM7eezntQP1 z!LI+YU7M?`*_i5C57R`(5zNVn6H~0{m;QpAcj`dwf)LPJhloBz#!-qGC5AMZ`@2e( z2N$E>l6Ad&MhYA0ppQ9%UL|vsh1gg1ORT2RaOz7JH8Jqnt9d^CaA z(xf$4gEaI=f+nb5&HtZ51_8J%@ymb2K}>gFk7a|je(Vkq+4C)yjB$;4eHb7Py{zz- zu74qkWmM~t->@4|qx}$bzUwIBYhyy&aVGlNWvtB1`I5T_Uyz{)s7te%)3(g*ry8`q z^nwW$mq1%^=raE|ytptOFq>DZA@(9NF9P#)r;D?{d*FKeYRTAHp=~=8_uXhrGf|YG z|M>E{H~mFrMak^&Zq~wZ8uo$gdW&;&)9uUSwZs@qIz*9!`=e=TGJSy*Ul+f{JO7&C zVq5t)=|3?Hd}R$*8>-5N7`n$kzJ&{JQ@@?;qeiK=YN{%Ht909cT6PMV`nt*)x<${uOAgAAE=d=t zmkhXJ3U$ybpC$??kbccS`}3nGWZJDrMf-Csa%mjPd3wl`L0ci&k)?Elf~WFcFhKjvMEs9w z#WkSpTdh}lrYM=W~;s{>(yYEBhkSK66c%V&A2xyao3{U1((VnPAE2N@V zEmxbTc_A~o7YFD(r#lRZY05)1q`J!w_F@<);iHieH%l2-TG;EM;lK2Epyv3F?Jj=i zXER!0;mCChD~h-cvXq027NoeAQ!*;;y4;x)c{Sm^0r%nwWFZQYp%6(@>dJ+eM=~ty zp*mwS08pZ?lyTJNpAhZ#JKKMspp{imceYw>Sh-z+3a^qh5NQ0Q!njuL+J1C4un=+d=|RoC zf9mm2L{Sa+$v#949Z(^!aK=RJue&(XyT9cZ4X zn-N(5?Jc|BCP*f6r=of50R}$r;HlJ}dOH@QC(2@^av(u?-v3R1=x46$#8piwC4%k} zx&=Do!xcP<08Jz56)oZafx(JRwM-=`Tfqo*1{nAJEh&AtNC3UGWZrmQ#Er4N*=&^3 z`RFBMZ5T~1Fm)?kOh>_SI$b`IfrNzA&u<=M11U+m46zSY{W)2j+-l?Ls;JIH@|7K> zle&~<3o-r+r0)4Rd#Y54SuNzlYc+b2aXPUIQi@iWN8PBdkVpz`!(dDb&i@(vu7GOh$kahX_-R>aQnD zb`0M@jN;pHMW3d-tGyO6SS*IQjunLpKsvNZv> z&HCkD?67}aUgs6=R|EdZXt-QZ61M7nT^Zz(f4<=(@=q5!iUzWYE4P<(tpXpEbiAHs zDOD$KM72gBkMIdEF?NXQNFU-^9)5I(HWy;0ir~14Y`3a zapV+izq+=wx|A=jLLtVj(NVf^o;F_{Wd0+ZQt7+Q%LX%(DrpRweDk(msVpIpYe=8~ z$)ZQ?eI1BqznthQB+9-u9S9RCt;BxZxM{)}vb!se8vgyPl9lqX~+iJ%9D;+R>GW$%cFJ=uiF4 z#Q7MZDrE>s4$N1g!Fw0NVobzV(2jnwELOOONDySA&(-Vv&thZIDBMLLm~iJ5*=yj^vAoUHOcux;le(0Kxjee}T9>qE=J|2BG|owMq$9toZ*XP73F+G%T>>{uxQpKReZ8^6ut;#I5W9@1nhb!Ri$v zAUP@N=q?^bb*-gUpDg<^sR|Hc#tcFUrWdO8HIrp9(GwF=pnvfZIil zX3TU*lBVm3ZXAyo(mR7S#B2;{j9idKEGEvC3z;tW6+fb0}7a47zFasN*?WbUYl;rEA;afagO6H>!tNjJuP z<@MV|ZAY=S8vi;X`WIIVGCS23Rhkwg61573@r}>00OJDa$Y8e#Tu}EK|GOJMCWPN@ z`Y3~LjWQaWjIUoQo(EQ$ZjV>aR3vUX1{_rc^@9H;p}sH!bf_n^{e8lcE}NkBo78ju zT=_9=T;zA#M-KW`QPl)tv$k<2DDW}PXiIwRi>qK&jE}yRDx-m4 zsY>%=&x628tc@TWqry+!Q5W>kwjg!0v4vR**SuI>xN4%u7B5XxQ6XU5dMxltpwgJ% zKfWFPDx+rI$ry2rn-MSc*7;5s`MF(u8cGec^-s8Y%!T#v{WY4|-6JBd|MKC5%^j># zEY2JbWxVT@{Z0FUnD!qntC$e)FkLz+g;P(N|ptCWbQmFvUBL_&%F5^;u`Q6 zBMu)Mpq=izgs$9^)3k-57LAH3w(v*l##i{X>Yyn*>NW%*Hr2?CUuTnzL2qDgv?20N z1Z97%(22p+j8W?!)CUEAt+`Wa%q3PMLmgdy&WCm~LBkH`5~;|_9D}N&kBPR^FR7$L z05NnjYx(ka%L*Lzke^@CcC77P0h>S6sl>l~P6W ztmZZ`8Z&NiQSn(shoZ+(B?OrLi`Zj}!!;<~t5Jk`?5_c4%a5k+7j0uklV4(;$I4&1 zMZ7J(;I|@b$Wvc)t&w(k+mh6k4 zBPWrOPBpt9ZLF7X)J-}}Z6X#0Y==x)9qvqkg?<0n%xqiW_skEU#G}=!@&bk3uO+=f z!LKtRj>~2_HIAA3&4rgZ{(gSKo{sBfLpu4!n(}nvXH&Ge`WDPnkQ-bc zee(C2qK`il(&yp4pMy2jHfhjja}&eZe8`{E*b_DQAJqTG#bb4B5I4_xmEe5QRSozM zD05+FOSm~s_E=f%TqtRaLr1GlOh=Lo^3_lb_#9JCnfodNLS`LH!kSTQQMz-UIny)4 z!Im>kmiN=daH65!2w+HupskM*%bGrYEK1-dtJN*7+? z3~>*oT?+lW%8co&8w{Q=ujH&QZ#)6*|H!4*Bnzn0I2Wp)NF8DbCwLjD)Zlw|FG>N&6gk<4F#;0>PQdiv}@F!b?9XB8Idk^I+r)O(y#V_$`t-$ zo2WRhH0lv{XuqFJT({F}6qV$EEWH}FjskR5yx^97uEK)=OjRiY)+66p>_EMz7BdEX z9RoWJI4h=4Z9<7~<-XK>kUc`&{H{{G-qKoK%AhgX);dV?KE3KVz0n5m{E;lHY{KzX z4-Y!R$Y^2#(Qi)O;-y3)kE%-T+yx1@d$j>($E68VE1HCJ-U=Xzo6;(;R}H8F5Qqh# zM7N_BYXGk{9%!DD6qS1st0cnsTZ(axC3r>kAV{xkpJUEH=(PW3H*3e3yWxORHt$b{ ztw2qT2!x4wEKxGb+OAvq$w;If%!Rg#D)Xp>tah#OfE&Nabfyz;6|GisL5Vu8?6*oR z`s-Tc97~m?oYOfF&;D&SILs6;j}?1g>)r=e#q13`GiOY|k~JeT>TjPVV-is;e|pM_ zkVoY`TvQsFQe{grZH9~fU9l|pzn>(}mP|8W z(~&9Iu!8rFRXDXv?bac5WS`geh$IWwV?xAp3oCVc_B~bfW~36UwLUY47Y~p@zE=Z* z+}R>}5vOI(1Pyl@FHHP7^KoA37v&ldnoAX2d~bdg3uVpFp$SC2S)fFv8&$A95cjg` zwprSLs*&$=;7C_PTJBUi;lGeZx^d-QT&yHzLk!=V0hUDANI@YgI}^@@%-@q%F4ykr7f+ z0T0q%(J+c4ImEc3X(o&l zmcOrSe);iKMj~g&>7uYi&E^|SHwdmHV&=vPcZ`O-EC^=cYG^7`by{e8alTiGY_Wg$ zT*SJQ(Cg{^uRO=07uxxgZGTdmhcXU347?lljCGNyKjY$F(Ny2}-acQQY@57L6tV27f!h=RtsVp zqjW@BYogPR@Kf?bhb#Mlw}C;mdPntRT%~Q=j4Eq};Oxr=-m5a<;ucfwaExx1-O!A1 z@$n>v(RyE?sJVLA$|rblgp11zH@CGQv#*DI1#GcuPB7EVlC@ZLG3Fm}EvDPnaxPnb zq5~B5*2Ut~{*|5H3|u9WcDG1AJ%-FyUC!kh(r$+~Nz)E?FsR1dP#l##09|W}@4Im& zhFG!;p#-+Bf2GuF&^s04F8ipy-`y}A5R6C_`YJa65huOz8M-Q}e!pg+eBQxI@4Sr% zcg{kiU=1WTHo#o!j^O}sfBH0wTp|h#Sh5L z=h>$wDt?>${+wVQ&KWrFzTghzygg}*ziX^!A1uHV ztIIoB%pZHdWOi*T3X+?4C4(qtC`GW{Rh|jv$R>4lm{JyR52u~z(H?c>pDh&Bu>$74 zFX9W@@-1`{UO>(~^LY$ctGa@Ec()+jHhC%AXfPxEp7EI!MSUTcP5k<$LUHopCi;yY{Y+^sGgWXBMCjwTd$-^5}=V+kNe@h@RzQ+Z{thZagEI->4D`^<7wr9vx4(t5~Elw*!% z$7}(c<6EvT6+U>rC9>0DL!{$Fv8m@Vlki3!4YY+)j~1~N{9{}Vw3yetHeUsPGCJti1O*X!7}%=(f5Or2jC zAgR4FqsZSKIL}r3;_s%u$8Px~8%H8C^I`2+ElYxW=DwY1SIaw$KUlJp59#~e)|0U( zu)P4K_@r15R&F4PAX`g4}OZn+&beT;>p9wg`$zq;8{pM zNN*qp*5+BP6zm(|wY#$mZCRtO7yd$3q2WqPE{NIIm%X`mg)R*sY#h^HOt8nlf5eW? z>JGF`bvXoAd*-*CD*+I+bD-;1jkkb;CBog(h6A0>=4Lr5D!}w9d<55MHaSE3vh6PD zSOESge#NElDCh7)Bj`3EHrv%8BRf&Y{$l25BW(8Zrhqw@>=Wkvfe>qd=!fKT$qsHM z$xx*n1QSCnIiJ&f6%lQM!;;5EUXY$%hUiFsz>(S66Ugy#fF8)n?vGkbdy{corU8%E zTnHglO;PF>qdP8Zl!0^Rv}{DatJhUQ8QomK4en#TnacH@Zaqx`fKL#q_=;hEqn3}i{Fq` z+{S#H`0#gXCdIl`T~fFyRmzr&Cq|7KyR*iP8T7cCWrkvr^*YohDlbC}BdPz`vQfCB3;9m|Ew$qA% z`ih*}(Jw9g2HCw{c3g;!St+h~np6zxQ{)zao<*kY5RJqWlSuB+*5IiXFLm%FYMzo9 z4tE#(2$5TB`K5o$kyVK-@gb=h`%5rb^xqI8AO$)rUC+NDv89uv==}5@uY#mB(+W8( zGP60P{6XqtmD4f~$H4uiTHGV1e6{v*2C0(qColj{G1&{>{jOjhp6zPO`$*Jt>3!YH z(oef*qJ4*{^6o*!KFQLBjRLAKZ5kAhPvph*IyF4Yn6$4?F6Xq(9Fh;km$Pd#2b&&X z^!Fr@;b|P_`>DK(H?bxQh4h7Ae^!rnpD6vc;r%~axAJc`v@Pu3RJ0mHtEy&NiqL2i zYA98+L{TB;>D?HkQQVqqYF^Q6o@=g_5{aQrLQz9$snRN%Xw2oJjp0g=t0L};ci($| z!82gT(=}tv}Mpgn$LKEc&e-$OPT;zxuS_D^|%bJQGjAHcOC3x+Mr9-2uMUVfiq!M}2 z_7(*v8G0P;9XbGd2fF;&rD41F!Kxw^r2EqOnO6OfyGnK)5|sxwB?*aX`SeCUHdY1L zsqR5iQqe%+oMThcupBXc(Gq8!^T1`nU{Xb6!eTtNDowmz&=(LnFgGuD5~+@#`fRLr z&mW+vIrjlb5RSEfw<=@UJLN)aB&ZlsQFUdxL`RNg2M2}3kn0ip6!re(@2YH}B7Et0 zW}rVs`;iY6Ychn-+zI3#Ti(#JD<`jNhWilvhP*BNTGPqizEcrD5RnE_yOtPDjy7Z6( z9<2RF1VpFnMi!yY3z0Mre(_zjk}AW2S8T`fw7n-P99Ksn_Duz?ZYx}%D*uJuV%)?1 z1P;mlDa<1EvbU5=$w;`8JB1ng6hm{uuMC|hbjO{hxNjt34=no|ADa=Om%ifCT-W&? z0_(M>qUQ)5KLL};+5Cbt(P=u5rXDNbN6xL}1l83c%k%PC)4uZ6v4ff7^H*nG4xL`kOA*=qDlxo>E)BARr8s3WD z)pm7k<%9&=HKvuI{JNg)d=Px+WnuL;>io1!Ic>8JPJ3p{fTjDj%%hoKs$4VXgYa@N z%WUWeVwseu*^V5Xk zfKFnvZib9sv3N$`>ob-oc{tcmG~&|qiymVyam>f5oS!62A^XG|IjDRjs~)1Onq^6` zb4#vGNKR%563AD5x5|(Bq9xLEAn2sWo)GU}$CbXy`?&;7H4zWlfxhyW5=LIrILp*UK^L3F4qL? zbJ{4f)rmwbqHkCDhtk@!hZu4!_CxPP+`Kc+8LXjk6C5oq)gr6m+Ik4lUDH zC>hmYJwj0;9TcR)@382E#G@m!i88yUy)u7dZnJneuSAz zN&HYT8vLH3*DL7c%^HyOxzdAhD1z9=B$@xOnP62KLVJ*enS2iQ?%Ve&UCimOydpf2 z;uSDDvynaO=Z1@%bhZF3(s*Qy6fvFgNxwT+!ch@mPv3Rv+I0sstKI8ZqrLSGoOQax zb&~Ct3;SB`Q)IUk)66hPmYVLj2P>nSzE31_A0$ZVT=KntmiXg0f8J=W=d~v~*Y`9w z$44r&3fx)r?uv0%M5)+*g{2=92t1=f#zeVkcJb(^U@9YE&7^xiEtzj4DYg0OUssmQ zR;;gOW2%VxDqvloLjSGLO%7CMMc8WAV!XG|9GDuzATwRzELWVC@a1%BRQl=B3=)Z> zBt9TnKo9o0pO|8&K&(q#3e6jx(2C=qv>=Ux8{J?w z{J3mrQNoFYL?`ZnNd(YZM0wok7a0k$4d);yN@T@Ky?tk^x$oh1UT@OiRL@>l2gp_R z(Q&=(s!nU5TDxC>TGYk;V<=#jCHtI2Sg=~EOz{yjwtKH|C-<(-Z#sS zv-g#!T%_kJ6?Z2W?(}Fuesz5LBqgdzcQ);mZ_WtgU!^`wjQ@rKUO zw|GJh*L(7hck4F&IU}u{BD{Z4dre5h`eEir5$OIw?{J{~usUag?MTR7rX`l=G`7+l zr3!Vgm0@n2@SE&~*ZPS;=bV+)2rV~%(4PaSU7n4Mk6Vw*(0NBhabyGJ&2b3G(NZf@ z=v<2&Y=Jx?Ge7hG62!^2VKj(y2TyqF9&}(1wQ$v$IioJ>(#6Bt>Ck%@E^l3{Q~kBp zEvZ`dQrY7nyNco-oeE|CbnSq*CbRkK5gvPuw#uA0?`rh+`^dk*vHII=drvF$u!k$e zGsdsuaE)bA65kc%5sqja+iU0X;@hnqA2-J7&o&E+td0y^-k3 zcUXCdM^{tjkXV6qiLDP0`*6XE@Dx24O#&k`jiL9 zYB&O9L`Z0V4L{>m+#muQp`aMg_#XJ-hEV)JgY7%*N*y=_nC8@DH5*6~xNyiLgJ6Z< zjo0J=Xh$Yl^V`XZ@{qSy;<>JdZxkqIM^+&aYFm5O4cTOH!7}F8)gV>H0Mc^l)C8^N z>qPiBp{|5yNNR-l=L7r$MO@O}a%c2Sd3jx;^~UcRug7CHoeAYafbic4^(o^@@t?zazl4YAL~965Tb#EF}o+TP}#nH{0p zyS!Asi}3Mnf+f|siulke6C2li*)NbXTBdm;WyMt1>r)iaMw`u}uVC&ea4-wtc3Akf z!?HMHuPZ8IQ7}TrBAvJM6JLMkl62B@Fs#0K)(P literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-graph.snag b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-graph.snag new file mode 100644 index 0000000000000000000000000000000000000000..3c8a9d53d3f2d002c91dd0c4903137756d499f82 GIT binary patch literal 221208 zcmeFa1zeX)w=a&8(ny1ps7QC0(kLa}-Swk8q(d5{OF=rN8$s#rM!LKEK0n31_j}&= zoOkd0-=BN`=UisHd}iiZ&%}4u%$iwie(p|L8Gadwm%`;0}R11nv;HL*Nd9I|S|!xI^F{5s-!e0sq+mXK_IYbKq$O;Ru|f|9rrL zfd0+r556DpUxidmh_F@4k$aE;(_63s0SKZ%t-26;5Dq_+fBA1ji2L`zJp$iF06+h1 z0amw+LO_qTAk2UkfUOCCJs<61K4KruL51~eki!#zxw}29#NofEeHdkei;CL z(2v%DQ-3z#{h@xS|Ky|J>i>T5qaA-_`@Mb*z?MP-VF8SX!5069^&h{TP36-M{Xt{KxM!1%CFs z2=?%w`u|_m|7Q@Pxa~jKM)qg>50=$m(k27++Y}%jpvQl`_h6gay?bE09N2CL2hhI? z|5gA0^ZNfx@4+^@pYsoFAN;fZ2hV@7-47i8D1Qw9d-C_&{QI-@gXQGypO8Ndz_R%7 zW&|+)f4P3J{Qvv$|1-7!!2d7T50;f*_zM6tP6xvF#|j8u|Nm-u2#i12CJY|azk>fN z_#+_vKK?(`fAw!*{r}7T2hS6oFW_1D_XKdie}%uN#J^U`ue!m{zxL(d!+lr(?+E-o zi2k)wey{y*{Qnwqe-HN^{=Xye_aOS$O8LF^JNf@>$o)OscliH~z~6)DUn}MJ+W)%z zgU{^0eE)xZg3q$xebRq7|35R(W)^^00b&D)9Uu;XI051Uh#R20I|6@{n7jBL0(S`9 zA#jJl9Rha<+#zs>z#Rg22;3oXhrs^}2ypQ_n3)pW=~-DDfy}wd=xON4i1o~MK)Oce z2Ha$}Hu}_TWW>BYNbpGTT%zW>dJaI8OUO#gOi#?n+UB_FAP4?pjPy#LZ1?@ku z(f;}xIDr2l5Cd_r4FXK40R0MCKqT;20(kz%^dDaRjQ(4OfBND_1~KsW|IPaU3jP8h z9a}R!a~ooQEpt09YkrU^$cmecnx2eU2BdFeuVtkt|JyjS(J;_3(=gLBgWuZdS;&Gw zrZRe#w!qlxNdTo-8R>A7G5+&AISUItD;+IsJuy8S8$F=-fAPH-$o`*rCmEpxCG{w(9Se5M4SN zx*q`yi5191?-xHAv5=9e=`GAZ-T(!%uraf+0-T0g7T{0Gh^4i3jcl!fmV-y*X98$9 zI3W)-2RuwRRg!wU+5AN7XB?;!=;_bN2ZrGv;9z3|$^*l}$O1%ub&mmv{{{yu z(5L?mIOthenOWJuSpIE*{OrVULrG5$mJo2`>Hjd640Hf6zZ%cL%>Mtc#)D_w4>@E9 zHxt};238<)3p~po#E|Jyw{pbD#>_;=3cw=-GPn6%wq$G^!Gh0kWTj)OCj~Mxx6#x6FC|pg3Yeh!AS*NC zpS6k`Sy_RszykMo3ojTuu<-tdAw2^aq#q#C1CsE61Vmu+{?7uD89YV67&5Z~k^dtY z0)zHH0z-aaahBFI0JIaar~o&a^Go)Z^y~}*4Ae|a%&gQ*FX>-Wv-2~tQ@^BRV_~Ng zWPZucPVY+gWBSw6vERbZ$nalIbOw4>Ms`5xZU=^*1rYRKs~bHdkl@qOG5Lei7c$iX zR5Y+@)7LV!26T&@wcd{zY5{Bn%yj@&@n5POV9#J{r31`=Q8O(AJq>yq3v&ZNb^Yk0 zfR>FGurQb!-S!!r{>34qX9{Q*0EnMV|B(E}^FssuN6461*x1 z^Rd#iQ}eSi(y=nIG77Q?(fzlAjN#uxcFXY(7;%&RLsH|G=LclJFL!k8fGYl>?->8> zRAr>0XQF3j2W0F2lg{|Z21oqImx%5dTr}{*M5WiTO@x z{I#w3uiXpnuLB#fmHF4F&;R?m0a6meNbq>z_92Oi2uK6ZA17%z@FiIu+Is=Ol;)1Y?&}jFN8CV9C{eEN#D%t=i97B*5M0P=!2#|$n z17r#4S?gFCS%8%W1o{IK@K62W!TJ0k3r8#P2@oO=r3>t&NB)s(r3c>nniJa?ndw0= zpP+!RAUpuS`E|;LP_wuJvm^W{+{jwTR109Wf~aUL4F$5{z}X5~R_1^S1ELXs`M0M1 z)OZj_H(ndR*!V$a;1e~(aaVK$kOu?)RMyDGR1YF+dw>iuNqC70yp(lF+)8qml2u4< z<*m5b$1+63!%&ghLyCV9WX?ok8RVEnKdu{_q$Kl|IZnaG-gqi5o}zsD&F1Fz*G=91 zG4e=p?X`6MDKQp_7W(3#`Pfw$QX$AUE@&TIiHZBB_qVre+?kN3`f_vUJ2qVX_G;S;augB7MEJ$I^(D1`rr(JxHeV_75P$ zf(3>61SPJy7s0(&T158Y8ua0dmsxn&?l1n`u`?Uahiqy+t4AUj$15Cz zIew4cQp`V8&r}*iCqlM`Oqj7Bqw^qI#E*O`C#xhP0w)qx@H|WL8QC{R#;5oA^AHjy zLb}JA)(oA~bui4eh79y|!;*78#y=|kR-qMCY*}8ABoi~4T|3otRvjYJ`h2P>Yq{3W z7?1O8UYj!0c#_S&%*E^V>I0$Bp;_?wmA^)h)Wk2EqjWTSLLZ z6`gRZkl;7Ocu^=Plfm(+j`4WAcwdX1u^|V-1T=Be*Z4bbBQI_JPjW}iMt!C7Ehx1L zb5`O`Ciolrqq-V+lUfdOAcB`7Y4?UWsfT=|yt`idpy})<>SnaEv7fh6*bP&}>OVnW zPxgU3qD3;N+=L=0u2!n0d+fS4#fhaFOdxyQo!;~PdIz(34%Vkjd{x62?(kV_ zRGD{X{n>MO4F?5XfgHRzR+d2aVz+^g!u^V%uTLaF)?nh z9|pgUY`Gr@LtfIBG@tO~{_xYaJjI5MH_{m}*bL*iC#T1L0&t zpJdXR+nAovk_8TN#_Vmfex}!>Ii~CxbhZzTWrHj}LC24gic3xq!=rhGF5~!A(w0mD zzuPm41=$s23Y$JD#a&1a|EqX?C(v|Z z5p_W+T~d{s=_za)SF6%cp0eYWPE2XJ1x0QN!7|UM>gbZ@{m5kYAq0fUHBFW~Q!6AX z*=;}gtTB=?t`xjUy#9J+(e^@n-Jkho<-K*u-Iiz+@(M>REEriiEp4$AzOTbV!ya({ zgHer=4dFex8(n#Xqdm?$;}-6pq!-#gP;TbS`P-FQr{)EhKS7_ZrKMQ?NS%_L{=la+ zyXvd02IF&Ms#hcPXodk6&5D#`)l2*mOf@crH4|AJy9VmxM1+=jALX{Iy4w^#lAp_S zoJhViFm__H6oMXZ#cY2ehVk7(3$*CuNr>H3)Ph%XyBWxa{4?!r<~?BNOIo8E-7zC?+zcy zpdZQ3iYCXY;u*mLsds4#2(VkRe9;c+7`8_aC*EeQ#ZcV@xm#U)w4Y2I?(nz%&~?Y* z-j@~C8_4UvP7pnNxMV%ldIMeLRCTWfq5BGwh2pBAsIL%JIp~M%;41EK5nP@pg>QWU z18%g;CH=7G0bNnH zrYfWs=y1|;oznJA_&>XkSu4^W*O-j!wSu20KXW~-cg^X|DVrkMjZMPg#`YMk{-I%M zIfqfOCKS*8;eupA(FA1c(bS|d-0WDWY0ZUkjq%5L9{b;E=&NyQ&g+T4@TbN+hw}&@ z6!R=V^MJ1wI$~XXE`#-<%MCT(6n5fMFDYs?apjvUwV@vOAiHZFcTrDNd0l^On_xKE zK4$P@>Hh*+jr2a|&kVPUIPYB&!XuAx!rRwvsI*X;+$}r2A@?GZt}N)B~9IHhwytluhnQ@ zSgfX@RT_Wu?QFE}!)$C3q0X0u=lu{gi0F})o6fB1kAv)I?dA+7XV}}qn+bGz&YvSZ z%w>0*fp>7rma1Q1zh3e3dQ|+RSaWH#eUnXO33K=Iq4?6IqwPfsyH#cUsbJ`5id-*J zjngw@;|jKf*MYcM5}|C=$z0J-wktu<_6{q1TDv$?TZSKX4>~tFT*62R1{KS!$oHb9 zX->K62(@cqNZ8%gdV5D8L8s~BZLxS(jvuUwmp4&&y1rSQP-R{4magaYfqLCwbo4PM zE_j6*U6J%$5S5h-`B)E+eLrndWj~`|L5q&R#}FGH=UsOxS;rl$hb>I4*%OcQVj}P? zcB}O)HPb$Kxp8}8th-Ywa)oThd7HTZbBxD^_hugAZja9RH`pbXhm6)D2ZL|F=*0GV zCO)BhI+?vYC0m~K@byD>lzhZ0G478Fp-y@7#P^m!EZUVwMe5tU;&AP0^_z%T5p=fr zta95l$aJN42&a7PWiv6DFWnV37RYU7>vHJ{p?eMq)Lc zSiKO&cJ4rbM44?kX87pN?3Jx=r|#*N>CqE06jqWl+T)9>D`&8 z9(RhjGIFhAXp zbjCZYDk`-c7Vl%BpqT&=?_GNXrqR?yHczJ^OZE>Vh<6CPt05uR*@-@1!O=Es?Nfr%5E#tKRu6=!bLap%5kSi0{|D+1Vy>ZKrwucve-s zJzDKcK!LLea`d%r^k-{pdRjA@Z?aNfeLYFwGOLmsclr-T(>Ct8Iu4m&_AcO9pvd|R zZM*d@9ag)c_{PNG zMYNKI>>5hH=wz80t|yr|F|zmw#2c=jj1p9K6Yn-w-(gwx-I8jSm9RAhi%*FM6Zdvi zG991#a3iE@!aer=%&6E#oZDN#XD9D_Q?*8{=L>BDtujkBhd_I=6Sb*#nNAnuu9}dG z9(w)=u`@b#XtQyz1Cp)$5;BB8=FRp6>kw#1NR1msd85DDle%~7jbzkh+KktiIxA>k zxw%A4G5a**Ds_`EQRe)r_{q!{bna#l%xj|cn)gGmziFMwcfYk&wzC|H5RmvXF*7qz z8_{%$xVZ#7U1vX|Tqx&4M<2B>T7_g?AG3QfQhl>(=bS-#pfp$#h@z@L)|V^n+O&W} z=x}c#-o1sc#na>_A^Gjx!A+A~p=U0P!WlFUGfH!<<4f$V-Zb^62Gsb~&Uz_iEYrCL zZxcNqTe$@0Wau8)Q9RdM(N`=nV#jB(-9dwKn%5rxHbNk!NcSS?#kUac=g%Lz%b=Yd z_C`j>^X<&T0H959)9$n2JATY0a20|&z!7tx9pW<`7108=Em#iwYkFPGj!1S|$5{#= zh4|-Xi$cE?IT64_LY5jzDSvUE5dG|2)87AJME+z-=BT8K9hLjtCsV6d!bK^9=OqVN zfk)kN=xyiEvJO()$EP3LdcICu-t7r9ZS->^EZxxx@5HIUVe80_v1H=%ciMSU8sTT* zgl{c*g)&swZ7WGQNojdKm(r)~S=i6Evg2@mO>UDk@nyqVs9h^O!4uAT$a)Q;prg01 zD2=&VN}p!~OTyr3LA~UQ-fJAcr`X!}E{b`$H@_bqWDzA}!I4Tpaj%zUFsQ!YKC9RW zP0-pij>-~JO}WPEo_$w65&E)^c6Z&2H`M7RTztV*<*|>ODGkQC;}C*p!S2QzTDa;j zp~7{#YNbgU)W zd~9KIwW%foskeG{IaRCW;=4Z`+kh9KWuYim@s_G)8wvxCy8Aj1bEun;NJd!s%jzFw z08vsPO2JrJ4#ygzIQv3mgmv2vdJs#C4Rs>{H6Qd)+~{SwAP(}^^JlUf3BW7u)EizB zn@f16)T8cY3+36U`LmvL-w!TZ6;;V5_qb<$HC+c)C8>4p>+hZ1u;O^spE*(jRgfsp zjwP6YQmOf}{Exb&IuL=Xi-<>9li55=>-S1c`pV&&n;In}&bglMebaG;B;9+`&i!fi zYE#E`@JgWVBwz%IM|A(|qP2!Y%9Hj-L%iCqY3Kr}*Wt~NZ~F}HC0f=WK=^YRWfn4T z8X+sRUC~q3v|SnJ{f~kr@<0&>qeqvf+`B?;C+>1+8wn)u$wye{`0_w6@<290in9P$ z0on$BaeY5CunW1bJZt(O^GN*nW$vXn;|s*m`}#OJN8*~k+ODLh!g-*t=R%`DI*+lD zPy~!XG8>Q+0~BR12K0s#NRauzxFQ9`zoSzlAixQFmEPP(Z51#2FSb7av={oPjCm?6 zNWH+4wl>n9$7ps~mh4H-VSJ+WBu`Y)4Z_vGD(Q*#P{60@369@|I|S|!xI^F$fjb255V%9&4uLxa?hv>`;0}R11pX`n zcmDtX+W-Ih-}?VKTDXQ{O&Pj+^2q1oyC|zUnYYEn->WdjSsB=q>61maO2nByd`(u? zssGuMAtXQ#qg8+vhaS&={vBMt=Zm-7(f0PUS7|jL@Z&S^J?dL#GXp8kldXHt2+lhl zrw3={N2sP#KYbG?<{^g}g`!+f5@(vgH>#cT>>dz(?TVdmi|qY{ac?}d#=Y?R>~TXW z^a&5!=8^k;|BP0lPNh_LTK89pA&ZdQX8l?rVSWU0jq*X8Vy_VnSei_%HJpZ#sjhk4 z2ScY+*vFPJRfH#)BkL0D9m+-~7T-59wBW;q%k)yx>N|wC=H&B+lfpxUQ7@%BXX=E2 zs%h5fp$R^!7jA7bCT3>!iv@{m8mm6WEq=fSVn_e5>#agCJf4lFLl^N;h>_=6$b-G& zAn`zLv51b-MZ;(D+Kw|1*XVpyFm2_fAL=~(C_;qUxtQ*tpYcS~-&RXzvKUu|4c{!( zCa8%z==?AUaX>~+Hqxv7lqHCsrDwFvdfAv0Q(>}7aTIM0$43QcIB`_MR)OEf#Gej{>a7WOXQj1#4aTFB5uQ9kgA?o{YOmdU$CLr7m@sypz%fHK2RD?J6?=~{ z;04HxBSD2-V_IU6c$**ruQ!eHV}O~_!gMc37W{$RQT0~tOIgaPS7VeLj^}m9yC9~g z2ZfTK=(%BD=zLqGIPqU*# z(<ET6RXj)~ zu}aKeUZh7^VD9`Z*6%~|*LEF;qy8sYhYyJ3M%}o4u-)k5X0LP~HpG8C&CGouRx|yw zeG*&oOdDwu|2{8kg`(t-h<3| z>0OWQ1KlIwWMk4xteTCnByql-I-cxZHS`=~8!c;350@(SuWuVT~4rG$jUWD*4jDb$n2n4d+gDr#CRz!km~e=-N!ObhZ`h; zk!?@25(m=L=}>(nm1uCXL%?DQqjN*XQjp5P%^Js~%JwW{|5ft3L?TN(G`ZQMv*)EK z+8n$$K^-jq2`*%V!^s;t3>PG&wAWmSa|m87$~_^h!FlcsDdVE>n#50?*?AK_SPY92 zS=OKTzlVd${%q83D5Nk_q?H-W_{0C7k0PFN>gFFJ-8j+}Ljp>Xw^)`&7&MU3?@>!* zy9l_L3-kCoq-El10XdX1AG}2*t$#p6g_xDo^cANU?Ehc-@WcP#+wdOn|99u%-unO3 zr5DD+@s39+1ZpPOWhaDGA_73P@8GKpJ2Nwl_(;r*X)KdXU<88&+m*QxsnN`FOxQWg z-P^MDV{U8}@ZbAgf2D*K7E1IreD7?|$PjH&2xPvP?z`_yhUXZ zt9?JbfS@1!yF;32^WJCnc@n4$2@2!|gnBBiGYN$t2!JZQ3L| z&$I0N>+It|o1E#vBbR%UM8}o5SljLOpy7{HLdnxgKK_*Nb4BEL5XZ8kZN$X5EDn7n zA=_=&P2E?jB<1YnpYROv!HAVzJxu2c6Fu2Iw~H@rfd4-iAMF2+v3R5OyZ^s5Mz<$1 z@53%1x6E(*566lP;dSJQ*{&L=T4Z^D4!S@bKWfw z4Idc4^)j~|B^W|FhDcmslu%RbNRN|IbczXtPgUc5$6)(F`JBDd%D89?)f{?)^R%0@ zdD2UThg*EG%Q5|l)A7qPYuKOue?`FmAGS*a`2P)FAMT6(^#7Cn^#7xSt{BNug;NXA z1#t*Z$qdZ|&^_RJ(ig=vXM;Qrki;lKH|G>LxGe-Zv$@Nis06$i;cyxVOv)-rr9yP~ zc|D9rd(zUy{i;m*CALCj#XQZ6_PPqq(1Kq$YKG!WBVyJy5Px}HMEeHSlQc69>ZcbU z&#>)H1{Gi26@;=8+Qj=?|39SK5RF@q-QL0rQBS&$fKUHFG3?(rXM8~F=P(2-?DXqu z0Dmp2HxiEfDGvPGtLHsQ4Z7)}^#Lz@Jc?Zd?7lIuSw7uo8v(E;FoaIf|er$~y_?!|G`0Bi{zc#SRlhboV zbcTav*}$d&F}5|-LuVJ{7yS7nHao^pE?t+MYjA(g4fcx0v7ft66HE|v=m!DFN;)yI z7R&F`MS*lPu9KfMHeFWeT0`u@&e}++MDper1u4I~%6!OM1^fS-AC&<9|6x|Z|1Tzp zXfh+}}9U&=@8-7WUV$=3K#Y1aC{cK!f zFWflMvCiwU!9m4ii>dp|d1nym`H7+9ZV@Qe&J`5MTigNDwVq{;_vY(XkRMWCtTjlq z^>jeYaz%5yNa>T(Gy0W6AmOn2o>8@lHc8jMv)U2=RP((2N%+C{oTAPlQm3P=R%7Ug zQrE`lzLO9e!}WvSMO^Ezd$mX&M7CCDYwwH@^XCdT#&l#I)tQnnL=cE&l64|R zBh>kdHgGT+vQ;zhN=*RHsO=exg=O*U8-Xv{Z3(_{6f{xi*a~hR;2+9}K->4$J0kc{ zGQv>FfCQ$}X4o*r?D>h&YdT^qhau7)ezAjJxoFr)Ama)>SB|gwCMRf?!XB@pd%Ubn zj3o1ziS-c60u!k_%y4~}HLg{&Nys{dwjDQB;(%hiS9BfA&Ws=32Epk&&VaN`!uBNF5wjY zpj2UQ(MYK%Jd9oZkMB7T-e~6=`h_$%Vd5WwT6Axp&u!wewcU`W493J;_Ch>8^8+RRm3Hea|A={u}t#b_Hq0z?=z3%qA z48qh28daPtX zMzKFu>>S_Ir`I?gbI;VJT`};fy1c4ZO>!7o(NwI5`cw_qN_ny{c5TlVqAI9#Oq(@3 z{jOS{uyiEN)<-#cGA;Reg>W6Vm-7-lT}s&*uG{1*?u%3p)-scm_nM-$Uad8Lvxw0= zW6qS>e*0V|Kc`yFlt`^Lq{J{KaX-M?UrQjPX7)+`hJ?z8SazYlXvVVVV9)6k47W@lyQ`Mv zGhQ&)1ngS2cE8GW#+mHnZVHX1sR!U81;~8ifoYCE!VyF6`}oobde(@neS7PfFqxvt zw6!F2|sTw16Td*D^;Qr;%tkR!jQ`Fj5tz0PUO zV{PFLFB3JYZxWo-kcs%GN{Xoi&?r&)mwD#rZ-Og%t_YMqda%cEil* z*K>UfJ>Ma$IbXoJ|3!J$djN<6-tCv~ag|lP@c|b#G1UgXeGQ+{J30*iBk|Y~)_{ys z)XB$)(13ru;3zm#?aS)U4w-kT;;grcD>`4z{i`eQFMums>o@m)CE(%K>_GfPt;O); zr07lf^}GdN*nfm|#tvx=OG{++MpU{m^U1YCK1h=-`AJnK26y3A9*9fQ`!dCF`g`OP zkeJ&^@MdJX<~C^s!%sKA$KT-QKZs6+HUD=0Or!>YVGMBICn?VUQij1rJ2%yjM_9cm zWb!~l@Wu7_0M9->;IXkjez@}6&c`us_nXf z9|^F46AvEuHMX&K3&s|NAR`Jr9nf0EV()(PpKN1(yS4EzFDzJMRe3OcQ_?*}GYE&{ zd{>z$f#Jp1v7cF87*HaDGEc>j1%8|UAN}|ho$cGLx@?zV+svIG|Ib>e?)dHyxI^F$ zfjb255V%9&4uLxa?hv>`;0}R11pW>L{@MQzodf*eoG^a;{$K3@sv=Oy|HHrkCx-ax z|KFT;bdftsy4f35`&{R-9 z_7|gFX{VyTn5MU5HPYo>h`C0;Y}bOc4%gVBRIz)yVPr1#E}Jqvq=fx*{Osm*)1^aD z;tMQNM(2azE|${#*k@lYmAI?2OrQ1=uIk?os4*I>t5gzR&j^KbQ?i=MSkXTJ_1^NV zV!hRlhe@LH3pEnks3m9K?|yoEn9NxxUtc>^FY+%7Inn2f6FOp+v@LZ7LG(r|nXCPj z1mj?3_q9+dEOvtG!HZMI%GGM}%gKhI^v;(=4LibWG~XwPB=rWO9$;kDPzPHmuF~}& zz2AGIi=XoKal2HtzDSa>iVZU(X>k+@fFJ>~i1V%Zl-0^(u5CN)ydg}esqQGsqk%r; zoU@VG9QE1M4BMO`tv&7x)tLOPTwVz0!sje}QW^j3W;X1xG5XnV+@y=w6iVZ& z$LFx!Q!`VB?V=0Y@$@~xnvo&il8vdPP&IzPq6eLq=hhmL*prP(?MX*c<(6}Y(l4Rg zADrSsQI9bE!+(yL4XTOUOIz2E_$#|zmkU*Mi8D|S1{NwmEY|L8bJtm+h&vKYX4X7F z>Ofkyl(Dmi=byua{ci7HO!C>+$eFb`D>-7&!1r@5vj5gnHx?-SRtz9NU}6RsjwK83 zloVWw*GRlanY_5qo+o2oogftoL8gmkp)skRDEnF@2{rw7CAQ22VY5BI2Zw%SYplhv z+d^&{r%HA4?IcDH&Zt{BN?UJp`W&|tyS|YUfhT(^xjPyzo6Ml>Y37^Ain%71E5nit$P6Kw zYI#@=YlF$;!~6)X9WA5uC1r}AgS*zqQR=yVxotz?uJ$=WtxN*rnSC2u0hc=j0iRqe z6r+{ltSv;Q`_*fV0tZh&LUoZNx9TllSHC^dP?8#DjYBDU8nqBkzs?IJonguby_Q5d zTbOBTnoI(-$xU z^T`#Y`8hHKuaLu2ImEWZOmJMaTfa_5pg3NAQtr?%q6?^E#d9nP)cb2aAhk zq}4_n9vk9Fjp}v<8VIGIN*RbKqPe*U?eeeo`z~H2N5;$FZkM2; zjZ`YuXCrT`TZJnMHMi4HiVSVdNUT`Tv28?ar_{dgD|;7z7IDdFue_-g7_PggyO?(VH}yX zqdv{1L7;_C5!3JMa&5F%id7M@-qie5eQp_hOr-s?y zVtv+Ji#x;}iqn+8w{p25iBoI*;N7fZ<7X84;>@@>+npd%d|YWV<2Ux*T=BEe3XHBh zSj(+CFZ>spr%%o8u$>gTvyifXYMFF?DL?^K&?fiPNj^1}^qWBXJ_SQ-A$W{4<>%A#@%`M%h~woF3Q3D9d!Q#W37=WbAZS(b9Esqy&8RYu@}a_V zk6KH4^k!nMhQR4&wzFfr3422k?D!W%j$_=WaaUgpyS$+M+~}g+PX?#09jF)W7O^!_R(oD8rT^sW71jh5q4a z7i87dPP9L8I9qg>N-I|vhmvv*P1M7Y=sDP{KlYZkzswrzgRbG#(guw6zRJnLg@FRo z+Ltf`ecLq9d-c9DE;jmlpPG}>B?Ghl)rqz5Z&RemG z{+kF;u~YXU2j4vP<`h!tJq{aUgDd5c%>z%;&9hTEefLX>k_VC2LsCLPc&bBjHGKVNT<{pqHdEGR59| zB!R3ai~G4QuhLi~sg&j%cXpCs&VYT|IO-&eqNiYWWvbX2a)-(3)6bdur0m&+G~z<) z=Yu1^vy0aDhnPyxiO$1=;r@a<)M~EQ75h{O9t%+yg|X! z)K$iZGDjbGr#!LDTlINnD=E)7yn;46=ME*ay}b(*weG1sFvRcgY{y5$mDxa|-F+PsdM6*4()x!u0o z7_vio8WVr^9G9fgH9;g6X?>|+y+*!eB38aq#!e-v-%bGEy1!IE&YU3%7wJ5YLqli{ zFUO&7PqmnC4Kw&@B(I80m?%8RsB@%PUv4RunUa@md^Da^f-PYJ(9FjK&2k3Iqa_jI zn2%)*o)KnrhP_D~s<7TldE|iTN2UR~zD#>Y#rSHtl@`WG1*C*R+?SloI3a}!_kybl zwpg0SUl=L#cDB-nji{w@$nBwX?Q4(f)~%a{aM?fdA(G8iAaIOPa(9eORzUioQ^ZIX zav>RVxoWGfR1{V=3GsQ&WfN6`$B4L&Lm%~t(9BG)gXV~FDp_;kIY*}5gNOLXdOVKK zEFfy-Z^*>CoiR8zBjbpx523V8)i`37vdvT&VorK^LOiNaH!W!v8YX=d^c%V|C*Mx# zuo;~yCH9fUyl7YNXv;8uzmoBMzQk4!v8x+mpIzs2bc}mNjm?S8AlU|o=z6cgp$dl& zvTzPxgFQq{$YOon-a+Tu1jB3$!6yCUJ0q@T2fgn7D3`X$!hDm^7dpnkyTjj3;9W zIB_XSSqfL(o#Sj~Fe#rF)B8W-a_tMiD5!FT^?X1j2;uR17s8VkT_rePe`%ELU}U?0 z#Sz_bLhfU*9GTP~=lMa097p+zk^b22@=++4imaIfn!CI4J=YebPu9;x>`pvf&T?|f zQeKaCue4vVTCckYWk@oXe+h(sJ?3%p2aua3x{u*N4CsFLyXq;z2eg zbbBCZ(H-&E%1s+3m04TBD`8K%K6pJgmuTVeQ9!tT1$1zHp|T$5gkmy#6|{NJ=g<)S zNtiX8u+1s(Pw~u(FzMwC9PNB|n5)SPwoiSXd916iiwX}>%y7It))kH^7KtTg+{Zyf3?~RhMJit!=t{nHmcTxT${B$U_&Rb>qLxyU z+Wz|e&(&`z9vV2Xy4TLNr?Wbv{O!nW&R`BmF92AM$Fd{!Ytij|*xg-;!DqE6<%i|MAt1S<+$XkV%tw%8Q(pE@< zbD{#IanW|XvVS!TIm?uHyZ)z-W zyoSgzL}6C3ZT=~!*rA@dgwALdx}v7q5>@GMn~4s23O#SnYs&6o@EZ5$a-z%lx{N4 zx|5koe`8g^ivyXY+`G5D=`|OW#PD8}wc;yJ*NVvvbL41r?YH@u?VP1|1HLUpnrAWA z#@F)Em#*puE5nN>+WTWk15GQIN3#$75?cs1E_Tji*)-yBYG~C~nz(qLZ?`p;Tv-VL z!)Ppy9FWQ}r)z%cXx;hNW+8$zMXyD&Q2(o?f!ID8)H?Z>|co4r>h4Ur-RwyFp{~wC5C;ER^wqCqmKk(>tDWtFn-l32}?)~&NxrDtA zvb0HZwHIf~D|^Z(%qn|`+eut$jt4l0W^VQ;wutL+H6!N4Gj#}CIlw;=CG4)ea|#J! zyV}=U%EMX}@2*!xU)eidj8-aF4&T;^-A_n3eYKN!n1t}{-SY_+Z_lRt`q&qGB|uww z@GVJEBp<2f>&&uXi6yiVSjW?)m}Kl;eoLa@jY-_e$ShoLfmJE}=J$56>dFJeXfueQ z>ad}M$zNDw0zbtOcQH8j`D!Z+J_o&euh8BtbhzP^N3y`IW2I+)V+Dm6_Vf~DFOQIY zFM2oTB3ib7%Z;W&tjYsHa`mOTJnCa-#gkrx*yFV9+OW&j6GF##xfl7`J!yi6^{Y1U z98lwOmkMrsI|t;ay$Pr5Z)tR4NKI+udv|U&H29!N=qP}6-%T2TuW3_5R9lyp!AWCZb>Kr3Wb5S|mmCTZ2uAtiV zmL?90bdo%tIoSPbP9_iX^u#aL@yN31QVYiQDp`4y^0NT}(bX2pWvl!3Q#5^)>cE$O;cl!J_D+LOVJ(>QZm%2RQ05${;pC!;fx>e!Dwm}1z# zB6P1Suodmebh!kV1WhZUF4RDtwk9*lRE7tv3u$Ym4jd;ua@WGPR!XwdgxoDtJ(VvL z94z;3qDKrR-&i>epG8-s6_`!xbZrGuD!#E*y zRp3acGTK#6uMQtiLxnS!T4!mV)x`8Y{8H;aWCB~+B_sKY+*N1JMWyLfadghLYu|S} z@ub%1{bRBjYz*-g+=9GI7uV5b=8f@E9ZErj?S&EOOpDp55@T-=Qg9)OV>hV8;hCgw zugImkzu9vB#SKxz_JC-U07Tzt=TfdQN84f8|J>bY$H-NNCypw9W1vP;^!D ziR+|+x8RiE4M_uM(%7pvWtcfPm)TP+Ae-c{M4GC)?4@|ct4ivasc1E@DJ^q{+|Dd5_Sn$cYBgIZV5PQnHJxB) z(sPZt2&AuIG)FDdKo~91Js9D}puU)GNkX_-;(D&F)GrTXxBUPIP(tba;xh z7V2fv59mi|ouX>o&L}8VG|5M&k5FT<8l!z0mYPy}3vt|f%myos=J}@vC&SL(;#!iD z!l#nYB9#jHX-d_FSQJ{H^@v+LT1lfj@ut{ekv&2#@;F%r%wh8-r~M$erf+p#o603Y z><9{x?7OnQ$#l`=4QoOp%oXy!i(g1_=*y{hdYuE<>m-)C>andlNev<~Cp$hibbERj zSXq5h5{o@G(|0|nh!RGO^BJY9>U}kHe!*C)V1Z?D%$;0#^WAQwmNQ&<1bIm%vcB0d zX>`B8Nr`IQ4TrRcBVe%ph&026&bJ*?*i5pgW{xt?amV)h*j&;#*%lF6Bd!f)#yQa4 zx%T)d-fC9z>{TI70*{+l1I<*AmO=8D@AMT6)V1O7+!Q-P-3|+bRtai{i$Esb90Jx=9!>3oRrdQI19#JBc!x|>Vzkg>nT#n$?ep;tgA(u4O4R$bio!fh zGheA?F7vTiTHafqp9`YI5km=#m^7k;u7Yq~OF=OSL_gTp=nLO^N0bkjjS!e&ZD2L- zvyjQKzuc*$fd(I(A^A#V5Io}uW%?SOM#{F2x=hBPo&|U4v_n=r8Kv(p-)NOZa4|9E z98>Qch~}|Ccx{5c4d^p7 zsk?ApJpEd%szWqXlGn6Xwz;v_tfZ`S!z9Fgp*iNQt7!MSBZeIPxl5hpXb7^`Gdia| zo9#qZ0l*3?&8m2TQ4uV$9rR8j+t#fj_}Z#&VIzXk5D~jjsjJgnrM` z*Y0&wo{@@1*z}zR#kifJRz)^+miZ(_XxRpdzc#P{A@~ffOtA#NM);nl?8Mb@c@R)L zb-yz#hZD+c-COE;ni0|JRJ17s%l=s&Ovcs7D0_oF4o}LrMFjWQOBNksUWa*g8ct(2 z1@()k$(Q52l+SLy@8zDI57{=pzg!IKe$i)ZU;fTXbpiqJic|P_Iyz?B9}8xSN7(s z)43oM+=~Nk2%58{+0(hWBzE&Qh3|VS#%hJ(b)HdmypcE8M%J}udMe_SeB&Y`srL^3~%W86Jy7M#P{d0S3FY@>XX&AJV|~vGwRHm z`aqdksw454%f(iGs~p#jz975B~YzJSzTCNYr1TH7tX&8OJ(A-I6>uHf63nHH*&8C5nk+4o$N{MbTvfX69Yzt?`;Q|8;;0m_GFKtHoBA$SjMCB$m1J4T#pr%5`($y_(q8h5&sptBy+>R?Ixkk_GSW~nf4xXLyCo8#*aU9!Vya%*clYQ#P713`Dx!9xdgW8LzFQ2Gg;o_=-ta5Z8u?n6 zq44hHb7B^+p$v9NJOmc!f;vborLMIL+SGh~CAJy&NTmT<3gz2D@^C;I3-{o_r%(TA z0XjF6?2muIIJXHMM%XS|awsQB=GHb|IWTG6i{+J~^?Sw@y+6;I>2pr|xs0gZNCu>> zrqJKF^#w8GRzBo?muN9oYGW=p{~}t1w7EY7KKstAJ-TN}cd@W};ri376^)3$YGqO) znW1^9(Lj0<$Hl&I_wGLbXp$MezD!5eW_Htj&f53NyNMmTP);5hm>@9N_5DtDywtFD zw~O=J<4~pzc2>MV;U-ctK*$e?SQ4YPu0`v1l(Gt!lc--Y?gU$-zuvqW9jw!{$IM@dRoj_kx#Y4kp zm!Tew+RRgDdZT*iXVVV5s`&Txc)2%Xnd}!nlZ4S3QZfV3&F+(5-c@iXpA zRUW^YjsWYGcf^`o=^s&_;L2JC6e+L@*3ne{x4f{@A`KiEZC3}e%xBB9CL_i}=GV-*||kLU(#(0O<~dYigGRJjv3pRZVys(=`H58&ie_ zoDb@g+IKpmXw8`+PMTj!UX=By;WXdyU2N##1HGEczuwEjR?=rzypCsAw5vSi>i2^% zT^jowafeR{_gKq3ANYDQn^(+-9}Jd%-;A7gd2bs3DQ!Bml3jgT@6>eC9`-KPEOoJ_ zsfjPk8||#P*ws(DFU+nsf$>f|?--~NXHmv(YDjb`)xR8F-+2w8)mw2PWIxP(3vIk3 zP336xw$^?v3FaY6Ap$zF-qfRJF8poy77?f_pC;<;`U6PK;teE6egE7H1p2NBBvz7m zfiL&p7evn5lOH4^vBb|auBy2}yIjRz+kS)Rq3o!0n`jS&gB>kte?+aHs4qcmWj4Wy z;F)O4Zi5nRWotU3zJ2BlBCil`Y0Ewlsuti6p~-9SG-pe*GsmvNjTaPyKk9Ln0^&MJ zJ9Z|on$&Fbp$M>Ht!=i_Kq3CHJ6~ZmsHkmt(^NqJAl{8`w_F5+d4nt@S?t;%k$uCr z`<$P_16z0i;EWU9Z3}N`8|)r^(#zgFUTQDdZyfDt?e)av`#B%`3S8BV-dT3h7uwlW z#asVODIQJ?T;tt_g8-E@b4Qi#U+xZ7jDzkEdFCS-8zW=Pu`zXrhwdLt^pWG|IU}T) z?!3YZ?4FYzXI-_&_rovS8jbhBQ-8ruBx)_fOYL>d9PUwVy_S4owD0`JYuMRhxM@w9 zz_^d&$zy=Qns!B84jSA-`X>DDA}I2V&Z?E{&b}oigkqupr#4n=&F)Nh3>@C(5L~%4 zb%}q+k}6S&+Qj-7cZQ8KPNk{l?gIp=oh~5@U(D@T4)U_|`}Ec4>n45o<5Nl4FSF!t zBe+IhVY=EsqPxf6Xky0I$6{yHGFGK`gF}E@+P9NB-@Qsd{#kUfKjTb9D(c(EnY=B{@MNvbmeZ%CW} zy|RLCz3$>!rT_VEBzjh%k|26;7Q%#vGqlY;|*mj=Pc88^huHzNAs#k z^^RcCuhD4yFximgNU0})ny72F*@{`a25^ePq~e-`@388rmB(ty`14ZW{DkWXZErG* z%>~-=k|4NVGIKrgkG&ZAv#hFBHsWXg%g|u86^Al5lJ=Dpcp@DH~s4g8+h)_1d)_jJaJKjb|?$94cp3dro-?ej+hYV@@jt+ zqC3T*daI|$>B!B{GP#f@aHienITTpzhFm%{STN z!Vd>=M||hT77JownN6Ov;zko2Ui(^FEx%I^dNv6+-ZDD+4wBG_hV@aDPd!$E7~Ns8 z-}=eLQ?(?Kd_`*OcbznjT@kwT7(%=8n1rT4jyAQ0;~oWW?8&(p@3Alrf$w*O65{o= zzTz~K=59U_75ca+A=UC`xu(^aexe_qvu@Krkz*OE*v4Xa8IgZIGoWqvI7ygv8xiD%0$^qXLzWy?= zBlZlt8T%66liV`WkGpdi0%3D&lk@N>{;Kk@$3u2%OF)W(Bbu`7wXqz-a=qGbwY4)q z3b1+XCbs~sidZX=6R!<0z~1uNg_rghIB(2KaR$adz7d1;!KEZzT@+8=WCfvNEok|Ot=ew4!66@d|6=p17!^6pY!fu}lM$6W|K zcHbbu8<(EW-3d&nMIvdz7@s`g+nemPnw|Cc)F;`WFr2yTXziArk;BgbVdmr0RL3Jx zCCBiR=Z(`V=x{zP3s|al09W^rb8{zYFwHhLl=ZW$kimJ_C0&l@XmO3W7G&n%>be9V z;q4x4Ez@hTc~TTurE5LX^*+tiYerum+`mzCy}4Q*t9szF%J~f!KVbw+)8f|CO07Xn zY*Z;l96e_)c~a0GPn{q!IvnuqxzZdgqjKO%q4Lgc!lc+U_Mg2(qItf;FwuDuQp=pW zPTW5Zd*~n3JASvO(U5GBAIpTOw0ula{ApH5<{@8Ic7OR&B+p%07H^9&dWgNU;b4i& z?7R}6z}g&r9iPwTZLcu9!Eu?VE>@_apDd&yk72hm=hRkINju-4j|(b}n<$l#LaN}B zX}Cp$c=X1pdwb6zA#JCl`jb9z; zaLzSWiz~VNI{?RG7CnV$%kPH=`*}2+zkZ&D^S*5U+8s11DAyaF7u%}{3C!`I!TpTk zyX?o8qj$@Vt_+W|Btx+Hi{TWKs@FNM{o?5>c3`|1`S^B|>MY|8Exv4Y^Rc6S6mdVJ zbK*LJ2z{};dAG*d;wTOF<&SF5NlQUDFha;`C}O*y6hGohe|dF#xH9OU+z>8p#Xlg+ z<>y9PVR#Zda|Nfa%3zM8d5x^wH3ebibERGyBVU@zoOb)jYg3op?68IdBwV%ji$N~# zGF-{rkAm)z4C7bnwz+SUnp}RysP~2%z4eq^y@TVOv73O)#~-@Tiu}2!AqDemb60`< zXUDBtK+0lHv;TBi@gd&e&bx_w+=&$memy;K1%%8#}{t~vBt6LDH-iR=EUbVRyLTDzuH zT%6-5lwQNdQ4A{B@%7;dVA0O7)Ll_0+w{C0jBwy zYpf~Hs~t5mX*nsOyz4#7;ftwA#M@2Q(k%xtV^Q(et1HiBuW23-Fcvkm);)N<0%Uy7 zN{HKX?K{N|$q;J>HxIF|Yn{yCM?6-T?Q0XIz@S2e&rl#%L`rmjNKC=c>QwnOCkj}s z!8m0c<;V8C@!tVserE7E!1RvUEDLH)?${LeYh!7ixxzL2I2Bh|iWGa;vM`sD7wsyC zn0@Sh?b_8J<1iI1!^g<{J8td*p{5A`q2@7RMtiWXB^ z5fwV;w8B+KLk*1=*Y7*6DH$dA$PjrUXL@(BH3Q2`3Akx)=A&yi(aE{LUKE7nu5~>f zU=!fjfhi$Vl;=&p7=YRoxZte#(hPHJ+>-UO^s{^fFtS;$(~GZFp%qP3=lGFY>qed} z!A+3-zsTbhFot6IJ^ZN6r=sN;pN2Z~3g6R#OTxyaKX$EcUSjhxgi|rTKqR0zB|4+X znOC>^{+hi(aywt%R=(?4;Cv@X-c5uwL4C6Q!|V3;Qu1G&-A^)cn#Jk=2#b=oIyuBa zu*j*q$ulu!6kki!a#rYJlFSnl$I`B+$1Srry|Uzi-4~s1+K(kM@*qlRgLhO^kJdAl z2;c5!P_6e%*N6Hw3p@PoqD;KOHJ-T8k7Z%3IQdj7ELRd$NXeageYLN+md-T36z^t#R8QvW15N4s*57EO#)^}!vN#q2X$!ZZ8 z3k+Z?&?)E|RikDe5BikT9IgtillM4P!gaYQA49LeH{|_#k;!rhO(9#tc56!N5GQ4p zcOnZ^mF2z~th*`PZ>^k5ZfJkmM=WLF>U$E5u$`yX&MPu3g7=(tBQf_9af&!nLRDBF z$cPWkp)a`1?`W9%Pt6|Kx|i_wKtNx}jWC6+&=5X_`|WHK6ZBlviSXaVsVH?}-0goV zcQqb2g=3wVGo0B!0i^%R>xfL>>Hquu|C0)S)1Ebxh8>$DzXb}&JwLK`o>dOh`-fJ( z_AF_~W&8y1wO5rp$gj3=X&NTN}p|2`AxX2&0zJV0l@ot2K^wYh5Ze@$9l}!qr_| z1MyhB6Yj3G*K?u?wY<~&RmWxBHm8EA^6GGqT(cdcxe}GZo4GjU5)pRse^nYY&Ar29 zihntlMhy*axWb@?G6c`-HNV>rHVixrw~c6i zFR}wBs*S?_6;NU?HK+Hgf^r~%4Jo~+3F9WkAjyHoR_?CuJHNbp4p|$$<;+!MOGYmS zGSa?({gJ#VSZi@>&h<9r)qCywVdl0`=4Y5&Qv(noy+C3_h{?$6^P?m zzhPWlJOZe16L2$~MeSAHP=hFt~3Qp z&z-O5oxW~>qn3w&M!NJgY0#DG*X%bnnJ6-7Sc}gS!kOQ_A?jDFv1}e|2zqyj7sWd~7>t zqQaPt6a&Wd5Zk8y4GNxdrW|%Q8h>H znTXdr+$9hhX8!6l7tUq#7YX(?9BKMl02y_4_0j~*e6oqQ0=p&WM84*=`ALz3Swf1i zlGL(2>rd0@C7J_3Q$(^ZLzMYjgh?_`v8oYbwK4?@fDX`;CR^z^l6)=xBJ-m37Cf z@g(Vq+Z1J6cPsC^(`8l<)TRPDcV6R9dMRs$HnPyHvK%4{IsX=CK@`!k2RdZw*JZ$2 zCNJFEE^}$Q+WnBl%h_jl-(ITtWxqe;;y-wn*6-QmM0G`PXWZITJQYA%Mw7E|s_}Ab z$4-D8WNo;(zF*zci%Eu!^|8v%8aN(^Db446T6i2J*qW?nYWOQ~`SgkLDZsO**vq}2lk0WDg5^_+wug5C|N2hXpVa~G(#Y$6G$iWPpQb4M zN$dvkXa(WIWFbl!vb0hyn|m0i-ijmdvoLGcCd~EJJBtM^wzKn6xo6z7iV27?#xZeG zRNv%)GkE;RfH@^0EVZav9ngRkB~P7%3xsnagYa#YtbzLdo$DNp;0yypMZ4^3QKhkg zghDEe_uM$n1+;#F5t&}+W3|I0_z-wN`#Dx-@nQjP-SI||F?UdpMZic}5D#w5%%Krd z{z6Inwhh^ry3iC3!J?!s6g!ocqFSSef32-P6dx@_BVv~Kadx=Rcc=JhA7hxi=W>3@ z>0E(0J^DI|Jz}}lnvA(qWdGUWGbW=Whz^XZi|BCB45I#<&^m*&@U zpXJj~VBxw-sPOu?Ze zp+{8I%)2rYNQ8swoB(wm8*3&8@-;OesdRT z;2+vs2yp&T;9UqoiV~FA7`}ij+)I^aOrWAISBYfe-F<8LE&1b;XO7Sn8W@_eIc;t` zR%9;UvesXNE!7*COmU(t-3HHXiK!<9GWGHv%5b=<%yN}z>YW4k<%6sKNgp)^w zN{kVKb8*3i4v7Tg4++i>@Dk+;rA3OUWNm)-t`{6d5W$hWH2EvP%T*%!HKGdkMMDHH zRq_N^I=_V-$Z{yY%$AK1Cq!(YvhLOBylDiad!i<2aEJ4}II6|$$k;)|yF|ZqW?Fpa5DSgf z9h?W;)9Wb)%-(UR(R)zgNRE{0sSpUjeAxm6AWF2a$<`-WM*TPe#3KNN3o-mb$+Or7 z@mgIorLHu+1)zd>8NSeZVHe(EfPjI1?)oDE6qFnMt{(hq6!m?Ggx7mDDy?+6CRv1w zp9zOJJ^(>e5&@Fv&httf@k2Z~xwQe>L@a8?;di7&)Syqg_6v7Y`;t(W4NDts7T)v)E$Ur)DAf3&y zMgDCSo0M=NJT1iuVfDLD8^Q`Eo(2X17F5(Xm>AVJWXKqxYW6!!3?gLIH%LUd04NB4 ze?R;#AA~HOY&2Uk1QK+SFIzqWWa*IpeqbPcB9CYw0#FEHKVv^tIeU{K5DKVriHKt9 zU9uTgA>9ew%OO!_G1VtbnV4>^tB7uqs_~1~=3aSRks?uwgN(SlV7UiSAAtzf3or~=#IzPSr4v)7 z6H=vMFk)LNIk`d>MNV< zK_^vWO{jn<`kZY54r>23@DK}bni`9Q6g@wb?pU1Pe<0I3a2rq`QkiFujCohC+r3sd zn7+p#Jm|Xssk=CR3Jj)uMCr849fo-!7I-H5_}HC0chK=iKXy2Mu{X!D*vq z-p{cRb(~9oM=pqkB=!;D#UA!HVUwc5BE<+shUy3S>&O1y65zM-JzcIOtWKHI@fRVZ zr$GhjibRBrMubFw1A~G9@dx4KSN+Vt=wko~pUM926TI8MEu)5!Q_3V{Y8pE=rLyHA zT6aG#&{`k+17as(SmY$ zXl`osglbt#v^3WR0+39trIo{h+D-FO1a4N#TX_X6BxeTjIZ!fQ#xFlUhm2qM=)+IF z`}=%!Wxixv&fMV3B=AfSptJn+&(+7dDU_h#n4;0+0GJxNknWrbPf!ysp`{5S! z;&pdMB{X(DcK>|uvQ~FjzLqk&M?w=VGNe`*)mL)Bh#_gQzhI2u#|sB0VWmgp?Y^7x ziND-F3i|Ws(vY5gf?s%8V8Py@q>~at!le2A+k&;k;;2P&>Z~azZ7p}jP9EtR3e1b6 zX(&Zja^u2ev+A!(ZMQeis4c~ww-xU>a|)o)k@1~Zop(g>5b>myKL8r9NnVG>@zC+K zRX-{lvsw*;fxHtBzQUQe0*O zs&qbL^`90Xg@1=Gk?kgrW^sW4iV313N8=Ng0i;3 zBAlE^>+{V6=DhJD4Tx^|dqOM-NhXm)DEsH)7t;uA^>}9*bQ|YI0@7AipXrKQGTU#{13PJsp?5 z(Sl%qh86Kq_*uKBw%Uj7Ek(Pk<(-D8^4;gu@AN*N5o9^R`MXaX@8UUF{ z3jVV0g5&oK&0r5yTNxR0VJbLbg(rgeXMWV}$ii$>s=S#5Iga6AUI)Kdrl~>{`!*@m zK`GW@E!uu=Tt^ouG(EuS4*IY9=$(5xQH)f0S~|?JDT$O^4&qtzup-gy6y_#HcJ?^nAAo(Py42#J77c zl2?Y6-{020g4Lg9=G9I9T)fd6K9m}xDV4N2;jWk^A*nxgbfdvIPRv}QgV`Qq;Jf{i zFGICDb6c)t*mgAfehCHlstlfcB86TMOQIM_vC4THf6F{~c-B<=qe~_-|0sAl?=bJU zsIEbrwk3V4koj1lf~Rh3^_RK>lPRWxwVr?=>jhk0eoo79@L4?*29=K-UhJ7vLt%@h z5RuMjRlM~U3w7$fyj&7$DM-;pNA!`W6Z;=J~vZ2+aLcUS8l*w|LR&mN3 zSl35*EHZRU0R&ZbM63)W8bW$2hZK%s82_MzHHI${=@wbG?1+Oh9Sz?bOKLWSDVR27 ztBEX)QshpCS>F?Hx~O9Dh}X2YPX454;U!USy*clCm>Nv@5|razIlXj{g^rmy!y{Ip zNeYlmsivJWa&D)N7lvGd-6C5!$g=Q^4-xQ-P1#!T(BfB#eF`*XEh)6O^IV>$gXwPc zO3Zx1v3*-1>g@e`1jM#bmP+%(b;_;P1G@Fg_PY;4_Hwb`+5DqFN`HL|0xmAJpde24vy&k6Bv$5hZ*E%O;_1C(amgunVkwjEEmyqByvuHMqp zRCM4#+SB?gnRl7x%?HjO&mV>y*Uc@&XU5hQ);E6}De9%#00rwAm`IpeT7m8RGPw<-~=-bq=OA|@Mplkv#hej9Ii&F4^bqWjz>+& zOcy~Kp*Z0V6~1zVH#><0+~ zSberuh%CV6vQF%i+*gYdOfyb7I+e;r#v{ARt?7)K0eB7xi%S&|`LQ%8l@+AP#E3&G zQh(T9JyIQdxJ<>~7*x>kVaJZn_z_fFM?`5ObjO-dNZj?Ss9b-F+;n>tK=Mp9%V_S; z$N&KfA|-l2c=J95$=s^l_RG)m&%WiDe_JhB{}1-iMV&z+i~)4o2$y~zjg%Sq)W@o>|W|Ju1ZYVKBYG5-@As{ zU{Pu9W5{E9JkGc?#c0-SKc?* zE=jR7<6g}HIHXUX zJ7(5@;$5r$?!ahqZD(=)jD9&3+G6ORpx-+@J%^)aG^yfm%FA3X8)iP^O8xUlG|Xs4 z;FiQhLG5<@FeL<{{}G(ZPA;k^XpKcM{QJixpP)(F59%M6<1S&Apd)*!A#D zT#vlrr1yJ4JaX<+hz3qZ=&n@aGNMWEnWI|(xU^kLQYzCts2IMO!^+XBCnPx$D&43W zta?{=l2$Ba&va_7sBC4TyB|hd1eB(@)VtANamAmQwkX0H9WNCk%z>{?YYi#NnIlP7 z2T}3_))N?oF#egxPRaEe%{474XpsTBrSz{~cz`YDY#AlJW1#m4)s_I|>OF%>I73ipos5i%2W`jW75z?&SD)6-0I=L{`LFVgx_{b3`1( z8a1azNE0F)5)Q=%)FGkv11dDC!vzMgt5}3m>3po?(J>5Yf3kryb?>kc%KluM zKbK!kG)8JEH;&1aRB}l)L~4m-Ry%sJUGb~wSNBfWn{8J$&!JyZUpdDvBH#-2A^ z5YQzF^9s<~RcCT3(2X-l+hpT+YCJb{@I2$tfelU-GtL?FUiBCT+`aIgS17adZ=c)k zOk1XfwYSjD%h!Y(m z*Jk%yJy_NqFH@F^AL-!!sNW?_o?bm7W24%DOlDO zS4n?PHCnD7tNSMuapC(9IH!KVt=8k`DC6{#&T-|Jqo0R`=h(1+T+J5~;ov*59tmQ- zs&qPKKoa_|?t~%(W;W+G??u4Q{p?PZkN$r})1^P;lCB4xFk{PN+P>h1H?r^+I}8&5<*R9vI6wI_dJtYWu5%Y(!7}%>oNabD1=qu_=!!xL?GHv))kmS zm*=1nRi~Rb0sAhS1M;aVunhC1m>y^SFBexVXvpK$&j;eIS8CR;PM#xhV;4`u6%6yx z2=9AM+vZF1DD2KV&sbik#9B#bt9us_E=HRLFJ@126E8z8l^DEl8vy+T{=u%CmtXhl ztyfniX#HLfz;iU3(YX};=%cij(rkT$7Ty5bB%6(a8i`UUW_TECXTPU?<=$ zVWi98i%8ocI>SK}63R6te>|;3JZ^?F9^Y>}wfB?qxNVm=>>W_pULdr-U5U5pU!i#2 z=Mc;~H9t4G!KCkZwybt`V9F`8JzYsxtgjh7!LB8F#&$zw?Em&thOTjos5k<)t493! zA&^H;QbluTBdQH(EQvjBE**1@1K)eDTYoiCqBe5}2<=J1u7ToS4)cj{P98A`s_|dq(Mw9w5g_bKLd7uWu($J!>deci{ z>o`vZr&SAj>ZkmStwTS-{D?PuNw*kf_U30nIL*AaLBPD0FCne1bN0X=;IByL7;^4Q zNjTJewx=3>^YVAp7O$(B=5-HE$~a25e}+; zV%8~x+;8zFQsbDs`XN7-3pxl^E$G=di79NFliHU}YWUlcPW^U|v2L`_D?lV$lC6>9Ya)y?^# zqF|$-htL{TMLie#s8t%-p-E|@!tuhGWZN)J0$~Leq-nLnF@nVijf$$eGAJkqP^j?9 z7HPW6#~TxLS4OL7kE^I-c%^C(Ms2w{x*w$m++pfwND#SQ3OXZM#m2}tMBwvcn2}lU zNNgpV6Og}I7gwsG^wZoHI*w$B{_CObK@JNN={hl34Y!6fg+BM2C2~4co%Z+;CIqIk zS{JE7glpz$UpfkrHY)sBGbg_6+GKt$&sZ21*oLvzW+u`;ZQ%mCFZ1>1jZXprC4b!X z>%a$l?jKqRTgq2Xj+|MhZU_{QB((BKZx4FzO4j$X$vtmt8V;TZYi?k>SLDDkjOYAs zOI)Ad^X+*CHquJKCXkm~;%??S!}}DIjHS94{I?X43zF@I5$ha>2Ad)^yK&N~E2)1` z0nEEAEjNuUG?cg8kk-%BEuuz@0X8jj4epH=t8(CE+Vxg$6{B63Ru#LP48c~t7W%eu=?_M^AwLcZGCZ_&|=Bu$n%+W?KfykOAMJ-+0jF1)NJIFQD0LUgcHiS zmBS4-vv8fP#`>C}!{`llxK|c`&aXODQu&67t6b&Yj`COW@!cQY6+joUgmFAIpbGH2 z$_QUd#e!%=QJAz3K zEwpuviLKW7IV074(IrV`>}`YbPSU$Xkb8nvh-*{58!v}=0#ApF}v~I*y@D|W!4eQLKQnraqz`> zOUZJONPvz(hzpcxH?=DMM!dK>cKgph^o>?x31B#BuO|nabvJrU_a|9!4gFz8eh%Zl z*MAG}+Ss>#OWqDl@32_CZ}BMMd2;tT?n$1w?2OU^zfF;+lg;{*yzv46CNJXA&*~oWqqx9KVgG^J9xg3ZX4Rv>Npz&*V%HzN>1ELn=fD4@%d|)G397i zXYgG4j(g`wmRkP+jGg3!lTf#tv(@*cfz0fv> z`js1wnnpMqE_8bU^72^Rt)6nDpu$=^GPjDJZzNoHW!okiF)n*dp>E!Dt2lG4!_li7 z9LHh|=|sn3)#WNR7Ew0fs?yOmEu`ad&RPwD_R(hcU%!|A0!PW^UChJ=+))ekby290 z(T0qO3n(EuB5{lcsfkC`Gdq$E2*B<3r$$zE|FVnA8Tn7&Q2eTfT<2`qtNx95A_GP7l~J`!(hW_rBA6dpviWqjlbMzP3LR zW$dP32;`B<>~Cr3>u0nM^P_E#@>;5{>1cB&nEC5lx4%zI(@^ZrMl-HBc=iI#pH(ZC z;pJbBjA^UvcX}N>x(XuNho;KhKV6=cv{qLx&23M;V!diQU8(`yCYCDm@i)oGl_c^z z%Nv9rg>@ z{b}WkO92V|X-x=({9vhKC~p}P0%$$qNax5WkT~R?a6Cycf>`G$N$y{w7|HGAfnB~~ zvr#I5o+uDy5inl`bAmJ^a>2r^93pJX$w}0#dO)ot@IIvxwNHEvE(K4Bq?pF0#IOVo z&=J6}|CUb$z6Jbh5y4YKPWbCN0@K+TTnB`U7Ha?aRO#x<{!QO2aSSDaf9`7Qqp48n zvv4~TFBZ6e+ME!4@4~0NH(9l?ucBC1H!|%gZ+8RNsTt{8@Ey;$Lh!%!T>PaX|r~sthLi( z9T|H>W!HB6c@`?jJj%aS}kY{|{M~y2As!UqDQ6>SO z5aoO+_|0=AqnnPsXw&y}&$wf~Yp_jZm-e0G5VrW!?~}V8C2}(Gspdg9)_;8B_7nfz z%os?G;TvGjb<>5a8>F+tb~h5n`ihul@60tri9+qBj%rZv{lWg;*Wki+&l`UKW6(GU zuErP?gOOe|)2fjgRzS_ByhfxLghMn9y9o-1Iy5Q<-gfNNm?hDWSc6D}Q+a*hXa_)X zs;HojCn0!iM2xU7l{J1^uoG*OE1a#b_bsL{QJ{h+!ht`VU`qW|)9No3wqc}#h(^Hb zP*()Tdwy)8cQ`*Td~{p;%?M+GE;^}|3YT6y$X!7bMcDK2)6OW>Yq^UJ%wv7=s#FtjY8STbBduA0aFx* z0kiqH{rLvs5ZXoq?BHTjNxt&g8?lxClDYg-YdgtBQX+~@U883`DTBS&3I(|of`_%7 z_@r%iX-FkO3t&rsjn)dqZ~zln?FSD3Pj4|_b1y^kW)+*-t_r6P)a^D){PXLerxBX8-Clu5rSU+K5DUF(?`x-<|RN~j#L6! zhavJ6@TJEr!i@azZGHE?h*f6CqQY6_Yg(f=#mO| zeJIi?*qOo4+VJ88CViJM3K(va0PSKTl1n?Q{tB4#Hj*pAD4UQ&k^c2B4>ikt(^{;_H~%_*DEz+*jxG=~z38UXC){$%5GrZ%Fd0kbHHw zpI%l_yUtKHN`m2VZ?pbgvC}|c2O4Vp9#At{lWOTX#80=}R*m4zTY{nxjKGqg?P~Wc zcUZuR6uAk4jKc%WG$rYdeNFXA*|%0Q8#(r@J_wP&5_qdH8%@pn-(kj&&Qtwyp4N-q zHSX1CpE#kPC)8??s2Ntdhacw_#c_@PiK1wTWBf$=-1U$D^e?Cv6lw$5W_!|Nc~Z?} zO^L8pk__L|VY1$BuZ_vRcCF@iR9f)o@ZEVpfU2yoTNNn{}6CU8v)&$D?XWk6=cg4)rJbG$gAMom~{!s@|?k7Smi=K)coNx-a1k#i{U|FM?HL z^J3j5Z3048pTP?K5xqiPI78~IiL!-?w4u4ZA$K%;!xQc`6jxhN2 zXUO>TwU?DVJ2H~LWxiTLqFFkDHQGY-YTw+6l;gL%$sqF)N1%w_s8Co@4m;-PCP4qM z%{rb`%dxudR@T=KDvQXTMz00Q8%enO3q#buFmxNTVBQSlnRT|V9<|dZziiv2!c7l* zn3xKx*#FKMYxv|uO+gCU^%S#|6{% z6X>4bcQw)Nv-fCikoL5^gBw{#2=t49#pG4KALaD88XE?$V3eB#K+9_%+z#lxuX5*E z$3)-HvH%ES*s++{=1;deb7MM`yK>^|K15Ne!|e{hEHD`nazA&Jh^W(5&hPu|i`Am) zjlGwPzPd{wkpV-njHBa;W@%XmH}oeF^zn;B?OTKjIfi2mq)DdIvJoXtt_^<^NL5Lq zm`WX*dB|1^31c5DEY#s6Cf@ghSTWf#m%Rb&GQz8vz76GagC*l9cwo_@KeB9BeZ}74 z`nJQfa>iFc@;qGWw`AVD)QF{*>ml&!Cd6M~-G|RAqvzO{I3&H64BR|fksmb`x`_8U z&{P1Zk|}{Hu?-<8sZ-4{gqpE&yxe^lL8`xa^sJ10dX;{=P7uj$N?I->M)UP=w}5WX zOeZSuk0VeB4my%8!Fj1-ZB-2EDmw6&n$p8hBsShZw1Ysu68b(YF(H*Q z;$+k~kxnFARn+(4GlV{;)i(bq&SG5$C|)@C{-*^12LC<`mC{GlBGgR|-JAsNXENWA z9HH)gVgIkiy=4z>#wa5WbA6uZyw+j;!)?~a<#FGH#OS}(4*Xu#ibV4@?4u4z zlj5h7Axh*H^p_r^x!~R86N;u*$oWPwi8R{y2L85}62q$ll@j_f^9L4G8I;0H(|&%1 zo_szlspb0yT3Uub#w$UzG{XT4(%^#?N_H+esGzYF;yWhCFC!^CSO>b+YIv>us&BF} zKKj+GkT%9_)O&mKym8fTId6vzQk{+|{m=I*baL~r?LRwysV2j-In@ik^7FQ!#@sCV z``^Z9CL_$rXXgj1S1w!`gkRA_?2dz&#oz;iO^Xwa7oW&HDi99ACs-2{eXa<#lN?B&*NN!;(64wS&$ii1m%-EEfOi5rg)_JswQU$K1 z1{`NNfn6v$n{t-?>UjGySsV${Onfs zB_7Qf_lF5xws`eS`Yr#N@w{G@9a|&y*X59es^hYNfaRNKm5`M|eDmogPpmLL;9-7= z>%78U;?H*@sun-&#~+PXpU{@%HB2PsLMR0&8m&pD)zfZdz5;sqAw|b%CiY>rb^^%Q z4aKaId{+a_UC>HK61oM8FBu%#LaULlwpsk(A8*btt2_ozG6?q8%qLS-*SULX)lo<_ zp6(w)e?)Z;iY$eh+votd~In18IKiWL#uTzXdhWg=APmA-F4*2B(t>p z{vh_{K67}aAKS=lJ>QX{$LcH2z}{jCb!CH$j>%o^m zZ4zu5rS}yMo=dgo4Sk2SGgYW}wLg|Wr&b6Vsfc`RW}H6VEz+Ymut-Qf(IVY|K9x{u z(&G~SZ@@gq*it4f`5!WFQz9Yb0l)Y@pzr=%(c#uRzV7nO`truw@w5eDfSw|eYBE;Q z^O9k${O~%6s=b*0KXkogbe!KCHrh08Y#WVjCzHmut;Y7mZDZTE?IxMnwynmt&h+uIst?c5S8>=#0DlO(?iwvd61wDczw~>dZzIP5&NBI3#@A zH4ihA{5v1OuakRx@y6%1t-I2@gS}5D(L;W5^YF*63Dla=fHU9Y!CyZi3hf=;8+Nuc z8Y{>B@J(3v7z{KG&xCcM=XQvZa}rbcpY1xrxtd4xiqUkkoZt{nH@Ax?O_w0AL|uV! zE4asU4}|F4%&U)cI_Hv00vyMPr?LO3yXLPbr00U9r4pIob*=N~?1xPTWfJv5vvKoC z?Yo5d$vZi;iu%p(`enVRB|4Tgh4f$Yqeu{p>;R^ALP}aw0df%8Fl&|$P4IbdG4J>eW)x58 zabp>xR=+5|_(YAWGs#qJYs}YYShg)qU}fQX2Em`v0Lrs-uqtDY@fDse|EoI=s20>z z)BmYydYSDKVaqN^iG44Lz@Lr&(SM32s_geau%(Fk60?~$wU}0v*komA2`bK{Z4v@* z5gs-woH7jkmX_N9jXVHh?X6Pqii=BaVSs7dl5Y~X;LlxP&6%U9Nz`zS9GlgRQTfO( zU1C4JmP9tN4ucasBs8NKtJ)#gH7QTWY>3#Dzb#U_VNCb%^XT?xp_PrLOlQa@2e6;Q z$#3>2QF;`IF!_AOL@6Tt-7vm&@Si9S;T{nuBtq6&8g%5XoK&tymB#<-CWYBtga1f@1veO zBVF34{9SQO66yviUo5zmfzj)pM^z`Rv_GbFKcqfeRCTiGaTiI1&j$*$jV{|yPl#;6 zL_UNg-8AaPG>9ZPs6Kfh+&;8?fYvlWY4T=Z%9COK$2Do+;T@iL=6~%Urtr>zw1teZ z9RKfo?}W2&4?f`&#UFLk`E37krx%zcyD-{(Ke@Ob{kVs)+_dfJq^7r)-AdGY3UuX-eWrc~K9tEqiVp2|RTo$L>H)}&==D%0Jtgm{JTRr!`H|J1A=7oyngY?vDo}o-WE3Ca0(&mj|PUJSKNCg zAP_cKwlnffCeKXT8j$M?I96vhDCT->EXbuqME@<_oEaRS$p5Ep%y89&baOjmwvSd4 ziufKiDf+Kk-(s;y9z4r^nDIBPTVzul->v~?a%Hz>y^De|wOzaH8|@xpGPBlHG|_d( z=cpVeYc}ONTpFH;L_%+g-|+b+%wdC0WVu9^y!E8cXDKA`&on}Z?PmM+KjZ5Wi+)qy zD8&-`W|0mSX4IxCoTw%g{Y_X>TasBOG$c(aOk|gIy>5-F{!bHx|D8^`k`xKHSg?yG zN(3)oR_T8Y3Ol;$X8!y2$>dbY;)0qcevo4!^|WqDA9!VCz%O@l^!Dxo-Z&yNu_Nq8 zYq$?s66;eKv{ccgGDIuxKNR7ql=`Q`SK%d}n9Ep}Ev^!kQwL=r`OlHJf;shzN9wFp zP|Yp5*&_A_a3>;m=cGj&eZw5%-BvPPYBL*PW;lgb!15jH%5$ItLtq~kQk9EiL9n&! zq)%#hGaGQ`LjEVUPeDzHsw7#J9xnyQiquWmnI~(w|Ez7TQq1EUXDexXk9zW2h{&95 zX=bD*59U-xWHoEus)_ZmW}MNc^soNb7?n)Cc=_-h^0b@@V*}W5_$zTKJgCYzH z=e(02k!CB@*9aj*de@IW&gp%s=+~vmY09`fN&HIbkEMVG%^h>noA*l^KcFtUU5C;h z8_auP^=g5QQ|N-_zXKWQAd^%1JD!RfEGLTLMy19M_7ZTr`%k*oc(LvOdUdvGa|`|^ zi&Z5wwX~0bZ+_>BPz&Uf)Ag88wE1i89$^)vzlAK}bHMa7z8NJ{v^7l?X6<)ipYRG; zfVqS_Z0;K$sM{9>B0zpf#<^!33;!vGJL9O_V32#Jp88=cTl04|JBl>}_t3~bLVX6@ zIhunPPfBrola%UOdH_qu{?zkKK`>U_`Cf3Lq ztHJ!W1uX9wjKuqtSs1Vq4DsGFn8W~Beb#joNToV~H7jSyo(Os!9b^DxB3ig8qq%w! z!}OJ!{lRwlc#gOG`O#G~=&$2Vga;mGVT3&yE9-+%pMZ%V5Lf)%$RF=#!TMH=b(p+5 zrpou)1RB~*XudoHK}-ZAZrC%R{`DoIJu~OVGp+MTYn@=vERf5)(4DgXFURP)_5TQ? z(L5iB8fHFMQt;d5bAJPDyf6CwIe7rLzLj7BsDOp>i#%NajB9zR!Q*iF;(Ac>u-}9d z4EvU+R)a~|7m!Us!_?1@R$>W!GOWwuo6BwQ__tj~g^Q~vw+++#*@WS|$yWq|*9Q^J zZ)UZbCdZQwe>;gO1XI4zOY+79g@Lsnzlw-@YHJ1@j%(xTS9v`q=J~u8D|c-I-zE5u z0|SOPvyAFEL(M&Im)~yNL{1q6##H<_^U$hmFvja~CTh``rsZ{-Z~06s`N4|0IF+Kw zBQVx@Wg4VP1r{IQ6^yhx#ChKM@RqGx3*`NYCzk$N6*(9gUAzwqmrs-*?SVi*KvqGQ zBpAy5QO;Qz7{FeKA_c|d+$M2&3}u^4b>qXo&Nb$znX*@*e)1mmmi~r|B$&|e{KbzS z{c=#SDMeq(GBAvMo?JS{f_N121S!h8ib9h&pPO^O+x@e+3>Gp%+v)PoC2*G1T!&!Q z*6}&?GxkJ3eLJ@D6Z^phe)ubo)eUwl0JLsURLCxI(n*nM!ms%b=k<)_@aGQpkk_13 z&$Q9B4W^F}NW^k3rmVRX1sxJe6jqD+KUs9^m1`uQ8QW_I=4YEl3GIWk-MhYyoR!hN zP?wd;qNWTvM+Ez1l#T}l$dFjncu&DTI!)RF&!TM>_Mk6K^xNy4?`Xr z6{;$k^Vw>fJQofeA1h4I2vN&ZQbJSm@&}wIJ#W|804FhVVUpOJ?|&O=vYH)T60$;1N4%EN4{1kjHNkK0PE`cOIVX>uH-Y zUA1YLubD&N)H*ihewuDB$9Ss270`&n^@JG~W?m0xn2}`H*beRF>LHohPA8*cWY<}~ z1r}Xf_PnMh*{gF`<{FmjFLLOIohq ze7r}lQWf;|h;vhxyerSFBbV<{zI;0KZT`PH>-}{gWrts1&*#J~ZlYM}wt7*W^CIq` zW|>?0rZcB;UrPgH%755%OTBCl5E(pphmY;BxXLS2L*Mr(?L;5!uIwkH+13c3g)9vd z)XRgU$24X;ZERL44DfQ43_yq0$7!x95b|wtsb7)rzQgR{luFptDktec$Otn(yu&$` zM@mpEuuh+0EU|4I5=>>iEtOeOZHULJERd&@3o(rnHM1Nh zQ2yaq5FR`lf@9QmOhx`Ze|Smjk7G>`MqYym#WB=OW&z)k5tSv_X9FyQ_nc+N%st{{ zJLk_JI>!6&*_AL*v+69zr4IzP$gN87&*LYpH9%u-Uq&-2KRk@$mP#qwkE?GLpHW-qsf-RD%j}QxUE@c3W9LQXUy?sEGkCT z)bc<4e-m(A_?vWyMDoVHXY%6BaInaLJw_~9`Dl!&_ke~a>Qr4+Qt~r1SCK&@n+R{q zpWJXTe9iZj$h+@~$HaxRRq=h>;CC2g_HRITo#1Jo z`S~C2-dsdT6Q$r@Q-_N2bu^p>TAacpYfl!Qh?#f|DR`fIZ`LjH ztrZXiNsKE!m8PeFvAlaIIZ?n~&XUPqnE$8vyX)TqIb({;AF&y;3KO{BM-Xye#_1+L!%bX!EA^e(n$$EX$L(SD z9ia^nz4tPt#rdJEXUJ=jKb7E&_0s%Iu##AaN&S8|OF26_9TYrgEfxw|!uH9{+D_MI zX5C^YqNZMU5vOSMO}FAPbL2F(@=fx03>CTmq(d*1wjedU#jP`>mH(rHK&&`=-{F^; zE|oGWp31z%zxmx6^uQjy&Abz55ZCU%Dx=)%js-!+>6Z#Kc+C?Sk_~E7GvW{dWg@ z;f*`OOWVRr){D%@sg~)PWkYjSlzBxCSYP+&OuMd@j!ki0_@M~1Gfb62$<*V1N;@S< zBh=P~#HAcf@Q*sC%csTVNi~XFM+QQXDmFhQ%90B4ejZJ{J#)bI<`%JRgV$z$DaLa4 zvqDu@X@Hs>{r0x{Cq11Q*${r1OS;#_kG)uLpt_H%HKj@=WZ@#qi!_Tw}XU zqZd}$igHc}o_tFx-Z9RVQk3abr2#TuEMJ_}#{Wk(KueYLh3?Q+3Z;SHLwD@7ngi^1 z3i#n~vbs<{W)pd)_+b4!ST1~cw4Y$8b0~(kz>rfrni9!7cAu1-kJ4WW-Q>G$23F)w zi}1An7JJhjT5dkB$beI-rHq`zUP+ot#(Jp}11)p)@I_MiY8bS)oLhU{c)Qw1S<&rd zU(9j(NOqL1NI#AjGXPRydD=U>Hi@Vm&3JZ_KUVhqnZfum0`&U{1TQ@7?1kIo)1bKr zH^X)040AM0x=Oc}ysG@SQ^zbK?;z>+p3-Lt+2+X@T6Fb)dpHnuB3A^AmG71XSm6wq zx+ON(OojmuZ&$}6ec~_f?DzQ&v7Vm9k;j-hA^s7*MimraK1a^PP$N2qi8`FRq(2oV z==C!41qr;jF#xj1gI+D`#*d!TPv%Q8`)vE4Ho2s-hvG78aG%wKN)0#{^c3KPD54xp zp%tY0Nv{e5sTf#izL_uYF{JBWG^{dRCVHo4G}H!wCHR_AB1tMEn&AWkptR;RY&jacV$|9Q>B?m2fX(%y?6dGyrAiydXmOB)U|nQ3t1pIzW?vf-aq!Z&T>SnCVB*y>}En zg^gxYq#A@nz0``?`JUcrFz8XI0@mf`x!JF)_9OzD#_Ml1&{N{;Rqy8h#lzj^)n~iA?q+*(ARz8O+b!#PetLp zh}AE_?|osi<*Ea{nGd!s5XG3*RJK}Tfsq z>gbX|iMbQ9gF94~b_+Pn;k#eoj^D&A;40Z!t3*a>ap1KhG&ED@8Gk7wuRyl41mFG? z%UdNEFx*ZF$9`XU6tQ7q94yATpp2~eEjY=i3Vru_x$dH>g$2IB( z*HNy*lbjnczVhc&BZV(uWozF;A*sqSK2|B+qJvm1&k+AMdVkop4dK?j^zy64<#VZ; zk@AY+9HJtA8PzeJ(HMalyP#-KoKUbZ3~8V6td*HqBRo-Q36?QSLWOtCAOmWTw&8v@Diz@M81v;N%FqvOm|4UepBeh)Mv{)@F?~;mc z3y;~z*R!ORTnip28;Xxi&90ZMwD@C=vs&Au>r(di52JU&%V*U`f7NII0BM1}a6NHp zS#es~HMq-Yni*_{Af`PW+@IexV%7AWK*EYy?t1hc4r=o()!D9MN(-1`9s+=&RN2pD zTXi5nUsa+Jy~NExDmymx&EDB6Q$ZGOtSh$@jmSkxe^nAQa%J=u2ga`|`ooEXzkv8+ zpy|)BJE2p|sdFhd)&vtV*0Cf>ntgq2VoTk#d~(G=T-|{fE#V~{Z;vhG1*zS!>6m}+ zBCMOP-GpljoL2d5RjHStstRAb1xI?vdHmKj0{ys#&F_8a1x?j6-Ks*MGu|Aj4_aIn z5U{xCxXg4t(Y#R0VS7D3O@F;OqM0mJf zm}r_UlVivJwd$TUyIA^1A5UFTuSinwm=a!5UqMU~o%lSfHaq$6#OAj9J^f%d?vK8b zJa1HWIxH{`E)2smJ9m$hEV6P0;r7uY_R-S69gfS%5d;MKu&kzqbI+&mXTsx7+#e3> zFec?!FR$_}+Zvneenv&Udyr5h!r_nYAMR}aqz=imn9G+9UJze{B(`CxUyYFE%EL<6 zFbYbBWNKD(o+CdoZlK$4p?%FWTm2$-*dizA&& z8O5W~E?vt)V4_lxkYI8%8mr$<)Y42k=2PB-@f87dH^SU2_0m*P080AR($5qZ6P~cmENboc zGo?6V=C2jKJIA4l`O&aTOjA7f%79)MHUaqTLfWEOyLMBjpL-#y`S-Dmg*Yxcz>|hr zEEyZK(r>^KmYCYqUs{=W_j<4_P3vO(%1(l*HVBKT!aCQPWLzk)m z%J5Q7{_bq+edW%^+T&L;)7V<~Xxex=jFID2-!I|EwuHcw(ul65DN!FU6OO_Nhg#=n zyI8``!C5bSqesH`UE)=Xr!_V-)lIQIB^4ObqG@UYQ-W>8GNr*8&Q3t`&QKvjI=;xM z9qi4mPa#5|?R}=K(;q5{fp)j=DfrDiH^e3tuaXgIwnptj$a?nV)vX_umrxkBMV~lU z!%EhPD5s5PT-nE$o(Nh=p`#J?7rUwv@`#A%-$~R!B=hK%TxC8G#`=OuZbxj+x2d?# zWAq|bqczGIT>N|0(^-2RCCFG;hEkZm``Z^#j5}826G<@0l}wbG?oZqAN>J#W=e9HP z&+1D}Mb1lmUe$>8m8~Jri`X{?0R8dK4!#K;^VwTa{J_W`_Vdu1*H~lTO-V;fcCqZ# z{rzb`llaIIW_iI}a?$39)68{UI}kH67VDW+&!vcw*$QbLND2;l0YLi%$9ZP4LOtfs z;Vsmp=c1#)ooK+wG05PmS&(P6A;^8)>#2UyE*nj`nER>TZ{N#)Qak(=6p28zx4XV* z)q0rAjqwd3XML2EL-g@13=K*`;d&IGh_t^J{p_^DHrL}#yM;MF-WAA|p6(N4xxaMP z}SkAvT z)m`rQzZR0H!;2hN zudL6D@ z!Sqc~l07`RV5s2ahx4lydRigDJP~>9fl3uhcNQe3S~iI#tYwLxXds${!{L&Jsw5!o z6>%`OFqyhkWanv_rbe)={>q6o$z8-!NJ7CwG&>F>U=^b{XoHFMahoWTfkFLFxT&D4tHNk+UQb)#o8 z)+)^w!DiDvZTRcSCiVs$R_m13y^E{tgT=GBeYVGZ)=Dnd%{(f?(iA9t=@G<}{$Tip zj^-+n#SC#azEyOMpx3F|Cyn->TR(iqH3Uux3|8qDaR9+Xa!{Pjaf#pksg`tzdrCe~ zK88;YKVB9Wgf#_ZBz+DF4aRgNeFT^g@2-O987fN4dR+-mcd$TOynV#c`y?}C=Uv=P zh#Mstf4X>l1MUSFDzs`7IW{;aWMO}cq^qkG8djWr&o$<6h^NYWLUCO{ks-&g`oCHL zY=w4d1H2wNzE<G9<^3EWR*T!0>{3lAiMGjcYUu=@Cy)wA|``_jlR40y5M zR-^$b($=?gv{q+%O1krHo>*5ABK*6|DK)s#O9)i9v|%0K3UNkt+njxWiosS3K6*|_kcAH4@m6s1VL+-zqe;>0}VS_yFqNksq4dz0|_vYz|4I+=SP6 zAB4*?(V;iO}`F7%v zM<-*gk;LIDw7>vgmq+{Eq%}JYjR|qz*K?2_3LVSjNVo+N<$`&daqbzj@gb?@&^$>~XF@^Fjnes_~$&3uivC*ST)OHiW5dfa=W5Wx*O*`JnMmb8ZS_^2) zA2Yc#iXAHxfpYU)jBI!N6kwPYrk#JUpJMfv*|jh!6&n>J>Q zleg?qQdb8cSA-ejguU6)Od#(K>lgcsWK!F=xMy3LOndJTX~g>R*T& z#ikd&HHyKM`l!8T-yzc91Zkp1-4Ii?@#txy*du3e6&~i^$``46P;dW}wPINw) z+8r0QZSeFj{qZW*YK)xvwFr+nipZy_24`nLCm~UFYE7}jR<+)J$vveg#L+&P^Cv5k z!8C?zM0H7Q^$=dRuRE9^p)pJR|c&DtTjc{cI^{FJ69WK;4{L1*Z<_LKSmT-vW z8Vw`{#G+X4RFLCYxvoFdiYL6SU>+&*DBauID%t_rgXnNtTD=cXl)D+va%O)6M^UAe zTe>E0vKnzXCKNp$vkNOY%r+T@)^n0K`!|zE7RP1 zJS5S)Z^YSbpebfMcMUs-Q&BWiP}G)0Ql=zD+b;yp;Ad{=uSjqqIJ8^1bb0OOnNp{n z480&q4e#}|03rq3*jQUZ+_N^4-dM~;8-F_}CE7k5b@RgEXwh;+5T(e<1m^7fWH*M} z`ABDLsoum7w2Wc$5_pVS4&{-m60t}s{}Whrx+-(AA72TNcKQ(^H`6yBKiC)u_fr>qG`Q>i9%h>jL5bXSHUp2P{DEe?2K$J_99^$Xuee zxuXJ#J{>||b5{+xvHLwre)W48fH6llua%SA^+zR8VFP{>0XVwez5Prz-PFu#MklLa z469?)?#Jqs3WA}~NH)H*8KkyhuJ&cw$BEH_v z`#a~&YrHIrPm4qc*-+@s4h3`~n2Q^2VO$0wHKwM(6%?^g#%;jsROA_)no#77{iRrl zAgD>ywhNils?2b&jNZDRu?9E!htX_0dI{;c>5julS+A4Pv)oUrp0jM;9H?ljgEf*hnXHkutp6k9$1oJ(mD{ z8YiUKqaRNN5fpnlA-wa-EhnLvmVbT>!w9ttzvd9?QPbDO7oXT`d90Ii8>8epFf>n= z_d-DA*53VF?r$bSv(qG|0T2P#Pz0AX6$^$J1I&=H;r`e&x_F$m6a`=epB;?sRA z-_YJyF%*@MiJY|Zzd^AJ5D4L>buSRK)*jjSIyX?36JD?Ei&{kh*hEAOLk<*S<#MI1 zK0}dmeJ{1gCtI-MRXMx;!Rye#Fb{6}Nc+Z>p-QwoRom`QU*JhMvVnAhuM82Z_tNS56Sm_;3h$ItcHq2e3fZwzj%1`|64@ZCX+Ufe3k`LLR(;i!Z} zJ2P^6hty2o)&5&`&`*22aqj>QY7jw6Lj90u1=XCWx%4{$PfwghQ)hl!cbM zTP=X5M_Z>X1>rx8WfjczL0gS125tebPfC-^%NaGONpLQ=;PEglH}~Hnt@RI&cjY?T zsXw_ELh&VGv&7YUJQxSf3h+3&YbhM3$8zZL2Hl+U!A9Fro9VfJ;`lNse+ZKZELl_i zBFzHi7qNRihGWz?>0utN=+8;b=gKw`14yYj1jJNF$mP=3bvu0v5)!Kk%U%0K_5?9= zKQ2d(4L*=_tK(y$c?)a;Fq)OZ1&&zx>4QL1R4A&0ddSy@X~$0>w}Ved&uSGnKY+~_ z2%A~^8h%s5tdIJe7DmL|OHaX?psK)NHy{hn{#tC5Wm`gj*e^SAuOf9V`y9}oI2RFB z{8!qfX#|bWf4iiuiuBx5*sz0_n@liQ-I5%R&aP-y+rQ*PREVY>xldDaaRz8(=Sw2b zcsPYPuFCjSd=Xc0a06O+o}f7{#{buED4It8y-l#hC?$2_bab8U<}v0=%PkmJoH@{x z2s%!Qb_LfM^Uzv)_#~;WLwgv1MkJcPh)?d}TsVeAS|1Ao=HLXac5GFX1r^>rzoCF$ z?-FWKN=aGkp~uJ8pdP(_+kJ_jY=F<8F(UEuP_fd~K@}8OJk>$(FK11z! zAi<3zS)JL1^xi|IQ!RWWXWJOriT%@b%VPjep|KvynZDH5M^ zK6Ojv?jd@`azoT0-~~fs62Ukyxz@-B{THrZulOb~HoiQ|Y&J`9Yu0s;XF2(^0WM>5ElmD|5`@))P2hQS!+Ao=SJjqYE$R zK(3-Y81^y-XPW%m4_c{lf7IiPXu~3cpj9WXQw=+7x$4wHclOclK4$A)mh*76S+pTx zYH>LSx?Z!OraoNWnX?o-qW(2d+jnq^Zy}@JJwCQvOa$8?i#sE-TEkHak0|O8(Ic0B z)e}N=gUyczB53D!|K^Wu zo5~^O%31sUTW9Xebn#NX8K0NB=Xad~i4~8-Rv&^iih>}@W7>`aUcL}W6jF@22&4uB z6OR3gl8Qdi|M>-_+tNTDKn zP$S{B$U?OT9s=+jsDAH_CM!Vopr18S^&Sm-6*7HnVtNj^*Eb}AyaoJ70+S;+#r zP-7>|*w{{m42&bRl;fj>U-!1P9r59q^XAsrShyExkPBJ&sp%uIb7vXb?9?RM;n;k0 zXKw7I$;aQ^;E(6#4bv;bq4~xDhwJ4^^ZV~bM!ye6!Kdnr4a1LWxn+Yjx&H#VRFI=< zv{edB88#?v&W)p~bXbcqw8DQfe@gbCdVAiJK9yNRb#Tbss+L z#GXk;`65qw<+;^8kBW5ngJ(4j5~JKVKj0pFHzIQqd*$ca&+q{kjwI_iS3)$mtoS1q zyx*qm*lM+{K-~QewcC|Q1Z}bg9ovX~iK+UD7p#8)mo==syqJo%Ol=+Ow$OlSq%HvE zrntcvpDAIyAH9<0{pnE�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%0D{0UB;T5)3Yihn$5YH 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

4$4M2T~w))VVMSKa7|->2l)*bH+0v2yF{hR+%* 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 z

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 IL=C_HKmVwjSO5S3 literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-query.snag b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-query.snag new file mode 100644 index 0000000000000000000000000000000000000000..801ebecc75297bd995ab4b9e09555c4e888cc22e GIT binary patch literal 135192 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 H7Yh6bC{0em literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-view.png b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/time-series-view.png new file mode 100644 index 0000000000000000000000000000000000000000..296ea128ead62fdecbb3fb007e2bf40e77a0d8a1 GIT binary patch literal 75277 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 UXva!c<6oiFQ@JO3kM-aF5391ioqNxH>%-`` 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 u)m5_ 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 Sw!q&O_}c=1Tj2j63;Y}7cgK$a literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/time-series.markdown b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/time-series.markdown new file mode 100644 index 0000000000..c396f03b06 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/time-series.markdown @@ -0,0 +1,136 @@ +# Time-Series +--- + +{NOTE: } + +Time-series are sets of numeric data associated with timestamps and ordered by time. The studio interface +allows you to edit, query and index time-series data, as well as view it as list of entries or as a graph. + +* In this page: + * [Document View](/../../../../studio/database/document-extensions/time-series#document-view) + * [Create New Time-Series / New Entry](/../../../../studio/database/document-extensions/time-series#create-new-time-series) + * [Time-Series View](/../../../../studio/database/document-extensions/time-series#time-series-view) + * [Edit Entry](/../../../../studio/database/document-extensions/time-series#editing-an-entry) + * [Delete Range](/../../../../studio/database/document-extensions/time-series#deleting-a-range-of-entries) + * [Graphical Display & Querying](/../../../../studio/database/document-extensions/time-series#querying-time-series) + * [Graph View](/../../../../studio/database/document-extensions/time-series#time-series-graph-view) + +{NOTE/} + +--- + +{PANEL: Document View} + +![](images/document-time-series.png) + +{WARNING: Actions} +1. To view a documents' time series, go to its page and click the time-series tab on the right. +2. Allows you to create a new time series, see more below. +3. Allows you to view the time series data. +{WARNING/} + +{INFO: Info} +Displays the time-series': + +* Name +* The number of entries it contains +* The range of time from the first entry in the time-series to the last +{INFO/} +--- +#### Create new Time-Series (by Creating a First Entry) + +![](images/new-entry.png) + +{WARNING: } +1. Create the new time-series' name. +2. Select a timestamp for the new entry. +3. Create an optional tag. +4. Specify one or more numerical values. +{WARNING/} + +{PANEL/} + +{PANEL: Time-Series View} + +![](images/time-series-view.png) + +{WARNING: } +1. Create a new entry to add to this time-series. +2. Delete all entries from a specified range of time. +{WARNING/} + +{INFO: } +Displays the time-series entry's: + +* Timestamp +* Optional tag `string` +* The numerical data; between 1 and 32 `double` values. +{INFO/} +--- +#### Editing an Entry + +![](images/time-series-entry.png) + +{WARNING: } +1. Edit the optional tag. +2. Edit a numerical value. +3. Add an additional value. +4. Delete value. +{WARNING/} +--- +#### Deleting a Range of Entries + +![](images/delete-range.png) + +{WARNING: } +To specify a range of time-series entries: +1. Select the first entry's timestamp as the start of the range. +2. Specify a time value for the start of the range. Opens the menu shown below. +3. Select the last entry's timestamp as the start of the range. +{WARNING/} + +![](images/delete-range-2.png) + +{PANEL/} + +{PANEL: Querying Time-Series} + +![](images/time-series-query.png) + +{INFO: } +1. A simple query for all time-series in the collection `Companies` and the name `StockPrice`. +2. A list of time series that satisfy the query, with: + + * The ID of the associated document. + * Number of entries and time range. +{INFO/} + +{WARNING: } +1. Run the query. +2. Go to this series' time-series view, discussed above. +3. Go to graph view, shown below. +{WARNING/} +--- +#### Time-Series Graph View + +![](images/time-series-graph.png) + +{WARNING: } +1. Toggle a certain value in the graph. +2. Hover your mouse over the graph to view the data of one particular entry. +3. This bottom display shows the entire time-series. Drag and resize the pink box to select +the range of time displayed in the main graph above. +{WARNING/} + +{INFO: } +1. A legend for the different lines by their color and their corresponding value's place in the +entry's list of values. +2. A hint box the appears when you hover your mouse over the graph, listing the values of that entry. +{INFO/} + +{PANEL/} + + + + +## Related articles diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/.docs.json new file mode 100644 index 0000000000..49b188f835 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/.docs.json @@ -0,0 +1,25 @@ +[ + { + "Path": "/document-view", + "Name": "Document View", + "Mappings": [] + }, + { + "Path": "documents-and-collections.markdown", + "Name": "Documents and Collections", + "DiscussionId": "a0393edb-501a-4679-bd4d-6991ec12e189", + "Mappings": [] + }, + { + "Path": "create-new-document.markdown", + "Name": "Create New Document", + "DiscussionId": "8c281a87-5b83-464d-b710-0d4bb41a5f9c", + "Mappings": [] + }, + { + "Path": "conflicts-view.markdown", + "Name": "Conflicts View", + "DiscussionId": "ed8d7cb0-288d-4967-92f6-d3e1bab4d95c", + "Mappings": [] + } +] \ No newline at end of file diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/document-view/additional-features/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/document-view/additional-features/.docs.json new file mode 100644 index 0000000000..a75c37bc83 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/document-view/additional-features/.docs.json @@ -0,0 +1,8 @@ +[ + { + "Path": "counters.markdown", + "Name": "Counters", + "DiscussionId": "eeb68f75-666c-44e8-889d-e9583bba2435", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/document-view/additional-features/images/time-series-graph.png b/Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/document-view/additional-features/images/time-series-graph.png new file mode 100644 index 0000000000000000000000000000000000000000..027f49d3f0d8d6f218c57619989f3198dbc0f18c GIT binary patch literal 191135 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 literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/document-view/additional-features/images/time-series-graph.snag b/Documentation/5.0/Raven.Documentation.Pages/studio/database/documents/document-view/additional-features/images/time-series-graph.snag new file mode 100644 index 0000000000000000000000000000000000000000..3c8a9d53d3f2d002c91dd0c4903137756d499f82 GIT binary patch literal 221208 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�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%0D{0UB;T5)3Yihn$5YH z&X9%xL*p~@%}~Z&+uc;lm29MX9zA^v-uKZw5Eb0Pwlf%9kJ71`o5s#xcA z3+B?IZoE|vK^kI<{l7m}$xTt!k>|ldiNQeuNT5Qpy){DKmHnzJ_hZCRfsuShpG`jHA^Ti z-G@|VHcG!BX`q(Pa4OvHZ9YS}kf?6-?*hKeJ&T?fE@-ayPXifm#^mb55O$Z+3eWGMvLK!>ExomhgnWn-=A6rASV0Iz7s!n(t^NMGFjC8-3&(IQYMa9^ zCsdc?BvT2NT5ITMNgz=YJgpPRj`1*yz@?`q#Q2}XKQTzM-gyhEDyj0Sg*Vv^7AZAJ zRJBH|xeTh(dqSI){4i;F?PqRa;@E;WjL)ZvY4_(iO^p2Hp;i;|&t__@>n0C7|3H18 z(otSao&VP4JxQAp)DqrS-_fn__(FKEiw+zOKlt*KqXUBV0!KQL^$AlB-7~$ld$~J*gPuy?-po=ABDSHmEs^OewmmR z_nkiI30{>Wduw1nyPqu5|0p!Qd?ip&n%CG(ArEH&UwT+<=9e&>w6KSkz{=`V%{nkf zd8i`eq>Vk^w>T5tC_ps4%;9x74Xlc%MqN77c{&gBP%JY`kCbZ1D0WsvJXWjMF_`F4 z-{}2@yGpI0w;rJQWndXd+CW80w2T27-`|TwA?|KB9&`BE#>ULqgF#{6tZuMj%(r@v zrAzIt`!7|P!qiA*t$md~>G6DGjBlCQZm}3ytt|ZanNW(EMqvsq3MS;79zGZVqds%8 z!Q0u5SHqrX*cz7c?gc=_Z)D5%d1i-wVrum~`L7?IH?*T8JpiwB zUiEA6PV{>8!JL_b&!?)mfC!PrGC~r8dvAlS5~U@1=+`!TA-sIOZ{yM#y>@}v*(E8_ zZ+X#f!Zn@lqC$Go1{>Nd1MeAmr%#ThF3Ov?RL%BPgD*<_v!pUyM`@sEkr1L$Edip6 zUb(N{Swg$wr_8?b{9uGhd|k$QLtN%3Ca~*Ln_R zt_;36IrF3AJ=6c zHZBNVU-t4*4lDa)*`+2ufc9oGWu}Ftu25crzFtM_gg&aXbN!sPQGhMy*t~F{GNjk7 zpS{0o3P6RY_HglzW#rQ^$uqh0?{1u&qmDbwNNu>fHXhR6M^)yike9v#L?tIwiTPMt$t<@zBIhI;vAC&*XVF z6WhStkWiC!#ByU_7yA7Vjz>CkxlyRw>SnDQz~`YK`k}g{uiLvY=`GuYtiO`ibBc!& z=enVx6;T8WZIXonqApoI_HO*S{{~D-^)frdO;q5l-+I*C5A%CT%wom9bBYqqFbyE_ zc+?K4Xf+{(g~4O7<94S)93zvsx2Uongf6!!l5yu;yav;ax$~3E z4&5pftg9m^x&-aG3*+1K6m&+dxo*bh-p)JH9hcd&VpP#B`u0N}^sr%%zJ8BU8CDG{ z*E;osEeJS=cRf2cFnns>8HhJC%;I z8T*UesE$#nHg0H|Ox*nEj4jIWSGz%_WV0@693y%HXG&GnbcT`0oEoqPF z`s%ed8?UbBB2H))E3JyS1rSA ztqKtp*a!IP4MecO-sI)C^R?+A>t%Qj@>jmiZ@dN1sD=K6h5`Kn7+(@}@yYPldIRMj{x)r_oDWL4Ufs z-|Md~DDb{-BQ5kS#yke=K+6(3<`9RpNU@=`=dhpX3PeLu(TM2g4{`i8L^Y?)_iNZ; zbkxTE%3uO6KZJ1Q*z!4MzJ%=4F+fRGql*vv9@=(|zcn|ZK8&+>lGcwLsu z^T{mA#{KRivy5%c;y*i7ON3ea&qW4h#+7!*YHruvv6MaZ_a-X-wFz3I-fMWMccFv{w18%Nkj%t@Tc7~1QO!dEP*J4nj< zL_xS9rcc$E7n968s??!pFJxa-G}AetxR+3!ta z_%ul+rYDn_IczY*oi}Q*f7{~XLK9+kX=7 zF1QwSATU}7^~}=%A}9fV`ccVRI!XXzX&v><*S*Y32Iy|C=g zO-xeL7OSJ1NTDyFv=tS2_7c&LtI*<~((o)yUKi&eJhQDEH>X1YSizatZ zj+1FMu&j|ySI?|{@F2hb1eIC;BkI9xJ(oQ^tOFy}(JI`%He%tn!5-(SZbd(QWmamEi76~A4>*Qa= zO3h!55jZvU>u7T-jA85t8>4J8#AwbHG4f^x>uiEdo?ofM?!g;*^=u1Gj#A?y_(g=;+aWq_jb97$-pZP z|9=AuP@UiWZCTz#=_GC(*hcNxJ)vJ*P)lKS=un%SIvQgK-whX0&A3MIaeZ_UVaUgkBNDrCT=lJ z2O&)dy0sP0P3$e^Ai8cI3glBPiSqft(?%jTw&rDkkdd_s<=<9d-ZexdD=dMXKu}~9 zH$GCVr8vPvo!9t)ZcNgkmX_|`?MAeSpPs%E^TW&0Kez5}&f%TvX{Sov5*#`e_*Cuz z<~y^5uSq1*HOHq^1d>oGb`7JsOyeQ_Jmf`13lsIqNgU5ewe-Z_r!Yn6PG$&IKOY@Z z#5Mk6R4T$&umzpjidp!dY*xRx(yL7m1Vd+D{(mjNO9|2jfr!GEj%pJtXSn1eGX*z`~UQl)Enb`03U77{m36#_9UjmPa zmP0BJo;V|udsv!xW`DwZ;!T z!&t;qB|}w%O|AN9V7KX-3_{H`_ItkG^~0{8nNxTA^2ZHh7q?pvS_!N1%=}*sfAGv? z1r?I*NE8JMqf+?~M2bHXhZc3;5V(FHi8c-f4GyAU(-m&yleFX0h(lPK%tleBSEwTC zMe+MVY)FE8RBV74OXJF|ji}TfW6qZ71+B4h zn~Z+~ApCqf#}H#V(kjAQcc(mQcNU;P`b`FSiG-{zUL%2@UGm3hbzA)4{iXT^!oK^J zFZVLt?7DUUlYnkMi8EdElEPd^7W^X7_@+rhX0`aBslit7El-M4ais~qO;arc`Em&B zj-fEjz)E14^Jho5&e5W~bqGy+c^<0e(5ZZqKc{cx4%T|#ir2_V6HBLRHszI@s#^gD zYu!W^ZzwfAjT_@PS3lIcWP$*^M6qDEZq#QF~R_iqwbk%+|kUnQu>AUj+G#x+rhS;6w%~w- zb$oy|gWwAY_eNN_&`LwA8nlBT!YiMD3oX2XB=hT^?<7et&|vI%wWhkIjEji4QH5NN zG3S^TGHsUr?9(^vYwx|AoH#!g{UPi!gNS0yAJjpsCj-lTgZ5&pS0U%zYWGjWl+IF# z8ef=5)4@FLRL5XDdsw}NK*~p*xw5Juv_g-}Z~t42;Dv1wGcLOux!1!RCnP7Bkfbv|F;)y~AzzZw)s>T15~cAVtohhO3mnO_O{DM8!# zOwNA_{Ho~Q?g;7qP%GnvM4OP}tBCHpW_wVxfynro`5433C`DAmpYJ3RLmip6NuIBI zfGZ%0v7lu8zu(&cHgk(l8l00&dH>~@Go34i!gd5lfaU68rH~^m&eDeCU^2h|5-l^Z z)jr*;5lAQl#UD1FSW4ls5BBFWmzKqYYGN;lMD+|tNE|F*tx{BAM>ppv{q6_iF|Dd> z6sFp-#R#&rH3@#;f0?-=;S9rIPxr{m^b(8IgnlBIl4Vl+6&nO$be9q`z!ra8JlXIn zp|C_%BvQJyHe8x8Q^uGhmHuwN&rfP_+WeWF-^XcpJe45=6Zs0OF#>;}&Xh(wuM7Ud z*UjWI=Io2rNR^$N>N3#}XX8P_kUOP@DoiHFe^BFeUEkYezCw3-rE3V=SQwQlg;8(- zXYay=viXK!lT0D3vqi|F(xKXtPXt;91W-LNgU0FnGY(@8RV*M0jAW;oC-WsAn_KaF zW&ij#=G@4PtMtydHw$CM`gT~@5v%%zr8DPgk_K?_nJDaOx1?d*seWfs24OP;K)Rt; z`6R2^{6a(wQmxAkdVywTs> zMQkzDrnlCFQ!%n_1T^oHbTI znfVcOs8}8fZG?rK1qxA-WTPW$bdxDDQax@f1GpqrCWeT7DhO{dQV^0@2*v!?>zlP) zG{seSEMq2;E`2vIH1TqiT%F#s?SScF9g8NsJE$UF>ccY*nl2?kTvVs|v)I>$26fC| z-FBd{Bf1{X?Ze3OQwOFO2~Q5l)-iWId6Z(wc&gY*mau&>Z zVe`ZNxr(hsLnuU3e@yf?_OkrM7BMjR=kg0r`xlyc8s0k{CN3-=mrJZ}A^j|_FSd2v z5&$c+ap4!q(AzF4fLYARcCipjkoLAoE>9LT+a)%n{hiw?MtDIJW(>afW54G9>f1SF zZqrS?0rkgZdlE3Ifad3#&c7zwc_o%Ii`NRHtMZ#J%=LOi!`MMhY0#ZNf7=9*Uks?N|3`~#?$3*aFCo=ituV0Db9na@Nbkh_52)R z^cIX^i%ZKsSaO`XcVGka@Pu|01zOf2k#p8o{ad|G)kx({ zJ3%(&0I!Y}J~{iJ#Iy4OuPTbzpb#*s%SnOEXLRiwjM5H=b-#aXz22&3hz;W~E_t4jQVUDCbP%AW)MRoIc6fA#e` zFHA|&H7f-JF~^RFoY#KtyJPU^apz3D!$@_VENTexcd{C4%Cw-RwbADiYYnN7lkj;F zm(}2?)x(QW!PhsVz)*>qKC(Ep#)uDn0btBf%0a0bta$zyv7^TkL$*#AQS&o^@kpcl zp9%q|Lp^p#K&)bGzp=cxMYhI|yg-!bn06hmm9RT5BLmKnO(6jf^T4f7^ELkU!HAz` zbWF*jG)yVIk>tfFSkgqsNRIV7y=1g-5$tuUgJEKH?CU?^;KP2U5y^r;bbck761+6& zQ3z<8oUW4Cf4STxo|k`vgiG|W!2Eg*j?fK{lvU80gbhvzcN&z#L=S-Lqeas|53&{E zt`7ttLr+Q?l#7aD=qhOuE&n`gVln0?@e;AoJLeiTjcPUQ)qj-}mk#FBx;Tef2c&g1 z*EC(O9MwG7NpwAPta6JM_X52ZfQS^HhsJ35+F{z3`Ld?=L=&w_03u7t>q76&EHLqR zK7kq#s%^H$;JQNncDP>MxB2@xLh;ZqRT@o-_ziJ3WiR3oeB!hqUy$F@&$wY75KFY< ze*E746C8A8RJm3f7#^O^z$LN5PIfHN;b200WpIfEeO+?jkz!o7#SaxSG~Eky=SmQ8 z+^QM7oR0&$(gh{jvgnO7sWy5#RSw2>!|B(?-oC@?|MMBx`$V0X|f zCVcbmd|Nmce0Y|Wl4@gD&VLg)I5ig>iQ4(LMi6|w*s=p2|0CdY=pObLN>wRmUohRg zPy_Ar9c%W%r$obqU8fg1O`-we0NBnpkQEwrTzjgWBY=xdt-g9m3pjZQ=(p9gpn zlqI*&k(z#4F*WusN-bJpfQi7;Ws3p>Q3DcYWGSzoDJ~FHKc&mA>M4|wXvOfX3tBTz zlwG^jQwmOD<0)_gDzB+!V*D+qEmLydpcMOs6k#TUhxb+NoN{q7=%j6U5YYzQ^pmi#9rZWcW zK%>cqKRDoz$bAcb%-RF2jd3n5^oL&>qis$UHh>0nar}W8a7(R|P5nDtXrhrU+risH zRWl_QRbXf+GsZX^{PAjoZoGJ`{e8$(sK0ozI5yLGPh!+8aidnr1j_Y@$?nF#uAni> zWS@rjCQIm61AyzZk}k%0^ElM)JI=u~lZC#+Px9Hw`7_`nNRSY#g3FcI97D9b}c+uPI+}i7cT1NOa== zZ_5CBH zbkhAm<&!-w6Z5_*-RCN6rCymO&vnN^#^*Rz6Z2O)+sFmCs6Y`-2*PnAOn4p{WZ3I= z)fshwZx_QfihG9$XPkt>gVtLWTpWg%XT7Q+Nz(D(Gf=@QMyCA^sRPD8yvQ|O+Yde4 zr46YtGe|+vOrto7m26|u!If;IQly@?WHnLqWVB?lb!sDIl<++L|6B(|pa9SJRKyz*X2P~KstVVxm;#Q-5{`^ zthq5WPKk|#R+X)^$K&-L^Qy`x>YXn9q;RAZl{lk8uMs)O-}y=!ob8(?&HWrvJn1P{ ztZJl~Wfpqwghj4LdCNLkR64OkW8FGAuv=utO&Cv&pZv-2{op-wr|)A3*q&H#Rmr^2 z36-cw#MFZ>eIXUCp(a2lehkLh7qk>bLOx>CgU$fU3pJRxQo&WiG6iTNNy?xsq4}}* z*9?19AZJ^Ndb9WI#@u8$I(4}*N_U;QSmtRE^j@+-6(Bhovq>P{N=N`JR~O3J&l9F` zkRW?NRIYEtozq*pVC2&a2f~?VKJkeEc~neKJeoe4$@mm+&Is;2{h;J=_0!QlkgOP1 zeWz=<5(8$yx+jT9*KB>vZe;M37DnY`{w|AQbal|t;ZVE{piKOk&f9)NxSP`t-VHuE zwLXv-dm^I9kzB7sM+OdbGe@UDARQ(QO(%8lo;m-Q#vPW$?1uiNQco+}GQ+yWtuRui z>^W<4oYaNYoae`E@RmaJ7zN^(H#cX>83lvn*yzWPBRp%p_Awp^lC$~8I8R;K-T3Qn zl|@i+#h{tsA2r|z)W`r44RS8#f0Zw78%4s8zQZNCuXKVwyWX6Y&s96$m@B%uV;EPp z1Y>3Hky6A5tCgxtzF7QJoz=O^1l%{IwutMUYfdhc~unH+VobHbaoSK)!vPkAKY z)xYWW zGTDOfk+v->3*Z=a1VsA`y4vtJrjXCWlo=JJ>`JdaaB$s|WO*hyY?L7XH9UAy7?>`Z zqs3%a@FjFie?h(S;gB-h&>7}?ZGl2Z<-}C%$Q8r;pjlocB;^qMJ(A8hUYm5>q$s;Y zK61p~^X8E%vO(ihn>U+|1s8SKjMC>54O3HNBHjy`ps=iG=+ZOLH|H0b!dG>eHXNEZ zT_4whhss85VLGd8uhOOYcy0tEG*tVd+TB0UhEj}_rFVJL*)nN#(tszG?6iEYzg?d> zr$b7F2Fi(o1qzqX6grH;oElwQ)XO5uf(fb(LnmS+6-W=BZzyD#Cb2Ju6xE5wD~V4G zA7kn23;3Hyl}AEX)X3B>uo+fFJ6k{IkBh{E91to_)z=2C#-6WH8Y)*>5ITX9n%o3t>?b+}q_r8^>_q7s#V80LQBIJKI+|8(tRn zs7+Q~Y|HdKdBAtP=YJh|BrU)K{m zng%rIp$;WqLYQxt2mjQNnys0Hnv5QF0XGvjKm!-Ak-P1KOOd_99ufeT3*Au#rx%-5 z1(%bXRdp$VVq}Y$OEdQuWqU)q#8)r|wqaS?hiS$af4c7X+4T>UWk42?5s8>bnwPq; zG0LL=A0f#-97gHL=0kOhtwFRqZrfJcK3(MAZN72oP1GtlY)XfrfPQypRv|b@UnfGO z)k&C& zdPQ&zKY1k;{p>*EM_sKjPulU7XTa8M{aGod6vwq6&4UVL-kKazV5b@eyXeQ`sKhCx zH9V!fDTQ1YesfYFS&=qf07Rv<)hyfK5J*` zA!yhPSGvgh7!twNV#Fdn+6_=WY|ry|hg~-}A7mA6+9$sb__I&?1$d?SfA%msMePp& zgO+NbLS#q6W}`bvxvYP2=-$1PabkS4bsiomz*Ng3TTeWfO?0Kf0obtvp+v%i_M z1NkEof;F0W{h$7B0{1py#rt=X{E2GB`?Jvup_urJyc$O8Nc(Ogau^%(@-qLAs@G?O zFaCAXIAKGi1bP(yxAWPu!VTK7h(C8sBs++Y+)l^-iDXQyvX#>)eS6de+xQx87Fk(!_4zL3PLCC&!-8zMtEX-Cj$Le;*z-DJ7+j@_aSB`}LQIIqm zvdm=~9tQ;4QjEQeu7G*SJ)~qFSs$K1E)VXq6Yj}9+CME=i{q%l*MBNvLDiWg7SCv8 zwnIP2F8jnV-qS2w+pb$^2N7AzI5q#ms}cV8(_4KseHiy7IOJ-R@0FGz7rwppK-54O zpES_IHgP#^pn3hGIhm63x(mwbEaGIOHYHCLLb`E4zQ)~W9~4Mtb3fMTi@(C9`4@w`yk6-Qs6e5p6?hM13Vn=AvQAtSY2RHI%* znjxV7Li2n%d{b~7De-RrMhFM)&POLM_(Kknu+;7h_B_i1=r zSVU>|40;9{-o3CGGvQV_8UjZkfB$KiKt5I{O5sIV%Cnxt0yf$#lMBfAM#aS@XA;Zpe#AS6;^KEfkLD|N4%$x1ks4DN7 z$b;+^f))+3bq%NtD#!25U&SVIhmq>z3QCr)AF4 zTah1GV7U^AS0ad4AayMjbVo?AlsDV&G7SEA8Ly@nyO0sjJ`A4XF5%tUq;W?1r;TcT z)}Tz6GJcX_J0G%y{2Y@T2x-{$pA_2$;Ya1+J0~#OpckEFDl86fvQEJmZGK5MxquDm zGCB6LDGj(Lh%`kC*qF3KwJ*0n5t>Tf>>nO4#~z&2Ew zEN6aerS2@%8fwm@o?LAbG{inQW#o~spGs@T%^2afxL%`SSAT0uzcTR|14mjjX*(!z z=}PGMZT7Fw=(EG*R_KW;^6T#qZPP(s@sT(S&&X!Non-vl-3Q=i-gJYX&?e7KIADc% zjV}5pDXkeSJ)M`uNo5W{&Rq*P<-{s1J-PuAn-Wbx*AXNuk?;I7ESu$h%Jk#cz8DUp z>PvnrFqKgGS{k9yp8|>{?`++3XG5eyk3i%WF#)N7x?6ySZ8Spz8L)gc%xMeUsdR=@0qdZ&>*6 zW80*8(oGaElnXmYtrNr7^N?Mo6J2b@%w-iUl;_*ce~l$$G&k0nLdcla{*@aZ-HRVW zMnK>mFX)%%n@QvbsFx)YVgmEyvx=Dr8Unj>X`RiCoWHhNN|U84?Y!|e>bX@}JUxCX z!}D*a+1(~NyE3Tp^YpnA;LQ`Qs8eEOlrsIYKEuJFrKVQT_p}4-ykFTyACxA)>VIb% zKAHbu(_d#F5PZAmh|=EbO-_D~|Bu`8I5Zb*7mfe=KZ>VKxCp2OZ}UuE&f6msnu7Nm zq(;vdCM@z*cbXc(Y1Hl!E`m^;@ASN$@=lfvv|>cHLn#B<+!yQ}e-`n?JI}8{CHOq= zSnLNf`rWwUO6{|h&5V* z8N6Zjc+vd1a{b~UnmEEH6H?)O6s8TAwDOa0S!wrJ3`g8&?*^u23Zc<_36wUp<>sGc zE!N_SYw7v+Jt8w#aN^>%9)pK_QSfIfAcorHZun-wI|SQ9&W9j))UTSpr-=vt#YiT9 zrPdl>Y&_#&G;r;6V{qJ zNVkE8h8L_XAfi)U;LP9JPhpN5{fPB&0Pl4V;W_dPrqtEwY^!W{_$7hD7zR%!v2OVY zWu(1vk_B9x;S`UX-~aOdZ2^_O`&E_k$M;1=u#3-7&+|rS3*P;bgmeVgzpWIy8gUTs zDoro(pK_cc3sIKuYo3-Ra74QlhA=gu4$oaIu{OS>6%7 zSO%7Mh~fU$39@s&_JbcEH4uHZ$j%bjzI5U0QMc#Jay1FS|0QYm(ONg0fmvb?N5YC7 z;gFV3o8UmEiQf% zvE=qSz*|ECsL@V^tgr7(!v53OT3QOpmg6KBT@8si01`Or$C!t zgQM@~ybv#6%^+*5kHyu;{(?!D9eq3u(k!-lRBZNMCf$ZNoC9br_M2MWvK;e_0K7Ak zpJgbXOzU7F7HXQ({40VxygrSYLy4@Vo}Q0A473q6wTXwlloL? zik)}qEBBb3u8)zc#0tuu?cP-X7HuMQ5HK_dqTV0n>Y9A5>H6&dO0Staio0?HBH$|! z<$N9>*NQ5qlPfZnD;&)~8I!EHq(zbT`Gec>rO!r#4-A0v2AmLGy-kMzo$>|wE%v}QqLk;lkbeBUV-VwA$6}bRF~~U@PsVE z_ZV#YLoWMmhzNiM&za~UrqzJ+^P}$q+po+&no{QTK^wcf%faxIaU4i`9eam)R`c~@ zw~V>}DdFBOYe4gO(IUq$)&)A5fsXr+VOIXEjC;?oY#xc?O_@q^hKZrH$tVsuzJU2! zr(M^Gg2xmul|$|8nZ-exFUdEdV{2ryd(#Wp8Uvglw;8{^ug{1;-;d**8KG+$U^eR8 z>6v!2s*#)Z+S#nnycz>V6lVeL;Q-DJ!A#>6doN4-IM@GgE`Q4W_sq68IAf*yvb0tNG^I(yX#a;%$B~cjg6(MSQ1ZfmLe)Z zGLg}@#G9v(4XnwqbAZI$+4ckhM9s|CiZ zdlnK2xdgy&&2Cg$1l1)DIu7N+UrVd8B)SfxsXC%Zwwvp}vt*$eToB%yDVC^QMKDF> zVlpDcS!l{)tQJGqWkuo{J5(>M4w?$7Hohv1yuUgQ8NcUpU!I${A09%Q{GTrw_6(&g zr(1QjGVrF`+5tGMX(ztX%cJ z-;q0Q2<;ZUTla5OxX2OhVX9V>f?7l)QN3azNJX9fS^skasJ z7q-=Qp!p78$IxR&(ertfqqN8Sbe_TZ5#0|^q!HuZ>#kX=RB+2nmTiirZSuDNdk(5$ zc=AdN6Xchy_5mh|@7ypXR!@{7nx%1?!!1^|M5qsE8)|xc=TPj#cI7cXqZySM5r<=R4UJ3{m$~1p8hbkFK()e&RrdoN0%xKUS0qdIRpG zw&Jb1a_gy)4L6K0ZAyRI*Y>-vc|1(lTXy-wIWdL)k7JjQ*11;cw6i_26?vZ{_65Y zttqNGOxSrv<4wfxd@1ptsSCBX>m@;gT9Qe#|2$O3?0^OVX@Ov$lC@@FehC^W5?{U# zPlQ-S<%3%zN7_#V4iIAV6(%P51)nX#Rv9K2S12DtsELh)!~_=dAZOJ?%_kT7%aQ^u zoVk*Y^Y8A;&CkyJ8e&fVSe|_|FGMDU`W2Jgc-455=P?> zCq!^_Do*~pLX+fdb74)R-9b0#%`v!I$I@R>a);Ndc<>P*me2C|DFp?O9Z6yY?=cEs zeV)SF-Ohi%@Kw`_0&sSe_6|DVJshnSbr?fu6sfA&fL z(BjX!_=Ce~D*NMeWG#SsT+xeV*{|vgrBZQ>cK}M4V_{g0xKa#<+ox)TvL}}oRtMkH z2s$X+sgV_^3MN*2?;^NzBs215VKa?!;pV5skrGE^h{xl>%X44qL5e0~mnEbwn3A@* z=Z{e`P#ZQi~@@u69%w>@&KkSA05EsEdvmvFg zYj&K3s!&ODW0Odp(E4v)3}yQ{-5v;|nB)Zp;nw6c!k;Tas+79NcNWFJSbxqZvr#C+ zrMms9kC8oADmpsmPlto0`WKIk0ahS8Y$cYb7;OFvkr-zsDPpATHDF*i9Yy3il?v{K zRnTUp_}~b;`T=#BWbgr;nO{CeNyfPqo|ud@1thFWNSr1ZEemhkgYwm61W>H+9+R$q zC&J_a;kiP2yZyy+LR_lS{Rw7F^{w=hS>4X@%As>D?#R7o*X%==R0af zUzkbsyBe8hixw&J{OU^jaS8(>@`{ohK)5Za-n>mPIZE1M9%#6=~=?#e*G~!>4KNL zznFhwt&w(mcZJeRe!VxRDn@c?;I^e0qYN|iX_?|+RLY0*<&kYg$cXti$?(XhRu)*Ek9fCU~xVr{-4Fq@i=DGL2U$0(0^J~_0_cGh|H_k-PJh8lgs6JFF^_?KS6DFPc*Uc~Af%-PN((<@)RM36<%O$hSVAinZ= z&?1141ZwJz0?ieAKT0~S*z4FYF?F4P){S5vZtWKP1p`BXe#~9FS31{2c|k5^MU@tk z!i&aZdFiPh}aDab8g!ELR6jvXX}c%Wi4|G(Z27?#6MnD z?fN>FjK;HZUlU$k+Y47D3 z$PfvC{G?_2WT-z=Jy8K5Ba_b?X^TQs{Xxa>YbuAI`mFg1m`6X5e!J%J!SFN6oBW_Cb9>UuG>j zWZuxkcE{+a%VkxuOngJb+HUPt{(f{hbzR`WDvyfqne~>7(0#qoK)cjaIB`wfj}_l6 z%-aM}GY4&1*B-LKhG-1o0T%*_s7a-jP}{+)Hx3d##N6EX8m$H+R8%c-s6t*cvYiL2 zH6)A4_=-G*cr{ufBxe?JW9xzoL=4Eap^2>;S)9sOWv%1_mv>OB{m&bc6EELj0vv!- zG&#qt{7+;Apc3ZPH~^}U@T29*f@(9&^FjUKMjuccAp^N|jn=-8EKe+kvs(j=ICj)Z z1OJMxUwukQ0rLMAVym|tfSp*&h!A>Ab=X8*Lt_Q#)!;pIbPk2+9+?GMaN za|7PQ0T+uM3RJSM-`1g@MZ}BnOYvQ4)O=k@D|uu$5*hJMZyZ;~I0w&s0UWg;akj6z z-rxF&Fz$^)m9IWh^t|Kf@l$@dkj(wWN##e(yzHoK8`m^A*%$h-V5@bfGJM@Y>b;%^ zSiZc!w-xdXQa>y=6b|J-|7!^(?rbbNHo%F2{LFdSIEQgp6q&oBQl#<378M>$2*4Qs znGbT&7Q@rm4rOoaocz4lb`%``TvCtUY7MK6G*!|HpY&+7RUcGjK7D$iN~^8lCQ&Sp za8CMb7oYiYtgeeSam}FoEv_ol!b2s}q=XX5R!FxCi3pPex=u~u8kGQ1s=ymfp z>7iO9Z*%&#AGI|N$}1{{Pq!38L7qnv2g4%;-pEj4o+lA(g2%8>wCr-$1`1wQe7v=0+Xc+1f}Rg%GxB>DG8Qrw^Fq#eqNH2N$vG-`u&Rc_rM#>+ zq50p(+n$#m!&hesj)Vejp4-h8Nmc!>27jf(7Na*88>(A)QD}<~4 zHZR#p7+2p$Mx*dfPy8_*Qlp@Avvlh<#vjr7_ZGHCIu^@Ok+r1wa(efN;ybw+Bf zTRZ1sm@+!RJ7&u3e(e5dLD?onB-cU3GDE$KBqGK%(b;a^;fuF#LZfAoFE5ABk7a2- zAVYYuok}WDvIaQ6%*?|lzs9hyp3L&in!e_Kgoc9H>v&uEa#O9xL(#qaRrw~MUksJ@ zYt}4yS%cePwO9y@ISIJ$`s@|LNVu5gpf|<{)5?P<(9-6ZFZmOT6SyV06QCM@cV?Dx zo-JgyO6JwYco(3>F(A&9NcNeYr zv*?zm_eIe$_Sp>F=QC1DQ;*;rwYII{JcM*_T0M49vd#I%JJ0)rX3d$(Q~V(yZ$@a= zfU~Ti zprCa^<*9J?&4_=>=kZ~26=*{u1V-{$%KBBUvbw9Z6|NFrPo*g3DF~$RiKPS|s=aKt zLOTBqL$NcG?cfZL8{(g2NmtabIgD|PYd(%^Zn67Xu|JKHlS;Xd{<&|`jKlTNxvRS&=FciRf1i8C4y=gG(On- zxiBKO83S$~bO5hBk|#>+TSXwBpUs>Uu#6S%?;GpnqEMa6CkX0n&S$#n8(j{!uUV~0 zNNnh9(_MU;W@>yJ3brki>|&((oeHwi#;(F$ZWhiBKyR>PtLescK9ab*eD7w&OLkL1 zQudG7z=VGLea>JfonORQri{B%5r4Wk!oJKAQ4xK*IOON-`}K-B#S?Fwr+XvWtZ%-( zc=KyIEB-i73G#r~NMM|vFR8bt(}P>u^as?0hq%_QFzV)n%w3PR(T)>-;YAS&mWR4{EGX!g6R)wsjyfO^Z!mdJSo#@akfqwZU z9sS>J*?zu>UeFzNO(;aP$^;%Xb28R>p^rcw0f)$>dxeMS2RGEuq;AQd zA0ei_S^{z4feRh^;3hKy_%l73hn`n9W(#>=^ZxGE*d3gE;yew!quJG1I_gIr8{`@U z4hXm;+d7JxLL%)z$|d;eAuLcSXqF&NUr52e19rI~ku1E7ALLzLT>uV zk`(xtSs>o#%V)5YF)ZO+BX;R&MPw4Kjs&x5Z=mb(SNvp0$&zrbR&+}D6gKw=d3O?V z@X22L<-dJID1uONpcIB4iZ9k|m-&=)vyshK<-y!HjE&V>_Dsf#7db5{|1QT z>e|245pVZ1JQ|&aS2ybRt2E6_TRGCoq;@JeBT~vV=zjl1_~rO9(e)O&H2I9oI5o%Y zX}3Puu}dEK(u6oIdl+{b2NHK(dNJL7Ob5Fjy$*QK9s1=%=|9);)`@4Lp?i7+HM7}i z>B)TIF%5wcs3L<2;&PvqF$iim8y(*!8|B@_Q6f`*X!6SP+iEIx1)%P4k}Anzp9rWG zq_|Y*M=fTR*k5bTyoP`qYmuujtLuHmM~+Xv&X8B zWT4ohUg|$)Q@dO1ecRrv0UMBEre*;b0=-0UQc% zPrvN|;QQ}I9=B8tv14?3LZfwfrK=CO=`+*}=p^^%<%sIU4!GDZ(&KG{e=S_+&wpnw zIuyXuA2g4btE_!a-mW9gD}}Zva6cF)5MdrSwx`pDex~7W!Hg>BZ^nJ4PKc;9$E$YM-`<7y_U-OMe!Z+D_?pz(% z_od&(u1uxo_udu^_sd5lu@6>w5?|~E-)BQM`W&|1aVSgU-igkFS|2x2pKpo$&)t2r zrp5SvlkorMbBxXH0rcIf`dRt@nA~-|oi7zG?cMx8Pe8OQbl}bQ^8*l_Ag8=gJ=REt zQ6&qI2}0Ld^_arW3ZA6`H!hc> zWsLmHACqv0TW`uO#W8yQeAo1i&Qps&a*u=0XO%&-$udno+90*LLo>xpySZGpwSh(d z>iDi@32kjhl?tzmE~O(YsmP>5XE6r~NrXZowbqw}tV_{cZ~TVafr|IfgPHbB1}F!r z_%jI!+7w%0KZmP}9%xFDJgK&#sXk8oV>@6g@cAm<-Ycc+d{g}wOb z*NZ7<#ciK>Z7)3UqoO|d5@MpxH&&TaH6tihwvu0u{b<&M{YfgtaEbiXoi`|<_ItqZ zizzjcI{ZZn*DBWViWfB$$v^7QvwNGczwxAZ-UBi0sm{03&33F37dwzjQ)ExG_H~ec zm%0Q4%lqTB7`{*KammSq-5lgRgGK|2|*T9vD-|+flpBIU+t7l zj5N)%y|hZNLpp;M1M`}hd-_Dt0s6y84V`)+C0ZD7bM*FU&FZ!LoBH1lV=F^&y&U=lkyhd&>Bb^a7n+3HTb9h_?` zKooerwix8Cx8}ujrg&KkZTMO;^gXX42>E#UGzIc*^C;L%Y&P4iiXBX8zJU(0JsS$q zy0=V;2zphPr!DHVUoph2jU*_hoI*tJU0Um_Bi@YBNC35*-2335E5AG z=azNCn1%nl0tews!Vi-iue9DwS3QB)KA&`N|2iVCf+5=&gO!K@04HCHlFuxM_3pn&u6akVn>tI@*#huDYQgQ2i+P`t%Uy-eXZ z0!rW-XM=wDvBC9#J`z^=Kh{mvbwqD8FV0eFj!0?cj7`Y2k?C|HqNR)OQ(V$A% zEL%5>Dd-BPxN@&A`PPBShp672;S6w1XoqY#=7a>7agBDqSPWmk=hrI{cnpif`pSS~ z{H-xG*TNJ_-I}z&4LX-H?6YQ}+}e}#+O*6j$D@C&5mv}@F|NwKsF*G$v7bw4-G7bc zElF6-3;V0B1-__PUE#Dg{?td7TI0?OskI}T8CFMYwS3)LSwV@g5*57FPV@+??(j=UaYZPU_jNpHnb;`=h2$tZaQCKTJCKR5%A`fG z%Fdf|y6>*u?>#IGy|T2@)i7ju%{X@ZwbmogPDx9~1PRxFa+eMfKWINuwhJrLD1&YE z-I=Fy&*OpKH*5vYXlNSs>#%H51=mlPE7OfWe^htpW&__cffY+lI%+AF|y~$(k9+&`m+5QvWZ6*&Y`2zPz(Q zsgj7PkQCm&z7`_A&(Kd2!O?CAQLuZ+IobqjV;!-TB4PNa zjO%bVyS0*=qz*o=+({tpJovow{OWJyWBzw@3ud>*&C8;{G<4y5&`h0J`VoHPy-Rw_-aHi=_g0)`4!qfKp zk4Hk=c)m_U@s=+}{lD;?$^`QL96Iin7tJAf(a1RY;n*S-R@^{~MQHD{ZAQO^4(M8? zMt;H$-~y)L>;jTxX@>@?#rQiZ6#|EMtt=yxaq09r6Uy#`x#=z=l@}c5Z$0w-@l;@fYcd3o;n$d^b15 z!$ctWiD}OxD_comwgF?F>|wf*gdF0{G}vvTb5qJcZ^7_CEcMmr_L!>k1o!yEkPRfp zcdcj@Q>x17#Ra7WY5VrPikRR_<;e1Dg2q`vITn{VKT4^95;^N%g{#L(yl1c9`6Se1 zf01%DV1_1ymLg(^tNYq{gRKsTPy*tyXvnfhWd;j$fJ`!u`1lZphMfVYtS{mhlJa_^{%>)#(XXOG(W*zZLM z!Z!wjH<^!(tOp6FLQ}gT?AK1EXem7P(#vN~-ST+(OH zE7LIi%48QnSk*WzVT%()KIKc3`nu4u$BI0@Qce=C<83bQ)~ zmBrr976b+95>1JpP;G^^y-BloT|^7*OQ=z=rx}RfyIt!UUM#pJ5HOL<-2OR*3a0{v zey#nUyUZK1tP|q9JY-eLQ4w#AazxZAX$Ll}ohqFA1Dpc1(W2%T6zd_``xl#lfm^K4 zW5pMq6~jWMOmR8wPv#vUwV%9UMLepm>vnWnGbUwdb9rg~-rB^6~q5bkVNtCaO znaD~diPHp6rhqOoZmQXHB^@7(s^bX;ryI(6F>d)MNQ}!?i&^z zTl zp`?9sl4E%6Y>&DFDTq|4*Lof^1){SXUT1_^D)t;1E z=E9c;B6Z6)x({0u<4$p=+n<5n*WVnE|2|GW5E{sGQD|#r%c-!jj}BSax`Hfwy(67o z2mIdrt55tdue^E)Z7yG6NY_%1Qm^E85LzO}Hz?G)X`mxxyR_?8JApgL<^-6;dq_){~4F7CZFK_7u&p z`)X((Mwi)OPM}&Pwt_^0$2`>5Pza$s0&riQrolRtxzjxH1U+6F!#Gx-j$)&aC9V=V3OhcyX25BykkT6PMONWHg~zKw z+H<^&Kg=Ffp&wVFkM@kuElsd%WA>K=`xsu?1F_?bq+2dt=+;6KVU``s!04SN%H`cG z*22u=yxtdLPrl-kqQbSW`})C)5n(sKSfkKKfvK5mjUG(;+HtUxs66)Vo4vQ#F>Qr$ zC9H2L{$}f7PoY+K;#txy1lBcl|1Rkm-g%!wFR7g4xKQb0n+}rdhW*;--OQx_n#9rUirI`|@BOGL-a`z5NC{0!p8??i1+AFdoR{K*}r1z~Z&OXBV8&dh+ zt_D_JwNq-pD$+e?dvS)VM_(i5A{kPONIcK%A`K`2TTa!7qRUt9$ zsowZXs+I=g&32N__F}ML!~I>oCcw`!>KGU3Y+_C`^4T<#KXh~Gs8{qaSh5w5^VNX( zfNA8q7H^afWpa6@pJ#NpDgLL$1TRU4tQ2d1W{9ak&UrFoL3H9}b#YBwL$^oOI2)F% zuqj{lZWIKuj^adydjz+;F-XAE-e^XkMbGcmrbUZd53_$72XEchiKZM5T{lU534-_v zEy=?zjoQ}ufTlbGuD+4+dLoXGsp258e14WJSkm7X^Z%@}iUvhh`7_{>r?;;2J;dv^ zkFVwPR1b&>P(@f0y)6%7;(+-WIHMkw`Flg#AGIjfWjm!u^* zY{&_K`UQx7GaEk->;l6E(xde7n#-1m(4(FM7B26`p+OJ16__(YzEf(?8xU2m0Fx>I zCPE|Zr@aD|wj;73yMO#@EUOnp=$JMJq$+4G?(E$l`44cKmlmAeP{AP3GJfVJGU^wyHe?`{vxhpZzG*SIdt@}a zG=v>LV!8)gAe97|2O|6eB>h|j+3+IDmuqlIpYfu@*QiD2q*A6oj+zywV5*HHsq%yp z;TG4-%0L;vu24&Pr%N2prHAyZZ)KP>B1y$E9Dl3Vc^Ln!ues`DY}2*+ib||JZ8DxFN0Qerx3Ha>$hrE+-%Qr?2ilhTe`G(D)k!KpcUUxXlPTRzS+6x zHWyf5p?Bp;Oz72yrHzJS)N<}r*wycGIa7_+BRF|a7g9WKHV}Nv)2+4D2>J_sc+ZDT z-Cet?7heC6-!#_IxBgCrD9=R2W`h9+=QrQL>F9lK-a0Gm(8PB)UWjvRTdac_cV}qY zd}s&d|K(U)CCLDy1!a8t%>QKp-%K_`KA?A@5SK))nCp;N)#=yFqCN()vx1q~EH*bF zn*WN|_yXK7Elx_|U^dXWYo9rbw( zE8-SS4BV@)=JQNJy99|b%@ulEiS6xNt&_0sb|{x{@e~)3oiDuDTm*iVMhzV~YID2u zE#I+%=d*MR@1wZ|C=QWfFLi$gKdbV z3v*lyE0W!-B!He)j5o=HqM(`43pdvYt1LJ03tx>rQtOsvvC>ekH>pOlOVRCB#Vzx~!{eY$#e zoB>)^)L%xRh{5}|$;hL3ZnYUs!0);_l2&{|)CxYmF0JC!W2t;OhgN$y$J2NN zfAzIp%&K~vFmm5v3(TA2u4`zu_P6pANdZISbX&PU{Gu3k2|UElX0dWc&GD!Cl#~}~ zLY9?6IoU*2xEfNVG&_VfOQkhS!B^pUb(6uoO`~@|AdHo0!S`8?@BCkB?z+R2crRW! zWCkp~x-YrGGmwu;6kM0iD$HnoRB$$Fv!g?B1ZcDKQl^ZS^A;bhmZbwZgTKX0iXCds zxsN`+8aBZ5ewn;#g@U4@oC&^qqoxu>TF801Ug38CyLah$b6-tWeu<~@)f*G7+JS}*OI&Gjk5~{aX+V`Z`?e_fn`jr0ZyX~g=u=e@r=l(gV zfvA;5uPi}9Mn+~72Ph_4VmlGQmHek57`^d?XZK2WwyJ2c`_3Z<6EL`M=7lzzDdDwA zr1tomKFkJ!#|x?B!+3FcM5){`qpJ)SW+Q5lz-Ub}MV}zqPv$$Z@v#4#2Nv)R)S^ax z5J9%~69Lr#;vg1zi7U!#D~9)){s6AP8k!^Xc_9tWyW2-WoFWrF4v{N|B2mX8kKfH2lWTEr%+e#}g z$6UJqc$I0MgYmknkiWEguzAO?CNt5}s7q%1f4aY_bQ4_t5&{O^2Zrq-d;^Efbwv&% zE_rMGxE$EeAAzU4^~Xh3K|z!X|BI$9SAgrs;btZ;MEnjgwldQb2uZHXZS#GMZGg|= z0M#hu@yaKY36-Hte|F{PxAoCOPl~g&ZL@e^NZ0V{Bu~m!2P@4ikRJZ$l8E~O;t1(&7{1$0lboasVnE>R-ETIglEV+Txl7N&^yJl8&3E4Jcd#2Vo*oxGH~ z;;J3ehhnPYF2-c8XB|W+9}>B|4|q}M1;70YmC#pIuA-5_9z{&o8!Po3JUXG=?j=W` zvjW*JN^mT5gs(QS%B%w3B1{R&oYwx3l-UlN&}bgHdxBiU_z8YQ9V_1uMditkxzlsu0l2hp8lfX4b*wfv#^ZOJfm-*4i*Ii{@zhb68J)qJMqDity)sM=QC$cGh!W@i%@fXKwpB`>d;Kg&KI|P zg*e;HpB5Q_a=;Onrz#fwG;pv-;GYrm?Kx8wjFxrT>Sgk`+ z;3}nWUE{7wfaECV)fRq#V=>3F=RwX2w(5g+e>gmC9gkO|M|nx?f)tbid*>;_ce9++ zI>hL4J|V0>sA0|V^TGx0LR8I?~1%m$*=T{+h+&dEkIZBRQR{qd*X-d(8+fwpG6y^*` zZvpk)#&k$7p`zPXFgU+Pg7O!CQdK3!JdL4Y8h>B?2M-~sOB1x)EfzRTrRgz-rQb;T z4<$J-n7p!EV(5WvIT+WrsOdv6<5VuVL!1rgYY~C)eLh%({zIQsg81XQ+mUIJ{MoiiNkNF&AZTm>`C{|jrj00wVW@rLKKey zXap-$8}k;7iJgIH^r1@rAL*d*r3Aa|M|;?(?&q@^oc~1UkkP{bhwx5nl#o!a#Cz`H zH}eUdMlVGKIPna;<)BCH>jui9E8A-dcYqE(3p&xJ>6CUH795=Z~b2Lx0(;uS_zEu7RR{?Ei z8>=zP^HYAo{ANWlmj_dp%Z$wK7eVXrZAC2^^d*6j0tZU^KGQu`i%DDxWHB}&DLU`& zeMO3^x3Ayy*lY`5bW(mKl_q3`+iSnQXH(#1k>M|CZ4>Q{<#N>6u_F>Dg@+C+O_ws+ zFJ!l#%BycLaGLAxwvRu$K42*)4*D(s2S=7aJi2)5^O3uXq|&!g}hru3Mu7g za_cEc1NVYv8MXOBzVm3B#g$NfIFs->SpK;0bOPU0cO0Ievm_g6?02VL29I7F5*uHj z(AP}1jsn&xxBvfasWx`CW02gJt+{-%wl}0A@8tXoOEh!_-Rtt6G%AL2J;RE;i{H;j zVnN0)rm$QIa?V)bXCuC#bI^DXQ`zSL#Zp16v zGR#0MA4q`*WFGF@9^WL5cw$|={j`T9AV-(PD* z6P`e@)nPd8aFl9WJdO|6f_jx=9URRLOIq!`^q`KY$6yhm>ACT2=}T%*UxdjE(e9qu zKAzEB)!%+zDz3Z5uDZo(xuNR1mD}+~Fhr$sT{^I{i;&Y>*K=9dR#WlT^tLT$q8t;w zuyVfR_vLv`W1q}$n?*62uMeo};SA}|D7tx3RIo8o?8}2G+^1lI=pQ%nnXtT5M*#`lXn)N7W)DAKgcNH22%fROQn$DOlBA z1zV6=0K?72s0LlJ8(k2FzAgyzd938AWHU-sCOLppDs2{W-Tn25(mW?G2bE?`k*E_i>JHWg;AA1f__-gR~T_w z-sS#-AMpr)X}D$qN9Qr$9T+CHI7~d!?sZ`o8_EH`0njG$u5@a)!{*m|yM{9KipD&e zf0&{f*NSA1e@YCdh*x_MU01)J5TZ0~HQZGfDuY$nP$0Y@F>n2z#7PKB#@CYtwamr?cM_(#VX)?kF+xB04 z&&bmHS=l}um|?OT#cF)FN|PuxL}Jq)T}K z7yXj5ab1Un6!_DYy+}vBcquLG^IcA995>qr+@1|0Y!`OD8MG8~ zUc~#w;M14|w(w-|TxRo;D(`#IKtFR;ipV0P)aelxbU}YSUT(GTL2W2Fsx@Sa%VZI6 zBnHO|#C-w(j1B(j0iYg->dB5+fL5GKLXPg$(T?)mg!1}c(C)jjgzLgQ5sxp1+gil? zJ3Y65D<^2c6fRO~sV}PfIHkY_-$z7V^y6MWgI!3SXwT~c?A2|RYoB=T>migQ2ROjr zdDwkn{_i0Ltw&CbVI2qQ32k)=!BWI%c?u0?AC(zw-W9i&5h~j&(A#aeA-tVTci@QL zKpTYuvbXr!?&0XUO_nx$y|PHfbNz585lr3(qBm zC!B@m!8SuzNUHr;4)Q<8uiF3LS&pPwl>da)#?Mru3S{zfl2ed#_toA3NmJaoo< z`E-IRAv6Bx5KlK>ywjY$3)JB9g%u!!3nP#v&LxN9T{=+&?!+MK979a1HJHXA-#px6 z^=Hrn4I?Z#ge0z*T6a#=*^M^gW?8YKJgmQ$xeu_eki4%E+V@{j)EnG2^H=qkiU z54M5-9Y%==D&9=Mq!xGnhXeShuD%c6Ot&cNtxt5pkFo6|`0e-gAqO4dUr9r*0(KK7 zf=LpzBSmg^$DmrIM5}(}C1D4r;d`yR2$u`%)Y=pmP$@fHC6)$le51^5D`M9^M3Flk zIj;>QYm@aw9lAtVQUzOm5%0tER*&t2OEe*HgIz1{hYR}EUhl+2l)e;T3>%cj5WU)1 z8nNH$B`S5FBfN&0?>apT+kH>6_i1@GwO`zM+4cF@(PS+`2L)r50MQ_8m&9O)0%zA9 zHpu<8IE8O;aIWSyz)D+!sX)**PAclrrE6=5Od)X%*C@6I6UGN++Sc?%dpQAs8Zi z4X&?5+D`lw)$N4b%z;>R@22u6`7=!{Dmy8DRhw{C8otn@UkUE%AZqu87AF!vYt+s7KqLAn)jQQksEKYoZzEe z@M<>J`59q@8~T(d9NykgI`hY9?F1BQQ%}ROSL4wI2-*_IN9sSzdvlwe)F<0RGYhB>Qm|74Sd_dW%4X1h*Bk7%br->ydaGQgvIgr!a|RYW~b+f$vVV5Ran5aIH8YWs#lJk-=CdE%$L-0Poxhe48^)YGgOw3HO?S{U)I8 z_wCkH!GB@s`4llBZ31^4r=DbGxFW8^jW-C5Tfx#Ek#+CUa_vel_BaWQ{pA-V6@4^`H3{r;XY$h1N*<=@ zX52`|1(q?2X3%GB`pKiJr$GD12<9X31~caP0!=R&YuZ6eA7i}!k?7%69is&=mMO_GB8!Y}FT4Z4S7Ya|z-A#v z4@Dhq_hm5~x31zvA7bC95&Znad&HaJWwD8jNUP*usF+Xe>5IwALTncaTz}phF0{3% zxsF7*5@tGf_v2D1R?Ld$p@o+3Or)YSm*DHbZR_6|% zZkDk-tfl91rcUY%A)mVH{qKYK@8e-U>)>4$zFL4A>9te-0 z5YwyuqDc#YDs&d^?L&6z$BLcUOLs;I(arwYd;sR-P>5Gk^iRD{z-}x(v#-j<6FBnF zTXSFsiaq9DO4bWXyw>=#48;yy*x=2#OA%yQ5G>F1jU2<(^X++U9r2otr!+VV64=ml zx+xM`B;(hnzn9ulb?0dS3aoSUJqxWfm?`K@6)PTOBIPpqzm6nX-auJ(Du^y!C)|Fo zUvJ?c3qv&ijuJb85m9G7?72eLja_y`*lfx08!JDiqZVz`Y^XX@*Vj$JIUT}TF>h~Hq7EzWg6X8&m-dA%|Gv@-Fp}s>)AB^&V2Ah#;pvi zqen|?+_IiG8(ZTD&}L0%*Rcm`cZ(JUc%~&Jo5Po;zvH`F=}g|2TULo*SFiVWfl;tj zbuR>;k7E%Td@N{e205A&UWetM;}6ig(T<9G_Z%M|Ggqd&i_RI>^BVqXpWZ&YZ4a25 z{<&B0Q(^~H20KDm0YAzk?BG7$v7Xq>0`XtDglON=cH_dpe+`KcYUXj#)06dTyFc8I zoFqix;V=Jmo#lfPc6YEpads3gCW4S&_i)A-aUkD=r$E{ZXN1)-ieK7Er948<2!J=9 zL~z7EQa7^9Rq&Lt^HwO_Dr zztSGPZLPZ{^r);8R4)}GoWLrWoR%i(=6IKx5!Dd9W@oN9?v*3&UMyIy5aTE&or`lk zb@G=3Zajhs7{$4l*@*D?+*a7ZE9yjGq5~9tnHBgu=kI`7jz`jrX-OEc$~9fk*Antm z$T<6~po8RZE7NT2f$NFmXP2?<95SaaR9br|WWE&h`s^g9Ro$?@Yq0U!tGv6F>s2v_ zFVD@v<-e_Me74!6I*Db&!uunRf#goQYXkOV?DTc{SK-G28VW%cd?33{c7#;Hil4(j zZ*o${X+kU28@K@eIQL@LLm z)-+=TpA4Q)PMr^GCvVE;EuvU_B!A-xMEQA~ zoUArBS4ZxS8*D$Sb?5%EEmTJ#RewCW{#r@YmU0-4qx#ksD7#SEchpgr9zpjJUjFIK zpnB&s-TnT}a?Jdh_?Gr#J+NQ%6GkzgIg8=rLg@BO{N{8C@Uzqrlv-KJx7N^>6vW)q zf!AlHJr-=)>RfPc@!)RvEl*^qa@=7C_YWP^8m zz`k45(uZk*@h4{3+(e*9~tr|zWq@yh%2DnAx@b_ ziDao5$@k$7AREtjsRR2<3T#1@#gT^ajN91;HW*II4W(qK#Y^NaJ8IW#u)aqvXNg$> z@_%IXqBx`!f1a-8t*_{d3f<5-aTIS}Q%dLKY;yM)%M0s1F~`iD0yT`ya5&W^9N1t+ zZ-mJAl4ARgHMlhHP7~bS-Q8)pU;cge9p~Y` z-5!G{8pi7Ws%llunzO3q$NeTrq@{TkgI|$ovs31&w8tXI6sq~Kkbl(wz^`}F?L%W; z>7PFcA+_kdkbD*9(ve0Z55OrZ@;-m=5w+X5SPN>Tlj(Nb0$bD*?Fs6CQ(3c~{z7T~ zfE4Ops=@*Z6*}|FPxs<(Y15RcAWwf=fPN<6LxgH>>N=~A#>o|#-?g_!e%9-X_~mBI!6L39wx4?R4WzXL*%PuUO^;+C6gAbJc!Lnz zFx2A2^&zTfMP_{XfhYT#>YMjzOV~|cgw=dUw1R`q_ci?C{!jEzfxVkGuF+dcsa<-W z-$73SHF;QIPha{E4_M&8m@y;E>1OE#9Im51)uDNqReJ_o=h z%AaNu-P!L%Rl9dP7JGAhPxayB+YdS1e%PQGYU7>iAAQ<|>dv>;*@;6b8HI1p(~_yvjPzE@uI3cihM)u1qB6p-E*qiWnO|0LFVZZ!32+441S!xNZ8$i zMZNU2r0hL?(s0N_Hux&&G3i$6hWdf&GZjxUc9CIaePPqARlSn>2({C<&BZ2`oH}KB zB@_w^Ed$J~2E#Q0qSUuYDR+d#-9`!w*1Y_1a=Q#&E~x&t%h`6hha7Z@!f6<~ginT? z6iD0}SKO0KD;<$=15}l65-oXJQSIlnF6ke$pT$S-vx;+?RvK@Agf@98g21pCyfZ%+ zy)@={Ct#J5MbPHQZVCyO>jvB%m&D9{o^+Qp#55+Jf)^_yu%gu7rAG`7LJ+&nMi=K) zEgf=eb>$oZ>&e;d`zv;rp>;eKC5CvU6&k_U=m04bgG3d1)c=Ll1)BOM5k+V8ReP`% z0E3vXBKj*$h-r7^zztP}r56XIvNwo?&MbM?E-AVUuE^Umw> z=jQmmTim`@?z~0c9!cxd6|Vy)MTO>POb!v(goqvH`6fkduP(;7u=86Kp3RqiM98TF_YkDJ@1L^kf^dR22ec}^V zpdLd(;FaxMqXjoJ`C6Aue(M*UQboZyOOpQVd!{cjvjj?3Imip=bsYm-hA*71KIY!J(H@;es^G!Z5*pTq&pnVh^bL=WVBHz-=R0!*n zXzsZa=Qo&I0qWlh`ia&e* zyTCzB2bI%bD3~W%>mE6p{i95!DCDT6xq-uZ*-t2*$?dvQ$IvzGuvf?SUJb`e!n>Sn zVM_eTW)_ORF81&va3$l zvr<5=k&Ep9bxI! zB1-)khLD*XF_iwAN*ZUsew+QXv!L{EmOM#;g8?E}=4-7jBbvRfNZ7x&Vly?j*1{qq zK^NNdsE~e}^)k8Str&s7v4pEID@zTZ4mo;2?==|CuxV^BAgg8KZx%FytLE+B28O@n zq&#W#V!cV4x{78obw@)i8f7s}qNy$SMN3ABXbbiV4-a{q{(v9KqeONtFo zz+E9+G4b#+;m-7V`u)_n`gssb!DvJx$od^~r6rBHFTXocckKooMpT{;wcVME3%s4G z^C8WsSI>`}mh(AMn5BS|oO*;NdVH6gzb+bT2-^h=Q{Pu1iz5nsuY$9z8)Gk{SP*%e62o}4lJDzf7fIKlO z?|q(b8S=HA;Q-vj=SLGDH6`*mX^}o&Sv3`hiKF>--e*(&J{oM}Kp(_6g3J@j)Q=`^ zo}Fy0UL?=oS)Fklra7&c(RoiX6iN4laMp9|^RDU~-;dBlHTH5kpf0` z!)H|&drRD=_#)a~XZRe$6q7+~89my|PF3x8g7W?N{SMDUa94K=_DO+g`1BhM%FXE; zsYI2`vB?zAhppfWjNxG&!3Z}Iy?5TxOs55rY`=7rh>(Cv>G{?wULh|^F{!0CEnSjZ zSuf)A-w#~%s#0}QIgNd>)i*{rwKz~eq(Zi;>=0MhWBN*O%HUt(f~j+>Y|@ur?P%VjEHC^X<*Ysj2_ z1nz2NCo-vz*Co-9?VYov2854DuaV56OV|T_mK-TwN8_uj0fS^uSuS5Zv9=(FiW|^{ zgp=}PNVYedj0jqoEes8Q=Me_r%>MZ^^tPua59{bGo!{bP7iFaRh=?ow2dWF>T<@Nv z4wJ2PmPgZsd^5&=To z7ikY92p(3~u07qtH?xQ#BFcNlxNTScsGh7CfB(&JcgR)wfcL}Ek5%?(HI(4Yt7GU! zr4U*^FwPofc_+JZCk#3RlFIqqo2ni0RZO7f5TE81FGSw5ZmpElC~|@z@V+7`$8&M~ zhgL4z*Jz*1omFTB+lA#r7NV2RjJ_Ga4#u_E#okH}YXhX(EnbLp6R`iHhkj3cbYN9NO;kOuO$ z3fNe4Eh*>WUoU2bPhQfr8Z8{)@?&1J@_aKBUIIlR!Pg!-1TuW6LEY%&C-Eh}tXl9- z#`nN|-ezf2D1J=M0AW~&d0Ok z!O7?4mo34HGiB?oM{+%1x=?fI|TWXSS4$A9Wuz_msR?T;z2|;3 zApj~_n}B+awHjH%u{Ma+)M&!sWX@_F)s)U7DfQj!#g+l}4~OsA{K`ec)kWkTSD$)M z!6a1A!N2!-NvE|o8RHTByyq_|IF({ib*Pv{FWwYv^DXo~yDO63ng78Z>uLd?bnNwR z;xuJt?$h`ElOMH%irSehLQl7j_HW`ZXE~R=GVh`c3+s0AEubTe1x0>JraJxOv2JxFZpmAq9#H}m;l!^}VlM+3 zJzO>9o^Dz6jk|y%@`nxf-Wp|SsXE{pT;cCVjZUFf)Ux>RQHOtrJWAbVy(38<-2Pej zKn23OC{9{%e3zw+)nzkwoKs>%n}&8|%Jf@_-z2Qn<$lWJ&hiyckv?Rc+i;tH>eM*z;P3-e+t!q-! z;0h|?ExyZ5xN1j4{EI`mIi?#ldTWw)a5T;hN@lMnieYoYFWrI435ef_NhuaKP~C3r zUS;^qlcjP+@kV@jQOR}*By`4KhKEKF_byIXXH-W@xeuXp9BPxv=@ffo!*wy$+Y~R8 zu;LyZ8RAQgwP^~_sRmO=@62eIv6ZkPj!h_(!yl#U{EV~m0dw~YNiv_MSODmer9OS? zE!%L4Kwxn2mf)2^_8$`lMM5RXyhJp{=QFvbr{|3%i|pcR9?!?~FRalHbiT8=3}kN3 zox#XcT4EAD;b{?-&@k}?1dS_KA^leiFXJ85#4(Y@k=*=~ORgxx5N51p#1TSf(P#EK zh{=xB`E>d&WMdsqM)#X-%He);MZAf~D(-J6twOvt*1|cE$sD>n(JEfU-@#Il%|U;Tm}+e+g$W9tVKh zjuFD1qorpzyC@lj@VFfL8<$M>1}pc)1x86C(Cg`hI|z*wI$FFa%tjt42pQk@bXr0i zg+CU5XNb=NU@WktPNrN}UH-IRgdKk=#aBT17X><2_Ow?Gx(%^ROnBui750*;(YbL$ zIYMi`-u}Z|V*^b@OCh%Mt~VsoGuYg5b;#DWsM&bWQMGlJwNB}K4oh#tAn7UO@OR)rGGH)vU_LydN;`qT^+P&5a|-A$LC%^j2SLtQ#p@h zi>@(=vG`nf#~GF1XUlYY`6755yl4quQyd+lgU_V>L5#5Ftrn>HEHiA}RfPZv=I^TL zKcqwX&cf9mEKF)~FhovM9b2G61P~CN_MMdmD58Yp202z042)<2OsjmfU&o^goV-8F zMxGVAYAQJFS)e?x+r>~iLO|_ zEmq7^wl6jkZIKa3CRA#SV&S))Se)gr1dH%U9`gQuB!Um7*CagqNfU}JM$2}V4J!oB zb5XQKf8=9?Y?#UK>gUl?ej`5Ka7WEK*WbWLOiQdUD}F?bN8}U@WW6*mly(xLObqt$ z;`RNWXpNgk=!f!1?;u!%S;l7V%JzNq!qt&*`T~%Z|xwJLylXpd{u^k(a${~`}PRaVxsq%qWW<6oyc^VOKmX-MBJID6#-N zY<&kPGCgqsR27(OwT!aP(TN;G>2(Z)eSUeeMdm?@$K>fqil0>FVS@q#jECX}oa`ro zWRT^p>CEcMu?ZTf@a_b?w8%Qbnkqb3xVtP@5{#--fT75i>D1O;To&t_NX$Lje|G6J zHsydBt-!{55W|a>jyEoL@vT;aLxCksQwqwg))`<7H#u*ux03P{vpCI;^uJty{Yg~~ zuIK_htRH_!j?pY)@hie|-9@Gn%Z=Sve@^!6aA9A#e!dvtaTMa^+|%-M)yJIc4>)lJE} zlfPZf;<|{`*-3aK!!vL3SXr0JMr+D^1`!XNvuvsLs~fs{bWEOaeA#k{32(7y*5oZrJ zmMUW5f>7GlIxG_dF7l>VYOkUI{*;?n<965B4V!U;sI$2>iQA1Ie{0XdUN`M2Zl5|J zV9$Z-)4^!274`m8%Cpm2I2Gp2jmSIhk==reejWDo7D?qBA+=Ml^l$O+(P$98p2(jX z9(XqL*a{oNqP?M8!+)OeIy_Fy=D#_$)nyjWt{=rqQM~NJDILiQ?t|#L+g1j%iO3dH zLtb1BRQ^wB%Y7)V7{oDog~|4u7<%#3yq2wfzydH@GUkRu0eyLnl|X(AjEdlB8g`0+ z-LJH8%Q_f#`t9Rh_S;QxmWpD*wa!h|TF9JBoqOTlTthH49F)?_w?Yc3@S~*Fm=?Ci zilD_u>H6iM{9j=~ymTa>b8Z$IG4g|B`)MW)N=XATlV>jawW>tP`@VhlS42?)1|G+Y zt?x~X>oiF7H;gGJEpgMh~4AXZkRjT*7YuPEMYD*H32e^W%bQpp1ZZf;Wj` zv}Hy}hD#ynCWQjQn?(*Y@|(yj&$CHgG>bQWF;Z|T()f_L%%;rhG|tt_B=*Ac&OTvF zt>|6Hxp1Ns+4^(#SW-#5`i`ECX#Bwf8bl{SrXC@EhcaZkY*I{*DDQ* zaL)xjj|P2N6ZvCgIKVAPZD zrF|Z)Y~>EPG89NX;x%4JUuKuj}cW2 zavWs_qL=`MgWB%ry#`~Uq&G(~)!fHC1F3kwA9xfk3J#>*OHm4$mR^kadZ1(k&Au2e z*0ZYX@4W@R7Qs?nA1@+i?pVwAB8l)nCEN^*58c6JcUfT_uw?GK<-p^f|!|7V@cX_JBfacAKB`D z^*eFIHFj(k>@zjB-w6~QR0=ks>oW8_j)VLn%53_)ZX72!d|~d)bP#KHUk&NNIVH`H z@0MA2Z0(f)IHMGsjeOYbCzcPJt7m?aL_L9x&I3hHM|zu*&}*>ZhwBpN5O=_up1_bt z?UGzyIZ)Rm`8RZE@kj?2*I`~2NH-Q$N|=rM-}XZg8uC{U%1Htwv~3}zJJJ+qFLQ;}3CnL&)`8H4N{)bFM zKr-ZJ`W<8bDRfWyS|DV$V#0A7AokePvY}ibF+OAujkqVV8_EM0;sW8Usi=M=BUfnO zgZg=WeehXT;Ezw44kn*oL}q;)MF++-wmzi)4R~0XZ`O-g^V)M3OTE##)Dr36D@xza zI~pZ3SO>+5c|0-hGUbQVSny#W z%W3unK@3k%V8SyNuHzX+>r`hfTnM2I!smZIuI3s`+p@N;J>QyPTd2f2<<%4?_og3* zlCjA>uT&hhQRP|Sb*Cw`#UV?6G>&f@^}H!#+Hii16qp71_4gpr)qg1Max?PCI9M+C z^S>O85=uR*daXp~FHCd*7muM<_>({bA9mQ$l$LfJKvGZHY6HgZW!3t!jcTa$*}j+a z9xCUT66=j%C!vqf9(@YJ2HX~hy^uwYXvV_$5;j>7?JMbX-CO(y#KShg@lk04t%#$?FE|#>V%|4|B2a_9tS_DoU{i-A{#D^mC+;EY`k95#^2hUYZ6^|{N$fRc)!%t)GXBY$M%v`p2uXO$BVp-Fk?(P@aSmIo>m?QK%JM#g_?OF( zZA2zZpNrrAM;t>5YclLff4Zl-{)w{&_RVWwd5bC$;rs^pB@PcP#f+Lfbe~e{XXS>e z9VTuGbe8f5tC>b1b-(AL1W%uETy>z(XqDhTnwCm;T{M7cOOp13zJW2gY~JQCZRi7C>gx#x?lrMM}Do<#lOI{z~;!`XQlC6NItk6r+pt7k?1HH{@pd zkOMs^Grc(65+oSoU-Gvzk8m+!0yNal_d(V`GUZH7_enydeGObj2j5FiJ)#MG!2S1H zpCnqQ8mA=Ofv^S;5Bw8M7E1G%S$3#y$UI`MZy2lam zYwgXhW5SZ)H(3La3JM+t>_T>f5{#pUL@gE)(KM>33ukrqZmo` z+dX;WqRA(mSoE_R70t%D@MxvSWHV)0E|bv6l8#W3R!X0e{tgSg@w1C`_=}nrmkVqB ze?|bDC7k^~2L%b^CW(NYM_07V9eZc=J6&&;H}#yge`5W5z>-;s9yIA8NRse+7EDkR ztwm<8{(yBcu*)lLBM);zgzidlwB95U~I9*kFvTR4Yzrcj& z2I^$Rms0)kwYpG=#;V^gjQZVo<}wsIeA~`|Pf|8~7j}H}o4Dg~+}#e@DGI4NL45?# zIvyc(41M$Rvj(64LHPeeA|1{x69>M&KT>I~lqbv!3ekknXVULGf^XOgJSR38Y1jr; z?{;oH&g+CHILKASpF@d?J*`^Y-)_crF=m$&kG4g&y7SHEV3156u{g(V{9gFO^X)c!GC|2t#&1nBR->?04c`rNqp`h9GL<~5x7F?KPGG|0L<^g_rR zkSwD9~9O(|s`K8(EqKp>D9HsHAzn=vP)aYb-jijABT&YEk3I6dW* z&kPjdVF#I25|L5m$Oh;Hi4#cayiE~9Mp}jdVM($@MS;UddY8jj* z-%n3FWEiLzO3Obp))9CRRcUmuET1D`LxNnOfkio4rCm)=U3LMfPFBSTF* z9)vY#(c?Jsr8E%GwhhesVpl^oc>)Qi{p`(f&9@TzQwZn6YGq79D)64y(uQQ&4X~Pd z^Dqu|HOe8A9c!DP3yKB;7QWwu)hS(knJXKEW^Nfi8ZM8*$S2#O@z=OJ^N&tuh%_{C zcfVOE^YEe-dMjE-%+ya*EZwCjlBuSseHs+JGsmEgB)0W8b>WQVy zSOIj~9vHG9%IkV6c7)!Mdzp`P;Ih5@v6ig$gB;{E0H@Sf960@PY&sC(Z{uwGy2}{6 z#=Tq}qopThEWQ4a`FQ#ttt3XJ_pWrHJ!4?uW|*QRK%lD9RQT3$=eUV(D-MnOgw5JOAHs^o7jgG;9Ml%vsMNdse8Dvf&7icbJ zwiW_O{v|`h0Yzb_Ja8v1rqw0I<~frxaBI2a3i(SQfkRPD%FlAaY^2QDyIdVM7yP{c zw)Q=xv}RUd2upR8<#kR9c4CnK&4#sHuZk?Dd5(q?naS+Cap(N^Ahuus-u|Wbw+fAe z=1;?H9-aQeok+k63g)XgqSW#cIdun{d-{v9^j8etc{)-y>CVLgA~>>@zCW$Yw%;lC z>XOmEq~tSv`SC(zG{(qS9GABubNCTpc*S#b%5-hAaps%cz>Bq?yjD@qEqYGLX6+Vt zJmI=39qw2>1ITfbul86OQ}eNSh<3`?=6G^X78K;Ew1|s{#NT9Y=A=l?_U48Ig`310 z=_SXvUO8=Xc^sMmfP5!L2~k0$VMPo*SfZe-*nOK+wc#k-XWao=tnwutBS#x{rcK+& z*L@#+Vb@=6{O@1j&f;O0K8b~{_M?YQlLs{ZV^y})9!z=SC(DaIWi3+da8dr_qD27S zC?lcc3p|pXE;G60@^vR_^U45F%7jB{3Qm(NZ6T`+D$nJz|Elca8v&NQ20hM!E~9Ym z@XT1@nsS_+BcorGX|t3tUKBk%EBx%Uv7nDZgRq4#6$K4^QhMBraq>7o>+(k;afIP* zL0EAFl^94=-XXah;7084t%ams#V%QO3--5cI+M;)0+EUEdu7vD9Yw+9R|LTa!bePhqu**vkS4;A-{37pm&Uvcrt*zkq}G3O zOQ9d|x!`4<*b8|6j%w9-IFk@d{C)*XAAHJOQpCUd3$lI%Lw$E7Vj)tSn0{?G>BE=E`vY5bQQ=sKg2dd`p zFDqL4=5mcl$?keUXQZ4w)=*_k4wPnzZ&y1HqWNWB>R1%K5K=|&-xtEU0NN{aRM6si z4CT17-OKfi9kmW>d$TZW#+r!&^XouPQdOSFNej3Z!L^odgtW@B2!g zmuUoN57b2ft0oJDrqt-p$2i66tDGF*&r*Dqch~Y=XZp2TpPew5xd?aXumNMR+tl`3 zUnBzNUCY3~SP5{1Lc1%dvKU_73C$C-zTZLwVd&Ep{|$- znm1OMoPJ!;L`E3Z#*%sp$ZbSd+d#|*5%@mA0kSe$+5|THbC9#GpN3FT( z|HVrwU=>0b0$LI$pAE_TOzsM$S+Q%*Xs<^!k-I4hpD-5uYAQz&0QR)BgI|HGFu%S+ zn)s1Ooo17BD|KhbdSTh%O);$Lg_IRiG6g01s!1V>??bVv=3!f;oQ_eB0f{*CJ3X4y z4)>v=cl(NiQoK&8-G3Y=exj>|4I1bL2IO2B|2SC)ezKOVX%NH9W<(_T)5F1TbC9a{_02vbhKiO zjn9{>DN=9Z`_`U?vrypZzi=A{McVbfG4E-tmOrsORxnhk8XnOuh(;cC{sCq@xF6vXGIaBhH@y#nL(o*bV9SA68gU}M+7>5DxM>g?Hwamw!#eOrc7XlKxC;?Wvf5jcT z`oI3%a~=L_mh!^t-zfCOIjLT-AB2EP3Z`|nN`>mJ!dLz7UG_w*(JELye&S+fUX8%m z3lcZ7_LGtUfw(b8mtYnz0SShRC;l~qq{y>N%7;Fi$YpnV98g0JOrfLfvW{E)mHZeE zSF1e{0Z-%Qxh%%fK-HK|jodCy=ZKaXyF?v=XmT;qPN;LSl!pDkh zAsl=K?>*UnEa{daqTa7*O52AQEu@CBdIkrLs@S=X)3yhe|tGTq@+KZ6om zV4=&p<8B!Jd)Xs8XqlRM5<1Ww7%UFb3M$rm2u2}0zf9hxc!}-dhTI`!*V@ce+&3YL z0YIOF1H-zh zQT}S`f^(1DMkga)rEsluR%h|Rg7iGzCGpg3VD&HN*n!W+pB(=}?2f}XDYxUBq10lt zef01k{F6TVZGczC((BR7p~iS4>2^%JwP(g930Jr>^!j+(MqOD@zSMtrD$-jo-#${R zdY3$^=ZQ$ddD7mo>3N6Hk@$C@qb2hF8n9uM$=#c?o3SP`Ft+%#Y`B(l zdO=6;|JX_7pCIuCxf3xPOsrdj(vdh75>C1+3bQK}}b{3g$hPP;c+6**J=ZhQ83T(<{)J ze;K{yLPMURVAzdyey$2EN;1PpaBDPe9QTA0!Eix`>>u5<0lM~H6id4scdwI9QH;7#!ksxZ-)CXrp1ZS?3>aO=AiSKq` zKBrQWA)j1!*#QmyGKNt*-^7(bk>HZHP)A$+p^#0Ij(O6qsg_V%YgEm+Fd*F`5J&Zq4hxcC0x4$AWy{1g#EwN3GZQ1GUtS|XU>2o0p5GS5kW;#0YM_O|i{)?X|fY(Y9u4$?yPyGnA@lC_^t#$OBY)*$m>WK$jtWqO(|PST6FP-M?RcZ=|L1u zDAK6MiS4u;*rF>1hO7R~Z?cRK4}O`&v~=jUt>*>=fj7=`Eql`i z<~buRSneC-W;YAkGH8CkbpzV4s?!zG$8|hLWX^n!Nes;APDHjdMzx%;cKb+7?&ZHQgQ zLmz@=7=9q+SoObc{3WJ(bJgp#glna*={Ihov`n6^=vTi~yhBQ(hR8f$R}7Xs^w?SJ z+ff%uZhe#Gy2#l6-o`b*7H^*r&PWBDU^D&GwxTQFK7PIhItBQq>Gg#<4;h4P?|y&B zkBv+1|K~ra`W+-1hKHEIpn_BL>xeT6Pg=bPY(UkW%!_4rP!ub`0_t|c`vD00WBK-S zp6foTF3zBvljeVu9C_%9R>66%q*>LQ^VSCwdhSaU+)YCj#}nE8>vYx_ofG{;8GCL= zb79aO=mFgvX7coLZaLEq-F5;jemwI4He&Y|wm&WSM-Vv*29_|@(|=T;n4PDX_+1Gp zk{bP)@4%U9F~|ox3<~)bY2OtumQHEr$XNGL;mlfi;9vjyNa577|LTpUGd+~fM~o~i zcb~fo!;L>=jq}u#$Kx8`!lr$;59V?JDb)n6rA|cG7OVs5;|pb6T!K>km^2l=p>Qeo zs!PvW^9G5V39E*SB&%Muh|v70ZNr-n@z^O&kqE!0nT=}v1Oh&b+6Tm<99Ts+LFm$K zx=dt;wWC_ykl(~|BN!{otTIJg*@o-lXCdj_dYV}iEZSws<9i{xKQ}-Qd8(sqWvGF9 zbc68K2FE1m`Iv0ZAqARKH`?-fz(-iInzMRe`LEgh4+5tBmy*!jwq0^R8MwPc9to{n zwtt`Y;eERi+J52yh6Knbm+e!w2c0+jZ;ywJ)a`4jGj$Gz`A4Sf^P#*u&TAtsoE6y+a*}CSkxdHt@X*?T4oK)k77%m|Al=G@6pandOu*_FITz63n^uN$ScNG+2;)z-3K^$o@H* zc0JDT2;-YH5;C7(uDKR zF=k8A%tI!b|6Xz;^d$&yO!YFqm_Dl20l?NG+SX-fqT>M+1J<-37Zh+nv{fgu=VxZ- zKN8};?|P4E8(3R5|ACGcqnYEHy*0&pg`6`7`;F->xlw9zGt@v1)evj9g~PagEzEeR zlZic4=PlHMaP0RLr~TvddT-LZ105qhxnI_X0_H=W#ZglKox-eFJ@+f?)>Zb5kf677 zX6WfBkdUi{$L;#HI|}GnkH|OpcP;OAoJy*3VCJXJps6z>gX{G)sH&GY-UmEXuEG(p zwR&`djPss5i#sNfy15Qtz#3FKJP;Sf_|~Ys0ne~!iin?-{|ST0DG95rGWUq{qeEX~ z3HnlNG=kw%-lwmKh00koG&ENA=-gmA2zfXS@amCRgGcyiA8-+zY=L+%yImiDzv_u% zYC>(6FQz(j4_oRL{NxQvNfOj`EF0|j`|ifEeda4ZdiII84WiGQjG7#Q+^o!SRBZeo zeh!ayFP3^CS0km2w;i^T3h(s4Z+Sj&eb4GmZo)U+fcxNTj6c$&$%{3b;XgQMqUSlZ zucWy&$tfpsLxmHo!J|ysj&teo4hIJ(b|YJ+&Ipth#3e>~wT>1zcOc7=Z(*9?jXueP zRJjII-IZdxE@VYNM(?=LL`3vG2g6Hq7h)@pwvyp?^^uA#zg5wL-|SPbNDW#udm+PW zd(>H1>wd@qT6Rx_`{~aTTHIel4R_4L0u4qi>Ha76@6eyRgX(#9*CMzcz7E56^ff@& zvX5x`6H;jHjhBLw8O)>E-~9@^AEsz-5yrDl`z>l8mIs^@huGtz2AY|2P^M&Nxnl+K zS{ES~cfSr_qv6C4)#vy~pND(KiVX zM9%I)DTD8(`1q#ve8v<$%rg^V*Fz%BX_$?*ueRk%sy&F)a`FP@C2?o zc=8w-32Nq-Y1YNQpZQpuDP+QyD^QJX`iQ~&>l-h3%@0mxyy2K_@Ev~rR45e-ukxB&NYp(9#mj* zdJ{cp>2#>1gH(A5**!YRjCni&+r9E)G2ikn62^_qe|V`S2HyzEZSWCAh+}E#Q{J|o zEb4N4iQeb7wkwZW4Wm)m&aELGz_oz;lJ&x4MPX=dVC5$CKu4$f7SH)GH@`WjkX8so zT+shLY~XP_Cj6n;0=2Smah{WVI4V2}jPXei2!ViYDj@vn(KJqGFaE07kl11wXDQTU zqF|n~$7%B{8Rt+W_Qq;`=e94nR8FvR9*K2sISxVeB`{a_l^ zBC!2HqdC``{+ld6W*#mTemRcc8xL>NE2Zsm>YH3clMX+~jN*fs!Tatfd)LpWYZv5? zNVl!T;D$Q9j+?yZ?FFv=Hy;;6&dF~wbG<}63BJE0|S z7BILBjnD|C`td<&&cLe!Y5}?>04-3`pWv8264vJG*@qN_4Nr&>eFJrHLyp7Q>}`x)Pd;qwN>&y^a0S3_oT5y=xBd zw*8ZXkkagh{yl0qmxDG6`AL3;=*PWk@yUa>+8fM%LVV+>G{1?Ik@M$*e@+O*vskHL zhg@Z%;5R*!;K`3c~2}aj?=aUEa0mHvyG8|^;&KMu)X_ERq%V47TjM6ki&bD8I>JJ2u zy6ew6s`VSloR;y2;q40#xh5Me&43+j=4&l<9>N#oo*7q2u5tWVnvf1u+EmZLpnNb=$`9Zb1sMcC%3OA!ma(cZ=sp{P7l zn02S!wc)g1TSep-um4>*j&aPQt={A(aX+zn@>&cJUd3laLyMVd($(W@DX)R|h@Clkj$zy@~|4{Z8P*HV%+pvIu zNC_w*C5=jVqolM&cOx}~bc_fJNK4nCAl=7#GsRcQtNkZ1;I3?hlWN1O(6)?Mt%z( zp0dKBsOYdBI~IC+36+{|Jfl6d+M%xK^(P@V0p2T${JocwS$}(w0qxdh}ja|NB+zso`LK@hLB$ob{4s6 zt!<8<50wFx%>V{saa2Ko*p-SV*{v%@}t z_t9+Z@uIhl6MSdT)teJ__jogZ$|>7e_lk^bAWAQCYdV;zOIF6L+g&$p^|!QIndGI4 z3-|7N39geO)k9e^P1RiLhOWnLmIYa@t=dzKg%x*{pFUwZ;Jwq)|FoxL_Cgu-*&Z&p zt#8E1PFoh4Rp6e$>0J{U9!EOZVauO9G$#?^n6lgfzQ$9BU2zzq@@yc0b2uc0)TR3BvBd5~d zgVW08nO;cbq+(fDHj4Y2%v)-&*j+DYcn`+0ywN^#n2A(mmd?m*@3CL7|EoWgxT=B;(SzxOmg99!O+jj`}$N4QirO zK`*wvtd3bM*V3>hNn)09EX@bgCeNneJB~1}*7(LoGdXrzVVKCu=nhT#LuAU(F(IAxBQV0_scUeqiE4*=|B9T@^zA1B5suG? z-^kd(LI{iG!aeAkN`x*g&K|Lqd0EYkyU95UhfrTwYO_qbX=n0_ikyX>4?}-$o~Uk5 zd||Z6sNk&h-*HGIKZp8<=p9|70=}KQDxC#S;Rs_slsafExA1WMjEtQ+Bq0ix4c;z&hI(d2y*_KtQFGXM&O`oz3uSxks?`wv?dMtziLEDwW z5-ZUCo&xKo^B7>m^N-73Udif8^%>N&Kwup1RoEnc_{$RCRtyMw?~)05WI;3sYiit| z&R;~U0~>@Dwv!gQUGbVvmgTM9OP(BmTU``45Z0bjn;5iEhN%H|IV}`=mcf)y>EWx- zo=hq3PAPc%6Hl_1v_i)0=q%_vC$gff*8O0%cigO0VprqHgyiW~T1d_cc-er`etj5H zc(uXl<|J}3e43W-jWvuwgI_;Am?A^es}0iSuRZd;yxt(MLsExy523j!!B&=kb>Isl zeh*nqf5%*Pk8t2x78+`$@fJIThQt+Tw$ez5ib!d}h973~sr;U!SRGaj!7Wi^rX}1T z_0i>DB49SnXwX1+BdAIKK7(Boz;AI?(fM!j==b+N zdyB>-kB;MRo*jOWng4_2FazI8a(-*N1ZYnv*%z6U)nbSUz$>g-9jVA4(p?2(i! zO=r78QZ?C^D2VxZs)QRe5c_u<9eaQBNJq=qg(QT`KCa^1+=8BTyz#2zf+48ay*Q1Z z>-rTgKI;#T=7M=)9-sW&oHffi2@L8!*jX+(S6^7YzphpngFH&55?gOsN|2?fFQmwK z#by#-oLN!(Wv8pA-%YB59lq$I#Y9F=0=~wHVb`KHsQOXyRo2JGygr2w%^Xo%L#SKs zihF#BqLOu>6S4&DExfE+v;ntal=FUAI85{QvEiMI?Vli^@x35Ww3SG56YnF*F6_G5 z&p+oCE&l>ToeeLr7KQoYz$;Pzelw59`K`mZ=wco&O$}lW5-l~fwmm4F5!qd~n3}bixm415V z*f9(5Q~O7+!L75E$?QAmuzciGzZF=qy9u=|b(C%T zaG=9ht>8pW3JB}=ko>JP#-l@8XxvDJDn_IAm7i>8m*eIq3YABXh^u8 zO}U|{z!#&96T@YkMmJ&mG)apzJMv5U_BiiZYub^VO7o+43A71Y+A_YX720XOMTNFn z)%;p#MsHRYInV{oI~c^u(i0#noJX`n)upTJP6;tz@Lwfs4Stuk6mHniPY>K!T2Rr;N2}H2lRCq=Nw1VjKqyR{$AZiaS{4;NT;{R-6aD)xQ3@A1=~QW}op_89 zg-1f_bhy&Y{qy}47VRG%Y+Ms%4>2#tUr?3th|oJtzfRZrYB-501SZwpl0TpZww5Pn z62W@*oNUzjnJ*=6B<}}@u1398eVjc@4j+NcpipH9;X&iEmo3v;!Uu|_;O#?1WZYMT z>h)s$@z#Fx`A7tvcyxs>G{9rtss9|-K6jqHAOPKOS0o4qgnVJ^Y$$ z?!2FPptU_|pzYr_+q~Xo!bq;K>j8Dd$_L!}5>-XV6P5wUpc$pZDfN{k%2j^K8S}X{ zV(`0WP9vNM5;DcZr*LfpH8>W+zoXYet9~Z zVC08N2RAXwa@u6oool5rJhBvUxivI3u7Uj)sz2ags&&XjsPc2S%k9e>%di3^9Vw^X z+?8#f70RNvr8uQ(k{rvMC6k5NMsmzK3m7Z2hx+#!Bh`r!sLQ)~Z78v)D7CMhFE zbe)m&e)y^`d3B}Dlqbt!xyK&K`)H+3l=~bdkWe7d`N(KyB=GDSHm@)=C|^3zh?~(I zei#+VrPk!{vCDseC@5n9GD_<`*m!e#FGat$!6#~#(-y`bV7jW8$*FSzv&l*dFdkZ& zTxst`ifsZREoVY8)RaaN5R+QJv2p+Gxn!O9?1#j@l$Za?URcv2i@te)N^*~z!@0cD z;r=x~=gkrm1mhdE`EU&^jriliK}Mw*muNCBOVzP|lDvnw(8}opNz@R_W)fI-N(l29 zz8apmaj`Obx_i-P#FR^?wVnw=hZ$}&(I-;c2=D{pm|v%*v?T`1u-h0h*;+vXM;CR2 z15qJ7vdWLqr5%`q-w`+BG(~wd*Q%|N8y2bEsS##N7)C^<^j%Z}Cv2-Jhh(o+`C~9u zmz#q+TgFGaT|!}qd1l9=T~L93>aedciG(jb{ckI7S%okNN6ltS3HY8e@eZ_v^`SV>xgNiK&5tr&(4z`pUZnpP2gU7qRDJ@%Ty5X& zPHLR47czyNX^gOSIfA;EgFD!+-{L994#fS)@V@q( zcC5^_UE@9bcOBO zl~R{fGZ@5K57{j3ZN7K=BGd8^Pgyv8?+)Gp_uHsYe+qP)lx&If@vp_W;o$^AFZJn- ztD367_}};Xv%+2R$QHi&cXvD@*%yV7`(P^#wLgt71#4m$AbBR(IQQqX(#b(9ye*8S z{7Px83fq2r(oLpyRb^eVAsJ5m=6+$f8Qq)EYRBwT3Ei5cyzPY!8Dxa9U@^aEiDm%X zi*3Uf6^GN!h_c?0yUU7ZO~k^$=#*N?RsNE*6oq088S5S>^gGrrQv5oiUBP|AfO|X) zUl!mM9n=m!qEO)a$-;!q8Fz&9JNmXp5HcR zZ8E;(ihzFeI8hJX(KMMN(~j7oPY>$mqU;)fN3&|G_fnua;J$?Gqt$G*7>8qZLaFr{ z#!Fnbyo8V)2Y346B)i7YylwMO>Ks20Azr3uEJ#N>FPj8L2ARm#j(|`)S?vqG4HnRwmaYxM%=thFFEp0 zCgrOGPxi=C_TV$UUsX!7%Bm|~O{Lzs!6Zkc`dKV~C*?*Pp|CFvHbqAYj!T*2KN{!1 z+glb`_4FCr4>uy2SF1t-cDh3r6J^h8Xnib#u&rCL$zCcOH4#sd5k+Z*Qt)nsb*qPT zt^u`#fIba%7krl;YtCFk4F3iNS@#*80~bPvb-VSu`B#C(lrY^P?KNhOD7z*9NJ(lK z97@u(RKXLvCHO*K6o9`Bk7}fQ&w~uK>DYVZn8vs z3mSFxShZgpWlj%~w2MBIj%UyX)UR(v;RHNoW#6fc(I@p!C)rXHHeH#sRSP#J?Hf_% z5Ae)$V~yEX=;@tm0YSWid-M#4S}UXiiD;KWmw+kGsxozq4F87@2^&Kvu>Dov1U?J~ z)HAu&*vBQrW6tna*MR|zfr);{NPeOb-a;5>)ypp79RWlI-j1ZMXZMgFD%;OEGdc`n z-w)xi=}a%4-R_zM5b}HhHY|(2H}jsHJaPb1KE=~%tmj3kTsNa5!>#(=vwH$-zmXeRPDYRl7Z!OJI8NQ9mGr#+DcK1t%J7 zL2dA1eoV)qxSW@9<-c5j;7Um-wzoJ2Er``Dw5@9M9hWgN)NQBj`xrgFbovf`ikoSj znoio!KTs__{ZoK4n9*P6wQoMChs~l^)7>+m;v(dqv4g&@J7ikFrlf(tesU1hYWjtb`~|EchtR$+t8pbUs}Kw0q9DzgvgSV?%U)9$UE|t zBW!^MBZa;vb{d%TXR-;Y8;6Z&&P=(oW)~@WHZjA!s#H4pcBOzwmPDgImvgR~(9jT@L@i z>p9V};vD02x1aTRVsC1c)zv54eI#t=+LfqUn(y+IcbZz@sis=;@+R*?2u8ZrzQ>t) z>(^>Zc|A|eUii#dwI?=-H@a@DhcxC<+gB1;RWix4{Oz;%mOMUi3GwM<-K|vr$b*7L zK=(0oq`2a8Y)fn$#BZPkzjY%hRPMu8B00GT$~0!+6@xefF4tS?Z@)epM9iO1t}>s%_i)AI9*mQpM~;gVibkguvdOK)t%H#~pB z{Ba0{Hmj2MlYu=toY6!%nJX9)0zuo02WoE_nM>vJ11is=E+wt`s*r zJH6lzxs|)yKRwl$oVcjWdW_>m*HBqPqg9o*UCuXlN?opd>j0&GwFExDiB{ z`0O=TqWI1I&{mr#>=>bZ&!I0`XG)B#>V6;&4mzIwV@v3H?z6sOXHZjPS@+xEw%5Ur zwv;-qFP(iXkRU{He6g?;!U+K?p%G~+E)V}bg+AjO@i-69=|^LTWXN6~;=+U}FN`mA zM3>G6y+-a;y3U^x1|!0jC|8t4J$50bLBjVA5Lw=NIF4gohb)v;IyR8k}u37vq(wbt?7OO@FEgj;k`T zk=dFk{Mi)ah*pA&YwL*FGK=$@w~~qV>OmpL7KHF z(GGb$7qBRwg|%)>vER~RBW{}>?D+-8xp6H%&to4 zq)xF1^8Up8iIVTlJ5Lclo1p$?Bx}NhY5?&!PZLl`&1m+mc-v$zj>Is1U-TuRXZ!Bi z^C%x8qTrUe?K?8*++KCH7iS>}8#+&5G?igd!cjB~)T7Q$2^l1}Qckf~hUiYY8$EXC zL!!5puj^R$8E7UvL{D*@RNe<#P(j{+FP3)1s7{0sRwaOA?h+`XOUl2|px`n6cyA7s zJIh+?;dWgd?vos$#{3KH;(N|SEVRD zjt-w279X&@_=rz@d6^U1{^eeK(p{<+$8mMr&rLuJ|I4YtD#IUVe&ui^Z>l!x3p@of4UWN9)!2X z=DNC^2eYE4{M1O9>$bLBW7%;BscdT~BXgU?%N0RXJqM}U;sx=KvI8Y8f3?IOZ?^o% zUei)+{nMSbb18`EXhO;5RYJQS+sfoN4im=y-lvuR=US%jAHKZT62h&ojwSu{6m#{i z?|z0ALg(2LWezBmTiWfxuE$Z}*mYM%0r(^m6=gA~zl&bC+3;Z6SIU*yfkw?4lo&BO zKr`dlqd9mt3DG>NYN>>QIy{dUb+GT2VoAu^^HS9hqdJ!IH9o;5o#?k946DB!WaY3d z#Xzy`tODsog@wF)+9Oysh*hL9y3U0zc$#%jX>Um{67L50Dd*Rf@ z62%?zVOpKiN1&=ck-1>fPW^P|z|6CO{7L}{C9^rBb(K;@`(iW@UQ}c}aI}2){CVjL z3q5g&BDlMIeBKYfXE)WWDLv7Cuz`nR>Wv1#b#-dLm?i#LRmEvCGJZTCBKY; zQMbXe(dr41*DDv~grTl>_hqWdAS-t|Xd zhT&i*Y{m9&LjSHTZ;kzLAMc|}oC_V-qt^BAv#_FfTwc#`B@yZx5RWgTBo<}coV`!) z=;#(u`y#Uq%{$c4_E&YKNrkm|M_cAc1mElc@O1bU{S%&G-6}IQ;RP&$GjT~kvd(Fi z_%)q;$k+{)zRW9J*Ui81IC@rGkhTx9psesU*a1EnTI zR|Bp?OkCT-0_G_o?VoL`n|`(FXv9((AJ-MOQ2fZ>*KTQn;!ZQM9$waki8a|jXEW^6 z7i$CR#1bJpm|EtHR&(71WDf_ZhofGN;Ct_bQPkD?XnI1O6KQsfwXB7%5@$-jz$&48 zlXC;W&S3L&L+-*CT~@lkUf-B~dt&0)D(mVnE)Ur$8v&S30?cQR@10OL{CEIz{fO>^ z9o@LIaz+wK@*KzTUoiPWrIlQa&nu&bO;apV-jkDwZmg;LsJaB+J_gf-)$qw?N#yh& zI2pb{PKF_MxobION^^@R$KFIn4NPL#u>cG)|DH@bHS)+f0)4V~q)E4tLHFjyia&-u z6#Ts)8s!W!dfI;wmT#QVS7lPzni`?(E2o^|}gwK)-+N zd|m!BNX%an2hLGAlYDR3WPH4$0~pJfy;R=BPqJ9V#?#zVRnZ}dTo*5u5DQ$8(VPsE zJ32Dx=%1{Ht4W#4pkjY)xU?74!6|)!0k?%&c>J2{Vx&=ef{F{S8EGl{4-SVQL)y)GM$^G2aSNtQ;I>|? zyB6=@!EZ@TmkNc1h)ZisT79}mGT@7$H#rK{eYeH-y*{n-h8nlzZzc_NnQ{dowCxR_ zqIM-tM6+z3d+F5*J<|+~nb2-Y0*;4?df8NH7Mtga|0Z`m*2%#3l7$Pf>De*C((qG? zf#`Vh?#h2+m_WbU_cPRU9Tf%4k;dt^Rcf?7|D97-{N3O;a=61L8iuN zH86@{^l*Rkjp`dgn3(23yre(~;k+a5g~$hIXsep<34;Jlz*9kw%>zWUkARkvdrN#% zzfXDjVI}Qi6BOwl^PSe5tsW&|felXU4LgT*g*7NmUZR#WU(Wl_+iGJ!&yRnj-q`QS zN{`r)w0vXvu1j~5D+;<2G7i+sn|4FRe}S47Wgkvz2-pIgkj6~eR*sSjGNZc=0sX_( zLb-<3QP(~HjX|nR6`+O%WWQjZaD2W8;PZgRo$lAsz&y_w!aIBsoVth<@Viztx(%qf zE&5X|vqXZd{ucn!4gal~c=i7YCpsZ01?kAzN*r(W<}#Ppc=)+N#QLdZTQ$Rw?bnQ$M@6jZ^RtR>lbP(b zEWwD2Yr+HQj*yojY#cQEFH%UC47#@Cu3ke}NjO4A&3K$WnQMTxn}(y!j#x@Uq^=iiDGAqN3G6V5qSMSAF*K8IBHsr{BL) zn13@?jh75G%=QD;SK~G=ywDdh z{d}EwDoeQe6wCdswz}$Vwq_Qyv%eIP9qSF?QBhHJzmW|xa#*9-mf^-#)mb9Mw>~S1 z&TRgO1F+jX8k>d^Jard!+(4DRM*q6{PdZMKiHC=m3@ri_t9$Av7}32sGWuoOTWI{v zZJUDdp0;t7Jbl9soNpR*vj$YdZm&d7kxTI6_V!ai#{KuJT2RP z4^*?M*uD6BuiN+dSG;-hQ4Lq$T=#_Y-?KI`3^CIGJ-e0AXa$Uz5t&MCi&SBd-cIZ>3sYNB*MwE4Y#-{yw`A+a{ zN^UFhU6?pO6D3E4s!@aiZUG;}*6xq&& zh*LUy?gYPc;=`GMEy=G3*RNJjA+2kzEZ0+WeL^oNjo!CWLH^GJ~NsM*yQ+mW7k^xab}Lf_S3X$jveUYll<$4 zKvfh6J|2QND40bYNuD??w}8q=VfHQls8-4AH5Fy*BhaNr8BdcVgUf8nUE)#o*o){m zRaY^MzHn&rv}Q?`6IK_25Ce^&nOm733*i4rI9h9#v4JxY?f&f%Rg9`Yn>GL7R4vXB~1Ar0nD|1 zyG%?YMKoc*G>mj{f%jQ4T$OhQ8<3*Vrkk!7l<$$UX-sE1qJQt0yz8mK)#T9Y(*gL= zY11W^ZiJuR3_cqY*jmaSHDl_H3=!n6tPiUi{E6RW{%Iv2}XlN|1DM<4+ z1uL2-QW#FJ<^AEvf{fm;Pl=7ib(jRPOfW7EL$!r~2xVLPdk4~ue{moYsQg=n&PrRz z!!48=qp7+Y*(xy}@@6xV0Ts(e8O(cYc^;*q04|H2RmuA%7-Y?dh5Ctk1b2 zlpF7Ndo@rX{Wpz0!j|ppD{MEKQXZ4(#na*y#9_~VkPt@sCykAzWBoUc^`poGeB+|8 zr8_aOn5zQa@W{s)gkXFdvfks^y`a+)u}8RLmAbc7&3P&@@f+WWfgR&VBB9vc$11*( zTvyRai6gf;*N)eiaJ8|s#*0Pk)dV**rY{{YViL>$65c`+-slaQU{lSmD%Ziw6j8gI zjU{FDIt4#{q{OjGPy9(s zPyI+@+^0XwK@6)O#TBn{K#bc2EYp%Y;##ltN;os}JQGn-Kc8dpWSZT_e9@9ed%XGV z4((o-p?O=KJiWE5G;iRU?b4Z9*D^I>|4%c-oxmZFA3LUtPwR zphowS**mqOrX|Wyrb5Q$4;774XiD%+tplkmoXEhLY0~ZYQRVxo)Uo1O{1|yc{sNHI zx3@`I0GrdvDzoED(^W{IX*ROTx^<5!!OZ^KtEx*lm6ffcHSHpC=SjR64&#?(9UVUt zFi#DN{2S{XcvQFOJ=N-EbF43}%|LchvY~sNkDM>QdkzrONSOfJ{=#m1uEBd|t`M+d zE2kB*cDmI?0v3`0chWIUZOrJDAtQPaHI;QN>594E{To4>e6m10`|*ZTGc_TQwxdhZ zSWhwiF$;Ethl7yCo3F76RogH8Z6YM2s_evF=ydt0g+5Oj$La+sU!AhNt}^lgdU@nA z>1ko?p3}(Pn6-^%3EP1g_WmxE^NZEcaUlG7mZ#bFnlb+zzD~$HG<>*#tU&XaoFAli zmh6v5Reckj7&~;G3!@ghI-ri3^5%nk#<9?U|NJygGLb$=E5#v-TJJQ9jHy>K#Bpyr zVXEWX3)tDCKd{Z=kV?}ZAb>=qOSts=L2O?MVD=jZaNdMi$V>;`?F^ByFyfY01BKb% zB5$*lnf~P5%1&K2kvnScaErdW<}ca*HxO{!eFARJ0neJi3zFd2c(dN0I`k9cw{^mw z*t=URDk>^*`@tQnnJUV7Q;Lu{vT|@TuaN&4qGVP3Ne}4*Q?!PgDVAu$)%Rns$Fo=c z1+CGG5?Z|h&Y{tOJN^~b17TDCl2>L%V64$CYE;jpTY$uf%uTuBdX`O*We1fz(x`wP z=!uK!i?Ll>4yu`c2GkWg7ljqg*ab&$(?i*u&0>OXF&C2166*}5}~rNF@DMO35E)%oyk;wy9&G5g%c z!JTr7s{ABKz32(ph=_UXuI0=poJ6y=4r`L6UpM@Q#U3eGcZ!VMNybZig|v9b8@n#4 z287CUL)HhMbQwNoUV@S>SnF>(6lC=hEu{TVys9UP>}#8ueE&PE>R>XRVE&`xOVHC8 zMr3=(9YBL_3D2y*bUFSYVvIjlmN9|q{#$CS2U_nPv7F<`0@%~Z^^A(R8#qpy`IpYt z-;PxGW53ycK(6PjdH7QD0E>?&+ z>2!plZX2TQIfU+H;%YXqP!S*3Wd&jyaH2XdULZRzZQ+S*+8wu!*1lEM`7>-LzE{WQ&k9+=h;&T z*8fKylFyG7Cb60`I%t_Ik){RODv$FYh7t>+`w3j?maFMRT9Q{bgmAPYB{ntk{z%v9U*9rp_& zsF;} z`2}SJ8XDMxgm1#*C4(tk1Y8=v5Rhz%LbZJ2)h~B4W~DFBa0k!a?9AJkwcbtZ>M-uA z-a(;<4sV>Ie~P|zp`1g_<(4wRw%ZUd=~1a4lIKqWsJaBk}A z`WQKQ<64>LH@A+?$;IU(-j9L+kP$psk7edv!< z`vlA%op50Kdi3W<#?V&+zU!OzDIdGH; zn~<;UdfKuEdMlNwv!I4^Epg@{B+EEfiv3*Pnhl3k7 z{){|20I1WSH1d1(ts5>o(cs_sj(*qmueR?@PW2ibl>?e)4>kY5^#(06IX+@?G^_pO z9-r2R#Cv;#-7jx8fRN)Qlia)IfWDqy^)!M(TRcW`L$HhG6ms0a8~?eckI03Wk$~-D zm2YuZTgBGdA{%1(h{vZ-qMyAUA{zq2*^&P``8xIdQ!{dYbe-Tv^1#!|xqA7uf_vT| zw9g}E>&)buo!mm&=Z5YK=KCpSPESnneRjV?3hMRY%}tlrA8@6U10dPw+{&3&YWJ|N zqcms$B8bA$D7yS8qtXTtOjnAWyQ>VDH`#ek)5rL<>YKBX+1ZTcJU4 z1MX|#S`TBe|D^$5>`#6@IO>xX7)9doACIFIYz%1E>gqaXQ)I*GI^|r=1?jCik#t3% z-34vA3P;@bQuXfTFH1SqWc!UpT+pqsem4C4KEu-;Z=*I1=z{frmxGYBYu4Sv7dQ`q z%juYLeo=)u@K`Q*>kVcoCmZy)V1VQ*a8wxA<+Ou%4`%N5_s^Cg;#)Q#zS|qd)hQrAeQDA;>RPCAycoJhfDY$o#hO@vA zP*30|0XLie$G>Vl5F+rWTnQWEaW7OZUmvf-9-Njp!I$lMD!#5<$&=K)p!m^roy$%2 zM?Yn5?4I0$Os4U-jfyn;CeX&NQ}&ca(Cvlks!ZZfhFt!H4T(g~bWiqQs*6%BDoXZY zNuk|+oc9JjZJev+#@O*6xnHv)#E$USJ>dE9ohK#CFF!57a|L5I4CSCdB~XfQZxh1q z%n~44q0mOJqz6IGpBniX=jIg|FI-W6wzJo9dT!*i1gIHa4VEI*b;)>M14l&1;-1Ti!NNim^bTioklic*)Q@+93-X>-HcJ>9n-2+ z453oy#C&eDn_s7*+`*_7abUtHJv}i%`6FH;lSC5T+AZyh3(_CeS&l{;d%|kE2Yu@= znj8R=8=kkFv`Bur%)^7%Sxd-RjvQ>hKgKkFJkw{~bALQXxiI=BK(-=;07y>=Xsqxc zz;>Dkx`08GpJS#u00Mc-0kZth8`Y#NH8>u-ZG$cjy_XK!&%nY+#Z?QN6Owjca4aWZlZ ze*tY`>->&~vW&6B`pTvG85p`re#TQ=co=PQ0_{=3_nI*y>QQpiuQDb7o^|`qnE9_K zy-hHp02<+6rqQ2Yyj2XgzWo}ALfObyKtB)S0u!%$Py=&bv=*Mz?7y;EM%&WfomH}E zecbrY8Uc={7%hZlX~@}(P7+&qAL8@^Tg%*Z^Hm<<*ymmy|Ek_Xk>iU&+ApgHH`W{o zI@uV;(So`i{_B=<)h8axwdY=QS8GGu`L-eycUH1^_s)h&FTg$#)41zQG4Le!4U?lr zyTuy+Txlw&oZMIj;l#QC9FG?ZX3SY4F}}(T$Ms7%yIau+)O3CI6X7A`ARM;gvG9&| zJ+x&}=FZ)h-(p?`6W3O;jS>}BZhea$&|uOzGU0q{t|6S8^NeglRv=bKy;n2$eNXJK z<-&q|_fj&)!kT*ZX*eCs03n(O*=LrDC`PDv<3QFD~+0!MJxVpvHzDdLv2&LlVKSqhTA% zBF!Yb*L$eY9$b_l{Q89bQu2}((Q_c`y|&ZTwp5P##H%z}lOb(r;kwLc33HFVnG^Il zx;Q@Q>`Sxd3WRoya(aKk`{9*TN&P%+;}C=*9nG+@DQ@VV1$l>=HX-S;nLkN$9`=`0 z4}#(67e=K;WxnoX)&U*x;|zFM=h2v(`}#CP#-nUu#5~ZN@UCgsv==uMN)0#un(`4S z*1qEAwjrA7y1g^*^3#i1_J#vu!h-Pqjp1td%j%`w+(7q>;N0glD>JTQY5Qsy)4;wV zjbX8(kkJY9nW1YmwQ!o1yji{D8^hH^76YnA=+N;+byKg=tc?h2;e2WO(nrf{O;&Zl zPP{XG3?_pzsBh;Y;kd8g93Wp6d|=e z9}BvAN7{4%b6ng4IjpPQ*iPEbq=AEM4=Y7NuUc#he2{NQ7r#BY@Pup}lF^u~d2vp> zg#QE`p5V%N%iE9{Ts-rKH+Ih^??BsHDVv6{!FR9rL-=4*_jq?coh{|29hAc-T5RVZ zuda!>`?w|@Q%1BLvx#Ba=3m)Mo~tB*8oDC{{C|U-c2hOwXK9y~R$v?Qule+*I3hKPsi^X z0-um_0vogP? zw$FL?EGfivtqb+791fYS+PxdE${9^{K~<;^-}DHVK-)l>Fa&ugt^u?84se(;3Xr-@ zLnCrIH5czR>U4KF?Tgs<$vyW9?#v7Pr6IM?ZoZj z*u|v+ZzKm>i+#TU5@2V%o9}(#AHP#YJ^Oj-#yZe;-4y$*^r-sgW5uy?)XVrnM>{XI zqQ|3@O-6ge8Izm3H~it(XPVuHxzCG=FR2cAvKO|;;It*j;_krXydm6^hAsO^&rUY> zjyz4cZaA5Y0~V{Dll+yg^N$f}pI5MXxPvzcGQ407L@k8$LuRzKlh3g-_S_D~GL(5c zPH;ILjgUvVoTKaGJDOymNp0w0mFTRhfaNf`rgR6^%eb%*$ ztSC#(<&*Ji(lL7;F+*FUVZI-_(kn3+vosD}$@SEe3<76;o)|WE`s+^{thj2B(q6Jd z5N9Ae-C<*g&24U5jh7&pamnn4ku^l1kM{V-JF1!^-kOW)Hbi}Lz?jsW8e`7CX3){? z@wyQ62bw#BhTzeOe#V%MlKKK&Az!n2-)0x^N@L)U^F)l1x(@#=D}^xp9bFAZa_qX>POd_evYOZ?;l3kL>!o(Q9q5Vh8WBAnun~ld3h@ZtywhYcb+k#cUBePHUIR~e(wZJJ#ux=0?;V~hDZNl z*ow<8Mqy@4lQ+)cjYwPxp+8WkE?nS4rmZMPu5mWV zYAs~>8-Ni`-q@nvV-`t4EmY>!N~SKv4rL>wJ?Uk0yxue&QA4Jw+CEGect8ofn;L)n zX0#!yRolAWzn_FphKL=vhh*GGs0lBIar+>dXcqL`lcHzyQfG&JPV-#3PfZQ3lZqOT zmaFp4cS2EKoWCyt1GhfQY0pt#H)05QX#MS}Hp6=>H0}0}qbC=d*#5Ch=^BqP9g`M@ zt9;=b_J>xTOGKnM3*f#(e`$`JEmTh+2!&T&`poCMI2Z{(?#{rUxM@O#xh)8B5BlAA zgpDe}7lvKc-~0%Z`vB~KQNefj!LloPk)fN0zpmwo=rh{9|9lC)ey6v+KV2|MWO zfepqFE^UmX;}m2yDrl5e?_$b}NNP?8aP^Lsly0xt3nl+)p48kL$1q|^a+MQxO_bCH zv9K0FQ#=|iE_XfTb2D>^yA@#9$RGb@LK<5j77ojN{*DpSx00QfKqdN5BmRoINx^@s z>z@PM8vhkvwCgK}dEJq^=NR2{p7h|H1t;&zKl<@UNkU_lvsnLW);Uh&$$m}XliPnw zpXdH-0fOoisTeo|Y9@0AP&jn^4F7TI-D%iGM3?wox`3Ko#&pu<8^)KF|6F~p*ILH*{cvg&6>S5Hct2>Y zbR`WVa&q_G+sT@&7`gw$+B*hE)`e}OlL;sG#GKf+Z9AFRw(Xu^VzXo0=ER!Vw(ZmN zy!C$Hk5hGiomE}kf4Xb$zH!~U_F9&qvp9;NtHTjrK>y#XuggXY<6|fa&F8r+Vax0D z9JB_)=qO*j_N~2rCG7g#XbE>*OwG{$($cM8k2@MG;0MGHos-T>T;cvMyr%KDHoV(G z;$vk7bYAo$^8YI4pGxM2Sbna zB)koPP@{4woL0}P?Bxu7z(Hfhi53P+&n1EoQ-oFAo7@!^+lF(}Pz;5&r*2>t9T@mA zKuxSp^@X1k50eltOt9i>X^<#Q!>FbtVR5EUX4iSG`cES&P!p*&>K+qj*GFq`xI};y zw(vxTl1&?m*hAN07cUz*CsHZw=!iij(-+)^>0(=VKPQ}Ymmmlv+^vk0JCONbh?9e9 z#CW5FR0u&N)Yu|bgflnZaF8l*o*Ge<%9(0_Dt5d;eC+&}GhZ?fL!(eB@#2cU(>5F) z&R{y2B|9h(!Or2;miyqfLoU$!?S3Wo`X&Do!gqp-?E}w7<^_}J*$wWG4O0A$ z$F5o7uG*{YDYK8ie^dvD7&}bK!Yy`Wn}UH1^Mow^crI~xe~-+b3@Lmi*aO9*?SC5V zQVAa^FXFyS`L9vf}WoH74QW@ zy!B?jZwO#}2rMpVU!ZDqEn=@;;6S>Uhjl>4qxMjBu;6VSJ8sRqw-Q`LDAf&wyJ+gj z7G9%-exlr6`IH>G^jDVICFsMKX^h>D`5=Ee_vgLH17Wt|C(#-HBl3Wrl#ns3E@XeB zBa%4CYCw4B!>w(Jnl&4t-LS*%{W#7dARs|wtK>q**D0G`5jSH@n7x~Y2{s)kKAdX= zN%e#U_@gqAO^v8pTP)pEoHtnq9>TmeDwyP*zovAMZGfSIhHaTFjIM%Wm___k24)DY z4lrE;BL_EuiW@8*@q>)Rls3y1^-~_9JlYb9YHb)L$OnC;u*PJp7c?E{S`}AdU z-mvk}CK}Q4DFr@gk)m2%R|rI0p$sF2P@_;(L_arf?WtNz+u+YVKdN z3tmLRVm-jMJ^xNJ>e(+-*u+%LD{$Zv;mEarP5hWFH^6u#Mmt{vC%qtm4Px3Q0EG+P z&1_?bV^H`JjtW-3;RyrfRy<)K2Z#C#b|CIknv{pamNs#~#p;;~eGrpdB<-allgY5T z-S1pnd#UAj+k-ddXBY45jd0iwnUz;a%~u7>>7$oW@l`u`1{Qd7YqQ&?BpOG;j4TFg z%qni3k147>^Y?cOSLa0lb2w#e>I1eAWafkBF3b>cCm<4Bs)CVRv9%}n4!*1>_a>1a zc^D9k##CmCEn8KeomFf_V@5LJl}AY(+=Qctoftj6V3Q4c{|U4Wal+Zhv9MR1449*| zhuJ{Z)f20V62XRxgEamY7hICxkiP9DykVJp3v&)1@`4^T#1riddwDAD5>E2lpya5X zer%uG+AS+vZ`kYCJ%+r_4ktN)WQVe>|9av#Z=X%(X+(sQLlp^$X+$I=7757?GH@oO zB;V@60gW&9B%x755-oNfGs*nOFbtiEfs&%X%9>FbU_ctT|2jfcAA$@uz^^$e&?vT_l#U8SD|M24Bw8K#cIvrI&!nT0sJep#o% z5AK^|;C-Lj?|{|RkYFZ;@LBR=1fo0J_IIVFf;)c;KR_c$RY+q64y)^suAT+hpo`k* zX#kbVY=QXqavK#ts|Y)~CQ7I^2azQJMM1JO3kVg~n)QK6UB;e+ju*Nktt^l!3`uw4 zn7Chu>%RH99)J;KXByfm3>dKnF2Mb03RMq7UT*8-b%NN1S=o*zr3_a=tj4E|Rfd#C zl58x-;L;wN1Mt#;+oD;d3HC!U?@C3H0`RDBwt9I&RS4qgy~_OX?`It>4K+5L-f}QTLSjd9FgXy4X(TLCx#wEu8%g_s zb}4J5;qMh*qtBrOooT3?;8@}s1)Ywx6J%Vdx#LtjP`G2{`yB{>M6|3*p0kMcAULg^)nX|hgI542LP_R^mxP&cW1Ec3t!Gj3C_q8$I?}bofj5q z>L?jkqf+g}WzEvvMCPI}v|y!BBjN)9r$jn~1ad^0vGsvyA&P`|Y zX$A!oXeK5uAxhm>f>p^HimUwcbqe2YFIe57I9dvZxJfDJb#*$a73xC2?q4Q9kR=ji z<%khYBEzb{OTaY$6-a0COM@&BHVfnE7)*Mi;C+FyTj>UJf zDiMBE=N8%vMsY>Z@=gQQ;D5OQ_8SZu_wQWXBJOh+w+SV&R~oYH@N;Nk$0HHPO@?)b z7GeN1qd(-V#|7Kds$aEH3L(kMB!kVghegF}kq_^nlVQYEBnnoLOWSr`926hG*Q?Br z=)ldfy(G4M@o{uY#H+1;LWUKZD{{X8VUISNPFxPF-&gD*7PdzNo)M9;2VLeI+*+VPR_KC8Ogv^Z7o3@O-I)cZ}Bd&hY4*bDhAcWT1 z*6ptdU`#(;C|7L$?f(h?iYRZxqddrBb*}$eogI#;M%bg&EO?`1>wPi??79PkzdmX& ztvLL0rJ;aTu4GZkXkkmU+Vr7-mXIysS@bLbrbJyBe3Uvn5#|1Exp5qLJ= zB?!TSzRYXqy-@m>)n|Z;Obr!-C{wF#Ry36WH;8=>Gzk?!7pXj`E#IDrziNf2mIk$T z9WOs)yE$j7bvPpwekf|-R6o#_`@#{PXa1>9vp6U+exMtm9Ve45N*@qGMNdk=fpI7xJu^dHXZb?>~P@ul!E=5841Z7DB0 zm0CYPAA>=gqh)i>ZbbqSx>^{>1b#EagAu|myg{O}+UCqwrJKBCei#KO^*MU3&s=)i ze8UEqW#+4j7qBqT6&R)`cI~NFXsHGM3>?F530lKQ>>3CyyPzQur_kRP<^wB+ zd+4$m$xR}k#|{)^^WwXJ9Kwp{+{kQb$R1J!CT=tp{47%I9B48-W;08(B_OZEEJPPi zo2cPtXR2i?P!dHQE|8KX{gr0NX3>DE3Pf@)KYGVs8T^t0tqRGFZB*2r_=3l6Ib)+> z1Q1^@qbOIb1cZHK&7vs9YjdCkV#`qqF15hptt?iHoGERbVYt3#=g!2m`FCqj7K;lt z5j^LCm~m2S(s=1ox2f_E zhsKZUNZXeRH&zP2vMWJ3*LP`#BJY@~z=r8vJq}H2U4J9Prp*Z`eP`6fezf>kgMz~T zybsJ?lIiof=>mzE5+s27w?=l~LIMi+_Y(k@ezTQBS6A19d*&M@;iF26IfC?*LFv|+ zvg7)BR25R$<6@}?X5%arzb^HYL+O@&ch}ISuU9(f94CU7NP<~9>wJOMh^})_moNSf zFul=kFfsvBhLBqrX(u-=QrQd`VwuH^J6}BB5DC;ub`4IW1`?8&2*Xl~l*2RbHBEWV z12tTaSLi#-K&E`ON-x4O5LQ;DItU_Ir?}TM32m(7*jX1cjs8v}hg$~Ib#NKQXmfk7 z%9vKpo7Ogt>NS|g!qEyoP8*pRH3x#W3L|0TK2Fsf1m1s(i#Z;^wr9n`tBoTdc;lcrCxk_gC`DAbWq+Y{VEx%^e;0>zKNT0vF7OjNh~T_K z*)^hbhJdQ1P1+myDS_3vvr*Cz=p=CtX3&$(`)~2x-tHu_$wx8lY@1I)|pH(My7a7l&5@1WG{^oGR15cEF$K4QQ zDqR~XHw4>nt2K|?j_~`NB?xs)d?n)szpo^NiE`!|Z5AdD}22?Os)$osnVfw;Q1C$K-eIyBwIeiJF~>dM?6bK6!OyT30Xg z-nNLx{B9Z2U(aQq#ApMuag3FyMQTGoj>u-@xc>7-f3=e7Av&Uh_3USnJe1jSHc=? z+D$fMA1mgA^jkb`j{v^quW0jlOjLPEyT&pR_=dMWE?kbtI+C!G3re-Y`QI)H3%rct zHsVZG4;0HTZf)=iLX8wS81*2Ed<_-^Szt3yli|P9Rl)04Y>^U)!tz4kPge>uS1zSc z#uTK}%6#k5cF;Z2&^<%%Xk6L_HUbK(OcizCJ!fG*P@tcO{oTItoiuh|+lzxsFVclK zY`kz3BnsQx0RK+9dKr_f1Z;BtHg~ZiPuHYr3+=ZEWrDROl1Hy}8wmDBGkbW%;%D3v z_KcY{6?3wSPqt#gINvsC$^k@>U9mFM(y1NlY#99l!|`+;LQ^Nf6~$s8Yic zU$}s|9!d4>ObziNJFeQSp3?Gw<~G7>#30qS!-BoEhoB0torZx1LY+C@Py)A^Zw7yQ z(^8=c|8RP7?%zu2+{dJ!OW=eEZe#dwbdJB$AY^-Mqn!ri4N%GyI7MCLN1l4=6k6t$ z1P$e1^&)rl>V(qdQWHT)s0EedKp^!}b!d1%oAQr<4s)^ND6An1E|V$NG;P#0UUzfs z%D=&2U*aiC3R4Oj@kj@sARRY{8z01e%?C`Gr(E|OeF>Rs=vOP$Oqz}YYD8QHh~ z0pwV@hF}@t^`7kSA0n)g)X*FMUT+eQ2a2i%6(duoe}T8m@qlJqr!W3RnINJRu-EcZUl@{cg!F0lF*aPl9-j*)Kpuks4H?(@&PxN$U+&g+A`M; zUF|(J6hRFeI@j+nv745&tizN(WOGy?ZA+d!EqcCX{l@?=j?K#2W9oh zM!Nsn!VwBRD?Nqt0GV>+$F^7|*P5cn zvT})uNoQMhD^;qpq%s{t1IAk7U*c#7wyg1rR)6PH+oo!NO`C$lQg#;GBV=__c~aV*z~*x;IMHAz!H{C5Vc=nv@-nBliHR!D+zxnw(ZPQbd`b2LO%6iUDg*a zIAO;`m^0vC9gC}&2wXBas#m7JU3{nSh5jl>5OMhAW1M_@3^w^AL6@2be$BvHm%U|z zf0Le5*WqbmOlM5jAq3Y4Q9EtsDP6X3PIh39HGy1yUS3Sr&&ABMH2@jeQJ5eYg(PMU3{hgkefIDRls*RARXODI< zM|w|v_BhLz1?c33)9lj}@8mJPG40LuyT^8HAZeB2OLL^R1Sgpn9mtJ@D$;2#n(%)nV3AgNg~>Va_Z580hI z?;`}3Hh!aAHq&F6R&gD;ram1RH7zF{rV{BFwccFn)1DPIpcDc=MC|Z(2kyPJTLxII zaP-%W)IWcHQ%Q|>D2XF?z3RF-i;}QcEJb-DQzcc3>c5ezh4U53T(nmloOWbXizuGO zIzJR))H}wOr4!Z8;n5eDN-L;oRXA%}Q)L02++3Vg{aluHs4q)`3Skim@sJhsE|fZE z5;$%C-cci1M6nk*N|!I2Ol4a>G!^|pMH=BYbW2(==98^qRbtH~zkrtA+;#d@jn^CK z_FFamuLzII?*+ZM$}-BvV#Po;Jq-@%ub$Xgs;(H$dNX*MuvZqYkuq8Q-@{M$k~S;c zE-6fth4)lR%Cs)OGTQblbgol+|epG}+2NN;aa*DE>Z9a7==MQE0CJyZE+@&tV zNY`BKoQ`I`R|4xr6ZQ=e?7Z#W4Wd|c1b*LPf9mr`@PGG@@O=>X2;#*M^bv1dTX1DA+)$7bU0?oQqXRf)YPZN|76RHlC5Khwx`U(=)-G zS5K7lxX0k%w&B(uhcD$>fLj_23I+tv$JyWWfn*_VPTbKLmK7u7JXpN0aA|(qM~ALU zYYe<%uF;G&_<2b~8sLARo6lKXIN$^=`7ZTnw{{vSm|3Oc1^}$HCbcBd7+U!w%yRXH z7AEOtWtK%@X89xOfMriP{eI=|ZN;pnplx{4p={G<@M2~Cz%Ca!mwEb~T7@m)UyQY3 z*Xi$3u%Ig0YNaiP6J!Te2B>?(U=QikO5E_o;@XK9G@iCjzUc7#@9-M}2<+B^TjmqR z2Pj zzb?MAR;}dvP+CaWBE3r;OvBd2NLd+?o?Wp2r=wU;Xp9;MZ1xWt8#R>g)JnRs<>1Z5e$XRG ze}~FBcH3878$yP@J#95?wP#H~$8kH;46TC%37Z-xT9TC|5@6-Yj2zXO#FJ-dPe8<`;peuA+Bxm{hdu_tPS0$d_{(e7N z;{WU&u;3BQ8zQ(F;x=Vp@3-NelC6XOPJ6nK(~55(D~riyS>96Bu)q{4Mddr<)jDM5 z7}@9)I{RJOknX})NqX&a?Nx{k8PmVcQ%jDJME7mbynD{(>yMHyxRU5^v_x4Y{+n1; z(e9F<-sy$+f9_d1n+jDqd^63j_&9z4C9nfe?fM`FNq~BZ1^c=uJEXKUg0*z@_kh{o zm>(kU5m8f}(r;_^=jHpF9Bifk%YvCIb+T1dq*DR)HC z1_7M214aB|ZFb-C6cc@iN6BRPYZ66SM8MH5tyT65uyf zfw|lv6UUH)a_CDQw##0g)wkK|?9()O#SEBu8yQY_f}>}o2$KXgnccdM+kLPpi!XSx z=F1tAs14#;!*P)kSn7J*AQ2O;%^nuah;oz9A=H%!mCxi`u88svKDSA~s9yd+TX80e zOqDZkv+HSdhu6+_`ib%&ULqc%A0x#ePV4gEJdJN=@aj^Im}M2(bso*<^L-~-5r?Ja z9qnPm?xeRGmEXhl){FDnoZ~R2vwBrpS4yG;*e$Bbgr1DCuuPk~j+a%nw_+wQ12baWV`w-XE70z;<7=vJkEL+}x0n zfV2i#lR)+SR15B%5(7?*83kkN3{)gG=ah8#SE|!}^sKUB?N;$-?S7f0#+DSy;Hr!F z9@>h`RyKE=@GbY}pDM80-ZOBq^B5iEL!Ud)4i^(TEQpS_O0eDpL9rX9)kr+k>9|vx ziDj=q8C+CQiYobUVBQ=Sqlom5vz_Iyq94mFxjNm>y5ShDN`Ez@Jt$$#VV>+RhOg>v zC;!D4==0_BYf`&}h;E@0Tx`z@`Pk|cz-9SJNg;)v9G5QzK<5tyiw|};PrHR6s#W< ztp8*0Gz3XM_+n7ub7^OY3ewT|(3P(UaN_mF*vAGWQFqjTjDj6?nCzNPVM!{*T}yB$ z9*7ga?j5u8j32LCim!wenXg)Ur3@F8#mO@A3@NhBBm_LaZ$hCn@H8!I{JzL{p#eJ& z?X?d*4M>daSBkJ#O8kODx4$;Q-i3oNgr8P?$6qK%Ok!ZCNn}g^YhqF)1sVv6R=%t? zOlvDC#m`YJf&(6K-11CXn)}iL_j8ce#WFV-;pM#AG<8MWdBF*1T#3kt9#C3?aedQA zy?a)w-rUeF7as^KP$Lc5>_$1WdU4fJzK_xN)!m--k6 zs0i39po?hnrV=rK8f}qqJXLFN;E0@^a?5EV^0`ACC+KS1taYE(!O?39asSkNr!z$T zi{=mgPSY*Ya%Z?6WMa(YXw31YQ)1Ke=tG7>ai)^EG{m^{Q8;g;<2czyi7=DFu54jGt}<6Fni^SR0z8EDz}2 zW$<1N3zb5<5!f8ac+!dwIT$79Va7SNufm7ZTF8dsap}`Lt37zrR>9h9lXw`KJ+0!^aIro^znXO?ZwY?M_=C#<>>% zt@kI@1ilF2XY5t==e7FOKQnuz`yVs2kPW73s@mMenBP&y_O(0veRM;z;2rsXVZaX| zjY~-fsy8*ybvRLPC%t{i$&I==zt3F9)Te}Xbk9oA$Z@C4uH?*m@RGeS=6A-Uh9@o! zu*wcRp5%AnC8JTb8DveWMcQZGJ zlT0jkBdKTYMx%*rbZaWA26o(Oc6&GQQu4hEJGY*4HY?YelbCJlj`s#*TbX4wc5+p1 z8ax;UM;40U(IVApSJWue&r$I#5p4&zct4eF)K(BaGh9=AjHF69TbG1)3vpgwy3xaD z*LXeDuV2o9g3Hq{Yx^rl!xEZr)t|Lzsh#t6ky&{TFuQPNNng=O&;Jp<0{#(s9IZW| zgXb$xXE8;5tbhV*4RHc%mn6ZnER=lPB|GaZBGUJ!e$QL_vy!a0+AJL9tsNIf)%z7C zK^C!wH-RBPVG_r1)UcEbEpQ@?rV|V(z%6NVRm6%|%zVE39#yMXRH3_gC+E5E^)g4{ zwLb23+4a``HsNLG>h01B&KS|6m)U4fblwr3T-n;CaE8yzmaMCp#^z35q#d)ypgBzr zO-n5e{wBp^-t*h2N~~$gsETJyd*i@qrC8rplWy^k-bX1#Ec%YyHzoLhUm1@!E|}bh zZhBQ_u|MaVU(nVshwoFn>Hv@0>Gc6YA6ZPz!<}M6Twip~bURidQkz5LH|;@!u=$TB zWe4W^wg_YYDX^LhVIZ4C4f3z1_v@m4iHCK`&>pMqd@jqUYj58Nxk0=v1x`-fghD`L z7m(*_iA^z_F6%vJpSM__8zzvIZG5tjm7Mf0WnOKs1ZE7>90g1iDFOoAh@M|Y#KmX-*fo!?+b$E87Bs+^6MgwXi zgXh5g8^K)U3+tKBn=cKWME<(6Muz}-*u&2wx>!R>oX>4*#RvOOV-U~3Wp}N<+xr{w z0B5L*|458@RR82rjW{tsabsovOLpaXySt^nFiZ%gk){{FEOba2$HY2HWDRP zQL=kNZ5sA*s1};bHk1o3Gg6N^&1Qed4l~^< z4XL8D;19COjrV8))aBW@_Tm|yw)Ndx*BVtn>IsjxeYX1d<5kAU!XJP597`q`*BV~u z1to058phLR?h}OtYxr7-t{o_3$ZAo@v|_9ps6>_&l&x%mZfeTa zns|FMLJ&NsrO~FQWbuT;1qmVLoVY^aHw6WSBFBt$l-uDypCNW*nmxPZd$>kB~_QKk^a}R<{E2Vc9UHxU8?d-g*ehqg$l}n56n1*Pti|+88 z50*FmH?EUEn%n>>3< zqWMyIn}{fldxVj_e-F^l#ATj~v0#NC`s-iq{T*htOF+29zWbfVbob_f>#Rkt`%3ph z+bgu)l#uikoQ7|B)jV92&|@zTDknpBdKmmtg6o$#x9$ac!#L`kV}|cC?QlBWc%idP zIf3;c8RjjSPsyv*FK>M=-!J?{h1Z-mJ})j@Sf`wJSqjaIDtvFJSFQHQAM>9zjWwO_ z*6+OxD3c$1^@#FoRvW_Z$0z%{CusP*cl7gUaWd5)GG)uX z>rVr!?24^ApU<`Y4z1>%uQoBaf&Jmk1nKgOpgFIT`qaG^{)1Ne!tpYJ)L%31Y$JY4 zCVY-RJ6f5iwd$3%b|9t`)G9pF$wtJeEL)3&zmxuFyCB~aO$d^Ihx0OU zN~lZzY4OwHkT2`0o;#QSk-VgmR3ZY`Rm|n^?ZLbCnt0{wfAtfhlSjT{9N|%{OOKu3vZ#e4*vfU!Uax&n;wt2$Fl$xd z&GipY`(_ai>PyOLMpf3b8|nQr1(@B${NZlu*5yxk3jF=%+V2l$vR71~9%B{7zaHb7 z>_pnS|BM^P_FwB}f8L#og-kH?MDUJkw+1IBp0&gFRynxoFRj=Lt@TI#{BbFZK z3$b=haV_{?E{nH~Y;)jd61p7@WpBwLs(kwn+TEeeB>mLt#9c>?d4-Yfj?>981 zz7q9f{MhU|w)6%RQphCJaW(CeRXG)&rInd5V}CNCwNtZ{mX7{yu>yUnPUuTT(>Rg= zr7Ap9OtgNHX^qXz-8>}utbqj$#E4(I3z&bjL`Opiet`hHy7tqYxac|+dhBeTdjIe{ zd<7Q_yXfL)ga7=XF0yzF_78s>6cEgOUgn{-u;tW&NsEF2Jz@02jWET(X8XqLfqEzS z^XdV6w#9cv9T~Oa9cR2H_8QmPL-n+Cq>i1o#(Cs)dF-m|K2$*pw3cZt#a*RG`Gt9} z%a1bbd)DSV?W9NDlyKp7WZ?!1Y?3%-?I^(vQ~&5Pl(ixu=&3A_0piESI&HRp3~Z%v8V+WT`Ky6<6Q0fIq~0uPEak8ms(c9<3vESKX;{3z6cX$@Mv^312lkV z*RiRu?S)5|x&jCb&#ZU;R(%z;oRH-cj`9{&QZ~6x3#4sAjnZ>1oe~?M@oB|K7yr8x z#uG^j+22ZvH-;qiOSNJHZ0#c<)tgpTXMvHG{Lvh_8O;jhx*ia8tZUH4S~R=Wgu7&Dn^4v{!N*gP(BVVBJ#8!m$Ldidkc zYiOfgfr_Rh_@d`ZY>@nD+uoT3vZFSh71>`nf_&nbZ&{;V7WyrTc6{Pr}s(M;F$7&;SCV) zz6(`T8Q3nq?9g`g!EM*x)ovb@7C!5ONv~r+#h`Ps_I|}bj?wJ&XZZF%cPzM~BPq4a zfX5l^_bfos6;z7l>K}i;vh+eaQSkG7+~w*i`I&-UyP<3~!Xp~&?_XMmkM#?U{i@n1 z_A#w*SL@_@w*ZP5Gp<|3>{%f+%PRgMHXQv>T?<_jRogJ;clg6FrqD>qsc>8423*n5 zDn8rbWGKJ=cJGz2dl)s}<3{$2+f}m4yu+g#@8TLAo-RHbH=g%ZAEZ66Jn)n&U{)UUYJcdw7}@EF92Zpu>u8m z)bQB}mH&x8K)lm)+-W!ZVLUI_shMS%RriTvBqr{~~yA@aIJ@+MZh%LdH1){WI-TVIhe;Cu{ku+LeFGHyjXX#1jWi~KKpcAx5% zEgR)9K@0Sk0%V|N+8wvSR#-r{cZ^EOpNXR^@}Zc3E`Vg zgY-KLsEHOR87{Y}VL>cNcIb=qQ!^T>Pm-w>`FhtKH%jjsD;|oFOJ{3K5{jq$MKg9L zs@2u3!_p~#uy##J9)r+`kw-RmU1EkdA#T~$R67F;J(~7L=onK5t=~4kq7&m4?+~3* z%;r*HMyUb|-_$hrTu;Oe#`j)qATpM`x_EQ7Fe@G%;^&XmMs60b`j$q~lF4M0fR|(c zkVl~_1N$QrS^Fiz^?m(vomFLmuXD@m>;?bU8O^LJ$lc$2r1f`Kez+j?_OZW#sXU^*n6FBSISi!uBpj4Dpr>oI#Xw|-81eEs#3_W?u7XX{wBk-I0+4l z;Ai~q#TkZBD599Nw$5HDDmgoCCoL^K8Z1YxT3m3(v@M>j_fy{&1pxg}BSy7K zvgmwBTv>$RhN$h_K39}l6#VNRMGXi`X_WdE{v5o8%ju-`cDu4K=R$Hrr2>#>u zmERE8gL{p?k1HR!MWvmAsM9wX%KcY{(4I@Z$qsV?M1Qf8duqtyfF7kNWVBK}7m*%9 zO{B=5cXLVUwaEbkPI?6sELAZ(7jnP&P=HOH5X?!`^q8WURV#i4G&qh>TKKTqbel=( zj`g@pdAMj+FQ3O=(9vSJnXXUCT|O4re~q_oh2vQrf)0$1CvOPzXs&inSL@73`<2_| znE9WTbl6LVo+KuA7Fi=#eK_1VxOjZNhXXiLAiGaD{PCF!f2e$({PM2vc@XFFhkj4i`^yF^V1P$wUB=Dvh5ms1!Ji-u?KzZ?Aihm8KTru-ZY5b1`yYv9N8id{)UA^A_lvV2>a<@v;O^v;+ zK?KF885VE~$Eq1EWb915kTt05T247LYwXB2{mM)ON=4PQbEWb{3DzKw*CUUsARJs9 zr}#W@rC%U{sLtms1yW=0U<1U=kK23+tBs7P*tf|uQ1f$yg_@m$$UoN;+^FUR#Xn{b z^DE9?2Re28qdDB%Q{4Db60O~>*_>qjmt5j2P7co2Z6CI@L_ewSp6!M2zUTtgqU78Q*I;uq-uMHNpXssHS7?<&FJ8M;|+LFMovmx;=K@U4-@ zTMp!uA-!*?$4|p@Gto&4;>lCahqm1|4|K+`y>>H8oVf}odb$VBH&M%TNHr%8L zR>Uh@!mjV%L-2+X6v?putLR*Z6W`##8Qav}7cZQq?+md-+#B%{eS%`3LC>s2en zxNv|Yk{w55kOy>#sU>-`&5jV08EX0I&Y8px^F}%@! zujSTLtg=V^U*Q(ro0X_m#a|~T=vp*5U~U)V4~6~XOPL!LLagMJ9V}6(63)^`m)gpC zHP@VOGcor%su?Ff3Ri8gLk*;tf(|e++Y$spN7w0HI;VFTxh$Ah5s)C4Ll{(|>6NCk zm9#Szb_jJ@Tsd^h%`>Nsh>y#LM9EF;uo*+uNpQyF5|Ppg&mRQLDWs?wjAj^0%c4C( z-(^qka2Q1-yoXp&$0?|D^aMNc2y?KxE&?%Amzcw;=vJU(og3Js{ST1s)`p_B8+I{& z{uKwt_4Ob_g)ydN8{?x;#tM=_2X6{Mc&qaF*eurG5*Dw&d{kZPK-r=bZ*MbB z_TKrUaun(QaLuN($>q$eBK=}&XX~E+H(iGm>n;}pQTg9mAo&jv0Jb4ahYza+KVdir-<33LUmcu)Et1v*b^D#xQ(Z>)Y=Y&;MN{Wp{wAYM zGYd`}G9kn(OWL{AlbCTJGJXDVXW==`%E!wPI?H`T?Q%d@{>Th}hM~U7sB{|=7y2#K zcaw}qaeETpqb4Nh9~`0;zS8P}*zWNeUhyTH#iu3Fzmc2J!^j)}sHCK&82#pMQ$ zf?V*SP)eOroyW5`y{cMov&doKT%#uWcwD3k{BGBDgweu8Od)~jsNmo#=>fR}>ZMQh zqTD~I2{-2vJ;^^&cpq`U49qd?;D7wkUH1|cjd^1~nf>0hj(AKSls0XpM$ooivOU!S z@W1mcdAC^P3u!bY)rjy^9?WQxpgPE*m|SYG-t=ay_;C^PbDN{X=KlcR1 zBigvcS8(Dbmxtk>CaUg8!C9fla3imrl6GI+v`R1)-f&(fx?4>110MQLq=xwc*{itr zv$mw7MyGXiBsaFJFwHAEawbG0h8zkpN&yf_ zM05-(GI&%(kPe~FHFQI{xY58nbfPT_U+EOmJ?h7PBJ0ETue}B|PxF2lI%#~KHdQk9 z5n*$Y=3|_~IjpDTvBhHMkT2d-t%Y{4FFZ8=Vzyb^Ixl==hG!>JT@B7D_B!J9dt}@n zGwrJt=yZ?n(7(zUi~R15U(%hl6Zj*8`^NnT773z28s1p3AC&L)ej$!VP_`Z_!8&h@dGeRY&#hG}J z>|yJ*p}xHSk;YhRLE)N6_x1XsA^+FlECMgsAA@J!^@{| zH?yuU1`WvNmnq~Pb5WZvduljEi6h*V3?}9o3vWjvD(sCK2RHXzg<%4BcNd_bXg=u# zv5$v*PabPm6mn_o?d(X^G3&Xdx~?3x8|`h&@rA`AUseA8H2n|ay)v?n0a`9dM(8y=0! zJVI~B5Rh>C_q^p7yoaR_dhXAcuSQ!a4~MahOKTQ##0DH=;jo_G?K@v?I;S&(LHWE2 z2$2X_XWMf?>0Iu#zd6#zGfn$ka$>u z4%n6)r$-X6s9jKSMuM-VV>DSWxZXSw4Af2c6Kdl$TLl(drb)5TN& z`4gZaqd;?5!Arq?nfxgNmujP5jJaH-%2p>ha$53y;=zC z&(z1|QR~>z;)jbZ940Y{UO(H^YVDq)M29dS@qv3M^QnL1&K>G&wOPzz?^s8;B5;j( z2jBl@k*=2Y&)ovz{<&Lw6c)%c_d|K;i!b+xQ|bhc2sVP6^EQBaxz;)fN7KQxf!++N zNPJ;_uQFR4$O`Y`<^_V`jWM?mU-J)_5Mf+`-g@R5WY&-1HoHzM0|R;~xH&qTVdle< zmP*g|Cf2oAQD1uwc};IC{*1eFOW58y;S3!Rw zl$7et@JCcWTW3A!{eVXD{;H@ml_gEWk)k`wZ!gD&#+{WGJ+85!q#7Prm=6@H#Vs4l z3EW(kAiu@xdVIjqX@g!vZMb@y_?sIb>l-tu&#KiL#QpRmYF#H!n~14UYWX;<>0o?X z%V{06YnkMRt+qJAM{bYCNI!4)zMWP$Ah0J9RYsDQm@#w!{cHJc$J0;PU`3Nu2Slg- z&XET91nnA!SMfsGinERbK1!&HylH3=1tM8!-)kKi$S?DY9~?(qVQ)tQ;tXqoIj<{L zW4|`g6mw2AbLk%9nilz)-oWk@x@&$!oYtm17B|-!k|OejbhRomN>lhYO7Q>cx^iD- zP;HH16{KQ+vst`_i3N9%HsH2Ycl}rBf{XuG=(7Jm00=?%zL_#yfA!AG1uf`3w#g!W zDSL*BVd47bmeuTyP#uSB54oMa1cx5F=Y$TxPbNLmW7b9$mvOMaZ2m6tz|pM21)d>_g|vlr@N@wQ2yhmgbg3J;V12 zyZU#!Sq}s?H|FY0Kp|r=6k3Em5{7I%t&yf+;-^hiRneC<=qs2Ec3Z?+;{_TwP`H7{ z3uF9HCyz)GL=eP@l-pDhzIl|_o3Bv_=9yuD6LJR27u=}1RO5iMVN)m>9=#$KvZEmyP>w>Wx zWCoy>nZ0D%co zGFU#s0jJ1?W|o`nn>4~2zH(73GL%KG2kq9t&UY*}c91wg4m^T-`^&f0yPz_Pdi%@B zlRtxa<~LDqeF?lyU&pK8Sxg>!BIzdu?e&+DM)J4an(^CrGAUlYpHMNnK6U5if;Rfy zuOZHS3VrE&+yBm_fjIFTWJ>7sf4janw%$OkH(exAVS{D-Z`CLY=!s zjLw#qvYysMzx|cF-??F7-*^Xq?m}`d)h6y@V*=s;{qh$QU(8#HBSgD`-pS8WYi_-H z)0P9#Jr=Q2c8rzQA8Wne2+KGGew`ry&~4eTDVw9(j`+#t7Qa*~Q=HNGWr1&MW?pR* z&&3?>vN=28aG-2bX~ndB#h<)1!D}~f@bu7O{>A5xGT)4-G-E2wh=o>6wH*^{jZzSp z4z7-{ZeHeMPSYR9Jd*2Tz|L{LUE`r#i5}Z#ve{ z-7d&3E|uh&E4+LkmM}5rui}?`lRnEP=*XV^uS%!jO6tP>(_yafq)J{kFrWdrxuF8K7XC z;YjWn=j-n><=(`N+Qd3q{R_4O1q*LOYt(yxyZ-UFFphfVzd-*8@`JyFn!5tyuO`77 zx4O6y=sp7V$<^Yu=^##iEXgchMu%8q@+ARq(XH{$}S=v{)Iaicv;Dg50gyU zY4pYKZDr}59}ZgROZ=bT`qKK#tmOf{$o#b=dwK5K&Rc-=9EBrK!Yf}~o;GzJGKJ)I z-$`h#<5_vP1>|zw(0>a5>JK4PO5WdsIP?(W$=^WLC*Z<&HXgm;6cD|~l8kUG3w@_x zdNF%WK+r|NKS>bE{I~yix-M4k3B`$ub#BGF=P#?z;_cE`(gKHhAsk4JK;W87vR;ul@#p`N;$H6fBPR z*_3kzmLZsHM9elKzV6!`>9v?^yiU9Ln|yEdO^!G@9xHV75BiUC-ET2zHRwL580pG! zZN}%%f7;~aV20sghckmVKW(*nVd@&n{s1R3eH5%NX1qD-VU=1?!B^fbUcm{AmJeB( z!!jHUA(6sBB9Tk4jpVg7Fcx16$$8J`q4HD9>vX0I41N^(e6a6l5JGljQn@5>D;*Ok zpLW#Zt)Rw0_AqVlD*mBggt?dR_+3a0GDe21Szw}cjN$w#Kr^QV*}_2_5iuTml(_B66WfXZRvqNPh=miI z7|I}+6SO83jX+WJBWA6TS}vqjjH#DGCJuPWt|m^8fdJe}L~AypH5byFjcCq>wAvx9 z`3R+T5@_>*E)hQ{vNofGieSOo5i_*c)Fuhc;-k0>A*qXQ-hv?Du zGqSeF4pe8q@dg}zDjBA_gTr#gsgI*y`oitgANfV}t6xkCR;_o_q@s@X&FJ>_Z8*q< z@x&rSt2J(r1lp~k-~AhCSC9{V7STNfxh{0OmK0&S@a<%{sZ)UNBg?iW(p)`sUWnx^ zrJW2eMZs;BEMe3_-;1oYlzYRifvGJFU5@Px89&Bp>|6mdJNpQM`|gfy?|wjQ&0Hhm zof|G^2eUjkoTJ{3nXQLRRwHKXA$3=AqqZzk1508xz@r0QIHtg{Bw1UKvn5$uqO1(h z9M6-n1Yf9?>Fa%#!`X`!-OipjoZX3Ce|UAw6Tp0j&v}DNu)wz;!XxOpp%^Ej--gz z8m$$fj+fpax%efji_2)eyd0VwSuQotvDojhg<#OhF=S^cnl_OZEJ(#vV}_wj9}x$b z%ar**&vV2&BGMtTj)`?dOoS~nfX2YY>SS?;Dqz}gUhK?v*yU2-S{dC3eapA<% ze8Bo1y+%aY3NSNZbV;}x(|1szgvWRz!nP&0DX8It*5vXJ*vvESHY zvV?{kuYqxEz;y$JOhoG1&1ElaAz73**!OeTrs+7CJw4t@tLNhy9Y|kkmPJasQ3>-KOGutoPB!U)t zCo@%w2hs2R^%^rY`dY{1Ir7&R##{5raL?_~eFVxw#EU@zznO@>D>0qq+`9e>0P2VT zcEwBq{U?zl&qKC^#z3F{#`5eqT=uzy#Jf7zgKk%LIAdPlcJHQJ^Vr!Qg1adEl(Ksm z@#=FbV;^R-M~Jd>v}!+s%28~2gg}jNY2WQ!nOu8yAT2ol5%Sl{wA>$UXcuRc7$z37$_h{t@szCJI@NG)lw#G zOiZoPL)AIXQ0}LlrFCcNWSJg*&?%}1hLqSsAk2W4*&>!E3Q35>8nwtg+6HN2k52Js z?@6pih2y;yddnd?w9t{p)>)JpffFO0nAnI2q5xyQO7^ifL~tzfnAIZ`JrB#P)7|Z3 z#0F+)U@8L>Fofjt&Fj>U9Op!B0fpJg?1lFZonS;Q&{h$RsGD{i;zljnaf^1;B3LIY zeM_wPeUu}=jk>fV2y0k4jS6d(z?NPMWmp^jHYC~821TojlGQ~%mnTy;DGh2`zKdA! zIXN;#$r79{xm>%sz>D(-`Rzx~qr8wxE20{PJb}%Z&d(AkP1TJsO|VUYV+w3j;#dOP zNW}kTI-iRWNGT{f(B(+1tbvu6*hM3G6bvF?;kII0jTp~U#3oGFLgqrnyy0Tnb6~eA zb}K9#JS_;CMY<;Pw5kL6?FQ|zi5s>FRDiDnB9#O;BAo;tOle}9HnweJTNbuyV@V5% zfzSp*Nu-tt7M~5ImPjNBlHkVDr>d8XaTfiy4Uvozh_uF6iOo(sYBJr^OEiClpgo7u z3MtKG+p||Ogv2g(k;`StSvee$qf#DWU}1ss!AGzQ5@{s+Go`{2nv7K37#QROmP;J# z{!_=XCco9Z}vy3S-$A zNI;v2n}rPdnNeC%lXl#~k3C|2hv2COvR%pXd#A#RLL!cS5Iu8YwLf?D=BgmAAxttx zmZDW6XLl1sF0H6WD{2zNYZsE&H{a-FRbNlDs#8)@QXT+Op*kgHwW>3!C4kQ-sHU3B3C4`(DGBQFJm7Z%4!IWz_6tK-@m;H)z8A)m4iN4cc$* ztS{v{x{78oJ1G^a_dT~{@+-Od(GOPPEb;6cIL%qKDPhZrh_@f}$|>Ou9D~u99=O6( z4L9b}l+VOM$arP-hq;zWy~sp8$*lglkuzu@h!jDjSZG1qRp*s!Ed-D&yn;LMQNr>7 zDqAMZ*ZBIx$1&S&TD8@62{QJ>%+%f^=x~*hbhPIu|0cA(o@CVu3MMW8e`FB8Yu>>+Le9Pt>r^H!zRSBO-x}1tJ2i1WE~> z?-u;EKfpKS0e-=G2V#S7glCXp$WK}pKU0Y4HH+lUA`^a%xuC(cYC_-=s(?@hL^=^i z)kc}BckuCzvRybwe}nMGmmv`ps3-7qfg#VPZ*#f?1+m zDp4+%keQgKU12^~$FW25@oBoPS^Bj_pKtM-z2D}G<}Wfa|1xupi1E6|Oe5k6`uOwL zHWm}5pffUH_2__A59{{n+LmN2fhiy-Kp6tGpufkVZ3}8zQ*{HbyCG%MC$u57Oss4X zBRWVU-_6rj4_*+^a9g-RfER>>VMrVYDCMJ7h;5tXvNqYQO)hJbvmLUgjft5E)mkF8 zv1C;vF%p{^Arq?@Vqy~87)8_x)Wk{s2&IzWeXTIaVd?@pFsV0Mya5=#A~1T0bxgf) zh+?yXqhkE7Udqy?yW~*L=E;jZ)2_|4*=~%k7ICqK$cD&FjA1EE9U*l{vr(Y0Fpp3Y zltgM1w1n6|ChR-;W(83h2WfZaX|znl^NeuF7+G>=o|09h*DBMWJ3uRF zPzkEc2Q`{u9Z$J>29C@UsG#GIzM_?S zMax&bUi_cMktHksKCLyO3hqA0m6DQ@lCot|p*kgHm(cHhXItxuv!6o0`lqC#)c!+X z+{SmhgF1Dm6`*5;Q@r~lBye}8uwrQdedUGq=U2uc*9BH?!_DZozP#yO=DW|*e&mzT zuBXjB}j%88OqW5@)*-IYp=4;ds zMwA9@`Z5Bq*<$|2JSx<5#WsDBLl+iC1j6z`B-xe*@U82Q^Vy?sC)uMcW|AhCKZ&Fj zSu`6ikJXK2npi5?*Rk5reBTVIk37Wpf832zuTU=i6hBtzPEaoB@1yx<8#5!ZG6s)i zZt#KpAMqDs&+@ZJeu95R6NC_k8q<=97)&Ht(;#C?EK^{)4Ni=jXaia@Mq3$L4KUj- z<`6_#MUY9fJRNG33#zSnw*4($SorT5)juG170ukQb9n3znLhe?>Xol>IFsjiwoGVg zj5vp|2f0!+ct}*Jdo>zijds|?S3asETB;?%YEh=z_=j4a`$O8#{LkcoaO}?r%RNwA zJ7c=l_yOUQzf0zg?{s{>1p-Od%#tXvQB%lP4sF+!8}7> zZ<`PI=5V8!$+?i1Z`2V76@NY6hpugHB$d+O1`0RW`frF7f~+klWDJT~Nq5fV@!>3w z4`<0c2G{3e&QG{ppJ|~zgS=%??sk!bAPySHqu0skB3Uno>E$s!2irGsB0)xLY!o8v zVK_d96=E16rfgx0I#MdM)XBq8C_|wQjWQLnkvx>4iKRwKh$Sea6SUDFv_L44d;m&7 zC=qQ7SuG%DdpW((g*KLzixa3V2({A%MH_z`LxXwdP3o;(6 z=%bv7NN8MNQT1agK}@sla8plW8eq!Ag2gfgrVW9zDccdI6v;y*%b0Xt3ott8umEC2 zA_fakLUbNUo^{o?dCrdbe(PaI%I~72B9=N?M?i$Y4;*B5fJ0G4P(4UE+e7TzXdRRFglhb3cWO9qdIsR(`%4*JyiA}S}T^M zUtuCj2N)#BVD13jPB&QzrmE6of*BZ9-+EKt{Yl5lv6jgtLK>0`{hLGsm9H!ZY zV;dAq8&g_X!p81AJ2FGBGe|X)9Y zv?Ok)q@<*z><+0=oszN(h>_>fm%h8Lb@lk`P#%C?EXtCyN#y25r)73fsrG6e>kN$^ zdxBK2ud+qBft8v0Ho+pOM5Qq&f|S1XeU{yW0j$4Z*r zbN?V!yeg!ijV*M$I`IkDdl^|ebJuP0+;;#l-*^xIncv5rJB?~=-!AC=#LtZ^f4+Zv zsWXa0!0$Zsp;gP(kA09#N2peojoGTNY2~sqgF2i00O5g?$RL29{vX7Edh~ZG=bxut z9p{blHix<_l$GJs@eJJ$Wrzbsb1I_wUdXX_fhScN9hb;TgJv8tqg)npO^zIvpcT{A zh=v=ZG*q((_)ix;#^BB&^Jif zdxXZwN12O1i(MHdTbbn7Prb;0nfCb1nIhFz#6mM>q7u;ZVxH)EfmV=Y;FfZdoFm9P z21+Fs2a(c5al{v=Kf`l_FEJf76Ke`vqLK8OCT0}!AuW)ez-?;0P~k67|8m0Ou*~Ud4{)}Y&d^hn2;hJc1L%66;rsX?7e3n{ZtOoV)4rmoG~Wb(uUol;NSlEWi3}76G(ctMQURy3lRcBpWJm`EwK(4B~i?$~^E z0x(jnc)dJbNP(1KNP#rKFeFlfX$Xp0gRX2yS5HW(uR$%Acmmo&(+o9kV}M+18ddRm ztRlJG>f#}%%BB9({N9Pz7|45!RRi9>+2-c?fU&uNnR-YN>!tH9Hmm$N@{(V2u`0Yx z>$%^@y7>yu*!Nj7D-p}{S+T4k1*RdejHK}ycq2rHYC-{#&?qU0J7T|H^e0aanvQ*pBv3xDF1*0h#2jAx-gv90q@<*z ztW7FZr=;uxdiE~FfH+)LBqe2^&^^3ymGU(aU}cjE=gqq;kY*PU2T!BNUrXLQ#l$Ch zVQlqshP9<2hko-f5s&{0`oed%WdR~S_D_=ng&TS`YnXly;yYLmv@3}6z}m8G_b}oU z|07JijsEJtymQ0sJaipSJ`2-be-_t{f z>C5Hsu=M*Aamz8Tw~$f2GU((uCve%k4bECvhd)nvQhEr4=JS52%BxCa)SEhaHZcNzGNt?&Jp$zA)BmuJ}>yOTh zAg`!3y=7Yvz5EPd83984l&(4OXFf*GevjC8h;w=TVlV%>{tvNRV|?R{8h)tpBSjcN z6e|oP$qsE5o~7G+r6aI)EJ;*HD9?Nj)m7k~%ahmyNRbF}q7PoVX3&>^i9i2gvfh$F zXC?xjX$ovha@4xQJA8mj|D$}IuW_snxtUQ8^jaM5ixY7>RCs|R%ym;7eT#RxKg7>G z`+YLCI^9z_vehgtr-y~8OjCiUV!YVHjoOSNDO=qg`vHGln~>s#@8KVP3T0T7tuFGJ zEEy|D#>irm#lk|^nk(ZMsAdN_erlXpR;cP}0x!V#1HxtmwTMEbc|2#+JLFJs1X^oe zy6kelI4~g#JY-kt&MJnE7|b*e(J;E8HO2SO zO)_8im}^8-+c9paX#2@Aw<_`027)z4saY9#>#M{kp2O>^pl@t^Em<1*AXpw9Avz+w zAqbu>^U~XOuwG|Ud!2JC5%3q!FJ+Yx#x&nm^GSBM6qIrX2fA$zAI$RbV4iT$q&{F! zH4UarNwXazZGq_+xRK5HT#@5_bErT=AZWKU{LS?z`B>K|k6H_4Ba?h&kdH0wP!f9@ z-%~_^q81hD51M%Gd9>9gpN}YY3!=c_bP;URW6txKi7GT4n{r=~d}I^H;KdQP6;sG) zKINEH;tbF9x)@TUg+@ydMiRUTBZZIx3_(Uffh0f{cdkDwaX5iahP_k*sU(Jym|9{f ziK!$a7Svh+Z;iU>ZHzuhNl8gbxjRy!Iwj>EBOd;F^wd^;j8`y!EfEf9F0w23A3`QV z>Xt>=2MclHIrOVv+~Qh`(!dU6RSVE7v!11aurjwDAwrsHv3Xxy06qE6_WWy$2cR*% zIopf&!UjU?A_4{})@$8_vZVpXSTH(x|(&CN=PDA$;}-o?YEdAb~hD-^DwaDByscDW%1 zW}m{zLlc;sjd^!UGhdI1qUGzg&=Hx+6zv1QPB?bEfGM&9-(O#NaaSF(--C7{bmi=$ zM7gs>xhl-R%oW#P_e!UaK92kDkJp?h&i0a-x<;k8+Ji;*DQfX!OwWua`Iurki_|g` zA8u178KRaU$OhL4y8Cd|IPcU2nb{e>*?x?_cj(2XpV%w2!#LR){{Hco__NwCvoPMn z6GtZzhKpOUnVJFFu;@2(WGn|)<(LX2*LB3f?9h@=tzpfQxd5f-_u=3vpJO~iQJ zXQG;Tsn7RVh}Jqm)!Da+MxI~yyWCB@P~p`S)3uPx(*nEmJ(-5Uuttdn%DgnwMv6p` zZg<3OKhnf%??(w`9209$FxhOAGZi`eZCbVE?R?z#A|SoytZjn0;DU*t|hnAc+VGUDuK&{uz$*jsE8 zaqJ`LcfNXuZ0b(Crq6F;i#o9(0m$_rAN~92I3jcYJGfKZ$cD~#L7@*?^LJnLP^m=h z7GjlfEYJw0cgR6{ouY}-TwBD>mWfY(EcxDME+x}yHxru`!-m;QTiW|dk$St7%LU%P z`X-N^c;bN+tE17?7C6exZ0q!o?T!81H`Nxq$jXpaeD#ls9{Hz;NdXUt|K>`Odb>Eb z$>qsQoEjLpyJPy|AAw<^0Y6e?8#U%~aI9N!w9j73R`!BK$g}N`-n>c6S6rSBxHjt( z4EzRBZDpWAV7M*($uAQ>`Oh%M&D(;GmVJ_dci9TD(loqL@J3OzP)`~+NL47jgvI7O`U|eiI;dM0qoe=U@(i=H%VwgLPFAL zq}k_ue}9~r(adNh&8m^a`}I87(pkTwIcLt9&-r{mUyF8}OK5?)fM3Gn2M{-~{vKdA z;Ir_?d z7UUZ(P=o2Aa0y8u(~5~$Umhp+jUW4|%uB%n&Tyb|H7tWbeK6MFk6Zutba#}9XJ z4;%wt?VO1%<)Rz})BswO*{I(GQ91_*_#j)4Xw&p&$fi%ji^v1d12gM^_J)+(E<+FA zb$YEVS@)$lOGRIKqyz@sDhAvhG<9hK?3u*|%qcfv{tOdp%8lX7bQxUrioXn2oq{r5 zKl(iuJYsD?N%sKU!LmXUp)y0-F9Jd4QZ?_}3GEm(c}Ex_j#_}6hUYEh@NJ0phWSIv>yZQDV4pOn zAE=i4;hFg2+ss~#kg(Oaa2z;qOLLzeKisTIzQ}s2iyh$vq3<4 z+Y8IBZ3rlUM`~HuI)@R;pa~c>0B!|<7Xif$0S|O;KXm;PiXXv2<^WX;l_gM30r)Kv zFY7;tr>w6476pn4Fqj0qs>IcPKaMxMaIV7*XH1r^s*HX;@mzTg&U?NGYx{4K9&nXn zgo4xM3xJ->fX_L6UXtYTS0PqB4url7C_13^v!Mn29*D|ikO4oC&;$G!Cfm@1cb8r3 z*_NVE@c5&1BlM^=4?-+h1N5~*_&v~forg|@g1bU1Hxm3^r-+DofET^E+Utg@#@vsZ zRrI?8IN9gI$yQf5(|bXM8F?lJy@LTXb$Q_QMwC_28Gzzy;93(PQ|SFiL_`xFnQsrD z001BWNklcdPyOa|Oa?PV-5+S#)1k5r z?F~@d8-U8?5Oo_NPrR9W7I8d!6O={kA?K}uJn++$>LKThDKBpA;Dlr%C~ql*s9p_u zCMGM*Qlw?@cSj69==Y@d1?yTPWWWcQivVB8n2U=W?uI<}>*V({7OxA^?}PmK-_qZf z(F#;7hPZqvGoMWP<=Vf9V?lcQA(O~L4^#9|>K+EBFMvGyYsk*CBOfb~+0;S@am$wg zogVVzpTHUKL4l(K>c#hglA45jcf`x2PA9W^`t2kMM( zz+kCDz||7okIXj;qnff>fjKb)*CaJ*pP8 zhL)-AS7r3=P{0RRi-0}@;AdG5BBH5?fojUU>5Cyf&g^FZPjs_aLZ087vCWB^TOd#T z23ZOITT37>eH4Gtz1Aa;dK1Ko&qIFp%gh9;r!N8wCa8P11I5)4w|zy+2EMc(NxeS3 zIT$1y=kQCw4-9svwywKh3n-^URkgwVhLJ#Q(TQ}SQ+jNLkPe3;OCiUR` zXa>6>KOOsvdP1ZM>FQ1Wy^G!$&~{vVKcn6YF>-C`(b%R#z3@J8^ksHNZ3qplO1Q4I_Q`#L+j!Wq@q6LabP za9?{TYFgp>!|0!V11y1!@LYW(?s_KcQg}Us;ZHWj?Mk_vjMGvGtIH0(+ktqYmwfA; z7;yeR#jTGo)o6le`cjCK$p@-e%&Nr9!r4&)=$Qqx<7QH~+b?5g;q18E39WCp4}|Nl zXN**}vKOih26aciwu$na;6C{Sco+N~Ou=cE()DmTJ_;|B*L)nVxeoy+e-NG)&}BcP z8tx9b=B)+nfNt)SP@Dq@H2!SVRlKqvMiiuVH8=KL!{DN|&;t%kTBU z3$0G_fLBG6LBOQb>fv5dG3({`cThGgF^=(7qd}_;T9Y z$r`DqKY;XjxO!eIpJ6Q;8q*>Zd@d-9?*r!F3E6ri?lCTZ`;S1)EkINctpvp0Z^TPX zP*tG6Gr8@?<8eUUHl*f;JrGW|L@w z#QML2-2D$3-!2gmC5C}&$~?at^7yZ{@*jC+843zbK0^hvW?a9vMYDy+dZ-OYB z2YG4#$jdZ+0_homn12`Kg?;Il0g){p#N6Ap z(iX8booy8mbsGUS0Qtf9Ghgx}8wR?7!@tN}Kwb4gy5sc(Nb(I<^bqCqAuk^Sd~V2w z*C1|uOv`AGmjPwWgIM|q;C4X%{`(2l1W&eI7OQ1guzIlHfu-O6C8SgV?_l@~>wn2= z{DZg}UN@9m`oiG@0HTA`*IU^Sw|Dr%hJpUy!FtsKcky&seH-BHeRtS00iy{z_aH)f zXF9JlO_Ln=4l(@9wDeco^+<^kUlrew!7eTyr0y%W!Ai5!RjlH zK0LMZ=BVW&%YB41rG)~+tVi+V*S-ZHI!K+#W7<$yhd|G%F_+U%zYFN^f**h(A^_;K z6ad{r-S%CM51@EwLn*!q{$4GMQ|gTw8zx~yJ{P1hALbd4z+*7N(sl~2vF;lJKCPB< z8r<$9FxnRaa~?;a@fYzIQVhVNry)=M2!2(=-T3%s4}@G66_nsl&645+75 zv`kT*5C{Y$`kVpy0}>v;gv+bK<&$uG16qA%uL^fCa6QBetKl+S6;&`g=Of@gH>`Pv zl3U>GNitXoz;HG78pjkQf)APlna}=KKY9-0=BKsmd^|oE&~^-%wN!fuo~W4fN}hUq z_%Z^3evG7pY*YPO&&gpQJ}Ew^33wqaMG!aL2^h?Pr3kX=0OZBrr~Ms8S@R93he!DQ zAR?l1kzyfDqLGQ2H)>xvdYU0B7U#M-*=H_@pFx>dmf8IXy_P+YX#pQ(+p)1T61p#H zf#tl?^!ItKNvp*hsr9H<_qU=Ji3HTdj5>&#n^VhPO;g+;aZ=J~vl@Wx9$qIH0N`;z z_Fe|c=WD+kOj@~%G|28taWiy8&CQT!cWY%^CPR=qB(^?cI@|+VrgEB;ymIKeo3-N~ z08~HZ(U*aa(}?>ePW1!5Es)1vNjOL?pg>F;p*%s+EQnQ)L%Hb-QUCJp`f4~>9U{9g z0$mp%oxKnX?;Uf$*K?2>82Kx>`|2Ao4BFwEQ5|=_YPLY<9(thScct-QEXd_aq5dfV zvv~;yX3dAya$DMMNS71_pmh(NGv}tXeq^vZDMEqKp*@t!R*)J1RC6NR6Y!STLAk2c zytQ081D$E6w!S5Q*wXs;Bk;~zHMI6PbwJX)>~Kw+16}(8xCRc4y}Zwrk;W;_ABKa} zdi~7d3#dLAJ1;^v|A}Fh9`KFuWE)$QhH_jLplr%B-cC9=`!ViEGFwtK|T3a!e!Ekh$uT4 zsHTjQt)B&Jjs+n5T997)=)@+bFVaTzj`JEbF^FRH1_OW?J{VTo@=6oSwD7qgFCT!Y zTB+S^rmCa{n05o=hHyGh1A2p&Q8LzXqc=kIUd~M5JQ<~PkXES?MGrAEf!7yLMJ>ea zRlsQ3+=>pOs7m`;=(X&zbjSc;EsmaMo33T8^fafp?Oe!I-AMp|j9+&%$vWgxNcab? zAi58&I&x2ezE;T7?k(t$b1vaRMe-8D? zFCh=U2$YN-?3+c>*r|7iUBv4b|s+{a>)3B~7yxoDlXer)fUEHU2Tjg)?B9wsF`z)nJ9+rafQ|81&GY<3G%zY>+@+i8kP2 zu3GTP^T6!*4>98Ex)A-l+pZ-kL^9d3Q<^PVLdk4$Nx%zv^jA<1yrA8ieDZwo`$>xX zuoP+EhtlaWNkl{$!9X=-*35cs&<;Qg)?91WZu+LGyfUEn{$YV$QMnxG9ep6Cq;*{Y zJn@4XY4N!MXK!N5dYzD$KGZT!QVmw?^jd&(q+nj_QNU~i=H5E$4XsrDP*1!GQ7|3Q zn?_tN)0Bnx0t0E5v(csSCCE|)F>N8_g)zFj4_?zUpDm+#(1a|%KQwh*fwm=4^)Wc_7cdh(MypbQa0r!&=?(??OodxVqnkt1C_!f)NNvD1poc(~6J(X4LuS^LyZ2xFLF?&HzJfZ?7!T9rBzzz|SxE`>v}8V;IvHLk#LPPF`&1$f=3$eh zH|AlKcM#|wdr<7G>urv{cg%E;NS{mlPLslR#o9juif2Ra|50Y!L_|a>VW65a%a|8k z8%zi-plO?)yEbJ@$s9<>RV}buRE4O(LYA^I#KL1xeQRx0OZ-aky^w+(^hGviG* zi0ajl$6rlsd1nt`vO$@9M`lW0%v%E(Ea6{8`2sC7hT@Rg;690*r$PsD!`;D$d*jd_ zU#i1Dn~Ez_@2Sz(s-4p`vINgRLth)PaA+_zy*~N@uL$_ztg1);<-?HYcA}(V5Bw$z zQ1^A{&2wTm2Pk?dbH5P&)oUw(8b~l()jI%X!583P^)0B@VknJoX>D@FtH(aRbnZ}j zoB%vUnH$9Lz4K@B!r=qqy6PdJX>Y&xH&N5A?I)o4Ge3Zr-eU(AehFgnmw<&|hN%52 zQ2RB=C0~PD_a|^ppNoQX!+S>f3Q7UJ89MjK4-oU(PC+;O521L+cT9&w>79en4`%Kd z^K^|~qRZ$6i7VSZd#{n6KdqW`uj4n92!QL$JnDUt-`!N1meskJ9j z8=Q!UvWk%g$}I0-bj?<&0^Jvb_0pzT2@pjG^fYQWH_o1@n=RRWF+2P0NUg@`h*Uph zTSM}JUXKIv^t%vME0U|lEtFub>#_GI+fP6?{03s#9|DG$I?IYO6aex%(Z; zqrDC0&SnIBomv~au8y%%_US``Y5+QW6AY#}LHZrY`0&A zl>O-I8(u!b*Y*Yw$b6t$TssLxsu2DF6x9de^FZ;rp!2$*_c&qcXu@Ee!7l{>VJw5u zG4f}LxBWHvtwm7A8jm7JbY2g1p7AM565{E47yiNuK&SPJGgLePSO4B|+y9__H%z^) zP%GC$U$GJ9cCF-qai9-*rqz(KWw$8%+>W^8a*Q{1-@ifJ{pX`EWXgy1#Cf=5E*PqH ztut!9JSPOHCHCmDH?X5@J`}$!+6ZI(D0h7w>cRiiN)Hkd(S*T3HD#1muQ`V5hwNYE`f zMah+nxYh{SbO0!mwSjvw5d>9zS|&W89W$96kZ>vzV)S!DC=fNbK=yY4ZAZtgSpb6d(IeWia9w&E z9Ob;TI@7N=JDI6Q9YliXiqrKebgld0E}jK*#YRZ|@CP0KmS07$)At_K^DhDc0cTm2 z7Od8rU@6}Se_k2%5hZ(6CArT>_1p_k&;KV}-9x1t1|7fEGJJDL=NbxRTG}tbZ%!lQ zRMEpZV-8#u6{OBp_@d$%ZR6S&f|iVs%hDeqemBs61sH8mdNlxCjq{+n{|Znz zE11L~$FJAnSk!=)&=mQ-qrW5N@e|_myMcm=sCzK6>@g@yHU`JX86sA1fqHtkmOw*9 zL=y@F)s#{4>bW=*CD79hk;njflSSElpfI9dr`w?g@F28$)!7;?`sz6#FH_mWLhCZ< z=uCYR?Z+VlZixAJj2@UPnGF=qfb2Y#{0;NfbAYKJx(;9Gndt70X^!$erqVf(r{Bxm z_KcS3<7dR>@*rj`$$f3Xfo^Ry^@0j0mCLjL_nz$JC|?YP0x|CnNUsyPa&p|;B`-&p z4UipY(%YuJExq-pFljO*RaVL8JP-ZJAE9^Ay71t53GL_HPhstBM&H6aq0HWd{<$ll z|MdUD&~X7Mt^)w*M;Np*S+0_rjBF=WZr6$M&z^yUP|8=NzA=MVD#LFrME(Q+juo>i zF@MGa3=C*l+mS))su_QfZqpOu_MX9@a~}p=?iS~S(kLqCHO%8ZUf)IU7(y2pO4 zl@>EvA$wc0(Y(~;mjn99y4sm9vm#1shRU27^8lfP+VHxTWnR8OTV~}GkZs4c?-)cx zG~qB%O_?=Pa7IxSPtZN|cTn!x2IclYhFJUn#QZf7w|y0&Y#!wC*R(PnsqneN z4+6xDCBuWf0bf?@po@8Tr5DhT<+6``j2QDEY9G{Yq$dE`*9K8i1GRB~awP<=OCtoT zg#xkkQLX;yIA>CaMYhW}J$`-53~=UWr&q~j63`hSWs-xAdIwQ{;5F!y3@p35-h%o4 zZ$X+ZuwB$1Mz{w)fjV0os7>#&C)bVV=me zPCf_o``b`v&BKaWmAGNnqNpJC4BH&I>`C;3$pM4Y0dH|tuA4Dw83ub{ocSm$t%q~6 zf3NpEMAI8l(~P}s&}Cx)ZJJcnPk#pGf&UeMrg4-WB>^AgJ{Z@7wma6WH5Y;yU z=0aqv7PxFX4g|C;ZDrXXLLT`g(0>K;N2eci_%KnLnD18i6Q&Pl& zQM!p&t^oWaj3zGwK<8PAs+E}^M1D+Eg|daP|!g@Q7K4#kuOS(VT zUTsO_=j?3Su(U4WyY;@FG!2=YJ$6%K^f=^kFpKnj_ciFT^-p{a8f z=ZTF?1B!lwTdz0dzs76FQ^_|)3Lc8M3o^XWP<=OMtMFz1;8f#-G zOxZz6x+Imfmc(D05I&K443#er8@OPcIt%7q*1sFJ zVK_=F(GnCcUz^6^opi|M1w#_kig?rQ8*05A6Zymo-As~X7m%WX#ebjoNTSLIw=jqN zu*xsMd+ij~9Gblhq@`%^fnwMxs9yu+pXrf_TB&%Mc3&BXp<+j1>bL^YMdg^sUHor~ z&_AHMMDHepC;_;9;v?SbQ~dVG9Xc8;&GVyqR0IAjxOzPTc3w)qYL$?cKASmT7jHUw zQ9s|-&RGLS*bc_p<4E7$^b{<9EkR6YpT+$ud_4vZcgU(wpQ_nr*u}*u%g-{p9h!pa zMR<+Litx0>fMl>Vp8C8*&J`a5-pM1nJND?ERuwp3il>*;3VbT;@^hEq0Vyaqm?G%5 z70zC%Uk=skhbo`+jHXXH{B-M07iPgOpmFhVA1EsKLy#13=A>KlX0QxX{SoRoL+$EbqBGIE5&Di7?Yc%AD@F@ zNvh*#j_-QyA|~J&YkUl$iUPNT@9O+5&8?@fEWiw`;6z4fHKQbANaxDH0kD){8EA&1 zWlgq&KVq}6IzGkKUHdc^sC|f4LsYW+v^+DBpP<}^CSXf+TzESLa=YO&*qyrI$~Qd;osmI$(cI@Ev-_M@^2{9v{e$ zb)+1Tiy+)HFmP0T9v#1rgV76e+{+TuXoDI&qy^N?~$dmEG!j6?K>v6DRMygO$Ur9LLIBsDk2&cX@Us= zPWr@$MG|O3nblH_Am1q-(P2^1$}1q43aMjviTsopPOANG8L0}Y=)eZTRd+an&j=+59B5}BeK2N=J}T-}3~LWA z$$quAn>OA$?i*LC!Sy)lBaV5&TLx%HykaCx2@ipG#wEOG&SMrm;fJz2A&12E&8)I% zu4qM`%NYCRxWkS;W);R?fp~EV<1NapU-pFW><XyE;ldZ1FDF{r{52?-5-Ta}BOKK!uxFq~uoO2_RdVL2~$&zuc z3=V_$sAvk8AocKL08LCnmSUeoWnGiB2gyx1(-UTkkOBifs1CCFXmecYOS}w1x|<&U z#z4DY;|^tiIYMXta~}V*TTFK+yPB-nj4oy(yU@xNJ!!+|31ON=fB|g)MLJZ~A)Ev# ztSxE)<-Tv1(j@0_r!;j4AHUzePI97_bO01M5Dw4kQ7S&+H;p!}{j3{9dsvAzBWC?k&t_zj?pjD<%3p$oH=FSp@jsna&nHXmLmH+r#1MiWoaWCkN_Dei~pU0vYqB32`OO5Z~zE8DemLAM&=lI%h67g#l$dO!;X;oLVEHelg;C^%;#JHHZC`U83+D zn?}ABqB4OOpmw)3U^lKW>mlEz{9v{MnLYzPL*A_|kv#j^h0;*rKfM6G<38Y%=_ua5 zSYJ-;Itv~{EAY>|m6(wBp|z(>1$aB0c+&VjoXxQJ>QZR%VO>X;$XlI;T4bYS-l{Qo z#7GFi#OL9W1}77Ywvi5h&4EU(d@o=DWH6E;{Qw%d!{1@s6fKxiotDPOYSaYV5{&0u zL7LDDr&7hZUWXJdoUPjVZ0FuzhZ2n-3=6KJ;3hI7p&J6LdatQB1O9x`4^VEyA@Al9*k>>( z$Gd=j9q|*`qJxFy_*|l2_{F+M@Y5CiTtNr3C`=$Pdf=;6$|INl{@F-pec0Qem;wpR zv`E4+Dn^9Au~mi?#=Zskm#t~WW_$8%X7CrZ>Z|lN&D%`W#j||YSno1{Jqzg+&`EZq z%!_L=lXKp1xwj+&j3RRM84w;mdP#0{{;QZLIS>=>aa7wAuY>#KE5D~U>>e;$Gb)5Q zFX<~;jsqH=F#vv>PJ#(*3DdXEiN3HVz0Wu{Tk6vmE|qLqAwILh0Dyug=@;)TvN|Nj zab&%blX17qVKMYi_&3XP3ic0(%gk6g4Y%a#5vLKUc67e5b4e=*`!WY75))ku9iQ54 zARkhF;j-AAQ&F( z0hU;@kDl%mKjti3@&V=t^9l|kI|bBk?|3J>(Q_q5dLch}x6huB9X?=fWD)Q$xstW# z9-M257ZGJaDOQ9w93eHD&O!*mWZ48|V&*ZpxpeAqq38m;Xlm^Zacj>)PS;=k%We=o zt07^zffI6}Q@b@88QJ5sW3E~I} zYPU2dAo5vJk2;W6!bh5HF(-Z)9N@MgDy;6rqq2Wttct=ZW#Bj&=LRy3SNGs})e3@L zagBBHJcFe?exr}sbo7R|TDp*Cw^6j$^C0;6iQg}$1LnoV7g_B<`h7Y-q}m-fgB~AP zle5+IrRR$Cy-e`92h4`<6NSi$nm7%*A(eW!71J9W6D|U3+FU2Td(CJU*wWvL_P;WH zey=P*=t&txD`C^gn8)gg+C8lW$>@avQoqEzD{v_`u~{bpt=9^MOLtzx+_DfSeGkF+ zp4-R4jSms>mqR4JuipI#XM4?}BJscW6oT&Bu*7tF&v;N0$^u4o5G(Ais}W|u-7w6b zz}|BaOPj==MoY7?(<%KHKG$7BfNX_D)b?|G36$5o6@2_wVN&YEodeCJAm?#;;Xx;e zoE|#Bfc~?cuF-Q93{d!7kdv?qYt$L(_t~q^fUXHWyau5+QhDFrH_s&PVZymw0ULf1P>zr#v zXiphv{^@-_+=P{D#t-OJ(FF52^{{E`k^^gldo1P;YH-H{hens~<@a;2M~&{{J=Z`W z7NcGf1+7~|LZR7rb@q4^B11#A60w=I0I7NNqa2%g+`BVTt%ve zExkfYN!DS;-g*GcP>iSgU()`tg7a5Ts)BqC%FovT7Grl0-F`#iI1$c9!jHY$%U9=L{$z_3?g5FVJmA zuhZSbJk@qKP`<*O&06F4UQo#wLhultLQHD#W**ogAuM~LMi`PGM2g^(nt;zslKU}F z)ahIIniL-G0&3-H0)M7KM}?SSVT1*f;NO1m?gVsnz61G~VD#a#K8SWBruS*JsnerS zZe6u!WgA18&y>ypXU2FNk0VqD?Ak6g3_xH8$l*0^+4=J>k%W(k%2Pe-PJ)CUoO5Mw zT@9P~%MdOv>;|kfe%#}bS2GBb7+#Kurz4t6f6y9c{se*&^f0HvsinWBE=-9Poro4G z3@h0iy+1TZQ#RQGK>AcCtM#O!Q%4a@P4pu)%<7nn)8EG_La__UL9RF&qbkMv(-i)AqH!X1Kq%Cm10rqra){ zKSM#b>KX?0SH6j+KNKdZ9c5UU<4@{2q&GH{BI;0ihXxXV)ltgss zjx{x4bX0G4?}PS{;`(F8-thebiQ@`5{KicHg@e-Nm+zJpp}i{!JoMFJC?IxZiV36y zE#RM_Ao~}Cf58yp{4Ma;l>WKA^B&?2)PF{T(!XK+_k$mI>C`_st%SMLK#9IB?muI~ zrE6v_dFq)tFZD0}-hLg!{Vo5H=+Dm}rFS`=fODJ1>pH2rvKG^E0gm zUI>7>olRGT&xO$95t63TdJm74Mp@=mu-+kO z^Ponx>v4y({f4avqSOBQ7k9o1<$B`-$7Sy|VIy5NF?23*UGImF*Gs@({0%JZrl7M= z7Fbv3ut2=v3{ny-(MdEq(He<0-R$8))17c>)s zJR3qYIaYnso#R3aX6h1$TV>&BO%axdpwkHC(^mlKU-Ih8>65O<-fi<$&l;xkQwg0% z2%yI>hYQIEa{_+l8t~tNfPIZoBP7YV2_p}bSDTKVFP|;3(?X{UL?0Y3FU}0~VzUm) z>i~T=x8!`VJmY?Omv*BXI!>oiD-};cg%>8q)|07qL^$h97zk)~Yi_lQ+AYVc{6a$b zH<~=1uCQabW=C4tSoG$lW%huO1c8cX54;a7go*u1*paivU%f1A?NJEAOx0l$cW%8f z%lDbtl`!T4T>Y~nQ75qY*=$@36hMab43#@Wd(On@E^XMEmWd;t$H!H#>jVmaODQ_ zFLNIw-~)Up^Gf#{?sD4dK7L6L2Dhzx$Ln+A-R6FLQLw&$))##;7BVEh;@P)&e)#|u ztgs}>3QRE1Rae*IH>I!no;YKnCmu!~4+7%?d=YR4l0k~A6a|?C($7hBeYuOCt@m4J zF+(6G8jxTuE-BvYRF%gbo#*s;g0*elL8j4Y#xF}w0}$i;nOoQf<*h}7FgUR|i3r#* z>3ydmRX{9@5;X2Aq}N$oyqBHdgcgxRBdT?@6Lc$>5PmyrN~2l*o^~WEMMEQsxgZ)v zi+o~>J%RD=aELy5@A(jmUIZ!+<@A-y>u@JYZ^Hbx ze}SikOGT!PZ1%&&oi=B{QsG4LP1tpWRo9xyspK=h9>Go+$DiH=-+{bD7DABv#x)~_ zN)y&g6%q^pv3X%!qmoXHITIYgSk61BxJ{^8YbYqmv%Jbej%Dhu)j94`LZecpPthA7 zec`E0&aO}&#KfbvR!?q=%JqGV{q|9SB{A3&wP*EH@Mv7WmBcn@+@MR4Ig`}g<1Zk| zhYz?Yr3xVR03Q+VaOaJ(F_Wx^i^&3u^jKp)pa{@Zl{Y6lRh}bFwHDIz6k>HohzPH8 zSz_KeUG`&3`H;=qT7~g`bNZ_hscnTLXe&b*rjZ225X<%JOhY+NolK6?@q~IH{NxHVT`2Huv)2euX9+yr(H|8t49|{!gXFMh<&HP#jTbCCvy*nk(m7{P`Lb?X z@5oJ6RgsQfaEsdNa6k&Zy=l4d`1RKNCfR9XbQDJ?GooS*V zrx6>(*Xx-`czMt`ApJa$Us;H)_cS=S6@4QpVzdQ?g{6(fb6>8GQhFq9;Ca}DS&{&MnXU(g-@44pmo$H4zGQsq|vJA3zk zZ7Bc0fACS8U7t+W%kKQs_bJ!^!oG}-5U>K3)8=;&k}_7}SkT7~hPjb!M7VqJ#zjXG z%f;H_hw%d>PD`|j*!ivaK607&7ku1b|B{PI5+D#AINb?}tPJ7TRzNx@la0uTOWU0} z=)NNB-d2uZ7iKPTd@*1YPaf``mGO^5ql9MlFQ@I_4$c1~IwkPUA!QG{H#WcyL6=n) zE_mIpD=OoUIBni+wwIm+mdhOwcJQ!KYB60b3~t5$1;^YPQCSWQyDAT& zLo(c7R(2h1KCkSWRhI8l==z)@IR}xKF9(QMp;r(R&i#~zOWKiJM{pYp)*!2_bk4IF zLpe_)g^)bW$F=IHhq|esNIDSjEoh=VMKHY|{;a_|TV4!}yi*AmKi`V? z4p9-pk0Eb2!z*pbJNMaziMg zpSjH!Phs)JuAT5|?be@Y!)ahgzp3rXxp1N^U(+Qv2?y3uTwTcK7gV3MgFuTnRu{9OpwTj%4~ zo&SLYcj!Hmavw)4I(@P?dfK6#00FXg@^^P9y;n-AqreVlg5HIhHDR-!rvv_bWK7$A z(WCT^u6%7429+-9O#__Xt?aFpGsC`?trj`unY>=;+T*DH$v&{wW?p6#eaFkxO^s&? z+ovwEZT7R?uVW_xygc5_Nw0mLDROQ8N@;ooseB|*L@6X}-R?ZbrzsL*D^Hf44)3!> zAg7q!q<3~%k<6a0yz1|WzxMBtVCv+HS0=IU4E))<{qX(-FWlzcDiYQjXWPRY3m*KPWmPV_yq{iYPac zazC0%lDXAc&^g=tSP@RtWCkEM;7NEfPtca}DWr}3hePI%V)#Toz0d$d0+9>vLN6%I zO3xcpn%5Yh{*anq;t>O|By{3Dul7h%TB9mIl#1;OdYUEO#*Xms`S)KsYVV3a9A25t z1KDSRL_?~PO!^6974w%|jC#5VBm-QRA`%CxSfvrba<%;D1nHwm3mR7d+*0dv((FsYGeZn9BCYz!$D8f^XBn>nSX)i3h=LSNwe$yx(*~jZV#67cw0eahhp&&_AjN?FRxh;U2L;cs1~ITgrQsIu+PDNqd<;M4y|} z8J7QgkpPvLvJ#NbU>SvDRp?f)~z{(=&^=pVKFEq}WiY(c^Aabyhi*7Xkgk?AmE zofVrQeX9k6L^N;1R|Sq@+ulVgz*M+_F#ltD$S#}Fn$ve|RGK7Jx0wm{1mF3KQ#WRg z*cEYmH^4)KHL~1y;ItGrck?)0_LbZVV%D>Fh%2is^wRCtzCR}7ZZiofh$ArhWM#F@ zp~quF8ia7NM>wXYQIuEwxB!KVVJa$dS75cR{=&3Sg&ilm99nah=4UowxzSf6IVN>n z`*Aja)T%RiX6qZPTJMl0&fDzFCT_XWT#u`}@q3`I1jRUQCK00IUG5!GN2t*nXWA)p zb+<1P7V>dlFri+#7E^%fF%p!87Vh{q0QKR8kS`STefCe)p+>^1=NK1|#yjSMhXE*; zq4+@iI+-sdTGe);l0y6r#7MbTI%#h-^N8MZ_X*KRI06-k+YdHH^>IaNRnd_k9dRPw=xWt3>IB;&=5r zI4dww>z4HR6oeixwTANnV0(}A9(nk7pInhlQZ4gQgaRooQTVL8wkS2L`&7!u;%m&G zR}G{)c67IKYAG+D476W1AdwX1xJLF*@oap+&wP1k?baVo?9BOLn5&Nh11VjTF(4?$ znaYh+oyeA+7{>@sz+|4A^?`j<8sEsqv^u&H`8E9?j)XpXKN_q(;5jpb@_>Iv!Z%9X zLS#-qHMhjAgOMTo*N_kcu=R<+Uz)pze2`Wxwm#4|-wW+<#oa5bQp)d*Oj^iKNz*mU z5?@k)k8%pv16do>6-;#}U&-!YdZwi_?U%Pnb6 zk~A+V68~*}1ntraT+w&CwH(&tWYNJJr>n8?_5sSWaQGEJTnzI4FndI450q+UK9KU3 zwovm5B~Uv!5YX$5&KgetMEMn;gK<1!^%W?r4W9_6;YxIklOTeWj?K}4V)oJ}j}v=o))DnP?UUinmw%M*SDQna zVld}cATBOGRN-3dNA0}3o|ioP`J|1P{^r6rZ)1+lQZTYV3ru->G#F{5(H|t!g7}zM0lj_jic6yxoy_ z_X`AUBB-T`<+ZCBg4a3$DI|;vb{39pJ)45Tt&jqJ8A4fJ+$&sDV&K9~u z?XMz};XD4p5qIY$=6PJ!GgF@Ca$IxH?8G3>C;wZGC;e?E#w`D@QtQiK`C@E)pQt(~ zrek&4?r4t~ooqy84h!@;XVmmML5EDimg`qGZx7s1NSVE*Mc>9;4yEoR=?@&>Dpz>w z$WW#25~e;-Hr?CgEO!M6|fZOYXclM8!a{#dY(o#=3CwdJkh1u z&^>Nk*Ug;}@k)#7eGz9~OOEKxorY#VK9Ly>8ROWNZN$VEY+Ee8H0Gv5mE>7||Iocf zd3Zqn(E0gKkA7+>KgVf1PjIKJL8qlovW)o~nr3#8ss3;JoG?wpCR z>!-_@zLon%$|X#wn_=Hfl)IR=IV9gib_2%~@}En%@T}S*?_G#?{y8 ze$QC<{a%b%w-urLP0iO?F0+yap>JOu@R6H!l z_I|58wE_S{Op+p?s``a&eUgb;t0aDnb$}tv5=5pta;6`NZRGuFh@apw$_i~!zHO0K z?X-kXN3nLIfZLVx(FEyD0sq*Z9z6}a^N*Zer!Q7@cHm#1r!Mce_+nxn zeWLR|k~ge95O#y!ab9O!mXVm)dg)hIbs7FrGNViply2g-w+JEABM_7m%5B)ac$ZGrB!KezXpqkr;S~lX~ zUHr$T1WMOiy}d{B%C>sHkI-3H;VVWZ@z4JW!YaH-F_nhhP?i^>qD_Ej3O+S8{8e_} zGLBE>jLSlHgx+)|o`F(1HI4!85!P&QWF6B1h{$-$D(kpm%{-3}wAx67TYtc2`7VT<7t z#OhjKpJ6Md+87Rh(Nb(kLp#d7@_rBubn%#4Bq5oj9ZjLVxV)%4=PC`>t_^2^14SOLY7{fGj-yPlaixVRQ1i5EVJknW(bu9=s$+P2HDy zmJ5_Id>iq9%S^)*TtU5eqq)W9@5}p9)Vdgoh{?IXzcK`0m#qchjvv8|XnJu6)i4!M)Dn zdPyijMb$tLOuqKjCjC@k6sAP4!X{7Omsd&(9*~e**$kdPW0&`MvX_Df1g|Oiu44`Q zE(8ejY84lw4DEPN6L=>^!NWq<&zEe=hATS?JtP*OzJIF z#5d$`9Jm{tj8%DSh-@{sS7}%~F^F3a0DPpN8Pl9PR&#{?#Qy|)mc^B@dEg6oDEo~6 zf+Ck!PWIX6Z%b6EdtG%9EkHDJgu|^KYzLTb8|Pu`_Wc${s?yVgm(HvC9QANfHis$D z#z5???6zR}a`zhIQGgd`5v*d)^=h`yLDH!M$le&c$dVh@ciwm6@u-SENs);_&Jdex z*&8Re3)6eL>_hEn3Z*~wj!;{I?knIS?)1vXE3@^ACWnHtw^Fa&(|?1*xTGvtys^O^ zelJFay32A~!t@3WpXUl$JHDg4=HO;OCW@(KC?@ZAowT%dSla5Z#4?qk0@HlM%d={; z%X{)4Wc*ve2>4$=E@EXGZjW{t;M(PFZOW||(FT8RAqk2<+obmaoxGczweix!gk3Re z#H}^Iyxc3>3~Yf{Q2bSK{I(7+jU6rD@Mr=oZEk?JrKt<{UAwzKFF{E;hPD-Z#bY!DJ7exF;);mUe+%WyOE^*DKl{p@`6{NbCV@PXE~8@47**Uq2#pMGQ*p-5r54q`MQ?c8RGtA1 z%Bd)5WD6^_l|2AA?*10yn#SLTKCX2%4X)eX<~7-)qQ@TzY=E(39tlOYsGB7Zt9 zV~AYMUL{%Xk@My)gEaF1P#B>O*+*ovzCi2}*SZs=^;_qy$!~4!{R<@P?tzYTWVPMY zkqg*8KiqF-Fn-#7A)QW}?)MoSDepj0F}1ZVJ2g9rl;42{uooW!=2zXe1;DM5`96k0 z8t1X!zY%4XPrG~;!8&Dy4%a*`5O!t1Xc`*t9k_wb%KpXUxKqB^l-xA22-$dU?ZTSY zcQT5J=+9#Qrp$XZ$Q!eDB+phqp|^f2LQM|qG6RH=s7m>y(dgEzSG%(~ZZfbY4(s`2 zo7j~%=8LY(S6-0sGDGCo90~hM-_s=qq|}hgXN(@1<@?T8XXT>{xdcDyVa$LZ6RmGE zHaU<_eat^5ikUu9{DW{7{t6zSyh&ZtQ4hq13Y7&=8pPax@}D=NvEX_2`GP;Ky;P2aD%~y?Cugc4XCU^ zpM7p30Qn6d{csX3577kQOYU>O%eX5(bG;_uA5UGUHg>#rRIbE2CE?TntlU!4(ifs8F*jO zvS0-bC@cxWD^ah0w|(ukj`@3=q^JJ0zcfz!w1Bc~WD_NZ(9m@xr^D{yre>bsdVUNS z%|Gq(K557b-Pn-F5=)&gb?K}cFpn<@47_ohF6>?-e*J;z zCQ}IgWJKM0)B5#caqMgoNB{%t(F)U3eNn;IW$7?{qw=r57!9_J$<-rd5(A7@gcel-|ayoHfi9GAlAsrfp4pPz7tG z-mydbt3wh(ksLk)S7;&PJGJkU&00~ z3KT0YhX=ivb(&y1`XD-dC#I)AyEK~zeaEfdgcZ9+PLlsTD;*{DU`n+4qje<#Hft`h z#zy!d!(|_vlcLI!WJSJxBAKBq*`JjUZi0GWR#MKbL;X#0V0YaJl3jQ86m907I-iL+ zhAb&=zoG*hzF6DP$~82g@akeG$S6eT0J(QKBvfsGyFa?w5Nu>~bojs!>@Gi<9uTy!KCvqBOWD2;mXjp?dl z<-c>z>x;i{Fd499NGrOdU*sVK>)OC;rGHg?{>R@`fKJ$2&vMxiFrw7%Ljx3VK%}-8MYoz`osrCM?v%rcw zs^a)*_$cWp6}#R9JfRJ9ZidW?@1e+wwwt7aYNFMiiA8}Smba;{fzEfIt!q$t+d#;_ z-E#fWTY!?xEgYh>G4q1WTVc+i+4eoDr4pcL7rapg!45=YsH0fGwuMO@&%28i9eBck zuz;i_)o{5C#AgOWR-Vo#WVqKl;W%=DP(&RQ>49=VL%+?3^yyl}1RKy3xIH%7W&UiumWZIv;8_`0X>WF&qq)sn zVEhWd%BPHt&&@F(lU*cgAPRX3J+Xh6-KHcUuQa7Y+ZFfNmO`;|0UJVu7Y8^Cg3VsJ zZZtW$qH-ka>J>YEdDvvXzghE*{)B+HNa@IpmxAIGz4o+XmV(B$QIgfW(g9>Wh2E>mSwY1^0Bv~( zzJ~ffZnmt@f5?YLE@s7uI#Lm51~Uriw_NE>Ne%I2H5Tq>XUJ{x_-5DoqY+Q1iD2L- zzj#eXF1xi6HmgQQ+~mdksoXHM{GV4hR*t-&&Dfzs8D2L55!g+bT3c7Lo6fr&b%_^s zetq`b#2*+dji2X3dOz);ilx~CnTg6{j5G5jw>)blCf)u*R1g%i%M-a9bFJ& zbHU9V2}6aLxa+&|qu{4$dUw^FirhmjNZIKB9c(A%@V+&9&FO$bz`=r23X5occkKlp z1@p6lrsa;_S6VPQrHVB|Qs_t4oA@*6kDV)iTVh#jg8_|hq|bWDWS=F{X^n2?d!xRD zTToWHwi;L+A{B1^QA3PfgvafhIRSx1BD+(_s*iqx@>$9 zlb7Hd83P4(QXG*^+nzH?(d(1X4X=%Oyst4-F?TN>Z=mb-?AC8e_zg{bR2o>q@Js6( z5Mi0$!uNik4Yd@YBR2PbPma-!ebbH=D_TrUX7Jso zPYP|+LTXxMAB32zpw@x>A-$0v%q9U`kuXHsJwzW>bmiX%aYf|~{f z*~4y1XyF?60Xz^Ql?Vz3xMQ)GiR>OiP)PrsA(;0RObQ(BbBRFpuL%U|ck33RYGKec zJmNd+rkBN^iehZ65%aoS?|B_jDSjAZHXty1FaK&9>_P?pR4SROnHqGgC$8?)#$9m! zIl4fR#+7p&i~plWHC#x<++9G44QvadG5R#c`XNPhZa9fx!dPwyp>{)xT{FXT%tY~l zg}dreI!p2aIk&E{Xfs-gz!QnlI~%XYJwltg_b zyv0wuF-K=^FC;wN6E3*UQysBqQ@G5!tu1XRsQ`|%)%jquBIerD?fg9?%eatqea1s+ zMBOvhq>IM~cA*)bCAE1$F~x{ui>$55?x*A~Oz5lv_JO;_f{Opj#<`6@E|9D7|`*3+kWM4kN#O}aNb zH8`yb@&SO^eX~uGTFw+Oaoj_s0$Ty{fdIpUQ!|7O@Wpt#(?m+6l=t4KLFDcLmfxm$ zsR=ClY1U{`CLsYVc}RU^D6teLGf3M#bRy)2B(@54GHEl`H+{meJhKSOlnZ_(k7sU9 zf|lyVG6ZqGte<^&@5|0CMQF5KZWq!7cE2WxcadE*QC*9^6dyV66S z-4rB6t$!x!JvRs(#ipxG;k6{x>>jdnbYm;ztwt~X8>cd516cP~`_N*vUf$Kzgt(y1 zyEWpMgR>W}s$r=QXX)SQzQe~CxJk6Fg?A*@7*&sGTTqsIUpS3-ysi`k;KY+O4}dZ1 z^(SG)6CbH&nqs)=mHUJaBj7_or4vivUokrE0*WT=a*wSD4v zwkL8z=hzH_Gae_}xCB}}(EQG8+$UeC{LD7TwFI}4H4~Q(=HvBXtvME2d=c0?vLaU8 z^miMdt6_g|VG4Mh>({1e4!#q#$Z{I47oRGUu{lXSP#B{6u}GKsSV^u)C78I$n;f4Y zpt@jX-HM!--T3~uYPjqXH10{<)6M4w-{W?@{IW7Q@MVE&>r=$9!?*{{umiLk13Fh( zWA)MEey&w!f$iu_+_onBSA)Zx;`J)PqTh?tN#)-&mDl?6Dfdsvy3(Zs2o8-> z^4dz7ff1Cu@Sxz06z;D2P4MmWW{7Im4Toj2@L|7MDT0H4i4%2zbg$_5&!+<h{>d zlJeW>kh>zcK+Ud;VW*e=0Ne@0mtYj%i#&47`H=}N1caMkk&o9*Ous%Y-dy+6RWE=N zFe{h8Qr%|KoLpM?v@Ib%Ah=lQu9>$DOO(lOfYaUG=6tHAh#z=nB3|s+xe9y!lobzk zMI8%x$bnmQ7+A~v;^hEq^kLn#g%--r2%>%f9Ji|rEev%%LgR_5`7A?%T-Vx9#BDaf z@(btyW7F-$!n#@`ENdl9Lnp81yt9LO0R>IgqLGZ6$A(3yh=pl*>Ny&p;mdnqf^|Rl zY>irCdv;TO^H~$m<)zi~(~{nX6^vrZNV^ZAiMD(L^Bn(XpXk-|pzGEhDS~5fj9n7e zzA_=p5JErv`J)o8UjdE#v1@mk1}rD%QeWPD)u)AFoT;s(=Pb3KV>klF8#B(B0W4l4 zi_JSe@2+rE*F02KWozy$H3r>8x(YaV%X^2@6#_1wG3JS0D@uC~LO2DGRekAkX)4us zyW+0)CUy1W{%mM4?l`Azy+39?Zaoq`VDC;zPrQ=EYHxgh=X`O*94+^nce^g}mY-O~OW=Ef$_e`{-{jMdR}wcVZ2A~F z+Gt*{w=leQCPp2A-HMs~@Rp>_j5wEFmf+&ED2nJ5<8LWZOjuT|Nl+UZ%^vJ@|55H> zp#GWDRGW#{cHz;(WG6jwtdym?NX4{V=)MjEHc)Gs=0F6*oZB7O+OTvn0}!au`u~4HJMRB@B(Hzi@ix0?=kdmdljBk)KIyXwActa%Vx80MYJnD&CspZkPHnS zdCN$d{_HrhRt)>rplQ$X@TA~f2eh`6VWVwL@9WLsO6V;>FLY&Nc>UJkO2)nF!g(6{2@oK+|)GslJ>VQ^qo;|Y`m7fCo=!+n=RRo^q&uI^=tN*d3+pH#P-o6nLdB%aa z_7YcOBvaJh@P~8zIXzY{mDAD7%b2@Ipy<@D<1Uq}Hhq-cbNNMy_P13#&b*3cTgeEX zBg@!6@BG8|zN$CHQxooYPQKxLqEg+YJ@vNKG~0#0_a9upKi6sYd;gE>yzgeXIvkpi zR@blZ?)LGoQSmX4ZC2*ZlFduz|NNp|v*+QL<&RGX@Az#jcVs7UYZ|ioi`WyY=l4MKvr7z4jbL$?I7=LS7d$aw=muJq)XFGyM z|ADJZFU5XqfKAQ Date: Thu, 21 May 2020 16:07:33 +0300 Subject: [PATCH 20/56] RDoc-1703_TimeSeries: Studio page fixed links and other small changes --- .../images/document-time-series.png | Bin 149262 -> 150610 bytes .../images/document-time-series.snag | Bin 163864 -> 163864 bytes .../document-extensions/time-series.markdown | 30 ++++++++++++------ 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/document-time-series.png b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/document-time-series.png index 8d3abd103b1f741d5c7d185916faf8b88bffbf78..25956207ecbd448cf514450c42d9692d0e97c5c7 100644 GIT binary patch delta 66456 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 diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/document-time-series.snag b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/images/document-time-series.snag index 474e2be1c75e69ab202a0c33f4d47007f010aeae..4303fe6e563d8ee8cafa156538e1989c8036a089 100644 GIT binary patch delta 261 zcmbQyz%`?RYeTC7@3qL*4E<}2%nS?+2gD~&Qh3D|@WT@INHvd#HyUVu3=qcxaopy$ z0^NL*B^(ZNi1KiVI$8MSZGPzRg^$r_^ELk`Yzo08sRarVhPLV!rk3gokwAutnVGsm zcxFmThON4p>12T*(a9%61UU@!48UNrU69^n^*}xjLo;(za|>hR$&Ep_ObYs&w}tg` YOqNJ+gxk}cn9!b>z_>jzfoZ!u0OD#<{{R30 delta 177 zcmbQyz%`?RYeTC7?AfXFjsmWc6MSKBgAwmhM zkAYH?xs*QfL73MV8#Y6Plt1x7nAaE=Fg^jQ+RUZG#>kY%zF9~$k7x4+ff;<0B^(ZN z2yu$4&785@Z1Y2hFMNz9o3HslVcXmv-pMi9fa&UFi3CTuisr Date: Sun, 24 May 2020 22:15:51 +0300 Subject: [PATCH 21/56] mainly overview changes --- .../client-api/api-overview.markdown | 25 +-- .../session-methods/append-ts-data.markdown | 2 +- .../timeseries/design.markdown | 8 +- .../timeseries/overview.markdown | 166 ++++++++++-------- 4 files changed, 111 insertions(+), 90 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown index 13b81dbb1f..ce74b00d6c 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -48,7 +48,7 @@ There are also functionalities unique to each interface. You can, for instance, gather multiple session actions (e.g. the update of a time-series and the modification of a document) and execute them in a single transaction - by calling `session.saveChanges`, to ensure that they + by calling `session.SaveChanges`, to ensure that they would all be completed or all be reverted. * You can use `session` methods to `include` time-series while loading documents. @@ -65,13 +65,18 @@ There are also functionalities unique to each interface. {PANEL: Available Time-Series `session` methods} * [TimeSeriesFor.Append](../../../document-extensions/timeseries/client-api/session-methods/append-ts-data) - Use this method to **Create and update time-series data**. + Use this method to **Append entries to a time-series** + (creating the series, if it didn't previously exist). * [TimeSeriesFor.Remove](../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data) - Use this method to **Remove time-series data**. -* [TimeSeriesFor.Get](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries) - Use this method to **Retrieve time-series Entries**. + Use this method to **Remove a range of entries from a time-series** + (removing the series completely, if all the data is removed). + * [TimeSeriesFor.Get](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries) + Use this method to **Retrieve raw time-series entries** + for a data range or for all entries. * [Advanced.GetTimeSeriesFor](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names) Use this method to **Retrieve time-series Names**. + This can be computed directly from the document metadata and requires no + additional server roundtrips. * [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) Use this method to **patch time-series data to a document**. * **To include time-series data** - @@ -84,14 +89,12 @@ There are also functionalities unique to each interface. * [TimeSeriesBatchOperation](../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data) Use this operation to **append and remove time-series data**. - `TimeSeriesBatchOperation` has an advantage over `session.Append` and - `session.Remove`, in allowing you to bundle a series of Append and/or - Remove operations in a list and execute tham in a single call. + You can bundle a series of Append and/or Remove operations in a list and + execute them in a single call. * [GetTimeSeriesOperation](../../../document-extensions/timeseries/client-api/store-operations/get-TS-data) Use this operation to **retrieve time-series data**. - `GetTimeSeriesOperation` has an advantage over `session.Get`, in allowing - you to retrieve data from multiple time-series of a selected document in - a single call. + `GetTimeSeriesOperation` has an advantage over `session.TimeSeries.Get`, in allowing + you to retrieve data from multiple time-series of a selected document in a single call. * [ConfigureTimeSeriesOperation](../../../document-extensions/timeseries/rollup-and-retention) Use this operation to **manage time-series roll-up and retention policies**. * [PatchOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown index 5f3e1e0c46..a8562cf6e1 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown @@ -9,7 +9,7 @@ * You can append a single [time-series entry](../../../../document-extensions/timeseries/design#time-series-entries) at a time. Note, however, that you can `Append` as many times as you need to before calling - `session.saveChanges`, to append multiple entries in a single transaction. + `session.SaveChanges`, to append multiple entries in a single transaction. * In this page: * [`TimeSeriesFor.Append`](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#timeseriesfor.append) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown index 27d3c8f491..401f985b90 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown @@ -4,8 +4,8 @@ {NOTE: } -A time-series is an array of Gorilla-encoded `IEnumerable` entries -that extends a specific single document. +A time-series is an array of Gorilla-encoded entries, that is related +to a single specific document. * In this page: * [Time-Series Structure](../../document-extensions/timeseries/design#time-series-structure) @@ -29,7 +29,7 @@ that extends a specific single document. #### Document Extension -A time-series is related to the document it extsnds, by - +A time-series is related to the document it extends, by - * A **reference to the time-series** in the document's metadata. The time-series' **name** is kept in the document's metadata. @@ -71,7 +71,7 @@ A time-series array is constructed of segments. #### Time-Series Entries -Each time-series entry is an `IEnumerable` with three values. +Each time-series entry is composed of: * `TimeSeriesEntry` diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown index ef65ff76c8..fa37696793 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown @@ -1,52 +1,83 @@ -# Time Series Overview +# Time-Series Overview --- {NOTE: } -* RavenDB’s distributed time-series are series of numeric values - ordered by time. - You can use time-series to track changes over time in various process like – - * the heartrate measured by a wrist watch - * the measurements of a thermometer - * the peaks and lows of a home cable consumption +* Time-series are vectors of data points, whose values are ordered by time. + You can populate time-series with the values produced by various systems + (including an ever-growing number of IoT devices), and simplify the management + and usage of the collected data. -* Create and manage time-series using API methods, or through - the [Studio](../../studio/database/documents/document-view/additional-features/counters). +* A time-series can contain for example - + * A sequence of heartrate values, collected from a smart wrist-watch + * The measurements of a weather-station's thermometer + * Peaks and lows in a cable-modem usage + * Coordinates sent by a delivery truck's GPS tracker + * Daily changes in stock prices + +* Create and manage time-series using API methods or the + [Studio](../../studio/database/document-extensions/time-series). * In this page: - * [Why Use Time-Series?](../../document-extensions/timeseries/overview#why-use-time-series?) + * [The Time-Series Interface](../../document-extensions/timeseries/overview#the-time-series-interface) + * [Time-Series Features](../../document-extensions/timeseries/overview#time-series-features) * [Time-Series Are Document Extensions](../../document-extensions/timeseries/overview#time-series-are-document-extensions) - * [Managing Time-Series](../../document-extensions/timeseries/overview#managing-time-series) + * [Document Extensions](../../document-extensions/timeseries/overview#document-extensions) + * [Data Storage](../../document-extensions/timeseries/overview#data-storage) + * [Time-Series Distribution](../../document-extensions/timeseries/overview#time-series-distribution) * [Time-Series Entries](../../document-extensions/timeseries/overview#time-series-entries) - * [The Time-Series API](../../document-extensions/timeseries/overview#the-time-series-api) {NOTE/} --- -{PANEL: Why use Time-Series?} +{PANEL: The Time-Series Interface} + +RavenDB's time-series functionality is fully integrated into its +[document model](../../document-extensions/timeseries/overview#time-series-are-document-extensions), +[distributed environment](../../document-extensions/timeseries/overview#time-series-distribution), +and various other features. -The need to track and monitor series of dynamically changing values, particularly -fast-pacing and large series, is advocated by the rapid growth in the usage of -wearable devices, monitoring tools, navigation aids, security sensors and countless -other systems whose output over time may or may not be accumulated and put to good -use - depending on the awareness to its existence and value and on the resources -allocated to process it. +It is a comfortable, simple and powerful interface that can be used +in numerous ways. E.g. - -RavenDB offers cross-system support for the procession, usage and storage -of time-series. +* A time-series can be updated routinely with data collected from a wearable pulse + monitor. The data can then be rolled up to create a low-resolution dataset, and + plotted for a graphical view of the heartrate during a day or a week. +* A time-series can collect the data sent by a cable modem, to check its + consumption in different hours. -{INFO: } -There are numerous applications to time-series' like - +--- -* Routinely updating a time-series with the **data collected from a wearable pulse - monitor**. The data can then be rolled up in a comfortable resolution, queried, - and plotted for a graphical view of the heartrate during the day. -* Measuring the **changes in a home cables consumption** during the day -* A statistical curve can be created over **memory measurements** reported by - a device over a day, extrapolating high and low usage peaks and comparing the - data to that of other days. -{INFO/} +#### Time-Series Features + +* **Highly-Efficient Storage Management** + Time-series storage is extremely efficient thanks, among other + reasons, to its usage of RavenDB's low-level storage engine. +* **A Thorough Set of [API Methods](../../document-extensions/timeseries/client-api/api-overview)** + The time-series API includes `session methods` and `store operations`. +* **[Full GUI Support](../../studio/database/document-extensions/time-series)** + You can watch and manage time-series using the GUI. +* **Time-Series Querying and Aggregation** + High-performance queries and aggregations can be performed over + time-series [tags and values](../../document-extensions/timeseries/overview#time-series-entries) + using LINQ expressions and raw RQL. +* **Time-Series Indexing** + Time-series can be indexed using LINQ expressions. +* **[Rollup and Retention Policies](../../document-extensions/timeseries/rollup-and-retention)** + * **Rollup Policies** + You can set time-series rollup policies to aggregate large series into + smaller sets by your definitions. + * **Retention Policies** + You can set time-series retention policies to automatically remove series + that have reached an expiration threshhold. +* **[Including Time-Series](../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview)** + You can include (pre-fetch) time-series data while loading documents, + so they'd be held by the client's sesion and instantly delivered to the + user when they are requested. +* **Patching** + You can patch time-series data to your documents. + (visit the [API documentation](../../document-extensions/timeseries/client-api/api-overview) to learn more). {PANEL/} @@ -54,48 +85,48 @@ There are numerous applications to time-series' like - RavenDB’s Time-Series, like its distributed counters, attachments and document revisions, are **document extensions**. -A time-series is always attached to an owner document, so its relation to a user, -a device, a company or a process remains clear at all times. + +--- + +#### Document Extensions + +A time-series always extends a specific document. + +If a time-series is populated with events related to a product, +for example, it may extend a document with this product's specifications. + +One advantage of this method, is that the time-series' context, +be it a product, a device, a company or a process. is always clear. + +A second advantage is that time-series are comfortable managed using +the solid document interface. + +--- + +#### Data Storage The time-series’ name is kept at its owner-document’s metadata, while its values are kept separately. This way, changes in time-series values do not cause document changes. +This is important because time-series are expected to grow large and their values +to change often. + +Time-series storage management is highly efficient both for storage and for querying. {PANEL/} -{PANEL: Managing Time-Series } - -RavenDB's time-series support covers many of its other features. - -* **Indexing** - Time-series can be indexed to minimize query time. -* **Queries** - Time-series **can be queried**. - {INFO: } - Queries are often performed over a time window, e.g. an hour or a week, - to produce measurements like the minimal, average or maximal measurement - during this window or to create a statistical curve. - {INFO/} -* **Rollup** - You can set a time-series **rollup policy**, to aggregate it in a comfortable, - usable resolutions. -* **Retention** - You can set a time-series **retention policy** to automatically remove - time-series that fill their expiration period. -* **Including** - You can **include** time-series while loading documents, explicitly or by query, - so they would be held by the session and instantly delivered when the user needs - them. -* **Patching** - Time-series can be **patched to documents**, explicitly or by query. -* **Backup** - You can set an ongoing backup task to backup time-series. + +{PANEL: Time-Series Distribution} + +Distributed clients and nodes can modify time-series concurrently and the +modifications are merged by the cluster with [no conflict](../../document-extensions/timeseries/design#no-conflicts). {PANEL/} {PANEL: Time-Series Entries} -Each **time-series entry** is consisted of - +A time-series is composed of **time-series entries**. +Each entry consists of - * A **timestamp** that indicates the measurement datetime in a millisecond precision. * Up to 32 **values** @@ -103,21 +134,8 @@ Each **time-series entry** is consisted of - e.g. a document ID for the specifications of the device that provided the values. - {PANEL/} -{PANEL: The Time-Series API} - -The time-series API includes `session` methods and `document-store` operations. -To learn how to manage time-series using the API, read the [articles -dedicated to it](../../document-extensions/timeseries/client-api/api-overview). - - - -{PANEL/} - - - ## Related articles **Studio Articles**: [Studio Time Series Management]() From 4b9e7c8d446aeb8ce4d4dfc863ab14267032e035 Mon Sep 17 00:00:00 2001 From: morhilai Date: Mon, 25 May 2020 09:50:51 +0300 Subject: [PATCH 22/56] RDoc-1703_TimeSeries Rollup review comments --- .../timeseries/images/rollup-1.PNG | Bin 62741 -> 77467 bytes .../timeseries/images/rollup-1.snag | Bin 0 -> 151576 bytes .../timeseries/rollup-and-retention.markdown | 67 +++++++++--------- .../TimeSeries/RollupAndRetention.cs | 9 ++- 4 files changed, 38 insertions(+), 38 deletions(-) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/images/rollup-1.snag diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/images/rollup-1.PNG b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/images/rollup-1.PNG index 422deabc0f80206e198601d45fd0124ea4c46e08..22e34099fe110fa3fcdf94c969990bc5b2838b33 100644 GIT binary patch literal 77467 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

    uZfeC;}y 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�>2 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 T)-Eae8T^u$QIW2aGzt1IpcA+Q literal 62741 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 diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/images/rollup-1.snag b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/images/rollup-1.snag new file mode 100644 index 0000000000000000000000000000000000000000..4b903af031eaecc1de038e09410448fda14dd8fc GIT binary patch literal 151576 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�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 literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown index 76890e023b..180867ed20 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown @@ -6,18 +6,11 @@ Many time-series applications produce massive amounts of data at a steady rate. **Time-Series Policies** help you to manage your data in two ways: -* *Rollup* - the process of summarizing time-series data by aggregating it into the +* Creating **Rollups** - summarizing time-series data by aggregating it into the form of a new, lower resolution time-series. -* *Retention* - limiting the amount of time that time-series data is kept before -being deleted. - -There are two kinds of policies: - -1. `RawTimeSeriesPolicy` - defines *only* a retention span, which applies to the -original, or "raw", time-series. -2. `TimeSeriesPolicy` - defines the creation of rollup time-series and the retention -span for those time-series. +* Limiting a time-series' **Retention** - the amount of time that time-series data +is kept before being deleted. * In this page: * [Time-Series Policies](../../document-extensions/timeseries/rollup-and-retention#time-series-policies) @@ -30,19 +23,13 @@ span for those time-series. {PANEL: Time-Series Policies} -A collection can be configured with multiple time-series policies which apply to all -time-series in the collection. -*Raw* time-series policies define the retention span for all raw time-series - there -is up to one of these per collection. The other time-series policies each define the -creation of rollups. Each raw time-series gets each of the rollups defined by the -collection configuration. A rollup time-series belongs to the same document as the -raw time-series. -
    -###Rollups +#### What are Rollups? -The **rollup** process divides time-series entries into chunks of a specified span -of time (such as a minute, or a day). The data from all the entries in this span is -aggregated into six useful values: +A rollup is a time-series that summarizes the data from an original time-series. It +is created by dividing time-series entries into set spans of time, like a second or +a week. Each entry in the rollup time-series represents one of those spans, and +contains an aggregation of the entries in that span. The data from the original +time-series is aggregated into just six values: * *First* - the value of the first entry in the span. * *Last* - the value of the last entry. @@ -50,6 +37,9 @@ aggregated into six useful values: * *Max* - the largest value. * *Sum* - the sum of all the values in the span. * *Count* - the total number of entries in the span. + +This results in a much more compact time series that still contains useful +information about the original. Let's look at an example of rollup data:
    !["Rollup time-series entries"](images/rollup-1.png "A rollup time-series' entries") @@ -59,24 +49,22 @@ aggregations are made for each of the values. A new "rollup" time-series is crea with one entry for each span. If the raw time-series has *n* values per entry, the rollup time-series will have _6*n_ per entry: the first six will be the summary of the first raw value, the next six will be aggregations of the next raw value, and -so on. +so on. Because entries are limited to 32 values, rollups are limited to the first +five values of an original time series entry, resulting in 30 aggregate values. **Timestamp**: The aggregation span is a round number of one of these time units: a second, day, week, month, or year. The span includes all entries starting at a round number of time -units, and ending at another round number *minus one millisecond* inclusive - since -milliseconds are the minimum resolution in RavenDB time-series. The timestamp for a -rollup entry is the *end* of the span it represents, so it is a round number of time -units minus one millisecond. +units, and ending at another round number - *minus one millisecond* inclusive (since +milliseconds are the minimal resolution in RavenDB time-series). The timestamp for a +rollup entry is the beginning of the span it represents, so it is a round number of time +units. For example, if the aggregation span is one day, the spans will start at times like: `2020-01-01 00:00:00`, `2020-01-02 00:00:00`, `2020-01-03 00:00:00`, -And the corresponding end times will be: -`2020-01-01 23:59:59.9999`, -`2020-01-02 23:59:59.9999`, -`2020-01-03 23:59:59.9999`, +And these will also be the time-stamps of the rollup entries. **Name**: A rollup time-series name has this format: @@ -123,14 +111,16 @@ public class RawTimeSeriesPolicy : TimeSeriesPolicy } {CODE-BLOCK/} -#### `TimeSeriesPolicy`: +`TimeSeriesPolicy`: + | Property | Description | | - | - | | `Name` | This `string` is used to create the names of the rollup time-series created by this policy.
    `Name` is added to the name of the raw time-series - with `@` as a separator - to create the name of the resulting rollup time-series. | | `RetentionTime` | Time-series entries older than this time span (see `TimeValue` below) are automatically deleted. | | `AggregationTime` | The time-series data being rolled up is divided at round time units, into parts of this length of time. Each of these parts is aggregated into an entry of the rollup time-series. | -#### `RawTimeSeriesPolicy`: +`RawTimeSeriesPolicy`: + | Property | Description | | - | - | | `Name` | This `string` is used to create the names of the rollup time-series created by this policy.
    `Name` is added to the name of the raw time-series - with `@` as a separator - to create the name of the resulting rollup time-series. | @@ -151,9 +141,16 @@ public struct TimeValue : IDynamicJson, IEquatable } {CODE-BLOCK/} -Each of the above `TimeValue` methods returns a `TimeValue` object representing a +`Each of the above `TimeValue` methods returns a `TimeValue` object representing a whole number of the specified time units. These are passed as the aggregation and retention spans of time-series policies. + +{INFO: } +The main reason we use `TimeValue` rather than something like `TimeSpan` is that +`TimeSpan` doesn't have a notion of 'months', because a calendar month is not a +standard unit of time (since it ranges from 28-31 days). `TimeValue` enables you +to define retention and aggregation spans for a calendar month. +{/INFO}
    ####`TimeSeriesCollectionConfiguration` and `TimeSeriesConfiguration` @@ -173,7 +170,7 @@ public class TimeSeriesConfiguration | Property | Description | | - | - | | `Disabled` | If set to `true`, rollup processes will stop, and time-series data will not be deleted by retention policies. | -| `Policies` | Populate this `List` with your time-series policies, including up to one `RawTimeSeriesPolicy`. | +| `Policies` | Populate this `List` with your rollup policies | | `Collections` | Populate this `Dictionary` with the `TimeSeriesCollectionConfiguration`s and the names of the corresponding collections. |
    ####The Time-Series Configuration Operation diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/RollupAndRetention.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/RollupAndRetention.cs index 182bc29b40..4b184f731c 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/RollupAndRetention.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/RollupAndRetention.cs @@ -24,13 +24,16 @@ public void Examples() #region rollup_and_retention_0 //Policy for the original ("raw") time-series, //to keep the data for one week - var rawRetention = new RawTimeSeriesPolicy(TimeValue.FromDays(7)); + var oneWeek = TimeValue.FromDays(7); + var rawRetention = new RawTimeSeriesPolicy(oneWeek); //Roll-up the data for each day, //and keep the results for one year + var oneDay = TimeValue.FromDays(1); + var oneYear = TimeValue.FromYears(1); var dailyRollup = new TimeSeriesPolicy("DailyRollupForOneYear", - TimeValue.FromDays(1), - TimeValue.FromYears(1)); + oneDay, + oneYear); //Enter the above policies into a //time-series collection configuration From 5a1bf3f28f8202cbacfa1c0a769a3f6e441bf4c4 Mon Sep 17 00:00:00 2001 From: morhilai Date: Tue, 2 Jun 2020 20:03:07 +0300 Subject: [PATCH 23/56] RDoc-1703_TimeSeries Indexing ***WIP*** --- .../timeseries/indexing/map-indexing.markdown | 23 +++++++++++++++++++ .../indexing/multi-map-indexing.markdown | 1 + .../TimeSeries/Indexing/indexing.cs | 10 ++++++++ 3 files changed, 34 insertions(+) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/multi-map-indexing.markdown create mode 100644 Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown index 3d6a19f8c9..2823a93f80 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown @@ -32,6 +32,29 @@ RavenDB supports time series indexing **by name**, but **not by value**. {PANEL/} {PANEL: } +Use these time-series specific alternatives to the standard [indexing API]() + +`AbstractTimeSeriesIndexCreationTask : AbstractIndexCreationTask[Base]` +`TimeSeriesIndexDefinition : IndexDefinition` +`TimeSeriesIndexDefinitionBuilder : AbstractIndexDefinitionBuilder` + + +####`TimeSeriesSegment` object + +Time-series are divided into **segments** in storage, each containing several consecutive entries. +Segments can be referenced within the index syntax. This exposes aggregate values. + +| Property | Type | Description | +| - | - | - | +| DocumentId | string | The [ID]() of the document this time-series belongs to | +| Name | string | The name of the time-series this segment belongs to | +| Min | double[] | The smallest values from all entries in the segment. `Min[0]` is the smallest of all the *first* values in the entries of this segment, `Min[1]` is the smallest second value, and so on. | +| Max | double[] | The largest values from all entries in the segment | +| Sum | double[] | The sums of values from all entries in the segment. The first `Sum` is the sum of all first values, and so on. | +| Count | int | The number of entries in this segment | +| Start | DateTime | The timestamp of the first entry in the segment | +| End | DateTime | The timestamp of the last entry in the segment | +| Entries | `TimeSeriesEntry[]` | The segment's entries themselves | {PANEL/} ## Related articles diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/multi-map-indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/multi-map-indexing.markdown new file mode 100644 index 0000000000..106b6278b2 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/multi-map-indexing.markdown @@ -0,0 +1 @@ +# multimapi diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs new file mode 100644 index 0000000000..df4bb5fbfe --- /dev/null +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Raven.Documentation.Samples.DocumentExtensions.TimeSeries.Indexing +{ + class indexing + { + } +} From 9e9bba9e446a5ec17edd115cc581af0080adb96b Mon Sep 17 00:00:00 2001 From: reebhub Date: Wed, 3 Jun 2020 12:05:02 +0300 Subject: [PATCH 24/56] RDoc-1703_TimeSeries partial TS queries documentation --- .../timeseries/overview.markdown | 6 +- .../timeseries/querying/.docs.json | 14 +- .../querying/dynamic-queries.markdown | 56 --- .../dynamic-time-series-queries/.docs.json | 20 + .../client-linq-query.markdown | 244 ++++++++++++ .../client-raw-query.markdown | 90 +++++ .../dynamic-queries.markdown | 280 ++++++++++++++ .../querying/indexed-queries.markdown | 33 -- .../indexed-time-series-queries/.docs.json | 8 + .../indexed-queries.markdown | 51 +++ .../querying/queries-overview.markdown | 117 ++++++ .../indexes/querying/what-is-rql.markdown | 362 ++++++++++++++++++ .../TimeSeries/TimeSeriesTests.cs | 35 ++ 13 files changed, 1220 insertions(+), 96 deletions(-) delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-queries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-query.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/indexes/querying/what-is-rql.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown index fa37696793..4eef66b430 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown @@ -60,7 +60,7 @@ in numerous ways. E.g. - You can watch and manage time-series using the GUI. * **Time-Series Querying and Aggregation** High-performance queries and aggregations can be performed over - time-series [tags and values](../../document-extensions/timeseries/overview#time-series-entries) + time-series [timestamps, tags and values](../../document-extensions/timeseries/overview#time-series-entries) using LINQ expressions and raw RQL. * **Time-Series Indexing** Time-series can be indexed using LINQ expressions. @@ -69,8 +69,8 @@ in numerous ways. E.g. - You can set time-series rollup policies to aggregate large series into smaller sets by your definitions. * **Retention Policies** - You can set time-series retention policies to automatically remove series - that have reached an expiration threshhold. + You can set time-series retention policies to automatically remove + time-series entries that have reached an expiration threshhold. * **[Including Time-Series](../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview)** You can include (pre-fetch) time-series data while loading documents, so they'd be held by the client's sesion and instantly delivered to the diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json index 9ad7877f16..09e0c18309 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json @@ -1,13 +1,19 @@ [ { - "Path": "dynamic-queries.markdown", - "Name": "Dynamic Queries", + "Path": "queries-overview.markdown", + "Name": "Overview", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "indexed-queries.markdown", - "Name": "Indexed Queries", + "Path": "/dynamic-time-series-queries", + "Name": "Dynamic Time-Series Queries", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "/indexed-time-series-queries", + "Name": "Indexed Time-Series Queries", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-queries.markdown deleted file mode 100644 index 3218154203..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-queries.markdown +++ /dev/null @@ -1,56 +0,0 @@ -# Dynamic Time Series Queries ---- - -{NOTE: } - -* - -* In this page: - * []() - * []() -{NOTE/} - ---- - -{PANEL: } - -###Time Series and Queries - -Create queries **using code**, or send the server **raw queries** for execution. - -* Either way, you can query time series **by name** but **not by value**. - This is because queries are generally [based on indexes](), and time series are [not indexed](). -* Time series **can** be [projected](../../../indexes/querying/projections) from query results, as demonstrated in the following examples. - This way a client can get TS values from a query without downloading whole documents. - -* Use [Session.Query](../../../client-api/session/querying/how-to-query#session.query) to code queries yourself. - * **Returned Time Series Value** - ... - **query sample here** - -* Use [RawQuery](../../../client-api/session/querying/how-to-query#session.advanced.rawquery) to send the server raw RQL expressions for execution. - * You can use the [**TS method name here**] method. - **Returned Value** - - [**if there are TS and raw TS methods - samples of both here**] - [**sample of a TS query using a filter**] - [**sample of a TS query using projection**] - -{PANEL/} - -{PANEL: } -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/.docs.json new file mode 100644 index 0000000000..30cc429da9 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/.docs.json @@ -0,0 +1,20 @@ +[ + { + "Path": "dynamic-queries.markdown", + "Name": "Dynamic Queries", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "client-raw-query.markdown", + "Name": "Client Raw Query", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "client-linq-query.markdown", + "Name": "Client LINQ Query", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-query.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-query.markdown new file mode 100644 index 0000000000..f676102a12 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-query.markdown @@ -0,0 +1,244 @@ +# Dynamic Time-Series Queries +--- + +{NOTE: } + +* Time-series queries can be phrased by a client using raw RQL or LINQ functions + (which are translated to RQL as well). +* Queries can be performed over whole time-series, and over chosen ranges of + time-series entries. +* Queries can filter the results using `Where`, group them using `GroupBy`, + and project selected results using `Select`. + +* In this page: + * [Dynamic Queries](../../../document-extensions/timeseries/querying/dynamic-queries#dynamic-queries) + * [Query Syntax: Server-Side](../../../document-extensions/timeseries/querying/dynamic-queries#query-syntax:-server-side) + * [Query Syntax: Client-Side](../../../document-extensions/timeseries/querying/dynamic-queries#query-syntax:-client-side) + * [Filtering](../../../document-extensions/timeseries/querying/dynamic-queries#filtering) + * [Aggregated Queries](../../../document-extensions/timeseries/querying/dynamic-queries#aggregated-queries) + +{NOTE/} + +--- + +{PANEL: Dynamic Queries} + +Use dynamic queries when the time-series you query are unindexed +or when you prefer that RavenDB's [query optimizer](../../../indexes/querying/what-is-rql#query-optimizer) +would locate their indexes itself. + +{INFO: } +Note that time-series are **not** automatically indexed. +To index a time-series, define a [static index](../../../document-extensions/timeseries/indexing/map-indexing) +for it manually. +When a time-series **is** indexed, you can query it using a dynamic query +or define an [indexed query](../../../document-extensions/timeseries/querying/indexed-queries) +for it. +{INFO/} + +{PANEL/} + +{PANEL: Query Syntax: Server-Side} + +Time-series RQL queries have this basic format: + +{CODE-BLOCK: JSON} +from Users as u where Age < 30 +select timeseries( + from HeartRate) +{CODE-BLOCK/} + +* **from Users as u where Age < 30** + This is simply a document query that locates the documents whose time-series + you want to query. + + {INFO: } + It is common to specify an even more concrete document query, to focus the + search on a particular document. + If you want to query a time-series that is updated with stock prices, + for example, it would make sense to first find a specific company + (a single "Company" document) whose stock prices interest you, and + then query this company's StockPrices time-series. + {INFO/} + +* **select timeseries** + Define the time-series part of the query within this block. + +* **from HeartRate** + The name of the time-series to be queried. + In this case: all time-series named "HeartRate" (for users under the age of 30). + +--- + +#### Entries Range + +{CODE-BLOCK: JSON} +from Users as u where Age < 30 +select timeseries( + from HeartRate + between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z') +{CODE-BLOCK/} + + +* **between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z'** + Use `between` to indicate which range of time-series entries is to be queried upon. + If the query ends here, all entries between the given timestamps will be retrieved. + If the query continues, later parts will relate only to this range. + +--- + +#### Filtering + +{CODE-BLOCK: JSON} +from Users as u where Age < 30 +select timeseries( + from HeartRate + between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z' + where Tag='watches/fitbit') +{CODE-BLOCK/} + +* **where Tag='watches/fitbit'** + Use `where` to filter time-series entries by their tags or values. + In this case: only entries tagged 'watches/fitbit' are retrieved. + * To filter by value: **where Value < 80** + +--- + +#### Aggregation + +{CODE-BLOCK: JSON} +from Users as u where Age < 30 +select timeseries( + from HeartRate + between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z' + where Tag='watches/fitbit' + group by 7days) +{CODE-BLOCK/} + +* **group by 7days** + Use `group by` to aggregate retrieved entries in groups by a chosen resolution. + In this case: the result-set will be composed of groups of Heartrate entries, + each group containing 7 days of Heartrate entries (first group: 2020-05-27 to + 2020-06-02, second group: 2020-06-03 to 2020-06-09, and so on). + +--- + +#### Projection + +{CODE-BLOCK: JSON} +from Users as u where Age < 30 +select timeseries( + from HeartRate + between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z' + where Value < 80 + group by 7days + select min(), max()) +{CODE-BLOCK/} + +* **select min(), max()** + Use `select` to choose results that would be projected to the client. + You can select results by: + * Min() - Series smallest value + * Max() - Series largest value + * Sum() - Series entries sum + * Average() - Series Values average + * First() - Value of the first series' entry + * Last - Value of the last series' entry + * Count - Number of time-series entries + + If you haven't [aggregated]() the result-set, selecting min() for example + will yield a single minimum value for the entire result-set. + + If you **have** aggregated the result-set, selecting min() for example will + compose an array of minimum values, one per group. + +{PANEL/} + +{PANEL: Declare: Creating a Time-Series Function} + +You can create a time-series function using `declare`, +and use this function from your query. +Here is, for example, the same query with and without +a time-series function. + +| With Time-Series Function | Without Time-Series Function | +|:---:|:---:| +| {CODE-BLOCK: JSON} +declare timeseries ts(jogger){ + from jogger.HeartRate + between + '2020-05-27T00:00:00.0000000Z' + and + '2020-06-23T00:00:00.0000000Z' + where Value < 80 + group by 7days + select min(), max() +} + +from Users as jog where Age < 30 +select ts(jog) +{CODE-BLOCK/}| {CODE-BLOCK: JSON} + from Users as jog where Age < 30 + select timeseries( + from HeartRate + between + '2020-05-27T00:00:00.0000000Z' + and + '2020-06-23T00:00:00.0000000Z' + where Value < 80 + group by 7days + select min(), max()) + {CODE-BLOCK/}| + +{PANEL/} + +{PANEL: Query Syntax: Client-Side} + +You can submit a time-series query from your client using either a raw RQL query, +or LINQ expressions. + +--- + +#### Raw RQL + +Raw RQL queries are similar + +--- + +#### Offset + +--- + +#### Time-Series LINQ Queries + +{PANEL/} + +{PANEL: Filtering} + +--- + +#### Filter By TS-Entry Properties + +--- + +#### `LoadTag` + +{PANEL/} + +{PANEL: Aggregated Queries} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query.markdown new file mode 100644 index 0000000000..b1a6dadd8d --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query.markdown @@ -0,0 +1,90 @@ +## Client Raw RQL Time-Series Query +--- + +{NOTE: } + +* You can run a time-series query using raw RQL via `session.Advanced.RawQuery`. + +* [Run a Time-Series Raw RQL Query](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query#run-a-time-series-raw-rql-query) + * [Syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query#syntax) + * [Usage Flow](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query#usage-samples) + +{NOTE/} + +--- + +{PANEL: Run a Time-Series Raw RQL Query} + +* You can run both aggregating and non-aggregating queries + using `Advanced.RawQuery`. + * Aggregating queries will return an aggregated array. + * Non-aggregating queries will return a list of raw results. +* You can define an **offset** to ensure that timestamps are + created using a time zone of your choice rather than the + server's local time. + **Note that an offset can be defined only in a `declare` function.** + +{PANEL/} + +{PANEL: Syntax} + +* **`Advanced.RawQuery`** + * **Definition** + {CODE RawQuery-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + * **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `query` | string | Raw RQL Query | + + * **Return Value**: + * **`IRawDocumentQuery`** + for aggregated data. + * **`IRawDocumentQuery`** + for non-aggregated data. + +{PANEL/} + +{PANEL: Usage Flow} + +* Open a session +* Call `session.Advanced.RawQuery` + Pass it your query +* Get the results using `TimeSeriesAggregationResult` for aggregated data + -or- + `TimeSeriesRawResult` for non-aggregated data +{PANEL/} + +{PANEL: Usage Samples} + +* In this sample, we run a query that does not aggregate data, and get + its result using a `TimeSeriesRawResult` list. + The query uses the **time-series function** `declare` syntax. + The query also defines an **offset**, to ensure that timestamps + reflect the client's time zone. + + {CODE timeseries_region_Raw-Query-Non-Aggregated@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + +* In this sample, we run a query that aggregates data and get + its result using a `TimeSeriesAggregationResult` array. + {CODE timeseries_region_Raw-Query-Aggregated@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown new file mode 100644 index 0000000000..8a29ddec9b --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown @@ -0,0 +1,280 @@ +# Dynamic Time-Series Queries +--- + +{NOTE: } + +* Time-series queries can be phrased by a client using raw RQL or LINQ functions + (which are also translated to RQL before their execution by the server). +* Queries can be performed over whole time-series, and over chosen ranges of + time-series entries. +* Queries can filter results using `Where`, group them using `GroupBy`, + and project selected results using `Select`. + +* In this page: + * [Dynamic Queries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#dynamic-queries) + * [Basic Syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#basic-syntax) + * [Alternative Syntax: Declare a Time-Series Function](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#alternative-syntax-declare-a-time-series-function) + * [Query Range](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#query-range) + * [Filtering](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#filtering) + * [Aggregation](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#aggregation) + * [Projection](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#projection) + +{NOTE/} + +--- + +{PANEL: Dynamic Queries} + +Use dynamic queries when time-series you query are unindexed +or when you prefer RavenDB to choose an index automatically +using its [query optimizer](../../../../indexes/querying/what-is-rql#query-optimizer). + +{PANEL/} + +{PANEL: Basic Syntax} + + This is the basic RQL syntax of a dynamic time-series query. + + {CODE-BLOCK: JSON} + //Look for time-series named "HeartRate" in user profiles of users under 30. + + from Users as u where Age < 30 + select timeseries( + from HeartRate + ) + {CODE-BLOCK/} + +* `from Users as u where Age < 30` + This **document query** locates the documents whose time-series we want to query. + + {INFO: } + A typical time-series query starts by locating a single document. + For example, to query a stock prices time-series we can locate + a specific company's profile in the Companies collection first, + and then query the StockPrices time-series that extends this profile. + {CODE-BLOCK: JSON} + from Companies as c where Name = 'Apple' + select timeseries( + from StockPrices + ) + {CODE-BLOCK/} + {INFO/} + +* `select timeseries` + The `select` clause defines the time-series query. + +* `from HeartRate` + The `from` keyword is used to select the time-series we'd query, by its name. + +--- + +#### Alternative Syntax: Declare a Time-Series Function + +You can use an alternative syntax, that introduces greater flexibility to your queries +(allowing you, for example, to pass arguments to your query). + +To use this syntax, **declare a timeseries function** and call the function from your query. + +Here is a query in both syntaxes. +We pick users whose age is under 30, and retrieve a range of a time-series called "HeartRate". + + +| With Time-Series Function | Without Time-Series Function | +|:---:|:---:| +| {CODE-BLOCK: JSON} +declare timeseries ts(jogger){ + from jogger.HeartRate + between + '2020-05-27T00:00:00.0000000Z' + and + '2020-06-23T00:00:00.0000000Z' +} + +from Users as jog where Age < 30 +select ts(jog) +{CODE-BLOCK/}| {CODE-BLOCK: JSON} + from Users as jog where Age < 30 + select timeseries( + from HeartRate + between + '2020-05-27T00:00:00.0000000Z' + and + '2020-06-23T00:00:00.0000000Z') + {CODE-BLOCK/}| + +{PANEL/} + +{PANEL: Query Range } + +Use `between` to specify a range of time-series entries to query. +The range start and end entries are chosen by their timestamps, in UTC format. + + +{CODE-BLOCK: JSON} +from Users as jog where Age < 30 +select timeseries( + from HeartRate + between + '2020-05-27T00:00:00.0000000Z' + and + '2020-06-23T00:00:00.0000000Z' +{CODE-BLOCK/} + + * `between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z'` + If the query ends here, all entries between the given timestamps will be retrieved. + If the query continues, any additional filtering will relate only to this range. + +{PANEL/} + +{PANEL: Filtering} + +Use `where` to filter time-series entries by their **tags** or **values**. + +{CODE-BLOCK: JSON} +from Users as u where Age < 30 +select timeseries( + from HeartRate + between '2020-05-27T00:00:00.0000000Z' + and '2020-06-23T00:00:00.0000000Z' + where Tag='watches/fitbit' +) +{CODE-BLOCK/} + +* `where Tag='watches/fitbit'` + In this example we retrieve time-series entries whose tag is 'watches/fitbit'. + To filter entries by their by value, use **Value**. E.g.: + `where Value < 80` + +--- + +#### `load Tag ` + +Use the `load Tag ` expression to load a document whose ID is stored in +a time-series entry. +Use `load Tag ` with `where` to filter your results by the contents of the +loaded document, as we do in the following example. + +{CODE-BLOCK: JSON} +from Companies as c where c.Address.Country = "USA" +select timeseries( + from StockPrice + load Tag as emp + where emp.Title == "Vice President, Sales" +) +{CODE-BLOCK/} + +* `from Companies as c where c.Address.Country = "USA"` + Here, we choose companies that reside in the USA. +* `from StockPrice` + Here we choose these companies' **StockPrice** time-series. +* `load Tag as emp` + We know in advance, that the tag of each time-series entry contains + the ID of an Employee document. + Here, we use the `load tag` expression to load not the ID but + the actual employee document. +* `where emp.Title == "Vice President, Sales"` + And finally, we filter the results by the contents of the Employee document. + +The result-set of this sample includes time-series entries with +references (IDs stored in their tags) to a Sales Vice-President's profile. + + +{PANEL/} + +{PANEL: Aggregation} + +Use `group by` to group the result-set in groups of a chosen resolution. + +{CODE-BLOCK: JSON} +from Users as u where Age < 30 +select timeseries( + from HeartRate + between '2020-05-27T00:00:00.0000000Z' + and '2020-06-23T00:00:00.0000000Z' + where Tag='watches/fitbit' + group by '7 days' +) +{CODE-BLOCK/} + +* `group by '7 days'` + In this case: the result-set will be composed of groups of Heartrate entries, + each group containing 7 days of entries (first group: 2020-05-27 to + 2020-06-02, second group: 2020-06-03 to 2020-06-09, and so on). + +{INFO: You can group by these time units:} + +* **Milliseconds** +* **Seconds** +* **Minutes** +* **Hours** +* **Days** +* **Months** +* **Quarters** +* **Years** + +{INFO/} + +{PANEL/} + +{PANEL: Projection} + +Use `select` to choose the values that would be projected to the client. + +{CODE-BLOCK: JSON} +from Users as u where Age < 30 +select timeseries( + from HeartRate + between '2020-05-27T00:00:00.0000000Z' + and '2020-06-23T00:00:00.0000000Z' + where Value < 80 + group by '7 days' + select max() +) +{CODE-BLOCK/} + +* `select max()` + * Since each time-series entry may have multiple values, + max() will check all the first values of time-series entries and + find the highest first-value, check all the second values of time-series + entries and find the highest second-value, and so on. + * The projected result will be an array of values. + Its length will be as the length of the series-entry with highest number + of values. + +{INFO: You can select values by these criteria:} + +* **Min()** - the lowest value +* **Max()** - the highest value +* **Sum()** - sum of all values +* **Average()** - average value +* **First()** - values of the first series entry +* **Last()** - values of the last series entry +* **Count()** - overall number of values in series entries + +{INFO/} + +{INFO: Selecting values from aggregated and non-aggregated result-sets} + +* When values are selected from a result-set that **hasn't** been aggregated + (grouped): + Values are selected from the entire result-set. +* When values are selected from a result-set that **has** been aggregated: + Values are selected per-group. + +{INFO/} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown deleted file mode 100644 index 737f2bcf95..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown +++ /dev/null @@ -1,33 +0,0 @@ -# Indexed Time Series Queries ---- - -{NOTE: } - -* - -* In this page: - * []() - * []() -{NOTE/} - ---- - -{PANEL: } -{PANEL/} - -{PANEL: } -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/.docs.json new file mode 100644 index 0000000000..652867ab04 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/.docs.json @@ -0,0 +1,8 @@ +[ + { + "Path": "indexed-queries.markdown", + "Name": "Indexed Queries", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown new file mode 100644 index 0000000000..728f504e0d --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown @@ -0,0 +1,51 @@ +# Indexed Time-Series Queries +--- + +{NOTE: } + +* You can run queries over indexes you have created for your time-series. + + {INFO: } + Note that time-series are **not** automatically indexed. + To index a time-series, define a [static index](../../../document-extensions/timeseries/indexing/map-indexing) + for it manually. + {INFO/} + +* In this page: + * [Indexed Queries](../../../document-extensions/timeseries/querying/indexed-queries#indexed-queries) + * [Syntax](../../../document-extensions/timeseries/querying/indexed-queries#syntax) + * [Querying](../../../document-extensions/timeseries/querying/indexed-queries#querying) + +{NOTE/} + +--- + +{PANEL: Indexed Queries} + +{PANEL/} + +{PANEL: Syntax} + +{PANEL/} + +{PANEL: Querying} + +--- + +#### Filtering + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview.markdown new file mode 100644 index 0000000000..6f6f383c79 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview.markdown @@ -0,0 +1,117 @@ +# Time-Series Queries Overview +--- + +{NOTE: } + +* Time-series data can be aggregated and/or queried, to show the behavior of + the processes that produce this data. + +* Data can be aggregated using `group by`and `select` in a query. + (Data can also be aggregated using [rollup policies](../../../document-extensions/timeseries/rollup-and-retention); + this is not related to queries.) + +* In this page: + * [Server and Client Queries](../../../document-extensions/timeseries/querying/queries-overview#server-and-client-queries) + * [Server and Client Queries](../../../document-extensions/timeseries/querying/queries-overview#dynamic-queries-and-indexed-queries) + * [Query Range Selection](../../../document-extensions/timeseries/querying/queries-overview#query-range-selection) + * [Filtering](../../../document-extensions/timeseries/querying/queries-overview#filtering) + * [Aggregation and Projection](../../../document-extensions/timeseries/querying/queries-overview#aggregation-and-projection) + +{NOTE/} + +--- + +{PANEL: Time-Series Queries} + +--- + +#### Server and Client Queries + +Time-series queries require very little client computation resources. +They are executed by the server in full (including document query, +time-series range selection, results filtering and aggregation) and +their results are projected to the client. + +The server runs RQL queries. +In your client code, you can send the server a raw RQL query +or phrase your queries using **LINQ expressions** (which will +also be translated to RQL before their execution by the server). + +--- + +#### Dynamic Queries and Indexed Queries + +* As long as a time-series is unindexed, you can query it using + [dynamic queries](../../../document-extensions/timeseries/querying/dynamic-queries). + + {INFO: } + Time-series are **not automatically indexed**. + {INFO/} + +* Indexed time-series can be queried using + [indexed queries](../../../document-extensions/timeseries/querying/indexed-queries). + + {INFO: } + You can create **static indexes** for your time-series. + {INFO/} + +--- + +#### Query Range Selection + +Queries can be performed over a whole series or over a smaller range of time-series +entries, e.g. only on entries collected during the last 7 days. + +--- + +#### Filtering + +Time-series entries can be filtered by - + +* by their **Tags** + + E.g. retrieve all the entries whose tag is "Thermometer C". + +* by their **Values** + + E.g. retrieve all the entries whose measurements exceed 32 Celsius degrees. + +* by the **contents of a document they refer to** + A time-series entry's tag can contain the **ID of a document**. + In your query, you can **load the document** the entry refers to. + Once the document is loaded, you can **filter your results by its contents**. + + E.g. retrieve entries whose tags refer to a device-specification document, + where the specifications indicate that the device has been manufactured + in Sweden. + +--- + +#### Aggregation and Projection + +* **Aggregation** + Query result-sets can be aggregated (grouped) by a chosen time frame, + e.g. a day (grouping the results in multiple day-long data frames). + +* **Projection** + Various criteria (like `min`, `max` and others) can be used to + `select` the results that would be sent to the client. + Projecting selected results from a **grouped** result-set, will + send the client matching results from each group. + + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/indexes/querying/what-is-rql.markdown b/Documentation/5.0/Raven.Documentation.Pages/indexes/querying/what-is-rql.markdown new file mode 100644 index 0000000000..fb612486b8 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/indexes/querying/what-is-rql.markdown @@ -0,0 +1,362 @@ +# Querying: RQL - Raven Query Language +--- + +{NOTE: } + +Queries in RavenDB use an SQL-like language called **RQL** (Raven Query Language). + +* In this page: + * [Overview](../../indexes/querying/what-is-rql#overview) + * [Query Optimizer](../../indexes/querying/what-is-rql#query-optimizer) + * [Dynamic and Indexed Queries](../../indexes/querying/what-is-rql#dynamic-and-indexed-queries) + * [Queries Usage of Indexes](../../indexes/querying/what-is-rql#queries-usage-of-indexes) + * [RQL Keywords and Methods](../../indexes/querying/what-is-rql#rql-keywords-and-methods) + * [`declare`](../../indexes/querying/what-is-rql#declare) + * [`from`](../../indexes/querying/what-is-rql#from) + * [`group by`](../../indexes/querying/what-is-rql#group-by) + * [`where`](../../indexes/querying/what-is-rql#where) + * [`order by`](../../indexes/querying/what-is-rql#order-by) + * [`load`](../../indexes/querying/what-is-rql#load) + * [`select`](../../indexes/querying/what-is-rql#select) + * [`update`](../../indexes/querying/what-is-rql#update) + * [`include`](../../indexes/querying/what-is-rql#include) + * [`Keywords and Methods Summary`](../../indexes/querying/what-is-rql#keywords-and-methods) + +{NOTE/} + +--- + +{PANEL: Overview} + +RQL is designed to expose externally the RavenDB query pipeline in a way that is easy +to understand, easy to use, and not overwhelming to the user. + +{PANEL/} + +{PANEL: Query Optimizer} + +As soon as a query reaches a RavenDB instance, the instance calls its query optimizer to +analyze the query and determine which indexes should be used to retrieve the requested data. + +--- + +#### Dynamic and Indexed Queries + +RavenDB has two types of queries: + +* A **dynamic query**, e.g. ```from Orders where ...```, which gives the query optimizer + full freedom to choose which index the query will use. +* An **indexed query**, that specifies the index it would use. + E.g. ```from index 'Orders/ByCompany' where ...```, + which instructs RavenDB to use the ```Orders/ByCompany``` index. + +--- + +#### Queries Usage of Indexes + +In other databases, the query optimizer may fail to find a suitable index and fall back +into querying using a full scan. + +RavenDB doesn't include support for full scans. If an index cannot be found for a query, +the query optimizer will **create a new index for the query**. + +RavenDB queries will use the index they have created or found, to minimize response +time and return results at the same speed regardless of the size of the data. + +You can read more about indexes [here](../indexing-basics). + + +{NOTE: Exceptions: Time-Series and Counters} +Queries in RavenDB will always use an index, with the exception of [distributed time-series]() +and [distributed counters](). +Time-series and counters are **not** automatically indexed. They **can** be indexed manually. +When indexes are not created for them manually, time-series and counters are queried with no index. +{NOTE/} + +{NOTE: Indexing and queries in RavenDB } +Indexing in RavenDB is a **background operation**. +An yet-unindexed query will wait for the indexing process to complete (or timeout). +A query that can be answered using an existing index will proceed normally +using this index. +When the creation of a new index has caught up, RavenDB will remove all the +old indexes that are now superseded by the new index. +{NOTE/} + +{PANEL/} + +--- + +#RQL Keywords and Methods + +{PANEL: `declare`} + +The keyword `declare` gives you the ability to create a JS function that can be reused in `select` (when projection is done). You can read more about it [here](../../client-api/session/querying/how-to-project-query-results#example-iv---projection-with-). + +{PANEL/} + +{PANEL: `from`} + +The keyword `from` is used to determine the source data that will be used when a query is executed. + +You have two options: + +* `from ` + This option is used to perform: + - Collection queries that perform just basic ID filtering. + When this is the case, there is no need to query an index + and the required document is returned directlry from the storage. + E.g. + `from Companies where id() == 'companies/1-A'` + - Dynamic queries that are executed using [auto indexs](../../indexes/creating-and-deploying#auto-indexes). + + {INFO:All Documents} + In order to query all documents, the `@all_docs` keyword can be used: + + - `from @all_docs where FirstName = 'Laura'` + - `from @all_docs where id() = 'companies/1-A'`. + {INFO/} + +* `from INDEX ` + This option is used to perform RQL operations with a specific index. + +{PANEL/} + +{PANEL: `group by`} + +The keyword `group by` is used to create an aggregation query. Please refer to the article about [dynamic group by queries](../../client-api/session/querying/how-to-perform-group-by-query) to find out more. + +{PANEL/} + +{PANEL: `where`} + +You can use the `where` keyword with various operators +to filter chosen documents from the final result-set. + +--- + +### Operator: `>=`, `<=`, `<>`, `!=`, `<`, `>`, `=`, `==` + +These basic operators can be used with all value types, including 'numbers' and 'strings'. + +You can, for example, return every document from the +[companies collection](../../client-api/faq/what-is-a-collection) +whose _field value_ **=** _a given input_. + +{CODE-BLOCK:csharp} +from Companies +where Name = 'The Big Cheese' +{CODE-BLOCK/} + +Filtering on **nested properties** is also supported, so in order to return all companies from 'Albuquerque' we need to execute following query: + +{CODE-BLOCK:csharp} +from Companies +where Address.City = 'Albuquerque' +{CODE-BLOCK/} + +--- + +### Operator: `between` + +The operator `between` returns results inclusively, and the type of border values used must match. It works on both 'numbers' and 'strings' and can be substituted with the `>=` and `<=` operators (see the example below). + +{CODE-BLOCK:csharp} +from Products +where PricePerUnit between 10.5 and 13.0 +{CODE-BLOCK/} + +or + +{CODE-BLOCK:csharp} +from Products +where PricePerUnit >= 10.5 and PricePerUnit <= 13.0 +{CODE-BLOCK/} + +--- + +### Operator: `in` + +The operator `in` is validating if a given field contains passed values. It will return results if a given field matches **any** of the passed values. + +{CODE-BLOCK:csharp} +from Companies +where Name IN ('The Big Cheese', 'Unknown company name') +{CODE-BLOCK/} + +{CODE-BLOCK:csharp} +from Orders +where Lines[].ProductName in ('Chang', 'Spegesild', 'Unknown product name') +{CODE-BLOCK/} + +--- + +### Operator: `all in` + +This operator checks if **all** passes values are matching a given field. Due to its mechanics, it is only useful when used on array fields. + +The following query will yield no results in contrast to an 'in' operator. + +{CODE-BLOCK:csharp} +from Orders +where Lines[].ProductName all in ('Chang', 'Spegesild', 'Unknown product name') +{CODE-BLOCK/} + +but removing the 'Unknown product name' will give you orders that only contains products with both 'Chang' and 'Spegesild' names + +{CODE-BLOCK:csharp} +from Orders +where Lines[].ProductName all in ('Chang', 'Spegesild') +{CODE-BLOCK/} + +--- + +### Binary Operators: `AND`, `OR`, `NOT` + +Binary operators can be used to build more complex statements. The `NOT` operator can only be used with one of the other binary operators creating `OR NOT` or `AND NOT` ones. + +{CODE-BLOCK:csharp} +from Companies +where Name = 'The Big Cheese' OR Name = 'Richter Supermarkt' +{CODE-BLOCK/} + +{CODE-BLOCK:csharp} +from Orders +where Freight > 500 AND ShippedAt > '1998-01-01' +{CODE-BLOCK/} + +{CODE-BLOCK:csharp} +from Orders +where Freight > 500 AND ShippedAt > '1998-01-01' AND NOT Freight = 830.75 +{CODE-BLOCK/} + +--- + +### Subclauses: `(`, `)` + +Subclauses can be used along with binary operators to build even more complex logical statements. They are self-explanatory so no example will be given. + +--- + +{PANEL/} + +{PANEL: `order by`} + +To perform sorting, `order by` must be used. +Read more about this subject in the [article dedicated to sorting](../../indexes/querying/sorting). + +{PANEL/} + +{PANEL: `load`} + +When there is a need to use data from an external document in projection, `load` can be used. Please refer to the following [projection article](../../indexes/querying/projections#example-vii---projection-using-a-loaded-document) to find out more about it. + +{PANEL/} + +{PANEL: `select`} + +Projections can be performed by using `select`. Please read our dedicated projection article [here](../../indexes/querying/projections). + +{PANEL/} + +{PANEL: `update`} + +To patch documents on the server-side, use `update` with the desired JS script that will be applied to any documents matching the query criteria. For more information, please refer to our [patching article](../../client-api/operations/patching/set-based). + +{PANEL/} + +{PANEL: `include`} + +The keyword `include` has been introduced to support: + +- [including additional documents](../../client-api/how-to/handle-document-relationships#includes) or counters to the query response +- [highlighting](../../client-api/session/querying/how-to-use-highlighting) results +- query timings +- explanations + +{PANEL/} + +{PANEL: Keywords and Methods} + +The following keywords and methods are available in RQL: + +- DECLARE +- [FROM](../../indexes/querying/what-is-rql#from) + - INDEX +- [GROUP BY](../../indexes/querying/what-is-rql#group-by) + - [array()](../../client-api/session/querying/how-to-perform-group-by-query#by-array-content) +- [WHERE](../../indexes/querying/what-is-rql#where) + - id() + - [search()](../../indexes/querying/searching) + - cmpxchg() + - boost() + - [regex()](../../client-api/session/querying/how-to-use-regex) + - startsWith() + - endsWith() + - [lucene()](../../client-api/session/querying/document-query/how-to-use-lucene) + - [exists()](../../client-api/session/querying/how-to-filter-by-field) + - exact() + - [intersect()](../../indexes/querying/intersection) + - [spatial.within()](../../indexes/querying/spatial) + - [spatial.contains()](../../indexes/querying/spatial) + - [spatial.disjoint()](../../indexes/querying/spatial) + - [spatial.intersects()](../../indexes/querying/spatial) + - [moreLikeThis()](../../client-api/session/querying/how-to-use-morelikethis) +- [ORDER BY](../../indexes/querying/what-is-rql#order-by) + - [ASC | ASCENDING](../../indexes/querying/sorting#basics) + - [DESC | DESCEDING](../../indexes/querying/sorting#basics) + - [AS](../../indexes/querying/sorting#basics) + - [string](../../indexes/querying/sorting#basics) + - [long](../../indexes/querying/sorting#basics) + - [double](../../indexes/querying/sorting#basics) + - [alphaNumeric](../../indexes/querying/sorting#alphanumeric-ordering) + - [random()](../../indexes/querying/sorting#random-ordering) + - [score()](../../indexes/querying/sorting#ordering-by-score) + - [spatial.distance()](../../client-api/session/querying/how-to-query-a-spatial-index#orderbydistance) +- [LOAD](../../indexes/querying/what-is-rql#load) +- [SELECT](../../indexes/querying/what-is-rql#select) + - DISTINCT + - key() + - sum() + - count() + - [facet()](../../indexes/querying/faceted-search) +- [UPDATE](../../indexes/querying/what-is-rql#update) +- [INCLUDE](../../indexes/querying/what-is-rql#include) + +With the following operators: + +- >= +- <= +- <> or != +- < +- > +- = or == +- BETWEEN +- IN +- ALL IN +- OR +- AND +- NOT +- ( +- ) + +And the following values: + +- true +- false +- null +- string e.g. 'John' or "John" +- number (long and double) e.g. 17 +- parameter e.g. $param1 + +{PANEL/} + +## Related Articles + +### Client API + +- [How to Query](../../client-api/session/querying/how-to-query) +- [How to Use RQL Directly When Querying](../../client-api/session/querying/how-to-query#session.advanced.rawquery) + +### Querying + +- [Basics](../../indexes/querying/basics) diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index 59c791f8a9..c636b25eec 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -606,6 +606,41 @@ public void StoreOperationsTests() Operation getOp = store.Operations.Send(getOperation); #endregion + #region timeseries_region_Raw-Query-Non-Aggregated + // Raw query with no aggregation + IRawDocumentQuery nonAggregatedRawQuery = + session.Advanced.RawQuery(@" + declare timeseries out(user) + { + from user.HeartRate between $start and $end + offset '02:00' + } + from Users as u where Age < 30 + select out(u) + ") + .AddParameter("start", baseline) + .AddParameter("end", baseline.AddMonths(2)); + + var nonAggregatedRawQueryResult = nonAggregatedRawQuery.ToList(); + #endregion + + #region timeseries_region_Raw-Query-Aggregated + // Raw time-series query with aggregation + IRawDocumentQuery aggregatedRawQuery = + session.Advanced.RawQuery(@" + from Users as u where Age < 30 + select timeseries( + from HeartRate between + '2020-05-27T00:00:00.0000000Z' + and '2020-06-23T00:00:00.0000000Z' + group by '7 days' + select min(), max()) + "); + + var aggregatedRawQueryResult = aggregatedRawQuery.ToList(); + #endregion + + } } From 01ccaa4d1b988cde5dcaa465f90c487a40cc8202 Mon Sep 17 00:00:00 2001 From: reebhub Date: Thu, 4 Jun 2020 07:28:56 +0300 Subject: [PATCH 25/56] RDoc-1703_TimeSeries Queries: initial overview & dynamic-queries pages --- .../dynamic-time-series-queries/.docs.json | 8 +- .../client-linq-queries.markdown | 163 ++++++++++++ .../client-linq-query.markdown | 244 ------------------ .../client-raw-query.markdown | 90 ------- .../client-raw-rql-queries.markdown | 102 ++++++++ .../dynamic-queries.markdown | 99 ++++--- .../querying/queries-overview.markdown | 4 +- .../TimeSeries/TimeSeriesTests.cs | 171 ++++++++++-- 8 files changed, 484 insertions(+), 397 deletions(-) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-query.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/.docs.json index 30cc429da9..5833459351 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/.docs.json @@ -6,14 +6,14 @@ "Mappings": [] }, { - "Path": "client-raw-query.markdown", - "Name": "Client Raw Query", + "Path": "client-raw-rql-queries.markdown", + "Name": "Client Raw RQL Queries", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "client-linq-query.markdown", - "Name": "Client LINQ Query", + "Path": "client-linq-queries.markdown", + "Name": "Client LINQ Queries", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries.markdown new file mode 100644 index 0000000000..4b433b9602 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries.markdown @@ -0,0 +1,163 @@ +# Time-Series LINQ Queries +--- + +{NOTE: } + +* A client can call `session.Query`to find documents whose time-series + it wishes to query. + The document query can then be extended using LINQ expressions, to + specify which time-series data of the located documents is to be retrieved. +* As always, RavenDB will translate the queries to RQL before transmitting + them to the server for execution. + +* In this page: + * [Time-Series LINQ Queries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#time-series-linq-queries) + * [Syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#syntax) + * [Usage Flow](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#usage-flow) + * [Selecting Time-Series and Range](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#selecting-time-series-and-range) + * [Filtering - `Where`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#filtering---where) + * [Using Tags as References - `LoadTag`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#using-tags-as-references---) + * [Aggregation and Projection - `GroupBy` and `Select`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#aggregation-and-projection---groupby-and-select) + +{NOTE/} + +--- + +{PANEL: Time-Series LINQ Queries} + +To build a time-series LINQ query, run a document query using `session.Query` +and extend it using LINQ expressions. +Here is a simple LINQ query that chooses users by their age and retrieves their +HeartRate time-series, and the RQL equivalent for this query. + +{CODE-TABS} +{CODE-TAB:csharp:LINQ ts_region_LINQ-1-Select-Timeseries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +{CODE-TAB:csharp:RQL ts_region_LINQ-2-RQL-Equivalent@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +{CODE-TABS/} + +{PANEL/} + +{PANEL: Syntax} + +`session.Query` Definition: +{CODE Query-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Learn more about `session.Query` [here](../../../../client-api/session/querying/how-to-query#session.query). + +**Return Value**: + +* **`IRavenQueryable`** for aggregated data. + When the query + [aggregates time-series entries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#aggregation---group-by), + the results are returned in an aggregated array. +* **`IRavenQueryable`** for non-aggregated data. + When the query **doesn't aggregate** time-series entries, + the results are returned in a list of time-series results. + +{PANEL/} + +{PANEL: Usage Flow} + +* Open a session +* Call `session.Query`. + - Run a document query to locate documents whose time-series you want to query. + - Extend the query using LINQ expressions to find and project time-series data. + Start with `Select` to choose a time-series. +* Retrieve the results using - + `TimeSeriesAggregationResult` for aggregated data + -or- + `TimeSeriesRawResult` for non-aggregated data +{PANEL/} + +{PANEL: Selecting Time-Series and Range} + +Right after the document query, we select the time-series and, optionally, the +[range of time-series entries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#choose-query-range---between-x-and-y) +we want to retrieve, using the `RavenQuery.TimeSeries` method. + +* **`RavenQuery.TimeSeries` Definition**: + {CODE RavenQuery-TimeSeries-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + * **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `documentInstance` | `object` | Document Instance | + | `name` | `string` | Time-Series Name | + | `from` | `DateTime` | Range Start Timestamp (optional) | + | `to` | `DateTime` | Range End Timestamp (optional) | + +* In this sample, we select a three-days range from the HeartRate time-series. + {CODE ts_region_LINQ-3-Range-Selection@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +{PANEL: Filtering - `Where`} + +The `Where` expression can be used in different parts of the query, and filter different entities. + +When we use `Where` right after the document selection, it filters the **documents** whose +time-series we query. +When we use `Where` after the time-series selection, it [filters time-series entries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#filtering---where). + +* The first occurance of `Where` in the following example, filters documents. + The second occurance of `Where` filters entries. + {CODE ts_region_LINQ-4-Where@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{INFO: } +Time-series entries can be filtered by their **Tags**, **Values**, and **Timestamps**. +{CODE-BLOCK: JSON} +public DateTime Timestamp { get; set; } +public double[] Values { get; set; } +public string Tag { get; set; } +public bool IsRollup { get; set; } +{CODE-BLOCK/} + +{INFO/} + +--- + +#### Using Tags as References - `LoadTag` + +A time-series entry's **tag** may [contain a document's ID](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#using-tags-as-references---). +We can use the `LoadTag` LINQ expression to load the document that a tag refers to. +We can then filter our result-set by the contents of this document, using `Where`. + +* Consider this example. + {CODE ts_region_LINQ-5-LoadTag@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * We go through companies StockPrice time-series and load documents that + time-series entries refer us to. + The documents are Employee profiles. + * We then check the employee documents, and filter the results by their addresses. + * This can be helpful, for example, when the employees are stockbrokers and we look + for local brokers for our stocks. + +{PANEL/} + +{PANEL: Aggregation and Projection - `GroupBy` and `Select`} + +The `GroupBy` expression allows us to [aggregate result-sets](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#aggregation---group-by) +by a resolution we choose. +Once the result-set is aggregated, we can select from each group by various criteria +and project the selection to the client. + +* In the following sample, we group heart-rate data of people above the age of 72 + into 1-day groups, and retrieve each group's average heartrate and number of measurements. + The aggregated results are retrieved into an `IRavenQueryable` array. + {CODE ts_region_LINQ-6-Aggregation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-query.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-query.markdown deleted file mode 100644 index f676102a12..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-query.markdown +++ /dev/null @@ -1,244 +0,0 @@ -# Dynamic Time-Series Queries ---- - -{NOTE: } - -* Time-series queries can be phrased by a client using raw RQL or LINQ functions - (which are translated to RQL as well). -* Queries can be performed over whole time-series, and over chosen ranges of - time-series entries. -* Queries can filter the results using `Where`, group them using `GroupBy`, - and project selected results using `Select`. - -* In this page: - * [Dynamic Queries](../../../document-extensions/timeseries/querying/dynamic-queries#dynamic-queries) - * [Query Syntax: Server-Side](../../../document-extensions/timeseries/querying/dynamic-queries#query-syntax:-server-side) - * [Query Syntax: Client-Side](../../../document-extensions/timeseries/querying/dynamic-queries#query-syntax:-client-side) - * [Filtering](../../../document-extensions/timeseries/querying/dynamic-queries#filtering) - * [Aggregated Queries](../../../document-extensions/timeseries/querying/dynamic-queries#aggregated-queries) - -{NOTE/} - ---- - -{PANEL: Dynamic Queries} - -Use dynamic queries when the time-series you query are unindexed -or when you prefer that RavenDB's [query optimizer](../../../indexes/querying/what-is-rql#query-optimizer) -would locate their indexes itself. - -{INFO: } -Note that time-series are **not** automatically indexed. -To index a time-series, define a [static index](../../../document-extensions/timeseries/indexing/map-indexing) -for it manually. -When a time-series **is** indexed, you can query it using a dynamic query -or define an [indexed query](../../../document-extensions/timeseries/querying/indexed-queries) -for it. -{INFO/} - -{PANEL/} - -{PANEL: Query Syntax: Server-Side} - -Time-series RQL queries have this basic format: - -{CODE-BLOCK: JSON} -from Users as u where Age < 30 -select timeseries( - from HeartRate) -{CODE-BLOCK/} - -* **from Users as u where Age < 30** - This is simply a document query that locates the documents whose time-series - you want to query. - - {INFO: } - It is common to specify an even more concrete document query, to focus the - search on a particular document. - If you want to query a time-series that is updated with stock prices, - for example, it would make sense to first find a specific company - (a single "Company" document) whose stock prices interest you, and - then query this company's StockPrices time-series. - {INFO/} - -* **select timeseries** - Define the time-series part of the query within this block. - -* **from HeartRate** - The name of the time-series to be queried. - In this case: all time-series named "HeartRate" (for users under the age of 30). - ---- - -#### Entries Range - -{CODE-BLOCK: JSON} -from Users as u where Age < 30 -select timeseries( - from HeartRate - between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z') -{CODE-BLOCK/} - - -* **between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z'** - Use `between` to indicate which range of time-series entries is to be queried upon. - If the query ends here, all entries between the given timestamps will be retrieved. - If the query continues, later parts will relate only to this range. - ---- - -#### Filtering - -{CODE-BLOCK: JSON} -from Users as u where Age < 30 -select timeseries( - from HeartRate - between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z' - where Tag='watches/fitbit') -{CODE-BLOCK/} - -* **where Tag='watches/fitbit'** - Use `where` to filter time-series entries by their tags or values. - In this case: only entries tagged 'watches/fitbit' are retrieved. - * To filter by value: **where Value < 80** - ---- - -#### Aggregation - -{CODE-BLOCK: JSON} -from Users as u where Age < 30 -select timeseries( - from HeartRate - between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z' - where Tag='watches/fitbit' - group by 7days) -{CODE-BLOCK/} - -* **group by 7days** - Use `group by` to aggregate retrieved entries in groups by a chosen resolution. - In this case: the result-set will be composed of groups of Heartrate entries, - each group containing 7 days of Heartrate entries (first group: 2020-05-27 to - 2020-06-02, second group: 2020-06-03 to 2020-06-09, and so on). - ---- - -#### Projection - -{CODE-BLOCK: JSON} -from Users as u where Age < 30 -select timeseries( - from HeartRate - between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z' - where Value < 80 - group by 7days - select min(), max()) -{CODE-BLOCK/} - -* **select min(), max()** - Use `select` to choose results that would be projected to the client. - You can select results by: - * Min() - Series smallest value - * Max() - Series largest value - * Sum() - Series entries sum - * Average() - Series Values average - * First() - Value of the first series' entry - * Last - Value of the last series' entry - * Count - Number of time-series entries - - If you haven't [aggregated]() the result-set, selecting min() for example - will yield a single minimum value for the entire result-set. - - If you **have** aggregated the result-set, selecting min() for example will - compose an array of minimum values, one per group. - -{PANEL/} - -{PANEL: Declare: Creating a Time-Series Function} - -You can create a time-series function using `declare`, -and use this function from your query. -Here is, for example, the same query with and without -a time-series function. - -| With Time-Series Function | Without Time-Series Function | -|:---:|:---:| -| {CODE-BLOCK: JSON} -declare timeseries ts(jogger){ - from jogger.HeartRate - between - '2020-05-27T00:00:00.0000000Z' - and - '2020-06-23T00:00:00.0000000Z' - where Value < 80 - group by 7days - select min(), max() -} - -from Users as jog where Age < 30 -select ts(jog) -{CODE-BLOCK/}| {CODE-BLOCK: JSON} - from Users as jog where Age < 30 - select timeseries( - from HeartRate - between - '2020-05-27T00:00:00.0000000Z' - and - '2020-06-23T00:00:00.0000000Z' - where Value < 80 - group by 7days - select min(), max()) - {CODE-BLOCK/}| - -{PANEL/} - -{PANEL: Query Syntax: Client-Side} - -You can submit a time-series query from your client using either a raw RQL query, -or LINQ expressions. - ---- - -#### Raw RQL - -Raw RQL queries are similar - ---- - -#### Offset - ---- - -#### Time-Series LINQ Queries - -{PANEL/} - -{PANEL: Filtering} - ---- - -#### Filter By TS-Entry Properties - ---- - -#### `LoadTag` - -{PANEL/} - -{PANEL: Aggregated Queries} - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query.markdown deleted file mode 100644 index b1a6dadd8d..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query.markdown +++ /dev/null @@ -1,90 +0,0 @@ -## Client Raw RQL Time-Series Query ---- - -{NOTE: } - -* You can run a time-series query using raw RQL via `session.Advanced.RawQuery`. - -* [Run a Time-Series Raw RQL Query](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query#run-a-time-series-raw-rql-query) - * [Syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query#syntax) - * [Usage Flow](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-query#usage-samples) - -{NOTE/} - ---- - -{PANEL: Run a Time-Series Raw RQL Query} - -* You can run both aggregating and non-aggregating queries - using `Advanced.RawQuery`. - * Aggregating queries will return an aggregated array. - * Non-aggregating queries will return a list of raw results. -* You can define an **offset** to ensure that timestamps are - created using a time zone of your choice rather than the - server's local time. - **Note that an offset can be defined only in a `declare` function.** - -{PANEL/} - -{PANEL: Syntax} - -* **`Advanced.RawQuery`** - * **Definition** - {CODE RawQuery-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - - * **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `query` | string | Raw RQL Query | - - * **Return Value**: - * **`IRawDocumentQuery`** - for aggregated data. - * **`IRawDocumentQuery`** - for non-aggregated data. - -{PANEL/} - -{PANEL: Usage Flow} - -* Open a session -* Call `session.Advanced.RawQuery` - Pass it your query -* Get the results using `TimeSeriesAggregationResult` for aggregated data - -or- - `TimeSeriesRawResult` for non-aggregated data -{PANEL/} - -{PANEL: Usage Samples} - -* In this sample, we run a query that does not aggregate data, and get - its result using a `TimeSeriesRawResult` list. - The query uses the **time-series function** `declare` syntax. - The query also defines an **offset**, to ensure that timestamps - reflect the client's time zone. - - {CODE timeseries_region_Raw-Query-Non-Aggregated@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - - -* In this sample, we run a query that aggregates data and get - its result using a `TimeSeriesAggregationResult` array. - {CODE timeseries_region_Raw-Query-Aggregated@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries.markdown new file mode 100644 index 0000000000..ee1d3ffa24 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries.markdown @@ -0,0 +1,102 @@ +# Time-Series Raw RQL Queries +--- + +{NOTE: } + +* Clients can [express time-series queries in RQL](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries) + and send them to the server for execution using the `session.Advanced.RawQuery` method. + + +* [Client Raw RQL Queries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries#client-raw-rql-queries) + * [Syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries#syntax) + * [Usage Flow](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries#usage-samples) + +{NOTE/} + +--- + +{PANEL: Client Raw RQL Queries} + +To send a raw RQL query to the server, use `session.Advanced.RawQuery`. +`RawQuery`transmits queries to the server without checking or altering +their contents, time-series contents or otherwise + +* **Offset** + The server and client time-zones may be different. + Client queries can take this into consideration by defining an + **offset** that adjusts the UTC timestamp values they send the + server to the server's time-zone. + +{PANEL/} + +{PANEL: Syntax} + +* **`session.Advanced.RawQuery`** + * **Definition** + {CODE RawQuery-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + * **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `query` | string | Raw RQL Query | + + * **Return Value**: + * **`IRawDocumentQuery`** for aggregated data. + When the query + [aggregates time-series entries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#aggregation---group-by), + the results are returned in an aggregated array. + * **`IRawDocumentQuery`** for non-aggregated data. + When the query **doesn't aggregate** time-series entries, + the results are returned in a list of time-series results. + +{PANEL/} + +{PANEL: Usage Flow} + +* Open a session +* Call `session.Advanced.RawQuery` + Pass it your query +* Retrieve the results into + `TimeSeriesAggregationResult` for aggregated data + -or- + `TimeSeriesRawResult` for non-aggregated data +{PANEL/} + +{PANEL: Usage Samples} + +* In this sample, a raw RQL query retrieves 24 hours of HeartRate data from users under the age of 30. + The query does not aggregate data, so we retrieve its results using a `TimeSeriesRawResult` list. + We define an **offset**, to adjust retrieved results to the client's local time-zone. + The query uses the **time-series function** `declare` syntax. + + {CODE-TABS} + {CODE-TAB:csharp:Declare-Syntax ts_region_Raw-Query-Non-Aggregated-Declare-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TAB:csharp:Select-Syntax ts_region_Raw-Query-Non-Aggregated-Select-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TABS/} + +--- + +* In this sample, the query aggregates 7 days of HeartRate entries into 1-day groups. + From each group, two values are selected and projected to the client: the **min** + and **max** hourly HeartRate values. + The aggregated results are retrieved using a `TimeSeriesAggregationResult` array. + {CODE ts_region_Raw-Query-Aggregated@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown index 8a29ddec9b..f72aba64ae 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown @@ -12,12 +12,14 @@ * In this page: * [Dynamic Queries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#dynamic-queries) - * [Basic Syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#basic-syntax) - * [Alternative Syntax: Declare a Time-Series Function](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#alternative-syntax-declare-a-time-series-function) - * [Query Range](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#query-range) - * [Filtering](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#filtering) - * [Aggregation](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#aggregation) - * [Projection](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#projection) + * [Syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#syntax) + * [`select timeseries` Syntax: Creating a Time-Series Section](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#syntax-creating-a-time-series-section) + * [`declare timeseries` Syntax: Declaring a Time-Series Function](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#syntax-declaring-a-time-series-function) + * [Choose Query Range - `between` x `and` y](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#choose-query-range---between-x-and-y) + * [Filtering - `where`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#filtering---where) + * [Using Tags as References - `load tag`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#using-tags-as-references---) + * [Aggregation - `group by`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#aggregation---group-by) + * [Projection - `select`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#projection---select) {NOTE/} @@ -31,18 +33,29 @@ using its [query optimizer](../../../../indexes/querying/what-is-rql#query-optim {PANEL/} -{PANEL: Basic Syntax} +{PANEL: Syntax} - This is the basic RQL syntax of a dynamic time-series query. +You can query time-series using two different syntaxes. +Choose the syntax you're more comfortable with. - {CODE-BLOCK: JSON} - //Look for time-series named "HeartRate" in user profiles of users under 30. +* [`select timeseries` syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#syntax-creating-a-time-series-section) +* [`declare timeseries` syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#syntax-declaring-a-time-series-function) - from Users as u where Age < 30 - select timeseries( - from HeartRate - ) - {CODE-BLOCK/} +--- + +#### `select timeseries` Syntax: Creating a Time-Series Section + +This syntax allows you to encapsulate your query's time-series functionality +in a `select timeseries` section. + +{CODE-BLOCK: JSON} +//Look for time-series named "HeartRate" in user profiles of users under 30. + +from Users as u where Age < 30 +select timeseries( + from HeartRate +) +{CODE-BLOCK/} * `from Users as u where Age < 30` This **document query** locates the documents whose time-series we want to query. @@ -68,15 +81,15 @@ using its [query optimizer](../../../../indexes/querying/what-is-rql#query-optim --- -#### Alternative Syntax: Declare a Time-Series Function - -You can use an alternative syntax, that introduces greater flexibility to your queries -(allowing you, for example, to pass arguments to your query). +#### `declare timeseries` Syntax: Declaring a Time-Series Function -To use this syntax, **declare a timeseries function** and call the function from your query. +This syntax allows you to declare a time-series function and call it +from your query. It introduces greater flexibility to your queries as +you can, for example, pass arguments to/by the time-series function. -Here is a query in both syntaxes. -We pick users whose age is under 30, and retrieve a range of a time-series called "HeartRate". +Here is a query in both syntaxes. It picks users whose age is under 30, +and if they own a time-series named "HeartRate" retrieves a range of entries +from this series. | With Time-Series Function | Without Time-Series Function | @@ -104,9 +117,9 @@ select ts(jog) {PANEL/} -{PANEL: Query Range } +{PANEL: Choose Query Range - `between` x `and` y} -Use `between` to specify a range of time-series entries to query. +Use `between` and `and` to specify a range of time-series entries to query. The range start and end entries are chosen by their timestamps, in UTC format. @@ -126,7 +139,7 @@ select timeseries( {PANEL/} -{PANEL: Filtering} +{PANEL: Filtering - `where`} Use `where` to filter time-series entries by their **tags** or **values**. @@ -147,12 +160,12 @@ select timeseries( --- -#### `load Tag ` +#### Using Tags as References - `load tag` -Use the `load Tag ` expression to load a document whose ID is stored in -a time-series entry. -Use `load Tag ` with `where` to filter your results by the contents of the -loaded document, as we do in the following example. +Use the `load Tag ` expression to **load a document** whose ID is stored in +a time-series entry's tag. +Use `load Tag ` with `where` to **filter your results by properties of the +loaded document**, as we do in the following example. {CODE-BLOCK: JSON} from Companies as c where c.Address.Country = "USA" @@ -170,10 +183,11 @@ select timeseries( * `load Tag as emp` We know in advance, that the tag of each time-series entry contains the ID of an Employee document. - Here, we use the `load tag` expression to load not the ID but - the actual employee document. + Here, we use the `load tag` expression to load the employee profile + referred to by each tag. * `where emp.Title == "Vice President, Sales"` - And finally, we filter the results by the contents of the Employee document. + And finally, we filter time-series entries by the **Title** property + of employee documents they refer to. The result-set of this sample includes time-series entries with references (IDs stored in their tags) to a Sales Vice-President's profile. @@ -181,7 +195,7 @@ references (IDs stored in their tags) to a Sales Vice-President's profile. {PANEL/} -{PANEL: Aggregation} +{PANEL: Aggregation - `group by`} Use `group by` to group the result-set in groups of a chosen resolution. @@ -216,7 +230,7 @@ select timeseries( {PANEL/} -{PANEL: Projection} +{PANEL: Projection - `select`} Use `select` to choose the values that would be projected to the client. @@ -238,8 +252,10 @@ select timeseries( find the highest first-value, check all the second values of time-series entries and find the highest second-value, and so on. * The projected result will be an array of values. - Its length will be as the length of the series-entry with highest number - of values. + The array's length will be as the length of the series-entry with highest + number of values. + Its first value will be the highest first value, its second value + the highest second value, and so on. {INFO: You can select values by these criteria:} @@ -255,11 +271,10 @@ select timeseries( {INFO: Selecting values from aggregated and non-aggregated result-sets} -* When values are selected from a result-set that **hasn't** been aggregated - (grouped): - Values are selected from the entire result-set. -* When values are selected from a result-set that **has** been aggregated: - Values are selected per-group. +* When values are selected from a result-set that **hasn't** been aggregated (grouped), + they are selected from the entire result-set. +* When values are selected from a result-set that **has** been aggregated, + they are selected per-group. {INFO/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview.markdown index 6f6f383c79..c07b8659a9 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview.markdown @@ -12,7 +12,7 @@ * In this page: * [Server and Client Queries](../../../document-extensions/timeseries/querying/queries-overview#server-and-client-queries) - * [Server and Client Queries](../../../document-extensions/timeseries/querying/queries-overview#dynamic-queries-and-indexed-queries) + * [Dynamic and Indexed Queries](../../../document-extensions/timeseries/querying/queries-overview#dynamic-and-indexed-queries) * [Query Range Selection](../../../document-extensions/timeseries/querying/queries-overview#query-range-selection) * [Filtering](../../../document-extensions/timeseries/querying/queries-overview#filtering) * [Aggregation and Projection](../../../document-extensions/timeseries/querying/queries-overview#aggregation-and-projection) @@ -39,7 +39,7 @@ also be translated to RQL before their execution by the server). --- -#### Dynamic Queries and Indexed Queries +#### Dynamic and Indexed Queries * As long as a time-series is unindexed, you can query it using [dynamic queries](../../../document-extensions/timeseries/querying/dynamic-queries). diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index c636b25eec..4543f10721 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -606,40 +606,174 @@ public void StoreOperationsTests() Operation getOp = store.Operations.Send(getOperation); #endregion - #region timeseries_region_Raw-Query-Non-Aggregated - // Raw query with no aggregation + #region ts_region_Raw-Query-Non-Aggregated-Declare-Syntax + // May 17 2020, 00:00:00 + var baseline = new DateTime(2020, 5, 17, 00, 00, 00); + + // Raw query with no aggregation - Declare syntax IRawDocumentQuery nonAggregatedRawQuery = session.Advanced.RawQuery(@" - declare timeseries out(user) + declare timeseries getHeartRate(user) { - from user.HeartRate between $start and $end - offset '02:00' + from user.HeartRate + between $start and $end + offset '02:00' } from Users as u where Age < 30 - select out(u) + select getHeartRate(u) ") .AddParameter("start", baseline) - .AddParameter("end", baseline.AddMonths(2)); + .AddParameter("end", baseline.AddHours(24)); var nonAggregatedRawQueryResult = nonAggregatedRawQuery.ToList(); #endregion - #region timeseries_region_Raw-Query-Aggregated - // Raw time-series query with aggregation + #region ts_region_Raw-Query-Non-Aggregated-Select-Syntax + // May 17 2020, 00:00:00 + var baseline = new DateTime(2020, 5, 17, 00, 00, 00); + + // Raw query with no aggregation - Select syntax + IRawDocumentQuery nonAggregatedRawQuery = + session.Advanced.RawQuery(@" + from Users as u where Age < 30 + select timeseries ( + from HeartRate + between $start and $end + offset '02:00' + )") + .AddParameter("start", baseline) + .AddParameter("end", baseline.AddHours(24)); + + var nonAggregatedRawQueryResult = nonAggregatedRawQuery.ToList(); + #endregion + + #region ts_region_Raw-Query-Aggregated + // May 17 2020, 00:00:00 + var baseline = new DateTime(2020, 5, 17, 00, 00, 00); + + // Raw Query with aggregation IRawDocumentQuery aggregatedRawQuery = session.Advanced.RawQuery(@" - from Users as u where Age < 30 + from Users as u select timeseries( - from HeartRate between - '2020-05-27T00:00:00.0000000Z' - and '2020-06-23T00:00:00.0000000Z' - group by '7 days' + from HeartRate + between $start and $end + group by '1 days' select min(), max()) - "); + ") + .AddParameter("start", baseline) + .AddParameter("end", baseline.AddDays(7)); var aggregatedRawQueryResult = aggregatedRawQuery.ToList(); #endregion + #region ts_region_LINQ-1-Select-Timeseries + using (var session = store.OpenSession()) + { + IRavenQueryable query = (IRavenQueryable)session + .Query() + .Where(u => u.Age < 30) + .Select(q => RavenQuery.TimeSeries(q, "HeartRate") + .ToList()); + + var result = query.ToList(); + } + #endregion + + #region ts_region_LINQ-2-RQL-Equivalent + using (var session = store.OpenSession()) + { + IRawDocumentQuery nonAggregatedRawQuery = + session.Advanced.RawQuery(@" + from Users as u where Age < 30 + select timeseries ( + from HeartRate + )"); + + var nonAggregatedRawQueryResult = nonAggregatedRawQuery.ToList(); + } + #endregion + + // Query - LINQ format with Range selection + using (var session = store.OpenSession()) + { + var baseline = new DateTime(2020, 5, 17, 00, 00, 00); + + #region ts_region_LINQ-3-Range-Selection + IRavenQueryable query = + (IRavenQueryable)session.Query() + .Where(u => u.Age < 30) + .Select(q => RavenQuery.TimeSeries(q, "HeartRate", baseline, baseline.AddDays(3)) + .ToList()); + #endregion + + var result = query.ToList(); + } + + using (var session = store.OpenSession()) + { + var baseline = new DateTime(2020, 5, 17, 00, 00, 00); + + #region ts_region_LINQ-4-Where + IRavenQueryable query = + (IRavenQueryable)session.Query() + + // Choose user profiles of users under the age of 30 + .Where(u => u.Age < 30) + + .Select(q => RavenQuery.TimeSeries(q, "HeartRate", baseline, baseline.AddDays(3)) + + // Filter Time-Series entries: choose only those with a "watches/fitbit" tag. + .Where(ts => ts.== "watches/fitbit") + #endregion + + .ToList()); + + var result = query.ToList(); + } + + using (var session = store.OpenSession()) + { + #region ts_region_LINQ-5-LoadTag + IRavenQueryable query = + (IRavenQueryable)session.Query() + + .Where(c => c.Address.Country == "USA") + + .Select(q => RavenQuery.TimeSeries(q, "StockPrice") + + // Choose local brokers + .LoadTag() + .Where((ts, src) => src.Address.Country == "USA") + + .ToList()); + + var result = query.ToList(); + #endregion + + } + + // Query - LINQ format - Aggregation + using (var session = store.OpenSession()) + { + var baseline = DateTime.Today; + + #region ts_region_LINQ-6-Aggregation + IRavenQueryable query = session.Query() + .Where(u => u.Age > 72) + .Select(q => RavenQuery.TimeSeries(q, "Heartrate", baseline, baseline.AddDays(10)) + .Where(ts => ts.Tag == "watches/fitbit") + .GroupBy(g => g.Days(1)) + .Select(g => new + { + Avg = g.Average(), + Cnt = g.Count() + }) + .ToList()); + #endregion + + var result = query.ToList(); + } } } @@ -700,6 +834,10 @@ IRavenQueryable Include(this IQueryable source, Actio IRawDocumentQuery RawQuery(string query); #endregion + #region Query-definition + IRavenQueryable Query(string indexName = null, string collectionName = null, bool isMapReduce = false); + #endregion + #region PatchCommandData-definition public PatchCommandData(string id, string changeVector, PatchRequest patch, PatchRequest patchIfMissing) #endregion @@ -797,6 +935,9 @@ public PatchByQueryOperation(IndexQuery queryToUpdate, QueryOperationOptions opt public Operation Send(IOperation operation, SessionInfo sessionInfo = null) #endregion + #region RavenQuery-TimeSeries-Definition + public static ITimeSeriesQueryable TimeSeries(object documentInstance, string name, DateTime from, DateTime to) + #endregion } From 26e74102f19d2cdbad33f735cc0e117741ff9511 Mon Sep 17 00:00:00 2001 From: morhilai Date: Mon, 8 Jun 2020 17:47:41 +0300 Subject: [PATCH 26/56] RDoc-1703_TimeSeries indexes WIP --- .../TimeSeries/Indexing/indexing.cs | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs index df4bb5fbfe..fc8f499f0d 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs @@ -1,10 +1,78 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Text; +using Raven.Client.Documents.Indexes.TimeSeries; namespace Raven.Documentation.Samples.DocumentExtensions.TimeSeries.Indexing { class indexing { + //method syntax simple map + + + //strong/query syntax map + private class MyTsIndex : AbstractTimeSeriesIndexCreationTask + { + public MyTsIndex() + { + AddMap( + "HeartRate", + timeSeries => from ts in timeSeries + from entry in ts.Entries + select new + { + HeartBeat = entry.Values[0], + entry.Timestamp.Date, + }); + } + } + + //strong/query syntax multi map + private class MyMultiMapTsIndex : AbstractMultiMapTimeSeriesIndexCreationTask + { + public MyMultiMapTsIndex() + { + AddMap( + "HeartRate", + timeSeries => from ts in timeSeries + from entry in ts.Entries + select entry.Values[0]); + + AddMap( + "HeartRate", + timeSeries => from ts in timeSeries + from entry in ts.Entries + select entry.Values[0]); + } + } + + //strong/query syntax mapreduce + private class AverageHeartRateDaily_ByDateAndUser : AbstractTimeSeriesIndexCreationTask + { + + public AverageHeartRateDaily_ByDateAndUser() + { + AddMap( + "HeartRate", + timeSeries => from ts in timeSeries + from entry in ts.Entries + select new + { + HeartBeat = entry.Value, + Count = 1 + }); + + Reduce = results => from r in results + group r by new { r.Date, r.User } into g + let sumHeartBeat = g.Sum(x => x.HeartBeat) + let sumCount = g.Sum(x => x.Count) + select new + { + HeartBeat = sumHeartBeat / sumCount, + Count = sumCount + }; + } + } } } From a8cb2157050b8695245241c3bf733800a9477a33 Mon Sep 17 00:00:00 2001 From: reebhub Date: Tue, 9 Jun 2020 00:33:07 +0300 Subject: [PATCH 27/56] RDoc-1703_TimeSeries Indexed time-series queries --- .../dynamic-queries.markdown | 16 ++++ .../indexed-queries.markdown | 76 +++++++++++++---- .../TimeSeries/TimeSeriesTests.cs | 83 +++++++++++++++++++ 3 files changed, 161 insertions(+), 14 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown index f72aba64ae..3c53c9e2de 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown @@ -136,6 +136,22 @@ select timeseries( * `between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z'` If the query ends here, all entries between the given timestamps will be retrieved. If the query continues, any additional filtering will relate only to this range. + + {INFO: } + You can use the Studio to try these queries. + Using the studio, you can use parameters for a clearer query. + E.g. - + {CODE-BLOCK: JSON} + $from = '2020-05-27T00:00:00.0000000Z' +$to = '2020-06-23T00:00:00.0000000Z' + +from Users as jog where Age < 30 +select timeseries( + from HeartRate + between $from and $to +) + {CODE-BLOCK/} + {INFO/} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown index 728f504e0d..13177a560d 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown @@ -3,18 +3,18 @@ {NOTE: } -* You can run queries over indexes you have created for your time-series. - - {INFO: } - Note that time-series are **not** automatically indexed. - To index a time-series, define a [static index](../../../document-extensions/timeseries/indexing/map-indexing) - for it manually. - {INFO/} - +* Time-series indexes are not generated automatically by the server, but static + indexes can be created by clients or using the Studio. As any other index, static + time-series indexes can be queried. + +* Querying a time-series index projects the contents of fields specified + in the index' `select` clause. The result-set can then be further filtered + using LINQ expressions. + * In this page: - * [Indexed Queries](../../../document-extensions/timeseries/querying/indexed-queries#indexed-queries) - * [Syntax](../../../document-extensions/timeseries/querying/indexed-queries#syntax) - * [Querying](../../../document-extensions/timeseries/querying/indexed-queries#querying) + * [Indexed Queries](../../../../document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries#indexed-queries) + * [Syntax](../../../../document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries#syntax) + * [Usage Samples](../../../../document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries#usage-samples) {NOTE/} @@ -22,17 +22,65 @@ {PANEL: Indexed Queries} +You can query time-series indexes using `session.Query` and +`session.Advanced.DocumentQuery`, and enhance the queries +using LINQ expressions. + {PANEL/} {PANEL: Syntax} +* Definitions + + * `session.Query` Definition + {CODE-BLOCK: JSON} + IRavenQueryable Query() where TIndexCreator : AbstractCommonApiForIndexes, new(); + {CODE-BLOCK/} + * `DocumentQuery` definition + {CODE-BLOCK: JSON} + IDocumentQuery DocumentQuery() where TIndexCreator : AbstractCommonApiForIndexes, new(); + {CODE-BLOCK/} + +* **Parameters** + + | Parameters | Description | + |:-------------|:-------------| + | `T` | Results Container | + | `TIndexCreator` | Index | + +* **Return Values** + + As return values are specific to each index, we need to define + a unique container for results retrieved from each index. + + In the following sample we define a **map index** that collects three fields from the "HeartRate" + time-series, a "Results" container for the results, and an **index query** that uses both. + {CODE ts_region_Index-TS-Queries-6-Index-Definition-And-Results-Class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE ts_region_Index-TS-Queries-1-session-Query@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {PANEL/} -{PANEL: Querying} +{PANEL: Usage Samples} ---- +* **Indexed Queries** + To query a time-series index, call `session.Query` or `session.Advanced.DocumentQuery`. + {CODE-TABS} + {CODE-TAB:csharp:session.Query ts_region_Index-TS-Queries-1-session-Query@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TAB:csharp:DocumentQuery ts_region_Index-TS-Queries-3-DocumentQuery@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TABS/} + + +* **Enhancing index queries** + + * When you call `session.Query`, You can add LINQ expressions to your query. + {CODE ts_region_Index-TS-Queries-2-session-Query-with-Linq@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + * You can add LINQ-like expressions to a DocumentQuery as well. + {CODE ts_region_Index-TS-Queries-4-DocumentQuery-with-Linq@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -#### Filtering +* **Async queries** +You can run asynchronous queries if you don't want your application to wait for the results. +{CODE ts_region_Index-TS-Queries-5-session-Query-Async@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index 4543f10721..e21fe21928 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -18,6 +18,9 @@ using Raven.Client.Documents.Linq; using Raven.Client.Documents.BulkInsert; using static Raven.Client.Documents.BulkInsert.BulkInsertOperation; +using Raven.Client.Documents.Indexes.TimeSeries; +using Raven.Client.Documents.Queries.TimeSeries; +using Raven.Client.Documents.Queries; namespace SlowTests.Client.TimeSeries.Session { @@ -775,8 +778,88 @@ from HeartRate var result = query.ToList(); } + // index queries + #region ts_region_Index-TS-Queries-1-session-Query + // Query time-series index using session.Query + using (var session = store.OpenSession()) + { + var results = session.Query() + .ToList(); + } + #endregion + + #region ts_region_Index-TS-Queries-2-session-Query-with-Linq + // Enhance the query using LINQ expressions + var chosenDate = new DateTime(2020, 5, 20); + using (var session = store.OpenSession()) + { + var results = session.Query() + .Where(w => w.Date < chosenDate) + .OrderBy(o => o.HeartBeat) + .ToList(); + } + #endregion + + #region ts_region_Index-TS-Queries-3-DocumentQuery + // Query time-series index using DocumentQuery + using (var session = store.OpenSession()) + { + var results = session.Advanced.DocumentQuery() + .ToList(); + } + #endregion + + #region ts_region_Index-TS-Queries-4-DocumentQuery-with-Linq + // Query time-series index using DocumentQuery with Linq-like expressions + using (var session = store.OpenSession()) + { + var results = session.Advanced.DocumentQuery() + .WhereEquals("HeartBeat", 70) + .ToList(); + } + #endregion + + #region ts_region_Index-TS-Queries-5-session-Query-Async + // Time-series async index query using session.Query + using (var session = store.OpenAsyncSession()) + { + var results = await session.Query() + .ToListAsync(); + } + #endregion + + + } + } + + #region ts_region_Index-TS-Queries-6-Index-Definition-And-Results-Class + public class SimpleIndex : AbstractTimeSeriesIndexCreationTask + { + + public class Result + { + public double HeartBeat { get; set; } + public DateTime Date { get; set; } + public string User { get; set; } + } + + public SimpleIndex() + { + AddMap( + "HeartRate", + timeSeries => from ts in timeSeries + from entry in ts.Entries + select new + { + HeartBeat = entry.Values[0], + entry.Timestamp.Date, + User = ts.DocumentId + }); } } + #endregion + + private IDisposable GetDocumentStore() { From 39aa5bb25a68423b32202529e0627f938042e259 Mon Sep 17 00:00:00 2001 From: reebhub Date: Tue, 9 Jun 2020 11:54:39 +0300 Subject: [PATCH 28/56] tiny sample improvement --- .../indexed-queries.markdown | 6 +++--- .../DocumentExtensions/TimeSeries/TimeSeriesTests.cs | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown index 13177a560d..b2b5f05ef4 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown @@ -32,11 +32,11 @@ using LINQ expressions. * Definitions - * `session.Query` Definition + * `session.Query` {CODE-BLOCK: JSON} IRavenQueryable Query() where TIndexCreator : AbstractCommonApiForIndexes, new(); {CODE-BLOCK/} - * `DocumentQuery` definition + * `DocumentQuery` {CODE-BLOCK: JSON} IDocumentQuery DocumentQuery() where TIndexCreator : AbstractCommonApiForIndexes, new(); {CODE-BLOCK/} @@ -51,7 +51,7 @@ using LINQ expressions. * **Return Values** As return values are specific to each index, we need to define - a unique container for results retrieved from each index. + a matching results container. In the following sample we define a **map index** that collects three fields from the "HeartRate" time-series, a "Results" container for the results, and an **index query** that uses both. diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index e21fe21928..44b8acea81 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -783,7 +783,7 @@ from HeartRate // Query time-series index using session.Query using (var session = store.OpenSession()) { - var results = session.Query() + List results = session.Query() .ToList(); } #endregion @@ -793,7 +793,7 @@ from HeartRate var chosenDate = new DateTime(2020, 5, 20); using (var session = store.OpenSession()) { - var results = session.Query() + List results = session.Query() .Where(w => w.Date < chosenDate) .OrderBy(o => o.HeartBeat) .ToList(); @@ -804,7 +804,7 @@ from HeartRate // Query time-series index using DocumentQuery using (var session = store.OpenSession()) { - var results = session.Advanced.DocumentQuery() + List results = session.Advanced.DocumentQuery() .ToList(); } #endregion @@ -813,7 +813,7 @@ from HeartRate // Query time-series index using DocumentQuery with Linq-like expressions using (var session = store.OpenSession()) { - var results = session.Advanced.DocumentQuery() + List results = session.Advanced.DocumentQuery() .WhereEquals("HeartBeat", 70) .ToList(); } @@ -823,7 +823,7 @@ from HeartRate // Time-series async index query using session.Query using (var session = store.OpenAsyncSession()) { - var results = await session.Query() + List results = await session.Query() .ToListAsync(); } #endregion From 4cb08e037e90c64307bab0ae8eab9720b8cd468d Mon Sep 17 00:00:00 2001 From: morhilai Date: Wed, 10 Jun 2020 20:37:52 +0300 Subject: [PATCH 29/56] RDoc-1703_TimeSeries indexes WIP --- .../timeseries/indexing/map-indexing.markdown | 6 +- .../TimeSeries/Indexing/indexing.cs | 85 ++++++++++++++----- 2 files changed, 69 insertions(+), 22 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown index 2823a93f80..ccdb538e34 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown @@ -20,7 +20,7 @@ Indexing time series can speed-up finding them and the documents that contain th RavenDB supports time series indexing **by name**, but **not by value**. * **Time Series indexing** - Re-indexing due to time series name modification is rare enough to pause no performance issues. + Re-indexing due to time series name modification is rare enough to cause no performance issues. To index a document's time series by name, use [TimeSeriesFor](). * **Time Series Values indexing** @@ -35,7 +35,11 @@ RavenDB supports time series indexing **by name**, but **not by value**. Use these time-series specific alternatives to the standard [indexing API]() `AbstractTimeSeriesIndexCreationTask : AbstractIndexCreationTask[Base]` + +This one really makes no difference, exists so features can be filled in in the future. `TimeSeriesIndexDefinition : IndexDefinition` + +Show in one example `TimeSeriesIndexDefinitionBuilder : AbstractIndexDefinitionBuilder` diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs index fc8f499f0d..b0fa003326 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs @@ -1,17 +1,50 @@ using System; -using System.Collections.Generic; using System.Linq; -using System.Text; +using System.Threading.Tasks; +using Raven.Client.Documents; +using Raven.Client.Documents.Indexes; using Raven.Client.Documents.Indexes.TimeSeries; +using Raven.Client.Documents.Operations.Indexes; +using Sparrow.Extensions; +using Xunit; +using Xunit.Abstractions; +using System.Collections.Generic; + namespace Raven.Documentation.Samples.DocumentExtensions.TimeSeries.Indexing { class indexing { - //method syntax simple map + public void Examples() + { + //map multimap mapreduce + var documentStore = new DocumentStore + { + Urls = new[] { "http://localhost:8080" }, + Database = "products" + }; + documentStore.Initialize(); + + // + documentStore.Maintenance.Send(new PutIndexesOperation( + new TimeSeriesIndexDefinition + { + Name = "MyTsIndex", + Maps = { + "from ts in timeSeries" + + "from entry in ts.Entries" + + "select new" + + "{" + + " HeartBeat = entry.Values[0]," + + " entry.Timestamp.Date," + + "}" + } + } + )); + } + // - //strong/query syntax map private class MyTsIndex : AbstractTimeSeriesIndexCreationTask { public MyTsIndex() @@ -19,12 +52,12 @@ public MyTsIndex() AddMap( "HeartRate", timeSeries => from ts in timeSeries - from entry in ts.Entries - select new - { - HeartBeat = entry.Values[0], - entry.Timestamp.Date, - }); + from entry in ts.Entries + select new + { + HeartBeat = entry.Values[0], + entry.Timestamp.Date, + }); } } @@ -36,18 +69,18 @@ public MyMultiMapTsIndex() AddMap( "HeartRate", timeSeries => from ts in timeSeries - from entry in ts.Entries - select entry.Values[0]); + from entry in ts.Entries + select entry.Values[0]); AddMap( "HeartRate", timeSeries => from ts in timeSeries - from entry in ts.Entries - select entry.Values[0]); + from entry in ts.Entries + select entry.Values[0]); } } - //strong/query syntax mapreduce + //mapreduce private class AverageHeartRateDaily_ByDateAndUser : AbstractTimeSeriesIndexCreationTask { @@ -56,12 +89,14 @@ public AverageHeartRateDaily_ByDateAndUser() AddMap( "HeartRate", timeSeries => from ts in timeSeries - from entry in ts.Entries - select new - { - HeartBeat = entry.Value, - Count = 1 - }); + from entry in ts.Entries + select new + { + HeartBeat = entry.Value, + User = ts.DocumentId, + Date = entry.Timestamp, + Count = 1 + }); Reduce = results => from r in results group r by new { r.Date, r.User } into g @@ -75,4 +110,12 @@ from entry in ts.Entries } } } + + internal class User + { + } + + internal class Company + { + } } From ca7157bd098c12bdf6be649159c5d43d10c94599 Mon Sep 17 00:00:00 2001 From: reebhub Date: Thu, 11 Jun 2020 04:20:08 +0300 Subject: [PATCH 30/56] RDoc-1703_TimeSeries queries restructure --- .../client-api/session-methods/.docs.json | 6 + .../query-time-series/.docs.json | 14 + .../query-time-series/linq-queries.markdown | 99 ++++++ .../raw-rql-queries.markdown} | 27 +- .../timeseries/querying/.docs.json | 24 +- .../aggregation-and-projection.markdown | 134 ++++++++ .../querying/choosing-query-range.markdown | 115 +++++++ .../dynamic-time-series-queries/.docs.json | 20 -- .../client-linq-queries.markdown | 163 --------- .../dynamic-queries.markdown | 311 ------------------ .../timeseries/querying/filtering.markdown | 104 ++++++ .../indexed-queries.markdown | 4 +- .../indexed-time-series-queries/.docs.json | 8 - .../queries-overview-and-syntax.markdown | 180 ++++++++++ .../querying/queries-overview.markdown | 117 ------- ...eries-and-other-features-overview.markdown | 2 - .../TimeSeries/TimeSeriesTests.cs | 12 +- 17 files changed, 695 insertions(+), 645 deletions(-) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/{querying/dynamic-time-series-queries/client-raw-rql-queries.markdown => client-api/session-methods/query-time-series/raw-rql-queries.markdown} (69%) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/.docs.json delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/{indexed-time-series-queries => }/indexed-queries.markdown (98%) delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json index 657679ad43..c1de454310 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json @@ -28,5 +28,11 @@ "Name": "Patch Time-Series Data", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] + }, + { + "Path": "/query-time-series", + "Name": "Query Time-Series", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] } ] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/.docs.json new file mode 100644 index 0000000000..6fc170bc7a --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/.docs.json @@ -0,0 +1,14 @@ +[ + { + "Path": "raw-rql-queries.markdown", + "Name": "Raw RQL Queries", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "linq-queries.markdown", + "Name": "LINQ Queries", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown new file mode 100644 index 0000000000..ca2f684fcc --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown @@ -0,0 +1,99 @@ +## `session.Query` +# Time-Series LINQ Queries +--- + +{NOTE: } + +* To query time-series using LINQ expressions, use `session.Query`. +* RavenDB will translate a LINQ query to RQL before transmitting + it to the server for execution. + +{INFO: } +Learn more about time-series queries in the [section dedicated to this subject](../../../../../document-extensions/timeseries/querying/queries-overview). +{INFO/} + +* In this page: + * [Time-Series LINQ Queries](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries#time-series-linq-queries) + * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries#usage-samples) + +{NOTE/} + +--- + +{PANEL: Time-Series LINQ Queries} + +To build a time-series LINQ query, run a document query using `session.Query` +and extend it using LINQ expressions. +Here is a simple LINQ query that chooses users by their age and retrieves their +HeartRate time-series, and the RQL equivalent for this query. + +{CODE-TABS} +{CODE-TAB:csharp:LINQ ts_region_LINQ-1-Select-Timeseries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +{CODE-TAB:csharp:RQL ts_region_LINQ-2-RQL-Equivalent@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +{CODE-TABS/} + +{PANEL/} + +{PANEL: Syntax} + +`session.Query` Definition: +{CODE Query-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Learn more about `session.Query` [here](../../../../client-api/session/querying/how-to-query#session.query). + +**Return Value**: + +* **`IRavenQueryable`** for aggregated data. + When the query + [aggregates time-series entries](../../../document-extensions/timeseries/querying/aggregation), + the results are returned in an aggregated array. +* **`IRavenQueryable`** for non-aggregated data. + When the query **doesn't aggregate** time-series entries, + the results are returned in a list of time-series results. + +{PANEL/} + +{PANEL: Usage Flow} + +* Open a session +* Call `session.Query`. + - Run a document query to locate documents whose time-series you want to query. + - Extend the query using LINQ expressions to find and project time-series data. + Start with `Select` to choose a time-series. +* Retrieve the results using - + `TimeSeriesAggregationResult` for aggregated data + -or- + `TimeSeriesRawResult` for non-aggregated data +{PANEL/} + +{PANEL: Usage Samples} + +* In this sample, we select a three-days range from the HeartRate time-series. + {CODE ts_region_LINQ-3-Range-Selection@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* The first occurance of `Where` in the following example, filters documents. + The second occurance of `Where` filters entries. + {CODE ts_region_LINQ-4-Where@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* In the following sample, we group heart-rate data of people above the age of 72 + into 1-day groups, and retrieve each group's average heartrate and number of measurements. + The aggregated results are retrieved into an `IRavenQueryable` array. + {CODE ts_region_LINQ-6-Aggregation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown similarity index 69% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown index ee1d3ffa24..e520f38a02 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown @@ -1,16 +1,22 @@ -# Time-Series Raw RQL Queries +## `session.Advanced.RawQuery` +# Time-Series Raw RQL Queries --- {NOTE: } -* Clients can [express time-series queries in RQL](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries) +* Clients can [express time-series queries in RQL](../../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries) and send them to the server for execution using the `session.Advanced.RawQuery` method. + +{INFO: } +Learn more about time-series queries in the [section dedicated to this subject](../../../../../document-extensions/timeseries/querying/queries-overview). +{INFO/} + -* [Client Raw RQL Queries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries#client-raw-rql-queries) - * [Syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries#syntax) - * [Usage Flow](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-raw-rql-queries#usage-samples) +* [Client Raw RQL Queries](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries#client-raw-rql-queries) + * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries#usage-samples) {NOTE/} @@ -22,12 +28,6 @@ To send a raw RQL query to the server, use `session.Advanced.RawQuery`. `RawQuery`transmits queries to the server without checking or altering their contents, time-series contents or otherwise -* **Offset** - The server and client time-zones may be different. - Client queries can take this into consideration by defining an - **offset** that adjusts the UTC timestamp values they send the - server to the server's time-zone. - {PANEL/} {PANEL: Syntax} @@ -45,7 +45,7 @@ their contents, time-series contents or otherwise * **Return Value**: * **`IRawDocumentQuery`** for aggregated data. When the query - [aggregates time-series entries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#aggregation---group-by), + [aggregates time-series entries](../../../document-extensions/timeseries/querying/aggregation), the results are returned in an aggregated array. * **`IRawDocumentQuery`** for non-aggregated data. When the query **doesn't aggregate** time-series entries, @@ -69,7 +69,6 @@ their contents, time-series contents or otherwise * In this sample, a raw RQL query retrieves 24 hours of HeartRate data from users under the age of 30. The query does not aggregate data, so we retrieve its results using a `TimeSeriesRawResult` list. We define an **offset**, to adjust retrieved results to the client's local time-zone. - The query uses the **time-series function** `declare` syntax. {CODE-TABS} {CODE-TAB:csharp:Declare-Syntax ts_region_Raw-Query-Non-Aggregated-Declare-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json index 09e0c18309..c2d8d00372 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json @@ -1,19 +1,31 @@ [ { - "Path": "queries-overview.markdown", - "Name": "Overview", + "Path": "queries-overview-and-syntax.markdown", + "Name": "Overview and Syntax", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "/dynamic-time-series-queries", - "Name": "Dynamic Time-Series Queries", + "Path": "choosing-query-range.markdown", + "Name": "Choosing Query Range", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "/indexed-time-series-queries", - "Name": "Indexed Time-Series Queries", + "Path": "filtering.markdown", + "Name": "Filtering", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "aggregation-and-projection.markdown", + "Name": "Aggregation and Projection", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "indexed-queries.markdown", + "Name": "Indexed Queries", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown new file mode 100644 index 0000000000..60e43c790d --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown @@ -0,0 +1,134 @@ +## Time-Series Queries: +# Aggregarion and Projection + +--- + +{NOTE: } + +* **Aggregation** + Query result-sets can be aggregated (grouped) by a chosen time frame, + e.g. a day (grouping the results in multiple day-long data frames). + +* **Projection** + Several criteria (e.g. `Min`, `Max`, `Average`) can be used to + `select` results and project them to the client. + Selecting results from an aggregated result-set, will select + matching results from each group (e.g. the Min value of each group). + +* In this page: + * [Aggregation](../../../) + * [Projection](../../../) + * [Client Usage Samples](../../../) + +{NOTE/} + +--- + +{PANEL: Aggregation} + +Use `group by` to group the result-set in groups of a chosen resolution. + +{CODE-BLOCK: JSON} +from Users as u where Age < 30 +select timeseries( + from HeartRate + between '2020-05-27T00:00:00.0000000Z' + and '2020-06-23T00:00:00.0000000Z' + where Tag='watches/fitbit' + group by '7 days' +) +{CODE-BLOCK/} + +* `group by '7 days'` + In this case: the result-set will be composed of groups of Heartrate entries, + each group containing 7 days of entries (first group: 2020-05-27 to + 2020-06-02, second group: 2020-06-03 to 2020-06-09, and so on). + +{INFO: You can group by these time units:} + +* **Milliseconds** +* **Seconds** +* **Minutes** +* **Hours** +* **Days** +* **Months** +* **Quarters** +* **Years** + +{INFO/} + +{PANEL/} + +{PANEL: Projection} + +Use `select` to choose the values that would be projected to the client. + +{CODE-BLOCK: JSON} +from Users as u where Age < 30 +select timeseries( + from HeartRate + between '2020-05-27T00:00:00.0000000Z' + and '2020-06-23T00:00:00.0000000Z' + where Value < 80 + group by '7 days' + select max() +) +{CODE-BLOCK/} + +* `select max()` + * Since each time-series entry may have multiple values, + max() will check all the first values of time-series entries and + find the highest first-value, check all the second values of time-series + entries and find the highest second-value, and so on. + * The projected result will be an array of values. + The array's length will be as the length of the series-entry with highest + number of values. + Its first value will be the highest first value, its second value + the highest second value, and so on. + +{INFO: You can select values by these criteria:} + +* **Min()** - the lowest value +* **Max()** - the highest value +* **Sum()** - sum of all values +* **Average()** - average value +* **First()** - values of the first series entry +* **Last()** - values of the last series entry +* **Count()** - overall number of values in series entries + +{INFO/} + +{INFO: Selecting values from aggregated and non-aggregated result-sets} + +* When values are selected from a result-set that **hasn't** been aggregated (grouped), + they are selected from the entire result-set. +* When values are selected from a result-set that **has** been aggregated, + they are selected per-group. + +{INFO/} + +{PANEL/} + +{PANEL: Client Usage Samples} + +{INFO: } +You can run queries from your client using raw RQL and LINQ. +* Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). +* Learn how to run a LINQ time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). +{INFO/} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown new file mode 100644 index 0000000000..679c962ba7 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown @@ -0,0 +1,115 @@ +## Time-Series Queries: +# Choosing Query Range + +--- + +{NOTE: } + +* Queries can be performed over whole time-series or over a chosen range + of time-series entries, e.g. only entries collected during the last 7 days. + +* In this page: + * [Choosing Query Range](../../../document-extensions/timeseries/querying/choosing-query-range#choosing-query-range) + * [Client Usage Samples](../../../document-extensions/timeseries/querying/choosing-query-range#client-usage-samples) + * [Choosing a Range Using Raw RQL](../../../document-extensions/timeseries/querying/choosing-query-range#choosing-a-range-using-raw-rql) + * [Choosing a Range Using LINQ](../../../document-extensions/timeseries/querying/choosing-query-range#choosing-a-range-using-linq) + +{NOTE/} + +--- + +{PANEL: Choosing Query Range} + +Use `between` and `and` to specify a range of time-series entries to query. +The entries are chosen by their timestamps, in UTC format. + +{CODE-BLOCK: JSON} +from Users as jog where Age < 30 +select timeseries( + from HeartRate + between + '2020-05-27T00:00:00.0000000Z' + and + '2020-06-23T00:00:00.0000000Z' +{CODE-BLOCK/} + + * `between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z'` + If the query ends here, all entries between the two timestamps will be retrieved. + If the query continues, any additional filtering will pick data from this range. + + {INFO: } + You can use the Studio to try these queries. + Using the studio, you can use parameters for a clearer query. + E.g. - + {CODE-BLOCK: JSON} + $from = '2020-05-27T00:00:00.0000000Z' +$to = '2020-06-23T00:00:00.0000000Z' + +from Users as jog where Age < 30 +select timeseries( + from HeartRate + between $from and $to +) + {CODE-BLOCK/} + {INFO/} + +{PANEL/} + +{PANEL: Client Usage Samples} + +{INFO: } +You can run queries from your client using raw RQL and LINQ. +* Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). +* Learn how to run a LINQ time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). +{INFO/} + +--- + +#### Choosing a Range Using Raw RQL + +In this sample, a raw RQL query retrieves 24 hours of HeartRate data from users under the age of 30. +The query does not aggregate data, so we retrieve its results using a `TimeSeriesRawResult` list. +We define an **offset**, to adjust retrieved results to the client's local time-zone. + {CODE-TABS} + {CODE-TAB:csharp:Declare-Syntax ts_region_Raw-Query-Non-Aggregated-Declare-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TAB:csharp:Select-Syntax ts_region_Raw-Query-Non-Aggregated-Select-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TABS/} + +--- + +#### Choosing a Range Using LINQ + +To choose a range using LINQ expressions, invoke the `RavenQuery.TimeSeries` overload +that specifies a range by passing it a **range start** and a **range end** arguments. + +* **`RavenQuery.TimeSeries` Definitions** + {CODE RavenQuery-TimeSeries-Definition-Without-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE RavenQuery-TimeSeries-Definition-With-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `documentInstance` | `object` | Document Instance | + | `name` | `string` | Time-Series Name | + | `from` | `DateTime` | Range Start | + | `to` | `DateTime` | Range End | + +* In this sample, we select a three-days range from the HeartRate time-series. + {CODE ts_region_LINQ-3-Range-Selection@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/.docs.json deleted file mode 100644 index 5833459351..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/.docs.json +++ /dev/null @@ -1,20 +0,0 @@ -[ - { - "Path": "dynamic-queries.markdown", - "Name": "Dynamic Queries", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "client-raw-rql-queries.markdown", - "Name": "Client Raw RQL Queries", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "client-linq-queries.markdown", - "Name": "Client LINQ Queries", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - } -] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries.markdown deleted file mode 100644 index 4b433b9602..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries.markdown +++ /dev/null @@ -1,163 +0,0 @@ -# Time-Series LINQ Queries ---- - -{NOTE: } - -* A client can call `session.Query`to find documents whose time-series - it wishes to query. - The document query can then be extended using LINQ expressions, to - specify which time-series data of the located documents is to be retrieved. -* As always, RavenDB will translate the queries to RQL before transmitting - them to the server for execution. - -* In this page: - * [Time-Series LINQ Queries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#time-series-linq-queries) - * [Syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#syntax) - * [Usage Flow](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#usage-flow) - * [Selecting Time-Series and Range](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#selecting-time-series-and-range) - * [Filtering - `Where`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#filtering---where) - * [Using Tags as References - `LoadTag`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#using-tags-as-references---) - * [Aggregation and Projection - `GroupBy` and `Select`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/client-linq-queries#aggregation-and-projection---groupby-and-select) - -{NOTE/} - ---- - -{PANEL: Time-Series LINQ Queries} - -To build a time-series LINQ query, run a document query using `session.Query` -and extend it using LINQ expressions. -Here is a simple LINQ query that chooses users by their age and retrieves their -HeartRate time-series, and the RQL equivalent for this query. - -{CODE-TABS} -{CODE-TAB:csharp:LINQ ts_region_LINQ-1-Select-Timeseries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -{CODE-TAB:csharp:RQL ts_region_LINQ-2-RQL-Equivalent@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -{CODE-TABS/} - -{PANEL/} - -{PANEL: Syntax} - -`session.Query` Definition: -{CODE Query-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -Learn more about `session.Query` [here](../../../../client-api/session/querying/how-to-query#session.query). - -**Return Value**: - -* **`IRavenQueryable`** for aggregated data. - When the query - [aggregates time-series entries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#aggregation---group-by), - the results are returned in an aggregated array. -* **`IRavenQueryable`** for non-aggregated data. - When the query **doesn't aggregate** time-series entries, - the results are returned in a list of time-series results. - -{PANEL/} - -{PANEL: Usage Flow} - -* Open a session -* Call `session.Query`. - - Run a document query to locate documents whose time-series you want to query. - - Extend the query using LINQ expressions to find and project time-series data. - Start with `Select` to choose a time-series. -* Retrieve the results using - - `TimeSeriesAggregationResult` for aggregated data - -or- - `TimeSeriesRawResult` for non-aggregated data -{PANEL/} - -{PANEL: Selecting Time-Series and Range} - -Right after the document query, we select the time-series and, optionally, the -[range of time-series entries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#choose-query-range---between-x-and-y) -we want to retrieve, using the `RavenQuery.TimeSeries` method. - -* **`RavenQuery.TimeSeries` Definition**: - {CODE RavenQuery-TimeSeries-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - - * **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `documentInstance` | `object` | Document Instance | - | `name` | `string` | Time-Series Name | - | `from` | `DateTime` | Range Start Timestamp (optional) | - | `to` | `DateTime` | Range End Timestamp (optional) | - -* In this sample, we select a three-days range from the HeartRate time-series. - {CODE ts_region_LINQ-3-Range-Selection@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -{PANEL: Filtering - `Where`} - -The `Where` expression can be used in different parts of the query, and filter different entities. - -When we use `Where` right after the document selection, it filters the **documents** whose -time-series we query. -When we use `Where` after the time-series selection, it [filters time-series entries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#filtering---where). - -* The first occurance of `Where` in the following example, filters documents. - The second occurance of `Where` filters entries. - {CODE ts_region_LINQ-4-Where@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{INFO: } -Time-series entries can be filtered by their **Tags**, **Values**, and **Timestamps**. -{CODE-BLOCK: JSON} -public DateTime Timestamp { get; set; } -public double[] Values { get; set; } -public string Tag { get; set; } -public bool IsRollup { get; set; } -{CODE-BLOCK/} - -{INFO/} - ---- - -#### Using Tags as References - `LoadTag` - -A time-series entry's **tag** may [contain a document's ID](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#using-tags-as-references---). -We can use the `LoadTag` LINQ expression to load the document that a tag refers to. -We can then filter our result-set by the contents of this document, using `Where`. - -* Consider this example. - {CODE ts_region_LINQ-5-LoadTag@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - * We go through companies StockPrice time-series and load documents that - time-series entries refer us to. - The documents are Employee profiles. - * We then check the employee documents, and filter the results by their addresses. - * This can be helpful, for example, when the employees are stockbrokers and we look - for local brokers for our stocks. - -{PANEL/} - -{PANEL: Aggregation and Projection - `GroupBy` and `Select`} - -The `GroupBy` expression allows us to [aggregate result-sets](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#aggregation---group-by) -by a resolution we choose. -Once the result-set is aggregated, we can select from each group by various criteria -and project the selection to the client. - -* In the following sample, we group heart-rate data of people above the age of 72 - into 1-day groups, and retrieve each group's average heartrate and number of measurements. - The aggregated results are retrieved into an `IRavenQueryable` array. - {CODE ts_region_LINQ-6-Aggregation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown deleted file mode 100644 index 3c53c9e2de..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries.markdown +++ /dev/null @@ -1,311 +0,0 @@ -# Dynamic Time-Series Queries ---- - -{NOTE: } - -* Time-series queries can be phrased by a client using raw RQL or LINQ functions - (which are also translated to RQL before their execution by the server). -* Queries can be performed over whole time-series, and over chosen ranges of - time-series entries. -* Queries can filter results using `Where`, group them using `GroupBy`, - and project selected results using `Select`. - -* In this page: - * [Dynamic Queries](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#dynamic-queries) - * [Syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#syntax) - * [`select timeseries` Syntax: Creating a Time-Series Section](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#syntax-creating-a-time-series-section) - * [`declare timeseries` Syntax: Declaring a Time-Series Function](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#syntax-declaring-a-time-series-function) - * [Choose Query Range - `between` x `and` y](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#choose-query-range---between-x-and-y) - * [Filtering - `where`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#filtering---where) - * [Using Tags as References - `load tag`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#using-tags-as-references---) - * [Aggregation - `group by`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#aggregation---group-by) - * [Projection - `select`](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#projection---select) - -{NOTE/} - ---- - -{PANEL: Dynamic Queries} - -Use dynamic queries when time-series you query are unindexed -or when you prefer RavenDB to choose an index automatically -using its [query optimizer](../../../../indexes/querying/what-is-rql#query-optimizer). - -{PANEL/} - -{PANEL: Syntax} - -You can query time-series using two different syntaxes. -Choose the syntax you're more comfortable with. - -* [`select timeseries` syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#syntax-creating-a-time-series-section) -* [`declare timeseries` syntax](../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries#syntax-declaring-a-time-series-function) - ---- - -#### `select timeseries` Syntax: Creating a Time-Series Section - -This syntax allows you to encapsulate your query's time-series functionality -in a `select timeseries` section. - -{CODE-BLOCK: JSON} -//Look for time-series named "HeartRate" in user profiles of users under 30. - -from Users as u where Age < 30 -select timeseries( - from HeartRate -) -{CODE-BLOCK/} - -* `from Users as u where Age < 30` - This **document query** locates the documents whose time-series we want to query. - - {INFO: } - A typical time-series query starts by locating a single document. - For example, to query a stock prices time-series we can locate - a specific company's profile in the Companies collection first, - and then query the StockPrices time-series that extends this profile. - {CODE-BLOCK: JSON} - from Companies as c where Name = 'Apple' - select timeseries( - from StockPrices - ) - {CODE-BLOCK/} - {INFO/} - -* `select timeseries` - The `select` clause defines the time-series query. - -* `from HeartRate` - The `from` keyword is used to select the time-series we'd query, by its name. - ---- - -#### `declare timeseries` Syntax: Declaring a Time-Series Function - -This syntax allows you to declare a time-series function and call it -from your query. It introduces greater flexibility to your queries as -you can, for example, pass arguments to/by the time-series function. - -Here is a query in both syntaxes. It picks users whose age is under 30, -and if they own a time-series named "HeartRate" retrieves a range of entries -from this series. - - -| With Time-Series Function | Without Time-Series Function | -|:---:|:---:| -| {CODE-BLOCK: JSON} -declare timeseries ts(jogger){ - from jogger.HeartRate - between - '2020-05-27T00:00:00.0000000Z' - and - '2020-06-23T00:00:00.0000000Z' -} - -from Users as jog where Age < 30 -select ts(jog) -{CODE-BLOCK/}| {CODE-BLOCK: JSON} - from Users as jog where Age < 30 - select timeseries( - from HeartRate - between - '2020-05-27T00:00:00.0000000Z' - and - '2020-06-23T00:00:00.0000000Z') - {CODE-BLOCK/}| - -{PANEL/} - -{PANEL: Choose Query Range - `between` x `and` y} - -Use `between` and `and` to specify a range of time-series entries to query. -The range start and end entries are chosen by their timestamps, in UTC format. - - -{CODE-BLOCK: JSON} -from Users as jog where Age < 30 -select timeseries( - from HeartRate - between - '2020-05-27T00:00:00.0000000Z' - and - '2020-06-23T00:00:00.0000000Z' -{CODE-BLOCK/} - - * `between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z'` - If the query ends here, all entries between the given timestamps will be retrieved. - If the query continues, any additional filtering will relate only to this range. - - {INFO: } - You can use the Studio to try these queries. - Using the studio, you can use parameters for a clearer query. - E.g. - - {CODE-BLOCK: JSON} - $from = '2020-05-27T00:00:00.0000000Z' -$to = '2020-06-23T00:00:00.0000000Z' - -from Users as jog where Age < 30 -select timeseries( - from HeartRate - between $from and $to -) - {CODE-BLOCK/} - {INFO/} - -{PANEL/} - -{PANEL: Filtering - `where`} - -Use `where` to filter time-series entries by their **tags** or **values**. - -{CODE-BLOCK: JSON} -from Users as u where Age < 30 -select timeseries( - from HeartRate - between '2020-05-27T00:00:00.0000000Z' - and '2020-06-23T00:00:00.0000000Z' - where Tag='watches/fitbit' -) -{CODE-BLOCK/} - -* `where Tag='watches/fitbit'` - In this example we retrieve time-series entries whose tag is 'watches/fitbit'. - To filter entries by their by value, use **Value**. E.g.: - `where Value < 80` - ---- - -#### Using Tags as References - `load tag` - -Use the `load Tag ` expression to **load a document** whose ID is stored in -a time-series entry's tag. -Use `load Tag ` with `where` to **filter your results by properties of the -loaded document**, as we do in the following example. - -{CODE-BLOCK: JSON} -from Companies as c where c.Address.Country = "USA" -select timeseries( - from StockPrice - load Tag as emp - where emp.Title == "Vice President, Sales" -) -{CODE-BLOCK/} - -* `from Companies as c where c.Address.Country = "USA"` - Here, we choose companies that reside in the USA. -* `from StockPrice` - Here we choose these companies' **StockPrice** time-series. -* `load Tag as emp` - We know in advance, that the tag of each time-series entry contains - the ID of an Employee document. - Here, we use the `load tag` expression to load the employee profile - referred to by each tag. -* `where emp.Title == "Vice President, Sales"` - And finally, we filter time-series entries by the **Title** property - of employee documents they refer to. - -The result-set of this sample includes time-series entries with -references (IDs stored in their tags) to a Sales Vice-President's profile. - - -{PANEL/} - -{PANEL: Aggregation - `group by`} - -Use `group by` to group the result-set in groups of a chosen resolution. - -{CODE-BLOCK: JSON} -from Users as u where Age < 30 -select timeseries( - from HeartRate - between '2020-05-27T00:00:00.0000000Z' - and '2020-06-23T00:00:00.0000000Z' - where Tag='watches/fitbit' - group by '7 days' -) -{CODE-BLOCK/} - -* `group by '7 days'` - In this case: the result-set will be composed of groups of Heartrate entries, - each group containing 7 days of entries (first group: 2020-05-27 to - 2020-06-02, second group: 2020-06-03 to 2020-06-09, and so on). - -{INFO: You can group by these time units:} - -* **Milliseconds** -* **Seconds** -* **Minutes** -* **Hours** -* **Days** -* **Months** -* **Quarters** -* **Years** - -{INFO/} - -{PANEL/} - -{PANEL: Projection - `select`} - -Use `select` to choose the values that would be projected to the client. - -{CODE-BLOCK: JSON} -from Users as u where Age < 30 -select timeseries( - from HeartRate - between '2020-05-27T00:00:00.0000000Z' - and '2020-06-23T00:00:00.0000000Z' - where Value < 80 - group by '7 days' - select max() -) -{CODE-BLOCK/} - -* `select max()` - * Since each time-series entry may have multiple values, - max() will check all the first values of time-series entries and - find the highest first-value, check all the second values of time-series - entries and find the highest second-value, and so on. - * The projected result will be an array of values. - The array's length will be as the length of the series-entry with highest - number of values. - Its first value will be the highest first value, its second value - the highest second value, and so on. - -{INFO: You can select values by these criteria:} - -* **Min()** - the lowest value -* **Max()** - the highest value -* **Sum()** - sum of all values -* **Average()** - average value -* **First()** - values of the first series entry -* **Last()** - values of the last series entry -* **Count()** - overall number of values in series entries - -{INFO/} - -{INFO: Selecting values from aggregated and non-aggregated result-sets} - -* When values are selected from a result-set that **hasn't** been aggregated (grouped), - they are selected from the entire result-set. -* When values are selected from a result-set that **has** been aggregated, - they are selected per-group. - -{INFO/} - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown new file mode 100644 index 0000000000..e3dc078625 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown @@ -0,0 +1,104 @@ +## Time-Series Queries: +# Filtering + +--- + +{NOTE: } + +* Time-series entries can be filtered by their **value** (e.g. to + retrieve a "Thermometer" time-series entries whose measurement exceed + 32 Celsius degrees) or **tag** (e.g. to retrieve all the entries whose + tag is "Thermometer No. 3"). + +* Entries can also be filtered by the **contents of a document they refer to**. + A time-series entry's tag can contain the **ID of a document**. + In your query, you can **load the document** that the entry refers to. + and **filter your results by its contents**. + +* In this page: + * [Filtering Results](../../../) + * [Using Tags as References](../../../) + * [Client Usage Samples](../../../) + +{NOTE/} + +--- + +{PANEL: Filtering} + +Use `where` to filter time-series entries by their **tags** or **values**. + +{CODE-BLOCK: JSON} +from Users as u where Age < 30 +select timeseries( + from HeartRate + between '2020-05-27T00:00:00.0000000Z' + and '2020-06-23T00:00:00.0000000Z' + where Tag='watches/fitbit' +) +{CODE-BLOCK/} + +* `where Tag='watches/fitbit'` + In this example we retrieve time-series entries whose tag is 'watches/fitbit'. + To filter entries by their by value, use **Value**. E.g.: + `where Value < 80` + +--- + +#### Using Tags as References - `load tag` + +Use the `load Tag ` expression to **load a document** whose ID is stored in +a time-series entry's tag. +Use `load Tag ` with `where` to **filter your results by properties of the +loaded document**, as we do in the following example. + +{CODE-BLOCK: JSON} +from Companies as c where c.Address.Country = "USA" +select timeseries( + from StockPrice + load Tag as emp + where emp.Title == "Vice President, Sales" +) +{CODE-BLOCK/} + +* `from Companies as c where c.Address.Country = "USA"` + Here, we choose companies that reside in the USA. +* `from StockPrice` + Here we choose these companies' **StockPrice** time-series. +* `load Tag as emp` + We know in advance, that the tag of each time-series entry contains + the ID of an Employee document. + Here, we use the `load tag` expression to load the employee profile + referred to by each tag. +* `where emp.Title == "Vice President, Sales"` + And finally, we filter time-series entries by the **Title** property + of employee documents they refer to. + +The result-set of this sample includes time-series entries with +references (IDs stored in their tags) to a Sales Vice-President's profile. + +{PANEL/} + +{PANEL: Client Usage Samples} + +{INFO: } +You can run queries from your client using raw RQL and LINQ. +* Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). +* Learn how to run a LINQ time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). +{INFO/} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown similarity index 98% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown index b2b5f05ef4..5690325ede 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown @@ -1,4 +1,6 @@ -# Indexed Time-Series Queries +## Time-Series Queries: +# Indexed Queries + --- {NOTE: } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/.docs.json deleted file mode 100644 index 652867ab04..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-time-series-queries/.docs.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "Path": "indexed-queries.markdown", - "Name": "Indexed Queries", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - } -] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown new file mode 100644 index 0000000000..1e053e9b50 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown @@ -0,0 +1,180 @@ +## Time-Series Queries: +# Overview and Syntax + +--- + +{NOTE: } + +* Time-series querying is native to RavenDB's RQL. + +* Clients can express time-series queries in RQL and LINQ expressions to, + for example, expose the behavior of a process that populates a time-series + over time, and to locate documents related to chosen time-series entries. + +* Queries can be exectued over time-series indexes. + +* In this page: + * [Time-Series Queries](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#time-series-queries) + * [Server and Client Queries](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#server-and-client-queries) + * [Dynamic and Indexed Queries](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#dynamic-and-indexed-queries) + * [Syntax](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#syntax) + * [`select timeseries` syntax](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#syntax-creating-a-time-series-section) + * [`declare timeseries` syntax](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#syntax-declaring-a-time-series-function) + + +{NOTE/} + +--- + +{PANEL: Time-Series Queries} + +Time-series query can - + +* [Choose a range of time-series entries](../../../document-extensions/timeseries/querying/choosing-query-range) + to query from. +* [Filter](../../../document-extensions/timeseries/querying/filtering) + time-series entries by their tags, values and timestamps. +* [Aggregate](../../../document-extensions/timeseries/querying/aggregation) + time-series entries into groups by a chosen resolution, e.g. gather the prices + of a stock that's been collected over the past two months to week-long groups). +* [Select](../../../document-extensions/timeseries/querying/aggregation) + entries by various criteria, e.g. by the min and max values of each aggregated group. +* [Project](../../../document-extensions/timeseries/querying/projection) + selected entries to the client. + +{PANEL/} + +{PANEL: Server and Client Queries} + +Time-series queries are executed by the server and their results are projected +to the client, so they require very little client computation resources. + +* The server runs time-series queries using RQL. +* Clients can phrase time-series queries in **raw RQL** or using **LINQ expressions** + (which will be automatically translated to RQL before their execution by the server). + +{PANEL/} + +{PANEL: Dynamic and Indexed Queries} + +Time-series indexes are not created automatically by the server, but static time-series +indexes can be created by clients (or using the Studio). + +* Use **dynamic queries** when time-series you query are unindexed + or when you prefer that RavenDB would choose an index automatically + using its [query optimizer](../../../../indexes/querying/what-is-rql#query-optimizer). E.g. - + {CODE-BLOCK: JSON} +//Look for time-series named "HeartRate" in user profiles of users under 30. +from Users as u where Age < 30 + select timeseries( + from HeartRate +) + {CODE-BLOCK/} + +* [Indexed queries](../../../document-extensions/timeseries/querying/indexed-queries) + can be performed over static indexes and their results. E.g. - + {CODE-BLOCK: JSON} +from index 'SimpleIndex' + where Tag = 'watches/fitbit' + {CODE-BLOCK/} + +{PANEL/} + +{PANEL: Syntax} + +You can query time-series using two equivalent syntaxes, +choose the syntax you're comfortable with. + +* [`select timeseries` syntax](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#syntax-creating-a-time-series-section) +* [`declare timeseries` syntax](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#syntax-declaring-a-time-series-function) + +--- + +#### `select timeseries` Syntax: Creating a Time-Series Section + +This syntax allows you to encapsulate your query's time-series functionality +in a `select timeseries` section. + +{CODE-BLOCK: JSON} +//Look for time-series named "HeartRate" in user profiles of users under 30. + +from Users as u where Age < 30 +select timeseries( + from HeartRate +) +{CODE-BLOCK/} + +* `from Users as u where Age < 30` + This **document query** locates the documents whose time-series we want to query. + + {INFO: } + A typical time-series query starts by locating a single document. + For example, to query a stock prices time-series we can locate + a specific company's profile in the Companies collection first, + and then query the StockPrices time-series that extends this profile. + {CODE-BLOCK: JSON} + from Companies as c where Name = 'Apple' + select timeseries( + from StockPrices + ) + {CODE-BLOCK/} + {INFO/} + +* `select timeseries` + The `select` clause defines the time-series query. + +* `from HeartRate` + The `from` keyword is used to select the time-series we'd query, by its name. + +--- + +#### `declare timeseries` Syntax: Declaring a Time-Series Function + +This syntax allows you to declare a time-series function and call it +from your query. It introduces greater flexibility to your queries as +you can, for example, pass arguments to/by the time-series function. + +Here is a query in both syntaxes. It picks users whose age is under 30, +and if they own a time-series named "HeartRate" retrieves a range of entries +from this series. + + +| With Time-Series Function | Without Time-Series Function | +|:---:|:---:| +| {CODE-BLOCK: JSON} +declare timeseries ts(jogger){ + from jogger.HeartRate + between + '2020-05-27T00:00:00.0000000Z' + and + '2020-06-23T00:00:00.0000000Z' +} + +from Users as jog where Age < 30 +select ts(jog) +{CODE-BLOCK/}| {CODE-BLOCK: JSON} + from Users as jog where Age < 30 + select timeseries( + from HeartRate + between + '2020-05-27T00:00:00.0000000Z' + and + '2020-06-23T00:00:00.0000000Z') + {CODE-BLOCK/}| + +{PANEL/} + + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview.markdown deleted file mode 100644 index c07b8659a9..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview.markdown +++ /dev/null @@ -1,117 +0,0 @@ -# Time-Series Queries Overview ---- - -{NOTE: } - -* Time-series data can be aggregated and/or queried, to show the behavior of - the processes that produce this data. - -* Data can be aggregated using `group by`and `select` in a query. - (Data can also be aggregated using [rollup policies](../../../document-extensions/timeseries/rollup-and-retention); - this is not related to queries.) - -* In this page: - * [Server and Client Queries](../../../document-extensions/timeseries/querying/queries-overview#server-and-client-queries) - * [Dynamic and Indexed Queries](../../../document-extensions/timeseries/querying/queries-overview#dynamic-and-indexed-queries) - * [Query Range Selection](../../../document-extensions/timeseries/querying/queries-overview#query-range-selection) - * [Filtering](../../../document-extensions/timeseries/querying/queries-overview#filtering) - * [Aggregation and Projection](../../../document-extensions/timeseries/querying/queries-overview#aggregation-and-projection) - -{NOTE/} - ---- - -{PANEL: Time-Series Queries} - ---- - -#### Server and Client Queries - -Time-series queries require very little client computation resources. -They are executed by the server in full (including document query, -time-series range selection, results filtering and aggregation) and -their results are projected to the client. - -The server runs RQL queries. -In your client code, you can send the server a raw RQL query -or phrase your queries using **LINQ expressions** (which will -also be translated to RQL before their execution by the server). - ---- - -#### Dynamic and Indexed Queries - -* As long as a time-series is unindexed, you can query it using - [dynamic queries](../../../document-extensions/timeseries/querying/dynamic-queries). - - {INFO: } - Time-series are **not automatically indexed**. - {INFO/} - -* Indexed time-series can be queried using - [indexed queries](../../../document-extensions/timeseries/querying/indexed-queries). - - {INFO: } - You can create **static indexes** for your time-series. - {INFO/} - ---- - -#### Query Range Selection - -Queries can be performed over a whole series or over a smaller range of time-series -entries, e.g. only on entries collected during the last 7 days. - ---- - -#### Filtering - -Time-series entries can be filtered by - - -* by their **Tags** - - E.g. retrieve all the entries whose tag is "Thermometer C". - -* by their **Values** - - E.g. retrieve all the entries whose measurements exceed 32 Celsius degrees. - -* by the **contents of a document they refer to** - A time-series entry's tag can contain the **ID of a document**. - In your query, you can **load the document** the entry refers to. - Once the document is loaded, you can **filter your results by its contents**. - - E.g. retrieve entries whose tags refer to a device-specification document, - where the specifications indicate that the device has been manufactured - in Sweden. - ---- - -#### Aggregation and Projection - -* **Aggregation** - Query result-sets can be aggregated (grouped) by a chosen time frame, - e.g. a day (grouping the results in multiple day-long data frames). - -* **Projection** - Various criteria (like `min`, `max` and others) can be used to - `select` the results that would be sent to the client. - Projecting selected results from a **grouped** result-set, will - send the client matching results from each group. - - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown index 7b3826e726..b3316bcc2a 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown @@ -37,8 +37,6 @@ and how the various features handle time series values. | [Changes API]() | _TS Value Modification_ | | [Revision creation]() | _Document Change_ | -{NOTE/} - {PANEL/} ## Related articles diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index 44b8acea81..859da8de62 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -814,7 +814,7 @@ from HeartRate using (var session = store.OpenSession()) { List results = session.Advanced.DocumentQuery() - .WhereEquals("HeartBeat", 70) + .WhereEquals("Tag", "watches/fitbit") .ToList(); } #endregion @@ -841,6 +841,7 @@ public class Result public double HeartBeat { get; set; } public DateTime Date { get; set; } public string User { get; set; } + public string Tag { get; set; } } public SimpleIndex() @@ -853,7 +854,8 @@ from entry in ts.Entries { HeartBeat = entry.Values[0], entry.Timestamp.Date, - User = ts.DocumentId + User = ts.DocumentId, + Tag = entry.Tag }); } } @@ -1018,10 +1020,14 @@ public PatchByQueryOperation(IndexQuery queryToUpdate, QueryOperationOptions opt public Operation Send(IOperation operation, SessionInfo sessionInfo = null) #endregion - #region RavenQuery-TimeSeries-Definition + #region RavenQuery-TimeSeries-Definition-With-Range public static ITimeSeriesQueryable TimeSeries(object documentInstance, string name, DateTime from, DateTime to) #endregion + #region RavenQuery-TimeSeries-Definition-Without-Range + public static ITimeSeriesQueryable TimeSeries(object documentInstance, string name) + #endregion + } From 7c65275201337f1acbc0797dd64b05032fd66e80 Mon Sep 17 00:00:00 2001 From: morhilai Date: Thu, 11 Jun 2020 21:19:22 +0300 Subject: [PATCH 31/56] RDoc-1703_TimeSeries indexes, WIP code samples and documentation --- .../timeseries/indexing/map-indexing.markdown | 41 +++++------ .../TimeSeries/Indexing/indexing.cs | 68 ++++++++++++------- 2 files changed, 62 insertions(+), 47 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown index ccdb538e34..a533fa0e23 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown @@ -14,27 +14,16 @@ {PANEL: } -### Time Series and Indexing +### Indexing Time Series -Indexing time series can speed-up finding them and the documents that contain them. -RavenDB supports time series indexing **by name**, but **not by value**. +Time-series indexes are used to index time-series data, as opposed to documents. +The API for creating time-series indexes is very similar to creating any other index, +with a few minor differences described here: -* **Time Series indexing** - Re-indexing due to time series name modification is rare enough to cause no performance issues. - To index a document's time series by name, use [TimeSeriesFor](). - -* **Time Series Values indexing** - Indexing by values contained in time series is **not** provided, changing values will not trigger indexing of the document. - Time series are designed for high-throughput scenarios, and performance cannot afford the re-indexing cost of each change. - -**Map Index sample here** - -{PANEL/} - -{PANEL: } -Use these time-series specific alternatives to the standard [indexing API]() - -`AbstractTimeSeriesIndexCreationTask : AbstractIndexCreationTask[Base]` +The two main ways to create time-series indexes are: +1. Create a class that inherits from `AbstractTimeSeriesIndexCreationTask`, or in the +case of a multi-map index, use `AbstractMultiMapTimeSeriesIndexCreationTask`. +2. Create a new `TimeSeriesIndexDefinition`. This one really makes no difference, exists so features can be filled in in the future. `TimeSeriesIndexDefinition : IndexDefinition` @@ -42,17 +31,20 @@ This one really makes no difference, exists so features can be filled in in the Show in one example `TimeSeriesIndexDefinitionBuilder : AbstractIndexDefinitionBuilder` - ####`TimeSeriesSegment` object -Time-series are divided into **segments** in storage, each containing several consecutive entries. -Segments can be referenced within the index syntax. This exposes aggregate values. +Time-series are divided into **segments** in storage, each containing several consecutive entries. The +number of entries per segment can vary widely depending on the size and compressibility of the entries. +Entries that are more than 25 days apart will be stored in different segments. + +Segments are useful because they can be referenced within time-series indexes to access the entries in +the segment, as well as some aggregate values that summarize the data in the segment: | Property | Type | Description | | - | - | - | | DocumentId | string | The [ID]() of the document this time-series belongs to | | Name | string | The name of the time-series this segment belongs to | -| Min | double[] | The smallest values from all entries in the segment. `Min[0]` is the smallest of all the *first* values in the entries of this segment, `Min[1]` is the smallest second value, and so on. | +| Min | double[] | The smallest values from all entries in the segment. The places in this array correspond to the | | Max | double[] | The largest values from all entries in the segment | | Sum | double[] | The sums of values from all entries in the segment. The first `Sum` is the sum of all first values, and so on. | | Count | int | The number of entries in this segment | @@ -61,6 +53,9 @@ Segments can be referenced within the index syntax. This exposes aggregate value | Entries | `TimeSeriesEntry[]` | The segment's entries themselves | {PANEL/} +{PANEL: Examples} + +{PANEL/} ## Related articles **Studio Articles**: [Studio Time Series Management]() diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs index b0fa003326..01c3fa58d8 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs @@ -17,7 +17,7 @@ class indexing { public void Examples() { - //map multimap mapreduce + //map multimap mapreduce TimeSeriesNamesFor var documentStore = new DocumentStore { Urls = new[] { "http://localhost:8080" }, @@ -26,6 +26,7 @@ public void Examples() documentStore.Initialize(); // + #region indexes_IndexDefinition documentStore.Maintenance.Send(new PutIndexesOperation( new TimeSeriesIndexDefinition { @@ -41,10 +42,22 @@ public void Examples() } } )); + #endregion + + + #region indexes_IndexDefinitionBuilder + var TSIndexDefBuilder = new TimeSeriesIndexDefinitionBuilder("bob's index"); + TSIndexDefBuilder.AddMap("StockPrice", + timeseries => from ts in timeseries + from entry in ts.Entries + select entry.Value); + + + #endregion } // - + #region indexes_CreationTask private class MyTsIndex : AbstractTimeSeriesIndexCreationTask { public MyTsIndex() @@ -52,21 +65,23 @@ public MyTsIndex() AddMap( "HeartRate", timeSeries => from ts in timeSeries - from entry in ts.Entries - select new - { - HeartBeat = entry.Values[0], - entry.Timestamp.Date, - }); + from entry in ts.Entries + select new + { + HeartBeat = entry.Values[0], + entry.Timestamp.Date, + }); } } + #endregion //strong/query syntax multi map + #region indexes_MultiMapCreationTask private class MyMultiMapTsIndex : AbstractMultiMapTimeSeriesIndexCreationTask { public MyMultiMapTsIndex() { - AddMap( + AddMap( "HeartRate", timeSeries => from ts in timeSeries from entry in ts.Entries @@ -79,36 +94,41 @@ from entry in ts.Entries select entry.Values[0]); } } + #endregion - //mapreduce - private class AverageHeartRateDaily_ByDateAndUser : AbstractTimeSeriesIndexCreationTask + #region indexes_MapReduce + private class MyMapReduceTSIndex : AbstractTimeSeriesIndexCreationTask { + public class Result + { + public double TradeVolume { get; set; } + public DateTime Date { get; set; } + public string CompanyID { get; set; } + } - public AverageHeartRateDaily_ByDateAndUser() + public MyMapReduceTSIndex() { AddMap( "HeartRate", timeSeries => from ts in timeSeries from entry in ts.Entries - select new + select new Result { - HeartBeat = entry.Value, - User = ts.DocumentId, + TradeVolume = entry.Values[4], + CompanyID = ts.DocumentId, Date = entry.Timestamp, - Count = 1 }); Reduce = results => from r in results - group r by new { r.Date, r.User } into g - let sumHeartBeat = g.Sum(x => x.HeartBeat) - let sumCount = g.Sum(x => x.Count) - select new - { - HeartBeat = sumHeartBeat / sumCount, - Count = sumCount - }; + group r by new { r.Date, r.CompanyID } into g + select new Result(); } } + #endregion + } + + internal class Employee + { } internal class User From c6ac998b989dc31ef02ba755beb6cc1a3cf1561c Mon Sep 17 00:00:00 2001 From: morhilai Date: Sun, 14 Jun 2020 20:47:52 +0300 Subject: [PATCH 32/56] RDoc-1703_TimeSeries indexes WIP 14/6/20 --- .../timeseries/indexing/map-indexing.markdown | 13 ++ .../TimeSeries/Indexing/indexing.cs | 157 +++++++++++------- 2 files changed, 109 insertions(+), 61 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown index a533fa0e23..c9037be198 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown @@ -54,7 +54,20 @@ the segment, as well as some aggregate values that summarize the data in the seg {PANEL/} {PANEL: Examples} +Creating a time-series index using `TimeSeriesIndexDefinition`: +{CODE indexes_IndexDefinition@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} +Creating a time-series index using `AbstractTimeSeriesIndexCreationTask`: +{CODE indexes_CreationTask@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} + +Creating a multi-map time-series index: +{CODE indexes_MultiMapCreationTask@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} + +Creating a map-reduce index: +{CODE indexes_MapReduce@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} + +Creating a builder for time-series indexes using `TimeSeriesIndexDefinitionBuilder`, and using it to create an index. +{CODE indexes_IndexDefinitionBuilder@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} {PANEL/} ## Related articles **Studio Articles**: diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs index 01c3fa58d8..ff8e26a16d 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs @@ -13,11 +13,10 @@ namespace Raven.Documentation.Samples.DocumentExtensions.TimeSeries.Indexing { - class indexing + class Indexing { public void Examples() { - //map multimap mapreduce TimeSeriesNamesFor var documentStore = new DocumentStore { Urls = new[] { "http://localhost:8080" }, @@ -25,108 +24,138 @@ public void Examples() }; documentStore.Initialize(); - // + #region indexes_IndexDefinition #region indexes_IndexDefinition documentStore.Maintenance.Send(new PutIndexesOperation( - new TimeSeriesIndexDefinition - { - Name = "MyTsIndex", - Maps = { - "from ts in timeSeries" + - "from entry in ts.Entries" + - "select new" + - "{" + - " HeartBeat = entry.Values[0]," + - " entry.Timestamp.Date," + - "}" - } - } - )); + new TimeSeriesIndexDefinition + { + Name = "Stocks_ByTradeVolume", + Maps = { + "from ts in timeSeries.Companies.StockPrice " + + "from entry in ts.Entries " + + "select new " + + "{ " + + " TradeVolume = entry.Values[4], " + + " entry.Timestamp.Date " + + "}" + } + })); #endregion - #region indexes_IndexDefinitionBuilder - var TSIndexDefBuilder = new TimeSeriesIndexDefinitionBuilder("bob's index"); + var TSIndexDefBuilder = + new TimeSeriesIndexDefinitionBuilder("Stocks_ByTradeVolume"); + TSIndexDefBuilder.AddMap("StockPrice", timeseries => from ts in timeseries - from entry in ts.Entries - select entry.Value); - + from entry in ts.Entries + select new + { + TradeVolume = entry.Values[4], + entry.Timestamp.Date + }); + documentStore.Maintenance.Send(new PutIndexesOperation( + TSIndexDefBuilder.ToIndexDefinition(documentStore.Conventions))); #endregion - } - // + + } + #region indexes_CreationTask - private class MyTsIndex : AbstractTimeSeriesIndexCreationTask + public class Stocks_ByTradeVolume : AbstractTimeSeriesIndexCreationTask { - public MyTsIndex() + public Stocks_ByTradeVolume() { - AddMap( - "HeartRate", - timeSeries => from ts in timeSeries - from entry in ts.Entries - select new - { - HeartBeat = entry.Values[0], - entry.Timestamp.Date, - }); + AddMap("StockPrice", + timeseries => from ts in timeseries + from entry in ts.Entries + select new + { + TradeVolume = entry.Values[4], + entry.Timestamp.Date + }); } } #endregion - //strong/query syntax multi map #region indexes_MultiMapCreationTask - private class MyMultiMapTsIndex : AbstractMultiMapTimeSeriesIndexCreationTask + public class Vehicles_ByLocation : AbstractMultiMapTimeSeriesIndexCreationTask { - public MyMultiMapTsIndex() + public Vehicles_ByLocation() { - AddMap( - "HeartRate", + AddMap( + "GPS_Coordinates", timeSeries => from ts in timeSeries - from entry in ts.Entries - select entry.Values[0]); + from entry in ts.Entries + select new + { + Latitude = entry.Values[0], + Longitude = entry.Values[0], + entry.Timestamp + }); - AddMap( - "HeartRate", + AddMap( + "GPS_Coordinates", timeSeries => from ts in timeSeries - from entry in ts.Entries - select entry.Values[0]); + from entry in ts.Entries + select new + { + Latitude = entry.Values[0], + Longitude = entry.Values[0], + entry.Timestamp + }); } } #endregion #region indexes_MapReduce - private class MyMapReduceTSIndex : AbstractTimeSeriesIndexCreationTask + public class TradeVolume_PerDay_ByCountry : + AbstractTimeSeriesIndexCreationTask { public class Result { public double TradeVolume { get; set; } public DateTime Date { get; set; } - public string CompanyID { get; set; } + public string Country { get; set; } } - public MyMapReduceTSIndex() + public TradeVolume_PerDay_ByCountry() { AddMap( - "HeartRate", + "StockPrice", timeSeries => from ts in timeSeries - from entry in ts.Entries - select new Result - { - TradeVolume = entry.Values[4], - CompanyID = ts.DocumentId, - Date = entry.Timestamp, - }); - - Reduce = results => from r in results - group r by new { r.Date, r.CompanyID } into g - select new Result(); + let company = LoadDocument(ts.DocumentId) + from entry in ts.Entries + select new Result + { + TradeVolume = entry.Values[4], + Date = entry.Timestamp.Date, + Country = company.Address.Country + }); + + Reduce = results => + from r in results + group r by new { r.Date, r.Country } into g + select new Result + { + TradeVolume = g.Sum(x => x.TradeVolume), + Date = g.Key.Date, + Country = g.Key.Country + }; } } #endregion } + internal class Ship + { + } + + internal class Plane + { + } + internal class Employee { } @@ -137,5 +166,11 @@ internal class User internal class Company { + public Address Address { get; set; } + } + + internal class Address + { + public string Country { get; set; } } } From 68ede74d7a1ced06c7a04587a538590aec315e1b Mon Sep 17 00:00:00 2001 From: reebhub Date: Mon, 15 Jun 2020 08:31:41 +0300 Subject: [PATCH 33/56] RDoc-1703_TimeSeries Queries restructure complete --- .../aggregation-and-projection.markdown | 187 +++++++++++------- .../querying/choosing-query-range.markdown | 22 ++- .../timeseries/querying/filtering.markdown | 56 +++--- .../TimeSeries/TimeSeriesTests.cs | 125 ++++++++++-- 4 files changed, 276 insertions(+), 114 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown index 60e43c790d..c0ba6dcf04 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown @@ -6,45 +6,46 @@ {NOTE: } * **Aggregation** - Query result-sets can be aggregated (grouped) by a chosen time frame, - e.g. a day (grouping the results in multiple day-long data frames). - -* **Projection** - Several criteria (e.g. `Min`, `Max`, `Average`) can be used to - `select` results and project them to the client. - Selecting results from an aggregated result-set, will select - matching results from each group (e.g. the Min value of each group). - + Queris can easily create powerful statistics by aggregating time-series (or + chosen ranges of time-series entries) into groups by chosen time frames like + an hour or a week, and retrieving values from each group by criteria like `Min` + for the lowest value, `Count` for the number of values in the group, etc. + +* **Projection** by criteria + Queries can explicitly select the criteria by which values would be retrieved + and projected to the client. + When a query does **not** select specific criteria, RavenDB will consider it + an implicit selection of **all** criteria and project to the client the values + from each group, that match each criteria. + + {INFO: Projecting values from Aggregated and Non-Aggregated result-sets} + + * When values are selected from a time-series (or a range of time-series + entries) that **has** been aggregated, they are selected per-group. + * When values are selected from a series or a range that **hasn't** + been aggregated, they are selected from the entire result-set. + + {INFO/} + + + + * In this page: - * [Aggregation](../../../) - * [Projection](../../../) - * [Client Usage Samples](../../../) + * [Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projection#aggregation-and-projection) + * [Client Usage Samples](../../../document-extensions/timeseries/querying/aggregation-and-projection#client-usage-samples) {NOTE/} --- -{PANEL: Aggregation} +{PANEL: Aggregation and Projection} -Use `group by` to group the result-set in groups of a chosen resolution. +In an RQL query, use the `group by` expression to aggregate +time-series (or ranges of time-series entries) in groups by +a chosen resolution, and the `select` keyword to choose and +project entries by a chosen criteria. -{CODE-BLOCK: JSON} -from Users as u where Age < 30 -select timeseries( - from HeartRate - between '2020-05-27T00:00:00.0000000Z' - and '2020-06-23T00:00:00.0000000Z' - where Tag='watches/fitbit' - group by '7 days' -) -{CODE-BLOCK/} - -* `group by '7 days'` - In this case: the result-set will be composed of groups of Heartrate entries, - each group containing 7 days of entries (first group: 2020-05-27 to - 2020-06-02, second group: 2020-06-03 to 2020-06-09, and so on). - -{INFO: You can group by these time units:} +{INFO: You can aggregate entries by these time units:} * **Milliseconds** * **Seconds** @@ -57,36 +58,7 @@ select timeseries( {INFO/} -{PANEL/} - -{PANEL: Projection} - -Use `select` to choose the values that would be projected to the client. - -{CODE-BLOCK: JSON} -from Users as u where Age < 30 -select timeseries( - from HeartRate - between '2020-05-27T00:00:00.0000000Z' - and '2020-06-23T00:00:00.0000000Z' - where Value < 80 - group by '7 days' - select max() -) -{CODE-BLOCK/} - -* `select max()` - * Since each time-series entry may have multiple values, - max() will check all the first values of time-series entries and - find the highest first-value, check all the second values of time-series - entries and find the highest second-value, and so on. - * The projected result will be an array of values. - The array's length will be as the length of the series-entry with highest - number of values. - Its first value will be the highest first value, its second value - the highest second value, and so on. - -{INFO: You can select values by these criteria:} +{INFO: You can `select` values for projection by these criteria:} * **Min()** - the lowest value * **Max()** - the highest value @@ -98,14 +70,77 @@ select timeseries( {INFO/} -{INFO: Selecting values from aggregated and non-aggregated result-sets} - -* When values are selected from a result-set that **hasn't** been aggregated (grouped), - they are selected from the entire result-set. -* When values are selected from a result-set that **has** been aggregated, - they are selected per-group. - -{INFO/} +* In this sample, we group entries of the HeartRate time-series. + Each HeartRate entry holds a single value. + {CODE-BLOCK: JSON} +from Users as u where Age < 30 + select timeseries( + from HeartRate between + '2020-05-17T00:00:00.0000000Z' + and '2020-05-23T00:00:00.0000000Z' + where Tag == 'watches/fitbit' + group by '1 days' + select min(), max() + ) + {CODE-BLOCK/} + * **group by '1 days'** + We group each user's HeartRate time-series entries + in consequtive 1-day groups. + * **select min(), max()** + We then select the lowest (`Min`) and highest (`Max`) + values of each group, and project them to the client. + +* In this sample, we group entries of the StockPrice time-series. + Each StockPrice entry holds five values: + Values[0] - **Open** price + Values[1] - **Close** price + Values[2] - **High** price + Values[3] - **Low** price + Values[4] - Trade **Volume** + {CODE-BLOCK: JSON} +declare timeseries SP(c) +{ + from c.StockPrice + where Values[4] > 500000 + group by '7 day' + select max(), min() +} +from Companies as c +where c.Address.Country = 'USA' +select c.Name, SP(c) + {CODE-BLOCK/} + * **group by '7 day'** + We group each company's StockPrice time-series entries + in consequtive 7-day groups. + * **select max(), min()** + We then select the lowest (`Min`) and highest (`Max`) + values of each group, and project them to the client. + Since each entry holds 5 values, the query will project + 5 `Min` values for each group (the lowest Values[0], + the lowest Values[1], etc.) and 5 `Max` values for each + group (the highest Values[0], the highest Values[1], etc.). + * **select c.Name, SP(c)** + Projecting the company's name along with the `Min` and `Max` + time-series values clarifies the query results. + +* This sample is similar to the previous one, except that + time-series entries are **not aggregated**. + {CODE-BLOCK: JSON} +declare timeseries SP(c) +{ + from c.StockPrice + where Values[4] > 500000 + select max(), min() +} +from Companies as c +where c.Address.Country = 'USA' +select c.Name, SP(c) + {CODE-BLOCK/} + * **select max(), min()** + Since there is no aggregation, time-series entries are + selected from the entire result-set and only 10 values + will be projected to the client: 5 Min values and 5 Max + values for the entire range. {PANEL/} @@ -117,6 +152,20 @@ You can run queries from your client using raw RQL and LINQ. * Learn how to run a LINQ time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). {INFO/} +To aggregate time-series entries, use `group by` in a raw RQL query or `GroupBy()` +in a LINQ query. +To select time-series values for projection, use `select` in a raw RQL query +or `Select()` in a LINQ query. + +* These are three forms of the same query, using raw RQL "declare" and "select" syntaxes + and LINQ. + {CODE-TABS} + {CODE-TAB:csharp:Raw-RQL-Select-Syntax ts_region_Raw-RQL-Select-Syntax-Aggregation-and-Projection-StockPrice@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TAB:csharp:Raw-RQL-Declare-Syntax ts_region_Raw-RQL-Declare-Syntax-Aggregation-and-Projection-StockPrice@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TAB:csharp:LINQ ts_region_LINQ-Aggregation-and-Projection-StockPrice@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TABS/} + + {PANEL/} ## Related articles diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown index 679c962ba7..260c25c832 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown @@ -20,8 +20,8 @@ {PANEL: Choosing Query Range} -Use `between` and `and` to specify a range of time-series entries to query. -The entries are chosen by their timestamps, in UTC format. +In an RQL query, use `between` and `and` to specify a range of time-series +entries to query. The entries are chosen by their timestamps, in UTC format. {CODE-BLOCK: JSON} from Users as jog where Age < 30 @@ -59,17 +59,22 @@ select timeseries( {INFO: } You can run queries from your client using raw RQL and LINQ. + * Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). * Learn how to run a LINQ time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). + {INFO/} --- #### Choosing a Range Using Raw RQL -In this sample, a raw RQL query retrieves 24 hours of HeartRate data from users under the age of 30. -The query does not aggregate data, so we retrieve its results using a `TimeSeriesRawResult` list. -We define an **offset**, to adjust retrieved results to the client's local time-zone. +To choose a range as part of a raw RQL query, use the `between` and `and` keywords. + +In this sample, a raw RQL query chooses the profiles of users under the age of 30 and +retrieves a 24-hours range from each. +An **offset** is defined, adding two hours to retrieved timestamps to adjust them +to the client's local time-zone. {CODE-TABS} {CODE-TAB:csharp:Declare-Syntax ts_region_Raw-Query-Non-Aggregated-Declare-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {CODE-TAB:csharp:Select-Syntax ts_region_Raw-Query-Non-Aggregated-Select-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -79,9 +84,10 @@ We define an **offset**, to adjust retrieved results to the client's local time- #### Choosing a Range Using LINQ -To choose a range using LINQ expressions, invoke the `RavenQuery.TimeSeries` overload -that specifies a range by passing it a **range start** and a **range end** arguments. - +To choose a range as part of a LINQ query, pass `RavenQuery.TimeSeries` +a `from` and a `to` DateTime values. +Omitting these values will load the entire series. + * **`RavenQuery.TimeSeries` Definitions** {CODE RavenQuery-TimeSeries-Definition-Without-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {CODE RavenQuery-TimeSeries-Definition-With-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown index e3dc078625..34acc49e9b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown @@ -11,14 +11,14 @@ tag is "Thermometer No. 3"). * Entries can also be filtered by the **contents of a document they refer to**. - A time-series entry's tag can contain the **ID of a document**. - In your query, you can **load the document** that the entry refers to. - and **filter your results by its contents**. + A time-series entry's tag can contain the **ID of a document**. + A query can **load the document** that the entry refers to, check + its properties and filter time-series entries by them. * In this page: - * [Filtering Results](../../../) - * [Using Tags as References](../../../) - * [Client Usage Samples](../../../) + * [Filtering Results](../../../document-extensions/timeseries/querying/filtering#filtering) + * [Using Tags as References](../../../document-extensions/timeseries/querying/filtering#using-tags-as-references---) + * [Client Usage Samples](../../../document-extensions/timeseries/querying/filtering#client-usage-samples) {NOTE/} @@ -26,7 +26,8 @@ {PANEL: Filtering} -Use `where` to filter time-series entries by their **tags** or **values**. +In an RQL query, use the `where` keyword to filter time-series entries +by their **tags** or **values**. {CODE-BLOCK: JSON} from Users as u where Age < 30 @@ -56,26 +57,22 @@ loaded document**, as we do in the following example. from Companies as c where c.Address.Country = "USA" select timeseries( from StockPrice - load Tag as emp - where emp.Title == "Vice President, Sales" + load Tag as emp + where emp.Title == "Sales Representative" ) {CODE-BLOCK/} -* `from Companies as c where c.Address.Country = "USA"` - Here, we choose companies that reside in the USA. -* `from StockPrice` - Here we choose these companies' **StockPrice** time-series. * `load Tag as emp` - We know in advance, that the tag of each time-series entry contains + We know in advance that the tag of each StockPrice entry contains the ID of an Employee document. - Here, we use the `load tag` expression to load the employee profile - referred to by each tag. -* `where emp.Title == "Vice President, Sales"` - And finally, we filter time-series entries by the **Title** property - of employee documents they refer to. - -The result-set of this sample includes time-series entries with -references (IDs stored in their tags) to a Sales Vice-President's profile. + Here, we use `load tag` to load the employee profile referred to + by each tag. +* `where emp.Title == "Sales Representative"` + Here, we filter time-series entries by the **Title** property + of the employee documents the entries refer to. + If the sales representatives the entries refer to are stock brokers + for example, we can now [group](), for example, the successful ones + whose services we'd like to hire. {PANEL/} @@ -83,10 +80,25 @@ references (IDs stored in their tags) to a Sales Vice-President's profile. {INFO: } You can run queries from your client using raw RQL and LINQ. + * Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). * Learn how to run a LINQ time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). + {INFO/} +To filter results, use `where` in a raw RQL query or `Where()` in a LINQ query. +To filter results by a tag reference to a document, +use `load tag` in a raw RQL query or `LoadTag()` in a LINQ query. + +* In this sample, we send the query we + [presented above](../../../document-extensions/timeseries/querying/filtering#using-tags-as-references---) + to the server in raw RQL and in LINQ format. + + {CODE-TABS} + {CODE-TAB:csharp:Raw-RQL ts_region_Filter-By-load-Tag-Raw-RQL@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TAB:csharp:LINQ ts_region_Filter-By-LoadTag-LINQ@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TABS/} + {PANEL/} ## Related articles diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index 859da8de62..ff9222c4b4 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -726,7 +726,7 @@ from HeartRate .Select(q => RavenQuery.TimeSeries(q, "HeartRate", baseline, baseline.AddDays(3)) - // Filter Time-Series entries: choose only those with a "watches/fitbit" tag. + // Filter time-series entries by their tag. .Where(ts => ts.== "watches/fitbit") #endregion @@ -737,27 +737,48 @@ from HeartRate using (var session = store.OpenSession()) { - #region ts_region_LINQ-5-LoadTag - IRavenQueryable query = - (IRavenQueryable)session.Query() + // May 17 2020, 00:00:00 + var baseline = new DateTime(2020, 5, 17, 00, 00, 00); + + #region ts_region_Filter-By-load-Tag-Raw-RQL + IRawDocumentQuery nonAggregatedRawQuery = + session.Advanced.RawQuery(@" + from Companies as c where c.Address.Country = 'USA' + select timeseries( + from StockPrice + load Tag as emp + where emp.Title == 'Sales Representative' + )"); - .Where(c => c.Address.Country == "USA") + var result = nonAggregatedRawQuery.ToList(); + #endregion + } + } - .Select(q => RavenQuery.TimeSeries(q, "StockPrice") + // Query - LINQ format - LoadTag to find a stock broker + using (var session = store.OpenSession()) + { + var baseline = new DateTime(2020, 5, 17, 00, 00, 00); - // Choose local brokers - .LoadTag() - .Where((ts, src) => src.Address.Country == "USA") + #region ts_region_Filter-By-LoadTag-LINQ + IRavenQueryable query = + (IRavenQueryable)session.Query() - .ToList()); + .Where(c => c.Address.Country == "USA") + .Select(q => RavenQuery.TimeSeries(q, "StockPrice") + + .LoadTag() + .Where((ts, src) => src.Title == "Sales Representative") + + .ToList()); - var result = query.ToList(); - #endregion + var result = query.ToList(); + #endregion + } - } - // Query - LINQ format - Aggregation - using (var session = store.OpenSession()) + // Query - LINQ format - Aggregation + using (var session = store.OpenSession()) { var baseline = DateTime.Today; @@ -775,7 +796,81 @@ from HeartRate .ToList()); #endregion + + // Query - LINQ format - StockPrice + using (var session = store.OpenSession()) + { + var baseline = new DateTime(2020, 5, 17); + + #region ts_region_LINQ-Aggregation-and-Projection-StockPrice + IRavenQueryable query = session.Query() + .Where(c => c.Address.Country == "USA") + .Select(q => RavenQuery.TimeSeries(q, "StockPrice") + .Where(ts => ts.Values[4] > 500000) + .GroupBy(g => g.Days(7)) + .Select(g => new + { + Min = g.Min(), + Max = g.Max() + }) + .ToList()); + var result = query.ToList(); + #endregion + } + + using (var session = store.OpenSession()) + { + var baseline = new DateTime(2020, 5, 17); + + var start = baseline; + var end = baseline.AddHours(1); + + #region ts_region_Raw-RQL-Select-Syntax-Aggregation-and-Projection-StockPrice + IRawDocumentQuery aggregatedRawQuery = + session.Advanced.RawQuery(@" + from Companies as c + where c.Address.Country = 'USA' + select timeseries ( + from StockPrice + where Values[4] > 500000 + group by '7 day' + select max(), min() + ) + "); + + var aggregatedRawQueryResult = aggregatedRawQuery.ToList(); + #endregion + } + + // Raw Query - StockPrice + using (var session = store.OpenSession()) + { + var baseline = new DateTime(2020, 5, 17); + + var start = baseline; + var end = baseline.AddHours(1); + + #region ts_region_Raw-RQL-Declare-Syntax-Aggregation-and-Projection-StockPrice + IRawDocumentQuery aggregatedRawQuery = + session.Advanced.RawQuery(@" + declare timeseries SP(c) { + from c.StockPrice + where Values[4] > 500000 + group by '7 day' + select max(), min() + } + from Companies as c + where c.Address.Country = 'USA' + select c.Name, SP(c)" + ); + + var aggregatedRawQueryResult = aggregatedRawQuery.ToList(); + #endregion + } + + + var result = query.ToList(); } // index queries From 1111475935b4218c6c5580d40872e62f7d4556d5 Mon Sep 17 00:00:00 2001 From: reebhub Date: Mon, 15 Jun 2020 16:40:42 +0300 Subject: [PATCH 34/56] RDoc-1703_TimeSeries - prioritize LINQ queries over raw RQL queries - query improvements --- .../query-time-series/.docs.json | 8 +- .../aggregation-and-projection.markdown | 78 ++++++++++--------- .../querying/choosing-query-range.markdown | 38 ++++----- .../timeseries/querying/filtering.markdown | 38 ++++----- 4 files changed, 80 insertions(+), 82 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/.docs.json index 6fc170bc7a..b6102633ae 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/.docs.json @@ -1,13 +1,13 @@ [ { - "Path": "raw-rql-queries.markdown", - "Name": "Raw RQL Queries", + "Path": "linq-queries.markdown", + "Name": "LINQ Queries", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "linq-queries.markdown", - "Name": "LINQ Queries", + "Path": "raw-rql-queries.markdown", + "Name": "Raw RQL Queries", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown index c0ba6dcf04..0e400ce628 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown @@ -70,7 +70,8 @@ project entries by a chosen criteria. {INFO/} -* In this sample, we group entries of the HeartRate time-series. +* In this sample, we group entries of users' HeartRate time-series + and project the lowest and highest values of each group. Each HeartRate entry holds a single value. {CODE-BLOCK: JSON} from Users as u where Age < 30 @@ -84,19 +85,20 @@ from Users as u where Age < 30 ) {CODE-BLOCK/} * **group by '1 days'** - We group each user's HeartRate time-series entries - in consequtive 1-day groups. + We group each user's HeartRate time-series entries in consequtive 1-day groups. * **select min(), max()** - We then select the lowest (`Min`) and highest (`Max`) - values of each group, and project them to the client. - -* In this sample, we group entries of the StockPrice time-series. - Each StockPrice entry holds five values: - Values[0] - **Open** price - Values[1] - **Close** price - Values[2] - **High** price - Values[3] - **Low** price - Values[4] - Trade **Volume** + We select the lowest and highest values of each group and project them to the client. + +* In this sample, we group entries of companies' StockPrice time-series + in consequtive 7-day groups and project the highest and lowest values + of each group. + Each StockPrice entry holds five values, the query returns the `Max` + and `Min` values of each: + Values[0] - **Open** - stock price when the trade opens + Values[1] - **Close** - stock price when the trade ends + Values[2] - **High** - highest stock price during trade time + Values[3] - **Low** - lowest stock price during trade time + Values[4] - **Volume** - overall trade volume {CODE-BLOCK: JSON} declare timeseries SP(c) { @@ -109,22 +111,24 @@ from Companies as c where c.Address.Country = 'USA' select c.Name, SP(c) {CODE-BLOCK/} + * **where Values[4] > 500000** + Query stock price behavior when the trade volume is high. * **group by '7 day'** - We group each company's StockPrice time-series entries - in consequtive 7-day groups. + Group each company's StockPrice entries in consequtive 7-day groups. * **select max(), min()** - We then select the lowest (`Min`) and highest (`Max`) - values of each group, and project them to the client. + Select the highest (`Max`) and lowest (`Min`) + values of each group and project them to the client. Since each entry holds 5 values, the query will project - 5 `Min` values for each group (the lowest Values[0], - the lowest Values[1], etc.) and 5 `Max` values for each - group (the highest Values[0], the highest Values[1], etc.). + 5 `Max` values for each group (the highest Values[0], highest + Values[1], etc.) and 5 `Min` values for each group (the lowest + Values[0], lowest Values[1], etc.). * **select c.Name, SP(c)** - Projecting the company's name along with the `Min` and `Max` - time-series values clarifies the query results. + Project the company's name along with the time-series query + results to make the results easier to read and understand. -* This sample is similar to the previous one, except that - time-series entries are **not aggregated**. +* This sample is similar to the one above it, except that time-series + entries are **not aggregated**, so the highest and lowest values are + collected not from each group but from the entire result-set. {CODE-BLOCK: JSON} declare timeseries SP(c) { @@ -137,10 +141,9 @@ where c.Address.Country = 'USA' select c.Name, SP(c) {CODE-BLOCK/} * **select max(), min()** - Since there is no aggregation, time-series entries are - selected from the entire result-set and only 10 values - will be projected to the client: 5 Min values and 5 Max - values for the entire range. + Since there is no aggregation, the entire result-set is queried + and the results include only the all-time highest and lowest Open, + Close, High, Low and Volume values. {PANEL/} @@ -148,24 +151,25 @@ select c.Name, SP(c) {INFO: } You can run queries from your client using raw RQL and LINQ. -* Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). + * Learn how to run a LINQ time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). +* Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). + {INFO/} -To aggregate time-series entries, use `group by` in a raw RQL query or `GroupBy()` -in a LINQ query. -To select time-series values for projection, use `select` in a raw RQL query -or `Select()` in a LINQ query. +To aggregate time-series entries, use `GroupBy()` in a LINQ query +or `group by` in a raw RQL query. +To select time-series values for projection, use `Select()` in a LINQ query +or `select` in a raw RQL query. -* These are three forms of the same query, using raw RQL "declare" and "select" syntaxes - and LINQ. +* Here we express the query we've discussed above using + LINQ and both RQL syntaxes. {CODE-TABS} + {CODE-TAB:csharp:LINQ ts_region_LINQ-Aggregation-and-Projection-StockPrice@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {CODE-TAB:csharp:Raw-RQL-Select-Syntax ts_region_Raw-RQL-Select-Syntax-Aggregation-and-Projection-StockPrice@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {CODE-TAB:csharp:Raw-RQL-Declare-Syntax ts_region_Raw-RQL-Declare-Syntax-Aggregation-and-Projection-StockPrice@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - {CODE-TAB:csharp:LINQ ts_region_LINQ-Aggregation-and-Projection-StockPrice@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {CODE-TABS/} - {PANEL/} ## Related articles diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown index 260c25c832..10aac705a4 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown @@ -11,8 +11,8 @@ * In this page: * [Choosing Query Range](../../../document-extensions/timeseries/querying/choosing-query-range#choosing-query-range) * [Client Usage Samples](../../../document-extensions/timeseries/querying/choosing-query-range#client-usage-samples) - * [Choosing a Range Using Raw RQL](../../../document-extensions/timeseries/querying/choosing-query-range#choosing-a-range-using-raw-rql) * [Choosing a Range Using LINQ](../../../document-extensions/timeseries/querying/choosing-query-range#choosing-a-range-using-linq) + * [Choosing a Range Using Raw RQL](../../../document-extensions/timeseries/querying/choosing-query-range#choosing-a-range-using-raw-rql) {NOTE/} @@ -34,8 +34,8 @@ select timeseries( {CODE-BLOCK/} * `between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z'` - If the query ends here, all entries between the two timestamps will be retrieved. - If the query continues, any additional filtering will pick data from this range. + Retrieve all entries between these two timestamps. + (If the query continues, any additional filtering will pick data from this range.) {INFO: } You can use the Studio to try these queries. @@ -60,28 +60,13 @@ select timeseries( {INFO: } You can run queries from your client using raw RQL and LINQ. -* Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). * Learn how to run a LINQ time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). +* Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). {INFO/} --- -#### Choosing a Range Using Raw RQL - -To choose a range as part of a raw RQL query, use the `between` and `and` keywords. - -In this sample, a raw RQL query chooses the profiles of users under the age of 30 and -retrieves a 24-hours range from each. -An **offset** is defined, adding two hours to retrieved timestamps to adjust them -to the client's local time-zone. - {CODE-TABS} - {CODE-TAB:csharp:Declare-Syntax ts_region_Raw-Query-Non-Aggregated-Declare-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - {CODE-TAB:csharp:Select-Syntax ts_region_Raw-Query-Non-Aggregated-Select-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - {CODE-TABS/} - ---- - #### Choosing a Range Using LINQ To choose a range as part of a LINQ query, pass `RavenQuery.TimeSeries` @@ -104,6 +89,21 @@ Omitting these values will load the entire series. * In this sample, we select a three-days range from the HeartRate time-series. {CODE ts_region_LINQ-3-Range-Selection@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +--- + +#### Choosing a Range Using Raw RQL + +To choose a range as part of a raw RQL query, use the `between` and `and` keywords. + +In this sample, a raw RQL query chooses the profiles of users under the age of 30 and +retrieves a 24-hours range from each. +An **offset** is defined, adding two hours to retrieved timestamps to adjust them +to the client's local time-zone. + {CODE-TABS} + {CODE-TAB:csharp:Declare-Syntax ts_region_Raw-Query-Non-Aggregated-Declare-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TAB:csharp:Select-Syntax ts_region_Raw-Query-Non-Aggregated-Select-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TABS/} + {PANEL/} ## Related articles diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown index 34acc49e9b..2768ff4084 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown @@ -40,9 +40,8 @@ select timeseries( {CODE-BLOCK/} * `where Tag='watches/fitbit'` - In this example we retrieve time-series entries whose tag is 'watches/fitbit'. - To filter entries by their by value, use **Value**. E.g.: - `where Value < 80` + Retrieve time-series entries whose tag is 'watches/fitbit'. + To filter entries by their by value use **Value**, e.g.`where Value < 80`. --- @@ -54,25 +53,20 @@ Use `load Tag ` with `where` to **filter your results by properties of the loaded document**, as we do in the following example. {CODE-BLOCK: JSON} -from Companies as c where c.Address.Country = "USA" +from Companies as Company where Company.Address.Country = "USA" select timeseries( from StockPrice - load Tag as emp - where emp.Title == "Sales Representative" -) + load Tag as Broker + where Broker.Title == "Sales Representative" + ) {CODE-BLOCK/} -* `load Tag as emp` - We know in advance that the tag of each StockPrice entry contains - the ID of an Employee document. - Here, we use `load tag` to load the employee profile referred to - by each tag. -* `where emp.Title == "Sales Representative"` - Here, we filter time-series entries by the **Title** property - of the employee documents the entries refer to. - If the sales representatives the entries refer to are stock brokers - for example, we can now [group](), for example, the successful ones - whose services we'd like to hire. +* `load Tag as Broker` + Load the document each entry's tag refers to. + Here, we load profiles of potential stock brokers. +* `where Broker.Title == "Sales Representative"` + Filter time-series entries so we remain with those + referring to sales representatives. {PANEL/} @@ -81,22 +75,22 @@ select timeseries( {INFO: } You can run queries from your client using raw RQL and LINQ. -* Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). * Learn how to run a LINQ time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). +* Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). {INFO/} -To filter results, use `where` in a raw RQL query or `Where()` in a LINQ query. +To filter results, use `Where()` in a LINQ query or `where` in a raw RQL query. To filter results by a tag reference to a document, -use `load tag` in a raw RQL query or `LoadTag()` in a LINQ query. +use `LoadTag()` in a LINQ query or `load tag` in a raw RQL query. * In this sample, we send the query we [presented above](../../../document-extensions/timeseries/querying/filtering#using-tags-as-references---) to the server in raw RQL and in LINQ format. {CODE-TABS} - {CODE-TAB:csharp:Raw-RQL ts_region_Filter-By-load-Tag-Raw-RQL@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {CODE-TAB:csharp:LINQ ts_region_Filter-By-LoadTag-LINQ@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TAB:csharp:Raw-RQL ts_region_Filter-By-load-Tag-Raw-RQL@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {CODE-TABS/} {PANEL/} From 7607ea0b7289964ee85a738cd28e2aaad1321185 Mon Sep 17 00:00:00 2001 From: morhilai Date: Mon, 15 Jun 2020 16:59:26 +0300 Subject: [PATCH 35/56] RDoc-1703_TimeSeries Indexing; structural changes - Time-Series > Indexing folder replaced with one page `indexing.markdown`, `Indexing.cs` moved one directory up as well. --- .../document-extensions/timeseries/.docs.json | 4 +- ...ap-indexing.markdown => indexing.markdown} | 26 +++++++------ .../timeseries/indexing/.docs.json | 14 ------- .../indexing/map-reduce-indexing.markdown | 37 ------------------- .../indexing/multi-map-indexing.markdown | 1 - .../{Indexing/indexing.cs => Indexing.cs} | 0 6 files changed, 16 insertions(+), 66 deletions(-) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/{indexing/map-indexing.markdown => indexing.markdown} (84%) delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/.docs.json delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-reduce-indexing.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/multi-map-indexing.markdown rename Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/{Indexing/indexing.cs => Indexing.cs} (100%) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json index 43d4ba5305..d0b455ed71 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json @@ -16,8 +16,8 @@ "Mappings": [] }, { - "Path": "/indexing", - "Name": "Indexing", + "Path": "indexing.markdown", + "Name": "Indexing Time-Series", "Mappings": [] }, { diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown similarity index 84% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown index c9037be198..78ae4acc47 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown @@ -31,7 +31,7 @@ This one really makes no difference, exists so features can be filled in in the Show in one example `TimeSeriesIndexDefinitionBuilder : AbstractIndexDefinitionBuilder` -####`TimeSeriesSegment` object +#### `TimeSeriesSegment` object Time-series are divided into **segments** in storage, each containing several consecutive entries. The number of entries per segment can vary widely depending on the size and compressibility of the entries. @@ -55,30 +55,32 @@ the segment, as well as some aggregate values that summarize the data in the seg {PANEL: Examples} Creating a time-series index using `TimeSeriesIndexDefinition`: -{CODE indexes_IndexDefinition@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} +{CODE indexes_IndexDefinition@DocumentExtensions\TimeSeries\Indexing.cs /} Creating a time-series index using `AbstractTimeSeriesIndexCreationTask`: -{CODE indexes_CreationTask@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} +{CODE indexes_CreationTask@DocumentExtensions\TimeSeries\Indexing.cs /} Creating a multi-map time-series index: -{CODE indexes_MultiMapCreationTask@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} +{CODE indexes_MultiMapCreationTask@DocumentExtensions\TimeSeries\Indexing.cs /} Creating a map-reduce index: -{CODE indexes_MapReduce@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} +{CODE indexes_MapReduce@DocumentExtensions\TimeSeries\Indexing.cs /} Creating a builder for time-series indexes using `TimeSeriesIndexDefinitionBuilder`, and using it to create an index. -{CODE indexes_IndexDefinitionBuilder@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} +{CODE indexes_IndexDefinitionBuilder@DocumentExtensions\TimeSeries\Indexing.cs /} {PANEL/} + ## Related articles **Studio Articles**: [Studio Time Series Management]() -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() +**Indexes**: +[What are Indexes](../../indexes/what-are-indexes) +[Creating and Deploying Indexes](../../indexes/creating-and-deploying) +[Map Indexes](../../indexes/map-indexes) +[Creating and Deploying Indexes](../../indexes/creating-and-deploying) +[Multi-Map Indexes](../../indexes/multi-map-indexes) +[Map-Reduce Indexes](../../indexes/map-reduce-indexes) **Client-API - Operations Articles**: [Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/.docs.json deleted file mode 100644 index c9598c56a2..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/.docs.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "Path": "map-indexing.markdown", - "Name": "Map Indexing", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "map-reduce-indexing.markdown", - "Name": "Map Reduce Indexing", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - } -] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-reduce-indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-reduce-indexing.markdown deleted file mode 100644 index c4f89ac0e9..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-reduce-indexing.markdown +++ /dev/null @@ -1,37 +0,0 @@ -# Time Series Map Reduce Indexing ---- - -{NOTE: } - -* - -* In this page: - * []() - * []() -{NOTE/} - ---- - -{PANEL: } - -- What are Times Series Map Reduce indexes -- Samples - -{PANEL/} - -{PANEL: } -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/multi-map-indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/multi-map-indexing.markdown deleted file mode 100644 index 106b6278b2..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/multi-map-indexing.markdown +++ /dev/null @@ -1 +0,0 @@ -# multimapi diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing.cs similarity index 100% rename from Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs rename to Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing.cs From 9faa9d524ae4a6ba500a15739d8ddccc408908d1 Mon Sep 17 00:00:00 2001 From: morhilai Date: Tue, 16 Jun 2020 00:58:48 +0300 Subject: [PATCH 36/56] RDoc-1703_TimeSeries indexing 16/6/20 --- .../document-extensions/timeseries/.docs.json | 78 ++++++++-------- .../timeseries/indexing.markdown | 88 ++++++++++++++----- .../DocumentExtensions/TimeSeries/Indexing.cs | 1 - 3 files changed, 104 insertions(+), 63 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json index d0b455ed71..ffaff149dc 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json @@ -1,41 +1,41 @@ [ - { - "Path": "overview.markdown", - "Name": "Overview", - "DiscussionId": "2bc22ef1-450e-4ae9-aa6f-56b0b47977d9", - "Mappings": [] - }, - { - "Path": "/client-api", - "Name": "Client API", - "Mappings": [] - }, - { - "Path": "/querying", - "Name": "Querying", - "Mappings": [] - }, - { - "Path": "indexing.markdown", - "Name": "Indexing Time-Series", - "Mappings": [] - }, - { - "Path": "rollup-and-retention.markdown", - "Name": "Rollup and Retention", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - - { - "Path": "/timeseries-and-other-features", - "Name": "Time Series and Other Features", - "Mappings": [] - }, - { - "Path": "design.markdown", - "Name": "Design", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - } + { + "Path": "overview.markdown", + "Name": "Overview", + "DiscussionId": "2bc22ef1-450e-4ae9-aa6f-56b0b47977d9", + "Mappings": [] + }, + { + "Path": "/client-api", + "Name": "Client API", + "Mappings": [] + }, + { + "Path": "/querying", + "Name": "Querying", + "Mappings": [] + }, + { + "Path": "indexing.markdown", + "Name": "Indexing Time-Series", + "DiscussionId": "cc0d8edb-520e-4832-8413-293afc6e2858", + "Mappings": [] + }, + { + "Path": "rollup-and-retention.markdown", + "Name": "Rollup and Retention", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "/timeseries-and-other-features", + "Name": "Time Series and Other Features", + "Mappings": [] + }, + { + "Path": "design.markdown", + "Name": "Design", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } ] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown index 78ae4acc47..fe175f8760 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown @@ -3,46 +3,85 @@ {NOTE: } -* - +Time-series indexes are used to index time-series data, as opposed to document fields. +The API for creating time-series indexes is very similar to (and inherits from) the +API for [creating document indexes](../../indexes/creating-and-deploying). + +{INFO: } +Unlike document indexes, time-series indexes currently support only LINQ syntax. +JavaScript syntax is not supported. +{INFO/} + * In this page: - * []() - * []() + * [Syntax](../../document-extensions/indexing#syntax) + * [Examples](../../document-extensions/indexing#examples) + {NOTE/} --- -{PANEL: } +{PANEL: Syntax } + +The are two main ways to create a time-series index: + +#### 1) Create a class that inherits from `AbstractTimeSeriesIndexCreationTask<>` + +{CODE-BLOCK: csharp} +public abstract class AbstractTimeSeriesIndexCreationTask : + AbstractIndexCreationTaskBase +{ + protected void AddMap(string timeSeries, + Expression, + IEnumerable>> map); + + protected void AddMapForAll(Expression, + IEnumerable>> map); +} -### Indexing Time Series +// Index only time-series that belong to documents +// of a specified type +public class AbstractTimeSeriesIndexCreationTask { } -Time-series indexes are used to index time-series data, as opposed to documents. -The API for creating time-series indexes is very similar to creating any other index, -with a few minor differences described here: +// Specify both a document type and a reduce type +public class AbstractTimeSeriesIndexCreationTask { } +{CODE-BLOCK/} -The two main ways to create time-series indexes are: -1. Create a class that inherits from `AbstractTimeSeriesIndexCreationTask`, or in the -case of a multi-map index, use `AbstractMultiMapTimeSeriesIndexCreationTask`. -2. Create a new `TimeSeriesIndexDefinition`. +| Method | Parameters | Description | +| - | - | - | +| `AddMap()` | `string timeseries`, `Expression map` | Sets a map function for all time-series in the database that have the specified name (the first parameter) | +| `AddMapForAll()` | `Expression map` | Sets a map function for all time-series in the database | + +See the example [below](). -This one really makes no difference, exists so features can be filled in in the future. -`TimeSeriesIndexDefinition : IndexDefinition` +#### 2) Create a `TimeSeriesIndexDefinition` -Show in one example -`TimeSeriesIndexDefinitionBuilder : AbstractIndexDefinitionBuilder` +{CODE-BLOCK: csharp} +public class TimeSeriesIndexDefinition : IndexDefinition +{CODE-BLOCK/} -#### `TimeSeriesSegment` object +For now, `TimeSeriesIndexDefinition` is functionally equivalent to +[normal `IndexDefinition`](../../indexes/creating-and-deploying#using-maintenance-operations). +Using it for time-series indexes is recommended - it exists in case additional functionality is +added in future versions of RavenDB. See the example [below](). + +--- + +### `TimeSeriesSegment` object + +The LINQ syntax for the indexes themselves is the same, and in addition you can reference the low +level `TimeSeriesSegment` object. Time-series are divided into **segments** in storage, each containing several consecutive entries. The -number of entries per segment can vary widely depending on the size and compressibility of the entries. -Entries that are more than 25 days apart will be stored in different segments. +number of entries per segment can vary widely, depending on the size and compressibility of the entries. +Segments are up to 2 kb. If there is a gap of 25 days or more between two consecutive entries, they are +always stored in different segments. Segments are useful because they can be referenced within time-series indexes to access the entries in the segment, as well as some aggregate values that summarize the data in the segment: | Property | Type | Description | | - | - | - | -| DocumentId | string | The [ID]() of the document this time-series belongs to | +| DocumentId | string | The [ID](../../client-api/document-identifiers/working-with-document-identifiers) of the document this time-series belongs to | | Name | string | The name of the time-series this segment belongs to | | Min | double[] | The smallest values from all entries in the segment. The places in this array correspond to the | | Max | double[] | The largest values from all entries in the segment | @@ -70,7 +109,7 @@ Creating a builder for time-series indexes using `TimeSeriesIndexDefinitionBuild {CODE indexes_IndexDefinitionBuilder@DocumentExtensions\TimeSeries\Indexing.cs /} {PANEL/} -## Related articles +## Related articles **Studio Articles**: [Studio Time Series Management]() @@ -81,6 +120,9 @@ Creating a builder for time-series indexes using `TimeSeriesIndexDefinitionBuild [Creating and Deploying Indexes](../../indexes/creating-and-deploying) [Multi-Map Indexes](../../indexes/multi-map-indexes) [Map-Reduce Indexes](../../indexes/map-reduce-indexes) +[Indexing Related Documents](../../indexes/indexing-related-documents) + +**Client-API**: +[Working with Document IDs](../../client-api/document-identifiers/working-with-document-identifiers) -**Client-API - Operations Articles**: [Time Series Operations]() diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing.cs index ff8e26a16d..29580b019d 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing.cs @@ -24,7 +24,6 @@ public void Examples() }; documentStore.Initialize(); - #region indexes_IndexDefinition #region indexes_IndexDefinition documentStore.Maintenance.Send(new PutIndexesOperation( new TimeSeriesIndexDefinition From 8a055007bd8882bdde627be486d65766c8247934 Mon Sep 17 00:00:00 2001 From: morhilai Date: Tue, 16 Jun 2020 04:58:16 +0300 Subject: [PATCH 37/56] RDoc-1703_TimeSeries Indexing *final* --- .../timeseries/indexing.markdown | 106 +++++++++++++----- 1 file changed, 81 insertions(+), 25 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown index fe175f8760..919b21d5ac 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown @@ -1,4 +1,4 @@ -# Time Series Map Indexing +# Time-Series Indexing --- {NOTE: } @@ -13,8 +13,12 @@ JavaScript syntax is not supported. {INFO/} * In this page: - * [Syntax](../../document-extensions/indexing#syntax) - * [Examples](../../document-extensions/indexing#examples) + * [Syntax](../../document-extensions/timeseries/indexing#syntax) + * [`AbstractTimeSeriesIndexCreationTask`](../../document-extentions/timeseries/indexes#section) + * [`AbstractMultiMapMultiMapIndexCreationTask`](../../document-extensions/timeseries/indexing#section-1) + * [`TimeSeriesIndexDefinition`](../../document-extensions/timeseries/indexing#section-2) + * [`TimeSeriesSegment` Object](../../document-extensions/timeseries/indexing#object) + * [Examples](../../document-extensions/timeseries/indexing#examples) {NOTE/} @@ -24,7 +28,16 @@ JavaScript syntax is not supported. The are two main ways to create a time-series index: -#### 1) Create a class that inherits from `AbstractTimeSeriesIndexCreationTask<>` +1. Create a class that inherits from + * [`AbstractTimeSeriesIndexCreationTask`](../../document-extensions/timeseries/indexing#section) for [map](../../indexes/map-indexes) and + [map-reduce](../../indexes/map-reduce-indexes) time-series indexes. + * [`AbstractMultiMapMultiMapIndexCreationTask`](../../document-extensions/timeseries/indexing#section-1) for [multi-map](../../indexes/multi-map-indexes) time-series indexes. + +2. Create a [`TimeSeriesIndexDefinition`](../../document-extensions/timeseries/indexing#section-2). + +--- + +### `AbstractTimeSeriesIndexCreationTask` {CODE-BLOCK: csharp} public abstract class AbstractTimeSeriesIndexCreationTask : @@ -48,33 +61,64 @@ public class AbstractTimeSeriesIndexCreationTask { } | Method | Parameters | Description | | - | - | - | -| `AddMap()` | `string timeseries`, `Expression map` | Sets a map function for all time-series in the database that have the specified name (the first parameter) | +| `AddMap()` | `string timeseries`, `Expression map` | Sets a map function for all time-series in the database with specified name (the first parameter) | | `AddMapForAll()` | `Expression map` | Sets a map function for all time-series in the database | -See the example [below](). +See the example [below](../../document-extensions/timeseries/indexing#section-4). + +--- + +### `AbstractMultiMapTimeSeriesIndexCreationTask` + +{CODE-BLOCK: csharp} +public abstract class AbstractMultiMapTimeSeriesIndexCreationTask +{ + protected void AddMap(string timeSeries, + Expression, + IEnumerable>> map); + + protected void AddMapForAll( + Expression, + IEnumerable>> map); +} + +// Specify a type for the reduce result +public abstract class AbstractMultiMapTimeSeriesIndexCreationTask { } +{CODE-BLOCK/} -#### 2) Create a `TimeSeriesIndexDefinition` +| Method | Parameters | Description | +| - | - | - | +| `AddMap()` | `string timeseries`, `Expression map` | Sets a map function for all time-series with the specified name (the first parameter) that belong to documents with the type `TSource` | +| `AddMapForAll()` | `Expression map` | Sets a map function for all time-series that belong to documents with either the type `TBase` _or_ any type that inherits from `TBase` | + +See the example [below](../../document-extensions/timeseries/indexing#section-5). + +--- + +### `TimeSeriesIndexDefinition` {CODE-BLOCK: csharp} public class TimeSeriesIndexDefinition : IndexDefinition {CODE-BLOCK/} -For now, `TimeSeriesIndexDefinition` is functionally equivalent to +For now, `TimeSeriesIndexDefinition` is functionally equivalent to the [normal `IndexDefinition`](../../indexes/creating-and-deploying#using-maintenance-operations). Using it for time-series indexes is recommended - it exists in case additional functionality is -added in future versions of RavenDB. See the example [below](). +added in future versions of RavenDB. + +See the example [below](../../document-extensions/timeseries/indexing#section-3). --- ### `TimeSeriesSegment` object -The LINQ syntax for the indexes themselves is the same, and in addition you can reference the low -level `TimeSeriesSegment` object. +When indexing time-series entries, they are accessed through a subdivision of the time-series +called a _segment_. In general the LINQ syntax looks somethintg like this: -Time-series are divided into **segments** in storage, each containing several consecutive entries. The -number of entries per segment can vary widely, depending on the size and compressibility of the entries. -Segments are up to 2 kb. If there is a gap of 25 days or more between two consecutive entries, they are -always stored in different segments. +{CODE-BLOCK: sql} +from segment in timeseries +from entry in segment +{CODE-BLOCK/} Segments are useful because they can be referenced within time-series indexes to access the entries in the segment, as well as some aggregate values that summarize the data in the segment: @@ -90,30 +134,44 @@ the segment, as well as some aggregate values that summarize the data in the seg | Start | DateTime | The timestamp of the first entry in the segment | | End | DateTime | The timestamp of the last entry in the segment | | Entries | `TimeSeriesEntry[]` | The segment's entries themselves | + +These are the properties of a `TimeSeriesEntry`, which are exposed in the LINQ syntax: + +{CODE-BLOCK: csharp} +public class TimeSeriesEntry +{ + public DateTime Timestamp; + public string Tag; + public double[] Values; + + // This is exactly equivalent to Values[0] + public double Value; +} +{CODE-BLOCK/} {PANEL/} {PANEL: Examples} Creating a time-series index using `TimeSeriesIndexDefinition`: {CODE indexes_IndexDefinition@DocumentExtensions\TimeSeries\Indexing.cs /} -Creating a time-series index using `AbstractTimeSeriesIndexCreationTask`: +#### `AbstractTimeSeriesIndexCreationTask` {CODE indexes_CreationTask@DocumentExtensions\TimeSeries\Indexing.cs /} -Creating a multi-map time-series index: +#### `AbstractMultiMapTimeSeriesIndexCreationTask` {CODE indexes_MultiMapCreationTask@DocumentExtensions\TimeSeries\Indexing.cs /} -Creating a map-reduce index: +#### Map-Reduce Time-Series Index {CODE indexes_MapReduce@DocumentExtensions\TimeSeries\Indexing.cs /} -Creating a builder for time-series indexes using `TimeSeriesIndexDefinitionBuilder`, and using it to create an index. +Yet another way to create a time-series index is to create a +`TimeSeriesIndexDefinitionBuilder`, and use it to create a +`TimeSeriesIndexDefinition`. {CODE indexes_IndexDefinitionBuilder@DocumentExtensions\TimeSeries\Indexing.cs /} {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() -**Indexes**: +### Indexes [What are Indexes](../../indexes/what-are-indexes) [Creating and Deploying Indexes](../../indexes/creating-and-deploying) [Map Indexes](../../indexes/map-indexes) @@ -122,7 +180,5 @@ Creating a builder for time-series indexes using `TimeSeriesIndexDefinitionBuild [Map-Reduce Indexes](../../indexes/map-reduce-indexes) [Indexing Related Documents](../../indexes/indexing-related-documents) -**Client-API**: +### Client-API** [Working with Document IDs](../../client-api/document-identifiers/working-with-document-identifiers) - -[Time Series Operations]() From 401884647627fa5a67fcb53c9ed06752f3b4f68b Mon Sep 17 00:00:00 2001 From: morhilai Date: Mon, 15 Jun 2020 16:59:26 +0300 Subject: [PATCH 38/56] RDoc-1703_TimeSeries Indexing; structural changes - Time-Series > Indexing folder replaced with one page `indexing.markdown`, `Indexing.cs` moved one directory up as well. --- .../document-extensions/timeseries/.docs.json | 80 +++++++++---------- ...ap-indexing.markdown => indexing.markdown} | 26 +++--- .../timeseries/indexing/.docs.json | 14 ---- .../indexing/map-reduce-indexing.markdown | 37 --------- .../indexing/multi-map-indexing.markdown | 1 - .../{Indexing/indexing.cs => Indexing.cs} | 0 6 files changed, 54 insertions(+), 104 deletions(-) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/{indexing/map-indexing.markdown => indexing.markdown} (84%) delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/.docs.json delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-reduce-indexing.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/multi-map-indexing.markdown rename Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/{Indexing/indexing.cs => Indexing.cs} (100%) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json index 43d4ba5305..2e8c7ba8b4 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json @@ -1,41 +1,41 @@ [ - { - "Path": "overview.markdown", - "Name": "Overview", - "DiscussionId": "2bc22ef1-450e-4ae9-aa6f-56b0b47977d9", - "Mappings": [] - }, - { - "Path": "/client-api", - "Name": "Client API", - "Mappings": [] - }, - { - "Path": "/querying", - "Name": "Querying", - "Mappings": [] - }, - { - "Path": "/indexing", - "Name": "Indexing", - "Mappings": [] - }, - { - "Path": "rollup-and-retention.markdown", - "Name": "Rollup and Retention", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - - { - "Path": "/timeseries-and-other-features", - "Name": "Time Series and Other Features", - "Mappings": [] - }, - { - "Path": "design.markdown", - "Name": "Design", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - } -] + { + "Path": "overview.markdown", + "Name": "Overview", + "DiscussionId": "2bc22ef1-450e-4ae9-aa6f-56b0b47977d9", + "Mappings": [] + }, + { + "Path": "/client-api", + "Name": "Client API", + "Mappings": [] + }, + { + "Path": "/querying", + "Name": "Querying", + "Mappings": [] + }, + { + "Path": "indexing.markdown", + "Name": "Indexing Time-Series", + "DiscussionId": "3101c40c-dd91-44a3-acfe-f356b84bf591", + "Mappings": [] + }, + { + "Path": "rollup-and-retention.markdown", + "Name": "Rollup and Retention", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "/timeseries-and-other-features", + "Name": "Time Series and Other Features", + "Mappings": [] + }, + { + "Path": "design.markdown", + "Name": "Design", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + } +] \ No newline at end of file diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown similarity index 84% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown index c9037be198..78ae4acc47 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-indexing.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown @@ -31,7 +31,7 @@ This one really makes no difference, exists so features can be filled in in the Show in one example `TimeSeriesIndexDefinitionBuilder : AbstractIndexDefinitionBuilder` -####`TimeSeriesSegment` object +#### `TimeSeriesSegment` object Time-series are divided into **segments** in storage, each containing several consecutive entries. The number of entries per segment can vary widely depending on the size and compressibility of the entries. @@ -55,30 +55,32 @@ the segment, as well as some aggregate values that summarize the data in the seg {PANEL: Examples} Creating a time-series index using `TimeSeriesIndexDefinition`: -{CODE indexes_IndexDefinition@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} +{CODE indexes_IndexDefinition@DocumentExtensions\TimeSeries\Indexing.cs /} Creating a time-series index using `AbstractTimeSeriesIndexCreationTask`: -{CODE indexes_CreationTask@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} +{CODE indexes_CreationTask@DocumentExtensions\TimeSeries\Indexing.cs /} Creating a multi-map time-series index: -{CODE indexes_MultiMapCreationTask@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} +{CODE indexes_MultiMapCreationTask@DocumentExtensions\TimeSeries\Indexing.cs /} Creating a map-reduce index: -{CODE indexes_MapReduce@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} +{CODE indexes_MapReduce@DocumentExtensions\TimeSeries\Indexing.cs /} Creating a builder for time-series indexes using `TimeSeriesIndexDefinitionBuilder`, and using it to create an index. -{CODE indexes_IndexDefinitionBuilder@DocumentExtensions\TimeSeries\Indexing\Indexing.cs /} +{CODE indexes_IndexDefinitionBuilder@DocumentExtensions\TimeSeries\Indexing.cs /} {PANEL/} + ## Related articles **Studio Articles**: [Studio Time Series Management]() -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() +**Indexes**: +[What are Indexes](../../indexes/what-are-indexes) +[Creating and Deploying Indexes](../../indexes/creating-and-deploying) +[Map Indexes](../../indexes/map-indexes) +[Creating and Deploying Indexes](../../indexes/creating-and-deploying) +[Multi-Map Indexes](../../indexes/multi-map-indexes) +[Map-Reduce Indexes](../../indexes/map-reduce-indexes) **Client-API - Operations Articles**: [Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/.docs.json deleted file mode 100644 index c9598c56a2..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/.docs.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "Path": "map-indexing.markdown", - "Name": "Map Indexing", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "map-reduce-indexing.markdown", - "Name": "Map Reduce Indexing", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - } -] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-reduce-indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-reduce-indexing.markdown deleted file mode 100644 index c4f89ac0e9..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/map-reduce-indexing.markdown +++ /dev/null @@ -1,37 +0,0 @@ -# Time Series Map Reduce Indexing ---- - -{NOTE: } - -* - -* In this page: - * []() - * []() -{NOTE/} - ---- - -{PANEL: } - -- What are Times Series Map Reduce indexes -- Samples - -{PANEL/} - -{PANEL: } -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/multi-map-indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/multi-map-indexing.markdown deleted file mode 100644 index 106b6278b2..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing/multi-map-indexing.markdown +++ /dev/null @@ -1 +0,0 @@ -# multimapi diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing.cs similarity index 100% rename from Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing/indexing.cs rename to Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/Indexing.cs From 04df679d62d9aa76b74b49372a55bcb21a327766 Mon Sep 17 00:00:00 2001 From: reebhub Date: Sun, 21 Jun 2020 04:44:57 +0300 Subject: [PATCH 39/56] RDoc-1703_TimeSeries restructured/rewritten the overview to provide better explanation of time-series data --- .../client-api/api-overview.markdown | 12 +- .../session-methods/append-ts-data.markdown | 4 +- .../timeseries/overview.markdown | 269 +++++++++++++----- 3 files changed, 200 insertions(+), 85 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown index ce74b00d6c..aa5b6f8b80 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -66,17 +66,17 @@ There are also functionalities unique to each interface. * [TimeSeriesFor.Append](../../../document-extensions/timeseries/client-api/session-methods/append-ts-data) Use this method to **Append entries to a time-series** - (creating the series, if it didn't previously exist). + (creating the series if it didn't previously exist). * [TimeSeriesFor.Remove](../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data) Use this method to **Remove a range of entries from a time-series** - (removing the series completely, if all the data is removed). - * [TimeSeriesFor.Get](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries) + (removing the series completely if all entries have been removed). + * [TimeSeriesFor.Get](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries) Use this method to **Retrieve raw time-series entries** - for a data range or for all entries. + for all entries or for a chosen entries range. * [Advanced.GetTimeSeriesFor](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names) Use this method to **Retrieve time-series Names**. - This can be computed directly from the document metadata and requires no - additional server roundtrips. + Series names are fetched by `GetTimeSeriesFor` directly from their parent documents' + metadata, requiring no additional server roundtrips. * [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) Use this method to **patch time-series data to a document**. * **To include time-series data** - diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown index a8562cf6e1..de953a6d8b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown @@ -106,8 +106,8 @@ There are two `TimeSeriesFor.Append` methods: * In this sample we use the [first overload](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-1) to append an entry with a single value. - Though We tun a loop to append a few entries, all entries are appended in a single - transaction when `SaveChanges()` is called. + Though We run a loop to append multiple entries, all entries are appended in a single + transaction when `SaveChanges` is called. {CODE timeseries_region_TimeSeriesFor-Append-TimeSeries-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} * In this sample we use the [second overload](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-2) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown index 4eef66b430..be812d7a7f 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown @@ -3,136 +3,251 @@ {NOTE: } -* Time-series are vectors of data points, whose values are ordered by time. - You can populate time-series with the values produced by various systems - (including an ever-growing number of IoT devices), and simplify the management - and usage of the collected data. +* A huge number of systems, including an expanding variety of IoT devices, + produce continuous streams of values that can be collected and used for + various needs. **Time-series** are vectors of data points that are designated + to collect values over time, store them consecutively, and manage them + with high efficiency and performance. -* A time-series can contain for example - - * A sequence of heartrate values, collected from a smart wrist-watch - * The measurements of a weather-station's thermometer - * Peaks and lows in a cable-modem usage - * Coordinates sent by a delivery truck's GPS tracker - * Daily changes in stock prices +* RavenDB Time-series can be managed and utilized using a thorough set of + [API methods](../../document-extensions/timeseries/client-api/api-overview), + the [Studio](../../studio/database/document-extensions/time-series), + and [various RavenDB features](../../document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview#time-series-and-other-features---overview). -* Create and manage time-series using API methods or the - [Studio](../../studio/database/document-extensions/time-series). +* Time-series functionality is fully integrated into RavenDB's + distributed environment and document model. + +* Time-series data is **compressed** to lower storage usage and transaction time. * In this page: - * [The Time-Series Interface](../../document-extensions/timeseries/overview#the-time-series-interface) + * [Overview](../../document-extensions/timeseries/overview#overview) + * [RavenDB's Time-Series Implementation](../../document-extensions/timeseries/overview#ravendbs-time-series-implementation) + * [Distrubuted Time-Series](../../document-extensions/timeseries/overview#distrubuted-time-series) + * [Time-Series as Document Extensions](../../document-extensions/timeseries/overview#time-series-as-document-extensions) * [Time-Series Features](../../document-extensions/timeseries/overview#time-series-features) - * [Time-Series Are Document Extensions](../../document-extensions/timeseries/overview#time-series-are-document-extensions) - * [Document Extensions](../../document-extensions/timeseries/overview#document-extensions) - * [Data Storage](../../document-extensions/timeseries/overview#data-storage) - * [Time-Series Distribution](../../document-extensions/timeseries/overview#time-series-distribution) + * [Time-Series Data](../../document-extensions/timeseries/overview#time-series-data) + * [Separate Name and Data Storage](../../document-extensions/timeseries/overview#separate-name-and-data-storage) + * [Time-Series Segments](../../document-extensions/timeseries/overview#time-series-segments) + * [Transactions Performance](../../document-extensions/timeseries/overview#transactions-performance) + * [Common-Queries Performance](../../document-extensions/timeseries/overview#common-queries-performance) * [Time-Series Entries](../../document-extensions/timeseries/overview#time-series-entries) + * [The Timestamp](../../document-extensions/timeseries/overview#the-timestamp) + * [The Values](../../document-extensions/timeseries/overview#the-values) + * [The Tag](../../document-extensions/timeseries/overview#the-tag) {NOTE/} --- -{PANEL: The Time-Series Interface} +{PANEL: Overview} + +Time-series can be **aggregated** and **queried** to illustrate process +behavior, predict future developments, track noticeable value changes, +and create other helpful statistics. + +Here are a few examples for value streams that can be easily and effectively +handled by time-series. + +* _A sequence of heartrate values can be collected from a smart + wrist-watch_, and be used to build a person's training program. +* _Weather-stations' measurements_ collected over a chosen time period + can be compared to equivalent past periods to predict the weather. +* _Bandwidth usage reports of a home cable modem monitor_ can be used + to build a better charging plan. +* _Coordinates sent by delivery trucks' GPS trackers_ can be collected + and analyzed to secure the vehicles and improve the service. +* _Daily changes in stock prices_ can be used to build investment plans. + +## RavenDB's Time-Series Implementation + +Time-series functionality is fully integrated in RavenDB's +distributed environment and document model. + +--- + +#### Distrubuted Time-Series + +Distributed clients and nodes can modify time-series concurrently; the +modifications are merged by the cluster with [no conflict](../../document-extensions/timeseries/design#no-conflicts). + +--- -RavenDB's time-series functionality is fully integrated into its -[document model](../../document-extensions/timeseries/overview#time-series-are-document-extensions), -[distributed environment](../../document-extensions/timeseries/overview#time-series-distribution), -and various other features. +#### Time-Series as Document Extensions -It is a comfortable, simple and powerful interface that can be used -in numerous ways. E.g. - +RavenDB’s Time-Series, like its distributed counters, attachments and document +revisions, are **document extensions**. -* A time-series can be updated routinely with data collected from a wearable pulse - monitor. The data can then be rolled up to create a low-resolution dataset, and - plotted for a graphical view of the heartrate during a day or a week. -* A time-series can collect the data sent by a cable modem, to check its - consumption in different hours. + {INFO: } + A time-series always extends a single specific document. + The context and source of the time-series can be kept clear this way, + and time-series management can use the comfort and strength of the + document interface. + A barometer's specifications document, for example, can be the parent + document for a time-series that is populated with measurements taken + by a barometer of this specification. + {INFO/} --- -#### Time-Series Features +#### Time-series Features + +Notable time-series features include - * **Highly-Efficient Storage Management** - Time-series storage is extremely efficient thanks, among other - reasons, to its usage of RavenDB's low-level storage engine. -* **A Thorough Set of [API Methods](../../document-extensions/timeseries/client-api/api-overview)** - The time-series API includes `session methods` and `store operations`. -* **[Full GUI Support](../../studio/database/document-extensions/time-series)** - You can watch and manage time-series using the GUI. + Time-series data is [compressed and segmented](../../document-extensions/timeseries/overview#efficient-storage-and-querying) + to minimize storage usage and transmission time. +* **A Thorough Set of API Methods** + The [time-series API](../../document-extensions/timeseries/client-api/api-overview)** + includes a variety of `session methods` and `store operations`. +* **Full GUI Support** + Time-series can be viewed and managed using the [Studio](../../studio/database/document-extensions/time-series). * **Time-Series Querying and Aggregation** - High-performance queries and aggregations can be performed over - time-series [timestamps, tags and values](../../document-extensions/timeseries/overview#time-series-entries) - using LINQ expressions and raw RQL. + * [High-performance common queries](../../document-extensions/timeseries/overview#efficient-storage-and-querying) + The results of a set of common queries are prepared in advance in time-series segments' + headers, so the response to querying for a series **minimum value**, for example, is + returned nearly instantly. + * [LINQ and raw RQL queries](../../document-extensions/timeseries/querying/queries-overview-and-syntax) + Flexible queries and aggregations can be executed using LINQ expressions and raw RQL + over time-series **timestamps**, **tags** and **values**. * **Time-Series Indexing** - Time-series can be indexed using LINQ expressions. -* **[Rollup and Retention Policies](../../document-extensions/timeseries/rollup-and-retention)** + Time-series can be [indexed by clients](../../ocument-extensions/timeseries/indexing) or using the Studio. +* [Rollup and Retention Policies](../../document-extensions/timeseries/rollup-and-retention) * **Rollup Policies** You can set time-series rollup policies to aggregate large series into smaller sets by your definitions. * **Retention Policies** You can set time-series retention policies to automatically remove - time-series entries that have reached an expiration threshhold. -* **[Including Time-Series](../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview)** - You can include (pre-fetch) time-series data while loading documents, - so they'd be held by the client's sesion and instantly delivered to the - user when they are requested. + time-series entries that have reached their expiration date/time. +* [Including Time-Series](../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview) + You can include (pre-fetch) time-series data while loading documents. + Included data is held by the client's sesion, and is instantly delivered + to the user when it is requested. * **Patching** You can patch time-series data to your documents. (visit the [API documentation](../../document-extensions/timeseries/client-api/api-overview) to learn more). {PANEL/} -{PANEL: Time-Series Are Document Extensions} +{PANEL: Time-Series Data} -RavenDB’s Time-Series, like its distributed counters, attachments and document -revisions, are **document extensions**. +Time-series **names** are kept in their parent documents' metadata, while their +**data** is kept [separately](../../). +Time-series data is **compressed** and composed of consecutive +[segments](../../) and [entries](../../). ---- +{PANEL/} + +{PANEL: Separate Name and Data Storage} + +A time-series’ **name** is kept at its parent-document's metadata, while +its **data** is kept separately. -#### Document Extensions +The separation of names and data prevents time-series value updates from +invoking document-change events, keeping documents' availability and performance +whatever size their time-series grow to be and however frequent their value-updates +are. -A time-series always extends a specific document. +{PANEL/} -If a time-series is populated with events related to a product, -for example, it may extend a document with this product's specifications. +{PANEL: Time-Series Segments} -One advantage of this method, is that the time-series' context, -be it a product, a device, a company or a process. is always clear. +Time-series are composed of consecutive **segments**. +When a time-series is created, its values are held in a single segment. +As the number of values grow (or when a certain amount of time has passed +since the last entry appendage), segments are added to the series. -A second advantage is that time-series are comfortable managed using -the solid document interface. +{INFO: } +Segments are managed automatically by RavenDB, clients do not need to do +anything in this regard. +{INFO/} --- -#### Data Storage +#### Transactions Performance -The time-series’ name is kept at its owner-document’s metadata, while its values -are kept separately. This way, changes in time-series values do not cause document -changes. -This is important because time-series are expected to grow large and their values -to change often. +Time-series segmentation heightens performance and minimizes transaction +and query time, since only the relevant segments of even a very long series +would be retrieved and queried, and only relevant segments would be updated. -Time-series storage management is highly efficient both for storage and for querying. +--- +#### Common Queries Performance +Segmentation also helps provide results for common queries extremely +fast, since results for such queries as `Min`, `Max`, `Average` and +others are automatically stored and updated in segment headers, and +are always available for instant retrieval. + {PANEL/} +{PANEL: Time-Series Entries} -{PANEL: Time-Series Distribution} +Each time-series segment is composed of consecutive **time-series entries**. +Each entry is composed of a **timestamp**, 1 to 32 **values**, and an **optional tag**. + -Distributed clients and nodes can modify time-series concurrently and the -modifications are merged by the cluster with [no conflict](../../document-extensions/timeseries/design#no-conflicts). +--- -{PANEL/} +#### The Timestamp -{PANEL: Time-Series Entries} +{INFO: } +A single `DateTime` timestamp marks each entry in a millisecond precision. + +E.g. in a heartrate time-series, timestamps would indicate the time in which each +heartrate measurement has been taken. +{INFO/} + +Timestamps, and therefore time-series entries, are always ordered **by time**, +from the oldest timestamp to the newest. +Timestamps are the reference points for the appendage and removal of values. + +--- + +#### The Values + +{INFO: } +Up to 32 `double` **values** can be appended per-entry. +{INFO/} + +We allow storing as many as 32 values per entry, since appending multiple +values may be a requirement for some time-series. Here are a few examples. + +* A heart-rate time-series + An entry with a single value (the heart-rate measurement taken by + a smart wrist-watch) is added to the time-series every minute. + +* A truck-route time-series + An entry with 2 values (the latitude and longitude reported by + a GPS device) is added to the time-series every minute. + +* A stock-price time-series + An entry with 5 values (stock price when the trade starts and + ends, its highest and lowest prices during the day, and its daily + trade volume) is added to the time-series every day. + +--- + +#### The Tag + +{INFO: } +A single **optional** `string` tag can be added per entry. +{INFO/} + +Tags are designated to provide information regarding their entries. +A tag can be a **short descriptive text**. +A tag can also be a **reference to a document** by the document's ID. -A time-series is composed of **time-series entries**. -Each entry consists of - +Using tags as references to documents, **is the preferabble way to use them**. +Here is why. -* A **timestamp** that indicates the measurement datetime in a millisecond precision. -* Up to 32 **values** -* An optional **tag** that relates the time-series entry to its source, - e.g. a document ID for the specifications of the device that provided - the values. +* The short (ID-long) reference, e.g. "watches/fitbit", refers us + to a text that is as long and as structured as we'd like it to be. +* While time-series entries are queried, the query can load the + documents their tags refer to and filter the results by the + documents' contents. + E.g., the query can - + **1.** load time-series entries whose tags refer to device-specification documents. + **2.** retrieve and examine the specification document referred to by each entry. + **3.** project to the client only values measured by Japanese devices. {PANEL/} From 8037e381fab5847ed8a71b0040d1618e5f3fa891 Mon Sep 17 00:00:00 2001 From: morhilai Date: Sun, 21 Jun 2020 14:20:47 +0300 Subject: [PATCH 40/56] RDoc-1703_TimeSeries Indexes adding small comment that raven does not create dynamic time-series indexes. --- .../document-extensions/timeseries/indexing.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown index 919b21d5ac..a0edf92ed5 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown @@ -1,4 +1,5 @@ # Time-Series Indexing + --- {NOTE: } @@ -10,6 +11,11 @@ API for [creating document indexes](../../indexes/creating-and-deploying). {INFO: } Unlike document indexes, time-series indexes currently support only LINQ syntax. JavaScript syntax is not supported. + +RavenDB does not create [dynamic](../../studio/database/indexes/indexes-overview#indexes-types) +time-series indexes in response to queries - time-series indexes are only be created as +[static](../../studio/database/indexes/indexes-overview#indexes-types) indexes from a +client application or from the Studio. {INFO/} * In this page: From e237f7f0393476d40580b23c4ecb7362ac8bd69b Mon Sep 17 00:00:00 2001 From: reebhub Date: Mon, 22 Jun 2020 03:58:31 +0300 Subject: [PATCH 41/56] RDoc-1703_TimeSeries - PR comments fixes - removed documentation for a GetTimeSeriesOperation overload that's been removed - added documentation for GetMultipleTimeSeriesOperation --- .../session-methods/append-ts-data.markdown | 6 +- .../get-ts-data/get-ts-entries.markdown | 24 ++- .../session-methods/remove-ts-data.markdown | 7 +- .../client-api/store-operations/.docs.json | 2 +- .../store-operations/get-TS-data.markdown | 123 --------------- .../store-operations/get-TS-data/.docs.json | 14 ++ .../get-TS-data/get-TS-data.markdown | 90 +++++++++++ .../get-TS-data/get-multiple-TS-data.markdown | 90 +++++++++++ .../TimeSeries/TimeSeriesTests.cs | 149 +++++++++--------- 9 files changed, 296 insertions(+), 209 deletions(-) delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/.docs.json create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown index de953a6d8b..3981c8ab91 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown @@ -60,7 +60,7 @@ There are two `TimeSeriesFor.Append` methods: | Parameters | Type | Description | |:-------------|:-------------|:-------------| | `timestamp` | DateTime | Time-series entry's timestamp | - | `value` | double | Update the time-series entry with this value.
    For a new time-series entry, this will be its initial value. | + | `value` | double | For a new time-series entry, this will be its initial value.
    For an existing entry, update the value with the one provided here.| | `tag` | string | Time-series entry's tag
    The tag is optional. | * **Return Value** @@ -80,7 +80,7 @@ There are two `TimeSeriesFor.Append` methods: | Parameters | Type | Description | |:-------------|:-------------|:-------------| | `timestamp` | DateTime | Time-series entry's timestamp | - | `values` | IEnumerable | Update the time-series entry with these values.
    For a new time-series entry, these will be its initial values. | + | `values` | IEnumerable | For a new time-series entry, these will be its initial values.
    For an existing entry, update the values with the ones provided here. | | `tag` | string | Time-series entry's tag
    The tag is optional. | * **Return Value** @@ -96,7 +96,7 @@ There are two `TimeSeriesFor.Append` methods: * Open a session. * Create an instance of `TimeSeriesFor`. * Either pass `TimeSeriesFor` an explicit document ID, -or- - * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). * Call `TimeSeriesFor.Append`. * Call `session.SaveChanges` for the action to take effect on the server. diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown index 25f7aba5d5..de9daa54a8 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown @@ -6,7 +6,15 @@ {NOTE: } Get a range of time-series entries using `TimeSeriesFor.Get`. -Results can be sliced to pages and retrieved gradually. + +* Results can be sliced to pages and retrieved gradually. + +{INFO: } +[Include](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview) +time-series data while [loading](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load) +or [querying](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query) +documents, to keep the data locally in the client's session and refrain from unnecessary additional trips to the server. +{INFO/} * In this page: * [`TimeSeriesFor.Get`](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries#timeseriesfor.get) @@ -22,12 +30,9 @@ Results can be sliced to pages and retrieved gradually. Use `TimeSeriesFor.Get` to get a range of a document's time-series entries. -* You can retrieve time-series data **for a single document**. - * You can, however, call `TimeSeriesFor.Get` as many times as you - need to before executing saveChanges(), to retrieve multiple - documents' time-series data in a single transaction. - * To retrieve multiple documents' time-series' data in a single - call, use the [GetTimeSeriesOperaion](../../../../document-extensions/timeseries/client-api/store-operations/get-TS-data) +* `TimeSeriesFor.Get` retrieves a single document's time-series data. + * To retrieve multiple documents' time-series' data, + use the [GetTimeSeriesOperaion](../../../../document-extensions/timeseries/client-api/store-operations/get-TS-data) document-store operation instead. * You can slice retrieved data to **pages** to get time-series entries gradually, one custom-size page at a time. @@ -51,13 +56,16 @@ Use `TimeSeriesFor.Get` to get a range of a document's time-series entries. * **Return Value** **`IEnumerable`** - Time-series entries are returned in an array of TimeSeriesEntry IEnumerables. + Time-series entries are returned in an array of TimeSeriesEntry instances. {CODE-BLOCK: JSON} +public class TimeSeriesEntry { public DateTime Timestamp { get; set; } public string Tag { get; set; } public double[] Values { get; set; } public double Value => Values[0]; + + //.. } {CODE-BLOCK/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown index 45c1a726ec..f2d37fbf79 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown @@ -6,7 +6,8 @@ {NOTE: } Remove time-series data using `TimeSeriesFor.Remove`. -You can remove a **single time-series entry** or a **range of entries**. + +* You can remove a **single time-series entry** or a **range of entries**. * In this page: * [`TimeSeriesFor.Remove`](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#timeseriesfor.remove) @@ -55,6 +56,8 @@ There are two `TimeSeriesFor.Remove` methods: * **Exceptions** Exceptions are not generated. + Attempting to remove nonexistent entries results in a noop + and does not generate an exception. --- @@ -75,6 +78,8 @@ There are two `TimeSeriesFor.Remove` methods: * **Exceptions** Exceptions are not generated. + Attempting to remove nonexistent entries results in a noop + and does not generate an exception. {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json index 4bec9584d9..32316e0625 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json @@ -6,7 +6,7 @@ "Mappings": [] }, { - "Path": "get-TS-data.markdown", + "Path": "/get-TS-data", "Name": "Get Time-Series Data", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown deleted file mode 100644 index 18d02488aa..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data.markdown +++ /dev/null @@ -1,123 +0,0 @@ -## `GetTimeSeriesOperaion` -# Get Time-Series Data - ---- - -{NOTE: } - -Get time-series data using `GetTimeSeriesOperaion`. - -* In this page: - * [`GetTimeSeriesOperation`](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#gettimeseriesoperation) - * [Syntax](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#syntax) - * [Overload 1 - Retrieve a Single Time-Series' Data](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#overload-1-retrieve-a-single-time-series-data) - * [Overload 2 - Retrieve Multiple Time-Series' Data](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#overload-2-retrieve-multiple-time-series-data) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#usage-samples) - -{NOTE/} - ---- - -{PANEL: `GetTimeSeriesOperation`} - -Use `GetTimeSeriesOperaion` to retrieve data from a single -time-series or from multiple time-series. - -{PANEL/} - -{PANEL: Syntax} - -There are two `GetTimeSeriesOperation` methods: -[Overload 1](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#overload-1-retrieve-a-single-time-series-data) -- Retrieve a single time-series' data. -[Overload 2](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#overload-2-retrieve-multiple-time-series-data) -- Retrieve multiple time-series' data. - ---- - -#### Overload 1: Retrieve a Single Time-Series' Data - -* **Definition** - {CODE GetTimeSeriesOperation-Definition-Overload1@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `docId` | `string` | Document ID | - | `timeseries` | `string` | Time-series name | - | `from` | `DateTime` | Range start | - | `to` | `DateTime` | Range end | - | `start` | `int` | Start of first Page | - | `pageSize` | `int` | Size of each page | - -* **Return Value**: **`TimeSeriesRangeResult`** - {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* **Exceptions** - Exceptions are not generated. - ---- - -#### Overload 2: Retrieve Multiple Time-Series' Data - -* **Definition** - {CODE GetTimeSeriesOperation-Definition-Overload2@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `docId` | `string` | Document ID | - | `ranges` | `IEnumerable`
    {CODE TimeSeriesRange-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /}| A list of time-series ranges to Get | - | `start` | `int` | Start of first Page | - | `pageSize` | `int` | Size of each page | - -* **Return Value**: a dictionary of `TimeSeriesRangeResult` classes. - {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* **Exceptions** - Exceptions are not generated. - -{PANEL/} - -{PANEL: Usage Flow} - -* Pass `GetTimeSeriesOperation` - - * For a single time-series: - Document ID, Time-Series Name, Range Start, Range End. - * For multiple time-series: - Document ID, a List of `TimeSeriesRange` instances. - Each `TimeSeriesRange` instance defines a Time-Series Name, Range Start, and Range End. -* Call `store.Operations.Send` to execute the operation. -* Data is returned into a `dictionary of `TimeSeriesRangeResult` classes. - -{PANEL/} - -{PANEL: Usage Samples} - -* In this sample, we use the [first overload](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#overload-1-retrieve-a-single-time-series-data) - to retrieve all entries of a single time-series. - {CODE timeseries_region_Get-Single-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* In this sample, we use the [second overload](../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data#overload-2-retrieve-multiple-time-series-data) - to retrieve chosen entries from two time-series. - {CODE timeseries_region_Get-Multiple-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/.docs.json new file mode 100644 index 0000000000..61becf3737 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/.docs.json @@ -0,0 +1,14 @@ +[ + { + "Path": "get-TS-data.markdown", + "Name": "From a Single Time-Series", + "DiscussionId": "15672af6-b12d-418c-a8a3-aef1fc9dfa61", + "Mappings": [] + }, + { + "Path": "get-multiple-TS-data.markdown", + "Name": "From Multiple Time-Series", + "DiscussionId": "c8a11e4a-118b-4413-ba6c-7c6fdd414fa2", + "Mappings": [] + } +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown new file mode 100644 index 0000000000..806663b326 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown @@ -0,0 +1,90 @@ +## `GetTimeSeriesOperation` +# Get a Time-Series Data + +--- + +{NOTE: } + +Get a single time-series' data using `GetTimeSeriesOperation`. + +* In this page: + * [`GetTimeSeriesOperation`](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#gettimeseriesoperation) + * [Syntax](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#usage-samples) + +{NOTE/} + +--- + +{PANEL: `GetTimeSeriesOperation`} + +Use `GetTimeSeriesOperation` to retrieve data from a single +time-series. + +* To retrieve data from multiple time-series, use + [GetMultipleTimeSeriesOperation](../../../../../document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data). + +{PANEL/} + +{PANEL: Syntax} + +* **Definition** + {CODE GetTimeSeriesOperation-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `docId` | `string` | Document ID | + | `timeseries` | `string` | Time-series name | + | `from` | `DateTime` | Range start | + | `to` | `DateTime` | Range end | + | `start` | `int` | Start of first Page | + | `pageSize` | `int` | Size of each page | + +* **Return Value**: **`TimeSeriesRangeResult`** + {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + + When a nonexistent time-series is requested, + the return value will be `null`. + When a nonexistent entries-range is requested, + the return value will be a `TimeSeriesRangeResult` object with an + empty `Entries` property. + +* **Exceptions** + Exceptions are not generated. + +{PANEL/} + +{PANEL: Usage Flow} + +* Pass `GetTimeSeriesOperation` - + Document ID, Time-Series Name, Range Start, Range End. +* Call `store.Operations.Send` to execute the operation. +* Data is returned into a `dictionary of `TimeSeriesRangeResult` classes. + +{PANEL/} + +{PANEL: Usage Samples} + +* In this sample, we retrieve all the entries of a time-series. + {CODE timeseries_region_Get-Single-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown new file mode 100644 index 0000000000..631c609751 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown @@ -0,0 +1,90 @@ +## `GetMultipleTimeSeriesOperation` +# Get Multiple Time-Series Data + +--- + +{NOTE: } + +Get multiple time-series data using `GetMultipleTimeSeriesOperation`. + +* In this page: + * [`GetMultipleTimeSeriesOperation`](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-multiple-ts-data#getmultipletimeseriesoperation) + * [Syntax](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-multiple-ts-data#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-multiple-ts-data#usage-flow) + * [Usage Sample](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-multiple-ts-data#usage-sample) + +{NOTE/} + +--- + +{PANEL: `GetMultipleTimeSeriesOperation`} + +Use `GetMultipleTimeSeriesOperation` to retrieve data from +multiple time-series. + +{PANEL/} + +{PANEL: Syntax} + +* **Definition** + {CODE GetMultipleTimeSeriesOperation-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `docId` | `string` | Document ID | + | `ranges` | `IEnumerable` | Ranges of Time-Series Entries | + | `start` | `int` | Start of first Page | + | `pageSize` | `int` | Size of each page | + + Pass `GetMultipleTimeSeriesOperation` a **TimeSeriesRange** instance + For each entries range you want it to retrieve. + {CODE TimeSeriesRange-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Return Value**: **`TimeSeriesRangeResult`** + {CODE TimeSeriesDetails-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + When a nonexistent time-series or entries-range is requested, + the return value for the erronous range is a `TimeSeriesRangeResult` + object with an empty `Entries` property. + +* **Exceptions** + Exceptions are not generated. + +{PANEL/} + +{PANEL: Usage Flow} + +* Pass `GetMultipleTimeSeriesOperation` - + * The time-series parent-Document ID + * A **TimeSeriesRange** instance for each entries range you want + it to retrieve. +* Populate each TimeSeriesRange instance with a **time-Series name**, + a **range start** timestamp (`From`), and a **range end** timestamp (`To`). +* Call `store.Operations.Send` to execute the operation. + +{PANEL/} + +{PANEL: Usage Sample} + +* In this sample, we retrieve chosen entries from two time-series. + {CODE timeseries_region_Get-Multiple-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index ff9222c4b4..c050e75a06 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -51,8 +51,8 @@ public void SessionTests() // Create an instance of TimeSeriesFor // Pass an explicit document ID to the TimeSeriesFor constructor - // Append a heartrate of 70 at the first-minute timestamp - session.TimeSeriesFor("users/john", "Heartrate") + // Append a HeartRate of 70 at the first-minute timestamp + session.TimeSeriesFor("users/john", "HeartRate") .Append(baseline.AddMinutes(1), 70d, "watches/fitbit"); session.SaveChanges(); @@ -68,7 +68,7 @@ public void SessionTests() // Pass the document object returned from session.Load as a param // Retrieve a single value from the time series - IEnumerable val = session.TimeSeriesFor(user, "Heartrate") + IEnumerable val = session.TimeSeriesFor(user, "HeartRate") .Get(DateTime.MinValue, DateTime.MaxValue); } #endregion @@ -82,24 +82,24 @@ public void SessionTests() // Pass the document object returned from session.Load as a param // Retrieve a single value from the time series - IEnumerable val = session.TimeSeriesFor(user, "Heartrate") + IEnumerable val = session.TimeSeriesFor(user, "HeartRate") .Get(DateTime.MinValue, DateTime.MaxValue); } #endregion #region timeseries_region_TimeSeriesFor-Get-Single-Value-Using-Document-ID - // retrieve all time points of a time-series named "Heartratea" + // retrieve all entries of a time-series named "HeartRate" // by passing TimeSeriesFor.Get an explict document ID using (var session = store.OpenSession()) { - IEnumerable val = session.TimeSeriesFor("users/john", "Heartrate") + IEnumerable val = session.TimeSeriesFor("users/john", "HeartRate") .Get(DateTime.MinValue, DateTime.MaxValue); } #endregion #region timeseries_region_Pass-TimeSeriesFor-Get-Query-Results // Query for a document with the Name property "John" - // and get its Heartrate time-series values + // and get its HeartRate time-series values using (var session = store.OpenSession()) { baseline = DateTime.Today; @@ -109,7 +109,7 @@ public void SessionTests() var result = query.ToList(); - IEnumerable val = session.TimeSeriesFor(result[0], "Heartrate") + IEnumerable val = session.TimeSeriesFor(result[0], "HeartRate") .Get(DateTime.MinValue, DateTime.MaxValue); session.SaveChanges(); @@ -129,12 +129,12 @@ public void SessionTests() #region timeseries_region_TimeSeriesFor-Append-TimeSeries-Range var baseline = DateTime.Today; - // Append 10 heartrate values + // Append 10 HeartRate values using (var session = store.OpenSession()) { session.Store(new { Name = "John" }, "users/john"); - ISessionDocumentTimeSeries tsf = session.TimeSeriesFor("users/john", "Heartrate"); + ISessionDocumentTimeSeries tsf = session.TimeSeriesFor("users/john", "HeartRate"); for (int i = 0; i < 10; i++) { @@ -149,8 +149,8 @@ public void SessionTests() var baseline = DateTime.Today; using (var session = store.OpenSession()) { - //remove a single time point - session.TimeSeriesFor("users/john", "Heartrate") + //remove a single entry + session.TimeSeriesFor("users/john", "HeartRate") .Remove(baseline.AddMinutes(4)); session.SaveChanges(); @@ -160,12 +160,12 @@ public void SessionTests() #region timeseries_region_TimeSeriesFor-Remove-Time-Points-Range var baseline = DateTime.Today; - // Append 10 heartrate values + // Append 10 HeartRate values using (var session = store.OpenSession()) { session.Store(new { Name = "John" }, "users/john"); - var tsf = session.TimeSeriesFor("users/john", "Heartrate"); + var tsf = session.TimeSeriesFor("users/john", "HeartRate"); for (int i = 0; i < 10; i++) { @@ -178,7 +178,7 @@ public void SessionTests() // remove a range of 4 values from the time series using (var session = store.OpenSession()) { - session.TimeSeriesFor("users/john", "Heartrate") + session.TimeSeriesFor("users/john", "HeartRate") .Remove(baseline.AddSeconds(4), baseline.AddSeconds(7)); session.SaveChanges(); @@ -193,21 +193,15 @@ public void SessionTests() // Open a session using (var session = store.OpenSession()) { - // Use the session to create a document + // Create a document session.Store(new { Name = "John" }, "users/john"); - IEnumerable values = new List - { - 65d, - 52d, - 72d - }; - - // Create an instance of TimeSeriesFor - // Pass an explicit document ID to the TimeSeriesFor constructor - // Append the three IEnumerable heartrates at the first-minute timestamp - session.TimeSeriesFor("users/john", "Heartrate") - .Append(baseline.AddMinutes(1), values, "watches/fitbit"); + // Pass TimeSeriesFor an explicit document ID + // Append values at the first-minute timestamp + session.TimeSeriesFor("users/john", "HeartRate") + .Append(baseline.AddMinutes(1), + new[] { 65d, 52d, 72d }, + "watches/fitbit"); session.SaveChanges(); } @@ -222,10 +216,10 @@ public void SessionTests() var baseline = DateTime.Today; User user = session.Load("users/1-A", includeBuilder => - includeBuilder.IncludeTimeSeries("Heartrate", + includeBuilder.IncludeTimeSeries("HeartRate", baseline.AddMinutes(200), baseline.AddMinutes(299))); - IEnumerable val = session.TimeSeriesFor("users/1-A", "Heartrate") + IEnumerable val = session.TimeSeriesFor("users/1-A", "HeartRate") .Get(baseline.AddMinutes(200), baseline.AddMinutes(299)); } #endregion @@ -239,11 +233,11 @@ public void SessionTests() IRavenQueryable query = session.Query() .Where(u => u.Name == "John") .Include(includeBuilder => includeBuilder.IncludeTimeSeries( - "Heartrate", DateTime.MinValue, DateTime.MaxValue)); + "HeartRate", DateTime.MinValue, DateTime.MaxValue)); var result = query.ToList(); - IEnumerable val = session.TimeSeriesFor(result[0], "Heartrate") + IEnumerable val = session.TimeSeriesFor(result[0], "HeartRate") .Get(DateTime.MinValue, DateTime.MaxValue); } #endregion @@ -258,13 +252,13 @@ public void SessionTests() var end = baseline.AddHours(1); IRawDocumentQuery query = session.Advanced.RawQuery - ("from Users include timeseries('Heartrate', $start, $end)") + ("from Users include timeseries('HeartRate', $start, $end)") .AddParameter("start", start) .AddParameter("end", end); var result = query.ToList(); - IEnumerable val = session.TimeSeriesFor(result[0], "Heartrate") + IEnumerable val = session.TimeSeriesFor(result[0], "HeartRate") .Get(start, end); } #endregion @@ -286,7 +280,7 @@ public void SessionTests() );", Values = { - { "timeseries", "Heartrate" }, + { "timeseries", "HeartRate" }, { "timestamp", baseline.AddMinutes(1) }, { "values", 59d }, { "tag", "watches/fitbit" } @@ -321,7 +315,7 @@ public void SessionTests() Values = { - { "timeseries", "Heartrate" }, + { "timeseries", "HeartRate" }, { "toAppend", toAppend }, { "tag", "watches/fitbit" } } @@ -337,7 +331,7 @@ public void SessionTests() Script = @"timeseries(this, args.timeseries).remove(args.from, args.to);", Values = { - { "timeseries", "Heartrate" }, + { "timeseries", "HeartRate" }, { "from", baseline.AddSeconds(0) }, { "to", baseline.AddSeconds(49) } } @@ -364,7 +358,7 @@ public void StoreOperationsTests() var timeSeriesOp = new TimeSeriesOperation { - Name = "Heartrate", + Name = "HeartRate", Appends = new List() { new TimeSeriesOperation.AppendOperation @@ -399,7 +393,7 @@ public void StoreOperationsTests() // remove a range of 5 minutes from time-series start timeSeriesOp = new TimeSeriesOperation { - Name = "Heartrate", + Name = "HeartRate", Removals = new List() { @@ -424,36 +418,36 @@ public void StoreOperationsTests() #region timeseries_region_Get-Single-Time-Series // Get all values of a single time-series - var SingleTimesSeriesDetails = store.Operations.Send( - new GetTimeSeriesOperation(documentId, "RoutineHeartrate", DateTime.MinValue, DateTime.MaxValue)); + TimeSeriesRangeResult singleTimeSeriesRange = store.Operations.Send( + new GetTimeSeriesOperation(documentId, "HeartRate", DateTime.MinValue, DateTime.MaxValue)); #endregion #region timeseries_region_Get-Multiple-Time-Series - // Get chosen values of two time-series - var MultipletimesSeriesDetails = store.Operations.Send( - new GetTimeSeriesOperation(documentId, new List - { - new TimeSeriesRange - { - Name = "RoutineHeartrate", - From = baseline.AddMinutes(1), - To = baseline.AddMinutes(10) - }, + // Get value ranges from two time-series using GetMultipleTimeSeriesOperation + TimeSeriesDetails timesSeriesDetails = store.Operations.Send( + new GetMultipleTimeSeriesOperation(documentId, new List + { + new TimeSeriesRange + { + Name = "ExcersizeHeartRate", + From = baseTime.AddHours(1), + To = baseTime.AddHours(10) + }, - new TimeSeriesRange - { - Name = "BicycleHeartrate", - From = baseline.AddMinutes(1), - To = baseline.AddMinutes(10) - } - })); + new TimeSeriesRange + { + Name = "RestHeartRate", + From = baseTime.AddHours(11), + To = baseTime.AddHours(20) + } + })); #endregion #region timeseries_region_Use-BulkInsert-To-Append-2-Entries // Use BulkInsert to append 2 time-series entries using (BulkInsertOperation bulkInsert = store.BulkInsert()) { - using (TimeSeriesBulkInsert timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentID, "Heartrate")) + using (TimeSeriesBulkInsert timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentID, "HeartRate")) { timeSeriesBulkInsert.Append(baseline.AddMinutes(2), 61d, "watches/fitbit"); timeSeriesBulkInsert.Append(baseline.AddMinutes(3), 62d, "watches/apple-watch"); @@ -467,7 +461,7 @@ public void StoreOperationsTests() { using (BulkInsertOperation bulkInsert = store.BulkInsert()) { - using (TimeSeriesBulkInsert timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentId, "Heartrate")) + using (TimeSeriesBulkInsert timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentId, "HeartRate")) { timeSeriesBulkInsert.Append(baseline.AddMinutes(minute), new double[] { minute }, "watches/fitbit"); } @@ -484,7 +478,7 @@ public void StoreOperationsTests() { using (BulkInsertOperation bulkInsert = store.BulkInsert()) { - using (TimeSeriesBulkInsert timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentId, "Heartrate")) + using (TimeSeriesBulkInsert timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentId, "HeartRate")) { timeSeriesBulkInsert.Append(baseline.AddMinutes(minute), values, "watches/fitbit"); } @@ -502,7 +496,7 @@ public void StoreOperationsTests() Script = "timeseries(this, args.timeseries).append(args.timestamp, args.values, args.tag);", Values = { - { "timeseries", "Heartrate" }, + { "timeseries", "HeartRate" }, { "timestamp", baseline.AddMinutes(1) }, { "values", 59d }, { "tag", "watches/fitbit" } @@ -531,7 +525,7 @@ public void StoreOperationsTests() }", Values = { - { "timeseries", "Heartrate" }, + { "timeseries", "HeartRate" }, { "toAppend", toAppend }, { "tag", "watches/fitbit" } } @@ -545,7 +539,7 @@ public void StoreOperationsTests() Script = "timeseries(this, args.timeseries).remove(args.from, args.to);", Values = { - { "timeseries", "Heartrate" }, + { "timeseries", "HeartRate" }, { "from", baseline.AddSeconds(0) }, { "to", baseline.AddSeconds(49) } } @@ -562,7 +556,7 @@ public void StoreOperationsTests() }", QueryParameters = new Parameters { - { "name", "Heartrate" }, + { "name", "HeartRate" }, { "time", baseline.AddMinutes(1) }, { "values", new[]{59d} }, { "tag", "watches/fitbit" } @@ -582,7 +576,7 @@ public void StoreOperationsTests() }", QueryParameters = new Parameters { - { "name", "Heartrate" }, + { "name", "HeartRate" }, { "from", DateTime.MinValue }, { "to", DateTime.MaxValue } } @@ -601,7 +595,7 @@ public void StoreOperationsTests() }", QueryParameters = new Parameters { - { "name", "Heartrate" }, + { "name", "HeartRate" }, { "from", DateTime.MinValue }, { "to", DateTime.MaxValue } } @@ -785,7 +779,7 @@ load Tag as emp #region ts_region_LINQ-6-Aggregation IRavenQueryable query = session.Query() .Where(u => u.Age > 72) - .Select(q => RavenQuery.TimeSeries(q, "Heartrate", baseline, baseline.AddDays(10)) + .Select(q => RavenQuery.TimeSeries(q, "HeartRate", baseline, baseline.AddDays(10)) .Where(ts => ts.Tag == "watches/fitbit") .GroupBy(g => g.Days(1)) .Select(g => new @@ -1075,16 +1069,25 @@ public class TimeSeriesRangeResult public DateTime From, To; public TimeSeriesEntry[] Entries; public long? TotalResults; - internal string Hash; + + //.. } #endregion - #region GetTimeSeriesOperation-Definition-Overload1 - public GetTimeSeriesOperation(string docId, string timeseries, DateTime from, DateTime to, int start = 0, int pageSize = int.MaxValue) + #region GetTimeSeriesOperation-Definition + public GetTimeSeriesOperation(string docId, string timeseries, DateTime? @from = null, DateTime? to = null, int start = 0, int pageSize = int.MaxValue) + #endregion + + #region TimeSeriesDetails-class + public class TimeSeriesDetails + { + public string Id { get; set; } + public Dictionary> Values { get; set; } + } #endregion - #region GetTimeSeriesOperation-Definition-Overload2 - public GetTimeSeriesOperation(string docId, IEnumerable ranges, int start = 0, int pageSize = int.MaxValue) + #region GetMultipleTimeSeriesOperation-Definition + public GetMultipleTimeSeriesOperation(string docId, IEnumerable ranges, int start = 0, int pageSize = int.MaxValue) #endregion #region TimeSeriesRange-class From c0e978962a09d9bf1e3744b07179450159908a31 Mon Sep 17 00:00:00 2001 From: morhilai Date: Mon, 22 Jun 2020 16:17:06 +0300 Subject: [PATCH 42/56] RDoc-1703_TimeSeries time-series and other features page - Existing TS&OF folder deleted; replaced by `time-series-and-other-features.markdown` --- .../document-extensions/timeseries/.docs.json | 5 +- .../timeseries/images/TSSnapshot.png | Bin 0 -> 33700 bytes .../time-series-and-other-features.markdown | 117 ++++++++++++++++++ .../timeseries-and-other-features/.docs.json | 32 ----- .../time-series-and-ongoing-tasks.markdown | 38 ------ ...eries-and-other-features-overview.markdown | 54 -------- .../time-series-and-revisions.markdown | 45 ------- .../time-series-and-smuggler.markdown | 43 ------- .../time-series-and-the-changes-api.markdown | 44 ------- 9 files changed, 120 insertions(+), 258 deletions(-) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/images/TSSnapshot.png create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/.docs.json delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-ongoing-tasks.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-revisions.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-smuggler.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-the-changes-api.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json index 2cb1dca42f..e9d5729f30 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json @@ -28,8 +28,9 @@ "Mappings": [] }, { - "Path": "/timeseries-and-other-features", - "Name": "Time Series and Other Features", + "Path": "time-series-and-other-features.markdown", + "Name": "Time-Series and Other Features", + "DiscussionId": "902e7192-9e86-4b98-9f8a-0df0b6c731f9", "Mappings": [] }, { diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/images/TSSnapshot.png b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/images/TSSnapshot.png new file mode 100644 index 0000000000000000000000000000000000000000..d02259442a343b783c8c788433cd93728161f563 GIT binary patch literal 33700 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 + +#### Tasks that apply to time-series + +* [External replication](../../server/ongoing-tasks/external-replication) +creates a complete copy of a database, including documents and their extensions. +* [Pull replication](../../server/ongoing-tasks/pull-replication) is similar +to external replication except that the process is initiated by the +destination server rather than the source server. +* [Backup](../../client-api/operations/maintenance/backup/backup)s save the +whole database at a certain point in time and can be used to restore the +database later. All kinds of backups include time-series data: "logical"-backup +and snapshot, full and incremental. + +#### Cannot be applied to time-series + +* [ETL](../../server/ongoing-tasks/etl/basics) is a type of task that _extracts_ +some portion of the data from a database, _transforms_ it according to a script, +and _loads_ it to some external target. Neither the **RavenDB ETL** nor the +**SQL ETL** tasks can access or operate on time-series data. +* [Data Subscriptions](../../client-api/data-subscriptions/what-are-data-subscriptions) +send data to "worker" clients in batches. +{PANEL/} + +{PANEL: Revisions} + +[Revisions](../../client-api/session/revisions/what-are-revisions) are old +versions of a document. They can be saved manually or by setting a policy for +a collection that creates them automatically. + +Revisions do not preserve time-series data, and editing a time-series does +not trigger the creation of a new revision the way editing a document would. +This is because time-series are designed so for new entries to be added +quickly and often, and creating revisions each time would significantly slow +this process down. + +However, revisions _can_ be triggered / created manually if a _new_ time-series +is added to the document, or an existing time-series is deleted. (Remember that +a time-series is deleted by deleting all of its entries). +
    + +#### The   `@timeseries-snapshot` + +While revisions don't contain the time-series data themselves, they do contain +few details about the time-series the document had at the time. These details +appear as though they are part of the document's metadata, but it's not really +part of the document. When a revision is viewed in the studio, this +"time-series snapshot" looks like this: + +![](images/TSSnapshot.png) + +This time-series snapshot can also be accessed by loading a revision in the +client. This is the general JSON format of the time-series snapshot: + +{CODE-BLOCK: json} +"@metadata": { + ... + "@timeseries-snapshot": { + "": { + "Count": , + "Start": "", + "End": "" + }, + "": { ... } + } +{CODE-BLOCK/} +{PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/.docs.json deleted file mode 100644 index 617b13517a..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/.docs.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - { - "Path": "time-series-and-other-features-overview.markdown", - "Name": "Overview", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "time-series-and-revisions.markdown", - "Name": "Time-Series and Revisions", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "time-series-and-smuggler.markdown", - "Name": "Time-Series and Smuggler", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "time-series-and-ongoing-tasks.markdown", - "Name": "Time-Series and Ongoing Tasks", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "time-series-and-the-changes-api.markdown", - "Name": "Time-Series and the Changes API", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - } -] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-ongoing-tasks.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-ongoing-tasks.markdown deleted file mode 100644 index fa6e99196d..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-ongoing-tasks.markdown +++ /dev/null @@ -1,38 +0,0 @@ -# Time-Series and Ongoing Tasks ---- - -{NOTE: } - -* This section describes the relationships between Time Series and Ongoing Tasks. - -* In this page: - * []() - * []() -{NOTE/} - ---- - -{PANEL: } - -###Time Series and Ongoing Tasks: - -Each [ongoing task](../../../studio/database/tasks/ongoing-tasks/general-info) relates to time series in its own way. - -* **Time series** and the **Backup task** -* **Time series** and the **External Replication task** - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown deleted file mode 100644 index b3316bcc2a..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview.markdown +++ /dev/null @@ -1,54 +0,0 @@ -# Time-Series and Other Features - Overview ---- - -{NOTE: } - -* This section explains the relations of time series and other RavenDB features - in general. - -* In this page: - * []() - * []() -{NOTE/} - ---- - -{PANEL: } - -###Time Series and Other Features: Summary - -Use this table to find if and how various RavenDB features are triggered by time series, -and how the various features handle time series values. - -* In the **Triggered By** column: - * _Document Change_ - Feature is triggered by a time series Name update. - * _TS Value Modification_ - Feature is triggered by a time series Value modification. - * _Time Schedule_ - Feature is invoked by a pre-set time routine. - * _No Trigger_ - Feature is executed manually, through the Studio or by a Client. - -| **Feature** | **Triggered by** | -|-------------|:-------------| -| [Indexing]() | _Document Change_ | -| [LINQ Queries]() | _No trigger_ | -| [Raw Queries]() | _No trigger_ | -| [Smuggler]() | _No trigger_ | -| [Backup Task]() | _Time Schedule_ | -| [External Replication task]() | _Document Change_,
    _TS Value Modification_ | -| [Changes API]() | _TS Value Modification_ | -| [Revision creation]() | _Document Change_ | - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-revisions.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-revisions.markdown deleted file mode 100644 index 316cfe34ab..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-revisions.markdown +++ /dev/null @@ -1,45 +0,0 @@ -# Time-Series and Revisions ---- - -{NOTE: } - -* This section describes the relationships between Time Series and Ravedb's Revisions feature. - * [How time series are supported by revisions.] - * [How time series trigger revisions execution.] - -* In this page: - * []() - * []() -{NOTE/} - ---- - -{PANEL: } - -###Time Series and Revisions - -A [document revision](../../../client-api/session/revisions/what-are-revisions) stores all the document's time series' names, -but only selected timepoints [start and end timeponits?] - -* **Stored Time Series Values** - [specify how values are stored here] - -* Revisions-creation can be initiated by time series **name** modification. - * When the Revisions feature is enabled, the creation or deletion of a time series initiates the creation of a new document revision. - * Time series **value** modifications do **not** cause the creation of new revisions. - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-smuggler.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-smuggler.markdown deleted file mode 100644 index 9443ef29af..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-smuggler.markdown +++ /dev/null @@ -1,43 +0,0 @@ -# Time-Series and Smuggler ---- - -{NOTE: } - -* This section describes the relationships between Time Series and the Smuggler interface. - -* In this page: - * []() - * []() -{NOTE/} - ---- - -{PANEL: } - -###Time Series and Smuggler - -[Smuggler](../../../client-api/smuggler/what-is-smuggler) is a DocumentStore property, that can be used -to [export](../../../client-api/smuggler/what-is-smuggler#databasesmugglerexportoptions) chosen -database items to an external file or to [import](../../../client-api/smuggler/what-is-smuggler#databasesmugglerimportoptions) -database items from an existing file into the database. - -* **Transferred Time Series Values** - [how does smuggler transfer the series' values] -* To make Smuggler handle time series, include `DatabaseItemType.TimeSeries` in `OperateOnTypes`'s list of entities to import or export. - [sample here] - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-the-changes-api.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-the-changes-api.markdown deleted file mode 100644 index 22543e1ad6..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/timeseries-and-other-features/time-series-and-the-changes-api.markdown +++ /dev/null @@ -1,44 +0,0 @@ -# Time-Series and the Changes API ---- - -{NOTE: } - -* The Changes API allows you to... -* Using Time Series with he Changes API benefits... - -* In this page: - * [Why Use Time Series with the Changes the API]() - * [Code Samples]() -{NOTE/} - ---- - -{PANEL: Why Use Time Series with the Changes the API} - -###Time Series and Changes API - -[Changes API](../../../client-api/changes/what-is-changes-api#changes-api) is a Push service, that can inform you of various changes on the Server, including [changes in time series values](). -You can target all time series, or specify the ones you wish to follow. - -* **Pushed Time Series Value** - [how does `Changes API` return time series values] -* The service is initiated by **time series Value Modification**. - -{PANEL/} - -{PANEL: Code Samples} -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() From c7e30e363049453eca2cf14e1cbacef2da81cb2f Mon Sep 17 00:00:00 2001 From: morhilai Date: Mon, 22 Jun 2020 19:17:21 +0300 Subject: [PATCH 43/56] RDoc-1703_TimeSeries review comments for rollup-and-retention.markdown --- .../timeseries/rollup-and-retention.markdown | 76 ++++++++++--------- 1 file changed, 39 insertions(+), 37 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown index 180867ed20..2e08582aed 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown @@ -25,49 +25,50 @@ is kept before being deleted. #### What are Rollups? -A rollup is a time-series that summarizes the data from an original time-series. It -is created by dividing time-series entries into set spans of time, like a second or -a week. Each entry in the rollup time-series represents one of those spans, and -contains an aggregation of the entries in that span. The data from the original -time-series is aggregated into just six values: - - * *First* - the value of the first entry in the span. - * *Last* - the value of the last entry. - * *Min* - the smallest value. - * *Max* - the largest value. - * *Sum* - the sum of all the values in the span. - * *Count* - the total number of entries in the span. - -This results in a much more compact time series that still contains useful -information about the original. Let's look at an example of rollup data: +A **rollup** is a time-series that summarizes the data from another time-series +by dividing time-series entries into set units of time (like a second or a week). +Each entry in the rollup time-series represents one of those units, and the data +from that unit in the original time-series is aggregated into six values: + +* *First* - the value of the first entry in the unit. +* *Last* - the value of the last entry. +* *Min* - the smallest value. +* *Max* - the largest value. +* *Sum* - the sum of all the values in the unit. +* *Count* - the total number of entries in the unit. + +This results in a much more compact time-series that still contains useful +information about the original time-series (also called the "named" or "raw" +time-series). Rollup time-series are created automatically according to +**rollup policies**. Rollup policies apply to all documents in a collection, and +each collection can have multiple policies. + +Let's look at an example of rollup data:
    !["Rollup time-series entries"](images/rollup-1.png "A rollup time-series' entries") -**Values**: -Time-series entry can have an array of numerical values, so each of these six -aggregations are made for each of the values. A new "rollup" time-series is created -with one entry for each span. If the raw time-series has *n* values per entry, the -rollup time-series will have _6*n_ per entry: the first six will be the summary of -the first raw value, the next six will be aggregations of the next raw value, and -so on. Because entries are limited to 32 values, rollups are limited to the first -five values of an original time series entry, resulting in 30 aggregate values. - -**Timestamp**: -The aggregation span is a round number of one of these time units: a second, day, -week, month, or year. The span includes all entries starting at a round number of time -units, and ending at another round number - *minus one millisecond* inclusive (since -milliseconds are the minimal resolution in RavenDB time-series). The timestamp for a -rollup entry is the beginning of the span it represents, so it is a round number of time -units. +**1) Values:** +Each group of six values represents one value in the original entries. If the raw +time-series has *n* values per entry, the rollup time-series will have _6*n_ per entry: +the first six summarize the first raw value, the next six summarize the next raw value, +and so on. Because time-series entries are limited to 32 values, rollups are limited to +the first five values of an original time series entry, or 30 aggregate values. + +**2) Timestamp:** +The aggregation spans always begin at a round number of one of these time units: a +second, minute, hour, day, week, month, or year. So the span includes all entries +starting at a round number of time units, and ending at the next round number *minus +one millisecond* (since milliseconds are the minimal resolution in RavenDB +time-series). The timestamp for a rollup entry is the beginning of the span it +represents. For example, if the aggregation span is one day, the spans will start at times like: `2020-01-01 00:00:00`, `2020-01-02 00:00:00`, -`2020-01-03 00:00:00`, -And these will also be the time-stamps of the rollup entries. +`2020-01-03 00:00:00` etc. -**Name**: -A rollup time-series name has this format: +**3) Name:** +A rollup time-series' name has this format: `"@"` It is a combination of the name of the raw time-series and the name of the time-series policy separated by a `@` character - in the image above these are @@ -129,9 +130,8 @@ public class RawTimeSeriesPolicy : TimeSeriesPolicy ####The `TimeValue` struct {CODE-BLOCK: csharp} -public struct TimeValue : IDynamicJson, IEquatable +public struct TimeValue { - public static TimeValue FromSeconds(int seconds); public static TimeValue FromMinutes(int minutes); public static TimeValue FromHours(int hours); @@ -159,6 +159,7 @@ public class TimeSeriesCollectionConfiguration { public bool Disabled; public List Policies; + public RawTimeSeriesPolicy RawPolicy; } public class TimeSeriesConfiguration @@ -171,6 +172,7 @@ public class TimeSeriesConfiguration | - | - | | `Disabled` | If set to `true`, rollup processes will stop, and time-series data will not be deleted by retention policies. | | `Policies` | Populate this `List` with your rollup policies | +| `RawPolicy` | The `RawTimeSeriesPolicy`, the retention policy for the raw time-series | | `Collections` | Populate this `Dictionary` with the `TimeSeriesCollectionConfiguration`s and the names of the corresponding collections. |
    ####The Time-Series Configuration Operation From 70a3b2f89de2aa3200253b6b882c4dd124958ab6 Mon Sep 17 00:00:00 2001 From: reebhub Date: Mon, 22 Jun 2020 21:42:11 +0300 Subject: [PATCH 44/56] RDoc-1703_TimeSeries - fixes by PR comments - operations patch-TS-data folder unified in a single page --- .../session-methods/patch-ts-data.markdown | 25 +-- .../session-methods/remove-ts-data.markdown | 7 +- .../client-api/store-operations/.docs.json | 2 +- .../get-TS-data/get-TS-data.markdown | 5 +- .../store-operations/patch-TS-data.markdown | 168 ++++++++++++++++++ .../store-operations/patch-TS-data/.docs.json | 14 -- .../patch-TS-data/patch-a-document.markdown | 100 ----------- .../patch-queried-documents.markdown | 88 --------- .../TimeSeries/TimeSeriesTests.cs | 102 +++++------ 9 files changed, 230 insertions(+), 281 deletions(-) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/.docs.json delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown index d69f72a2d5..bbe46888ac 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown @@ -7,6 +7,9 @@ To patch time-series data to a document, use `session.Advanced.Defer`. +* This is the same [Defer](../../../../client-api/operations/patching/single-document#non-typed-session-api) + method we ordinarily use for patching, with additional Java Script API for the patching of time-series data. + * [Patching Time-Series Data Using `session.Advanced.Defer`](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#patching-time-series-data-using-session.advanced.defer) * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#syntax) * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#usage-flow) @@ -18,9 +21,8 @@ To patch time-series data to a document, use `session.Advanced.Defer`. {PANEL: Patching Time-Series Data Using `session.Advanced.Defer`} -* `Advanced.Defer` uses a custom Java Script to - - * Patch time-series entries to a document. - * Remove time-series entries from a document. +* The custom Java Script you pass [Defer](../../../../client-api/operations/patching/single-document#non-typed-session-api) + can patch time-series entries to a document or remove entries from a document. * You can handle a single document at a time. {PANEL/} @@ -59,28 +61,17 @@ To patch time-series data to a document, use `session.Advanced.Defer`. * Pass the `PatchCommandData` constructor method - * the document ID * the change vector or `null`) - * a `PatchRequest` instance -* Add the `PatchRequest` instance a Java Script. - Use the script to append or remove time-series entries. + * a `PatchRequest` instance with a Java Script that appends or removes time-series entries. * Call `session.SaveChanges()` to perform the patch. {PANEL/} {PANEL: Usage Samples} -* In this sample, we use `session.Advanced.Defer` to patch - a single time-series entry to a document . - The script draws its arguments from its "Values" section. - {CODE TS_region-Session_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* In this sample, we provide `session.Advanced.Defer`with - a script that patches 100 time-series entries to a document. - Timestamps and values are drawn from an array, and other - arguments are provided in the "Values" section. +* In this sample, we pass `Defer`a script that patches a document 100 time-series entries with random heartrate values. {CODE TS_region-Session_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -* In this sample, we remove a range of 50 time-series entries - from a document. +* In this sample, we remove a range of 50 time-series entries from a document. {CODE TS_region-Session_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown index f2d37fbf79..7932641afe 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown @@ -25,8 +25,11 @@ Remove time-series data using `TimeSeriesFor.Remove`. `TimeSeriesFor.Remove` is used for the removal of time-series and time-series entries. -There is no need to explicitly remove a time-series; -the series is removed when all its entries are removed. +* There is no need to explicitly remove a time-series; + the series is removed when all its entries are removed. +* Attempting to remove nonexistent entries results in a noop + and generates no exception. + {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json index 32316e0625..854148f30a 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json @@ -12,7 +12,7 @@ "Mappings": [] }, { - "Path": "/patch-TS-data", + "Path": "patch-TS-data.markdown", "Name": "Patch Time-Series Data", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown index 806663b326..93bcef1fd4 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown @@ -11,7 +11,7 @@ Get a single time-series' data using `GetTimeSeriesOperation`. * [`GetTimeSeriesOperation`](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#gettimeseriesoperation) * [Syntax](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#syntax) * [Usage Flow](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#usage-flow) - * [Usage Samples](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#usage-samples) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#usage-sample) {NOTE/} @@ -46,7 +46,6 @@ time-series. * **Return Value**: **`TimeSeriesRangeResult`** {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - When a nonexistent time-series is requested, the return value will be `null`. When a nonexistent entries-range is requested, @@ -67,7 +66,7 @@ time-series. {PANEL/} -{PANEL: Usage Samples} +{PANEL: Usage Sample} * In this sample, we retrieve all the entries of a time-series. {CODE timeseries_region_Get-Single-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown new file mode 100644 index 0000000000..901ca85f7f --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown @@ -0,0 +1,168 @@ +## `PatchOperation`, `PatchByQueryOperation` +# Patch Time-Series Data + +--- + +{NOTE: } + +* Time-series data can be patched - + * To a single document, located by its ID. + * To multiple documents located by a query. +* Patching operations can be used to append, retrieve and remove time-series entries. + +* In this page: + * [Patching Operations](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patching-operations) + * [`PatchOperation`](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchoperation) + * [Syntax](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#syntax) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples) + * [`PatchByQueryOperation`](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation) + * [Syntax](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#syntax-1) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow-1) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples-1) + +{NOTE/} + +--- + +{PANEL: Patching Operations} + +* To **load a document by its ID and patch it time-series data**, use [PatchOperation](../../../../../client-api/operations/patching/single-document#patching-how-to-perform-single-document-patch-operations). + `PatchOperation` can be used to **append** and **remove** time-series entries. + + Here, for example, we use `PatchOperation` to patch a document a single time-series entry. + {CODE TS_region-Operation_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + {INFO: } + This is the ordinary `PatchOperation` method we use for single-document patch + operations, with its custom script using the time-series JS API. + {INFO/} + +* To **run a document query and patch time-series data to documents you find**, use [PatchByQueryOperation](../../../../../client-api/operations/patching/set-based). + `PatchByQueryOperation` can be used to **append**, **get** and **remove** time-series entries. + + Here, we use `PatchByQueryOperation` to append a time-series entry to all + documents in the User collection. + {CODE TS_region-PatchByQueryOperation-Append-To-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + {INFO: } + This is the ordinary `PatchByQueryOperation` method we use for set-based document + operations, with its custom script using the time-series JS API. + {INFO/} + +{PANEL/} + +{PANEL: `PatchOperation`} + +--- + +#### Syntax + +* **`PatchOperation`** + * **Definition** + {CODE PatchOperation-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `id` | `string` | Patched document ID | + | `changeVector` | `string` | Change vector, to verify that the document hasn't been modified.
    Can be `null`. | + | `patch` | `PatchRequest` | The patching Java Script | + | `patchIfMissing` | `PatchRequest` | Patching Java Script to be used if the document isn't found | + | `skipPatchIfChangeVectorMismatch` | `bool` | If true, do not patch if the document has been modified
    default: **false** | + +* **`PatchRequest`** + * **Definition** + {CODE PatchRequest-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + * **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `Script` | `string` | Patching script | + | `Values` | `Dictionary` | Values that the patching script can use | + +--- + +#### Usage Flow + +* Create an instance of `PatchOperation` and pass its constructor - + * the document ID + * the change vector (or `null`) + * a new `PatchRequest` instance +* Use the `PatchRequest` instance to pass `PatchOperation` + a Java Script that appends or removes time-series entries. +* Call `store.Operations.Send` to execute the operation. + +--- + +#### Usage Samples + +* In this sample, we provide `PatchOperation`with a script that patches + 100 time-series entries to a document. + Timestamps and values are drawn from an array, and other + arguments are provided in the "Values" section. + {CODE TS_region-Operation_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* In this sample, we use `PatchOperation` to remove a range of 50 time-series + entries from a document. + {CODE TS_region-Operation_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +{PANEL: `PatchByQueryOperation`} + +--- + +#### Syntax + +* **`store.Operations.Send` Definition** + {CODE Store-Operations-send-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **`PatchByQueryOperation` Definition** + {CODE PatchByQueryOperation-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `queryToUpdate` | `IndexQuery` | The query, including the Java Script | + | `QueryOperationOptions` | `options` | Additional options
    Default: `null` | + +* **Return Value**: `Operation` + +--- + +#### Usage Flow + +* Create a `PatchByQueryOperation` operation. +* Pass `PatchByQueryOperation` a new `IndexQuery` instance. +* Add the `IndexQuery` instance a Java Script that specifies + the query you want to run. +* Call `store.Operations.Send` to execute the operation. + +--- + +#### Usage Samples + +* In this sample, we run a document query and remove the HeartRate time-series + from documents we find. + {CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* In this sample, we run a query and **get** a range of entries from the documents we find. + {CODE TS_region-PatchByQueryOperation-Get@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time Series Management]() + +**Client-API - Session Articles**: +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() + +**Client-API - Operations Articles**: +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/.docs.json deleted file mode 100644 index 75c0874c74..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/.docs.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "Path": "patch-a-document.markdown", - "Name": "Patch a Document", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "patch-queried-documents.markdown", - "Name": "Patch Queried Documents", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - } -] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown deleted file mode 100644 index e8ba8ba047..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document.markdown +++ /dev/null @@ -1,100 +0,0 @@ -## `PatchOperation` -# Patch TS Data To a Document - ---- - -{NOTE: } - -* Use `PatchOperation` to patch time-series data to a single document - loaded by its ID. - -* In this page: - * [`PatchOperation`](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-a-document#patchoperation) - * [Syntax](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-a-document#syntax) - * [Usage Flow](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-a-document#usage-flow) - * [Usage Samples](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-a-document#usage-samples) -{NOTE/} - ---- - -{PANEL: `PatchOperation`} - -* `PatchOperation` uses a custom Java Script to - - * Patch time-series entries to a document. - * Remove time-series entries from a document. - -{PANEL/} - -{PANEL: Syntax} - -* **`PatchOperation`** - * **Definition** - {CODE PatchOperation-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - * **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `id` | `string` | Patched document ID | - | `changeVector` | `string` | Change vector, to verify that the document hasn't been modified.
    Can be `null`. | - | `patch` | `PatchRequest` | The patching Java Script | - | `patchIfMissing` | `PatchRequest` | Patching Java Script to be used if the document isn't found | - | `skipPatchIfChangeVectorMismatch` | `bool` | If true, do not patch if the document has been modified
    default: **false** | - -* **`PatchRequest`** - * **Definition** - {CODE PatchRequest-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - - * **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `Script` | `string` | Patching script | - | `Values` | `Dictionary` | Values that the patching script can use | - -{PANEL/} - -{PANEL: Usage Flow} - -* Create an instance of `PatchOperation` and pass its constructor - - * the document ID - * the change vector (or `null`) - * a new `PatchRequest` instance -* Use the `PatchRequest` instance to pass `PatchOperation` - a Java Script. - Use the script to append or remove time-series entries. -* Call `store.Operations.Send` to execute the operation. - -{PANEL/} - -{PANEL: Usage Samples} - -* In this sample, we use `PatchOperation` to patch a document a single - time-series entry. - The script draws its arguments from its "Values" section. - {CODE TS_region-Operation_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* In this sample, we provide `PatchOperation`with a script that patches - 100 time-series entries to a document. - Timestamps and values are drawn from an array, and other - arguments are provided in the "Values" section. - {CODE TS_region-Operation_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* In this sample, we use `PatchOperation` to remove a range of 50 time-series - entries from a document. - {CODE TS_region-Operation_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown deleted file mode 100644 index 626722dca0..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents.markdown +++ /dev/null @@ -1,88 +0,0 @@ -## `PatchByQueryOperation` -# Patch TS Data to Queried Documents - ---- - -{NOTE: } - -* Use [PatchByQueryOperation](../../../../../client-api/operations/patching/set-based#patchbyqueryoperation) - to run a query and patch time-series data to the documents you find. - -* In this page: - * [`PatchByQueryOperation`](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-queried-documents#patchbyqueryoperation) - * [Syntax](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-queried-documents#syntax) - * [Usage Flow](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-queried-documents#usage-flow) - * [Usage Samples](../../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data/patch-queried-documents#usage-samples) -{NOTE/} - ---- - -{PANEL: `PatchByQueryOperation`} - -`PatchByQueryOperation` runs a Java Script to perform a query and patch -data to documents it finds. - -You can use this script to - - -* Append time-series data to documents -* Remove time-series data from documents -* Get documents' time-series data - -{PANEL/} - -{PANEL: Syntax} - -* **`store.Operations.Send` Definition** - {CODE Store-Operations-send-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* **`PatchByQueryOperation` Definition** - {CODE PatchByQueryOperation-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - * **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `queryToUpdate` | `IndexQuery` | The query, including the Java Script | - | `QueryOperationOptions` | `options` | Additional options
    Default: `null` | - -* **Return Value**: `Operation` - -{PANEL/} - -{PANEL: Usage Flow} - -* Create a `PatchByQueryOperation` operation. -* Pass `PatchByQueryOperation` a new `IndexQuery` instance. -* Add the `IndexQuery` instance a Java Script that specifies - the query you want to run. -* Call `store.Operations.Send` to execute the operation. - -{PANEL/} - -{PANEL: Usage Samples} - -* In this sample, `PatchByQueryOperation` Appends a time-series entry to all - the documents in the User collection. - {CODE TS_region-PatchByQueryOperation-Append-To-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* Here, our script Removes time-series from documents it finds. - {CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* In this sample, we Get ranges of time-series entries from the documents located by - the query. - {CODE TS_region-PatchByQueryOperation-Get@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index c050e75a06..0c41a8a34a 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -263,63 +263,42 @@ public void SessionTests() } #endregion - #region TS_region-Session_Patch-Append-Single-TS-Entry - // Patch a document a single time-series entry - using (var session = store.OpenSession()) - { - baseline = DateTime.Today; - - session.Advanced.Defer(new PatchCommandData("users/1-A", null, - new PatchRequest - { - Script = @"timeseries(this, args.timeseries). - append( - args.timestamp, - args.values, - args.tag - );", - Values = - { - { "timeseries", "HeartRate" }, - { "timestamp", baseline.AddMinutes(1) }, - { "values", 59d }, - { "tag", "watches/fitbit" } - } - }, null)); - session.SaveChanges(); - } - #endregion - #region TS_region-Session_Patch-Append-100-TS-Entries - baseline = DateTime.Today; + var baseline = DateTime.Today; - // Create an array of values to patch - var toAppend = Enumerable.Range(0, 100) - .Select(i => new Tuple - (baseline.AddSeconds(i), 59d)) - .ToArray(); + // Create arrays of timestamps and random values to patch + List values = new List(); + List timeStamps = new List(); + + for (var cnt = 0; cnt < 100; cnt++) + { + values.Add(68 + Math.Round(19 * new Random().NextDouble())); + timeStamps.Add(baseline.AddSeconds(cnt)); + } session.Advanced.Defer(new PatchCommandData("users/1-A", null, new PatchRequest { Script = @" var i = 0; - for(i = 0; i < args.toAppend.length; i++) + for(i = 0; i < $values.length; i++) { - timeseries(id(this), args.timeseries) + timeseries(id(this), $timeseries) .append ( - new Date(args.toAppend[i].Item1), - args.toAppend[i].Item2, - args.tag); + new Date($timeStamps[i]), + $values[i], + $tag); }", Values = { { "timeseries", "HeartRate" }, - { "toAppend", toAppend }, + { "timeStamps", timeStamps }, + { "values", values }, { "tag", "watches/fitbit" } } }, null)); + session.SaveChanges(); #endregion @@ -328,7 +307,11 @@ public void SessionTests() session.Advanced.Defer(new PatchCommandData("users/1-A", null, new PatchRequest { - Script = @"timeseries(this, args.timeseries).remove(args.from, args.to);", + Script = @"timeseries(this, $timeseries) + .remove( + $from, + $to + );", Values = { { "timeseries", "HeartRate" }, @@ -424,7 +407,7 @@ public void StoreOperationsTests() #region timeseries_region_Get-Multiple-Time-Series // Get value ranges from two time-series using GetMultipleTimeSeriesOperation - TimeSeriesDetails timesSeriesDetails = store.Operations.Send( + TimeSeriesDetails multipleTimesSeriesDetails = store.Operations.Send( new GetMultipleTimeSeriesOperation(documentId, new List { new TimeSeriesRange @@ -493,7 +476,7 @@ public void StoreOperationsTests() store.Operations.Send(new PatchOperation("users/1-A", null, new PatchRequest { - Script = "timeseries(this, args.timeseries).append(args.timestamp, args.values, args.tag);", + Script = "timeseries(this, $timeseries).append($timestamp, $values, $tag);", Values = { { "timeseries", "HeartRate" }, @@ -505,30 +488,37 @@ public void StoreOperationsTests() #endregion #region TS_region-Operation_Patch-Append-100-TS-Entries - // Create an array of values to patch - var toAppend = Enumerable.Range(0, 100) - .Select(i => new Tuple - (baseline.AddSeconds(i), 59d)) - .ToArray(); + var baseline = DateTime.Today; + + // Create arrays of timestamps and random values to patch + List values = new List(); + List timeStamps = new List(); + + for (var cnt = 0; cnt < 100; cnt++) + { + values.Add(68 + Math.Round(19 * new Random().NextDouble())); + timeStamps.Add(baseline.AddSeconds(cnt)); + } store.Operations.Send(new PatchOperation("users/1-A", null, new PatchRequest { Script = @"var i = 0; - for (i = 0; i < args.toAppend.length; i++) - {timeseries(id(this), - args.timeseries).append( - new Date( - args.toAppend[i]. - Item1), - args.toAppend[i].Item2, args.tag); + for (i = 0; i < $values.length; i++) + {timeseries(id(this), $timeseries) + .append ( + new Date($timeStamps[i]), + $values[i], + $tag); }", Values = { { "timeseries", "HeartRate" }, - { "toAppend", toAppend }, + { "timeStamps", timeStamps}, + { "values", values }, { "tag", "watches/fitbit" } } + })); #endregion @@ -536,7 +526,7 @@ public void StoreOperationsTests() store.Operations.Send(new PatchOperation("users/1-A", null, new PatchRequest { - Script = "timeseries(this, args.timeseries).remove(args.from, args.to);", + Script = "timeseries(this, $timeseries).remove($from, $to);", Values = { { "timeseries", "HeartRate" }, From 2c5a7441c8608f373b2ade9404c8da576e3e647e Mon Sep 17 00:00:00 2001 From: morhilai Date: Tue, 23 Jun 2020 18:27:19 +0300 Subject: [PATCH 45/56] RDoc-1703_TimeSeries design.markdown review comments applied - minor style and link fixes in other pages --- .../timeseries/design.markdown | 105 +++++++++++------- .../timeseries/indexing.markdown | 19 ++-- .../time-series-and-other-features.markdown | 4 +- 3 files changed, 77 insertions(+), 51 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown index 401f985b90..614bb65b55 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown @@ -4,7 +4,7 @@ {NOTE: } -A time-series is an array of Gorilla-encoded entries, that is related +* A time-series is an array of Gorilla-encoded entries, that is related to a single specific document. * In this page: @@ -29,43 +29,58 @@ to a single specific document. #### Document Extension -A time-series is related to the document it extends, by - +Each time-series belongs to, or _extends_, one particular document. The +document and the time-series reference each other through: * A **reference to the time-series** in the document's metadata. The time-series' **name** is kept in the document's metadata. - The time-series' **data** is stored in a different location. ' -* A **reference to the document** in the time-series' data. + The time-series' **data** is stored in a different location. +* A **reference to the document** in the time-series data. --- #### The `HasTimeSeries` Flag -* When the first time-series is added to a document, RavenDB automatically sets - a `HasTimeSeries` Flag in the document's metadata. - {CODE-BLOCK: JSON} +* When a document has one or more time-series, RavenDB automatically adds + a `HasTimeSeries` flag in the document's metadata under `@flags`: + +{CODE-BLOCK: JSON} { "Name": "Paul", "@metadata": { "@collection": "Users", + "@timeseries": [ + "my time-series" + ] "@flags": "HasTimeSeries" } } {CODE-BLOCK/} - -* When all time-series have been removed from a document, RavenDB will - automatically remove the flag. +* When all time-series are removed from a document, RavenDB +automatically removes the flag. --- -#### Segmentation - -A time-series array is constructed of segments. - -* A time-series of up to 32k entries is contained in a single segment. -* A time-series longet than 32k entries is contained in multiple segments. -* A new segment is also created when a period of more than 25 days has passed - since the last measurement. +#### Segments + +At the server storage level, time-series data is divided into **segments**. + +* Segments contain a number of consecutive entries from the same +time-series. +* Segments have a maximum size of 2 kB. +* The 2 kb limit means that a segment can only contain up to 32k entries, +so a time-series with more than 32k entries will always be stored in +multiple segments. +* In practice, segments usually contain far fewer than 32k entries, +the amount depends on the size of the entries (after compression). + * As an example - in the [Northwind sample dataset](../../studio/database/tasks/create-sample-data), + the _Companies_ documents all have a time-series called _StockPrice_. + These time-series are stored in segments that have ~10-20 entries each. +* If two consecutive entries are more than 25 days apart, they will +always be stored in a separate segments. + * To be exact, the maximum possible gap between entries in the + same segment is `int.MaxValue` milliseconds, or ~24.86 days. --- @@ -77,9 +92,9 @@ Each time-series entry is composed of: | Parameters | Type | Description | |:-------------|:-------------|:-------------| - | `Timestamp` | DateTime | Time signature | - | `Tag` | string | Optional tag | - | `Values` | double[] | An array of up to 32 values | + | `Timestamp` | DateTime (UTC) | The time of the event or data represented by the entry. For time-series, time is measured up to millisecond resolution. | + | `Tag` | string | An optional tag for an entry. Can be any string up to 255 bytes. Possible uses for the tag: descriptions or metadata for individual entries; storing a document id, which can then be referenced when querying a time-series. This is the only component of the entry that is not numerical. | + | `Values` | double[] | An array of up to 32 `double` values | {PANEL/} @@ -91,8 +106,9 @@ Each time-series entry is composed of: * **Name Change** **Creating** or **removing** a time-series adds or removes its name - to/from the metadata of the document it extends. - These actions **will** invoke a document-change event. + from the metadata of the document it extends. + This modification counts as document-change event, and so it triggers + processes such as revisions. * **Data Updates** Modifying time-series data does **not** invoke a document-change event, as long as it doesn't create a new time-series or remove an existing one. @@ -101,8 +117,8 @@ Each time-series entry is composed of: #### Success -Updating a time-series is designed to succeed without causing any conflict. -As long as the document it extends exists, updating a Time-Serie will always succeed. +Updating a time-series is designed to succeed without causing a concurrency conflict. +As long as the document it extends exists, updating a time-series will always succeed. --- @@ -110,21 +126,30 @@ As long as the document it extends exists, updating a Time-Serie will always suc Time-series actions do not cause conflicts. -* **Time-series update by multiple cluster Nodes** - * When a time-series' data is replicated by multiple nodes, the data - from all nodes is merged into a single series. - * When multiple nodes append **different values** at the same timestamp, - the **bigger value** is chosen for this entry. - * When multiple nodes apppend **different amount of values** for the same - timestamp, the **bigger amount of values** is chosen for this entry. - * When an existing value at a certain timestamp is deleted by a node - and updated by another node, the deletion is chosen. - -* **Time-series update By multiple clients of the same node** - * When a time-series' value at a certain timestamp is appended by - multiple clients more or less simultaneously, the last one is chosen. - * When an existing value at a certain timestamp is deleted by a client - and updated by another client, the last action is chosen. +**Time-series updated concurrently by multiple cluster nodes**: + +* When a time-series' data is replicated by multiple nodes, the data +from all nodes is merged into a single series. +* When multiple nodes append **different values** at the same timestamp: + * If the nodes try to append a **different number of values** for the same + timestamp, the **bigger amount of values** is applied. + * If the nodes to append the same number of values, the first values from + each node are compared. The append whose first value sorts higher + [_lexicographically_](https://mathworld.wolfram.com/LexicographicOrder.html) + (not numerically) is applied. + For example, lexicographic order would sort numbers like this: + `1 < 10 < 100 < 2 < 21 < 22 < 3` + * If an existing value at a certain timestamp is deleted by one node + and updated by another node, the deletion is applied. + +**Time-series update By multiple clients of the same node**: + +* When a time-series' value at a certain timestamp is appended by +multiple clients more or less simultaneously, RavenDB uses the last-write +strategy. +* When an existing value at a certain timestamp is deleted by a client +and updated by another client, RavenDB still uses the last-write +strategy. --- diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown index a0edf92ed5..acdc6074e9 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown @@ -24,7 +24,7 @@ client application or from the Studio. * [`AbstractMultiMapMultiMapIndexCreationTask`](../../document-extensions/timeseries/indexing#section-1) * [`TimeSeriesIndexDefinition`](../../document-extensions/timeseries/indexing#section-2) * [`TimeSeriesSegment` Object](../../document-extensions/timeseries/indexing#object) - * [Examples](../../document-extensions/timeseries/indexing#examples) + * [Samples](../../document-extensions/timeseries/indexing#samples) {NOTE/} @@ -70,7 +70,7 @@ public class AbstractTimeSeriesIndexCreationTask { } | `AddMap()` | `string timeseries`, `Expression map` | Sets a map function for all time-series in the database with specified name (the first parameter) | | `AddMapForAll()` | `Expression map` | Sets a map function for all time-series in the database | -See the example [below](../../document-extensions/timeseries/indexing#section-4). +See the example [below](../../document-extensions/timeseries/indexing#section-3). --- @@ -97,7 +97,7 @@ public abstract class AbstractMultiMapTimeSeriesIndexCreationTask | `AddMap()` | `string timeseries`, `Expression map` | Sets a map function for all time-series with the specified name (the first parameter) that belong to documents with the type `TSource` | | `AddMapForAll()` | `Expression map` | Sets a map function for all time-series that belong to documents with either the type `TBase` _or_ any type that inherits from `TBase` | -See the example [below](../../document-extensions/timeseries/indexing#section-5). +See the example [below](../../document-extensions/timeseries/indexing#section-4). --- @@ -112,7 +112,7 @@ For now, `TimeSeriesIndexDefinition` is functionally equivalent to the Using it for time-series indexes is recommended - it exists in case additional functionality is added in future versions of RavenDB. -See the example [below](../../document-extensions/timeseries/indexing#section-3). +See the example [below](../../document-extensions/timeseries/indexing#samples). --- @@ -156,17 +156,18 @@ public class TimeSeriesEntry {CODE-BLOCK/} {PANEL/} -{PANEL: Examples} -Creating a time-series index using `TimeSeriesIndexDefinition`: +{PANEL: Samples} +
    +Creating a time-series index using `TimeSeriesIndexDefinition`: {CODE indexes_IndexDefinition@DocumentExtensions\TimeSeries\Indexing.cs /} -#### `AbstractTimeSeriesIndexCreationTask` +#### `AbstractTimeSeriesIndexCreationTask` {CODE indexes_CreationTask@DocumentExtensions\TimeSeries\Indexing.cs /} -#### `AbstractMultiMapTimeSeriesIndexCreationTask` +#### `AbstractMultiMapTimeSeriesIndexCreationTask` {CODE indexes_MultiMapCreationTask@DocumentExtensions\TimeSeries\Indexing.cs /} -#### Map-Reduce Time-Series Index +#### Map-Reduce Time-Series Index {CODE indexes_MapReduce@DocumentExtensions\TimeSeries\Indexing.cs /} Yet another way to create a time-series index is to create a diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown index 8b40fb6b1f..f0d9d2b236 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown @@ -3,10 +3,10 @@ --- {NOTE: } -This page describes how time-series interact with various other RavenDB +* This page describes how time-series interact with various other RavenDB features. -In this page: +* In this page: * [General Features](../..document-extensions/timeseries/time-series-and-other-features#general-features) * [Smuggler](../..document-extensions/timeseries/time-series-and-other-features#smuggler) * [Ongoing Tasks](../..document-extensions/timeseries/time-series-and-other-features#ongoing-tasks) From 2b95458548d0eee1e3364dd57a70a6e578cd33f8 Mon Sep 17 00:00:00 2001 From: reebhub Date: Wed, 24 Jun 2020 00:24:30 +0300 Subject: [PATCH 46/56] RDoc-1703_TimeSeries - added a "Time-Series Javascript API" page. - edited the patching pages (for Defer, PatchOperation and PatchByQueryOperation) & added references to the new page. --- .../timeseries/client-api/.docs.json | 6 + .../client-api/TS-javascript-api.markdown | 120 ++++++++++++++++++ .../session-methods/patch-ts-data.markdown | 20 +-- .../append-ts-data-in-bulk.markdown | 6 +- .../store-operations/patch-TS-data.markdown | 36 +++--- .../TimeSeries/TimeSeriesTests.cs | 41 +++++- 6 files changed, 199 insertions(+), 30 deletions(-) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json index 400131767c..9315aafee5 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json @@ -14,5 +14,11 @@ "Path": "/store-operations", "Name": "Store Operations", "Mappings": [] + }, + { + "Path": "TS-javascript-api.markdown", + "Name": "Time-Series JavaScript API", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] } ] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown new file mode 100644 index 0000000000..d0491a633c --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown @@ -0,0 +1,120 @@ +# Time-Series Javascript API +--- + +{NOTE: } + +Some time-series functions are provided not by dedicated time-series methods, +but by general-purpose methods that gain time-series functionality by running +a user-custom [Javascript](../../../server/kb/javascript-engine) that calls +time-series API methods. + +* Methods that gain time-series functionality this way are: + * [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) - + `session` patching method + * [PatchOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchoperation) - + `store` patching operation + * [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation) - + `store` patch-by-query operation + +* In this page: + * [Time-Series JS API methods](../../../document-extensions/timeseries/client-api/ts-javascript-api#time-series-js-api-methods) + * [timeseries - Choose a Time-Series](../../../document-extensions/timeseries/client-api/ts-javascript-api#section) + * [timeseries.append - Append Untagged Entry](../../../document-extensions/timeseries/client-api/ts-javascript-api#section-1) + * [timeseries.append - Append Tagged Entry](../../../document-extensions/timeseries/client-api/ts-javascript-api#section-2) + * [timeseries.remove - Remove Entries Range](../../../document-extensions/timeseries/client-api/ts-javascript-api#section-3) + * [timeseries.get - Get Entries Range](../../../document-extensions/timeseries/client-api/ts-javascript-api#section-4) + * [Usage Samples](../../../document-extensions/timeseries/client-api/ts-javascript-api#usage-samples) + +{NOTE/} + +--- + +{PANEL: Time-Series JS API methods} + +The JS time-series API includes these methods: + +--- + +#### `timeseries (doc, name)` + +Choose a time-series by the ID of its owner document and by the series name. + + | Parameter | Type | Explanation + |:---:|:---:|:---:| + | doc | `string` | Document ID + | name | `string` | Time-Series Name + +--- + +#### `timeseries.append (timestamp, values)` + +Use this method to append time-series entries to a document. + +| Parameter | Type | Explanation +|:---:|:---:|:---:| +| timestamp | `DateTime` | Timestamp +| values | `double[]` | Values + +--- + +#### `timeseries.append (timestamp, values, tag)` + +Use this method to append to a document time-series entries with tags. + +| Parameter | Type | Explanation +|:---:|:---:|:---:| +| timestamp | `DateTime` | Timestamp +| values | `double[]` | Values +| tag | `string` | Tag + +--- + +#### `timeseries.remove (from, to)` + +Use this method to remove a range of entries from a document. + +| Parameter | Type | Explanation +|:---:|:---:|:---:| +| from | `DateTime` | Range Start +| to | `DateTime` | Range End + +--- + +#### `timeseries.get (from, to)` + +Use this method to retrieve a range of time-series entries. + +| Parameter | Type | Explanation +|:---:|:---:|:---:| +| from | `DateTime` | Range Start +| to | `DateTime` | Range End + +{PANEL/} + +{PANEL: Usage Samples} + +* In this sample, we pass [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) + a script that patches a document 100 time-series entries. + {CODE TS_region-Session_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + +* In this sample, we pass [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation) + a script that runs a document query and removes the HeartRate time-series from + located documents. + {CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles +**Studio Articles**: +[Studio Time-Series Management]() + +**Client-API - Session Articles**: +[Time-Series Overview]() +[Creating and Modifying Time-Series]() +[Deleting Time-Series]() +[Retrieving Time-Series Values]() +[Time-Series and Other Features]() + +**Client-API - Operations Articles**: +[Time-Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown index bbe46888ac..ed1fca18f5 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown @@ -5,10 +5,9 @@ {NOTE: } -To patch time-series data to a document, use `session.Advanced.Defer`. - -* This is the same [Defer](../../../../client-api/operations/patching/single-document#non-typed-session-api) - method we ordinarily use for patching, with additional Java Script API for the patching of time-series data. +* To patch time-series data to a document, use `session.Advanced.Defer`. + * You can pass `Defer` a script to Append, Get, and Remove time-series entries. + * You can handle a single document at a time. * [Patching Time-Series Data Using `session.Advanced.Defer`](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#patching-time-series-data-using-session.advanced.defer) * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#syntax) @@ -21,9 +20,14 @@ To patch time-series data to a document, use `session.Advanced.Defer`. {PANEL: Patching Time-Series Data Using `session.Advanced.Defer`} -* The custom Java Script you pass [Defer](../../../../client-api/operations/patching/single-document#non-typed-session-api) - can patch time-series entries to a document or remove entries from a document. -* You can handle a single document at a time. +{INFO: } + +* [Defer](../../../../client-api/operations/patching/single-document#non-typed-session-api) + is used for patching in general, not necessarily for time-series data patching. +* To patch time-series data, you need to customize the Javascript `Defer` uses. +* Learn about customizable Javascripts and the JS time-series API [here](../../../../document-extensions/timeseries/client-api/ts-javascript-api). + +{INFO/} {PANEL/} @@ -69,7 +73,7 @@ To patch time-series data to a document, use `session.Advanced.Defer`. {PANEL: Usage Samples} * In this sample, we pass `Defer`a script that patches a document 100 time-series entries with random heartrate values. - {CODE TS_region-Session_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE TS_region-Session_Patch-Append-100-Random-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} * In this sample, we remove a range of 50 time-series entries from a document. {CODE TS_region-Session_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown index 74968ac310..8fb2829b53 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown @@ -20,9 +20,9 @@ use `BulkInsert.TimeSeriesFor.Append`. {PANEL: `BulkInsert.TimeSeriesFor.Append`} -`store.BulkInsert` is efficient in appending large quantities of data to -the database. Use it to append time-series data by using its `TimeSeriesFor` -interface's `Append` method. +The `store.BulkInsert` operation is highly efficient in appending large quantities +of data to the database. To append time-series data in bulk, use the operation's +`TimeSeriesFor.Append` method. {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown index 901ca85f7f..78099f9864 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown @@ -6,9 +6,9 @@ {NOTE: } * Time-series data can be patched - - * To a single document, located by its ID. - * To multiple documents located by a query. -* Patching operations can be used to append, retrieve and remove time-series entries. + * to a single document located by its ID, using [PatchOperation](../../../../client-api/operations/patching/single-document#patching-how-to-perform-single-document-patch-operations). + * to multiple documents located by a query, using [PatchByQueryOperation](../../../../client-api/operations/patching/set-based). +* Both patching operations can be used to Append, Get and Remove time-series entries. * In this page: * [Patching Operations](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patching-operations) @@ -27,29 +27,29 @@ {PANEL: Patching Operations} -* To **load a document by its ID and patch it time-series data**, use [PatchOperation](../../../../../client-api/operations/patching/single-document#patching-how-to-perform-single-document-patch-operations). - `PatchOperation` can be used to **append** and **remove** time-series entries. +{INFO: } + +* To patch time-series data, use `PatchOperation` or `PatchByQueryOperation`. +* `PatchOperation` is RavenDB's operation for single-document patching, and + `PatchByQueryOperation` is used for set-based document operations. + None is dedicated to handling time-series. + You can use both to patch time-series data, by customizing the Javascript + they are using. +* Learn about customizable Javascripts and the JS time-series API [here](../../../../document-extensions/timeseries/client-api/ts-javascript-api). + +{INFO/} + +* Use `PatchOperation` to **load a document by its ID and patch it time-series data**. Here, for example, we use `PatchOperation` to patch a document a single time-series entry. {CODE TS_region-Operation_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - {INFO: } - This is the ordinary `PatchOperation` method we use for single-document patch - operations, with its custom script using the time-series JS API. - {INFO/} - -* To **run a document query and patch time-series data to documents you find**, use [PatchByQueryOperation](../../../../../client-api/operations/patching/set-based). - `PatchByQueryOperation` can be used to **append**, **get** and **remove** time-series entries. +* Use `PatchByQueryOperation` to **run a document query and patch time-series data to documents you find**. Here, we use `PatchByQueryOperation` to append a time-series entry to all - documents in the User collection. + documents of the User collection. {CODE TS_region-PatchByQueryOperation-Append-To-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - {INFO: } - This is the ordinary `PatchByQueryOperation` method we use for set-based document - operations, with its custom script using the time-series JS API. - {INFO/} - {PANEL/} {PANEL: `PatchOperation`} diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index 0c41a8a34a..0a7c922dca 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -263,7 +263,45 @@ public void SessionTests() } #endregion - #region TS_region-Session_Patch-Append-100-TS-Entries + #region TS_region-Session_Patch-Append-100-Random-TS-Entries + var baseline = DateTime.Today; + + // Create arrays of timestamps and random values to patch + List values = new List(); + List timeStamps = new List(); + + for (var cnt = 0; cnt < 100; cnt++) + { + values.Add(68 + Math.Round(19 * new Random().NextDouble())); + timeStamps.Add(baseline.AddSeconds(cnt)); + } + + session.Advanced.Defer(new PatchCommandData("users/1-A", null, + new PatchRequest + { + Script = @" + var i = 0; + for(i = 0; i < $values.length; i++) + { + timeseries(id(this), $timeseries) + .append ( + new Date($timeStamps[i]), + $values[i], + $tag); + }", + + Values = + { + { "timeseries", "HeartRate" }, + { "timeStamps", timeStamps }, + { "values", values }, + { "tag", "watches/fitbit" } + } + }, null)); + + session.SaveChanges(); + #endregion + var baseline = DateTime.Today; // Create arrays of timestamps and random values to patch @@ -276,6 +314,7 @@ public void SessionTests() timeStamps.Add(baseline.AddSeconds(cnt)); } + #region TS_region-Session_Patch-Append-100-TS-Entries session.Advanced.Defer(new PatchCommandData("users/1-A", null, new PatchRequest { From 8b4d68a7836a68587a1ed79eef31e206784f6e91 Mon Sep 17 00:00:00 2001 From: reebhub Date: Wed, 24 Jun 2020 05:57:04 +0300 Subject: [PATCH 47/56] RDoc-1703_TimeSeries - fixed BulkInsert samples (an overload has changed) - PR comments fixes --- .../append-ts-data-in-bulk.markdown | 69 ++++++++++++------- .../TimeSeries/TimeSeriesTests.cs | 39 ++++------- 2 files changed, 60 insertions(+), 48 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown index 8fb2829b53..40c3ecfe46 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown @@ -5,8 +5,10 @@ {NOTE: } -To add a large quantity of time-series entries to your database, -use `BulkInsert.TimeSeriesFor.Append`. +* `store.BulkInsert` is RavenDB's high-performance data insertion operation. + Its `TimeSeriesFor` interface resembles [session.TimeSeriesFor](../../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data) + in its ability to append multiple time-series entries in a single transaction, + while omitting the liabilities of the `session` interface to gain much higher speed. * In this page: * [`BulkInsert.TimeSeriesFor.Append`](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#bulkinsert.timeseriesfor.append) @@ -20,33 +22,52 @@ use `BulkInsert.TimeSeriesFor.Append`. {PANEL: `BulkInsert.TimeSeriesFor.Append`} -The `store.BulkInsert` operation is highly efficient in appending large quantities -of data to the database. To append time-series data in bulk, use the operation's -`TimeSeriesFor.Append` method. +Create a `BulkInsert` instance, pass its `TimeSeriesFor` method the document's ID +and time-series name, and then call `TimeSeriesFor.Append` as many times as you need +to. All the Append operations you perform this way will be executed in +a single transaction. {PANEL/} {PANEL: Syntax} -There are two bulk-insert Append methods: -[Overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) -- Each appended entry has a single value. -[Overload 2](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-2-each-appended-entry-has-multiple-values) -- Each appended entry has multiple values. +* **`TimeSeriesFor` Definition** + {CODE-BLOCK: JSON} + public TimeSeriesBulkInsert TimeSeriesFor(string id, string name) + {CODE-BLOCK/} + +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `id` | `string` | Document ID | + | `name` | `string` | Time-Series Name | + +* **Return Value**: **`TimeSeriesBulkInsert`** + +--- + +* There are two Append overloads: + * [Overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) - + Each appended entry has a single value. + * [Overload 2](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-2-each-appended-entry-has-multiple-values) - + Each appended entry has multiple values. --- #### Overload 1: Each appended entry has a single value * **Definition** - {CODE BulkInsert-Append-Single-Value-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-BLOCK:JSON} + public void Append(DateTime timestamp, double value, string tag = null) + {CODE-BLOCK/} * **Parameters** | Parameters | Type | Description | |:-------------|:-------------|:-------------| | `timestamp` | `DateTime` | TS-entry's timestamp | - | `value` | `double` | Single TS-entry value | + | `value` | `double` | A single value | | `tag` | `string` | TS-entry's tag (optional) | * **Return Value**: **`void`** @@ -56,14 +77,16 @@ There are two bulk-insert Append methods: #### Overload 2: Each appended entry has multiple values * **Definition** - {CODE BulkInsert-Append-Multiple-Values-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-BLOCK:JSON} + public void Append(DateTime timestamp, ICollection values, string tag = null) + {CODE-BLOCK/} * **Parameters** | Parameters | Type | Description | |:-------------|:-------------|:-------------| | `timestamp` | `DateTime` | TS-entry's timestamp | - | `values` | `IEnumerable` | Multiple TS-entry values | + | `values` | `ICollection` | Multiple values | | `tag` | `string` | TS-entry's tag (optional) | * **Return Value**: **`void`** @@ -72,11 +95,11 @@ There are two bulk-insert Append methods: {PANEL: Usage Flow} -* Create a `store.BulkInsert` operation. -* Create an instance of the operation's `TimeSeriesFor` interface. -* Pass `TimeSeriesFor`'s constructor the document ID and time-series name -* Call `TimeSeriesFor.Append`. - Pass it - +* Create a `store.BulkInsert` instance. +* Pass the instance's `TimeSeriesFor` - + **The document ID** + **The time-series name** +* Call `TimeSeriesFor.Append` as many times as you like. Pass it - * The appended entry's **timestamp** * **A single value** ([overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value)) -or- @@ -88,16 +111,16 @@ There are two bulk-insert Append methods: {PANEL: Usage Samples} * In this sample, we use [overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) - to append a time-series two entries. + to append a time-series two entries in a single transaction. {CODE timeseries_region_Use-BulkInsert-To-Append-2-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} * In this sample, we use [overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) - to append a time-series a hundred entries. + to append a time-series a hundred entries in a single transaction. {CODE timeseries_region_Use-BulkInsert-To-Append-100-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} * In this sample, we use [overload 2](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-2-each-appended-entry-has-multiple-values) - to append a time-series a hundred multi-values entries. - {CODE BulkInsert-overload-2-Append-100-Multi-Value-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + to append a time-series two saets of values in a single transaction. + {CODE BulkInsert-overload-2-Two-HeartRate-Sets@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index 0a7c922dca..eba2ef2a0f 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -478,33 +478,30 @@ public void StoreOperationsTests() #endregion #region timeseries_region_Use-BulkInsert-To-Append-100-Entries - // Use BulkInsert to append 100 time-series entries - for (int minute = 0; minute < 100; minute++) + // Append 100 entries in a single transaction + using (BulkInsertOperation bulkInsert = store.BulkInsert()) { - using (BulkInsertOperation bulkInsert = store.BulkInsert()) + using (TimeSeriesBulkInsert timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentId, "HeartRate")) { - using (TimeSeriesBulkInsert timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentId, "HeartRate")) + for (int minute = 0; minute < 100; minute++) { - timeSeriesBulkInsert.Append(baseline.AddMinutes(minute), new double[] { minute }, "watches/fitbit"); + timeSeriesBulkInsert.Append(baseline.AddMinutes(minute), new double[] { 80d }, "watches/fitbit"); } } } #endregion - #region BulkInsert-overload-2-Append-100-Multi-Value-Entries - IEnumerable values = new List - {59d, 63d, 71d, 69d, 64, 65d }; + #region BulkInsert-overload-2-Two-HeartRate-Sets + ICollection ExcersizeHeartRate = new List + { 89d, 82d, 85d }; + + ICollection RestingHeartRate = new List + {59d, 63d, 61d, 64d, 64d, 65d }; - // Use BulkInsert to append 100 multi-values time-series entries - for (int minute = 0; minute < 100; minute++) + using (TimeSeriesBulkInsert timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentId, "HeartRate")) { - using (BulkInsertOperation bulkInsert = store.BulkInsert()) - { - using (TimeSeriesBulkInsert timeSeriesBulkInsert = bulkInsert.TimeSeriesFor(documentId, "HeartRate")) - { - timeSeriesBulkInsert.Append(baseline.AddMinutes(minute), values, "watches/fitbit"); - } - } + timeSeriesBulkInsert.Append(baseline.AddMinutes(2), ExcersizeHeartRate, "watches/fitbit"); + timeSeriesBulkInsert.Append(baseline.AddMinutes(3), RestingHeartRate, "watches/apple-watch"); } #endregion @@ -1127,14 +1124,6 @@ public class TimeSeriesRange } #endregion - #region BulkInsert-Append-Single-Value-Definition - public void Append(DateTime timestamp, double value, string tag = null) - #endregion - - #region BulkInsert-Append-Multiple-Values-Definition - public void Append(DateTime timestamp, IEnumerable values, string tag = null) - #endregion - #region PatchOperation-Definition public PatchOperation(string id, string changeVector, PatchRequest patch, PatchRequest patchIfMissing = null, bool skipPatchIfChangeVectorMismatch = false) #endregion From ad5a309ce9843d88d78c5046ac56a319bac36060 Mon Sep 17 00:00:00 2001 From: reebhub Date: Wed, 24 Jun 2020 13:54:56 +0300 Subject: [PATCH 48/56] - TimeSeriesBatchOperation changes (the code has changed) - cosmetics --- .../client-api/api-overview.markdown | 6 +- .../session-methods/append-ts-data.markdown | 18 +-- .../get-ts-data/get-ts-entries.markdown | 14 ++- .../get-ts-data/get-ts-names.markdown | 2 +- .../with-session-load.markdown | 8 +- .../with-session-query.markdown | 6 +- .../session-methods/remove-ts-data.markdown | 13 +-- .../append-and-remove-TS-data.markdown | 109 +++++++++++------- .../TimeSeries/TimeSeriesTests.cs | 88 ++++---------- 9 files changed, 127 insertions(+), 137 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown index aa5b6f8b80..12f11bc17d 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -55,11 +55,9 @@ There are also functionalities unique to each interface. Included time-series data is held by the client's session, and can be handed to the user the instant it is required. * **Time-series functionalities unique to the `store`interface**: - * Appending, removing and getting the data of **multiple time-series** - in a single operation. + * Getting the data of **multiple time-series** in a single operation. * Managing time-series **rollup and retention policies**. - * Patching time-series data to **multiple documents** located - by a query. + * Patching time-series data to **multiple documents** located by a query. {PANEL/} {PANEL: Available Time-Series `session` methods} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown index 3981c8ab91..b1accb7fd2 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown @@ -36,7 +36,7 @@ to add the entry to this series at the specified timestamp. * **Modifying Entry Values** Append a time-series an entry it already has, - to update the existing entry with new data. + to update the existing entry with the new data. {PANEL/} @@ -60,14 +60,14 @@ There are two `TimeSeriesFor.Append` methods: | Parameters | Type | Description | |:-------------|:-------------|:-------------| | `timestamp` | DateTime | Time-series entry's timestamp | - | `value` | double | For a new time-series entry, this will be its initial value.
    For an existing entry, update the value with the one provided here.| - | `tag` | string | Time-series entry's tag
    The tag is optional. | + | `value` | double | Entry's value | + | `tag` | string | Entry's tag
    The tag is optional. | * **Return Value** No return value. * **Exceptions** - Exceptions are not generated. + If the document doesn't exist, a `DocumentDoesNotExistException` exception is thrown. --- @@ -80,14 +80,15 @@ There are two `TimeSeriesFor.Append` methods: | Parameters | Type | Description | |:-------------|:-------------|:-------------| | `timestamp` | DateTime | Time-series entry's timestamp | - | `values` | IEnumerable | For a new time-series entry, these will be its initial values.
    For an existing entry, update the values with the ones provided here. | - | `tag` | string | Time-series entry's tag
    The tag is optional. | + | `values` | IEnumerable | Entry's values | + | `tag` | string | Entry's tag
    The tag is optional. | * **Return Value** No return value. * **Exceptions** - Exceptions are not generated. + If the document doesn't exist, a `DocumentDoesNotExistException` exception is thrown. + {PANEL/} @@ -96,7 +97,8 @@ There are two `TimeSeriesFor.Append` methods: * Open a session. * Create an instance of `TimeSeriesFor`. * Either pass `TimeSeriesFor` an explicit document ID, -or- - * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + * Pass `TimeSeriesFor` the time-series name. * Call `TimeSeriesFor.Append`. * Call `session.SaveChanges` for the action to take effect on the server. diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown index de9daa54a8..16d122f3ee 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown @@ -10,10 +10,13 @@ Get a range of time-series entries using `TimeSeriesFor.Get`. * Results can be sliced to pages and retrieved gradually. {INFO: } -[Include](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview) -time-series data while [loading](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load) -or [querying](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query) -documents, to keep the data locally in the client's session and refrain from unnecessary additional trips to the server. + +* [Include](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview) + time-series data while [loading](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load) + or [querying](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query) + documents, to keep the data locally in the client's session and refrain from unnecessary additional trips to the server. +* When caching is enabled, time-series data is kept in the session cache as well. + {INFO/} * In this page: @@ -79,7 +82,8 @@ public class TimeSeriesEntry * Open a session. * Create an instance of `TimeSeriesFor`. * Either pass `TimeSeriesFor` an explicit document ID, -or- - * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + * Pass `TimeSeriesFor` the time-series name. * Call `TimeSeriesFor.Get`. {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown index cb53d39989..6ee22b90aa 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown @@ -41,7 +41,7 @@ Use this method to get all the names of a document's time-series. An array of the loaded document's time-series names. * **Exceptions** - Exceptions are not generated. + If the instance is not tracked by the session, an `ArgumentException` exception is thrown. {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown index 8037d31e75..763701ae15 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown @@ -36,7 +36,7 @@ interface as an argument. | Parameters | Type | Description | |:-------------|:-------------|:-------------| | `id` | `string` | Document ID | - | `includes` | `Action>` | Include Objest | + | `includes` | `Action>` | Include Object | * **`IncludeTimeSeries`** * **Definition** @@ -46,9 +46,9 @@ interface as an argument. | Parameters | Type | Description | |:-------------|:-------------|:-------------| - | `name` | string | Time-series Name | - | `from` | DateTime | Time-series range start | - | `to` | DateTime | Time-series range end | + | `name` | `string` | Time-series Name | + | `from` | `DateTime?` | Time-series range start
    when null, `from` will default to `DateTime.MinValue`. | + | `to` | `DateTime?` | Time-series range end

    when null, `to` will default to `DateTime.MaxValue`. | {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown index 5bd708a3dc..415b1fe3c9 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown @@ -34,9 +34,9 @@ method of the `IQueryIncludeBuilder` interface as an argument. | Parameters | Type | Description | |:-------------|:-------------|:-------------| - | `name` | string | Time-series Name | - | `from` | DateTime | Time-series range start | - | `to` | DateTime | Time-series range end | + | `name` | `string` | Time-series Name | + | `from` | `DateTime?` | Time-series range start | + | `to` | `DateTime?` | Time-series range end | {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown index 7932641afe..2f3110a76a 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown @@ -58,9 +58,8 @@ There are two `TimeSeriesFor.Remove` methods: No return value. * **Exceptions** - Exceptions are not generated. - Attempting to remove nonexistent entries results in a noop - and does not generate an exception. + * If the document doesn't exist, a `DocumentDoesNotExistException` exception is thrown. + * Attempting to remove nonexistent entries results in a noop and does not generate an exception. --- @@ -80,9 +79,8 @@ There are two `TimeSeriesFor.Remove` methods: No return value. * **Exceptions** - Exceptions are not generated. - Attempting to remove nonexistent entries results in a noop - and does not generate an exception. + * If the document doesn't exist, a `DocumentDoesNotExistException` exception is thrown. + * Attempting to remove nonexistent entries results in a noop and does not generate an exception. {PANEL/} @@ -91,7 +89,8 @@ There are two `TimeSeriesFor.Remove` methods: * Open a session. * Create an instance of `TimeSeriesFor`. * Either pass `TimeSeriesFor` an explicit document ID, -or- - * Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + * Pass `TimeSeriesFor` the time-series name. * Call `TimeSeriesFor.Remove`. * Call `session.SaveChanges` for the action to take effect on the server. diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown index 4f1941ae77..6c673c2ea3 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown @@ -5,10 +5,7 @@ {NOTE: } -To append or remove single or multiple time-series entries, -use `TimeSeriesBatchOperation`. -You can create a list of Append and Remove actions, and -execute them all in a single call. +To **Append** and **Remove** multiple time-series entries, use `TimeSeriesBatchOperation`. * In this page: * [`TimeSeriesBatchOperation`](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#timeseriesbatchoperation) @@ -21,19 +18,23 @@ execute them all in a single call. {PANEL: `TimeSeriesBatchOperation`} -To instruct `TimeSeriesBatchOperation` which actions to perform, pass it -an `TimeSeriesOperation` instance for each Append or Remove action. +`TimeSeriesBatchOperation` executes a list of time-series entries **Append** +and **Remove** actions. +The list is prepared beforehand in a `TimeSeriesOperation` instance using +**TimeSeriesOperation.Append** and **TimeSeriesOperation.Remove**, and is +passed to `TimeSeriesBatchOperation` as an argumenjt. {PANEL/} {PANEL: Syntax} * `TimeSeriesBatchOperation` - **This is the operation you need to execute to appends and removes + **This is the operation you need to execute to append and remove time-series entries.** * **Definition** {CODE TimeSeriesBatchOperation-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * **Parameters** | Parameters | Type | Description | @@ -43,41 +44,68 @@ an `TimeSeriesOperation` instance for each Append or Remove action. * `TimeSeriesOperation` **This is the configuration class provided to `TimeSeriesBatchOperation` - as an argument, with a list of TS-entries Append and Remove actions.** + as an argument, with a list of time-series entries Append and Remove actions.** - * **Definition** - {CODE TimeSeriesOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - * **Properties** + {CODE-BLOCK:JSON} + public class TimeSeriesOperation + { + public string Name; + public void Append(AppendOperation appendOperation) + public void Remove(RemoveOperation removeOperation) - | Property | Type | Description | - |:-------------|:-------------|:-------------| - | `Appends` | `List` | A list of TS-entry Append actions | - | `Removals` | `List` | A list of TS-entry Remove actions | + //.. + } + {CODE-BLOCK/} -* `AppendOperation` - **This class defines a single TS-entry Append action.** + | Property | Type | Description | + |:-------------|:-------------|:-------------| + | `Name` | `string` | Time-Series name | + | `Append` | `method` | Add an Append action to the list | + | `Remove` | `method` | Add a Remove action to the list | - * **Definition** - {CODE AppendOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - * **Properties** - | Property | Type | Description | - |:-------------|:-------------|:-------------| - | `Timestamp` | `DateTime` | The TS entry will be appended at this timestamp | - | `Values` | `double[]` | New values for the TS entry | - | `Tag` | `string` | An optional tag for the TS entry | +--- -* `RemoveOperation` - **This class defines a single Remove action, of a range of TS entries.** + * To add a time-series entry Append action, call `TimeSeriesOperation.Append`. + {CODE-BLOCK:JSON} + public void Append(AppendOperation appendOperation) + {CODE-BLOCK/} + {CODE-BLOCK:JSON} + public class AppendOperation + { + public DateTime Timestamp; + public double[] Values; + public string Tag; + + //.. + } + {CODE-BLOCK/} + + | Property | Type | Description | + |:-------------|:-------------|:-------------| + | `Timestamp` | `DateTime` | The TS entry will be appended at this timestamp | + | `Values` | `double[]` | Entry values | + | `Tag` | `string` | Entry tag (optional) | - * **Definition** - {CODE RemoveOperation-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - * **Properties** +--- - | Property | Type | Description | - |:-------------|:-------------|:-------------| - | `From` | `DateTime` | Range start: TS entries will be removed from this timestamp on | - | `To` | `DateTime[]` | Range end: entries will be removed to this timestamp | + * To add a time-series entry Remove action, call `TimeSeriesOperation.Remove`. + {CODE-BLOCK:JSON} + public void Remove(RemoveOperation removeOperation) + {CODE-BLOCK/} + {CODE-BLOCK:JSON} + public class RemoveOperation + { + public DateTime? From, To; + + //.. + } + {CODE-BLOCK/} + + | Property | Type | Description | + |:-------------|:-------------|:-------------| + | `From` | `DateTime` | Range start
    TS entries will be removed starting at this timestamp | + | `To` | `DateTime` | Range end
    entries will be removed up to this timestamp | {PANEL/} @@ -85,14 +113,15 @@ an `TimeSeriesOperation` instance for each Append or Remove action. {PANEL: Usage Flow} * Create an instance of `TimeSeriesOperation` + * Add it the **time-series name**. -* Add the `TimeSeriesOperation` instance an `AppendOperation` list. - Add the list an `AppendOperation` instance for each Append action you want - to perform. +* Prepare the Append and Remove sequence. + * Call `TimeSeriesOperation.Append` to add an Append action + * Call `TimeSeriesOperation.Remove` to add a Remove action -* Add the `TimeSeriesOperation` instance a `RemoveOperation` list. - Add the list a `RemoveOperation` instance for each Remove action you want - to perform. + {INFO: } + NOTE: Remove actions will be executed **before** Append actions. + {INFO/} * Create a `TimeSeriesBatchOperation` instance. Pass it the **document ID** and your **`TimeSeriesOperation` instance** diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index eba2ef2a0f..5508c8c949 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -363,9 +363,8 @@ public void SessionTests() } - public void StoreOperationsTests() + public void ReebUseTimeSeriesBatchOperation() { - #region timeseries_region_Append-Using-TimeSeriesBatchOperation const string documentId = "users/john"; using (var store = GetDocumentStore()) @@ -376,71 +375,44 @@ public void StoreOperationsTests() session.SaveChanges(); } + #region timeseries_region_Append-Using-TimeSeriesBatchOperation var baseline = DateTime.Today; - var timeSeriesOp = new TimeSeriesOperation + var timeSeriesExcersizeneHeartRate = new TimeSeriesOperation { - Name = "HeartRate", - Appends = new List() - { - new TimeSeriesOperation.AppendOperation - { - Tag = "watches/fitbit", - Timestamp = baseline.AddMinutes(1), - Values = new[] - { - 65d - } - }, - - new TimeSeriesOperation.AppendOperation - { - Tag = "watches/fitbit", - Timestamp = baseline.AddMinutes(2), - Values = new[] - { - 68d - } - } - } + Name = "RoutineHeartRate" }; - var timeSeriesBatch = new TimeSeriesBatchOperation(documentId, timeSeriesOp); + timeSeriesExcersizeneHeartRate.Append(new TimeSeriesOperation.AppendOperation { Tag = "watches/fitbit", Timestamp = baseline.AddMinutes(1), Values = new[] { 79d } }); + timeSeriesExcersizeneHeartRate.Append(new TimeSeriesOperation.AppendOperation { Tag = "watches/fitbit", Timestamp = baseline.AddMinutes(2), Values = new[] { 82d } }); + timeSeriesExcersizeneHeartRate.Append(new TimeSeriesOperation.AppendOperation { Tag = "watches/fitbit", Timestamp = baseline.AddMinutes(3), Values = new[] { 80d } }); + timeSeriesExcersizeneHeartRate.Append(new TimeSeriesOperation.AppendOperation { Tag = "watches/fitbit", Timestamp = baseline.AddMinutes(4), Values = new[] { 78d } }); - store.Operations.Send(timeSeriesBatch); + var timeSeriesBatch = new TimeSeriesBatchOperation(documentId, timeSeriesExcersizeneHeartRate); + store.Operations.Send(timeSeriesBatch); #endregion + #region timeseries_region_Remove-Range-Using-TimeSeriesBatchOperation - // remove a range of 5 minutes from time-series start - timeSeriesOp = new TimeSeriesOperation + var removeEntries = new TimeSeriesOperation { - Name = "HeartRate", - - Removals = new List() - { - new TimeSeriesOperation.RemoveOperation - { - From = baseline.AddMinutes(20), - To = baseline.AddMinutes(50) - }, - - new TimeSeriesOperation.RemoveOperation - { - From = baseline.AddMinutes(70), - To = baseline.AddMinutes(100) - } - } + Name = "RoutineHeartRate" }; - timeSeriesBatch = new TimeSeriesBatchOperation(documentId, timeSeriesOp); + removeEntries.Remove(new TimeSeriesOperation.RemoveOperation { From = baseline.AddMinutes(2), To = baseline.AddMinutes(3) }); - store.Operations.Send(timeSeriesBatch); + var removeEntriesBatch = new TimeSeriesBatchOperation(documentId, removeEntries); + + store.Operations.Send(removeEntriesBatch); #endregion + } + } + - #region timeseries_region_Get-Single-Time-Series - // Get all values of a single time-series - TimeSeriesRangeResult singleTimeSeriesRange = store.Operations.Send( + #region timeseries_region_Get-Single-Time-Series + // Get all values of a single time-series + TimeSeriesRangeResult singleTimeSeriesRange = store.Operations.Send( new GetTimeSeriesOperation(documentId, "HeartRate", DateTime.MinValue, DateTime.MaxValue)); #endregion @@ -1057,20 +1029,6 @@ public class PatchRequest public TimeSeriesBatchOperation(string documentId, TimeSeriesOperation operation) #endregion - #region TimeSeriesOperation-class - public class TimeSeriesOperation - { - // A list of Append actions - public List Appends; - - // A list of Remove actions - public List Removals; - - public string Name; - //... - } - #endregion - #region AppendOperation-class public class AppendOperation { From b13756ba034d6967122781dd63d3afac12503239 Mon Sep 17 00:00:00 2001 From: reebhub Date: Wed, 24 Jun 2020 14:59:50 +0300 Subject: [PATCH 49/56] de-hyphening (time-series -> time series) --- .../document-extensions/timeseries/.docs.json | 6 +- .../timeseries/client-api/.docs.json | 2 +- .../client-api/TS-javascript-api.markdown | 48 +++---- .../client-api/api-overview.markdown | 86 ++++++------ .../client-api/session-methods/.docs.json | 12 +- .../session-methods/append-ts-data.markdown | 44 +++--- .../session-methods/get-ts-data/.docs.json | 4 +- .../get-ts-data/get-ts-entries.markdown | 42 +++--- .../get-ts-data/get-ts-names.markdown | 26 ++-- .../include-ts-overview.markdown | 8 +- .../include-ts-data/with-raw-queries.markdown | 12 +- .../with-session-load.markdown | 16 +-- .../with-session-query.markdown | 16 +-- .../session-methods/patch-ts-data.markdown | 22 +-- .../query-time-series/linq-queries.markdown | 28 ++-- .../raw-rql-queries.markdown | 14 +- .../session-methods/remove-ts-data.markdown | 50 +++---- .../client-api/store-operations/.docs.json | 8 +- .../append-and-remove-TS-data.markdown | 22 +-- .../append-ts-data-in-bulk.markdown | 16 +-- .../store-operations/get-TS-data/.docs.json | 4 +- .../get-TS-data/get-TS-data.markdown | 18 +-- .../get-TS-data/get-multiple-TS-data.markdown | 18 +-- .../store-operations/patch-TS-data.markdown | 30 ++-- .../timeseries/overview.markdown | 128 +++++++++--------- .../aggregation-and-projection.markdown | 28 ++-- .../querying/choosing-query-range.markdown | 18 +-- .../timeseries/querying/filtering.markdown | 22 +-- .../querying/indexed-queries.markdown | 14 +- .../queries-overview-and-syntax.markdown | 66 ++++----- 30 files changed, 414 insertions(+), 414 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json index e9d5729f30..bd6ecf89e4 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json @@ -17,7 +17,7 @@ }, { "Path": "indexing.markdown", - "Name": "Indexing Time-Series", + "Name": "Indexing Time Series", "DiscussionId": "f23052eb-3c53-4984-a2cd-03a0ff9835d3", "Mappings": [] }, @@ -29,7 +29,7 @@ }, { "Path": "time-series-and-other-features.markdown", - "Name": "Time-Series and Other Features", + "Name": "Time Series and Other Features", "DiscussionId": "902e7192-9e86-4b98-9f8a-0df0b6c731f9", "Mappings": [] }, @@ -39,4 +39,4 @@ "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } -] \ No newline at end of file +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json index 9315aafee5..edd2d8be6f 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json @@ -17,7 +17,7 @@ }, { "Path": "TS-javascript-api.markdown", - "Name": "Time-Series JavaScript API", + "Name": "Time Series & JavaScript", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown index d0491a633c..658ba1bf09 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown @@ -1,14 +1,14 @@ -# Time-Series Javascript API +# Time Series & JavaScript API --- {NOTE: } -Some time-series functions are provided not by dedicated time-series methods, -but by general-purpose methods that gain time-series functionality by running -a user-custom [Javascript](../../../server/kb/javascript-engine) that calls -time-series API methods. +Some time series functions are provided not by dedicated time series methods, +but by general-purpose methods that gain time series functionality by running +a user-custom [JavaScript](../../../server/kb/javascript-engine) that calls +time series API methods. -* Methods that gain time-series functionality this way are: +* Methods that gain time series functionality this way are: * [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) - `session` patching method * [PatchOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchoperation) - @@ -17,8 +17,8 @@ time-series API methods. `store` patch-by-query operation * In this page: - * [Time-Series JS API methods](../../../document-extensions/timeseries/client-api/ts-javascript-api#time-series-js-api-methods) - * [timeseries - Choose a Time-Series](../../../document-extensions/timeseries/client-api/ts-javascript-api#section) + * [Time Series JS API methods](../../../document-extensions/timeseries/client-api/ts-javascript-api#time series-js-api-methods) + * [timeseries - Choose a Time Series](../../../document-extensions/timeseries/client-api/ts-javascript-api#section) * [timeseries.append - Append Untagged Entry](../../../document-extensions/timeseries/client-api/ts-javascript-api#section-1) * [timeseries.append - Append Tagged Entry](../../../document-extensions/timeseries/client-api/ts-javascript-api#section-2) * [timeseries.remove - Remove Entries Range](../../../document-extensions/timeseries/client-api/ts-javascript-api#section-3) @@ -29,26 +29,26 @@ time-series API methods. --- -{PANEL: Time-Series JS API methods} +{PANEL: Time Series JS API methods} -The JS time-series API includes these methods: +The JS time series API includes these methods: --- #### `timeseries (doc, name)` -Choose a time-series by the ID of its owner document and by the series name. +Choose a time series by the ID of its owner document and by the series name. | Parameter | Type | Explanation |:---:|:---:|:---:| | doc | `string` | Document ID - | name | `string` | Time-Series Name + | name | `string` | Time Series Name --- #### `timeseries.append (timestamp, values)` -Use this method to append time-series entries to a document. +Use this method to append time series entries to a document. | Parameter | Type | Explanation |:---:|:---:|:---:| @@ -59,7 +59,7 @@ Use this method to append time-series entries to a document. #### `timeseries.append (timestamp, values, tag)` -Use this method to append to a document time-series entries with tags. +Use this method to append to a document time series entries with tags. | Parameter | Type | Explanation |:---:|:---:|:---:| @@ -82,7 +82,7 @@ Use this method to remove a range of entries from a document. #### `timeseries.get (from, to)` -Use this method to retrieve a range of time-series entries. +Use this method to retrieve a range of time series entries. | Parameter | Type | Explanation |:---:|:---:|:---:| @@ -94,12 +94,12 @@ Use this method to retrieve a range of time-series entries. {PANEL: Usage Samples} * In this sample, we pass [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) - a script that patches a document 100 time-series entries. + a script that patches a document 100 time series entries. {CODE TS_region-Session_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} * In this sample, we pass [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation) - a script that runs a document query and removes the HeartRate time-series from + a script that runs a document query and removes the HeartRate time series from located documents. {CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -107,14 +107,14 @@ Use this method to retrieve a range of time-series entries. ## Related articles **Studio Articles**: -[Studio Time-Series Management]() +[Studio Time Series Management]() **Client-API - Session Articles**: -[Time-Series Overview]() -[Creating and Modifying Time-Series]() -[Deleting Time-Series]() -[Retrieving Time-Series Values]() -[Time-Series and Other Features]() +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() **Client-API - Operations Articles**: -[Time-Series Operations]() +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown index 12f11bc17d..e21e722f3e 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -1,120 +1,120 @@ -# Time-Series API Overview +# Time Series API Overview --- {NOTE: } -The Time-Series API includes a set of [session](../../../client-api/session/what-is-a-session-and-how-does-it-work) +The Time Series API includes a set of [session](../../../client-api/session/what-is-a-session-and-how-does-it-work) methods and [store](../../../client-api/what-is-a-document-store) [operations](../../../client-api/operations/what-are-operations). You can use the API to **append** (create and update), **get**, -**remove**, **include**, **patch** and **query** time-series data. +**remove**, **include**, **patch** and **query** time series data. * In this page: - * [Creating and Removing Time-Series Data](../../../document-extensions/timeseries/client-api/api-overview#creating-and-removing-time-series-data) + * [Creating and Removing Time Series Data](../../../document-extensions/timeseries/client-api/api-overview#creating-and-removing-time-series-data) * [`session` Methods -vs- `document-store` Operations](../../../document-extensions/timeseries/client-api/api-overview#session-methods--vs--document-store-operations) - * [Available Time-Series `session` methods](../../../document-extensions/timeseries/client-api/api-overview#available-time-series-session-methods) - * [Available Time-Series `store` Operations](../../../document-extensions/timeseries/client-api/api-overview#available-time-series-store-operations) + * [Available Time Series `session` methods](../../../document-extensions/timeseries/client-api/api-overview#available-time-series-session-methods) + * [Available Time Series `store` Operations](../../../document-extensions/timeseries/client-api/api-overview#available-time-series-store-operations) {NOTE/} --- -{PANEL: Creating and Removing Time-Series Data} +{PANEL: Creating and Removing Time Series Data} -A time-series is constructed of time-series **entries**, which can +A time series is constructed of time series **entries**, which can be created and removed using the API. -There is no need to explicitly create or delete a time-series. +There is no need to explicitly create or delete a time series. -* A time-series is created when the first entry is appended to it. -* A time-series is deleted When all entries are removed from it. +* A time series is created when the first entry is appended to it. +* A time series is deleted When all entries are removed from it. {PANEL/} {PANEL: `session` Methods -vs- `document-store` Operations} -Some time-series functions are available through both `session` methods +Some time series functions are available through both `session` methods and `document-store` operations: -You can **append**, **remove**, **get** and **patch** time-series data +You can **append**, **remove**, **get** and **patch** time series data through both interfaces. --- There are also functionalities unique to each interface. -* **Time-series functionalities unique to the `session`interface**: +* **Time series functionalities unique to the `session`interface**: * `session` methods provide a **transactional guarantee**. Use them when you want to guarantee that your actions would be either fully completed or fully reverted. You can, for instance, gather multiple session actions - (e.g. the update of a time-series and the modification + (e.g. the update of a time series and the modification of a document) and execute them in a single transaction by calling `session.SaveChanges`, to ensure that they would all be completed or all be reverted. - * You can use `session` methods to `include` time-series while + * You can use `session` methods to `include` time series while loading documents. - Included time-series data is held by the client's session, + Included time series data is held by the client's session, and can be handed to the user the instant it is required. -* **Time-series functionalities unique to the `store`interface**: - * Getting the data of **multiple time-series** in a single operation. - * Managing time-series **rollup and retention policies**. - * Patching time-series data to **multiple documents** located by a query. +* **Time series functionalities unique to the `store`interface**: + * Getting the data of **multiple time series** in a single operation. + * Managing time series **rollup and retention policies**. + * Patching time series data to **multiple documents** located by a query. {PANEL/} -{PANEL: Available Time-Series `session` methods} +{PANEL: Available Time Series `session` methods} * [TimeSeriesFor.Append](../../../document-extensions/timeseries/client-api/session-methods/append-ts-data) - Use this method to **Append entries to a time-series** + Use this method to **Append entries to a time series** (creating the series if it didn't previously exist). * [TimeSeriesFor.Remove](../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data) - Use this method to **Remove a range of entries from a time-series** + Use this method to **Remove a range of entries from a time series** (removing the series completely if all entries have been removed). * [TimeSeriesFor.Get](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries) - Use this method to **Retrieve raw time-series entries** + Use this method to **Retrieve raw time series entries** for all entries or for a chosen entries range. * [Advanced.GetTimeSeriesFor](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names) - Use this method to **Retrieve time-series Names**. + Use this method to **Retrieve time series Names**. Series names are fetched by `GetTimeSeriesFor` directly from their parent documents' metadata, requiring no additional server roundtrips. * [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) - Use this method to **patch time-series data to a document**. -* **To include time-series data** - + Use this method to **patch time series data to a document**. +* **To include time series data** - * [Use IncludeTimeSeries while loading a document via session.Load](../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load) * [Use IncludeTimeSeries while retrieving a document via session.Query](../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query) * [Use RQL while running a raw query](../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries) {PANEL/} -{PANEL: Available Time-Series `store` Operations} +{PANEL: Available Time Series `store` Operations} * [TimeSeriesBatchOperation](../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data) - Use this operation to **append and remove time-series data**. + Use this operation to **append and remove time series data**. You can bundle a series of Append and/or Remove operations in a list and execute them in a single call. * [GetTimeSeriesOperation](../../../document-extensions/timeseries/client-api/store-operations/get-TS-data) - Use this operation to **retrieve time-series data**. + Use this operation to **retrieve time series data**. `GetTimeSeriesOperation` has an advantage over `session.TimeSeries.Get`, in allowing - you to retrieve data from multiple time-series of a selected document in a single call. + you to retrieve data from multiple time series of a selected document in a single call. * [ConfigureTimeSeriesOperation](../../../document-extensions/timeseries/rollup-and-retention) - Use this operation to **manage time-series roll-up and retention policies**. + Use this operation to **manage time series roll-up and retention policies**. * [PatchOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document) - Use this operation to **patch time-series data to a single document**. + Use this operation to **patch time series data to a single document**. * [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents) - Use this operation to **patch time-series data to documents located + Use this operation to **patch time series data to documents located by a query**. * [BulkInsert.TimeSeriesFor.Append](../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk) - Use this operation to **append a large quantity of time-series data**. + Use this operation to **append a large quantity of time series data**. {PANEL/} ## Related articles **Studio Articles**: -[Studio Time-Series Management]() +[Studio Time Series Management]() **Client-API - Session Articles**: -[Time-Series Overview]() -[Creating and Modifying Time-Series]() -[Deleting Time-Series]() -[Retrieving Time-Series Values]() -[Time-Series and Other Features]() +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() **Client-API - Operations Articles**: -[Time-Series Operations]() +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json index c1de454310..33d935d204 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json @@ -1,37 +1,37 @@ [ { "Path": "append-ts-data.markdown", - "Name": "Append Time-Series Data", + "Name": "Append Time Series", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "remove-ts-data.markdown", - "Name": "Remove Time-Series Data", + "Name": "Remove Time Series", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "/get-ts-data", - "Name": "Get Time-Series Data", + "Name": "Get Time Series", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "/include-ts-data", - "Name": "Include Time-Series Data", + "Name": "Include Time Series", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "patch-ts-data.markdown", - "Name": "Patch Time-Series Data", + "Name": "Patch Time Series", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "/query-time-series", - "Name": "Query Time-Series", + "Name": "Query Time Series", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown index b1accb7fd2..6bc2cb0dde 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown @@ -1,13 +1,13 @@ ## `TimeSeriesFor.Append` -# Append Time-Series Data +# Append Time Series Data --- {NOTE: } -* Create and update time-series and their entries using `TimeSeriesFor.Append`. +* Create and update time series and their entries using `TimeSeriesFor.Append`. -* You can append a single [time-series entry](../../../../document-extensions/timeseries/design#time-series-entries) at a time. +* You can append a single [time series entry](../../../../document-extensions/timeseries/design#time-series-entries) at a time. Note, however, that you can `Append` as many times as you need to before calling `session.SaveChanges`, to append multiple entries in a single transaction. @@ -26,16 +26,16 @@ {PANEL: `TimeSeriesFor.Append`} -* `TimeSeriesFor.Append` is used for the creation of time-series and - time-series entries, and for the modification of entries values. - * **Creating a Time-Series** - Append an entry to a time-series that doesn't exist yet, - to create the time-series and add it the new entry. - * **Creating a Time-Series Entry** - Append an existing time-series a new entry, +* `TimeSeriesFor.Append` is used for the creation of time series and + time series entries, and for the modification of entries values. + * **Creating a Time Series** + Append an entry to a time series that doesn't exist yet, + to create the time series and add it the new entry. + * **Creating a Time Series Entry** + Append an existing time series a new entry, to add the entry to this series at the specified timestamp. * **Modifying Entry Values** - Append a time-series an entry it already has, + Append a time series an entry it already has, to update the existing entry with the new data. {PANEL/} @@ -59,7 +59,7 @@ There are two `TimeSeriesFor.Append` methods: | Parameters | Type | Description | |:-------------|:-------------|:-------------| - | `timestamp` | DateTime | Time-series entry's timestamp | + | `timestamp` | DateTime | Time series entry's timestamp | | `value` | double | Entry's value | | `tag` | string | Entry's tag
    The tag is optional. | @@ -79,7 +79,7 @@ There are two `TimeSeriesFor.Append` methods: | Parameters | Type | Description | |:-------------|:-------------|:-------------| - | `timestamp` | DateTime | Time-series entry's timestamp | + | `timestamp` | DateTime | Time series entry's timestamp | | `values` | IEnumerable | Entry's values | | `tag` | string | Entry's tag
    The tag is optional. | @@ -98,7 +98,7 @@ There are two `TimeSeriesFor.Append` methods: * Create an instance of `TimeSeriesFor`. * Either pass `TimeSeriesFor` an explicit document ID, -or- Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). - * Pass `TimeSeriesFor` the time-series name. + * Pass `TimeSeriesFor` the time series name. * Call `TimeSeriesFor.Append`. * Call `session.SaveChanges` for the action to take effect on the server. @@ -113,21 +113,21 @@ There are two `TimeSeriesFor.Append` methods: {CODE timeseries_region_TimeSeriesFor-Append-TimeSeries-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} * In this sample we use the [second overload](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-2) - to append a time-series entry with three values. + to append a time series entry with three values. {CODE timeseries_region_Append-With-IEnumerable@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} ## Related articles **Studio Articles**: -[Studio Time-Series Management]() +[Studio Time Series Management]() **Client-API - Session Articles**: -[Time-Series Overview]() -[Creating and Modifying Time-Series]() -[Deleting Time-Series]() -[Retrieving Time-Series Values]() -[Time-Series and Other Features]() +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() **Client-API - Operations Articles**: -[Time-Series Operations]() +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/.docs.json index 3d999de3eb..50a336073e 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/.docs.json @@ -1,13 +1,13 @@ [ { "Path": "get-ts-entries.markdown", - "Name": "Get Time-Series Entries", + "Name": "Get Time Series Entries", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "get-ts-names.markdown", - "Name": "Get Time-Series Names", + "Name": "Get Time Series Names", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown index 16d122f3ee..0663c9e00e 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown @@ -1,21 +1,21 @@ ## `TimeSeriesFor.Get` -# Get Time-Series Entries +# Get Time Series Entries --- {NOTE: } -Get a range of time-series entries using `TimeSeriesFor.Get`. +Get a range of time series entries using `TimeSeriesFor.Get`. * Results can be sliced to pages and retrieved gradually. {INFO: } * [Include](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview) - time-series data while [loading](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load) + time series data while [loading](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load) or [querying](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query) documents, to keep the data locally in the client's session and refrain from unnecessary additional trips to the server. -* When caching is enabled, time-series data is kept in the session cache as well. +* When caching is enabled, time series data is kept in the session cache as well. {INFO/} @@ -31,13 +31,13 @@ Get a range of time-series entries using `TimeSeriesFor.Get`. {PANEL: `TimeSeriesFor.Get`} -Use `TimeSeriesFor.Get` to get a range of a document's time-series entries. +Use `TimeSeriesFor.Get` to get a range of a document's time series entries. -* `TimeSeriesFor.Get` retrieves a single document's time-series data. - * To retrieve multiple documents' time-series' data, +* `TimeSeriesFor.Get` retrieves a single document's time series data. + * To retrieve multiple documents' time series' data, use the [GetTimeSeriesOperaion](../../../../document-extensions/timeseries/client-api/store-operations/get-TS-data) document-store operation instead. -* You can slice retrieved data to **pages** to get time-series entries +* You can slice retrieved data to **pages** to get time series entries gradually, one custom-size page at a time. {PANEL/} @@ -53,13 +53,13 @@ Use `TimeSeriesFor.Get` to get a range of a document's time-series entries. |:-------------|:-------------|:-------------| | `from` | DateTime | Range Start | | `to` | DateTime | Range End | - | `start` | int | **Paging** first entry
    e.g. set `start` to 50 for the first page to start at the 50th time-series entry.
    **Default Value**: 0, for the first time-series entry. | - | `pagesize` | int | **Paging** page-size
    e.g. set `pagesize` to 10 to retrieve 10-entries pages.
    **Default Value**: int.MaxValue, for all time-series entries. | + | `start` | int | **Paging** first entry
    e.g. set `start` to 50 for the first page to start at the 50th time series entry.
    **Default Value**: 0, for the first time series entry. | + | `pagesize` | int | **Paging** page-size
    e.g. set `pagesize` to 10 to retrieve 10-entries pages.
    **Default Value**: int.MaxValue, for all time series entries. | * **Return Value** **`IEnumerable`** - Time-series entries are returned in an array of TimeSeriesEntry instances. + Time series entries are returned in an array of TimeSeriesEntry instances. {CODE-BLOCK: JSON} public class TimeSeriesEntry { @@ -83,31 +83,31 @@ public class TimeSeriesEntry * Create an instance of `TimeSeriesFor`. * Either pass `TimeSeriesFor` an explicit document ID, -or- Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). - * Pass `TimeSeriesFor` the time-series name. + * Pass `TimeSeriesFor` the time series name. * Call `TimeSeriesFor.Get`. {PANEL/} {PANEL: Usage Samples} -* In this sample we retrieve all entries of a time-series. +* In this sample we retrieve all entries of a time series. {CODE timeseries_region_TimeSeriesFor-Get-Single-Value-Using-Document-ID@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -* In this sample we query for a document and get its "Heartrate" time-series data. +* In this sample we query for a document and get its "Heartrate" time series data. {CODE timeseries_region_Pass-TimeSeriesFor-Get-Query-Results@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} ## Related articles **Studio Articles**: -[Studio Time-Series Management]() +[Studio Time Series Management]() **Client-API - Session Articles**: -[Time-Series Overview]() -[Creating and Modifying Time-Series]() -[Deleting Time-Series]() -[Retrieving Time-Series Values]() -[Time-Series and Other Features]() +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() **Client-API - Operations Articles**: -[Time-Series Operations]() +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown index 6ee22b90aa..1e9785325a 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown @@ -1,11 +1,11 @@ ## `Advanced.GetTimeSeriesFor` -# Get Time-Series Names +# Get Time Series Names --- {NOTE: } -Get the names of a document's time-series using +Get the names of a document's time series using `Advanced.GetTimeSeriesFor`. * In this page: @@ -20,7 +20,7 @@ Get the names of a document's time-series using {PANEL: `Advanced.GetTimeSeriesFor`} -Use this method to get all the names of a document's time-series. +Use this method to get all the names of a document's time series. {PANEL/} @@ -33,12 +33,12 @@ Use this method to get all the names of a document's time-series. | Parameters | Description | |:-------------|:-------------| - | `instance` | The document whose time-series names you want to get | + | `instance` | The document whose time series names you want to get | * **Return Value** **`List`** - An array of the loaded document's time-series names. + An array of the loaded document's time series names. * **Exceptions** If the instance is not tracked by the session, an `ArgumentException` exception is thrown. @@ -56,21 +56,21 @@ Use this method to get all the names of a document's time-series. {PANEL: Usage Sample} In this sample we load a user document and use `Advanced.GetTimeSeriesFor` -to get a list of its time-series' names. +to get a list of its time series' names. {CODE timeseries_region_Retrieve-TimeSeries-Names@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} ## Related articles **Studio Articles**: -[Studio Time-Series Management]() +[Studio Time Series Management]() **Client-API - Session Articles**: -[Time-Series Overview]() -[Creating and Modifying Time-Series]() -[Deleting Time-Series]() -[Retrieving Time-Series Values]() -[Time-Series and Other Features]() +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() **Client-API - Operations Articles**: -[Time-Series Operations]() +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown index a576fc5b41..005723740f 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown @@ -1,16 +1,16 @@ -# Include Time-Series Data: Overview +# Include Time Series Data: Overview --- {NOTE: } You can [Include](../../../client-api/session/loading-entities#load-with-includes) -documents' time-series data while retrieving the documents. -The included time-series data is held by the client's session, +documents' time series data while retrieving the documents. +The included time series data is held by the client's session, so it can be handed to the user the instant it is required - with no additional trip to the server. -* Time-series data can be included while - +* Time series data can be included while - * [Loading a Document Using `session.Load`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load) * [Loading a Document By Query Via `session.Query`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query) * [Loading a Document By a Raw RQL Query Via `session.Advanced.RawQuery`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown index 3398808bbc..e6664b439e 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown @@ -5,10 +5,10 @@ {NOTE: } -You can include time-series data while running a raw RQL query +You can include time series data while running a raw RQL query via `session.Advanced.RawQuery`. -* [Include Time-Series Data with `Advanced.RawQuery`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#include-time-series-data-with-advanced.rawquery) +* [Include Time Series Data with `Advanced.RawQuery`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#include-time-series-data-with-advanced.rawquery) * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#syntax) * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#usage-flow) * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#usage-sample) @@ -17,9 +17,9 @@ via `session.Advanced.RawQuery`. --- -{PANEL: Include Time-Series Data with `Advanced.RawQuery`} +{PANEL: Include Time Series Data with `Advanced.RawQuery`} -To include time-series data while querying via `Advanced.RawQuery`, +To include time series data while querying via `Advanced.RawQuery`, use the `include timeseries` expression in your RQL query. {PANEL/} @@ -53,7 +53,7 @@ public interface IRawDocumentQuery : * Call `session.Advanced.RawQuery` Use `include timeseries` in your query * Pass `include timeseries` its arguments: - * **Time-series name** + * **Time series name** * **Range start** * **Range end** @@ -62,7 +62,7 @@ public interface IRawDocumentQuery : {PANEL: Usage Sample} In this sample, we use a raw query to retrieve a document -and include data from the documkent's "Heartrate" time-series. +and include data from the documkent's "Heartrate" time series. {CODE timeseries_region_Raw-Query-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown index 763701ae15..d895d5aa93 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown @@ -5,7 +5,7 @@ {NOTE: } -You can include a time-series or a part of it while loading a document +You can include a time series or a part of it while loading a document via `session.Load`. * [`session.Load` and `IncludeTimeSeries`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load#session.load-and-includetimeseries) @@ -20,7 +20,7 @@ via `session.Load`. {PANEL: `session.Load` and `IncludeTimeSeries`} -To include time-series data while retrieving documents via `session.Load`, +To include time series data while retrieving documents via `session.Load`, pass `session.Load` the `IncludeTimeSeries` method of the `IIncludeBuilder` interface as an argument. @@ -46,9 +46,9 @@ interface as an argument. | Parameters | Type | Description | |:-------------|:-------------|:-------------| - | `name` | `string` | Time-series Name | - | `from` | `DateTime?` | Time-series range start
    when null, `from` will default to `DateTime.MinValue`. | - | `to` | `DateTime?` | Time-series range end

    when null, `to` will default to `DateTime.MaxValue`. | + | `name` | `string` | Time series Name | + | `from` | `DateTime?` | Time series range start
    when null, `from` will default to `DateTime.MinValue`. | + | `to` | `DateTime?` | Time series range end

    when null, `to` will default to `DateTime.MaxValue`. | {PANEL/} @@ -58,7 +58,7 @@ interface as an argument. * Call `session.Load` and pass it - * The **Document ID** * The **`IncludeTimeSeries`** method with its argumrnts: - **Time-series name** + **Time series name** **Range start** **Range end** @@ -67,10 +67,10 @@ interface as an argument. {PANEL: Usage Sample} In this sample, we load a document using `session.Load` and include -a selected range of entries from a time-series named "Heartrate". +a selected range of entries from a time series named "Heartrate". {CODE timeseries_region_Load-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -The entries we Get after including the time-series, are retrieved +The entries we Get after including the time series, are retrieved **from the session's cache**. {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown index 415b1fe3c9..c55cb8fa8e 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown @@ -5,7 +5,7 @@ {NOTE: } -You can include time-series data while retrieving a document via `session.Query`. +You can include time series data while retrieving a document via `session.Query`. * [`session.Query` and `IncludeTimeSeries`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query#session.query-and-includetimeseries) * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query#syntax) @@ -18,7 +18,7 @@ You can include time-series data while retrieving a document via `session.Query` {PANEL: `session.Query` and `IncludeTimeSeries`} -To include time-series data via `session.Query`, use `session.Query` +To include time series data via `session.Query`, use `session.Query` with the `Include` LINQ expression and pass it the `IncludeTimeSeries` method of the `IQueryIncludeBuilder` interface as an argument. @@ -34,9 +34,9 @@ method of the `IQueryIncludeBuilder` interface as an argument. | Parameters | Type | Description | |:-------------|:-------------|:-------------| - | `name` | `string` | Time-series Name | - | `from` | `DateTime?` | Time-series range start | - | `to` | `DateTime?` | Time-series range end | + | `name` | `string` | Time series Name | + | `from` | `DateTime?` | Time series range start | + | `to` | `DateTime?` | Time series range end | {PANEL/} @@ -46,7 +46,7 @@ method of the `IQueryIncludeBuilder` interface as an argument. * Call `session.Query`with the `Include` Linq expression Pass it the `IncludeTimeSeries` method as an argument * Pass `IncludeTimeSeries` its arguments: - * **Time-series name** + * **Time series name** * **Range start** * **Range end** @@ -55,10 +55,10 @@ method of the `IQueryIncludeBuilder` interface as an argument. {PANEL: Usage Samples} In this sample, we retrieve a document using `session.Query` and -**include** data from the time-series "Heartrate". +**include** data from the time series "Heartrate". {CODE timeseries_region_Query-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -The entries we Get after including the time-series, are retrieved +The entries we Get after including the time series, are retrieved **from the session's cache**. {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown index ed1fca18f5..f1b627ac32 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown @@ -1,15 +1,15 @@ ## `session.Advanced.Defer` -# Patch Time-Series Data +# Patch Time Series Data --- {NOTE: } -* To patch time-series data to a document, use `session.Advanced.Defer`. - * You can pass `Defer` a script to Append, Get, and Remove time-series entries. +* To patch time series data to a document, use `session.Advanced.Defer`. + * You can pass `Defer` a script to Append, Get, and Remove time series entries. * You can handle a single document at a time. -* [Patching Time-Series Data Using `session.Advanced.Defer`](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#patching-time-series-data-using-session.advanced.defer) +* [Patching Time Series Data Using `session.Advanced.Defer`](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#patching-time-series-data-using-session.advanced.defer) * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#syntax) * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#usage-flow) * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#usage-samples) @@ -18,14 +18,14 @@ --- -{PANEL: Patching Time-Series Data Using `session.Advanced.Defer`} +{PANEL: Patching Time Series Data Using `session.Advanced.Defer`} {INFO: } * [Defer](../../../../client-api/operations/patching/single-document#non-typed-session-api) - is used for patching in general, not necessarily for time-series data patching. -* To patch time-series data, you need to customize the Javascript `Defer` uses. -* Learn about customizable Javascripts and the JS time-series API [here](../../../../document-extensions/timeseries/client-api/ts-javascript-api). + is used for patching in general, not necessarily for time series data patching. +* To patch time series data, you need to customize the Javascript `Defer` uses. +* Learn about customizable Javascripts and the JS time series API [here](../../../../document-extensions/timeseries/client-api/ts-javascript-api). {INFO/} @@ -65,17 +65,17 @@ * Pass the `PatchCommandData` constructor method - * the document ID * the change vector or `null`) - * a `PatchRequest` instance with a Java Script that appends or removes time-series entries. + * a `PatchRequest` instance with a Java Script that appends or removes time series entries. * Call `session.SaveChanges()` to perform the patch. {PANEL/} {PANEL: Usage Samples} -* In this sample, we pass `Defer`a script that patches a document 100 time-series entries with random heartrate values. +* In this sample, we pass `Defer`a script that patches a document 100 time series entries with random heartrate values. {CODE TS_region-Session_Patch-Append-100-Random-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -* In this sample, we remove a range of 50 time-series entries from a document. +* In this sample, we remove a range of 50 time series entries from a document. {CODE TS_region-Session_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown index ca2f684fcc..1a0d74379a 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown @@ -1,19 +1,19 @@ ## `session.Query` -# Time-Series LINQ Queries +# Time Series LINQ Queries --- {NOTE: } -* To query time-series using LINQ expressions, use `session.Query`. +* To query time series using LINQ expressions, use `session.Query`. * RavenDB will translate a LINQ query to RQL before transmitting it to the server for execution. {INFO: } -Learn more about time-series queries in the [section dedicated to this subject](../../../../../document-extensions/timeseries/querying/queries-overview). +Learn more about time series queries in the [section dedicated to this subject](../../../../../document-extensions/timeseries/querying/queries-overview). {INFO/} * In this page: - * [Time-Series LINQ Queries](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries#time-series-linq-queries) + * [Time Series LINQ Queries](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries#time-series-linq-queries) * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries#syntax) * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries#usage-flow) * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries#usage-samples) @@ -22,12 +22,12 @@ Learn more about time-series queries in the [section dedicated to this subject]( --- -{PANEL: Time-Series LINQ Queries} +{PANEL: Time Series LINQ Queries} -To build a time-series LINQ query, run a document query using `session.Query` +To build a time series LINQ query, run a document query using `session.Query` and extend it using LINQ expressions. Here is a simple LINQ query that chooses users by their age and retrieves their -HeartRate time-series, and the RQL equivalent for this query. +HeartRate time series, and the RQL equivalent for this query. {CODE-TABS} {CODE-TAB:csharp:LINQ ts_region_LINQ-1-Select-Timeseries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -47,11 +47,11 @@ Learn more about `session.Query` [here](../../../../client-api/session/querying/ * **`IRavenQueryable`** for aggregated data. When the query - [aggregates time-series entries](../../../document-extensions/timeseries/querying/aggregation), + [aggregates time series entries](../../../document-extensions/timeseries/querying/aggregation), the results are returned in an aggregated array. * **`IRavenQueryable`** for non-aggregated data. - When the query **doesn't aggregate** time-series entries, - the results are returned in a list of time-series results. + When the query **doesn't aggregate** time series entries, + the results are returned in a list of time series results. {PANEL/} @@ -59,9 +59,9 @@ Learn more about `session.Query` [here](../../../../client-api/session/querying/ * Open a session * Call `session.Query`. - - Run a document query to locate documents whose time-series you want to query. - - Extend the query using LINQ expressions to find and project time-series data. - Start with `Select` to choose a time-series. + - Run a document query to locate documents whose time series you want to query. + - Extend the query using LINQ expressions to find and project time series data. + Start with `Select` to choose a time series. * Retrieve the results using - `TimeSeriesAggregationResult` for aggregated data -or- @@ -70,7 +70,7 @@ Learn more about `session.Query` [here](../../../../client-api/session/querying/ {PANEL: Usage Samples} -* In this sample, we select a three-days range from the HeartRate time-series. +* In this sample, we select a three-days range from the HeartRate time series. {CODE ts_region_LINQ-3-Range-Selection@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} * The first occurance of `Where` in the following example, filters documents. diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown index e520f38a02..281ef24e73 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown @@ -1,15 +1,15 @@ ## `session.Advanced.RawQuery` -# Time-Series Raw RQL Queries +# Time Series Raw RQL Queries --- {NOTE: } -* Clients can [express time-series queries in RQL](../../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries) +* Clients can [express time series queries in RQL](../../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries) and send them to the server for execution using the `session.Advanced.RawQuery` method. {INFO: } -Learn more about time-series queries in the [section dedicated to this subject](../../../../../document-extensions/timeseries/querying/queries-overview). +Learn more about time series queries in the [section dedicated to this subject](../../../../../document-extensions/timeseries/querying/queries-overview). {INFO/} @@ -26,7 +26,7 @@ Learn more about time-series queries in the [section dedicated to this subject]( To send a raw RQL query to the server, use `session.Advanced.RawQuery`. `RawQuery`transmits queries to the server without checking or altering -their contents, time-series contents or otherwise +their contents, time series contents or otherwise {PANEL/} @@ -45,11 +45,11 @@ their contents, time-series contents or otherwise * **Return Value**: * **`IRawDocumentQuery`** for aggregated data. When the query - [aggregates time-series entries](../../../document-extensions/timeseries/querying/aggregation), + [aggregates time series entries](../../../document-extensions/timeseries/querying/aggregation), the results are returned in an aggregated array. * **`IRawDocumentQuery`** for non-aggregated data. - When the query **doesn't aggregate** time-series entries, - the results are returned in a list of time-series results. + When the query **doesn't aggregate** time series entries, + the results are returned in a list of time series results. {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown index 2f3110a76a..a38d70df78 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown @@ -1,19 +1,19 @@ ## `TimeSeriesFor.Remove` -# Remove Time-Series Data +# Remove Time Series Data --- {NOTE: } -Remove time-series data using `TimeSeriesFor.Remove`. +Remove time series data using `TimeSeriesFor.Remove`. -* You can remove a **single time-series entry** or a **range of entries**. +* You can remove a **single time series entry** or a **range of entries**. * In this page: * [`TimeSeriesFor.Remove`](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#timeseriesfor.remove) * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#syntx) - * [Overload 1 - Remove a Single Time-Series Entry.](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-1) - * [Overload 2 - Remove a Range Of Time-Series Entries](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-2) + * [Overload 1 - Remove a Single Time Series Entry.](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-1) + * [Overload 2 - Remove a Range Of Time Series Entries](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-2) * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#usage-flow) * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#usage-samples) {NOTE/} @@ -22,10 +22,10 @@ Remove time-series data using `TimeSeriesFor.Remove`. {PANEL: `TimeSeriesFor.Remove`} -`TimeSeriesFor.Remove` is used for the removal of time-series and -time-series entries. +`TimeSeriesFor.Remove` is used for the removal of time series and +time series entries. -* There is no need to explicitly remove a time-series; +* There is no need to explicitly remove a time series; the series is removed when all its entries are removed. * Attempting to remove nonexistent entries results in a noop and generates no exception. @@ -37,9 +37,9 @@ time-series entries. There are two `TimeSeriesFor.Remove` methods: [Overload 1](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-1) -- Remove a single time-series entry. +- Remove a single time series entry. [Overload 2](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-2) -- Remove a range of time-series entries. +- Remove a range of time series entries. --- @@ -52,7 +52,7 @@ There are two `TimeSeriesFor.Remove` methods: | Parameters | Type | Description | |:-------------|:-------------|:-------------| - | `at` | DateTime | Timestamp of the time-series entry you want to remove | + | `at` | DateTime | Timestamp of the time series entry you want to remove | * **Return Value** No return value. @@ -72,8 +72,8 @@ There are two `TimeSeriesFor.Remove` methods: | Parameters | Type | Description | |:-------------|:-------------|:-------------| - | `from` | DateTime | Remove the range of time-series entries starting at this timestamp | - | `to` | DateTime | Remove the range of time-series entries ending at this timestamp | + | `from` | DateTime | Remove the range of time series entries starting at this timestamp | + | `to` | DateTime | Remove the range of time series entries ending at this timestamp | * **Return Value** No return value. @@ -90,7 +90,7 @@ There are two `TimeSeriesFor.Remove` methods: * Create an instance of `TimeSeriesFor`. * Either pass `TimeSeriesFor` an explicit document ID, -or- Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). - * Pass `TimeSeriesFor` the time-series name. + * Pass `TimeSeriesFor` the time series name. * Call `TimeSeriesFor.Remove`. * Call `session.SaveChanges` for the action to take effect on the server. @@ -99,25 +99,25 @@ There are two `TimeSeriesFor.Remove` methods: {PANEL: Usage Samples} In this sample we use the [first overload](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-1) -to remove a single entry from a time-series. -{CODE timeseries_region_Remove-TimeSeriesFor-Single-Time-Point@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +to remove a single entry from a time series. +{CODE timeseries_region_Remove-TimeSeriesFor-Single-Time Point@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} In this sample we use the [second overload](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-2) -to remove a range of entries from a time-series. -{CODE timeseries_region_TimeSeriesFor-Remove-Time-Points-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +to remove a range of entries from a time series. +{CODE timeseries_region_TimeSeriesFor-Remove-Time Points-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} ## Related articles **Studio Articles**: -[Studio Time-Series Management]() +[Studio Time Series Management]() **Client-API - Session Articles**: -[Time-Series Overview]() -[Creating and Modifying Time-Series]() -[Deleting Time-Series]() -[Retrieving Time-Series Values]() -[Time-Series and Other Features]() +[Time Series Overview]() +[Creating and Modifying Time Series]() +[Deleting Time Series]() +[Retrieving Time Series Values]() +[Time Series and Other Features]() **Client-API - Operations Articles**: -[Time-Series Operations]() +[Time Series Operations]() diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json index 854148f30a..5b9ce366ce 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json @@ -1,25 +1,25 @@ [ { "Path": "append-and-remove-TS-data.markdown", - "Name": "Append & Remove TS Data", + "Name": "Append & Remove TS", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "/get-TS-data", - "Name": "Get Time-Series Data", + "Name": "Get Time Series", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "patch-TS-data.markdown", - "Name": "Patch Time-Series Data", + "Name": "Patch Time Series", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { "Path": "/bulk-ts-operations", - "Name": "Bulk Time-Series Operations", + "Name": "Bulk Time Series Operations", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown index 6c673c2ea3..ce60e90475 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown @@ -1,11 +1,11 @@ ## `TimeSeriesBatchOperation` -# Append and Remove Time-Series Data +# Append and Remove Time Series Data --- {NOTE: } -To **Append** and **Remove** multiple time-series entries, use `TimeSeriesBatchOperation`. +To **Append** and **Remove** multiple time series entries, use `TimeSeriesBatchOperation`. * In this page: * [`TimeSeriesBatchOperation`](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#timeseriesbatchoperation) @@ -18,7 +18,7 @@ To **Append** and **Remove** multiple time-series entries, use `TimeSeriesBatchO {PANEL: `TimeSeriesBatchOperation`} -`TimeSeriesBatchOperation` executes a list of time-series entries **Append** +`TimeSeriesBatchOperation` executes a list of time series entries **Append** and **Remove** actions. The list is prepared beforehand in a `TimeSeriesOperation` instance using **TimeSeriesOperation.Append** and **TimeSeriesOperation.Remove**, and is @@ -30,7 +30,7 @@ passed to `TimeSeriesBatchOperation` as an argumenjt. * `TimeSeriesBatchOperation` **This is the operation you need to execute to append and remove - time-series entries.** + time series entries.** * **Definition** {CODE TimeSeriesBatchOperation-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -44,7 +44,7 @@ passed to `TimeSeriesBatchOperation` as an argumenjt. * `TimeSeriesOperation` **This is the configuration class provided to `TimeSeriesBatchOperation` - as an argument, with a list of time-series entries Append and Remove actions.** + as an argument, with a list of time series entries Append and Remove actions.** {CODE-BLOCK:JSON} public class TimeSeriesOperation @@ -59,14 +59,14 @@ passed to `TimeSeriesBatchOperation` as an argumenjt. | Property | Type | Description | |:-------------|:-------------|:-------------| - | `Name` | `string` | Time-Series name | + | `Name` | `string` | Time Series name | | `Append` | `method` | Add an Append action to the list | | `Remove` | `method` | Add a Remove action to the list | --- - * To add a time-series entry Append action, call `TimeSeriesOperation.Append`. + * To add a time series entry Append action, call `TimeSeriesOperation.Append`. {CODE-BLOCK:JSON} public void Append(AppendOperation appendOperation) {CODE-BLOCK/} @@ -89,7 +89,7 @@ passed to `TimeSeriesBatchOperation` as an argumenjt. --- - * To add a time-series entry Remove action, call `TimeSeriesOperation.Remove`. + * To add a time series entry Remove action, call `TimeSeriesOperation.Remove`. {CODE-BLOCK:JSON} public void Remove(RemoveOperation removeOperation) {CODE-BLOCK/} @@ -113,7 +113,7 @@ passed to `TimeSeriesBatchOperation` as an argumenjt. {PANEL: Usage Flow} * Create an instance of `TimeSeriesOperation` - * Add it the **time-series name**. + * Add it the **time series name**. * Prepare the Append and Remove sequence. * Call `TimeSeriesOperation.Append` to add an Append action @@ -135,10 +135,10 @@ passed to `TimeSeriesBatchOperation` as an argumenjt. {PANEL: Usage Samples} * In this sample, we use `TimeSeriesBatchOperation` to append - a time-series two entries. + a time series two entries. {CODE timeseries_region_Append-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -* In this sample, we remove two ranges of entries from a time-series. +* In this sample, we remove two ranges of entries from a time series. {CODE timeseries_region_Remove-Range-Using-TimeSeriesBatchOperation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown index 40c3ecfe46..ecae74fe5e 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown @@ -1,5 +1,5 @@ ## `BulkInsert.TimeSeriesFor.Append` -# Append Time-Series In Bulk +# Append Time Series In Bulk --- @@ -7,7 +7,7 @@ * `store.BulkInsert` is RavenDB's high-performance data insertion operation. Its `TimeSeriesFor` interface resembles [session.TimeSeriesFor](../../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data) - in its ability to append multiple time-series entries in a single transaction, + in its ability to append multiple time series entries in a single transaction, while omitting the liabilities of the `session` interface to gain much higher speed. * In this page: @@ -23,7 +23,7 @@ {PANEL: `BulkInsert.TimeSeriesFor.Append`} Create a `BulkInsert` instance, pass its `TimeSeriesFor` method the document's ID -and time-series name, and then call `TimeSeriesFor.Append` as many times as you need +and time series name, and then call `TimeSeriesFor.Append` as many times as you need to. All the Append operations you perform this way will be executed in a single transaction. @@ -41,7 +41,7 @@ a single transaction. | Parameters | Type | Description | |:-------------|:-------------|:-------------| | `id` | `string` | Document ID | - | `name` | `string` | Time-Series Name | + | `name` | `string` | Time Series Name | * **Return Value**: **`TimeSeriesBulkInsert`** @@ -98,7 +98,7 @@ a single transaction. * Create a `store.BulkInsert` instance. * Pass the instance's `TimeSeriesFor` - **The document ID** - **The time-series name** + **The time series name** * Call `TimeSeriesFor.Append` as many times as you like. Pass it - * The appended entry's **timestamp** * **A single value** ([overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value)) @@ -111,15 +111,15 @@ a single transaction. {PANEL: Usage Samples} * In this sample, we use [overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) - to append a time-series two entries in a single transaction. + to append a time series two entries in a single transaction. {CODE timeseries_region_Use-BulkInsert-To-Append-2-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} * In this sample, we use [overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) - to append a time-series a hundred entries in a single transaction. + to append a time series a hundred entries in a single transaction. {CODE timeseries_region_Use-BulkInsert-To-Append-100-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} * In this sample, we use [overload 2](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-2-each-appended-entry-has-multiple-values) - to append a time-series two saets of values in a single transaction. + to append a time series two saets of values in a single transaction. {CODE BulkInsert-overload-2-Two-HeartRate-Sets@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/.docs.json index 61becf3737..927e71f7da 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/.docs.json @@ -1,13 +1,13 @@ [ { "Path": "get-TS-data.markdown", - "Name": "From a Single Time-Series", + "Name": "From a Single Time Series", "DiscussionId": "15672af6-b12d-418c-a8a3-aef1fc9dfa61", "Mappings": [] }, { "Path": "get-multiple-TS-data.markdown", - "Name": "From Multiple Time-Series", + "Name": "From Multiple Time Series", "DiscussionId": "c8a11e4a-118b-4413-ba6c-7c6fdd414fa2", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown index 93bcef1fd4..1bc9417156 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown @@ -1,11 +1,11 @@ ## `GetTimeSeriesOperation` -# Get a Time-Series Data +# Get a Time Series Data --- {NOTE: } -Get a single time-series' data using `GetTimeSeriesOperation`. +Get a single time series' data using `GetTimeSeriesOperation`. * In this page: * [`GetTimeSeriesOperation`](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#gettimeseriesoperation) @@ -20,9 +20,9 @@ Get a single time-series' data using `GetTimeSeriesOperation`. {PANEL: `GetTimeSeriesOperation`} Use `GetTimeSeriesOperation` to retrieve data from a single -time-series. +time series. -* To retrieve data from multiple time-series, use +* To retrieve data from multiple time series, use [GetMultipleTimeSeriesOperation](../../../../../document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data). {PANEL/} @@ -37,7 +37,7 @@ time-series. | Parameters | Type | Description | |:-------------|:-------------|:-------------| | `docId` | `string` | Document ID | - | `timeseries` | `string` | Time-series name | + | `timeseries` | `string` | Time series name | | `from` | `DateTime` | Range start | | `to` | `DateTime` | Range end | | `start` | `int` | Start of first Page | @@ -46,7 +46,7 @@ time-series. * **Return Value**: **`TimeSeriesRangeResult`** {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - When a nonexistent time-series is requested, + When a nonexistent time series is requested, the return value will be `null`. When a nonexistent entries-range is requested, the return value will be a `TimeSeriesRangeResult` object with an @@ -60,7 +60,7 @@ time-series. {PANEL: Usage Flow} * Pass `GetTimeSeriesOperation` - - Document ID, Time-Series Name, Range Start, Range End. + Document ID, Time Series Name, Range Start, Range End. * Call `store.Operations.Send` to execute the operation. * Data is returned into a `dictionary of `TimeSeriesRangeResult` classes. @@ -68,8 +68,8 @@ time-series. {PANEL: Usage Sample} -* In this sample, we retrieve all the entries of a time-series. - {CODE timeseries_region_Get-Single-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we retrieve all the entries of a time series. + {CODE timeseries_region_Get-Single-Time Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown index 631c609751..f77fd462ec 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown @@ -1,11 +1,11 @@ ## `GetMultipleTimeSeriesOperation` -# Get Multiple Time-Series Data +# Get Multiple Time Series Data --- {NOTE: } -Get multiple time-series data using `GetMultipleTimeSeriesOperation`. +Get multiple time series data using `GetMultipleTimeSeriesOperation`. * In this page: * [`GetMultipleTimeSeriesOperation`](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-multiple-ts-data#getmultipletimeseriesoperation) @@ -20,7 +20,7 @@ Get multiple time-series data using `GetMultipleTimeSeriesOperation`. {PANEL: `GetMultipleTimeSeriesOperation`} Use `GetMultipleTimeSeriesOperation` to retrieve data from -multiple time-series. +multiple time series. {PANEL/} @@ -34,7 +34,7 @@ multiple time-series. | Parameters | Type | Description | |:-------------|:-------------|:-------------| | `docId` | `string` | Document ID | - | `ranges` | `IEnumerable` | Ranges of Time-Series Entries | + | `ranges` | `IEnumerable` | Ranges of Time Series Entries | | `start` | `int` | Start of first Page | | `pageSize` | `int` | Size of each page | @@ -46,7 +46,7 @@ multiple time-series. {CODE TimeSeriesDetails-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - When a nonexistent time-series or entries-range is requested, + When a nonexistent time series or entries-range is requested, the return value for the erronous range is a `TimeSeriesRangeResult` object with an empty `Entries` property. @@ -58,10 +58,10 @@ multiple time-series. {PANEL: Usage Flow} * Pass `GetMultipleTimeSeriesOperation` - - * The time-series parent-Document ID + * The time series parent-Document ID * A **TimeSeriesRange** instance for each entries range you want it to retrieve. -* Populate each TimeSeriesRange instance with a **time-Series name**, +* Populate each TimeSeriesRange instance with a **time Series name**, a **range start** timestamp (`From`), and a **range end** timestamp (`To`). * Call `store.Operations.Send` to execute the operation. @@ -69,8 +69,8 @@ multiple time-series. {PANEL: Usage Sample} -* In this sample, we retrieve chosen entries from two time-series. - {CODE timeseries_region_Get-Multiple-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we retrieve chosen entries from two time series. + {CODE timeseries_region_Get-Multiple-Time Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown index 78099f9864..ac4a5393e1 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown @@ -1,14 +1,14 @@ ## `PatchOperation`, `PatchByQueryOperation` -# Patch Time-Series Data +# Patch Time Series Data --- {NOTE: } -* Time-series data can be patched - +* Time series data can be patched - * to a single document located by its ID, using [PatchOperation](../../../../client-api/operations/patching/single-document#patching-how-to-perform-single-document-patch-operations). * to multiple documents located by a query, using [PatchByQueryOperation](../../../../client-api/operations/patching/set-based). -* Both patching operations can be used to Append, Get and Remove time-series entries. +* Both patching operations can be used to Append, Get and Remove time series entries. * In this page: * [Patching Operations](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patching-operations) @@ -29,24 +29,24 @@ {INFO: } -* To patch time-series data, use `PatchOperation` or `PatchByQueryOperation`. +* To patch time series data, use `PatchOperation` or `PatchByQueryOperation`. * `PatchOperation` is RavenDB's operation for single-document patching, and `PatchByQueryOperation` is used for set-based document operations. - None is dedicated to handling time-series. - You can use both to patch time-series data, by customizing the Javascript + None is dedicated to handling time series. + You can use both to patch time series data, by customizing the Javascript they are using. -* Learn about customizable Javascripts and the JS time-series API [here](../../../../document-extensions/timeseries/client-api/ts-javascript-api). +* Learn about customizable Javascripts and the JS time series API [here](../../../../document-extensions/timeseries/client-api/ts-javascript-api). {INFO/} -* Use `PatchOperation` to **load a document by its ID and patch it time-series data**. +* Use `PatchOperation` to **load a document by its ID and patch it time series data**. - Here, for example, we use `PatchOperation` to patch a document a single time-series entry. + Here, for example, we use `PatchOperation` to patch a document a single time series entry. {CODE TS_region-Operation_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -* Use `PatchByQueryOperation` to **run a document query and patch time-series data to documents you find**. +* Use `PatchByQueryOperation` to **run a document query and patch time series data to documents you find**. - Here, we use `PatchByQueryOperation` to append a time-series entry to all + Here, we use `PatchByQueryOperation` to append a time series entry to all documents of the User collection. {CODE TS_region-PatchByQueryOperation-Append-To-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -91,7 +91,7 @@ * the change vector (or `null`) * a new `PatchRequest` instance * Use the `PatchRequest` instance to pass `PatchOperation` - a Java Script that appends or removes time-series entries. + a Java Script that appends or removes time series entries. * Call `store.Operations.Send` to execute the operation. --- @@ -99,12 +99,12 @@ #### Usage Samples * In this sample, we provide `PatchOperation`with a script that patches - 100 time-series entries to a document. + 100 time series entries to a document. Timestamps and values are drawn from an array, and other arguments are provided in the "Values" section. {CODE TS_region-Operation_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -* In this sample, we use `PatchOperation` to remove a range of 50 time-series +* In this sample, we use `PatchOperation` to remove a range of 50 time series entries from a document. {CODE TS_region-Operation_Patch-Remove-50-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -144,7 +144,7 @@ #### Usage Samples -* In this sample, we run a document query and remove the HeartRate time-series +* In this sample, we run a document query and remove the HeartRate time series from documents we find. {CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown index be812d7a7f..b5910c2f64 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown @@ -1,36 +1,36 @@ -# Time-Series Overview +# Time Series Overview --- {NOTE: } * A huge number of systems, including an expanding variety of IoT devices, produce continuous streams of values that can be collected and used for - various needs. **Time-series** are vectors of data points that are designated + various needs. **Time series** are vectors of data points that are designated to collect values over time, store them consecutively, and manage them with high efficiency and performance. -* RavenDB Time-series can be managed and utilized using a thorough set of +* RavenDB Time series can be managed and utilized using a thorough set of [API methods](../../document-extensions/timeseries/client-api/api-overview), the [Studio](../../studio/database/document-extensions/time-series), - and [various RavenDB features](../../document-extensions/timeseries/timeseries-and-other-features/time-series-and-other-features-overview#time-series-and-other-features---overview). + and [various RavenDB features](../../document-extensions/timeseries/timeseries-and-other-features/time series-and-other-features-overview#time series-and-other-features---overview). -* Time-series functionality is fully integrated into RavenDB's +* Time series functionality is fully integrated into RavenDB's distributed environment and document model. -* Time-series data is **compressed** to lower storage usage and transaction time. +* Time series data is **compressed** to lower storage usage and transaction time. * In this page: * [Overview](../../document-extensions/timeseries/overview#overview) - * [RavenDB's Time-Series Implementation](../../document-extensions/timeseries/overview#ravendbs-time-series-implementation) - * [Distrubuted Time-Series](../../document-extensions/timeseries/overview#distrubuted-time-series) - * [Time-Series as Document Extensions](../../document-extensions/timeseries/overview#time-series-as-document-extensions) - * [Time-Series Features](../../document-extensions/timeseries/overview#time-series-features) - * [Time-Series Data](../../document-extensions/timeseries/overview#time-series-data) + * [RavenDB's Time Series Implementation](../../document-extensions/timeseries/overview#ravendbs-time-series-implementation) + * [Distrubuted Time Series](../../document-extensions/timeseries/overview#distrubuted-time-series) + * [Time Series as Document Extensions](../../document-extensions/timeseries/overview#time-series-as-document-extensions) + * [Time Series Features](../../document-extensions/timeseries/overview#time-series-features) + * [Time Series Data](../../document-extensions/timeseries/overview#time-series-data) * [Separate Name and Data Storage](../../document-extensions/timeseries/overview#separate-name-and-data-storage) - * [Time-Series Segments](../../document-extensions/timeseries/overview#time-series-segments) + * [Time Series Segments](../../document-extensions/timeseries/overview#time-series-segments) * [Transactions Performance](../../document-extensions/timeseries/overview#transactions-performance) * [Common-Queries Performance](../../document-extensions/timeseries/overview#common-queries-performance) - * [Time-Series Entries](../../document-extensions/timeseries/overview#time-series-entries) + * [Time Series Entries](../../document-extensions/timeseries/overview#time-series-entries) * [The Timestamp](../../document-extensions/timeseries/overview#the-timestamp) * [The Values](../../document-extensions/timeseries/overview#the-values) * [The Tag](../../document-extensions/timeseries/overview#the-tag) @@ -41,12 +41,12 @@ {PANEL: Overview} -Time-series can be **aggregated** and **queried** to illustrate process +Time series can be **aggregated** and **queried** to illustrate process behavior, predict future developments, track noticeable value changes, and create other helpful statistics. Here are a few examples for value streams that can be easily and effectively -handled by time-series. +handled by time series. * _A sequence of heartrate values can be collected from a smart wrist-watch_, and be used to build a person's training program. @@ -58,101 +58,101 @@ handled by time-series. and analyzed to secure the vehicles and improve the service. * _Daily changes in stock prices_ can be used to build investment plans. -## RavenDB's Time-Series Implementation +## RavenDB's Time Series Implementation -Time-series functionality is fully integrated in RavenDB's +Time series functionality is fully integrated in RavenDB's distributed environment and document model. --- -#### Distrubuted Time-Series +#### Distrubuted Time Series -Distributed clients and nodes can modify time-series concurrently; the +Distributed clients and nodes can modify time series concurrently; the modifications are merged by the cluster with [no conflict](../../document-extensions/timeseries/design#no-conflicts). --- -#### Time-Series as Document Extensions +#### Time Series as Document Extensions -RavenDB’s Time-Series, like its distributed counters, attachments and document +RavenDB’s Time Series, like its distributed counters, attachments and document revisions, are **document extensions**. {INFO: } - A time-series always extends a single specific document. - The context and source of the time-series can be kept clear this way, - and time-series management can use the comfort and strength of the + A time series always extends a single specific document. + The context and source of the time series can be kept clear this way, + and time series management can use the comfort and strength of the document interface. A barometer's specifications document, for example, can be the parent - document for a time-series that is populated with measurements taken + document for a time series that is populated with measurements taken by a barometer of this specification. {INFO/} --- -#### Time-series Features +#### Time Series Features -Notable time-series features include - +Notable time series features include - * **Highly-Efficient Storage Management** - Time-series data is [compressed and segmented](../../document-extensions/timeseries/overview#efficient-storage-and-querying) + Time series data is [compressed and segmented](../../document-extensions/timeseries/overview#efficient-storage-and-querying) to minimize storage usage and transmission time. * **A Thorough Set of API Methods** - The [time-series API](../../document-extensions/timeseries/client-api/api-overview)** + The [time series API](../../document-extensions/timeseries/client-api/api-overview)** includes a variety of `session methods` and `store operations`. * **Full GUI Support** - Time-series can be viewed and managed using the [Studio](../../studio/database/document-extensions/time-series). -* **Time-Series Querying and Aggregation** + Time series can be viewed and managed using the [Studio](../../studio/database/document-extensions/time-series). +* **Time Series Querying and Aggregation** * [High-performance common queries](../../document-extensions/timeseries/overview#efficient-storage-and-querying) - The results of a set of common queries are prepared in advance in time-series segments' + The results of a set of common queries are prepared in advance in time series segments' headers, so the response to querying for a series **minimum value**, for example, is returned nearly instantly. * [LINQ and raw RQL queries](../../document-extensions/timeseries/querying/queries-overview-and-syntax) Flexible queries and aggregations can be executed using LINQ expressions and raw RQL - over time-series **timestamps**, **tags** and **values**. -* **Time-Series Indexing** - Time-series can be [indexed by clients](../../ocument-extensions/timeseries/indexing) or using the Studio. + over time series **timestamps**, **tags** and **values**. +* **Time Series Indexing** + Time series can be [indexed by clients](../../ocument-extensions/timeseries/indexing) or using the Studio. * [Rollup and Retention Policies](../../document-extensions/timeseries/rollup-and-retention) * **Rollup Policies** - You can set time-series rollup policies to aggregate large series into + You can set time series rollup policies to aggregate large series into smaller sets by your definitions. * **Retention Policies** - You can set time-series retention policies to automatically remove - time-series entries that have reached their expiration date/time. -* [Including Time-Series](../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview) - You can include (pre-fetch) time-series data while loading documents. + You can set time series retention policies to automatically remove + time series entries that have reached their expiration date/time. +* [Including Time Series](../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview) + You can include (pre-fetch) time series data while loading documents. Included data is held by the client's sesion, and is instantly delivered to the user when it is requested. * **Patching** - You can patch time-series data to your documents. + You can patch time series data to your documents. (visit the [API documentation](../../document-extensions/timeseries/client-api/api-overview) to learn more). {PANEL/} -{PANEL: Time-Series Data} +{PANEL: Time Series Data} -Time-series **names** are kept in their parent documents' metadata, while their +Time series **names** are kept in their parent documents' metadata, while their **data** is kept [separately](../../). -Time-series data is **compressed** and composed of consecutive +Time series data is **compressed** and composed of consecutive [segments](../../) and [entries](../../). {PANEL/} {PANEL: Separate Name and Data Storage} -A time-series’ **name** is kept at its parent-document's metadata, while +A time series’ **name** is kept at its parent-document's metadata, while its **data** is kept separately. -The separation of names and data prevents time-series value updates from +The separation of names and data prevents time series value updates from invoking document-change events, keeping documents' availability and performance -whatever size their time-series grow to be and however frequent their value-updates +whatever size their time series grow to be and however frequent their value-updates are. {PANEL/} -{PANEL: Time-Series Segments} +{PANEL: Time Series Segments} -Time-series are composed of consecutive **segments**. -When a time-series is created, its values are held in a single segment. +Time series are composed of consecutive **segments**. +When a time series is created, its values are held in a single segment. As the number of values grow (or when a certain amount of time has passed since the last entry appendage), segments are added to the series. @@ -165,7 +165,7 @@ anything in this regard. #### Transactions Performance -Time-series segmentation heightens performance and minimizes transaction +Time series segmentation heightens performance and minimizes transaction and query time, since only the relevant segments of even a very long series would be retrieved and queried, and only relevant segments would be updated. @@ -179,9 +179,9 @@ are always available for instant retrieval. {PANEL/} -{PANEL: Time-Series Entries} +{PANEL: Time Series Entries} -Each time-series segment is composed of consecutive **time-series entries**. +Each time series segment is composed of consecutive **time series entries**. Each entry is composed of a **timestamp**, 1 to 32 **values**, and an **optional tag**. @@ -192,11 +192,11 @@ Each entry is composed of a **timestamp**, 1 to 32 **values**, and an **optional {INFO: } A single `DateTime` timestamp marks each entry in a millisecond precision. -E.g. in a heartrate time-series, timestamps would indicate the time in which each +E.g. in a heartrate time series, timestamps would indicate the time in which each heartrate measurement has been taken. {INFO/} -Timestamps, and therefore time-series entries, are always ordered **by time**, +Timestamps, and therefore time series entries, are always ordered **by time**, from the oldest timestamp to the newest. Timestamps are the reference points for the appendage and removal of values. @@ -209,20 +209,20 @@ Up to 32 `double` **values** can be appended per-entry. {INFO/} We allow storing as many as 32 values per entry, since appending multiple -values may be a requirement for some time-series. Here are a few examples. +values may be a requirement for some time series. Here are a few examples. -* A heart-rate time-series +* A heart-rate time series An entry with a single value (the heart-rate measurement taken by - a smart wrist-watch) is added to the time-series every minute. + a smart wrist-watch) is added to the time series every minute. -* A truck-route time-series +* A truck-route time series An entry with 2 values (the latitude and longitude reported by - a GPS device) is added to the time-series every minute. + a GPS device) is added to the time series every minute. -* A stock-price time-series +* A stock-price time series An entry with 5 values (stock price when the trade starts and ends, its highest and lowest prices during the day, and its daily - trade volume) is added to the time-series every day. + trade volume) is added to the time series every day. --- @@ -241,11 +241,11 @@ Here is why. * The short (ID-long) reference, e.g. "watches/fitbit", refers us to a text that is as long and as structured as we'd like it to be. -* While time-series entries are queried, the query can load the +* While time series entries are queried, the query can load the documents their tags refer to and filter the results by the documents' contents. E.g., the query can - - **1.** load time-series entries whose tags refer to device-specification documents. + **1.** load time series entries whose tags refer to device-specification documents. **2.** retrieve and examine the specification document referred to by each entry. **3.** project to the client only values measured by Japanese devices. diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown index 0e400ce628..e0ac00c3ff 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown @@ -1,4 +1,4 @@ -## Time-Series Queries: +## Time Series Queries: # Aggregarion and Projection --- @@ -6,8 +6,8 @@ {NOTE: } * **Aggregation** - Queris can easily create powerful statistics by aggregating time-series (or - chosen ranges of time-series entries) into groups by chosen time frames like + Queris can easily create powerful statistics by aggregating time series (or + chosen ranges of time series entries) into groups by chosen time frames like an hour or a week, and retrieving values from each group by criteria like `Min` for the lowest value, `Count` for the number of values in the group, etc. @@ -20,7 +20,7 @@ {INFO: Projecting values from Aggregated and Non-Aggregated result-sets} - * When values are selected from a time-series (or a range of time-series + * When values are selected from a time series (or a range of time series entries) that **has** been aggregated, they are selected per-group. * When values are selected from a series or a range that **hasn't** been aggregated, they are selected from the entire result-set. @@ -41,7 +41,7 @@ {PANEL: Aggregation and Projection} In an RQL query, use the `group by` expression to aggregate -time-series (or ranges of time-series entries) in groups by +time series (or ranges of time series entries) in groups by a chosen resolution, and the `select` keyword to choose and project entries by a chosen criteria. @@ -70,7 +70,7 @@ project entries by a chosen criteria. {INFO/} -* In this sample, we group entries of users' HeartRate time-series +* In this sample, we group entries of users' HeartRate time series and project the lowest and highest values of each group. Each HeartRate entry holds a single value. {CODE-BLOCK: JSON} @@ -85,11 +85,11 @@ from Users as u where Age < 30 ) {CODE-BLOCK/} * **group by '1 days'** - We group each user's HeartRate time-series entries in consequtive 1-day groups. + We group each user's HeartRate time series entries in consequtive 1-day groups. * **select min(), max()** We select the lowest and highest values of each group and project them to the client. -* In this sample, we group entries of companies' StockPrice time-series +* In this sample, we group entries of companies' StockPrice time series in consequtive 7-day groups and project the highest and lowest values of each group. Each StockPrice entry holds five values, the query returns the `Max` @@ -123,10 +123,10 @@ select c.Name, SP(c) Values[1], etc.) and 5 `Min` values for each group (the lowest Values[0], lowest Values[1], etc.). * **select c.Name, SP(c)** - Project the company's name along with the time-series query + Project the company's name along with the time series query results to make the results easier to read and understand. -* This sample is similar to the one above it, except that time-series +* This sample is similar to the one above it, except that time series entries are **not aggregated**, so the highest and lowest values are collected not from each group but from the entire result-set. {CODE-BLOCK: JSON} @@ -152,14 +152,14 @@ select c.Name, SP(c) {INFO: } You can run queries from your client using raw RQL and LINQ. -* Learn how to run a LINQ time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). -* Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). +* Learn how to run a LINQ time series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). +* Learn how to run a raw RQL time series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). {INFO/} -To aggregate time-series entries, use `GroupBy()` in a LINQ query +To aggregate time series entries, use `GroupBy()` in a LINQ query or `group by` in a raw RQL query. -To select time-series values for projection, use `Select()` in a LINQ query +To select time series values for projection, use `Select()` in a LINQ query or `select` in a raw RQL query. * Here we express the query we've discussed above using diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown index 10aac705a4..94f62b3aef 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown @@ -1,12 +1,12 @@ -## Time-Series Queries: +## Time Series Queries: # Choosing Query Range --- {NOTE: } -* Queries can be performed over whole time-series or over a chosen range - of time-series entries, e.g. only entries collected during the last 7 days. +* Queries can be performed over whole time series or over a chosen range + of time series entries, e.g. only entries collected during the last 7 days. * In this page: * [Choosing Query Range](../../../document-extensions/timeseries/querying/choosing-query-range#choosing-query-range) @@ -20,7 +20,7 @@ {PANEL: Choosing Query Range} -In an RQL query, use `between` and `and` to specify a range of time-series +In an RQL query, use `between` and `and` to specify a range of time series entries to query. The entries are chosen by their timestamps, in UTC format. {CODE-BLOCK: JSON} @@ -60,8 +60,8 @@ select timeseries( {INFO: } You can run queries from your client using raw RQL and LINQ. -* Learn how to run a LINQ time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). -* Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). +* Learn how to run a LINQ time series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). +* Learn how to run a raw RQL time series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). {INFO/} @@ -82,11 +82,11 @@ Omitting these values will load the entire series. | Parameters | Type | Description | |:-------------|:-------------|:-------------| | `documentInstance` | `object` | Document Instance | - | `name` | `string` | Time-Series Name | + | `name` | `string` | Time Series Name | | `from` | `DateTime` | Range Start | | `to` | `DateTime` | Range End | -* In this sample, we select a three-days range from the HeartRate time-series. +* In this sample, we select a three-days range from the HeartRate time series. {CODE ts_region_LINQ-3-Range-Selection@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} --- @@ -98,7 +98,7 @@ To choose a range as part of a raw RQL query, use the `between` and `and` keywor In this sample, a raw RQL query chooses the profiles of users under the age of 30 and retrieves a 24-hours range from each. An **offset** is defined, adding two hours to retrieved timestamps to adjust them -to the client's local time-zone. +to the client's local time zone. {CODE-TABS} {CODE-TAB:csharp:Declare-Syntax ts_region_Raw-Query-Non-Aggregated-Declare-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {CODE-TAB:csharp:Select-Syntax ts_region_Raw-Query-Non-Aggregated-Select-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown index 2768ff4084..0979cf68a3 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown @@ -1,19 +1,19 @@ -## Time-Series Queries: +## Time Series Queries: # Filtering --- {NOTE: } -* Time-series entries can be filtered by their **value** (e.g. to - retrieve a "Thermometer" time-series entries whose measurement exceed +* Time series entries can be filtered by their **value** (e.g. to + retrieve a "Thermometer" time series entries whose measurement exceed 32 Celsius degrees) or **tag** (e.g. to retrieve all the entries whose tag is "Thermometer No. 3"). * Entries can also be filtered by the **contents of a document they refer to**. - A time-series entry's tag can contain the **ID of a document**. + A time series entry's tag can contain the **ID of a document**. A query can **load the document** that the entry refers to, check - its properties and filter time-series entries by them. + its properties and filter time series entries by them. * In this page: * [Filtering Results](../../../document-extensions/timeseries/querying/filtering#filtering) @@ -26,7 +26,7 @@ {PANEL: Filtering} -In an RQL query, use the `where` keyword to filter time-series entries +In an RQL query, use the `where` keyword to filter time series entries by their **tags** or **values**. {CODE-BLOCK: JSON} @@ -40,7 +40,7 @@ select timeseries( {CODE-BLOCK/} * `where Tag='watches/fitbit'` - Retrieve time-series entries whose tag is 'watches/fitbit'. + Retrieve time series entries whose tag is 'watches/fitbit'. To filter entries by their by value use **Value**, e.g.`where Value < 80`. --- @@ -48,7 +48,7 @@ select timeseries( #### Using Tags as References - `load tag` Use the `load Tag ` expression to **load a document** whose ID is stored in -a time-series entry's tag. +a time series entry's tag. Use `load Tag ` with `where` to **filter your results by properties of the loaded document**, as we do in the following example. @@ -65,7 +65,7 @@ select timeseries( Load the document each entry's tag refers to. Here, we load profiles of potential stock brokers. * `where Broker.Title == "Sales Representative"` - Filter time-series entries so we remain with those + Filter time series entries so we remain with those referring to sales representatives. {PANEL/} @@ -75,8 +75,8 @@ select timeseries( {INFO: } You can run queries from your client using raw RQL and LINQ. -* Learn how to run a LINQ time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). -* Learn how to run a raw RQL time-series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). +* Learn how to run a LINQ time series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). +* Learn how to run a raw RQL time series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). {INFO/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown index 5690325ede..00412de4c8 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown @@ -1,15 +1,15 @@ -## Time-Series Queries: +## Time Series Queries: # Indexed Queries --- {NOTE: } -* Time-series indexes are not generated automatically by the server, but static +* Time series indexes are not generated automatically by the server, but static indexes can be created by clients or using the Studio. As any other index, static - time-series indexes can be queried. + time series indexes can be queried. -* Querying a time-series index projects the contents of fields specified +* Querying a time series index projects the contents of fields specified in the index' `select` clause. The result-set can then be further filtered using LINQ expressions. @@ -24,7 +24,7 @@ {PANEL: Indexed Queries} -You can query time-series indexes using `session.Query` and +You can query time series indexes using `session.Query` and `session.Advanced.DocumentQuery`, and enhance the queries using LINQ expressions. @@ -56,7 +56,7 @@ using LINQ expressions. a matching results container. In the following sample we define a **map index** that collects three fields from the "HeartRate" - time-series, a "Results" container for the results, and an **index query** that uses both. + time series, a "Results" container for the results, and an **index query** that uses both. {CODE ts_region_Index-TS-Queries-6-Index-Definition-And-Results-Class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {CODE ts_region_Index-TS-Queries-1-session-Query@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -65,7 +65,7 @@ using LINQ expressions. {PANEL: Usage Samples} * **Indexed Queries** - To query a time-series index, call `session.Query` or `session.Advanced.DocumentQuery`. + To query a time series index, call `session.Query` or `session.Advanced.DocumentQuery`. {CODE-TABS} {CODE-TAB:csharp:session.Query ts_region_Index-TS-Queries-1-session-Query@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {CODE-TAB:csharp:DocumentQuery ts_region_Index-TS-Queries-3-DocumentQuery@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown index 1e053e9b50..f1178f287f 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown @@ -1,20 +1,20 @@ -## Time-Series Queries: +## Time Series Queries: # Overview and Syntax --- {NOTE: } -* Time-series querying is native to RavenDB's RQL. +* Time series querying is native to RavenDB's RQL. -* Clients can express time-series queries in RQL and LINQ expressions to, - for example, expose the behavior of a process that populates a time-series - over time, and to locate documents related to chosen time-series entries. +* Clients can express time series queries in RQL and LINQ expressions to, + for example, expose the behavior of a process that populates a time series + over time, and to locate documents related to chosen time series entries. -* Queries can be exectued over time-series indexes. +* Queries can be exectued over time series indexes. * In this page: - * [Time-Series Queries](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#time-series-queries) + * [Time Series Queries](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#time-series-queries) * [Server and Client Queries](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#server-and-client-queries) * [Dynamic and Indexed Queries](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#dynamic-and-indexed-queries) * [Syntax](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#syntax) @@ -26,16 +26,16 @@ --- -{PANEL: Time-Series Queries} +{PANEL: Time Series Queries} -Time-series query can - +Time series query can - -* [Choose a range of time-series entries](../../../document-extensions/timeseries/querying/choosing-query-range) +* [Choose a range of time series entries](../../../document-extensions/timeseries/querying/choosing-query-range) to query from. * [Filter](../../../document-extensions/timeseries/querying/filtering) - time-series entries by their tags, values and timestamps. + time series entries by their tags, values and timestamps. * [Aggregate](../../../document-extensions/timeseries/querying/aggregation) - time-series entries into groups by a chosen resolution, e.g. gather the prices + time series entries into groups by a chosen resolution, e.g. gather the prices of a stock that's been collected over the past two months to week-long groups). * [Select](../../../document-extensions/timeseries/querying/aggregation) entries by various criteria, e.g. by the min and max values of each aggregated group. @@ -46,25 +46,25 @@ Time-series query can - {PANEL: Server and Client Queries} -Time-series queries are executed by the server and their results are projected +Time series queries are executed by the server and their results are projected to the client, so they require very little client computation resources. -* The server runs time-series queries using RQL. -* Clients can phrase time-series queries in **raw RQL** or using **LINQ expressions** +* The server runs time series queries using RQL. +* Clients can phrase time series queries in **raw RQL** or using **LINQ expressions** (which will be automatically translated to RQL before their execution by the server). {PANEL/} {PANEL: Dynamic and Indexed Queries} -Time-series indexes are not created automatically by the server, but static time-series +Time series indexes are not created automatically by the server, but static time series indexes can be created by clients (or using the Studio). -* Use **dynamic queries** when time-series you query are unindexed +* Use **dynamic queries** when time series you query are unindexed or when you prefer that RavenDB would choose an index automatically using its [query optimizer](../../../../indexes/querying/what-is-rql#query-optimizer). E.g. - {CODE-BLOCK: JSON} -//Look for time-series named "HeartRate" in user profiles of users under 30. +//Look for time series named "HeartRate" in user profiles of users under 30. from Users as u where Age < 30 select timeseries( from HeartRate @@ -82,7 +82,7 @@ from index 'SimpleIndex' {PANEL: Syntax} -You can query time-series using two equivalent syntaxes, +You can query time series using two equivalent syntaxes, choose the syntax you're comfortable with. * [`select timeseries` syntax](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#syntax-creating-a-time-series-section) @@ -90,13 +90,13 @@ choose the syntax you're comfortable with. --- -#### `select timeseries` Syntax: Creating a Time-Series Section +#### `select timeseries` Syntax: Creating a Time Series Section -This syntax allows you to encapsulate your query's time-series functionality +This syntax allows you to encapsulate your query's time series functionality in a `select timeseries` section. {CODE-BLOCK: JSON} -//Look for time-series named "HeartRate" in user profiles of users under 30. +//Look for time series named "HeartRate" in user profiles of users under 30. from Users as u where Age < 30 select timeseries( @@ -105,13 +105,13 @@ select timeseries( {CODE-BLOCK/} * `from Users as u where Age < 30` - This **document query** locates the documents whose time-series we want to query. + This **document query** locates the documents whose time series we want to query. {INFO: } - A typical time-series query starts by locating a single document. - For example, to query a stock prices time-series we can locate + A typical time series query starts by locating a single document. + For example, to query a stock prices time series we can locate a specific company's profile in the Companies collection first, - and then query the StockPrices time-series that extends this profile. + and then query the StockPrices time series that extends this profile. {CODE-BLOCK: JSON} from Companies as c where Name = 'Apple' select timeseries( @@ -121,25 +121,25 @@ select timeseries( {INFO/} * `select timeseries` - The `select` clause defines the time-series query. + The `select` clause defines the time series query. * `from HeartRate` - The `from` keyword is used to select the time-series we'd query, by its name. + The `from` keyword is used to select the time series we'd query, by its name. --- -#### `declare timeseries` Syntax: Declaring a Time-Series Function +#### `declare timeseries` Syntax: Declaring a Time Series Function -This syntax allows you to declare a time-series function and call it +This syntax allows you to declare a time series function and call it from your query. It introduces greater flexibility to your queries as -you can, for example, pass arguments to/by the time-series function. +you can, for example, pass arguments to/by the time series function. Here is a query in both syntaxes. It picks users whose age is under 30, -and if they own a time-series named "HeartRate" retrieves a range of entries +and if they own a time series named "HeartRate" retrieves a range of entries from this series. -| With Time-Series Function | Without Time-Series Function | +| With Time Series Function | Without Time Series Function | |:---:|:---:| | {CODE-BLOCK: JSON} declare timeseries ts(jogger){ From 659ba232fbb5a8e125eac5364cf90e7966daf853 Mon Sep 17 00:00:00 2001 From: morhilai Date: Wed, 24 Jun 2020 14:25:53 +0300 Subject: [PATCH 50/56] RDoc-1703_TimeSeries applied more review comments -fix links -remove hyphen from "time-series" --- .../document-extensions/timeseries/.docs.json | 6 +- .../timeseries/design.markdown | 119 +++++++++++------- .../timeseries/indexing.markdown | 44 +++---- .../timeseries/rollup-and-retention.markdown | 84 ++++++------- .../time-series-and-other-features.markdown | 76 +++++++---- 5 files changed, 188 insertions(+), 141 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json index e9d5729f30..bd6ecf89e4 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/.docs.json @@ -17,7 +17,7 @@ }, { "Path": "indexing.markdown", - "Name": "Indexing Time-Series", + "Name": "Indexing Time Series", "DiscussionId": "f23052eb-3c53-4984-a2cd-03a0ff9835d3", "Mappings": [] }, @@ -29,7 +29,7 @@ }, { "Path": "time-series-and-other-features.markdown", - "Name": "Time-Series and Other Features", + "Name": "Time Series and Other Features", "DiscussionId": "902e7192-9e86-4b98-9f8a-0df0b6c731f9", "Mappings": [] }, @@ -39,4 +39,4 @@ "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } -] \ No newline at end of file +] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown index 614bb65b55..96813409c9 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown @@ -1,19 +1,24 @@ -# Time-Series Design +# Time Series Design --- {NOTE: } -* A time-series is an array of Gorilla-encoded entries, that is related -to a single specific document. +* Time series are a sequence of numerical data associated with timestamps +and sorted chronologically. + +* The RavenDB Time Series feature is a document extension. It much faster +and more efficient for this purpose than storing time series data as JSON +within the document. * In this page: - * [Time-Series Structure](../../document-extensions/timeseries/design#time-series-structure) + * [Time Series Structure](../../document-extensions/timeseries/design#time-series-structure) * [Document Extension](../../document-extensions/timeseries/design#document-extension) + * [Time Series Entries](../../document-extensions/timeseries/design#time-series-entries) * [The `HasTimeSeries` Flag](../../document-extensions/timeseries/design#the--flag) * [Segmentation](../../document-extensions/timeseries/design#segmentation) - * [Time-Series Entries](../../document-extensions/timeseries/design#time-series-entries) - * [Updating Time-Series](../../document-extensions/timeseries/design#updating-time-series) + * [Compression](../../document-extensions/timeseries/design#compression) + * [Updating Time Series](../../document-extensions/timeseries/design#updating-time-series) * [Document Change](../../document-extensions/timeseries/design#document-change) * [Success](../../document-extensions/timeseries/design#success) * [No Conflicts](../../document-extensions/timeseries/design#no-conflicts) @@ -23,25 +28,43 @@ to a single specific document. --- -{PANEL: Time-Series Structure} +{PANEL: Time Series Structure} --- #### Document Extension -Each time-series belongs to, or _extends_, one particular document. The -document and the time-series reference each other through: +Each time series belongs to, or _extends_, one particular document. The +document and the time series reference each other through: + +* A **reference to the time series** in the document's metadata. + The time series' **name** is kept in the document's metadata. + The time series' **data** is stored in a separate location. +* A **reference to the document** in the time series data. + +--- + +#### Time Series Entries + +Each time series entry is composed of: + +* `TimeSeriesEntry` + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `Timestamp` | DateTime (UTC) | The time of the event or data represented by the entry. Time is measured up to millisecond resolution. | + | `Tag` | string | An optional tag for an entry. Can be any string up to 255 bytes. Possible uses for the tag: descriptions or metadata for individual entries; storing a document id, which can then be referenced when querying a time series. This is the only component of the entry that is not numerical. | + | `Values` | double[] | An array of up to 32 `double` values | -* A **reference to the time-series** in the document's metadata. - The time-series' **name** is kept in the document's metadata. - The time-series' **data** is stored in a different location. -* A **reference to the document** in the time-series data. +Doubles with higher precision - i.e. more digits after the decimal point - +are much less compressible. In other words `1.234` takes up more space +than `1,234`. --- #### The `HasTimeSeries` Flag -* When a document has one or more time-series, RavenDB automatically adds +* When a document has one or more time series, RavenDB automatically adds a `HasTimeSeries` flag in the document's metadata under `@flags`: {CODE-BLOCK: JSON} @@ -50,85 +73,85 @@ document and the time-series reference each other through: "@metadata": { "@collection": "Users", "@timeseries": [ - "my time-series" + "my time series" ] "@flags": "HasTimeSeries" } } {CODE-BLOCK/} -* When all time-series are removed from a document, RavenDB +* When all time series are removed from a document, RavenDB automatically removes the flag. --- #### Segments -At the server storage level, time-series data is divided into **segments**. +At the server storage level, time series data is divided into **segments**. * Segments contain a number of consecutive entries from the same -time-series. +time series. * Segments have a maximum size of 2 kB. * The 2 kb limit means that a segment can only contain up to 32k entries, -so a time-series with more than 32k entries will always be stored in +so a time series with more than 32k entries will always be stored in multiple segments. * In practice, segments usually contain far fewer than 32k entries, the amount depends on the size of the entries (after compression). * As an example - in the [Northwind sample dataset](../../studio/database/tasks/create-sample-data), - the _Companies_ documents all have a time-series called _StockPrice_. - These time-series are stored in segments that have ~10-20 entries each. -* If two consecutive entries are more than 25 days apart, they will -always be stored in a separate segments. - * To be exact, the maximum possible gap between entries in the - same segment is `int.MaxValue` milliseconds, or ~24.86 days. + the _Companies_ documents all have a time series called _StockPrice_. + These time series are stored in segments that have ~10-20 entries each. +* The maximum gap between the first and last entries in a segment is +is ~24.86 days (`int.MaxValue` milliseconds). So if an entry is 24.86 days +or later than the first entry in the current segment, it will become the +first entry in a new segment. A consquence of this is that in a sparse time +series segments can be significantly smaller than 2 kB. + +Segments also store the aggregate values that summarize the data they +contain, such as the averages of entry values. For this reason, it's +often useful to reference individual segments in indexes and queries. +Read more about how to use segments [here](../../document-extensions/timeseries/indexing#object) --- -#### Time-Series Entries +#### Compression -Each time-series entry is composed of: - -* `TimeSeriesEntry` - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `Timestamp` | DateTime (UTC) | The time of the event or data represented by the entry. For time-series, time is measured up to millisecond resolution. | - | `Tag` | string | An optional tag for an entry. Can be any string up to 255 bytes. Possible uses for the tag: descriptions or metadata for individual entries; storing a document id, which can then be referenced when querying a time-series. This is the only component of the entry that is not numerical. | - | `Values` | double[] | An array of up to 32 `double` values | +Time series data is stored using a format called [Gorilla compression](https://www.vldb.org/pvldb/vol8/p1816-teller.pdf). +On top of the Gorilla compression, the time series segments are compressed +using the [Lz4 algorithm](https://lz4.github.io/lz4/). {PANEL/} -{PANEL: Updating Time-Series} +{PANEL: Updating Time Series} --- #### Document Change * **Name Change** - **Creating** or **removing** a time-series adds or removes its name + **Creating** or **removing** a time series adds or removes its name from the metadata of the document it extends. This modification counts as document-change event, and so it triggers processes such as revisions. * **Data Updates** - Modifying time-series data does **not** invoke a document-change event, - as long as it doesn't create a new time-series or remove an existing one. + Modifying time series data does **not** invoke a document-change event, + as long as it doesn't create a new time series or remove an existing one. --- #### Success -Updating a time-series is designed to succeed without causing a concurrency conflict. -As long as the document it extends exists, updating a time-series will always succeed. +Updating a time series is designed to succeed without causing a concurrency conflict. +As long as the document it extends exists, updating a time series will always succeed. --- #### No Conflicts -Time-series actions do not cause conflicts. +Time series actions do not cause conflicts. -**Time-series updated concurrently by multiple cluster nodes**: +**Time series updated concurrently by multiple cluster nodes**: -* When a time-series' data is replicated by multiple nodes, the data +* When a time series' data is replicated by multiple nodes, the data from all nodes is merged into a single series. * When multiple nodes append **different values** at the same timestamp: * If the nodes try to append a **different number of values** for the same @@ -142,9 +165,9 @@ from all nodes is merged into a single series. * If an existing value at a certain timestamp is deleted by one node and updated by another node, the deletion is applied. -**Time-series update By multiple clients of the same node**: +**Time series update By multiple clients of the same node**: -* When a time-series' value at a certain timestamp is appended by +* When a time series' value at a certain timestamp is appended by multiple clients more or less simultaneously, RavenDB uses the last-write strategy. * When an existing value at a certain timestamp is deleted by a client @@ -155,8 +178,8 @@ strategy. #### Transactions -When a session transaction that includes a time-series modification -fails for any reason, the time-series modification is reverted. +When a session transaction that includes a time series modification +fails for any reason, the time series modification is reverted. {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown index acdc6074e9..1ff3923bcc 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown @@ -1,19 +1,19 @@ -# Time-Series Indexing +# Time Series Indexing --- {NOTE: } -Time-series indexes are used to index time-series data, as opposed to document fields. -The API for creating time-series indexes is very similar to (and inherits from) the +Time series indexes are used to index time series data, as opposed to document fields. +The API for creating time series indexes is very similar to (and inherits from) the API for [creating document indexes](../../indexes/creating-and-deploying). {INFO: } -Unlike document indexes, time-series indexes currently support only LINQ syntax. +Unlike document indexes, time series indexes currently support only LINQ syntax. JavaScript syntax is not supported. RavenDB does not create [dynamic](../../studio/database/indexes/indexes-overview#indexes-types) -time-series indexes in response to queries - time-series indexes are only be created as +time series indexes in response to queries - time series indexes are only be created as [static](../../studio/database/indexes/indexes-overview#indexes-types) indexes from a client application or from the Studio. {INFO/} @@ -32,12 +32,12 @@ client application or from the Studio. {PANEL: Syntax } -The are two main ways to create a time-series index: +The are two main ways to create a time series index: 1. Create a class that inherits from * [`AbstractTimeSeriesIndexCreationTask`](../../document-extensions/timeseries/indexing#section) for [map](../../indexes/map-indexes) and - [map-reduce](../../indexes/map-reduce-indexes) time-series indexes. - * [`AbstractMultiMapMultiMapIndexCreationTask`](../../document-extensions/timeseries/indexing#section-1) for [multi-map](../../indexes/multi-map-indexes) time-series indexes. + [map-reduce](../../indexes/map-reduce-indexes) time series indexes. + * [`AbstractMultiMapMultiMapIndexCreationTask`](../../document-extensions/timeseries/indexing#section-1) for [multi-map](../../indexes/multi-map-indexes) time series indexes. 2. Create a [`TimeSeriesIndexDefinition`](../../document-extensions/timeseries/indexing#section-2). @@ -57,7 +57,7 @@ public abstract class AbstractTimeSeriesIndexCreationTask : IEnumerable>> map); } -// Index only time-series that belong to documents +// Index only time series that belong to documents // of a specified type public class AbstractTimeSeriesIndexCreationTask { } @@ -67,8 +67,8 @@ public class AbstractTimeSeriesIndexCreationTask { } | Method | Parameters | Description | | - | - | - | -| `AddMap()` | `string timeseries`, `Expression map` | Sets a map function for all time-series in the database with specified name (the first parameter) | -| `AddMapForAll()` | `Expression map` | Sets a map function for all time-series in the database | +| `AddMap()` | `string timeseries`, `Expression map` | Sets a map function for all time series in the database with specified name (the first parameter) | +| `AddMapForAll()` | `Expression map` | Sets a map function for all time series in the database | See the example [below](../../document-extensions/timeseries/indexing#section-3). @@ -94,8 +94,8 @@ public abstract class AbstractMultiMapTimeSeriesIndexCreationTask | Method | Parameters | Description | | - | - | - | -| `AddMap()` | `string timeseries`, `Expression map` | Sets a map function for all time-series with the specified name (the first parameter) that belong to documents with the type `TSource` | -| `AddMapForAll()` | `Expression map` | Sets a map function for all time-series that belong to documents with either the type `TBase` _or_ any type that inherits from `TBase` | +| `AddMap()` | `string timeseries`, `Expression map` | Sets a map function for all time series with the specified name (the first parameter) that belong to documents with the type `TSource` | +| `AddMapForAll()` | `Expression map` | Sets a map function for all time series that belong to documents with either the type `TBase` _or_ any type that inherits from `TBase` | See the example [below](../../document-extensions/timeseries/indexing#section-4). @@ -109,7 +109,7 @@ public class TimeSeriesIndexDefinition : IndexDefinition For now, `TimeSeriesIndexDefinition` is functionally equivalent to the [normal `IndexDefinition`](../../indexes/creating-and-deploying#using-maintenance-operations). -Using it for time-series indexes is recommended - it exists in case additional functionality is +Using it for time series indexes is recommended - it exists in case additional functionality is added in future versions of RavenDB. See the example [below](../../document-extensions/timeseries/indexing#samples). @@ -118,7 +118,7 @@ See the example [below](../../document-extensions/timeseries/indexing#samples). ### `TimeSeriesSegment` object -When indexing time-series entries, they are accessed through a subdivision of the time-series +When indexing time series entries, they are accessed through a subdivision of the time series called a _segment_. In general the LINQ syntax looks somethintg like this: {CODE-BLOCK: sql} @@ -126,13 +126,13 @@ from segment in timeseries from entry in segment {CODE-BLOCK/} -Segments are useful because they can be referenced within time-series indexes to access the entries in +Segments are useful because they can be referenced within time series indexes to access the entries in the segment, as well as some aggregate values that summarize the data in the segment: | Property | Type | Description | | - | - | - | -| DocumentId | string | The [ID](../../client-api/document-identifiers/working-with-document-identifiers) of the document this time-series belongs to | -| Name | string | The name of the time-series this segment belongs to | +| DocumentId | string | The [ID](../../client-api/document-identifiers/working-with-document-identifiers) of the document this time series belongs to | +| Name | string | The name of the time series this segment belongs to | | Min | double[] | The smallest values from all entries in the segment. The places in this array correspond to the | | Max | double[] | The largest values from all entries in the segment | | Sum | double[] | The sums of values from all entries in the segment. The first `Sum` is the sum of all first values, and so on. | @@ -158,7 +158,7 @@ public class TimeSeriesEntry {PANEL: Samples}
    -Creating a time-series index using `TimeSeriesIndexDefinition`: +Creating a time series index using `TimeSeriesIndexDefinition`: {CODE indexes_IndexDefinition@DocumentExtensions\TimeSeries\Indexing.cs /} #### `AbstractTimeSeriesIndexCreationTask` @@ -167,10 +167,10 @@ Creating a time-series index using `TimeSeriesIndexDefinition`: #### `AbstractMultiMapTimeSeriesIndexCreationTask` {CODE indexes_MultiMapCreationTask@DocumentExtensions\TimeSeries\Indexing.cs /} -#### Map-Reduce Time-Series Index +#### Map-Reduce Time Series Index {CODE indexes_MapReduce@DocumentExtensions\TimeSeries\Indexing.cs /} -Yet another way to create a time-series index is to create a +Yet another way to create a time series index is to create a `TimeSeriesIndexDefinitionBuilder`, and use it to create a `TimeSeriesIndexDefinition`. {CODE indexes_IndexDefinitionBuilder@DocumentExtensions\TimeSeries\Indexing.cs /} @@ -187,5 +187,5 @@ Yet another way to create a time-series index is to create a [Map-Reduce Indexes](../../indexes/map-reduce-indexes) [Indexing Related Documents](../../indexes/indexing-related-documents) -### Client-API** +### Client-API [Working with Document IDs](../../client-api/document-identifiers/working-with-document-identifiers) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown index 2e08582aed..b611a63b1f 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown @@ -1,19 +1,19 @@ -# Time-Series Rollup and Retention +# Time Series Rollup and Retention --- {NOTE: } -Many time-series applications produce massive amounts of data at a steady rate. -**Time-Series Policies** help you to manage your data in two ways: +Many time series applications produce massive amounts of data at a steady rate. +**Time Series Policies** help you to manage your data in two ways: -* Creating **Rollups** - summarizing time-series data by aggregating it into the -form of a new, lower resolution time-series. +* Creating **Rollups** - summarizing time series data by aggregating it into the +form of a new, lower resolution time series. -* Limiting a time-series' **Retention** - the amount of time that time-series data +* Limiting a time series' **Retention** - the amount of time that time series data is kept before being deleted. * In this page: - * [Time-Series Policies](../../document-extensions/timeseries/rollup-and-retention#time-series-policies) + * [Time Series Policies](../../document-extensions/timeseries/rollup-and-retention#time-series-policies) * [Usage Flow and Syntax](../../document-extensions/timeseries/rollup-and-retention#usage-flow-and-syntax) * [Samples](../../document-extensions/timeseries/rollup-and-retention#samples) @@ -21,14 +21,14 @@ is kept before being deleted. --- -{PANEL: Time-Series Policies} +{PANEL: Time Series Policies} #### What are Rollups? -A **rollup** is a time-series that summarizes the data from another time-series -by dividing time-series entries into set units of time (like a second or a week). -Each entry in the rollup time-series represents one of those units, and the data -from that unit in the original time-series is aggregated into six values: +A **rollup** is a time series that summarizes the data from another time series +by dividing time series entries into set units of time (like a second or a week). +Each entry in the rollup time series represents one of those units, and the data +from that unit in the original time series is aggregated into six values: * *First* - the value of the first entry in the unit. * *Last* - the value of the last entry. @@ -37,21 +37,21 @@ from that unit in the original time-series is aggregated into six values: * *Sum* - the sum of all the values in the unit. * *Count* - the total number of entries in the unit. -This results in a much more compact time-series that still contains useful -information about the original time-series (also called the "named" or "raw" -time-series). Rollup time-series are created automatically according to +This results in a much more compact time series that still contains useful +information about the original time series (also called the "named" or "raw" +time series). Rollup time series are created automatically according to **rollup policies**. Rollup policies apply to all documents in a collection, and each collection can have multiple policies. Let's look at an example of rollup data:
    -!["Rollup time-series entries"](images/rollup-1.png "A rollup time-series' entries") +!["Rollup time series entries"](images/rollup-1.png "A rollup time series' entries") **1) Values:** Each group of six values represents one value in the original entries. If the raw -time-series has *n* values per entry, the rollup time-series will have _6*n_ per entry: +time series has *n* values per entry, the rollup time series will have _6*n_ per entry: the first six summarize the first raw value, the next six summarize the next raw value, -and so on. Because time-series entries are limited to 32 values, rollups are limited to +and so on. Because time series entries are limited to 32 values, rollups are limited to the first five values of an original time series entry, or 30 aggregate values. **2) Timestamp:** @@ -59,7 +59,7 @@ The aggregation spans always begin at a round number of one of these time units: second, minute, hour, day, week, month, or year. So the span includes all entries starting at a round number of time units, and ending at the next round number *minus one millisecond* (since milliseconds are the minimal resolution in RavenDB -time-series). The timestamp for a rollup entry is the beginning of the span it +time series). The timestamp for a rollup entry is the beginning of the span it represents. For example, if the aggregation span is one day, the spans will start at times like: @@ -68,20 +68,20 @@ For example, if the aggregation span is one day, the spans will start at times l `2020-01-03 00:00:00` etc. **3) Name:** -A rollup time-series' name has this format: -`"@"` -It is a combination of the name of the raw time-series and the name of the -time-series policy separated by a `@` character - in the image above these are +A rollup time series' name has this format: +`"@"` +It is a combination of the name of the raw time series and the name of the +time series policy separated by a `@` character - in the image above these are "Heartrate & Blood Pressure" and "ByMinute" respectively. For this reason, neither -a time-series name nor a policy name can have the character `@` in it. +a time series name nor a policy name can have the character `@` in it. {PANEL/} {PANEL: Usage Flow and Syntax} -To configure time-series policies for one or more collections: +To configure time series policies for one or more collections: -* Create time-series policy [objects](../../document-extensions/timeseries/rollup-and-retention#the-two-types-of-time-series-policy). +* Create time series policy [objects](../../document-extensions/timeseries/rollup-and-retention#the-two-types-of-time-series-policy). * Use those to populate `TimeSeriesCollectionConfiguration` [objects](../../document-extensions/timeseries/rollup-and-retention#and-) for each collection you want to configure. * Use _those_ to populate a `TimeSeriesConfiguration` [object](../../document-extensions/timeseries/rollup-and-retention#and-) @@ -91,7 +91,7 @@ to send the new configurations to the server.
    ###Syntax -####The two types of time-series policy: +####The two types of time series policy: {CODE-BLOCK: csharp} // Rollup policies @@ -116,16 +116,16 @@ public class RawTimeSeriesPolicy : TimeSeriesPolicy | Property | Description | | - | - | -| `Name` | This `string` is used to create the names of the rollup time-series created by this policy.
    `Name` is added to the name of the raw time-series - with `@` as a separator - to create the name of the resulting rollup time-series. | -| `RetentionTime` | Time-series entries older than this time span (see `TimeValue` below) are automatically deleted. | -| `AggregationTime` | The time-series data being rolled up is divided at round time units, into parts of this length of time. Each of these parts is aggregated into an entry of the rollup time-series. | +| `Name` | This `string` is used to create the names of the rollup time series created by this policy.
    `Name` is added to the name of the raw time series - with `@` as a separator - to create the name of the resulting rollup time series. | +| `RetentionTime` | Time series entries older than this time span (see `TimeValue` below) are automatically deleted. | +| `AggregationTime` | The time series data being rolled up is divided at round time units, into parts of this length of time. Each of these parts is aggregated into an entry of the rollup time series. | `RawTimeSeriesPolicy`: | Property | Description | | - | - | -| `Name` | This `string` is used to create the names of the rollup time-series created by this policy.
    `Name` is added to the name of the raw time-series - with `@` as a separator - to create the name of the resulting rollup time-series. | -| `RetentionTime` | Time-series entries older than this time span (see `TimeValue` below) are automatically deleted. | +| `Name` | This `string` is used to create the names of the rollup time series created by this policy.
    `Name` is added to the name of the raw time series - with `@` as a separator - to create the name of the resulting rollup time series. | +| `RetentionTime` | Time series entries older than this time span (see `TimeValue` below) are automatically deleted. |
    ####The `TimeValue` struct @@ -143,7 +143,7 @@ public struct TimeValue `Each of the above `TimeValue` methods returns a `TimeValue` object representing a whole number of the specified time units. These are passed as the aggregation and -retention spans of time-series policies. +retention spans of time series policies. {INFO: } The main reason we use `TimeValue` rather than something like `TimeSpan` is that @@ -170,12 +170,12 @@ public class TimeSeriesConfiguration | Property | Description | | - | - | -| `Disabled` | If set to `true`, rollup processes will stop, and time-series data will not be deleted by retention policies. | +| `Disabled` | If set to `true`, rollup processes will stop, and time series data will not be deleted by retention policies. | | `Policies` | Populate this `List` with your rollup policies | -| `RawPolicy` | The `RawTimeSeriesPolicy`, the retention policy for the raw time-series | +| `RawPolicy` | The `RawTimeSeriesPolicy`, the retention policy for the raw time series | | `Collections` | Populate this `Dictionary` with the `TimeSeriesCollectionConfiguration`s and the names of the corresponding collections. |
    -####The Time-Series Configuration Operation +####The Time Series Configuration Operation {CODE-BLOCK: csharp} public ConfigureTimeSeriesOperation(TimeSeriesConfiguration configuration); @@ -187,7 +187,7 @@ Pass this your `TimeSeriesConfiguration`, see usage example below. How to use an {PANEL: Samples} -How to create time-series policies for a collection and pass them to the server: +How to create time series policies for a collection and pass them to the server: {CODE rollup_and_retention_0@DocumentExtensions\TimeSeries\RollupAndRetention.cs /} @@ -198,12 +198,12 @@ How to access a rollup time series: ## Related articles ###Studio -* [Time-Series Interface in Studio]() +[Time Series Interface in Studio]() -###Time-Series -* [Time Series Overview](../../document-extensions/timeseries/overview) -* [API Overview](../../document-extensions/timeseries/client-api/api-overview) +###Time Series +[Time Series Overview](../../document-extensions/timeseries/overview) +[API Overview](../../document-extensions/timeseries/client-api/api-overview) ###Client-API -* [What Are Operations?](../../client-api/operations/what-are-operations) +[What Are Operations?](../../client-api/operations/what-are-operations) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown index f0d9d2b236..eced9f7673 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown @@ -1,9 +1,9 @@ -# Time-Series and Other Features +# Time Series and Other Features --- {NOTE: } -* This page describes how time-series interact with various other RavenDB +* This page describes how time series interact with various other RavenDB features. * In this page: @@ -16,16 +16,16 @@ features. --- {PANEL: General Features} -Most RavenDB features apply to time-series in ways analogous to other types of +Most RavenDB features apply to time series in ways analogous to other types of data and document extensions. * The Document Session [tracks](../../client-api/session/what-is-a-session-and-how-does-it-work#tracking-changes) -changes to time-series data. +changes to time series data. * The [Changes API](../../client-api/changes/what-is-changes-api) service -is triggered by changes to time-series data. -* Learn about how to **index** time-series [here](../../document-extensions/timeseries/indexing). -* Learn about how to **query** time-series data [here](../../document-extensions/timeseries/querying/queries-overview-and-syntax). -* Learn how to **include** time-series with `session.Load()` and in queries +is triggered by changes to time series data. +* Learn about how to **index** time series [here](../../document-extensions/timeseries/indexing). +* Learn about how to **query** time series data [here](../../document-extensions/timeseries/querying/queries-overview-and-syntax). +* Learn how to **include** time series with `session.Load()` and in queries [here](../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview). {PANEL/} @@ -35,7 +35,7 @@ property that can be used to export chosen database items to an external file or to import database items from an existing file into the database. To [configure smuggler](../../client-api/smuggler/what-is-smuggler#databasesmugglerexportoptions) -to handle time-series, add the paramater `DatabaseItemType.TimeSeries` +to handle time series, add the paramater `DatabaseItemType.TimeSeries` to the `OperateOnTypes` object. {CODE-BLOCK: csharp} @@ -47,10 +47,10 @@ OperateOnTypes = DatabaseItemType.Documents {PANEL: Ongoing Tasks} "[Ongoing tasks](../../studio/database/tasks/ongoing-tasks/general-info)" are various automatic processes that operate on an entire database. Some of these -apply to time-series data and some do not. +apply to time series data and some do not.
    -#### Tasks that apply to time-series +#### Tasks that apply to time series * [External replication](../../server/ongoing-tasks/external-replication) creates a complete copy of a database, including documents and their extensions. @@ -59,15 +59,15 @@ to external replication except that the process is initiated by the destination server rather than the source server. * [Backup](../../client-api/operations/maintenance/backup/backup)s save the whole database at a certain point in time and can be used to restore the -database later. All kinds of backups include time-series data: "logical"-backup +database later. All kinds of backups include time series data: "logical"-backup and snapshot, full and incremental. -#### Cannot be applied to time-series +#### Cannot be applied to time series * [ETL](../../server/ongoing-tasks/etl/basics) is a type of task that _extracts_ some portion of the data from a database, _transforms_ it according to a script, and _loads_ it to some external target. Neither the **RavenDB ETL** nor the -**SQL ETL** tasks can access or operate on time-series data. +**SQL ETL** tasks can access or operate on time series data. * [Data Subscriptions](../../client-api/data-subscriptions/what-are-data-subscriptions) send data to "worker" clients in batches. {PANEL/} @@ -78,40 +78,64 @@ send data to "worker" clients in batches. versions of a document. They can be saved manually or by setting a policy for a collection that creates them automatically. -Revisions do not preserve time-series data, and editing a time-series does +Revisions do not preserve time series data, and editing a time series does not trigger the creation of a new revision the way editing a document would. -This is because time-series are designed so for new entries to be added +This is because time series are designed so for new entries to be added quickly and often, and creating revisions each time would significantly slow this process down. -However, revisions _can_ be triggered / created manually if a _new_ time-series -is added to the document, or an existing time-series is deleted. (Remember that -a time-series is deleted by deleting all of its entries). +However, revisions _can_ be triggered / created manually if a _new_ time series +is added to the document, or an existing time series is deleted. (Remember that +a time series is deleted by deleting all of its entries).
    #### The   `@timeseries-snapshot` -While revisions don't contain the time-series data themselves, they do contain -few details about the time-series the document had at the time. These details +While revisions don't contain the time series data themselves, they do contain +few details about the time series the document had at the time. These details appear as though they are part of the document's metadata, but it's not really part of the document. When a revision is viewed in the studio, this -"time-series snapshot" looks like this: +"time series snapshot" looks like this: ![](images/TSSnapshot.png) -This time-series snapshot can also be accessed by loading a revision in the -client. This is the general JSON format of the time-series snapshot: +This time series snapshot can also be accessed by loading a revision in the +client. This is the general JSON format of the time series snapshot: {CODE-BLOCK: json} "@metadata": { ... "@timeseries-snapshot": { - "": { + "": { "Count": , "Start": "", "End": "" }, - "": { ... } + "": { ... } } {CODE-BLOCK/} {PANEL/} + +## Related articles + +### Time Series +[Time Series Overview](../../document-extensions/timeseries/overview) +[Include Time Series](../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview) +[Time Series Indexing](../../document-extensions/timeseries/indexing) +[Querying Time Series](../../document-extensions/timeseries/querying/queries-overview-and-syntax) + +### Client-API +[Session Entity Tracking](../../client-api/session/what-is-a-session-and-how-does-it-work#tracking-changes) +[Changes API](../../client-api/changes/what-is-changes-api) +[Smuggler](../../client-api/smuggler/what-is-smuggler) +[Data Subscriptions](../../client-api/data-subscriptions/what-are-data-subscriptions) +[Revisions](../../client-api/session/revisions/what-are-revisions) + +### Server +[External replication](../../server/ongoing-tasks/external-replication) +[Pull replication](../../server/ongoing-tasks/pull-replication) +[Backup](../../client-api/operations/maintenance/backup/backup) +[ETL](../../server/ongoing-tasks/etl/basics) + +### Studio +[Ongoing tasks](../../studio/database/tasks/ongoing-tasks/general-info) From 686267e46ff6f42c3d45d77b1cf5dfda4f9eeaa5 Mon Sep 17 00:00:00 2001 From: morhilai Date: Wed, 24 Jun 2020 15:13:59 +0300 Subject: [PATCH 51/56] RDoc-1703_TimeSeries cosmetics --- .../document-extensions/time-series.markdown | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/time-series.markdown b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/time-series.markdown index 827423ee91..650372dc18 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/time-series.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/studio/database/document-extensions/time-series.markdown @@ -1,15 +1,15 @@ -# Time-Series +# Time Series --- {NOTE: } -Time-series are sets of numeric data associated with timestamps and ordered by time. The studio interface -allows you to edit, query and index time-series data, as well as view it as list of entries or as a graph. +Time series are sets of numeric data associated with timestamps and ordered by time. The studio interface +allows you to edit, query and index time series data, as well as view it as list of entries or as a graph. * In this page: * [Document View](../../../studio/database/document-extensions/time-series#document-view) - * [Create New Time-Series / New Entry](../../../studio/database/document-extensions/time-series#create-new-time-series) - * [Time-Series View](../../../studio/database/document-extensions/time-series#time-series-view) + * [Create New Time Series / New Entry](../../../studio/database/document-extensions/time-series#create-new-time-series) + * [Time Series View](../../../studio/database/document-extensions/time-series#time-series-view) * [Edit Entry](../../../studio/database/document-extensions/time-series#editing-an-entry) * [Delete Range](../../../studio/database/document-extensions/time-series#deleting-a-range-of-entries) * [Graphical Display & Querying](../../../studio/database/document-extensions/time-series#querying-time-series) @@ -24,29 +24,29 @@ allows you to edit, query and index time-series data, as well as view it as list ![](images/document-time-series.png) {WARNING: Actions} -1. To view a documents' time series, go to its page and click the time-series tab on the right. +1. To view a documents' time series, go to its page and click the time series tab on the right. 2. Allows you to create a new time series, see more below. 3. Allows you to view the time series data. {WARNING/} {INFO: Info} -1. Displays the time-series': +1. Displays the time series': * Name * The number of entries it contains -* The range of time from the first to the last entry in the time-series +* The range of time from the first to the last entry in the time series {INFO/} --- -#### Create new Time-Series (by Creating a First Entry) +#### Create new Time Series (by Creating a First Entry) ![](images/new-entry.png) {WARNING: } -A time-series must contain at least one entry when it is created (and a time-series is deleted when all +A time series must contain at least one entry when it is created (and a time series is deleted when all of its entries are deleted). -1. Create the new time-series' name. +1. Create the new time series' name. 2. Select a timestamp for the new entry. 3. Create an optional tag. 4. Specify one or more numerical values. @@ -54,17 +54,17 @@ of its entries are deleted). {PANEL/} -{PANEL: Time-Series View} +{PANEL: Time Series View} ![](images/time-series-view.png) {WARNING: } -1. Create a new entry to add to this time-series. +1. Create a new entry to add to this time series. 2. Delete all entries from a specified range of time. {WARNING/} {INFO: } -Displays the time-series entry's: +Displays the time series entry's: * Timestamp * Optional tag `string` @@ -91,7 +91,7 @@ Displays the time-series entry's: ![](images/delete-range.png) {WARNING: } -To specify a range of time-series entries: +To specify a range of time series entries: 1. Select the first entry's timestamp as the start of the range. 2. Specify a time value for the start of the range. Opens the menu shown below. 3. Select the last entry's timestamp as the start of the range. @@ -101,12 +101,12 @@ To specify a range of time-series entries: {PANEL/} -{PANEL: Querying Time-Series} +{PANEL: Querying Time Series} ![](images/time-series-query.png) {INFO: } -1. A simple query for all time-series in the collection `Companies` and the name `StockPrice`. +1. A simple query for all time series in the collection `Companies` and the name `StockPrice`. 2. A list of time series that satisfy the query, with: * The ID of the associated document. @@ -115,20 +115,20 @@ To specify a range of time-series entries: {WARNING: } 1. Run the query. -2. Go to this series' time-series view, discussed above. +2. Go to this series' time series view, discussed above. 3. Go to graph view, shown below. {WARNING/} --- -#### Time-Series Graph View +#### Time Series Graph View ![](images/time-series-graph.png) {WARNING: } 1. Toggle a certain value in the graph. 2. Hover your mouse over the graph to view the data of one particular entry. -3. This bottom display shows the entire time-series. Drag and resize the pink box to select +3. This bottom display shows the entire time series. Drag and resize the pink box to select the range of time displayed in the main graph above. {WARNING/} From 2a6d5b946552606444c6b4eb31a428f9a45f9a0a Mon Sep 17 00:00:00 2001 From: reebhub Date: Wed, 24 Jun 2020 15:42:57 +0300 Subject: [PATCH 52/56] fix to compilation error --- .../client-api/session-methods/remove-ts-data.markdown | 4 ++-- .../store-operations/get-TS-data/get-TS-data.markdown | 2 +- .../get-TS-data/get-multiple-TS-data.markdown | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown index a38d70df78..3bd043f7bf 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown @@ -100,11 +100,11 @@ There are two `TimeSeriesFor.Remove` methods: In this sample we use the [first overload](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-1) to remove a single entry from a time series. -{CODE timeseries_region_Remove-TimeSeriesFor-Single-Time Point@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +{CODE timeseries_region_Remove-TimeSeriesFor-Single-Time-Point@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} In this sample we use the [second overload](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-2) to remove a range of entries from a time series. -{CODE timeseries_region_TimeSeriesFor-Remove-Time Points-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +{CODE timeseries_region_TimeSeriesFor-Remove-Time-Points-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown index 1bc9417156..698ec9e9c6 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown @@ -69,7 +69,7 @@ time series. {PANEL: Usage Sample} * In this sample, we retrieve all the entries of a time series. - {CODE timeseries_region_Get-Single-Time Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE timeseries_region_Get-Single-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown index f77fd462ec..f9510b075d 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown @@ -70,7 +70,7 @@ multiple time series. {PANEL: Usage Sample} * In this sample, we retrieve chosen entries from two time series. - {CODE timeseries_region_Get-Multiple-Time Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE timeseries_region_Get-Multiple-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} From 41993ae4eb3e3999f74887c882a2008071c3f0e6 Mon Sep 17 00:00:00 2001 From: morhilai Date: Wed, 24 Jun 2020 16:17:27 +0300 Subject: [PATCH 53/56] RDoc-1703_TimeSeries fixed dead links --- .../timeseries/design.markdown | 15 +++++---------- .../timeseries/indexing.markdown | 6 +++++- .../timeseries/rollup-and-retention.markdown | 2 +- .../time-series-and-other-features.markdown | 8 ++++---- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown index 96813409c9..d5f833ed30 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown @@ -185,14 +185,9 @@ fails for any reason, the time series modification is reverted. ## Related articles **Studio Articles**: -[Studio Time Series Management]() +[Studio Time Series Management](../../studio/database/document-extensions/time-series) -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() +**Time Series Articles**: +[Time Series Overview](../../document-extensions/timeseries/overview) +[API Overview](../../document-extensions/timeseries/client-api/api-overview) +[Time Series and Other Features](../../document-extensions/timeseries/time-series-and-other-features) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown index 1ff3923bcc..fdbd108551 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown @@ -20,7 +20,7 @@ client application or from the Studio. * In this page: * [Syntax](../../document-extensions/timeseries/indexing#syntax) - * [`AbstractTimeSeriesIndexCreationTask`](../../document-extentions/timeseries/indexes#section) + * [`AbstractTimeSeriesIndexCreationTask`](../../document-extentions/timeseries/indexing#section) * [`AbstractMultiMapMultiMapIndexCreationTask`](../../document-extensions/timeseries/indexing#section-1) * [`TimeSeriesIndexDefinition`](../../document-extensions/timeseries/indexing#section-2) * [`TimeSeriesSegment` Object](../../document-extensions/timeseries/indexing#object) @@ -178,6 +178,10 @@ Yet another way to create a time series index is to create a ## Related articles +###Time Series +[Time Series Overview](../../document-extensions/timeseries/overview) +[API Overview](../../document-extensions/timeseries/client-api/api-overview) + ### Indexes [What are Indexes](../../indexes/what-are-indexes) [Creating and Deploying Indexes](../../indexes/creating-and-deploying) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown index b611a63b1f..1ce4e5f38d 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown @@ -198,7 +198,7 @@ How to access a rollup time series: ## Related articles ###Studio -[Time Series Interface in Studio]() +[Time Series Interface in Studio](../../studio/database/document-extensions/time-series) ###Time Series [Time Series Overview](../../document-extensions/timeseries/overview) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown index eced9f7673..7eda6486f0 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown @@ -7,10 +7,10 @@ features. * In this page: - * [General Features](../..document-extensions/timeseries/time-series-and-other-features#general-features) - * [Smuggler](../..document-extensions/timeseries/time-series-and-other-features#smuggler) - * [Ongoing Tasks](../..document-extensions/timeseries/time-series-and-other-features#ongoing-tasks) - * [Revisions](../..document-extensions/timeseries/time-series-and-other-features#revisions) + * [General Features](../../document-extensions/timeseries/time-series-and-other-features#general-features) + * [Smuggler](../../document-extensions/timeseries/time-series-and-other-features#smuggler) + * [Ongoing Tasks](../../document-extensions/timeseries/time-series-and-other-features#ongoing-tasks) + * [Revisions](../../document-extensions/timeseries/time-series-and-other-features#revisions) {NOTE/} --- From a0fc084c512f0b58f9784c43f83787720d965561 Mon Sep 17 00:00:00 2001 From: reebhub Date: Thu, 25 Jun 2020 08:39:43 +0300 Subject: [PATCH 54/56] RDoc-1703_TimeSeries Related articles & other links sweep --- .../client-api/TS-javascript-api.markdown | 33 ++++++----- .../client-api/api-overview.markdown | 31 +++++----- .../session-methods/append-ts-data.markdown | 30 +++++----- .../get-ts-data/get-ts-entries.markdown | 36 ++++++------ .../get-ts-data/get-ts-names.markdown | 25 +++++---- .../include-ts-overview.markdown | 27 ++++----- .../include-ts-data/with-raw-queries.markdown | 25 +++++---- .../with-session-load.markdown | 25 +++++---- .../with-session-query.markdown | 25 +++++---- .../session-methods/patch-ts-data.markdown | 30 +++++----- .../query-time-series/linq-queries.markdown | 29 +++++----- .../raw-rql-queries.markdown | 31 +++++----- .../session-methods/remove-ts-data.markdown | 30 +++++----- .../client-api/store-operations/.docs.json | 2 +- .../append-and-remove-TS-data.markdown | 25 +++++---- .../append-ts-data-in-bulk.markdown | 25 +++++---- .../get-TS-data/get-TS-data.markdown | 25 +++++---- .../get-TS-data/get-multiple-TS-data.markdown | 25 +++++---- .../store-operations/patch-TS-data.markdown | 35 ++++++------ .../timeseries/design.markdown | 28 ++++++---- .../timeseries/overview.markdown | 56 ++++++++++--------- .../aggregation-and-projection.markdown | 29 ++++++---- .../querying/choosing-query-range.markdown | 29 ++++++---- .../timeseries/querying/filtering.markdown | 29 ++++++---- .../querying/indexed-queries.markdown | 38 +++++++------ .../queries-overview-and-syntax.markdown | 41 ++++++++------ 26 files changed, 413 insertions(+), 351 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown index 658ba1bf09..4a6cca76b9 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown @@ -1,5 +1,4 @@ -# Time Series & JavaScript API ---- +# Time Series & JavaScript {NOTE: } @@ -106,15 +105,21 @@ Use this method to retrieve a range of time series entries. {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Time Series Overview** +[Time Series Overview](../../../document-extensions/timeseries/overview) + +**Studio Articles** +[Studio Time Series Management](../../../studio/database/document-extensions/time-series) + +**Patching Time Series Data** +[Patching in a Session](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) +[Patching Operation](../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchoperation) +[Patc By Query Operation](../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation) + +**Querying and Indexing** +[Time Series Querying](../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown index e21e722f3e..1cc28c2809 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown @@ -89,15 +89,15 @@ There are also functionalities unique to each interface. Use this operation to **append and remove time series data**. You can bundle a series of Append and/or Remove operations in a list and execute them in a single call. -* [GetTimeSeriesOperation](../../../document-extensions/timeseries/client-api/store-operations/get-TS-data) +* [GetTimeSeriesOperation](../../../document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data) Use this operation to **retrieve time series data**. `GetTimeSeriesOperation` has an advantage over `session.TimeSeries.Get`, in allowing you to retrieve data from multiple time series of a selected document in a single call. * [ConfigureTimeSeriesOperation](../../../document-extensions/timeseries/rollup-and-retention) Use this operation to **manage time series roll-up and retention policies**. -* [PatchOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-a-document) +* [PatchOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data#patchoperation) Use this operation to **patch time series data to a single document**. -* [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data/patch-queried-documents) +* [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data#patchbyqueryoperation) Use this operation to **patch time series data to documents located by a query**. * [BulkInsert.TimeSeriesFor.Append](../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk) @@ -106,15 +106,16 @@ There are also functionalities unique to each interface. {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Time Series Overview** +[Time Series Overview](../../../document-extensions/timeseries/overview) + +**Studio Articles** +[Studio Time Series Management](../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown index 6bc2cb0dde..b72bc31d40 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown @@ -96,8 +96,9 @@ There are two `TimeSeriesFor.Append` methods: * Open a session. * Create an instance of `TimeSeriesFor`. - * Either pass `TimeSeriesFor` an explicit document ID, -or- - Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + * Either pass `TimeSeriesFor` an explicit document ID, + -or- + Pass it an [entity tracked by the session](../../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../../client-api/session/querying/how-to-query) or from [session.Load](../../../../client-api/session/loading-entities#load). * Pass `TimeSeriesFor` the time series name. * Call `TimeSeriesFor.Append`. * Call `session.SaveChanges` for the action to take effect on the server. @@ -119,15 +120,16 @@ There are two `TimeSeriesFor.Append` methods: {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown index 0663c9e00e..701388df4d 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown @@ -33,9 +33,9 @@ Get a range of time series entries using `TimeSeriesFor.Get`. Use `TimeSeriesFor.Get` to get a range of a document's time series entries. -* `TimeSeriesFor.Get` retrieves a single document's time series data. - * To retrieve multiple documents' time series' data, - use the [GetTimeSeriesOperaion](../../../../document-extensions/timeseries/client-api/store-operations/get-TS-data) +* `TimeSeriesFor.Get` retrieves a range of entries from a single time series. + * To retrieve multiple series' data, + use the [GetMultipleTimeSeriesOperation](../../../../../document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data) document-store operation instead. * You can slice retrieved data to **pages** to get time series entries gradually, one custom-size page at a time. @@ -81,8 +81,9 @@ public class TimeSeriesEntry * Open a session. * Create an instance of `TimeSeriesFor`. - * Either pass `TimeSeriesFor` an explicit document ID, -or- - Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + * Either pass `TimeSeriesFor` an explicit document ID, + -or- + Pass it an [entity tracked by the session](../../../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../../../client-api/session/querying/how-to-query) or from [session.Load](../../../../../client-api/session/loading-entities#load). * Pass `TimeSeriesFor` the time series name. * Call `TimeSeriesFor.Get`. @@ -99,15 +100,16 @@ public class TimeSeriesEntry {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown index 1e9785325a..995af18dfd 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown @@ -62,15 +62,16 @@ to get a list of its time series' names. {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown index 005723740f..245b58de37 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown @@ -4,7 +4,7 @@ {NOTE: } -You can [Include](../../../client-api/session/loading-entities#load-with-includes) +You can [Include](../../../../../client-api/session/loading-entities#load-with-includes) documents' time series data while retrieving the documents. The included time series data is held by the client's session, so it can be handed to the user the instant it is required - @@ -18,15 +18,16 @@ with no additional trip to the server. {NOTE/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown index e6664b439e..c201c748b0 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown @@ -72,15 +72,16 @@ The entries we Get after the query, are retrieved {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown index d895d5aa93..c6309a4bc2 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown @@ -76,15 +76,16 @@ The entries we Get after including the time series, are retrieved {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown index c55cb8fa8e..4aef70ee2a 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown @@ -64,15 +64,16 @@ The entries we Get after including the time series, are retrieved {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown index f1b627ac32..2d80623169 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown @@ -64,7 +64,7 @@ * Call `session.Advanced.Defer` and pass it a `PatchCommandData` instance. * Pass the `PatchCommandData` constructor method - * the document ID - * the change vector or `null`) + * the change vector (or `null`) * a `PatchRequest` instance with a Java Script that appends or removes time series entries. * Call `session.SaveChanges()` to perform the patch. @@ -81,15 +81,19 @@ {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Time Series and JavaScript** +[The Time Series JavaScript API](../../../../document-extensions/timeseries/client-api/ts-javascript-api) + +**Client API** +[Time Series API Overview](../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown index 1a0d74379a..59a6b230b0 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown @@ -41,13 +41,13 @@ HeartRate time series, and the RQL equivalent for this query. `session.Query` Definition: {CODE Query-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -Learn more about `session.Query` [here](../../../../client-api/session/querying/how-to-query#session.query). +Learn more about `session.Query` [here](../../../../../client-api/session/querying/how-to-query#session.query). **Return Value**: * **`IRavenQueryable`** for aggregated data. When the query - [aggregates time series entries](../../../document-extensions/timeseries/querying/aggregation), + [aggregates time series entries](../../../../../document-extensions/timeseries/querying/aggregation-and-projection), the results are returned in an aggregated array. * **`IRavenQueryable`** for non-aggregated data. When the query **doesn't aggregate** time series entries, @@ -85,15 +85,16 @@ Learn more about `session.Query` [here](../../../../client-api/session/querying/ {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown index 281ef24e73..82fe672a56 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown @@ -4,8 +4,8 @@ {NOTE: } -* Clients can [express time series queries in RQL](../../../../../document-extensions/timeseries/querying/dynamic-time-series-queries/dynamic-queries) - and send them to the server for execution using the `session.Advanced.RawQuery` method. +* Clients can express time series queries in RQL and send them to the server + for execution using the `session.Advanced.RawQuery` method. {INFO: } @@ -45,7 +45,7 @@ their contents, time series contents or otherwise * **Return Value**: * **`IRawDocumentQuery`** for aggregated data. When the query - [aggregates time series entries](../../../document-extensions/timeseries/querying/aggregation), + [aggregates time series entries](../../../../../document-extensions/timeseries/querying/aggregation-and-projection), the results are returned in an aggregated array. * **`IRawDocumentQuery`** for non-aggregated data. When the query **doesn't aggregate** time series entries, @@ -87,15 +87,16 @@ their contents, time series contents or otherwise ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown index 3bd043f7bf..698a840923 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown @@ -88,8 +88,9 @@ There are two `TimeSeriesFor.Remove` methods: * Open a session. * Create an instance of `TimeSeriesFor`. - * Either pass `TimeSeriesFor` an explicit document ID, -or- - Pass it an [entity tracked by the session](../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../client-api/session/querying/how-to-query) or from [session.Load](../../../client-api/session/loading-entities#load). + * Either pass `TimeSeriesFor` an explicit document ID, + -or- + Pass it an [entity tracked by the session](../../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../../client-api/session/querying/how-to-query) or from [session.Load](../../../../client-api/session/loading-entities#load). * Pass `TimeSeriesFor` the time series name. * Call `TimeSeriesFor.Remove`. * Call `session.SaveChanges` for the action to take effect on the server. @@ -109,15 +110,16 @@ to remove a range of entries from a time series. {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json index 5b9ce366ce..53f4f2db7b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json @@ -1,7 +1,7 @@ [ { "Path": "append-and-remove-TS-data.markdown", - "Name": "Append & Remove TS", + "Name": "Append & Remove TS Data", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown index ce60e90475..5bc08abb45 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown @@ -145,15 +145,16 @@ passed to `TimeSeriesBatchOperation` as an argumenjt. ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown index ecae74fe5e..0443df9c12 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown @@ -125,15 +125,16 @@ a single transaction. {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown index 698ec9e9c6..f58f8a3ccf 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown @@ -75,15 +75,16 @@ time series. ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown index f9510b075d..65725fba4b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown @@ -76,15 +76,16 @@ multiple time series. ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown index ac4a5393e1..4d06df5e79 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown @@ -19,7 +19,7 @@ * [`PatchByQueryOperation`](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation) * [Syntax](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#syntax-1) * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow-1) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples-1) + * [Usage Sample](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-sample) {NOTE/} @@ -142,27 +142,28 @@ --- -#### Usage Samples +#### Usage Sample * In this sample, we run a document query and remove the HeartRate time series from documents we find. {CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -* In this sample, we run a query and **get** a range of entries from the documents we find. - {CODE TS_region-PatchByQueryOperation-Get@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Time Series and JavaScript** +[The Time Series JavaScript API](../../../../document-extensions/timeseries/client-api/ts-javascript-api) + +**Client API** +[Time Series API Overview](../../../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown index d5f833ed30..b3227d51d0 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown @@ -4,12 +4,12 @@ {NOTE: } -* Time series are a sequence of numerical data associated with timestamps -and sorted chronologically. +* Time series are sequences of numerical data associated with timestamps + and sorted chronologically. -* The RavenDB Time Series feature is a document extension. It much faster -and more efficient for this purpose than storing time series data as JSON -within the document. +* RavenDB's Time Series feature is a document extension, gaining by it + much greater speed and efficiency than it would have gained as JSON-formatted + data within a document. * In this page: * [Time Series Structure](../../document-extensions/timeseries/design#time-series-structure) @@ -85,7 +85,7 @@ automatically removes the flag. --- -#### Segments +#### Segmentation At the server storage level, time series data is divided into **segments**. @@ -184,10 +184,16 @@ fails for any reason, the time series modification is reverted. {PANEL/} ## Related articles -**Studio Articles**: + +**Client API** +[Time Series API Overview](../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** [Studio Time Series Management](../../studio/database/document-extensions/time-series) -**Time Series Articles**: -[Time Series Overview](../../document-extensions/timeseries/overview) -[API Overview](../../document-extensions/timeseries/client-api/api-overview) -[Time Series and Other Features](../../document-extensions/timeseries/time-series-and-other-features) +**Querying and Indexing** +[Time Series Querying](../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown index b5910c2f64..d9d57ce89b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown @@ -31,9 +31,9 @@ * [Transactions Performance](../../document-extensions/timeseries/overview#transactions-performance) * [Common-Queries Performance](../../document-extensions/timeseries/overview#common-queries-performance) * [Time Series Entries](../../document-extensions/timeseries/overview#time-series-entries) - * [The Timestamp](../../document-extensions/timeseries/overview#the-timestamp) - * [The Values](../../document-extensions/timeseries/overview#the-values) - * [The Tag](../../document-extensions/timeseries/overview#the-tag) + * [Timestamps](../../document-extensions/timeseries/overview#timestamps) + * [Values](../../document-extensions/timeseries/overview#values) + * [Tags](../../document-extensions/timeseries/overview#tags) {NOTE/} @@ -94,7 +94,8 @@ revisions, are **document extensions**. Notable time series features include - * **Highly-Efficient Storage Management** - Time series data is [compressed and segmented](../../document-extensions/timeseries/overview#efficient-storage-and-querying) + Time series data is [compressed](../../document-extensions/timeseries/design#compression) + and [segmented](../../document-extensions/timeseries/overview#time-series-segments) to minimize storage usage and transmission time. * **A Thorough Set of API Methods** The [time series API](../../document-extensions/timeseries/client-api/api-overview)** @@ -102,7 +103,7 @@ Notable time series features include - * **Full GUI Support** Time series can be viewed and managed using the [Studio](../../studio/database/document-extensions/time-series). * **Time Series Querying and Aggregation** - * [High-performance common queries](../../document-extensions/timeseries/overview#efficient-storage-and-querying) + * [High-performance common queries](../../document-extensions/timeseries/overview#common-queries-performance) The results of a set of common queries are prepared in advance in time series segments' headers, so the response to querying for a series **minimum value**, for example, is returned nearly instantly. @@ -110,7 +111,7 @@ Notable time series features include - Flexible queries and aggregations can be executed using LINQ expressions and raw RQL over time series **timestamps**, **tags** and **values**. * **Time Series Indexing** - Time series can be [indexed by clients](../../ocument-extensions/timeseries/indexing) or using the Studio. + Time series can be [indexed by clients](../../document-extensions/timeseries/indexing) or using the Studio. * [Rollup and Retention Policies](../../document-extensions/timeseries/rollup-and-retention) * **Rollup Policies** You can set time series rollup policies to aggregate large series into @@ -131,9 +132,10 @@ Notable time series features include - {PANEL: Time Series Data} Time series **names** are kept in their parent documents' metadata, while their -**data** is kept [separately](../../). +**data** is kept [separately](../../document-extensions/timeseries/overview#separate-name-and-data-storage). Time series data is **compressed** and composed of consecutive -[segments](../../) and [entries](../../). +[segments](../../document-extensions/timeseries/overview#time-series-segments) and +[entries](../../document-extensions/timeseries/overview#time-series-entries). {PANEL/} @@ -187,22 +189,20 @@ Each entry is composed of a **timestamp**, 1 to 32 **values**, and an **optional --- -#### The Timestamp +#### Timestamps {INFO: } A single `DateTime` timestamp marks each entry in a millisecond precision. - -E.g. in a heartrate time series, timestamps would indicate the time in which each -heartrate measurement has been taken. {INFO/} Timestamps, and therefore time series entries, are always ordered **by time**, from the oldest timestamp to the newest. -Timestamps are the reference points for the appendage and removal of values. +E.g. in a heartrate time series, timestamps would indicate the time in which each +heartrate measurement has been taken. --- -#### The Values +#### Values {INFO: } Up to 32 `double` **values** can be appended per-entry. @@ -226,7 +226,7 @@ values may be a requirement for some time series. Here are a few examples. --- -#### The Tag +#### Tags {INFO: } A single **optional** `string` tag can be added per entry. @@ -252,15 +252,17 @@ Here is why. {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Client API** +[Time Series API Overview](../../document-extensions/timeseries/client-api/api-overview) + +**Studio Articles** +[Studio Time Series Management](../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Indexing](../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../document-extensions/timeseries/rollup-and-retention) + diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown index e0ac00c3ff..ca48b780f9 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown @@ -173,15 +173,20 @@ or `select` in a raw RQL query. {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Time Series Overview** +[Time Series Overview](../../../document-extensions/timeseries/overview) + +**Studio Articles** +[Studio Time Series Management](../../../studio/database/document-extensions/time-series) + +**Time Series Indexing** +[Time Series Indexing](../../../document-extensions/timeseries/indexing) + +**Time Series Queries** +[Range Selection](../../../document-extensions/timeseries/querying/choosing-query-range) +[Filtering](../../../document-extensions/timeseries/querying/filtering) +[Indexed Time Series Queries](../../../document-extensions/timeseries/querying/indexed-queries) + +**Policies** +[Time Series Rollup and Retention](../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown index 94f62b3aef..7525d204d1 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown @@ -107,15 +107,20 @@ to the client's local time zone. {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Time Series Overview** +[Time Series Overview](../../../document-extensions/timeseries/overview) + +**Studio Articles** +[Studio Time Series Management](../../../studio/database/document-extensions/time-series) + +**Time Series Indexing** +[Time Series Indexing](../../../document-extensions/timeseries/indexing) + +**Time Series Queries** +[Filtering](../../../document-extensions/timeseries/querying/filtering) +[Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projection) +[Indexed Time Series Queries](../../../document-extensions/timeseries/querying/indexed-queries) + +**Policies** +[Time Series Rollup and Retention](../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown index 0979cf68a3..4c6bc4cc24 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown @@ -96,15 +96,20 @@ use `LoadTag()` in a LINQ query or `load tag` in a raw RQL query. {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Time Series Overview** +[Time Series Overview](../../../document-extensions/timeseries/overview) + +**Studio Articles** +[Studio Time Series Management](../../../studio/database/document-extensions/time-series) + +**Time Series Indexing** +[Time Series Indexing](../../../document-extensions/timeseries/indexing) + +**Time Series Queries** +[Range Selection](../../../document-extensions/timeseries/querying/choosing-query-range) +[Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projection) +[Indexed Time Series Queries](../../../document-extensions/timeseries/querying/indexed-queries) + +**Policies** +[Time Series Rollup and Retention](../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown index 00412de4c8..04c2e11367 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown @@ -5,7 +5,8 @@ {NOTE: } -* Time series indexes are not generated automatically by the server, but static +* Time series [indexes](../../../document-extensions/timeseries/indexing) + are not generated automatically by the server, but static indexes can be created by clients or using the Studio. As any other index, static time series indexes can be queried. @@ -14,9 +15,9 @@ using LINQ expressions. * In this page: - * [Indexed Queries](../../../../document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries#indexed-queries) - * [Syntax](../../../../document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries#syntax) - * [Usage Samples](../../../../document-extensions/timeseries/querying/indexed-time-series-queries/indexed-queries#usage-samples) + * [Indexed Queries](../../../document-extensions/timeseries/querying/indexed-queries#indexed-queries) + * [Syntax](../../../document-extensions/timeseries/querying/indexed-queries#syntax) + * [Usage Samples](../../../document-extensions/timeseries/querying/indexed-queries#usage-samples) {NOTE/} @@ -87,15 +88,20 @@ You can run asynchronous queries if you don't want your application to wait for {PANEL/} ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Time Series Overview** +[Time Series Overview](../../../document-extensions/timeseries/overview) + +**Studio Articles** +[Studio Time Series Management](../../../studio/database/document-extensions/time-series) + +**Time Series Indexing** +[Time Series Indexing](../../../document-extensions/timeseries/indexing) + +**Time Series Queries** +[Range Selection](../../../document-extensions/timeseries/querying/choosing-query-range) +[Filtering](../../../document-extensions/timeseries/querying/filtering) +[Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projection) + +**Policies** +[Time Series Rollup and Retention](../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown index f1178f287f..694640085b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown @@ -34,13 +34,12 @@ Time series query can - to query from. * [Filter](../../../document-extensions/timeseries/querying/filtering) time series entries by their tags, values and timestamps. -* [Aggregate](../../../document-extensions/timeseries/querying/aggregation) +* [Aggregate](../../../document-extensions/timeseries/querying/aggregation-and-projection) time series entries into groups by a chosen resolution, e.g. gather the prices of a stock that's been collected over the past two months to week-long groups). -* [Select](../../../document-extensions/timeseries/querying/aggregation) - entries by various criteria, e.g. by the min and max values of each aggregated group. -* [Project](../../../document-extensions/timeseries/querying/projection) - selected entries to the client. +* Select entries by various criteria, e.g. by the min and max values of each aggregated group, + and [project](../../../document-extensions/timeseries/querying/aggregation-and-projection) + them to the client. {PANEL/} @@ -62,7 +61,7 @@ indexes can be created by clients (or using the Studio). * Use **dynamic queries** when time series you query are unindexed or when you prefer that RavenDB would choose an index automatically - using its [query optimizer](../../../../indexes/querying/what-is-rql#query-optimizer). E.g. - + using its [query optimizer](../../../indexes/querying/what-is-rql#query-optimizer). E.g. - {CODE-BLOCK: JSON} //Look for time series named "HeartRate" in user profiles of users under 30. from Users as u where Age < 30 @@ -166,15 +165,21 @@ select ts(jog) ## Related articles -**Studio Articles**: -[Studio Time Series Management]() - -**Client-API - Session Articles**: -[Time Series Overview]() -[Creating and Modifying Time Series]() -[Deleting Time Series]() -[Retrieving Time Series Values]() -[Time Series and Other Features]() - -**Client-API - Operations Articles**: -[Time Series Operations]() + +**Time Series Overview** +[Time Series Overview](../../../document-extensions/timeseries/overview) + +**Studio Articles** +[Studio Time Series Management](../../../studio/database/document-extensions/time-series) + +**Time Series Indexing** +[Time Series Indexing](../../../document-extensions/timeseries/indexing) + +**Time Series Queries** +[Range Selection](../../../document-extensions/timeseries/querying/choosing-query-range) +[Filtering](../../../document-extensions/timeseries/querying/filtering) +[Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projection) +[Indexed Time Series Queries](../../../document-extensions/timeseries/querying/indexed-queries) + +**Policies** +[Time Series Rollup and Retention](../../../document-extensions/timeseries/rollup-and-retention) From 217bfb6095089b78a9959c9b1a279f2ec35f42cf Mon Sep 17 00:00:00 2001 From: reebhub Date: Thu, 25 Jun 2020 17:25:00 +0300 Subject: [PATCH 55/56] added a PatchByQueryOperation sample that uses JS get --- .../store-operations/patch-TS-data.markdown | 10 ++++- .../TimeSeries/TimeSeriesTests.cs | 45 ++++++++++++++----- .../Raven.Documentation.Samples.csproj | 6 +-- 3 files changed, 44 insertions(+), 17 deletions(-) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown index 4d06df5e79..e7add1b836 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown @@ -19,7 +19,7 @@ * [`PatchByQueryOperation`](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation) * [Syntax](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#syntax-1) * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow-1) - * [Usage Sample](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-sample) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples-1) {NOTE/} @@ -142,12 +142,18 @@ --- -#### Usage Sample +#### Usage Samples * In this sample, we run a document query and remove the HeartRate time series from documents we find. {CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* In this sample, we patch each User document a "NumberOfUniqueTagsInTS" field with + the number of different tags in the user's "ExcersizeHeartRate" time series. + To do this, we use the JS `get` method to get each time series' entries (the + range we choose includes them all), and check each entry's tag. + {CODE TS_region-PatchByQueryOperation-Get@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {PANEL/} ## Related articles diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index 5508c8c949..8c5bdf1a86 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -583,22 +583,43 @@ public void ReebUseTimeSeriesBatchOperation() #endregion #region TS_region-PatchByQueryOperation-Get - // Get ranges of time-series entries from all users - PatchByQueryOperation getOperation = new PatchByQueryOperation(new IndexQuery + PatchByQueryOperation getExcersizeHeartRateOperation = new PatchByQueryOperation(new IndexQuery { - Query = @"from Users as u - update - { - timeseries(u, $name).get($from, $to) - }", - QueryParameters = new Parameters + Query = @" + declare function foo(doc){ + var entries = timeseries(doc, $name).get($from, $to); + var differentTags = []; + for (var i = 0; i < entries.length; i++) { - { "name", "HeartRate" }, - { "from", DateTime.MinValue }, - { "to", DateTime.MaxValue } + var e = entries[i]; + if (e.Tag !== null) + { + if (!differentTags.includes(e.Tag)) + { + differentTags.push(e.Tag); + } + } } + doc.NumberOfUniqueTagsInTS = differentTags.length; + return doc; + } + + from Users as u + update + { + put(id(u), foo(u)) + }", + + QueryParameters = new Parameters + { + { "name", "ExcersizeHeartRate" }, + { "from", DateTime.MinValue }, + { "to", DateTime.MaxValue } + } }); - Operation getOp = store.Operations.Send(getOperation); + + var result = store.Operations.Send(getExcersizeHeartRateOperation).WaitForCompletion(); + #endregion #region ts_region_Raw-Query-Non-Aggregated-Declare-Syntax diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/Raven.Documentation.Samples.csproj b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/Raven.Documentation.Samples.csproj index 2113de36bc..911c72d1c9 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/Raven.Documentation.Samples.csproj +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/Raven.Documentation.Samples.csproj @@ -6,9 +6,9 @@ - - - + + + From 7c0a4779969a3ec0ae21cedd4ad8dd6bfc75db9c Mon Sep 17 00:00:00 2001 From: reebhub Date: Wed, 1 Jul 2020 18:32:26 +0300 Subject: [PATCH 56/56] RDoc-1703_TimeSeries fixed by Pawel's PR comments --- .../timeseries/client-api/.docs.json | 22 +- .../images/time-series-view-coordinates.png | Bin 0 -> 323990 bytes .../images/time-series-view-coordinates.snag | Bin 0 -> 127000 bytes ...i.markdown => javascript-support.markdown} | 53 ++--- .../.docs.json | 16 +- .../append-and-remove.markdown} | 21 +- .../bulk-insert}/.docs.json | 2 +- .../bulk-insert/append-in-bulk.markdown | 93 ++++++++ .../client-api/operations/get.markdown | 145 ++++++++++++ .../patch.markdown} | 50 ++-- ...pi-overview.markdown => overview.markdown} | 62 ++--- .../session-methods/get-ts-data/.docs.json | 14 -- .../get-ts-data/get-ts-entries.markdown | 115 ---------- .../query-time-series/linq-queries.markdown | 100 -------- .../raw-rql-queries.markdown | 102 --------- .../session-methods/remove-ts-data.markdown | 125 ---------- .../{session-methods => session}/.docs.json | 24 +- .../append.markdown} | 61 ++--- .../get}/.docs.json | 8 +- .../session/get/get-entries.markdown | 108 +++++++++ .../get/get-names.markdown} | 15 +- .../include}/.docs.json | 2 +- .../include/overview.markdown} | 18 +- .../include}/with-raw-queries.markdown | 26 +-- .../include}/with-session-load.markdown | 15 +- .../include}/with-session-query.markdown | 17 +- .../patch.markdown} | 50 ++-- .../session/querying-overview.markdown | 170 ++++++++++++++ .../client-api/session/remove.markdown | 96 ++++++++ .../append-ts-data-in-bulk.markdown | 140 ------------ .../store-operations/get-TS-data/.docs.json | 14 -- .../get-TS-data/get-TS-data.markdown | 90 -------- .../get-TS-data/get-multiple-TS-data.markdown | 91 -------- .../client-api/strongly-typed-api.markdown | 112 +++++++++ .../timeseries/design.markdown | 28 +-- .../timeseries/indexing.markdown | 15 +- .../timeseries/overview.markdown | 56 +++-- .../timeseries/querying/.docs.json | 6 +- ...n => aggregation-and-projections.markdown} | 25 +- .../querying/choosing-query-range.markdown | 10 +- .../timeseries/querying/filtering.markdown | 9 +- .../querying/indexed-queries.markdown | 9 +- ....markdown => overview-and-syntax.markdown} | 27 ++- .../timeseries/rollup-and-retention.markdown | 2 +- .../time-series-and-other-features.markdown | 8 +- .../indexes/querying/what-is-rql.markdown | 4 +- .../TimeSeries/TimeSeriesTests.cs | 216 ++++++++++++++++-- 47 files changed, 1217 insertions(+), 1175 deletions(-) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/images/time-series-view-coordinates.png create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/images/time-series-view-coordinates.snag rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{TS-javascript-api.markdown => javascript-support.markdown} (65%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{store-operations => operations}/.docs.json (55%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{store-operations/append-and-remove-TS-data.markdown => operations/append-and-remove.markdown} (87%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{store-operations/bulk-ts-operations => operations/bulk-insert}/.docs.json (72%) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/bulk-insert/append-in-bulk.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/get.markdown rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{store-operations/patch-TS-data.markdown => operations/patch.markdown} (79%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{api-overview.markdown => overview.markdown} (69%) delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/.docs.json delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{session-methods => session}/.docs.json (56%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{session-methods/append-ts-data.markdown => session/append.markdown} (61%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{session-methods/query-time-series => session/get}/.docs.json (57%) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/get/get-entries.markdown rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{session-methods/get-ts-data/get-ts-names.markdown => session/get/get-names.markdown} (81%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{session-methods/include-ts-data => session/include}/.docs.json (93%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{session-methods/include-ts-data/include-ts-overview.markdown => session/include/overview.markdown} (64%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{session-methods/include-ts-data => session/include}/with-raw-queries.markdown (71%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{session-methods/include-ts-data => session/include}/with-session-load.markdown (84%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{session-methods/include-ts-data => session/include}/with-session-query.markdown (80%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/{session-methods/patch-ts-data.markdown => session/patch.markdown} (53%) create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/querying-overview.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/remove.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/.docs.json delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown delete mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown create mode 100644 Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/strongly-typed-api.markdown rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/{aggregation-and-projection.markdown => aggregation-and-projections.markdown} (85%) rename Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/{queries-overview-and-syntax.markdown => overview-and-syntax.markdown} (87%) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json index edd2d8be6f..8e2d6767f4 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/.docs.json @@ -1,23 +1,29 @@ [ { - "Path": "api-overview.markdown", - "Name": "API Overview", + "Path": "overview.markdown", + "Name": "Overview", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "/session-methods", - "Name": "Session Methods", + "Path": "/session", + "Name": "Session", "Mappings": [] }, { - "Path": "/store-operations", - "Name": "Store Operations", + "Path": "/operations", + "Name": "Operations", "Mappings": [] }, { - "Path": "TS-javascript-api.markdown", - "Name": "Time Series & JavaScript", + "Path": "javascript-support.markdown", + "Name": "JavaScript Support", + "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", + "Mappings": [] + }, + { + "Path": "strongly-typed-api.markdown", + "Name": "Strongly Typed API", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/images/time-series-view-coordinates.png b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/images/time-series-view-coordinates.png new file mode 100644 index 0000000000000000000000000000000000000000..3071baba860db15019901c0a873643a6de095fe3 GIT binary patch literal 323990 zcmXte1yEdD(=EYW26q?+cS~>?Y;X<1-Q8V+4}-gei@RHp1b2c%u;2~>g1f!k`~9!# zoH|wO^zN$Oy}MWMu8vkyk;6hKLx+Qd!;*(cYrw%Fy1~K0pQ9rGMV@vvkp6zqTp+sc zaBxKQ|Gw|!H9+ToK@<;pWf_!RWGVz|I{fE@xc?v-9S=!Q4;yDUxQg0w$X^K4<1Zv_ z>2B_3>*8VS>;#98Moae>NBa(3}`v$eMIfUCwC7y650|A)F+n*J+F<6-M)3CDkj zgZB3i+P{A^ovl2)P2DWv3|-#-7038bxvjgogXv#UH@McG=7hg6>c8+OQ#U7DCu_JK z^8Kj47|Q?Fd%Brh!ri=u9shqZDQ8DVOD7Mw+wt`7zZmkrVp_Hy4wi7`e`Xos;Ar6F zr6sj|a!%HKo9jLq9z5Jp1}L_;v&ZWxGk5= z+kI_{ar$mx*;H9v$%a9Wl3FN1pI+n$Xx~-%^KHj{ zga&fC8q|TqT$m;cl2?e{qyS5!SACX%{mzN!9BX77YdlF}K!<#mpb3{okGrBO;bW$U z{HcyV3m;|*^Uh5LXcH%z9QsvOG7P=4x&xQ{74nYXS?H!)Ca5SVzyZ)`CCIUuam_%o z35nYj30(iDQ6~T45|f!8DoukIN;d@6wiXOlFn+!D#(74Bui@8FFo?DGemGtmybp3%|Z*+LI?OzL*$b+d~2gJ|5{|Jdkfu;!iGR-lN4wy!S?c~?`S8h=LN|D zk}xz{#A0a$>wUW+JzU(Y=aY`au$+I*F-{yfkn#$(i zOq#__>z5Y)k^%-4QkWB3dg8)!8l-(W-uhg9YI0ykDy=bo}IiYtV!tE zg3pX(GF&?BN{5bAb;!Wy9{gwu=jt^))g|PXnDW;+Q8o=2ggFtMXa=Ik)hGxrriyDn zRcy^UrnUOl@^sNc5GMqbs>Q^fq|x~G>)$P^nS8xn6IO-c(G$w%Rah?Fi8?O2`dLTS z>IWfB0{z?eXc+%BQiq9I{zxfAjCMAQOc0D`2Be*8IRgKy(sH>do*5*DsDU1yh)N3# z2g*vq0K3bS;t>*hAw(gV06?lkesnMJB2V5W7yAU$;9Z zxy`B^t}(cpfHTE)!c{tV@9uL+`RmUbvb~5t?bw6MTiJ0z)bZo%Hxs)0On!q1C7U8 z!JlB=LuSm*Hc#7LP;qS*7zNeRYEBH!jVRt>ySlrr)`to+=GLy5Gf^rKC@o10=dLv( zZEztfvkXzdl4X`PI4R^&0kCihx_6TB@LLAP>;E(0zY{J!Dmm#p8JGTZy@>)|AVMor z(#L?HxzoCmkF_C;gA@rR;^+DJk;=u3oxRU)>Q> zovz|@tWFufYCbFdqW_fe6Qxt;nQKu;n)9Yvkf*)0BjajK?Y5tHtSV@NcoyxKdNC@p zMzk7UFDwE8?J6!u#Fm!;6akS!l%iANxsj!@!~Yj8|K%I!J(>fNJ61CVbB>*xZ4%|* zuHQ_5_OpdlvwYjNtjPaMX96Q^S;_e?ex{rt-#c&b;ma)3XWFaJrNIS<8!R1J;X}M1zRiTv>-7OL_mwS`f>_OLZhWG_NnD`{V!7f7lLLvmJ`P( z22Up5+4=!e_yrJj=64h_hZUL$wdf1}A-JKZX5+1c7(QKskZSfjOhu*ZlaU^^*!!t1 zf$q+Zgde>&=MX*wBu@P7U_--@-`MA>8NwY!-C_6_ip5^UqGVU!E`ov-#o}F;wx^;r zpU*E9b5=X4G!?KP@#-o|pGSv2J`Y`!io8Ezyne@yKPqnpoRybQ2oEiWS7(UTi2W)$ z{OQAgIrsmP(a)iU*F53Hu#wl{z#n8?BnJaa_$V$+EQI&(I`cBhm0v4ub;=1nLl=Z! znJD(YnWCie$>3G|gD|i8L%EsMl^SNL$6cImgET4p=eMFtHvV%p+NwUqwrX~Kii{b) zoLgj^UZL(e`yP?^z2bdxcT_8J=U%gXyp8~D@3kq?$3b)g}eF5G{-D?2myc@ z!0cCe7VS#Ikf6BLU0ITAxg5+2ROgXM1tmei4P9Lm4rd@B+T_g&V-hX|LQ_H$?GsFm zJoxxX6w|4B;Pv@GKUgMk;oLo|z*+w?r8oPDN-Ej&%R}71DP_c6G-RAAnPNBRU||Jj z@~_yceeafrwuzCe*;nH>Ai5T-s!G7yy4k2} zVb3#&C@Id??$Wty>z1+tI6;e|o1R5LNK+!vnA)j|$9>Gpm7M3ZN1i>2@jVIp#;nd;MR!lUF{!KVAgXkx-~SpR2W2a}__4dP4V zX7Cs3AQ6h)rQb%ioYn!sLZ6%K>HHZ~=)j|C+?P|8o)yP7N*d>s|utim?S;gki>^5d)#w_MtBS_t= zh)&9%?rZ0T=zNn&L-2>(I%5MWpg*g6zR2lAFM^EHh3q^-iR0v|E3mqZo69|*8yb|< zD#FzRR57nKD{hi{3a`HHy$RUT}UEo3kw&Jv9<#RCH$+uy>ALoDPZnj8IFsi4z5D(Xs<(r;2gJC)%+_ciL}+ z<#_6MsK)OQ6qH^3B+r0pTBs63-K?m@AwE_~xP~yL9SHzoC#uq~><2xmW!*^H{1^jS zj{nR*IV+N9|N1G@F0_o!i?U)h>ggE`_no(ZS|mNto?^$f9~`t@Ru?MAg{!~oo2#J-F%@7<_I z{Oa-inWfF^3GkX{x{1IW-6Hy(LG3YAH5!%>MM<<4c&`SWwGHpi9(75T6g09$I;H@p z^M@H16b?)G+ke+Q{Im1CFf@3gn&F=0?DO#k^cwiYU0J$!;3>~XoWK29seTT-T0YJ{ z@gimq**p5* zaYd`#>X%2mne3ETKWPb9-vcPTLN&t*e}-DJK)ZIn*d;D^Q?7m;n>X85Z3J%fG0kZ-7`%K3nDeFzAfLOK#9Hlwzpujx&r=bR)Kkeb;I0k zonN%-fNk^|d%HD2_PgvqlAE6v5es@f>>k!U|pzGJT+-^oYhBmc=e@{Y=KNP(zk8IydD zDr$k60`6>&lp|Yi45j#wH7fYv8hA#imaXKGqS!GYxN)_FP&nt0h{AiDnX68}u>8{J zE`5y$`lJx4ua<21$Eha@{hnQWA3k|sL~mhh|7uKSWG0)i-z6c$zD#!=!=LL+Ed_fg z&Do9DY!e*!hcbRdLA6s#>sf|e<6Y4VHV4@F%83lsMXi(z4=*ALa5Wm3-d=PCCFJ7^ zG5EckGdWBH4fIIcTf`zJwaQu~7`;u$P|9IS)}q2A6GRSppQUxU-N9wFv)iG=%BSUN z!{I9u!3F9B>J5Sf1}n<#<=m@!pd2XEnR>qj3tRMkT08FlNCao*!RVyTS|SRnOfMMIdrK{}zhno7fx1&*d!ISY2OPe2A}KvY$O{JfUO&@jf0Fu;u@Ov9ODV%v&nM zeSws;b;8jjxKQnvs)AWdFN>>#h;C27(TsXAz3^+7=0JUN1$vndwg>y?5U{3_XnqRa zXtq~69_CTJbN%HX^nqnPS39-AJinj0cWNblk?4~^AVd`m<~IHfoaf7xZJfW|;vt;rB3RsesLikDe@Tvb9%@ zziFPd-hC@hH-C?OuiYM9&GzAe^u698g1l@q>bQ&vTNUrxx5g9o-_(AIbm2vqXlW)L z$pOyxzJW(Q65jLXCp(x0%rSUpS5^!4u8iaa?3nxOVtC|6&*dBJ#eCdSPfwi0_ z|3&xPX3m+U3Nt}qGNeI~wzT7t+1}tD_LkNlFfiI;8NGwBNWB;NMQmhdDj@vNeFn){ zm5Up`dAdQ1^Z3DHE$!;Fm`9?Am$<1fMHNzo@n@m#4}|iFzaZhss0GXp5s*!TD6QnE zZ@`1+F7)NF+5U_TrFdW4<=ANLf6Vp~ofX+zmwOIU&Be)!wPtP^E3|e!1kHB+yq-Lr zqLUIaEdf4fx-h}3=3f1Is225>@gz!+{@Q>?5RSOxf=+9KrPQiI9)P$CnI4BH2Ezbd zi#~IxK?9zS>e<%&%+G5mI(YtcuTvZ;xDri6ANw;1pXNiQw0 z)Oxu{SB;hId*qRcx-XS*?&h5=lyu|<`Yl){S0IJzr3R74p$7 zXtr)tBf1-Q&j0RCcRUHA#|32{P}=QQUGJ#_$!*IU+%gi@vGcnAe28x1R3GRc5OS4z z(`{LQS`3(L6-&XOe$yZ!?${R0xO8@U#@;4gA0I(e8AUt(JgrDE*e*8Mq(PKyxnf#H z=19&&`z2WP z|DN*!%@rzCdo|~@=~*>(nX%<$KwM!Ky@3B7GZR#9s0vmCk;rDh$c#qDKdT=vk^Z4k z809bA-(fKcD_Tr~6l)L)^WliS#w7!pE$He;X|QaLn2SxP2q+RG%RpmaewWRbq^t7- z$rRK0Xs?YUSaU3w+ku+Ocp{xz9@^8M@r5f=0tqDWf4d4fk?T1RZja+rsh?AkwS*I6 z%UUD9oM0{r6i0g2P2L>+w}F4#9i=J_pB#Cry?h^II6)j#QO(C4H!+H059!9kZ1I2_ zTB5#8T*!p%&r=XL7fY)#{Pd=G`xDx^=M2ezpx$!R&fHKJ=KNrPMNfqvGGE{c`k zN{{iY=0B6`fo+%+6;W|SbN{899P_B%PxncZrOAWi>Sxk93ltwj3u8e1l3B{qd552} zvEH{q^rTt2_LT^~6kQT*7&JdW?;|e~5SvJC{@TOlbm$s6$QFhaSfAjF15__2U&X{6 zT9;U@%Dc8NEBilaHXHC5V~>C!8jUx&EgxEH5QueuL8Mf-C_dsIiiPlDl2z_5mjRr~ zMDh0u{=v#8FwJ%zXgrxw`i_N)k$R_9vn@2^vT=y$mE+PkeI!kQMh-Cd-XDwP6+iX> zSCeWP&fM?@`MXEvo|LDWmZ6y%Tn#!Okm7g)tg^Y(zI69&y+%l>QQ#^73qux30U= z`gI7y=p5Yg9tQwlU89VLr~$j~mpax#^0lAu=lJ#cEI+@P1t9z*`J15@OD2ot8MVbz z0u;iGrU5VmGDs%EM;Bv;8euAF^bJZt$m&=y(dDOB&uEWd93GxfEAnyT-QcUZWbiV% z%#0>U+eII_MCZP*|9qBf0^QI3^a?}5nw3Tu-HTRnu`O?_=6q1|P4)zFheFAsSnqqQ~Wluvp2)b!VW1&y{2t63Q@IG0>2pO%+S60knA|W(~6@sreb%&)B!tVFR=@-%pZpG#?2Bnd=;KOt22{lK2AM~2TzG!byL5Di@V@B%p* zd3$yt+d_h35~e_!itrJB*~X}uP))6QWJ@+?Vo}u_{PnhiB|GOm@^5HzvjlV?_=s4t zECQfBYAC^G?FCGgO}KVLXwuzKvZyr24%~g`al~($>0YGQrpm?_@~1On9xFbn;GFXR+ zFX=Q}C5ZBi+kHKQzU&1b}0j`rUY7;CVu)ON#UB@ z$Lo70ZiVR+1rO3h7Thp%W~{HL>YXKJB_2;q13g?9eCp=p2{j@~kcR4u#yW0ddb_}Cy@Pd1;soyPes{ggNm zC-_{xZ6_fJUbObex~#%6BBA|MKi%@6Y{=V254*h+F1Z?eJrm8DTIu8~|C zo>{@d8Er>G4MC=gD{j~!HuHgq5%BhExe~Bx+dZ%ne94$e=wFQ#cZpCF=n*V-`x0x$ zx9$2$QoCCEhyKGxs~oRCbv7E(cedibN<2@@`{^CNllIU}q}SZ<4N-L_MeJ&F*bQwp z!tNW@7_!D8k7c7a&ny}WGU9BB^Fp;cW|7KvN15%U5g|+%vN3{A0hu40iiv3K2YITQ zI)S591?-bZi9}nNGBev9bcbZL{xH+90oZ$))Kr4ehJw4Lc}+6jl5*Ah9M594zU;nc ztSYzhHfQ;Do;G?fi^H(8b2Qr)*DbywCHKTD7xElN1{bp)k0gEqfU-4+M<&^KQ%0SE z0CO@4EMXU|ZSAyK65FQ0M z4XwC4in@A8X@Y^L7oz8I2`NDPERhJY0nrNiIqDE6ZR+Jz&3sgDWDkTL7Pk#E1_cWA z3cqmoa4*1A7{It%QiIe@V|hG`43Y|=;TEydxJ$|PkR$@V>?JTj8r_e%UZEhlzXFn$ z4@;)%)sT&SA6tp%*c8T$A6_sy70mk^fI!rzy6_NYl9sWiI5qDgj+k$2dIAd!CZFeHq#X?dRHCmp5rgeA zfQ|NSz18jEQ~0fDoX{j6NV-C&8kEv#G4HR{(0kM<$sf(9!!ez!n{%PseH<}j9Vl+x z(X@r&98CW7(qo?IN4s&|R%X)u^fh2xxm%$~fv9pvnA#gU)_pL1zu0}nJS!R;VM?5_ zQ2v+>-20;{vrbLBO0;zotsJp zzu4nz!fe}9eq41{XwfjRVZ$;G&mBkQ#sPVvdaWoUyMpK1Nv0mp*g<2`YiSyApm)o5 zSZm?nby$XOxp4GFl%YamMH-Kt(ma*Sr9o0oG8M)m%TnYT1|*7fvO^UeQQ@9XAG`)& za5bwpJi5+;t>z{TjC%NyX_M<(u+!*8X$Q-07DXkZZ zU~0YK2py^V)yO6+KL4ZMsOEw?Xy4c1IZk}Sx!dDM0_vEd^OLyE8qB2UhVto0;C+_V zJiIvONjzxhr<(t8UC>of?hQtFe~O^Qr_KoP=Utqwe&R$wjKj$rX0ht#NXt1OHf5;; z%C8E`vvRZ5siQIJD$Jdae;X3($khot{DpP={+;Ho+fK9QSSwZGZJTiO#F$q<)fqwv zlU>pcWz11^=pYe=EQ_dpb9`#Bxn?P8=k)t!n6z@MSfM-XP)iAK2*I5uau_6}Fmu)e zn->4@T?W~7a$oh%C(2&wYG^URjI0Kn#sUEfjs_w95L!p}b`{l;cKEs`k*3A>J{cMH zk6PL@*mxgnc?aUbGRdEcQ{Db%wx*dzcKoYCE4&P!Ma>}z2!ImEEed&Z1f~L#EudRU zI-lXGZME5t?ZN>e44Bsn`EwF=rm$YLC2T7Cp#d(GkGQespHP%e)MN%L4Y$H%E1*e9 z6hO-F6HfIr^_66`z1S4Zp4mkUd%2-?$ft6!hJsS z%ow+LxNeA_+r(YCH2_he;M46?2A;m{BwCsZovhHeX7AW;z+FR%-mQE;E>bNuQ@Dvb z!+=Y01M54mVmOgBfZ4|Yb%bvd4YD=k17n&lG$8_j5{l_{qgAH?M}$iR4V~7^dM%`L z*i^QJr_&lV(R2u`s=D(d#nJL}Wg`LtnAy0<-wvY-EzJ}yF1dUVBijkIMt341?0kPD z#h`!?5=r#v`RqQuLR`L?ImD<8SVf|TA;JP6+*A+|-TY_{J=qLbtqh7A8V^;C44_%7g5yIH&WN_0U% zXMj+f2yy^%i#}y#3;BnZM^AI0C118a#gE~!CyPC(tUP*H>n-%!1*#9lU#<61AE zi>r-pP}~eq9<*zfswAx}$GZ?S`!368-e-VcC2_Q`6bes^=Z0dB6*2EoK`SkljO6|y zYE!MNwo?;my+_#yiniqu?Kf`ODFet=pg+$$&UBRU%RPEuZ%o$Ey?h=e;eIjT!Y`v1=Y ze6<6gQ`StQ;`O4W@-Tgu+_GZp09B66##W?Q<{32*2v=Lk)6)BO_2**{&8o@vPfxm9 z_4+{g7=X%s6Tk|Kk-U2>kSM%{HpbC)M0M zl#!}XL}#eR)Uq`Jpb%;2|444&Zj+Z;{_0^VNs6Sw5U?WY>V+36y9th(jda>$avYOR zSjzF^=>APs`BgExqPUu^c0)!%vOxCvLasYp?A5gJuwpo=OzgEHc7el+egRdsK`&?1 zJ=k5e#+lgys5dx$jY=UqZ&1&_1!EMADxLiaZ*)CgrMm!Quob(x^_KF_=`wN)fl;(S zBE`Pv1e2W8a<7oLT|}zR{0Vwz&Y}@3IO5yJZ1t>aORf4oBR8v_IW7(%j)(>x38$mk zsXqG$no!X)TD*R`zd?qION#CCi2@PxW+$WG;5XvG{Qz>Kq8h6$KXiL2a8o3;p=Swl zfKXSBuGInMBV!84R|SlJp2uHb=ZLPP!wmhz?w4y|Jha-(WSF>1!YVv8b3SIzs`B2O zR{@rX!yCXm49hP07~tk&V1$#%lFB3yD>njzfN9ZCJpfP^o;_UUU;QPN;pE)O=?PVo zK@II0Svr>;I__E35+Q@zX{JfYhe8T$vo@*e0|c)95~%SY2`2f}Bx%V4LOrHrv=hig zUOSS?xUWn$@J395kp!&DMK`49T4#JNMl^1a4+%9q%0!oE#rHzJmzQ@CF+#6~BL}Jy zM=FkCdB7urkQ7+Qr<(vFJENCDO}l%YriEoAdRzTrY&ZnyfNG6hCm|5_Z^u+Ubiy#WF-qOgxzX*rmL89+yYWopn#cVp;v6Xc zo*(=BKpF^mF-~0xM~euS$cg8&RGm2;mYMp;Ty;yOzVbuEyKUW;n&huQ&&baf=YSf9 zlWiN6{(tg(IWs7O&`{zX-0rMJU9s{1S(=Z=%XPEKih`Mmn5F^eD=qSFn&V7x70r0L zcwmMfH9gY_u!KuwS(Q)dz{mmIl4tzk8fH760g8Ig6}TSrp@q8ER!I0Wyr?o?iSDz9 z1F#%T+aLDv@3G$xz>mSScZqQ80~=jg8kxlI8V7%1 zQh6@AiJ?cD^>>PbpFu{BMYK;hlE0V9H_=?LtR9uYY5-SX$wB^Nd_fprwJA}~hLOHv z#guNox%NOytr#&hat5yAZ{<)XKltvta=jr~t1DDGdWt(bs zzx}M+ie%Q~LoLZ%$UX~D7(}THz@F20>JtwaDmZA`{KS_^A^fcn!b`!PAl%%`xNYe$ zUxxdStQlTOq|<0Qg1T*bfhiEaC@f=ooJA$ZUw6&*g9aZ6L`!dBi+V)c;`w+s4blU+ zuG7YXJg`=Z@IHyY=$X0V<#j!14|VNr_Hyt266!SU&s(Qs7k0oC;94-a{K{!X!mt`} zKp8&o=%A$do>O#OGw%&v>|!e+Q6V38n42@a4pTVAcBo?bp&S+OytwRxqW+XZ2@=-aXHl$^p+XH+WDzc~-fug{Ce zU_4ybM-S`0E_zlyn%_eYs~dw;^rvL`vt?=5tszOHZ5(&!?(Hyg-t|VIANg3^GFql> zJt!)3+`s9F^(8UjT07L0WZY-=8hhE*TrO+Dxa6nFcE-NC9q6U0muw^=8 z^XN>y9HF8XYFppc_m|`k>}R__8h04?2E)z91>#5*6?u|4yioJhj*+-MJ$SgG;pki% zfG-5!c|?82T?w0CX^{OX6C)jQe(5U zU3vM7J~M=>#d?8hBo)M1|HPV)f$*%j;G$%ZOfPJp7B=p=n^ETN)@Zz$fn|vy)>p1v zUET94T3Kto{05!AW%;Y#dhOw7M9!V&)P;ud%;zJ@k36jiDp(-mNl5FYQd)7e zX;SPUpnzn$^PBNI)bD$Hbr%#r3>6lGQKNC;>FL#3n~9j{qh|^%fM2s!#;0WlTPl3^ zQ*N&^4_xZe5BL!>VQfcqN4Rt?zBT`_ZEpDfo)|ekdbQ*#0SR0=zy(9FNuU za#t(G;WP-PVp^*7?|O|`toOW$$}Ut*_U#D~il8j4XpzYWXY5c&rV+#IM@VDcoSQ{*I%4je>J{e z{v;kTM8pZJ{=TNQs5U_GN+5Ij0dbD-sH$81SNy8Z7v3c(6?19U9 z@&WA}nPKa&zO&#E<>CviTjow!_)_B(cE=$h=RxRLo=nMNyFcN>$*|MbW5P4@+N9{` zVdl{h1Gs+IfhDsHN(}s@i*dJG^B6&D|0%hL0lVHwtl*(%o;YpmzMztY0)0572yVnY zVL2;Zub{_Z@iooo80vi#cRgRTVXR>I-8v2Kgt+3|6ht84gA zs-2q+*Kp$3>n|>YNQr*qEcumK>)r$y?Nr*5wBvn4Fw9yT_=?f?_`B??9VZYv%{imD^-tMP zBn8Cy4gVa*lMg3unP0j*axnVT)Bh0cTo4H%*7^?d=Tvg;KPJ2&tp(l{ew^xTJ#)RR z<#fAQ3?~01_E52UQIO6xu1>E16#R$vD%tWa7#!O%jok7hkO??s2QGLOzg_43Ra+(Y z^fJ--tF{axC%5L7#6IelWZAwG$;^%0{{<2C-7GDZ8v<#&fkxX|r?32aM(h|pZN#oJ z1ioM>5w{+JXlSkN?+T02mg;qt700j3f1;$i*6hXZd6Ky%on!fjUYifr{ZIK94W^#o z@}h*ad^C&bAWXMaCUnsdz90IRiE~i+Pcvp=R6Bnj5zT2!)RME@AdCvr@9dB& z(u#i+X@R%oNa`LU`08obKf}!IjMaqe{RY}>aDVp{Ypm}1-Rn%#SrxT9jA$2)p>Fvl z(vtvM&?h?k8r8_j)O+kC-BY(}b`PZ|RF?_rR#x{gi5~?QK$<>?WN~tExhy2%H<;4$ zP=@>Pu?LN>dES?n+8K9i^^VANYb`P6`wIeOO;&2 z5*6ZRav>Nw?gnz3&kKk@SYrV{D;a7DXhT7cYKv%jO}rh-OhehMxa*;68&%l%!Qu+) zv@#MH^*U~Lp)PEn@D4_i#fh}*RlJud)2FC(Q_Z5M9UQx zBXFVtal_3V90WTfc%d}+cemNth=^`8T>9vt=ZG}bb6dtOo;uIx%(pVv|0L zS=evxKfv{%eEleXH2ZD0^Ovl)Ju*jHUoVi2Y)Mn9qM>!D_E=XR* zrEWa-yfW^XM9Fb;=Bx{~X-X~iDprQu@x%7V)^#O8FKl7&TcwWW&Q{n_s6k`wg)80LArsIF|(zh&rM z*o3S+x7k5SZlkKybn#@I?*5p*E*}W!jyISa{vcn!3F^CNpz;a8 z`JU%PG9%pE!fx&Ux~K1RJFOt#NnNPrAv5@mytUExp`=>WnNpSdy~xe8_o$zB=6ZeZ zr0%DSzS>UEEv5?T`b({TR@eEdh_6eCVS>0)=Q+^Ufi_-1P<*rJ^+3?w{QD8l_^TUAW*$e+();I~r4&cdfAe-EOlt{be>tX_FJH8N5& zhGL5``&yGys-4aLgq;^Qm5;k+1YbC^fYk>5UBj$7zG!FeWR3lTr^z*S!MwuO8rXqP zR}jLs%fc%gwvE14{S2ektv+wQpB(jFe=6WC$h)_P(a7URcyl_}oQD~0puy2f zAa*RG9!W~H@(zN}FfR$Q^QGi}87R}cm7Xwb=LO@ZB{~R|jc)Pc6+H-oF)L8-$t=iH zxVKLTQ#$r*#G@UZfpz|?zGw0Rm!9DeVks@~FFgnb<{(VZRQG6$L5kyVL>f z;&~~I7#*U~xKz$WEBV#aIvCb<3V0V}D*qVdvtZNkL4C(Ai>(5Vt+4-5Iiw80&GLiM zL??3_7&fw1*{a05KKn#8m8G+|1x?3}xu%k-`<$0Vf#C4)xOwbxyAleSVri3;P2fw* z;S!Vxz>03x?MlS~EGv_opQbe8FwG~pWqlKxlkg0BNTr^}Rpxp58O-UI30p>^h=8-Xy{A3RC8=uF?}#jQVG7Q~ksQ^*Mq zGR>(G|6Fg7!&-uD=8v^2vvkCwtrzMjtyPB6$Lkln4RlQ1pSB~26scY%IS?*NQ-+5o zzqg&!jH31YXAYnYBsYKFmZ7d5V08hYQztIaR!hmtSAy0<(6Ec_D7f+BOJf^YWMiOx z`bwv$X56Nu{!^i~5Hp#m%*6;xkLrV>8e)x8W1d<;ribz5w(dF?Z7DFH$DlR5) zC^oLJ%|N06E+Pw31hy7W;(o3>Z!c#i_Q8Vn#Y3@d5+I7im?^Ptx|*N6{MQ_&Nu#_F ztJy-GL9cz?_bjf?tf#w$^1$F|8=ETJ-kWd0OvP&M=yqyL$mWjMg<>Eio5z21j6QTw~;jCe`on zJ6e1=+icGYtqXkNXzavE&S=U}0@Xy_ZN4A8zDhd@+Q%Kd+Mr3|HasX#`J76+qdvNk zBQJOrk)Sbb_$#N6!y;#{rhRWgpG1~j>|%M1@AeHth~3vJKPz~XgTsHL&gCY-s4tMy zNTEqghH?To2DxeS{HS|9j`bDol*Mb=^4ZEher)PnnzMlig54d4!3Ia-f#Jw$0+#Qe zE9xSG_%h4UFPvE>YhT0$KHOm)o;~x$sfEOpr*HsKC@H=wEZ?oIIjnhLWElF=tDb&K ziKjL*8{Ee*-@V4BdRxSM+0wKjMuNr#8x%=B6o`vrIc_aF%89deE9?7QU zypz`z2&MB5$la6`xjrnic;-zauh-DAOX7}2DA4vu&R+U(kybKI*!4kTBvX>2Kn})s zWZrZ&-A{^6eO>`-(+yaK*E9{3D5w6Tl}?|ovmKQIv1Y=0d%=UQze%pY1P8{pxzZQS zkp8+L&>t2K*j_Z6c-t01>3&{$ZvCKq^&2M`er^e_hzO52b>Z@Grl;;@GA~8cRhYpM zKL)Sp7w%gkXQC86)6c{oeqArupX0uC%Xr*QfNY~$yZ8Qb?r(?NlV@OQa4K6Q8@0>4 zvT)n|ytBy&S>Y>lmoSv{&m%I1pJ3Gh^qa@^*Ft>xzB|0WE@~s|kwR6@&#~EBRwFTt z#BCN6q%DqmqaoH)ayK}Q+b6bURo*TZUeZ-!vDnFNJ0x?I$aKo5L{d@Ua=dZVs_dC^ znhU|gc8c#NaB`QOz!(Gi;@;`$NHH}$-cnvWmg~$i!CG#soL8n&vPrrxuyMa;8x8aj z=BHvFsZv8Qb9#6VHJ{9ylq{011|FasnBYR6#N069(7>`|X=8zCuevim+y%C}KAXUhzfEvGK8h$x_nli{?y@qZv?Q2i>4o1OiOlMQds0xsev1X zoRu!%SYd%Ssre~hfDf;?2uxEh)9?cWb^WtD(;C=U6_=kT8lLHZB#X=vW7Z>7y10#L zFh+t7QSV)-tJ?e$$R$uDf`s`s-#xMTQd+?+HOK0+73B`@&vif|G#^!k_8)0Psh^KV z{9yH&xllf)4jvur5k!Kcu{)=7T)gmMl!O~>Q-n}B1#oqegkz+%%Ei@%pY|Yrz&d3? zxj$beOpig}Y`PYhOjO)&e=Z-p7*n`7rml}GhTA@<-A03`^3H9>ytq6HwBxug&>HF- zOW2G(wGH~&AgyI8Kcc&hqCjD{tyOT`0|uVQVX8|T1b*waw9OdN-*4WM*5V;%*KYC* zGm)tw@rH4Xsg)I^rql3{`3}_!7OE2oq;b>k5`R}>G${h-;FO+$HwFg$s7 zvbP!NZLXWIsSMy8pAq$E1>4;Q-k|{mf!r`E`YC(mmuo7Hjz{*@`L6K2SL^{KeZg7u z5tQ8F^d?Yav=YOTx&3+~_15#z)iSkL{!8mfV1mlRW>#RC4IgVN+2$bB8bx#Uc@}|h zsyp-g#M7luEvo0Agzf?Nsh3YJ2FO37#&Kv+6_?oCVApXUxS;X?T~G z@d_A!PO;igHoe<-JFeROkG+1BbxTyRDL`@sEpR)ZXdnR{MEob*-T@zuKXivgE(mPR z_{BzpP4QK;N(J=kPEqxdI&1)gYV%a=1YSVX!dmtBgQa*sJbkYp<{U)ba5Ad>7;*BN zDDV0@`IJpo_ErS+)%%fqDxvFvsZJ70^;Lx+j2mc^a~ z$QQelo*2rOfw}p5p4|R->|DMl@=7@-%F-W+D15F#RU1J$SMT#CYNIrf_iXiMD9AtL zj*Zh{&nT1SU_`bw}kr#5m_?ADHe!c`%nVOP^2c zI^&-feb=w|?Oi6q%k9i|$o9UAaQ|%`Z9EYCISMwxC79r`<{+##7#SfKUu8(na%$R) zWJ0o57$tsnVss7)CU5XUF>mQjFyQND&vG`nFu>dtU`4Qiedo@5Z^0#CyokD>` z9l0YUa4C~vfpp|Kr3jK^Rb~Pri5#PMzyRtWcI+)+KS@Xzr=)!&uBKviosk8PQoXYG z!_g2yRr34FKQ2E=8MrWI2BZZ|{8xc-3tT1MyuuXRSuG7MgOFTMG2n}(0i9`+vxe^B zukfO{8wb z-IrJ(_lmGikd%QV@#s|McH4wT`QP_@fA{$SN}0}}`WQCOaDQFBXFoG{ok^#y?4Zt@ z)CZMdp$tq*vO?xQ7x}zB*Mwp-OfN$Qg%RL)1_b2YaW`lR*d~EMyA7fa7NONG`J`X^*nftNGs`9FfxBB- zTtUeCb+eGkO73v>qazF9oabgqp%z~DySOEnn6M%%(Yw)<>o1&m2?RrWT5L>($XSFs z^F8xdOc}Iax0EsHHK>ZTsbrCOh?vsU1*Ot{dcd;n15)0SYpv|xt4QW^d{7( z9r7XS6AiUFpMd^RFs~BRZdDIr4)Thorm!rxy%F*JReH={=4p~fQJ74WG*dn>i;8DI zcDRuW!A+*2N0k(1K^3Bn0TsFRyn2i%tduM=+Y+JCKd?RqG~DD6Nxg2xY*_ui#_!nw zoiN;%V~2+K4G8YyH_!b)0FXd$ zzXeXd*yqBFBi4>JIoM2z1_37=2R)p;?=Zvr|BO!8^7c1e!TMa*U4;MuAOJ~3K~&8@ z$2FHu^388uOQF9-K1vt+zDJ5qEI95hDkze2K!v3eEh42D6|*$k4NR;Mp{6MUE7!m% zKt4B5*GW{fgRfgS-K8Tl`tw7&#R6Gp8Y2yvY*TuN)`B|e6OShGF1&&Av9~dE^sAh|ti#6ZucFrooPOd(Y!u_7KJ@3YZACpBBl~>@ z(HZiz#r_ALVdL8lv3bW;>^b^XuAf>)zWQeV<;mkT=D&#{#R>;Sjfx~AVKEq*vP)`P zM82RJE?9hD&$v_{2x3U=GZqXaSZtlpP9>xZJp9}g z>vsMvmtX%&T=9W7b7JnNd1%*8c0ab8=E4l2tWmMT=mwz~F&0V+JWig%n+!}vtjCF> z4oaRx3|G_FM={BAme(nn>2W4*&~OEXOG!g&RkT|RSl*)n%jQrHZUGnr}#9Gx|}bchCli6|DgZOP7*&vs2I^` z(JpgBrvY~G@BI~jp!CI%OvhAJNvtI=1;^k1{Z3webKufTE@8%}5C$~bi)JEuE)hZC zJ$Tv_!Li&e@FTCklCR5%GtYd6j_*-9iI+8P0#-E`c}oyE4W*%qu-+3j1g3uZ`;TOS zVV0tc0_QBc9x~pXpuKr3rw~e8r5NC|h(@_Uq%utG7&%W|SHv=5xvr?Fsp<|LIZHa$ zVn&YB^d&P&5@nMtug+lga-!5xp5Bk9vn1raas>a@rYD4eu;>bbfQZ1nDj9_s;XGOh zbb!nW6p9c@3R~c$!wE+n0(GzuK)8Sj3RuBunR2fzDC-0KZ}wb7me912YlEUmZAPRT zHddOQb%99Qc;OMUz*xbUkW{AP%A|qKmSeSH6f|uTOr29V3Y=+Erv+&tv6BrN z&K%-h)oE_(uB6qPq!`5b#L#jXkr!-=Q|=!cDk5T`&|+y3zr+s~p(TS>0~r+Y5bp2; zuG4+aEzd{A7K+8`*#rMJRR}zS#a7BVQ+VxJkd8053Or{R_#9ga+`vHlm3_Y2mnbQi z8%X9(A0xm02*12$HMg$Y%8?&=55sSK9MLFoMw3f{84Q{0-UPgNtn`xp1nv4^O-g5Izs%REB|-EtCN9b?94=t@zI5}fNZ42Ei0 zBZQ*1E#hX(NF@wiO;#5Sq8@SRqFsXT4#|o(q4NCoXCLDOzrKdnnwvPYyiM}bI9WDF zoHUqC41E`vNHXlm(@Zj~PH;oX$d*KDjj)bUU!t>w%8W2RMMn_>W6`Q&RMtdxL~Lg1 zi;N_05Vxlo6^HP-pwV)K*pfRzoEwZA66u6y$dJy^lqoCSfQlZ+W#CJn{ycAa?*#9C z>-F@bEm&ii!Ewhw?n_jb78!cFX{B%>$q$2v`xRY;wY_$FSJSeH_Zd7^YVq>f+%!HnTqfTkhQDV4I^ zx!dyM1OEq;!(|ld3_=+qG0D6=14T^g1g0hVtFIlW`>l_#efty_Z+koc<=QK`<+V5P zC!cx%_0rdH-XiOm(#=rn7$0J^ib159+Ed$ktcwt$MG!rjqDyT1geYguC~Tf%LP<*n zO0f*V%Wt$SvBVNf{6|Ilg1&adeifm}v2l}+?GmUD{0i^*qfekFwxE>-7gHB!2yuqi z22&?II4Ahy5C0(tpZYrO8e&#Zt5X>3sEQQS0Qp1y1fHcSbzReHHu26;S0ytuGu(dr zSGfPa`?=xT>zLkfE_5caQAY6a{8LZy%!3b5%+2!7pSm2q>2*vq%a6TzBY$h&z+m53 zNqvouG$%?!=7+Q+4Yom909vA>44X^PFTW92TZhEZi7Y}kL9L}2%%h!U#ks3kJN-^X zQy}YzftqDdDfT?_BxYeh$5P2z{WGkcUd{3L1@z|Ui1iGSm9&<}MAKV1e)0%)HAH)Z z7Y->GLoaObh~Q}16q$6%l|+w9j1U-`a%{HX?BlbnTtCIhXV)>B*+(Z52o^||B}6MP zW5#q5p#9UHzQ9L7N8;ZVnlWbI3X~?quip;NhJeL7$Ol+fC_#w zjNAvL_b4FEreUzSvllx-kpv=PkSH{ordKTBu%-eGB5BbG4NiywYi&TNlwlBTmlc=F zair`LSOD9iVFV?L;3R21z^5@r1w`c$kz{>Su*poZx7g3fBz!I%@uq5y5Vf&QM{JVC z$Ts2lana)5Y$cvq#(IIGRkF*r=+5T+LU%c?ZZH-NFw`9NlHW1Uak6@etLSjA=;Pxi zg@hnAEg8`h6;YfqzEDvn0;}bsajF#9??ql2C24-2)TIy{-a{P%7K_9a+dz}Wv4Yg- zpin}hRiLttDj1Z^XoZN`q$DXJM17{K2FsIi{wm6NPjwVim&CE8j0N4HAVewJON0@~ z2E>WPx$UejL5q|2C(Q$*gQ6=$rGH9wn<@fZ07qA95Dh^9$N;u!BN8Bn$~F0WV~ znoL9kWUY`|V`HFp_+U{;&Pa>$Fc(Q|1hYj&S&Yb{E{SYX1R2%DmJ{OLMSQ#BzA z2rzSv`sa=mSecMf3cjL88T{zF@4j5XaU3i<(ck@If7`50znh+zzkhHC76k{0g z(Ln&3Sfwls=Xj=`=2iP2;+#u2a^q`WPjb!#k3X>hvrm(>B}yjLb%_)PEx_3>t-3`t zHe#4Nrfr9;+vKS5@X~2cM?)@*Pt#ekfrS$eogQJ%8agA(pqUZq)2B1x(RJ>XIn&2)cw&;e!FC zkwM^V393OI=fsJjs+XZeP9;3)EAygUVu>Y|_;6kDFghFS1d{? zsmlrh1n*E%p;W|ZG~)EkET8@AR|w9dq(%yba{(bFQfaJreD2ThpBX!OQ6T{<>+@LWUS`C2?el+&mL26+T|g z?#B;N&OSlqa@KS*vgx&~*sz83Zn&NocY3Pod0u$@Y1Uu5o=Yz~n-hl}p`2xTr%PvQ z1EbL4)ZvG4WuFLx_XZ&WA#lOtag62`kjv-UcKJ5!^DSCy*75XrA0oID9NfQ$^QTv{ zWBbL-pI$}2aDc3-S$@tYO4>aAz*7jH1J#m{^GXRpAVOHwa)dzo#ro#8KW&oC&*O} zI>lF#LvhJioiPZO^)4l+qAL^n4&ItbTIn=cPl-i(MTJErG2f^xua-xV;v9r7i3bkV zkPKqaTbbg&=O-va$%)!oWHvPD|fuwqzSlIOf10)M-*x%6)XgY z@eXA@hL<-}R8gRI67K?u4Co}qpa?a@wZ$2W5S~(b((gH9^rJu`Bz9mRDM*qA{U9N! z84pb~@bPptza7nU(i|r-F^U+Yz~Di|->Zm~oIf;shg{Dk3iGaKge9C%y{g-%ma}^Ve5#$IX1eFiGrWx^< zMHgA0pw>C1O^7Yzv7odCvC%Yi%HFb~YXnZjSTAt`oC`=6OB~lm8FO*YGNE~0nBb~x zk|fTkY(TpKQ4NvR^tIwXdjh8gkrw1$(eW$^IZOON@oq$*$uV8h3@K;%HXk!%+(X1S zk|X?seu{?BbYw&(6%Z(bq3&j%^-~^P_z7_fKH`ePA??Ke?BSw;p2q4VUrwpWR24De~Y+ zoTQZqMva(eF{G?24(#i*aot;3e)CPt-T4^8l$6cYsKHUDnvS_JhH^DEIjM8x@i97b zEkQQOl||Q%>n0t|3od4VUsLRRiZCj8$J;LEas77oedVJl9h2yiwwPf3q#|B_AxCg;-8-!G4l_fq>M_Upcz&*MQ|AF2-Xob6Y|>e z@Pj9K>y7)^v26>dn`1ox)rX1vEWQw!R3S`FlC{XI0dWAW1lAQ4)nYI~Eo%}Zu_hsn zn-odlvHSOM^##Y-cJ*eS!*Sv}cR_ndCR><7VCotZ2T~D{by|=Q84laDgJH|Xl4@cz z`(NzRDWB%C%5mch&$IcgDV{y|R{YU#W2;k`P|7M=3tkIBN(v5H;RGSX|B!@&(4~nvu*PDjC#) z7{BC^w!{)k{HLWY8<=K6={@7MrHTrQ))aBo=g;mNG5Fy7_|-r8b7XQEV5w}%{l|0O z_nUu1c=k>rcalu3#Ml8&4UuXR??6W*6d8_JX4d;3o!~r4lHiO*X$44(al}c6^B}|G z7Ml=`AS_7mPT-8ixxg6}^VvVWhj;yQ7vD;mR+Ie1ZCm(EZCTiT2OTqmmknyKaH599 zB3KMs5s^i@mzQ$tq9l?ArxnsVri13(3wH42oaV&Adugj7BI$DQ)GXP|h*ka=V#Bpm zbnzl)Zdfz((6=~$%Y|I9;e2$oiOSR*KUuQp(Qgszc@z~w1e~`hDFH!{i}%g_M^3Y0 z>LsS8)}YSc%Hh*}v;hkS(`hx9DuiZ*|_A2tyGc#v7u>W4v;0!)^5MfEk zd8J4c!3RPJNTHBHVZ1@8Ks&%2#w6;%j-ySM-a7D(An7F>LER9vU9Q zs*08re7w1Vv*mI|p`ayGupSdU(gjkfxFK}8OkTh;1g@pfA!6jKmpwnO_WWJ!xLxe0 zS1r)W14@Dyk}4L9X2ISQ1SCo>nn+2>$zXV}p5?~z7#2KfqsfSQARwX^D=hqu%J^+R z!1)TJ3{j=Pd#XmkDAbHZN;{5-yrt5C*mO~l9{?> z(nhGHgDGnU-m$vr_+Xxpr7LkR05wJ_A|UX||hyUtDx^l?QeKVYY&p&eA&F^5{|N6V^+r5*lI>BY@*D}8GLUzq``R1Sh z5jLFQTX!90&FU}lQ&+u(C(il^y*-b>FlXJSD>?VcDsCc3}IqD=_I4U%%&B#)?PiOvbD|??TR0It(7Zlh!pGdE|J7KX5-TkMPYv>H{)@y37}S zmm)z~8%z~Q5|1|pG85Rk0#dT1OIGx`_f(5ZpMQw3c_q&raMZ^ipy(RnQNV|aSbK!* zAcWD^Km|z}aJB`aX7yPK=dOJ%Lv5K}7NfIiE?s4qyZRQqE4lZ;9NEkZ z;Fipemsnzn|C}fl7z9s8X1GL?jOH1|LsU={ohkn2iIa5R`^)_7$Nq$B^=6)!ZSbqV z@%JQ8{XIm2!bgg z_9)W{s?iblKa=u!{tQl!5UN3%YQkuQ5*n=pQVL83-h&RHqynYrm6`{?dp}tu8Pt*} zG_bD6^42(g8_~}Ny=Pv)?RgX(V#-1grCq8#&~0hTY6M})?D+o&1i}Y`SbQymBm{vJ z&Kio>P8ACvM|wPpwMc5_PD<6lo|Zg`(jihKZ$FrF_x#Ia!_I z%dX|A8ONXbgG`ZHGjtU` zf<_%Ey+LA0l&6$|TzV1{P-HKAb`%b8L0L!p|6%XVgRNWZ`p(bqnbul+IMX}a0T2Zm z1dM2)9XbwxQ5qa#?2558tz8vkS6dxzyVGS?Qq`TV*fDBM9NQtF5C>2k(3YS~N>G{6 z8)O!Q%X^1+Jm>6bt@TX5{$rmDH;K6~RWG-$m)f7IU8hc+I(x0X*YrH!=llKrVx~1y zHcp8-GoR13 zumAg8`Sl+sHHWX0;~U{`eg&l{*J9x}@4An7{njsH>V~;L#0)F0v*t}Nzl-O7<%T<+_q7zK zyys-YYhU^fc<-;VP^jYhg`a#G|IKsm=V?#-VxIHNJDBr#$jvV{PTv~T9x>~V$>|1WyhySauyP&i z_GvrCWX~))G~d8B*ZBIc{sP`rKZ`$o$uGm~Iw4s;7O(UEw_n3wxtGuTwmUdFY)Bre zX$jJ@N5M*DQwmxNraCruBrZDEw(_3We}uBWN@&2Cf@TMz+Ztynvn&g8JIB@udv*iT zBi`eNOz?$8p9sFg)`nHShLk-%_{LYElLdY)lr|xGN@GSeM*3>_@bCNvU;MS7Lw?3L zpvLigAGpDrfAcli)8D7fLhl{#T&-EZ_!WH3^FPMzPkuJF`$}l`c*}hY?t1l`xc-jU zb5T3~-CHta{Q;i&?0>-K$Ywdy|2uZcDUy^l#bK^n&pN35T+NGl@B zq$opwg4#ozt(dYkW>f&NPz8!$t)+-kT||ALmO^U=+LTx{o>ft*u8F3>OQx&~-dRi< zpdQnCPb?ciPHgC=Wt!%d@ooPj;(Ss!v9>~&U%xvbI0*&U_PIsV?|2jivv8d zJz^;yTSjbk6u?*Io-*<>bB#SIyiwqN>z=t_@E1(H$z*SJK3E&+_=$A95Xc)g32 zp5S~U=8*$wc-7nQh=+_q)E%|!4u9uhIs8ySnCD}2h=1S-rh30Cvg9V zUc(q8_ZZI)|Fa(?jz>%+<2sM#5%rGS^puNV@QwWGG4$_#GrkRM(uPS{fWIAyi8L{o zXlSOwJ)6uA{_~$;kvis0z^DbMl(EOQfu&cT*%l6;{2bnTX+iwJo3OJ9vr@@TMvJ3n zi{z0}JpcYrdfs{0&k%z$mQ0a>!~PtNKSyjJj4S%=xa+==_rCZysreQ7=^?o+a5}-I zOrA&L`Usx~e*KRxQQrQ~nGBiH4|L7Jw&t0w%#5Wk87oI*yQDD_Y8Ki_#IQ#$j%Kn( z1^)2&Kf)Vc{XKLBMkh2mGDJtUfmt(fBYE~~BKuntLU-)gvEz}Vksf27$T)nE7z~YZ zj2oakWxpJfhr-EW%a6SE8q=@;P8RVRll>!d@~A9`J>=BjJy^RU7>A=H=Y(no`{_Le zANqk(3f4JFt%$LRwWJ|ZYsK^eMJY0D>lR9a+EC-R)@Un^h3oLP=js5z@-x59w|wV- z-uVLdZDKl|VZ}psSnWV8#U!$=SmWWWT*iM1V?b@9@s-ic=<}Qpz4w^Y@zs3BQ@@C3 zJ@vD>rk_nrYp$GR-uLdeVTbo&aV+}4USlX_&fwO#W=@+LjER&uqmK*rT%Z)Cib2e_ z=@A922&oomGQK)e_Bc@pLTf!ajRcqIPb%Gcq4+(rjF@Rgb&5*HX`oU-c0$fAqg&PH z<5_S)(5*cOk22H&Qw^PU6z^D23FAmx3lXr+5X9ik*2!bVU<5LCJF!RLTyq%I#W?~$sseDUmDD{Z_S)yMz%!kaCX=aM&t$u+X zudxVw&6L-q!c)48xR&EZ!R=+Hxn)=n{N33_zV9^S$_#Y`L8 z!SD~b$j@_yUz?wDd&+!Adx002me^k8eqG@9D?fbgl)VHWwU?QTLCu7vfh#pqb!6tI zth{1G!8*Km*jQKxgY=cASb`X$dFYJkC?gfOEilElh_s7fQEYJ3am2P2U%{n9-v}lI z&ZU;yhKA*I!~YXcNbC3V-1D~+YsVf9T0HA!z=@^fgrBxg<-6uL_{g>UklRMGIic$9 zc%ziY;k8nbR-hAws!9bW<0;X%>~A2tM4TJ^;E4!rJ0WV~ zb4JTDG|bkP<@5?nFCgP7(sXEcbSBVah_&KE01B>V3W-X~sTpa;L{nNqXX!EoYY-n; zCr4GKua#6Yct>bFH78Eunr>tGn)dNLQJ=*3=09OsGrkQBtBRURc=#^89Xqh8W7HL6 z2pkTT>s5JiP=4>iyZN$>@;N*OuR>D|p>FfoNnjHoiE`Bi-mcgAv+4b;n#5*pI48jyVj7IUxMCydaCNndh(69OIFTIF_XYrIZkOBN6<*Ag{e$gnZn7qVBcCY30D;c zAvV`3`H)yLhh0k^l^VATO>PWaJLtJhJBmhf>Z#%|vc|d@aTH*Ka{=dtoGa8hK14JH z`sk@n7$*jYW0_{0bA{1QAnv+W?bxy7(aHHBT#a{An6poT>WS?@5YMXVNZrWZctWM6 zcL|#sswlouRHrm15N(gMAlgw&C6y(W%53laHX8G3OzWetRb=O)@vl85?L_eq70mt%xFEQ%goDu^tbrx@7&|1@4B7icl-o4544j5Rt45& zfW|RmNmc1?vY4!;;DTew4b^}tm&g+M@I9CK*xj!urwz#-v)?_QWje*x79)leD;y<5 z$_Y~hZw^U%iW=};$Ew_e_d+d|tU@({GY-iGYDIurG8@y;ZX&jw5Q|Vc!JnSu`~=HB z)5*ZP&lo#mi@~{$(OFg-$E3Z6Dc#PI^QmBCN304KfjY8uiC~0TZuvkKmfd5xQ?78z zV`;`U)8-K786QVX*=JEs&|XgRq zBAe!rADRrD443%Z{!Ug^h`liP=SZ7-*gI!gnZ!@$+xdqqX|+XkN**0z*H}^18Ja9; zDKt5=HQiViHDb$vHyw>N*jg~T;t8CxAo-SA-HLluK$L1SrYcRW1Q9;ZM~oiQbOS>^ zhtCN&y`9Ued&&Js;!gI?U*{wl?u-*wuEDKNDf5P0uMvkid9UGkb%H<1IJ?hjH^QJ) zt|R3TmpX#Wc-tdtu*I?OI{Ff^X2o+R2Ymj?ocGsb#^^9M;!~x%os_fV;bWu+V`&(< zVMaRRK`Ymy@EcBe`Rs!@1g~<|K?t%aNtC?p8Mj5j4wkuvXj@F#79qdo{c{N{Zex&$-#O*Bx+hfc2x>dDA2WX|_2*z+grDB+k5j@xt zprhC|qz3Vjat0Ha(34a^TYQa-L@bbvMJf<17Ko`p3v*@Luv)g6`iepox(Jv68CC+J zHeefiHUyVx{FEFs!?MR&;cfTLdH>J6kmvq)FW@V_^r`sn%UP`9^8HtN-EY5%_uTbn zq8!sX4q)>FtQ_PgdKI>cfv(1MwZ~a5=%J_9KTjT%T$+0YpnRx5De0Y@U) z%xhM>RZW|3z1xCB=Wc5GhxABh#&lmWMOs!{S1W~Y@DH(!dxwFXm5IaLwi6r3ufbtUlz#2y?pcZF*IFA$pboT z=wpT0A#UXVxOkp*U2s7TSchZ$O{%8v+u5u! zfoz1!b!1i}FKBK@+I>>7q#B`f5Ks8C9J$u^d{cfi-*vU&D`!t*RW_`$u)o*htk7<5 z;~VrNtna&r1C&i?@k>kGL|SdBw$N~$8+PQpM*iL~=PSbz)38rvimir2ELS&6zGDA2 z-m^L(=MBbL4qeA0?fO>jc;qm!eF(C>FQ5Gi%2piR@u1xS~ ze*7nB+8MD}Vivq_keZR2I6rM!$Fu0%e?hbR>3{uO7=0sSsWjfPUd(8HLp42F3pcZF zPnd8bg2|4#4_q2I{HuTUFS(WsdorbQEvF~fIp{oDw}a0#BwqCM|CY-m%w?bLuvR%! zh#thP3yrB1Tx50)(e(*2 z4aPRaD?R_$9jE-@>72)Rj!A8~p^4BmglZrbzI!74dHoFT%m0DNX3jMem^s7Ky2SUl zcM`&F=&)qahF~ii2d=h`g)Zn^%NN=sUNmVqxOl{3xIvREts0`OjOuCBFf|>0fm2^N z+62DN&v{9knJibJBfn1IYZo^-Y97ZJBDoZbG?Xcv_m)KnU`A3cv>Rn`%1dM6vb#oh zN>?Kj^{i`Q-gXReLq^!^I%3Vt)iK2D)L^luMKn^<$fRtmn~%9fXNM5Q`cJ zF(F!L#>&aw&0ErV=g=tJ@P)l~!wc<#K40QHf&(*0@MszkXOPzLSPUkgXNXG9`)@ zCG|SC7XEhW7+nL_vew8%8g6R}vYav12x{nW5_{XRau%5eY&>L0*O<;a z#*M+UPbvxD3L>6z6Gx~NM|6hHdDhD{Zm&U0=AwA|u%UHR3<+Z#HC1xj&{)GT6uQPi z9^uTtxs@g5LBBtc>%Iky!#KfM&+(0sQa*}!fyIVgD&7{#FoLwSzQG#<<0*x+f{nMf z^&LBQ?AWnm$1SiM#@-@o3~CIRZIN12L8?+vqEU|AoYr|pTd6s7*eeHkyl-ewRF>Fb zg)5m^GDx-zcEZW2;rqv{tk?H(#TKfu*laP@5=X;yZuwv8A>H&GH*92P9Bw0IXBhQ_ zB0Xyy&RKdH@y;>v4GocEM-D99;VN!%h1*l*Kr06VM>1hygfb-3uobC#DuWc7Q2ASR zj~mX?x{g!r_%+#(?G*+|xM)a&Afad3gLj!2JgOB0uA0Cr;uUO8bj2c!46Q?k$VjD; zKqG;Hj0^)qC-jY>T8pa|Nrs|^>O9q0##$-xkgv6=R0_5fL@Ky~G?oOoPht?f+AOi{ zKCUFz-HKwT{9-Bm+~yLid>N5}q>2xbIF7hpurh~c!TKg{9Dq$pTU($wg7e^nCRj$V z3|`nYjy+n;STQ+s&I-AnaNBUgKgoxD-Qfi`bwcX`H_C!egzP8$R=*%Mr<{zLJIaLO z4EM_#^-5?QE){GnoHGr!whSd=Qzc}_pqa4V3X;C7cnVnx#X+Y5Pe&39<3P1=nk%tY zYRcHC7}H|M$jSKW-CA+SUwt09!Yfcjx19q1lfUhF^kS6l!BqvVC`v^ss-#+>+b5Zp zDh&|G1qzlL0;AbRkRMdy4mguYWcy0-l-5oeR!Yf{`F@~kp;TeDxp{P`20{7}>l|Yn z7{GlhFgzP2fAazlIM}CRM;I7nv}#N7O+$XgqeT)JkhYkgq+pc$+b%P&HAsM}n|vJV$XN-j!liY5Si*ezg!Bxy8bBF({-i_ z*UOqI4k?gEkFB0T;!WS*8AC;gz>PX`TGvc8LmALAV(W$l3!0{oUC(B?&i_y^@RNtn zhqbi{|#&N-Clm*|~9PlOK0?B*qUPD`9T3R+WVoHnFo>eZCGU9fIza5V- zayCV;Y-{4=vx)wL|F+{%Ox<>h6qH&Exx}rj(HMMasYa+`5!WGhN-lw-7V!=fZa(~( zwhlv}b#t6GtX9{yZrZwyY26I*TlZu?E{RgGwqerD&}s?du~>4B6je$EXNAdZO2raH z&cvDrqE)vZrTWkI4?`|_89aDudZxTd4vIq7fyeA}^O z$BrF4c07FSW?Hw%c1=vFW}B9mvQ@`a1r=zsXC{fxd3pmwiI{51wUTuNDa^!i+!XFu zD|u#E>B#jmuxC47*Bd@FT;|)y86|X-aiF?D-xLm_;lGu{z0FhjoqPp}*SHa{vI!TM za)CTVR?UD%@iCLfk+~>q2aPJOo8pHJ*JXw6rX(>W86XHgLoO@4nV_+-=RIV@`DWzr za0f40UBgYG=D;iKivP_nSeQGg3R#79TgZdKn!>zT-jgf8m+z%*Dy2GBQV8B*HWleC zt_X)R<7ns}1CR9peX!Ao4ZcFuyla^{D^XhOpalbfz z++F5IJO#J^kpJJcj`i5%qG4tmBo$7ZCHp=60!mt33eYA64r1Ik2=G7408f~0ZE0?S&UIyUGocak;8e%q8O%<7;MEi4P#?y$zUd= z6zOE-sOuOtuq=`6Dj^G#64;Z5m+A?<+t3zIbr5`W77f_3t-K~vzfyo@3rcU|mw zbfdaGj%QL1wQk*?);h#F$ZJf^fTvU;$B3zlHx_RaQqF4J$R}iyk3Ufa`i&x{Cj?Ij z0oBU3EKmKUbd{P5)hQNb;sPaCYEo>ixOqbzH~7X7I=}5|QAWl%GL%f9f`8y7)vYUs zk6V!VR0uoH7}}=6dC!(6fb_9XodH*s){BBgan2 zxkYTLlruLD0@iRAXBX6fl|Xeph+?v0N?~FG)dhx5C~+X2tO*ji(K*US2{4O*sqCAXSpwX zW^G3rmqe{hq~VAG35FY+%q&4@rmSM3_1g;V%Q7;Xdg7Rv4vyz_mS35*xN#)dmfv+# zo^My&QAT|6SfAMBj%Mf?W`?$SUY2@Js>7K@7! z_XCxANG!8Q(VgdE$0JHLP!&F2i5@_pihQEn$c{%Z#%>Rz>RCj}fNWJ6Efvv>m95jo z7>o5=XRFo< z!BdREQ&F|#nxP2340KM|70KDLW5P!1smHlwdd)lnIB3G-zQhtZy&=@4{@@AyrPpm zv|i(%`aAeX(Qy9cI^i*eYI@9SN^%{=Drn+kW#sRVA7HleEV;@oSE4+QeEJav@92g= zbLePJgc~;Uqw9U1KA+-(r61NPhP51Uzzx2^-o`Jv4(n8*QY1G6&a zbeh=H%zu~!-m*TW)k-P@Qax!}ICrCAm_hQwL_N}HItP=+k-gBUU{(n~75X3~F*t!( z3#Gzsb;>o@KjiV*)D6yByscEtF^c83(wD`(6+{hKx{a!Pd&e6gF|gF_9v3iUW^e$HcPs;4GbU zs4Dl`M5w|KEwAzha}U*2_BmkP+`#*DI9U->CW&EQJ*tM$ZnqgtMn=!*7r4mTI@Yrl<)nq2ANs@Z*zqt^ z%4vTgQRi&9d?`aq>HmJGFEjKPSdRzt1kFAtYL z=tL>nlQs_LTE?`X){&HiwwYnAkn2Ooi;SIMawV5Ui~|!pV@N$~?a6UKOrWUXyrY&( zj)kFQs!dF?1^2+pkelR_yKYn0G5_xRSVAdC$`p+V zGmg!@Ov}hR3fVi11t|p^T0{dQ8*DUu$Zz=JD*WSC3Zr8SNaltsRu3-*YU!SGA&1XD8$24*xQ6B*$9GH?a5}3p*Qr+KxvlfYR=wKLyCe^}_kCq4x!XXH_GeB*LgvBe-^;ZVIgiFdIe=8Es+f-0>)|)&YFrfBvA2FFQ6V4CNWuNYG|>g zP`zN8pba=qAUc>ha>`f-YqQ2-Fc_*vY!!-n5}+t=NtqYBdw6TUpYus@p=C4fQ9@yo zE9IfP^X~XGXB-kuBUtVwQM3R6AOJ~3K~xKfqD8hY3Na`J(T7(_k@BGTmj_!e6v|G; zd9+i~HoCbzvgR!6ToJ%opyp2ua#W#gEhLt$d-lO+zyqS*e=P0^#ulm;ywv?=bL7g> z1q#oYnb~b-W{;U^%*@Qp%*<}{n3;LZ%pNl{Gc%6azTW#h=fwN|fcxP_C=}|DlxkIG z<*Ld`I1aErxqfRF95WX4B}?>XfP1k|v1XKY&?jr7q6lXb_(jrK>!1C2uSwI#6k!WjA+MLb78X7 z|DFa{bJ4H#6#B=8cqW?9PH?!QPI8MI(ea^)S+vk&N0}5sR~$(c6_k=F8-ypv)^775 z-o>5RITD;XnRIjKCXLhF!&u=x9o}MVn;+f__ezNyY1JvH!W9 zg%D!U0Fx;R7Rj!rQ8#sg&#*do^Pbt@$U)N)WY#onS)7|8ArbDi)&sR8fyh#2qjAiw z#&C$8`8;^M6irBY=V`yb{%1-yf2o=W>{4q&(wK#Dje4<+Ko!}(2%V(sp+QdR)l)@G zBZ3vJqw3NgYD^-5J@$E@+dux}U#LPXPKs>AV1l3s3`a_bSdg5A_KNDKI9g}7^kqM& zEFy%mSwravtD`ahG#ALe*5md0G3SXjvfwx=y4YkCo>om7$%Hn6=8*Y_mjS?bUbE=C|?pONz_zw@$x=an~PPe zk;<{*EF7%PJe;5j!XgwIGEPx=))gTbV?;>RV=HoGPQq&@qqKs3WoS<1_F-14lpy;S zCHX(U;SBs!EbPntDM_@8tE0rez& z@X2Q%43(1v5YQqTB!adOs}0k~rUg^9LYM?}sz_xrE=tpi`7mm%5bLH%GKHcAPBjgO zLUdff5E~J6M}0$);+wEvcRtA<=mmAk$e75gz(#xrU^gYjxczxq3623Bcp^*;44L}6 z?6jZyhDNrILAwoh@l`PhYM1m+hd2`n|N%%cvkElesa|K#^_`%AOt zvHAS|+A*iecD^H>`Sqz`X+S#d$St8p_L>ceY~~K}i0G^Us31yVd@cjm4;xa8`w-mL z8-64(3GUwk_x{Vk_Kk}s;%1wXVsa%EDn&H2?0%MuPAhe*&i=$GF2!>RzGzVbJp7aA zZ(-nuIZ6+zRjVqEz7HK!{UmmNNeq6^W8+)yj0GOBzaukoX(RUPJeyorLs*&eiGz2K z=N*(obu2R0E(GKGF^B!PwF>@bhmf;U&krt;Iw$r`V{O>(xAxz}I5m;WXUvMEm4FUv zr&;z_B!JH6iacamu&`GvX6ECgAgM^eYbuD<pMhLA5u z8WFrLZ=+4*bR0a2kwQ`)B9l5yBwxokYwv3qPrZk`-XUzEOXU75eOY2h5_g%PN8Df- zye0sHCrHhk4z7sNvR_3GZmBy!9kq&0vr5?pD$ogt1iA~Ln1k+w@B|5D{7GWfPbA`C zz55Fs=%SQLE`++j>e_?D`wWk-cZHfSL@T61shgI$?eJ9G5kp4CF{rwH2rYU;M9AT7 zp`R!deVSt>)()GRu@*8>v`hhR6wNf4%5PVW+wn*UPth(X&m`9I>AGh9d794N;cjlD zhU8C7?5ra$8KHQ7_gd8xn2B5Y4BtvUwhARXymY!;jwy-Mz!As+Xs^!PqSbF%3|GR; z4gsYKDPU*94e6xcNi-@#ecI@@r}oRUGiq;|@uQAcMrT043_kZ)%nLvr!Z2xu?`Dh; zK=XDegrKJ(vyEq*$*iMpKRf9#(_#*ZC&wd#%19%L3GfK*TyNn~G7Td1$(W;I;Dm=K3C3YS1{pvt2X$s4{d#`oLeqK-ijFHk769sxv}<>uC78w`WtaLJ5| zgC9|v7#AI6_#l7Gp2-P80pC?jXi1ciF0CVQLSky1%fiYCWw395g*Zw7{8w-TE*e= z1zr5L^{7w=U?C`atV7x=kT|NEEbkVehf$<7v<~hqZEUm8GyCDWX*W(Msp2MRY{l^% zIgBGrH-mORkZpi{5X&g~`R>p{whA4|G0k2UyX3nFv@d2)2lm0L0Ll?4aUkKorbd-2 zT>r4QDROUB4{#R#5V~|S^)0l@t^p+#c3?S3d64T;))uM!vgugDzCARmFCiH{>7DOh=^+?0M;WDKaw-64c*B4wnS99+OD zXB|f>zru!~8e(JatQ_cce@gY!e(qd`_v3Q)g&R>6S6AOMX4f^gxdL7-WL00Lzo>_J z5~_*_MK}xm=_StTpdmV#Kk=v2w+$CvYXbx`ixums#ue%_A=ndYKq-hCs~#5=UYz)n|hp6 zkc!%I#vWQW3g8UM93P^ruwrQ7PbMKkRZMxiWEK*j8l?4$$HoPz5W10aPdQZ%20@G} z7_0h0Y|#qd)-4l?_&0Vl8oV^lF-1>+=g>ZmFeM-fdp2nnXMUpramjV-7iK^!6ph;P zJIGPeD8!$OJ{UyUUx4<9>RVycV2ylI19s>kogv+9^HuwDF!XdcV;mpwd{9ht;=-TU zgk>PZqV0c0$z4F+d8wK)#c!Cllkx=uVX)`tbmN7rugMQ`*B|ah zM51oVoFfItwy`wrgTq-+f+mk0aS=8)Pt+16(FqPl{R`jN1PE%pUb|o-nJof}CDv@# zUP3j(?^RN9qCsS66q61KZ!bz-)2|3_W3CS~QreLyjs_W{*S)6NZU3UgeCfq#Q_)iA z%5!JnH>|cuS}`)%pao&unV+v8$=!3N1CD}<HQev6q$Gexz~8wc$cuiBgu|Pwu7Lmr>P|1A@sEsU41UP1${SMPO9`^|rB1tsh@Z z%%*A)bqw)~Zq`uJMfPN>2&{3D;zz)3eKuAI%;o()?PT(pzYt!rn$AnWtLipE#E_U4<;?{v%7lR~Gxpimn z^D0APIH)lZ8~e4qJc&xGit&r?L4a}ZSf^ck;`XHm9lj1&M@iFk@~)4U#2;P}|M)Z} zJ1VO2(#HJNQntCN7oD-dMG30Bg9#N@xjB)lWZ%U+e<$ExB5JnRW$Ol~Nqw10Gf0N! zSI28EZGM@j{s*nFjK=l&*PiwNJ^W|q6!n{M=pWJl%0I*~5Cs0`@SjWR`T_y}JvErB z6%5Y#?^XZqnxSAF|0l)B78zsze^Lh5iD`%bCndU7R6Xv0QvTn1piuADIh%HhTj00S zK;3rhwsw);vk9GCrona6eAK**JOmNYbXeKua8FWC$EyD}=U{5LDbdS~Y0XZXTm(QQA_PUq2qY=1|G(Bsyc-7^iqezYs5ekE!q(l$t1L0`Z%xpc(MJzJ1bx(iZVJw&l0Fh zsV`Ou1Z&Xup@;*Wni@y3?%qcO+!Z7D6ObL+BQqDFnB?!P-v57YMC7?%p3v=g@t|80 z$`n%yvD%5@2y+5zZm#nBe!Znwn&Tg@DQk8ktfqNY&gCtNrBOpZ@zjlTGMxXY?IS$| zv+HC3UlB_)%5GYa-;Q`Ey@a4RuAmH2=VO?*a*}#jV+PPDIp-druK+3ZI{UXK0fsXF zXCTkIsM0f7xN`m6{Nd%e1i&p0oz%x?bG1M27q$ zMvmlv8=9sbYv6wd`Tt$B{{Qbs!5N+3{!vNCLj$rp*d_G!Q|u@0ojqhqpNVWWY4+3m zlmnx8{Nv|5WcZldoLk>dt+@5!KQlLPi8)4h4^!7O1h0Z0`;D)hzNbqTf8slgNbGTj z!ubAD?%g_gTbaY14}sUzpyqh(BAR37n5B0OT03C!KUJ^AxAO_b1C`jEiXOZ_9{Hz8 z9(kr(n?C_VTu0WO!(5y~ccc)&4WiFeSiOUrsLx+PIUnGB4{Hp${VANoX^HfAJ-WM_ zvF}g;+%tzQKGAQ3b5lLZax*%S^GMIz1<5D1pTRZnhlw4mA4Fjwd$ik-J4UftJ1g%w z+sRXJIHiP&$TCTc$Q8m10ml=3!T-3QXMB_YII1qu<0je?aKz91p{I)}UBT>6{%PAB z#LiALk1a$6y$@!=U^zaY>;Z{ z=rn|NzZd`5x2LH)ZU#@)&s{h5MObY-;@AzH)~lfp+^)9_hHG)X=b;AHTi_asTgPL{ z(|QSmJdl4vOf9n^qON(${aoTQPLRD)_~3}|)^@O;;PCO|!7MIOj@eb~GO35c_hoDE zV8L%RvHKNwypeDt+DUk)k-$BP`{TO4(x$$fxC+vviBd`JzV=;rSk9FVr*XB zO>d-0eejJI9bucjy7OO;*P{+Gyyx5t7tS2d?*x(zM|V16{FD+p-MW5xZ7L4Ic3CSW zn>LPElcp_>;C|19+`JRydzRii#q>>Nt>#z+f6u>d9MkH0s_{!k?F@G#DS5*#E{Hfy zj_PMp>I69pXrINl%s8Hd*s3wtIplStQ@`?wlY8I6OtZ@d|3Ps8B;n$Fm;0b{`^#W| zc|$x z!5ITTs2T&(a-3Gt0&gho(}KV;b<{JQ8m@9)Q)m=?VeOCD=n5kk8pRsxu;?kLOU~DC zdTmKq^!$QJQE&$^T^B5iUqOlCDgKFGomV8!(PeiVEzZwBayP?4X7+CUz)Bz$-Hy>K zJ>dI4y)D&l>OU~(9aT%mS&pRZ8Hw2aj>dmeo3nG1^Y*Cm${n#vIl(eAfFHqn2geux z0GKmGB-m^r91Th^O3 zJ&xGVy{&Cj0-xYc?#-d8kBOXv$DAi4QwBfi9oj3O-$CLZ zv547N+=`mF14?>_B+VN`{RAEa4E*sHdv{wg!vBt2?rb#v9Z#g%IqVZN!2uLoZo7 znub*I+kewEefrNB`q4*uh=s+mDa3euvX~P4+(&AMq}FeiNjPwHDe63L!Pq!%orUP} zHaSsPOtTa@#5xNsM8m*!ZmiY5p^hm@I)T;z2=01W(rE4;_e}9D{I_{s5;@vyh6`dH zZf2pQN?9MQ*@xyWqJlx$XWdT|{f5IfnG)nar{VqH{zc;tW;?9?dmE{iPkw>F{IWbx z9CuFqk^Jxdg?}iH5&a^)PlX%$<+i^PQc)sghA*gBy4AEo~wr8Bso3nSokpHa)n{ z+huIoEJ|MF&aps$yF>6s$^TTFQ{=TTK5Q`Px{B1Os9lI5=LjqdY60T1nK#v>1#6;x(Z%AD7g-=$E7R;7&Q5-6KS3G^>Gh*TBe73ygP zN{13Et5{kUCWX)B*?imBoIeVE-Yl7wui6IBfvrLhgwb*-9f$VGuZW=ysj87?L2R5c z0l(R&pDspq)SZ(wxj>sBae|y>u>HHiawv0B-PIRH;1LYzx6QwIOC7gdr)D!j+zRQBhve;_tyV|1GbqzJ_>K7 zKG{BMyJeQEBXmfeK^k|R1oDqA^J*6dM_^MmnW;g4yX{>axI9(1OxLC{S35m%#dqvAabF$)AveXUSWN4K%j-04I6ha$I(!w< zMlnuuf6);m9Pv%_Umm+W;mExzb&FpG3q{nP9C84y#zmY@A2}y{M8enkdySX z);VC&bC3BuYsV~2(Q#Mnc70sX4P_Dm>m_|w;eGS@K|Qy4m+iJW_VMZ$!3^CP11EfV za>QK2V_yczxc@qNx!CXS98 zI7?k6raEVW!O560wH%FUPj}Nwp?fr6w6#a!dmje9$B8gIq;A8L^InhX{*n9-8~QTd z-rmJ|Nl%DxN1MWn!>ex-eF`$-+{_s_`_^NPa~Zds3;QP| z`$-lV)GWlz4Yf<3r6Ko+Q+x*gckY35Y4-+v65r6!&|f_pcLCg6&kot`yPTgzTlvqy zQ;-tciRPtBvKRfJh@X^sTDR*_Y90?oa&zed4{;zrAuah#uLC^R#JOCptRuIPaxFzo z)QCtF-Oxp$h=JR@vH}fxRlEJsny^J^nsYj(WVUXVXp*?D-=`W;S5;{mRXXm1k%nDB zHdN?Bkf50qC5z{!CF6f>t>3U6dImZfTbNUc1S=-jKCUaE*2q#gk4fT#ggHhgvMUJZ z5x_Xq76Q{KL!xROMgzW*lbUfSC3osL4DFx1jg}aosNpl^sly>`xt)Gtc7Lb@L;oiH zN-b`9e1b1zRMZ+8)#Vc z5okA`oZvaM&E<)9g*q%j6;nHL;*Mt!TOPva9$Gccg(!PNCa7J|+8;t^3pdYB=mlxL z*wYKAElr~$BV%U#eoRqeIT zASGOOB&g(y*Z0a-b%<%69S}T4+v6@JT zNQIzEFPk(LG%4Y~X8t$rUu0M5zh5;b2ihtG94B}1{I$IR)a9erOlAOa$qEi+B6 zIRP*-WDA)x8HJ7H+hC;LR-HI!r5wPamySx2ENa!`6C54*-zfVc{QB^i?nb_Cx!J%P zRcI9dHC+_65y`dd^7T$p_5Y$wGgt@6+&dDjyQqeDgQqqg>XLe` zAVs2@cv7L^g1y3OtusZTmT=*p3Eq!UTnJ9Sz$p1F#RlTWZA-FpasLR;6ca-^lKbR$ zx9q$^zn-Gc_ba4b*mE|yY9U+RR_V;&MD5U5XeBWjolb)f5t(XFFm9RLqUjrxKV!Ua zMoO+T?&9!%;&rK3>$-;|(qP)#PFgnRpN5LM2~ediQt!G3ghp<6P=t!mlkoi&X?|_$ zUJUHUFfK%Mps&*g$=_!tlvPN|GtRU#AE}HL7dZrE^9hIJtodjz{CuyI2@eC;sE0KeV<1_2PIQz=dV>ciN zmMjb=vFrlw4!-ZX%Gl!*xGwN~Ez{AJo?i}mHWr_8H?XBsGr1%wVh;*!J&F*RR})n+ zA4X)ly~AfB&X=>RPOQr-m4&;}!p?6y5Y=r~9vkl26?r|S(XjZoOg`lx0-x4fOgSN- zOdfe2@aj1n6frvdGM=w6n(LQ%=+=j7fJY7{G0mu)POwoc4(Bwld(bXT;-kP;smfCc zOVHOFR^iE~?GYSoarqN$^gJ_1|mMkzxPBA4!;szjMO`W+4EjR1l2ubqXOM{-8OtNx;ujQY)A;Y zC2Y41O}RZAVxC%JYx)Y)%HZH;{R1n2`>2ZKl4zDt$K+kTR0$Q!FwCyJ7fwQ}{hD2zmNF}-pn!k8CvO(UpwMxp z%{QZoVx6H6J;OV%g7@mzSh@WAnHfuO;j> z_#7^Wyydz#9F=X@**0K^u!@qv75L32zX^nhkcn6Tspx0y7;2)meI7|{#34I?7NC@Y z+PG~bSJv((u!N)8`Od{lz}3>jRR!|N|CBF_`l*a1<0T-oN`tQ3Qz^8rdl!C3Hd z?qxb`_v4Kl>fzCGR!MxzV>K^+$JyR^KOY6z-90RWlHMCnZ1+{?z*i|Y>I^EU&ooec zzPnl-lUUlP^~5QslLfhY3pEbW14zD)0_Tmaw_Z#=!?rh86R(Kj0h%a$>w{Qs4Zlr|vhRsgYCDEm5N`qr8lI^U+`E4w7&rPw!-P z`0{%8)L=Kq`w_D{UIqXzOFU@WTpQP`2jRQ{V5+BaC*g2Z5 z83mJJsuV^=;`}8F(TGUJrQ07nRMBtZf3I~)r(%AU-0uu%0V5dsqhv)U8fKSV9+@IA z<5-WF^N*|Q3hOiwoqX$kM7?|kn*`4kNr2@bD8pF^M_G-Q!Lq;c4?!^3L246we+$L& zjd@3WhdG1AG*{CtJOiKab?vh#4h@{k(28ftafxn3ei8n=*K@v&Fdq=*RjKP2g5gQZ zTFgv58C1dAO#Tq*G+i{z5kvb67T@Py0pI)D25gHd8vP1|juZh=&f)JkwrT}x@rCPB zMX~8+>nnZV8{qi+@a4;52D%9pD}np-Xt=Hiu>MGPMl-hA%}be(=(ezrqY~*1ibSgD>WQrn@FV=gjk>wMm^bDaX6Uw&lcO9 zJ%hrMSvRM0G-pfYnENpa-j(eXUQJw0k|cOe=da((FsLNG5ABi46ybL6TlTUeqANgu z0eShOTn-7)DuEPqolC*8q^7eY_N(Arcshg>E^?U7&F=q=wkNmMoLOB<<|S>v+hEs( zw0i0rt`O@sOS85y{xSsg}fy3J=_X8AYek!+Rc-1sGSH={@b&$Tm@<8{;7(J zT!c{LSk@lnbP(LXLbRj2ZA0*>(RKS3Ik>vo_-FaN50_?7R? zmb^8rCd*FS^EA<2rBFfW3VO3PVOiC9|`-F7W(1?=7N=jTVP<3Zot+saZ7p{*`Oh>=@>MM2a zXtnp=V>bj>xQC+l5=yeY6Fl#6d?Yxiue|T+b#(|B=TY0}XJNv(E+vnp@}J=jOx+Zi zx5nzENr_i^G?UAHPRXV5cn0gFEyw#6N7g_X)z_KNU1kcBz=b`DvHk z`Z!E{Teq%PyupXy2D*}eG*`#Sj`u|qhZGbTy;S#40OsOmJPH@-RQ&Oo;ZudpOUb>} z0xlXIAVBt@I4qk@z38^38;zv3N&^>vTlo|4(y^n&90qTL#PnE>e-$eTfZ~*+Y-exHgn+ z{r~dEjhk;$g1D~lP52$=XY@qdP9w7jShL?l>N(2tizIy+wCojUeTf0d9|4lm&qr1G3ci_4tPQiATur%K^WEqY%zgG)LFd!;%LN)lD{{ zlS`+``-@c}Kz$gx%^j2O-usUWo8wol3oNFoQ{UC38J-zj>JDJy3OSve%ZZLUrc zPW`MCbcafu+qk$9d<0Hv;nXPUUjt($CUt3Tq`5ddS zT4txP>3_&JVV?A(I2$fbsn@8r?6Hm5*x%5`(+PShT0U`@QHC7j5eo^1^CdXtm70l> zdk}@^tK4iBOe$!Ks`NM_%jM=x!6Pi|RqvDSMag zvkE(svx-8!A?`s>y)2c|?-Wa3gSM6oHtt1jBJW)D zt!(jIdvgdDx+L4mwD~Dct1mkg^Mt-fYFA`B{e7PP$~L$Nh2%`MEyG^79y}M0&C`4O zY5CrqN_M~BYHg>!T@)OuD%Z>jsEf?Px?Xs~8kkFi7`l{RXM8De<^6SxjC!D$OO>E0= z<6Qy0*y0B}Pbk!C>et*i7TdTlEcnWcRIb4SY{`6bZtBro)ZOQfIE+VDKgO+@X`jtU zd2tAnGxLgND<^&oU$Z9HrC0Muw9@ve)zn;$XPg_)+qdQ{t?Ryexq3cLrW}U&%J3ws z81g)e?=In}xq+Tv3-CV_m5QL1Arm3Da;G9$O>RdeK|jeWTh1Xqe4S~BeCElVeQg;2 zc#oMj?)%L~nDvP^fh&$AiT2yx{VO-{bW2A-K z!Kydp44TqdUim{#`+K~Pew@)gH7fvnck*0zJp^=ch>?8QF)l`-j+AD3RMp(2LfA!R z!z<@n>UBtIai!i#J|}O(w*B?-rR2p~h1VyieC>yKwq0pmFIJwCPYWinlK5>bNK4F-E z)b@bFRF@U-uC7t#vg`DKmcTDgkT@|}Mb|k%?5aCpqM?x2J89A`?;c0WGu!u#iT)Qf zi(0*%QSw8w+Md?b-@gc9K%R-o88bo?^2T0u;pq5dP%825aa9`h5XMQE4I> zUpSb+{hI8y0voVeFW)j`Hl4`D z>=gs!h>5dbIJ_ZgiO@{N#$1^A#9=dOL@0*HB)nF6A5Byt^M=rDo%tYcdhQ{+cQP#< zoBBfFurfA5OD}8oFC7&{0~00c$vdO2$9!N`^~{BJV#CofYTx|U_{)M_9;TFHx-Rv6 z?g|dZ7o+&k-M78z=5x63)l@O(Ic3ZbK%P-d=JmT<^LL`Nb`%w69n zA~H#O5yRQBAQM3O$lu}wI7wlNBT7kF0*0DcX`1~KPG4$vOj2~EJKnxo62YQ9uzCmJUhBn?{zvaK;9UQY`n?qs_Mf~M#W^hVL=Sx`6VnjHkfx*x`e7KFtjJBFzS z0KgTPoAyOJ+dWDsC*gwh9mPP7p?(TZgIId+a72LC$a+1+^B9~mtm94M=SFRl?-%8d z#OEN7O+9z=6eFNk2{WMd-g{Hw8%FI)YtSEsLnRhNilWperZBQaHZAT80 zbFi>fm?L7OIPLiN1X|wT#ivkkK)|AU?bROYfoGFIEBY| z%ckR&t!B3nPzW0to?F@XDiRJ|72>dUwqnysGif6kEI?i=J&9c-m}H0&{N8!!clgcL zWRTH%W&oRt;l`uSZ+hqn-)6cFQcraJD=axKNA~AaQ*Rjb1T02fvGo%}uQyP~z=RzX znVco2@fQ{ds_Poc)ZgUP-HxV*^*OWqr>iU-53yLij^6+lLpU$RKd8Q8TZnRZ!8wV{ z95zrU5IPEIN3BW_oJ^TLh2R0vGG50jQoL~Cb&M{?-TKHS#v0S59{s`bLH z{mLmFzeGe|pJh5$3rDoZ+tVMQFgbSWFuOyA!w3dcvbnf;wDz_4Ec=-o3vtlUsd4jH z4L6nHqJR&us_{H#@n+Jq$mN!yw={5>{_;vYX`xh1K}?|&4WmV;lsf5kj1U^ma9(J$ zi1)QaltdLhNIaYk;bm!sc!sJR$lled`s(RD4R^Wd8@~xdT%5TnR1wI4SuYyt7gQ6W zrZVKtVsmHk(OmwEplcQ*mhCc=zbol`2Ba@#zs8-8oq~JPY7v@bxO7^lY?RStSDj3$PO2BwBIfIen=gp!LM8vHZl3kK}_c zt@rw)N!6Pcy0Ab6iHKjQ(H`8`>E-cv+6drx3C)9J!UDass`f@_?StHzbA8W}Lo@(B z<~oWh2PjTAMbLfI)b&2$Q}zTGN8A!l;#|S9E^0ZywOUzj$uvVG*eNUFiz0AEQbBDG zFqlaQCBvm*8_G~=csy_2CT?oteRs-Oju0xt9N*oi`39LMTKVswkBVn8hlP;EdnxSymx#?~faj1QUsO6jKzU`CS*O8*q?6C;`i1 z>wN(}-!JIeVP>I8&Zn<_@N^B3<9*}cgGD_&M_&F^sSyl|dipAvh@u|1hgNqqT0w85 zc(GGvG{xjB6&#K7y=o-7nXO1YyEux)a>_8I3EzHeMV8rtM zWyI{d$18M)qJz+pTP~%ZpEbadIb~PxG>93>IbQL6L4eCHb2_%%4#m~&-}Vye;gGpc z+v{~azgB`9!$XU3X#FLWL>xs_98C37)&asLp|-2R6R%TYbI=&N2jO~5p2U?6H3RFn_t#_oII`jmqEG@Gs& zaeR^Pc4-&d(eu)6zke+okte>#Ia4;LV{qpygYjoq(7bKmz=E<&|D@r_4v7}e`#mpQ zKQa`z@+#vo>i%>O^UafRn8sTB#0PA(;FQ3c3I?p)edrO8?@yi?LB5sSv}6!7>B(`> z;dHIh^}xHeHX6|q?aTOxZEsL4?_jze@&=O2RNm3Ad79W-Ss9%l1HH`roJV(ZyrEZ^ z#v@>K97Z>_B|yA8H0)53*@!|K!hBJtvJl28Bo=c~$$(xjl)xs8Jya(8pBsQI)z-sM zEA=gRDz}Y0%DaiRG?hp?L`e_TTj~kEKT!xBP|Xh5^-+Hv&Ley>;pFVkmE3-}HHBe* z@d3=wvDM*RQ{C<7?E(013E_r*3Wvo@N5-L077ZK4AQU;bawK*jIR8u?O$yl*`~lkU zIx#iB_7;q+yKz+lo9@SX(cI_SM z$XS1w3of|O(XMsnM6K8F)FpCDGpXcsrTyLNfw>A6 z+FRg~Ury_RFWAd*ie)HSm^va!60KEFc{UWqQaZ!NWm}K#*)V^ewbY2j4aK5~i-I4&lfhWgagl}o?xFaToh-1&{+mXMmZcI|mLAA_gRQfG#T&O4z{}8v zbe`GJ*?V(AQF<0iZQ-q*%YN0N`rllD#G-oVj)R$KVM+6fxe851H& zhfoXVJBvT3lL%3xjKNeiRQeQsc^(t5>kjO%oRXFe%E9LrbwkE~RJpg8;1g}8WUE@Y zaBSnvmY29lDLieaK2*E@(>?MjCpk;t97WI!)N`BBHjXZZ={_?F@uxD;_2#rhak`P1 zkKw=&spD^PmiLac#1$~ri4lZJzcU5M{;Jn;*r_a#`;L^Ml$}yvI+|o5PvGlj(Buo*ULHNB-SW}=4NPK{;dTwI> z>ck1=Bn@SK;9*t7cYFzsVemj&ir?iBv};j`l~tF5&T>s!%O}Co z!b`XVrsR2Mo1Wywf`0-$2<)503gi_~kpM!GTFzDED`az?cmQl3qcllSsa49yK8WFcX#*2-3e~N-8Hyd@Zba| zcyPG;e*gXNt(vN-+S)mD&P-4D)6Z#9i5*J(mMm+k?ku^aA37GYMdMQ2unsK>h)`%< z+o+x=5Q(6)Z|S!TMgF$W;vi~;(>#%Khu;LLok?9D?NfQ}58G_{f*JGwN;~&xF6-F* zx(bJH<|TbrgnyWEq_N@P7S{*!Y3D~oCO>xOE64U_$c_RaMEojRaUF$4lG<`_KtYzcqzQDW%96Xyc7q@d87t|v_< zn|}ZTUIlF}!#*1opp*V2#fp~(?>m1-OoS33MQ^}s{Iu|GY2P^Iax|U&NBt*!-uyfv z>iL~-+$)K}xTD-d;zAm`;5B^#6dBe>ZVkMPG8?K3jmuB-`4lwVZbc^V{ZgxK4^Yc1 zTuxYOtwomt##^_mQRQp=?}XmH3Wx$C!4}ZpJ+{Zn!bHSE3P}h~W8HxwF`tpma9{ss zlTcC)(ay9FFnWAYPz0yK0166ZIf97=ghdP0#hPB041(s^v_j$B{vKmV14E!hMNiQ8 za?g@0obxo{(u7^8Vq!x-(tx)o0@3bXWg=rm0NIM4e=S5xGvSP_Cv}?t&*Q$G|DjtI z63J-f0+TYXHV609@~^N^@rl@5$hJ^IPFTfQN(8U<&GMj?GFa2>q}5Wrry`vj@fiTtTgwb{2|I|e#rdXip@!BG19ah%tH zBRI7)=}M3Si~!7#$HDJpF*seS^#GnPVpQbEo5GSX;;id5u}jU9loi*A%@v!hB;yB2 zJdRp~X&U(tO+~ahu?CKOHFFMxrqs4q{(s=nW3(GY5kV0{k0klU zC_*nQ;L5{}h&=q{z!4!;7of8(Qld#o!kn)q|A80AwBCVf83Y!MlB5M4v8;~ck&-7P z7#n$7bIT^^mNf!cEWv2{HV_lfEw#i=mSg}c{q2u^UBgv$ z@in>zD&B4k{{sWuO5Z!l%2B~q$($u6b1X)F1^?m+=_h)fB;w+ULZgKh@YyAomFbEo z8l_RB9wd0v_NHWl$S!Bh#&}W|+N~#|MS(z20>QBiPl_wqAH9%Vh(XhCnZ+$o&EBHG z<|z^t{~S`F)a0t=LX{=YiKqgH9)<)Js`|^E%h1(m=;PD zQB;lTH$=hX8IaB3cMokckjPbAQ8@g(^)-rSlA;ZV^pIZ$Lzzys`^&5~Z4tr3 zE>T^9!Ln4QO2RnEO{4&bQl+RsPzMJGSwS!Jai;u4R4y4Ub!sXe%75QUZIxwrWsZw| zc2bM!C`Ds*CQK%i-rZx)?aTs&#HMB5jGSPprB`sW^81fI4m$F#K%oG}#NfyLx7?A!(GEQp#^}EEZ(HC%%8he)#zq`x-z|}Q zz7o4{SD9^3ftjvIcA0gHUOyO9T(x5mtwc1n%xpdJq(TrX-hY!qaf%|P;!jgltkSIuB*@@}0ku zx;h{WNPZCO64AXOD<6?bHlhV7NtOP^@1L5w*d1OmJ%vZUP&g*EGWrZpgz>5X6DTZ5 z1s}~A*M}+vVUSrv{A#&ZTB7!ZX2m4_RkHTW? z>}1ywi7TFp7nQdURc+xJudpyds;jg#49OUJ)-uLI;<0Hz&9sWIUTg&}nttETwJ)qX z2?B=H_wba>WD8zn(NlbERry7I=MRS+&aCT5c(;HH%7BaKQ?NF~Q$5oLI+VGRN;slO5Oq)I`}NKI=;BjIGy7QBT$8NTr# z?|SN35n9a^C{bM$p*aS&wzij|FA`#kU6;H`4y^Qd--28@0&vIhnpq&&nM9$V7G7Xx?p`1h4tpjo3o=m(wvE}v%ac$=wqQO)2*;h(+DRlt8?PA0%qbs7$h2)a_hfEaNoiY{IVY6+$?*`1gYF8}uZ_wDf|O~bg^ zP3}4cf~}ADhufXddlrrNEt#gf6HNZZB9c74XdZB(%F6eN`rK6yhF8v~T zf+v>aPAmv%X1OF2u(h8{Q01>8X)S^D*^*r+SR=a91=sXSkhzL_XwJB0P&-nkD@}4M zp_DKA8yRjD!oYqt<UEElG=L(b!bU8{LRT50Jk&8|e z6#17&AOA~BBh6exf%){Y>ky z)r8L{7ZBG%AAvIe^VCdq#rJ2lDQ^&nts<6~OdWm5x>FLQ9|E&(^K2{}WwJ-VIcF*h zR)xHy^_dsa(NUt&HqKq2{`M)w~y(QINe-hQ+*`WTjLZGoXHeedoE zgdJyjvsb&ig7GRSrSzN3R|k9AdEU?34sS!$UV|&W@dSo1OWphS+f$csTbI|z7?Cox zMUWlH(6sBl37nAcxMW$e^A>jMh{2bED|{V0{Q-h+Cwz}7LNCCOtGtKa4A1U2$Ktd< z!SEy{wWA&xz;t$no(&Dk{RXto)>3Qy-nWepPE9>$%D#WLeeu{HmV*+0fG}L^Qv?>6 zkOzpgz&{y(f+>YbW8<-O=sbb<`Zs6%zL@U^FvZm8A{H7JM?~013IY1zhT`_tGn3w~ z6F44>tZa?deLVLWos6D-uhoSTop5d&=1EbZ2y-55{S-5tE3>%ckGoOb3zS^C*TPF; ztxP4%SJvkLn`NK(e1XawRRGhdLYPLJkF1s#85#ej?}C82t^+O&*?PJDD6%(g*zpzN zZ6*qbzqg7|AZb|`QovY^+f=I+dX&<2cl(8NmCyA3!!LQ7kJ#*OB%|@@vNvzZ@HHU* zZ$sfchmp=03GUM&32NB^u-_Di1JHrl``UK%K;POVfLV#lVemAO1`bKuo%fD;Go?W==hR20bYrVyc=SQH>weSeITey54`sTz|XV zPUrsCF-j#XlV{7i-c9g}{leHD)I)Fv;rm-&m+ad<@4$b&-nvGgJPq_0jTDee&i4BI zUK<-Vp%rlcR!JV~hZJwdSevz2a)}C68EZK!;-!w4x9@)Txq-5+V5xtjDv?}WH zwPzld&XmoqNWG&xlZS^?i)*LaU5>e^&D^iUFCCB6TjNIIsTdAmLiT8NBzp~d_d_!6 zU2(;41k%C0{r?Vrr7S?o#6Sdn<)=bHREfYSaBl^qY( zuR7@wWgX%)0yZzZ@c^p_c%>Ex(p7M)l5i0u(Zs0kq0b1aj#K24(W`5sCRv)R{Y@?> zQZ?Z9*pW8m=)w{~HWg(Y0c)l$pp1}u$m?8G*^;Q|i)9(QmQnt36#1p~BBZmy@&yiC z!nu|%?awfe-F9$KL0H%2I}+HmcX5F|euvM%<=(v8>LYMk;9+yra5I3KmZHXM8_ra)5a8FvTFt*$4m22bVu-nvE?j!)CmHYWXe?5}bruRJyNU*brf!`8V_r1NNcYwzB z?CYIUlU^(T-Q1wxu~^^)-`2Hf|h(n$X3-}=KGht8ByhSPH%E(S^OlLfK&9oqVG{zcaq&$N}8EM8M9V%K22LMgM^I*@sS`3x#Ddn`|+ zusp(i#kktsKhJA-gl=S7lUCVMfo%TYro)`2Q)H|38GL3BCUiS@15QB>bE$Zuuv{54Y7$sic;9gER-^z7Kc zgJpxHE914Ws{!|vY|hxN^DsjmYtE-L~$} zE~K#eTi{(lDoyW$Z(m0K>v;ab?8ocu(-;HE?sCHRL|5P={3nP}Tz1?wg<>f{3VqNz zn*(gWZEjBoL%%$YNeNBWko2W#_MEEwy>a;oC<(n$Tz(8b+(v8m<~jyUa$WCOlI%c} zyqcKEzU0UXK&rX$&9S>qcMVUoQLdX9NCy-g=txbh+9Q z3E0I6AhsnMkjl0Q;jr*i-E{wyx#`X2;ThiCf_*6-zds5L;@H{Ee<9Lnqy)L?8~syfGJm_M8+LRj ze1iW#15Ww&5^X)X|03y*`_tDOzDvD5alRv{_Xo&2q7^3HZiVX8B)0iVdjGX{#P4XO zzv$>{`@_Cc;48ahJMmjw-Ht?4G&#vD?ozj@scGDI51D*cHEbMNUqfZg;S=u5P(s!c zZific1SL9IOxpO2iAjPQ2(gi#`R8dO)VxdFHm=DOvI&n}B4*9jss|=3|6B}}45dNf z$H`ZI#VPT1)|1l6Sa{Lq93N;}Zg3Q-c0L1bQ#;g}Cs{Cl#QNa%bKDD?Sr5U`(xLmo2{|!}s!o zorg9xt4QrIJ>mCH-K`r1J^!UN{=2nEZ8stW(C3k5B*BCn&VAuAx%69wT+YOczdLvF z%x=;Kpu4<`zH@vE*uTBEY$cgdpxgZSgF!EnA32a+)z{{LJ`lVMHYTDa64&o5_3n3D z$D!k?#_y&>$-$itSD?a{{gnL9IMl#L?6O6?x4Hbk`sb56m{zJLbLkvExX$NPd7e-M6VlQU^tsAkn)<{q zzZcc=jKKzKvE<|C>C>+|A=4rqt0AgDK!~E||90Ve>WwSEL z*VPW_hk#K$#j(VZS?Pr3+%cWC=A7S?WD*zuW;;f*#OGp-s1Lz_5N8D*2vLRZXsVhx zI%_E-j6Ee<6ZhIX=q`G17j=?cMQ!6WqW?5X*h<6(Td3UT^xfwq4yZ+ty!#4)AClU7 z@9nv7(f-+=OW6(&Ll9;{&qE*eQ5Z-3pT<&aDx`p@hA5zJXRQ{>m%MlnR4+-j+Gw~KR(E*#7y1CLAW(eC&tncT zlMY)q>5gP0(%Yz7wo#x&Pv|unHe*Z6$j*5!+pOubl3Zq479@dXS_o4BtT>B)A#TrT z>)F@!TGH&vmEI8}c~-54R{kvH#XWt9jmCijj*m*k@ciuzZ#E0@lHJ*-Qx7m?&l-Bh zv>bY$27h~u>eG~ZXqM$~R4=RoK8xT@`z(Y>W?ZGSHv?7 z(8Q|dN|&R!Fy_{fvn2To$0TxieX4PiEiSga&3GsJVjpF&`qJy!r01shetWsMs`SCR zu5g9McuF)YBljJ1!&B(zsb^o_FD-*GP{592eBY_8*V3N~sXQ|SK1T1&`*V7}!$4;~ z=@GqV$>sQ^KtBu~3KR!##a{^2P=Z(0#8%1QY-5nnRJBV8q|H|$G~}=~t%xGzltEh@ zZhU3-xe690EDS9uY$iIhpIZ!!kV-ZrJ(hLsTkQH_Pq5#RRu4)~vHl+M=50$0} zn`*pY^?}lEzh6#p9=-5XS>a&u`Z?FcTeGG^KU%q#TCd^3#TzH02#(r;HendS?Ix*T z28vOX4w&j+4S6v3 z9PSv&MzkNPOnx$fH{ERa=(YyJ7An0Oe*D|MEpvR8GYh6lNB*tgwk2HtBv zCLX^8=dz`_s<|t~M_+umuVw@HKLma}G&NW?d$Bj?G5T{-}$Czy~UCK&eLUzqSqkuW}B;uT+MHW7PCKQJP4+`t)ERVV=oG^ zLp>4r%#C8`JZvjlZ7e-3#IOcc2KyVsgTD`8?tg0i1aGXJT-;bq|F!iOgL~%*GBv;T z2e)S9kKyEu)^Ep0s{W@v{+GVnZnH0Wt^r3lTM>qtAfZe4kq3TQ2{;m8c((Ft%kQVk zIMMS9bZ^d+mDUJbMTtGs_+u8{W>U_WQw{9%rVHxJ8nT1eYp`eEU})mL29B_zEty{ z_2&A3$YyPvIW~ZnIZLMFY`p4pEUEZ>ttp;uW_563?}B|P6-+&e*p15n@9Lrb&taYG z>nf|cfeAq*F!*fi8U-fUGLHwGh=|q|o3M(^Koxdbx4Mbz_^tA5U9t)bE>b64KTYg} zmVurmskT0mvN~4HnPfa4HG(3>oV2kOfz^iaRWdyr_t`uZb;Rms9wMNiMFFQfG4Y6! z%l`r!!fV)C(LU7)-a!oFIl7O;h^E6coUHrXKgoTT8SS!^2>MB{Gu`be$_#@sw}q=x zrhp`P;%-PS@4n~lH`bbVdhg@^8w=pxygYw)pJc1eq@9P>U1E*z(?iT63W?%bTc$_+iK+P3E zLw`6TEux(vGE3W{wu{jDg2ziZ@UKT+-@bB*^3>ZbNhxyPj%_#XvHw2WL43_r-;vGK zvtT&m4`Lo+03}_@D&2zPt~ZzYs*Pl!3Y9~O9kNse6=DT4@5+$ z$^4_KWRklj!+~89=b|3wYM?!TQZk?@bJi~{0w+eYG_qNj8-D7R5gCIofBQZ_>&rJ~ zUziHEnZD^5#Tv8LJgrZ+-3<4=v5qD%6qO9|$WbtJaZTn4lozHR?nV+zAjYZSAL;Z% z7ZTtQ8(Tnn^w>Mi?Dia;H_aYaH_e#vW|4&z{2;Ki&BB}6^Dn5?h2SiY+}qqHPo{ny z)gA25fcg6pI$uf^+SHkfGGrFXW)0k8Wu3j;K{GsAJdn_=Q&yE~+bhO` z7Gu^d6Soz=c6zxRe$$tD`)YcIYm&grhsUkr1QT63b#?BuYfypwh?`FF3M*T88(?06 z;zrOdOG40PtJhzgOhHvyfm*&CquQOu8qn~9geGdT@wYeM>jt4DIm~HK1QQKbB3%p& zbJ;LMmNo)EPUQJ}u&vLZZ~Oh9z26I;XHX)Ief`WlC&Nq^M(@W;Co2t7vT@>+l!D`F z;#=}=-D|VPuJu-O8(qHXq2*tfW zd+!NP@okK`HMrz;C%-*7xk3XYoX$*#7P-i6Q2XwWhJ5pXPJk=u=_J=X2pO<^)Yy71 zS%xNXTWdxckkDetCAT|JOF8gG40vwX+M2EvEKThS(vo_|S)@l|0Cx z&4+(RtEeFo!NdUTl1w3EP>ii9DgFaN+U_`;WaATKP)rC|JSUfa_9V@}+TH8O**?b8 z@w{ns+;;l`5-J-CpKm#LdHep*lYvXW^Ry`RhVi%S<8#Ot8d?^~0tJdmSfP8i%W@&y ztGU61t0^}4q@o-(EU}CvjHs~HnvJTeDgca%$4bZh^O^TU*Y@|i%1Ap)^qvi zx9jYmlX6riNdBC1s{h}P2f>N0Aj8+;d@(wywUzE$eaHQbz&|+c@6Y-DowV*v6ISk1 zQ%(^vjGbTz8qII=ePAR_HrIC=rWqa$yvBKa%Kz|&3l%iic3E1|+!s4I)O8rn%!McM z0@QHudHxmuIxQu5W1L-P;(X2h7BH@^X%Ot1{)MSKQOR#_MHoP)|4oKq@aBe9R<5>v z53#o6kdCqE9KD&7klzbXjO-Y2+d@N|q;eHy_yV)h>Tr==tW>U7|6vz!u@aEg)^|Y{ zX1C@#!q|GbI<$9V9KwA~%rO89QC*7>1xGNs;)cs(M~pEJncoyA(<|%JYpM{zI9% zd>13wS_Ayq^z!SX`$gc=jGJxnRx18VGteDc0fSj*KNK1Y490{4Q9uRH>(6F02JJuq zobFn^aj>e#rOC(po1Wipj#isP`i8>`C)eg3he_fisn_XAxt5-R$@Z3O$N9}<`*UU0 zTDLcw=cYT(EdL9=R6OCZRVX<6JD+Ex>k1h~o$llWT=oZza!keBB&2BvlZNl;IQs4Rs){^m zRkhs_;mBWJ-$`DHUuO6c(w0~rgszw+G_H0+A6);WWi;8JVMD@4!ugrn-~MetB1v$y z)0@oCI2n77$shu5^S9$j5ru^3XRAG5`~E-QRo}mO+#4>CU!B%UGo1f!_3-;%X}{m* z`y;0O@d`BgS^-AiXg%l-}$pw_d;70GG~B5y&VoV{^#T>NKg}aMf0z>155y2H?Xq!j!{%&I&WS{gbT2 zfZ#bSB3|Tq_+M;t;2e^oHdDUoH3F@650c#rUuEz3=T{@!^JL*pK{Xg4U?r42EkhVBFY*+@B>b-!KAlPibV~=5_A@C!hk$#X@ zN;_R2FR}>$8rxf+sZNZQBo}-+=_|AjY2$iHvKU%ny z_?#>Td2@|K^=7LuP?SOyii9XB2o<}epErSpXG_XQwkXv^MS<2=;J1$V{1@u)YUjp{ zW6e5}biv7ZlAZ~8yJ)o%6G$Mo>{b!W&9jpbQZ@m*C9*W?1vg3!<$VFG8mHPX;IL0R z1i4jR#DbzmY6;ivl&VliL?dR>n;fDUowkD2siz@v)CHE$YD-~2BGH(Zqngh$;-tl5 zwBe|q&xlkI8_6vBvkF=y^LGf$o{k4Fp5HQVbB1d(I!5F!106mz`-YP1(7Yp}^|uKK zpfPq?R6u$KNFj6qeF-z&W7=xi{!US8La%pnTfNEAX{!oc1mfZOoa~6=z1TD?(DLe_ zYx*4Fd?eaJXAFzDqHOV-#uBmuXe~of_>B#F*5YGnqPQjOJb);qOx|^!PCQVu9X<1fHQ~inVA%6*)yR+x6=;2Am<+( z&E}@ZkZ0r(`Z`X+BBkizC$nsa=BF=0o}aA|@d-W!r*7wC;z-EZikt;Jd;n^YgCZ)T z=q`yBV9cX&e06C*Z)umH1xXh4<#&?}gaaCL$|x}(anb0gYd59#p~~j;4?~n;NQVH8 zXDy{m36?94Hq-?ouRFD7NWxlt2%|AQPR)A0J!k2nSs5|G-JsY!zPkqx$e$-oE*e|X zqkz&NnlNE;tvEESy%_Q%!)VmJ&xq?mltD?jM)u~B9`b6N_(DkNPC!!X@>Wt-NCL?G z8&C5WJ8|^miO$p@v;y5Z(ftTJ%GRX&{ieD8rT4_pYZgNM719Sf)at+o@H(G1F=2bK~q!NgW?HNGA zNDVnQlw{NfIq4L2dDkEJTue{5l5SbP`W;3%V<1VeZE&t8=Pu)ap5Ax4;9STZC}aZ8 z4UWwp_QtLNERrKBEJ`HY!lt&V3t_-z*~tFLARt;x`V&M(G!=W?2A_`oH3RUv>{!tX zbx-znNFdXb|8I!)|9_e__j6G!CN*bJytZp_`ir{I%5EtMdj0T9fV_%D=Fo$CCYYCG zq1ok$=}vV4kBlT7U)$23tB{!-l$Ho9LIz8w5b}V!+9F@chT=N{uo%UHW?iZF;Y`E{ z;!+W7IKW`nbljgY0?x??_cSR?J@3yrqwZms)cH{kym}=$PHF!eK_2noe~Y^@#StqY zz+}9d@uXBMvt8(F?3B$y78bTZnrYM8P{@l0nZyqCxtYr*cbBbYSaa5;o$BnlaYX7L zxYk&=oiD7s(-K=iCUwJ`2KAr!Ba{5P8YP_(T#Tebo81Z;0dq#^A&P%GB2y6gQ zu_!cK27m}S50_)h*W{QLR}>5YMX{6~P}CXP*blv-_Jtg?Is-OK=swYQx*H-6tsnpU zZ;elp-BTKeaZF$bZ36tD0$*jd^YpxhFr)d2MHpsTNNa)cSdko-RxE=7aU~XHfHkm& z@>jB63AZ+6Dg^2m1gQ_)+j}hqm?jL!!}~~X7qTDMazr*IiS);KE=<>OE>Ix2Fuw~& zLpuNr45Ql`r?*By7+I$<6|$&!vqsp?oQ?@=9MCA1DhzW-#$Y?-im8K}(7>w*3_wr` zp&%<#68TTe4$OQ0J-`?me|)3(3dJPvUu`eplzvRf>QyoYpfgD;=M3iIAXU_@PNyk$ zB14ZsiZUkDof6u0{qK>#pG=Jt+EUP2l>k?9od=3V!$$U|qwGzJ$JOE3P zLKHaOnuwWoi3j4ybff(!+R2Q!tCqv=28ofCgcS~;JGr}xwmIH{zkDVjk3*l*75fS+ z=yQ5JZde8{^*>paxfyX=fOi@Cf|k>=GmQ%8Ojb~arj6NNL8AtXJhU?&R<4Y8hF@}w zky_|sDn2&`9B45UDcNg*%#*8P{93)24Xif5n`RUXjdKhStu6=2U8QF8z{oX$A^$>E zNVW)z7A!;XpDKVHDa$e>W8OSP<@Jrj?083*@oO#^^HM&w#+c+6dLtKd9P<*1!0yov z>~67BC~5b1$VHCg1_UUh>3DUd!c-K*B6AU$Z~ajrffNkvEl%yY6-DGy=qFHo>4~iW zd2oJsQ!57X2i*A0qp<2h(JsCoUl(PG(Ob z794u@vwlylBjpquH~Ym~sk2KKn*`f3s%YH~8w8#{2B zunwA8h&!H+?WLad-{K4t2IAG4i23t5Zh4_Jomo6>C%`&zUtu+_nx9A;14YThNF|lP z@nG`SJR>NobSwRZdTBg(VEHc_xTCUzpi@|zuVdLDZDrPbtP8Vn{)ZtGfhRXuICKGQ z`X}i?#$s@idJftJCg=(9D01l~iIgM=Lzw~8C)*8s1xaafMo6SuW(7NNIRmeWo|TtAe4|`Na&aN z?hC+NgndlM*e9aFmN@{sEg|@ z(x=jFfp`!sNQS%jDTMisAi)%kfGepgdf8U5Z2TgXlM`u)Uh0kRi$&hDWJzqZ4QzrX z)zqQ|lqErPw0K>8jaUvi39mM;Kpd$1wkqfqOIh{3pu|9?OE(~GVi$Vi`1_NNICaonx+lbNlm4oaF zo&|<0@5c(hNuO81Q38rAPHn`?PEcj-)Wupv?OiI<)Ggp)8^bM@=IX)hl(OcJTI4#R z>{VfzXyT!cgc5>7R-qVBv$&W5ORzF?=Go#e?9AdNawI(IU@VN(S!HLuGZ@8bqfzo| zgR;akK&=_)Swj()fG%3Da5NGFRvD(ee@qkeKVouBQEq+?6*_TFxkcXCe_-YTc=)V- zIR&=+yJF!VU`=8s{w+%+6FD_Jd$og~kb-1!(AktXzYD^|CE|pWjq4Ybl_c*%2C<@# zb=Iw{)g!PO7?OC;k|tw&+hVD)?vU4gtl+^v8*DPJ3JW5O+<~Uy6O;xPtCa&Vz(%Ry zA)nAC0lSSLT7b^C4g|Vot7kQPVcPKI^kXS7Q23rE8n)~{RmSZul2TFFjaavCj>!T9 zBhNr9@o5*WLlQquHQt8R0w1;~%lo$%TGkgt)@*Kx1N=p^_5obw^4JE5)iU0{29$Di zE=Yp_Ea(uLmoBV-)U6<=+sEK!>yvVN-IV|ZlLSBt13CrxtzI+UN31G2P3M};%m=)Fvu3D=wVtBn z1?NVasw$;Rtq;&2DH2|8*MCF8#rZ6gtntC*1KUS|~PJqfm)`C^9OZ*I)EN4{W_y@8b z@T;Da&A`*j2mUrc|6%aQ5h_|^kv(1P*bkFwzj<;msp7&PWCBSbz5Y}@g&x^6=$S8# zKX<|?XJK1i!bqJl*|p`=qUVIcD6}x@XI9N-*zjc~{~9I<5z{?7!4q=pQ$cONwt|%b zS@W&&WqFMOWwS4}{Q2%jJ<#Mw*B8nry(nA)(Wu#7d0xqmzaNn!jAQAr)DM$picBQW zD6}<5OUvwx$rw6l=QtN+gR}7ZD?qE+iLfEKJI-L{qOrrQ)u3O&R`6;pqg+*Y?xbu` zbx4T8H&9gMssF&$6wMqp=f(aKhP?6e_!e$*YPY22(rY^s@%DtJ*f0cILT!0-#Nzk9 ze&^6Db5ng;N^eUS>`MOevZ8f#6{9TDP#BQuUz%JpSJ8+4 z^H|jzP|*f4A?|aqk;Y*)%xLV~fig(7RSja(5Dx%`^Iz~7ac$^H))z)+^Wt+Ld|OBv zR)GMgj$WWZB=EQIBdx4&s_Q|JF$-w|r6?|ECoz>gH(?pQ_^|I0WxhZvTK&***Prk> zB{cxZszyvMI5`g-R$x`G>LZ}=mC~^DLgwxcAr~lbKJJs%oMWbd*#{2 z?DL%SSU*va2fN8iOMkl*G(4x0N;&gjb;jb4Gw&i>k31wyOs09MXSDw!^pnJY7w8)4 zXtZd>_Vq$cK4#jCsvxX5qlNVOv0BQC$VDk2#*{xZd3Do(}YU`ylsc#JTe z`qbFpid>ipQu``Sa#bWO4WJusjVF`?;+wOYQT?!qxg$0kQpZ5560d2$&x=H>LJc`j z8c$bM;`uK3&%tuG7WFpc<4JCHzDKQ?MVrUSLt{tk^NCCIwOWG&U1ScO_?YuTu|&z3 zEcQn6-P~h+Y^(sCV?Vr!(+&)o&$HSAbet`e0@2mF5xF$QIt}Y0vwQOIyDV$XtO-z6 zuek_)!@@=s0ZH+cPkX1-lxr#;n?XSOeQ2DT>MXnTx27rY0pq4@LbyYn%OU9F|!QE+{qcNH#NIp^+N;1}qh>RHw77aEno4 z&K6&`6o6Z3EFz3g?o9}@kQL(AVaQ}h7Q>uq{Z%@IDABh%Re=rA-W|*Y5>8ki_yAOP zegNn!S$~YP1=mkX!}K&px&~7LqAiks;E|bxUo*JV1MS6>yr^7)5EvM>LXwAQXyihF z@yL%hFOg-@c^x|q-{>2b|H_86%{A;v3jFt8wd%IzyXrH);dPh}pH-@~v^-QF4S;TT zwW8D>|MIh>h>3#p3n^Kn%?};9%#+pF&PIDWq48Kk`E%I8ounfiR1XQ~2lYq|BT@{`Y*o=oN+y`Fu*X7rj1 zZ9i?1S3ko8%Pfp6!4^r{EW1u;W2M4lxuqI~sV14W>y;wMpffIdpqtzxu~bwDuhxx; ztdf-pUr7do>Y=|Kxzp#cx#kuTe1$B$y8{4Q4^KS2#314F5+>DNn0Rw`sfo0kYFI@@ ziMTRzGhR(llFheDDPj&z#P0E9f^je2;Z$fhj2{OunT2&&3N6w^KGJDogvu!FWYQ)A z5_BRl;-pDyK_lLc)sYC%Kn4+Eh>JDMDYCuMK2_)^WDf;A>nqdg}wk{Y2FzHZ$iC4Y61*t!&Nf%?yfh+bk8RFs-k3D$-A) z!1AgeH;f#7iUtDLShW`zKj42=(TTa$#D@!$2Di6@9kT8IBTihB`A(pD!quyhh}42# zGtF7mUOfbiUv9ZvPx2Db_07nzJmvBClFUcGAb%+{TB_T#D@h6o{W?m^DQxh)dl&_gdShRn-cs{Ru z)}%{F&Ep7pRj%h6(fP(Bql4g?3mocZLJC_VN4NP0>^b+P&0d-J;cuu>?EIq`E|P=( z0j0uG)tR-Wef`TfEWg0KG>ZvpK_8x9j{68Zw}DqY>!xk2$8jBg+YX9dH@qg!_=74= zk5^=dJ@=nA68ORVH%K*WLHFclb(Hyv9XrhmAx8Kc|2Gyu&v(<;I&y=?KjD(tw*5km zi&>lh(;6n1wuKmD`)kcgWBsK(He60czTsg*X++=aO-3d?(WgJkymLA1dJh9_P3}iZ z=&-TFh@OI-Ke-%V>4qnim#t@6T7oAP)%70J9}15=8@8GW+bHupt~ukkU$AVx=)m#^ z8$pY3m*h!UPnS4kx>uQHm7`!xbQk0imU9S@ea6wa_J|h_wI@>cvWPR;{HNM}Qu|S@ zO-~>80W*iwes|$(o%y1*<+mI`7J{o)Q>EJ$g1!j-0PK^mm8<*f?(t1RkGg)(>6b1F zz8Iml0a1D5TG=R1kc<|DaGzx3jv-jbp0EpFCR5ekG-Y*2Ib&iG*VK+~a}iw=jGCSTw`P32EYEg4DNHWevYtN?pf&cHIm!o@3TBznT8(Uh)2gZt~QGCQ=)DAc{W zlEs`;%q;lcMS2P`UJ=^hF3|z)@@t5jK2vkk|cX`EaIzP^OMx93HqvV_}Qa5Mk(dG{{# zis6*ek&@F(aC9m8wwau3(Cvfam~OxgqTub**y*);L}RH3kM=#k@1ZC2ZK2^#P8-pP zQtx<<#~shZITy?Ad;Y=XDPDV!4jDOO&1OhviB!=U%gQE>qb2 z{+AccUn6-ukKhFTHep|<*D_p>UHil~=rI6DJ_03mS)9R{wr&P<@&XGIVKfz{`Nkw< z$pS~YVqiQu_;g{#MDHkDTgIMaw|@pt2I*o0E0=y@Hm~$At+D~n-#=pe2nDD1JzrTY zyklcwgGt}P zoIcjr={j)N z-YegFXu>3TxIS*&pMk$L9+BsMtG-9VVLXu5EhsUgKb&7ebYUiaX76Q_NhT4kPfx-y zW{8J`72pE4JjusX4%BaCNhU@y$Gp|kSXra;(xsK8*Kui=8LM{2%${E$>d}So^^neMth}=D4h4a3mApP3+JbHVCkb2qG?URo9?oP?pg`%x%b&A83lqC^XUL6VIZ< zjjU|OomEZE2KaCN9G_v1(6zQ#ey>D^k6ev^+`zDWV3b`W*j2F%H2wX5$a>4DDBJb_ zTM=|XK)P$_?(UAEy9AUJ5s>a~7<%ZEmTnM%p&JGe>698uy7NEx-uGV5Z>{J3tm`_j zIqRtJ=Qv#wx_;H!|L7thTSatDiuuiFq9$Pv*hFTGNpKq$EQ4;P3_+fQEkV1zUx&jF2i1( zBLSHrIfo}JjAiM~+My%E+)^v-$t?$(8A!~|rB1hKrH9Ks>ZY~vx6^9__8s~dTB`$R@>Lw=3U#?Majw z#H@9s`2@g;7kjh^bW`Qz`Hjy8pHGd!^lM#J?1>XcFEr1a{gyHoenxPRk9n?hJS9+z zs^g>dIiD*DfkxU6U znLBO1T78QzwFB9Ivn6Pi65tP49Hy}Qfr@o&N(MsY3tuYBz8y}l&gQ{I(%LgdhOHby4w?OJ=a7J;oS!Nzwrqncig4TY@hBFr@TG!e> zKA^*g@cFKluKb7eN4iJn5y$Z_Tb1^u8yk4Id=U+idckIS_}Sj8{{HuMZEbD9Uym^y zN2JI-qnH>t(wx78N*oON4nA;3M6!I+_ZSZ%RhJK9(Mxwq+HBlymao|S?i8|DLqnh} zTHn}}>YVZQ0dGuJ0|VLID(n(1cbdl%^e1INNP+nC7gj^JT)|kPZNO+QtJ#Fhnw{Wu zmBucH;s<&7ZwGu`^dH9==$Fgm=-v&yRe$Dr&o2I|*KWE_WGty~V;gQ%8}%B;cy>e2+$r2ngHQ75pdcyMOUM`k2BQqSE}EB4k};L(a2 zw6SZUbV6Gd?s+m5QMU4kK5CDrn`i4AOn=O^X4K58Gv*+g{04#N&1+4O9>Y}$PsG1w zMY|GrVSs1fi65=hQQj|GXrM<;IX%C^O=W1&h|c!qd|_i7YVmlLBRB;|P{*lTa7&mO z_%T$0rq(m1cR~c zq*3Vg0XYrto4%~_hk*GUtcL2MipjP<+5Gr4AzEtkpynOoweyD5mhpu8*IVuO?@S8O zdsJ9PK^3KpW}3>eoNU7KpOIQk%%3xS1pl%THWV%^=z(pwh3V}F+L<}Md73Gvld!Yp znphfzgYAb4dOphuq6@PpUf%;?CF|G&^qb@Gzw5u>)>v56o6iW(M!lRE-VANFc6da3 z*B@Kb@|bc>^`tlpr8p0U;#HSRVX!LgTUb|bMKR;tmU z(`20;TMHe$%Se?+k-q5r<}~{&dOqiaUXVX@jKT4}l*G9%yNGh#bwS>rx>M_1=%ov~ zj+`CCe9yPvq9H=+LI&#{_d$=(EFQuj^_J=IqqsM)jHcBVQr5=m z{?*9$N}H39lPC6qzsg4LDsj*#m~8VgL8`jUSJ@WbLbTT{`mPoAbBO}+>zbQ;7NLcX zgnHm?y}-}sx4;Cgbqf+iCi$Pd5MqT`YEbp9jeha}LtBb>QrJu-if|Ds#1u@4(Gxet z2F=6*LgVezW$vpC@HH+H!e|zemQ;u?Y;Gl|lGN|!-RR2MQQ2#m4tVNt+yA;Kve*65 z*m7~YI(}mh4NwV*45qYN4^Gnv3(m)c^k^weD5kEzGQLkVfAlYbh+a*uphpK*(Ma6m z8ZWp`aeUpK1Ri;P$*{>ofSGf1zixAw4j3HwFopb1V*MmPz>}8Nh!Hve&7e4wT>~A2 z(7nY7ooBy0eK-XhQ+h|+lw8-HN7?*%DAeb1FXc)d96BfV?jWWO_R^i+7XqIv(ha59 z6zi&NL)_^!_UUE`QI2m3=WwkjHs%w%*jiR1M4Tn=n^(uH&;4_jYcvG#-7`IWfPEH6JeNcYQR`O#4jb4{e zls62yCq_|d$xis@pPEv;N|ms!R@y|t%W@@#Mzk%$4{W^7k6K(F{3zG!CZ32tQZX_s zLs%lsU)x~>xWkjb-#;gnm;$FsKbgmjF<4f@=ZCcMgzRS-kmc5l;(k(8IEAssZ)rI% zi!d7|sOl%w57t*OT1uv1mht+%R3jQ0;Q6eVIFgix^yd{!c=0=@Gmj>DzAYV)lq>mN z6wqS7q|yExhYgm43Ph|Rd8obTlj;n6!Ff`Nd*rvNvOZBS6t}zpj%Fh-C!;1ToMOCY z)neWMtQJHulZ@T@#+(z|a3StffU4y`iv{W)I-o)HUALPu6#E`i6z0_yanXlVap@HO zg}m591yXuUn%Ya|ypmAhplL5NMoM2T3CBEruJ?dTCFNd!T zLskqfeGx_LDOo`K3x_ENkBx~{NY7HCK1on5MLX_UG38lNOG!70IZfGJ$UQr$$`~RW z#akAV#wblq7fgkUv+)w=x)pv%w(J#;$x+JR~}= zJuD}z3vU{6AAY4BOBa`N=!Ea-nx{m$%yY{}6NjtpE%KiHY3 zt`PO}xWd)7{piyKM$HY1|8+hCqF3`1g}ry^`sX-3w2#f{krumTwmPF0UMhO{9l}(< zqs!9(4e~SKAA6rR?$TBU?kT{c7r6n$3txjRrnntx_dm!^hSOJKTSmktRYzo0+GaDL z_Aj^(T>ac0AT%}?9bgIw6+b#DU#gbZ<=9#a*owLEcm(obxV4OqDj4^bbjRjKq+qjo zTiVr*xJ;N_pWn7Y2Obr~`?8)_*Wkq*ZBZf;ZVac(#J@h}4cBqm9A{#?QZ<4Ef#*XiC5_)zT4E(v z%SjjNIR4MVa^{~rBH3=3{W6|2&PCARm9I(66DRUht=eFjiHB{Dg4;2MNVVxF%I#rB|%Cbx^Snn0M&6t=Sh?7&l^l>b0> z%KSb&**{H~>;u^rOPo0+Oz@>zW93Yyt*h*u#Tmb;(r*!jUMhuFqooTgh^wq?b$SM1`OF^jN?@~Po3G6HCUm%%(8UEepFd{hN)y=2xG@a!i8d0^=(0NKM zzsaGQx6l(;Le|G+qn6v>uT8|CVL5S1O6TYB)rqnVI{s89);wGCd)SFyPWX?3GMWv& zfngm!g;i>cVC$wJ!%=UEonQ*)kH5DBe2etCla_SpZan5|lb^8W)5;~`9M zF>Fgc&A8hyN@e~54nFdj!s zah9HROuJXiC-^wmKi0U$5B1&q``4Hh5~GZY&c|L;Gjk-|>I#N5uvOmt_TPZUU28Q|!22`(SCQVoE+Zq&B1 zE2GPGLK^|?_v}yYPux4%U1o--_t)Y*ojy@?rGnfbz&bvqgKpiLZ8-`*Hv%FZN( z;GI{U0Std1Ddoyu{W9twPR1>HGWFlLYB}3`z}?zQZr=~fIwbdF^18;eh~u)G(9E|@ zf&Zq7uXj3ZdZ-fclUSM2E+<^=8uWj3aL0sEW9A|pvi9tWzC4>1i5@orvG_)JTpkaS zPk`3Sv z2}`*s#*AAJ8Sf!cXInQ2kl!W zcBeKk4L8prqV{$477Nr6Nj0ZLw!DpSgDWf;w)v+WdiImB^8bS77<1olQFmK-b>oJ| zWFxVEza05xML86eQt~#@-!W~o5SuGraDHj~e4lx&8`GMV(GNO!#tg_U>5>pIG;^vW~;B$?2>KrG&t3z6H z!`P;oH>9(DGdc1|99-#SowG%&9-VtHexqc1+kDXaHuLkGsw1;HBr5&f%X9r-ks-#N^V9j_bVh zf~98)f#oN96_WEvbzemKYJENT+QPhxfAD6qkO%fK`#gf!5itVq1K8RGpqMoSqF+D5 z$U7gf%ahHhl7(29=|P;of->gPy;V@a_1}*3y28O)B=$&u{YQPoMK*`{D7Wwhpdq*M zoiRRZ=P?%@oADH9%NNk+c>T2}Yv^@KO@8X!WLPFgp78LXKOA>{@W}emSdBN+?EbRm zbZ73Fd8x*qbkM;IBTMsS#w9A=?*?F1sVOVw4pt{tCIYY>otA9tAn(bdR$Rb0p1g`eLzpQ}7%;-{5u$0XyaKL-FMK~l`x z760C)qeGK~5xOdpk=t@=FP!paDzN6(ZhoEbG>foJIi-OdCa)5!G&dj>Wg^3#ko0h| zf@~~j`H?_1&YsC;OfFLex4DC&E-&2*7+0EO3T`G`RyjsE@!d>ZzJ8Uo`fL76K|WRT#LMe= zO1=;xZ8!e(B)&OC^a4(9WEYCnM}$z2L3)hd3T?J4q=1JVmBvu*&;da%aYQuo?*?h$ z-~;l)smOF{m{4UM0Ql8^XiLAoT|77bErQ;~B(DWCumEsj!aKBj!!8OuQ*mMrFG3#u zoTG_~Bd0jH-MBN}-akt4(kT2G%M_PSvIAFcxO#*~C0>vQH4}QyYIHYz6qR@6vgfJW zpNy4+Q>2hv-!u0-y;cVw6=KrdiAuGY^)A{0Mt>FBlnH}}^%}B7JL`RdubbeJ-5U+E zB)fj&(7b70{9JVTk4;j=vU!^*6yg81oXnM&n$kTPsNkjE81+Af(niDT&xg@pK0|Q0 z_76HO<^krf0wd(go^*rD}OsQPW*?WXn>5Tcc0$h$`W1!e0QCp65V@hXmvyw zP_-?`21FJro_W#*0aLu0QGPJy_F`gewSR_qjVk+RviY#Joq<;G=h?5to;s;)#0>RR zR0`~X-?_*WGel)@Sub7tV)eVPmoGf#%T49dn|!|te0?r_Ce&lx-zRG8w#eJA!L3&R zM(WD#s|CaQ`;uSpla-`p$qHtDvkta({$K?dEhwFMA9Vy*>A%QG0n3c;7WBpM{km7% zJ%VAqJN~AtV157-R!n%NH2YEiiIB6u(JSwl6^G#v9wX7wwQmxm+u2b}Rl!yjxkOAD zQoKy4T;Ga}$kWnkjO?6;cO-su`=~I>MLKz!4tWjnS^#ti`dwD?5m6UmchcC73~gfi zYIteQSKpB*eIkKkoP$uj+9rBk9>|)s`%4bYUGMQr{Tc8XhK|WMoUDhF(>OEXbC-)Z z&qU%&TL&TKiUM_u%b`RazwE0PyyGUAgt~=C( z{`mi)rHWqr`lUv`d+AKy2jHS!4<2kVt=0lXvJP1yZAZCDc|*vC+nlqq79QfV3`!YL5C)&VO{gUUOof19%`=hUsBr zdz|bL*?IN6GZFh(;q|7_6PXUzj1L?CTCq-APU^~qbE41M|J;&SHe(mh5|7JT6g$Mc zw-Ou9){(+!mjIBS!_}5Gl8MF!HPrui`#BCxDp(qTiy;Zp>oQa&$U@q>6Gz}9<#C}F zG?K2`6Y_e3aBh~ww4iKs#Z;j!EheyGdjuQQR*R|qS{if=7 zCMP<$Zb>14%nB(!`|x)639k6&xERJ} zNGv@A>}hxi6C^I*LS+V8P=`grD5}t0?k zPj*uSwN0&jmJn9&w(s02I~rWF+!;jFZYB+cR{-_|E$O|FsGOEUY|xKfbd~kZ$RkiW zzqJ~Wza9aTwRGg4c~&Ib1JZ*=dxWaDD4n3=+X&hQ=jb7+v2ON~P=r=e^Fbu=n=)1D z4|Fn;At&<@$DCX0mE`NQcn5Fn1Gd_P`1q7{ z>@JN0Kc0Z;sh?u?#@e!vM4QjE2wMC;TSKM69Ila2zc{Y(ZPic|JzWx_Aaf)*6{&{X z=42O{Num4&NO9~ta4=Gliuo1YWy`;d*F4tn(qYeJ!qvO0+co;&KEKu0HpIzvbd_b+ z0HQ}G zoJd5y>gDe4t^wl88mH18u%VP@jM75`A|rH!`G1Y*?d)U%=fn^6)8tO=oo;TNM9&GV z4_uzkXdfnbFl*+0DW30w3PqonB{s)NgEyC+(`)`xZeH;XznSpGH_Ta|u^apz-yWu3 ztWB2vz*$d{*f6LN!Y8ISHhKQm3pq`%Mntmyi#zU1^RP&bO?|U86hWL&;28x9-9O|- z#8G>ynjo~9Bg2Rx%|%ktMT6(_g>!>pBBoNGcKosj&zj zzlQHjanaq0b7mOu7B}u2=R=B*uZIn(2(`a7CH3JcqMB34TfSu~V~#l%7Dc5YTzF_b zd_GT{!lj|jFU!Jq7B2nk?Tk)TJhEW?o&Xc0u#vfroqk^Jt4;R#BJQ!xJ=8$@f3*P4 zGi%#?a~(Ntofk^}E&(tMpUxiTeTCM&l7K$Gx%OoH&E5W&WdfpSeVd+_C}2R*r|(&z zkW?%c0WmwWry}i*_5i~ca4|}uN2(N`K+1Ho1bWAk8vY+OkD_g` zKkk&4+RZo1RQ<^E8RgYnpQT5l(nZWc$nTiYLRpDf{&Q&m`%uFDNy#|8mz4PQXs#Ut z@MZD)cz-M=jGBP%D&DEd%)XTsCJLcz$H~PPL0+&T_J$5Ge9#x1Z24h?ob5HDn+fBB z;Q#M&$K<%AnqTTl@r`Vr4i6vuPKa6@>~ZKF&9f!xd&|VB+Qj6wxTes6MrwJh`O4Qw zBnVw1K9P35imd38O+4ZMd7fwtVk1rUP<_hSQ<-MKI`GXWaoUM8D;dt9Y~P5TKXoJf z9W(*+KJq^_<55<}aoLFDKkZ8HjQEAUbn)YBCJ{N4m$^pKuc3;6{hNOdgNnN`fAh!Q_D=_HzK0jag3d=D@BXr_wzv?u>^!3g(N%=n$oJ!a zYEWPMJAHi+xolyj3cCmF+n9^|4_W`u3!t0inTfbKw8g}G*!H3!sMvFALK%ai&UX{v zo3>}>Ovl^(nb=`KA&8({bP&60BClXT+?ImQj-U|>L~9|R55*xp;gYngCXd_^Tt z6x0!j0*Q>=;<(%)?Dq(Ls~m-`?ngy%jj9;Plj*Rp*s(LfH?id4|E8=ns>`+wp{3DEG{dLE-(L-`8p6n&1B|XLs<)YS%{{ z^sPwRvU|}p7E6@tHFp%N^Dxm%`9f@ywU@m=i^^G5O@OlUXax83I5Mwksoxe&{#b3O ztK;((M|DO{r0ZrV(f}*qvR?>ayBNYavsyeUhlE}s72_GP6yX&i`@y*u>k(ywVFkyc zdispEm}1YddIlDgMhNZ5HrORMWDkrrdTWA5xDlLN#x1jMeT#vlXi0|ZbN4aMLt!Bj zyLj$Ii7QJ&o&X6~p71#F-woYQ_n{Gi%FeV#Mr!v6UB{Nj3O0s%Jsmir(k7LB)&Nbl zh|zw6vw@fuGw^8aMHpn`n@BA9G9u4cikD7oqOfpPSE!Kt@DjBq-CfKtibO5vw;)kK za|p0l#Q=Hju9*Q2#!DjFNC4u~1ouDNINiMRjN=*j#Y@vT>v=pRgf0E;z_>A$G5^yN z0k^A3L~7>G@`%OQUf3hLJd5wzyO$%7lht>Il5VlwJHPBbHGSU*@g~p^2MZ>u1ea<_ zzf|9te&-uXelFzw$4h7IX4>b7u4rP@MOr7`3_)W4*Lk(kf*}F%xai*>zo?x}aOv@i zNZM!@u;Z0ydB2uuVXiZmfV)}p5fKZYOVp;4pSZJ>24lm;h!gfF^BX3-5KwFxs)5KC z*5^z@3J{#o-Lk5%?0JK{Zz-1CBr6U`x_&4*9mvJPelxB+~2?*)$cZM};#e&S;unLEt_A-Fh3XMb)Ht zPi1372)D97zwxtZ4@a;_Kn|32q&Qrh!+FSeS2Tt12UM<178EsXDLXf=zktSsAqHZ< z-pD)kjBU;d2^=vhU!3$HkCX+70ZH0j`ZzClvyRlxNC9=fX z^W>=g;eMAIhQ&2d3x&dtR@pbFBAe|JwLVmp9K#I?0Uw9_(PYhut~!#?%3uNEB=)GL zSnY-7qzD|`0V(MP3|m`1m0w8C>AOr`aro7M*Qo-PKCw`gq_h(z8^-;uQc>D(wQqg+ zk#}V0ut^Pi?f<$ncoXC%OZkoT#e&GMq^aP2CLVs?27Te@>Z?jZ+J>WF#7oQUv_LX> z3D8no5{MpvDIK;0C`0fVj{7ZlI}{E^MTTCiFJm#boonYwGe^y$RncpGOG_b2a;Uqk=0G~ z73prf-mJ!B-L|(BE*X2S6{bis2SL825Z$eB0g&&Y+l7?3oVt9x+5}n!knZ$5EypLi zG?#*EyT&QstzJs{0m-GN{~*}Mu;zngM-nX*;sb{m>4s!8OQ^Rcmtc{@$y!v!T?mk6 zgl7505Z7$dnT8&)h%A$$wC|1h$x8@ii;PRJFhv%W0Qv^$y3a+70&%`-p*^j?I%Z(I z+f-zV_#-T2VQ(lw&>x2I3~`5cS?d_Fk^qtEQ%c_;0|+v_oxHuIopJ>od$!DOpki_L zzu`?!2PMJs0R&MV5GK9ZMv*}stLaIZ;QWJ7x?0{uxom!Unc7Cs{{b|x$#->qg)PmU z*P_V9`pM)NRs2Jv6m=v}8m34U_O(plIVoA|kFPqqm^=e*(C~M9cg&n{ zmjcMn4gR3*QrtQX%q!D7vkIZe+Eih2mm6FDv7sFa7$OKS ztH^Br8_C6$H%=To@Wq}SXoDC_50Nq`14u!uXsh@(K`T+az?S5vyBa!0B2TbvT+lj* z=eXbp7M(}czh@6Lw*A^uLZ!|q^$Y++phwM85QwGk2bseNez}_>ll}rK$PUc4m94}C z45LEa=;l+NS7!v$l1y^C7z?B@A^Ey-|j|AJ_F9uvpP^QxXV=5b}H zOd3sJi-F2?uTY4$`}HXXN@YG1mU~){+AtG^1tUU`wd@{vD+9O9? zR=*%v$HCU4>-w;asw%eqpZ-R*1qZ@fARS#k@C>^m)4NzOA^Zc3xR{nSE31zP5x#p# zRAp#vZ2b3NTO41ywysV}SJ(5{304KQ@#B^v4KYF9_zCU3EhPyglymxVmZkOYMZG2u zYXv6DgR)(|I6A)i05q36S9dT7m)`9-TDqOVsDh8IE@f9A#-6`WGD{|X?L?0 z;}M_0rkdDbLgrvH34dQM?8CAburvD5^`S(XNV(MMIh(Kxzs`}f)@<8i4G{Gf=jEtD z3?vDQ`usMVDB>Oq2_e)+F+gEVyZ7}9*cwXIbl%b0^jZ`MN$?69Rp?ahDHZ_y46ec>;(&Fn|6{D^!pXOp{? ztxxHap|6h$jO3~ufwfbDN+Cq_Iyr()h)>hi{gW-j)Wp1CnA+;+x1-tyKtcuP5`1ZU zZ$)K8KrAH2g)9wbq>Fd~9wM?xS1T1g>3TIU_sxd5)-V;BohLgrsHOVgD@=3l^OOkl zpT`Zs&lu=y9vOM7a!yhp`TuVTAnI{Oos+DTX6my)w@#Y8_Du~!0H~Fi@*5F=NRzo3 zlr!_X3QJVp+97MSm&am@=&Gf$voT$B+8v>(Qe<{)_Dk%+mc47G5WPWJJJo4kA`86? z^)#Nj>n_e#!4lcIYe9JJY&C3ZyS0P0%qX?AJAsKV)ZlVZ^Rr-{Hi)q}UDam(b2@nY zy}ALJGGlRwoKyb)9o~u;Jg1K+;)x&h5iA87_7yL+&D1^4n))OQcG69)f6pp1mmm9) z-%b-`UPZT^507&pcXRW4;}VKRRHYwVBypcHk-!tl8U>_odT%An_R4DX-fDQFer(W4 z8SpVBb~C%J&)8#+*e=nWF^zjbgE)jQ9O~iwC)X#i4>4KgR}c^`uVi8^-{K)~u}ee*i$l+*EYM zUFTx;Fs~!v2%&*Z1VkloP=R{dX;6Qy>1|fHijn0kk^R?Ij=L)K!oiQ9A}b;0yd;`) ze6vP~x7si1Vhs|VH*PkH%BQt$-=s=ZmO{+=vmP06q1i4KC99)>+uV%J%Ppgo zyn!7nCJ-&fVo7vEL0FqEzpf@;MB5>cvuv~LJ~Ai{b%FaVa~Zh=lbg-0mJz5aT^Ndl ztVAn~NsDtMRA$r*2#UAUv5hAa=Far?rOR0pI_{(#{*&`O^+VM=P z<#o=Z9e_XjGvF?na^j~}(tQuzeW%fl#UcYs;}`o?s$zvNpV7YmVK@H$3FBiH{_D$OA(V$yi$JgxR`2T-8n|^ zl`LMQOXQEB3RarV7;ZkHSy$Z&@5nJfX@J|pTo++~3-#v^z{{22L$=BsxHNe7Y~Ksl zsjNQJX!^K}DNYwh;t;&k(d5y7Ba3b{vo6X1zX)i$u00^u6R|9*|-it{D4 z>!oHT*LdzFBX&t|6dyBCGiPu#CJVYYC?szuTMwYc3Bn>S!{fRX{G$o|IIc6c=mMBd z2ra44Bzu)B#wKxreeWbK6)W+B5^VIkp5 zTpSXqMv@#pY7izKpj9Dd7E3Kb_8oyU|97ggVro=%!U?Lrb1Wlj%lHust@PwVhKkWA zHZ3O#AsIF7puW;byl)UwHXX;#$E%spTZ++#n6KZSqONX*B+ON~*xop^1SlV` z6a9QbDJ}^kE~C{_(n2bu6*67jW-yu46c~lF#!>n$Eg{?mRWWHm|Dt94zRU$>8pu|R ztTZI#RS~4(17g2y;^y7R+BU!K!{Yo|;PAQqz-hIx(V9Q&G|rCP&B4QZW>6Dn^;P{WKSDrA+PByL7eAo1|LH3|kkfK@uSF65C`(XAuYY#$TR33E@%- zgORIvp_Kb~RkMQdVJ@6d**!ON;bB>O8Zjb)f&N!JZk8)LSTk}f4~d!Rs!YX_d$OS5 z)s`*Bx&f@vo>{gx=c$1OWmIE6!FVbwN}1j)`@wwAeng-+x)44NP=S>>rxsS;9PI*0Ah(b#?QbOfRwPW}SD&h~p^4q9M+F z-elj7eHv#EkB@7RFcIVLAint>@>tUw0%|qIfF)TW3(E|tMxIy$p8{)-n@CE zLZ3V{$D#0nL)lj?M>xzS4hsq41i1Z^!mB)&l{c_}of zx-|@ls@nF3e!sdornhT<4CDCVbN`w<7{ZtFCrSBVyPR~E3cR#Z*ZAV} zqjSsfcWy^0!AjG$0p4iM!i_g-TcMQ*7c$U| zrgpY=PQg+SV9{-|DA2PiRCF@*Jt3t4jpPqm^`4vFYec z0p^%QG-Uuqq4%~bTp!0LEr8g>N=j+3XqEQ`3`pN(A7MFXfxLa^I30IB(MLG;wR9y! znidYS8R`IVxtw!gIW%z8I!CTT3|Ag23h#o3A^$iC53>&>n?S$5iuR4V9#R=89@1YM z!ppi>MU{%JgUn$N3S0$O>H=LPYeo`Ysy^*xUnJBhNjjnoHfMB8YAq5i97}9XlF%d_ z?!~769 zrx#@q2E#;z_YE)Y3{%?>hM;*0YSR~oc2=u~*=liUHdB=n7j=;&H^S@S-=QE;e7EgC zs`TNV*agjB5BynE&40@ionT&0tl``h&||{seiCnZf)V*occy6buM0Ie z+G5@FV=ACK=JSEAo5}IHvo+s|*e?zaAEZN~XqZVVzjOVR+UHuR#{L`n1rCDhxB%|AI{GaSBE?o>5uy?lY1wErPsuC zNJ`*Og)+_LRe>WYJM0O8hp)H*NmJ{vuj_ciO+Od`i%E39M`{U>W?gqn3M{~U#jl}^ zP<$;~OEtxC9q&0G>I`}2yWJD^;Gtb_O=%Lc1(DB2vf0}D1ck`mM!IC99!}ssE^{8^u_3B&QCuzx90RBl|6(?@_WCG+5_f%= zolvN~z+}lX@dvN842v?&b<_*#e_Mm&-YD7wX6Q3sTd^*Pc+Y(-kLjGW^_4wP^~Uh& z240ZmQzOO9kOE%f1mQ&k!$4TWmKkL(^q0|Fz><74)^HW@%RHky!9o~$?21BJG`ljU zmNF>{g*rIx>9WGpJ%$UIVgxY|o00VpO0ik6kOc&3MK?7eu=Ex-Ha2`rsOx=ExD{u~ z**t|)pHf;+en>@Cy8qo3H!s{1Uub&v2GM5*?)hWd0m-BZvp{i+3 zGE7>>8)l@=rP@J$&}g8<7dF(HO&Iuw40@{)5T~z(w=rT@=i^~?&s`$*7FB+Vj;CoY#4oy!!DqrStEA&s3#O1l~A@(TT|2|L3A+g@N zl1IpNQGhhLWZ;sdknbEulg?d-`{jLMb>3F9zQgI_+%u80GcG&r`^>YjLG|;f_<$sD zxD;T;D*!sfCk0C!{s5+?kBGx$XjUXl_SXYR6&x_Sd-DUcUX2@`<%c9M&cg z5IiV;;aH}!Vd8ktK8Dfaat#Ybl)tqAM13_|Bz9HQFofe1_Frtr)65vkehv!!j$@(- z5TjO>A}r7@Q3X0R{8FH*@#>7Mi5ay^2?LdaN8epoo$Fqb==N;eI$K; zb9ElM<~L!JA@(3n9c6Sp*(z&K4|r)9I7IABAC*7!8G@|+cXA{l0XdHwe}qDY%HC8yoZ?8%~vO)D*RQi#^z5|QQgVEG+5Csr!j<#=F5!J zrmFs_Ukfzy*#9=B^`P+jY@z0X+rkk0*Gp9snPut8>9(iIR}UL@q^8%}&$ylU#(7&? zn*p*WL1PreboVAiNYZeh2kC+pOhZptlzp~3__NZ8jC@>E+EtX`U8o1Pp`o)#NL`U? z5IyV$DzFA?YIy*tA9{%1>nB98HsWL)QSlf$a%nnI z@km_LNDSfXKfDNdQ0`PjZ$th(@LKv9%Wa&a{h-Nru|1dLVgGr&^4hW`MHxqK zzE7tLt(%(xYV$s1Tp(-Sk^n|dT zPq{p;XGVRA@Ke8%%_G7NY^bvnf(@qoso7}{k6Gtg!pD)s($Fi<>uGiSi^ph3z5C}< zg6Ks?y`UFBezs3CsdPbKl-+$u- zv`!)9Y4#r;!*hOw7jPIV%nmcD#FyszC6?xi1u~VOR?4*UYemcp_9T9DeW5G0!}?Jx zVn3&2Axb$0^N!KCzp@OV`|giL(L2;&qWinsnYS+$i?Y;*5|KzuPewbRiLpWq^ktZ& zDqoGf*C2|B!)IutTf6;5gV&*u&-#6lBxg+PimL40hX>=gw{P3qoM09?G95?jwF6jk zTri)3!NEOO;Tj282h)DngJ-l>bc4+VEFL9gJ1bVwaT)zBFmfY-R~0_})wHI+x>ANk zsbZl==lJL##7iMIeFB#m&Dz=;5P}7y)73Nw$&d{~tPmw#|LiK((bX>~qxImYC;#XI zPrp#rPDA}C$_UL)W2FsG|8d=O^B7606ki^Nq4YCV%^e9-%IV*n|EmS)1Ti6u{>vS} z3~4(swVTu;D$~2;>1VRNKe}=RwiK3D1&8GpYi*ZAm`6u~_IXV0AHjy^!Sw>oC*WwS z`5~P*ODeW&#Hmww`tjY1Pf7f8-;rI5Q;8pqi$#3l z1`?12kYX|J`#Mz5@$X3MSHtArUW-sZO4-?i7XnyveU~YEEwipgjoJBnn+K*V1*yMJ23|iovU` za>v1RGMYNO3`-DaugtDLds?;$SbrsGBHEhk&?9q<~zVVW&8n3K48Xpu<&?6++E ztAM9>k+ngreGfmDgWFt#P@c@DN6}ny)+>{8Ml zH{1T8XmdZbp3Y2Jb~%>G_WnbaKdh;>Q7IGQERJj{MTHbyPj&WEcru+@A^*El)H(iT zL6BWgE0?~MC9GvCg#v3Tv53u2h>!of+f zaY5(3R}!I1GpozF6sh?`*?Ft_u%*3D3-fM=tg~bzmr+AnkfqI6KdwceqiwPo89-R4 zplU!qX{8gP^Xq;bh8-TVqP%xvdeRy)35ygTYlD|*KUhyK24;6o5iH`OAlaBs40T)N zNU_x7R68PIoJ>{WE9KJj|q?UmNeBI1v6n*!vhj*)zFnplHe zT>;b=I=Yv4<8}SQ5wk$A)clYa2Rkcb((C{X5ECSm@K+P&d}n~fsxaiY!6p_6OAgyM z6DCqp>DM527`uNhK&Ij7o9Za)kiVL9>nM?DW>&tCq&i-QEj0r0J+|{9H@&Hj2k*XyPVi@i!g4&;_vK2avW?k9U5K{e6*5a zo9?~hzPgh0-N-=ow_pCcO(JJT*1iz@2PJUu?cl+1v;n2YQ1tINzK=6bPfx$e%It7$ z*ep9JSFK_G;sEvhq5{s>Qh_INt zA8|fV?jXFuvUCLaO~bPY=X}r7QOXQYBMexeS6HdF{|7MORpczV^zv@??s9W)@vC@1 z$^LpY1+$WdmL~p5LoRwb!z%->Ap9gf98S&9?>|3m{)}dw&X!pDSj(f7i)UG)R6ywB zE=PQ{@O`iRY6w4gF% z-y;d*$7MUd5}F#3>*W zJDYh>(@6n*l9_ZWoT3`77vPav{Tkk`$%lC^(C+x)yNas0p3M-A1F{%uK;QCp(O6WD zTKhBm<9QKVno~q11}pfWx)YNQ8N^)age=_WeQ#|yPa3>HNr%eZa&Zsx(MtGE+?`%kxIy(C6VrqMGAA*kbnDW04o#X)_x#|3Yes&~g~7L38B z8+xRdC9!(GIld}#)=sT){H0FtB)Np&Y^ir(@kpHv}FATR#24EkO_>1_pk=cYj+ zp7R_0$9KNI5kS%hp+vvfz1kp-4^+`N8?Cl#qtOPuU1Rxvk&{f-CAQYVb&G~bozeM~ zw8~vVN{9{v{Xo^Sp&Ys4^d2`2Zm9*dk91m1UuTo7m}sOobz^whPl{=h&@3#D#6@9* z?qXddbaOPb_A>1c)FlAm7nhl<@%QZqem{czgF!AOXsy>l{|~)DLce`X9r`h?ShA~W z*>cD45UH5Z%<_95-2wK0<5@Bu{<8-#?qx=7o%NRuvSas$sn?farRGGM^3$K3Vf^U# z=~EtA84^8*5)DjJW8IP_*M0nB=;#8vD&&>PiYM;=M>^97h>}HAMVsZi;;I{VaKWY< zae=2t%=72Qcsp34UQZU)a9zj2qi5K^=Ru4)k1A)G6(Kha z4Y2crH{zQc8E839_X_Uc`zn)9+{Z*UMl0z;g}iE$$h}e_5Hm1z+xhG zibl^+4-8}85UGTE&|t1AX%sQK-*DN*OSx#*knM z@BKr%Vaax*+4|pn2IVsDn{4pn-~AE4bnAr-ufG}cgpX}BbT9lPjLNzHv2jlB{St$n ziratpBb*DCao4|o7#%*xDrUL%_rJh{4-PPJ>d(01BX=Td8$iR$CnkB|zWcGA!_<9~ zv@#@4bJ;CJY})h@qIiJHfNLn!oI**-)4h}j|NUKr!4q7vYz^Ag>zq2Z9-2@Pj9x z=aa)spvagV}N1+uXdMTO?CR&3p&){T2BuXmd(UGC7Y7j!wNh!RdNE8i1ilRfT zN9npL>OP?z<4>>9MwcB# zs6muCsVKu9wQh`5F{ze#()Bl9jwWGG!HDJ?c?VaqdQfhV;Y z!dWVB7&Vq&cba&pfh#Sh?4WdnQ~hY4fpK(o9hvmNON5lnG(EmOO}`w%R+hTcget@d zLy^s4TNRDYFqN|4`>A__Qj((VQPd2!SD}L@eL=#k>k=1|EQ+a#4$f%2@C3#o8Kep) zK@K7Flp^#X0_coWkA|pZMcZ3OY5`SY$!L;h#~H0Jr?PEKwUkJXBb>!1gQO-ySdC2_ z^=^TQV|*n@qKK+Y>FS(%5h0uN%`#c1k3`KNq87eA!`Z0EpdCf20w2Y=+z=?}VQEG& zW_l7E*YG|=1a*9BND_zcHAv$Q!U<$BfD0qa{47m3%xu`B&n2|;9y+vGH$-2MVr_@Y zYqC%>&=aJ}qvX%|3B(Di(h$BbXr_5a5GU;1edRmybZ-_|c=xUsabVsNRj)VMx%2X$ z^-KA=Bzk>aJLi#7V?A7Q**mkgL4g3JBzP7?oCOy6C-SZra$;Slk!j{so4%w*Sb09y za(v?bYnjaqPoC&-K2O?8-A=6Y4o-#0}6Opluz8TH`{c*z$0{X_(| z!&p)yE?2O~8hX}{sgOiV(l{oM1+mrhRT^)B@QxzSkPft-|F*zuJ#PqdlH$Z6TFY)` z<%$tbo;F0Cg3o{O23U0+2TmSm{ORWyXvAE*8R9usGL^p5uuth|~RU&$HYzmJu%V9Uj87`|mYUzt6HJ-3&+AjPMB z)O?pq1{;K*{X9=UIgN39*tDj_`bA4<-uY3!{Y684?g=&yE#b;LK0{Xw^5Y}N5!rb* zwlup}Z6mq!7rFOOzf2guM!(Q};FmWd20zID(__rNw1;(z>TKD%ikGtwF#Gsl5X%N1 z*x^`v6flescdSw8QTcS1nXk(Uf&6)uA$L2wV; z-St_{bv$?dySte%&$GykQ@DWL8xyu){aKQM<&>_=Y+2*}rw(yu?<3rHsb{0CBb**J+|Fa5qp77>fE|Pu;s@8jzeb@$L{+Q@BiRt)S?SXU5jsidoS+f{RpX8 z9QOF|hd;um(X~v+F>|Hk!2{=*dF)Y)ILTZ&L97hE=eT&sVs>7B9W6NwgG2oE#90Oo z|AY&#y@6x-B7XYCFH?6f^XZ#+F|z9m9BUgM{LFaPe_2YLVS z5!UXy0bPq3L$i191kXM3L+W&q61+{3;SihF^t1B=H!`GGkvhRdFXz!CFLLIwySV8x z$=a*_khX-c|M(SVp7|n!;T%*FEn02Njt@Ld7H`&(HB*`e`O!YI=|$HNvevjiul${!qfW>@nCHh z)1KpZT*{|+UrZ^7*x@q1_t>krGG~a2dbXVQ@G0i3Cd>?8Llift+ls1mZ(9Igk3&lF zAL=W;@i^~LV%}a`^txD^va}U3nWyA3=5OwOh+f|Wt(ntQs-P%)*e4%j_ix_Gx{EL8 zxg$SjvgTp`6YN@F!ws+JsTa>soqv)F!=k9htkB$b@4e*qd2H!0y$Mdait5-Rw*S&+ zx!|fRdGYIeA&k($9GL}M8UFfj9!6!)BO}M*eV$*qZ5=Dtf1IV;ZeVuLL7vTKIsVme zFg+VEO~D00$kSPmPk!(ao44MJ7Zhr7;!STDkOl5l z;=X&o#g(`GGK0YYAKJN&V%t`xGPr;LQL;ThAgRTaeuAsk4QG^^jclXGRv{sT{AF-SK@tTjhZj5C~0vHY^D zI8j8raBvSoG$>S^mXm1Vz;_X7q!3ir&{8#U1!W@n?q5BO$&RAJ4$pN8?o1}QXvuBt zU4IGgNX{-M>09$29-kiI(6|2r?@y5hnwg^qxcOH<&r@T=9C-L|h$2|OZYz_mQ6Br^ zBXlPopzs>CCm;;&MJEwjKqd`(p@DOOpJVzHiJ7tlKEvpMJn!Lj4OECxlE_tfWeMYi z6@7xMK7AX@f(=Yqiy}Y@%c8~oeEQRu@Q+W7a`wrupajUwQt3LS$q;2u5=qLcprIwE zbd*6tT7)E~i>-y+dF=|+t~*IwL>^Z}dBSKtpdVUV+ zEofM<!@VG%H}Zd`OwXfG&pwFacIvzLg`Vp2H{kj+HjMOv#iJjrW9DMNKK7iyGuO@ zvBDE5L(>IFBkATd^h*tK#hPWBRiFMvL>y2P5!1ehINKqKLv{`|*?z|_(pL^JrUas_ zh^^<=ZEHEOYBf)O=`RQxj^2#s13Pf>vGAvzpMg=R43<4R`9Rys&KuzcaV)o{s& z30;W^>x9Kw!XV<-%XjgU#%j(y`oFXCnsJ8AN?L3BF-KeU3P(*k*7jKjmTusTQ#|+F z7+#iIT-9ODQFYmEo^>QNVX|xrkZeWC= z8^-+W)35S{xWk%FEBNUvU9MTToI*6I%7Rsq=J(c)5Kehkt{dde$0w-T9foxuctxHU zgsQ@Oi&X0EvUE|x5om#M3ISBc;Mk&9sLVUli*@yOGs`VcN){i<1<9pUh61tva`^b~1W(#jSP-=`fEI`T9nl>x7vJjRY4*Yadz4SM2Ld=Mc;g$q1N z^MG==ESziwwqXH(Q@6BdM=1%8g{S%vD%5cDmE_8i)1ECDN4Z^a4ESvyO4`V@Ux z$xXLhPFY{W>CEtt-#W;-b9XUPhhO;c^^7dPnfF~a%C}$s5O(U@6c`HY2C=UC5^M({=rMB4PDOijYAxK>^&6K9&TQt7}@e!gi(C& zg$}QM?@Kfz&kgU{z|igwaLF}GICto3q}t1^%LQ`HHB97#?CYK8#qWF*Iq@2cSHPwZ z+{yIem+?9xw-tryLD(Sj8ADOYEg!#vo?pd@>5BWm`Yi%~9-GagRE=aXW+v-k+yE~0 zgi(T*nwp%Y-dIFb&XFpOwLMZ1(iG6B2|BKZ>1b-A%?omb$NuhKipf2sKv+dA&F0v0 z=dB1o%EMzN`|kc*it;>{ER$US;eW;zOZ#~C(rb~=+{>~kWApW&Mh7v^S;a$N`W9|- zFWVL`XZNQ*K`podo#e>sG_IMDx{y8$4Oh~NL$pW<1BFe75Go=q1c7T4hz4<A+OzW2ZhrVsoX zi>e;C|HcO}wd=TGXPvW8ZKDiMam`x8@D;b?(~=*L6}<4>Kc{r3*uHoLBiFr$(|cdx zMR)^<;G%FNgP zArVp_g#cr4wm^?;CQDPM&b9G1N!Cl~6CEyEG0c{mZzHOY&`gGje9n}a#6&Gh6=I#B zt!kLELM0)>l_a4=*nqjLO&m9Hu4MDFLDt^<3oMQ|pn@DBL&jW+l#7`lpy@27k<^t& z#2y_^A?xcYXL<-bL+_*~4$m{33~;nsM(iW1XpF0OZ)VNKm(f}>jBF30TeB2hjk7tX z>hfaH;?RR%X2N(uXqfkJ8)eZI?_>A+X^w9BAOlD5 zLN8j2EV}%`FWy4O+(hhBgb2y2E~-(dXjiyaAF6A}L`)Dum6r(9BCds0Wr2IWqBMvC zY+0a zK;di`PeEEiQCgH~v2y1Y3R5xeYdm+)lQi`~8g7&qPL1)}SHDZ?B_``|Z0}*Vth|(= zqDQi2JJrFb2;2;f#g~Duaq#&b(mstW8dO0}DJ9AmXxTz)fpInRDo3dvfz%jVzHKX> z(@oOCadgIW_#6L#4!X?dIVYd|DVsk0UX}}o9k_tFyN9J))+3WT4~~_byZd{HAf{tx z_{n3(xpU1^T+p|Z#)d6a2M=(;Wm`z%QI5%yqyP3HQpTx*l$kNf#FxHIWhFJ`kWqnF zp0cv^CoMj>dlQ|J&4e!C-tRq3t$U1aI6x~5F=mcg7b0{YeMS;Smddtiq%&N%zQKEb z_xGvi9gIp4uHa}C^T5CQK2jb-OVFXDTMqK$pFBf+_GxBmQw#ejnP%Ok%Lp4A=;)lo z4?jbhj#F1Xo;fkhx&wdC;vIj$w$;1Xci_9ce|wE8S&s|rJoddqmt1XaoNr_S=+-~T$A_5P z_veT-Wa-u$NMp^B!;=K%NxUj3gN2-n1r}Iffdv+Lr+C*3IVzIqET@}T5(TSmlaH=k z#K$jeFqT^GJ3Gt%)2Df$mvO>PQ8~@8g&70uR+0NUL3fIoK(l{rf)i71J~0Z7ks7KP zpu%!37A#$ZIPFCE;+)ZCNU6X$sU=dPx*3Z)!zR44Qv85Ve@(1hfj4sp~X zYBY(8bKLr=D;ZjMJDsfLv15lw&rK1Xn`GB#c7YgXah8**8o8gvkP#J$Wwz!Q)+6QMM26fpT3P?(WSgN-sbEh&oXto%Oy+B)4KW>F(n`sqXvF@q|J{H z{xR>_xQQj(*K*75OPSsIYux+zS>_)9BEyXV!XoAydkbhM!^Yjg`oMVDSC zkwTyigwX({oxmE03KtXjIWjE>OG#M4l$qr2$H)2nfWdA5G`cx~EPDiVGn^caxaV)~ zq3K^icu5)7pzPsAf-fp`79gV-)3KDj422}rf(($(gVtE#2=OT4$qIw=P6tn4YNd(}xZ+d+1Sg-VZupQhL7h^`9~_bdZa7t!LGRTN%0OdS1KqO78u}*BPqj z5XCH+SO`>H;O7@-O5QtEap~{;j|@vg>MVCu+`9k(AOJ~3K~&xZ@9tfmuftTc&Ax$%)FhB+l zgac=Z!iat?u&oR5rRT*NgX%s-w~$253?l?er8KOf6NDUod6sSEAyj=k8!xW&(18JN zS)LKLwsOV_UU}jPbf^fl!eB9Zms*sN+k!}HOkUDxC`1|KqaL;d`8M0TupNf#{pfCw zNNQX;gV6!jB-mO&JuRsg#jH9RQ(v`}G#0#Xnd18Y{8B1&*_32J_-+lCogB z9AF>@C#FEQs7J$;Lg34iNLaj3ismzr=;B03o>ioQW##Gw6_22baqhU~ zGW4|HA|bl6Ts(IiGq8!(n-}xc6a8GWat@kX=@pXm zM-EeOXrzjuSg>?1u)qQfEU>^k#k*d}scZ*ylgOmFs*hv3BoYo+ge=zuzc;#w&gOoC ztm6D^z`r~(#$QgJWW$qFTy<%KB4~1N+wdo6US-o{!d=soeAh%oizCwd41e(GEY;jJ zqd|-d97$2&Je1m^{M#FkRS!tMNEm3(v&1|KY7`v7S-9XxW%e;OM}`7qbk@8`15 z{Sq5@3~=O`jlA;mOI*Bt7S%t(*nu->N<>j73oNCb1k<1uWwd2TEwD%_38DyJT4Xs% zl{9hX9AP|+!eI3*z6fcT70WY6ZZtx+Ful`++Thg?6XzbI<7y1JHb%@6R}LG8sLW$R zh;2ehOcaLnit`9(QC=ggB9H;rfz%2i1(kzJ7^ICb+G7xSKR;px0-Psw9V$0M$5hk< zM^Og!yd#KH1{#Y9<2g)VXlsqjy6k%21#|~4;h}FlL}zZAQe{k>p9b%!IZrFj@KTX` zNyl2UsS~_%Uzg;bNBP1hE@j<@+o`X+oc7^wQ?nzWXW#KXxWEEGD+U_@rVO!m3X1^Y zX=f#epM9Q(5AG$InI;YlRaBu1Oq=6kGt@M+snZk<>Kan(aOE^z9g<|40)ccXVHV@k^W-&wF@pXuW*kS|D3pZM z7wF8Bgo>U|DZ>F8ZkD$4)Owy=O<{dRGaR97#}QuQO@NEq__BpeGU~Zy&DM)}=9ve{ zT|!P9?Je5&ffPvP&>}!50rj|#o~`rXi{rd>*S|#>M~Wj<0Szp?W{ULsoV0MiUE7qnQ)R z8paNwtYV5Tx(ab|1FZw_4lN;4jyMcx8$p_vh`c0BMhMgdI6>*!gf>O=wGfpdsAY6Y z7|e29(!`4l*{;B*^J`T1;e19j51EUbG>eMJ4`8K4P#}#U5CWG}wCYWA)5mljyd*`6?FCW2#ErQBYS20UQG=J1w z#cj_vcxe22uI$Z+CqCJ!_+08(eKq{cN1MFXJ;SP6iI*IjcJ)4@`HboT>b&M*_jT-=&M$dz>RoMwf+0Q-1b0Qq)1RYM;c25jZhnTaeNA=D+c5URo-Q2a|1yi zeO~j*u)te|>5UW7pgt7fdo8+dnjma26m)1^dJSn%XX?m4vbc}H<@Bs%c4i7&=G5_o zqQ<%v7tyEZP}&nnj|&s(%?7hQgR>zG+Dx`fBIZc*VaD2HgdQ%=&ai3QI@0}@VW$r; z=@czHhm|??(LVASjYLqnIc!y;^Z-UnZn`}i4Fsljj6~eEqJF~m?pXFU`0T8 z;ym%%5+5}QnIj9E1Pg(c3;Y~2YbB4o(B-*%{#PpBB-VzcC`e_4M9$FfM#yDIXatRh zq$?WO_!$D#!WC@-`Up&$R6B;%Fi%g0Ff5TO#Mv%YZ83qI7sH(mskwr}dtQ8MlKySSXu3sgU2{3^!t?0LbKU`+N1Fy&kaMD^S<2oW+!80?}B6o5~T5K7zahPEf=VKAfg6s+co1gtjz8&1~65 zm?lA4BNPDxqQT37U)7~qQY1U{w+J^kH?aUao_OQLWwh22l5*`&Yd zGFeR0F9I@ciJZnJ6`{$=OM^0&vT{_ahO%v9VTb~arjJ(PNCng~hb%m~nM2qC{{6Qf z!JK^nVFK!vU^WhLKBYm8x#nq7vxF>+QFbxT_ZUs5Df^a?&7DWvVXSW9^9q@C(ZbQ~ z=7fzNec>okeURMeC_jhQgXF$L&{NcP$W*Q1g}tw`Ys*na>nqu^<6@ethUrCy=UzQS z%gkZ=B$NS_T}a7UV1We|SYUy73jJUEX|{5P`NTYd6bhvkd72aG0ENQ*=cch*hfs#u zswAlg+%YAXy|B)&yn2GwM><^5vTPsfquv~3yf(?79&ub=%{ZFTRZKh{j#AoX7t9F;2~lv7`4C zAG_?m9O!)v>CSTDnq~9`uEWeeN3WV7$ZB*{2UWzVvcs07PXFhBoAZb6CyWxdZd`;N zTFq0(#+i8aS(dd=F+IJUbvox4KCqRO`%9{7ify~M;O$z@1s$S7(Fr{tSQ>EQM?b@} zohIiGKFTm>*?Q@vOvsI#d;V!`Q!tallMj58OK<&6*8b`pJo)$r)=a*@s$~(al^38F zujbyreT4CuJ!CyYjkVZrkCD-FmTb6!E0!+f_-}oZBS+^*$Ir5=e~yjYwsBsr=9!=D zAuA4Iy61WBRGmc!p5mr$S8?HQ{3ZvVe+kt-!NrS18k=`=Y9`=2U;GlbiZ~feVCPP= zGU?}<4}Ow94)K~_%QN?U5lO%+6Na06r`fT56t4L+8<(8suG6bXe)>%!-6k*r7K!vR zrO%P2VA4%dOEz*s)$pl7_yI(o(H{z2FiGhna-Ffp2CTT`GLDWnIr{x?(w1{LrrEq^ z3Gdl(1y^od!{lwBSZmOyRP8qi5}{e!({m)28U

    NwOM`)ynKuCfx#g%nj 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

    H_g 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 LMH^d%u?hPRI4yh} literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/images/time-series-view-coordinates.snag b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/images/time-series-view-coordinates.snag new file mode 100644 index 0000000000000000000000000000000000000000..c388d6d2aa9947d91de317f095e84f48a436598f GIT binary patch literal 127000 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 )%hW?xWuK#F5(ZHqRrrah&_r*M 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 I8~ZwB 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 literal 0 HcmV?d00001 diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/javascript-support.markdown similarity index 65% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/javascript-support.markdown index 4a6cca76b9..e2783d4b7f 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/TS-javascript-api.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/javascript-support.markdown @@ -1,36 +1,37 @@ -# Time Series & JavaScript +# Time Series: JavaScript Support {NOTE: } -Some time series functions are provided not by dedicated time series methods, -but by general-purpose methods that gain time series functionality by running -a user-custom [JavaScript](../../../server/kb/javascript-engine) that calls -time series API methods. +With the introduction of time series, RavenDB's support for the execution +of [JavaScript-based operations](../../../server/kb/JavaScript-engine) +over [single](../../../client-api/operations/patching/single-document#patching-how-to-perform-single-document-patch-operations) +and [multiple](../../../client-api/operations/patching/set-based) +documents has been extended to allow manipulations involving time series. * Methods that gain time series functionality this way are: - * [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) - + * [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session/patch) - `session` patching method - * [PatchOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchoperation) - + * [PatchOperation](../../../document-extensions/timeseries/client-api/operations/patch#patchoperation) - `store` patching operation - * [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation) - + * [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/operations/patch#patchbyqueryoperation) - `store` patch-by-query operation * In this page: - * [Time Series JS API methods](../../../document-extensions/timeseries/client-api/ts-javascript-api#time series-js-api-methods) - * [timeseries - Choose a Time Series](../../../document-extensions/timeseries/client-api/ts-javascript-api#section) - * [timeseries.append - Append Untagged Entry](../../../document-extensions/timeseries/client-api/ts-javascript-api#section-1) - * [timeseries.append - Append Tagged Entry](../../../document-extensions/timeseries/client-api/ts-javascript-api#section-2) - * [timeseries.remove - Remove Entries Range](../../../document-extensions/timeseries/client-api/ts-javascript-api#section-3) - * [timeseries.get - Get Entries Range](../../../document-extensions/timeseries/client-api/ts-javascript-api#section-4) - * [Usage Samples](../../../document-extensions/timeseries/client-api/ts-javascript-api#usage-samples) + * [JavaScript API methods](../../../document-extensions/timeseries/client-api/javascript-support#javascript-api-methods) + * [timeseries - Choose a Time Series](../../../document-extensions/timeseries/client-api/javascript-support#section) + * [timeseries.append - Append Untagged Entry](../../../document-extensions/timeseries/client-api/javascript-support#section-1) + * [timeseries.append - Append Tagged Entry](../../../document-extensions/timeseries/client-api/javascript-support#section-2) + * [timeseries.remove - Remove Entries Range](../../../document-extensions/timeseries/client-api/javascript-support#section-3) + * [timeseries.get - Get Entries Range](../../../document-extensions/timeseries/client-api/javascript-support#section-4) + * [Usage Samples](../../../document-extensions/timeseries/client-api/javascript-support#usage-samples) {NOTE/} --- -{PANEL: Time Series JS API methods} +{PANEL: JavaScript API methods} -The JS time series API includes these methods: +The JavaScript time series API includes these methods: --- @@ -92,14 +93,14 @@ Use this method to retrieve a range of time series entries. {PANEL: Usage Samples} -* In this sample, we pass [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) - a script that patches a document 100 time series entries. +* In this sample, we pass [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session/patch) + a script that appends a document 100 time series entries. {CODE TS_region-Session_Patch-Append-100-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -* In this sample, we pass [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation) +* In this sample, we pass [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/operations/patch#patchbyqueryoperation) a script that runs a document query and removes the HeartRate time series from - located documents. + matching documents. {CODE TS_region-PatchByQueryOperation-Remove-From-Multiple-Docs@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} @@ -112,13 +113,13 @@ Use this method to retrieve a range of time series entries. **Studio Articles** [Studio Time Series Management](../../../studio/database/document-extensions/time-series) -**Patching Time Series Data** -[Patching in a Session](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) -[Patching Operation](../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchoperation) -[Patc By Query Operation](../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation) +**Patching Time Series** +[Patching in a Session](../../../document-extensions/timeseries/client-api/session/patch) +[Patching Operation](../../../document-extensions/timeseries/client-api/operations/patch#patchoperation) +[Patch By Query Operation](../../../document-extensions/timeseries/client-api/operations/patch#patchbyqueryoperation) **Querying and Indexing** -[Time Series Querying](../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Querying](../../../document-extensions/timeseries/querying/overview-and-syntax) [Time Series Indexing](../../../document-extensions/timeseries/indexing) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/.docs.json similarity index 55% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/.docs.json index 53f4f2db7b..6f75dabd80 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/.docs.json @@ -1,25 +1,25 @@ [ { - "Path": "append-and-remove-TS-data.markdown", - "Name": "Append & Remove TS Data", + "Path": "append-and-remove.markdown", + "Name": "Append & Remove", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "/get-TS-data", - "Name": "Get Time Series", + "Path": "get.markdown", + "Name": "Get", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "patch-TS-data.markdown", - "Name": "Patch Time Series", + "Path": "patch.markdown", + "Name": "Patch", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "/bulk-ts-operations", - "Name": "Bulk Time Series Operations", + "Path": "/bulk-insert", + "Name": "Bulk Insert", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/append-and-remove.markdown similarity index 87% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/append-and-remove.markdown index 5bc08abb45..50f5eabcea 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/append-and-remove.markdown @@ -1,5 +1,4 @@ -## `TimeSeriesBatchOperation` -# Append and Remove Time Series Data +# Operations: Append & Remove Time Series --- @@ -8,10 +7,10 @@ To **Append** and **Remove** multiple time series entries, use `TimeSeriesBatchOperation`. * In this page: - * [`TimeSeriesBatchOperation`](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#timeseriesbatchoperation) - * [Syntax](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#syntax) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-ts-data#usage-samples) + * [`TimeSeriesBatchOperation`](../../../../document-extensions/timeseries/client-api/operations/append-and-remove#timeseriesbatchoperation) + * [Syntax](../../../../document-extensions/timeseries/client-api/operations/append-and-remove#syntax) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/operations/append-and-remove#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/operations/append-and-remove#usage-samples) {NOTE/} --- @@ -22,7 +21,7 @@ To **Append** and **Remove** multiple time series entries, use `TimeSeriesBatchO and **Remove** actions. The list is prepared beforehand in a `TimeSeriesOperation` instance using **TimeSeriesOperation.Append** and **TimeSeriesOperation.Remove**, and is -passed to `TimeSeriesBatchOperation` as an argumenjt. +passed to `TimeSeriesBatchOperation` as an argument. {PANEL/} @@ -104,8 +103,8 @@ passed to `TimeSeriesBatchOperation` as an argumenjt. | Property | Type | Description | |:-------------|:-------------|:-------------| - | `From` | `DateTime` | Range start
    TS entries will be removed starting at this timestamp | - | `To` | `DateTime` | Range end
    entries will be removed up to this timestamp | + | `From` | `DateTime` | Range start
    Entries will be removed starting at this timestamp | + | `To` | `DateTime` | Range end
    Entries will be removed up to this timestamp | {PANEL/} @@ -147,13 +146,13 @@ passed to `TimeSeriesBatchOperation` as an argumenjt. ## Related articles **Client API** -[Time Series API Overview](../../../../document-extensions/timeseries/client-api/api-overview) +[Time Series API Overview](../../../../document-extensions/timeseries/client-api/overview) **Studio Articles** [Studio Time Series Management](../../../../studio/database/document-extensions/time-series) **Querying and Indexing** -[Time Series Querying](../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Querying](../../../../document-extensions/timeseries/querying/overview-and-syntax) [Time Series Indexing](../../../../document-extensions/timeseries/indexing) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/bulk-insert/.docs.json similarity index 72% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/.docs.json rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/bulk-insert/.docs.json index 3c63741a0d..4ce0661972 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/bulk-insert/.docs.json @@ -1,6 +1,6 @@ [ { - "Path": "append-ts-data-in-bulk.markdown", + "Path": "append-in-bulk.markdown", "Name": "Append In Bulk", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/bulk-insert/append-in-bulk.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/bulk-insert/append-in-bulk.markdown new file mode 100644 index 0000000000..22fadf11db --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/bulk-insert/append-in-bulk.markdown @@ -0,0 +1,93 @@ +# Operations: Append in Bulk + +--- + +{NOTE: } + +* `store.BulkInsert` is RavenDB's high-performance data insertion operation. + Its `TimeSeriesFor` interface resembles [session.TimeSeriesFor](../../../../../document-extensions/timeseries/client-api/session/append) + in its ability to append multiple time series entries in a single transaction, + while omitting the liabilities of the `session` interface to gain much higher speed. + +* In this page: + * [`BulkInsert.TimeSeriesFor.Append`](../../../../../document-extensions/timeseries/client-api/operations/bulk-insert/append-in-bulk#bulkinsert.timeseriesfor.append) + * [Syntax](../../../../../document-extensions/timeseries/client-api/operations/bulk-insert/append-in-bulk#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/operations/bulk-insert/append-in-bulk#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/operations/bulk-insert/append-in-bulk#usage-samples) + +{NOTE/} + +{PANEL: `BulkInsert.TimeSeriesFor.Append`} + +Create a `BulkInsert` instance, pass its `TimeSeriesFor` method the document's ID +and time series name, and then call `TimeSeriesFor.Append` as many times as you need +to. All the Append operations you perform this way will be executed in +a single transaction. + +{PANEL/} + +{PANEL: Syntax} + +* `BulkInsert.TimeSeriesFor` + {CODE BulkInsert.TimeSeriesFor-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `id` | `string` | Document ID | + | `name` | `string` | Time Series Name | + +--- + +* There are two `TimeSeriesFor.Append` overloads: + {CODE Append-Operation-Definition-1@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE Append-Operation-Definition-2@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `timestamp` | `DateTime` | TS-entry's timestamp | + | `value` | `double` | A single value | + | `values` | `ICollection` | Multiple values | + | `tag` | `string` | TS-entry's tag (optional) | + +{PANEL/} + +{PANEL: Usage Flow} + +* Create a `store.BulkInsert` instance. +* Pass the instance's `TimeSeriesFor` - + * Document ID + * Time series name +* Call `TimeSeriesFor.Append` as many times as you like. Pass it - + * The entry's Timestamp + * The entry's Value or Values + * The entry's Tag (optional) + +{PANEL/} + +{PANEL: Usage Samples} + +* In this sample, we append a time series two entries in a single transaction. + {CODE timeseries_region_Use-BulkInsert-To-Append-2-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* In this sample, we append a time series a hundred entries in a single transaction. + {CODE timeseries_region_Use-BulkInsert-To-Append-100-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* In this sample, we append a time series two saets of values in a single transaction. + {CODE BulkInsert-overload-2-Two-HeartRate-Sets@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles + +**Client API** +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/overview) + +**Studio Articles** +[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../../document-extensions/timeseries/querying/overview-and-syntax) +[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/get.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/get.markdown new file mode 100644 index 0000000000..94f4b2fc50 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/get.markdown @@ -0,0 +1,145 @@ +# Operations: How to Get Time Series + +--- + +{NOTE: } + +Get a single time series' entries using `GetTimeSeriesOperation`. +Get multiple time series' entries using `GetMultipleTimeSeriesOperation`. + +* In this page: + * [`GetTimeSeriesOperation`](../../../../document-extensions/timeseries/client-api/operations/get#gettimeseriesoperation) + * [Syntax](../../../../document-extensions/timeseries/client-api/operations/get#syntax) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/operations/get#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/operations/get#usage-sample) + * [`GetMultipleTimeSeriesOperation`](../../../../document-extensions/timeseries/client-api/operations/get#getmultipletimeseriesoperation) + * [Syntax](../../../../document-extensions/timeseries/client-api/operations/get#syntax-1) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/operations/get#usage-flow-1) + * [Usage Sample](../../../../document-extensions/timeseries/client-api/operations/get#usage-sample-1) + +{NOTE/} + +--- + +{PANEL: `GetTimeSeriesOperation`} + +Use `GetTimeSeriesOperation` to retrieve entries from a single +time series. + +--- + +### Syntax + +* **Definition** + {CODE GetTimeSeriesOperation-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `docId` | `string` | Document ID | + | `timeseries` | `string` | Time series name | + | `from` | `DateTime` | Range start | + | `to` | `DateTime` | Range end | + | `start` | `int` | Start of first Page | + | `pageSize` | `int` | Size of each page | + +* **Return Value**: **`TimeSeriesRangeResult`** + {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + * Requesting a time series that doesn't existing will return `null`. + * Requesting an entries range that doesn't exist will return a `TimeSeriesRangeResult` object with an + empty `Entries` property. + +* **Exceptions** + Exceptions are not generated. + +--- + +### Usage Flow + +* Pass `GetTimeSeriesOperation` - + Document ID, Time Series Name, Range Start, Range End. +* Call `store.Operations.Send` to execute the operation. +* Entries are returned into a `dictionary of `TimeSeriesRangeResult` classes. + +--- + +### Usage Sample + +* In this sample, we retrieve all the entries of a time series. + {CODE timeseries_region_Get-Single-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +{PANEL: `GetMultipleTimeSeriesOperation`} + +Use `GetMultipleTimeSeriesOperation` to retrieve data from +multiple time series. + +--- + +### Syntax + +* **Definition** + {CODE GetMultipleTimeSeriesOperation-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `docId` | `string` | Document ID | + | `ranges` | `IEnumerable` | Ranges of Time Series Entries | + | `start` | `int` | Start of first Page | + | `pageSize` | `int` | Size of each page | + + Pass `GetMultipleTimeSeriesOperation` a **TimeSeriesRange** instance + For each entries range you want it to retrieve. + {CODE TimeSeriesRange-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Return Value**: **`TimeSeriesRangeResult`** + {CODE TimeSeriesDetails-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + * When a time series or an entries range that do not exist are requested, + the return value for the erronous range is a `TimeSeriesRangeResult` + object with an empty `Entries` property. + +* **Exceptions** + Exceptions are not generated. + +--- + +### Usage Flow + +* Pass `GetMultipleTimeSeriesOperation` - + * The time series parent-Document ID + * A **TimeSeriesRange** instance for each entries range you want + it to retrieve. +* Populate each TimeSeriesRange instance with a **time Series name**, + a **range start** timestamp (`From`), and a **range end** timestamp (`To`). +* Call `store.Operations.Send` to execute the operation. + +--- + +### Usage Sample + +* In this sample, we retrieve chosen entries from two time series. + {CODE timeseries_region_Get-Multiple-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles + +**Client API** +[Time Series API Overview](../../../../document-extensions/timeseries/client-api/overview) + +**Studio Articles** +[Studio Time Series Management](../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../document-extensions/timeseries/querying/overview-and-syntax) +[Time Series Indexing](../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/patch.markdown similarity index 79% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/patch.markdown index e7add1b836..8bf7c4f5fc 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/patch-TS-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/operations/patch.markdown @@ -1,5 +1,4 @@ -## `PatchOperation`, `PatchByQueryOperation` -# Patch Time Series Data +# Operations: Patch Time Series --- @@ -11,15 +10,15 @@ * Both patching operations can be used to Append, Get and Remove time series entries. * In this page: - * [Patching Operations](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patching-operations) - * [`PatchOperation`](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchoperation) - * [Syntax](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#syntax) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples) - * [`PatchByQueryOperation`](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#patchbyqueryoperation) - * [Syntax](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#syntax-1) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-flow-1) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/store-operations/patch-ts-data#usage-samples-1) + * [Patching Operations](../../../../document-extensions/timeseries/client-api/operations/patch#patching-operations) + * [`PatchOperation`](../../../../document-extensions/timeseries/client-api/operations/patch#patchoperation) + * [Syntax](../../../../document-extensions/timeseries/client-api/operations/patch#syntax) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/operations/patch#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/operations/patch#usage-samples) + * [`PatchByQueryOperation`](../../../../document-extensions/timeseries/client-api/operations/patch#patchbyqueryoperation) + * [Syntax](../../../../document-extensions/timeseries/client-api/operations/patch#syntax-1) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/operations/patch#usage-flow-1) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/operations/patch#usage-samples-1) {NOTE/} @@ -32,19 +31,18 @@ * To patch time series data, use `PatchOperation` or `PatchByQueryOperation`. * `PatchOperation` is RavenDB's operation for single-document patching, and `PatchByQueryOperation` is used for set-based document operations. - None is dedicated to handling time series. - You can use both to patch time series data, by customizing the Javascript + You can use both to patch time series data, by + [customizing the JavaScript](../../../../document-extensions/timeseries/client-api/javascript-support) they are using. -* Learn about customizable Javascripts and the JS time series API [here](../../../../document-extensions/timeseries/client-api/ts-javascript-api). {INFO/} -* Use `PatchOperation` to **load a document by its ID and patch it time series data**. +* Use `PatchOperation` to **load a document by its ID and patch it time series entries**. Here, for example, we use `PatchOperation` to patch a document a single time series entry. {CODE TS_region-Operation_Patch-Append-Single-TS-Entry@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -* Use `PatchByQueryOperation` to **run a document query and patch time series data to documents you find**. +* Use `PatchByQueryOperation` to **run a document query and patch time series entries to matching documents**. Here, we use `PatchByQueryOperation` to append a time series entry to all documents of the User collection. @@ -67,8 +65,8 @@ |:-------------|:-------------|:-------------| | `id` | `string` | Patched document ID | | `changeVector` | `string` | Change vector, to verify that the document hasn't been modified.
    Can be `null`. | - | `patch` | `PatchRequest` | The patching Java Script | - | `patchIfMissing` | `PatchRequest` | Patching Java Script to be used if the document isn't found | + | `patch` | `PatchRequest` | The patching JavaScript | + | `patchIfMissing` | `PatchRequest` | Patching JavaScript to be used if the document isn't found | | `skipPatchIfChangeVectorMismatch` | `bool` | If true, do not patch if the document has been modified
    default: **false** | * **`PatchRequest`** @@ -91,14 +89,14 @@ * the change vector (or `null`) * a new `PatchRequest` instance * Use the `PatchRequest` instance to pass `PatchOperation` - a Java Script that appends or removes time series entries. + a JavaScript that appends or removes time series entries. * Call `store.Operations.Send` to execute the operation. --- #### Usage Samples -* In this sample, we provide `PatchOperation`with a script that patches +* In this sample, we provide `PatchOperation`with a script that appends 100 time series entries to a document. Timestamps and values are drawn from an array, and other arguments are provided in the "Values" section. @@ -125,7 +123,7 @@ | Parameters | Type | Description | |:-------------|:-------------|:-------------| - | `queryToUpdate` | `IndexQuery` | The query, including the Java Script | + | `queryToUpdate` | `IndexQuery` | The query, including the JavaScript | | `QueryOperationOptions` | `options` | Additional options
    Default: `null` | * **Return Value**: `Operation` @@ -136,7 +134,7 @@ * Create a `PatchByQueryOperation` operation. * Pass `PatchByQueryOperation` a new `IndexQuery` instance. -* Add the `IndexQuery` instance a Java Script that specifies +* Add the `IndexQuery` instance a JavaScript that specifies the query you want to run. * Call `store.Operations.Send` to execute the operation. @@ -150,7 +148,7 @@ * In this sample, we patch each User document a "NumberOfUniqueTagsInTS" field with the number of different tags in the user's "ExcersizeHeartRate" time series. - To do this, we use the JS `get` method to get each time series' entries (the + To do this, we use the JavaScript `get` method to get each time series' entries (the range we choose includes them all), and check each entry's tag. {CODE TS_region-PatchByQueryOperation-Get@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -159,16 +157,16 @@ ## Related articles **Time Series and JavaScript** -[The Time Series JavaScript API](../../../../document-extensions/timeseries/client-api/ts-javascript-api) +[The Time Series JavaScript API](../../../../document-extensions/timeseries/client-api/javascript-support) **Client API** -[Time Series API Overview](../../../../document-extensions/timeseries/client-api/api-overview) +[Time Series API Overview](../../../../document-extensions/timeseries/client-api/overview) **Studio Articles** [Studio Time Series Management](../../../../studio/database/document-extensions/time-series) **Querying and Indexing** -[Time Series Querying](../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Querying](../../../../document-extensions/timeseries/querying/overview-and-syntax) [Time Series Indexing](../../../../document-extensions/timeseries/indexing) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/overview.markdown similarity index 69% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/overview.markdown index 1cc28c2809..27cb7ed3a0 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/api-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/overview.markdown @@ -1,32 +1,32 @@ -# Time Series API Overview +# Time Series: Client API Overview --- {NOTE: } -The Time Series API includes a set of [session](../../../client-api/session/what-is-a-session-and-how-does-it-work) +The Time Series client API includes a set of [session](../../../client-api/session/what-is-a-session-and-how-does-it-work) methods and [store](../../../client-api/what-is-a-document-store) [operations](../../../client-api/operations/what-are-operations). You can use the API to **append** (create and update), **get**, **remove**, **include**, **patch** and **query** time series data. * In this page: - * [Creating and Removing Time Series Data](../../../document-extensions/timeseries/client-api/api-overview#creating-and-removing-time-series-data) - * [`session` Methods -vs- `document-store` Operations](../../../document-extensions/timeseries/client-api/api-overview#session-methods--vs--document-store-operations) - * [Available Time Series `session` methods](../../../document-extensions/timeseries/client-api/api-overview#available-time-series-session-methods) - * [Available Time Series `store` Operations](../../../document-extensions/timeseries/client-api/api-overview#available-time-series-store-operations) + * [Creating and Removing Time Series](../../../document-extensions/timeseries/client-api/overview#creating-and-removing-time-series) + * [`session` Methods -vs- `document-store` Operations](../../../document-extensions/timeseries/client-api/overview#session-methods--vs--document-store-operations) + * [Available Time Series `session` methods](../../../document-extensions/timeseries/client-api/overview#available-time-series-session-methods) + * [Available Time Series `store` Operations](../../../document-extensions/timeseries/client-api/overview#available-time-series-store-operations) {NOTE/} --- -{PANEL: Creating and Removing Time Series Data} +{PANEL: Creating and Removing Time Series} A time series is constructed of time series **entries**, which can be created and removed using the API. There is no need to explicitly create or delete a time series. * A time series is created when the first entry is appended to it. -* A time series is deleted When all entries are removed from it. +* A time series is deleted when all entries are removed from it. {PANEL/} @@ -44,7 +44,7 @@ There are also functionalities unique to each interface. * **Time series functionalities unique to the `session`interface**: * `session` methods provide a **transactional guarantee**. Use them when you want to guarantee that your actions would - be either fully completed or fully reverted. + be processed in a [single ACID transaction](../../../client-api/faq/transaction-support). You can, for instance, gather multiple session actions (e.g. the update of a time series and the modification of a document) and execute them in a single transaction @@ -53,7 +53,8 @@ There are also functionalities unique to each interface. * You can use `session` methods to `include` time series while loading documents. Included time series data is held by the client's session, - and can be handed to the user the instant it is required. + and can be handed to the user instantly when requested + without issuing an additional request to the server * **Time series functionalities unique to the `store`interface**: * Getting the data of **multiple time series** in a single operation. * Managing time series **rollup and retention policies**. @@ -62,46 +63,47 @@ There are also functionalities unique to each interface. {PANEL: Available Time Series `session` methods} -* [TimeSeriesFor.Append](../../../document-extensions/timeseries/client-api/session-methods/append-ts-data) +* [TimeSeriesFor.Append](../../../document-extensions/timeseries/client-api/session/append) Use this method to **Append entries to a time series** (creating the series if it didn't previously exist). -* [TimeSeriesFor.Remove](../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data) +* [TimeSeriesFor.Remove](../../../document-extensions/timeseries/client-api/session/remove) Use this method to **Remove a range of entries from a time series** (removing the series completely if all entries have been removed). - * [TimeSeriesFor.Get](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries) + * [TimeSeriesFor.Get](../../../document-extensions/timeseries/client-api/session/get/get-entries) Use this method to **Retrieve raw time series entries** for all entries or for a chosen entries range. -* [Advanced.GetTimeSeriesFor](../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names) +* [Advanced.GetTimeSeriesFor](../../../document-extensions/timeseries/client-api/session/get/get-names) Use this method to **Retrieve time series Names**. Series names are fetched by `GetTimeSeriesFor` directly from their parent documents' metadata, requiring no additional server roundtrips. -* [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data) +* [session.Advanced.Defer](../../../document-extensions/timeseries/client-api/session/patch) Use this method to **patch time series data to a document**. * **To include time series data** - - * [Use IncludeTimeSeries while loading a document via session.Load](../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load) - * [Use IncludeTimeSeries while retrieving a document via session.Query](../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query) - * [Use RQL while running a raw query](../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries) + * [Use IncludeTimeSeries while loading a document via session.Load](../../../document-extensions/timeseries/client-api/session/include/with-session-load) + * [Use IncludeTimeSeries while retrieving a document via session.Query](../../../document-extensions/timeseries/client-api/session/include/with-session-query) + * [Use RQL while running a raw query](../../../document-extensions/timeseries/client-api/session/include/with-raw-queries) {PANEL/} {PANEL: Available Time Series `store` Operations} -* [TimeSeriesBatchOperation](../../../document-extensions/timeseries/client-api/store-operations/append-and-remove-TS-data) +* [TimeSeriesBatchOperation](../../../document-extensions/timeseries/client-api/operations/append-and-remove) Use this operation to **append and remove time series data**. You can bundle a series of Append and/or Remove operations in a list and execute them in a single call. -* [GetTimeSeriesOperation](../../../document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data) - Use this operation to **retrieve time series data**. - `GetTimeSeriesOperation` has an advantage over `session.TimeSeries.Get`, in allowing - you to retrieve data from multiple time series of a selected document in a single call. +* [GetTimeSeriesOperation](../../../document-extensions/timeseries/client-api/operations/get#gettimeseriesoperation) + Use this operation to Get entries from a single time series. +* [GetMultipleTimeSeriesOperation](../../../document-extensions/timeseries/client-api/operations/get#getmultipletimeseriesoperation) + Use this operation to Get entries from multiple time series. * [ConfigureTimeSeriesOperation](../../../document-extensions/timeseries/rollup-and-retention) Use this operation to **manage time series roll-up and retention policies**. -* [PatchOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data#patchoperation) - Use this operation to **patch time series data to a single document**. -* [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/store-operations/patch-TS-data#patchbyqueryoperation) - Use this operation to **patch time series data to documents located +* [PatchOperation](../../../document-extensions/timeseries/client-api/operations/patch#patchoperation) + Use this operation to append/remove time series data to/from a single document. +* [PatchByQueryOperation](../../../document-extensions/timeseries/client-api/operations/patch#patchbyqueryoperation) + Use this operation to run a query and append/remove time series data to/from + matching documents. by a query**. -* [BulkInsert.TimeSeriesFor.Append](../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk) - Use this operation to **append a large quantity of time series data**. +* [BulkInsert.TimeSeriesFor.Append](../../../document-extensions/timeseries/client-api/operations/bulk-insert/append-in-bulk) + Use this operation to append time series entries in bulk. {PANEL/} @@ -114,7 +116,7 @@ There are also functionalities unique to each interface. [Studio Time Series Management](../../../studio/database/document-extensions/time-series) **Querying and Indexing** -[Time Series Querying](../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Querying](../../../document-extensions/timeseries/querying/overview-and-syntax) [Time Series Indexing](../../../document-extensions/timeseries/indexing) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/.docs.json deleted file mode 100644 index 50a336073e..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/.docs.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "Path": "get-ts-entries.markdown", - "Name": "Get Time Series Entries", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - }, - { - "Path": "get-ts-names.markdown", - "Name": "Get Time Series Names", - "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", - "Mappings": [] - } -] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown deleted file mode 100644 index 701388df4d..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries.markdown +++ /dev/null @@ -1,115 +0,0 @@ -## `TimeSeriesFor.Get` -# Get Time Series Entries - ---- - -{NOTE: } - -Get a range of time series entries using `TimeSeriesFor.Get`. - -* Results can be sliced to pages and retrieved gradually. - -{INFO: } - -* [Include](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview) - time series data while [loading](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load) - or [querying](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query) - documents, to keep the data locally in the client's session and refrain from unnecessary additional trips to the server. -* When caching is enabled, time series data is kept in the session cache as well. - -{INFO/} - -* In this page: - * [`TimeSeriesFor.Get`](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries#timeseriesfor.get) - * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries#syntax) - * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries#usage-flow) - * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-entries#usage-samples) - -{NOTE/} - ---- - -{PANEL: `TimeSeriesFor.Get`} - -Use `TimeSeriesFor.Get` to get a range of a document's time series entries. - -* `TimeSeriesFor.Get` retrieves a range of entries from a single time series. - * To retrieve multiple series' data, - use the [GetMultipleTimeSeriesOperation](../../../../../document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data) - document-store operation instead. -* You can slice retrieved data to **pages** to get time series entries - gradually, one custom-size page at a time. - -{PANEL/} - -{PANEL: Syntax} - -* **Definition** - {CODE TimeSeriesFor-Get-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `from` | DateTime | Range Start | - | `to` | DateTime | Range End | - | `start` | int | **Paging** first entry
    e.g. set `start` to 50 for the first page to start at the 50th time series entry.
    **Default Value**: 0, for the first time series entry. | - | `pagesize` | int | **Paging** page-size
    e.g. set `pagesize` to 10 to retrieve 10-entries pages.
    **Default Value**: int.MaxValue, for all time series entries. | - -* **Return Value** - - **`IEnumerable`** - Time series entries are returned in an array of TimeSeriesEntry instances. - {CODE-BLOCK: JSON} -public class TimeSeriesEntry -{ - public DateTime Timestamp { get; set; } - public string Tag { get; set; } - public double[] Values { get; set; } - public double Value => Values[0]; - - //.. -} - {CODE-BLOCK/} - -* **Exceptions** - Exceptions are not generated. - -{PANEL/} - -{PANEL: Usage Flow} - -* Open a session. -* Create an instance of `TimeSeriesFor`. - * Either pass `TimeSeriesFor` an explicit document ID, - -or- - Pass it an [entity tracked by the session](../../../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../../../client-api/session/querying/how-to-query) or from [session.Load](../../../../../client-api/session/loading-entities#load). - * Pass `TimeSeriesFor` the time series name. -* Call `TimeSeriesFor.Get`. - -{PANEL/} - -{PANEL: Usage Samples} - -* In this sample we retrieve all entries of a time series. - {CODE timeseries_region_TimeSeriesFor-Get-Single-Value-Using-Document-ID@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* In this sample we query for a document and get its "Heartrate" time series data. -{CODE timeseries_region_Pass-TimeSeriesFor-Get-Query-Results@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -## Related articles - -**Client API** -[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) - -**Studio Articles** -[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) - -**Querying and Indexing** -[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) -[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) - -**Policies** -[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown deleted file mode 100644 index 59a6b230b0..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries.markdown +++ /dev/null @@ -1,100 +0,0 @@ -## `session.Query` -# Time Series LINQ Queries ---- - -{NOTE: } - -* To query time series using LINQ expressions, use `session.Query`. -* RavenDB will translate a LINQ query to RQL before transmitting - it to the server for execution. - -{INFO: } -Learn more about time series queries in the [section dedicated to this subject](../../../../../document-extensions/timeseries/querying/queries-overview). -{INFO/} - -* In this page: - * [Time Series LINQ Queries](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries#time-series-linq-queries) - * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries#syntax) - * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries#usage-flow) - * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries#usage-samples) - -{NOTE/} - ---- - -{PANEL: Time Series LINQ Queries} - -To build a time series LINQ query, run a document query using `session.Query` -and extend it using LINQ expressions. -Here is a simple LINQ query that chooses users by their age and retrieves their -HeartRate time series, and the RQL equivalent for this query. - -{CODE-TABS} -{CODE-TAB:csharp:LINQ ts_region_LINQ-1-Select-Timeseries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -{CODE-TAB:csharp:RQL ts_region_LINQ-2-RQL-Equivalent@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -{CODE-TABS/} - -{PANEL/} - -{PANEL: Syntax} - -`session.Query` Definition: -{CODE Query-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -Learn more about `session.Query` [here](../../../../../client-api/session/querying/how-to-query#session.query). - -**Return Value**: - -* **`IRavenQueryable`** for aggregated data. - When the query - [aggregates time series entries](../../../../../document-extensions/timeseries/querying/aggregation-and-projection), - the results are returned in an aggregated array. -* **`IRavenQueryable`** for non-aggregated data. - When the query **doesn't aggregate** time series entries, - the results are returned in a list of time series results. - -{PANEL/} - -{PANEL: Usage Flow} - -* Open a session -* Call `session.Query`. - - Run a document query to locate documents whose time series you want to query. - - Extend the query using LINQ expressions to find and project time series data. - Start with `Select` to choose a time series. -* Retrieve the results using - - `TimeSeriesAggregationResult` for aggregated data - -or- - `TimeSeriesRawResult` for non-aggregated data -{PANEL/} - -{PANEL: Usage Samples} - -* In this sample, we select a three-days range from the HeartRate time series. - {CODE ts_region_LINQ-3-Range-Selection@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* The first occurance of `Where` in the following example, filters documents. - The second occurance of `Where` filters entries. - {CODE ts_region_LINQ-4-Where@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* In the following sample, we group heart-rate data of people above the age of 72 - into 1-day groups, and retrieve each group's average heartrate and number of measurements. - The aggregated results are retrieved into an `IRavenQueryable` array. - {CODE ts_region_LINQ-6-Aggregation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -## Related articles - -**Client API** -[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) - -**Studio Articles** -[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) - -**Querying and Indexing** -[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) -[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) - -**Policies** -[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown deleted file mode 100644 index 82fe672a56..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries.markdown +++ /dev/null @@ -1,102 +0,0 @@ -## `session.Advanced.RawQuery` -# Time Series Raw RQL Queries ---- - -{NOTE: } - -* Clients can express time series queries in RQL and send them to the server - for execution using the `session.Advanced.RawQuery` method. - - -{INFO: } -Learn more about time series queries in the [section dedicated to this subject](../../../../../document-extensions/timeseries/querying/queries-overview). -{INFO/} - - -* [Client Raw RQL Queries](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries#client-raw-rql-queries) - * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries#syntax) - * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries#usage-flow) - * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries#usage-samples) - -{NOTE/} - ---- - -{PANEL: Client Raw RQL Queries} - -To send a raw RQL query to the server, use `session.Advanced.RawQuery`. -`RawQuery`transmits queries to the server without checking or altering -their contents, time series contents or otherwise - -{PANEL/} - -{PANEL: Syntax} - -* **`session.Advanced.RawQuery`** - * **Definition** - {CODE RawQuery-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - - * **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `query` | string | Raw RQL Query | - - * **Return Value**: - * **`IRawDocumentQuery`** for aggregated data. - When the query - [aggregates time series entries](../../../../../document-extensions/timeseries/querying/aggregation-and-projection), - the results are returned in an aggregated array. - * **`IRawDocumentQuery`** for non-aggregated data. - When the query **doesn't aggregate** time series entries, - the results are returned in a list of time series results. - -{PANEL/} - -{PANEL: Usage Flow} - -* Open a session -* Call `session.Advanced.RawQuery` - Pass it your query -* Retrieve the results into - `TimeSeriesAggregationResult` for aggregated data - -or- - `TimeSeriesRawResult` for non-aggregated data -{PANEL/} - -{PANEL: Usage Samples} - -* In this sample, a raw RQL query retrieves 24 hours of HeartRate data from users under the age of 30. - The query does not aggregate data, so we retrieve its results using a `TimeSeriesRawResult` list. - We define an **offset**, to adjust retrieved results to the client's local time-zone. - - {CODE-TABS} - {CODE-TAB:csharp:Declare-Syntax ts_region_Raw-Query-Non-Aggregated-Declare-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - {CODE-TAB:csharp:Select-Syntax ts_region_Raw-Query-Non-Aggregated-Select-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - {CODE-TABS/} - ---- - -* In this sample, the query aggregates 7 days of HeartRate entries into 1-day groups. - From each group, two values are selected and projected to the client: the **min** - and **max** hourly HeartRate values. - The aggregated results are retrieved using a `TimeSeriesAggregationResult` array. - {CODE ts_region_Raw-Query-Aggregated@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - - -## Related articles - -**Client API** -[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) - -**Studio Articles** -[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) - -**Querying and Indexing** -[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) -[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) - -**Policies** -[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown deleted file mode 100644 index 698a840923..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/remove-ts-data.markdown +++ /dev/null @@ -1,125 +0,0 @@ -## `TimeSeriesFor.Remove` -# Remove Time Series Data - ---- - -{NOTE: } - -Remove time series data using `TimeSeriesFor.Remove`. - -* You can remove a **single time series entry** or a **range of entries**. - -* In this page: - * [`TimeSeriesFor.Remove`](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#timeseriesfor.remove) - * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#syntx) - * [Overload 1 - Remove a Single Time Series Entry.](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-1) - * [Overload 2 - Remove a Range Of Time Series Entries](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-2) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#usage-samples) -{NOTE/} - ---- - -{PANEL: `TimeSeriesFor.Remove`} - -`TimeSeriesFor.Remove` is used for the removal of time series and -time series entries. - -* There is no need to explicitly remove a time series; - the series is removed when all its entries are removed. -* Attempting to remove nonexistent entries results in a noop - and generates no exception. - - -{PANEL/} - -{PANEL: Syntx} - -There are two `TimeSeriesFor.Remove` methods: -[Overload 1](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-1) -- Remove a single time series entry. -[Overload 2](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-2) -- Remove a range of time series entries. - ---- - -#### Overload 1: - -* **Definition** - {CODE TimeSeriesFor-Remove-definition-single-timepoint@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `at` | DateTime | Timestamp of the time series entry you want to remove | - -* **Return Value** - No return value. - -* **Exceptions** - * If the document doesn't exist, a `DocumentDoesNotExistException` exception is thrown. - * Attempting to remove nonexistent entries results in a noop and does not generate an exception. - ---- - -#### Overload 2: - -* **Definition** - {CODE TimeSeriesFor-Remove-definition-range-of-timepoints@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* Parameters - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `from` | DateTime | Remove the range of time series entries starting at this timestamp | - | `to` | DateTime | Remove the range of time series entries ending at this timestamp | - -* **Return Value** - No return value. - -* **Exceptions** - * If the document doesn't exist, a `DocumentDoesNotExistException` exception is thrown. - * Attempting to remove nonexistent entries results in a noop and does not generate an exception. - -{PANEL/} - -{PANEL: Usage Flow} - -* Open a session. -* Create an instance of `TimeSeriesFor`. - * Either pass `TimeSeriesFor` an explicit document ID, - -or- - Pass it an [entity tracked by the session](../../../../client-api/session/loading-entities), e.g. a document object returned from [session.Query](../../../../client-api/session/querying/how-to-query) or from [session.Load](../../../../client-api/session/loading-entities#load). - * Pass `TimeSeriesFor` the time series name. -* Call `TimeSeriesFor.Remove`. -* Call `session.SaveChanges` for the action to take effect on the server. - -{PANEL/} - -{PANEL: Usage Samples} - -In this sample we use the [first overload](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-1) -to remove a single entry from a time series. -{CODE timeseries_region_Remove-TimeSeriesFor-Single-Time-Point@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -In this sample we use the [second overload](../../../../document-extensions/timeseries/client-api/session-methods/remove-ts-data#overload-2) -to remove a range of entries from a time series. -{CODE timeseries_region_TimeSeriesFor-Remove-Time-Points-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -## Related articles - -**Client API** -[Time Series API Overview](../../../../document-extensions/timeseries/client-api/api-overview) - -**Studio Articles** -[Studio Time Series Management](../../../../studio/database/document-extensions/time-series) - -**Querying and Indexing** -[Time Series Querying](../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) -[Time Series Indexing](../../../../document-extensions/timeseries/indexing) - -**Policies** -[Time Series Rollup and Retention](../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/.docs.json similarity index 56% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/.docs.json index 33d935d204..ee0462281b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/.docs.json @@ -1,37 +1,37 @@ [ { - "Path": "append-ts-data.markdown", - "Name": "Append Time Series", + "Path": "append.markdown", + "Name": "Append", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "remove-ts-data.markdown", - "Name": "Remove Time Series", + "Path": "remove.markdown", + "Name": "Remove", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "/get-ts-data", - "Name": "Get Time Series", + "Path": "/get", + "Name": "Get", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "/include-ts-data", - "Name": "Include Time Series", + "Path": "/include", + "Name": "Include", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "patch-ts-data.markdown", - "Name": "Patch Time Series", + "Path": "patch.markdown", + "Name": "Patch", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "/query-time-series", - "Name": "Query Time Series", + "Path": "querying-overview.markdown", + "Name": "Querying Overview", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/append.markdown similarity index 61% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/append.markdown index b72bc31d40..2f51317414 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/append-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/append.markdown @@ -1,5 +1,4 @@ -## `TimeSeriesFor.Append` -# Append Time Series Data +# Session: Appending & Updating Time Series --- @@ -12,12 +11,10 @@ `session.SaveChanges`, to append multiple entries in a single transaction. * In this page: - * [`TimeSeriesFor.Append`](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#timeseriesfor.append) - * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#syntax) - * [Overload 1 - Append Entry With Single Value](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-1) - * [Overload 2 - Append Entry With Multiple Values](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-2) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#usage-samples) + * [`TimeSeriesFor.Append`](../../../../document-extensions/timeseries/client-api/session/append#timeseriesfor.append) + * [Syntax](../../../../document-extensions/timeseries/client-api/session/append#syntax) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/session/append#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/session/append#usage-samples) {NOTE/} @@ -42,18 +39,11 @@ {PANEL: Syntax} -There are two `TimeSeriesFor.Append` methods: -[Overload 1](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-1) -- Append an entry with a single value. -[Overload 2](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-2) -- Append an entry with multiple values. - ---- - -#### Overload 1: - -* **Definition** - {CODE TimeSeriesFor-Append-definition-double@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +* There are two `TimeSeriesFor.Append` methods: + * Append an entry with a single value. + {CODE TimeSeriesFor-Append-definition-double@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * Append an entry with multiple values. + {CODE TimeSeriesFor-Append-definition-inum@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} * **Parameters** @@ -61,35 +51,12 @@ There are two `TimeSeriesFor.Append` methods: |:-------------|:-------------|:-------------| | `timestamp` | DateTime | Time series entry's timestamp | | `value` | double | Entry's value | - | `tag` | string | Entry's tag
    The tag is optional. | - -* **Return Value** - No return value. - -* **Exceptions** - If the document doesn't exist, a `DocumentDoesNotExistException` exception is thrown. - ---- - -#### Overload 2: -* **Definition** - {CODE TimeSeriesFor-Append-definition-inum@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `timestamp` | DateTime | Time series entry's timestamp | | `values` | IEnumerable | Entry's values | | `tag` | string | Entry's tag
    The tag is optional. | -* **Return Value** - No return value. - * **Exceptions** If the document doesn't exist, a `DocumentDoesNotExistException` exception is thrown. - {PANEL/} {PANEL: Usage Flow} @@ -107,13 +74,13 @@ There are two `TimeSeriesFor.Append` methods: {PANEL: Usage Samples} -* In this sample we use the [first overload](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-1) +* In this sample we use the [first overload](../../../../document-extensions/timeseries/client-api/session/append#overload-1) to append an entry with a single value. Though We run a loop to append multiple entries, all entries are appended in a single transaction when `SaveChanges` is called. {CODE timeseries_region_TimeSeriesFor-Append-TimeSeries-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} -* In this sample we use the [second overload](../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data#overload-2) +* In this sample we use the [second overload](../../../../document-extensions/timeseries/client-api/session/append#overload-2) to append a time series entry with three values. {CODE timeseries_region_Append-With-IEnumerable@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -122,13 +89,13 @@ There are two `TimeSeriesFor.Append` methods: ## Related articles **Client API** -[Time Series API Overview](../../../../document-extensions/timeseries/client-api/api-overview) +[Time Series API Overview](../../../../document-extensions/timeseries/client-api/overview) **Studio Articles** [Studio Time Series Management](../../../../studio/database/document-extensions/time-series) **Querying and Indexing** -[Time Series Querying](../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Querying](../../../../document-extensions/timeseries/querying/overview-and-syntax) [Time Series Indexing](../../../../document-extensions/timeseries/indexing) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/get/.docs.json similarity index 57% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/.docs.json rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/get/.docs.json index b6102633ae..de588864c4 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/query-time-series/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/get/.docs.json @@ -1,13 +1,13 @@ [ { - "Path": "linq-queries.markdown", - "Name": "LINQ Queries", + "Path": "get-entries.markdown", + "Name": "Get Entries", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, { - "Path": "raw-rql-queries.markdown", - "Name": "Raw RQL Queries", + "Path": "get-names.markdown", + "Name": "Get Names", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] } diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/get/get-entries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/get/get-entries.markdown new file mode 100644 index 0000000000..f3e3e3baa6 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/get/get-entries.markdown @@ -0,0 +1,108 @@ +# Session: Get Time Series Entries + +--- + +{NOTE: } + +To get a range of time series entries, use one of the `TimeSeriesFor.Get` methods. + +{INFO: } + +* [Include](../../../../../document-extensions/timeseries/client-api/session/include/overview) + time series data while [loading](../../../../../document-extensions/timeseries/client-api/session/include/with-session-load) + or [querying](../../../../../document-extensions/timeseries/client-api/session/include/with-session-query) + documents, to keep the data locally in the client's session and refrain from unnecessary additional trips to the server. +* When caching is enabled, time series data is kept in the session cache as well. + +{INFO/} + +* In this page: + * [`TimeSeriesFor.Get`](../../../../../document-extensions/timeseries/client-api/session/get/get-entries#timeseriesfor.get) + * [Syntax](../../../../../document-extensions/timeseries/client-api/session/get/get-entries#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session/get/get-entries#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session/get/get-entries#usage-samples) + +{NOTE/} + +--- + +{PANEL: `TimeSeriesFor.Get`} + +`TimeSeriesFor.Get` retrieves a range of entries from a single time series. + +* To retrieve multiple series' data, use the + [GetMultipleTimeSeriesOperation](../../../../../document-extensions/timeseries/client-api/operations/get/get-multiple-TS-data) + document-store operation. +* Retrieved data can be sliced to **pages** to get time series entries + gradually, one custom-size page at a time. + +{PANEL/} + +{PANEL: Syntax} + +* There are two `TimeSeriesFor.Get` methods: + {CODE TimeSeriesFor-Get-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE TimeSeriesFor-Get-Strongly-Typed@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `from` | `DateTime?` | Range Start | + | `to` | `DateTime?` | Range End | + | `start` | `int` | Paging first entry.
    E.g. 50 means the first page would start at the 50th time series entry.
    Default: 0, for the first time-series entry. | + | `pagesize` | `int` | Paging page-size.
    E.g. set `pagesize` to 10 to retrieve pages of 10 entries.
    Default: int.MaxValue, for all time series entries. | + +* **Return Values** + * **`TimeSeriesEntry[]`** - an array of time series entry classes. + {CODE TimeSeriesEntry-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * **`TimeSeriesEntry[]`** + The [strongly-typed API](../../../../../document-extensions/timeseries/client-api/strongly-typed-api) + can be used to address retrieved values by name. + +{PANEL/} + +{PANEL: Usage Flow} + +* Open a session. +* Create an instance of `TimeSeriesFor`. + * Either pass `TimeSeriesFor` an explicit document ID, + -or- + Pass it an [entity tracked by the session](../../../../../client-api/session/loading-entities), + e.g. a document object returned from [session.Query](../../../../../client-api/session/querying/how-to-query) + or from [session.Load](../../../../../client-api/session/loading-entities#load). + * Pass `TimeSeriesFor` the time series name. +* Call `TimeSeriesFor.Get`. + +{PANEL/} + +{PANEL: Usage Samples} + +* In this sample we retrieve all the entries of a time series, + using its parent-document's ID explicitly. + {CODE timeseries_region_Get-All-Entries-Using-Document-ID@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* In this sample we query for a document and get its "Heartrate" time series data. + {CODE timeseries_region_Pass-TimeSeriesFor-Get-Query-Results@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* Here we retrieve entries and use the strongly typed API to check their values + by name (as previously defined by the StockPrice structure). + We check whether a stock's closing-time price is rising over three trade days. + {CODE timeseries_region_Get-Strongly-Typed@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE Custom-Data-Type-1@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +{PANEL/} + +## Related articles + +**Client API** +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/overview) + +**Studio Articles** +[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../../document-extensions/timeseries/querying/overview-and-syntax) +[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/get/get-names.markdown similarity index 81% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/get/get-names.markdown index 995af18dfd..920fa06d2c 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/get/get-names.markdown @@ -1,5 +1,4 @@ -## `Advanced.GetTimeSeriesFor` -# Get Time Series Names +# Session: Get Time Series Names --- @@ -9,10 +8,10 @@ Get the names of a document's time series using `Advanced.GetTimeSeriesFor`. * In this page: - * [`Advanced.GetTimeSeriesFor`](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names#advanced.gettimeseriesfor) - * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names#syntax) - * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names#usage-flow) - * [Usage Sample](../../../../../document-extensions/timeseries/client-api/session-methods/get-ts-data/get-ts-names#usage-sample) + * [`Advanced.GetTimeSeriesFor`](../../../../../document-extensions/timeseries/client-api/session/get/get-names#advanced.gettimeseriesfor) + * [Syntax](../../../../../document-extensions/timeseries/client-api/session/get/get-names#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session/get/get-names#usage-flow) + * [Usage Sample](../../../../../document-extensions/timeseries/client-api/session/get/get-names#usage-sample) {NOTE/} @@ -64,13 +63,13 @@ to get a list of its time series' names. ## Related articles **Client API** -[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/overview) **Studio Articles** [Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) **Querying and Indexing** -[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Querying](../../../../../document-extensions/timeseries/querying/overview-and-syntax) [Time Series Indexing](../../../../../document-extensions/timeseries/indexing) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/.docs.json similarity index 93% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/.docs.json rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/.docs.json index e55582c43a..fa86efa015 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/.docs.json @@ -1,6 +1,6 @@ [ { - "Path": "include-ts-overview.markdown", + "Path": "overview.markdown", "Name": "Overview", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/overview.markdown similarity index 64% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/overview.markdown index 245b58de37..4b9070849f 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/overview.markdown @@ -1,4 +1,4 @@ -# Include Time Series Data: Overview +# Session: Include Time Series --- @@ -6,27 +6,27 @@ You can [Include](../../../../../client-api/session/loading-entities#load-with-includes) documents' time series data while retrieving the documents. -The included time series data is held by the client's session, -so it can be handed to the user the instant it is required - -with no additional trip to the server. +The included data is held by the client's session, so it can +be handed to the user instantly when requested without issuing +an additional request to the server. * Time series data can be included while - - * [Loading a Document Using `session.Load`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load) - * [Loading a Document By Query Via `session.Query`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query) - * [Loading a Document By a Raw RQL Query Via `session.Advanced.RawQuery`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries) + * [Loading a Document Using `session.Load`](../../../../../document-extensions/timeseries/client-api/session/include/with-session-load) + * [Loading a Document By Query Via `session.Query`](../../../../../document-extensions/timeseries/client-api/session/include/with-session-query) + * [Loading a Document By a Raw RQL Query Via `session.Advanced.RawQuery`](../../../../../document-extensions/timeseries/client-api/session/include/with-raw-queries) {NOTE/} ## Related articles **Client API** -[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/overview) **Studio Articles** [Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) **Querying and Indexing** -[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Querying](../../../../../document-extensions/timeseries/querying/overview-and-syntax) [Time Series Indexing](../../../../../document-extensions/timeseries/indexing) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/with-raw-queries.markdown similarity index 71% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/with-raw-queries.markdown index c201c748b0..34716fa715 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/with-raw-queries.markdown @@ -1,5 +1,4 @@ -## `session.Advanced.RawQuery` -# Include TS Data With Raw Queries +# Session: Include Time Series With Raw Queries --- @@ -8,10 +7,10 @@ You can include time series data while running a raw RQL query via `session.Advanced.RawQuery`. -* [Include Time Series Data with `Advanced.RawQuery`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#include-time-series-data-with-advanced.rawquery) - * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#syntax) - * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#usage-flow) - * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-raw-queries#usage-sample) +* [Include Time Series Data with `Advanced.RawQuery`](../../../../../document-extensions/timeseries/client-api/session/include/with-raw-queries#include-time-series-data-with-advanced.rawquery) + * [Syntax](../../../../../document-extensions/timeseries/client-api/session/include/with-raw-queries#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session/include/with-raw-queries#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session/include/with-raw-queries#usage-sample) {NOTE/} @@ -36,15 +35,6 @@ use the `include timeseries` expression in your RQL query. |:-------------|:-------------|:-------------| | `query` | string | Raw RQL Query | - * **Return Value**: **`IRawDocumentQuery`** - {CODE-BLOCK: JSON} -public interface IRawDocumentQuery : - IQueryBase>, - IDocumentQueryBase -{ -} -{CODE-BLOCK/} - {PANEL/} {PANEL: Usage Flow} @@ -62,7 +52,7 @@ public interface IRawDocumentQuery : {PANEL: Usage Sample} In this sample, we use a raw query to retrieve a document -and include data from the documkent's "Heartrate" time series. +and include entries from the document's "Heartrate" time series. {CODE timeseries_region_Raw-Query-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} @@ -74,13 +64,13 @@ The entries we Get after the query, are retrieved ## Related articles **Client API** -[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/overview) **Studio Articles** [Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) **Querying and Indexing** -[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Querying](../../../../../document-extensions/timeseries/querying/overview-and-syntax) [Time Series Indexing](../../../../../document-extensions/timeseries/indexing) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/with-session-load.markdown similarity index 84% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/with-session-load.markdown index c6309a4bc2..906647c963 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/with-session-load.markdown @@ -1,5 +1,4 @@ -## `IncludeTimeSeries` -# Include TS Data With `session.Load` +# Session: Include Time Series With `Load` --- @@ -8,10 +7,10 @@ You can include a time series or a part of it while loading a document via `session.Load`. -* [`session.Load` and `IncludeTimeSeries`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load#session.load-and-includetimeseries) - * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load#syntax) - * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load#usage-flow) - * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-load#usage-sample) +* [`session.Load` and `IncludeTimeSeries`](../../../../../document-extensions/timeseries/client-api/session/include/with-session-load#session.load-and-includetimeseries) + * [Syntax](../../../../../document-extensions/timeseries/client-api/session/include/with-session-load#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session/include/with-session-load#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session/include/with-session-load#usage-sample) {NOTE/} @@ -78,13 +77,13 @@ The entries we Get after including the time series, are retrieved ## Related articles **Client API** -[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/overview) **Studio Articles** [Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) **Querying and Indexing** -[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Querying](../../../../../document-extensions/timeseries/querying/overview-and-syntax) [Time Series Indexing](../../../../../document-extensions/timeseries/indexing) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/with-session-query.markdown similarity index 80% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/with-session-query.markdown index 4aef70ee2a..ee684e20e6 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/include/with-session-query.markdown @@ -1,5 +1,4 @@ -## `IncludeTimeSeries` -# Include TS Data With `session.Query` +# Include Time Series With `Query` --- @@ -7,10 +6,10 @@ You can include time series data while retrieving a document via `session.Query`. -* [`session.Query` and `IncludeTimeSeries`](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query#session.query-and-includetimeseries) - * [Syntax](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query#syntax) - * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query#usage-flow) - * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session-methods/include-ts-data/with-session-query#usage-samples) +* [`session.Query` and `IncludeTimeSeries`](../../../../../document-extensions/timeseries/client-api/session/include/with-session-query#session.query-and-includetimeseries) + * [Syntax](../../../../../document-extensions/timeseries/client-api/session/include/with-session-query#syntax) + * [Usage Flow](../../../../../document-extensions/timeseries/client-api/session/include/with-session-query#usage-flow) + * [Usage Samples](../../../../../document-extensions/timeseries/client-api/session/include/with-session-query#usage-samples) {NOTE/} @@ -55,7 +54,7 @@ method of the `IQueryIncludeBuilder` interface as an argument. {PANEL: Usage Samples} In this sample, we retrieve a document using `session.Query` and -**include** data from the time series "Heartrate". +**include** entries from the time series "Heartrate". {CODE timeseries_region_Query-Document-And-Include-TimeSeries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} The entries we Get after including the time series, are retrieved @@ -66,13 +65,13 @@ The entries we Get after including the time series, are retrieved ## Related articles **Client API** -[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) +[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/overview) **Studio Articles** [Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) **Querying and Indexing** -[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Querying](../../../../../document-extensions/timeseries/querying/overview-and-syntax) [Time Series Indexing](../../../../../document-extensions/timeseries/indexing) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/patch.markdown similarity index 53% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/patch.markdown index 2d80623169..2f185963cf 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session-methods/patch-ts-data.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/patch.markdown @@ -1,5 +1,4 @@ -## `session.Advanced.Defer` -# Patch Time Series Data +# Session: Patch Time Series Data --- @@ -9,23 +8,24 @@ * You can pass `Defer` a script to Append, Get, and Remove time series entries. * You can handle a single document at a time. -* [Patching Time Series Data Using `session.Advanced.Defer`](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#patching-time-series-data-using-session.advanced.defer) - * [Syntax](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#syntax) - * [Usage Flow](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#usage-flow) - * [Usage Samples](../../../../document-extensions/timeseries/client-api/session-methods/patch-ts-data#usage-samples) +* [Patching Using `session.Advanced.Defer`](../../../../document-extensions/timeseries/client-api/session/patch#patching-using-session.advanced.defer) + * [Syntax](../../../../document-extensions/timeseries/client-api/session/patch#syntax) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/session/patch#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/session/patch#usage-samples) {NOTE/} --- -{PANEL: Patching Time Series Data Using `session.Advanced.Defer`} +{PANEL: Patching Using `session.Advanced.Defer`} {INFO: } * [Defer](../../../../client-api/operations/patching/single-document#non-typed-session-api) is used for patching in general, not necessarily for time series data patching. -* To patch time series data, you need to customize the Javascript `Defer` uses. -* Learn about customizable Javascripts and the JS time series API [here](../../../../document-extensions/timeseries/client-api/ts-javascript-api). +* To patch time series data, you need to [customize the JavaScript](../../../../document-extensions/timeseries/client-api/javascript-support) + that `Defer` uses. +* Learn more about time series JavaScript [here](../../../../document-extensions/timeseries/client-api/javascript-support). {INFO/} @@ -34,27 +34,14 @@ {PANEL: Syntax} * **`PatchCommandData`** - * **Definition** + * **Definition** {CODE PatchCommandData-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - * **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `id` | `string` | Patched document ID | - | `changeVector` | `string` | Change vector, to verify that the document hasn't been modified.
    Can be `null`. | - | `patch` | `PatchRequest` | The patching Java Script | - | `patchIfMissing` | `PatchRequest` | Patching Java Script to be used if the document isn't found | + Learn more about `PatchCommandData` [here](../../../../client-api/operations/patching/single-document#non-typed-session-api). * **`PatchRequest`** - * **Definition** + * **Definition** {CODE PatchRequest-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - - * **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `Script` | `string` | Patching script | - | `Values` | `Dictionary` | Values that the patching script can use | + Learn more about `PatchRequest` [here](../../../../client-api/operations/patching/single-document#non-typed-session-api). {PANEL/} @@ -65,14 +52,15 @@ * Pass the `PatchCommandData` constructor method - * the document ID * the change vector (or `null`) - * a `PatchRequest` instance with a Java Script that appends or removes time series entries. + * a `PatchRequest` instance with a JavaScript that appends or removes time series entries. * Call `session.SaveChanges()` to perform the patch. {PANEL/} {PANEL: Usage Samples} -* In this sample, we pass `Defer`a script that patches a document 100 time series entries with random heartrate values. +* In this sample, we pass `Defer`a script that appends a document 100 time series + entries with random heartrate values. {CODE TS_region-Session_Patch-Append-100-Random-TS-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} * In this sample, we remove a range of 50 time series entries from a document. @@ -83,16 +71,16 @@ ## Related articles **Time Series and JavaScript** -[The Time Series JavaScript API](../../../../document-extensions/timeseries/client-api/ts-javascript-api) +[The Time Series JavaScript API](../../../../document-extensions/timeseries/client-api/javascript-support) **Client API** -[Time Series API Overview](../../../../document-extensions/timeseries/client-api/api-overview) +[Time Series API Overview](../../../../document-extensions/timeseries/client-api/overview) **Studio Articles** [Studio Time Series Management](../../../../studio/database/document-extensions/time-series) **Querying and Indexing** -[Time Series Querying](../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Querying](../../../../document-extensions/timeseries/querying/overview-and-syntax) [Time Series Indexing](../../../../document-extensions/timeseries/indexing) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/querying-overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/querying-overview.markdown new file mode 100644 index 0000000000..a4399caef4 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/querying-overview.markdown @@ -0,0 +1,170 @@ +# Session: Time Series Querying Overview +--- + +{NOTE: } + +* **LINQ Queries** + To query time series using LINQ expressions, use `session.Query`. + RavenDB will translate a LINQ query to RQL before transmitting + it to the server for execution. +* **RQL Queries** + Clients can express time series queries in RQL and send them to the server + for execution using the `session.Advanced.RawQuery` method. + +{INFO: } +Learn more about time series queries in the [section dedicated to this subject](../../../../document-extensions/timeseries/querying/queries-overview). +{INFO/} + +* In this page: + * [Time Series LINQ Queries](../../../../document-extensions/timeseries/client-api/session/querying-overview#time-series-linq-queries) + * [Syntax](../../../../document-extensions/timeseries/client-api/session/querying-overview#syntax) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/session/querying-overview#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/session/querying-overview#usage-samples) + * [Client Raw RQL Queries](../../../../document-extensions/timeseries/client-api/session/querying-overview#client-raw-rql-queries) + * [RQL Queries Syntax](../../../../document-extensions/timeseries/client-api/session/querying-overview#rql-queries-syntax) + * [RQL Queries Usage Flow](../../../../document-extensions/timeseries/client-api/session/querying-overview#rql-queries-usage-flow) + * [RQL Queries Usage Samples](../../../../document-extensions/timeseries/client-api/session/querying-overview#rql-queries-usage-samples) + +{NOTE/} + +--- + +{PANEL: Time Series LINQ Queries} + +To build a time series LINQ query, run a document query using `session.Query` +and extend it using LINQ expressions. +Here is a simple LINQ query that chooses users by their age and retrieves their +HeartRate time series, and the RQL equivalent for this query. + +{CODE-TABS} +{CODE-TAB:csharp:LINQ ts_region_LINQ-1-Select-Timeseries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +{CODE-TAB:csharp:RQL ts_region_LINQ-2-RQL-Equivalent@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} +{CODE-TABS/} + +{PANEL/} + +{PANEL: Syntax} + +`session.Query` Definition: +{CODE Query-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +Learn more about `session.Query` [here](../../../../client-api/session/querying/how-to-query#session.query). + +**Return Value**: + +* **`IRavenQueryable`** for aggregated data. + When the query + [aggregates time series entries](../../../../document-extensions/timeseries/querying/aggregation-and-projections), + the results are returned in an aggregated array. +* **`IRavenQueryable`** for non-aggregated data. + When the query **doesn't aggregate** time series entries, + the results are returned in a list of time series results. + +{PANEL/} + +{PANEL: Usage Flow} + +* Open a session +* Call `session.Query`. + - Run a document query to locate documents whose time series you want to query. + - Extend the query using LINQ expressions to find and project time series data. + Start with `Select` to choose a time series. +* Retrieve the results using - + `TimeSeriesAggregationResult` for aggregated data + -or- + `TimeSeriesRawResult` for non-aggregated data +{PANEL/} + +{PANEL: Usage Samples} + +* In this sample, we select a three-days range from the HeartRate time series. + {CODE ts_region_LINQ-3-Range-Selection@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* The first occurance of `Where` in the following example, filters documents. + The second occurance of `Where` filters entries. + {CODE ts_region_LINQ-4-Where@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* In the following sample, we group heart-rate data of people above the age of 72 + into 1-day groups, and retrieve each group's average heartrate and number of measurements. + The aggregated results are retrieved into an `IRavenQueryable` array. + {CODE ts_region_LINQ-6-Aggregation@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +{PANEL: Client Raw RQL Queries} + +To send a raw RQL query to the server, use `session.Advanced.RawQuery`. +`RawQuery` transmits queries to the server without checking or altering +their contents, time series contents or otherwise + +{PANEL/} + +{PANEL: RQL Queries Syntax} + +* **`session.Advanced.RawQuery`** + * **Definition** + {CODE RawQuery-definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + + * **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `query` | string | Raw RQL Query | + + * **Return Value**: + * **`IRawDocumentQuery`** for aggregated data. + When the query + [aggregates time series entries](../../../../document-extensions/timeseries/querying/aggregation-and-projections), + the results are returned in an aggregated array. + * **`IRawDocumentQuery`** for non-aggregated data. + When the query **doesn't aggregate** time series entries, + the results are returned in a list of time series results. + +{PANEL/} + +{PANEL: RQL Queries Usage Flow} + +* Open a session +* Call `session.Advanced.RawQuery` + Pass it your query +* Retrieve the results into + `TimeSeriesAggregationResult` for aggregated data + -or- + `TimeSeriesRawResult` for non-aggregated data +{PANEL/} + +{PANEL: RQL Queries Usage Samples} + +* In this sample, a raw RQL query retrieves 24 hours of HeartRate data from users under the age of 30. + The query does not aggregate data, so we retrieve its results using a `TimeSeriesRawResult` list. + We define an **offset**, to adjust retrieved results to the client's local time-zone. + + {CODE-TABS} + {CODE-TAB:csharp:Declare-Syntax ts_region_Raw-Query-Non-Aggregated-Declare-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TAB:csharp:Select-Syntax ts_region_Raw-Query-Non-Aggregated-Select-Syntax@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TABS/} + +--- + +* In this sample, the query aggregates 7 days of HeartRate entries into 1-day groups. + From each group, two values are selected and projected to the client: the **min** + and **max** hourly HeartRate values. + The aggregated results are retrieved using a `TimeSeriesAggregationResult` array. + {CODE ts_region_Raw-Query-Aggregated@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles + +**Client API** +[Time Series API Overview](../../../../document-extensions/timeseries/client-api/overview) + +**Studio Articles** +[Studio Time Series Management](../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../document-extensions/timeseries/querying/overview-and-syntax) +[Time Series Indexing](../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/remove.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/remove.markdown new file mode 100644 index 0000000000..ebbd233b75 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/session/remove.markdown @@ -0,0 +1,96 @@ +# Session: Remove Time Series Data + +--- + +{NOTE: } + +Remove time series data using `TimeSeriesFor.Remove`. + +* You can remove a **single time series entry** or a **range of entries**. + +* In this page: + * [`TimeSeriesFor.Remove`](../../../../document-extensions/timeseries/client-api/session/remove#timeseriesfor.remove) + * [Syntax](../../../../document-extensions/timeseries/client-api/session/remove#syntx) + * [Usage Flow](../../../../document-extensions/timeseries/client-api/session/remove#usage-flow) + * [Usage Samples](../../../../document-extensions/timeseries/client-api/session/remove#usage-samples) +{NOTE/} + +--- + +{PANEL: `TimeSeriesFor.Remove`} + +`TimeSeriesFor.Remove` is used for the removal of time series and +time series entries. + +* There is no need to explicitly remove a time series; + the series is removed when all its entries are removed. +* Attempting to remove nonexistent entries results in a no-op, + generating no exception. + + +{PANEL/} + +{PANEL: Syntx} + +* There are two `TimeSeriesFor.Remove` methods: + * Remove a single time series entry. + {CODE TimeSeriesFor-Remove-definition-single-timepoint@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + * Remove a range of time series entries. + {CODE TimeSeriesFor-Remove-definition-range-of-timepoints@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* **Parameters** + + | Parameters | Type | Description | + |:-------------|:-------------|:-------------| + | `at` | `DateTime` | Timestamp of the time series entry you want to remove | + | `from` | `DateTime` | Remove the range of time series entries starting at this timestamp | + | `to` | `DateTime` | Remove the range of time series entries ending at this timestamp | + +* **Return Value** + No return value. + +* **Exceptions** + * `DocumentDoesNotExistException` is thrown If the document doesn't exist. + * Attempting to remove nonexistent entries results in a no-op and does not generate an exception. + +{PANEL/} + +{PANEL: Usage Flow} + +* Open a session. +* Create an instance of `TimeSeriesFor`. + * Either pass `TimeSeriesFor` an explicit document ID, + -or- + Pass it an [entity tracked by the session](../../../../client-api/session/loading-entities), + e.g. a document object returned from [session.Query](../../../../client-api/session/querying/how-to-query) + or from [session.Load](../../../../client-api/session/loading-entities#load). + * Pass `TimeSeriesFor` the time series name. +* Call `TimeSeriesFor.Remove`. +* Call `session.SaveChanges` for the action to take effect on the server. + +{PANEL/} + +{PANEL: Usage Samples} + +* In this sample we remove a single entry from a time series. + {CODE timeseries_region_Remove-TimeSeriesFor-Single-Time-Point@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* In this sample we remove a range of entries from a time series. + {CODE timeseries_region_TimeSeriesFor-Remove-Time-Points-Range@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +## Related articles + +**Client API** +[Time Series API Overview](../../../../document-extensions/timeseries/client-api/overview) + +**Studio Articles** +[Studio Time Series Management](../../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../../document-extensions/timeseries/querying/overview-and-syntax) +[Time Series Indexing](../../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown deleted file mode 100644 index 0443df9c12..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk.markdown +++ /dev/null @@ -1,140 +0,0 @@ -## `BulkInsert.TimeSeriesFor.Append` -# Append Time Series In Bulk - ---- - -{NOTE: } - -* `store.BulkInsert` is RavenDB's high-performance data insertion operation. - Its `TimeSeriesFor` interface resembles [session.TimeSeriesFor](../../../../../document-extensions/timeseries/client-api/session-methods/append-ts-data) - in its ability to append multiple time series entries in a single transaction, - while omitting the liabilities of the `session` interface to gain much higher speed. - -* In this page: - * [`BulkInsert.TimeSeriesFor.Append`](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#bulkinsert.timeseriesfor.append) - * [Syntax](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#syntax) - * [Overload 1 - Bulk-Insert Single-Value Entries](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) - * [Overload 2 - Bulk-Insert Multiple-Values Entries](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-2-each-appended-entry-has-multiple-values) - * [Usage Flow](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#usage-flow) - * [Usage Samples](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#usage-samples) - -{NOTE/} - -{PANEL: `BulkInsert.TimeSeriesFor.Append`} - -Create a `BulkInsert` instance, pass its `TimeSeriesFor` method the document's ID -and time series name, and then call `TimeSeriesFor.Append` as many times as you need -to. All the Append operations you perform this way will be executed in -a single transaction. - -{PANEL/} - -{PANEL: Syntax} - -* **`TimeSeriesFor` Definition** - {CODE-BLOCK: JSON} - public TimeSeriesBulkInsert TimeSeriesFor(string id, string name) - {CODE-BLOCK/} - -* **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `id` | `string` | Document ID | - | `name` | `string` | Time Series Name | - -* **Return Value**: **`TimeSeriesBulkInsert`** - ---- - -* There are two Append overloads: - * [Overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) - - Each appended entry has a single value. - * [Overload 2](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-2-each-appended-entry-has-multiple-values) - - Each appended entry has multiple values. - ---- - -#### Overload 1: Each appended entry has a single value - -* **Definition** - {CODE-BLOCK:JSON} - public void Append(DateTime timestamp, double value, string tag = null) - {CODE-BLOCK/} - -* **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `timestamp` | `DateTime` | TS-entry's timestamp | - | `value` | `double` | A single value | - | `tag` | `string` | TS-entry's tag (optional) | - -* **Return Value**: **`void`** - ---- - -#### Overload 2: Each appended entry has multiple values - -* **Definition** - {CODE-BLOCK:JSON} - public void Append(DateTime timestamp, ICollection values, string tag = null) - {CODE-BLOCK/} - -* **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `timestamp` | `DateTime` | TS-entry's timestamp | - | `values` | `ICollection` | Multiple values | - | `tag` | `string` | TS-entry's tag (optional) | - -* **Return Value**: **`void`** - -{PANEL/} - -{PANEL: Usage Flow} - -* Create a `store.BulkInsert` instance. -* Pass the instance's `TimeSeriesFor` - - **The document ID** - **The time series name** -* Call `TimeSeriesFor.Append` as many times as you like. Pass it - - * The appended entry's **timestamp** - * **A single value** ([overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value)) - -or- - **Multiple values** ([overload 2](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-2-each-appended-entry-has-multiple-values)) - * The appended entry's **tag** (optional) - -{PANEL/} - -{PANEL: Usage Samples} - -* In this sample, we use [overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) - to append a time series two entries in a single transaction. - {CODE timeseries_region_Use-BulkInsert-To-Append-2-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* In this sample, we use [overload 1](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-1-each-appended-entry-has-a-single-value) - to append a time series a hundred entries in a single transaction. - {CODE timeseries_region_Use-BulkInsert-To-Append-100-Entries@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* In this sample, we use [overload 2](../../../../../document-extensions/timeseries/client-api/store-operations/bulk-ts-operations/append-ts-data-in-bulk#overload-2-each-appended-entry-has-multiple-values) - to append a time series two saets of values in a single transaction. - {CODE BulkInsert-overload-2-Two-HeartRate-Sets@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - -## Related articles - -**Client API** -[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) - -**Studio Articles** -[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) - -**Querying and Indexing** -[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) -[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) - -**Policies** -[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/.docs.json deleted file mode 100644 index 927e71f7da..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/.docs.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "Path": "get-TS-data.markdown", - "Name": "From a Single Time Series", - "DiscussionId": "15672af6-b12d-418c-a8a3-aef1fc9dfa61", - "Mappings": [] - }, - { - "Path": "get-multiple-TS-data.markdown", - "Name": "From Multiple Time Series", - "DiscussionId": "c8a11e4a-118b-4413-ba6c-7c6fdd414fa2", - "Mappings": [] - } -] diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown deleted file mode 100644 index f58f8a3ccf..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-TS-data.markdown +++ /dev/null @@ -1,90 +0,0 @@ -## `GetTimeSeriesOperation` -# Get a Time Series Data - ---- - -{NOTE: } - -Get a single time series' data using `GetTimeSeriesOperation`. - -* In this page: - * [`GetTimeSeriesOperation`](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#gettimeseriesoperation) - * [Syntax](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#syntax) - * [Usage Flow](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#usage-flow) - * [Usage Samples](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-ts-data#usage-sample) - -{NOTE/} - ---- - -{PANEL: `GetTimeSeriesOperation`} - -Use `GetTimeSeriesOperation` to retrieve data from a single -time series. - -* To retrieve data from multiple time series, use - [GetMultipleTimeSeriesOperation](../../../../../document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data). - -{PANEL/} - -{PANEL: Syntax} - -* **Definition** - {CODE GetTimeSeriesOperation-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `docId` | `string` | Document ID | - | `timeseries` | `string` | Time series name | - | `from` | `DateTime` | Range start | - | `to` | `DateTime` | Range end | - | `start` | `int` | Start of first Page | - | `pageSize` | `int` | Size of each page | - -* **Return Value**: **`TimeSeriesRangeResult`** - {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - - When a nonexistent time series is requested, - the return value will be `null`. - When a nonexistent entries-range is requested, - the return value will be a `TimeSeriesRangeResult` object with an - empty `Entries` property. - -* **Exceptions** - Exceptions are not generated. - -{PANEL/} - -{PANEL: Usage Flow} - -* Pass `GetTimeSeriesOperation` - - Document ID, Time Series Name, Range Start, Range End. -* Call `store.Operations.Send` to execute the operation. -* Data is returned into a `dictionary of `TimeSeriesRangeResult` classes. - -{PANEL/} - -{PANEL: Usage Sample} - -* In this sample, we retrieve all the entries of a time series. - {CODE timeseries_region_Get-Single-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - - -## Related articles - -**Client API** -[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) - -**Studio Articles** -[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) - -**Querying and Indexing** -[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) -[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) - -**Policies** -[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown deleted file mode 100644 index 65725fba4b..0000000000 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/store-operations/get-TS-data/get-multiple-TS-data.markdown +++ /dev/null @@ -1,91 +0,0 @@ -## `GetMultipleTimeSeriesOperation` -# Get Multiple Time Series Data - ---- - -{NOTE: } - -Get multiple time series data using `GetMultipleTimeSeriesOperation`. - -* In this page: - * [`GetMultipleTimeSeriesOperation`](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-multiple-ts-data#getmultipletimeseriesoperation) - * [Syntax](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-multiple-ts-data#syntax) - * [Usage Flow](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-multiple-ts-data#usage-flow) - * [Usage Sample](../../../../../document-extensions/timeseries/client-api/store-operations/get-ts-data/get-multiple-ts-data#usage-sample) - -{NOTE/} - ---- - -{PANEL: `GetMultipleTimeSeriesOperation`} - -Use `GetMultipleTimeSeriesOperation` to retrieve data from -multiple time series. - -{PANEL/} - -{PANEL: Syntax} - -* **Definition** - {CODE GetMultipleTimeSeriesOperation-Definition@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* **Parameters** - - | Parameters | Type | Description | - |:-------------|:-------------|:-------------| - | `docId` | `string` | Document ID | - | `ranges` | `IEnumerable` | Ranges of Time Series Entries | - | `start` | `int` | Start of first Page | - | `pageSize` | `int` | Size of each page | - - Pass `GetMultipleTimeSeriesOperation` a **TimeSeriesRange** instance - For each entries range you want it to retrieve. - {CODE TimeSeriesRange-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -* **Return Value**: **`TimeSeriesRangeResult`** - {CODE TimeSeriesDetails-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - {CODE TimeSeriesRangeResult-class@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - - When a nonexistent time series or entries-range is requested, - the return value for the erronous range is a `TimeSeriesRangeResult` - object with an empty `Entries` property. - -* **Exceptions** - Exceptions are not generated. - -{PANEL/} - -{PANEL: Usage Flow} - -* Pass `GetMultipleTimeSeriesOperation` - - * The time series parent-Document ID - * A **TimeSeriesRange** instance for each entries range you want - it to retrieve. -* Populate each TimeSeriesRange instance with a **time Series name**, - a **range start** timestamp (`From`), and a **range end** timestamp (`To`). -* Call `store.Operations.Send` to execute the operation. - -{PANEL/} - -{PANEL: Usage Sample} - -* In this sample, we retrieve chosen entries from two time series. - {CODE timeseries_region_Get-Multiple-Time-Series@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - -{PANEL/} - - -## Related articles - -**Client API** -[Time Series API Overview](../../../../../document-extensions/timeseries/client-api/api-overview) - -**Studio Articles** -[Studio Time Series Management](../../../../../studio/database/document-extensions/time-series) - -**Querying and Indexing** -[Time Series Querying](../../../../../document-extensions/timeseries/querying/queries-overview-and-syntax) -[Time Series Indexing](../../../../../document-extensions/timeseries/indexing) - -**Policies** -[Time Series Rollup and Retention](../../../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/strongly-typed-api.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/strongly-typed-api.markdown new file mode 100644 index 0000000000..3c94dfa8c6 --- /dev/null +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/client-api/strongly-typed-api.markdown @@ -0,0 +1,112 @@ +# Strongly-Typed API + +{NOTE: } + +* Use the strongly-typed API to define time series types that can be used + by the time series methods (e.g. Append and Get) to address and manage + time series values by name. +* Register your time series types with the database record, so the Studio + would be able to present your time series values by their names. + +* In this page: + * [The Strongly-Typed API](../../../document-extensions/timeseries/client-api/strongly-typed-api#the-strongly-typed-api) + * [Defining a Time Series Type](../../../document-extensions/timeseries/client-api/strongly-typed-api#defining-a-time-series-type) + * [Registering a Time Series Type](../../../document-extensions/timeseries/client-api/strongly-typed-api#registering-a-time-series-type) + * [Usage Samples](../../../document-extensions/timeseries/client-api/strongly-typed-api#usage-samples) + +{NOTE/} + +--- + +{PANEL: The Strongly-Typed API} + +Many time series are populated with multiple values with each measurement. +Each GPS measurement, for example, would be appended to a route-tracking +time series with two values at least: the latitude and the longitude. + +Using the strongly-typed API to define time series types, and addressing +values by name, can create a clearer code and ease its management. + +* Name time series values in model classes that can be used as time series types. +* Call time series methods with your custom types, to address and manage values by name. + +{PANEL/} + +{PANEL: Defining a Time Series Type} + +To define a class that can be used as a time series type, mark the class +properties (values) with consecutive TimeSeriesValue indexes: TimeSeriesValue[0], +TimeSeriesValue[1], etc. + +E.g, - +{CODE Custom-Data-Type-2@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +The class can then be used by time series methods like Append. +{CODE timeseries_region_Append-Strongly-Typed-1@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + +{PANEL: Registering a Time Series Type} + +Registering a custom time series type to the database record acquaints +it to the Studio, so when you view and manage time series values via the Studio +they would be presented by name. + +To register a time series type, call `store.TimeSeries.RegisterAsync`. + +* `store.TimeSeries.RegisterAsync` definition + {CODE RegisterAsync-Definitions@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* Parameters + + | Parameter | Type | Explanation + | --- | --- | --- | + | `TCollection` | Collection type | The time-series' collection + | `collection` | `string` | collection (when `TCollection` is not provided) + | `TTimeSeriesEntry` | Time series type | The custom time-series type + | `name` | `string ` | Time series name + | `valueNames` | `string[]` | Names (name per value) + +--- + +Here, for example, we register the `RoutePoint` type we've defined earlier. +{CODE timeseries_region_Strongly-Typed-Register@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +And this is the Studio Time Series view after appending a few RoutePoint coordinates. +!["Studio Time Series View"](images/time-series-view-coordinates.png "Studio Time Series View") + + +{PANEL/} + +{PANEL: Usage Samples} + +* In this sample we define a StockPrice type, and then use it while + appending StockPrice entries. + {CODE Custom-Data-Type-1@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE timeseries_region_Append-Strongly-Typed-2@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* And in this sample we Get StockPrice values by name to check whether a stock's closing-time + price over a three-day period indicates that the price is ascending. + {CODE timeseries_region_Get-Strongly-Typed@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +* We use the custom StockPrice type in this query so we'd be able to + address retrieved values by name. + {CODE timeseries_region_Strongly-Typed-Query@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + +{PANEL/} + + +## Related articles + +**Time Series Overview** +[Time Series Overview](../../../document-extensions/timeseries/overview) + +**Studio Articles** +[Studio Time Series Management](../../../studio/database/document-extensions/time-series) + +**Querying and Indexing** +[Time Series Querying](../../../document-extensions/timeseries/querying/overview-and-syntax) +[Time Series Indexing](../../../document-extensions/timeseries/indexing) + +**Policies** +[Time Series Rollup and Retention](../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown index b3227d51d0..710182fb6f 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/design.markdown @@ -1,14 +1,14 @@ -# Time Series Design +# Design: Time Series --- {NOTE: } -* Time series are sequences of numerical data associated with timestamps +* Time series are sequences of numerical values, associated with timestamps and sorted chronologically. -* RavenDB's Time Series feature is a document extension, gaining by it - much greater speed and efficiency than it would have gained as JSON-formatted +* RavenDB Time Series are stored and managed as document extensions, gaining + much greater speed and efficiency than they would have had as JSON-formatted data within a document. * In this page: @@ -56,9 +56,11 @@ Each time series entry is composed of: | `Tag` | string | An optional tag for an entry. Can be any string up to 255 bytes. Possible uses for the tag: descriptions or metadata for individual entries; storing a document id, which can then be referenced when querying a time series. This is the only component of the entry that is not numerical. | | `Values` | double[] | An array of up to 32 `double` values | -Doubles with higher precision - i.e. more digits after the decimal point - -are much less compressible. In other words `1.234` takes up more space -than `1,234`. +{NOTE: } +Doubles with higher precision - i.e. more digits after the decimal point, +are much less compressible. +In other words, `1.672` takes up more space than `1672`. +{NOTE/} --- @@ -91,8 +93,8 @@ At the server storage level, time series data is divided into **segments**. * Segments contain a number of consecutive entries from the same time series. -* Segments have a maximum size of 2 kB. -* The 2 kb limit means that a segment can only contain up to 32k entries, +* Segments have a maximum size of 2 KB. +* The 2 KB limit means that a segment can only contain up to 32k entries, so a time series with more than 32k entries will always be stored in multiple segments. * In practice, segments usually contain far fewer than 32k entries, @@ -104,7 +106,7 @@ the amount depends on the size of the entries (after compression). is ~24.86 days (`int.MaxValue` milliseconds). So if an entry is 24.86 days or later than the first entry in the current segment, it will become the first entry in a new segment. A consquence of this is that in a sparse time -series segments can be significantly smaller than 2 kB. +series segments can be significantly smaller than 2 KB. Segments also store the aggregate values that summarize the data they contain, such as the averages of entry values. For this reason, it's @@ -117,7 +119,7 @@ Read more about how to use segments [here](../../document-extensions/timeseries/ Time series data is stored using a format called [Gorilla compression](https://www.vldb.org/pvldb/vol8/p1816-teller.pdf). On top of the Gorilla compression, the time series segments are compressed -using the [Lz4 algorithm](https://lz4.github.io/lz4/). +using the [LZ4 algorithm](https://lz4.github.io/lz4/). {PANEL/} @@ -186,13 +188,13 @@ fails for any reason, the time series modification is reverted. ## Related articles **Client API** -[Time Series API Overview](../../document-extensions/timeseries/client-api/api-overview) +[Time Series API Overview](../../document-extensions/timeseries/client-api/overview) **Studio Articles** [Studio Time Series Management](../../studio/database/document-extensions/time-series) **Querying and Indexing** -[Time Series Querying](../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Querying](../../document-extensions/timeseries/querying/overview-and-syntax) [Time Series Indexing](../../document-extensions/timeseries/indexing) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown index fdbd108551..b26198509d 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/indexing.markdown @@ -1,19 +1,20 @@ -# Time Series Indexing +# Indexing: Time Series --- {NOTE: } -Time series indexes are used to index time series data, as opposed to document fields. -The API for creating time series indexes is very similar to (and inherits from) the -API for [creating document indexes](../../indexes/creating-and-deploying). +Time series indexes index time series [segments](../../document-extensions/timeseries/design#segmentation), +as opposed to document fields. +The API for creating time series indexes is very similar to (and it inherits +from) the API for [creating document indexes](../../indexes/creating-and-deploying). {INFO: } Unlike document indexes, time series indexes currently support only LINQ syntax. JavaScript syntax is not supported. RavenDB does not create [dynamic](../../studio/database/indexes/indexes-overview#indexes-types) -time series indexes in response to queries - time series indexes are only be created as +time series indexes in response to queries, but can be created as [static](../../studio/database/indexes/indexes-overview#indexes-types) indexes from a client application or from the Studio. {INFO/} @@ -127,7 +128,7 @@ from entry in segment {CODE-BLOCK/} Segments are useful because they can be referenced within time series indexes to access the entries in -the segment, as well as some aggregate values that summarize the data in the segment: +the segment, as well as some aggregated values that summarize the data in the segment: | Property | Type | Description | | - | - | - | @@ -180,7 +181,7 @@ Yet another way to create a time series index is to create a ###Time Series [Time Series Overview](../../document-extensions/timeseries/overview) -[API Overview](../../document-extensions/timeseries/client-api/api-overview) +[API Overview](../../document-extensions/timeseries/client-api/overview) ### Indexes [What are Indexes](../../indexes/what-are-indexes) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown index d9d57ce89b..27fe162386 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/overview.markdown @@ -10,13 +10,10 @@ with high efficiency and performance. * RavenDB Time series can be managed and utilized using a thorough set of - [API methods](../../document-extensions/timeseries/client-api/api-overview), + [API methods](../../document-extensions/timeseries/client-api/overview), the [Studio](../../studio/database/document-extensions/time-series), and [various RavenDB features](../../document-extensions/timeseries/timeseries-and-other-features/time series-and-other-features-overview#time series-and-other-features---overview). -* Time series functionality is fully integrated into RavenDB's - distributed environment and document model. - * Time series data is **compressed** to lower storage usage and transaction time. * In this page: @@ -60,7 +57,7 @@ handled by time series. ## RavenDB's Time Series Implementation -Time series functionality is fully integrated in RavenDB's +Time series functionality is fully integrated into RavenDB's distributed environment and document model. --- @@ -68,24 +65,28 @@ distributed environment and document model. #### Distrubuted Time Series Distributed clients and nodes can modify time series concurrently; the -modifications are merged by the cluster with [no conflict](../../document-extensions/timeseries/design#no-conflicts). +modifications are merged by the cluster [without conflict](../../document-extensions/timeseries/design#no-conflicts). --- #### Time Series as Document Extensions -RavenDB’s Time Series, like its distributed counters, attachments and document -revisions, are **document extensions**. +RavenDB’s Time Series, like its +[distributed counters](../../client-api/session/counters/overview), +[attachments](../../client-api/session/attachments/what-are-attachments) +and [document revisions](../../client-api/session/revisions/what-are-revisions), +are **document extensions**. + +* A time series always extends a single specific document. + The context and source of the time series can be kept clear this way, + and time series management can use the comfort and strength of the + document interface. + A barometer's specifications document, for example, can be the parent + document for a time series that is populated with measurements taken + by a barometer of this specification. - {INFO: } - A time series always extends a single specific document. - The context and source of the time series can be kept clear this way, - and time series management can use the comfort and strength of the - document interface. - A barometer's specifications document, for example, can be the parent - document for a time series that is populated with measurements taken - by a barometer of this specification. - {INFO/} +* Like the other document extensions, time series can take part in fully + transactional operations. --- @@ -98,7 +99,7 @@ Notable time series features include - and [segmented](../../document-extensions/timeseries/overview#time-series-segments) to minimize storage usage and transmission time. * **A Thorough Set of API Methods** - The [time series API](../../document-extensions/timeseries/client-api/api-overview)** + The [time series API](../../document-extensions/timeseries/client-api/overview)** includes a variety of `session methods` and `store operations`. * **Full GUI Support** Time series can be viewed and managed using the [Studio](../../studio/database/document-extensions/time-series). @@ -107,11 +108,11 @@ Notable time series features include - The results of a set of common queries are prepared in advance in time series segments' headers, so the response to querying for a series **minimum value**, for example, is returned nearly instantly. - * [LINQ and raw RQL queries](../../document-extensions/timeseries/querying/queries-overview-and-syntax) + * [LINQ and raw RQL queries](../../document-extensions/timeseries/querying/overview-and-syntax) Flexible queries and aggregations can be executed using LINQ expressions and raw RQL over time series **timestamps**, **tags** and **values**. * **Time Series Indexing** - Time series can be [indexed by clients](../../document-extensions/timeseries/indexing) or using the Studio. + Time series can be [indexed](../../document-extensions/timeseries/indexing). * [Rollup and Retention Policies](../../document-extensions/timeseries/rollup-and-retention) * **Rollup Policies** You can set time series rollup policies to aggregate large series into @@ -119,13 +120,13 @@ Notable time series features include - * **Retention Policies** You can set time series retention policies to automatically remove time series entries that have reached their expiration date/time. -* [Including Time Series](../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview) +* [Including Time Series](../../document-extensions/timeseries/client-api/session/include/overview) You can include (pre-fetch) time series data while loading documents. - Included data is held by the client's sesion, and is instantly delivered - to the user when it is requested. + Included data is held by the client's sesion, and is delivered to the + user with no additional server calls. * **Patching** You can patch time series data to your documents. - (visit the [API documentation](../../document-extensions/timeseries/client-api/api-overview) to learn more). + (visit the [API documentation](../../document-extensions/timeseries/client-api/overview) to learn more). {PANEL/} @@ -141,9 +142,6 @@ Time series data is **compressed** and composed of consecutive {PANEL: Separate Name and Data Storage} -A time series’ **name** is kept at its parent-document's metadata, while -its **data** is kept separately. - The separation of names and data prevents time series value updates from invoking document-change events, keeping documents' availability and performance whatever size their time series grow to be and however frequent their value-updates @@ -254,13 +252,13 @@ Here is why. ## Related articles **Client API** -[Time Series API Overview](../../document-extensions/timeseries/client-api/api-overview) +[Time Series API Overview](../../document-extensions/timeseries/client-api/overview) **Studio Articles** [Studio Time Series Management](../../studio/database/document-extensions/time-series) **Querying and Indexing** -[Time Series Querying](../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Time Series Querying](../../document-extensions/timeseries/querying/overview-and-syntax) [Time Series Indexing](../../document-extensions/timeseries/indexing) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json index c2d8d00372..285a4a65de 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/.docs.json @@ -1,6 +1,6 @@ [ { - "Path": "queries-overview-and-syntax.markdown", + "Path": "overview-and-syntax.markdown", "Name": "Overview and Syntax", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] @@ -18,8 +18,8 @@ "Mappings": [] }, { - "Path": "aggregation-and-projection.markdown", - "Name": "Aggregation and Projection", + "Path": "aggregation-and-projections.markdown", + "Name": "Aggregation and Projections", "DiscussionId": "b399492f-c034-4406-810c-58ecd8c59115", "Mappings": [] }, diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projections.markdown similarity index 85% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projections.markdown index ca48b780f9..338659e18b 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projection.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/aggregation-and-projections.markdown @@ -1,15 +1,14 @@ -## Time Series Queries: -# Aggregarion and Projection +# Querying: Aggregaring and Projecting Time Series --- {NOTE: } * **Aggregation** - Queris can easily create powerful statistics by aggregating time series (or - chosen ranges of time series entries) into groups by chosen time frames like - an hour or a week, and retrieving values from each group by criteria like `Min` - for the lowest value, `Count` for the number of values in the group, etc. + Queries can easily create powerful statistics by aggregating time series + into groups by chosen time frames like an hour or a week, and retrieving + values from each group by criteria like `Min` for the lowest value, + `Count` for the number of values in the group, etc. * **Projection** by criteria Queries can explicitly select the criteria by which values would be retrieved @@ -31,8 +30,8 @@ * In this page: - * [Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projection#aggregation-and-projection) - * [Client Usage Samples](../../../document-extensions/timeseries/querying/aggregation-and-projection#client-usage-samples) + * [Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projections#aggregation-and-projections) + * [Client Usage Samples](../../../document-extensions/timeseries/querying/aggregation-and-projections#client-usage-samples) {NOTE/} @@ -152,8 +151,8 @@ select c.Name, SP(c) {INFO: } You can run queries from your client using raw RQL and LINQ. -* Learn how to run a LINQ time series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). -* Learn how to run a raw RQL time series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). +* Learn how to run a LINQ time series query [here](../../../document-extensions/timeseries/client-api/session/query/linq-queries). +* Learn how to run a raw RQL time series query [here](../../../document-extensions/timeseries/client-api/session/query/rql-queries). {INFO/} @@ -165,9 +164,9 @@ or `select` in a raw RQL query. * Here we express the query we've discussed above using LINQ and both RQL syntaxes. {CODE-TABS} - {CODE-TAB:csharp:LINQ ts_region_LINQ-Aggregation-and-Projection-StockPrice@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - {CODE-TAB:csharp:Raw-RQL-Select-Syntax ts_region_Raw-RQL-Select-Syntax-Aggregation-and-Projection-StockPrice@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} - {CODE-TAB:csharp:Raw-RQL-Declare-Syntax ts_region_Raw-RQL-Declare-Syntax-Aggregation-and-Projection-StockPrice@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TAB:csharp:LINQ ts_region_LINQ-aggregation-and-projections-StockPrice@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TAB:csharp:Raw-RQL-Select-Syntax ts_region_Raw-RQL-Select-Syntax-aggregation-and-projections-StockPrice@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + {CODE-TAB:csharp:Raw-RQL-Declare-Syntax ts_region_Raw-RQL-Declare-Syntax-aggregation-and-projections-StockPrice@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {CODE-TABS/} {PANEL/} diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown index 7525d204d1..d0e41ed0e5 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/choosing-query-range.markdown @@ -1,5 +1,4 @@ -## Time Series Queries: -# Choosing Query Range +# Querying: Choosing Time Series Range --- @@ -35,7 +34,6 @@ select timeseries( * `between '2020-05-27T00:00:00.0000000Z' and '2020-06-23T00:00:00.0000000Z'` Retrieve all entries between these two timestamps. - (If the query continues, any additional filtering will pick data from this range.) {INFO: } You can use the Studio to try these queries. @@ -60,8 +58,8 @@ select timeseries( {INFO: } You can run queries from your client using raw RQL and LINQ. -* Learn how to run a LINQ time series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). -* Learn how to run a raw RQL time series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). +* Learn how to run a LINQ time series query [here](../../../document-extensions/timeseries/client-api/session/query/linq-queries). +* Learn how to run a raw RQL time series query [here](../../../document-extensions/timeseries/client-api/session/query/rql-queries). {INFO/} @@ -119,7 +117,7 @@ to the client's local time zone. **Time Series Queries** [Filtering](../../../document-extensions/timeseries/querying/filtering) -[Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projection) +[Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projections) [Indexed Time Series Queries](../../../document-extensions/timeseries/querying/indexed-queries) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown index 4c6bc4cc24..4a696f908f 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/filtering.markdown @@ -1,5 +1,4 @@ -## Time Series Queries: -# Filtering +# Querying: Filtering Time Series --- @@ -75,8 +74,8 @@ select timeseries( {INFO: } You can run queries from your client using raw RQL and LINQ. -* Learn how to run a LINQ time series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/linq-queries). -* Learn how to run a raw RQL time series query [here](../../../document-extensions/timeseries/client-api/session-methods/query-time-series/raw-rql-queries). +* Learn how to run a LINQ time series query [here](../../../document-extensions/timeseries/client-api/session/query/linq-queries). +* Learn how to run a raw RQL time series query [here](../../../document-extensions/timeseries/client-api/session/query/rql-queries). {INFO/} @@ -108,7 +107,7 @@ use `LoadTag()` in a LINQ query or `load tag` in a raw RQL query. **Time Series Queries** [Range Selection](../../../document-extensions/timeseries/querying/choosing-query-range) -[Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projection) +[Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projections) [Indexed Time Series Queries](../../../document-extensions/timeseries/querying/indexed-queries) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown index 04c2e11367..ae19231983 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/indexed-queries.markdown @@ -1,5 +1,4 @@ -## Time Series Queries: -# Indexed Queries +# Querying: Time Series & Static Indexes --- @@ -82,8 +81,8 @@ using LINQ expressions. {CODE ts_region_Index-TS-Queries-4-DocumentQuery-with-Linq@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} * **Async queries** -You can run asynchronous queries if you don't want your application to wait for the results. -{CODE ts_region_Index-TS-Queries-5-session-Query-Async@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} + If you are coding in asynchronous manner, you can take leverage of the async support of our queries. + {CODE ts_region_Index-TS-Queries-5-session-Query-Async@DocumentExtensions\TimeSeries\TimeSeriesTests.cs /} {PANEL/} @@ -101,7 +100,7 @@ You can run asynchronous queries if you don't want your application to wait for **Time Series Queries** [Range Selection](../../../document-extensions/timeseries/querying/choosing-query-range) [Filtering](../../../document-extensions/timeseries/querying/filtering) -[Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projection) +[Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projections) **Policies** [Time Series Rollup and Retention](../../../document-extensions/timeseries/rollup-and-retention) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/overview-and-syntax.markdown similarity index 87% rename from Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown rename to Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/overview-and-syntax.markdown index 694640085b..08cb01a074 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/queries-overview-and-syntax.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/querying/overview-and-syntax.markdown @@ -1,5 +1,4 @@ -## Time Series Queries: -# Overview and Syntax +# Querying: Time Series Querying Overview & Syntax --- @@ -11,15 +10,15 @@ for example, expose the behavior of a process that populates a time series over time, and to locate documents related to chosen time series entries. -* Queries can be exectued over time series indexes. +* Queries can be executed over time series indexes. * In this page: - * [Time Series Queries](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#time-series-queries) - * [Server and Client Queries](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#server-and-client-queries) - * [Dynamic and Indexed Queries](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#dynamic-and-indexed-queries) - * [Syntax](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#syntax) - * [`select timeseries` syntax](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#syntax-creating-a-time-series-section) - * [`declare timeseries` syntax](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#syntax-declaring-a-time-series-function) + * [Time Series Queries](../../../document-extensions/timeseries/querying/overview-and-syntax#time-series-queries) + * [Server and Client Queries](../../../document-extensions/timeseries/querying/overview-and-syntax#server-and-client-queries) + * [Dynamic and Indexed Queries](../../../document-extensions/timeseries/querying/overview-and-syntax#dynamic-and-indexed-queries) + * [Syntax](../../../document-extensions/timeseries/querying/overview-and-syntax#syntax) + * [`select timeseries` syntax](../../../document-extensions/timeseries/querying/overview-and-syntax#syntax-creating-a-time-series-section) + * [`declare timeseries` syntax](../../../document-extensions/timeseries/querying/overview-and-syntax#syntax-declaring-a-time-series-function) {NOTE/} @@ -34,11 +33,11 @@ Time series query can - to query from. * [Filter](../../../document-extensions/timeseries/querying/filtering) time series entries by their tags, values and timestamps. -* [Aggregate](../../../document-extensions/timeseries/querying/aggregation-and-projection) +* [Aggregate](../../../document-extensions/timeseries/querying/aggregation-and-projections) time series entries into groups by a chosen resolution, e.g. gather the prices of a stock that's been collected over the past two months to week-long groups). * Select entries by various criteria, e.g. by the min and max values of each aggregated group, - and [project](../../../document-extensions/timeseries/querying/aggregation-and-projection) + and [project](../../../document-extensions/timeseries/querying/aggregation-and-projections) them to the client. {PANEL/} @@ -84,8 +83,8 @@ from index 'SimpleIndex' You can query time series using two equivalent syntaxes, choose the syntax you're comfortable with. -* [`select timeseries` syntax](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#syntax-creating-a-time-series-section) -* [`declare timeseries` syntax](../../../document-extensions/timeseries/querying/queries-overview-and-syntax#syntax-declaring-a-time-series-function) +* [`select timeseries` syntax](../../../document-extensions/timeseries/querying/overview-and-syntax#syntax-creating-a-time-series-section) +* [`declare timeseries` syntax](../../../document-extensions/timeseries/querying/overview-and-syntax#syntax-declaring-a-time-series-function) --- @@ -178,7 +177,7 @@ select ts(jog) **Time Series Queries** [Range Selection](../../../document-extensions/timeseries/querying/choosing-query-range) [Filtering](../../../document-extensions/timeseries/querying/filtering) -[Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projection) +[Aggregation and Projection](../../../document-extensions/timeseries/querying/aggregation-and-projections) [Indexed Time Series Queries](../../../document-extensions/timeseries/querying/indexed-queries) **Policies** diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown index 1ce4e5f38d..171a9c7cd9 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/rollup-and-retention.markdown @@ -202,7 +202,7 @@ How to access a rollup time series: ###Time Series [Time Series Overview](../../document-extensions/timeseries/overview) -[API Overview](../../document-extensions/timeseries/client-api/api-overview) +[API Overview](../../document-extensions/timeseries/client-api/overview) ###Client-API [What Are Operations?](../../client-api/operations/what-are-operations) diff --git a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown index 7eda6486f0..bbea1b62f7 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/document-extensions/timeseries/time-series-and-other-features.markdown @@ -24,9 +24,9 @@ changes to time series data. * The [Changes API](../../client-api/changes/what-is-changes-api) service is triggered by changes to time series data. * Learn about how to **index** time series [here](../../document-extensions/timeseries/indexing). -* Learn about how to **query** time series data [here](../../document-extensions/timeseries/querying/queries-overview-and-syntax). +* Learn about how to **query** time series data [here](../../document-extensions/timeseries/querying/overview-and-syntax). * Learn how to **include** time series with `session.Load()` and in queries -[here](../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview). +[here](../../document-extensions/timeseries/client-api/session/include/overview). {PANEL/} {PANEL: Smuggler} @@ -120,9 +120,9 @@ client. This is the general JSON format of the time series snapshot: ### Time Series [Time Series Overview](../../document-extensions/timeseries/overview) -[Include Time Series](../../document-extensions/timeseries/client-api/session-methods/include-ts-data/include-ts-overview) +[Include Time Series](../../document-extensions/timeseries/client-api/session/include/overview) [Time Series Indexing](../../document-extensions/timeseries/indexing) -[Querying Time Series](../../document-extensions/timeseries/querying/queries-overview-and-syntax) +[Querying Time Series](../../document-extensions/timeseries/querying/overview-and-syntax) ### Client-API [Session Entity Tracking](../../client-api/session/what-is-a-session-and-how-does-it-work#tracking-changes) diff --git a/Documentation/5.0/Raven.Documentation.Pages/indexes/querying/what-is-rql.markdown b/Documentation/5.0/Raven.Documentation.Pages/indexes/querying/what-is-rql.markdown index fb612486b8..fc6e0622a0 100644 --- a/Documentation/5.0/Raven.Documentation.Pages/indexes/querying/what-is-rql.markdown +++ b/Documentation/5.0/Raven.Documentation.Pages/indexes/querying/what-is-rql.markdown @@ -90,7 +90,7 @@ old indexes that are now superseded by the new index. {PANEL: `declare`} -The keyword `declare` gives you the ability to create a JS function that can be reused in `select` (when projection is done). You can read more about it [here](../../client-api/session/querying/how-to-project-query-results#example-iv---projection-with-). +The keyword `declare` gives you the ability to create a JavaScript function that can be reused in `select` (when projection is done). You can read more about it [here](../../client-api/session/querying/how-to-project-query-results#example-iv---projection-with-). {PANEL/} @@ -260,7 +260,7 @@ Projections can be performed by using `select`. Please read our dedicated projec {PANEL: `update`} -To patch documents on the server-side, use `update` with the desired JS script that will be applied to any documents matching the query criteria. For more information, please refer to our [patching article](../../client-api/operations/patching/set-based). +To patch documents on the server-side, use `update` with the desired JavaScript script that will be applied to any documents matching the query criteria. For more information, please refer to our [patching article](../../client-api/operations/patching/set-based). {PANEL/} diff --git a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs index 8c5bdf1a86..6894b70a5f 100644 --- a/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs +++ b/Documentation/5.0/Samples/csharp/Raven.Documentation.Samples/DocumentExtensions/TimeSeries/TimeSeriesTests.cs @@ -87,14 +87,12 @@ public void SessionTests() } #endregion - #region timeseries_region_TimeSeriesFor-Get-Single-Value-Using-Document-ID + #region timeseries_region_Get-All-Entries-Using-Document-ID // retrieve all entries of a time-series named "HeartRate" // by passing TimeSeriesFor.Get an explict document ID - using (var session = store.OpenSession()) - { - IEnumerable val = session.TimeSeriesFor("users/john", "HeartRate") - .Get(DateTime.MinValue, DateTime.MaxValue); - } + // Include all time points - from the first timestamp to the last + TimeSeriesEntry[] val = session.TimeSeriesFor("users/john", "HeartRate") + .Get(DateTime.MinValue, DateTime.MaxValue); #endregion #region timeseries_region_Pass-TimeSeriesFor-Get-Query-Results @@ -102,20 +100,115 @@ public void SessionTests() // and get its HeartRate time-series values using (var session = store.OpenSession()) { - baseline = DateTime.Today; + var baseline = DateTime.Today; IRavenQueryable query = session.Query() .Where(u => u.Name == "John"); var result = query.ToList(); - IEnumerable val = session.TimeSeriesFor(result[0], "HeartRate") + TimeSeriesEntry[] val = session.TimeSeriesFor(result[0], "HeartRate") .Get(DateTime.MinValue, DateTime.MaxValue); session.SaveChanges(); } #endregion + #region timeseries_region_Get-Strongly-Typed + bool goingUp = false; + + // Use Get + using (var session = store.OpenSession()) + { + // get entries by GetAsync, using the strongly typed StockPrice class + var results = session.TimeSeriesFor("users/john") + .Get(); + + var ClosePriceDay1 = results[0].Value.Close; + var ClosePriceDay2 = results[1].Value.Close; + var ClosePriceDay3 = results[2].Value.Close; + + if ((ClosePriceDay2 > ClosePriceDay1) + && + (ClosePriceDay3 > ClosePriceDay2)) + goingUp = true; + } + #endregion + + #region timeseries_region_Append-Strongly-Typed-1 + using (var session = store.OpenSession()) + { + session.Store(new User { Name = "John" }, "users/john"); + + // Append coordinates + session.TimeSeriesFor("users/john") + .Append(DateTime.Now, new RoutePoint + { + Latitude = 40.712776, + Longitude = -74.005974 + }, "watches/anotherFirm"); + + session.SaveChanges(); + } + #endregion + + #region timeseries_region_Append-Strongly-Typed-2 + // append multi-value entries using a registered time series type + using (var session = store.OpenSession()) + { + session.Store(new User { Name = "John" }, "users/john"); + + session.TimeSeriesFor("users/john") + .Append(baseline.AddDays(1), new StockPrice + { + Open = 52, + Close = 54, + High = 63.5, + Low = 51.4, + Volume = 9824, + }, "companies/kitchenAppliances"); + + session.TimeSeriesFor("users/john") + .Append(baseline.AddDays(2), new StockPrice + { + Open = 54, + Close = 55, + High = 61.5, + Low = 49.4, + Volume = 8400, + }, "companies/kitchenAppliances"); + + session.TimeSeriesFor("users/john") + .Append(baseline.AddDays(3), new StockPrice + { + Open = 55, + Close = 57, + High = 65.5, + Low = 50, + Volume = 9020, + }, "companies/kitchenAppliances"); + + session.SaveChanges(); + } + #endregion + + #region timeseries_region_Strongly-Typed-Query + using (var session = store.OpenSession()) + { + IRavenQueryable> query = + session.Query() + .Where(c => c.Address1 == "New York") + .Select(q => RavenQuery.TimeSeries(q, "StockPrices", baseline, baseline.AddDays(3)) + .Where(ts => ts.Tag == "companies/kitchenAppliances") + .ToList()); + } + #endregion + + #region timeseries_region_Strongly-Typed-Register + await store.TimeSeries.RegisterAsync(); + #endregion + + // retrieve time series names using (var session = store.OpenSession()) @@ -815,7 +908,7 @@ load Tag as emp { var baseline = new DateTime(2020, 5, 17); - #region ts_region_LINQ-Aggregation-and-Projection-StockPrice + #region ts_region_LINQ-Aggregation-and-Projections-StockPrice IRavenQueryable query = session.Query() .Where(c => c.Address.Country == "USA") .Select(q => RavenQuery.TimeSeries(q, "StockPrice") @@ -839,7 +932,7 @@ load Tag as emp var start = baseline; var end = baseline.AddHours(1); - #region ts_region_Raw-RQL-Select-Syntax-Aggregation-and-Projection-StockPrice + #region ts_region_Raw-RQL-Select-Syntax-Aggregation-and-Projections-StockPrice IRawDocumentQuery aggregatedRawQuery = session.Advanced.RawQuery(@" from Companies as c @@ -864,7 +957,7 @@ select max(), min() var start = baseline; var end = baseline.AddHours(1); - #region ts_region_Raw-RQL-Declare-Syntax-Aggregation-and-Projection-StockPrice + #region ts_region_Raw-RQL-Declare-Syntax-Aggregation-and-Projections-StockPrice IRawDocumentQuery aggregatedRawQuery = session.Advanced.RawQuery(@" declare timeseries SP(c) { @@ -1004,13 +1097,25 @@ private interface IFoo #endregion #region TimeSeriesFor-Get-definition - IEnumerable Get(DateTime from, DateTime to, int start = 0, int pageSize = int.MaxValue); + TimeSeriesEntry[] Get(DateTime? from = null, DateTime? to = null, + int start = 0, int pageSize = int.MaxValue); + #endregion + + #region TimeSeriesFor-Get-Strongly-Typed + //The stongly-typed API is used, to address time series values by name. + TimeSeriesEntry[] Get(DateTime? from = null, DateTime? to = null, + int start = 0, int pageSize = int.MaxValue); #endregion #region IncludeTimeSeries-definition TBuilder IncludeTimeSeries(string name, DateTime from, DateTime to); #endregion + #region BulkInsert.TimeSeriesFor-definition + public TimeSeriesBulkInsert TimeSeriesFor(string id, string name) + #endregion + + #region GetTimeSeriesFor-definition List GetTimeSeriesFor(T instance); #endregion @@ -1020,7 +1125,8 @@ private interface IFoo #endregion #region Include-definition - IRavenQueryable Include(this IQueryable source, Action> includes) + IRavenQueryable Include(this IQueryable source, + Action> includes) #endregion #region RawQuery-definition @@ -1028,11 +1134,13 @@ IRavenQueryable Include(this IQueryable source, Actio #endregion #region Query-definition - IRavenQueryable Query(string indexName = null, string collectionName = null, bool isMapReduce = false); + IRavenQueryable Query(string indexName = null, + string collectionName = null, bool isMapReduce = false); #endregion #region PatchCommandData-definition - public PatchCommandData(string id, string changeVector, PatchRequest patch, PatchRequest patchIfMissing) + public PatchCommandData(string id, string changeVector, PatchRequest patch, + PatchRequest patchIfMissing) #endregion #region PatchRequest-definition @@ -1050,14 +1158,24 @@ public class PatchRequest public TimeSeriesBatchOperation(string documentId, TimeSeriesOperation operation) #endregion + #region Append-Operation-Definition-1 + // Each appended entry has a single value. + public void Append(DateTime timestamp, double value, string tag = null) + #endregion + + #region Append-Operation-Definition-2 + // Each appended entry has multiple values. + public void Append(DateTime timestamp, ICollection values, string tag = null) + #endregion + #region AppendOperation-class public class AppendOperation - { - public DateTime Timestamp; - public double[] Values; - public string Tag; - //... - } + { + public DateTime Timestamp; + public double[] Values; + public string Tag; + //... + } #endregion #region RemoveOperation-class @@ -1080,7 +1198,8 @@ public class TimeSeriesRangeResult #endregion #region GetTimeSeriesOperation-Definition - public GetTimeSeriesOperation(string docId, string timeseries, DateTime? @from = null, DateTime? to = null, int start = 0, int pageSize = int.MaxValue) + public GetTimeSeriesOperation(string docId, string timeseries, + DateTime? @from = null, DateTime? to = null, int start = 0, int pageSize = int.MaxValue) #endregion #region TimeSeriesDetails-class @@ -1092,7 +1211,8 @@ public class TimeSeriesDetails #endregion #region GetMultipleTimeSeriesOperation-Definition - public GetMultipleTimeSeriesOperation(string docId, IEnumerable ranges, int start = 0, int pageSize = int.MaxValue) + public GetMultipleTimeSeriesOperation(string docId, IEnumerable ranges, + int start = 0, int pageSize = int.MaxValue) #endregion #region TimeSeriesRange-class @@ -1104,7 +1224,8 @@ public class TimeSeriesRange #endregion #region PatchOperation-Definition - public PatchOperation(string id, string changeVector, PatchRequest patch, PatchRequest patchIfMissing = null, bool skipPatchIfChangeVectorMismatch = false) + public PatchOperation(string id, string changeVector, PatchRequest patch, + PatchRequest patchIfMissing = null, bool skipPatchIfChangeVectorMismatch = false) #endregion #region PatchByQueryOperation-Definition @@ -1116,14 +1237,59 @@ public Operation Send(IOperation operation, SessionInfo sessi #endregion #region RavenQuery-TimeSeries-Definition-With-Range - public static ITimeSeriesQueryable TimeSeries(object documentInstance, string name, DateTime from, DateTime to) + public static ITimeSeriesQueryable TimeSeries(object documentInstance, + string name, DateTime from, DateTime to) #endregion #region RavenQuery-TimeSeries-Definition-Without-Range public static ITimeSeriesQueryable TimeSeries(object documentInstance, string name) #endregion + + #region RegisterAsync-Definitions + public Task RegisterAsync(string name = null) + public Task RegisterAsync(string name, string[] valueNames) + public Task RegisterAsync(string collection, string name, string[] valueNames) + #endregion + + + + + #region TimeSeriesEntry-Definition + public class TimeSeriesEntry + { + public DateTime Timestamp { get; set; } + public double[] Values { get; set; } + public string Tag { get; set; } + public bool IsRollup { get; set; } + + public double Value + + //.. } + #endregion + + #region Custom-Data-Type-1 + private struct StockPrice + { + [TimeSeriesValue(0)] public double Open; + [TimeSeriesValue(1)] public double Close; + [TimeSeriesValue(2)] public double High; + [TimeSeriesValue(3)] public double Low; + [TimeSeriesValue(4)] public double Volume; + } + #endregion + + #region Custom-Data-Type-2 + private struct RoutePoint + { + [TimeSeriesValue(0)] public double Latitude; + [TimeSeriesValue(1)] public double Longitude; + } + #endregion + + +} }