From 4f9be4e52ee43b0c43310be1643e1acaa5003d49 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Fri, 30 Nov 2018 14:43:31 +0500 Subject: [PATCH 001/118] Added String Split articles --- .../string-split-remove-empty-entries.md | 47 +++++++++++++++++++ .../documentations/string/string-split.md | 47 +++++++++++++++++++ docs2/pages/documentations/string/string.md | 2 + 3 files changed, 96 insertions(+) create mode 100644 docs2/pages/documentations/string/string-split-remove-empty-entries.md create mode 100644 docs2/pages/documentations/string/string-split.md diff --git a/docs2/pages/documentations/string/string-split-remove-empty-entries.md b/docs2/pages/documentations/string/string-split-remove-empty-entries.md new file mode 100644 index 0000000..5f5694a --- /dev/null +++ b/docs2/pages/documentations/string/string-split-remove-empty-entries.md @@ -0,0 +1,47 @@ +# String_SplitRemoveEmptyEntries + +`String_SplitRemoveEmptyEntries` returns a string array that contains the substrings in the `source` string that are delimited by elements of a specified `delimStr` string. The return value does not include array elements that contain an empty string. + +```csharp +String_SplitRemoveEmptyEntries ( + @source NVARCHAR (MAX), + @delimStr NVARCHAR (MAX) + ) +TABLE ([Match] NVARCHAR (MAX) NULL) +``` + +## Parameters + + - **source**: The source string. + - **delimStr**: The string to be replaced. + +## Returns + + - A string that is equivalent to the `source` string except that all instances of `oldValue` are replaced with `newValue`. + - If `oldValue` is not found in the `source` string, the method returns the `source` string without any changes. + +## Example + +```csharp +SELECT SQLNET::String_SplitRemoveEmptyEntries(',ONE,,TWO,,,THREE,,', ',') +SELECT SQLNET::String_SplitRemoveEmptyEntries('1,2,3,4;5;6;:7:8:9', ',;:') +``` + +# String_SplitRemoveEmptyEntries4k + +It is equivalent to `String_SplitRemoveEmptyEntries` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +String_SplitRemoveEmptyEntries4k ( + @source NVARCHAR (4000), + @delimStr NVARCHAR (4000) + ) +TABLE ([Match] NVARCHAR (4000) NULL) +``` + +## Example + +```csharp +SELECT SQLNET::String_SplitRemoveEmptyEntries4k(',ONE,,TWO,,,THREE,,', ',') +SELECT SQLNET::String_SplitRemoveEmptyEntries4k('1,2,3,4;5;6;:7:8:9', ',;:') +``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-split.md b/docs2/pages/documentations/string/string-split.md new file mode 100644 index 0000000..d2dafc8 --- /dev/null +++ b/docs2/pages/documentations/string/string-split.md @@ -0,0 +1,47 @@ +# String_Split + +`String_Split` returns a string array that contains the substrings in the `source` string that are delimited by elements of a specified `delimStr` string. + +```csharp +String_Split ( + @source NVARCHAR (MAX), + @delimStr NVARCHAR (MAX) + ) +TABLE ([Match] NVARCHAR (MAX) NULL) +``` + +## Parameters + + - **source**: The source string. + - **delimStr**: The string to be replaced. + +## Returns + + - A string that is equivalent to the `source` string except that all instances of `oldValue` are replaced with `newValue`. + - If `oldValue` is not found in the `source` string, the method returns the `source` string without any changes. + +## Example + +```csharp +SELECT * FROM String_Split(',ONE,,TWO,,,THREE,,', ',') +SELECT * FROM String_Split('1,2,3,4;5;6;:7:8:9', ',;:') +``` + +# String_Split4k + +It is equivalent to `String_Split` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +String_Split4k ( + @source NVARCHAR (4000), + @delimStr NVARCHAR (4000) + ) +TABLE ([Match] NVARCHAR (4000) NULL) +``` + +## Example + +```csharp +SELECT SQLNET::String_Split4k(',ONE,,TWO,,,THREE,,', ',') +SELECT SQLNET::String_Split4k('1,2,3,4;5;6;:7:8:9', ',;:') +``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string.md b/docs2/pages/documentations/string/string.md index b44f90a..fe80faa 100644 --- a/docs2/pages/documentations/string/string.md +++ b/docs2/pages/documentations/string/string.md @@ -36,3 +36,5 @@ Represents text as a sequence of UTF-16 code units. | [String_Remove(source, startIndex)](/string-remove) | Returns a new string in which all the characters in the `source` string, beginning at a specified position are deleted till the end of the `source` string. | [Try it]()| | [String_RemoveNumOfChars(source, startIndex, count)](/string-remove-num-of-chars) | Returns a new string in which a specified number of characters in the `source` beginning at a specified position have been deleted. | [Try it]()| | [String_Replace(source, oldValue, newValue)](/string-remove) | Returns a new string in which all occurrences of a specified Unicode character or String in the current string are replaced with another specified Unicode character or String. | [Try it]()| +| [String_Split(source, delimStr)](/string-split) | Returns a string array that contains the substrings in this instance that are delimited by elements of a specified string. | [Try it]()| +| [String_SplitRemoveEmptyEntries(source, delimStr)](/string-split-remove-empty-entries) | Returns a string array that contains the substrings in this instance that are delimited by elements of a specified string and remove elements that contain an empty string.. | [Try it]()| From b014ffdc05b276b80226c6c1fe82938c5cac6f23 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Fri, 30 Nov 2018 17:38:30 +0500 Subject: [PATCH 002/118] Updated String Split articles --- .../string/string-split-remove-empty-entries.md | 4 ++-- docs2/pages/documentations/string/string-split.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs2/pages/documentations/string/string-split-remove-empty-entries.md b/docs2/pages/documentations/string/string-split-remove-empty-entries.md index 5f5694a..26135d8 100644 --- a/docs2/pages/documentations/string/string-split-remove-empty-entries.md +++ b/docs2/pages/documentations/string/string-split-remove-empty-entries.md @@ -7,7 +7,7 @@ String_SplitRemoveEmptyEntries ( @source NVARCHAR (MAX), @delimStr NVARCHAR (MAX) ) -TABLE ([Match] NVARCHAR (MAX) NULL) +RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) ``` ## Parameters @@ -36,7 +36,7 @@ String_SplitRemoveEmptyEntries4k ( @source NVARCHAR (4000), @delimStr NVARCHAR (4000) ) -TABLE ([Match] NVARCHAR (4000) NULL) +RETURNS TABLE ([Match] NVARCHAR (4000) NULL) ``` ## Example diff --git a/docs2/pages/documentations/string/string-split.md b/docs2/pages/documentations/string/string-split.md index d2dafc8..7d71c70 100644 --- a/docs2/pages/documentations/string/string-split.md +++ b/docs2/pages/documentations/string/string-split.md @@ -7,7 +7,7 @@ String_Split ( @source NVARCHAR (MAX), @delimStr NVARCHAR (MAX) ) -TABLE ([Match] NVARCHAR (MAX) NULL) +RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) ``` ## Parameters @@ -36,7 +36,7 @@ String_Split4k ( @source NVARCHAR (4000), @delimStr NVARCHAR (4000) ) -TABLE ([Match] NVARCHAR (4000) NULL) +RETURNS TABLE ([Match] NVARCHAR (4000) NULL) ``` ## Example From 9a56ee49d95000ea04e259153ae11da95bc04146 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Fri, 30 Nov 2018 17:43:11 +0500 Subject: [PATCH 003/118] Updated string split articles --- .../string/string-split-remove-empty-entries.md | 8 ++++---- docs2/pages/documentations/string/string-split.md | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs2/pages/documentations/string/string-split-remove-empty-entries.md b/docs2/pages/documentations/string/string-split-remove-empty-entries.md index 26135d8..5998d93 100644 --- a/docs2/pages/documentations/string/string-split-remove-empty-entries.md +++ b/docs2/pages/documentations/string/string-split-remove-empty-entries.md @@ -23,8 +23,8 @@ RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) ## Example ```csharp -SELECT SQLNET::String_SplitRemoveEmptyEntries(',ONE,,TWO,,,THREE,,', ',') -SELECT SQLNET::String_SplitRemoveEmptyEntries('1,2,3,4;5;6;:7:8:9', ',;:') +SELECT * FROM String_SplitRemoveEmptyEntries(',ONE,,TWO,,,THREE,,', ',') +SELECT * FROM String_SplitRemoveEmptyEntries('1,2,3,4;5;6;:7:8:9', ',;:') ``` # String_SplitRemoveEmptyEntries4k @@ -42,6 +42,6 @@ RETURNS TABLE ([Match] NVARCHAR (4000) NULL) ## Example ```csharp -SELECT SQLNET::String_SplitRemoveEmptyEntries4k(',ONE,,TWO,,,THREE,,', ',') -SELECT SQLNET::String_SplitRemoveEmptyEntries4k('1,2,3,4;5;6;:7:8:9', ',;:') +SELECT * FROM String_SplitRemoveEmptyEntries4k(',ONE,,TWO,,,THREE,,', ',') +SELECT * FROM String_SplitRemoveEmptyEntries4k('1,2,3,4;5;6;:7:8:9', ',;:') ``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-split.md b/docs2/pages/documentations/string/string-split.md index 7d71c70..7e64915 100644 --- a/docs2/pages/documentations/string/string-split.md +++ b/docs2/pages/documentations/string/string-split.md @@ -42,6 +42,6 @@ RETURNS TABLE ([Match] NVARCHAR (4000) NULL) ## Example ```csharp -SELECT SQLNET::String_Split4k(',ONE,,TWO,,,THREE,,', ',') -SELECT SQLNET::String_Split4k('1,2,3,4;5;6;:7:8:9', ',;:') +SELECT * FROM String_Split4k(',ONE,,TWO,,,THREE,,', ',') +SELECT * FROM String_Split4k('1,2,3,4;5;6;:7:8:9', ',;:') ``` \ No newline at end of file From 89ce51f3bfe48091e4a6568814452ff223bb4f3d Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Fri, 30 Nov 2018 20:54:31 +0500 Subject: [PATCH 004/118] Added string startswith article --- .../string/string-startswith.md | 44 +++++++++++++++++++ docs2/pages/documentations/string/string.md | 3 +- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 docs2/pages/documentations/string/string-startswith.md diff --git a/docs2/pages/documentations/string/string-startswith.md b/docs2/pages/documentations/string/string-startswith.md new file mode 100644 index 0000000..9b071df --- /dev/null +++ b/docs2/pages/documentations/string/string-startswith.md @@ -0,0 +1,44 @@ +# String_StartsWith + +`String_StartsWith` determines whether the beginning of the `source` string instance matches the specified `target` string. + +```csharp +String_StartsWith ( + @source NVARCHAR (MAX), + @target NVARCHAR (MAX) + ) +RETURNS BIT +``` + +## Parameters + + - **source**: The source string. + - **target**: The string to compare. + +## Returns + +`true` if `target` matches the beginning of the `source` string; otherwise, false. + +## Example + +```csharp +SELECT SQLNET::String_StartsWith('This is bold text', '') +``` + +# String_StartsWith4k + +It is equivalent to `String_StartsWith` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +String_StartsWith4k ( + @source NVARCHAR (4000), + @target NVARCHAR (4000) + ) +RETURNS BIT +``` + +## Example + +```csharp +SELECT SQLNET::String_StartsWith4k('This is bold text', '') +``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string.md b/docs2/pages/documentations/string/string.md index fe80faa..4869100 100644 --- a/docs2/pages/documentations/string/string.md +++ b/docs2/pages/documentations/string/string.md @@ -37,4 +37,5 @@ Represents text as a sequence of UTF-16 code units. | [String_RemoveNumOfChars(source, startIndex, count)](/string-remove-num-of-chars) | Returns a new string in which a specified number of characters in the `source` beginning at a specified position have been deleted. | [Try it]()| | [String_Replace(source, oldValue, newValue)](/string-remove) | Returns a new string in which all occurrences of a specified Unicode character or String in the current string are replaced with another specified Unicode character or String. | [Try it]()| | [String_Split(source, delimStr)](/string-split) | Returns a string array that contains the substrings in this instance that are delimited by elements of a specified string. | [Try it]()| -| [String_SplitRemoveEmptyEntries(source, delimStr)](/string-split-remove-empty-entries) | Returns a string array that contains the substrings in this instance that are delimited by elements of a specified string and remove elements that contain an empty string.. | [Try it]()| +| [String_SplitRemoveEmptyEntries(source, delimStr)](/string-split-remove-empty-entries) | Returns a string array that contains the substrings in this instance that are delimited by elements of a specified string and remove elements that contain an empty string. | [Try it]()| +| [String_StartsWith(source, target)](/string-startswith) | Determines whether the beginning of this string instance matches a specified string. | [Try it]()| From 9d1154dbb51e0c7cdd0fd6f90822a84a594f4920 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Fri, 30 Nov 2018 21:16:44 +0500 Subject: [PATCH 005/118] Added String Substring article --- .../documentations/string/string-substring.md | 47 +++++++++++++++++++ docs2/pages/documentations/string/string.md | 1 + 2 files changed, 48 insertions(+) create mode 100644 docs2/pages/documentations/string/string-substring.md diff --git a/docs2/pages/documentations/string/string-substring.md b/docs2/pages/documentations/string/string-substring.md new file mode 100644 index 0000000..0f30082 --- /dev/null +++ b/docs2/pages/documentations/string/string-substring.md @@ -0,0 +1,47 @@ +# String_Substring + +`String_Substring` returns a substring from this instance. The substring starts at a specified character position and has a specified length. + +```csharp +String_Substring ( + @source NVARCHAR (MAX), + @startIndex INT, + @length INT + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **source**: The source string. + - **startIndex**: The zero-based starting character position of a substring in the `source` string. + - **length**: The number of characters in the substring. + +## Returns + +A string that is equivalent to the substring of length that begins at `startIndex` in the `source` string, or Empty if `startIndex` is equal to the length of this instance and `length` is zero. + +## Example + +```csharp +SELECT SQLNET::String_Substring('Name: Felica Walker', 6, 13) +``` + +# String_Substring4k + +It is equivalent to `String_Substring` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +String_Substring4k ( + @source NVARCHAR (4000), + @startIndex INT, + @length INT + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::String_Substring('Name: Felica Walker', 6, 13) +``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string.md b/docs2/pages/documentations/string/string.md index 4869100..6e501fe 100644 --- a/docs2/pages/documentations/string/string.md +++ b/docs2/pages/documentations/string/string.md @@ -39,3 +39,4 @@ Represents text as a sequence of UTF-16 code units. | [String_Split(source, delimStr)](/string-split) | Returns a string array that contains the substrings in this instance that are delimited by elements of a specified string. | [Try it]()| | [String_SplitRemoveEmptyEntries(source, delimStr)](/string-split-remove-empty-entries) | Returns a string array that contains the substrings in this instance that are delimited by elements of a specified string and remove elements that contain an empty string. | [Try it]()| | [String_StartsWith(source, target)](/string-startswith) | Determines whether the beginning of this string instance matches a specified string. | [Try it]()| +| [String_Substring(source, startIndex, length)](/string-startswith) | Returns a substring from the `source` string starting at a specified character position and has a specified length. | [Try it]()| From d8282d39e8851aede90d10224f14c7ed94b91eaf Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Fri, 30 Nov 2018 21:41:54 +0500 Subject: [PATCH 006/118] Added string tolower article --- .../documentations/string/string-tolower.md | 41 +++++++++++++++++++ docs2/pages/documentations/string/string.md | 3 +- 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 docs2/pages/documentations/string/string-tolower.md diff --git a/docs2/pages/documentations/string/string-tolower.md b/docs2/pages/documentations/string/string-tolower.md new file mode 100644 index 0000000..7fbe511 --- /dev/null +++ b/docs2/pages/documentations/string/string-tolower.md @@ -0,0 +1,41 @@ +# String_ToLower + +`String_ToLower` returns a copy of this string converted to lowercase. + +```csharp +String_ToLower ( + @source NVARCHAR (MAX) + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **source**: The source string. + +## Returns + +A string in lowercase. + +## Example + +```csharp +SELECT SQLNET::String_ToLower('Felica Walker') +``` + +# String_ToLower4k + +It is equivalent to `String_ToLower` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +String_ToLower4k ( + @source NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::String_ToLower('Felica Walker') +``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string.md b/docs2/pages/documentations/string/string.md index 6e501fe..4429751 100644 --- a/docs2/pages/documentations/string/string.md +++ b/docs2/pages/documentations/string/string.md @@ -39,4 +39,5 @@ Represents text as a sequence of UTF-16 code units. | [String_Split(source, delimStr)](/string-split) | Returns a string array that contains the substrings in this instance that are delimited by elements of a specified string. | [Try it]()| | [String_SplitRemoveEmptyEntries(source, delimStr)](/string-split-remove-empty-entries) | Returns a string array that contains the substrings in this instance that are delimited by elements of a specified string and remove elements that contain an empty string. | [Try it]()| | [String_StartsWith(source, target)](/string-startswith) | Determines whether the beginning of this string instance matches a specified string. | [Try it]()| -| [String_Substring(source, startIndex, length)](/string-startswith) | Returns a substring from the `source` string starting at a specified character position and has a specified length. | [Try it]()| +| [String_Substring(source, startIndex, length)](/string-substring) | Returns a substring from the `source` string starting at a specified character position and has a specified length. | [Try it]()| +| [String_ToLower(source)](/string-tolower) | Returns a copy of this string converted to lowercase. | [Try it]()| From 0905f5d33c7620b2fdb16c5fa9a9efa99c995524 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sat, 1 Dec 2018 16:49:39 +0500 Subject: [PATCH 007/118] Added String ToLowerInvariant article --- .../string/string-tolower-invariant.md | 41 +++++++++++++++++++ .../documentations/string/string-tolower.md | 2 +- docs2/pages/documentations/string/string.md | 1 + 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 docs2/pages/documentations/string/string-tolower-invariant.md diff --git a/docs2/pages/documentations/string/string-tolower-invariant.md b/docs2/pages/documentations/string/string-tolower-invariant.md new file mode 100644 index 0000000..1135ae5 --- /dev/null +++ b/docs2/pages/documentations/string/string-tolower-invariant.md @@ -0,0 +1,41 @@ +# String_ToLowerInvariant + +`String_ToLowerInvariant` returns a copy of the `source` string converted to lowercase using the casing rules of the invariant culture. + +```csharp +String_ToLowerInvariant ( + @source NVARCHAR (MAX) + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **source**: The source string. + +## Returns + +A string in lowercase. + +## Example + +```csharp +SELECT SQLNET::String_ToLowerInvariant('Felica Walker') +``` + +# String_ToLowerInvariant4k + +It is equivalent to `String_ToLowerInvariant` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +String_ToLowerInvariant4k ( + @source NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::String_ToLowerInvariant('Felica Walker') +``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-tolower.md b/docs2/pages/documentations/string/string-tolower.md index 7fbe511..350c06e 100644 --- a/docs2/pages/documentations/string/string-tolower.md +++ b/docs2/pages/documentations/string/string-tolower.md @@ -1,6 +1,6 @@ # String_ToLower -`String_ToLower` returns a copy of this string converted to lowercase. +`String_ToLower` returns a copy of the `source` string converted to lowercase. ```csharp String_ToLower ( diff --git a/docs2/pages/documentations/string/string.md b/docs2/pages/documentations/string/string.md index 4429751..5e14a16 100644 --- a/docs2/pages/documentations/string/string.md +++ b/docs2/pages/documentations/string/string.md @@ -41,3 +41,4 @@ Represents text as a sequence of UTF-16 code units. | [String_StartsWith(source, target)](/string-startswith) | Determines whether the beginning of this string instance matches a specified string. | [Try it]()| | [String_Substring(source, startIndex, length)](/string-substring) | Returns a substring from the `source` string starting at a specified character position and has a specified length. | [Try it]()| | [String_ToLower(source)](/string-tolower) | Returns a copy of this string converted to lowercase. | [Try it]()| +| [String_ToLowerInvariant(source)](/string-tolower-invariant) | Returns a copy of this string converted to lowercase using the casing rules of the invariant culture. | [Try it]()| From 44baf470c3d0838349cf6456fc2c36d5428ae29e Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sat, 1 Dec 2018 18:06:02 +0500 Subject: [PATCH 008/118] Added String ToTitleCase article --- .../documentations/string/string-substring.md | 2 +- .../string/string-tolower-invariant.md | 2 +- .../documentations/string/string-tolower.md | 2 +- .../string/string-totitle-case.md | 43 +++++++++++++++++++ docs2/pages/documentations/string/string.md | 1 + 5 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 docs2/pages/documentations/string/string-totitle-case.md diff --git a/docs2/pages/documentations/string/string-substring.md b/docs2/pages/documentations/string/string-substring.md index 0f30082..dd300e2 100644 --- a/docs2/pages/documentations/string/string-substring.md +++ b/docs2/pages/documentations/string/string-substring.md @@ -43,5 +43,5 @@ RETURNS NVARCHAR (4000) ## Example ```csharp -SELECT SQLNET::String_Substring('Name: Felica Walker', 6, 13) +SELECT SQLNET::String_Substring4k('Name: Felica Walker', 6, 13) ``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-tolower-invariant.md b/docs2/pages/documentations/string/string-tolower-invariant.md index 1135ae5..a51a29e 100644 --- a/docs2/pages/documentations/string/string-tolower-invariant.md +++ b/docs2/pages/documentations/string/string-tolower-invariant.md @@ -37,5 +37,5 @@ RETURNS NVARCHAR (4000) ## Example ```csharp -SELECT SQLNET::String_ToLowerInvariant('Felica Walker') +SELECT SQLNET::String_ToLowerInvariant4k('Felica Walker') ``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-tolower.md b/docs2/pages/documentations/string/string-tolower.md index 350c06e..122be38 100644 --- a/docs2/pages/documentations/string/string-tolower.md +++ b/docs2/pages/documentations/string/string-tolower.md @@ -37,5 +37,5 @@ RETURNS NVARCHAR (4000) ## Example ```csharp -SELECT SQLNET::String_ToLower('Felica Walker') +SELECT SQLNET::String_ToLower4k('Felica Walker') ``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-totitle-case.md b/docs2/pages/documentations/string/string-totitle-case.md new file mode 100644 index 0000000..ae3e267 --- /dev/null +++ b/docs2/pages/documentations/string/string-totitle-case.md @@ -0,0 +1,43 @@ +# String_ToTitleCase + +`String_ToTitleCase` returns a converted string to title case (except for words that are entirely in uppercase, which are considered to be acronyms). + +```csharp +String_ToTitleCase ( + @source NVARCHAR (MAX) + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **source**: The source string. + +## Returns + +The string converted to title case. + +## Example + +```csharp +SELECT SQLNET::String_ToTitleCase('wAr aNd pEaCe') +SELECT SQLNET::String_ToTitleCase('UNICEF and children') +``` + +# String_ToTitleCase4k + +It is equivalent to `String_ToTitleCase` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +String_ToTitleCase4k ( + @source NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::String_ToTitleCase4k('wAr aNd pEaCe') +SELECT SQLNET::String_ToTitleCase4k('UNICEF and children') +``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string.md b/docs2/pages/documentations/string/string.md index 5e14a16..4f08eaa 100644 --- a/docs2/pages/documentations/string/string.md +++ b/docs2/pages/documentations/string/string.md @@ -42,3 +42,4 @@ Represents text as a sequence of UTF-16 code units. | [String_Substring(source, startIndex, length)](/string-substring) | Returns a substring from the `source` string starting at a specified character position and has a specified length. | [Try it]()| | [String_ToLower(source)](/string-tolower) | Returns a copy of this string converted to lowercase. | [Try it]()| | [String_ToLowerInvariant(source)](/string-tolower-invariant) | Returns a copy of this string converted to lowercase using the casing rules of the invariant culture. | [Try it]()| +| [String_ToTitleCase(source)](/string-totitle-case) | Converts the specified string to title case (except for words that are entirely in uppercase, which are considered to be acronyms). | [Try it]()| From 1887ea81b19ce11a324606a718e3cad2188ffcc0 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sat, 1 Dec 2018 18:27:25 +0500 Subject: [PATCH 009/118] Added string toupper article --- .../string/string-tolower-invariant.md | 4 +- .../documentations/string/string-tolower.md | 4 +- .../documentations/string/string-toupper.md | 41 +++++++++++++++++++ docs2/pages/documentations/string/string.md | 1 + 4 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 docs2/pages/documentations/string/string-toupper.md diff --git a/docs2/pages/documentations/string/string-tolower-invariant.md b/docs2/pages/documentations/string/string-tolower-invariant.md index a51a29e..5c4c3e2 100644 --- a/docs2/pages/documentations/string/string-tolower-invariant.md +++ b/docs2/pages/documentations/string/string-tolower-invariant.md @@ -20,7 +20,7 @@ A string in lowercase. ## Example ```csharp -SELECT SQLNET::String_ToLowerInvariant('Felica Walker') +SELECT SQLNET::String_ToLowerInvariant('wAr aNd pEaCe') ``` # String_ToLowerInvariant4k @@ -37,5 +37,5 @@ RETURNS NVARCHAR (4000) ## Example ```csharp -SELECT SQLNET::String_ToLowerInvariant4k('Felica Walker') +SELECT SQLNET::String_ToLowerInvariant4k('wAr aNd pEaCe') ``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-tolower.md b/docs2/pages/documentations/string/string-tolower.md index 122be38..c825ee9 100644 --- a/docs2/pages/documentations/string/string-tolower.md +++ b/docs2/pages/documentations/string/string-tolower.md @@ -20,7 +20,7 @@ A string in lowercase. ## Example ```csharp -SELECT SQLNET::String_ToLower('Felica Walker') +SELECT SQLNET::String_ToLower('wAr aNd pEaCe') ``` # String_ToLower4k @@ -37,5 +37,5 @@ RETURNS NVARCHAR (4000) ## Example ```csharp -SELECT SQLNET::String_ToLower4k('Felica Walker') +SELECT SQLNET::String_ToLower4k('wAr aNd pEaCe') ``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-toupper.md b/docs2/pages/documentations/string/string-toupper.md new file mode 100644 index 0000000..ae3f93c --- /dev/null +++ b/docs2/pages/documentations/string/string-toupper.md @@ -0,0 +1,41 @@ +# String_ToUpper + +`String_ToUpper` returns a copy of the `source` string converted to uppercase. + +```csharp +String_ToUpper ( + @source NVARCHAR (MAX) + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **source**: The source string. + +## Returns + +A string in uppercase. + +## Example + +```csharp +SELECT SQLNET::String_ToUpper('wAr aNd pEaCe') +``` + +# String_ToUpper4k + +It is equivalent to `String_ToUpper` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +String_ToUpper4k ( + @source NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::String_ToUpper4k('wAr aNd pEaCe') +``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string.md b/docs2/pages/documentations/string/string.md index 4f08eaa..1f86f6a 100644 --- a/docs2/pages/documentations/string/string.md +++ b/docs2/pages/documentations/string/string.md @@ -43,3 +43,4 @@ Represents text as a sequence of UTF-16 code units. | [String_ToLower(source)](/string-tolower) | Returns a copy of this string converted to lowercase. | [Try it]()| | [String_ToLowerInvariant(source)](/string-tolower-invariant) | Returns a copy of this string converted to lowercase using the casing rules of the invariant culture. | [Try it]()| | [String_ToTitleCase(source)](/string-totitle-case) | Converts the specified string to title case (except for words that are entirely in uppercase, which are considered to be acronyms). | [Try it]()| +| [String_ToUpper(source)](/string-toupper) | Returns a copy of this string converted to uppercase. | [Try it]()| From 5ba0ba549a7ba89631428c9cf1490410df4882ed Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sat, 1 Dec 2018 18:42:28 +0500 Subject: [PATCH 010/118] Added string ToUpperInvariant article --- .../string/string-toupper-invariant.md | 41 +++++++++++++++++++ docs2/pages/documentations/string/string.md | 1 + 2 files changed, 42 insertions(+) create mode 100644 docs2/pages/documentations/string/string-toupper-invariant.md diff --git a/docs2/pages/documentations/string/string-toupper-invariant.md b/docs2/pages/documentations/string/string-toupper-invariant.md new file mode 100644 index 0000000..7c53715 --- /dev/null +++ b/docs2/pages/documentations/string/string-toupper-invariant.md @@ -0,0 +1,41 @@ +# String_ToUpperInvariant + +`String_ToUpperInvariant` returns a copy of the `source` string converted to uppercase using the casing rules of the invariant culture. + +```csharp +String_ToUpperInvariant ( + @source NVARCHAR (MAX) + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **source**: The source string. + +## Returns + +A string in uppercase. + +## Example + +```csharp +SELECT SQLNET::String_ToUpperInvariant('wAr aNd pEaCe') +``` + +# String_ToUpperInvariant4k + +It is equivalent to `String_ToUpperInvariant` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +String_ToUpperInvariant4k ( + @source NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::String_ToUpperInvariant4k('wAr aNd pEaCe') +``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string.md b/docs2/pages/documentations/string/string.md index 1f86f6a..39a78cc 100644 --- a/docs2/pages/documentations/string/string.md +++ b/docs2/pages/documentations/string/string.md @@ -44,3 +44,4 @@ Represents text as a sequence of UTF-16 code units. | [String_ToLowerInvariant(source)](/string-tolower-invariant) | Returns a copy of this string converted to lowercase using the casing rules of the invariant culture. | [Try it]()| | [String_ToTitleCase(source)](/string-totitle-case) | Converts the specified string to title case (except for words that are entirely in uppercase, which are considered to be acronyms). | [Try it]()| | [String_ToUpper(source)](/string-toupper) | Returns a copy of this string converted to uppercase. | [Try it]()| +| [String_ToUpperInvariant(source)](/string-tolower-invariant) | Returns a copy of this string converted to uppercase using the casing rules of the invariant culture. | [Try it]()| From 80de42565b412096f47d7adfb220b5d673cfb374 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sat, 1 Dec 2018 21:53:39 +0500 Subject: [PATCH 011/118] Added String Trim, TrimChars, TrimEnd, and TrimStart articles --- .../string-split-remove-empty-entries.md | 2 +- .../documentations/string/string-split.md | 2 +- .../documentations/string/string-trim.md | 42 +++++++++++++++++ .../documentations/string/string-trimchars.md | 45 +++++++++++++++++++ .../documentations/string/string-trimend.md | 45 +++++++++++++++++++ .../documentations/string/string-trimstart.md | 45 +++++++++++++++++++ docs2/pages/documentations/string/string.md | 4 ++ 7 files changed, 183 insertions(+), 2 deletions(-) create mode 100644 docs2/pages/documentations/string/string-trim.md create mode 100644 docs2/pages/documentations/string/string-trimchars.md create mode 100644 docs2/pages/documentations/string/string-trimend.md create mode 100644 docs2/pages/documentations/string/string-trimstart.md diff --git a/docs2/pages/documentations/string/string-split-remove-empty-entries.md b/docs2/pages/documentations/string/string-split-remove-empty-entries.md index 5998d93..5c68110 100644 --- a/docs2/pages/documentations/string/string-split-remove-empty-entries.md +++ b/docs2/pages/documentations/string/string-split-remove-empty-entries.md @@ -13,7 +13,7 @@ RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) ## Parameters - **source**: The source string. - - **delimStr**: The string to be replaced. + - **delimStr**: A string that is converted to character array that delimits the substrings in the `source` string, an empty array that contains no delimiters, or `null`. ## Returns diff --git a/docs2/pages/documentations/string/string-split.md b/docs2/pages/documentations/string/string-split.md index 7e64915..412a697 100644 --- a/docs2/pages/documentations/string/string-split.md +++ b/docs2/pages/documentations/string/string-split.md @@ -13,7 +13,7 @@ RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) ## Parameters - **source**: The source string. - - **delimStr**: The string to be replaced. + - **delimStr**: A string that is converted to character array that delimits the substrings in the `source` string, an empty array that contains no delimiters, or `null`. ## Returns diff --git a/docs2/pages/documentations/string/string-trim.md b/docs2/pages/documentations/string/string-trim.md new file mode 100644 index 0000000..7ea9d29 --- /dev/null +++ b/docs2/pages/documentations/string/string-trim.md @@ -0,0 +1,42 @@ +# String_Trim + +`String_Trim` removes all leading and trailing white-space characters from the `source` string. + +```csharp +String_Trim ( + @source NVARCHAR (MAX) + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **source**: The source string. + +## Returns + + - The string that remains after all white-space characters are removed from the start and end of the `source` string. + - If no characters can be trimmed from the `source` instance, the method returns it without any changes. + +## Example + +```csharp +SELECT SQLNET::String_Trim(' John Doe ') +``` + +# String_Trim4k + +It is equivalent to `String_Trim` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +String_Trim4k ( + @source NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::String_Trim4k(' John Doe ') +``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-trimchars.md b/docs2/pages/documentations/string/string-trimchars.md new file mode 100644 index 0000000..103a7cd --- /dev/null +++ b/docs2/pages/documentations/string/string-trimchars.md @@ -0,0 +1,45 @@ +# String_TrimChars + +`String_TrimChars` removes all leading and trailing occurrences of a set of characters specified in `charsToTrimStr` from the the `source` string. + +```csharp +String_TrimChars ( + @source NVARCHAR (MAX), + @charsToTrimStr NVARCHAR (MAX) + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **source**: The source string. + - **charsToTrimStr**: A string that is converted to an array of Unicode characters to remove, or null. + +## Returns + + - The string that remains after all white-space characters are removed from the start and end of the `source` string. + - If no characters can be trimmed from the `source` instance, the method returns it without any changes. + +## Example + +```csharp +SELECT SQLNET::String_TrimChars('*John Doe/', '*/') +``` + +# String_TrimChars4k + +It is equivalent to `String_TrimChars` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +String_TrimChars4k ( + @source NVARCHAR (4000), + @charsToTrimStr NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::String_TrimChars4k('*John Doe/', '*/') +``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-trimend.md b/docs2/pages/documentations/string/string-trimend.md new file mode 100644 index 0000000..39d4b93 --- /dev/null +++ b/docs2/pages/documentations/string/string-trimend.md @@ -0,0 +1,45 @@ +# String_TrimEnd + +`String_TrimEnd` removes all trailing occurrences of a set of characters specified in `charsToTrimStr` string from the the `source` string. + +```csharp +String_TrimEnd ( + @source NVARCHAR (MAX), + @charsToTrimStr NVARCHAR (MAX) + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **source**: The source string. + - **charsToTrimStr**: A string that is converted to an array of Unicode characters to remove, or null. + +## Returns + + - The string that remains after all white-space characters are removed from the start and end of the `source` string. + - If no characters can be trimmed from the `source` instance, the method returns it without any changes. + +## Example + +```csharp +SELECT SQLNET::String_TrimEnd('*John Doe/', '*/') +``` + +# String_TrimEnd4k + +It is equivalent to `String_TrimEnd` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +String_TrimEnd4k ( + @source NVARCHAR (4000), + @charsToTrimStr NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::String_TrimEnd4k('*John Doe/', '*/') +``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-trimstart.md b/docs2/pages/documentations/string/string-trimstart.md new file mode 100644 index 0000000..014c0d3 --- /dev/null +++ b/docs2/pages/documentations/string/string-trimstart.md @@ -0,0 +1,45 @@ +# String_TrimStart + +`String_TrimStart` removes all leading occurrences of a set of characters specified in `charsToTrimStr` from the the `source` string. + +```csharp +String_TrimStart ( + @source NVARCHAR (MAX), + @charsToTrimStr NVARCHAR (MAX) + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **source**: The source string. + - **charsToTrimStr**: A string that is converted to an array of Unicode characters to remove, or null. + +## Returns + + - The string that remains after all white-space characters are removed from the start and end of the `source` string. + - If no characters can be trimmed from the `source` instance, the method returns it without any changes. + +## Example + +```csharp +SELECT SQLNET::String_TrimStart('*John Doe/', '*/') +``` + +# String_TrimStart4k + +It is equivalent to `String_TrimStart` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +String_TrimStart4k ( + @source NVARCHAR (4000), + @charsToTrimStr NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::String_TrimStart4k('*John Doe/', '*/') +``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string.md b/docs2/pages/documentations/string/string.md index 39a78cc..e7c041c 100644 --- a/docs2/pages/documentations/string/string.md +++ b/docs2/pages/documentations/string/string.md @@ -45,3 +45,7 @@ Represents text as a sequence of UTF-16 code units. | [String_ToTitleCase(source)](/string-totitle-case) | Converts the specified string to title case (except for words that are entirely in uppercase, which are considered to be acronyms). | [Try it]()| | [String_ToUpper(source)](/string-toupper) | Returns a copy of this string converted to uppercase. | [Try it]()| | [String_ToUpperInvariant(source)](/string-tolower-invariant) | Returns a copy of this string converted to uppercase using the casing rules of the invariant culture. | [Try it]()| +| [String_Trim(source)](/string-trim) | Removes all the leading and trailing white-space characters from the `source` string. | [Try it]()| +| [String_TrimChars(source, charsToTrimStr)](/string-trimchars) | Removes all the leading and trailing occurrences of a set of characters specified in `charsToTrimStr` from the `source` string. | [Try it]()| +| [String_TrimEnd(source, charsToTrimStr)](/string-trimend) | Removes all the trailing occurrences of a set of characters specified in `charsToTrimStr` from the `source` string. | [Try it]()| +| [String_TrimStart(source, charsToTrimStr)](/string-trimstart) | Removes all the leading occurrences of a set of characters specified in `charsToTrimStr` from the `source` string. | [Try it]()| From a94234af58b60a35c47383fa3f2112d75e077dfa Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sun, 2 Dec 2018 20:55:18 +0500 Subject: [PATCH 012/118] Added Regex Escape article --- .../documentations/regex/regex-escape.md | 25 +++++++++++++++++++ docs2/pages/documentations/regex/regex.md | 7 ++++++ 2 files changed, 32 insertions(+) create mode 100644 docs2/pages/documentations/regex/regex-escape.md create mode 100644 docs2/pages/documentations/regex/regex.md diff --git a/docs2/pages/documentations/regex/regex-escape.md b/docs2/pages/documentations/regex/regex-escape.md new file mode 100644 index 0000000..0b28a60 --- /dev/null +++ b/docs2/pages/documentations/regex/regex-escape.md @@ -0,0 +1,25 @@ +# Regex_Escape + +`Regex_Escape` escapes a minimal set of characters (\, *, +, ?, |, {, [, (,), ^, $, ., #, and white space) by replacing them with their escape codes. This instructs the regular expression engine to interpret these characters literally rather than as metacharacters. + +```csharp +Regex_Escape ( + @input NVARCHAR (MAX) + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **input**: The input string that contains the text to convert. + +## Returns + +A string of characters with metacharacters converted to their escaped form. + +## Example + +```csharp +SELECT SQLNET::Regex_Escape('test(*.*)') +``` + diff --git a/docs2/pages/documentations/regex/regex.md b/docs2/pages/documentations/regex/regex.md new file mode 100644 index 0000000..84e7cfd --- /dev/null +++ b/docs2/pages/documentations/regex/regex.md @@ -0,0 +1,7 @@ +# Regex + +Represents an immutable regular expression. + +| Name | Description | Example | +| :--- | :---------- | :------ | +| [Regex_Escape(input)](/regex-escape) | Escapes a minimal set of characters by replacing them with their escape codes. | [Try it]()| From a897693058f0bf93c6b1d86c26083de14ebc613e Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 3 Dec 2018 08:25:27 +0500 Subject: [PATCH 013/118] Added Regex Index article --- .../pages/documentations/regex/regex-index.md | 44 +++++++++++++++++++ docs2/pages/documentations/regex/regex.md | 1 + 2 files changed, 45 insertions(+) create mode 100644 docs2/pages/documentations/regex/regex-index.md diff --git a/docs2/pages/documentations/regex/regex-index.md b/docs2/pages/documentations/regex/regex-index.md new file mode 100644 index 0000000..a35ae8c --- /dev/null +++ b/docs2/pages/documentations/regex/regex-index.md @@ -0,0 +1,44 @@ +# Regex_Index + +`Regex_Index` returns the position in the original string where the first character of the captured substring is found. + +```csharp +Regex_Index ( + @input NVARCHAR (MAX) + @pattern NVARCHAR (MAX) + ) +RETURNS INT +``` + +## Parameters + + - **input**: The input string that contains the text to convert. + - **pattern**: The regular expression pattern to match. + +## Returns + +The zero-based index position in the original string where the first character of the captured substring is found or -1 if it is not. + +## Example + +```csharp +SELECT SQLNET::Regex_Index('An extraordinary day dawns with each new day.', '\be\w*\b') +``` + +# Regex_Index4k + +It is equivalent to `Regex_Index` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +Regex_Index4k ( + @input NVARCHAR (4000) + @pattern NVARCHAR (4000) + ) +RETURNS INT +``` + +## Example + +```csharp +SELECT SQLNET::Regex_Index4k('An extraordinary day dawns with each new day.', '\be\w*\b') +``` diff --git a/docs2/pages/documentations/regex/regex.md b/docs2/pages/documentations/regex/regex.md index 84e7cfd..18581fa 100644 --- a/docs2/pages/documentations/regex/regex.md +++ b/docs2/pages/documentations/regex/regex.md @@ -5,3 +5,4 @@ Represents an immutable regular expression. | Name | Description | Example | | :--- | :---------- | :------ | | [Regex_Escape(input)](/regex-escape) | Escapes a minimal set of characters by replacing them with their escape codes. | [Try it]()| +| [Regex_Index(input, pattern)](/regex-index) | returns the position in the original string where the first character of the captured substring is found. | [Try it]()| From 1272aa3bc5a496de719f56ad7befcd27e6fcd909 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 3 Dec 2018 14:12:03 +0500 Subject: [PATCH 014/118] Added Regex indexop article --- .../pages/documentations/regex/regex-index.md | 4 +- .../documentations/regex/regex-indexop.md | 68 +++++++++++++++++++ docs2/pages/documentations/regex/regex.md | 3 +- 3 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 docs2/pages/documentations/regex/regex-indexop.md diff --git a/docs2/pages/documentations/regex/regex-index.md b/docs2/pages/documentations/regex/regex-index.md index a35ae8c..a3a8cc7 100644 --- a/docs2/pages/documentations/regex/regex-index.md +++ b/docs2/pages/documentations/regex/regex-index.md @@ -4,7 +4,7 @@ ```csharp Regex_Index ( - @input NVARCHAR (MAX) + @input NVARCHAR (MAX), @pattern NVARCHAR (MAX) ) RETURNS INT @@ -31,7 +31,7 @@ It is equivalent to `Regex_Index` except no NVARCHAR(MAX) parameters; it can be ```csharp Regex_Index4k ( - @input NVARCHAR (4000) + @input NVARCHAR (4000), @pattern NVARCHAR (4000) ) RETURNS INT diff --git a/docs2/pages/documentations/regex/regex-indexop.md b/docs2/pages/documentations/regex/regex-indexop.md new file mode 100644 index 0000000..a4a1766 --- /dev/null +++ b/docs2/pages/documentations/regex/regex-indexop.md @@ -0,0 +1,68 @@ +# Regex_IndexOp + +`Regex_IndexOp` returns the position in the original string where the first character of the captured substring is found using the specified matching options. + +```csharp +Regex_IndexOp ( + @input NVARCHAR (MAX), + @pattern NVARCHAR (MAX), + @options INT + ) +RETURNS INT +``` + +## Parameters + + - **input**: The input string that contains the text to convert. + - **pattern**: The regular expression pattern to match. + - **options**: A bitwise combination of the enumeration values that provide options for matching. + +### Options + +You can use any of the following options. + +| Options |Integer Value | Descritpiton | +|:----------------------|:--------------|:--------------| +|None | 0 | Specifies that no options are set. | +|IgnoreCase | 1 | Specifies case-insensitive matching. | +|Multiline | 2 | Multiline mode. Changes the meaning of ^ and $ so they match at the beginning and end, respectively, of any line, and not just the beginning and end of the entire string.| +|ExplicitCapture | 4 | Specifies that the only valid captures are explicitly named or numbered groups of the form (?…). This allows unnamed parentheses to act as noncapturing groups without the syntactic clumsiness of the expression (?:…).| +|Compiled | 8 | Specifies that the regular expression is compiled to an assembly. This yields faster execution but increases startup time. | +|Singleline | 16 | Specifies single-line mode. Changes the meaning of the dot (.) so it matches every character (instead of every character except \n).| +|IgnorePatternWhitespace| 32 | Eliminates unescaped whitespace from the pattern and enables comments marked with #. | +|RightToLeft | 64 | Specifies that the search will be from right to left instead of from left to right. | +|ECMAScript | 256 | Enables ECMAScript-compliant behavior for the expression. This value can be used only in conjunction with the `IgnoreCase`, `Multiline`, and `Compiled` values. The use of this value with any other values results in an exception.| +|CultureInvariant | 512 | Specifies that cultural differences in language are ignored. | + +You can also use more than one option by specifying the sum of their integer values. For example, to specify `IgnoreCase` and `Multiline` options, use 3 integer value and pass it as 3rd parameter. + +## Returns + +The zero-based index position in the original string where the first character of the captured substring is found or -1 if it is not. + +## Example + +```csharp +SELECT SQLNET::Regex_IndexOp('An extraordinary day dawns with each new day.', '\be\w*\b', 1) +SELECT SQLNET::Regex_IndexOp('An extraordinary day dawns with each new day.', '\be\w*\b', 3) +``` + +# Regex_IndexOp4k + +It is equivalent to `Regex_IndexOp` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +Regex_IndexOp4k ( + @input NVARCHAR (4000), + @pattern NVARCHAR (4000), + @options INT + ) +RETURNS INT +``` + +## Example + +```csharp +SELECT SQLNET::Regex_IndexOp4k('An extraordinary day dawns with each new day.', '\be\w*\b', 1) +SELECT SQLNET::Regex_IndexOp4k('An extraordinary day dawns with each new day.', '\be\w*\b', 3) +``` diff --git a/docs2/pages/documentations/regex/regex.md b/docs2/pages/documentations/regex/regex.md index 18581fa..b5f65f5 100644 --- a/docs2/pages/documentations/regex/regex.md +++ b/docs2/pages/documentations/regex/regex.md @@ -5,4 +5,5 @@ Represents an immutable regular expression. | Name | Description | Example | | :--- | :---------- | :------ | | [Regex_Escape(input)](/regex-escape) | Escapes a minimal set of characters by replacing them with their escape codes. | [Try it]()| -| [Regex_Index(input, pattern)](/regex-index) | returns the position in the original string where the first character of the captured substring is found. | [Try it]()| +| [Regex_Index(input, pattern)](/regex-index) | Returns the position in the original string where the first character of the captured substring is found. | [Try it]()| +| [Regex_IndexOp(input, pattern)](/regex-indexop) | Returns the position in the original string where the first character of the captured substring is found using the specified matching options. | [Try it]()| From 6835e5d3670cb74e5a178df5f3dd7397539e4a8d Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 3 Dec 2018 15:24:49 +0500 Subject: [PATCH 015/118] Added Regex IsMatch articles --- .../documentations/regex/regex-ismatch.md | 46 +++++++++++++ .../documentations/regex/regex-ismatchop.md | 68 +++++++++++++++++++ docs2/pages/documentations/regex/regex.md | 4 +- 3 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 docs2/pages/documentations/regex/regex-ismatch.md create mode 100644 docs2/pages/documentations/regex/regex-ismatchop.md diff --git a/docs2/pages/documentations/regex/regex-ismatch.md b/docs2/pages/documentations/regex/regex-ismatch.md new file mode 100644 index 0000000..5106de9 --- /dev/null +++ b/docs2/pages/documentations/regex/regex-ismatch.md @@ -0,0 +1,46 @@ +# Regex_IsMatch + +`Regex_IsMatch` indicates whether the specified regular expression finds a match in the specified input string. + +```csharp +Regex_IsMatch ( + @input NVARCHAR (MAX), + @pattern NVARCHAR (MAX) + ) +RETURNS BIT +``` + +## Parameters + + - **input**: The input string that contains the text to convert. + - **pattern**: The regular expression pattern to match. + +## Returns + +The zero-based index position in the original string where the first character of the captured substring is found or -1 if it is not. + +## Example + +```csharp +SELECT SQLNET::Regex_IsMatch('A08Z-931-468A', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$') +SELECT SQLNET::Regex_IsMatch('_A90-123-129X', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$') +``` + +# Regex_IsMatch4k + +It is equivalent to `Regex_IsMatch` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +Regex_IsMatch4k ( + @input NVARCHAR (4000), + @pattern NVARCHAR (4000) + ) +RETURNS BIT +``` + +## Example + +```csharp +SELECT SQLNET::Regex_IsMatch4k('A08Z-931-468A', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$') +SELECT SQLNET::Regex_IsMatch4k('_A90-123-129X', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$') +``` diff --git a/docs2/pages/documentations/regex/regex-ismatchop.md b/docs2/pages/documentations/regex/regex-ismatchop.md new file mode 100644 index 0000000..d954416 --- /dev/null +++ b/docs2/pages/documentations/regex/regex-ismatchop.md @@ -0,0 +1,68 @@ +# Regex_IsMatchOp + +`Regex_IsMatchOp` indicates whether the specified regular expression finds a match in the specified input string using the specified matching options. + +```csharp +Regex_IsMatchOp ( + @input NVARCHAR (MAX), + @pattern NVARCHAR (MAX), + @options INT + ) +RETURNS BIT +``` + +## Parameters + + - **input**: The input string that contains the text to convert. + - **pattern**: The regular expression pattern to match. + - **options**: A bitwise combination of the enumeration values that provide options for matching. + +### Options + +You can use any of the following options. + +| Options |Integer Value | Descritpiton | +|:----------------------|:--------------|:--------------| +|None | 0 | Specifies that no options are set. | +|IgnoreCase | 1 | Specifies case-insensitive matching. | +|Multiline | 2 | Multiline mode. Changes the meaning of ^ and $ so they match at the beginning and end, respectively, of any line, and not just the beginning and end of the entire string.| +|ExplicitCapture | 4 | Specifies that the only valid captures are explicitly named or numbered groups of the form (?…). This allows unnamed parentheses to act as noncapturing groups without the syntactic clumsiness of the expression (?:…).| +|Compiled | 8 | Specifies that the regular expression is compiled to an assembly. This yields faster execution but increases startup time. | +|Singleline | 16 | Specifies single-line mode. Changes the meaning of the dot (.) so it matches every character (instead of every character except \n).| +|IgnorePatternWhitespace| 32 | Eliminates unescaped whitespace from the pattern and enables comments marked with #. | +|RightToLeft | 64 | Specifies that the search will be from right to left instead of from left to right. | +|ECMAScript | 256 | Enables ECMAScript-compliant behavior for the expression. This value can be used only in conjunction with the `IgnoreCase`, `Multiline`, and `Compiled` values. The use of this value with any other values results in an exception.| +|CultureInvariant | 512 | Specifies that cultural differences in language are ignored. | + +You can also use more than one option by specifying the sum of their integer values. For example, to specify `IgnoreCase` and `Multiline` options, use 3 integer value and pass it as 3rd parameter. + +## Returns + +The zero-based index position in the original string where the first character of the captured substring is found or -1 if it is not. + +## Example + +```csharp +SELECT SQLNET::Regex_IsMatchOp('A08Z-931-468A', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$', 1) +SELECT SQLNET::Regex_IsMatchOp('_A90-123-129X', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$', 3) +``` + +# Regex_IsMatchOp4k + +It is equivalent to `Regex_IsMatchOp` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +Regex_IsMatchOp4k ( + @input NVARCHAR (4000), + @pattern NVARCHAR (4000), + @options INT + ) +RETURNS BIT +``` + +## Example + +```csharp +SELECT SQLNET::Regex_IsMatchOp4k('A08Z-931-468A', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$', 1) +SELECT SQLNET::Regex_IsMatchOp4k('_A90-123-129X', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$', 3) +``` diff --git a/docs2/pages/documentations/regex/regex.md b/docs2/pages/documentations/regex/regex.md index b5f65f5..7573f7e 100644 --- a/docs2/pages/documentations/regex/regex.md +++ b/docs2/pages/documentations/regex/regex.md @@ -6,4 +6,6 @@ Represents an immutable regular expression. | :--- | :---------- | :------ | | [Regex_Escape(input)](/regex-escape) | Escapes a minimal set of characters by replacing them with their escape codes. | [Try it]()| | [Regex_Index(input, pattern)](/regex-index) | Returns the position in the original string where the first character of the captured substring is found. | [Try it]()| -| [Regex_IndexOp(input, pattern)](/regex-indexop) | Returns the position in the original string where the first character of the captured substring is found using the specified matching options. | [Try it]()| +| [Regex_IndexOp(input, pattern, options)](/regex-indexop) | Returns the position in the original string where the first character of the captured substring is found using the specified matching options. | [Try it]()| +| [Regex_IsMatch(input, pattern)](/regex-ismatch) | Indicates whether the specified regular expression finds a match in the specified input string. | [Try it]()| +| [Regex_IsMatchOp(input, pattern, options)](/regex-ismatchop) | Indicates whether the specified regular expression finds a match in the specified input string using the specified matching options. | [Try it]()| From 44bd0410eeb8c0fe49ad64a8a3ad94f70e8c3cd5 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 3 Dec 2018 20:34:18 +0500 Subject: [PATCH 016/118] Added Regex Match article --- .../pages/documentations/regex/regex-match.md | 44 ++++++++++++ .../documentations/regex/regex-matchop.md | 68 +++++++++++++++++++ docs2/pages/documentations/regex/regex.md | 1 + 3 files changed, 113 insertions(+) create mode 100644 docs2/pages/documentations/regex/regex-match.md create mode 100644 docs2/pages/documentations/regex/regex-matchop.md diff --git a/docs2/pages/documentations/regex/regex-match.md b/docs2/pages/documentations/regex/regex-match.md new file mode 100644 index 0000000..37560fd --- /dev/null +++ b/docs2/pages/documentations/regex/regex-match.md @@ -0,0 +1,44 @@ +# Regex_Match + +`Regex_Match` searches an input string for a substring that matches a regular expression pattern and returns the first occurrence of that string. + +```csharp +Regex_Match ( + @input NVARCHAR (MAX), + @pattern NVARCHAR (MAX) + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **input**: The input string that contains the text to convert. + - **pattern**: The regular expression pattern to match. + +## Returns + +Gets the captured substring from the input string. + +## Example + +```csharp +SELECT SQLNET::Regex_Match('An extraordinary day dawns with each new day.', '\be\w*\b') +``` + +# Regex_Match4k + +It is equivalent to `Regex_Match` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +Regex_Match4k ( + @input NVARCHAR (4000), + @pattern NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::Regex_Match4k('An extraordinary day dawns with each new day.', '\be\w*\b') +``` diff --git a/docs2/pages/documentations/regex/regex-matchop.md b/docs2/pages/documentations/regex/regex-matchop.md new file mode 100644 index 0000000..f1f7217 --- /dev/null +++ b/docs2/pages/documentations/regex/regex-matchop.md @@ -0,0 +1,68 @@ +# Regex_MatchOp + +`Regex_MatchOp` searches an input string for a substring that matches a regular expression pattern and returns the first occurrence of that string using the specified matching options. + +```csharp +Regex_MatchOp ( + @input NVARCHAR (MAX), + @pattern NVARCHAR (MAX), + @options INT + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **input**: The input string that contains the text to convert. + - **pattern**: The regular expression pattern to match. + - **options**: A bitwise combination of the enumeration values that provide options for matching. + +### Options + +You can use any of the following options. + +| Options |Integer Value | Descritpiton | +|:----------------------|:--------------|:--------------| +|None | 0 | Specifies that no options are set. | +|IgnoreCase | 1 | Specifies case-insensitive matching. | +|Multiline | 2 | Multiline mode. Changes the meaning of ^ and $ so they match at the beginning and end, respectively, of any line, and not just the beginning and end of the entire string.| +|ExplicitCapture | 4 | Specifies that the only valid captures are explicitly named or numbered groups of the form (?…). This allows unnamed parentheses to act as noncapturing groups without the syntactic clumsiness of the expression (?:…).| +|Compiled | 8 | Specifies that the regular expression is compiled to an assembly. This yields faster execution but increases startup time. | +|Singleline | 16 | Specifies single-line mode. Changes the meaning of the dot (.) so it matches every character (instead of every character except \n).| +|IgnorePatternWhitespace| 32 | Eliminates unescaped whitespace from the pattern and enables comments marked with #. | +|RightToLeft | 64 | Specifies that the search will be from right to left instead of from left to right. | +|ECMAScript | 256 | Enables ECMAScript-compliant behavior for the expression. This value can be used only in conjunction with the `IgnoreCase`, `Multiline`, and `Compiled` values. The use of this value with any other values results in an exception.| +|CultureInvariant | 512 | Specifies that cultural differences in language are ignored. | + +You can also use more than one option by specifying the sum of their integer values. For example, to specify `IgnoreCase` and `Multiline` options, use 3 integer value and pass it as 3rd parameter. + +## Returns + +Gets the captured substring from the input string. + +## Example + +```csharp +SELECT SQLNET::Regex_MatchOp('An extraordinary day dawns with each new day.', '\be\w*\b', 1) +SELECT SQLNET::Regex_MatchOp('An extraordinary day dawns with each new day.', '\be\w*\b', 3) +``` + +# Regex_MatchOp4k + +It is equivalent to `Regex_MatchOp` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +Regex_MatchOp4k ( + @input NVARCHAR (4000), + @pattern NVARCHAR (4000), + @options INT + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::Regex_MatchOp4k('An extraordinary day dawns with each new day.', '\be\w*\b', 1) +SELECT SQLNET::Regex_MatchOp4k('An extraordinary day dawns with each new day.', '\be\w*\b', 3) +``` diff --git a/docs2/pages/documentations/regex/regex.md b/docs2/pages/documentations/regex/regex.md index 7573f7e..c732b7e 100644 --- a/docs2/pages/documentations/regex/regex.md +++ b/docs2/pages/documentations/regex/regex.md @@ -9,3 +9,4 @@ Represents an immutable regular expression. | [Regex_IndexOp(input, pattern, options)](/regex-indexop) | Returns the position in the original string where the first character of the captured substring is found using the specified matching options. | [Try it]()| | [Regex_IsMatch(input, pattern)](/regex-ismatch) | Indicates whether the specified regular expression finds a match in the specified input string. | [Try it]()| | [Regex_IsMatchOp(input, pattern, options)](/regex-ismatchop) | Indicates whether the specified regular expression finds a match in the specified input string using the specified matching options. | [Try it]()| +| [Regex_Match(input, pattern)](/regex-match) | searches an input string for a substring that matches a regular expression pattern and returns the first occurrence of that string. | [Try it]()| From c3af7e37103cc03cbc810a70f622e5346fee24e0 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 4 Dec 2018 08:33:19 +0500 Subject: [PATCH 017/118] Added Regex Replace articles --- .../documentations/regex/regex-replace.md | 47 +++++++++++++ .../documentations/regex/regex-replaceop.md | 69 +++++++++++++++++++ docs2/pages/documentations/regex/regex.md | 2 + 3 files changed, 118 insertions(+) create mode 100644 docs2/pages/documentations/regex/regex-replace.md create mode 100644 docs2/pages/documentations/regex/regex-replaceop.md diff --git a/docs2/pages/documentations/regex/regex-replace.md b/docs2/pages/documentations/regex/regex-replace.md new file mode 100644 index 0000000..1d90df8 --- /dev/null +++ b/docs2/pages/documentations/regex/regex-replace.md @@ -0,0 +1,47 @@ +# Regex_Replace + +`Regex_Replace` replaces all strings that match a specified regular expression with a specified replacement string. + +```csharp +Regex_Replace ( + @input NVARCHAR (MAX), + @pattern NVARCHAR (MAX), + @replacement NVARCHAR (MAX) + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **input**: The input string that contains the text to convert. + - **pattern**: The regular expression pattern to match. + - **replacement**: The replacement string. + +## Returns + +A new string that is identical to the `input` string, except that the `replacement` string takes the place of each matched string. If `pattern` is not matched in the current instance, the method returns the current instance unchanged. + +## Example + +```csharp +SELECT SQLNET::Regex_Replace('Dot Net Not Perls', 'N.t', 'NET') +``` + +# Regex_Replace4k + +It is equivalent to `Regex_Replace` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +Regex_Replace4k ( + @input NVARCHAR (4000), + @pattern NVARCHAR (4000), + @replacement NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::Regex_Replace4k('Dot Net Not Perls', 'N.t', 'NET') +``` diff --git a/docs2/pages/documentations/regex/regex-replaceop.md b/docs2/pages/documentations/regex/regex-replaceop.md new file mode 100644 index 0000000..720f40f --- /dev/null +++ b/docs2/pages/documentations/regex/regex-replaceop.md @@ -0,0 +1,69 @@ +# Regex_ReplaceOp + +`Regex_ReplaceOp` replaces all strings that match a specified regular expression with a specified replacement string using the specified matching options. + +```csharp +Regex_ReplaceOp ( + @input NVARCHAR (MAX), + @pattern NVARCHAR (MAX), + @replacement NVARCHAR (MAX), + @options INT + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **input**: The input string that contains the text to convert. + - **pattern**: The regular expression pattern to match. + - **replacement**: The replacement string. + - **options**: A bitwise combination of the enumeration values that provide options for matching. + +### Options + +You can use any of the following options. + +| Options |Integer Value | Descritpiton | +|:----------------------|:--------------|:--------------| +|None | 0 | Specifies that no options are set. | +|IgnoreCase | 1 | Specifies case-insensitive matching. | +|Multiline | 2 | Multiline mode. Changes the meaning of ^ and $ so they match at the beginning and end, respectively, of any line, and not just the beginning and end of the entire string.| +|ExplicitCapture | 4 | Specifies that the only valid captures are explicitly named or numbered groups of the form (?…). This allows unnamed parentheses to act as noncapturing groups without the syntactic clumsiness of the expression (?:…).| +|Compiled | 8 | Specifies that the regular expression is compiled to an assembly. This yields faster execution but increases startup time. | +|Singleline | 16 | Specifies single-line mode. Changes the meaning of the dot (.) so it matches every character (instead of every character except \n).| +|IgnorePatternWhitespace| 32 | Eliminates unescaped whitespace from the pattern and enables comments marked with #. | +|RightToLeft | 64 | Specifies that the search will be from right to left instead of from left to right. | +|ECMAScript | 256 | Enables ECMAScript-compliant behavior for the expression. This value can be used only in conjunction with the `IgnoreCase`, `Multiline`, and `Compiled` values. The use of this value with any other values results in an exception.| +|CultureInvariant | 512 | Specifies that cultural differences in language are ignored. | + +You can also use more than one option by specifying the sum of their integer values. For example, to specify `IgnoreCase` and `Multiline` options, use 3 integer value and pass it as 3rd parameter. + +## Returns + +The zero-based index position in the original string where the first character of the captured substring is found or -1 if it is not. + +## Example + +```csharp +SELECT SQLNET::Regex_ReplaceOp('Dot Net Not Perls', 'N.t', 'NET', 1) +``` + +# Regex_ReplaceOp4k + +It is equivalent to `Regex_ReplaceOp` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +Regex_ReplaceOp4k ( + @input NVARCHAR (4000), + @pattern NVARCHAR (4000), + @replacement NVARCHAR (4000), + @options INT + ) +RETURNS NVARCHAR (4000) +``` + +## Example + +```csharp +SELECT SQLNET::Regex_ReplaceOp4k(''Dot Net Not Perls', 'N.t', 'NET', 1) +``` diff --git a/docs2/pages/documentations/regex/regex.md b/docs2/pages/documentations/regex/regex.md index c732b7e..a6a63c3 100644 --- a/docs2/pages/documentations/regex/regex.md +++ b/docs2/pages/documentations/regex/regex.md @@ -10,3 +10,5 @@ Represents an immutable regular expression. | [Regex_IsMatch(input, pattern)](/regex-ismatch) | Indicates whether the specified regular expression finds a match in the specified input string. | [Try it]()| | [Regex_IsMatchOp(input, pattern, options)](/regex-ismatchop) | Indicates whether the specified regular expression finds a match in the specified input string using the specified matching options. | [Try it]()| | [Regex_Match(input, pattern)](/regex-match) | searches an input string for a substring that matches a regular expression pattern and returns the first occurrence of that string. | [Try it]()| +| [Regex_Replace(input, pattern, replacement)](/regex-replace) | Replaces all strings that match a specified regular expression with a specified replacement string. | [Try it]()| +| [Regex_ReplaceOp(input, pattern, replacement, options)](/regex-replaceop) | Replaces all strings that match a specified regular expression with a specified replacement string using the specified matching options. | [Try it]()| From a90070cab7644637be94083252c53429c30a85cc Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 4 Dec 2018 08:51:22 +0500 Subject: [PATCH 018/118] Updated Regex methods summary page --- docs2/pages/documentations/regex/regex.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs2/pages/documentations/regex/regex.md b/docs2/pages/documentations/regex/regex.md index a6a63c3..104f9bd 100644 --- a/docs2/pages/documentations/regex/regex.md +++ b/docs2/pages/documentations/regex/regex.md @@ -9,6 +9,7 @@ Represents an immutable regular expression. | [Regex_IndexOp(input, pattern, options)](/regex-indexop) | Returns the position in the original string where the first character of the captured substring is found using the specified matching options. | [Try it]()| | [Regex_IsMatch(input, pattern)](/regex-ismatch) | Indicates whether the specified regular expression finds a match in the specified input string. | [Try it]()| | [Regex_IsMatchOp(input, pattern, options)](/regex-ismatchop) | Indicates whether the specified regular expression finds a match in the specified input string using the specified matching options. | [Try it]()| -| [Regex_Match(input, pattern)](/regex-match) | searches an input string for a substring that matches a regular expression pattern and returns the first occurrence of that string. | [Try it]()| +| [Regex_Match(input, pattern)](/regex-match) | Searches an input string for a substring that matches a regular expression pattern and returns the first occurrence of that string. | [Try it]()| +| [Regex_MatchOp(input, pattern, options)](/regex-matchop) | Searches an input string for a substring that matches a regular expression pattern and returns the first occurrence of that string using the specified matching options. | [Try it]()| | [Regex_Replace(input, pattern, replacement)](/regex-replace) | Replaces all strings that match a specified regular expression with a specified replacement string. | [Try it]()| | [Regex_ReplaceOp(input, pattern, replacement, options)](/regex-replaceop) | Replaces all strings that match a specified regular expression with a specified replacement string using the specified matching options. | [Try it]()| From a7ab9c99658e418d17142fd7c019c0e616f6642a Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 4 Dec 2018 12:31:13 +0500 Subject: [PATCH 019/118] Added Regex Split articles --- .../pages/documentations/regex/regex-split.md | 44 +++++++++++++ .../documentations/regex/regex-splitop.md | 66 +++++++++++++++++++ docs2/pages/documentations/regex/regex.md | 2 + 3 files changed, 112 insertions(+) create mode 100644 docs2/pages/documentations/regex/regex-split.md create mode 100644 docs2/pages/documentations/regex/regex-splitop.md diff --git a/docs2/pages/documentations/regex/regex-split.md b/docs2/pages/documentations/regex/regex-split.md new file mode 100644 index 0000000..2625755 --- /dev/null +++ b/docs2/pages/documentations/regex/regex-split.md @@ -0,0 +1,44 @@ +# Regex_Split + +`Regex_Split` splits an input string into an array of substrings at the positions defined by a regular expression pattern. + +```csharp +Regex_Split ( + @input NVARCHAR (MAX), + @pattern NVARCHAR (MAX) + ) +RETURNS TABLE (Match NVARCHAR (MAX) NULL) +``` + +## Parameters + + - **input**: The input string that contains the text to convert. + - **pattern**: The regular expression pattern to match. + +## Returns + +An array of strings. + +## Example + +```csharp +SELECT * FROM Regex_Split('plum--pear', '-') +``` + +# Regex_Split4k + +It is equivalent to `Regex_Split` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +Regex_Split4k ( + @input NVARCHAR (4000), + @pattern NVARCHAR (4000) + ) +RETURNS TABLE (Match NVARCHAR (4000) NULL) +``` + +## Example + +```csharp +SELECT * FROM Regex_Split4k('plum--pear', '-') +``` diff --git a/docs2/pages/documentations/regex/regex-splitop.md b/docs2/pages/documentations/regex/regex-splitop.md new file mode 100644 index 0000000..0637b4c --- /dev/null +++ b/docs2/pages/documentations/regex/regex-splitop.md @@ -0,0 +1,66 @@ +# Regex_SplitOp + +`Regex_SplitOp` splits an input string into an array of substrings at the positions defined by a regular expression pattern using the specified matching options. + +```csharp +Regex_SplitOp ( + @input NVARCHAR (MAX), + @pattern NVARCHAR (MAX), + @options INT + ) +RETURNS TABLE (Match NVARCHAR (MAX) NULL) +``` + +## Parameters + + - **input**: The input string that contains the text to convert. + - **pattern**: The regular expression pattern to match. + - **options**: A bitwise combination of the enumeration values that provide options for matching. + +### Options + +An array of strings. + +| Options |Integer Value | Descritpiton | +|:----------------------|:--------------|:--------------| +|None | 0 | Specifies that no options are set. | +|IgnoreCase | 1 | Specifies case-insensitive matching. | +|Multiline | 2 | Multiline mode. Changes the meaning of ^ and $ so they match at the beginning and end, respectively, of any line, and not just the beginning and end of the entire string.| +|ExplicitCapture | 4 | Specifies that the only valid captures are explicitly named or numbered groups of the form (?…). This allows unnamed parentheses to act as noncapturing groups without the syntactic clumsiness of the expression (?:…).| +|Compiled | 8 | Specifies that the regular expression is compiled to an assembly. This yields faster execution but increases startup time. | +|Singleline | 16 | Specifies single-line mode. Changes the meaning of the dot (.) so it matches every character (instead of every character except \n).| +|IgnorePatternWhitespace| 32 | Eliminates unescaped whitespace from the pattern and enables comments marked with #. | +|RightToLeft | 64 | Specifies that the search will be from right to left instead of from left to right. | +|ECMAScript | 256 | Enables ECMAScript-compliant behavior for the expression. This value can be used only in conjunction with the `IgnoreCase`, `Multiline`, and `Compiled` values. The use of this value with any other values results in an exception.| +|CultureInvariant | 512 | Specifies that cultural differences in language are ignored. | + +You can also use more than one option by specifying the sum of their integer values. For example, to specify `IgnoreCase` and `Multiline` options, use 3 integer value and pass it as 3rd parameter. + +## Returns + +Gets the captured substring from the input string. + +## Example + +```csharp +SELECT * FROM Regex_Split('plum--pear', '-', 1) +``` + +# Regex_SplitOp4k + +It is equivalent to `Regex_SplitOp` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. + +```csharp +Regex_SplitOp4k ( + @input NVARCHAR (4000), + @pattern NVARCHAR (4000), + @options INT + ) +RETURNS TABLE (Match NVARCHAR (MAX) NULL) +``` + +## Example + +```csharp +SELECT * FROM Regex_Split4k('plum--pear', '-', 1) +``` diff --git a/docs2/pages/documentations/regex/regex.md b/docs2/pages/documentations/regex/regex.md index 104f9bd..0c36353 100644 --- a/docs2/pages/documentations/regex/regex.md +++ b/docs2/pages/documentations/regex/regex.md @@ -13,3 +13,5 @@ Represents an immutable regular expression. | [Regex_MatchOp(input, pattern, options)](/regex-matchop) | Searches an input string for a substring that matches a regular expression pattern and returns the first occurrence of that string using the specified matching options. | [Try it]()| | [Regex_Replace(input, pattern, replacement)](/regex-replace) | Replaces all strings that match a specified regular expression with a specified replacement string. | [Try it]()| | [Regex_ReplaceOp(input, pattern, replacement, options)](/regex-replaceop) | Replaces all strings that match a specified regular expression with a specified replacement string using the specified matching options. | [Try it]()| +| [Regex_Split(input, pattern, replacement)](/regex-split) | Splits an input string into an array of substrings at the positions defined by a regular expression pattern. | [Try it]()| +| [Regex_SplitOp(input, pattern, replacement, options)](/regex-splitop) | Splits an input string into an array of substrings at the positions defined by a regular expression pattern using the specified matching options. | [Try it]()| From 6f84d6743909ae0e6cab12ed46f77eb4acd17ebb Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 4 Dec 2018 14:58:12 +0500 Subject: [PATCH 020/118] Added Convert ToBoolean article --- .../convert/convert-toboolean.md | 25 +++++++++++++++++++ docs2/pages/documentations/convert/convert.md | 7 ++++++ 2 files changed, 32 insertions(+) create mode 100644 docs2/pages/documentations/convert/convert-toboolean.md create mode 100644 docs2/pages/documentations/convert/convert.md diff --git a/docs2/pages/documentations/convert/convert-toboolean.md b/docs2/pages/documentations/convert/convert-toboolean.md new file mode 100644 index 0000000..9984945 --- /dev/null +++ b/docs2/pages/documentations/convert/convert-toboolean.md @@ -0,0 +1,25 @@ +# Convert_ToBoolean + +`Convert_ToBoolean` converts the specified string representation of a logical value to its Boolean equivalent. +```csharp +Convert_ToBoolean ( + @value NVARCHAR (MAX) + ) +RETURNS BIT +``` + +## Parameters + + - **value**: A string that contains the value of either `TrueString` or `FalseString`. + +## Returns + +`true` if `value` equals `TrueString`, or false if `value` equals `FalseString` or `null`. + +## Example + +```csharp +SELECT SQLNET::Convert_ToBoolean('false') +SELECT SQLNET::Convert_ToBoolean('true') +``` + diff --git a/docs2/pages/documentations/convert/convert.md b/docs2/pages/documentations/convert/convert.md new file mode 100644 index 0000000..e7717f6 --- /dev/null +++ b/docs2/pages/documentations/convert/convert.md @@ -0,0 +1,7 @@ +# Convert + +Converts a string to another base data type. + +| Name | Description | Example | +| :--- | :---------- | :------ | +| [Convert_ToBoolean(value)](/convert-toboolean) | Converts the specified string representation of a logical value to its Boolean equivalent. | [Try it]()| From 487863615e955f15acc3a7d270537d9b895d24b5 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 4 Dec 2018 18:12:35 +0500 Subject: [PATCH 021/118] Added Convert-ToByte article --- .../documentations/convert/convert-tobyte.md | 25 +++++++++++++++++++ docs2/pages/documentations/convert/convert.md | 2 ++ 2 files changed, 27 insertions(+) create mode 100644 docs2/pages/documentations/convert/convert-tobyte.md diff --git a/docs2/pages/documentations/convert/convert-tobyte.md b/docs2/pages/documentations/convert/convert-tobyte.md new file mode 100644 index 0000000..81b2334 --- /dev/null +++ b/docs2/pages/documentations/convert/convert-tobyte.md @@ -0,0 +1,25 @@ +# Convert_ToByte + +`Convert_ToByte` converts the specified string representation of a number to an equivalent 8-bit unsigned integer. +```csharp +Convert_ToByte ( + @value NVARCHAR (MAX) + ) +RETURNS TINYINT +``` + +## Parameters + + - **value**: A string that contains the number to convert. + +## Returns + +An 8-bit unsigned integer that is equivalent to `value`, or `zero` if `value` is `null`. + +## Example + +```csharp +SELECT SQLNET::Convert_ToByte('3') +SELECT SQLNET::Convert_ToByte('136') +``` + diff --git a/docs2/pages/documentations/convert/convert.md b/docs2/pages/documentations/convert/convert.md index e7717f6..0d8993d 100644 --- a/docs2/pages/documentations/convert/convert.md +++ b/docs2/pages/documentations/convert/convert.md @@ -5,3 +5,5 @@ Converts a string to another base data type. | Name | Description | Example | | :--- | :---------- | :------ | | [Convert_ToBoolean(value)](/convert-toboolean) | Converts the specified string representation of a logical value to its Boolean equivalent. | [Try it]()| +| [Convert_ToByte(value)](/convert-tobyte) | Converts the specified string representation of a number to an equivalent 8-bit unsigned integer. | [Try it]()| +| \ No newline at end of file From ad266c020a919c5fc8aafd40681878ec40172a60 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 4 Dec 2018 18:13:11 +0500 Subject: [PATCH 022/118] Added Convert ToDateTime article --- .../convert/convert-todatetime.md | 24 +++++++++++++++++++ docs2/pages/documentations/convert/convert.md | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 docs2/pages/documentations/convert/convert-todatetime.md diff --git a/docs2/pages/documentations/convert/convert-todatetime.md b/docs2/pages/documentations/convert/convert-todatetime.md new file mode 100644 index 0000000..bc420ba --- /dev/null +++ b/docs2/pages/documentations/convert/convert-todatetime.md @@ -0,0 +1,24 @@ +# Convert_ToDateTime + +`Convert_ToDateTime` converts the specified string representation of a date and time to an equivalent date and time value. + +```csharp +Convert_ToDateTime ( + @value NVARCHAR (MAX) + ) +RETURNS TINYINT +``` + +## Parameters + + - **value**: The string representation of a date and time. + +## Returns + +The date and time equivalent of the value of `value`, or the date and time equivalent of `MinValue` if `value` is null. + +## Example + +```csharp +SELECT SQLNET::Convert_ToDateTime('2015-12-27') +``` diff --git a/docs2/pages/documentations/convert/convert.md b/docs2/pages/documentations/convert/convert.md index 0d8993d..c5ac571 100644 --- a/docs2/pages/documentations/convert/convert.md +++ b/docs2/pages/documentations/convert/convert.md @@ -6,4 +6,4 @@ Converts a string to another base data type. | :--- | :---------- | :------ | | [Convert_ToBoolean(value)](/convert-toboolean) | Converts the specified string representation of a logical value to its Boolean equivalent. | [Try it]()| | [Convert_ToByte(value)](/convert-tobyte) | Converts the specified string representation of a number to an equivalent 8-bit unsigned integer. | [Try it]()| -| \ No newline at end of file +| [Convert_ToDateTime(value)](/convert-todatetime) | Converts the specified string representation of a date and time to an equivalent date and time value. | [Try it]()| From 77131554c7aba2b71d418921f4750fb59c0b6c06 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 4 Dec 2018 18:32:45 +0500 Subject: [PATCH 023/118] Added Convert-ToDecimal article --- .../convert/convert-todatetime.md | 2 +- .../convert/convert-todecimal.md | 24 +++++++++++++++++++ docs2/pages/documentations/convert/convert.md | 1 + 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 docs2/pages/documentations/convert/convert-todecimal.md diff --git a/docs2/pages/documentations/convert/convert-todatetime.md b/docs2/pages/documentations/convert/convert-todatetime.md index bc420ba..039ba86 100644 --- a/docs2/pages/documentations/convert/convert-todatetime.md +++ b/docs2/pages/documentations/convert/convert-todatetime.md @@ -6,7 +6,7 @@ Convert_ToDateTime ( @value NVARCHAR (MAX) ) -RETURNS TINYINT +RETURNS DATETIME ``` ## Parameters diff --git a/docs2/pages/documentations/convert/convert-todecimal.md b/docs2/pages/documentations/convert/convert-todecimal.md new file mode 100644 index 0000000..d7807e5 --- /dev/null +++ b/docs2/pages/documentations/convert/convert-todecimal.md @@ -0,0 +1,24 @@ +# Convert_ToDecimal + +`Convert_ToDecimal` converts the specified string representation of a number to an equivalent decimal number. + +```csharp +Convert_ToDecimal ( + @value NVARCHAR (MAX) + ) +RETURNS NUMERIC (18) +``` + +## Parameters + + - **value**: A string that contains a number to convert. + +## Returns + +A decimal number that is equivalent to the number in `value`, or 0 (zero) if `value` is `null`. + +## Example + +```csharp +SELECT SQLNET::Convert_ToDecimal('2015-12-27') +``` diff --git a/docs2/pages/documentations/convert/convert.md b/docs2/pages/documentations/convert/convert.md index c5ac571..694ed96 100644 --- a/docs2/pages/documentations/convert/convert.md +++ b/docs2/pages/documentations/convert/convert.md @@ -7,3 +7,4 @@ Converts a string to another base data type. | [Convert_ToBoolean(value)](/convert-toboolean) | Converts the specified string representation of a logical value to its Boolean equivalent. | [Try it]()| | [Convert_ToByte(value)](/convert-tobyte) | Converts the specified string representation of a number to an equivalent 8-bit unsigned integer. | [Try it]()| | [Convert_ToDateTime(value)](/convert-todatetime) | Converts the specified string representation of a date and time to an equivalent date and time value. | [Try it]()| +| [Convert_ToDecimal(value)](/convert-todecimal) | Converts the specified string representation of a date and time to an equivalent decimal value. | [Try it]()| From 52d0a1add3adce5059e0861940c569c77ec5d1ba Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 4 Dec 2018 18:45:57 +0500 Subject: [PATCH 024/118] Added Convert-ToDouble article --- .../convert/convert-todouble.md | 25 +++++++++++++++++++ docs2/pages/documentations/convert/convert.md | 1 + 2 files changed, 26 insertions(+) create mode 100644 docs2/pages/documentations/convert/convert-todouble.md diff --git a/docs2/pages/documentations/convert/convert-todouble.md b/docs2/pages/documentations/convert/convert-todouble.md new file mode 100644 index 0000000..7f51339 --- /dev/null +++ b/docs2/pages/documentations/convert/convert-todouble.md @@ -0,0 +1,25 @@ +# Convert_ToDouble + +`Convert_ToDouble` converts the specified string representation of a number to an equivalent double-precision floating-point number. + +```csharp +Convert_ToDouble ( + @value NVARCHAR (MAX) + ) +RETURNS FLOAT (53) +``` + +## Parameters + + - **value**: A string that contains the number to convert. + +## Returns + +A double-precision floating-point number that is equivalent to the number in `value`, or 0 (zero) if `value` is `null`. + +## Example + +```csharp +SELECT SQLNET::Convert_ToDouble('-1,035.77219') +SELECT SQLNET::Convert_ToDouble('1e-35') +``` diff --git a/docs2/pages/documentations/convert/convert.md b/docs2/pages/documentations/convert/convert.md index 694ed96..577502d 100644 --- a/docs2/pages/documentations/convert/convert.md +++ b/docs2/pages/documentations/convert/convert.md @@ -8,3 +8,4 @@ Converts a string to another base data type. | [Convert_ToByte(value)](/convert-tobyte) | Converts the specified string representation of a number to an equivalent 8-bit unsigned integer. | [Try it]()| | [Convert_ToDateTime(value)](/convert-todatetime) | Converts the specified string representation of a date and time to an equivalent date and time value. | [Try it]()| | [Convert_ToDecimal(value)](/convert-todecimal) | Converts the specified string representation of a date and time to an equivalent decimal value. | [Try it]()| +| [Convert_ToDouble(value)](/convert-todouble) | Converts the specified string representation of a number to an equivalent double-precision floating-point number. | [Try it]()| From 6bb25eca215ae49daeb55eafec9b01740a361971 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 5 Dec 2018 07:15:35 +0500 Subject: [PATCH 025/118] Added Convert-ToInt16 article --- .../documentations/convert/convert-toint16.md | 24 +++++++++++++++++++ docs2/pages/documentations/convert/convert.md | 1 + 2 files changed, 25 insertions(+) create mode 100644 docs2/pages/documentations/convert/convert-toint16.md diff --git a/docs2/pages/documentations/convert/convert-toint16.md b/docs2/pages/documentations/convert/convert-toint16.md new file mode 100644 index 0000000..0657e95 --- /dev/null +++ b/docs2/pages/documentations/convert/convert-toint16.md @@ -0,0 +1,24 @@ +# Convert_ToInt16 + +`Convert_ToInt16` converts the string representation of a number in a specified base to an equivalent 16-bit signed integer. + +```csharp +Convert_ToInt16 ( + @value NVARCHAR (MAX) + ) +RETURNS SMALLINT +``` + +## Parameters + + - **value**: A string that contains the number to convert. + +## Returns + +A 16-bit signed integer that is equivalent to the number in `value`, or 0 (zero) if `value` is `null`. + +## Example + +```csharp +SELECT SQLNET::Convert_ToInt16('251') +``` diff --git a/docs2/pages/documentations/convert/convert.md b/docs2/pages/documentations/convert/convert.md index 577502d..36212bd 100644 --- a/docs2/pages/documentations/convert/convert.md +++ b/docs2/pages/documentations/convert/convert.md @@ -9,3 +9,4 @@ Converts a string to another base data type. | [Convert_ToDateTime(value)](/convert-todatetime) | Converts the specified string representation of a date and time to an equivalent date and time value. | [Try it]()| | [Convert_ToDecimal(value)](/convert-todecimal) | Converts the specified string representation of a date and time to an equivalent decimal value. | [Try it]()| | [Convert_ToDouble(value)](/convert-todouble) | Converts the specified string representation of a number to an equivalent double-precision floating-point number. | [Try it]()| +| [Convert_ToInt16(value)](/convert-toint16) | Converts the string representation of a number in a specified base to an equivalent 16-bit signed integer. | [Try it]()| From eb73597b60741b5ef8fe6e8545bc2c920e969eda Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 5 Dec 2018 07:31:47 +0500 Subject: [PATCH 026/118] Added Convert-ToInt32 article --- docs2/pages/documentations/convert/convert-toboolean.md | 2 +- docs2/pages/documentations/convert/convert-tobyte.md | 2 +- docs2/pages/documentations/convert/convert-todatetime.md | 2 +- docs2/pages/documentations/convert/convert-todecimal.md | 2 +- docs2/pages/documentations/convert/convert-todouble.md | 2 +- docs2/pages/documentations/convert/convert-toint16.md | 2 +- docs2/pages/documentations/convert/convert.md | 1 + 7 files changed, 7 insertions(+), 6 deletions(-) diff --git a/docs2/pages/documentations/convert/convert-toboolean.md b/docs2/pages/documentations/convert/convert-toboolean.md index 9984945..28e2a73 100644 --- a/docs2/pages/documentations/convert/convert-toboolean.md +++ b/docs2/pages/documentations/convert/convert-toboolean.md @@ -14,7 +14,7 @@ RETURNS BIT ## Returns -`true` if `value` equals `TrueString`, or false if `value` equals `FalseString` or `null`. +`true` if `value` equals `TrueString`, or false if `value` equals `FalseString`. ## Example diff --git a/docs2/pages/documentations/convert/convert-tobyte.md b/docs2/pages/documentations/convert/convert-tobyte.md index 81b2334..4cbe3d0 100644 --- a/docs2/pages/documentations/convert/convert-tobyte.md +++ b/docs2/pages/documentations/convert/convert-tobyte.md @@ -14,7 +14,7 @@ RETURNS TINYINT ## Returns -An 8-bit unsigned integer that is equivalent to `value`, or `zero` if `value` is `null`. +An 8-bit unsigned integer that is equivalent to the `value`. ## Example diff --git a/docs2/pages/documentations/convert/convert-todatetime.md b/docs2/pages/documentations/convert/convert-todatetime.md index 039ba86..bd42930 100644 --- a/docs2/pages/documentations/convert/convert-todatetime.md +++ b/docs2/pages/documentations/convert/convert-todatetime.md @@ -15,7 +15,7 @@ RETURNS DATETIME ## Returns -The date and time equivalent of the value of `value`, or the date and time equivalent of `MinValue` if `value` is null. +The date and time that is equivalent to the `value`. ## Example diff --git a/docs2/pages/documentations/convert/convert-todecimal.md b/docs2/pages/documentations/convert/convert-todecimal.md index d7807e5..9a4494c 100644 --- a/docs2/pages/documentations/convert/convert-todecimal.md +++ b/docs2/pages/documentations/convert/convert-todecimal.md @@ -15,7 +15,7 @@ RETURNS NUMERIC (18) ## Returns -A decimal number that is equivalent to the number in `value`, or 0 (zero) if `value` is `null`. +A decimal number that is equivalent to the number in `value`. ## Example diff --git a/docs2/pages/documentations/convert/convert-todouble.md b/docs2/pages/documentations/convert/convert-todouble.md index 7f51339..7d69b92 100644 --- a/docs2/pages/documentations/convert/convert-todouble.md +++ b/docs2/pages/documentations/convert/convert-todouble.md @@ -15,7 +15,7 @@ RETURNS FLOAT (53) ## Returns -A double-precision floating-point number that is equivalent to the number in `value`, or 0 (zero) if `value` is `null`. +A double-precision floating-point number that is equivalent to the number in `value`. ## Example diff --git a/docs2/pages/documentations/convert/convert-toint16.md b/docs2/pages/documentations/convert/convert-toint16.md index 0657e95..ea7e85b 100644 --- a/docs2/pages/documentations/convert/convert-toint16.md +++ b/docs2/pages/documentations/convert/convert-toint16.md @@ -15,7 +15,7 @@ RETURNS SMALLINT ## Returns -A 16-bit signed integer that is equivalent to the number in `value`, or 0 (zero) if `value` is `null`. +A 16-bit signed integer that is equivalent to the number in `value`. ## Example diff --git a/docs2/pages/documentations/convert/convert.md b/docs2/pages/documentations/convert/convert.md index 36212bd..4a01880 100644 --- a/docs2/pages/documentations/convert/convert.md +++ b/docs2/pages/documentations/convert/convert.md @@ -10,3 +10,4 @@ Converts a string to another base data type. | [Convert_ToDecimal(value)](/convert-todecimal) | Converts the specified string representation of a date and time to an equivalent decimal value. | [Try it]()| | [Convert_ToDouble(value)](/convert-todouble) | Converts the specified string representation of a number to an equivalent double-precision floating-point number. | [Try it]()| | [Convert_ToInt16(value)](/convert-toint16) | Converts the string representation of a number in a specified base to an equivalent 16-bit signed integer. | [Try it]()| +| [Convert_ToInt32(value)](/convert-toint32) | Converts the specified string representation of a number to an equivalent 32-bit signed integer. | [Try it]()| From 405261556eac8e8b626a46b64a41f8ea2bd18b60 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 5 Dec 2018 07:32:20 +0500 Subject: [PATCH 027/118] Create convert-toint32.md --- .../documentations/convert/convert-toint32.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 docs2/pages/documentations/convert/convert-toint32.md diff --git a/docs2/pages/documentations/convert/convert-toint32.md b/docs2/pages/documentations/convert/convert-toint32.md new file mode 100644 index 0000000..e02fdfb --- /dev/null +++ b/docs2/pages/documentations/convert/convert-toint32.md @@ -0,0 +1,24 @@ +# Convert_ToInt32 + +`Convert_ToInt32` converts the specified string representation of a number to an equivalent 32-bit signed integer. + +```csharp +Convert_ToInt32 ( + @value NVARCHAR (MAX) + ) +RETURNS SMALLINT +``` + +## Parameters + + - **value**: A string that contains the number to convert. + +## Returns + +A 32-bit signed integer that is equivalent to the number in `value`. + +## Example + +```csharp +SELECT SQLNET::Convert_ToInt32('4285') +``` From d520cbcc15763bfe427240423b523e275f6355c5 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 5 Dec 2018 08:13:18 +0500 Subject: [PATCH 028/118] Added Convert-ToInt64 article --- .../documentations/convert/convert-toint64.md | 24 +++++++++++++++++++ docs2/pages/documentations/convert/convert.md | 1 + 2 files changed, 25 insertions(+) create mode 100644 docs2/pages/documentations/convert/convert-toint64.md diff --git a/docs2/pages/documentations/convert/convert-toint64.md b/docs2/pages/documentations/convert/convert-toint64.md new file mode 100644 index 0000000..8fc7b61 --- /dev/null +++ b/docs2/pages/documentations/convert/convert-toint64.md @@ -0,0 +1,24 @@ +# Convert_ToInt64 + +`Convert_ToInt64` converts the specified string representation of a number to an equivalent 64-bit signed integer. + +```csharp +Convert_ToInt64 ( + @value NVARCHAR (MAX) + ) +RETURNS SMALLINT +``` + +## Parameters + + - **value**: A string that contains the number to convert. + +## Returns + +A 64-bit signed integer that is equivalent to the number in `value`. + +## Example + +```csharp +SELECT SQLNET::Convert_ToInt64('854') +``` diff --git a/docs2/pages/documentations/convert/convert.md b/docs2/pages/documentations/convert/convert.md index 4a01880..37c1bea 100644 --- a/docs2/pages/documentations/convert/convert.md +++ b/docs2/pages/documentations/convert/convert.md @@ -11,3 +11,4 @@ Converts a string to another base data type. | [Convert_ToDouble(value)](/convert-todouble) | Converts the specified string representation of a number to an equivalent double-precision floating-point number. | [Try it]()| | [Convert_ToInt16(value)](/convert-toint16) | Converts the string representation of a number in a specified base to an equivalent 16-bit signed integer. | [Try it]()| | [Convert_ToInt32(value)](/convert-toint32) | Converts the specified string representation of a number to an equivalent 32-bit signed integer. | [Try it]()| +| [Convert_ToInt64(value)](/convert-toint64) | Converts the specified string representation of a number to an equivalent 64-bit signed integer. | [Try it]()| From 317d6edadcebaf19c982d6fb698e831b75661eec Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 5 Dec 2018 08:46:24 +0500 Subject: [PATCH 029/118] Added DateTime-AddDays article --- .../datetime/datetime-add-days.md | 28 +++++++++++++++++++ .../pages/documentations/datetime/datetime.md | 8 ++++++ 2 files changed, 36 insertions(+) create mode 100644 docs2/pages/documentations/datetime/datetime-add-days.md create mode 100644 docs2/pages/documentations/datetime/datetime.md diff --git a/docs2/pages/documentations/datetime/datetime-add-days.md b/docs2/pages/documentations/datetime/datetime-add-days.md new file mode 100644 index 0000000..1cf289b --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-add-days.md @@ -0,0 +1,28 @@ +# DateTime_AddDays + +`DateTime_AddDays` returns a new DateTime that adds the specified number of days to the value of `currDate`. + +```csharp +DateTime_AddDays ( + @currDate DATETIME, + @value FLOAT (53)) + ) +RETURNS DATETIME +``` + +## Parameters + + - **currDate**: The current datetime object. + - **value**: A number of whole and fractional days. The `value` parameter can be negative or positive. + +## Returns + +A new `DateTime` object whose value is the sum of the date and time represented by `currDate` and the number of days represented by `value`. + +## Example + +```csharp +SELECT SQLNET::DateTime_AddDays('2017-05-25', 4) +SELECT SQLNET::DateTime_AddDays('2018-12-01', 2.2) +``` + diff --git a/docs2/pages/documentations/datetime/datetime.md b/docs2/pages/documentations/datetime/datetime.md new file mode 100644 index 0000000..eea1032 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime.md @@ -0,0 +1,8 @@ +# DateTime + +Represents an instant in time, typically expressed as a date and time of day. + +| Name | Description | Example | +| :--- | :---------- | :------ | +| [DateTime_AddDays(currDate, value)](/datetime-add-days) | Returns a new DateTime that adds the specified number of days to the value of this instance. | [Try it]()| + From 73423a84e32e6bbbda6394d89cf332cc813b2031 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 5 Dec 2018 10:58:57 +0500 Subject: [PATCH 030/118] Added DateTime_AddMonths article --- .../datetime/datetime-add-months.md | 28 +++++++++++++++++++ .../pages/documentations/datetime/datetime.md | 1 + 2 files changed, 29 insertions(+) create mode 100644 docs2/pages/documentations/datetime/datetime-add-months.md diff --git a/docs2/pages/documentations/datetime/datetime-add-months.md b/docs2/pages/documentations/datetime/datetime-add-months.md new file mode 100644 index 0000000..59f4385 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-add-months.md @@ -0,0 +1,28 @@ +# DateTime_AddMonths + +`DateTime_AddMonths` returns a new DateTime that adds the specified number of months to the value of `currDate`. + +```csharp +DateTime_AddMonths ( + @currDate DATETIME, + @value FLOAT (53)) + ) +RETURNS DATETIME +``` + +## Parameters + + - **currDate**: The current datetime object. + - **value**: A number of months. The `value` parameter can be negative or positive. + +## Returns + +A new `DateTime` object whose value is the sum of the date and time represented by `currDate` and the number of months represented by `value`. + +## Example + +```csharp +SELECT SQLNET::DateTime_AddMonths('2017-05-25', 4) +SELECT SQLNET::DateTime_AddMonths('2018-12-01', -3) +``` + diff --git a/docs2/pages/documentations/datetime/datetime.md b/docs2/pages/documentations/datetime/datetime.md index eea1032..b7e6097 100644 --- a/docs2/pages/documentations/datetime/datetime.md +++ b/docs2/pages/documentations/datetime/datetime.md @@ -5,4 +5,5 @@ Represents an instant in time, typically expressed as a date and time of day. | Name | Description | Example | | :--- | :---------- | :------ | | [DateTime_AddDays(currDate, value)](/datetime-add-days) | Returns a new DateTime that adds the specified number of days to the value of this instance. | [Try it]()| +| [DateTime_AddMonths(currDate, value)](/datetime-add-months) | Returns a new DateTime that adds the specified number of months to the value of this instance. | [Try it]()| From e0af45c151f7f810668302087c8ae2a305f9aac5 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 5 Dec 2018 11:01:47 +0500 Subject: [PATCH 031/118] Update datetime-add-months.md --- docs2/pages/documentations/datetime/datetime-add-months.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs2/pages/documentations/datetime/datetime-add-months.md b/docs2/pages/documentations/datetime/datetime-add-months.md index 59f4385..0112090 100644 --- a/docs2/pages/documentations/datetime/datetime-add-months.md +++ b/docs2/pages/documentations/datetime/datetime-add-months.md @@ -5,7 +5,7 @@ ```csharp DateTime_AddMonths ( @currDate DATETIME, - @value FLOAT (53)) + @value INT) ) RETURNS DATETIME ``` From 4fe5d25a1634f5de7d53679dc914e5e09c0e9b1e Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 5 Dec 2018 14:27:35 +0500 Subject: [PATCH 032/118] Added DateTime-AddYears, Age, and DayOfWeek article --- .../datetime/datetime-add-years.md | 28 +++++++++++++++++++ .../documentations/datetime/datetime-age.md | 27 ++++++++++++++++++ .../datetime/datetime-dayofweek.md | 25 +++++++++++++++++ .../pages/documentations/datetime/datetime.md | 7 +++-- 4 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 docs2/pages/documentations/datetime/datetime-add-years.md create mode 100644 docs2/pages/documentations/datetime/datetime-age.md create mode 100644 docs2/pages/documentations/datetime/datetime-dayofweek.md diff --git a/docs2/pages/documentations/datetime/datetime-add-years.md b/docs2/pages/documentations/datetime/datetime-add-years.md new file mode 100644 index 0000000..4472cff --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-add-years.md @@ -0,0 +1,28 @@ +# DateTime_AddYears + +`DateTime_AddYears` returns a new DateTime that adds the specified number of years to the value of `currDate`. + +```csharp +DateTime_AddYears ( + @currDate DATETIME, + @value INT) + ) +RETURNS DATETIME +``` + +## Parameters + + - **currDate**: The current datetime object. + - **value**: A number of years. The `value` parameter can be negative or positive. + +## Returns + +A new `DateTime` object whose value is the sum of the date and time represented by `currDate` and the number of years represented by `value`. + +## Example + +```csharp +SELECT SQLNET::DateTime_AddYears('2017-05-25', 4) +SELECT SQLNET::DateTime_AddYears('2018-12-01', -3) +``` + diff --git a/docs2/pages/documentations/datetime/datetime-age.md b/docs2/pages/documentations/datetime/datetime-age.md new file mode 100644 index 0000000..862ee65 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-age.md @@ -0,0 +1,27 @@ +# DateTime_Age + +`DateTime_Age` returns an age in number of years between `startDate` and `endDate`. + +```csharp +DateTime_Age ( + @startDate DATETIME, + @endDate DATETIME + ) +RETURNS FLOAT (53) +``` + +## Parameters + + - **startDate**: The start datetime object. + - **endDate**: The end datetime object. + +## Returns + +An age in number of years between `startDate` and `endDate`. + +## Example + +```csharp +SELECT SQLNET::DateTime_Age('2002-05-25', '2018-12-01') +``` + diff --git a/docs2/pages/documentations/datetime/datetime-dayofweek.md b/docs2/pages/documentations/datetime/datetime-dayofweek.md new file mode 100644 index 0000000..7668e21 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-dayofweek.md @@ -0,0 +1,25 @@ +# DateTime_DayOfWeek + +`DateTime_DayOfWeek` returns the day of the week represented by `currDate`. + +```csharp +DateTime_DayOfWeek ( + @currDate DATETIME, + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **currDate**: The current datetime object. + +## Returns + +The day of the week represented by `currDate`. + +## Example + +```csharp +SELECT SQLNET::DateTime_DayOfWeek('2018-12-01') +``` + diff --git a/docs2/pages/documentations/datetime/datetime.md b/docs2/pages/documentations/datetime/datetime.md index b7e6097..19825a4 100644 --- a/docs2/pages/documentations/datetime/datetime.md +++ b/docs2/pages/documentations/datetime/datetime.md @@ -4,6 +4,9 @@ Represents an instant in time, typically expressed as a date and time of day. | Name | Description | Example | | :--- | :---------- | :------ | -| [DateTime_AddDays(currDate, value)](/datetime-add-days) | Returns a new DateTime that adds the specified number of days to the value of this instance. | [Try it]()| -| [DateTime_AddMonths(currDate, value)](/datetime-add-months) | Returns a new DateTime that adds the specified number of months to the value of this instance. | [Try it]()| +| [DateTime_AddDays(currDate, value)](/datetime-add-days) | Returns a new DateTime that adds the specified number of days to the `currDate`. | [Try it]()| +| [DateTime_AddMonths(currDate, value)](/datetime-add-months) | Returns a new DateTime that adds the specified number of months to the `currDate`. | [Try it]()| +| [DateTime_AddYears(currDate, value)](/datetime-add-years) | Returns a new DateTime that adds the specified number of years to the `currDate`. | [Try it]()| +| [DateTime_Age(startDate, endDate)](/datetime-age) | Returns an age in number of years between `startDate` and `endDate`. | [Try it]()| +| [DateTime_DayOfWeek(currDate)](/datetime-dayofweek) | Returns the day of the week represented by `currDate`. | [Try it]()| From 1ca1ff4761f43494c1f993e4d84ad9989e0f5e92 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 5 Dec 2018 15:22:20 +0500 Subject: [PATCH 033/118] Added DateTime DayOfYear and DaysInMonth articles --- .../datetime/datetime-dayofyear.md | 26 +++++++++++++++++ .../datetime/datetime-days-in-month.md | 28 +++++++++++++++++++ .../pages/documentations/datetime/datetime.md | 2 ++ 3 files changed, 56 insertions(+) create mode 100644 docs2/pages/documentations/datetime/datetime-dayofyear.md create mode 100644 docs2/pages/documentations/datetime/datetime-days-in-month.md diff --git a/docs2/pages/documentations/datetime/datetime-dayofyear.md b/docs2/pages/documentations/datetime/datetime-dayofyear.md new file mode 100644 index 0000000..38e170f --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-dayofyear.md @@ -0,0 +1,26 @@ +# DateTime_DayOfYear + +`DateTime_DayOfYear` returns day of the year, expressed as a value between 1 and 366 represented by `currDate`. + +```csharp +DateTime_DayOfYear ( + @currDate DATETIME, + ) +RETURNS INT +``` + +## Parameters + + - **currDate**: The current datetime object. + +## Returns + +The day of the year, expressed as a value between 1 and 366. + +## Example + +```csharp +SELECT SQLNET::DateTime_DayOfYear('2018-12-01') +SELECT SQLNET::DateTime_DayOfYear('2016-12-31') +``` + diff --git a/docs2/pages/documentations/datetime/datetime-days-in-month.md b/docs2/pages/documentations/datetime/datetime-days-in-month.md new file mode 100644 index 0000000..dbef3b3 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-days-in-month.md @@ -0,0 +1,28 @@ +# DateTime_DaysInMonth + +`DateTime_DaysInMonth` returns day of the year, expressed as a value between 1 and 366 represented by `currDate`. + +```csharp +DateTime_DaysInMonth ( + @year INT, + @month INT + ) +RETURNS INT +``` + +## Parameters + + - **year**: The year. + - **month**: The month (a number ranging from 1 to 12). + +## Returns + +The number of days in `month` for the specified `year`. + +## Example + +```csharp +SELECT SQLNET::DateTime_DaysInMonth('2018', 12) +SELECT SQLNET::DateTime_DaysInMonth('2016', 2) +``` + diff --git a/docs2/pages/documentations/datetime/datetime.md b/docs2/pages/documentations/datetime/datetime.md index 19825a4..447904c 100644 --- a/docs2/pages/documentations/datetime/datetime.md +++ b/docs2/pages/documentations/datetime/datetime.md @@ -9,4 +9,6 @@ Represents an instant in time, typically expressed as a date and time of day. | [DateTime_AddYears(currDate, value)](/datetime-add-years) | Returns a new DateTime that adds the specified number of years to the `currDate`. | [Try it]()| | [DateTime_Age(startDate, endDate)](/datetime-age) | Returns an age in number of years between `startDate` and `endDate`. | [Try it]()| | [DateTime_DayOfWeek(currDate)](/datetime-dayofweek) | Returns the day of the week represented by `currDate`. | [Try it]()| +| [DateTime_DayOfYear(currDate)](/datetime-dayofyear) | Returns the day of the year represented by `currDate`. | [Try it]()| +| [DateTime_DaysInMonth(year, month)](/datetime-days-in-month) | Returns the number of days in the specified month and year. | [Try it]()| From 4e4b7abe169e1b12014955e06fc55a38abb62078 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 5 Dec 2018 20:52:41 +0500 Subject: [PATCH 034/118] Added DateTime-FromBinary, FromFileTime, FromFileTimeUtc, and FromOADate articles --- .../datetime/datetime-from-binary.md | 27 +++++++++++++++++++ .../datetime/datetime-from-file-time-utc.md | 27 +++++++++++++++++++ .../datetime/datetime-from-file-time.md | 27 +++++++++++++++++++ .../datetime/datetime-from-oadate.md | 24 +++++++++++++++++ .../pages/documentations/datetime/datetime.md | 4 +++ 5 files changed, 109 insertions(+) create mode 100644 docs2/pages/documentations/datetime/datetime-from-binary.md create mode 100644 docs2/pages/documentations/datetime/datetime-from-file-time-utc.md create mode 100644 docs2/pages/documentations/datetime/datetime-from-file-time.md create mode 100644 docs2/pages/documentations/datetime/datetime-from-oadate.md diff --git a/docs2/pages/documentations/datetime/datetime-from-binary.md b/docs2/pages/documentations/datetime/datetime-from-binary.md new file mode 100644 index 0000000..04162af --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-from-binary.md @@ -0,0 +1,27 @@ +# DateTime_FromBinary + +`DateTime_FromBinary` deserializes a 64-bit binary value and recreates an original serialized DateTime object. + +```csharp +DateTime_FromBinary ( + @dateData BIGINT + ) +RETURNS DATETIME +``` + +## Parameters + + - **dateData**: A 64-bit signed integer that encodes the `DateTime.Kind` property in a 2-bit field and the `DateTime.Ticks` property in a 62-bit field. + +## Returns + +An object that is equivalent to the DateTime object that was serialized by the [DateTime_ToBinary()](/datetime-tobinary) method. + +## Example + +```csharp +DECLARE @var BIGINT +SELECT @var = SQLNET::DateTime_ToBinary('2015-5-25') +SELECT SQLNET::DateTime_FromBinary(@var) +``` + diff --git a/docs2/pages/documentations/datetime/datetime-from-file-time-utc.md b/docs2/pages/documentations/datetime/datetime-from-file-time-utc.md new file mode 100644 index 0000000..610a813 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-from-file-time-utc.md @@ -0,0 +1,27 @@ +# DateTime_FromFileTimeUtc + +`DateTime_FromFileTimeUtc` converts the specified Windows file time to an equivalent UTC time. + +```csharp +DateTime_FromFileTimeUtc ( + @fileTime BIGINT + ) +RETURNS DATETIME +``` + +## Parameters + + - **fileTime**: A Windows file time expressed in ticks. + +## Returns + +An object that represents the UTC time equivalent of the date and time represented by the `fileTime` parameter. + +## Example + +```csharp +DECLARE @var BIGINT +SELECT @var = SQLNET::DateTime_ToFileTimeUtc('2017-7-23') +SELECT SQLNET::DateTime_FromFileTimeUtc(@var) +``` + diff --git a/docs2/pages/documentations/datetime/datetime-from-file-time.md b/docs2/pages/documentations/datetime/datetime-from-file-time.md new file mode 100644 index 0000000..45f635e --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-from-file-time.md @@ -0,0 +1,27 @@ +# DateTime_FromFileTime + +`DateTime_FromFileTime` converts the specified Windows file time to an equivalent local time. + +```csharp +DateTime_FromFileTime ( + @fileTime BIGINT + ) +RETURNS DATETIME +``` + +## Parameters + + - **fileTime**: A Windows file time expressed in ticks. + +## Returns + +An object that represents the local time equivalent of the date and time represented by the `fileTime` parameter. + +## Example + +```csharp +DECLARE @var BIGINT +SELECT @var = SQLNET::DateTime_ToFileTime('2015-5-25') +SELECT SQLNET::DateTime_FromFileTime(@var) +``` + diff --git a/docs2/pages/documentations/datetime/datetime-from-oadate.md b/docs2/pages/documentations/datetime/datetime-from-oadate.md new file mode 100644 index 0000000..010a945 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-from-oadate.md @@ -0,0 +1,24 @@ +# DateTime_FromOADate + +`DateTime_FromOADate` returns a DateTime equivalent to the specified OLE Automation Date. +```csharp +DateTime_FromOADate ( + @oaDate FLOAT (53) + ) +RETURNS DATETIME +``` + +## Parameters + + - **oaDate**: An OLE Automation Date value. + +## Returns + +An object that represents the same date and time as `oaDate`. + +## Example + +```csharp +SELECT SQLNET::DateTime_FromOADate(39456) +``` + diff --git a/docs2/pages/documentations/datetime/datetime.md b/docs2/pages/documentations/datetime/datetime.md index 447904c..a86a675 100644 --- a/docs2/pages/documentations/datetime/datetime.md +++ b/docs2/pages/documentations/datetime/datetime.md @@ -11,4 +11,8 @@ Represents an instant in time, typically expressed as a date and time of day. | [DateTime_DayOfWeek(currDate)](/datetime-dayofweek) | Returns the day of the week represented by `currDate`. | [Try it]()| | [DateTime_DayOfYear(currDate)](/datetime-dayofyear) | Returns the day of the year represented by `currDate`. | [Try it]()| | [DateTime_DaysInMonth(year, month)](/datetime-days-in-month) | Returns the number of days in the specified month and year. | [Try it]()| +| [DateTime_FromBinary(dateData)](/datetime-from-binary) | Deserializes a 64-bit binary value and recreates an original serialized DateTime object. | [Try it]()| +| [DateTime_FromFileTime(fileTime)](/datetime-from-file-time) | Converts the specified Windows file time to an equivalent local time. | [Try it]()| +| [DateTime_FromFileTimeUtc(fileTime)](/datetime-from-file-time-utc) | Converts the specified Windows file time to an equivalent UTC time. | [Try it]()| +| [DateTime_FromOADate(fileTime)](/datetime-from-oadate) | Converts the specified Windows file time to an equivalent UTC time. | [Try it]()| From a2366928c46b857bddef580ac8c010a120c41ebf Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Thu, 6 Dec 2018 08:32:35 +0500 Subject: [PATCH 035/118] Added DateTime IsDaylightSavingTime and IsLeapYear articles --- .../datetime-isdaylight-saving-time.md | 25 ++++++++++++++++++ .../datetime/datetime-isleap-year.md | 26 +++++++++++++++++++ .../pages/documentations/datetime/datetime.md | 2 ++ 3 files changed, 53 insertions(+) create mode 100644 docs2/pages/documentations/datetime/datetime-isdaylight-saving-time.md create mode 100644 docs2/pages/documentations/datetime/datetime-isleap-year.md diff --git a/docs2/pages/documentations/datetime/datetime-isdaylight-saving-time.md b/docs2/pages/documentations/datetime/datetime-isdaylight-saving-time.md new file mode 100644 index 0000000..6f93f66 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-isdaylight-saving-time.md @@ -0,0 +1,25 @@ +# DateTime_IsDaylightSavingTime + +`DateTime_IsDaylightSavingTime` indicates whether `currDate` instance of DateTime is within the daylight saving time range for the current time zone. + +```csharp +DateTime_IsDaylightSavingTime ( + @currDate DATETIME, + ) +RETURNS BIT +``` + +## Parameters + + - **currDate**: The current datetime object. + +## Returns + +`true` if the value of the 'currDate' instance of DateTime is within the daylight saving time range for the local time zone; `false` if Kind is Utc. + +## Example + +```csharp +SELECT SQLNET::DateTime_IsDaylightSavingTime('2018-12-01') +``` + diff --git a/docs2/pages/documentations/datetime/datetime-isleap-year.md b/docs2/pages/documentations/datetime/datetime-isleap-year.md new file mode 100644 index 0000000..5273722 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-isleap-year.md @@ -0,0 +1,26 @@ +# DateTime_IsLeapYear + +`DateTime_IsLeapYear` returns an indication whether the specified year is a leap year. + +```csharp +DateTime_IsLeapYear ( + @year INT) + ) +RETURNS BIT +``` + +## Parameters + + - **year**: A 4-digit year. + +## Returns + +`true` if `year` is a leap year; otherwise, `false`. + +## Example + +```csharp +SELECT SQLNET::DateTime_IsLeapYear('2017') +SELECT SQLNET::DateTime_IsLeapYear('2012') +``` + diff --git a/docs2/pages/documentations/datetime/datetime.md b/docs2/pages/documentations/datetime/datetime.md index a86a675..d2afa66 100644 --- a/docs2/pages/documentations/datetime/datetime.md +++ b/docs2/pages/documentations/datetime/datetime.md @@ -15,4 +15,6 @@ Represents an instant in time, typically expressed as a date and time of day. | [DateTime_FromFileTime(fileTime)](/datetime-from-file-time) | Converts the specified Windows file time to an equivalent local time. | [Try it]()| | [DateTime_FromFileTimeUtc(fileTime)](/datetime-from-file-time-utc) | Converts the specified Windows file time to an equivalent UTC time. | [Try it]()| | [DateTime_FromOADate(fileTime)](/datetime-from-oadate) | Converts the specified Windows file time to an equivalent UTC time. | [Try it]()| +| [DateTime_IsDaylightSavingTime(currDate)](/datetime-isdaylight-saving-time) | Indicates whether `currDate` instance of DateTime is within the daylight saving time range for the current time zone. | [Try it]()| +| [DateTime_IsLeapYear(year)](/datetime-isleap-year) | Returns an indication whether the specified year is a leap year. | [Try it]()| From 7553c9679cb79378234f92ccc5c3e18a2d629268 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Thu, 6 Dec 2018 11:25:42 +0500 Subject: [PATCH 036/118] Added DateTime Now and Ticks articles --- .../documentations/datetime/datetime-now.md | 19 +++++++++++++++++ .../documentations/datetime/datetime-ticks.md | 21 +++++++++++++++++++ .../pages/documentations/datetime/datetime.md | 2 ++ 3 files changed, 42 insertions(+) create mode 100644 docs2/pages/documentations/datetime/datetime-now.md create mode 100644 docs2/pages/documentations/datetime/datetime-ticks.md diff --git a/docs2/pages/documentations/datetime/datetime-now.md b/docs2/pages/documentations/datetime/datetime-now.md new file mode 100644 index 0000000..e60ea1a --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-now.md @@ -0,0 +1,19 @@ +# DateTime_Now + +`DateTime_Now` returns a DateTime object that is set to the current date and time on this computer, expressed as the local time. + +```csharp +DateTime_Now() +RETURNS DATETIME +``` + +## Returns + +A DateTime object whose value is the current local date and time. + +## Example + +```csharp +SELECT SQLNET::DateTime_Now() +``` + diff --git a/docs2/pages/documentations/datetime/datetime-ticks.md b/docs2/pages/documentations/datetime/datetime-ticks.md new file mode 100644 index 0000000..727899f --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-ticks.md @@ -0,0 +1,21 @@ +# DateTime_Ticks + +`DateTime_Ticks` returns the number of ticks that represent the date and time of the `currDate` instance. + +```csharp +DateTime_Ticks( + @currDate DATETIME + ) +RETURNS BIGINT +``` + +## Returns + +The number of ticks that represent the date and time of the `currDate` instance. The value is between `DateTime.MinValue.Ticks` and `DateTime.MaxValue.Ticks`. + +## Example + +```csharp +SELECT SQLNET::DateTime_Ticks(2018-12-01) +``` + diff --git a/docs2/pages/documentations/datetime/datetime.md b/docs2/pages/documentations/datetime/datetime.md index d2afa66..0af6ae1 100644 --- a/docs2/pages/documentations/datetime/datetime.md +++ b/docs2/pages/documentations/datetime/datetime.md @@ -17,4 +17,6 @@ Represents an instant in time, typically expressed as a date and time of day. | [DateTime_FromOADate(fileTime)](/datetime-from-oadate) | Converts the specified Windows file time to an equivalent UTC time. | [Try it]()| | [DateTime_IsDaylightSavingTime(currDate)](/datetime-isdaylight-saving-time) | Indicates whether `currDate` instance of DateTime is within the daylight saving time range for the current time zone. | [Try it]()| | [DateTime_IsLeapYear(year)](/datetime-isleap-year) | Returns an indication whether the specified year is a leap year. | [Try it]()| +| [DateTime_Now()](/datetime-now) | Returns a DateTime object that is set to the current date and time on this computer, expressed as the local time. | [Try it]()| +| [DateTime_Ticks(currDate)](/datetime-ticks) | Returns the number of ticks that represent the date and time of the `currDate` instance. | [Try it]()| From 230708996925fb875ca9bc7d3045eb1c3811f9f7 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Thu, 6 Dec 2018 14:23:54 +0500 Subject: [PATCH 037/118] Added DateTime ToBinary and ToFileTime articles --- .../documentations/datetime/datetime-ticks.md | 4 +++ .../datetime/datetime-tobinary.md | 27 +++++++++++++++++++ .../documentations/datetime/datetime-today.md | 19 +++++++++++++ .../datetime/datetime-tofile-time.md | 27 +++++++++++++++++++ .../pages/documentations/datetime/datetime.md | 3 +++ 5 files changed, 80 insertions(+) create mode 100644 docs2/pages/documentations/datetime/datetime-tobinary.md create mode 100644 docs2/pages/documentations/datetime/datetime-today.md create mode 100644 docs2/pages/documentations/datetime/datetime-tofile-time.md diff --git a/docs2/pages/documentations/datetime/datetime-ticks.md b/docs2/pages/documentations/datetime/datetime-ticks.md index 727899f..4bcea31 100644 --- a/docs2/pages/documentations/datetime/datetime-ticks.md +++ b/docs2/pages/documentations/datetime/datetime-ticks.md @@ -9,6 +9,10 @@ DateTime_Ticks( RETURNS BIGINT ``` +## Parameters + + - **currDate**: The current datetime object. + ## Returns The number of ticks that represent the date and time of the `currDate` instance. The value is between `DateTime.MinValue.Ticks` and `DateTime.MaxValue.Ticks`. diff --git a/docs2/pages/documentations/datetime/datetime-tobinary.md b/docs2/pages/documentations/datetime/datetime-tobinary.md new file mode 100644 index 0000000..ba46f58 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-tobinary.md @@ -0,0 +1,27 @@ +# DateTime_ToBinary + +`DateTime_ToBinary` serializes the `currDate` object to a 64-bit binary value that subsequently can be used to recreate the DateTime object. + +```csharp +DateTime_ToBinary ( + @currDate DATETIME + ) +RETURNS BIGINT +``` + +## Parameters + + - **currDate**: The current datetime object. + +## Returns + +A 64-bit signed integer that encodes the `DateTime.Kind` and `DateTime.Ticks` properties. + +## Example + +```csharp +DECLARE @var BIGINT +SELECT @var = SQLNET::DateTime_ToBinary('2015-5-25') +SELECT SQLNET::DateTime_FromBinary(@var) +``` + diff --git a/docs2/pages/documentations/datetime/datetime-today.md b/docs2/pages/documentations/datetime/datetime-today.md new file mode 100644 index 0000000..9f2ccd9 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-today.md @@ -0,0 +1,19 @@ +# DateTime_Today + +`DateTime_Today` returns a DateTime object that is set to today's date, with the time component set to 00:00:00. + +```csharp +DateTime_Today() +RETURNS DATETIME +``` + +## Returns + +A DateTime object that is set to today's date, with the time component set to 00:00:00. + +## Example + +```csharp +SELECT SQLNET::DateTime_Today() +``` + diff --git a/docs2/pages/documentations/datetime/datetime-tofile-time.md b/docs2/pages/documentations/datetime/datetime-tofile-time.md new file mode 100644 index 0000000..2aba15d --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-tofile-time.md @@ -0,0 +1,27 @@ +# DateTime_ToFileTime + +`DateTime_ToFileTime` converts the value of the `currDate` DateTime object to a Windows file time. + +```csharp +DateTime_ToFileTime ( + @currDate DATETIME + ) +RETURNS BIGINT +``` + +## Parameters + + - **currDate**: The current datetime object. + +## Returns + +The value of the `currDate` DateTime object expressed as a Windows file time. + +## Example + +```csharp +DECLARE @var BIGINT +SELECT @var = SQLNET::DateTime_ToFileTime('2015-5-25') +SELECT SQLNET::DateTime_FromFileTime(@var) +``` + diff --git a/docs2/pages/documentations/datetime/datetime.md b/docs2/pages/documentations/datetime/datetime.md index 0af6ae1..1750098 100644 --- a/docs2/pages/documentations/datetime/datetime.md +++ b/docs2/pages/documentations/datetime/datetime.md @@ -19,4 +19,7 @@ Represents an instant in time, typically expressed as a date and time of day. | [DateTime_IsLeapYear(year)](/datetime-isleap-year) | Returns an indication whether the specified year is a leap year. | [Try it]()| | [DateTime_Now()](/datetime-now) | Returns a DateTime object that is set to the current date and time on this computer, expressed as the local time. | [Try it]()| | [DateTime_Ticks(currDate)](/datetime-ticks) | Returns the number of ticks that represent the date and time of the `currDate` instance. | [Try it]()| +| [DateTime_ToBinary()](/datetime-totobinary) | Serializes the current DateTime object to a 64-bit binary value that subsequently can be used to recreate the DateTime object. | [Try it]()| +| [DateTime_Today()](/datetime-today) | Returns a DateTime object that is set to the today's date and the time component set to 00:00:00. | [Try it]()| +| [DateTime_ToFileTime()](/datetime-tofile-time) | Converts the value of the current DateTime object to a Windows file time. | [Try it]()| From acea8240a0d9d39bca05ab79958b9f61f05f38c4 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Thu, 6 Dec 2018 14:45:45 +0500 Subject: [PATCH 038/118] Added DateTime ToFileTimeUtc article --- .../datetime/datetime-tofile-time-utc.md | 27 +++++++++++++++++++ .../pages/documentations/datetime/datetime.md | 5 ++-- 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 docs2/pages/documentations/datetime/datetime-tofile-time-utc.md diff --git a/docs2/pages/documentations/datetime/datetime-tofile-time-utc.md b/docs2/pages/documentations/datetime/datetime-tofile-time-utc.md new file mode 100644 index 0000000..da24f47 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-tofile-time-utc.md @@ -0,0 +1,27 @@ +# DateTime_ToFileTimeUtc + +`DateTime_ToFileTimeUtc` converts the value of the `currDate` DateTime object to a Windows file time. + +```csharp +DateTime_ToFileTimeUtc ( + @currDate DATETIME + ) +RETURNS BIGINT +``` + +## Parameters + + - **currDate**: The current datetime object. + +## Returns + +The value of the `currDate` DateTime object expressed as a Windows file time. + +## Example + +```csharp +DECLARE @var BIGINT +SELECT @var = SQLNET::DateTime_ToFileTimeUtc('2015-5-25') +SELECT SQLNET::DateTime_FromFileTimeUtc(@var) +``` + diff --git a/docs2/pages/documentations/datetime/datetime.md b/docs2/pages/documentations/datetime/datetime.md index 1750098..18a1140 100644 --- a/docs2/pages/documentations/datetime/datetime.md +++ b/docs2/pages/documentations/datetime/datetime.md @@ -19,7 +19,8 @@ Represents an instant in time, typically expressed as a date and time of day. | [DateTime_IsLeapYear(year)](/datetime-isleap-year) | Returns an indication whether the specified year is a leap year. | [Try it]()| | [DateTime_Now()](/datetime-now) | Returns a DateTime object that is set to the current date and time on this computer, expressed as the local time. | [Try it]()| | [DateTime_Ticks(currDate)](/datetime-ticks) | Returns the number of ticks that represent the date and time of the `currDate` instance. | [Try it]()| -| [DateTime_ToBinary()](/datetime-totobinary) | Serializes the current DateTime object to a 64-bit binary value that subsequently can be used to recreate the DateTime object. | [Try it]()| +| [DateTime_ToBinary(currDate)](/datetime-totobinary) | Serializes the current DateTime object to a 64-bit binary value that subsequently can be used to recreate the DateTime object. | [Try it]()| | [DateTime_Today()](/datetime-today) | Returns a DateTime object that is set to the today's date and the time component set to 00:00:00. | [Try it]()| -| [DateTime_ToFileTime()](/datetime-tofile-time) | Converts the value of the current DateTime object to a Windows file time. | [Try it]()| +| [DateTime_ToFileTime(currDate)](/datetime-tofile-time) | Converts the value of the current DateTime object to a Windows file time. | [Try it]()| +| [DateTime_ToFileTimeUtc(currDate)](/datetime-tofile-time-utc) | Converts the value of the current DateTime object to a Windows file time. | [Try it]()| From 1939491fe5e552d87c072e91246bfec83c879561 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Thu, 6 Dec 2018 17:46:53 +0500 Subject: [PATCH 039/118] Added DateTime-ToLocalTime --- .../datetime/datetime-tolocal-time.md | 25 +++++++++++++++++++ .../pages/documentations/datetime/datetime.md | 1 + 2 files changed, 26 insertions(+) create mode 100644 docs2/pages/documentations/datetime/datetime-tolocal-time.md diff --git a/docs2/pages/documentations/datetime/datetime-tolocal-time.md b/docs2/pages/documentations/datetime/datetime-tolocal-time.md new file mode 100644 index 0000000..c671636 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-tolocal-time.md @@ -0,0 +1,25 @@ +# DateTime_ToLocalTime + +`DateTime_ToLocalTime` converts the value of the `currDate` DateTime object to local time. + +```csharp +DateTime_ToLocalTime ( + @currDate DATETIME + ) +RETURNS BIGINT +``` + +## Parameters + + - **currDate**: The current datetime object. + +## Returns + +A DateTime object in local time equivalent to the value of the current DateTime object, or `MaxValue` if the converted value is too large to be represented by a DateTime object, or `MinValue` if the converted value is too small to be represented as a DateTime object. + +## Example + +```csharp +SELECT SQLNET::DateTime_ToLocalTime('2015-5-25') +``` + diff --git a/docs2/pages/documentations/datetime/datetime.md b/docs2/pages/documentations/datetime/datetime.md index 18a1140..d227a28 100644 --- a/docs2/pages/documentations/datetime/datetime.md +++ b/docs2/pages/documentations/datetime/datetime.md @@ -23,4 +23,5 @@ Represents an instant in time, typically expressed as a date and time of day. | [DateTime_Today()](/datetime-today) | Returns a DateTime object that is set to the today's date and the time component set to 00:00:00. | [Try it]()| | [DateTime_ToFileTime(currDate)](/datetime-tofile-time) | Converts the value of the current DateTime object to a Windows file time. | [Try it]()| | [DateTime_ToFileTimeUtc(currDate)](/datetime-tofile-time-utc) | Converts the value of the current DateTime object to a Windows file time. | [Try it]()| +| [DateTime_ToLocalTime(currDate)](/datetime-tolocal-time) | Converts the value of the current DateTime object to local time. | [Try it]()| From 75cd1291fc2900bb1ff5749ad5a29978c86c20ab Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Thu, 6 Dec 2018 20:45:40 +0500 Subject: [PATCH 040/118] Added remaining DateTime articles --- .../datetime/datetime-to-oadate.md | 25 +++++++++++++++++ .../datetime/datetime-to-universal-time.md | 25 +++++++++++++++++ .../datetime/datetime-tolong-date-string.md | 25 +++++++++++++++++ .../datetime/datetime-tolong-time-string.md | 26 ++++++++++++++++++ .../datetime/datetime-toshort-date-string.md | 25 +++++++++++++++++ .../datetime/datetime-toshort-time-string.md | 26 ++++++++++++++++++ .../datetime/datetime-tostring-with-format.md | 27 +++++++++++++++++++ .../datetime/datetime-tostring.md | 25 +++++++++++++++++ .../datetime/datetime-utc-now.md | 19 +++++++++++++ .../pages/documentations/datetime/datetime.md | 9 +++++++ 10 files changed, 232 insertions(+) create mode 100644 docs2/pages/documentations/datetime/datetime-to-oadate.md create mode 100644 docs2/pages/documentations/datetime/datetime-to-universal-time.md create mode 100644 docs2/pages/documentations/datetime/datetime-tolong-date-string.md create mode 100644 docs2/pages/documentations/datetime/datetime-tolong-time-string.md create mode 100644 docs2/pages/documentations/datetime/datetime-toshort-date-string.md create mode 100644 docs2/pages/documentations/datetime/datetime-toshort-time-string.md create mode 100644 docs2/pages/documentations/datetime/datetime-tostring-with-format.md create mode 100644 docs2/pages/documentations/datetime/datetime-tostring.md create mode 100644 docs2/pages/documentations/datetime/datetime-utc-now.md diff --git a/docs2/pages/documentations/datetime/datetime-to-oadate.md b/docs2/pages/documentations/datetime/datetime-to-oadate.md new file mode 100644 index 0000000..540d323 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-to-oadate.md @@ -0,0 +1,25 @@ +# DateTime_ToOADate + +`DateTime_ToOADate` converts the value of this instance to the equivalent OLE Automation date. + +```csharp +DateTime_ToOADate ( + @currDate DATETIME + ) +RETURNS FLOAT (53) +``` + +## Parameters + + - **oaDate**: An OLE Automation Date value. + +## Returns + +A double-precision floating-point number that contains an OLE Automation date equivalent to the value of this instance. + +## Example + +```csharp +SELECT SQLNET::DateTime_ToOADate(39456) +``` + diff --git a/docs2/pages/documentations/datetime/datetime-to-universal-time.md b/docs2/pages/documentations/datetime/datetime-to-universal-time.md new file mode 100644 index 0000000..42a44cb --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-to-universal-time.md @@ -0,0 +1,25 @@ +# DateTime_ToLocalTime + +`DateTime_ToLocalTime` converts the value of the `currDate` DateTime object to Coordinated Universal Time (UTC) time. + +```csharp +DateTime_ToLocalTime ( + @currDate DATETIME + ) +RETURNS BIGINT +``` + +## Parameters + + - **currDate**: The current datetime object. + +## Returns + +A DateTime object in Coordinated Universal Time (UTC) time equivalent to the value of the current DateTime object, or `MaxValue` if the converted value is too large to be represented by a DateTime object, or `MinValue` if the converted value is too small to be represented as a DateTime object. + +## Example + +```csharp +SELECT SQLNET::DateTime_ToLocalTime('2015-5-25') +``` + diff --git a/docs2/pages/documentations/datetime/datetime-tolong-date-string.md b/docs2/pages/documentations/datetime/datetime-tolong-date-string.md new file mode 100644 index 0000000..8a2e806 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-tolong-date-string.md @@ -0,0 +1,25 @@ +# DateTime_ToLongDateString + +`DateTime_ToLongDateString` converts the value of the current DateTime object to its equivalent long date string representation. + +```csharp +DateTime_ToLongDateString ( + @currDate DATETIME + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **currDate**: The current datetime object. + +## Returns + +A string that contains the long date string representation of the current DateTime object. + +## Example + +```csharp +SELECT SQLNET::DateTime_ToLongDateString('2015-5-25 3:02:15 AM') +``` + diff --git a/docs2/pages/documentations/datetime/datetime-tolong-time-string.md b/docs2/pages/documentations/datetime/datetime-tolong-time-string.md new file mode 100644 index 0000000..c302b56 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-tolong-time-string.md @@ -0,0 +1,26 @@ +# DateTime_ToLongTimeString + +`DateTime_ToLongTimeString` converts the value of the current DateTime object to its equivalent long time string representation. + +```csharp +DateTime_ToLongTimeString ( + @currDate DATETIME + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **currDate**: The current datetime object. + +## Returns + +A string that contains the long time string representation of the current DateTime object. + +## Example + +```csharp +SELECT SQLNET::DateTime_ToLongTimeString('2015-5-25 3:02:15 AM') +``` + +- \ No newline at end of file diff --git a/docs2/pages/documentations/datetime/datetime-toshort-date-string.md b/docs2/pages/documentations/datetime/datetime-toshort-date-string.md new file mode 100644 index 0000000..88f3db9 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-toshort-date-string.md @@ -0,0 +1,25 @@ +# DateTime_ToShortDateString + +`DateTime_ToShortDateString` converts the value of the current DateTime object to its equivalent short date string representation. + +```csharp +DateTime_ToShortDateString ( + @currDate DATETIME + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **currDate**: The current datetime object. + +## Returns + +A string that contains the short date string representation of the current DateTime object. + +## Example + +```csharp +SELECT SQLNET::DateTime_ToShortDateString('2015-5-25 3:02:15 AM') +``` + diff --git a/docs2/pages/documentations/datetime/datetime-toshort-time-string.md b/docs2/pages/documentations/datetime/datetime-toshort-time-string.md new file mode 100644 index 0000000..7e2a9f5 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-toshort-time-string.md @@ -0,0 +1,26 @@ +# DateTime_ToShortTimeString + +`DateTime_ToShortTimeString` converts the value of the current DateTime object to its equivalent short time string representation. + +```csharp +DateTime_ToShortTimeString ( + @currDate DATETIME + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **currDate**: The current datetime object. + +## Returns + +A string that contains the short time string representation of the current DateTime object. + +## Example + +```csharp +SELECT SQLNET::DateTime_ToShortTimeString('2015-5-25 3:02:15 AM') +``` + +- \ No newline at end of file diff --git a/docs2/pages/documentations/datetime/datetime-tostring-with-format.md b/docs2/pages/documentations/datetime/datetime-tostring-with-format.md new file mode 100644 index 0000000..3b7fb4a --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-tostring-with-format.md @@ -0,0 +1,27 @@ +# DateTime_ToStringWithFormat + +`DateTime_ToStringWithFormat` converts the value of the current DateTime object to its equivalent string representation using the specified format and the formatting conventions of the current culture. + +```csharp +DateTime_ToStringWithFormat ( + @currDate DATETIME, + @format NVARCHAR (MAX)) + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **currDate**: The current datetime object. + - **format**: A standard or custom date and time format string. + +## Returns + +A string representation of value of the current DateTime object as specified by `format`. + +## Example + +```csharp +SELECT SQLNET::DateTime_ToStringWithFormat('2015-5-25 3:02:15 AM', 'dd MMM HH:mm:ss') +``` + diff --git a/docs2/pages/documentations/datetime/datetime-tostring.md b/docs2/pages/documentations/datetime/datetime-tostring.md new file mode 100644 index 0000000..ae92199 --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-tostring.md @@ -0,0 +1,25 @@ +# DateTime_ToString + +`DateTime_ToString` converts the value of the current DateTime object to its equivalent string representation. + +```csharp +DateTime_ToString ( + @currDate DATETIME + ) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **currDate**: The current datetime object. + +## Returns + +A string representation of the value of the current DateTime object. + +## Example + +```csharp +SELECT SQLNET::DateTime_ToString('2015-5-25 3:02:15 AM') +``` + diff --git a/docs2/pages/documentations/datetime/datetime-utc-now.md b/docs2/pages/documentations/datetime/datetime-utc-now.md new file mode 100644 index 0000000..b529f4a --- /dev/null +++ b/docs2/pages/documentations/datetime/datetime-utc-now.md @@ -0,0 +1,19 @@ +# DateTime_UtcNow + +`DateTime_UtcNow` returns a DateTime object that is set to the current date and time on this computer, expressed as the Coordinated Universal Time (UTC) time. + +```csharp +DateTime_UtcNow() +RETURNS DATETIME +``` + +## Returns + +A DateTime object whose value is the current Coordinated Universal Time (UTC) date and time. + +## Example + +```csharp +SELECT SQLNET::DateTime_UtcNow() +``` + diff --git a/docs2/pages/documentations/datetime/datetime.md b/docs2/pages/documentations/datetime/datetime.md index d227a28..890d307 100644 --- a/docs2/pages/documentations/datetime/datetime.md +++ b/docs2/pages/documentations/datetime/datetime.md @@ -24,4 +24,13 @@ Represents an instant in time, typically expressed as a date and time of day. | [DateTime_ToFileTime(currDate)](/datetime-tofile-time) | Converts the value of the current DateTime object to a Windows file time. | [Try it]()| | [DateTime_ToFileTimeUtc(currDate)](/datetime-tofile-time-utc) | Converts the value of the current DateTime object to a Windows file time. | [Try it]()| | [DateTime_ToLocalTime(currDate)](/datetime-tolocal-time) | Converts the value of the current DateTime object to local time. | [Try it]()| +| [DateTime_ToLongDateString(currDate)](/datetime-tolong-date-string) | Converts the value of the current DateTime object to its equivalent long date string representation. | [Try it]()| +| [DateTime_ToLongTimeString(currDate)](/datetime-tolong-time-string) | Converts the value of the current DateTime object to its equivalent long time string representation. | [Try it]()| +| [DateTime_ToOADate(currDate)](/datetime-to-oadate) | Converts the value of this instance to the equivalent OLE Automation date. | [Try it]()| +| [DateTime_ToShortDateString(currDate)](/datetime-toshort-date-string) | Converts the value of the current DateTime object to its equivalent short date string representation. | [Try it]()| +| [DateTime_ToShortTimeString(currDate)](/datetime-toshort-time-string) | Converts the value of the current DateTime object to its equivalent short time string representation. | [Try it]()| +| [DateTime_ToString(currDate)](/datetime-tostring) | Converts the value of the current DateTime object to its equivalent string representation. | [Try it]()| +| [DateTime_ToStringWithFormat(currDate, format)](/datetime-tostring-with-format) | Converts the value of the current DateTime object to its equivalent string representation using the specified format and the formatting conventions of the current culture. | [Try it]()| +| [DateTime_ToUniversalTime(currDate)](/datetime-to-universal-time) | Converts the value of the current DateTime object to Coordinated Universal Time (UTC) time. | [Try it]()| +| [DateTime_UtcNow()](/datetime-utc-now) | Returns a DateTime object that is set to the current date and time on this computer, expressed as the Coordinated Universal Time (UTC) time. | [Try it]()| From 3d4df2ac9a5a3fc7b9aaad55b1d051596f9fe4c4 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Fri, 7 Dec 2018 07:34:17 +0500 Subject: [PATCH 041/118] Update datetime-to-universal-time.md --- .../documentations/datetime/datetime-to-universal-time.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs2/pages/documentations/datetime/datetime-to-universal-time.md b/docs2/pages/documentations/datetime/datetime-to-universal-time.md index 42a44cb..3437dda 100644 --- a/docs2/pages/documentations/datetime/datetime-to-universal-time.md +++ b/docs2/pages/documentations/datetime/datetime-to-universal-time.md @@ -1,9 +1,9 @@ -# DateTime_ToLocalTime +# DateTime_ToUniversalTime -`DateTime_ToLocalTime` converts the value of the `currDate` DateTime object to Coordinated Universal Time (UTC) time. +`DateTime_ToUniversalTime` converts the value of the `currDate` DateTime object to Coordinated Universal Time (UTC) time. ```csharp -DateTime_ToLocalTime ( +DateTime_ToUniversalTime ( @currDate DATETIME ) RETURNS BIGINT @@ -20,6 +20,6 @@ A DateTime object in Coordinated Universal Time (UTC) time equivalent to the val ## Example ```csharp -SELECT SQLNET::DateTime_ToLocalTime('2015-5-25') +SELECT SQLNET::DateTime_ToUniversalTime('2015-5-25') ``` From 92a04ccdcca6ee5d3e42680d65c3c49d89edf167 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Fri, 7 Dec 2018 12:20:23 +0500 Subject: [PATCH 042/118] Added Directory_GetAllFileSystemEntries article --- .../directory-get-all-file-system-entries.md | 24 +++++++++++++++++++ .../documentations/directory/directory.md | 7 ++++++ 2 files changed, 31 insertions(+) create mode 100644 docs2/pages/documentations/directory/directory-get-all-file-system-entries.md create mode 100644 docs2/pages/documentations/directory/directory.md diff --git a/docs2/pages/documentations/directory/directory-get-all-file-system-entries.md b/docs2/pages/documentations/directory/directory-get-all-file-system-entries.md new file mode 100644 index 0000000..1ae25f1 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-get-all-file-system-entries.md @@ -0,0 +1,24 @@ +# Directory_GetAllFileSystemEntries + +`Directory_GetAllFileSystemEntries` returns the names of all files and subdirectories in a specified path. + +```csharp +Directory_GetAllFileSystemEntries ( + @path NVARCHAR (MAX)) +RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) +``` + +## Parameters + + - **path**: The relative or absolute path to the directory to search. This string is not case-sensitive. + +## Returns + +A list of the names of files and subdirectories in the specified directory, or an empty list if no files or subdirectories are found. + +## Example + +```csharp +SELECT * FROM Directory_GetAllFileSystemEntries('C:\Logs') +``` + diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md new file mode 100644 index 0000000..c80c304 --- /dev/null +++ b/docs2/pages/documentations/directory/directory.md @@ -0,0 +1,7 @@ +# Directory + +Provides methods for creating, moving, and enumerating through directories and subdirectories. + +| Name | Description | Example | +| :--- | :---------- | :------ | +| [Directory_GetAllFileSystemEntries(path)](/directory-get-all-file-system-entries) | Returns the names of all files and subdirectories in a specified path. | [Try it]()| From 1cb7d0b15f6885fd12b2996061b7d50021c4b40e Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Fri, 7 Dec 2018 14:12:47 +0500 Subject: [PATCH 043/118] Added Directory_Create article --- .../directory/directory-create.md | 18 ++++++++++++++++++ .../documentations/directory/directory.md | 1 + 2 files changed, 19 insertions(+) create mode 100644 docs2/pages/documentations/directory/directory-create.md diff --git a/docs2/pages/documentations/directory/directory-create.md b/docs2/pages/documentations/directory/directory-create.md new file mode 100644 index 0000000..c2f9336 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-create.md @@ -0,0 +1,18 @@ +# Directory_Create + +`Directory_Create` creates all directories and subdirectories in the specified path unless they already exist. + +```csharp +Directory_Create @path NVARCHAR (MAX) +``` + +## Parameters + + - **path**: The directory to create. + +## Example + +```csharp +EXEC Directory_Create @path = 'C:\Temp1' +``` + diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md index c80c304..7b255a6 100644 --- a/docs2/pages/documentations/directory/directory.md +++ b/docs2/pages/documentations/directory/directory.md @@ -5,3 +5,4 @@ Provides methods for creating, moving, and enumerating through directories and s | Name | Description | Example | | :--- | :---------- | :------ | | [Directory_GetAllFileSystemEntries(path)](/directory-get-all-file-system-entries) | Returns the names of all files and subdirectories in a specified path. | [Try it]()| +| [Directory_Create(path)](/directory-create) | Creates all directories and subdirectories in the specified path unless they already exist. | [Try it]()| From a9ff0c1a5f3345f0bccbea3ceaf7259e25fa73c1 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Fri, 7 Dec 2018 18:41:18 +0500 Subject: [PATCH 044/118] Added directory related articles --- .../directory-create-sub-directory.md | 21 ++++++++++++++++ .../directory/directory-create.md | 2 +- .../directory/directory-delete-all.md | 18 +++++++++++++ .../directory/directory-delete.md | 18 +++++++++++++ .../directory/directory-exists.md | 25 +++++++++++++++++++ .../directory-get-all-directories.md | 23 +++++++++++++++++ .../directory/directory-get-all-files.md | 24 ++++++++++++++++++ .../documentations/directory/directory.md | 8 +++++- 8 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 docs2/pages/documentations/directory/directory-create-sub-directory.md create mode 100644 docs2/pages/documentations/directory/directory-delete-all.md create mode 100644 docs2/pages/documentations/directory/directory-delete.md create mode 100644 docs2/pages/documentations/directory/directory-exists.md create mode 100644 docs2/pages/documentations/directory/directory-get-all-directories.md create mode 100644 docs2/pages/documentations/directory/directory-get-all-files.md diff --git a/docs2/pages/documentations/directory/directory-create-sub-directory.md b/docs2/pages/documentations/directory/directory-create-sub-directory.md new file mode 100644 index 0000000..b21a936 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-create-sub-directory.md @@ -0,0 +1,21 @@ +# Directory_CreateSubDirectory + +`Directory_CreateSubDirectory` creates a subdirectory or subdirectories on the specified path. + +```csharp +Directory_CreateSubDirectory + @path NVARCHAR (MAX), + @subDirectory NVARCHAR (MAX) +``` + +## Parameters + + - **path**: The directory path. + - **subDirectory**: The name of sub directory to create. + +## Example + +```csharp +EXEC Directory_CreateSubDirectory @path = 'C:\Temp', @subDirectory = 'SubDir' +``` + diff --git a/docs2/pages/documentations/directory/directory-create.md b/docs2/pages/documentations/directory/directory-create.md index c2f9336..c555aa3 100644 --- a/docs2/pages/documentations/directory/directory-create.md +++ b/docs2/pages/documentations/directory/directory-create.md @@ -13,6 +13,6 @@ Directory_Create @path NVARCHAR (MAX) ## Example ```csharp -EXEC Directory_Create @path = 'C:\Temp1' +EXEC Directory_Create @path = 'C:\Temp' ``` diff --git a/docs2/pages/documentations/directory/directory-delete-all.md b/docs2/pages/documentations/directory/directory-delete-all.md new file mode 100644 index 0000000..0f6935f --- /dev/null +++ b/docs2/pages/documentations/directory/directory-delete-all.md @@ -0,0 +1,18 @@ +# Directory_DeleteAll + +`Directory_DeleteAll` deletes a directory from a specified path including subdirectories, and files. + +```csharp +Directory_DeleteAll @path NVARCHAR (MAX) +``` + +## Parameters + + - **path**: The directory to delete. + +## Example + +```csharp +EXEC Directory_DeleteAll @path = 'C:\Temp1' +``` + diff --git a/docs2/pages/documentations/directory/directory-delete.md b/docs2/pages/documentations/directory/directory-delete.md new file mode 100644 index 0000000..b136898 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-delete.md @@ -0,0 +1,18 @@ +# Directory_Delete + +`Directory_Delete` deletes an empty directory from a specified path. + +```csharp +Directory_Delete @path NVARCHAR (MAX) +``` + +## Parameters + + - **path**: The directory to delete. + +## Example + +```csharp +EXEC Directory_Delete @path = 'C:\Temp1' +``` + diff --git a/docs2/pages/documentations/directory/directory-exists.md b/docs2/pages/documentations/directory/directory-exists.md new file mode 100644 index 0000000..6f56cbd --- /dev/null +++ b/docs2/pages/documentations/directory/directory-exists.md @@ -0,0 +1,25 @@ +# Directory_Exists + +`Directory_Exists` determines whether the given path refers to an existing directory on disk. + +```csharp +Directory_Exists ( + @path NVARCHAR (MAX) + ) +RETURNS BIT +``` + +## Parameters + + - **path**: The path to test. + +## Returns + +`true` if path refers to an existing directory; `false` if the directory does not exist or an error occurs when trying to determine if the specified directory exists. + +## Example + +```csharp +SELECT SQLNET::Directory_Exists('C:\Temp') +``` + diff --git a/docs2/pages/documentations/directory/directory-get-all-directories.md b/docs2/pages/documentations/directory/directory-get-all-directories.md new file mode 100644 index 0000000..38efadc --- /dev/null +++ b/docs2/pages/documentations/directory/directory-get-all-directories.md @@ -0,0 +1,23 @@ +# Directory_GetAllDirectories + +`Directory_GetAllDirectories` returns the names of subdirectories (including their paths) in the specified directory. + +```csharp +Directory_GetAllDirectories ( + @path NVARCHAR (MAX)) +RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) +``` + +## Parameters + + - **path**: The relative or absolute path to the directory to search. This string is not case-sensitive. + +## Returns + +A list of the full names (including paths) of subdirectories in the specified path, or an empty list if no directories are found. + +## Example + +```csharp +SELECT * FROM Directory_GetAllDirectories('C:\Logs') +``` diff --git a/docs2/pages/documentations/directory/directory-get-all-files.md b/docs2/pages/documentations/directory/directory-get-all-files.md new file mode 100644 index 0000000..d73af20 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-get-all-files.md @@ -0,0 +1,24 @@ +# Directory_GetAllFiles + +`Directory_GetAllFiles` returns the names of files (including their paths) in the specified directory. + +```csharp +Directory_GetAllFiles ( + @path NVARCHAR (MAX)) +RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) +``` + +## Parameters + + - **path**: The relative or absolute path to the directory to search. This string is not case-sensitive. + +## Returns + +An list of the full names (including paths) for the files in the specified directory, or an empty list if no files are found. + +## Example + +```csharp +SELECT * FROM Directory_GetAllFiles('C:\Logs') +``` + diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md index 7b255a6..92294d5 100644 --- a/docs2/pages/documentations/directory/directory.md +++ b/docs2/pages/documentations/directory/directory.md @@ -4,5 +4,11 @@ Provides methods for creating, moving, and enumerating through directories and s | Name | Description | Example | | :--- | :---------- | :------ | -| [Directory_GetAllFileSystemEntries(path)](/directory-get-all-file-system-entries) | Returns the names of all files and subdirectories in a specified path. | [Try it]()| | [Directory_Create(path)](/directory-create) | Creates all directories and subdirectories in the specified path unless they already exist. | [Try it]()| +| [Directory_CreateSubDirectory(path)](/directory-create-sub-directory) | Creates a subdirectory or subdirectories on the specified path. | [Try it]()| +| [Directory_Delete(path)](/directory-delete) | Deletes an empty directory from a specified path. | [Try it]()| +| [Directory_DeleteAll(path)](/directory-delete-all) | Deletes a directory from a specified path including subdirectories, and files. | [Try it]()| +| [Directory_Exists(path)](/directory-exists) | Determines whether the given path refers to an existing directory on disk. | [Try it]()| +| [Directory_GetAllDirectories(path)](/directory-get-all-directories) | Returns the names of subdirectories (including their paths) in the specified directory. | [Try it]()| +| [Directory_GetAllFiles(path)](/directory-get-all-files) | Returns the names of files (including their paths) in the specified directory. | [Try it]()| +| [Directory_GetAllFileSystemEntries(path)](/directory-get-all-file-system-entries) | Returns the names of all files and subdirectories in a specified path. | [Try it]()| From ac8e92ff3bfb9514c7d3cd1464b26e354ae1726f Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Fri, 7 Dec 2018 21:06:03 +0500 Subject: [PATCH 045/118] Added GetFiles and GetFileSystemEntries articels --- .../directory-get-file-system-entries.md | 39 ++++++++++++++++++ .../directory/directory-get-files.md | 40 +++++++++++++++++++ .../documentations/directory/directory.md | 2 + 3 files changed, 81 insertions(+) create mode 100644 docs2/pages/documentations/directory/directory-get-file-system-entries.md create mode 100644 docs2/pages/documentations/directory/directory-get-files.md diff --git a/docs2/pages/documentations/directory/directory-get-file-system-entries.md b/docs2/pages/documentations/directory/directory-get-file-system-entries.md new file mode 100644 index 0000000..6d31a55 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-get-file-system-entries.md @@ -0,0 +1,39 @@ +# Directory_GetFileSystemEntries + +`Directory_GetFileSystemEntries` returns a list of all the file names and directory names that match a search pattern in a specified path, and optionally searches subdirectories. + +```csharp +Directory_GetFileSystemEntries ( + @path NVARCHAR (MAX)), + @searchPattern NVARCHAR (MAX) + @searchOption +) +RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) +``` + +## Parameters + + - **path**: The relative or absolute path to the directory to search. This string is not case-sensitive. + - **searchPattern**: The search string to match against the names of files in path. This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions. + - **searchOption**: One of the enumeration values that specifies whether the search operation should include all subdirectories or only the current directory. + +### SearchOption + +You can use one of the following options. + +| SearchOption |Integer Value | Descritpiton | +|:----------------------|:--------------|:--------------| +|TopDirectoryOnly | 0 | Includes only the current directory in a search operation. | +|AllDirectories | 1 | Includes the current directory and all its subdirectories in a search operation. This option includes reparse points such as mounted drives and symbolic links in the search. | + +## Returns + +An list of file the file names and directory names that match the specified search criteria, or an empty list if no files or directories are found. + +## Example + +```csharp +SELECT * FROM Directory_GetFileSystemEntries('C:\Logs', '*.html', 1) +SELECT * FROM Directory_GetFileSystemEntries('C:\Temp', '*.pdf', 0) +``` + diff --git a/docs2/pages/documentations/directory/directory-get-files.md b/docs2/pages/documentations/directory/directory-get-files.md new file mode 100644 index 0000000..b0e77c6 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-get-files.md @@ -0,0 +1,40 @@ +# Directory_GetFiles + +`Directory_GetFiles` returns the names of files (including their paths) that match the specified search pattern in the specified directory, using a value to determine whether to search subdirectories. + +```csharp +Directory_GetFiles ( + @path NVARCHAR (MAX), + @searchPattern NVARCHAR (MAX) + @searchOption +) +RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) +``` + +## Parameters + + - **path**: The relative or absolute path to the directory to search. This string is not case-sensitive. + - **searchPattern**: The search string to match against the names of files in path. This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions. + - **searchOption**: One of the enumeration values that specifies whether the search operation should include all subdirectories or only the current directory. + +### SearchOption + +You can use one of the following options. + +| SearchOption |Integer Value | Descritpiton | +|:----------------------|:--------------|:--------------| +|TopDirectoryOnly | 0 | Includes only the current directory in a search operation. | +|AllDirectories | 1 | Includes the current directory and all its subdirectories in a search operation. This option includes reparse points such as mounted drives and symbolic links in the search. | + +## Returns + +An list of the full names (including paths) for the files in the specified directory that match the specified search pattern and option, or an empty list if no files are found. + +## Example + +```csharp +SELECT * FROM Directory_GetFiles('C:\Logs', '*.html' +, 1) +SELECT * FROM Directory_GetFiles('C:\Temp', '*.pdf', 0) +``` + diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md index 92294d5..dcb0ad7 100644 --- a/docs2/pages/documentations/directory/directory.md +++ b/docs2/pages/documentations/directory/directory.md @@ -12,3 +12,5 @@ Provides methods for creating, moving, and enumerating through directories and s | [Directory_GetAllDirectories(path)](/directory-get-all-directories) | Returns the names of subdirectories (including their paths) in the specified directory. | [Try it]()| | [Directory_GetAllFiles(path)](/directory-get-all-files) | Returns the names of files (including their paths) in the specified directory. | [Try it]()| | [Directory_GetAllFileSystemEntries(path)](/directory-get-all-file-system-entries) | Returns the names of all files and subdirectories in a specified path. | [Try it]()| +| [Directory_GetFiles(path)](/directory-get-files) | Returns the names of files (including their paths) that match the specified search pattern in the specified directory, using a value to determine whether to search subdirectories. | [Try it]()| +| [Directory_GetFileSystemEntries(path)](/directory-get-file-system-entries) | Returns a list of all the file names and directory names that match a search pattern in a specified path, and optionally searches subdirectories. | [Try it]()| From dcd3975508a1559cb8e52532cd9de7660b0f79a1 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Fri, 7 Dec 2018 21:27:33 +0500 Subject: [PATCH 046/118] Added Directory_GetCreationTime and Directory_GetCreationTime articles --- .../directory-get-creation-time-utc.md | 24 +++++++++++++++++++ .../directory/directory-get-creation-time.md | 24 +++++++++++++++++++ .../documentations/directory/directory.md | 2 ++ 3 files changed, 50 insertions(+) create mode 100644 docs2/pages/documentations/directory/directory-get-creation-time-utc.md create mode 100644 docs2/pages/documentations/directory/directory-get-creation-time.md diff --git a/docs2/pages/documentations/directory/directory-get-creation-time-utc.md b/docs2/pages/documentations/directory/directory-get-creation-time-utc.md new file mode 100644 index 0000000..f63788f --- /dev/null +++ b/docs2/pages/documentations/directory/directory-get-creation-time-utc.md @@ -0,0 +1,24 @@ +# Directory_GetCreationTimeUtc + +`Directory_GetCreationTimeUtc` returns the creation date and time, in Coordinated Universal Time (UTC) format, of a directory. + +```csharp +Directory_GetCreationTimeUtc ( + @path NVARCHAR (MAX)) +RETURNS DATETIME +``` + +## Parameters + + - **path**: The path of the directory. + +## Returns + +A DateTime object set to the creation date and time for the specified directory. This value is expressed in UTC time. + +## Example + +```csharp +SELECT SQLNET::Directory_GetCreationTimeUtc('C:\Logs') +``` + diff --git a/docs2/pages/documentations/directory/directory-get-creation-time.md b/docs2/pages/documentations/directory/directory-get-creation-time.md new file mode 100644 index 0000000..40d4a0b --- /dev/null +++ b/docs2/pages/documentations/directory/directory-get-creation-time.md @@ -0,0 +1,24 @@ +# Directory_GetCreationTime + +`Directory_GetCreationTime` returns the creation date and time of a directory. + +```csharp +Directory_GetCreationTime ( + @path NVARCHAR (MAX)) +RETURNS DATETIME +``` + +## Parameters + + - **path**: The path of the directory. + +## Returns + +A DateTime object set to the creation date and time for the specified directory. This value is expressed in local time. + +## Example + +```csharp +SELECT SQLNET::Directory_GetCreationTime('C:\Logs') +``` + diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md index dcb0ad7..7666ced 100644 --- a/docs2/pages/documentations/directory/directory.md +++ b/docs2/pages/documentations/directory/directory.md @@ -12,5 +12,7 @@ Provides methods for creating, moving, and enumerating through directories and s | [Directory_GetAllDirectories(path)](/directory-get-all-directories) | Returns the names of subdirectories (including their paths) in the specified directory. | [Try it]()| | [Directory_GetAllFiles(path)](/directory-get-all-files) | Returns the names of files (including their paths) in the specified directory. | [Try it]()| | [Directory_GetAllFileSystemEntries(path)](/directory-get-all-file-system-entries) | Returns the names of all files and subdirectories in a specified path. | [Try it]()| +| [Directory_GetCreationTime(path)](/directory-get-creation-time) | Returns the creation date and time of a directory. | [Try it]()| +| [Directory_GetCreationTimeUtc(path)](/directory-get-creation-time-utc) | Returns the creation date and time, in Coordinated Universal Time (UTC) format, of a directory. | [Try it]()| | [Directory_GetFiles(path)](/directory-get-files) | Returns the names of files (including their paths) that match the specified search pattern in the specified directory, using a value to determine whether to search subdirectories. | [Try it]()| | [Directory_GetFileSystemEntries(path)](/directory-get-file-system-entries) | Returns a list of all the file names and directory names that match a search pattern in a specified path, and optionally searches subdirectories. | [Try it]()| From de20633c06eab1635c1c848172f9cc1716a6faf7 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sat, 8 Dec 2018 11:11:06 +0500 Subject: [PATCH 047/118] Added Directory_GetDirectories article --- .../directory/directory-get-directories.md | 39 +++++++++++++++++++ .../directory/directory-get-files.md | 5 +-- .../documentations/directory/directory.md | 1 + 3 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 docs2/pages/documentations/directory/directory-get-directories.md diff --git a/docs2/pages/documentations/directory/directory-get-directories.md b/docs2/pages/documentations/directory/directory-get-directories.md new file mode 100644 index 0000000..e99a5fb --- /dev/null +++ b/docs2/pages/documentations/directory/directory-get-directories.md @@ -0,0 +1,39 @@ +# Directory_GetDirectories + +`Directory_GetDirectories` returns the names of the subdirectories (including their paths) that match the specified search pattern in the specified directory, and optionally searches subdirectories. + +```csharp +Directory_GetDirectories ( + @path NVARCHAR (MAX), + @searchPattern NVARCHAR (MAX) + @searchOption +) +RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) +``` + +## Parameters + + - **path**: The relative or absolute path to the directory to search. This string is not case-sensitive. + - **searchPattern**: The search string to match against the names of files in path. This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions. + - **searchOption**: One of the enumeration values that specifies whether the search operation should include all subdirectories or only the current directory. + +### SearchOption + +You can use one of the following options. + +| SearchOption |Integer Value | Descritpiton | +|:----------------------|:--------------|:--------------| +|TopDirectoryOnly | 0 | Includes only the current directory in a search operation. | +|AllDirectories | 1 | Includes the current directory and all its subdirectories in a search operation. This option includes reparse points such as mounted drives and symbolic links in the search. | + +## Returns + +A list of the full names (including paths) of the subdirectories that match the specified criteria, or an empty array if no directories are found. + +## Example + +```csharp +SELECT * FROM Directory_GetDirectories('C:\', 'p*', 1) +SELECT * FROM Directory_GetDirectories('C:\', 'U*', 0) +``` + diff --git a/docs2/pages/documentations/directory/directory-get-files.md b/docs2/pages/documentations/directory/directory-get-files.md index b0e77c6..46e1849 100644 --- a/docs2/pages/documentations/directory/directory-get-files.md +++ b/docs2/pages/documentations/directory/directory-get-files.md @@ -28,13 +28,12 @@ You can use one of the following options. ## Returns -An list of the full names (including paths) for the files in the specified directory that match the specified search pattern and option, or an empty list if no files are found. +A list of the full names (including paths) for the files in the specified directory that match the specified search pattern and option, or an empty list if no files are found. ## Example ```csharp -SELECT * FROM Directory_GetFiles('C:\Logs', '*.html' -, 1) +SELECT * FROM Directory_GetFiles('C:\Logs', '*.html', 1) SELECT * FROM Directory_GetFiles('C:\Temp', '*.pdf', 0) ``` diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md index 7666ced..636345a 100644 --- a/docs2/pages/documentations/directory/directory.md +++ b/docs2/pages/documentations/directory/directory.md @@ -14,5 +14,6 @@ Provides methods for creating, moving, and enumerating through directories and s | [Directory_GetAllFileSystemEntries(path)](/directory-get-all-file-system-entries) | Returns the names of all files and subdirectories in a specified path. | [Try it]()| | [Directory_GetCreationTime(path)](/directory-get-creation-time) | Returns the creation date and time of a directory. | [Try it]()| | [Directory_GetCreationTimeUtc(path)](/directory-get-creation-time-utc) | Returns the creation date and time, in Coordinated Universal Time (UTC) format, of a directory. | [Try it]()| +| [Directory_GetDirectories(path)](/directory-get-directories) | Returns the names of the subdirectories (including their paths) that match the specified search pattern in the specified directory, and optionally searches subdirectories. | [Try it]()| | [Directory_GetFiles(path)](/directory-get-files) | Returns the names of files (including their paths) that match the specified search pattern in the specified directory, using a value to determine whether to search subdirectories. | [Try it]()| | [Directory_GetFileSystemEntries(path)](/directory-get-file-system-entries) | Returns a list of all the file names and directory names that match a search pattern in a specified path, and optionally searches subdirectories. | [Try it]()| From b8633cce9baf371694dd72301ed6bd991a654019 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sat, 8 Dec 2018 11:47:39 +0500 Subject: [PATCH 048/118] Added Directory_GetLastAccessTime and Directory_GetLastAccessTimeUtc article --- .../directory-get-last-access-time-utc.md | 24 +++++++++++++++++++ .../directory-get-last-access-time.md | 24 +++++++++++++++++++ .../documentations/directory/directory.md | 2 ++ 3 files changed, 50 insertions(+) create mode 100644 docs2/pages/documentations/directory/directory-get-last-access-time-utc.md create mode 100644 docs2/pages/documentations/directory/directory-get-last-access-time.md diff --git a/docs2/pages/documentations/directory/directory-get-last-access-time-utc.md b/docs2/pages/documentations/directory/directory-get-last-access-time-utc.md new file mode 100644 index 0000000..f1212fc --- /dev/null +++ b/docs2/pages/documentations/directory/directory-get-last-access-time-utc.md @@ -0,0 +1,24 @@ +# Directory_GetLastAccessTimeUtc + +`Directory_GetLastAccessTimeUtc` returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. + +```csharp +Directory_GetLastAccessTimeUtc ( + @path NVARCHAR (MAX)) +RETURNS DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to obtain access date and time information. + +## Returns + +A DateTime object that is set to the date and time the specified file or directory was last accessed. This value is expressed in UTC time. + +## Example + +```csharp +SELECT SQLNET::Directory_GetLastAccessTimeUtc('C:\Logs') +``` + diff --git a/docs2/pages/documentations/directory/directory-get-last-access-time.md b/docs2/pages/documentations/directory/directory-get-last-access-time.md new file mode 100644 index 0000000..8d0ae62 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-get-last-access-time.md @@ -0,0 +1,24 @@ +# Directory_GetLastAccessTime + +`Directory_GetLastAccessTime` returns the date and time the specified file or directory was last accessed. + +```csharp +Directory_GetLastAccessTime ( + @path NVARCHAR (MAX)) +RETURNS DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to obtain access date and time information. + +## Returns + +A DateTime object that is set to the date and time the specified file or directory was last accessed. This value is expressed in local time. + +## Example + +```csharp +SELECT SQLNET::Directory_GetLastAccessTime('C:\Logs') +``` + diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md index 636345a..fbae7ee 100644 --- a/docs2/pages/documentations/directory/directory.md +++ b/docs2/pages/documentations/directory/directory.md @@ -17,3 +17,5 @@ Provides methods for creating, moving, and enumerating through directories and s | [Directory_GetDirectories(path)](/directory-get-directories) | Returns the names of the subdirectories (including their paths) that match the specified search pattern in the specified directory, and optionally searches subdirectories. | [Try it]()| | [Directory_GetFiles(path)](/directory-get-files) | Returns the names of files (including their paths) that match the specified search pattern in the specified directory, using a value to determine whether to search subdirectories. | [Try it]()| | [Directory_GetFileSystemEntries(path)](/directory-get-file-system-entries) | Returns a list of all the file names and directory names that match a search pattern in a specified path, and optionally searches subdirectories. | [Try it]()| +| [Directory_GetLastAccessTime(path)](/directory-get-last-access-time) | Returns the date and time the specified file or directory was last accessed. | [Try it]()| +| [Directory_GetLastAccessTimeUtc(path)](/directory-get-last-access-time-utc) | Returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. | [Try it]()| From 226e45f08e66fce35b29ca7bfcc8c47885af47e1 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sat, 8 Dec 2018 12:14:13 +0500 Subject: [PATCH 049/118] Added Directory_GetLastWriteTime and Directory_GetLastWriteTimeUtc article --- .../directory-get-last-write-time-utc.md | 24 +++++++++++++++++++ .../directory-get-last-write-time.md | 24 +++++++++++++++++++ .../documentations/directory/directory.md | 2 ++ 3 files changed, 50 insertions(+) create mode 100644 docs2/pages/documentations/directory/directory-get-last-write-time-utc.md create mode 100644 docs2/pages/documentations/directory/directory-get-last-write-time.md diff --git a/docs2/pages/documentations/directory/directory-get-last-write-time-utc.md b/docs2/pages/documentations/directory/directory-get-last-write-time-utc.md new file mode 100644 index 0000000..44e7955 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-get-last-write-time-utc.md @@ -0,0 +1,24 @@ +# Directory_GetLastWriteTimeUtc + +`Directory_GetLastWriteTimeUtc` returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last written to. + +```csharp +Directory_GetLastWriteTimeUtc ( + @path NVARCHAR (MAX)) +RETURNS DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to obtain access date and time information. + +## Returns + +A DateTime object that is set to the date and time the specified file or directory was last written to. This value is expressed in UTC time. + +## Example + +```csharp +SELECT SQLNET::Directory_GetLastWriteTimeUtc('C:\Logs') +``` + diff --git a/docs2/pages/documentations/directory/directory-get-last-write-time.md b/docs2/pages/documentations/directory/directory-get-last-write-time.md new file mode 100644 index 0000000..39e94bb --- /dev/null +++ b/docs2/pages/documentations/directory/directory-get-last-write-time.md @@ -0,0 +1,24 @@ +# Directory_GetLastWriteTime + +`Directory_GetLastWriteTime` returns the date and time the specified file or directory was last written to. + +```csharp +Directory_GetLastWriteTime ( + @path NVARCHAR (MAX)) +RETURNS DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to obtain access date and time information. + +## Returns + +A DateTime object that is set to the date and time the specified file or directory was last written to. This value is expressed in local time. + +## Example + +```csharp +SELECT SQLNET::Directory_GetLastWriteTime('C:\Logs') +``` + diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md index fbae7ee..63ca6d6 100644 --- a/docs2/pages/documentations/directory/directory.md +++ b/docs2/pages/documentations/directory/directory.md @@ -19,3 +19,5 @@ Provides methods for creating, moving, and enumerating through directories and s | [Directory_GetFileSystemEntries(path)](/directory-get-file-system-entries) | Returns a list of all the file names and directory names that match a search pattern in a specified path, and optionally searches subdirectories. | [Try it]()| | [Directory_GetLastAccessTime(path)](/directory-get-last-access-time) | Returns the date and time the specified file or directory was last accessed. | [Try it]()| | [Directory_GetLastAccessTimeUtc(path)](/directory-get-last-access-time-utc) | Returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. | [Try it]()| +| [Directory_GetLastWriteTime(path)](/directory-get-last-write-time) | Returns the date and time the specified file or directory was last written to. | [Try it]()| +| [Directory_GetLastWriteTimeUtc(path)](/directory-get-last-write-time-utc) | Returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last written to. | [Try it]()| From ad23b60139f384c6b1b9a8f5baf6a548b938d314 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sat, 8 Dec 2018 17:44:04 +0500 Subject: [PATCH 050/118] Added Directory_Move article --- .../directory/directory-move.md | 21 +++++++++++++++++++ .../documentations/directory/directory.md | 1 + 2 files changed, 22 insertions(+) create mode 100644 docs2/pages/documentations/directory/directory-move.md diff --git a/docs2/pages/documentations/directory/directory-move.md b/docs2/pages/documentations/directory/directory-move.md new file mode 100644 index 0000000..f626f56 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-move.md @@ -0,0 +1,21 @@ +# Directory_Move + +`Directory_Move` moves a file or a directory and its contents to a new location. + +```csharp +Directory_Move + @sourceDirName NVARCHAR (MAX), + @destDirName NVARCHAR (MAX) +``` + +## Parameters + + - **sourceDirName**: The path of the file or directory to move. + - **destDirName**: The path to the new location for `sourceDirName`. If `sourceDirName` is a file, then `destDirName` must also be a file name. + +## Example + +```csharp +EXEC Directory_Move @sourceDirName = 'C:\source', @destDirName = 'C:\destination' +``` + diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md index 63ca6d6..d821342 100644 --- a/docs2/pages/documentations/directory/directory.md +++ b/docs2/pages/documentations/directory/directory.md @@ -21,3 +21,4 @@ Provides methods for creating, moving, and enumerating through directories and s | [Directory_GetLastAccessTimeUtc(path)](/directory-get-last-access-time-utc) | Returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. | [Try it]()| | [Directory_GetLastWriteTime(path)](/directory-get-last-write-time) | Returns the date and time the specified file or directory was last written to. | [Try it]()| | [Directory_GetLastWriteTimeUtc(path)](/directory-get-last-write-time-utc) | Returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last written to. | [Try it]()| +| [Directory_Move(sourceDirName, destDirName)](/directory-move) | Moves a file or a directory and its contents to a new location. | [Try it]()| From dbc621c29f3c941e29d05b856b74c3bc8616312b Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sat, 8 Dec 2018 17:46:55 +0500 Subject: [PATCH 051/118] Added Directory_SetCreationTime article --- .../directory/directory-set-creation-time.md | 21 +++++++++++++++++++ .../documentations/directory/directory.md | 1 + 2 files changed, 22 insertions(+) create mode 100644 docs2/pages/documentations/directory/directory-set-creation-time.md diff --git a/docs2/pages/documentations/directory/directory-set-creation-time.md b/docs2/pages/documentations/directory/directory-set-creation-time.md new file mode 100644 index 0000000..6755a97 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-set-creation-time.md @@ -0,0 +1,21 @@ +# Directory_SetCreationTime + +`Directory_SetCreationTime` sets the creation date and time for the specified file or directory. + +```csharp +Directory_SetCreationTime + @path NVARCHAR (MAX), + @creationTime DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to set the creation date and time information. + - **creationTime**: The date and time the file or directory was last written to. This value is expressed in local time. + +## Example + +```csharp +EXEC Directory_SetCreationTime @path = 'C:\destination', @creationTime = '2018-12-05' +``` + diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md index d821342..88ac5dd 100644 --- a/docs2/pages/documentations/directory/directory.md +++ b/docs2/pages/documentations/directory/directory.md @@ -22,3 +22,4 @@ Provides methods for creating, moving, and enumerating through directories and s | [Directory_GetLastWriteTime(path)](/directory-get-last-write-time) | Returns the date and time the specified file or directory was last written to. | [Try it]()| | [Directory_GetLastWriteTimeUtc(path)](/directory-get-last-write-time-utc) | Returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last written to. | [Try it]()| | [Directory_Move(sourceDirName, destDirName)](/directory-move) | Moves a file or a directory and its contents to a new location. | [Try it]()| +| [Directory_SetCreationTime(path, creationTime)](/directory-set-creation-time) | Sets the creation date and time for the specified file or directory. | [Try it]()| From dc07108f961293aeba33cfcb2c02c281ff0119c5 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sat, 8 Dec 2018 18:07:26 +0500 Subject: [PATCH 052/118] Added Directory_SetCreationTimeUtc article --- .../directory-set-creation-time-utc.md | 21 +++++++++++++++++++ .../documentations/directory/directory.md | 1 + 2 files changed, 22 insertions(+) create mode 100644 docs2/pages/documentations/directory/directory-set-creation-time-utc.md diff --git a/docs2/pages/documentations/directory/directory-set-creation-time-utc.md b/docs2/pages/documentations/directory/directory-set-creation-time-utc.md new file mode 100644 index 0000000..73f9952 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-set-creation-time-utc.md @@ -0,0 +1,21 @@ +# Directory_SetCreationTimeUtc + +`Directory_SetCreationTimeUtc` sets the creation date and time, in Coordinated Universal Time (UTC) format, for the specified file or directory. + +```csharp +Directory_SetCreationTimeUtc + @path NVARCHAR (MAX), + @creationTime DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to set the creation date and time information. + - **creationTime**: The date and time the file or directory was last written to. This value is expressed in UTC time. + +## Example + +```csharp +EXEC Directory_SetCreationTimeUtc @path = 'C:\destination', @creationTime = '2018-12-05 8:00:00 AM' +``` + diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md index 88ac5dd..f22b11f 100644 --- a/docs2/pages/documentations/directory/directory.md +++ b/docs2/pages/documentations/directory/directory.md @@ -23,3 +23,4 @@ Provides methods for creating, moving, and enumerating through directories and s | [Directory_GetLastWriteTimeUtc(path)](/directory-get-last-write-time-utc) | Returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last written to. | [Try it]()| | [Directory_Move(sourceDirName, destDirName)](/directory-move) | Moves a file or a directory and its contents to a new location. | [Try it]()| | [Directory_SetCreationTime(path, creationTime)](/directory-set-creation-time) | Sets the creation date and time for the specified file or directory. | [Try it]()| +| [Directory_SetCreationTimeUtc(path, creationTime)](/directory-set-creation-time-utc) | Sets the creation date and time, in Coordinated Universal Time (UTC) format, for the specified file or directory. | [Try it]()| From eea28b5c89534cfaae6955865f5d44e310715210 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sat, 8 Dec 2018 18:25:33 +0500 Subject: [PATCH 053/118] Added Directory_SetLastAccessTime article --- .../directory-set-last-access-time.md | 21 +++++++++++++++++++ .../documentations/directory/directory.md | 1 + 2 files changed, 22 insertions(+) create mode 100644 docs2/pages/documentations/directory/directory-set-last-access-time.md diff --git a/docs2/pages/documentations/directory/directory-set-last-access-time.md b/docs2/pages/documentations/directory/directory-set-last-access-time.md new file mode 100644 index 0000000..5a0e5f5 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-set-last-access-time.md @@ -0,0 +1,21 @@ +# Directory_SetLastAccessTime + +`Directory_SetLastAccessTime` sets the date and time the specified file or directory was last accessed. + +```csharp +Directory_SetLastAccessTime + @path NVARCHAR (MAX), + @lastAccessTime DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to set the creation date and time information. + - **lastAccessTime**: An object that contains the value to set for the access date and time of `path`. This value is expressed in local time. + +## Example + +```csharp +EXEC Directory_SetLastAccessTime @path = 'C:\destination', @lastAccessTime = '2018-12-05' +``` + diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md index f22b11f..8a9bbd2 100644 --- a/docs2/pages/documentations/directory/directory.md +++ b/docs2/pages/documentations/directory/directory.md @@ -24,3 +24,4 @@ Provides methods for creating, moving, and enumerating through directories and s | [Directory_Move(sourceDirName, destDirName)](/directory-move) | Moves a file or a directory and its contents to a new location. | [Try it]()| | [Directory_SetCreationTime(path, creationTime)](/directory-set-creation-time) | Sets the creation date and time for the specified file or directory. | [Try it]()| | [Directory_SetCreationTimeUtc(path, creationTime)](/directory-set-creation-time-utc) | Sets the creation date and time, in Coordinated Universal Time (UTC) format, for the specified file or directory. | [Try it]()| +| [Directory_SetLastAccessTime(path, lastTime)](/directory-set-last-access-time) | Sets the date and time the specified file or directory was last accessed. | [Try it]()| From 1339edd8217374fe3df06f7035eb0071af3b7ac9 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sat, 8 Dec 2018 18:38:33 +0500 Subject: [PATCH 054/118] Added Directory_SetLastAccessTimeUtc article --- .../directory-set-last-access-time-utc.md | 21 +++++++++++++++++++ .../documentations/directory/directory.md | 1 + 2 files changed, 22 insertions(+) create mode 100644 docs2/pages/documentations/directory/directory-set-last-access-time-utc.md diff --git a/docs2/pages/documentations/directory/directory-set-last-access-time-utc.md b/docs2/pages/documentations/directory/directory-set-last-access-time-utc.md new file mode 100644 index 0000000..74a4dd7 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-set-last-access-time-utc.md @@ -0,0 +1,21 @@ +# Directory_SetLastAccessTimeUtc + +`Directory_SetLastAccessTimeUtc` sets the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. + +```csharp +Directory_SetLastAccessTimeUtc + @path NVARCHAR (MAX), + @lastAccessTime DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to set the creation date and time information. + - **lastAccessTime**: An object that contains the value to set for the access date and time of `path`. This value is expressed in UTC time. + +## Example + +```csharp +EXEC Directory_SetLastAccessTimeUtc @path = 'C:\destination', @lastAccessTime = '2018-12-05 8:00:00 AM' +``` + diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md index 8a9bbd2..68b3922 100644 --- a/docs2/pages/documentations/directory/directory.md +++ b/docs2/pages/documentations/directory/directory.md @@ -25,3 +25,4 @@ Provides methods for creating, moving, and enumerating through directories and s | [Directory_SetCreationTime(path, creationTime)](/directory-set-creation-time) | Sets the creation date and time for the specified file or directory. | [Try it]()| | [Directory_SetCreationTimeUtc(path, creationTime)](/directory-set-creation-time-utc) | Sets the creation date and time, in Coordinated Universal Time (UTC) format, for the specified file or directory. | [Try it]()| | [Directory_SetLastAccessTime(path, lastTime)](/directory-set-last-access-time) | Sets the date and time the specified file or directory was last accessed. | [Try it]()| +| [Directory_SetLastAccessTimeUtc(path, lastTime)](/directory-set-last-access-time-utc) | Sets the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. | [Try it]()| From 8f79c32630863249303695b3f0b815954a638b4c Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sun, 9 Dec 2018 08:08:53 +0500 Subject: [PATCH 055/118] Added Directory_SetLastWriteTime and Directory_SetLastWriteTimeUtc articles --- .../directory-set-last-access-time-utc.md | 4 ++-- .../directory-set-last-access-time.md | 2 +- .../directory-set-last-write-time-utc.md | 20 ++++++++++++++++++ .../directory-set-last-write-time.md | 21 +++++++++++++++++++ .../documentations/directory/directory.md | 2 ++ 5 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 docs2/pages/documentations/directory/directory-set-last-write-time-utc.md create mode 100644 docs2/pages/documentations/directory/directory-set-last-write-time.md diff --git a/docs2/pages/documentations/directory/directory-set-last-access-time-utc.md b/docs2/pages/documentations/directory/directory-set-last-access-time-utc.md index 74a4dd7..86c9eaa 100644 --- a/docs2/pages/documentations/directory/directory-set-last-access-time-utc.md +++ b/docs2/pages/documentations/directory/directory-set-last-access-time-utc.md @@ -10,12 +10,12 @@ Directory_SetLastAccessTimeUtc ## Parameters - - **path**: The file or directory for which to set the creation date and time information. + - **path**: The path of the directory. - **lastAccessTime**: An object that contains the value to set for the access date and time of `path`. This value is expressed in UTC time. ## Example ```csharp -EXEC Directory_SetLastAccessTimeUtc @path = 'C:\destination', @lastAccessTime = '2018-12-05 8:00:00 AM' +EXEC Directory_SetLastAccessTimeUtc @path = 'C:\destination', @lastAccessTime = '2018-12-05 8:00:00 AM' ``` diff --git a/docs2/pages/documentations/directory/directory-set-last-access-time.md b/docs2/pages/documentations/directory/directory-set-last-access-time.md index 5a0e5f5..2a5d0c9 100644 --- a/docs2/pages/documentations/directory/directory-set-last-access-time.md +++ b/docs2/pages/documentations/directory/directory-set-last-access-time.md @@ -10,7 +10,7 @@ Directory_SetLastAccessTime ## Parameters - - **path**: The file or directory for which to set the creation date and time information. + - **path**: The path of the directory. - **lastAccessTime**: An object that contains the value to set for the access date and time of `path`. This value is expressed in local time. ## Example diff --git a/docs2/pages/documentations/directory/directory-set-last-write-time-utc.md b/docs2/pages/documentations/directory/directory-set-last-write-time-utc.md new file mode 100644 index 0000000..c1c11dd --- /dev/null +++ b/docs2/pages/documentations/directory/directory-set-last-write-time-utc.md @@ -0,0 +1,20 @@ +# Directory_SetLastWriteTimeUtc + +`Directory_SetLastWriteTimeUtc` sets the date and time, in Coordinated Universal Time (UTC) format, that a directory was last written to. +```csharp +Directory_SetLastWriteTimeUtc + @path NVARCHAR (MAX), + @lastWriteTime DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to set the creation date and time information. + - **lastWriteTime**: The date and time the directory was last written to. This value is expressed in local time. + +## Example + +```csharp +EXEC Directory_SetLastWriteTimeUtc @path = 'C:\destination', @lastWriteTime = '2018-12-05 8:00:00 AM' +``` + diff --git a/docs2/pages/documentations/directory/directory-set-last-write-time.md b/docs2/pages/documentations/directory/directory-set-last-write-time.md new file mode 100644 index 0000000..548ddd5 --- /dev/null +++ b/docs2/pages/documentations/directory/directory-set-last-write-time.md @@ -0,0 +1,21 @@ +# Directory_SetLastWriteTime + +`Directory_SetLastWriteTime` sets the date and time the specified file or directory was last written to. + +```csharp +Directory_SetLastWriteTime + @path NVARCHAR (MAX), + @lastWriteTime DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to set the creation date and time information. + - **lastWriteTime**: The date and time the directory was last written to. This value is expressed in local time. + +## Example + +```csharp +EXEC Directory_SetLastWriteTime @path = 'C:\destination', @lastWriteTime = '2018-12-05' +``` + diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md index 68b3922..3a94a2a 100644 --- a/docs2/pages/documentations/directory/directory.md +++ b/docs2/pages/documentations/directory/directory.md @@ -26,3 +26,5 @@ Provides methods for creating, moving, and enumerating through directories and s | [Directory_SetCreationTimeUtc(path, creationTime)](/directory-set-creation-time-utc) | Sets the creation date and time, in Coordinated Universal Time (UTC) format, for the specified file or directory. | [Try it]()| | [Directory_SetLastAccessTime(path, lastTime)](/directory-set-last-access-time) | Sets the date and time the specified file or directory was last accessed. | [Try it]()| | [Directory_SetLastAccessTimeUtc(path, lastTime)](/directory-set-last-access-time-utc) | Sets the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. | [Try it]()| +| [Directory_SetLastWriteTime(path, lastTime)](/directory-set-last-write-time) | Sets the date and time a directory was last written to. | [Try it]()| +| [Directory_SetLastWriteTimeUtc(path, lastTime)](/directory-set-last-write-time-utc) | Sets the date and time, in Coordinated Universal Time (UTC) format, that a directory was last written to. | [Try it]()| From 3a66404745a359743d9233d50a6141f55c983bd8 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sun, 9 Dec 2018 17:58:50 +0500 Subject: [PATCH 056/118] Added Fiile_Copy article --- .../file/file-append-all-text.md | 21 +++++++++++++++++ docs2/pages/documentations/file/file-copy.md | 23 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 8 +++++++ 3 files changed, 52 insertions(+) create mode 100644 docs2/pages/documentations/file/file-append-all-text.md create mode 100644 docs2/pages/documentations/file/file-copy.md create mode 100644 docs2/pages/documentations/file/file.md diff --git a/docs2/pages/documentations/file/file-append-all-text.md b/docs2/pages/documentations/file/file-append-all-text.md new file mode 100644 index 0000000..094f111 --- /dev/null +++ b/docs2/pages/documentations/file/file-append-all-text.md @@ -0,0 +1,21 @@ +# File_AppendAllText + +`File_AppendAllText` opens a file, appends the specified string to the file, and then closes the file. If the file does not exist, it creates a file, writes the specified string to the file, then closes the file. + +```csharp +File_AppendAllText + @path NVARCHAR (MAX), + @content NVARCHAR (MAX) +``` + +## Parameters + + - **path**: The file to append the specified string to. + - **content**: The string to append to the file. + +## Example + +```csharp +EXEC File_AppendAllText @path = 'C:\Temp\MyTest.txt', @content = 'This is extra text' +``` + diff --git a/docs2/pages/documentations/file/file-copy.md b/docs2/pages/documentations/file/file-copy.md new file mode 100644 index 0000000..cc4e161 --- /dev/null +++ b/docs2/pages/documentations/file/file-copy.md @@ -0,0 +1,23 @@ +# File_Copy + +`File_Copy` copies an existing file to a new file. + +```csharp +File_Copy + @sourceFileName NVARCHAR (MAX), + @destFileName NVARCHAR (MAX), + @overwrite BIT +``` + +## Parameters + + - **sourceFileName**: The file to append the specified string to. + - **destFileName**: The string to append to the file. + - **overwrite**: `true` if the destination file can be overwritten; otherwise, `false`. + +## Example + +```csharp +EXEC File_Copy @sourceFileName = 'C:\Temp\MyTest.txt', @destFileName = 'C:\Temp\MyTest1.txt', @overwrite = 1 +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md new file mode 100644 index 0000000..33d96a8 --- /dev/null +++ b/docs2/pages/documentations/file/file.md @@ -0,0 +1,8 @@ +# File + +Provides methods for the creation, copying, deletion, moving, and opening of a single file. + +| Name | Description | Example | +| :--- | :---------- | :------ | +| [File_AppendAllText(path, content)](/file-append-all-text) | Appends the specified stringto the file, creating the file if it does not already exist. | [Try it]()| +| [File_Copy(sourceFileName, destFileName, overwrite)](/file-append-all-text) | Copies an existing file to a new file. | [Try it]()| From 596ee7e2b7a7189e90d013940c826b174759ce4d Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Sun, 9 Dec 2018 18:22:31 +0500 Subject: [PATCH 057/118] Added File_Create article --- docs2/pages/documentations/file/file-copy.md | 4 ++-- .../pages/documentations/file/file-create.md | 19 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 1 + 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 docs2/pages/documentations/file/file-create.md diff --git a/docs2/pages/documentations/file/file-copy.md b/docs2/pages/documentations/file/file-copy.md index cc4e161..cadd714 100644 --- a/docs2/pages/documentations/file/file-copy.md +++ b/docs2/pages/documentations/file/file-copy.md @@ -11,8 +11,8 @@ File_Copy ## Parameters - - **sourceFileName**: The file to append the specified string to. - - **destFileName**: The string to append to the file. + - **sourceFileName**: The file to copy. + - **destFileName**: The name of the destination file. This cannot be a directory. - **overwrite**: `true` if the destination file can be overwritten; otherwise, `false`. ## Example diff --git a/docs2/pages/documentations/file/file-create.md b/docs2/pages/documentations/file/file-create.md new file mode 100644 index 0000000..28c7f0a --- /dev/null +++ b/docs2/pages/documentations/file/file-create.md @@ -0,0 +1,19 @@ +# File_Create + +`File_Create` creates or overwrites a file in the specified path. + +```csharp +File_Create + @path NVARCHAR (MAX) +``` + +## Parameters + + - **path**: The path and name of the file to create. + +## Example + +```csharp +EXEC File_Create @path = 'C:\Temp\MyTest.txt' +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index 33d96a8..2ef8062 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -6,3 +6,4 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | :--- | :---------- | :------ | | [File_AppendAllText(path, content)](/file-append-all-text) | Appends the specified stringto the file, creating the file if it does not already exist. | [Try it]()| | [File_Copy(sourceFileName, destFileName, overwrite)](/file-append-all-text) | Copies an existing file to a new file. | [Try it]()| +| [File_Create(path)](/file-create) | Creates or overwrites a file in the specified path. | [Try it]()| From 7d89a4133c85e93e58bcbb39e1df6b79d435c3b6 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 10 Dec 2018 07:26:24 +0500 Subject: [PATCH 058/118] Added File_Decrypt article --- .../pages/documentations/file/file-decrypt.md | 19 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 1 + 2 files changed, 20 insertions(+) create mode 100644 docs2/pages/documentations/file/file-decrypt.md diff --git a/docs2/pages/documentations/file/file-decrypt.md b/docs2/pages/documentations/file/file-decrypt.md new file mode 100644 index 0000000..942f7f1 --- /dev/null +++ b/docs2/pages/documentations/file/file-decrypt.md @@ -0,0 +1,19 @@ +# File_Decrypt + +`File_Decrypt` decrypts a file that was encrypted by the current account using the [File_Encrypt](/file_encrypt) procedure. + +```csharp +File_Decrypt + @path NVARCHAR (MAX) +``` + +## Parameters + + - **path**: A path that describes a file to decrypt. + +## Example + +```csharp +EXEC File_Decrypt @path = 'C:\Temp\MyTest.txt' +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index 2ef8062..4dcada6 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -7,3 +7,4 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | [File_AppendAllText(path, content)](/file-append-all-text) | Appends the specified stringto the file, creating the file if it does not already exist. | [Try it]()| | [File_Copy(sourceFileName, destFileName, overwrite)](/file-append-all-text) | Copies an existing file to a new file. | [Try it]()| | [File_Create(path)](/file-create) | Creates or overwrites a file in the specified path. | [Try it]()| +| [File_Decrypt(path)](/file-decrypt) | Decrypts a file that was encrypted by the current account using the [File_Encrypt](/file_encrypt) procedure. | [Try it]()| From 8d1d9f852050e036d600fd4cf0fa99f4f87d1fc7 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 10 Dec 2018 07:35:12 +0500 Subject: [PATCH 059/118] Added File_Delete article --- .../pages/documentations/file/file-delete.md | 19 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 1 + 2 files changed, 20 insertions(+) create mode 100644 docs2/pages/documentations/file/file-delete.md diff --git a/docs2/pages/documentations/file/file-delete.md b/docs2/pages/documentations/file/file-delete.md new file mode 100644 index 0000000..228643c --- /dev/null +++ b/docs2/pages/documentations/file/file-delete.md @@ -0,0 +1,19 @@ +# File_Delete + +`File_Delete` deletes the specified file. + +```csharp +File_Delete + @path NVARCHAR (MAX) +``` + +## Parameters + + - **path**: The name of the file to be deleted. Wildcard characters are not supported. + +## Example + +```csharp +EXEC File_Delete @path = 'C:\Temp\MyTest.txt' +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index 4dcada6..6ea0426 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -8,3 +8,4 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | [File_Copy(sourceFileName, destFileName, overwrite)](/file-append-all-text) | Copies an existing file to a new file. | [Try it]()| | [File_Create(path)](/file-create) | Creates or overwrites a file in the specified path. | [Try it]()| | [File_Decrypt(path)](/file-decrypt) | Decrypts a file that was encrypted by the current account using the [File_Encrypt](/file_encrypt) procedure. | [Try it]()| +| [File_Delete(path)](/file-delete) | Deletes the specified file. | [Try it]()| From 7b18c9906716cab5b257ada51bda3079b8aae7a4 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 10 Dec 2018 07:53:47 +0500 Subject: [PATCH 060/118] Added File_Encrypt article --- .../pages/documentations/file/file-encrypt.md | 19 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 1 + 2 files changed, 20 insertions(+) create mode 100644 docs2/pages/documentations/file/file-encrypt.md diff --git a/docs2/pages/documentations/file/file-encrypt.md b/docs2/pages/documentations/file/file-encrypt.md new file mode 100644 index 0000000..977f171 --- /dev/null +++ b/docs2/pages/documentations/file/file-encrypt.md @@ -0,0 +1,19 @@ +# File_Encrypt + +`File_Encrypt` encrypts a file so that only the account used to encrypt the file can decrypt it. + +```csharp +File_Encrypt + @path NVARCHAR (MAX) +``` + +## Parameters + + - **path**: A path that describes a file to encrypt. + +## Example + +```csharp +EXEC File_Encrypt @path = 'C:\Temp\MyTest.txt' +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index 6ea0426..32fa3ca 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -9,3 +9,4 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | [File_Create(path)](/file-create) | Creates or overwrites a file in the specified path. | [Try it]()| | [File_Decrypt(path)](/file-decrypt) | Decrypts a file that was encrypted by the current account using the [File_Encrypt](/file_encrypt) procedure. | [Try it]()| | [File_Delete(path)](/file-delete) | Deletes the specified file. | [Try it]()| +| [File_Encrypt(path)](/file-encrypt) | Encrypts a file so that only the account used to encrypt the file can decrypt it. | [Try it]()| From 6f9d43f2eeac10fe9d955acfb556a236f2955f14 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 10 Dec 2018 08:22:50 +0500 Subject: [PATCH 061/118] Added File_GetCreationTime article --- .../file/file-get-creation-time.md | 24 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 1 + 2 files changed, 25 insertions(+) create mode 100644 docs2/pages/documentations/file/file-get-creation-time.md diff --git a/docs2/pages/documentations/file/file-get-creation-time.md b/docs2/pages/documentations/file/file-get-creation-time.md new file mode 100644 index 0000000..1f02f49 --- /dev/null +++ b/docs2/pages/documentations/file/file-get-creation-time.md @@ -0,0 +1,24 @@ +# File_GetCreationTime + +`File_GetCreationTime` returns the creation date and time of the specified file or directory. + +```csharp +File_GetCreationTime ( + @path NVARCHAR (MAX)) +RETURNS DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to obtain creation date and time information. + +## Returns + +A DateTime object set to the creation date and time for the specified file or directory. This value is expressed in local time. + +## Example + +```csharp +SELECT SQLNET::File_GetCreationTime('C:\Temp\MyTest.txt') +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index 32fa3ca..b71af16 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -10,3 +10,4 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | [File_Decrypt(path)](/file-decrypt) | Decrypts a file that was encrypted by the current account using the [File_Encrypt](/file_encrypt) procedure. | [Try it]()| | [File_Delete(path)](/file-delete) | Deletes the specified file. | [Try it]()| | [File_Encrypt(path)](/file-encrypt) | Encrypts a file so that only the account used to encrypt the file can decrypt it. | [Try it]()| +| [File_GetCreationTime](/file-get-creation-time) | Returns the creation date and time of the specified file or directory. | [Try it]()| \ No newline at end of file From d83584bf4c3f2adcd5ddfd0ee788fc9f5944623a Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 10 Dec 2018 12:12:00 +0500 Subject: [PATCH 062/118] Added File_GetCreationTimeUtc --- .../file/file-get-creation-time-utc.md | 24 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 3 ++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 docs2/pages/documentations/file/file-get-creation-time-utc.md diff --git a/docs2/pages/documentations/file/file-get-creation-time-utc.md b/docs2/pages/documentations/file/file-get-creation-time-utc.md new file mode 100644 index 0000000..4091630 --- /dev/null +++ b/docs2/pages/documentations/file/file-get-creation-time-utc.md @@ -0,0 +1,24 @@ +# File_GetCreationTimeUtc + +`File_GetCreationTimeUtc` returns the creation date and time, in coordinated universal time (UTC), of the specified file or directory. + +```csharp +File_GetCreationTimeUtc ( + @path NVARCHAR (MAX)) +RETURNS DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to obtain creation date and time information. + +## Returns + +A DateTime object set to the creation date and time for the specified file or directory. This value is expressed in UTC time. + +## Example + +```csharp +SELECT SQLNET::File_GetCreationTimeUtc('C:\Temp\MyTest.txt') +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index b71af16..9a04f70 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -10,4 +10,5 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | [File_Decrypt(path)](/file-decrypt) | Decrypts a file that was encrypted by the current account using the [File_Encrypt](/file_encrypt) procedure. | [Try it]()| | [File_Delete(path)](/file-delete) | Deletes the specified file. | [Try it]()| | [File_Encrypt(path)](/file-encrypt) | Encrypts a file so that only the account used to encrypt the file can decrypt it. | [Try it]()| -| [File_GetCreationTime](/file-get-creation-time) | Returns the creation date and time of the specified file or directory. | [Try it]()| \ No newline at end of file +| [File_GetCreationTime](/file-get-creation-time) | Returns the creation date and time of the specified file or directory. | [Try it]()| +| [File_GetCreationTimeUtc](/file-get-creation-time-utc) | Returns the creation date and time, in coordinated universal time (UTC), of the specified file or directory. | [Try it]()| From 93b930d42c771a555a9a19d603e401c4c826e70b Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 10 Dec 2018 17:44:15 +0500 Subject: [PATCH 063/118] Added File_GetLastAccessTime, File_GetLastAccessTimeUtc, File_GetLastWriteTime and File_GetLastWriteTimeUtc --- .../file/file-get-last-access-time-utc.md | 24 +++++++++++++++++++ .../file/file-get-last-access-time.md | 24 +++++++++++++++++++ .../file/file-get-last-write-time-utc.md | 24 +++++++++++++++++++ .../file/file-get-last-write-time.md | 24 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 4 ++++ 5 files changed, 100 insertions(+) create mode 100644 docs2/pages/documentations/file/file-get-last-access-time-utc.md create mode 100644 docs2/pages/documentations/file/file-get-last-access-time.md create mode 100644 docs2/pages/documentations/file/file-get-last-write-time-utc.md create mode 100644 docs2/pages/documentations/file/file-get-last-write-time.md diff --git a/docs2/pages/documentations/file/file-get-last-access-time-utc.md b/docs2/pages/documentations/file/file-get-last-access-time-utc.md new file mode 100644 index 0000000..5b55ae1 --- /dev/null +++ b/docs2/pages/documentations/file/file-get-last-access-time-utc.md @@ -0,0 +1,24 @@ +# File_GetLastAccessTimeUtc + +`File_GetLastAccessTimeUtc` returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last accessed. + +```csharp +File_GetLastAccessTimeUtc ( + @path NVARCHAR (MAX)) +RETURNS DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to obtain access date and time information. + +## Returns + +A DateTime object set to the date and time that the specified file or directory was last accessed. This value is expressed in UTC time. + +## Example + +```csharp +SELECT SQLNET::File_GetLastAccessTimeUtc('C:\Temp\MyTest.txt') +``` + diff --git a/docs2/pages/documentations/file/file-get-last-access-time.md b/docs2/pages/documentations/file/file-get-last-access-time.md new file mode 100644 index 0000000..c9c5daa --- /dev/null +++ b/docs2/pages/documentations/file/file-get-last-access-time.md @@ -0,0 +1,24 @@ +# File_GetLastAccessTime + +`File_GetLastAccessTime` returns the date and time the specified file or directory was last accessed. + +```csharp +File_GetLastAccessTime ( + @path NVARCHAR (MAX)) +RETURNS DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to obtain access date and time information. + +## Returns + +A DateTime object set to the date and time that the specified file or directory was last accessed. This value is expressed in local time. + +## Example + +```csharp +SELECT SQLNET::File_GetLastAccessTime('C:\Temp\MyTest.txt') +``` + diff --git a/docs2/pages/documentations/file/file-get-last-write-time-utc.md b/docs2/pages/documentations/file/file-get-last-write-time-utc.md new file mode 100644 index 0000000..18d9950 --- /dev/null +++ b/docs2/pages/documentations/file/file-get-last-write-time-utc.md @@ -0,0 +1,24 @@ +# File_GetLastWriteTimeUtc + +`File_GetLastWriteTimeUtc` returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last written to. + +```csharp +File_GetLastWriteTimeUtc ( + @path NVARCHAR (MAX)) +RETURNS DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to obtain write date and time information. + +## Returns + +A DateTime object set to the date and time that the specified file or directory was last written to. This value is expressed in UTC time. + +## Example + +```csharp +SELECT SQLNET::File_GetLastWriteTimeUtc('C:\Temp\MyTest.txt') +``` + diff --git a/docs2/pages/documentations/file/file-get-last-write-time.md b/docs2/pages/documentations/file/file-get-last-write-time.md new file mode 100644 index 0000000..0a941ff --- /dev/null +++ b/docs2/pages/documentations/file/file-get-last-write-time.md @@ -0,0 +1,24 @@ +# File_GetLastWriteTime + +`File_GetLastWriteTime` returns the date and time the specified file or directory was last written to. + +```csharp +File_GetLastWriteTime ( + @path NVARCHAR (MAX)) +RETURNS DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to obtain write date and time information. + +## Returns + +A DateTime object set to the date and time that the specified file or directory was last written to. This value is expressed in local time. + +## Example + +```csharp +SELECT SQLNET::File_GetLastWriteTime('C:\Temp\MyTest.txt') +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index 9a04f70..4244a02 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -12,3 +12,7 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | [File_Encrypt(path)](/file-encrypt) | Encrypts a file so that only the account used to encrypt the file can decrypt it. | [Try it]()| | [File_GetCreationTime](/file-get-creation-time) | Returns the creation date and time of the specified file or directory. | [Try it]()| | [File_GetCreationTimeUtc](/file-get-creation-time-utc) | Returns the creation date and time, in coordinated universal time (UTC), of the specified file or directory. | [Try it]()| +| [File_GetLastAccessTime](/file-get-last-access-time) | Returns the date and time the specified file or directory was last accessed. | [Try it]()| +| [File_GetLastAccessTimeUtc](/file-get-last-access-time-utc) | Returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last accessed. | [Try it]()| +| [File_GetLastWriteTime](/file-get-last-write-time) | Returns the date and time the specified file or directory was last written to. | [Try it]()| +| [File_GetLastWriteTimeUtc](/file-get-last-write-time-utc) | Returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last written to. | [Try it]()| From 7ac01a40b8b83e01c8a31da444a5e128c3783057 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 10 Dec 2018 18:05:47 +0500 Subject: [PATCH 064/118] Added File_IsExists article --- .../documentations/file/file-isexists.md | 25 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 13 +++++----- 2 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 docs2/pages/documentations/file/file-isexists.md diff --git a/docs2/pages/documentations/file/file-isexists.md b/docs2/pages/documentations/file/file-isexists.md new file mode 100644 index 0000000..3ea089e --- /dev/null +++ b/docs2/pages/documentations/file/file-isexists.md @@ -0,0 +1,25 @@ +# File_IsExists + +`File_IsExists` determines whether the specified file exists. + +```csharp +File_IsExists ( + @path NVARCHAR (MAX) + ) +RETURNS BIT +``` + +## Parameters + + - **path**: The path of a file to check. + +## Returns + +`true` if path refers to an existing directory; `false` if the directory does not exist or an error occurs when trying to determine if the specified directory exists. + +## Example + +```csharp +SELECT SQLNET::File_IsExists('C:\Temp\MyTest.txt') +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index 4244a02..6450d26 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -10,9 +10,10 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | [File_Decrypt(path)](/file-decrypt) | Decrypts a file that was encrypted by the current account using the [File_Encrypt](/file_encrypt) procedure. | [Try it]()| | [File_Delete(path)](/file-delete) | Deletes the specified file. | [Try it]()| | [File_Encrypt(path)](/file-encrypt) | Encrypts a file so that only the account used to encrypt the file can decrypt it. | [Try it]()| -| [File_GetCreationTime](/file-get-creation-time) | Returns the creation date and time of the specified file or directory. | [Try it]()| -| [File_GetCreationTimeUtc](/file-get-creation-time-utc) | Returns the creation date and time, in coordinated universal time (UTC), of the specified file or directory. | [Try it]()| -| [File_GetLastAccessTime](/file-get-last-access-time) | Returns the date and time the specified file or directory was last accessed. | [Try it]()| -| [File_GetLastAccessTimeUtc](/file-get-last-access-time-utc) | Returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last accessed. | [Try it]()| -| [File_GetLastWriteTime](/file-get-last-write-time) | Returns the date and time the specified file or directory was last written to. | [Try it]()| -| [File_GetLastWriteTimeUtc](/file-get-last-write-time-utc) | Returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last written to. | [Try it]()| +| [File_GetCreationTime(path)](/file-get-creation-time) | Returns the creation date and time of the specified file or directory. | [Try it]()| +| [File_GetCreationTimeUtc(path)](/file-get-creation-time-utc) | Returns the creation date and time, in coordinated universal time (UTC), of the specified file or directory. | [Try it]()| +| [File_GetLastAccessTime(path)](/file-get-last-access-time) | Returns the date and time the specified file or directory was last accessed. | [Try it]()| +| [File_GetLastAccessTimeUtc(path)](/file-get-last-access-time-utc) | Returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last accessed. | [Try it]()| +| [File_GetLastWriteTime(path)](/file-get-last-write-time) | Returns the date and time the specified file or directory was last written to. | [Try it]()| +| [File_GetLastWriteTimeUtc(path)](/file-get-last-write-time-utc) | Returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last written to. | [Try it]()| +| [File_IsExists(path)](/file-isexists) | Determines whether the specified file exists. | [Try it]()| From b928a9975c37fd55f56f517395320a7a3666f542 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 10 Dec 2018 18:44:45 +0500 Subject: [PATCH 065/118] Added File_Move and File_ReadAllText article --- docs2/pages/documentations/file/file-move.md | 21 ++++++++++++++++ .../documentations/file/file-read-all-text.md | 24 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 2 ++ 3 files changed, 47 insertions(+) create mode 100644 docs2/pages/documentations/file/file-move.md create mode 100644 docs2/pages/documentations/file/file-read-all-text.md diff --git a/docs2/pages/documentations/file/file-move.md b/docs2/pages/documentations/file/file-move.md new file mode 100644 index 0000000..35466d0 --- /dev/null +++ b/docs2/pages/documentations/file/file-move.md @@ -0,0 +1,21 @@ +# File_Move + +`File_Move` moves a specified file to a new location, providing the option to specify a new file name. + +```csharp +File_Move + @sourceFileName NVARCHAR (MAX), + @destFileName NVARCHAR (MAX) +``` + +## Parameters + + - **sourceFileName**: The name of the file to move. + - **destFileName**: The new path and name for the file. + +## Example + +```csharp +EXEC File_Move @sourceFileName = 'C:\Temp\MyTest.txt', @destFileName = 'C:\Temp\MyTest.txt' +``` + diff --git a/docs2/pages/documentations/file/file-read-all-text.md b/docs2/pages/documentations/file/file-read-all-text.md new file mode 100644 index 0000000..136b20e --- /dev/null +++ b/docs2/pages/documentations/file/file-read-all-text.md @@ -0,0 +1,24 @@ +# File_ReadAllText + +`File_ReadAllText` 0pens a text file, reads and returns all the text in the file, and then closes the file. + +```csharp +File_ReadAllText ( + @path NVARCHAR (MAX)) +RETURNS NVARCHAR (MAX) +``` + +## Parameters + + - **path**: The file path to open for reading. + +## Returns + +A string containing all the text in the file. + +## Example + +```csharp +SELECT SQLNET::File_ReadAllText('C:\Temp\MyTest.txt') +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index 6450d26..162ff98 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -17,3 +17,5 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | [File_GetLastWriteTime(path)](/file-get-last-write-time) | Returns the date and time the specified file or directory was last written to. | [Try it]()| | [File_GetLastWriteTimeUtc(path)](/file-get-last-write-time-utc) | Returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last written to. | [Try it]()| | [File_IsExists(path)](/file-isexists) | Determines whether the specified file exists. | [Try it]()| +| [File_Move(sourceFileName, destFileName)](/file-move) | Moves a specified file to a new location, providing the option to specify a new file name. | [Try it]()| +| [File_ReadAllText(path)](/file-move) | Opens a text file, reads and returns all the text in the file, and then closes the file. | [Try it]()| From 29b585444807529ee76f4c15bb4920c9feb5e475 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 10 Dec 2018 19:21:04 +0500 Subject: [PATCH 066/118] Added File_Move and File_Replace article --- docs2/pages/documentations/file/file-move.md | 2 +- .../pages/documentations/file/file-replace.md | 25 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 1 + 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 docs2/pages/documentations/file/file-replace.md diff --git a/docs2/pages/documentations/file/file-move.md b/docs2/pages/documentations/file/file-move.md index 35466d0..19ef334 100644 --- a/docs2/pages/documentations/file/file-move.md +++ b/docs2/pages/documentations/file/file-move.md @@ -16,6 +16,6 @@ File_Move ## Example ```csharp -EXEC File_Move @sourceFileName = 'C:\Temp\MyTest.txt', @destFileName = 'C:\Temp\MyTest.txt' +EXEC File_Move @sourceFileName = 'C:\Temp\MyTest.txt', @destFileName = 'C:\Temp\MyNewTest.txt' ``` diff --git a/docs2/pages/documentations/file/file-replace.md b/docs2/pages/documentations/file/file-replace.md new file mode 100644 index 0000000..18e8adf --- /dev/null +++ b/docs2/pages/documentations/file/file-replace.md @@ -0,0 +1,25 @@ +# File_Replace + +`File_Replace` replaces the contents of a specified file with the contents of another file, deleting the original file, and creating a backup of the replaced file and optionally ignores merge errors. + +```csharp +File_Replace + @sourceFileName NVARCHAR (MAX), + @destFileName NVARCHAR (MAX), + @destBackupFileName NVARCHAR (MAX), + @ignoreMetadataErrors BIT +``` + +## Parameters + + - **sourceFileName**: The name of a file that replaces the file specified by `destinationFileName`. + - **destFileName**: The name of the file being replaced. + - **destBackupFileName**: The name of the backup file. + - **ignoreMetadataErrors**: `true` to ignore merge errors (such as attributes and access control lists (ACLs)) from the replaced file to the replacement file; otherwise, `false`. + +## Example + +```csharp +EXEC File_Replace @sourceFileName = 'C:\Temp\MyTest.txt', @destFileName = 'C:\Temp\MyNewTest.txt', @destBackupFileName = 'C:\Temp\MybackupTest.txt', @ignoreMetadataErrors = 0 +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index 162ff98..1b044b3 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -19,3 +19,4 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | [File_IsExists(path)](/file-isexists) | Determines whether the specified file exists. | [Try it]()| | [File_Move(sourceFileName, destFileName)](/file-move) | Moves a specified file to a new location, providing the option to specify a new file name. | [Try it]()| | [File_ReadAllText(path)](/file-move) | Opens a text file, reads and returns all the text in the file, and then closes the file. | [Try it]()| +| [File_Replace(sourceFileName, destFileName, destBackupFileName, ignoreMetadataErrors)](/file-replace) | Replaces the contents of a specified file with the contents of another file, deleting the original file, and creating a backup of the replaced file and optionally ignores merge errors. | [Try it]()| From c799e3c61ed5cbb5f65fb08487ffc34bda55b31f Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 10 Dec 2018 20:07:42 +0500 Subject: [PATCH 067/118] Added File_SetCreationTime article --- .../file/file-set-creation-time.md | 21 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 1 + 2 files changed, 22 insertions(+) create mode 100644 docs2/pages/documentations/file/file-set-creation-time.md diff --git a/docs2/pages/documentations/file/file-set-creation-time.md b/docs2/pages/documentations/file/file-set-creation-time.md new file mode 100644 index 0000000..5891167 --- /dev/null +++ b/docs2/pages/documentations/file/file-set-creation-time.md @@ -0,0 +1,21 @@ +# File_SetCreationTime + +`File_SetCreationTime` sets the date and time the file was created. + +```csharp +File_SetCreationTime + @path NVARCHAR (MAX), + @creationTime DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to obtain creation date and time information. + - **creationTime**: A DateTime containing the value to set for the creation date and time of path. This value is expressed in local time. + +## Example + +```csharp +EXEC File_SetCreationTime @path = 'C:\destination', @creationTime = '2018-12-05' +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index 1b044b3..989e54a 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -20,3 +20,4 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | [File_Move(sourceFileName, destFileName)](/file-move) | Moves a specified file to a new location, providing the option to specify a new file name. | [Try it]()| | [File_ReadAllText(path)](/file-move) | Opens a text file, reads and returns all the text in the file, and then closes the file. | [Try it]()| | [File_Replace(sourceFileName, destFileName, destBackupFileName, ignoreMetadataErrors)](/file-replace) | Replaces the contents of a specified file with the contents of another file, deleting the original file, and creating a backup of the replaced file and optionally ignores merge errors. | [Try it]()| +| [File_SetCreationTime(path, creationTime)](/file-set-creation-time) | Sets the date and time the file was created. | [Try it]()| From f5279ab2a11694fadd979970108e0663b9b62f7d Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 10 Dec 2018 20:31:07 +0500 Subject: [PATCH 068/118] Added File_SetCreationTimeUtc article --- .../file/file-set-creation-time-utc.md | 21 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 1 + 2 files changed, 22 insertions(+) create mode 100644 docs2/pages/documentations/file/file-set-creation-time-utc.md diff --git a/docs2/pages/documentations/file/file-set-creation-time-utc.md b/docs2/pages/documentations/file/file-set-creation-time-utc.md new file mode 100644 index 0000000..be25cbd --- /dev/null +++ b/docs2/pages/documentations/file/file-set-creation-time-utc.md @@ -0,0 +1,21 @@ +# File_SetCreationTimeUtc + +`File_SetCreationTimeUtc` sets the date and time, in coordinated universal time (UTC), that the file was created. + +```csharp +File_SetCreationTimeUtc + @path NVARCHAR (MAX), + @creationTime DATETIME +``` + +## Parameters + + - **path**: The file or directory for which to obtain creation date and time information. + - **creationTime**: A DateTime containing the value to set for the creation date and time of path. This value is expressed in UTC time. + +## Example + +```csharp +EXEC File_SetCreationTimeUtc @path = 'C:\destination', @creationTime = '2018-12-05' +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index 989e54a..93b0e12 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -21,3 +21,4 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | [File_ReadAllText(path)](/file-move) | Opens a text file, reads and returns all the text in the file, and then closes the file. | [Try it]()| | [File_Replace(sourceFileName, destFileName, destBackupFileName, ignoreMetadataErrors)](/file-replace) | Replaces the contents of a specified file with the contents of another file, deleting the original file, and creating a backup of the replaced file and optionally ignores merge errors. | [Try it]()| | [File_SetCreationTime(path, creationTime)](/file-set-creation-time) | Sets the date and time the file was created. | [Try it]()| +| [File_SetCreationTimeUtc(path, creationTime)](/file-set-creation-time-utc) | Sets the date and time, in coordinated universal time (UTC), that the file was created. | [Try it]()| From 032e38b598ee519b4d66a805f44e31aec972b7a6 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 10 Dec 2018 21:39:30 +0500 Subject: [PATCH 069/118] Added File_SetLastAccessTime, File_SetLastAccessTimeUtc, File_SetLastWriteTime, File_SetLastWriteTimeUtc articles --- .../file/file-set-creation-time-utc.md | 2 +- .../file/file-set-creation-time.md | 2 +- .../file/file-set-last-access-time-utc.md | 21 +++++++++++++++++++ .../file/file-set-last-access-time.md | 21 +++++++++++++++++++ .../file/file-set-last-write-time-utc.md | 21 +++++++++++++++++++ .../file/file-set-last-write-time.md | 21 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 4 ++++ 7 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 docs2/pages/documentations/file/file-set-last-access-time-utc.md create mode 100644 docs2/pages/documentations/file/file-set-last-access-time.md create mode 100644 docs2/pages/documentations/file/file-set-last-write-time-utc.md create mode 100644 docs2/pages/documentations/file/file-set-last-write-time.md diff --git a/docs2/pages/documentations/file/file-set-creation-time-utc.md b/docs2/pages/documentations/file/file-set-creation-time-utc.md index be25cbd..8576a15 100644 --- a/docs2/pages/documentations/file/file-set-creation-time-utc.md +++ b/docs2/pages/documentations/file/file-set-creation-time-utc.md @@ -16,6 +16,6 @@ File_SetCreationTimeUtc ## Example ```csharp -EXEC File_SetCreationTimeUtc @path = 'C:\destination', @creationTime = '2018-12-05' +EXEC File_SetCreationTimeUtc @path = 'C:\Temp\MyTest.txt', @creationTime = '2018-12-05' ``` diff --git a/docs2/pages/documentations/file/file-set-creation-time.md b/docs2/pages/documentations/file/file-set-creation-time.md index 5891167..51ac849 100644 --- a/docs2/pages/documentations/file/file-set-creation-time.md +++ b/docs2/pages/documentations/file/file-set-creation-time.md @@ -16,6 +16,6 @@ File_SetCreationTime ## Example ```csharp -EXEC File_SetCreationTime @path = 'C:\destination', @creationTime = '2018-12-05' +EXEC File_SetCreationTime @path = 'C:\Temp\MyTest.txt', @creationTime = '2018-12-05' ``` diff --git a/docs2/pages/documentations/file/file-set-last-access-time-utc.md b/docs2/pages/documentations/file/file-set-last-access-time-utc.md new file mode 100644 index 0000000..49cedc6 --- /dev/null +++ b/docs2/pages/documentations/file/file-set-last-access-time-utc.md @@ -0,0 +1,21 @@ +# File_SetLastAccessTimeUtc + +`File_SetLastAccessTimeUtc` sets the date and time, in coordinated universal time (UTC), that the specified file was last accessed. + +```csharp +File_SetLastAccessTimeUtc + @path NVARCHAR (MAX), + @lastAccessTime DATETIME +``` + +## Parameters + + - **path**: The file for which to set the access date and time information. + - **lastAccessTime**: A DateTime containing the value to set for the last access date and time of path. This value is expressed in UTC time. + +## Example + +```csharp +EXEC File_SetLastAccessTimeUtc @path = 'C:\Temp\MyTest.txt', @lastAccessTime = '2018-12-05' +``` + diff --git a/docs2/pages/documentations/file/file-set-last-access-time.md b/docs2/pages/documentations/file/file-set-last-access-time.md new file mode 100644 index 0000000..ee65070 --- /dev/null +++ b/docs2/pages/documentations/file/file-set-last-access-time.md @@ -0,0 +1,21 @@ +# File_SetLastAccessTime + +`File_SetLastAccessTime` sets the date and time the specified file was last accessed. + +```csharp +File_SetLastAccessTime + @path NVARCHAR (MAX), + @lastAccessTime DATETIME +``` + +## Parameters + + - **path**: The file for which to set the access date and time information. + - **lastAccessTime**: A DateTime containing the value to set for the last access date and time of path. This value is expressed in local time. + +## Example + +```csharp +EXEC File_SetLastAccessTime @path = 'C:\Temp\MyTest.txt', @lastAccessTime = '2018-12-05' +``` + diff --git a/docs2/pages/documentations/file/file-set-last-write-time-utc.md b/docs2/pages/documentations/file/file-set-last-write-time-utc.md new file mode 100644 index 0000000..54245d0 --- /dev/null +++ b/docs2/pages/documentations/file/file-set-last-write-time-utc.md @@ -0,0 +1,21 @@ +# File_SetLastWriteTimeUtc + +`File_SetLastWriteTimeUtc` sets the date and time, in coordinated universal time (UTC), that the specified file was last written to. + +```csharp +File_SetLastWriteTimeUtc + @path NVARCHAR (MAX), + @lastWriteTime DATETIME +``` + +## Parameters + + - **path**: The file for which to set the date and time information. + - **lastWriteTime**: A DateTime containing the value to set for the last write date and time of path. This value is expressed in UTC time. + +## Example + +```csharp +EXEC File_SetLastWriteTimeUtc @path = 'C:\Temp\MyTest.txt', @lastWriteTime = '2018-12-05' +``` + diff --git a/docs2/pages/documentations/file/file-set-last-write-time.md b/docs2/pages/documentations/file/file-set-last-write-time.md new file mode 100644 index 0000000..d0eecae --- /dev/null +++ b/docs2/pages/documentations/file/file-set-last-write-time.md @@ -0,0 +1,21 @@ +# File_SetLastWriteTime + +`File_SetLastWriteTime` sets the date and time that the specified file was last written to. + +```csharp +File_SetLastWriteTime + @path NVARCHAR (MAX), + @lastWriteTime DATETIME +``` + +## Parameters + + - **path**: The file for which to set the date and time information. + - **lastWriteTime**: A DateTime containing the value to set for the last write date and time of path. This value is expressed in local time. + +## Example + +```csharp +EXEC File_SetLastWriteTime @path = 'C:\Temp\MyTest.txt', @lastWriteTime = '2018-12-05' +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index 93b0e12..1055d45 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -22,3 +22,7 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | [File_Replace(sourceFileName, destFileName, destBackupFileName, ignoreMetadataErrors)](/file-replace) | Replaces the contents of a specified file with the contents of another file, deleting the original file, and creating a backup of the replaced file and optionally ignores merge errors. | [Try it]()| | [File_SetCreationTime(path, creationTime)](/file-set-creation-time) | Sets the date and time the file was created. | [Try it]()| | [File_SetCreationTimeUtc(path, creationTime)](/file-set-creation-time-utc) | Sets the date and time, in coordinated universal time (UTC), that the file was created. | [Try it]()| +| [File_SetLastAccessTime(path, lastAccessTime)](/file-set-last-access-time) | Sets the date and time the file was created. | [Try it]()| +| [File_SetLastAccessTimeUtc(path, lastAccessTime)](/file-set-last-access-time-utc) | Sets the date and time, in coordinated universal time (UTC), that the specified file was last accessed. | [Try it]()| +| [File_SetLastWriteTime(path, lastWriteTime)](/file-set-last-write-time) | Sets the date and time that the specified file was last written to. | [Try it]()| +| [File_SetLastWriteTimeUtc(path, lastWriteTime)](/file-set-last-write-time-utc) | Sets the date and time, in coordinated universal time (UTC), that the specified file was last written to. | [Try it]()| From 513832c647b8107b28b7ac1d8721668e3177b999 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Mon, 10 Dec 2018 21:57:17 +0500 Subject: [PATCH 070/118] Added File_WriteAllText article --- .../file/file-write-all-text.md | 21 +++++++++++++++++++ docs2/pages/documentations/file/file.md | 1 + 2 files changed, 22 insertions(+) create mode 100644 docs2/pages/documentations/file/file-write-all-text.md diff --git a/docs2/pages/documentations/file/file-write-all-text.md b/docs2/pages/documentations/file/file-write-all-text.md new file mode 100644 index 0000000..f3d981c --- /dev/null +++ b/docs2/pages/documentations/file/file-write-all-text.md @@ -0,0 +1,21 @@ +# File_WriteAllText + +`File_WriteAllText` Creates a new file, write the contents to the file, and then closes the file. If the target file already exists, it is overwritten. + +```csharp +File_WriteAllText + @path NVARCHAR (MAX), + @contents NVARCHAR (MAX) +``` + +## Parameters + + - **path**: The file to write to. + - **contents**: The string to write to the file. + +## Example + +```csharp +EXEC File_WriteAllText @path = 'C:\Temp\MyTest.txt', @contents = 'This is a text' +``` + diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md index 1055d45..b2822d9 100644 --- a/docs2/pages/documentations/file/file.md +++ b/docs2/pages/documentations/file/file.md @@ -26,3 +26,4 @@ Provides methods for the creation, copying, deletion, moving, and opening of a s | [File_SetLastAccessTimeUtc(path, lastAccessTime)](/file-set-last-access-time-utc) | Sets the date and time, in coordinated universal time (UTC), that the specified file was last accessed. | [Try it]()| | [File_SetLastWriteTime(path, lastWriteTime)](/file-set-last-write-time) | Sets the date and time that the specified file was last written to. | [Try it]()| | [File_SetLastWriteTimeUtc(path, lastWriteTime)](/file-set-last-write-time-utc) | Sets the date and time, in coordinated universal time (UTC), that the specified file was last written to. | [Try it]()| +| [File_WriteAllText(path, contents)](/file-write-all-text) | Creates a new file, write the contents to the file, and then closes the file. If the target file already exists, it is overwritten. | [Try it]()| From 1f01c418ebbf29bb68ed7d42917a1fa065c1266c Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 07:41:03 +0500 Subject: [PATCH 071/118] Added Math_BigMul article --- .../pages/documentations/math/math-bigmul.md | 26 +++++++++++++++++++ docs2/pages/documentations/math/math.md | 8 ++++++ 2 files changed, 34 insertions(+) create mode 100644 docs2/pages/documentations/math/math-bigmul.md create mode 100644 docs2/pages/documentations/math/math.md diff --git a/docs2/pages/documentations/math/math-bigmul.md b/docs2/pages/documentations/math/math-bigmul.md new file mode 100644 index 0000000..86727eb --- /dev/null +++ b/docs2/pages/documentations/math/math-bigmul.md @@ -0,0 +1,26 @@ +# Math_BigMul + +`Math_BigMul` produces the full product of two 32-bit numbers. + +```csharp +Math_BigMul ( + @a INT, + @b INT) +RETURNS BIGINT +``` + +## Parameters + + - **a**: The first number to multiply. + - **b**: The second number to multiply. + +## Returns + +The number containing the product of the specified numbers. + +## Example + +```csharp +SELECT SQLNET::Math_BigMul(2147483647, 2147483647) +``` + diff --git a/docs2/pages/documentations/math/math.md b/docs2/pages/documentations/math/math.md new file mode 100644 index 0000000..a65aef6 --- /dev/null +++ b/docs2/pages/documentations/math/math.md @@ -0,0 +1,8 @@ +# Math + +Provides methods for trigonometric, and other common mathematical functions. + +| Name | Description | Example | +| :--- | :---------- | :------ | +| [Math_BigMul(a, b)](/math-bigmul) | Produces the full product of two 32-bit numbers. | [Try it]()| + From 27981f4d22b7893ae4378fc75d285c1dbf8a3182 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 08:43:24 +0500 Subject: [PATCH 072/118] Added Math_Cosh article --- docs2/pages/documentations/math/math-cosh.md | 24 ++++++++++++++++++++ docs2/pages/documentations/math/math.md | 1 + 2 files changed, 25 insertions(+) create mode 100644 docs2/pages/documentations/math/math-cosh.md diff --git a/docs2/pages/documentations/math/math-cosh.md b/docs2/pages/documentations/math/math-cosh.md new file mode 100644 index 0000000..5699ad6 --- /dev/null +++ b/docs2/pages/documentations/math/math-cosh.md @@ -0,0 +1,24 @@ +# Math_Cosh + +`Math_Cosh` returns the hyperbolic cosine of the specified angle. + +```csharp +Math_Cosh ( + @value FLOAT (53)) +RETURNS FLOAT (53) +``` + +## Parameters + + - **value**: An angle, measured in radians. + +## Returns + +The hyperbolic cosine of value. If value is equal to NegativeInfinity or PositiveInfinity, PositiveInfinity is returned. If value is equal to NaN, NaN is returned. + +## Example + +```csharp +SELECT SQLNET::Math_Cosh(2147483647, 2147483647) +``` + diff --git a/docs2/pages/documentations/math/math.md b/docs2/pages/documentations/math/math.md index a65aef6..b0cb207 100644 --- a/docs2/pages/documentations/math/math.md +++ b/docs2/pages/documentations/math/math.md @@ -5,4 +5,5 @@ Provides methods for trigonometric, and other common mathematical functions. | Name | Description | Example | | :--- | :---------- | :------ | | [Math_BigMul(a, b)](/math-bigmul) | Produces the full product of two 32-bit numbers. | [Try it]()| +| [Math_Cosh(value)](/math-cosh) | Returns the hyperbolic cosine of the specified angle. | [Try it]()| From d1c28363cafc01531a87a9ea7249912264718e5a Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 11:52:54 +0500 Subject: [PATCH 073/118] Added Math_CubeRoot article --- .../documentations/math/math-cube-root.md | 24 +++++++++++++++++++ docs2/pages/documentations/math/math.md | 1 + 2 files changed, 25 insertions(+) create mode 100644 docs2/pages/documentations/math/math-cube-root.md diff --git a/docs2/pages/documentations/math/math-cube-root.md b/docs2/pages/documentations/math/math-cube-root.md new file mode 100644 index 0000000..1af8d3c --- /dev/null +++ b/docs2/pages/documentations/math/math-cube-root.md @@ -0,0 +1,24 @@ +# Math_CubeRoot + +`Math_CubeRoot` returns the cube root of a specified number. + +```csharp +Math_CubeRoot ( + @value FLOAT (53)) +RETURNS FLOAT (53) +``` + +## Parameters + + - **value**: The number whose cude root is to be found. + +## Returns + +The cube root of a `value`. + +## Example + +```csharp +SELECT SQLNET::Math_CubeRoot(2147483647) +``` + diff --git a/docs2/pages/documentations/math/math.md b/docs2/pages/documentations/math/math.md index b0cb207..9630124 100644 --- a/docs2/pages/documentations/math/math.md +++ b/docs2/pages/documentations/math/math.md @@ -6,4 +6,5 @@ Provides methods for trigonometric, and other common mathematical functions. | :--- | :---------- | :------ | | [Math_BigMul(a, b)](/math-bigmul) | Produces the full product of two 32-bit numbers. | [Try it]()| | [Math_Cosh(value)](/math-cosh) | Returns the hyperbolic cosine of the specified angle. | [Try it]()| +| [Math_CubeRoot(value)](/math-cube-root) | Returns the cube root of a specified number. | [Try it]()| From fbd1040000c25286be06848b6b9c77d927ebad6b Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 12:48:24 +0500 Subject: [PATCH 074/118] Added Math_IEEERemainder and Math_NthRoot articles --- .../documentations/math/math-cube-root.md | 2 +- .../math/math-ieee-remainder.md | 27 +++++++++++++++++++ .../documentations/math/math-nth-root.md | 25 +++++++++++++++++ docs2/pages/documentations/math/math.md | 2 ++ 4 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 docs2/pages/documentations/math/math-ieee-remainder.md create mode 100644 docs2/pages/documentations/math/math-nth-root.md diff --git a/docs2/pages/documentations/math/math-cube-root.md b/docs2/pages/documentations/math/math-cube-root.md index 1af8d3c..6fd7f8b 100644 --- a/docs2/pages/documentations/math/math-cube-root.md +++ b/docs2/pages/documentations/math/math-cube-root.md @@ -19,6 +19,6 @@ The cube root of a `value`. ## Example ```csharp -SELECT SQLNET::Math_CubeRoot(2147483647) +SELECT SQLNET::Math_CubeRoot(8) ``` diff --git a/docs2/pages/documentations/math/math-ieee-remainder.md b/docs2/pages/documentations/math/math-ieee-remainder.md new file mode 100644 index 0000000..ea12e5a --- /dev/null +++ b/docs2/pages/documentations/math/math-ieee-remainder.md @@ -0,0 +1,27 @@ +# Math_IEEERemainder + +`Math_IEEERemainder` returns the remainder resulting from the division of a specified number by another specified number. + +```csharp +Math_IEEERemainder ( + @x INT, + @y INT) +RETURNS BIGINT +``` + +## Parameters + + - **x**: A dividend. + - **y**: A divisor + +## Returns + +A number equal to `x` - (`y` Q), where Q is the quotient of `x` / `y` rounded to the nearest integer (if `x` / `y` falls halfway between two integers, the even integer is returned). + +## Example + +```csharp +SELECT SQLNET::Math_IEEERemainder(3, 2) +SELECT SQLNET::Math_IEEERemainder(-16.3, 4.1) +``` + diff --git a/docs2/pages/documentations/math/math-nth-root.md b/docs2/pages/documentations/math/math-nth-root.md new file mode 100644 index 0000000..0c2678e --- /dev/null +++ b/docs2/pages/documentations/math/math-nth-root.md @@ -0,0 +1,25 @@ +# Math_NthRoot + +`Math_NthRoot` returns the nth root of a specified number. + +```csharp +Math_NthRoot ( + @value FLOAT (53), + @nth FLOAT (53)) +RETURNS FLOAT (53) +``` + +## Parameters + + - **value**: The number whose nth root is to be found. + +## Returns + +The nth root of a `value`. + +## Example + +```csharp +SELECT SQLNET::Math_NthRoot(8) +``` + diff --git a/docs2/pages/documentations/math/math.md b/docs2/pages/documentations/math/math.md index 9630124..90f4a30 100644 --- a/docs2/pages/documentations/math/math.md +++ b/docs2/pages/documentations/math/math.md @@ -7,4 +7,6 @@ Provides methods for trigonometric, and other common mathematical functions. | [Math_BigMul(a, b)](/math-bigmul) | Produces the full product of two 32-bit numbers. | [Try it]()| | [Math_Cosh(value)](/math-cosh) | Returns the hyperbolic cosine of the specified angle. | [Try it]()| | [Math_CubeRoot(value)](/math-cube-root) | Returns the cube root of a specified number. | [Try it]()| +| [Math_IEEERemainder(value)](/math-cube-root) | Returns the remainder resulting from the division of a specified number by another specified number. | [Try it]()| +| [Math_NthRoot(value, nth)](/math-nth-root) | Returns the nth root of a specified number. | [Try it]()| From 0b64c50194af68c2798d37dc3700e71779d4c230 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 14:44:13 +0500 Subject: [PATCH 075/118] Added Math_RemainderInt32, Math_RemainderInt64 article --- .../math/math-remainder-int32.md | 26 +++++++++++++++++++ .../math/math-remainder-int64.md | 25 ++++++++++++++++++ docs2/pages/documentations/math/math.md | 5 ++-- 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 docs2/pages/documentations/math/math-remainder-int32.md create mode 100644 docs2/pages/documentations/math/math-remainder-int64.md diff --git a/docs2/pages/documentations/math/math-remainder-int32.md b/docs2/pages/documentations/math/math-remainder-int32.md new file mode 100644 index 0000000..735e2ed --- /dev/null +++ b/docs2/pages/documentations/math/math-remainder-int32.md @@ -0,0 +1,26 @@ +# Math_RemainderInt32 + +`Math_RemainderInt32` returns the remainder of two 32-bit signed integers. + +```csharp +Math_RemainderInt32 ( + @a INT, + @b INT) +RETURNS INT +``` + +## Parameters + + - **a**: A dividend. + - **b**: A divisor + +## Returns + +The remainder of the specified numbers. + +## Example + +```csharp +SELECT SQLNET::Math_RemainderInt32(2147483647, 2000) +``` + diff --git a/docs2/pages/documentations/math/math-remainder-int64.md b/docs2/pages/documentations/math/math-remainder-int64.md new file mode 100644 index 0000000..c825c05 --- /dev/null +++ b/docs2/pages/documentations/math/math-remainder-int64.md @@ -0,0 +1,25 @@ +# Math_RemainderInt64 + +`Math_RemainderInt64` returns the remainder of two 64-bit signed integers. +```csharp +Math_RemainderInt64 ( + @a INT, + @b INT) +RETURNS INT +``` + +## Parameters + + - **a**: A dividend. + - **b**: A divisor + +## Returns + +The remainder of the specified numbers. + +## Example + +```csharp +SELECT SQLNET::Math_RemainderInt64(2147483647, 2000) +``` + diff --git a/docs2/pages/documentations/math/math.md b/docs2/pages/documentations/math/math.md index 90f4a30..e383026 100644 --- a/docs2/pages/documentations/math/math.md +++ b/docs2/pages/documentations/math/math.md @@ -7,6 +7,7 @@ Provides methods for trigonometric, and other common mathematical functions. | [Math_BigMul(a, b)](/math-bigmul) | Produces the full product of two 32-bit numbers. | [Try it]()| | [Math_Cosh(value)](/math-cosh) | Returns the hyperbolic cosine of the specified angle. | [Try it]()| | [Math_CubeRoot(value)](/math-cube-root) | Returns the cube root of a specified number. | [Try it]()| -| [Math_IEEERemainder(value)](/math-cube-root) | Returns the remainder resulting from the division of a specified number by another specified number. | [Try it]()| +| [Math_IEEERemainder(x, y)](/math-cube-root) | Returns the remainder resulting from the division of a specified number by another specified number. | [Try it]()| | [Math_NthRoot(value, nth)](/math-nth-root) | Returns the nth root of a specified number. | [Try it]()| - +| [Math_RemainderInt32(a, b)](/math-remainder-int32) | Returns the remainder of two 32-bit signed integers. | [Try it]()| +| [Math_RemainderInt64(a, b)](/math-remainder-int32) | Returns the remainder of two 64-bit signed integers. | [Try it]()| From aa43153563ab00d3d2197c1fe4416d6d682a1643 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 15:11:43 +0500 Subject: [PATCH 076/118] Added Math_Sinh, and Math_Tanh article --- docs2/pages/documentations/math/math-Tanh.md | 24 ++++++++++++++++++++ docs2/pages/documentations/math/math-cosh.md | 2 +- docs2/pages/documentations/math/math-sinh.md | 24 ++++++++++++++++++++ docs2/pages/documentations/math/math.md | 2 ++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 docs2/pages/documentations/math/math-Tanh.md create mode 100644 docs2/pages/documentations/math/math-sinh.md diff --git a/docs2/pages/documentations/math/math-Tanh.md b/docs2/pages/documentations/math/math-Tanh.md new file mode 100644 index 0000000..024f42f --- /dev/null +++ b/docs2/pages/documentations/math/math-Tanh.md @@ -0,0 +1,24 @@ +# Math_Tanh + +`Math_Tanh` returns the hyperbolic tangent of the specified angle. + +```csharp +Math_Tanh ( + @value FLOAT (53)) +RETURNS FLOAT (53) +``` + +## Parameters + + - **value**: An angle, measured in radians. + +## Returns + +The hyperbolic tangent of value. If value is equal to NegativeInfinity or PositiveInfinity, PositiveInfinity is returned. If value is equal to NaN, NaN is returned. + +## Example + +```csharp +SELECT SQLNET::Math_Tanh(0.2) +``` + diff --git a/docs2/pages/documentations/math/math-cosh.md b/docs2/pages/documentations/math/math-cosh.md index 5699ad6..fe1e2c2 100644 --- a/docs2/pages/documentations/math/math-cosh.md +++ b/docs2/pages/documentations/math/math-cosh.md @@ -19,6 +19,6 @@ The hyperbolic cosine of value. If value is equal to NegativeInfinity or Positiv ## Example ```csharp -SELECT SQLNET::Math_Cosh(2147483647, 2147483647) +SELECT SQLNET::Math_Cosh(0.1) ``` diff --git a/docs2/pages/documentations/math/math-sinh.md b/docs2/pages/documentations/math/math-sinh.md new file mode 100644 index 0000000..b41c48b --- /dev/null +++ b/docs2/pages/documentations/math/math-sinh.md @@ -0,0 +1,24 @@ +# Math_Sinh + +`Math_Sinh` returns the hyperbolic sine of the specified angle. + +```csharp +Math_Sinh ( + @value FLOAT (53)) +RETURNS FLOAT (53) +``` + +## Parameters + + - **value**: An angle, measured in radians. + +## Returns + +The hyperbolic sine of value. If value is equal to NegativeInfinity or PositiveInfinity, PositiveInfinity is returned. If value is equal to NaN, NaN is returned. + +## Example + +```csharp +SELECT SQLNET::Math_Sinh(0.1) +``` + diff --git a/docs2/pages/documentations/math/math.md b/docs2/pages/documentations/math/math.md index e383026..0f5bccd 100644 --- a/docs2/pages/documentations/math/math.md +++ b/docs2/pages/documentations/math/math.md @@ -11,3 +11,5 @@ Provides methods for trigonometric, and other common mathematical functions. | [Math_NthRoot(value, nth)](/math-nth-root) | Returns the nth root of a specified number. | [Try it]()| | [Math_RemainderInt32(a, b)](/math-remainder-int32) | Returns the remainder of two 32-bit signed integers. | [Try it]()| | [Math_RemainderInt64(a, b)](/math-remainder-int32) | Returns the remainder of two 64-bit signed integers. | [Try it]()| +| [Math_Sinh(value)](/math-sinh) | Returns the hyperbolic sine of the specified angle. | [Try it]()| +| [Math_Tanh(value)](/math-sinh) | Returns the hyperbolic tangent of the specified angle. | [Try it]()| From ef3e5ba3bbce881ef2961a081f880567fc7c1ffb Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 17:30:52 +0500 Subject: [PATCH 077/118] Added Path_ChangeExtension article --- .../path/path-change-extension.md | 26 +++++++++++++++++++ docs2/pages/documentations/path/path.md | 7 +++++ 2 files changed, 33 insertions(+) create mode 100644 docs2/pages/documentations/path/path-change-extension.md create mode 100644 docs2/pages/documentations/path/path.md diff --git a/docs2/pages/documentations/path/path-change-extension.md b/docs2/pages/documentations/path/path-change-extension.md new file mode 100644 index 0000000..3027558 --- /dev/null +++ b/docs2/pages/documentations/path/path-change-extension.md @@ -0,0 +1,26 @@ +# Path_ChangeExtension + +`Path_ChangeExtension` returns a new string in which all occurrences of a specified `oldValye` Unicode character or String in the `source` string are replaced with another specified `newValue` Unicode character or String. + +```csharp +Path_ChangeExtension ( + @path NVARCHAR (4000), + @extension NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Parameters + + - **path**: The path information to modify. + - **extension**: The new extension (with or without a leading period). Specify `null` to remove an existing extension from `path`. + +## Returns + + - The modified path information. + +## Example + +```csharp +SELECT SQLNET::Path_ChangeExtension('C:\Temp\MyTest.txt', '.ext') +``` diff --git a/docs2/pages/documentations/path/path.md b/docs2/pages/documentations/path/path.md new file mode 100644 index 0000000..93fda55 --- /dev/null +++ b/docs2/pages/documentations/path/path.md @@ -0,0 +1,7 @@ +# Path + +Performs operations on string instances that contain file or directory path information. These operations are performed in a cross-platform manner. + +| Name | Description | Example | +| :--- | :---------- | :------ | +| [Path_ChangeExtension(path, extension)](/path-change-extension) | Changes the extension of a path string. | [Try it]()| From 8a43d8a430c259a8d7a749992a8c1abfb52a44d0 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 17:41:56 +0500 Subject: [PATCH 078/118] Added Path_Combine article --- .../pages/documentations/path/path-combine.md | 26 +++++++++++++++++++ docs2/pages/documentations/path/path.md | 1 + 2 files changed, 27 insertions(+) create mode 100644 docs2/pages/documentations/path/path-combine.md diff --git a/docs2/pages/documentations/path/path-combine.md b/docs2/pages/documentations/path/path-combine.md new file mode 100644 index 0000000..6f43ff2 --- /dev/null +++ b/docs2/pages/documentations/path/path-combine.md @@ -0,0 +1,26 @@ +# Path_Combine + +`Path_Combine` combines two strings into a path. + +```csharp +Path_Combine ( + @path1 NVARCHAR (4000), + @path2 NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Parameters + + - **path1**: The first path to combine. + - **path2**: The second path to combine. + +## Returns + + - The combined paths. If one of the specified paths is a zero-length string, this method returns the other path. If `path2` contains an absolute path, this method returns `path2`. + +## Example + +```csharp +SELECT SQLNET::Path_Combine('C:\Temp\', 'MyTest.txt') +``` diff --git a/docs2/pages/documentations/path/path.md b/docs2/pages/documentations/path/path.md index 93fda55..c16aeec 100644 --- a/docs2/pages/documentations/path/path.md +++ b/docs2/pages/documentations/path/path.md @@ -5,3 +5,4 @@ Performs operations on string instances that contain file or directory path info | Name | Description | Example | | :--- | :---------- | :------ | | [Path_ChangeExtension(path, extension)](/path-change-extension) | Changes the extension of a path string. | [Try it]()| +| [Path_Combine(path1, path2)](/path-combine) | Combines two strings into a path. | [Try it]()| From 793c90ff896a6f95f8edf3ec83da9dbcf9acd5b7 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 18:01:00 +0500 Subject: [PATCH 079/118] Added Path_GetDirectoryName article --- .../path/path-get-directory-name.md | 24 +++++++++++++++++++ docs2/pages/documentations/path/path.md | 1 + 2 files changed, 25 insertions(+) create mode 100644 docs2/pages/documentations/path/path-get-directory-name.md diff --git a/docs2/pages/documentations/path/path-get-directory-name.md b/docs2/pages/documentations/path/path-get-directory-name.md new file mode 100644 index 0000000..6a5337c --- /dev/null +++ b/docs2/pages/documentations/path/path-get-directory-name.md @@ -0,0 +1,24 @@ +# Path_GetDirectoryName + +`Path_GetDirectoryName` returns the directory information for the specified path string. + +```csharp +Path_GetDirectoryName ( + @path NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Parameters + + - **path**: The path of a file or directory. + +## Returns + + - Directory information for `path`, or `null` if path denotes a root directory or is `null`. Returns Empty if `path` does not contain directory information. + +## Example + +```csharp +SELECT SQLNET::Path_GetDirectoryName('C:\Temp\MyTest.txt') +``` diff --git a/docs2/pages/documentations/path/path.md b/docs2/pages/documentations/path/path.md index c16aeec..4697bf6 100644 --- a/docs2/pages/documentations/path/path.md +++ b/docs2/pages/documentations/path/path.md @@ -6,3 +6,4 @@ Performs operations on string instances that contain file or directory path info | :--- | :---------- | :------ | | [Path_ChangeExtension(path, extension)](/path-change-extension) | Changes the extension of a path string. | [Try it]()| | [Path_Combine(path1, path2)](/path-combine) | Combines two strings into a path. | [Try it]()| +| [Path_GetDirectoryName(path)](/path-get-directory-name) | Returns the directory information for the specified path string. | [Try it]()| From 47fd1f40b9ee9e80d4dfd8b4c228f01becd2e280 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 20:33:05 +0500 Subject: [PATCH 080/118] Added Path_GetExtension and Path_GetFileName article --- .../documentations/path/path-get-extension.md | 24 +++++++++++++++++++ .../documentations/path/path-get-file-name.md | 24 +++++++++++++++++++ docs2/pages/documentations/path/path.md | 2 ++ 3 files changed, 50 insertions(+) create mode 100644 docs2/pages/documentations/path/path-get-extension.md create mode 100644 docs2/pages/documentations/path/path-get-file-name.md diff --git a/docs2/pages/documentations/path/path-get-extension.md b/docs2/pages/documentations/path/path-get-extension.md new file mode 100644 index 0000000..714c29c --- /dev/null +++ b/docs2/pages/documentations/path/path-get-extension.md @@ -0,0 +1,24 @@ +# Path_GetExtension + +`Path_GetExtension` returns the extension of the specified path string. + +```csharp +Path_GetExtension ( + @path NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Parameters + + - **path**: The path string from which to get the extension. + +## Returns + +The extension of the specified path (including the period "."), or null, or empty string. If `path` is null, it returns null. If path does not have extension information, it returns empty string. + +## Example + +```csharp +SELECT SQLNET::Path_GetExtension('C:\Temp\MyTest.txt') +``` diff --git a/docs2/pages/documentations/path/path-get-file-name.md b/docs2/pages/documentations/path/path-get-file-name.md new file mode 100644 index 0000000..21433c5 --- /dev/null +++ b/docs2/pages/documentations/path/path-get-file-name.md @@ -0,0 +1,24 @@ +# Path_GetFileName + +`Path_GetFileName` returns the file name and extension of the specified path string. + +```csharp +Path_GetFileName ( + @path NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Parameters + + - **path**: The path string from which to obtain the file name and extension. + +## Returns + +The characters after the last directory character in `path`. If the last character of `path` is a directory or volume separator character, this method returns empty string. If `path` is `null`, this method returns `null`. + +## Example + +```csharp +SELECT SQLNET::Path_GetFileName('C:\Temp\MyTest.txt') +``` diff --git a/docs2/pages/documentations/path/path.md b/docs2/pages/documentations/path/path.md index 4697bf6..c03a79a 100644 --- a/docs2/pages/documentations/path/path.md +++ b/docs2/pages/documentations/path/path.md @@ -7,3 +7,5 @@ Performs operations on string instances that contain file or directory path info | [Path_ChangeExtension(path, extension)](/path-change-extension) | Changes the extension of a path string. | [Try it]()| | [Path_Combine(path1, path2)](/path-combine) | Combines two strings into a path. | [Try it]()| | [Path_GetDirectoryName(path)](/path-get-directory-name) | Returns the directory information for the specified path string. | [Try it]()| +| [Path_GetExtension(path)](/path-get-extension) | Returns the extension of the specified path string. | [Try it]()| +| [Path_GetFileName(path)](/path-get-file-name) | Returns the file name and extension of the specified path string. | [Try it]()| From e637877721648c68a25fff3f9c3a702a2ee4bc5c Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 20:56:30 +0500 Subject: [PATCH 081/118] Added Path_GetFileNameWithoutExtension article --- .../path-get-file-name-without-extension.md | 24 +++++++++++++++++++ docs2/pages/documentations/path/path.md | 1 + 2 files changed, 25 insertions(+) create mode 100644 docs2/pages/documentations/path/path-get-file-name-without-extension.md diff --git a/docs2/pages/documentations/path/path-get-file-name-without-extension.md b/docs2/pages/documentations/path/path-get-file-name-without-extension.md new file mode 100644 index 0000000..d099315 --- /dev/null +++ b/docs2/pages/documentations/path/path-get-file-name-without-extension.md @@ -0,0 +1,24 @@ +# Path_GetFileNameWithoutExtension + +`Path_GetFileNameWithoutExtension` returns the file name and extension of the specified path string without the extension. + +```csharp +Path_GetFileNameWithoutExtension ( + @path NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Parameters + + - **path**: The path string from which to obtain the file name and extension. + +## Returns + +The path string minus the last period (.) and all characters following it. + +## Example + +```csharp +SELECT SQLNET::Path_GetFileNameWithoutExtension('C:\Temp\MyTest.txt') +``` diff --git a/docs2/pages/documentations/path/path.md b/docs2/pages/documentations/path/path.md index c03a79a..29bf55d 100644 --- a/docs2/pages/documentations/path/path.md +++ b/docs2/pages/documentations/path/path.md @@ -9,3 +9,4 @@ Performs operations on string instances that contain file or directory path info | [Path_GetDirectoryName(path)](/path-get-directory-name) | Returns the directory information for the specified path string. | [Try it]()| | [Path_GetExtension(path)](/path-get-extension) | Returns the extension of the specified path string. | [Try it]()| | [Path_GetFileName(path)](/path-get-file-name) | Returns the file name and extension of the specified path string. | [Try it]()| +| [Path_GetFileNameWithoutExtension(path)](/path-get-file-name-without-extension) | Returns the file name and extension of the specified path string without the extension. | [Try it]()| From 5b5753bb2e3b13f72fc72e24849cff45c20a677c Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 21:11:25 +0500 Subject: [PATCH 082/118] Added Path_GetFullPath article --- .../documentations/path/path-get-full-path.md | 24 +++++++++++++++++++ docs2/pages/documentations/path/path.md | 1 + 2 files changed, 25 insertions(+) create mode 100644 docs2/pages/documentations/path/path-get-full-path.md diff --git a/docs2/pages/documentations/path/path-get-full-path.md b/docs2/pages/documentations/path/path-get-full-path.md new file mode 100644 index 0000000..d87a1de --- /dev/null +++ b/docs2/pages/documentations/path/path-get-full-path.md @@ -0,0 +1,24 @@ +# Path_GetFullPath + +`Path_GetFullPath` returns the absolute path for the specified path string. + +```csharp +Path_GetFullPath ( + @path NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Parameters + + - **path**: The file or directory for which to obtain absolute path information. + +## Returns + +The fully qualified location of `path`. + +## Example + +```csharp +SELECT SQLNET::Path_GetFullPath('MyTest.txt') +``` diff --git a/docs2/pages/documentations/path/path.md b/docs2/pages/documentations/path/path.md index 29bf55d..66076d2 100644 --- a/docs2/pages/documentations/path/path.md +++ b/docs2/pages/documentations/path/path.md @@ -10,3 +10,4 @@ Performs operations on string instances that contain file or directory path info | [Path_GetExtension(path)](/path-get-extension) | Returns the extension of the specified path string. | [Try it]()| | [Path_GetFileName(path)](/path-get-file-name) | Returns the file name and extension of the specified path string. | [Try it]()| | [Path_GetFileNameWithoutExtension(path)](/path-get-file-name-without-extension) | Returns the file name and extension of the specified path string without the extension. | [Try it]()| +| [Path_GetFullPath(path)](/path-get-full-path) | Returns the absolute path for the specified path string. | [Try it]()| From dd8ebcdcf24575fbe889423d25542129e276d8cb Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 21:29:57 +0500 Subject: [PATCH 083/118] Added Path_GetPathRoot article --- .../documentations/path/path-get-path-root.md | 24 +++++++++++++++++++ docs2/pages/documentations/path/path.md | 1 + 2 files changed, 25 insertions(+) create mode 100644 docs2/pages/documentations/path/path-get-path-root.md diff --git a/docs2/pages/documentations/path/path-get-path-root.md b/docs2/pages/documentations/path/path-get-path-root.md new file mode 100644 index 0000000..9b43fa7 --- /dev/null +++ b/docs2/pages/documentations/path/path-get-path-root.md @@ -0,0 +1,24 @@ +# Path_GetPathRoot + +`Path_GetPathRoot` returns the root directory information of the specified path. + +```csharp +Path_GetPathRoot ( + @path NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Parameters + + - **path**: The path from which to obtain root directory information. + +## Returns + +The root directory of `path`, or `null` if `path` is `null`, or an empty string if `path` does not contain root directory information. + +## Example + +```csharp +SELECT SQLNET::Path_GetPathRoot('MyTest.txt') +``` diff --git a/docs2/pages/documentations/path/path.md b/docs2/pages/documentations/path/path.md index 66076d2..18e41b1 100644 --- a/docs2/pages/documentations/path/path.md +++ b/docs2/pages/documentations/path/path.md @@ -11,3 +11,4 @@ Performs operations on string instances that contain file or directory path info | [Path_GetFileName(path)](/path-get-file-name) | Returns the file name and extension of the specified path string. | [Try it]()| | [Path_GetFileNameWithoutExtension(path)](/path-get-file-name-without-extension) | Returns the file name and extension of the specified path string without the extension. | [Try it]()| | [Path_GetFullPath(path)](/path-get-full-path) | Returns the absolute path for the specified path string. | [Try it]()| +| [Path_GetPathRoot(path)](/path-get-path-root) | Returns the root directory information of the specified path. | [Try it]()| From f4e6250d2f4cc53ccf27f0b141ff9a2bc5444bb3 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Tue, 11 Dec 2018 21:40:48 +0500 Subject: [PATCH 084/118] Added Path_GetRandomFileName article --- .../path/path-get-random-file-name.md | 18 ++++++++++++++++++ docs2/pages/documentations/path/path.md | 1 + 2 files changed, 19 insertions(+) create mode 100644 docs2/pages/documentations/path/path-get-random-file-name.md diff --git a/docs2/pages/documentations/path/path-get-random-file-name.md b/docs2/pages/documentations/path/path-get-random-file-name.md new file mode 100644 index 0000000..25723c4 --- /dev/null +++ b/docs2/pages/documentations/path/path-get-random-file-name.md @@ -0,0 +1,18 @@ +# Path_GetRandomFileName + +`Path_GetRandomFileName` returns a random folder name or file name. + +```csharp +Path_GetRandomFileName () +RETURNS NVARCHAR (4000) +``` + +## Returns + +A random folder name or file name. + +## Example + +```csharp +SELECT SQLNET::Path_GetRandomFileName() +``` diff --git a/docs2/pages/documentations/path/path.md b/docs2/pages/documentations/path/path.md index 18e41b1..2d07161 100644 --- a/docs2/pages/documentations/path/path.md +++ b/docs2/pages/documentations/path/path.md @@ -12,3 +12,4 @@ Performs operations on string instances that contain file or directory path info | [Path_GetFileNameWithoutExtension(path)](/path-get-file-name-without-extension) | Returns the file name and extension of the specified path string without the extension. | [Try it]()| | [Path_GetFullPath(path)](/path-get-full-path) | Returns the absolute path for the specified path string. | [Try it]()| | [Path_GetPathRoot(path)](/path-get-path-root) | Returns the root directory information of the specified path. | [Try it]()| +| [Path_GetRandomFileName()](/path-get-random-file-name) | Returns a random folder name or file name. | [Try it]()| From bba1c5e225e5d1c6a3d9e4598cf45f99e96df16d Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 12 Dec 2018 07:38:26 +0500 Subject: [PATCH 085/118] Added Path_GetTempFileName article --- .../path/path-get-temp-file-name.md | 18 ++++++++++++++++++ docs2/pages/documentations/path/path.md | 1 + 2 files changed, 19 insertions(+) create mode 100644 docs2/pages/documentations/path/path-get-temp-file-name.md diff --git a/docs2/pages/documentations/path/path-get-temp-file-name.md b/docs2/pages/documentations/path/path-get-temp-file-name.md new file mode 100644 index 0000000..9ca9d27 --- /dev/null +++ b/docs2/pages/documentations/path/path-get-temp-file-name.md @@ -0,0 +1,18 @@ +# Path_GetTempFileName + +`Path_GetTempFileName` creates a uniquely named, zero-byte temporary file on disk and returns the full path of that file. + +```csharp +Path_GetTempFileName () +RETURNS NVARCHAR (4000) +``` + +## Returns + +The full path of the temporary file. + +## Example + +```csharp +SELECT SQLNET::Path_GetTempFileName() +``` diff --git a/docs2/pages/documentations/path/path.md b/docs2/pages/documentations/path/path.md index 2d07161..2fde485 100644 --- a/docs2/pages/documentations/path/path.md +++ b/docs2/pages/documentations/path/path.md @@ -13,3 +13,4 @@ Performs operations on string instances that contain file or directory path info | [Path_GetFullPath(path)](/path-get-full-path) | Returns the absolute path for the specified path string. | [Try it]()| | [Path_GetPathRoot(path)](/path-get-path-root) | Returns the root directory information of the specified path. | [Try it]()| | [Path_GetRandomFileName()](/path-get-random-file-name) | Returns a random folder name or file name. | [Try it]()| +| [Path_GetTempFileName()](/path-get-temp-file-name) | Creates a uniquely named, zero-byte temporary file on disk and returns the full path of that file. | [Try it]()| From 6633b0c1abb6d9e7fc08f432da2d44d40fd137e6 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 12 Dec 2018 07:57:33 +0500 Subject: [PATCH 086/118] Added Path_GetTempPath article --- .../documentations/path/path-get-temp-path.md | 18 ++++++++++++++++++ docs2/pages/documentations/path/path.md | 1 + 2 files changed, 19 insertions(+) create mode 100644 docs2/pages/documentations/path/path-get-temp-path.md diff --git a/docs2/pages/documentations/path/path-get-temp-path.md b/docs2/pages/documentations/path/path-get-temp-path.md new file mode 100644 index 0000000..6205700 --- /dev/null +++ b/docs2/pages/documentations/path/path-get-temp-path.md @@ -0,0 +1,18 @@ +# Path_GetTempPath + +`Path_GetTempPath` returns the path of the current user's temporary folder. + +```csharp +Path_GetTempPath () +RETURNS NVARCHAR (4000) +``` + +## Returns + +The path to the temporary folder, ending with a backslash. + +## Example + +```csharp +SELECT SQLNET::Path_GetTempPath() +``` diff --git a/docs2/pages/documentations/path/path.md b/docs2/pages/documentations/path/path.md index 2fde485..6e18f6c 100644 --- a/docs2/pages/documentations/path/path.md +++ b/docs2/pages/documentations/path/path.md @@ -14,3 +14,4 @@ Performs operations on string instances that contain file or directory path info | [Path_GetPathRoot(path)](/path-get-path-root) | Returns the root directory information of the specified path. | [Try it]()| | [Path_GetRandomFileName()](/path-get-random-file-name) | Returns a random folder name or file name. | [Try it]()| | [Path_GetTempFileName()](/path-get-temp-file-name) | Creates a uniquely named, zero-byte temporary file on disk and returns the full path of that file. | [Try it]()| +| [Path_GetTempPath()](/path-get-temp-path) | Returns the path of the current user's temporary folder. | [Try it]()| From 50159d6fa71e98a570fdf402ca0f530b07f03438 Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 12 Dec 2018 08:14:59 +0500 Subject: [PATCH 087/118] Added Path_HasExtension article --- .../documentations/path/path-has-extension.md | 24 +++++++++++++++++++ docs2/pages/documentations/path/path.md | 2 ++ 2 files changed, 26 insertions(+) create mode 100644 docs2/pages/documentations/path/path-has-extension.md diff --git a/docs2/pages/documentations/path/path-has-extension.md b/docs2/pages/documentations/path/path-has-extension.md new file mode 100644 index 0000000..19214e6 --- /dev/null +++ b/docs2/pages/documentations/path/path-has-extension.md @@ -0,0 +1,24 @@ +# Path_HasExtension + +`Path_HasExtension` determines whether a path includes a file name extension. + +```csharp +Path_HasExtension ( + @path NVARCHAR (4000) + ) +RETURNS NVARCHAR (4000) +``` + +## Parameters + + - **path**: The path to search for an extension. + +## Returns + +`true` if the characters that follow the last directory separator (\\ or /) or volume separator (:) in the path include a period (.) followed by one or more characters; otherwise, `false`. + +## Example + +```csharp +SELECT SQLNET::Path_HasExtension('C:\Temp\MyTest.txt') +``` diff --git a/docs2/pages/documentations/path/path.md b/docs2/pages/documentations/path/path.md index 6e18f6c..51f2aca 100644 --- a/docs2/pages/documentations/path/path.md +++ b/docs2/pages/documentations/path/path.md @@ -15,3 +15,5 @@ Performs operations on string instances that contain file or directory path info | [Path_GetRandomFileName()](/path-get-random-file-name) | Returns a random folder name or file name. | [Try it]()| | [Path_GetTempFileName()](/path-get-temp-file-name) | Creates a uniquely named, zero-byte temporary file on disk and returns the full path of that file. | [Try it]()| | [Path_GetTempPath()](/path-get-temp-path) | Returns the path of the current user's temporary folder. | [Try it]()| +| [Path_GetFileName(path)](/path-get-file-name) | Returns the file name and extension of the specified path string. | [Try it]()| +| [Path_HasExtension(path)](/path-get-has-extension) | Determines whether a path includes a file name extension. | [Try it]()| From 599942ecdc2e7c9aae83067f254323a6341efb4d Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 12 Dec 2018 08:35:17 +0500 Subject: [PATCH 088/118] Added Path_IsPathRooted article --- .../documentations/path/path-has-extension.md | 4 ++-- .../path/path-is-path-rooted.md | 24 +++++++++++++++++++ docs2/pages/documentations/path/path.md | 1 + 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 docs2/pages/documentations/path/path-is-path-rooted.md diff --git a/docs2/pages/documentations/path/path-has-extension.md b/docs2/pages/documentations/path/path-has-extension.md index 19214e6..af22a94 100644 --- a/docs2/pages/documentations/path/path-has-extension.md +++ b/docs2/pages/documentations/path/path-has-extension.md @@ -6,7 +6,7 @@ Path_HasExtension ( @path NVARCHAR (4000) ) -RETURNS NVARCHAR (4000) +RETURNS BIT ``` ## Parameters @@ -15,7 +15,7 @@ RETURNS NVARCHAR (4000) ## Returns -`true` if the characters that follow the last directory separator (\\ or /) or volume separator (:) in the path include a period (.) followed by one or more characters; otherwise, `false`. +`true` if the characters that follow the last directory separator (\\ or /) or volume separator (:) in the path include a period (.) followed by one or more characters; otherwise, `false`. ## Example diff --git a/docs2/pages/documentations/path/path-is-path-rooted.md b/docs2/pages/documentations/path/path-is-path-rooted.md new file mode 100644 index 0000000..f5510c2 --- /dev/null +++ b/docs2/pages/documentations/path/path-is-path-rooted.md @@ -0,0 +1,24 @@ +# Path_IsPathRooted + +`Path_IsPathRooted` gets a value indicating whether the specified path string contains a root. + +```csharp +Path_IsPathRooted ( + @path NVARCHAR (4000) + ) +RETURNS BIT +``` + +## Parameters + + - **path**: The path to test. + +## Returns + +`true` if path contains a root; otherwise, `false`. + +## Example + +```csharp +SELECT SQLNET::Path_IsPathRooted('C:\Temp\MyTest.txt') +``` diff --git a/docs2/pages/documentations/path/path.md b/docs2/pages/documentations/path/path.md index 51f2aca..b4d6b8e 100644 --- a/docs2/pages/documentations/path/path.md +++ b/docs2/pages/documentations/path/path.md @@ -17,3 +17,4 @@ Performs operations on string instances that contain file or directory path info | [Path_GetTempPath()](/path-get-temp-path) | Returns the path of the current user's temporary folder. | [Try it]()| | [Path_GetFileName(path)](/path-get-file-name) | Returns the file name and extension of the specified path string. | [Try it]()| | [Path_HasExtension(path)](/path-get-has-extension) | Determines whether a path includes a file name extension. | [Try it]()| +| [Path_IsPathRooted(path)](/path-get-is-path-rooted) | Gets a value indicating whether the specified path string contains a root. | [Try it]()| From 9412c4bf25f089201663504f608a6df69a70ccff Mon Sep 17 00:00:00 2001 From: waqasm78 Date: Wed, 12 Dec 2018 10:17:48 +0500 Subject: [PATCH 089/118] Update path-is-path-rooted.md --- docs2/pages/documentations/path/path-is-path-rooted.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs2/pages/documentations/path/path-is-path-rooted.md b/docs2/pages/documentations/path/path-is-path-rooted.md index f5510c2..fcec3c4 100644 --- a/docs2/pages/documentations/path/path-is-path-rooted.md +++ b/docs2/pages/documentations/path/path-is-path-rooted.md @@ -21,4 +21,5 @@ RETURNS BIT ```csharp SELECT SQLNET::Path_IsPathRooted('C:\Temp\MyTest.txt') +SELECT SQLNET::Path_IsPathRooted('Temp\MyTest.txt') ``` From 53355666d206b24413e6c1f9a9bb39b8724f0c89 Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Mon, 15 Jul 2019 16:10:07 -0400 Subject: [PATCH 090/118] Update sql-server-regex.md --- docs2/pages/troubleshooting/sql-server-regex.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs2/pages/troubleshooting/sql-server-regex.md b/docs2/pages/troubleshooting/sql-server-regex.md index 31c80fc..7339cf7 100644 --- a/docs2/pages/troubleshooting/sql-server-regex.md +++ b/docs2/pages/troubleshooting/sql-server-regex.md @@ -2,7 +2,7 @@ ## Introduction -Finding or replacing text in SQL is a very frequent scenario. "LIKE" and "PATINDEX" are often used but, unfortunately, are not close to be as much powerful and offering the same possibilities as regular expression (Regex) does. +Finding or replacing text in SQL is a very frequent scenario. "LIKE" and "PATINDEX" are often used but, unfortunately, are not close to be as powerful and offering the same possibilities as regular expression (Regex) does. Eval SQL.NET lets you use and exploit fully C# regular expression features directly in T-SQL stored procedures, functions and triggers. It's possible to use regex in SQL search condition and select statement. @@ -82,7 +82,7 @@ DECLARE @website VARCHAR(255) = NULL; IF ( @website IS NULL ) BEGIN - -- IF user has not specified a website, try get it from the short description + -- IF user has not specified a website, try to get it from the short description SET @website = SQLNET::New(' string value = Regex.Match(shortDescription, "(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})").Value; From 5c4e31bbdc99b67109989b59b203a3a730f6abc9 Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Mon, 15 Jul 2019 21:00:12 -0400 Subject: [PATCH 091/118] Update sql-server-function.md --- docs2/pages/troubleshooting/sql-server-function.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs2/pages/troubleshooting/sql-server-function.md b/docs2/pages/troubleshooting/sql-server-function.md index 6fbcc48..bd10f56 100644 --- a/docs2/pages/troubleshooting/sql-server-function.md +++ b/docs2/pages/troubleshooting/sql-server-function.md @@ -215,7 +215,7 @@ Using this feature is highly **NOT RECOMMENDED**. ## Conclusion -Eval SQL.NET improve the readability and make the code easier to develop and maintain with C# syntax over complex SQL code. +Eval SQL.NET improves the readability and make the code easier to develop and maintain with C# syntax over complex SQL code. Even if you are now allowed to make some table modifications, we don't recommend using this feature and use a stored procedure instead. Make sure you use the right tool for the right job. From 62e3f379d0a27cebd22651035896054dd8e8306c Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Mon, 15 Jul 2019 21:21:52 -0400 Subject: [PATCH 092/118] Update sql-server-eval.md --- docs2/pages/troubleshooting/sql-server-eval.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs2/pages/troubleshooting/sql-server-eval.md b/docs2/pages/troubleshooting/sql-server-eval.md index aa9b2d9..af60cbb 100644 --- a/docs2/pages/troubleshooting/sql-server-eval.md +++ b/docs2/pages/troubleshooting/sql-server-eval.md @@ -4,7 +4,7 @@ How to evaluate an arithmetic expression in SQL Server is a common subject. There are several reasons why an "Eval" function like JavaScript could be useful in SQL such as evaluating custom report fields for a trusted user. -Multiple partial solutions exists like using "EXEC(Transact-SQL)" which is limited, cannot be used inside SELECT statement and lead to SQL Injection or using an homemade function which, most of time, fail at supporting simple operator priority and parenthesis. +Multiple partial solutions exist like using "EXEC(Transact-SQL)" which is limited, it cannot be used inside SELECT statement and lead to SQL Injection or using an homemade function which, most of time, fail supporting simple operator priorities and parenthesis. **SQL Eval.NET** is a complete solution which, not only lets you evaluate dynamic arithmetic expression, but lets you use the full C# language directly in T-SQL stored procedures, functions and triggers. @@ -119,7 +119,7 @@ EXEC Select_Switch 4, 2, 3 ### Problem -You have a complex SQL and you know C# Syntax and C# Object could make this problem very easy. +You have a complex SQL and you know C# Syntax and C# Object could very easily solve this problem. - Regex - DirectoryInfo / FileInfo @@ -127,7 +127,7 @@ You have a complex SQL and you know C# Syntax and C# Object could make this prob ### Solution -Eval SQL.NET improve readability and maintainability over complex SQL. It supports all [.NET framework class libraries](https://msdn.microsoft.com/en-us/library/gg145045.aspx) (FCL) that are supported by [SQL CLR Framework Libraries](https://docs.microsoft.com/en-us/sql/relational-databases/clr-integration/database-objects/supported-net-framework-libraries). +Eval SQL.NET improves readability and maintainability over complex SQL. It supports all [.NET framework class libraries](https://msdn.microsoft.com/en-us/library/gg145045.aspx) (FCL) that are supported by [SQL CLR Framework Libraries](https://docs.microsoft.com/en-us/sql/relational-databases/clr-integration/database-objects/supported-net-framework-libraries). ```csharp @@ -148,7 +148,7 @@ FROM @t AS A ## Conclusion -Eval SQL.NET can really be seen in SQL Server as the function "eval()" equivalent of JavaScript. Unlike common solutions limited to very simple math expressions, Eval SQL.NET features go way beyond: +Eval SQL.NET can be seen in SQL Server as the function "eval()" equivalent of JavaScript. Unlike common solutions limited to very simple math expressions, Eval SQL.NET features go way beyond: - Access to C# Operators - Access to C# Keywords From 18cca0a56e145e7d19fb5efba52dc1ac9e386776 Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Mon, 15 Jul 2019 21:26:04 -0400 Subject: [PATCH 093/118] Update pricing.md --- docs2/pages/site/pricing.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/docs2/pages/site/pricing.md b/docs2/pages/site/pricing.md index 10f0221..a3b3230 100644 --- a/docs2/pages/site/pricing.md +++ b/docs2/pages/site/pricing.md @@ -82,38 +82,36 @@ --- ## FAQ -### Which payment alternative method are accepted? +### Which payment alternative methods are accepted? We accept `PayPal`, `Cheque` and `Wire Transfer`. -We **DO NOT** accept bitcoin and credit card. - Please contact us for more information. Email: sales@zzzprojects.com ### Do you accept reseller? -Yes contact us if you are a reseller or seeking for a reseller. +Yes, contact us if you are a reseller or seeking for a reseller. Email: sales@zzzprojects.com ### What `2-4` developer seats mean? -It mean that you can use the license with up 4 developers inside your team. +It means that you can use the license for up 4 developers inside your team. -The `5-9` developer seats mean you can use the license with up 9 developers. +The `5-9` developer seats mean you can use the license for up to 9 developers. You only pay for developer seats. You can use our library with an unlimited amount of application, environment, server, and client machine. ### I need more than `19 seats`, what can I do? -Please contact us with the number of seats required. We offer some additional great discount or enterprise license. +Please contact us with the number of seats required. We offer some additional great discounts or enterprise license. Email: sales@zzzprojects.com ### Is the license perpetual? -The product comes with a one year of support & upgrade but the license is perpetual (indefinitely use). So you are not forced to renew every year or renew at all. +The product comes with a one year of support & upgrade but the license is perpetual (indefinitely use). So, you are not forced to renew every year or renew at all. -Renewing come with a lot of benefits such as a 25%/35%/50% discount on purchase price, discounted or free product, etc. +Renewing comes with a lot of benefits such as a 25%/35%/50% discount on purchase price, discounted or free product, etc. -### Why this library is not free and open source? +### Why is this library not free and open source? `ZZZ Projects` mission is focused on adding value to the `.NET Community` and supporting a lot of `free and open source` libraries. However, this mission cannot be successful without being able to pay our developers for the time they pass to support & develop features for free and paid libraries. @@ -133,7 +131,7 @@ However, this mission cannot be successful without being able to pay our develop - [NuGet Must Haves](http://nugetmusthaves.com/){:target="_blank"} - [Dapper Tutorial](http://dapper-tutorial.net/){:target="_blank"} -By contributing on paid libraries, you are also helping in keeping other libraries and website FREE. +By contributing on paid libraries, you also help keeping other libraries and websites FREE. @@ -189,4 +187,4 @@ function selectProduct() { } selectProduct(); - \ No newline at end of file + From d705ef1cf79fb59e1e8c8227ad421fa29a759625 Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Wed, 17 Jul 2019 10:33:59 -0400 Subject: [PATCH 094/118] Update tutorial-introduction.md --- docs2/pages/getting-started/tutorial-introduction.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs2/pages/getting-started/tutorial-introduction.md b/docs2/pages/getting-started/tutorial-introduction.md index 900cd4a..15ca09e 100644 --- a/docs2/pages/getting-started/tutorial-introduction.md +++ b/docs2/pages/getting-started/tutorial-introduction.md @@ -1,14 +1,14 @@ # Introduction ## Introduction -Entity Framework Extensions allow you to improve dramatically your save operations performance. +Entity Framework Extensions allows you to improve dramatically your save operations performance. It's easy to use, and easy to customize. ## Bulk SaveChanges The BulkSaveChanges works like SaveChanges but way faster. -BulkSaveChanges use Bulk Operations to save all entities in the Change Tracker efficiently instead of performing a database round-trip for every entity like SaveChanges does. +BulkSaveChanges uses Bulk Operations to save all entities in the Change Tracker efficiently instead of performing a database round-trip for every entity like SaveChanges does. BulkSaveChanges support everything: From 6549d6e7c1b790d6a507f1f46840b9f990e2c4e1 Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Wed, 17 Jul 2019 10:35:56 -0400 Subject: [PATCH 095/118] Update regular-expressions.md --- docs2/pages/getting-started/regular-expressions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs2/pages/getting-started/regular-expressions.md b/docs2/pages/getting-started/regular-expressions.md index d904bca..9ccc54b 100644 --- a/docs2/pages/getting-started/regular-expressions.md +++ b/docs2/pages/getting-started/regular-expressions.md @@ -10,7 +10,7 @@ Use Regex flexibility to overcome "LIKE" and "PATINDEX" limitations. All Regex m - Replace - Split -### Find rows with invalid email +### Find rows with invalid emails ```csharp @@ -33,7 +33,7 @@ WHERE @valid_email.Val('email', Email).EvalBit() = 0 ``` {% include component-try-it.html href='http://sqlfiddle.com/#!18/58f2b/1' %} -### Find and insert in a table, all website from a text +### Find and insert in a table, all websites from a text From 42c8f9d26d5c3333478bb26aca38847a231a1d02 Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Wed, 17 Jul 2019 10:38:51 -0400 Subject: [PATCH 096/118] Update overview.md --- docs2/pages/getting-started/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs2/pages/getting-started/overview.md b/docs2/pages/getting-started/overview.md index 0b446b2..98ec783 100644 --- a/docs2/pages/getting-started/overview.md +++ b/docs2/pages/getting-started/overview.md @@ -2,7 +2,7 @@ ## Definition -**Eval SQL.NET** is a library that allow to evaluate dynamically C# expression directly in T-SQL. You never used Eval SQL.NET? Don't worry, this step-by-step walkthrough will help you to understand the library. +**Eval SQL.NET** is a library that allows to evaluate dynamically C# expression directly in T-SQL. You never used Eval SQL.NET? Don't worry, this step-by-step walkthrough will help you understand the library. Provide to your SQL Server all missing pieces like regular expression and dynamic arithmetic string evaluation. From 2fdf927b40443feb79fae9d79b38c966cfe9aca1 Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Wed, 17 Jul 2019 10:45:26 -0400 Subject: [PATCH 097/118] Update licensing.md --- docs2/pages/getting-started/licensing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs2/pages/getting-started/licensing.md b/docs2/pages/getting-started/licensing.md index 2260e90..376b325 100644 --- a/docs2/pages/getting-started/licensing.md +++ b/docs2/pages/getting-started/licensing.md @@ -3,7 +3,7 @@ ## Evaluation Period - You can evaluate the library for several months before purchasing it. - The latest version always contains a trial that expires at the **end of the month**. -- You can extend your trial for several months by downloading the latest version at the start of every month. +- You can extend your trial for several months by downloading the latest version at the beginning of each month. ## How can I purchase the library? - You can purchase the library [here](/pricing) @@ -34,7 +34,7 @@ BEGIN END ``` -_We recommend to always re-install the Eval-SQL.NET Script after enabling the license to ensure everything works if the server restart._ +_We recommend to always re-install the Eval-SQL.NET Script after enabling the license to ensure everything works if the server restarts._ You can verify if the license is valid with the following command: From ca00a6f58547d00571c6c816840b2132f09845f3 Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Wed, 17 Jul 2019 10:55:52 -0400 Subject: [PATCH 098/118] Update faq-license.md --- docs2/pages/faq/faq-license.md | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/docs2/pages/faq/faq-license.md b/docs2/pages/faq/faq-license.md index 4505dd3..4c3dc32 100644 --- a/docs2/pages/faq/faq-license.md +++ b/docs2/pages/faq/faq-license.md @@ -5,14 +5,14 @@ ### What's a developer seat? A developer seat is a developer working for your company and developing code directly with our product. -You don't have to purchase developer seat for front-end developer or back-end developer which doesn't use our product API. +You don't have to purchase a developer seat for front-end developer or back-end developer which doesn't use our product API. -Since you buy developer seat, you can develop an unlimited amount of projects within your company. +Since you buy developer a seat, you can develop an unlimited amount of projects within your company. ### What's the cost for additional developer seat? The cost for additional developer seat is usually extremely low. We want to make sure our library is accessible for small and large company. -### Do developer seat are transferable? +### Are developer seats are transferable? Yes, a developer seat can be transferred to any employee within your company. ## Perpertual License @@ -30,20 +30,20 @@ Don't worry. Your product continue to work forever! You can still download and use any version released before the support & upgrade expiration date. -You will need to renew to use version released after the support & upgrade expiration date. +You will need to renew to use versions released after the support & upgrade expiration date. ### How do I renew my License? -We usually start to send renewal mail two months before the support & upgrade expiration date. +We usually start to send renewal emails one months before the support & upgrade expiration date. -If you didn't receive such email, you could contact us directly: info@zzzprojects.com +If you didn't receive such email, you can contact us directly: info@zzzprojects.com -### Can I have renewal discount? -We provide a 25% discount to early renewal. So anyone renewing before the support & upgrade expiration date automatically get a renewal discount. +### Can I have a renewal discount? +We provide a 25% discount to early renewals. So, anyone renewing before the support & upgrade expiration date automatically get a renewal discount. ### I'm too late for early renewal discount! What can I do? -If you are few day late, we still provide early renewal discount. +If you are few days late, we still provide early renewal discounts. -However, if you have few months late, you will need to purchase the library again. +However, if you are a few months late, you will need to purchase the library again. The best way to find out if you still have access to early renewal discount is by contacting us: info@zzzprojects.com @@ -51,7 +51,7 @@ The best way to find out if you still have access to early renewal discount is b Renewing your support & upgrade give the following benefits: - Major version releases and new product features -- Fast support by mail +- Fast support by email - Protection against price increases during the maintenance term ## Royalty Free @@ -59,11 +59,9 @@ Renewing your support & upgrade give the following benefits: ### Is Eval-SQL.NET Royalty Free? Yes, the product is royalty free. -This mean, you can develop a project and install it on thousands of clients. - -You paid for developer seat within your company. +This means, you can develop a project and install it on thousands of client machines if you paid for developer seat within your company. Some standard royalty free limitations: - You can't sell a similar product and claim it's yours. -- If your customer has access to your source code and develops using our API, they will have to purchase a license. +- If your customer have access to your source code and develops using our API, they will have to purchase a license. From 5eb469e3c1111663d87eab1c3505376b1e66af4b Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Wed, 17 Jul 2019 11:07:32 -0400 Subject: [PATCH 099/118] Update faq-installation.md --- docs2/pages/faq/faq-installation.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs2/pages/faq/faq-installation.md b/docs2/pages/faq/faq-installation.md index 27f6958..804213d 100644 --- a/docs2/pages/faq/faq-installation.md +++ b/docs2/pages/faq/faq-installation.md @@ -1,10 +1,10 @@ # FAQ - Installation ## How to I Install your product? -It simple, you download it from NuGet and add it to your project. +It's simple, you download it from NuGet and add it to your project. More Info: [Tutorials - Installing](installing) -## I have installed your product, but I don't see your extensions method +## I have installed your product, but I don't see your extensions method. - Make sure to install it in the right project -- Make sure your project support .NET40 or better +- Make sure your project supports .NET40 or better From 2c203b18b6bfb7b8b1d3a44dd6c176da6591a2c7 Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Wed, 17 Jul 2019 11:14:53 -0400 Subject: [PATCH 100/118] Update faq-general.md --- docs2/pages/faq/faq-general.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs2/pages/faq/faq-general.md b/docs2/pages/faq/faq-general.md index 8ed3f22..6b5917b 100644 --- a/docs2/pages/faq/faq-general.md +++ b/docs2/pages/faq/faq-general.md @@ -1,21 +1,21 @@ # FAQ - General ## Which Payment method do you support? -We support the following payment method: +We support the following payment methods: - PayPal - Check - Bank Transfer ## Can I purchase this product from a Reseller? -Yes, just let him know to contact us. +Yes, just let him know how to contact us. ## What's your average SLA response and resolution times? We try to provide an outstanding support service. We normally answer very fast, often within one hour. -Most fixes is resolved within one business day. +Most fixes are resolved within one business day. -## Do you support EF Core +## Do you support EF Core? We do not yet. We are currently re-writing the library to support it. From b6aa316b1f2cabc6a0715459a4f1f2f9c7f95dc6 Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Wed, 17 Jul 2019 11:20:12 -0400 Subject: [PATCH 101/118] Update faq-eval-sql-net.md --- docs2/pages/faq/faq-eval-sql-net.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs2/pages/faq/faq-eval-sql-net.md b/docs2/pages/faq/faq-eval-sql-net.md index 94512ed..ac4f1e8 100644 --- a/docs2/pages/faq/faq-eval-sql-net.md +++ b/docs2/pages/faq/faq-eval-sql-net.md @@ -2,7 +2,7 @@ ## Bug Fixing -You find a bug when compiling? [Report it](https://github.com/zzzprojects/Eval-SQL.NET/issues) and it will be fixed usually within one business day. +You found a bug when compiling? [Report it](https://github.com/zzzprojects/Eval-SQL.NET/issues) and it will be fixed, usually within one business day. ## Namespace @@ -26,17 +26,17 @@ All namespace support by SQL CLR are supported by Eval SQL.NET. - System.Xml - System.Core.dll - System.Xml.Linq.dll - - All common namespace and extensions method can be used without specifying the fullname. + - All common namespaces and extension methods can be used without specifying the fullname. You can see the full list [here](https://github.com/zzzprojects/Eval-SQL.NET/blob/master/src/Z.Expressions.SqlServer.Eval/EvalContext/EvalContext.RegisterDefaultAlias.cs) -Let us know if you believe we have missing some. +Let us know if you believe we missed some. ## Performance You are worried about performance? Don't worry, Eval SQL.NET is super-fast and can evaluate over 150,000 expressions in a loop under one second and over 1,000,000 using a table! -Result highly vary depending of your SQL Server performance and expression to evaluate. +Result highly vary depending of your SQL Server performance and expressions to evaluate. ```csharp @@ -66,21 +66,21 @@ PRINT 'Duration = ' + CONVERT(VARCHAR(30), @endTime - @starttime, 114) ## Security -SQL CLR allow three type of permission: +SQL CLR allows three types of permissions: - SAFE - EXTERNAL_ACCESS - - UNSAFE Eval SQL.NET support all types and is installed by default with SAFE permissions. Read more about [SQL CLR Permissions](https://msdn.microsoft.com/en-CA/library/ms345101.aspx) + - UNSAFE Eval SQL.NET supports all types and is installed by default with SAFE permissions. Read more about [SQL CLR Permissions](https://msdn.microsoft.com/en-CA/library/ms345101.aspx) ## SQL Injection -This library allow to use parameter, so no SQL Injection is possible! +This library allows to use parameter, so no SQL Injection is possible! -However if you build the string to evaluate as you build a dynamic SQL, then there is nothing we can do for you. +However, if you build the string to evaluate as you build a dynamic SQL, then there is nothing we can do for you. ## Decimal throw an error! -In C#, decimal must be suffixed with "m" to make them valid. By default "1.1" in C# is a double which cannot be added with decimal value. +In C#, decimals must be suffixed with "m" to make them valid. By default "1.1" in C# is a double which cannot be added with decimal value. ```csharp From ea561625368a607437c6c55a3917940fbc535fdb Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Wed, 17 Jul 2019 11:44:39 -0400 Subject: [PATCH 102/118] Update api.md --- docs2/pages/documentations/api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs2/pages/documentations/api.md b/docs2/pages/documentations/api.md index 01086ff..0d1b8ff 100644 --- a/docs2/pages/documentations/api.md +++ b/docs2/pages/documentations/api.md @@ -2,7 +2,7 @@ ## Overview -Let take a very short overview with the API +Let's take a very short overview with the API ```csharp From ef508afaa3561347204d4b42fb67a4adfb98429c Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Wed, 17 Jul 2019 12:15:57 -0400 Subject: [PATCH 103/118] Update api.md --- docs2/pages/documentations/api.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs2/pages/documentations/api.md b/docs2/pages/documentations/api.md index 0d1b8ff..e1ac945 100644 --- a/docs2/pages/documentations/api.md +++ b/docs2/pages/documentations/api.md @@ -13,9 +13,9 @@ SELECT SQLNET::New('x+y').ValueInt('x', 1).ValueInt('y', 2).EvalInt() as Result - **SQLNET:** A CLR Type created by Eval SQL.NET library - **"::":** This is how you call static method in SQL CLR - - **New:** A static method which create a new instance of SQLNET Type - - **ValueInt:** Set a int value for a specific parameter name used in the expression - - **EvalInt:** Evaluate the expression and return a result of type INT + - **New:** A static method which creates a new instance of SQLNET Type + - **ValueInt:** Sets a int value for a specific parameter name used in the expression + - **EvalInt:** Evaluates the expression and return a result of type INT
From 0f7396d7a6b5711b3c1bdf5f481009670666f66d Mon Sep 17 00:00:00 2001 From: mariloutb <52055678+mariloutb@users.noreply.github.com> Date: Wed, 17 Jul 2019 12:18:15 -0400 Subject: [PATCH 104/118] Update eval-execute.md --- docs2/pages/documentations/eval-expressions/eval-execute.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs2/pages/documentations/eval-expressions/eval-execute.md b/docs2/pages/documentations/eval-expressions/eval-execute.md index 1d61737..4708973 100644 --- a/docs2/pages/documentations/eval-expressions/eval-execute.md +++ b/docs2/pages/documentations/eval-expressions/eval-execute.md @@ -14,9 +14,9 @@ You can specify parameter value to use in the expression from various way: - Class Member - Dictionary -Under the hood, the fist time an expression is executed, it's getting compiled and the delegate is stored in the memory before being returned and executed. All future call from the same expression will retrieve the delegate from the memory to optimize the performance. +Under the hood, the fist time an expression is executed, it's getting compiled and the delegate is stored in the memory before being returned and executed. All future calls from the same expression will retrieve the delegate from the memory to optimize the performance. -Even with this optimization, if you have to evaluate multiple times the same expression, by example in a for loop, we highly recommend you to use directly the delegate returning from the Compile method instead. +Even with this optimization, if you have to evaluate multiple times the same expression, for example in a for loop, we highly recommend you to use directly the delegate returning from the Compile method instead. ## Execute and return a strongly typed result You can return the result as a strongly typed type: From 95b21e2bc54ca773fb1032de41eae92005bf1251 Mon Sep 17 00:00:00 2001 From: Muhammad Waqas Date: Wed, 2 Oct 2019 07:50:26 +0500 Subject: [PATCH 105/118] Create _topnav.md --- docs2/pages/_topnav.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs2/pages/_topnav.md diff --git a/docs2/pages/_topnav.md b/docs2/pages/_topnav.md new file mode 100644 index 0000000..2081779 --- /dev/null +++ b/docs2/pages/_topnav.md @@ -0,0 +1,5 @@ +- [Getting Started](getting-started/overview.md) +- Documentation + - [Documentation](documentations/eval.md) + - [Release Notes](https://github.com/zzzprojects/Eval-SQL.NET/releases) +- [Online Examples](/online-examples) From 5d0d731d5469d01446bf9abb3226c297c1e8d3c9 Mon Sep 17 00:00:00 2001 From: Muhammad Waqas Date: Wed, 2 Oct 2019 09:48:28 +0500 Subject: [PATCH 106/118] Create _sidebar.md --- docs2/pages/getting-started/_sidebar.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 docs2/pages/getting-started/_sidebar.md diff --git a/docs2/pages/getting-started/_sidebar.md b/docs2/pages/getting-started/_sidebar.md new file mode 100644 index 0000000..e5ab38d --- /dev/null +++ b/docs2/pages/getting-started/_sidebar.md @@ -0,0 +1,6 @@ +- [Overview](overview.md) +- [Licensing](licensing.md) +- Tutorials + - [Arithmetic Expressions](arithmetic-expressions.md) + - [Split Text](split-text.md) + - [Reqular Expressions](regular-expressions.md) From 8b35555793ae6043c8e868a096241b1c55fc1844 Mon Sep 17 00:00:00 2001 From: Muhammad Waqas Date: Wed, 2 Oct 2019 10:27:10 +0500 Subject: [PATCH 107/118] Create _sidebar.md --- docs2/pages/documentations/_sidebar.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 docs2/pages/documentations/_sidebar.md diff --git a/docs2/pages/documentations/_sidebar.md b/docs2/pages/documentations/_sidebar.md new file mode 100644 index 0000000..ca6304b --- /dev/null +++ b/docs2/pages/documentations/_sidebar.md @@ -0,0 +1,4 @@ +- [Eval](eval.md) +- [Value](value.md) +- [Options](options.md) +- [Configuration](configuration.md) From c119f8119ab42e2a5acd1024e0f1635d1678cc01 Mon Sep 17 00:00:00 2001 From: Muhammad Waqas Date: Wed, 2 Oct 2019 14:08:26 +0500 Subject: [PATCH 108/118] Create _sidebar.md --- docs2/pages/troubleshooting/_sidebar.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs2/pages/troubleshooting/_sidebar.md diff --git a/docs2/pages/troubleshooting/_sidebar.md b/docs2/pages/troubleshooting/_sidebar.md new file mode 100644 index 0000000..c941fa9 --- /dev/null +++ b/docs2/pages/troubleshooting/_sidebar.md @@ -0,0 +1,5 @@ +- [Trial Extend](trial.md) +- [SQL Server Eval](sql-server-eval.md) +- [SQL Server Function (UDF)](sql-server-function.md) +- [SQL Server File Operation](sql-server-file-operation.md) +- [SQL Server Regex](sql-server-regex.md) From f4cd72f99fc9717f7bd0e5480622d0f576555031 Mon Sep 17 00:00:00 2001 From: Muhammad Waqas Date: Wed, 2 Oct 2019 14:21:06 +0500 Subject: [PATCH 109/118] Create _sidebar.md --- docs2/pages/documentations/eval-expressions/_sidebar.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 docs2/pages/documentations/eval-expressions/_sidebar.md diff --git a/docs2/pages/documentations/eval-expressions/_sidebar.md b/docs2/pages/documentations/eval-expressions/_sidebar.md new file mode 100644 index 0000000..69c1e54 --- /dev/null +++ b/docs2/pages/documentations/eval-expressions/_sidebar.md @@ -0,0 +1,3 @@ + - [LINQ Dynamic](linq-dynamic.md) + - [Eval.Compile](eval-compile.md) + - [Eval.Execute](eval-execute.md) From ec64da529aa86a57c5c7b817f8c14b224f762faf Mon Sep 17 00:00:00 2001 From: Muhammad Waqas Date: Wed, 2 Oct 2019 14:43:37 +0500 Subject: [PATCH 110/118] Create _sidebar.md --- docs2/pages/documentations/string/_sidebar.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 docs2/pages/documentations/string/_sidebar.md diff --git a/docs2/pages/documentations/string/_sidebar.md b/docs2/pages/documentations/string/_sidebar.md new file mode 100644 index 0000000..7bc0dce --- /dev/null +++ b/docs2/pages/documentations/string/_sidebar.md @@ -0,0 +1,33 @@ +- [String](string.md) + - [Compare CurrentCulture IgnoreCase](string-compare-current-culture-ignore-case.md) + - [Compare CurrentCulture](string-compare-current-culture.md) + - [Compare IgnoreCase](string-compare-ignore-case.md) + - [Compare InvariantCulture IgnoreCase](string-compare-invariant-culture-ignore-case.md) + - [Compare InvariantCulture](string-compare-invariant-culture.md) + - [Compare Ordinal IgnoreCase](string-compare-ordinal-ignore-case.md) + - [Compare Ordinal](string-compare-ordinal.md) + - [Compare](string-compare.md) + - [Contains](string-contains.md) + - [Endswith](string-endswith.md) + - [Indexof CurrentCulture IgnoreCase](string-indexof-current-culture-ignore-case.md) + - [Indexof CurrentCulture](string-indexof-current-culture.md) + - [Indexof InvariantCulture IgnoreCase](string-indexof-invariant-culture-ignore-case.md) + - [Indexof InvariantCulture](string-indexof-invariant-culture.md) + - [Indexof Ordinal IgnoreCase](string-indexof-ordinal-ignore-case.md) + - [Indexof Ordinal](string-indexof-ordinal.md) + - [Indexof](string-indexof.md) + - [Insert](string-insert.md) + - [LastIndexof CurrentCulture IgnoreCase](string-last-indexof-current-culture-ignore-case.md) + - [LastIndexof CurrentCulture](string-last-indexof-current-culture.md) + - [LastIndexof InvariantCulture IgnoreCase](string-last-indexof-invariant-culture-ignore-case.md) + - [LastIndexof InvariantCulture](string-last-indexof-invariant-culture.md) + - [LastIndexof Ordinal IgnoreCase](string-last-indexof-ordinal-ignore-case.md) + - [LastIndexof Ordinal](string-last-indexof-ordinal.md) + - [LastIndexof](string-last-indexof.md) + - [Length](string-length.md) + - [Occurrences](string-occurrences.md) + - [Padleft](string-padleft.md) + - [Padright](string-padright.md) + - [RemoveNumOfChars](string-remove-num-of-chars.md) + - [Remove](string-remove.md) + - [Replace](string-replace.md) From 7c6072a992e0fde4444c0e826d61e4807dc516ae Mon Sep 17 00:00:00 2001 From: Jonathan Magnan Date: Tue, 16 Feb 2021 11:20:40 -0500 Subject: [PATCH 111/118] Update README.md --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dd88d50..49abd09 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ -Provide to your SQL Server all missing pieces like regular expression and dynamic arithmetic string evaluation. +# What's Eval-SQL.Net? +Eval SQL.NET is a library that allows to evaluate dynamically C# expression directly in T-SQL. + +It provides to your SQL Server all missing pieces like regular expression and dynamic arithmetic string evaluation. ```sql -- SELECT 3 @@ -14,7 +17,7 @@ SELECT SQLNET::New('x+y').ValueInt('x', 1).ValueInt('y', 2).EvalInt() as Result - Replace xp_cmdshell with DirectoryInfo & FileInfo ## Performance & Scalability -Performance tuning is one of the most important task for a DBA. Don’t miss the chance to **dramatically improve query performance** by **300%** for simple expression and by more than **2000%** for complex code over User-Defined Function (UDF) and Table-Valued Function (TVF). +Performance tuning is one of the most important tasks for a DBA. Don’t miss the chance to **dramatically improve query performance** by **300%** for simple expression and more than **2000%** for complex code over User-Defined Function (UDF) and Table-Valued Function (TVF). _Benchmark to split string with delimiters in SQL_ From 6833bb069b0792d0347890b92b731060d1e8f90b Mon Sep 17 00:00:00 2001 From: Jonathan Magnan Date: Tue, 16 Mar 2021 11:20:33 -0400 Subject: [PATCH 112/118] Update README.md --- README.md | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 49abd09..21a6ba7 100644 --- a/README.md +++ b/README.md @@ -153,22 +153,13 @@ A **HUGE THANKS** for your help. ## More Projects -**Entity Framework** - [EntityFramework Extensions](https://entityframework-extensions.net/) -- [EntityFramework Plus](https://entityframework-plus.net) - -**Bulk Operations** -- [Bulk Operations](https://bulk-operations.net/) - [Dapper Plus](https://dapper-plus.net/) - -**Expression Evaluator** -- [Eval-SQL.NET](https://eval-sql.net/) -- [Eval-Expression.NET](https://eval-expression.net/) - -**Utilities** -- [Extension Methods Library](https://github.com/zzzprojects/Z.ExtensionMethods/) -- [Html Agility Pack](https://html-agility-pack.net/) - -**Need more info?** info@zzzprojects.com +- [C# Eval Expression](https://eval-expression.net/) +- [Entity Framework Classic](https://entityframework-classic.net/) +- [Bulk Operations](https://bulk-operations.net/) +- [SQL Eval Function](https://eval-sql.net/) +- and much more! +To view all our free and paid librariries visit our [website](https://zzzprojects.com/). Contact our outstanding customer support for any request. We usually answer within the next business day, hour, or minutes! From ef6103271120f765c7265dd25d43f866ee3a20b2 Mon Sep 17 00:00:00 2001 From: Jonathan Magnan Date: Tue, 16 Mar 2021 11:36:30 -0400 Subject: [PATCH 113/118] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 21a6ba7..056d5ba 100644 --- a/README.md +++ b/README.md @@ -159,6 +159,7 @@ A **HUGE THANKS** for your help. - [Entity Framework Classic](https://entityframework-classic.net/) - [Bulk Operations](https://bulk-operations.net/) - [SQL Eval Function](https://eval-sql.net/) +- [LINQ To SQL Plus](https://linqtosql-plus.net/) - and much more! To view all our free and paid librariries visit our [website](https://zzzprojects.com/). From 1c917c1f67c2ab9777bc32e61ba4ed325dfba71b Mon Sep 17 00:00:00 2001 From: Jonathan Magnan Date: Mon, 12 Apr 2021 11:49:54 -0400 Subject: [PATCH 114/118] Update README.md --- README.md | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 056d5ba..28cff62 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # What's Eval-SQL.Net? -Eval SQL.NET is a library that allows to evaluate dynamically C# expression directly in T-SQL. +Eval SQL.NET is a library that allows evaluating C# expression dynamically directly in T-SQL. It provides to your SQL Server all missing pieces like regular expression and dynamic arithmetic string evaluation. @@ -35,17 +35,12 @@ _Minimum Requirements:_ - SQL 2012 / SQL Azure v12 - SAFE Permission (SQL CLR) -Stay updated with latest changes - -Twitter Follow -Facebook Like - ## Evaluate dynamic arithmetic/math expression in SQL _Make the impossible now possible. Evaluate C# expression in SQL to overcome limitations._ - Allow trusted users to create report field and filter - Consume Web Service -- Replace text in template with String Interpolation +- Replace text in the template with String Interpolation ```csharp -- CREATE test @@ -109,7 +104,7 @@ SELECT * FROM @customer WHERE @valid_email.ValueString('email', Email).EvalBit() **Try it online** ## Replace xp_cmdshell with restrictive alternative -_Avoid enabling xp_cmdshell and compromising your SQL Server and use instead a more restrictive solution._ +_Avoid enabling xp_cmdshell and compromising your SQL Server and use a more restrictive solution instead._ - Impersonate Context - Improve maintainability - Improve readability @@ -145,7 +140,6 @@ The best way to contribute is by **spreading the word** about the library: - Blog it - Comment it - - Fork it - Star it - Share it @@ -156,11 +150,8 @@ A **HUGE THANKS** for your help. - [EntityFramework Extensions](https://entityframework-extensions.net/) - [Dapper Plus](https://dapper-plus.net/) - [C# Eval Expression](https://eval-expression.net/) -- [Entity Framework Classic](https://entityframework-classic.net/) -- [Bulk Operations](https://bulk-operations.net/) -- [SQL Eval Function](https://eval-sql.net/) -- [LINQ To SQL Plus](https://linqtosql-plus.net/) - and much more! -To view all our free and paid librariries visit our [website](https://zzzprojects.com/). -Contact our outstanding customer support for any request. We usually answer within the next business day, hour, or minutes! +To view all our free and paid projects, visit our [website](https://zzzprojects.com/). + +Contact our outstanding **[customer support](https://entityframework-extensions.net/contact-us)** for any request. We usually answer within the next day, hour, or minutes! From 94e849cf0ec5c0a6b4919070ef04482eb19c9426 Mon Sep 17 00:00:00 2001 From: Jonathan Magnan Date: Mon, 12 Apr 2021 11:55:56 -0400 Subject: [PATCH 115/118] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 28cff62..d3eef44 100644 --- a/README.md +++ b/README.md @@ -149,6 +149,7 @@ A **HUGE THANKS** for your help. - [EntityFramework Extensions](https://entityframework-extensions.net/) - [Dapper Plus](https://dapper-plus.net/) +- [Bulk Operations](https://bulk-operations.net/) - [C# Eval Expression](https://eval-expression.net/) - and much more! From 0d34e08e560ed16e36bdf5fad9809b32ca15700a Mon Sep 17 00:00:00 2001 From: Jonathan Magnan Date: Thu, 15 Apr 2021 22:01:09 -0400 Subject: [PATCH 116/118] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d3eef44..f2c12d4 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,7 @@ Support & Upgrades (1 year) | Yes Learn more about the **[PRO Version](http://eval-sql.net/#pro)** ## Contribute + The best way to contribute is by **spreading the word** about the library: - Blog it @@ -155,4 +156,4 @@ A **HUGE THANKS** for your help. To view all our free and paid projects, visit our [website](https://zzzprojects.com/). -Contact our outstanding **[customer support](https://entityframework-extensions.net/contact-us)** for any request. We usually answer within the next day, hour, or minutes! +Contact our outstanding **[customer support](https://eval-sql.net/contact-us)** for any request. We usually answer within the next day, hour, or minutes! From b0b6fd4f95eaafdc61b2af4492fdfd45ca7a04d5 Mon Sep 17 00:00:00 2001 From: Jonathan Magnan Date: Mon, 21 Feb 2022 15:23:16 -0500 Subject: [PATCH 117/118] remove docs (has been moved) --- docs/404.md | 10 - docs/CNAME | 1 - docs/_config.yml | 17 - docs/_data/meta.csv | 33 -- docs/_includes/_global_variable.html | 21 -- docs/_includes/aside.html | 87 ----- docs/_includes/component-try-it.html | 1 - docs/_includes/infozzzprojects-email.html | 1 - docs/_includes/layout-angle-begin.html | 3 - docs/_includes/layout-angle-end.html | 5 - docs/_includes/site-footer.html | 21 -- docs/_includes/site-header-nav-context.html | 25 -- docs/_includes/site-header-nav-md.html | 68 ---- docs/_includes/site-header-nav-site.html | 46 --- docs/_includes/site-products.html | 41 -- docs/_includes/template-example.html | 7 - docs/_includes/template-exception-cause.html | 1 - docs/_includes/template-exception.html | 4 - docs/_includes/template-execute-thrown.html | 1 - docs/_includes/template-h1.html | 16 - docs/_includes/under-construction.html | 3 - docs/_layouts/default.html | 147 -------- docs/_sass/card-layout-z1.scss | 41 -- docs/_sass/card-layout-z2.scss | 26 -- docs/_sass/console.scss | 98 ----- docs/_sass/hero.scss | 87 ----- docs/_sass/highlight.scss | 53 --- docs/_sass/highlight2.scss | 6 - docs/_sass/page-index.scss | 131 ------- docs/_sass/scroll-to-top.scss | 45 --- docs/_sass/section-faq.scss | 10 - docs/_sass/site-footer.scss | 39 -- docs/_sass/site-header-nav-context.scss | 45 --- docs/_sass/site-header-nav-md.scss | 36 -- docs/_sass/site-header-nav-site.scss | 86 ----- docs/_sass/site-header.scss | 22 -- docs/_sass/site-products.scss | 24 -- docs/css/master.scss | 284 -------------- docs/downloads/Eval-SQL.NET-Install.sql | 175 --------- docs/images/arrow-down1.png | Bin 4285 -> 0 bytes docs/images/logo.png | Bin 1439 -> 0 bytes docs/images/logo256X256-opacity.png | Bin 19064 -> 0 bytes docs/images/logo256X256.png | Bin 22802 -> 0 bytes docs/index.md | 357 ------------------ docs/js/fiddle-client.js | 133 ------- docs/pages/api/api.md | 51 --- docs/pages/api/configuration.md | 73 ---- docs/pages/api/eval.md | 121 ------ docs/pages/api/options.md | 101 ----- docs/pages/api/value.md | 106 ------ docs/pages/faq/faq-eval-sql-net.md | 96 ----- docs/pages/faq/faq-general.md | 23 -- docs/pages/faq/faq-installation.md | 12 - docs/pages/faq/faq-license.md | 71 ---- docs/pages/faq/faq.md | 11 - docs/pages/faq/issue-tracker.md | 13 - docs/pages/problems/problems.md | 10 - docs/pages/problems/sql-server-eval.md | 158 -------- .../problems/sql-server-file-operation.md | 141 ------- docs/pages/problems/sql-server-function.md | 223 ----------- docs/pages/problems/sql-server-regex.md | 230 ----------- docs/pages/site/contact-us.md | 69 ---- docs/pages/site/download.md | 93 ----- docs/pages/site/pricing.md | 193 ---------- docs/pages/site/trial.md | 22 -- docs/pages/tutorials.md | 52 --- .../pages/tutorials/arithmetic-expressions.md | 86 ----- docs/pages/tutorials/installing.md | 24 -- docs/pages/tutorials/licensing.md | 45 --- docs/pages/tutorials/overview.md | 149 -------- docs/pages/tutorials/regular-expressions.md | 67 ---- docs/pages/tutorials/requirements.md | 15 - docs/pages/tutorials/split-text.md | 94 ----- docs/pages/tutorials/tutorial-introduction.md | 107 ------ docs/pages/tutorials/upgrading.md | 18 - docs/robots.txt | 6 - docs2/pages/_topnav.md | 5 - docs2/pages/documentations/_sidebar.md | 4 - docs2/pages/documentations/api.md | 49 --- docs2/pages/documentations/configuration.md | 71 ---- .../convert/convert-toboolean.md | 25 -- .../documentations/convert/convert-tobyte.md | 25 -- .../convert/convert-todatetime.md | 24 -- .../convert/convert-todecimal.md | 24 -- .../convert/convert-todouble.md | 25 -- .../documentations/convert/convert-toint16.md | 24 -- .../documentations/convert/convert-toint32.md | 24 -- .../documentations/convert/convert-toint64.md | 24 -- docs2/pages/documentations/convert/convert.md | 14 - .../datetime/datetime-add-days.md | 28 -- .../datetime/datetime-add-months.md | 28 -- .../datetime/datetime-add-years.md | 28 -- .../documentations/datetime/datetime-age.md | 27 -- .../datetime/datetime-dayofweek.md | 25 -- .../datetime/datetime-dayofyear.md | 26 -- .../datetime/datetime-days-in-month.md | 28 -- .../datetime/datetime-from-binary.md | 27 -- .../datetime/datetime-from-file-time-utc.md | 27 -- .../datetime/datetime-from-file-time.md | 27 -- .../datetime/datetime-from-oadate.md | 24 -- .../datetime-isdaylight-saving-time.md | 25 -- .../datetime/datetime-isleap-year.md | 26 -- .../documentations/datetime/datetime-now.md | 19 - .../documentations/datetime/datetime-ticks.md | 25 -- .../datetime/datetime-to-oadate.md | 25 -- .../datetime/datetime-to-universal-time.md | 25 -- .../datetime/datetime-tobinary.md | 27 -- .../documentations/datetime/datetime-today.md | 19 - .../datetime/datetime-tofile-time-utc.md | 27 -- .../datetime/datetime-tofile-time.md | 27 -- .../datetime/datetime-tolocal-time.md | 25 -- .../datetime/datetime-tolong-date-string.md | 25 -- .../datetime/datetime-tolong-time-string.md | 26 -- .../datetime/datetime-toshort-date-string.md | 25 -- .../datetime/datetime-toshort-time-string.md | 26 -- .../datetime/datetime-tostring-with-format.md | 27 -- .../datetime/datetime-tostring.md | 25 -- .../datetime/datetime-utc-now.md | 19 - .../pages/documentations/datetime/datetime.md | 36 -- .../directory-create-sub-directory.md | 21 -- .../directory/directory-create.md | 18 - .../directory/directory-delete-all.md | 18 - .../directory/directory-delete.md | 18 - .../directory/directory-exists.md | 25 -- .../directory-get-all-directories.md | 23 -- .../directory-get-all-file-system-entries.md | 24 -- .../directory/directory-get-all-files.md | 24 -- .../directory-get-creation-time-utc.md | 24 -- .../directory/directory-get-creation-time.md | 24 -- .../directory/directory-get-directories.md | 39 -- .../directory-get-file-system-entries.md | 39 -- .../directory/directory-get-files.md | 39 -- .../directory-get-last-access-time-utc.md | 24 -- .../directory-get-last-access-time.md | 24 -- .../directory-get-last-write-time-utc.md | 24 -- .../directory-get-last-write-time.md | 24 -- .../directory/directory-move.md | 21 -- .../directory-set-creation-time-utc.md | 21 -- .../directory/directory-set-creation-time.md | 21 -- .../directory-set-last-access-time-utc.md | 21 -- .../directory-set-last-access-time.md | 21 -- .../directory-set-last-write-time-utc.md | 20 - .../directory-set-last-write-time.md | 21 -- .../documentations/directory/directory.md | 30 -- .../eval-expressions/_sidebar.md | 3 - .../eval-expressions/eval-compile.md | 65 ---- .../eval-expressions/eval-execute.md | 73 ---- .../eval-expressions/linq-dynamic.md | 75 ---- docs2/pages/documentations/eval.md | 120 ------ .../file/file-append-all-text.md | 21 -- docs2/pages/documentations/file/file-copy.md | 23 -- .../pages/documentations/file/file-create.md | 19 - .../pages/documentations/file/file-decrypt.md | 19 - .../pages/documentations/file/file-delete.md | 19 - .../pages/documentations/file/file-encrypt.md | 19 - .../file/file-get-creation-time-utc.md | 24 -- .../file/file-get-creation-time.md | 24 -- .../file/file-get-last-access-time-utc.md | 24 -- .../file/file-get-last-access-time.md | 24 -- .../file/file-get-last-write-time-utc.md | 24 -- .../file/file-get-last-write-time.md | 24 -- .../documentations/file/file-isexists.md | 25 -- docs2/pages/documentations/file/file-move.md | 21 -- .../documentations/file/file-read-all-text.md | 24 -- .../pages/documentations/file/file-replace.md | 25 -- .../file/file-set-creation-time-utc.md | 21 -- .../file/file-set-creation-time.md | 21 -- .../file/file-set-last-access-time-utc.md | 21 -- .../file/file-set-last-access-time.md | 21 -- .../file/file-set-last-write-time-utc.md | 21 -- .../file/file-set-last-write-time.md | 21 -- .../file/file-write-all-text.md | 21 -- docs2/pages/documentations/file/file.md | 29 -- docs2/pages/documentations/math/math-Tanh.md | 24 -- .../pages/documentations/math/math-bigmul.md | 26 -- docs2/pages/documentations/math/math-cosh.md | 24 -- .../documentations/math/math-cube-root.md | 24 -- .../math/math-ieee-remainder.md | 27 -- .../documentations/math/math-nth-root.md | 25 -- .../math/math-remainder-int32.md | 26 -- .../math/math-remainder-int64.md | 25 -- docs2/pages/documentations/math/math-sinh.md | 24 -- docs2/pages/documentations/math/math.md | 15 - docs2/pages/documentations/options.md | 99 ----- .../path/path-change-extension.md | 26 -- .../pages/documentations/path/path-combine.md | 26 -- .../path/path-get-directory-name.md | 24 -- .../documentations/path/path-get-extension.md | 24 -- .../path-get-file-name-without-extension.md | 24 -- .../documentations/path/path-get-file-name.md | 24 -- .../documentations/path/path-get-full-path.md | 24 -- .../documentations/path/path-get-path-root.md | 24 -- .../path/path-get-random-file-name.md | 18 - .../path/path-get-temp-file-name.md | 18 - .../documentations/path/path-get-temp-path.md | 18 - .../documentations/path/path-has-extension.md | 24 -- .../path/path-is-path-rooted.md | 25 -- docs2/pages/documentations/path/path.md | 20 - .../documentations/regex/regex-escape.md | 25 -- .../pages/documentations/regex/regex-index.md | 44 --- .../documentations/regex/regex-indexop.md | 68 ---- .../documentations/regex/regex-ismatch.md | 46 --- .../documentations/regex/regex-ismatchop.md | 68 ---- .../pages/documentations/regex/regex-match.md | 44 --- .../documentations/regex/regex-matchop.md | 68 ---- .../documentations/regex/regex-replace.md | 47 --- .../documentations/regex/regex-replaceop.md | 69 ---- .../pages/documentations/regex/regex-split.md | 44 --- .../documentations/regex/regex-splitop.md | 66 ---- docs2/pages/documentations/regex/regex.md | 17 - docs2/pages/documentations/string/_sidebar.md | 33 -- ...ing-compare-current-culture-ignore-case.md | 52 --- .../string/string-compare-current-culture.md | 52 --- .../string/string-compare-ignore-case.md | 52 --- ...g-compare-invariant-culture-ignore-case.md | 52 --- .../string-compare-invariant-culture.md | 52 --- .../string-compare-ordinal-ignore-case.md | 52 --- .../string/string-compare-ordinal.md | 52 --- .../documentations/string/string-compare.md | 50 --- .../documentations/string/string-contains.md | 44 --- .../documentations/string/string-endswith.md | 44 --- ...ing-indexof-current-culture-ignore-case.md | 46 --- .../string/string-indexof-current-culture.md | 46 --- ...g-indexof-invariant-culture-ignore-case.md | 46 --- .../string-indexof-invariant-culture.md | 46 --- .../string-indexof-ordinal-ignore-case.md | 46 --- .../string/string-indexof-ordinal.md | 46 --- .../documentations/string/string-indexof.md | 44 --- .../documentations/string/string-insert.md | 49 --- ...ast-indexof-current-culture-ignore-case.md | 46 --- .../string-last-indexof-current-culture.md | 46 --- ...t-indexof-invariant-culture-ignore-case.md | 46 --- .../string-last-indexof-invariant-culture.md | 46 --- ...string-last-indexof-ordinal-ignore-case.md | 46 --- .../string/string-last-indexof-ordinal.md | 46 --- .../string/string-last-indexof.md | 44 --- .../documentations/string/string-length.md | 41 -- .../string/string-occurrences.md | 49 --- .../documentations/string/string-padleft.md | 51 --- .../documentations/string/string-padright.md | 51 --- .../string/string-remove-num-of-chars.md | 45 --- .../documentations/string/string-remove.md | 44 --- .../documentations/string/string-replace.md | 50 --- .../string-split-remove-empty-entries.md | 47 --- .../documentations/string/string-split.md | 47 --- .../string/string-startswith.md | 44 --- .../documentations/string/string-substring.md | 47 --- .../string/string-tolower-invariant.md | 41 -- .../documentations/string/string-tolower.md | 41 -- .../string/string-totitle-case.md | 43 --- .../string/string-toupper-invariant.md | 41 -- .../documentations/string/string-toupper.md | 41 -- .../documentations/string/string-trim.md | 42 --- .../documentations/string/string-trimchars.md | 45 --- .../documentations/string/string-trimend.md | 45 --- .../documentations/string/string-trimstart.md | 45 --- docs2/pages/documentations/string/string.md | 51 --- docs2/pages/documentations/value.md | 104 ----- docs2/pages/faq/faq-eval-sql-net.md | 94 ----- docs2/pages/faq/faq-general.md | 21 -- docs2/pages/faq/faq-installation.md | 10 - docs2/pages/faq/faq-license.md | 67 ---- docs2/pages/faq/faq.md | 9 - docs2/pages/faq/issue-tracker.md | 11 - docs2/pages/getting-started/_sidebar.md | 6 - .../getting-started/arithmetic-expressions.md | 84 ----- docs2/pages/getting-started/licensing.md | 47 --- docs2/pages/getting-started/overview.md | 178 --------- .../getting-started/regular-expressions.md | 65 ---- docs2/pages/getting-started/split-text.md | 92 ----- .../getting-started/tutorial-introduction.md | 105 ------ docs2/pages/site/contact-us.md | 67 ---- docs2/pages/site/download.md | 91 ----- docs2/pages/site/pricing.md | 190 ---------- docs2/pages/troubleshooting/_sidebar.md | 5 - docs2/pages/troubleshooting/problems.md | 8 - .../pages/troubleshooting/sql-server-eval.md | 157 -------- .../sql-server-file-operation.md | 139 ------- .../troubleshooting/sql-server-function.md | 221 ----------- .../pages/troubleshooting/sql-server-regex.md | 228 ----------- docs2/pages/troubleshooting/trial.md | 18 - 281 files changed, 12784 deletions(-) delete mode 100644 docs/404.md delete mode 100644 docs/CNAME delete mode 100644 docs/_config.yml delete mode 100644 docs/_data/meta.csv delete mode 100644 docs/_includes/_global_variable.html delete mode 100644 docs/_includes/aside.html delete mode 100644 docs/_includes/component-try-it.html delete mode 100644 docs/_includes/infozzzprojects-email.html delete mode 100644 docs/_includes/layout-angle-begin.html delete mode 100644 docs/_includes/layout-angle-end.html delete mode 100644 docs/_includes/site-footer.html delete mode 100644 docs/_includes/site-header-nav-context.html delete mode 100644 docs/_includes/site-header-nav-md.html delete mode 100644 docs/_includes/site-header-nav-site.html delete mode 100644 docs/_includes/site-products.html delete mode 100644 docs/_includes/template-example.html delete mode 100644 docs/_includes/template-exception-cause.html delete mode 100644 docs/_includes/template-exception.html delete mode 100644 docs/_includes/template-execute-thrown.html delete mode 100644 docs/_includes/template-h1.html delete mode 100644 docs/_includes/under-construction.html delete mode 100644 docs/_layouts/default.html delete mode 100644 docs/_sass/card-layout-z1.scss delete mode 100644 docs/_sass/card-layout-z2.scss delete mode 100644 docs/_sass/console.scss delete mode 100644 docs/_sass/hero.scss delete mode 100644 docs/_sass/highlight.scss delete mode 100644 docs/_sass/highlight2.scss delete mode 100644 docs/_sass/page-index.scss delete mode 100644 docs/_sass/scroll-to-top.scss delete mode 100644 docs/_sass/section-faq.scss delete mode 100644 docs/_sass/site-footer.scss delete mode 100644 docs/_sass/site-header-nav-context.scss delete mode 100644 docs/_sass/site-header-nav-md.scss delete mode 100644 docs/_sass/site-header-nav-site.scss delete mode 100644 docs/_sass/site-header.scss delete mode 100644 docs/_sass/site-products.scss delete mode 100644 docs/css/master.scss delete mode 100644 docs/downloads/Eval-SQL.NET-Install.sql delete mode 100644 docs/images/arrow-down1.png delete mode 100644 docs/images/logo.png delete mode 100644 docs/images/logo256X256-opacity.png delete mode 100644 docs/images/logo256X256.png delete mode 100644 docs/index.md delete mode 100644 docs/js/fiddle-client.js delete mode 100644 docs/pages/api/api.md delete mode 100644 docs/pages/api/configuration.md delete mode 100644 docs/pages/api/eval.md delete mode 100644 docs/pages/api/options.md delete mode 100644 docs/pages/api/value.md delete mode 100644 docs/pages/faq/faq-eval-sql-net.md delete mode 100644 docs/pages/faq/faq-general.md delete mode 100644 docs/pages/faq/faq-installation.md delete mode 100644 docs/pages/faq/faq-license.md delete mode 100644 docs/pages/faq/faq.md delete mode 100644 docs/pages/faq/issue-tracker.md delete mode 100644 docs/pages/problems/problems.md delete mode 100644 docs/pages/problems/sql-server-eval.md delete mode 100644 docs/pages/problems/sql-server-file-operation.md delete mode 100644 docs/pages/problems/sql-server-function.md delete mode 100644 docs/pages/problems/sql-server-regex.md delete mode 100644 docs/pages/site/contact-us.md delete mode 100644 docs/pages/site/download.md delete mode 100644 docs/pages/site/pricing.md delete mode 100644 docs/pages/site/trial.md delete mode 100644 docs/pages/tutorials.md delete mode 100644 docs/pages/tutorials/arithmetic-expressions.md delete mode 100644 docs/pages/tutorials/installing.md delete mode 100644 docs/pages/tutorials/licensing.md delete mode 100644 docs/pages/tutorials/overview.md delete mode 100644 docs/pages/tutorials/regular-expressions.md delete mode 100644 docs/pages/tutorials/requirements.md delete mode 100644 docs/pages/tutorials/split-text.md delete mode 100644 docs/pages/tutorials/tutorial-introduction.md delete mode 100644 docs/pages/tutorials/upgrading.md delete mode 100644 docs/robots.txt delete mode 100644 docs2/pages/_topnav.md delete mode 100644 docs2/pages/documentations/_sidebar.md delete mode 100644 docs2/pages/documentations/api.md delete mode 100644 docs2/pages/documentations/configuration.md delete mode 100644 docs2/pages/documentations/convert/convert-toboolean.md delete mode 100644 docs2/pages/documentations/convert/convert-tobyte.md delete mode 100644 docs2/pages/documentations/convert/convert-todatetime.md delete mode 100644 docs2/pages/documentations/convert/convert-todecimal.md delete mode 100644 docs2/pages/documentations/convert/convert-todouble.md delete mode 100644 docs2/pages/documentations/convert/convert-toint16.md delete mode 100644 docs2/pages/documentations/convert/convert-toint32.md delete mode 100644 docs2/pages/documentations/convert/convert-toint64.md delete mode 100644 docs2/pages/documentations/convert/convert.md delete mode 100644 docs2/pages/documentations/datetime/datetime-add-days.md delete mode 100644 docs2/pages/documentations/datetime/datetime-add-months.md delete mode 100644 docs2/pages/documentations/datetime/datetime-add-years.md delete mode 100644 docs2/pages/documentations/datetime/datetime-age.md delete mode 100644 docs2/pages/documentations/datetime/datetime-dayofweek.md delete mode 100644 docs2/pages/documentations/datetime/datetime-dayofyear.md delete mode 100644 docs2/pages/documentations/datetime/datetime-days-in-month.md delete mode 100644 docs2/pages/documentations/datetime/datetime-from-binary.md delete mode 100644 docs2/pages/documentations/datetime/datetime-from-file-time-utc.md delete mode 100644 docs2/pages/documentations/datetime/datetime-from-file-time.md delete mode 100644 docs2/pages/documentations/datetime/datetime-from-oadate.md delete mode 100644 docs2/pages/documentations/datetime/datetime-isdaylight-saving-time.md delete mode 100644 docs2/pages/documentations/datetime/datetime-isleap-year.md delete mode 100644 docs2/pages/documentations/datetime/datetime-now.md delete mode 100644 docs2/pages/documentations/datetime/datetime-ticks.md delete mode 100644 docs2/pages/documentations/datetime/datetime-to-oadate.md delete mode 100644 docs2/pages/documentations/datetime/datetime-to-universal-time.md delete mode 100644 docs2/pages/documentations/datetime/datetime-tobinary.md delete mode 100644 docs2/pages/documentations/datetime/datetime-today.md delete mode 100644 docs2/pages/documentations/datetime/datetime-tofile-time-utc.md delete mode 100644 docs2/pages/documentations/datetime/datetime-tofile-time.md delete mode 100644 docs2/pages/documentations/datetime/datetime-tolocal-time.md delete mode 100644 docs2/pages/documentations/datetime/datetime-tolong-date-string.md delete mode 100644 docs2/pages/documentations/datetime/datetime-tolong-time-string.md delete mode 100644 docs2/pages/documentations/datetime/datetime-toshort-date-string.md delete mode 100644 docs2/pages/documentations/datetime/datetime-toshort-time-string.md delete mode 100644 docs2/pages/documentations/datetime/datetime-tostring-with-format.md delete mode 100644 docs2/pages/documentations/datetime/datetime-tostring.md delete mode 100644 docs2/pages/documentations/datetime/datetime-utc-now.md delete mode 100644 docs2/pages/documentations/datetime/datetime.md delete mode 100644 docs2/pages/documentations/directory/directory-create-sub-directory.md delete mode 100644 docs2/pages/documentations/directory/directory-create.md delete mode 100644 docs2/pages/documentations/directory/directory-delete-all.md delete mode 100644 docs2/pages/documentations/directory/directory-delete.md delete mode 100644 docs2/pages/documentations/directory/directory-exists.md delete mode 100644 docs2/pages/documentations/directory/directory-get-all-directories.md delete mode 100644 docs2/pages/documentations/directory/directory-get-all-file-system-entries.md delete mode 100644 docs2/pages/documentations/directory/directory-get-all-files.md delete mode 100644 docs2/pages/documentations/directory/directory-get-creation-time-utc.md delete mode 100644 docs2/pages/documentations/directory/directory-get-creation-time.md delete mode 100644 docs2/pages/documentations/directory/directory-get-directories.md delete mode 100644 docs2/pages/documentations/directory/directory-get-file-system-entries.md delete mode 100644 docs2/pages/documentations/directory/directory-get-files.md delete mode 100644 docs2/pages/documentations/directory/directory-get-last-access-time-utc.md delete mode 100644 docs2/pages/documentations/directory/directory-get-last-access-time.md delete mode 100644 docs2/pages/documentations/directory/directory-get-last-write-time-utc.md delete mode 100644 docs2/pages/documentations/directory/directory-get-last-write-time.md delete mode 100644 docs2/pages/documentations/directory/directory-move.md delete mode 100644 docs2/pages/documentations/directory/directory-set-creation-time-utc.md delete mode 100644 docs2/pages/documentations/directory/directory-set-creation-time.md delete mode 100644 docs2/pages/documentations/directory/directory-set-last-access-time-utc.md delete mode 100644 docs2/pages/documentations/directory/directory-set-last-access-time.md delete mode 100644 docs2/pages/documentations/directory/directory-set-last-write-time-utc.md delete mode 100644 docs2/pages/documentations/directory/directory-set-last-write-time.md delete mode 100644 docs2/pages/documentations/directory/directory.md delete mode 100644 docs2/pages/documentations/eval-expressions/_sidebar.md delete mode 100644 docs2/pages/documentations/eval-expressions/eval-compile.md delete mode 100644 docs2/pages/documentations/eval-expressions/eval-execute.md delete mode 100644 docs2/pages/documentations/eval-expressions/linq-dynamic.md delete mode 100644 docs2/pages/documentations/eval.md delete mode 100644 docs2/pages/documentations/file/file-append-all-text.md delete mode 100644 docs2/pages/documentations/file/file-copy.md delete mode 100644 docs2/pages/documentations/file/file-create.md delete mode 100644 docs2/pages/documentations/file/file-decrypt.md delete mode 100644 docs2/pages/documentations/file/file-delete.md delete mode 100644 docs2/pages/documentations/file/file-encrypt.md delete mode 100644 docs2/pages/documentations/file/file-get-creation-time-utc.md delete mode 100644 docs2/pages/documentations/file/file-get-creation-time.md delete mode 100644 docs2/pages/documentations/file/file-get-last-access-time-utc.md delete mode 100644 docs2/pages/documentations/file/file-get-last-access-time.md delete mode 100644 docs2/pages/documentations/file/file-get-last-write-time-utc.md delete mode 100644 docs2/pages/documentations/file/file-get-last-write-time.md delete mode 100644 docs2/pages/documentations/file/file-isexists.md delete mode 100644 docs2/pages/documentations/file/file-move.md delete mode 100644 docs2/pages/documentations/file/file-read-all-text.md delete mode 100644 docs2/pages/documentations/file/file-replace.md delete mode 100644 docs2/pages/documentations/file/file-set-creation-time-utc.md delete mode 100644 docs2/pages/documentations/file/file-set-creation-time.md delete mode 100644 docs2/pages/documentations/file/file-set-last-access-time-utc.md delete mode 100644 docs2/pages/documentations/file/file-set-last-access-time.md delete mode 100644 docs2/pages/documentations/file/file-set-last-write-time-utc.md delete mode 100644 docs2/pages/documentations/file/file-set-last-write-time.md delete mode 100644 docs2/pages/documentations/file/file-write-all-text.md delete mode 100644 docs2/pages/documentations/file/file.md delete mode 100644 docs2/pages/documentations/math/math-Tanh.md delete mode 100644 docs2/pages/documentations/math/math-bigmul.md delete mode 100644 docs2/pages/documentations/math/math-cosh.md delete mode 100644 docs2/pages/documentations/math/math-cube-root.md delete mode 100644 docs2/pages/documentations/math/math-ieee-remainder.md delete mode 100644 docs2/pages/documentations/math/math-nth-root.md delete mode 100644 docs2/pages/documentations/math/math-remainder-int32.md delete mode 100644 docs2/pages/documentations/math/math-remainder-int64.md delete mode 100644 docs2/pages/documentations/math/math-sinh.md delete mode 100644 docs2/pages/documentations/math/math.md delete mode 100644 docs2/pages/documentations/options.md delete mode 100644 docs2/pages/documentations/path/path-change-extension.md delete mode 100644 docs2/pages/documentations/path/path-combine.md delete mode 100644 docs2/pages/documentations/path/path-get-directory-name.md delete mode 100644 docs2/pages/documentations/path/path-get-extension.md delete mode 100644 docs2/pages/documentations/path/path-get-file-name-without-extension.md delete mode 100644 docs2/pages/documentations/path/path-get-file-name.md delete mode 100644 docs2/pages/documentations/path/path-get-full-path.md delete mode 100644 docs2/pages/documentations/path/path-get-path-root.md delete mode 100644 docs2/pages/documentations/path/path-get-random-file-name.md delete mode 100644 docs2/pages/documentations/path/path-get-temp-file-name.md delete mode 100644 docs2/pages/documentations/path/path-get-temp-path.md delete mode 100644 docs2/pages/documentations/path/path-has-extension.md delete mode 100644 docs2/pages/documentations/path/path-is-path-rooted.md delete mode 100644 docs2/pages/documentations/path/path.md delete mode 100644 docs2/pages/documentations/regex/regex-escape.md delete mode 100644 docs2/pages/documentations/regex/regex-index.md delete mode 100644 docs2/pages/documentations/regex/regex-indexop.md delete mode 100644 docs2/pages/documentations/regex/regex-ismatch.md delete mode 100644 docs2/pages/documentations/regex/regex-ismatchop.md delete mode 100644 docs2/pages/documentations/regex/regex-match.md delete mode 100644 docs2/pages/documentations/regex/regex-matchop.md delete mode 100644 docs2/pages/documentations/regex/regex-replace.md delete mode 100644 docs2/pages/documentations/regex/regex-replaceop.md delete mode 100644 docs2/pages/documentations/regex/regex-split.md delete mode 100644 docs2/pages/documentations/regex/regex-splitop.md delete mode 100644 docs2/pages/documentations/regex/regex.md delete mode 100644 docs2/pages/documentations/string/_sidebar.md delete mode 100644 docs2/pages/documentations/string/string-compare-current-culture-ignore-case.md delete mode 100644 docs2/pages/documentations/string/string-compare-current-culture.md delete mode 100644 docs2/pages/documentations/string/string-compare-ignore-case.md delete mode 100644 docs2/pages/documentations/string/string-compare-invariant-culture-ignore-case.md delete mode 100644 docs2/pages/documentations/string/string-compare-invariant-culture.md delete mode 100644 docs2/pages/documentations/string/string-compare-ordinal-ignore-case.md delete mode 100644 docs2/pages/documentations/string/string-compare-ordinal.md delete mode 100644 docs2/pages/documentations/string/string-compare.md delete mode 100644 docs2/pages/documentations/string/string-contains.md delete mode 100644 docs2/pages/documentations/string/string-endswith.md delete mode 100644 docs2/pages/documentations/string/string-indexof-current-culture-ignore-case.md delete mode 100644 docs2/pages/documentations/string/string-indexof-current-culture.md delete mode 100644 docs2/pages/documentations/string/string-indexof-invariant-culture-ignore-case.md delete mode 100644 docs2/pages/documentations/string/string-indexof-invariant-culture.md delete mode 100644 docs2/pages/documentations/string/string-indexof-ordinal-ignore-case.md delete mode 100644 docs2/pages/documentations/string/string-indexof-ordinal.md delete mode 100644 docs2/pages/documentations/string/string-indexof.md delete mode 100644 docs2/pages/documentations/string/string-insert.md delete mode 100644 docs2/pages/documentations/string/string-last-indexof-current-culture-ignore-case.md delete mode 100644 docs2/pages/documentations/string/string-last-indexof-current-culture.md delete mode 100644 docs2/pages/documentations/string/string-last-indexof-invariant-culture-ignore-case.md delete mode 100644 docs2/pages/documentations/string/string-last-indexof-invariant-culture.md delete mode 100644 docs2/pages/documentations/string/string-last-indexof-ordinal-ignore-case.md delete mode 100644 docs2/pages/documentations/string/string-last-indexof-ordinal.md delete mode 100644 docs2/pages/documentations/string/string-last-indexof.md delete mode 100644 docs2/pages/documentations/string/string-length.md delete mode 100644 docs2/pages/documentations/string/string-occurrences.md delete mode 100644 docs2/pages/documentations/string/string-padleft.md delete mode 100644 docs2/pages/documentations/string/string-padright.md delete mode 100644 docs2/pages/documentations/string/string-remove-num-of-chars.md delete mode 100644 docs2/pages/documentations/string/string-remove.md delete mode 100644 docs2/pages/documentations/string/string-replace.md delete mode 100644 docs2/pages/documentations/string/string-split-remove-empty-entries.md delete mode 100644 docs2/pages/documentations/string/string-split.md delete mode 100644 docs2/pages/documentations/string/string-startswith.md delete mode 100644 docs2/pages/documentations/string/string-substring.md delete mode 100644 docs2/pages/documentations/string/string-tolower-invariant.md delete mode 100644 docs2/pages/documentations/string/string-tolower.md delete mode 100644 docs2/pages/documentations/string/string-totitle-case.md delete mode 100644 docs2/pages/documentations/string/string-toupper-invariant.md delete mode 100644 docs2/pages/documentations/string/string-toupper.md delete mode 100644 docs2/pages/documentations/string/string-trim.md delete mode 100644 docs2/pages/documentations/string/string-trimchars.md delete mode 100644 docs2/pages/documentations/string/string-trimend.md delete mode 100644 docs2/pages/documentations/string/string-trimstart.md delete mode 100644 docs2/pages/documentations/string/string.md delete mode 100644 docs2/pages/documentations/value.md delete mode 100644 docs2/pages/faq/faq-eval-sql-net.md delete mode 100644 docs2/pages/faq/faq-general.md delete mode 100644 docs2/pages/faq/faq-installation.md delete mode 100644 docs2/pages/faq/faq-license.md delete mode 100644 docs2/pages/faq/faq.md delete mode 100644 docs2/pages/faq/issue-tracker.md delete mode 100644 docs2/pages/getting-started/_sidebar.md delete mode 100644 docs2/pages/getting-started/arithmetic-expressions.md delete mode 100644 docs2/pages/getting-started/licensing.md delete mode 100644 docs2/pages/getting-started/overview.md delete mode 100644 docs2/pages/getting-started/regular-expressions.md delete mode 100644 docs2/pages/getting-started/split-text.md delete mode 100644 docs2/pages/getting-started/tutorial-introduction.md delete mode 100644 docs2/pages/site/contact-us.md delete mode 100644 docs2/pages/site/download.md delete mode 100644 docs2/pages/site/pricing.md delete mode 100644 docs2/pages/troubleshooting/_sidebar.md delete mode 100644 docs2/pages/troubleshooting/problems.md delete mode 100644 docs2/pages/troubleshooting/sql-server-eval.md delete mode 100644 docs2/pages/troubleshooting/sql-server-file-operation.md delete mode 100644 docs2/pages/troubleshooting/sql-server-function.md delete mode 100644 docs2/pages/troubleshooting/sql-server-regex.md delete mode 100644 docs2/pages/troubleshooting/trial.md diff --git a/docs/404.md b/docs/404.md deleted file mode 100644 index 48596b1..0000000 --- a/docs/404.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -permalink: /404.html ---- - -
-Oops! The page has moved, or the link is broken. - -Let us know how you landed on this page, and we will try to fix the link: info@zzzprojects.com - -Go to Home diff --git a/docs/CNAME b/docs/CNAME deleted file mode 100644 index 1b5168c..0000000 --- a/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -eval-sql.net diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index e452dbb..0000000 --- a/docs/_config.yml +++ /dev/null @@ -1,17 +0,0 @@ -highlighter: rouge -gems: - - jekyll-sitemap -ga: "UA-55584370-4" -encoding: "utf-8" -defaults: - - - scope: - path: "" - values: - layout: "default" - - - scope: - path: "" - type: "pages" - values: - last_modified_at: "2017-12-02" diff --git a/docs/_data/meta.csv b/docs/_data/meta.csv deleted file mode 100644 index 4b25958..0000000 --- a/docs/_data/meta.csv +++ /dev/null @@ -1,33 +0,0 @@ -permalink,title,meta-description,meta-keywords,h1,h2,nagivation,template -index,Learn how to use Eval SQL.NET with Tutorials & Examples using C# syntax.,Learn how to use Eval SQL.NET with Tutorials & Examples using C# syntax.,,,,,full -/404.html,Page Moved,Page Moved,,Page Moved,,,container-h1 -download,Download,Download,,Download,,no,full-h1 -pricing,Purchase,Purchase,,Purchase,,no,full-h1 -contact-us,Contact Us,Contact Us,,Contact Us,,no,full-h1 -tutorials,Tutorials,Tutorials,,Tutorials,,,container-h1 -overview,Overview,Overview,,Overview,,, -requirements,Requirements,Requirements,,Requirements,,, -installing,Installing,Installing,,Installing,,, -upgrading,Upgrading,Upgrading,,Upgrading,,, -licensing,Licensing,Licensing,,Licensing,,, -arithmetic-expressions,Arithmetic Expressions,Arithmetic Expressions,,Arithmetic Expressions,,, -split-text,Split Text,Split Text,,Split Text,,, -regular-expressions,Reqular Expressions,Reqular Expressions,,Reqular Expressions,,, -api,API,API,,API,,, -eval,Eval,Eval,,Eval,,, -value,Value,Value,,Value,,, -options,Options,Options,,Options,,, -configuration,Configuration,Configuration,,Configuration,,, -articles,Articles,Articles,,Articles,,, -faq,FAQ,FAQ,,FAQ,,, -issue-tracker,Issue Tracker,Issue Tracker,,Issue Tracker,,, -faq-general,FAQ - General,FAQ - General,,FAQ - General,,, -faq-installation,FAQ - Installation,FAQ - Installation,,FAQ - Installation,,, -faq-license,FAQ - License,FAQ - License,,FAQ - License,,, -faq-eval-sql-net,FAQ - Eval SQL.NET,FAQ - Eval SQL.NET,,FAQ - Eval SQL.NET,,, -problems,Problems,Problems,,Problems,,, -sql-server-function,SQL Server Function (UDF),SQL Server Function (UDF),,SQL Server Function (UDF),,, -sql-server-regex,SQL Server Regex,SQL Server Regex,,SQL Server Regex,,, -sql-server-file-operation,SQL Server File Operation,SQL Server File Operation,,SQL Server File Operation,,, -sql-server-eval,SQL Server Eval,SQL Server Eval,,SQL Server Eval,,, -trial,Trial,Trial,,Trial,,, diff --git a/docs/_includes/_global_variable.html b/docs/_includes/_global_variable.html deleted file mode 100644 index caee1f8..0000000 --- a/docs/_includes/_global_variable.html +++ /dev/null @@ -1,21 +0,0 @@ -{% if page.path contains "tutorials.md" %} - {% assign is_context_home = true; %} - {% assign is_context_home_css_active = "active"; %} -{% elsif page.path contains "/tutorials/" %} - {% assign is_context_tutorials = true; %} - {% assign is_context_tutorials_css_active = "active"; %} -{% elsif page.path contains "/api/" %} - {% assign is_context_api = true; %} - {% assign is_context_api_css_active = "active"; %} -{% elsif page.path contains "/faq/" %} - {% assign is_context_faq = true; %} - {% assign is_context_faq_css_active = "active"; %} -{% elsif page.path contains "/problems/" %} - {% assign is_context_problems = true; %} - {% assign is_context_problems_css_active = "active"; %} -{% endif %} -{% for num in (0..site.data.meta.size) %} - {% if site.data.meta[num].permalink == page.permalink %} - {% assign meta_index = num %} - {% endif %} -{% endfor %} \ No newline at end of file diff --git a/docs/_includes/aside.html b/docs/_includes/aside.html deleted file mode 100644 index 2bd47c2..0000000 --- a/docs/_includes/aside.html +++ /dev/null @@ -1,87 +0,0 @@ -{% if page.path contains "/tutorials/" %} -
-
-

Tutorials

-
-
- -

Getting Started

- - -

Tutorials

- - -
-
- -{% elsif page.path contains "/api/" %} -
-
-

API

-
-
- - -
-
- -{% elsif page.path contains "/articles/" %} -
- -
- -{% elsif page.path contains "/faq/" %} -
-
-

FAQ

-
-
- -

Getting Help

- - -

FAQ

- - -
-
- -{% elsif page.path contains "/problems/" %} - - -{% endif %} diff --git a/docs/_includes/component-try-it.html b/docs/_includes/component-try-it.html deleted file mode 100644 index 46e59ce..0000000 --- a/docs/_includes/component-try-it.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/_includes/infozzzprojects-email.html b/docs/_includes/infozzzprojects-email.html deleted file mode 100644 index c57c078..0000000 --- a/docs/_includes/infozzzprojects-email.html +++ /dev/null @@ -1 +0,0 @@ -info@zzzprojects.com diff --git a/docs/_includes/layout-angle-begin.html b/docs/_includes/layout-angle-begin.html deleted file mode 100644 index 44e6adf..0000000 --- a/docs/_includes/layout-angle-begin.html +++ /dev/null @@ -1,3 +0,0 @@ -
-
-
\ No newline at end of file diff --git a/docs/_includes/layout-angle-end.html b/docs/_includes/layout-angle-end.html deleted file mode 100644 index 1deaf5e..0000000 --- a/docs/_includes/layout-angle-end.html +++ /dev/null @@ -1,5 +0,0 @@ -
-
-
-
-
\ No newline at end of file diff --git a/docs/_includes/site-footer.html b/docs/_includes/site-footer.html deleted file mode 100644 index 1ad94de..0000000 --- a/docs/_includes/site-footer.html +++ /dev/null @@ -1,21 +0,0 @@ -
-
-
-
- - -
-
-
-
diff --git a/docs/_includes/site-header-nav-context.html b/docs/_includes/site-header-nav-context.html deleted file mode 100644 index 3f7d6ff..0000000 --- a/docs/_includes/site-header-nav-context.html +++ /dev/null @@ -1,25 +0,0 @@ - \ No newline at end of file diff --git a/docs/_includes/site-header-nav-md.html b/docs/_includes/site-header-nav-md.html deleted file mode 100644 index dd5d78e..0000000 --- a/docs/_includes/site-header-nav-md.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - \ No newline at end of file diff --git a/docs/_includes/site-header-nav-site.html b/docs/_includes/site-header-nav-site.html deleted file mode 100644 index c318f45..0000000 --- a/docs/_includes/site-header-nav-site.html +++ /dev/null @@ -1,46 +0,0 @@ - \ No newline at end of file diff --git a/docs/_includes/site-products.html b/docs/_includes/site-products.html deleted file mode 100644 index 661b745..0000000 --- a/docs/_includes/site-products.html +++ /dev/null @@ -1,41 +0,0 @@ - \ No newline at end of file diff --git a/docs/_includes/template-example.html b/docs/_includes/template-example.html deleted file mode 100644 index 79c41c0..0000000 --- a/docs/_includes/template-example.html +++ /dev/null @@ -1,7 +0,0 @@ -

-{% if include.title == null %} - Example -{% else %} - {{ include.title }} -{% endif %} -

diff --git a/docs/_includes/template-exception-cause.html b/docs/_includes/template-exception-cause.html deleted file mode 100644 index 3cae9de..0000000 --- a/docs/_includes/template-exception-cause.html +++ /dev/null @@ -1 +0,0 @@ -This error can be caused for the following reasons: diff --git a/docs/_includes/template-exception.html b/docs/_includes/template-exception.html deleted file mode 100644 index 8285735..0000000 --- a/docs/_includes/template-exception.html +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/docs/_includes/template-execute-thrown.html b/docs/_includes/template-execute-thrown.html deleted file mode 100644 index 9ee2a4a..0000000 --- a/docs/_includes/template-execute-thrown.html +++ /dev/null @@ -1 +0,0 @@ -You execute the method {{ include.methodName }}, and the following error is thrown: diff --git a/docs/_includes/template-h1.html b/docs/_includes/template-h1.html deleted file mode 100644 index 572af7d..0000000 --- a/docs/_includes/template-h1.html +++ /dev/null @@ -1,16 +0,0 @@ -
-
-
-
-

- {{site.data.meta[meta_index].h1}} -

- {% if site.data.meta[meta_index].h2 != null %} -

{{ site.data.meta[meta_index].h2 }}

- {% endif %} -
-
-
-
-
-
diff --git a/docs/_includes/under-construction.html b/docs/_includes/under-construction.html deleted file mode 100644 index a6c8219..0000000 --- a/docs/_includes/under-construction.html +++ /dev/null @@ -1,3 +0,0 @@ -This page is under construction. - -We hope to complete to finish to rewrite EFE tutorials at the end of November. \ No newline at end of file diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html deleted file mode 100644 index 5fc7e0d..0000000 --- a/docs/_layouts/default.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - {% include _global_variable.html %} - - - {{ site.data.meta[meta_index].title }} - - - - - - - - - - - - - - - - -{% if site.data.meta[meta_index].template == "full" %} - - - - {% include site-products.html %} - -
- {{ content }} -
-{% elsif site.data.meta[meta_index].template == "full-h1" %} - - - {% include site-products.html %} - {% include template-h1.html %} -
- {{ content }} -
-{% elsif site.data.meta[meta_index].template == "container-h1" %} -
-
- {% include site-header-nav-site.html %} - {% include site-header-nav-context.html %} - {% include site-header-nav-md.html %} -
-
- - {% include site-products.html %} - {% include template-h1.html %} -
- {{ content }} -
-{% else %} - -
-
- {% include site-header-nav-site.html %} - {% include site-header-nav-context.html %} - {% include site-header-nav-md.html %} -
-
- - {% include site-products.html %} - {% include template-h1.html %} -
-
-
-
- {{ content }} -
-
-
- -
-
-
- -{% endif %} - -{% include site-footer.html %} - -
- - - - - - - - - - - - - - - diff --git a/docs/_sass/card-layout-z1.scss b/docs/_sass/card-layout-z1.scss deleted file mode 100644 index 112b215..0000000 --- a/docs/_sass/card-layout-z1.scss +++ /dev/null @@ -1,41 +0,0 @@ -.card-layout-z1 { - border: 1px solid #000; - box-shadow: 5px 5px 5px #000; - border-radius: 0; -} -.card-layout-z1 .card-body { - border-radius: 0; - padding-left: 20px; -} -.card-layout-z1 .card-header { - border-radius: 0 !important; - background: rgb(204, 0, 0); - background: -webkit-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: -o-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: -moz-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - color: #fff; - padding-left: 20px; -} -.card-layout-z1 h2 { - padding: 5px 0; -} -.card-layout-z1 h3:not(:first-child) { - margin-top: 15px; -} -.card-layout-z1 ul { - padding-left: 20px; -} -.card-layout-z1 li { - list-style: none; - padding: 5px 0; -} -.card-layout-z1 li .fa { - font-size: 24px; - position: relative; - top: 5px; -} - -.card-layout-z1 a { - color: #c00; -} \ No newline at end of file diff --git a/docs/_sass/card-layout-z2.scss b/docs/_sass/card-layout-z2.scss deleted file mode 100644 index 0d1af7d..0000000 --- a/docs/_sass/card-layout-z2.scss +++ /dev/null @@ -1,26 +0,0 @@ -.card-layout-z2 { - background: #333; - background: -webkit-radial-gradient(circle, #333, #111); - background: -o-radial-gradient(circle, #333, #111); - background: -moz-radial-gradient(circle, #333, #111); - background: radial-gradient(circle, #333, #111); - color: #fff; - overflow: hidden; - border: 0; - text-align: center; - box-shadow: 0 5px 5px 0 rgba(0, 0, 0, 0.3); -} - -.card-layout-z2 .card-header { - margin-top: 30px; - margin-bottom: 50px; - background: rgb(204, 0, 0); - background: -webkit-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: -o-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: -moz-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); -} - -.card-layout-z2 .card-header a { - color: #fff; -} \ No newline at end of file diff --git a/docs/_sass/console.scss b/docs/_sass/console.scss deleted file mode 100644 index e8437ac..0000000 --- a/docs/_sass/console.scss +++ /dev/null @@ -1,98 +0,0 @@ -.language-csharp .c1 { - color: #008000; -} -.language-csharp .nf { - color: #c00; -} - -.card-code { - border: 0; - border-radius: 0; -} -.card-code .card-header { - border: 0; - border-radius: 0; - font-size: 24px; -} - -.card-code-dark-inverse { - box-shadow: 10px 10px grey; - background: #fff; -} -.card-code-dark-inverse .card-header { - background: #777; - background: -webkit-radial-gradient(circle, #777, #444); - background: -o-radial-gradient(circle, #777, #444); - background: -moz-radial-gradient(circle, #777, #444); - background: radial-gradient(circle, #777, #444); - color: #fff; - text-shadow: 2px -1px rgba(0, 0, 0, 0.7); -} -.card-code-light { - box-shadow: 10px 10px grey; - background-color: rgba(255, 255, 255, 1); - background: -webkit-radial-gradient(circle, #fff, #fff, #ccc); - background: -o-radial-gradient(circle, #fff, #fff, #ccc); - background: -moz-radial-gradient(circle, #fff, #fff, #ccc); - background: radial-gradient(circle, #fff, #fff, #ccc); -} -.card-code-light .card-header { - background: #333; - background: -webkit-radial-gradient(circle, #333, #111); - background: -o-radial-gradient(circle, #333, #111); - background: -moz-radial-gradient(circle, #333, #111); - background: radial-gradient(circle, #333, #111); - color: #fff; - text-shadow: 2px -1px rgba(0, 0, 0, 0.7); -} - -article h3.example { - background: #777; - background: -webkit-radial-gradient(circle, #777, #444); - background: -o-radial-gradient(circle, #777, #444); - background: -moz-radial-gradient(circle, #777, #444); - background: radial-gradient(circle, #777, #444); - color: #fff; - text-shadow: 2px -1px rgba(0, 0, 0, 0.7); - padding: 10px; - margin-top: 20px; - margin-bottom: 0px; -} -article figure.highlight { - background: #333; - background: -webkit-radial-gradient(circle, #333, #222, #111); - background: -o-radial-gradient(circle, #333, #222, #111); - background: -moz-radial-gradient(circle, #333, #222, #111); - background: radial-gradient(circle, #333, #222, #111); - color: #fff; - padding: 10px; -} -article figure.highlight pre { - color: #d4d4d4; -} -article figure.highlight .language-csharp .nf { - /*color: #569cd6;*/ - color: #569cd6; -} -article2 h3.example { - background: #333; - background: -webkit-radial-gradient(circle, #333, #111); - background: -o-radial-gradient(circle, #333, #111); - background: -moz-radial-gradient(circle, #333, #111); - background: radial-gradient(circle, #333, #111); - color: #fff; - text-shadow: 2px -1px rgba(0, 0, 0, 0.7); - padding: 10px; - margin-top: 20px; - margin-bottom: 0px; -} -article2 figure.highlight { - background: #ccc; - background: -webkit-radial-gradient(circle, #fff, #fff, #ccc); - background: -o-radial-gradient(circle, #fff, #fff, #ccc); - background: -moz-radial-gradient(circle, #fff, #fff, #ccc); - background: radial-gradient(circle, #fff, #fff, #ccc); - padding: 10px; -} - - diff --git a/docs/_sass/hero.scss b/docs/_sass/hero.scss deleted file mode 100644 index 09163e2..0000000 --- a/docs/_sass/hero.scss +++ /dev/null @@ -1,87 +0,0 @@ -.hero { - background: #333; - background: -webkit-radial-gradient(circle, #333, #111); - background: -o-radial-gradient(circle, #333, #111); - background: -moz-radial-gradient(circle, #333, #111); - background: radial-gradient(circle, #333, #111); - color: #fff; - padding: 60px 0; - min-height: 800px; -} -.hero .hero-header { - background-image: url('/images/logo256X256-opacity.png'); - background-size: 100%; - background-repeat: no-repeat; - background-position: center; -} -.hero .hero-header h1 { - margin-top: 60px; - margin-bottom: 40px; -} -.hero .hero-header h1 .display-1 { - font-size: 9rem; - font-weight: 700; -} -.hero .hero-header .download-count .item-text { - color: #888; - font-size: 1.2rem; - margin-top: 30px; -} -.hero .hero-examples .row:first-child { - padding-bottom: 30px; -} -.hero .hero-examples h5 { - background: rgb(204, 0, 0); - background: -webkit-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: -o-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: -moz-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - border-radius: 50%; - font-size: 20px; - font-weight: 700; - height: 140px; - width: 140px; - text-align: center; - padding: 40px 0px; - margin: 0; - text-shadow: 2px -1px rgba(0, 0, 0, 0.7); -} -.hero .hero-examples .hero-arrow img{ - width: 90px; -} -.hero .hero-examples .hero-arrow-ltr { - text-align: right; -} -.hero .hero-examples .hero-arrow-rtl img{ - transform: scaleX(-1); -} -@media (max-width: 575px) { - .hero .hero-header .download-count img { - width: 350px; - } -} -@media (max-width: 991px) { - .hero .hero-header { - text-align: center; - } - .hero .hero-header .download-count img { - width: 350px; - } - .hero .hero-examples h5 { - margin: auto; - } - .hero .hero-examples .hero-arrow { - display: none; - } - .hero .hero-examples h5 { - margin-bottom: 20px; - } - .hero .hero-examples .row:last-child { - margin-top: 40px; - } -} -@media (max-width: 1199px) { - .hero .hero-header .download-count img { - width: 350px; - } -} \ No newline at end of file diff --git a/docs/_sass/highlight.scss b/docs/_sass/highlight.scss deleted file mode 100644 index d90d3f1..0000000 --- a/docs/_sass/highlight.scss +++ /dev/null @@ -1,53 +0,0 @@ -.highlight .k { color: #0000ff; font-weight: normal } -.highlight .nb { color: #0000ff; } -.highlight .nf { color: #c00; font-weight: 700;} -.highlight .c1 { color: #008000;} -.highlight .cm { color: #008000;} -.highlight .o { font-weight: normal;} - -pre { - counter-reset: line-numbering; - border: solid 1px #d9d9d9; - border-radius: 0; - background: #fff; - padding: 15; - line-height: 23px; - margin-bottom: 30px; - white-space: pre; - overflow-x: auto; - word-break: inherit; - word-wrap: inherit; -} - -pre a::before { - content: counter(line-numbering); - counter-increment: line-numbering; - padding-right: 1em; - width: 25px; - text-align: right; - opacity: 0.7; - display: inline-block; - color: #aaa; - background: #eee; - margin-right: 16px; - padding: 2px 10px; - font-size: 13px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -pre a:first-of-type::before { - padding-top: 10px; -} - -pre a:last-of-type::before { - padding-bottom: 10px; -} - -pre a:only-of-type::before { - padding: 10px; -} diff --git a/docs/_sass/highlight2.scss b/docs/_sass/highlight2.scss deleted file mode 100644 index 16358be..0000000 --- a/docs/_sass/highlight2.scss +++ /dev/null @@ -1,6 +0,0 @@ -.highlight .k { color: #0000ff; font-weight: normal } -.highlight .nb { color: #0000ff; } -.highlight .nf { color: #c00; font-weight: 700;} -.highlight .c1 { color: #008000;} -.highlight .cm { color: #008000;} -.highlight .o { font-weight: normal;} \ No newline at end of file diff --git a/docs/_sass/page-index.scss b/docs/_sass/page-index.scss deleted file mode 100644 index 1ede69f..0000000 --- a/docs/_sass/page-index.scss +++ /dev/null @@ -1,131 +0,0 @@ -.featured { - padding: 60px 0; -} -.featured h2 { - font-size: 3rem; - margin-bottom: 30px; -} -.featured .left { - font-size: 1.25rem; -} -.featured .left ul { - padding-left: 15px; -} -.featured .left ul li { - list-style: none; - padding: 5px 0; -} -.featured .left ul li .fa { - position: relative; - top: 3px; -} -.featured .right .table { - box-shadow: 0 10px 10px 0 rgba(0, 0, 0, 0.4); -} -.featured .right .text-muted { - font-style: italic; -} -.testimonials { - margin: 60px 0; -} -.testimonials .container { - padding-top: 80px; - padding-bottom: 40px; -} -.testimonials .container h2 { - font-size: 3rem; - margin-bottom: 30px; - text-align: center; -} -.testimonials .container blockquote { - font-size: 1.25rem; -} -.testimonials .container blockquote a { - color: #c00; -} -.testimonials .container .more { - text-align: center; - padding: 30px 0; -} - -.features h2 { - font-size: 3rem; - margin-bottom: 30px; -} -.features hr { - margin: 60px 0; -} -.features .more-info { - padding-top: 40px; - padding-bottom: 40px; -} -.features .more { - text-align: center; - margin-top: 120px; - margin-bottom: 40px; -} - -#testimonials { - background: transparent; - border: 0; - padding: 125px 0; -} -.main { - overflow-x: hidden; -} -.header-angle { - transform:rotate(4deg); - background: #333; - background: -webkit-radial-gradient(circle, #333, #111); - background: -o-radial-gradient(circle, #333, #111); - background: -moz-radial-gradient(circle, #333, #111); - background: radial-gradient(circle, #333, #111); - box-shadow: 0 5px 5px 0 rgba(0, 0, 0, 0.3); - width:110%; - left:-5%; - top: 30px; - position: relative; -} -/* -.header-angle h1 { - font-size: 5rem; - position: relative; - text-align: center; - vertical-align: middle; - height: 225px; - line-height: 225px; - margin-bottom: 0px; -} -.header-angle h2 { - font-size: 3rem; - position: relative; - text-align: center; - vertical-align: middle; - margin-bottom: 0px; - top: -50px; -}*/ -.header-angle .header-angle-inner { - color: #fff; - transform:rotate(-4deg); -} -.header-angle .top-triangle { - position: absolute; - border-style: solid; - border-width: 200px 600px 0 0; - width: 600px; - border-color: #c00 transparent; -} -.header-angle .bottom-triangle-outer { - margin-right: 500px; - position: relative; -} - -.header-angle .bottom-triangle { - left: 100%; - top: -200px; - border-style: solid; - border-width: 0 0 200px 500px; - border-style: solid; - border-color: #c00 transparent; - position: absolute; -} \ No newline at end of file diff --git a/docs/_sass/scroll-to-top.scss b/docs/_sass/scroll-to-top.scss deleted file mode 100644 index a51feef..0000000 --- a/docs/_sass/scroll-to-top.scss +++ /dev/null @@ -1,45 +0,0 @@ -#scroll-to-top { - position: fixed; - bottom: 60px; - right: 20px; - background: rgb(0, 0, 0); - background: rgba(0, 0, 0, 0.7); - width: 50px; - height: 50px; - text-decoration: none; - -webkit-border-radius: 35px; - -moz-border-radius: 35px; - border-radius: 35px; - display: none; - -webkit-transition: all 0.3s linear; - -moz-transition: all 0.3s ease; - -ms-transition: all 0.3s ease; - -o-transition: all 0.3s ease; - transition: all 0.3s ease; - z-index:99999; -} -#scroll-to-top i { - color: #fff; - margin: 0; - position: relative; - top: 7px; - font-size: 24px; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; - -ms-transition: all 0.3s ease; - -o-transition: all 0.3s ease; - transition: all 0.3s ease; - text-align: center; - width: 100%; - font-size: 30px; -} -#scroll-to-top:hover { - background: rgba(0, 0, 0, 0.9); -} - -@media (max-width: 575px) { - #scroll-to-top { - bottom: 10px; - right: 20px; - } -} diff --git a/docs/_sass/section-faq.scss b/docs/_sass/section-faq.scss deleted file mode 100644 index 426cca2..0000000 --- a/docs/_sass/section-faq.scss +++ /dev/null @@ -1,10 +0,0 @@ -.section-faq hr { - margin: 60px 0; -} -.section-faq h2 { - font-size: 3rem; - margin: 30px 0; -} -.section-faq a { - color: orange; -} \ No newline at end of file diff --git a/docs/_sass/site-footer.scss b/docs/_sass/site-footer.scss deleted file mode 100644 index 685214c..0000000 --- a/docs/_sass/site-footer.scss +++ /dev/null @@ -1,39 +0,0 @@ -.site-footer { - margin-top: 60px; -} -.site-footer .fixed-bottom { - background: -moz-linear-gradient(top, #333, #222); - background: -webkit-linear-gradient(top, #333, #222); - background: -ms-linear-gradient(top, #333, #222); - background: -o-linear-gradient(top, #333, #222); - background: linear-gradient(top, #333, #222); - color: #666; - padding-top: 5px; - padding-bottom: 5px; -} -.site-footer .footer-site-copyright { - padding-top: 4px; -} -.site-footer a { - color: #777; -} -.site-footer a:hover { - color: #777; - opacity: 0.7; - text-decoration: none; - transition: all 0.4s ease-in-out 0s; -} -.site-footer .footer-site-social a { - font-size: 24px; - padding: 0 10px; -} -@media (max-width: 61em) { - .site-footer { - padding: 20px 0; - } -} -@media (max-width: 575px) { - .site-footer { - display: none; - } -} \ No newline at end of file diff --git a/docs/_sass/site-header-nav-context.scss b/docs/_sass/site-header-nav-context.scss deleted file mode 100644 index 34240e0..0000000 --- a/docs/_sass/site-header-nav-context.scss +++ /dev/null @@ -1,45 +0,0 @@ -/* top-nav-lg-context */ -.site-header .nav-context { - background: #333; - background: -webkit-radial-gradient(circle, #333, #111); - background: -o-radial-gradient(circle, #333, #111); - background: -moz-radial-gradient(circle, #333, #111); - background: radial-gradient(circle, #333, #111); -} -.site-header .nav-context nav { - height:40px; - padding-bottom:0px; - padding-top:0px -} -.site-header .nav-context nav li { - font-size:20px; - text-transform:uppercase -} -.site-header .nav-context nav li.active { - background: rgb(204, 0, 0); - background: -webkit-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: -o-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: -moz-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); -} -.site-header .nav-context nav li .nav-link { - padding-left:1rem !important; - padding-right:1rem !important -} -.site-header .nav-context nav li .nav-link .fa-home { - font-size:24px -} -.site-header .nav-context nav li a.nav-link:hover { - color:rgba(255, 255, 255, 1) !important; -} - -@media (max-width: 991px) { - .top-nav-lg.top-nav-dual { - display: none; - } -} -@media (min-width: 992px) { - .top-nav-lg.top-nav-dual { - display: ""; - } -} \ No newline at end of file diff --git a/docs/_sass/site-header-nav-md.scss b/docs/_sass/site-header-nav-md.scss deleted file mode 100644 index dbe7342..0000000 --- a/docs/_sass/site-header-nav-md.scss +++ /dev/null @@ -1,36 +0,0 @@ -.site-header .nav-md { - background-color: white; - box-shadow: 0 5px 5px 0 rgba(0, 0, 0, 0.3); - position:fixed; - top:0; - right:0; - left:0; - z-index: 1030; -} -.site-header .nav-md .header-brand a { - color: #000; -} -.site-header .nav-md .top-nav-md-menu { - text-align: center; - padding-bottom: 20px; -} -.site-header .nav-md .top-nav-md-menu a.nav-link { - color: #000; -} -.site-header .nav-md .top-nav-md-menu .nav-item a .fa { - margin-right: 5px; -} -.site-header .nav-md .top-nav-md-menu .nav-item a .fa-angle-right{ - margin-left: 5px; - margin-right: 0; -} -@media (max-width: 991px) { - .site-header .nav-md { - display: ""; - } -} -@media (min-width: 992px) { - .site-header .nav-md { - display: none; - } -} \ No newline at end of file diff --git a/docs/_sass/site-header-nav-site.scss b/docs/_sass/site-header-nav-site.scss deleted file mode 100644 index 31ccfa5..0000000 --- a/docs/_sass/site-header-nav-site.scss +++ /dev/null @@ -1,86 +0,0 @@ -/* top-nav-lg-site */ -.site-header .nav-site .navbar-brand { - padding-bottom: 0; - padding-top: 0; -} -.site-header .nav-site .navbar-nav .nav-item a.nav-link { - color: #000; - font-size: 18px; - font-weight: 300; -} -.site-header .nav-site .navbar-nav .nav-item a.nav-link:hover { - color: rgba(204, 0, 0, 0.8); -} -.site-header .nav-site .navbar-nav .nav-item a .fa { - margin-right: 5px; -} -.site-header .nav-site .navbar-nav .nav-item a .fa-angle-right{ - margin-left: 5px; - margin-right: 0; -} -@media print { - .site-header .nav-site { - position:relative; - } -} -@media (max-width: 991px) { - .site-header .nav-site .navbar-brand img { - height: 60px; - } - .site-header .nav-site .navbar-nav { - padding: 1em 0; - } - .site-header .nav-site .navbar-nav .nav-item { - border-top: 1px solid rgba(0, 0, 0, 0.3); - text-align: center; - padding: 0.5em 1em; - } - .site-header .nav-site .navbar-nav .nav-item-download { - padding-top: 1em; - } -} -@media (max-width: 575px) { - .site-header .nav-site .navbar-brand { - font-size: 0.8rem; - } - .site-header .nav-site .navbar-brand img { - height: 36px; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .site-header .nav-site .navbar-nav .nav-item:not(.nav-item-download) i { - display: none; - } -} -@media (min-width: 992px) { - .site-header .nav-site { - padding-bottom: 0; - padding-top: 0; - } - .site-header .nav-site .navbar-brand img { - height: 80px; - } - .site-header .nav-site .navbar-nav .nav-item { - padding-left: 1em; - padding-right: 1em; - } - .site-header .nav-site .navbar-nav .nav-item a.nav-link { - position: relative; - text-decoration: none; - } - .site-header .nav-site a.nav-link::after { - border-bottom: 2px solid #c00; - bottom: 0; - content: ""; - left: 0; - position: absolute; - transition: all 0.5s ease 0s; - width: 0; - } - .site-header .nav-site a.nav-link:hover::after { - width: 100%; - } - .site-header .nav-site .navbar-nav .nav-item { - border-left: 1px solid rgba(0, 0, 0, 0.3); - } -} \ No newline at end of file diff --git a/docs/_sass/site-header.scss b/docs/_sass/site-header.scss deleted file mode 100644 index 622c163..0000000 --- a/docs/_sass/site-header.scss +++ /dev/null @@ -1,22 +0,0 @@ -.site-header.page { - margin-top: 100px; -} -.site-header .site-header-inner { - background-color: white; - box-shadow: 0 5px 5px 0 rgba(0, 0, 0, 0.3); - position:fixed; - top:0; - right:0; - left:0; - z-index: 1030; -} -@media (max-width: 991px) { - .site-header.post { - height: 80px; - } -} -@media (min-width: 992px) { - .site-header.post { - height: 140px; - } -} \ No newline at end of file diff --git a/docs/_sass/site-products.scss b/docs/_sass/site-products.scss deleted file mode 100644 index 0c09a4b..0000000 --- a/docs/_sass/site-products.scss +++ /dev/null @@ -1,24 +0,0 @@ -.site-products { - padding: 30px 0; - text-align: center; -} -.site-products h3 { - color: #000; - font-size: 2.5rem; - text-decoration: underline; -} -.site-products ul { - list-style-type: none; - padding-left: 0px; -} -.site-products ul li { - padding: 7px 0; -} -.site-products a { - color: #c00; -} -@media (max-width: 991px) { - .site-products .breadcrumb { - display: block; - } -} \ No newline at end of file diff --git a/docs/css/master.scss b/docs/css/master.scss deleted file mode 100644 index 187fbac..0000000 --- a/docs/css/master.scss +++ /dev/null @@ -1,284 +0,0 @@ ---- ---- - -@import "site-header"; -@import "site-header-nav-context"; -@import "site-header-nav-md"; -@import "site-header-nav-site"; -@import "site-products"; -@import "site-footer"; -@import "section-faq"; -@import "console"; -@import "card-layout-z1"; -@import "card-layout-z2"; -@import "page-index"; -@import "hero"; -@import "scroll-to-top"; - -body { - overflow-x: hidden; -} -/* theme: z */ -.fa-check-square-o { - color: #449d44; -} -/* -@media (min-width: 1400px) { - .container { - max-width: 1340px; - } -} -*/ - -.main { - overflow-x: hidden; -} -.header-angle { - transform:rotate(4deg); - background: #333; - background: -webkit-radial-gradient(circle, #333, #111); - background: -o-radial-gradient(circle, #333, #111); - background: -moz-radial-gradient(circle, #333, #111); - background: radial-gradient(circle, #333, #111); - box-shadow: 0 5px 5px 0 rgba(0, 0, 0, 0.3); - width:110%; - left:-5%; - top: 30px; - position: relative; -} - -.header-angle h1 { - font-size: 5rem; - position: relative; - text-align: center; - vertical-align: middle; - height: 175px; - line-height: 175px; - margin-bottom: 0px; -} -.header-angle h2 { - font-size: 3rem; - position: relative; - text-align: center; - vertical-align: middle; - margin-bottom: 0px; - top: -50px; -} -.header-angle .header-angle-inner { - color: #fff; - transform:rotate(-4deg); -} -.header-angle .top-triangle { - position: absolute; - border-style: solid; - border-width: 200px 600px 0 0; - width: 600px; - border-color: #c00 transparent; -} -.header-angle .bottom-triangle-outer { - margin-right: 500px; - position: relative; -} - -.header-angle .bottom-triangle { - left: 100%; - top: -200px; - border-style: solid; - border-width: 0 0 200px 500px; - border-style: solid; - border-color: #c00 transparent; - position: absolute; -} - -@media (max-width: 991px) { - .header-angle .top-triangle { - left: -150px; - } - .header-angle .bottom-triangle { - left: 150%; - } -} -@media (max-width: 575px) { - .header-angle h1 { - font-size: 3rem; - } - .header-angle .top-triangle { - display: none; - } - .header-angle .bottom-triangle { - display: none; - } -} - - -.layout-angle { - transform:rotate(4deg); - background: #333; - background: -webkit-radial-gradient(circle, #333, #111); - background: -o-radial-gradient(circle, #333, #111); - background: -moz-radial-gradient(circle, #333, #111); - background: radial-gradient(circle, #333, #111); - box-shadow: 0 5px 5px 0 rgba(0, 0, 0, 0.3); - width:110%; - left:-5%; - top: 30px; - position: relative; -} -.layout-angle .layout-angle-inner { - color: #fff; - transform:rotate(-4deg); -} -.layout-angle .top-triangle { - position: absolute; - border-style: solid; - border-width: 200px 600px 0 0; - width: 600px; - border-color: #c00 transparent; -} -.layout-angle .bottom-triangle-outer { - margin-right: 500px; - position: relative; -} - -.layout-angle .bottom-triangle { - left: 100%; - top: -200px; - border-style: solid; - border-width: 0 0 200px 500px; - border-style: solid; - border-color: #c00 transparent; - position: absolute; -} - -@media (max-width: 991px) { - .layout-angle .top-triangle { - left: -150px; - } - .layout-angle .bottom-triangle { - left: 150%; - } -} -@media (max-width: 575px) { - .layout-angle h1 { - font-size: 3rem; - } - .layout-angle .top-triangle { - display: none; - } - .layout-angle .bottom-triangle { - display: none; - } -} - - - -.text-z { - color: #c00; -} -.btn-z { - background: rgb(204, 0, 0); - background: -webkit-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: -o-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: -moz-radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - background: radial-gradient(circle, rgb(204, 0, 0), rgb(170, 0, 0), rgb(154, 0, 0)); - border-color: rgb(154, 0, 0); - box-shadow: 2px 2px 6px 0 rgba(0, 0, 0, 0.48); - color: #fff; - font-size: 20px; - font-weight: 600; - padding: 10px 30px; - text-shadow: 2px -1px rgba(0, 0, 0, 0.7); -} -.btn-z:hover { - /*animation: 0.3s ease 0s alternate none infinite running bounce;*/ - background: rgba(0, 0, 0, 0) none repeat scroll 0 0; - border: 1px solid #cc0000; - color: #cc0000; - text-shadow: 2px -1px rgba(0, 0, 0, 0); -} -/* general */ -.btn-xl { - border-radius: 0.3rem; - font-size: 2rem; - line-height: 1.75; - padding: 0.5rem 1rem; -} - -.navbar-item-divider { - height: 0; - margin: .5rem 0; - overflow: hidden; - border-top: 1px solid #e9ecef; -} - -.col-lg-9 .download-count2 img { - width: 250px; -} -article h1 { - margin-top: 20px; - margin-bottom: 20px; - font-size: 48px; -} - -article h2 { - margin-top: 15px; - margin-bottom: 15px; - letter-spacing: 1px; - color: #000; - text-shadow: 2px 2px 3px #E5EFF5; -} - -article h3 { - font-size: 1.3rem; - margin-top: 20px; - margin-bottom: 20px; -} - -article h4 { - font-size: 1.1rem; - margin-top: 20px; - margin-bottom: 10px; -} -article h1 { - color: #1a242f; - letter-spacing: 1px; - text-shadow: 2px 2px 3px #e5eff5; - margin-top: 30px; - margin-bottom: 20px; -} -article h2 { - padding-bottom: 12px; - padding-top: 15px; -} - -/* -aside .card { - font-size: 14px; - margin-top: 20px; - box-shadow: 10px 10px 10px -10px #333; - border-radius: 0px; -} -aside .card .card-block { - padding: 10px; - padding-top: 0px; -} -aside .card h3 { - font-size: 22px; -} -aside .card h4 { - font-size: 18px; - margin-bottom: 5px; - margin-top: 10px; - font-weight: 100; - letter-spacing: 0.5px; -} -aside .card ul { - list-style-type: none; - padding-left: 15px; - margin-bottom: 5px; -} - -aside .card li { - padding: 2px 0; -} -*/ \ No newline at end of file diff --git a/docs/downloads/Eval-SQL.NET-Install.sql b/docs/downloads/Eval-SQL.NET-Install.sql deleted file mode 100644 index 9121d74..0000000 --- a/docs/downloads/Eval-SQL.NET-Install.sql +++ /dev/null @@ -1,175 +0,0 @@ -/* - * SETUP - * 1 - Replace '[DATABASE_NAME]' by the target database name - * 2 - Run the script - * - * FOR SQL Server 2017 - * - Disabling clr strict security is required. You can re-enable it after. - * - * For EXTERNAL_ACCESS && UNSAFE - * 1 - Uncomment ALTER DATABASE [DATABASE_NAME] SET TRUSTWORTHY ON - * 2- Uncomment either: - * - WITH PERMISSION_SET = EXTERNAL_ACCESS - * - WITH PERMISSION_SET = UNSAFE - */ - -USE [DATABASE_NAME] -GO - --- Required for: EXTERNAL_ACCESS && UNSAFE permission --- ALTER DATABASE [DATABASE_NAME] SET TRUSTWORTHY ON - -GO -EXEC sys.sp_configure N'show advanced options', N'1'; -RECONFIGURE; -GO -DECLARE @version VARCHAR(MAX) = @@VERSION - -IF @version LIKE '%Microsoft SQL Server 2017%' -BEGIN - EXEC sp_configure N'clr strict security', N'0'; - RECONFIGURE; -END -GO -sp_configure 'clr enabled', 1; -RECONFIGURE; -GO -EXEC sys.sp_configure N'show advanced options', N'0'; -RECONFIGURE; -GO - -BEGIN TRY; - BEGIN TRAN; - - /* - * UNINSTALL - */ - PRINT N'Uninstall old version...'; - IF OBJECT_ID('SQLNET_EvalResultSet') IS NOT NULL - BEGIN - DROP PROCEDURE SQLNET_EvalResultSet; - END; - - IF OBJECT_ID('SQLNET_Eval') IS NOT NULL - BEGIN - DROP PROCEDURE SQLNET_Eval; - END; - - IF OBJECT_ID('SQLNET_EvalTVF_1') IS NOT NULL - BEGIN - DROP FUNCTION SQLNET_EvalTVF_1; - END; - - IF OBJECT_ID('SQLNET_EvalTVF_2') IS NOT NULL - BEGIN - DROP FUNCTION SQLNET_EvalTVF_2; - END; - - IF OBJECT_ID('SQLNET_EvalTVF_3') IS NOT NULL - BEGIN - DROP FUNCTION SQLNET_EvalTVF_3; - END; - - IF OBJECT_ID('SQLNET_EvalTVF_4') IS NOT NULL - BEGIN - DROP FUNCTION SQLNET_EvalTVF_4; - END; - - IF OBJECT_ID('SQLNET_EvalTVF_5') IS NOT NULL - BEGIN - DROP FUNCTION SQLNET_EvalTVF_5; - END; - - IF OBJECT_ID('SQLNET_EvalTVF_5') IS NOT NULL - BEGIN - DROP FUNCTION SQLNET_EvalTVF_5; - END; - - IF OBJECT_ID('SQLNET_EvalTVF_String') IS NOT NULL - BEGIN - DROP FUNCTION SQLNET_EvalTVF_String; - END; - - IF TYPE_ID('SQLNET') IS NOT NULL - BEGIN - DROP TYPE SQLNET; - END; - - IF EXISTS ( SELECT 1 - FROM sys.assemblies - WHERE name = 'Z.Expressions.SqlServer.Eval' ) - BEGIN - DROP ASSEMBLY [Z.Expressions.SqlServer.Eval]; - END - - IF EXISTS ( SELECT 1 - FROM sys.assemblies - WHERE name = 'Z.Expressions.Compiler' ) - BEGIN - DROP ASSEMBLY [Z.Expressions.Compiler]; - END; - - /* - * INSTALL - */ - PRINT N'Install new version...' - - IF EXISTS ( SELECT 1 - FROM sys.configurations conf - WHERE conf.configuration_id = 1562 -- "clr enabled" - AND conf.value_in_use = 0 ) - BEGIN - EXEC(N'EXEC sp_configure ''clr enabled'', 1;'); - - EXEC(N'RECONFIGURE'); - -- EXEC(N'RECONFIGURE --WITH OVERRIDE'); -- Use this line instead if you receive the error: "ad hoc changes are not allowed" - END; - - CREATE ASSEMBLY [Z.Expressions.Compiler] - AUTHORIZATION [dbo] - FROM 0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000504500004C0103009A87605B0000000000000000E00022200B013000008E020000080000000000002EAC0200002000000000000000000010002000000002000004000000000000000400000000000000000003000002000000000000030040850000100000100000000010000010000000000000100000000000000000000000D8AB02005300000000C00200000600000000000000000000000000000000000000E002000C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000082000004800000000000000000000002E74657874000000348C020000200000008E020000020000000000000000000000000000200000602E727372630000000006000000C002000006000000900200000000000000000000000000400000402E72656C6F6300000C00000000E002000002000000960200000000000000000000000000400000420000000000000000000000000000000010AC020000000000480000000200050020750100B8360100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013300200010200000100001102D001000001280100000A280200000A38E001000072010000700A38DF01000002D004000001280100000A280200000A38A5010000720F0000700A38BF01000002D005000001280100000A280200000A385D01000072190000700A389F01000002D006000001280100000A280200000A2C0B72230000700A388201000002D007000001280100000A280200000A2C0B722F0000700A386501000002D008000001280100000A280200000A2C0B72390000700A384801000002D009000001280100000A280200000A2C0B72450000700A382B01000002D00A000001280100000A280200000A2C0B72530000700A380E01000002D00B000001280100000A280200000A2C0B725B0000700A38F100000002D00C000001280100000A280200000A2C0B72650000700A38D400000002D00D000001280100000A280200000A2C0B726F0000700A38B700000002D00E000001280100000A280200000A2C0B727B0000700A389A00000002D00F000001280100000A280200000A2C0B72870000700A387D00000002D010000001280100000A280200000A2C0872950000700A2B6302D011000001280100000A280200000A2C022B0C2B1239A9FEFFFF3899FEFFFF72A50000700A2B3B02D012000001280100000A280200000A2C022B0C2B123961FEFFFF3851FEFFFF72B30000700A2B13026F0300000A0A2B0A3926FEFFFF3816FEFFFF062A0000001330010008000000010000111200284F0000062A1E02284F0000062A13300300300100000200001173070000060A0602380D010000060338CC000000067B020000046F0500000A72BD000070280600000A3884000000067B020000046F0500000A72D5000070280600000A2C0B72F1000070730700000A7A067B030000046F0500000A72C0010070280600000A2D17067B030000046F0500000A72D6010070280600000A2C0B72F0010070730700000A7A067B02000004280800000A2C0B72B9020070730700000A7A067B03000004280800000A2C022B092B122D913875FFFFFF720D030070730700000A7A7E0100000406FE0608000006730900000A6F0A00000A2D022B0C2B2F7D03000004382AFFFFFF7E01000004067B020000046F0B00000A067B030000046F0B00000A730C00000A6F0D00000A284E0000062D022B0C2B157D0200000438E9FEFFFF725F030070730700000A7A2A1E02280E00000A2A2E730F00000A80010000042A1E02280E00000A2AC6036F1000000A027B020000046F0B00000A280600000A2C17036F1100000A027B030000046F0B00000A280600000A2A162A000026020304281300000A2A00002A02030405281400000A2A00260203046F1500000A2A00001E026F1600000A2A1E026F1700000A2A1E02281800000A2A13300300470000000300001173150000060A06022B34067B05000004036F1900000A2B07072D022B052B260B2BF6031F186F1A00000A06FE0616000006731B00000A280100002B0B2B077D050000042BC5072A001E026F1D00000A2A1E026F1E00000A2A1E026F1F00000A2A1E026F2000000A2A133004002401000000000000732100000A25D004000001280100000A196F2200000A25D007000001280100000A1C6F2200000A25D005000001280100000A1A6F2200000A25D026000001280100000A1F106F2200000A25D010000001280100000A1F0F6F2200000A25D00F000001280100000A1F0E6F2200000A25D008000001280100000A1D6F2200000A25D00A000001280100000A1F096F2200000A25D00C000001280100000A1F0B6F2200000A25D001000001280100000A176F2200000A25D006000001280100000A1B6F2200000A25D00E000001280100000A1F0D6F2200000A25D011000001280100000A1F126F2200000A25D009000001280100000A1E6F2200000A25D00B000001280100000A1F0A6F2200000A25D00D000001280100000A1F0C6F2200000A80040000042A1E02280E00000A2A9A036F0300000A72A6040070280600000A2C12036F2300000A027B05000004280200000A2A162A001E02280E00000A2A3A02280E00000A02037D2400000A2A001E027B2400000A2A3A02280E00000A02037D2500000A2A001E027B2600000A2A2202037D2600000A2A000000B602282700000A2B1A02027B2500000A6F2800000A7D2900000A0217282A00000A2B042D022BE2027B2900000A2A00001E027B100000042A2202037D100000042A0000001E027B110000042A2202037D110000042A0000001E027B120000042A2202037D120000042A0000001E027B130000042A2202037D130000042A0000001E02280E00000A2A1B3002004D00000004000011732B00000A0A026F2C00000A0B2B19076F2D00000A2B0E0608A50A00001B6F2E00000A2B030C2BEF076F2F00000A2DDFDE190775290000012B07092C022B052B090D2BF6096F3000000ADC062A0000000110000002000D0025320019000000001B3002004D00000005000011733100000A0A026F3200000A0B2B19076F2D00000A2B0E0608742B0000016F3300000A2B030C2BEF076F2F00000A2DDFDE190775290000012B07092C022B052B090D2BF6096F3000000ADC062A0000000110000002000D0025320019000000001B3002002300000006000011733400000A0A02733500000A0B07066F3600000A26DE0A072C06076F3000000ADC062A000110000002000D000A17000A000000001B3004006700000007000011036F3700000A6F3800000A0A2B34066F2D00000A74310000012B240207046F3900000A6F3A00000A07056F3900000A6F3A00000A283B00000AFE0B00002B030B2BD9066F2F00000A2DC4DE190675290000012B07082C022B052B090C2BF6086F3000000ADC022A000110000002000C00404C0019000000001B3004006900000007000011036F3700000A6F3800000A0A2B36066F2D00000A74310000012B260207046F3900000A6F3A00000A07056F3900000A6F3A00000A0E04283C00000AFE0B00002B030B2BD7066F2F00000A2DC2DE190675290000012B07082C022B052B090C2BF6086F3000000ADC022A0000000110000002000C00424E0019000000001B3004006700000007000011036F3700000A6F3800000A0A2B34066F2D00000A74310000012B240207046F3900000A6F3A00000A07056F3900000A6F3A00000A6F3D00000AFE0B00002B030B2BD9066F2F00000A2DC4DE190675290000012B07082C022B052B090C2BF6086F3000000ADC022A000110000002000C00404C0019000000004A02178D11000001251603A2046F3E00000A2A00260203166F3E00000A2A000013300500580000000800001102120028310000060B72BE0400700372DA040070284000000A72EA040070284100000A284200000A077E15000004252D17267E14000004FE0637000006734300000A258015000004280200002B284500000A284200000A2A13300400F70100000900001172EE04007038BD000000026F4600000A38A000000007451A000000050000006701000010000000670100001B000000260000009A00000067010000A5000000B00000006701000067010000BB00000072010000FD000000670100000801000067010000670100006701000010010000180100006701000057010000670100005F010000386201000072F00400700A386201000072FE0400700A385701000072060500700A384C010000026F4700000A2C022B082B5D0B385AFFFFFF026F4800000A2C022B082B4B0A383DFFFFFF1B8D0100000125167218050070A22517026F4700000A8C07000001A2251872EA040070A22519026F4800000A8C07000001A2251A722A050070A2284900000A0A38E3000000722E0500700A38D8000000723E0500700A38CD000000724A0500700A38C200000072520500700A38B7000000725E050070026F4A00000A156A2E1E026F4A00000A20401F00006A3010026F4A00000A0C1202284B00000A2B057272050070722A050070284000000A0A3875000000727A0500700A386A000000729C0500700A2B6272AE0500700A2B5A72BE050070026F4A00000A156A2E1E026F4A00000A20401F00006A3010026F4A00000A0C1202284B00000A2B057272050070722A050070284000000A0A2B1B72D40500700A2B1372EC0500700A2B0B72F4050070730700000A7A062A00133005006D0000000A000011026F4C00000A6F4D00000A8D380000012B5603026F4C00000A6F4D00000A8D040000012B2E160B2B2D026F4C00000A076F4E00000A2B130607080350078F040000012832000006A22B030C2BEA0717580B2B03512BCF07026F4C00000A6F4D00000A32022B052BC10A2BA7062A00000013300400730100000B00001103163828010000026F4F00000A381001000007281800000A2B09026F5000000A0D2B030C2BF4084513000000D20000009F000000D20000000500000020000000D2000000120000005A000000D200000068000000D200000075000000D2000000820000004D0000003D00000030000000E80000008D00000038E30000000918735100000A0A38E7000000091F14735100000A0A38D9000000091F0C176A735200000A0A38C9000000091A735100000A0A38BC000000091B1F1216735300000A0A38AC000000091C735100000A0A389F000000091F10735100000A0A3891000000091E735100000A0A38840000000916735100000A0A3877000000091F0D735100000A0A2B6C091F0C026F5400000A6A735200000A0A2B5A09020728330000060A2B060B38EAFEFFFF062D022B082B425238D2FEFFFF091F0C026F5400000A6A735200000A0A0317522B27720C060070088C1B000001285500000A730700000A7A724206007007285500000A730700000A7A062A00133004006D0200000C00001104D00D00001B280100000A280200000A384C02000004D03D000001280100000A280200000A381E02000004D03E000001280100000A280200000A38DE01000004D00E00001B280100000A280200000A2D2404D03F000001280100000A280200000A2D1204D040000001280100000A280200000A2C15021F15036F5400000A6A735200000A0A38E101000004D041000001280100000A280200000A2C0E021F0E735100000A0A38C101000004D001000001280100000A280200000A2C0E021F17735100000A0A38A101000004D042000001280100000A280200000A2C0D0218735100000A0A388201000004D043000001280100000A280200000A2C0E021F14735100000A0A386201000004D044000001280100000A280200000A2C0D021A735100000A0A384301000004D045000001280100000A280200000A2C0D021C735100000A0A382401000004D046000001280100000A280200000A2C0E021F0E735100000A0A380401000004D047000001280100000A280200000A2C0E021F10735100000A0A38E400000004D048000001280100000A280200000A2C0D021E735100000A0A38C500000004D049000001280100000A280200000A2C0D0216735100000A0A38A600000004D04A000001280100000A280200000A2C0E021F09735100000A0A388600000004D04B000001280100000A280200000A2C10021B7E5600000A16735300000A0A2B6404D04C000001280100000A280200000A2C022B0C2B153A53FEFFFF3818FEFFFF021F0D735100000A0A2B3904D04D000001280100000A280200000A2C022B0C2B153A28FEFFFF38D8FDFFFF021F19735100000A0A2B0E140A2B0A3A0FFEFFFF38AAFDFFFF062A0000001B300200520000000D000011735700000A0A026F3700000A6F3800000A0B2B19076F2D00000A74310000012B0906086F5800000A2B030C2BF4076F2F00000A2DDFDE190775290000012B07092C022B052B090D2BF6096F3000000ADC062A0000011000000200120025370019000000002E733600000680140000042A1E02280E00000A2A5E7276060070036F5900000A032830000006285A00000A2A1B300100350000000E000011027B170000046F5B00000A0A2B081200285C00000A261200285D00000A2DEFDE0E1200FE161100001B6F3000000ADC72EE0400702A0000000110000002000C001521000E000000001B3006000C0200000F000011022B2B06067294060070196F5E00000A1C586F5F00000A0A06160672A2060070196F5E00000A6F6000000A0A2B030A2BD206178D0500000125161F2C9D6F6100000A7E1A000004252D17267E19000004FE063D000006736200000A25801A000004280300002B280400002B7E1B000004252D17267E19000004FE063E000006736400000A25801B000004280500002B7E1C000004252D17267E19000004FE063F000006736600000A25801C000004280600002B280700002B280800002B020272AC060070196F5E00000A6F5F00000A0B140C6F5B00000A13042B581204285C00000A130572BA060070110507284000000A130672DC060070736900000A130711076F6A00000A11061107736B00000A1308110828290000060CDE1811082C0711086F3000000ADC11072C0711076F3000000ADC1204285D00000A2D9FDE0E1204FE161100001B6F3000000ADC736C00000A0D086F3700000A6F3800000A13092B2B11096F2D00000A7431000001130A097210070070110A166F6D00000A6F3A00000A284200000A6F6E00000A11096F2F00000A2DCCDE1511097529000001130B110B2C07110B6F3000000ADC1D8D110000012516721A070070A2251772EA04007009284500000AA22518722A070070A2251902723A070070723E0700706F3D00000AA2251A7242070070A2251B72EA04007009284500000AA2251C729E070070A2286F00000A730700000A7A01340000020011010A1B010C000000000200FF002827010C000000000200D900653E010E0000000002005F0138970115000000001E02280E00000A2A2E733C00000680190000042A1E02280E00000A2A1E0373400000062A1E037B1F0000042A1E037B210000042A13300300BB0000001000001102736C00000A7D210000040238960000000372C0070070196F5E00000A15386E0000000372CA07007017282D0000062B520372C007007016282D0000062B44068E6918310B72CE070070730700000A7A068E6917330A0206169A7D1D0000042A0206169A7D1D00000406179A72DE0700701A6F5E00000A152E3702177D1F0000042B030A2BB90206179A7D1E0000042B04339E2B8E027B2100000472E20700706F6E00000A2B0A280E00000A3860FFFFFF0206179A7D1E0000042A00133003003F0000001100001128470000062B1828430000060A1200287000000A20330800002E022B062B0D2D1C2BE428450000061F642F11737100000A161F0F6F7200000A16FE012A162A001E02280E00000A2A1A7E240000042A001E0280240000042A1A7E250000042A001E0280250000042A1A7E270000042A001E0280270000042A1330010047000000120000117E280000046F7300000A2B2A066F5F0000062B121201287400000A2C1C066F5F0000060B2B030B2BEB1201287500000A2D022B052B0A0A2BD3066F5B0000062A17737600000A2A00133003005300000013000011287700000A026F7800000A0A737900000A066F7A00000A0B737B00000A0C160D2B1D0807098F0700000172EA070070287C00000A6F7D00000A2B0E0917580D09078E6932022B052BD9262BEF086F3A00000A2A00133003005300000013000011287E00000A287700000A026F7800000A0A066F7A00000A0B737B00000A0C160D2B1D0807098F0700000172EA070070287C00000A6F7D00000A2B0E0917580D09078E6932022B052BD9262BEF086F3A00000A2A001B3006006B02000014000011026F0B00000A38BB010000036F0B00000A38560100000216021F2D6F7F00000A6F6000000A383301000009178D0500000125161F3B9D6F6100000A169A130409178D0500000125161F3B9D6F6100000A179A13057356000006251104288000000A7D2A0000042502021F2D6F7F00000A17586F5F00000A7D29000004251105288000000A7D2C000004257E2300000411056F8100000A7D2D0000040C041105288000000A540372F007007072EE0400706F3D00000AFE0B010072EE0400701306086F540000066F8200000A280900002B7E2F000004252D17267E2E000004FE0659000006738300000A25802F000004280A00002B20BD0700005A2040420F005D1308120872F4070070288500000A13071613092B4E110711096F8600000A130B120B288700000A288000000A130A110603110A6F8600000A130B120B288700000A284200000A130603110A176F8800000AFE0B01001109175813092B060D38C7FEFFFF11091C32022B0B2BA9FE0B010038A1FEFFFF0820D0070000110616186F6000000A288000000A58110618186F6000000A288000000A11061A186F6000000A288000000A738900000A7D2B000004086F55000006284B000006161F1A6F6000000A0A2B09FE0B0000383CFEFFFF087B2B0000040BDE132672020800700203285A00000A730700000A7A030617288A00000A2D30086F55000006284B000006161F1A6F6000000A0A030617288A00000A2D1272B70900700203285A00000A730700000A7A0720E20700001D1F0F738900000A288B00000A2C1E72820B00700203120172630D0070288C00000A288D00000A730700000A7A087B2A0000042846000006072844000006172A00411C00000000000000000000D8010000D80100001300000017000001133002006D000000000000000220900100002B407E280000046F7300000A03737600000A6F5C0000062A0220F401000033167E280000046F7300000A03737600000A6F5E0000062A02205802000033022B062B1A33D42BBC7E280000046F7300000A03737600000A6F600000062A725F030070730700000A7A0000001B3004001E01000015000011284900000638FB0000001200287400000A38D80000001200287500000A2A7E010000046F8E00000A2B21288F00000A20E20700001F0917738900000A288B00000A2C4D1728480000062B042D4E2BDB7E280000046F7300000A17737600000A6F5C0000067E280000046F7300000A17737600000A6F5E0000067E280000046F7300000A17737600000A6F60000006172A72790D0070730700000A7A7E010000046F9000000A0B2B251201289100000A0C086F1000000A086F1100000A1203284C0000061304091104284D0000061201289200000A2DD2DE0E1201FE161900001B6F3000000ADC28490000060A2B0A392BFFFFFF381EFFFFFF1200287400000A2C022B082B0E0A38FFFEFFFF1200287500000A2A725F030070730700000A7A0000011000000200A60032D8000E00000000133002001F010000000000000272EE0400703806010000284700000638E10000000272100F007038C3000000162A7E010000046F8E00000A2D090272D70F007051162A7E010000046F8E00000A1733497E01000004280B00002B6F1000000A6F0500000A72D5000070280600000A2D207E01000004280B00002B6F1000000A6F0500000A72BD000070280600000A2C0902721B10007051162A7E010000046F8E00000A1733517E01000004280B00002B6F1100000A6F0500000A72D6010070280600000A2D207E01000004280B00002B6F1100000A6F0500000A72C0010070280600000A2C110272D0100070512B06513837FFFFFF162A28470000062D022B0C2B273927FFFFFF3815FFFFFF7E010000046F8E00000A1631022B082B0C5138F4FEFFFF28500000062A162A001B3001000F00000016000011284E0000060ADE0526160ADE00062A00011000000000000008080005170000011E02280E00000A2A133004005A00000000000000739400000A25727F11007072871100706F9500000A2572C911007072D11100706F9500000A2572F911007072011200706F9500000A8023000004736100000680260000047E2E000004FE065A000006739600000A80280000042A0000133005005400000017000011721B120070027C2B000004287000000A0A1200289700000A186F5F00000A027C2B000004289800000A0A1200722F120070288500000A027C2B000004289900000A0A1200722F120070288500000A288D00000A2A133005006900000000000000027B2C0000042D227235120070027B2D000004027B2A0000048C0A000001027B29000004288D00000A2A724D1200701A8D010000012516027B2C0000048C0A000001A22517027B2D000004A22518027B2A0000048C0A000001A22519027B29000004A2289A00000A2A000000133006000A01000017000011027B2C0000042D7A726D1200701C8D010000012516027B2D000004A22517027C2B000004287000000A8C0A000001A22518027C2B000004289800000A0A1200722F120070288500000AA22519027C2B000004289900000A0A1200722F120070288500000AA2251A027B2A0000048C0A000001A2251B027B29000004A2289A00000A2A72991200701D8D010000012516027B2C0000048C0A000001A22517027B2D000004A22518027C2B000004287000000A8C0A000001A22519027C2B000004289800000A0A1200722F120070288500000AA2251A027C2B000004289900000A0A1200722F120070288500000AA2251B027B2A0000048C0A000001A2251C027B29000004A2289A00000A2A00001E02280E00000A2A2E7358000006802E0000042A1E02280E00000A2A0A032A001A7E260000042A001E027B300000042A2202037D300000042A0000001E027B310000042A2202037D310000042A0000001E027B320000042A2202037D320000042A0000001E02280E00000A2A4A027B37000004036F9B00000AA50A00001B2A004E027B3700000403048C0A00001B6F9C00000A2A4A02739D00000A7D3700000402280E00000A2A009E032B0C037B2C0200042C022B062B162C142BF00272CB120070284200000A0328660000062A022A133006007100000018000011037B2C0200042B2F1F19067B540200046F9E00000A067B5602000459289F00000A0B067B54020004067B56020004076FA000000A0C2B030A2BCE02066F3A00000A723A07007072581300706F3D00000A067B560200048C0A00000108723A07007072581300706F3D00000A288D00000A2A000000133006007100000018000011037B2C0200042B2F1F19067B540200046F9E00000A067B5602000459289F00000A0B067B54020004067B56020004076FA000000A0C2B030A2BCE02066F3A00000A723A07007072581300706F3D00000A067B560200048C0A00000108723A07007072581300706F3D00000A288D00000A2A0000003A0203042801000006285A00000A2A00520203042801000006052801000006288D00000A2A0000001E02280E00000A2A1B300500FD05000019000011046FA100000A281000000638E1050000056FA100000A281000000638AE050000143891050000056FA100000A3886050000046FA100000A387B0500000405289A0000060C046FA100000A280E0000060D056FA100000A280E00000613040714280200000A3A9A000000037B2602000420DC2100003B8A000000037B2602000420DD2100003B7A000000037B2602000420E62100003B6A000000037B2602000420E52100002E5D037B2602000420E72100002E50037B2602000420E82100002E43037B2602000420E92100002E36037B2602000420EC2100002E29037B2602000420ED2100002E1C037B2602000420EA2100002E0F037B2602000420EB210000FE012B011739360400000819594510000000050000004B000000A6030000A6030000A6030000A603000091000000D70000001D01000063010000A9010000EF010000350200007B020000A6030000C102000038A1030000020309082E0D046FA200000A28A300000A2B0B046FA200000AA5040000011104082E0D056FA200000A28A300000A2B0B056FA200000AA50400000128780000060A385D030000020309082E0D046FA200000A28A400000A2B0B046FA200000AA5050000011104082E0D056FA200000A28A400000A2B0B056FA200000AA505000001287B0000060A3817030000020309082E0D046FA200000A28A500000A2B0B046FA200000AA50A0000011104082E0D056FA200000A28A500000A2B0B056FA200000AA50A000001287D0000060A38D1020000020309082E0D046FA200000A28A600000A2B0B046FA200000AA50B0000011104082E0D056FA200000A28A600000A2B0B056FA200000AA50B000001287F0000060A388B020000020309082E0D046FA200000A28A700000A2B0B046FA200000AA50C0000011104082E0D056FA200000A28A700000A2B0B056FA200000AA50C00000128820000060A3845020000020309082E0D046FA200000A28A800000A2B0B046FA200000AA50D0000011104082E0D056FA200000A28A800000A2B0B056FA200000AA50D00000128850000060A38FF010000020309082E0D046FA200000A28A900000A2B0B046FA200000AA50E0000011104082E0D056FA200000A28A900000A2B0B056FA200000AA50E00000128880000060A38B9010000020309082E0D046FA200000A28AA00000A2B0B046FA200000AA50F0000011104082E0D056FA200000A28AA00000A2B0B056FA200000AA50F000001288B0000060A3873010000020309082E0D046FA200000A28AB00000A2B0B046FA200000AA5100000011104082E0D056FA200000A28AB00000A2B0B056FA200000AA510000001288E0000060A382D010000020309082E0D046FA200000A28AC00000A2B0B046FA200000AA5260000011104082E0D056FA200000A28AC00000A2B0B056FA200000AA52600000128910000060A38E7000000046FA100000AD005000001280100000A280200000A2C14046FA200000A6F3A00000A28AD00000AFE0B0200056FA100000AD005000001280100000A280200000A2C14056FA200000A6F3A00000A28AD00000AFE0B0300037B2602000420E82100002E0D037B2602000420E92100003332046FA100000AD011000001280100000A28AE00000A2D17056FA100000AD011000001280100000A28AE00000A2C04140A2B45020309082E0D046FA200000A6F3A00000A2B0B046FA200000A74110000011104082E0D056FA200000A6F3A00000A2B0B056FA200000A741100000128920000060A2B02140ADE4626081F0F331F725E130070032866000006730700000A130572E7130070110573AF00000A7A725E130070032866000006730700000A13067251140070110673AF00000A7A140A062D3B725E130070032866000006730700000A130772C1140070037B2C0200046F3A00000A046FA100000A056FA100000A2869000006110773B000000A7A071428AE00000A3970000000066FA100000A280E000006083362037B2602000420DD2100003332046FA100000A28100000062C022B082B210B387FFAFFFF056FA100000A28100000062D022B0C2B2D3A53FAFFFF3848FAFFFF0706745B0000016FA200000A28B100000A28AD00000A0A2B0A3A3BFAFFFF3815FAFFFF062A000000411C00000000000009010000F2030000FB040000440000005C0000011B300400400200001A000011046FA100000A280E00000638ED010000056FA100000AD00A000001280100000A280200000A38C2010000056FA200000A28A500000A2B34056FA200000AA50A0000012B27046FA100000A28100000062D10056FA100000A281000000616FE012B01162C022B08387D0100000C2BD60719594510000000050000001E000000370000003700000037000000370000005000000069000000820000009B000000B1000000C8000000DF0000001001000010010000FA000000380B0100000203046FA200000AA5040000010828790000060A38F40000000203046FA200000AA50500000108287C0000060A38DB0000000203046FA200000A28A500000A08287D0000060A38C20000000203046FA200000AA50A00000108287D0000060A38A90000000203046FA200000AA50B0000010828800000060A38900000000203046FA200000AA50C0000010828830000060A38770000000203046FA200000AA50D0000010828860000060A2B610203046FA200000AA50E000001086B28880000060A2B4A0203046FA200000AA50F000001086C288B0000060A2B330203046FA200000AA5100000010828B200000A288E0000060A2B180203046FA200000A74110000010828930000060A2B02140ADE2C26725E130070032866000006730700000A0D72511400700973AF00000A7A140A2B0A3A46FEFFFF3834FEFFFF062D022B082B410B380DFEFFFF725E130070032866000006730700000A130472C1140070037B2C0200046F3A00000A046FA100000A056FA100000A2869000006110473B000000A7A062A411C0000000000006E0000005C010000CA0100001E0000005C000001133005002F0000001B00001102037B27020004141628710000062B1102037B2A020004141628710000060B2B030A2BEC0203060704286E0000062A0013300400E90200001C0000111438DB02000004755B00000138B102000005755B000001388D020000072C12082C0F02030708286B0000060A38B6020000046FA100000A28100000062D18056FA100000A28100000062D03142B0E056FA100000A2B06046FA100000A0D046FA100000A056FA100000A289900000613041104D001000001280100000A280200000A3950010000046FA100000A28110000062C68046FA100000A6FB300000AD053000001280100000A280200000A2C4C056FA100000A28110000062C20046FA100000A6FB300000A056FA100000A6FB300000A28AE00000A39D800000005046FA100000A28B400000AFE0B03000E0404056FB500000A0A38B9000000056FA100000A28110000062C62056FA100000A6FB300000AD053000001280100000A280200000A2C46046FA100000A28110000062C1D046FA100000A6FB300000A056FA100000A6FB300000A28AE00000A2C6604056FA100000A28B400000AFE0B02000E0404056FB500000A0A2B4A046FB600000A1F322E1C056FB600000A1F32331205046FA100000A28B400000AFE0B03002B24056FB600000A1F322E1A046FB600000A1F32331004056FA100000A28B400000AFE0B0200062D0A02030405289C0000060A063A200100000E0404056FB500000A0A3811010000046FA100000A110428AE00000A2C4F1104D011000001280100000A280200000A2C30072C2D076FA100000AD005000001280100000A280200000A2C16076FA200000A6F3A00000A28AD00000AFE0B02002B0C04110428B400000AFE0B0200056FA100000A110428AE00000A2C4F1104D011000001280100000A280200000A2C30082C2D086FA100000AD005000001280100000A280200000A2C16086FA200000A6F3A00000A28AD00000AFE0B03002B0C05110428B400000AFE0B03000E0404056FB500000A0A091428AE00000A2C022B082B3E0C386DFDFFFF066FA100000A1104280200000A2C022B082B250B3849FDFFFF0906745B0000016FA200000A28B100000A28AD00000A0A2B060A381FFDFFFF062A000000133004008B0000001D00001102037B2702000414162871000006387300000002037B2A020004141628710000062B5507755B0000012B3708755B0000011304092C1111042C0D0203091104286C0000060A2B42086FA100000AD00A000001280100000A28AE00000A2C022B052B190D2BC608D00A000001280100000A28B400000A0C2B030C2BA80407086FB500000A0A2B030B2B8A062A00133004002C0000001E00001102037B27020004141628710000062B1002037B2A0200041628740000060B2B030A2BED0406076FB700000A2A1B300600EE2F00001F00001173AA0000060A060238D52F00001638C52F00001438A62F0000037B260200040D0920C02100003D760100000920BC2000003D500100000920132000003B3C2F000009207020000059454D000000370800004C080000F4080000090900005D090000B508000033090000CA080000480900008B080000A0080000760800001E0900006108000072090000DF0800006B140000A30F00001A0800002608000009080000C10E00001E0B0000BE150000370B0000620C0000870A0000F3100000272E00006A0A00005B120000272E0000272E0000272E00009B0E0000A5090000530A0000500F00002A120000272E0000272E0000272E0000272E0000272E0000272E0000272E0000220A0000272E0000272E0000272E00003E0F0000272E0000272E0000272E0000272E0000272E0000272E0000272E0000272E0000200F000087090000272E0000272E0000272E0000272E0000272E0000272E0000272E0000272E0000EE140000272E0000272E0000272E0000272E0000272E0000BC0900008814000038222E00000920B92100003B8D1900000920C02100003B5E1F000038072E00000920ED3200003DC90100000920DC210000594548000000791B00003D1D0000821D0000C71D0000E51D00003D1B00005B1B0000C2190000E0190000FE1900006B1A00001C1A0000891A0000A71A0000C51A0000E31A0000011B00001F1B0000D02C0000D02C00007E170000A81F0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C0000D02C000027170000F514000039170000A6160000FD15000088160000DF1500001B160000EB1600006A16000009170000D02C0000D02C0000D02C0000D02C0000D02C00004B1F0000041F0000031E0000A71E0000E51E0000C61E0000D02C0000D02C0000891F00006A1F00000920CB3200005945230000004122000066220000382C0000382C0000382C0000BF230000E82300004224000011240000382C0000960100007500000014030000382C000080010000382C0000382C0000310500005F01000060270000122100009D240000CE260000CE260000382C0000B5270000382C0000F9270000382C0000382C0000382C0000382C0000382C0000382C00006C1F000038332C00000920F63200003B3D23000009200233000059451500000003240000252200007A220000C82B000012250000C82B000008200000C82B0000C82B000055200000C41F0000C82B000046240000C82B000051210000F3250000F31F000051210000C82B0000C82B0000501F000038C32B0000037B270200042C60037B270200047B2602000420E63200002E1C037B270200047B2C0200047B58020004724C15007028B800000A2C32067B5A000004037B270200041728740000061307067B5A0000041107037B2C0200047B580200046F190100060C385B2B0000067B5A0000047BA50000041428AE00000A2C27067B5A000004067B5A0000047BA5000004037B2C0200047B580200046F190100060C38212B0000067B5A0000047BA70000042C18067B5A0000040317287400000628AD00000A0C38FC2A0000067B5A000004067B5A000004037B2C0200047B58020004166F170100060C38D92A0000037B2C0200047B58020004166F8600000A8C0500000128AD00000A0C38B82A0000037B2C0200047B5802000428AD00000A0C38A22A0000037B2C0200047B5702000420153300003335037B2C0200047B58020004200002000028B900000A120828BA00000A2C17110816321211088C0A00000128AD00000A0C385B2A0000037B2C0200047B5702000420153300002E12037B2C0200047B5702000420E73200003330037B2C0200047B58020004200002000028B900000A120928BB00000A2C1211098C0B00000128AD00000A0C38072A0000037B2C0200047B5702000420153300002E12037B2C0200047B5702000420E83200003336037B2C0200047B58020004200002000028B900000A120A28BC00000A2C18110A166A3212110A8C0C00000128AD00000A0C38AD290000037B2C0200047B5702000420153300002E36037B2C0200047B5702000420E73200002E24037B2C0200047B5702000420E83200002E12037B2C0200047B5702000420E93200003330037B2C0200047B58020004200002000028B900000A120B28BD00000A2C12110B8C0D00000128AD00000A0C38352900007254150070032865000006730700000A7A037B2C0200047B570200042015330000332C037B2C0200047B580200041628B900000A120C28BA00000A2C12110C8C0A00000128AD00000A0C38E6280000037B2C0200047B5702000420153300002E12037B2C0200047B5702000420E7320000332C037B2C0200047B580200041628B900000A120D28BB00000A2C12110D8C0B00000128AD00000A0C3896280000037B2C0200047B5702000420153300002E12037B2C0200047B5702000420E8320000332C037B2C0200047B580200041628B900000A120E28BC00000A2C12110E8C0C00000128AD00000A0C3846280000037B2C0200047B5702000420153300002E36037B2C0200047B5702000420E73200002E24037B2C0200047B5702000420E83200002E12037B2C0200047B5702000420E9320000332C037B2C0200047B580200041628B900000A120F28BD00000A2C12110F8C0D00000128AD00000A0C38D2270000037B2C0200047B5702000420EA320000332C037B2C0200047B580200041628B900000A121028BE00000A2C1211108C0E00000128AD00000A0C3894270000037B2C0200047B5702000420EB320000332C037B2C0200047B580200041628B900000A121128BF00000A2C1211118C0F00000128AD00000A0C3856270000037B2C0200047B5702000420EC320000332C037B2C0200047B580200041628B900000A121228C000000A2C1211128C1000000128AD00000A0C38182700007254150070032865000006730700000A7A037B2C0200047B5702000420EA3200003330037B2C0200047B5802000420A000000028B900000A121328BE00000A2C1211138C0E00000128AD00000A0C38C5260000037B2C0200047B5702000420153300002E12037B2C0200047B5702000420EB3200003330037B2C0200047B5802000420A000000028B900000A121428BF00000A2C1211148C0F00000128AD00000A0C3871260000037B2C0200047B5702000420EC3200003330037B2C0200047B5802000420A000000028B900000A121528C000000A2C1211158C1000000128AD00000A0C382F2600007254150070032865000006730700000A7A168C0400000128AD00000A0C380D2600001428AD00000A0C3801260000178C0400000128AD00000A0C38F0250000D004000001280100000A28AD00000A0C38DB250000D007000001280100000A28AD00000A0C38C6250000D005000001280100000A28AD00000A0C38B1250000D010000001280100000A28AD00000A0C389C250000D00F000001280100000A28AD00000A0C3887250000D00E000001280100000A28AD00000A0C3872250000D00A000001280100000A28AD00000A0C385D250000D00C000001280100000A28AD00000A0C3848250000D001000001280100000A28AD00000A0C3833250000D006000001280100000A28AD00000A0C381E250000D008000001280100000A28AD00000A0C3809250000D011000001280100000A28AD00000A0C38F4240000D00B000001280100000A28AD00000A0C38DF240000D00D000001280100000A28AD00000A0C38CA240000D009000001280100000A28AD00000A0C38B5240000D06D000001280100000A28AD00000A0C38A0240000067B5A0000040314FE06C100000A73C200000A28700000060C3882240000067B5A000004146F0F01000628C300000A0C386B240000037B230200042C3F067B5A0000047BA30000041316067B5A000004177DA3000004067B5A000004037B23020004141628710000060C067B5A00000411167DA30000043824240000067B5A000004176F14010006037B20020004141728720000060C3805240000067B5A000004177DA6000004067B5A000004037B2A020004040528710000060C067B5A000004167DA600000438D4230000067B5A000004146F1001000628C400000A0C38BD230000067B5A000004037B2302000416287400000628C500000A0C38A0230000067B5A00000417176F1301000613171117037B20020004141728710000062611176F110100062C1911177BA80000041117146F1001000628C600000A6FC700000A067B5A000004037B230200041416287100000628C800000A1117146F0F01000628C300000A28C900000A131811177BA800000411186FC700000A111716146F0B0100061117146F0F01000628CA00000A0C3809230000067B5A000004037B20020004141628710000060C38F0220000067B5A00000416166F1301000625037B230200047B1F020004166FCB00000A1416287100000613192517176F13010006131A111A037B230200047B1F020004176FCB00000A14162871000006131B037B230200047B1F0200046FCC00000A192E0728C800000A2B1A111A037B230200047B1F020004186FCB00000A14162871000006131C111A037B200200041417287100000626111A6F110100062C19111A7BA8000004111A146F1001000628C600000A6FC700000A111A7BA8000004111C6FC700000A111A16146F0B010006131D111A146F0F01000628C300000A131E111B2D04111D2B0B111B111D111E28C900000A111A146F0F01000628CA00000A131F11192C0B1119111F28CD00000A2B02111F0C257BA8000004086FC700000A16146F0B0100060C38C5210000067B5A00000416166F1301000613201120037B230200047B1F020004166FCB00000A7B2B0200047B2A02000414162871000006256FA100000A72921500706FCE00000A132111211428CF00000A2C16D02A000001280100000A729215007028CE00000A1321112128D000000A1322112011226FA100000A6F1A010006132311207BA80000041123112228D100000A6FC700000A11226FA100000A72AE1500706FCE00000A13241123112428D000000A11226FA100000A72C01500706FD200000A13251123112528D300000A1326037B230200047B1F020004166FCB00000A7B2B0200047B270200047B270200047B2C0200047B58020004724C150070280600000A2D2A1120037B230200047B1F020004166FCB00000A7B2B0200047B270200047B270200041628740000062B0711266FA100000A132711201127037B230200047B1F020004166FCB00000A7B2B0200047B270200047B2C0200047B580200046F190100061328112017176F13010006132911286FA100000A11266FA100000A28AE00000A2D0B1128112628D100000A2B151128112611286FA100000A28B400000A28D100000A132A11297BA8000004112A6FC700000A1129037B200200041417287100000626112916146F0B010006132B1129146F0F01000628C300000A132C112B112C28C900000A132D11296F110100062D11112D1129146F0F01000628CA00000A2B17112D1129146F0F0100061129146F1001000628D400000A0C11207BA8000004086FC700000A112016146F0B0100060C388C1F0000067B5A000004037B2A0200047B2C0200047B580200046F0C01000628D500000A0C38661F0000067B5A000004037B2302000414162871000006132E067B5A000004037B2002000414162871000006132F037B2A0200042D0B112E112F28D600000A2B1C112E112F067B5A000004037B2A0200041416287100000628C900000A0C38071F0000067B5A0000040314FE06D700000A73C200000A28700000060C38E91E0000067B5A0000040328760000060C38D71E0000037B200200042C34067B5A000004037B20020004141628710000061330067B5A00000411306FA100000A6F0E010006113028D800000A0C389B1E0000067B5A000004146F0E01000628D900000A0C38841E0000067B5A000004037B2302000416287400000613311131280E000006133211321959450D00000005000000160000002700000038000000490000005A0000006B0000007C0000008D0000009E000000AF000000C0000000D100000038DE000000178C0A00000128AD00000A0C38141E0000188C0A00000128AD00000A0C38031E0000178C0A00000128AD00000A0C38F21D0000178C0A00000128AD00000A0C38E11D0000188C0A00000128AD00000A0C38D01D0000188C0A00000128AD00000A0C38BF1D00001A8C0A00000128AD00000A0C38AE1D00001A8C0A00000128AD00000A0C389D1D00001E8C0A00000128AD00000A0C388C1D00001E8C0A00000128AD00000A0C387B1D00001A8C0A00000128AD00000A0C386A1D00001E8C0A00000128AD00000A0C38591D00001F108C0A00000128AD00000A0C38471D000072D01500700311312867000006730700000A7A73A800000613331133067B5A00000417166F130100067D5800000411337B58000004037B2302000414162871000006133414133573DA00000A1336037B1F0200046FDB00000A13372B5E123728DC00000A133811337B5800000411387B200200041416287100000611387B1F02000411337B59000004252D1A2611331133FE06A900000673DD00000A25133A7D59000004113A280C00002B28DE00000A1339113611396FDF00000A123728E000000A2D99DE0E1237FE162000001B6F3000000ADC037B2A0200042C1611337B58000004037B2A02000414162871000006133511337B580000047BA80000041134113511366FE100000A28E200000A6FC700000A11337B580000047BA800000411337B58000004146F0F01000628C600000A6FC700000A11337B5800000416146F0B0100060C38FD1B0000037B200200042C1E067B5A000004037B200200041416287100000628E300000A0C38D71B000028E400000A0C38CC1B0000067B5A000004037B2002000414162871000006133B037B1F02000414FE03133C73E500000A133D037B1F0200043967010000037B1F0200046FDB00000A13373839010000123728DC00000A134014134111407B2302000439D700000011407B230200047B1F0200046FCC00000A16314311407B230200047B1F020004166FCB00000A7B270200042C2A067B5A00000411407B230200047B1F020004166FCB00000A7B270200041628740000061341388000000011407B230200047B1F0200046FCC00000A16313611407B230200047B1F0200046FCC00000A173322067B5A00000411407B230200047B1F020004166FCB00000A16287400000613412B3611407B230200042C1311407B230200047B1F0200046FCC00000A2D051413412B15067B5A00000411407B230200041628740000061341067B5A00000411407B20020004141628710000061342114114280200000A2C1A113DD017000001280100000A114228E600000A6FE700000A2B10113D1141114228E600000A6FE700000A123728E000000A3ABBFEFFFFDE0E1237FE162000001B6F3000000ADC037B2A02000414FE03133E14133F113E2C1A067B5A000004037B2A0200047B2002000414162871000006133F113C2C18113E2D14113B113D6FE800000A28E900000A0C38EB190000113C16FE01113E5F2C0F113B113F28EA00000A0C38D2190000113B113F113D6FE800000A28EB00000A0C38BC190000067B5A000004037B2302000417287400000628AD00000A0C389F190000037B230200042C3F067B5A0000047BA30000041343067B5A000004187DA3000004067B5A000004037B23020004141628710000060C067B5A00000411437DA30000043858190000067B5A000004186F14010006037B20020004141728720000060C3839190000067B5A00000416166F1301000613441144037B230200041416287100000613451144037B2002000414162871000006134611456FB600000A1F2E3345114574680000016FEC00000A72421600707EED00000A168D1C00000128EE00000A13471146114728EA00000A134811447BA80000041145114828CD00000A6FC700000A2B40114572421600707EED00000A168D1C00000128EE00000A13491146114928EA00000A134A11447BA8000004178D1C0000012516114AA228EF00000A6FC700000A114416146F0B0100060C3869180000067B5A00000417176F13010006134B114B146F0F01000628C300000A134C067B5A000004037B2302000414162871000006114B037B200200041417287100000626114B16146F0B010006134D114D114C28C900000A134E114B6F110100062D11114E114B146F0F01000628CA00000A2B17114E114B146F0F010006114B146F1001000628D400000A0C38DB170000067B5A000004037B2702000414162871000006134F067B5A000004037B2A020004141628710000061350114F6FA100000AD011000001280100000A280200000A2C351150755B0000012C181150755B0000016FA200000A6F3A00000A28AD00000A1350114F11507E5700000428F000000A0C3864170000114F6FA100000A6F0300000A7252160070280600000A2C167274160070037B270200042865000006730700000A7A067B5A0000046F000100062D1A067B5A0000040314FE06F100000A73F200000A286D0000062B18067B5A0000040314FE06F300000A73F200000A286D0000060C38F1160000067B5A0000040314FE06F400000A73F200000A286D0000060C38D3160000067B5A0000040314FE06F500000A73F200000A286D0000060C38B5160000067B5A0000047BAC0000047BB50000042C1F0320D33200007D26020004067B5A00000403040528710000060C3884160000067B5A0000040314FE06F600000A73F200000A286D0000060C3866160000067B5A0000040314FE06F700000A73F200000A286F0000060C3848160000067B5A0000040314FE06F800000A73F200000A286D0000060C382A160000067B5A0000046F000100062D1A067B5A0000040314FE06F900000A73F200000A286D0000062B18067B5A0000040314FE06FA00000A73F200000A286D0000060C38E5150000067B5A0000040314FE06FB00000A73F200000A286D0000060C38C7150000067B5A0000040314FE06FC00000A73F200000A286F0000060C38A9150000067B5A0000040328770000060C3897150000067B5A0000046F000100062D1A067B5A0000040314FE06FD00000A73F200000A286D0000062B18067B5A0000040314FE06FE00000A73F200000A286D0000060C3852150000067B5A000004037B27020004141628710000061351067B5A000004037B2A02000414162871000006135211516FA100000A11526FA100000A28AE00000A2611511428AD00000A28FF00000A11516FA100000A28110000062C3B11516FA100000A6FB300000AD053000001280100000A280200000A2C1E11516FA100000A729F1700706FD200000A13531151115328D300000A135111516FA100000A11526FA100000A28AE00000A2C10115211516FA100000A28B400000A135211511152280001000A0C388A140000067B5A000004037B27020004141628710000061354067B5A000004037B2A0200047B27020004141628710000061355067B5A000004037B2A0200047B2A02000414162871000006135611556FA100000A11566FA100000A28AE00000A39DF00000011556FA100000A11566FA100000A2899000006135711556FA100000A115728AE00000A2C55037B2A0200047B270200047B260200042096200000331C1155745E0000016F0101000A11566FA100000A280201000A13552B22037B2A0200047B2A0200047B2602000420962000002E0B1155115728B400000A135511566FA100000A115728AE00000A2C55037B2A0200047B2A0200047B260200042096200000331C1156745E0000016F0101000A11556FA100000A280201000A13562B22037B2A0200047B270200047B2602000420962000002E0B1156115728B400000A135611546FA100000AD004000001280100000A28AE00000A2C131154D004000001280100000A28B400000A1354115411551156280001000A0C380E130000067B5A0000040314FE060301000A73F200000A286D0000060C38F0120000067B5A0000040314FE060401000A73F200000A286D0000060C38D2120000067B5A0000040314FE060501000A73F200000A286D0000060C38B4120000067B5A0000047BAC0000047BB50000042C1F0320D23200007D26020004067B5A00000403040528710000060C3883120000067B5A0000040314FE060601000A73F200000A286D0000060C3865120000067B5A0000040314FE060701000A73F200000A286D0000060C3847120000067B5A0000040314FE060801000A73F200000A286D0000060C3829120000067B5A0000040314FE06FF00000A73F200000A286D0000060C380B120000067B5A0000040314FE060901000A73F200000A286D0000060C38ED110000067B5A0000040314FE060A01000A73F200000A286D0000060C38CF110000067B5A0000040314FE060B01000A73F200000A286D0000060C38B1110000067B5A0000040314FE060C01000A73F200000A286D0000060C3893110000067B5A0000040314FE060D01000A73F200000A286F0000060C3875110000067B5A0000040314FE060E01000A73F200000A286F0000060C3857110000067B5A000004037B27020004141628710000061358067B5A000004037B2A02000414162871000006135911586FA100000AD011000001280100000A280200000A2D1B11596FA100000AD011000001280100000A280200000A391A0100001158755B000001135A1159755B000001135B115A2C1A115B2C16067B5A00000403115A115B286B0000060C38CA100000115A2C2B115A6FA100000AD005000001280100000A280200000A2C13115A6FA200000A6F3A00000A28AD00000A1358115B2C2B115B6FA100000AD005000001280100000A280200000A2C13115B6FA200000A6F3A00000A28AD00000A135911586FA100000AD011000001280100000A28AE00000A2C2411586FA100000A72AB170070168D020000016F0F01000A135C1158115C28D000000A135811596FA100000AD011000001280100000A28AE00000A2C2411596FA100000A72AB170070168D020000016F0F01000A135D1159115D28D000000A13597E5700000411581159281001000A0C38E00F0000067B5A0000046F000100062D1E067B5A000004031158115914FE061101000A73F200000A286E0000062B1C067B5A000004031158115914FE061201000A73F200000A286E0000060C38930F0000067B5A0000046F000100062D1A067B5A0000040314FE061301000A73F200000A286D0000062B18067B5A0000040314FE061401000A73F200000A286D0000060C384E0F0000067B5A0000046F000100062D1A067B5A0000040314FE061501000A73F200000A286D0000062B18067B5A0000040314FE061601000A73F200000A286D0000060C38090F0000067B5A0000040314FE061701000A73F200000A286D0000060C38EB0E0000067B5A0000040314FE061801000A73F200000A286D0000060C38CD0E0000067B5A000004030414FE061901000A731A01000A28A60000060C38AE0E0000067B5A000004037B23020004162874000006135E04755B0000012C49046FA100000AD005000001280100000A280200000A2C32115ED011000001280100000A280200000A2C1F04745B0000016FA200000AA50500000117731B01000A28AD00000AFE0B0200046FA100000A115E28AE00000A2D03042B0804115E28B400000A0C38290E0000067B5A000004030414FE061901000A731A01000A28A60000060C380A0E0000067B5A000004030414FE061C01000A731A01000A28A60000060C38EB0D0000067B5A000004030414FE061D01000A731A01000A28A60000060C38CC0D0000067B5A0000046F000100062D1B067B5A000004030414FE061E01000A731A01000A28A60000062B19067B5A000004030414FE061F01000A731A01000A28A60000060C38850D0000067B5A000004030414FE062001000A731A01000A28A60000060C38660D0000067B5A000004030414FE062101000A731A01000A28A60000060C38470D0000067B5A000004030414FE062201000A731A01000A28A60000060C38280D000004755B000001135F115F2C32115F6FA200000A75020000012C24067B5A000004037B20020004115F6FA200000A74020000011428A40000060C38EA0C0000067B5A000004037B20020004046FA100000A0428A40000060C38CC0C000004755B000001136011602C2E11606FA200000A75020000012C20067B5A0000040311606FA200000A7402000001141428A30000060C38920C0000067B5A00000403046FA100000A041428A30000060C38780C000004755B0000011361037B1F02000406FE06AB000006732301000A280D00002B280E00002B136211612C2F11616FA200000A75020000012C21067B5A0000040311616FA200000A740200000114116228A30000060C381F0C0000067B5A00000403046FA100000A04116228A30000060C38040C0000046FA100000A6F2401000A2D0F067B5A000004030428A20000062B0D067B5A000004030428A10000060C38D50B0000067B5A0000040314141428A30000060C38C00B0000041428AD00000A280801000A0320F12100007D26020004067B5A000004030405287100000613631163D001000001280100000A28B400000A13631428AD00000A1163280001000A0C38730B0000041428AD00000A280801000A03200C3300007D26020004067B5A000004030405287100000613641164D001000001280100000A28B400000A13641428AD00000A1164280001000A0C38260B0000067B5A0000046F150100061365037B200200047B1F0200046FDB00000A13372B15123728DC00000A1367116511671417287100000626123728E000000A2DE2DE0E1237FE162000001B6F3000000ADC116517146F0B0100060C086FA100000AD06D000001280100000A280200000A2C0D081428AD00000A28CD00000A0C067B5A000004086FA100000A6F1A010006250828D100000A1366067B5A0000047BA800000411666FC700000A0C38770A0000037B200200042C55037B200200047B1F0200046FCC00000A173342067B5A000004067B5A00000472DE070070037B200200047B1F020004166FCB00000A7B2C0200047B5802000472BD170070284000000A166F170100060C381A0A0000067B5A000004067B5A000004037B2C0200047B58020004166F170100060C38F7090000037B2C0200047B5802000428B900000A282501000A8C2600000128AD00000A0C38D209000072C1170070037B2C0200047B58020004284200000A28B900000A282601000A8C7500000128AD00000A0C38A3090000067B5A000004146F0F0100061368067B5A00000413692B1C11697BAB000004136911697BB60000042C1E1169146F0F010006136811697BAB0000042C0B116911697BAA00000433D0116828C300000A0C384E090000067B5A000004146F0F010006136A067B5A000004136B2B2A116B7BAB000004136B116B7BB60000042C2C116B146F0F010006116A2E0C116B146F0F010006136A2B14116B7BAB0000042C0B116B116B7BAA00000433C2116A28C300000A0C38EB080000067B5A000004037B23020004141628710000061428AD00000A28FF00000A136C067B5A000004037B2002000414162871000006136D037B2A0200042C26067B5A000004037B2A02000414162871000006136E116C116D116E28C900000A0C3888080000116C116D28D600000A0C38790800000320112200007D26020004067B5A0000040314FE06F600000A73F200000A286D0000060C38500800000320E72100007D26020004067B5A0000040314FE060601000A73F200000A286D0000060C3827080000067B5A000004037E5C000004252D17267E5B000004FE06AE00000673F200000A25805C000004286D0000060C38F6070000067B5A000004037E5D000004252D17267E5B000004FE06AF00000673F200000A25805D000004286D0000060C38C507000003201C2200007D26020004067B5A000004030414FE061901000A731A01000A28A60000060C389B070000067B5A000004037B2B020004141628710000060C3882070000732701000A136F1613703892000000037B1F02000411706FCB00000A1371116F067B5A0000041171141628710000066FC700000A11702D6311717B2602000420D6320000330911717B270200042D3411717B2602000420E0320000333E11717B2B0200047B26020004200A220000332B11717B2B0200047B270200047B270200042C18067B5A000004116F166F2801000A6FA100000A7DA50000041170175813701170037B1F0200046FCC00000A3F5CFFFFFF067B5A000004147DA5000004116F282901000A0C38B6060000067B5A000004037B27020004141628710000061372067B5A000004037B2A020004141628710000061172755B0000011373755B000001137411732C2E11742C2A11736FA200000A6F3A00000A1275282A01000A2C1511746FA200000A6F3A00000A1276282A01000A2D1172C9170070032865000006730700000A7A732701000A1377117511763027117513782B19117711788C0A00000128AD00000A6FC700000A1178175813781178117631E12B25117513792B19117711798C0A00000128AD00000A6FC700000A117917591379117911762FE11177282901000A0C38D5050000067B5A00000416166F13010006137A037B200200047B1F0200046FDB00000A13372B20123728DC00000A137B117A7BA8000004117A117B141628710000066FC700000A123728E000000A2DD7DE0E1237FE162000001B6F3000000ADC117A16146F0B0100060C386A050000732701000A137C037B1F0200046FDB00000A13372B37123728DC00000A137D067B5A000004117D141628710000060C052C13067B5A0000047BA8000004086FC700000A2B08117C086FC700000A123728E000000A2DC0DE0E1237FE162000001B6F3000000ADC052C07170B38FA040000117C6F2B01000A16310D117C282901000A0C38E304000028C800000A0C38D8040000037B1F0200046FDB00000A13372B2A123728DC00000A137E067B5A000004117E141628710000060C067B5A0000047BA8000004086FC700000A123728E000000A2DCDDD910400001237FE162000001B6F3000000ADC037B1F0200046FDB00000A13372B19123728DC00000A137F067B5A000004117F141628710000060C123728E000000A2DDEDD4D0400001237FE162000001B6F3000000ADC067B5A000004037B20020004141628710000060C082C0C086FB600000A1F17FE012B01161304161305732C01000A1306082D1A067B5A000004031205287300000628AD00000A0C110517581305037B2A0200043956010000110513803836010000037B2A0200047B1F02000411806FCB00000A138111817B26020004200833000033201106118108732D01000A6F2E01000A118120F12100007D2602000438DE00000011817B26020004200933000033201106118108732D01000A6F2E01000A118120ED3200007D2602000438B000000011817B26020004200A33000033201106118108732D01000A6F2E01000A118120163300007D26020004388200000011817B26020004200B3300003374081428AD00000A280801000A13821181200C3300007D26020004067B5A0000041181081628710000060C086FA100000A28120000062C12110611811182732D01000A6F2E01000A2B3B081428AD00000A280801000A138311821183280301000A1384110611811184732D01000A6F2E01000A2B10067B5A0000041181081628710000060C1180175813801180037B2A0200047B1F0200046FCC00000A3FB3FEFFFF037B270200042C60037B270200047B1F0200046FDB00000A13372B33123728DC00000A138511857B2C0200047B580200047245180070280600000A2C02DE29067B5A0000041185081628710000060C123728E000000A2DC4DE0E1237FE162000001B6F3000000ADC11066F2F01000A163EBF01000011066F3001000A11066F3101000A1386388E0100001286283201000A138711876F3301000A7B2602000420F12100002E2911876F3301000A7B2602000420ED3200002E1611876F3301000A7B26020004201633000040A000000011876F3401000A1428AD00000A280801000A1388086FA100000A6F3501000A16FE012C5E086FA100000A28110000062C1C086FA100000A6FB300000AD053000001280100000A28AE00000A2C35D053000001280100000A178D020000012516086FA100000AA26F3601000A138A08118A28B400000A0C14118A283701000A13892B0E14086FA100000A283701000A13891188118908280001000A0C38A900000011876F3301000A7B26020004200C330000408200000011876F3401000A138B086FA100000A28110000062C1C086FA100000A6FB300000AD053000001280100000A28AE00000A2C35D053000001280100000A178D020000012516086FA100000AA26F3601000A138D08118D28B400000A0C14118D283701000A138C2B0E14086FA100000A283701000A138C118B118C08280001000A0C2B11724D180070032865000006730700000A7A1286283801000A3A66FEFFFFDE0E1286FE162700001B6F3000000ADC0814FE0111045F2C54067B5A000004177DA7000004067B5A00000403040528710000060C067B5A000004167DA70000042B2B037B270200047B2C0200047B58020004138E067B5A000004118E037B270200046F0D01000628C600000A0C052C33037B2602000420DE3200002E26072D022B082B1F0C3854D0FFFF067B5A0000047BA8000004086FC700000A2B060B3835D0FFFF08262B0A7D5A0000043821D0FFFF082A000041DC000002000000BC1200006B000000271300000E00000000000000020000001B1400004C010000671500000E0000000000000002000000A124000022000000C32400000E0000000000000002000000F42900002D000000212A00000E0000000000000002000000522A000044000000962A00000E0000000000000002000000DD2A00003A000000172B00000E0000000000000002000000322B0000290000005B2B00000E0000000000000002000000312D000040000000712D00000E00000000000000020000009C2D0000A10100003D2F00000E000000000000004E020314172871000006260216146F0B0100062A96020314041628750000062514280200000A2C117248190070032865000006730700000A7A2A000013300500FA0000001700001103147D2D0200040203141200042875000006037B270200042C16726F1A0070037B270200042865000006730700000A7A042C40037B2A0200042C38037B2A0200047B1F0200042C2B061758037B2A0200047B1F0200046FCC00000A2F1672B61B0070037B2A0200042865000006730700000A7A037B2A020004397B000000037B2A0200047B1F0200042C6E06037B2A0200047B1F0200046FCC00000A305B06173257037B2A0200047B1F0200040617596FCB00000A7B2602000420F93200002E38037B2A0200047B1F0200040617596FCB00000A7B2602000420163300002E1903037B2A0200047B1F0200040617596FCB00000A7D2D0200042A00001B3005006F0600002000001114384806000005153832060000037B2602000438FD0500000720D6320000305C0720702000005945100000002B0000003B000000BB000000CB0000000B0100008B000000EB0000009B000000FB0000006B0000007B0000005B000000DB0000004B0000001B010000AB0000000720D63200003B2001000038E00500000720E43200003B570100000720E63200003B8701000038C5050000D004000001280100000A0A38C6050000D007000001280100000A0A38B6050000D005000001280100000A0A38A6050000D010000001280100000A0A3896050000D00F000001280100000A0A3886050000D00E000001280100000A0A3876050000D00A000001280100000A0A3866050000D00C000001280100000A0A3856050000D001000001280100000A0A3846050000D006000001280100000A0A3836050000D008000001280100000A0A3826050000D011000001280100000A0A3816050000D00B000001280100000A0A3806050000D00D000001280100000A0A38F6040000D009000001280100000A0A38E6040000D06D000001280100000A0A38D6040000042C2B04037B2C0200047B580200046F7D00000A2602037B2C0200047B5802000412006F160100062638A804000002037B2C0200047B5802000412006F1601000626388F040000037B1F0200046FCC00000A172E1172FD1C0070032865000006730700000A7A02037B1F020004166FCB00000A04050E0428750000060A3854040000737B00000AFE0B020002037B2002000404050E0428750000060A0614280200000A0E04603933030000037B2A0200043928030000037B2A0200047B1F0200043918030000061428AE00000A2C0F066F3901000A733A01000AFE0B020005165438E1020000037B2A0200047B1F020004054A6FCB00000A0C087B260200040B0720F932000030230720F12100002E410720ED3200003B7D0000000720F93200003BB301000038890200000720FC3200003BA900000007200C3300003B3B0200000720163300003BB8000000386302000004061428AE00000A2D0772241E00702B0572281E00706F7D00000A2604087B200200047B2C0200047B580200046F7D00000A2602046F3A00000A12006F1601000626381C02000004061428AE00000A2D0772241E00702B0572281E00706F7D00000A2604087B200200047B2C0200047B580200046F7D00000A2602046F3A00000A12006F160100062638D5010000D053000001280100000A178D02000001251606A26F3601000A0A05054A17585438B001000004061428AE00000A2D0772241E00702B0572281E00706F7D00000A2604087B200200047B2C0200047B580200046F7D00000A26733B01000A0D171304087B1F0200046FDB00000A13052B29120528DC00000A130611062D0C16130409146F3C01000A2B10090211060E0428740000066F3C01000A120528E000000A2DCEDE0E1205FE162000001B6F3000000ADC04722C1E0070096F3D01000A8C0A000001283E01000A6F7D00000A2602046F3A00000A12006F1601000639F4000000110439ED00000006096F3F01000A6F3601000A0A38DB000000733B01000A1307171308087B230200047B1F0200046FDB00000A13052B2B120528DC00000A130911092D0D1613081107146F3C01000A2B1111070211090E0428740000066F3C01000A120528E000000A2DCCDE0E1205FE162000001B6F3000000ADC04722C1E007011076F3D01000A8C0A000001283E01000A6F7D00000A2602046F3A00000A12006F160100062C4C11082C480611076F3F01000A6F3601000A0A2B38087B230200047B1F0200046FCC00000A2D09066F4001000A0A2B1D087B230200047B1F0200046FCC00000A130A06110A17586F4101000A0A061428AE00000A2C040E042C1D05054A175854054A037B2A0200047B1F0200046FCC00000A3F08FDFFFF037B2A0200042C63037B2A0200047B1F0200042C56054A1758037B2A0200047B1F0200046FCC00000A2F40037B2A0200047B1F020004054A17586FCB00000A7B2602000420FC3200003320D053000001280100000A178D02000001251606A26F3601000A0A05054A175854037B2A0200043982000000037B2A0200047B1F0200043972000000054A1758037B2A0200047B1F0200046FCC00000A2F022B082B580B38FDF9FFFF037B2A0200047B1F020004054A17586FCB00000A7B26020004200C33000033022B082B2E5438C8F9FFFF066F4001000A0A2B060A38B2F9FFFF05054A1758542B1172FD1C0070032865000006730700000A7A062A00011C00000200E403361A040E0000000002008C0438C4040E000000001B300700E41000002100001173B50000060A060238CB100000143891100000037B2A0200043869100000142B12067B62000004037B2A0200041728740000060C037B200200040D037B230200041304037B2A0200042C1C037B2A0200047B2D0200042C0F037B2A0200047B2D020004FE0B01001104397605000011047B2602000420E43200002E1111047B26020004200F330000405705000073B200000613051105067B62000004110428980000067D600000041105147D610000040814280200000A2C1172301E0070032866000006730700000A7A0811057B600000047B910000046F4201000A1306110614284301000A2C70086F4401000A1105FE06B3000006734501000A280F00002B281000002B130711076F4601000A1733471107166F4701000A130611066F4801000A11057B600000047B910000048E69281100002B281200002B1105732701000A7D610000041105FE06B4000006734A01000A6F4B01000A067B620000041106032895000006110614284301000A394D010000086F0300000A72E31F00706F4C01000A393801000011057B600000047B910000048E3A26010000086F4401000A130809130911088E691740EE0300001108169A130611066F4801000A130A11097B1F020004166FCB00000A7B26020004200E3300002E0911097B1F0200042B1211097B1F020004166FCB00000A7B1F020004734D01000A26734E01000A130B6FDB00000A130D2B41120D28DC00000A257B2B0200047B27020004130E7B2B0200047B2A020004130F067B62000004110F141628710000061310110B110E6F3A00000A11106F4F01000A120D28E000000A2DB6DE0E120DFE162000001B6F3000000ADC732701000A130C110A13111613122B27111111129A1313110B11136F5001000A12146F5101000A26110C11146FC700000A111217581312111211118E6932D11105732701000A7D6100000411057B61000004110C6F5201000A38DD0200000939D702000009131511157B1F0200046FCC00000A163EC20200001106285301000A131611157B1F020004166FCB00000A7B2602000420E82100002E4311157B1F020004166FCB00000A7B26020004200E330000401701000011157B1F020004166FCB00000A7B1F020004166FCB00000A7B2602000420E032000040F000000011157B1F020004166FCB00000A7B26020004200E3300002E0911157B1F0200042B1211157B1F020004166FCB00000A7B1F020004734D01000A13186FDB00000A130D3883000000120D28DC00000A257B2B0200047B2702000413197B2B0200047B2A020004131A11166FA100000A11197B2C0200047B580200046FD200000A131B111B14285401000A2C1A11166FA100000A11197B2C0200047B580200046F5501000A131B067B62000004111A14162871000006131C111B111C285601000A131D1118111D6F5701000A120D28E000000A3A71FFFFFFDE0E120DFE162000001B6F3000000ADC11161118285801000A2A11157B1F020004166FCB00000A7B2602000420E032000040F500000011157B1F020004166FCB00000A7B2B0200047B26020004200A22000040D4000000735901000A2511157B1F020004166FCB00000A6F5A01000A734D01000A131E6FDB00000A130D3883000000120D28DC00000A257B2B0200047B27020004131F7B2B0200047B2A020004132011166FA100000A111F7B2C0200047B580200046FD200000A1321112114285401000A2C1A11166FA100000A111F7B2C0200047B580200046F5501000A1321067B62000004112014162871000006132211211122285601000A1323111E11236F5701000A120D28E000000A3A71FFFFFFDE0E120DFE162000001B6F3000000ADC1116111E285801000A2A11157B1F02000406FE06B600000673DD00000A280C00002B281300002B131711176F2B01000A1733291117166F2801000A75720000012C1A11161117166F2801000A74720000016F5B01000A285C01000A2A11161117285C01000A2A11057B610000042C25110611057B600000047B9300000411057B61000004281400002B285E01000A0B38170B0000110611057B600000047B93000004285E01000A0B38FE0A00001104396E02000011047B2602000420E3320000405D020000110439DF0A0000093902020000097B1F02000439F7010000097B1F020004166FCB00000A7B1F020004252D1826735901000A25097B1F020004166FCB00000A6F5A01000A732701000A13246FDB00000A130D38DD000000120D28DC00000A132511257B2602000420E032000040AD00000011257B2B0200047B2602000420C22100003323067B620000040811257B2B020004289E0000061326112411266FC700000A388D000000067B6200000411257B2B0200047B2702000414162871000006745B0000016FA200000AA50A000001067B6200000411257B2B0200047B2A02000414162871000006745B0000016FA200000AA50A000001132713282B19112411288C0A00000128AD00000A6FC700000A1128175813281128112731E12B161124067B620000041125141628710000066FC700000A120D28E000000A3A17FFFFFFDE0E120DFE162000001B6F3000000ADC0814280200000A2C0E1124166F2801000A6FA100000A0C1613293884000000112411296F2801000A132A112A6FA100000A0828AE00000A2C6408D011000001280100000A280200000A2C41112A755B000001132B112B2C45112B6FA100000AD005000001280100000A280200000A2C2D11241129112B6FA200000A6F3A00000A28AD00000A6F5F01000A2B1111241129112A0828B400000A6F5F01000A112917581329112911246F2B01000A3F6EFFFFFF081124286001000A0B38D708000073B8000006132C112C067D64000004112C732701000A7D6300000411047B1F020004112CFE06B9000006736101000A6F6201000A086F6301000A2608112C7B63000004286401000A0B38890800000814280200000A3907040000097B2602000420E132000040F7030000736501000A132D097B1F020004166FCB00000A7B1F0200043A5C010000097B1F020004166FCB00000A7B2B020004399F000000097B1F020004166FCB00000A7B2B0200047B270200047B270200042D22097B1F020004166FCB00000A7B2B0200047B270200047B2C0200047B580200042B28067B62000004097B1F020004166FCB00000A7B2B0200047B27020004141628710000066F3A00000A1332112D1132067B62000004097B1F020004166FCB00000A7B2B0200047B2A02000414162871000006736601000A6F6701000A38D3010000097B1F020004166FCB00000A7B2A0200042C54112D097B1F020004166FCB00000A7B2A0200047B1F020004281500002B7B200200047B2C0200047B58020004067B62000004097B1F020004166FCB00000A14162871000006736601000A6F6701000A386C010000112D097B1F020004166FCB00000A7B2C0200047B58020004067B62000004097B1F020004166FCB00000A14162871000006736601000A6F6701000A382C010000097B1F020004166FCB00000A7B1F0200046FDB00000A130D38F3000000120D28DC00000A133311337B2B0200042C7411337B2B0200047B270200047B270200042D1811337B2B0200047B270200047B2C0200047B580200042B1E067B6200000411337B2B0200047B27020004141628710000066F3A00000A1334112D1134067B6200000411337B2B0200047B2A02000414162871000006736601000A6F6701000A2B6D11337B2A0200042C3D112D11337B2A0200047B1F020004281500002B7B200200047B2C0200047B58020004067B62000004113314162871000006736601000A6F6701000A2B27112D11337B2C0200047B58020004067B62000004113314162871000006736601000A6F6701000A120D28E000000A3A01FFFFFFDE0E120DFE162000001B6F3000000ADC067B620000046F15010006132ED016000002280100000A284401000A169A132F112ED016000002280100000A6F1A0100061330112E7BA80000041130112F285301000A28D100000A6FC700000AD016000002280100000A720920007028CE00000A1331112D6F6901000A133538890000001235286A01000A1336112E7BAC0000047BB200000411366F6B01000A6F6C01000A2D24112E7BAC0000047BB200000411366F6B01000A11366F6D01000A6FA100000A6F6E01000A112E7BA800000411301131178D02000001251611366F6D01000A6FA100000AA26F6F01000A11366F6B01000A28AD00000A11366F6D01000A287001000A6FC700000A1235287101000A3A6BFFFFFFDE0E1235FE163200001B6F3000000ADC112E7BA8000004112ED016000002280100000A6F0E010006113028D800000A6FC700000A112E17D016000002280100000A6F0B0100060B38760400000814280200000A3906010000D081000001280100000A0C08168D020000016F4201000A1337067B6200000411370328950000060939CC000000097B20020004252D02260913381137285301000A0BD01A00001B280100000A720920007028CE00000A26737201000A2611387B1F0200046FCC00000A16312811387B1F020004166FCB00000A7B26020004200E330000330F11387B1F020004166FCB00000A133811387B1F0200046FDB00000A130D2B3A120D28DC00000A133911397B2B0200047B270200047B2C0200047B5802000426067B6200000411397B2B0200047B2A0200041416287100000626120D28E000000A2DBDDE0E120DFE162000001B6F3000000ADC072A1137285301000A0B386403000008168D020000016F4201000A133A067B62000004113A032895000006113A14284301000A392B010000086F0300000A72E31F00706F4C01000A3916010000086F4401000A133B09133C113B8E69174011030000113B169A133A113A6F4801000A133D113C7B1F020004166FCB00000A7B26020004200E3300002E09113C7B1F0200042B12113C7B1F020004166FCB00000A7B1F020004734D01000A26734E01000A133E6FDB00000A130D2B41120D28DC00000A257B2B0200047B2702000413407B2B0200047B2A0200041341067B620000041141141628710000061342113E11406F3A00000A11426F4F01000A120D28E000000A2DB6DE0E120DFE162000001B6F3000000ADC732701000A133F113D13111613122B27111111129A1343113E11436F5001000A12446F5101000A26113F11446FC700000A111217581312111211118E6932D1113A113F285E01000A0B381002000009396A01000009134511457B1F0200046FCC00000A163E5501000011457B1F020004166FCB00000A7B2602000420E82100002E4311457B1F020004166FCB00000A7B26020004200E330000402001000011457B1F020004166FCB00000A7B1F020004166FCB00000A7B2602000420E032000040F9000000113A285301000A134611457B1F020004166FCB00000A7B26020004200E3300002E0911457B1F0200042B1211457B1F020004166FCB00000A7B1F020004734D01000A13476FDB00000A130D3883000000120D28DC00000A257B2B0200047B2702000413487B2B0200047B2A020004134911466FA100000A11487B2C0200047B580200046FD200000A134A114A14285401000A2C1A11466FA100000A11487B2C0200047B580200046F5501000A134A067B62000004114914162871000006134B114A114B285601000A134C1147114C6F5701000A120D28E000000A3A71FFFFFFDE0E120DFE162000001B6F3000000ADC11461147285801000A2A093986000000097B20020004252D0226097B1F02000406FE06B700000673DD00000A280C00002B281300002B134D113A285301000A134E114D6F2B01000A1733022B0C2B3D3A95EFFFFF388DEFFFFF114D166F2801000A75720000012C022B082B200B3869EFFFFF114E114D166F2801000A74720000016F5B01000A285C01000A2A114E114D285C01000A2A113A285301000A0B2B0A7D62000004382BEFFFFF072A41DC000002000000060200004E000000540200000E00000000000000020000008203000096000000180400000E00000000000000020000009304000096000000290500000E00000000000000020000004E060000F00000003E0700000E0000000000000002000000060A0000060100000C0B00000E0000000000000002000000860B00009C000000220C00000E00000000000000020000001A0D000047000000610D00000E0000000000000002000000280E00004E000000760E00000E0000000000000002000000940F0000960000002A1000000E000000000000001B300500A203000022000011037B2A0200047B2602000420DF3200003881030000143865030000037B270200047B27020004383C03000002037B270200047B270200041728740000061304021104037B270200047B2C0200047B580200046F190100060B2B36037B270200047B2C0200042D1002037B27020004141628710000062B180202037B270200047B2C0200047B58020004166F170100060B732701000A0C037B2A0200047B200200047B1F020004166FCB00000A7B1F0200046FDB00000A13052B19120528DC00000A130608021106141628710000066FC700000A120528E000000A2DDEDE0E1205FE162000001B6F3000000ADC076FA100000A6F6301000A08286001000A0D070928D100000A0A389502000002037B2A020004141628710000061307141308037B270200047B270200042C6F037B270200047B270200047B2C0200042C21037B270200047B270200047B2C0200047B58020004724C150070280600000A2D1402037B270200047B270200041728740000062B0711076FA100000A1309021109037B270200047B2C0200047B580200046F1901000613083875000000027BA50000041428AE00000A2C2002027BA5000004037B270200047B2C0200047B580200046F1901000613082B47037B270200047B2C0200042D1002037B27020004141628710000062B180202037B270200047B2C0200047B58020004166F1701000613082B0E1108745E0000016F0101000A130811086FB600000A1F0A2EE711086FB600000A1F0B2EDC11073A96000000037B2A0200047B2602000420DF320000408100000011086FA100000A6F2401000A399B000000732701000A130A037B2A0200047B1F020004166FCB00000A7B1F0200046FDB00000A13052B1A120528DC00000A130B110A02110B141628710000066FC700000A120528E000000A2DDDDE0E1205FE162000001B6F3000000ADC11086FA100000A6F6301000A110A286001000A13072B2B11072D27037B2A0200047B2602000420C221000033150211086FA100000A037B2A020004289E000006130711076FA100000A11086FA100000A28AE00000A2C6F11086FA100000AD011000001280100000A280200000A2C3B1107755B0000012C3211076FA100000AD005000001280100000A280200000A2C1A1107745B0000016FA200000A6F3A00000A28AD00000A13072B1C110711086FA100000A28B400000A13072B0A39EEFCFFFF38BAFCFFFF11086FB600000A1F3233022B082B0A0B3895FCFFFF140A2B161108110728D100000A0A2B0A4070FDFFFF3875FCFFFF062A0000011C00000200B80026DE000E0000000002007602279D020E0000000013300200BC00000023000011037B2602000438A90000000720E321000059450700000018000000050000003800000028000000480000005800000069000000387800000004055F8C0400000128AD00000A0A386F0000000405608C0400000128AD00000A0A2B5F04055F8C0400000128AD00000A0A2B4F0405608C0400000128AD00000A0A2B3F0405618C0400000128AD00000A0A2B2F0405FE018C0400000128AD00000A0A2B1E0405FE0116FE018C0400000128AD00000A0A2B0A140A2B060B3851FFFFFF062A0A142A00133002002A00000023000011037B260200042B1D07201D22000033110416FE018C0400000128AD00000A0A2B07140A2B030B2BE0062A0000133002002B01000023000011037B2602000438180100000720DC21000059451200000005000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C00000002B000000180000003E0000005100000062000000760000009800000087000000AC00000038BB0000000405588C0A00000128AD00000A0A38B200000004055F8C0A00000128AD00000A0A389F0000000405608C0A00000128AD00000A0A388C0000000405618C0A00000128AD00000A0A38790000000405FE018C0400000128AD00000A0A2B680405FE0116FE018C0400000128AD00000A0A2B540405FE048C0400000128AD00000A0A2B430405FE028C0400000128AD00000A0A2B320405FE0216FE018C0400000128AD00000A0A2B1E0405FE0416FE018C0400000128AD00000A0A2B0A140A2B060B38E2FEFFFF062A00133003004900000023000011037B260200042B3C0720E12100002E0A0720E22100002E152B2604051F1F5F628C0A00000128AD00000A0A2B1A04051F1F5F638C0A00000128AD00000A0A2B07140A2B030B2BC1062A000000133003003D02000023000011037B26020004382A0200000720DC2100005938BB0000000720D23200003BF9010000380A020000026FFF00000638700000000405582B030405D68C0A00000128AD00000A0A38F1010000026FFF0000062D050405592B030405DA8C0A00000128AD00000A0A38D1010000026FFF0000062D0504055A2B030405D88C0A00000128AD00000A0A38B1010000026FFF0000062D14042000000080330C05152E022B062B132D932B8C04055B8C0A00000128AD00000A2B0F20000000808C0A00000128AD00000A0A3871010000051533022B542B5F451200000008FFFFFF2BFFFFFF4BFFFFFF6BFFFFFFABFFFFFF250000003B00000012010000120100006400000051000000770000008A0000009E000000B2000000D4000000C3000000E800000038F3FEFFFF168C0A00000128AD00000A2B0D04055D8C0A00000128AD00000A0A38F700000004051F1F5F628C0A00000128AD00000A0A38E100000004051F1F5F638C0A00000128AD00000A0A38CB00000004055F8C0A00000128AD00000A0A38B80000000405608C0A00000128AD00000A0A38A50000000405618C0A00000128AD00000A0A38920000000405FE018C0400000128AD00000A0A387E0000000405FE0116FE018C0400000128AD00000A0A2B6A0405FE048C0400000128AD00000A0A2B590405FE028C0400000128AD00000A0A2B480405FE0216FE018C0400000128AD00000A0A2B340405FE0416FE018C0400000128AD00000A0A2B20046C056C287301000A8C0F00000128AD00000A0A2B0A140A2B060B38D0FDFFFF062A000000133002006400000023000011037B260200042B5707201A2200005945030000001E000000020000002C0000002B39026FFF0000062D0404652B031604DA8C0A00000128AD00000A0A2B24048C0A00000128AD00000A0A2B1604668C0A00000128AD00000A0A2B07140A2B030B2BA6062A13300200DA01000023000011037B2602000438C70100000720DC2100005938640000000720D23200003B9401000038A7010000026FFF0000062B240405582B030405D78C0B00000128AD00000A0A3891010000026FFF0000062D022B062B092DDF2BD80405592B030405DB8C0B00000128AD00000A0A3869010000026FFF0000062D022B542B5745120000005FFFFFFF7FFFFFFFA7FFFFFF1D00000030000000060100000601000006010000060100005600000043000000690000007C00000090000000A4000000C6000000B5000000DA000000384AFFFFFF04055A2B030405D98C0B00000128AD00000A0A38F300000004055C8C0B00000128AD00000A0A38E000000004055E8C0B00000128AD00000A0A38CD00000004055F8C0B00000128AD00000A0A38BA0000000405608C0B00000128AD00000A0A38A70000000405618C0B00000128AD00000A0A38940000000405FE018C0400000128AD00000A0A38800000000405FE0116FE018C0400000128AD00000A0A2B6C0405FE058C0400000128AD00000A0A2B5B0405FE038C0400000128AD00000A0A2B4A0405FE0316FE018C0400000128AD00000A0A2B360405FE0516FE018C0400000128AD00000A0A2B2204766C05766C287301000A8C0F00000128AD00000A0A2B0A140A2B060B3833FEFFFF062A0000133003004900000023000011037B260200042B3C0720E12100002E0A0720E22100002E152B2604051F1F5F628C0B00000128AD00000A0A2B1A04051F1F5F648C0B00000128AD00000A0A2B07140A2B030B2BC1062A00000013300200CC00000023000011037B2602000438B900000007201A22000059450300000080000000050000008E00000038980000000420000000802B47037B210200047B200200047B2602000420D73200002B20037B210200047B200200047B2C0200047B5702000420153300002E022B062B2A33022BDC026FFF0000062D022B062B0933F22BB5046E652B05166A046EDA8C0C00000128AD00000A2B0F20000000808C0A00000128AD00000A0A2B27048C0B00000128AD00000A0A2B1904668C0B00000128AD00000A0A2B0A140A2B060B3841FFFFFF062A133002001C02000023000011037B2602000438090200000720DC2100005938C50000000720D23200003BD801000038E9010000026FFF00000638750000000405582B030405D68C0C00000128AD00000A0A38D0010000026FFF0000062D050405592B030405DA8C0C00000128AD00000A0A38B0010000026FFF0000062D0504055A2B030405D88C0C00000128AD00000A0A3890010000026FFF0000062D1904210000000000000080330D05156A2E022B062B132D8E2B8704055B8C0C00000128AD00000A2B132100000000000000808C0C00000128AD00000A0A384701000005156A33022B542B604512000000FEFEFFFF21FFFFFF41FFFFFF61FFFFFFAAFFFFFFE7000000E7000000E7000000E700000039000000260000004C0000005F0000007300000087000000A900000098000000BD00000038E9FEFFFF166A8C0C00000128AD00000A2B0D04055D8C0C00000128AD00000A0A38CB00000004055F8C0C00000128AD00000A0A38B80000000405608C0C00000128AD00000A0A38A50000000405618C0C00000128AD00000A0A38920000000405FE018C0400000128AD00000A0A387E0000000405FE0116FE018C0400000128AD00000A0A2B6A0405FE048C0400000128AD00000A0A2B590405FE028C0400000128AD00000A0A2B480405FE0216FE018C0400000128AD00000A0A2B340405FE0416FE018C0400000128AD00000A0A2B20046C056C287301000A8C0F00000128AD00000A0A2B0A140A2B060B38F1FDFFFF062A133003004900000023000011037B260200042B3C0720E12100002E0A0720E22100002E152B2604051F3F5F628C0C00000128AD00000A0A2B1A04051F3F5F638C0C00000128AD00000A0A2B07140A2B030B2BC1062A000000133002006500000023000011037B260200042B5807201A2200005945030000001F000000020000002D0000002B3A026FFF0000062D0404652B04166A04DA8C0C00000128AD00000A0A2B24048C0C00000128AD00000A0A2B1604668C0C00000128AD00000A0A2B07140A2B030B2BA5062A00000013300200DA01000023000011037B2602000438C70100000720DC2100005938640000000720D23200003B9401000038A7010000026FFF0000062B240405582B030405D78C0D00000128AD00000A0A3891010000026FFF0000062D022B062B092DDF2BD80405592B030405DB8C0D00000128AD00000A0A3869010000026FFF0000062D022B542B5745120000005FFFFFFF7FFFFFFFA7FFFFFF300000001D000000060100000601000006010000060100005600000043000000690000007C00000090000000A4000000C6000000B5000000DA000000384AFFFFFF04055A2B030405D98C0D00000128AD00000A0A38F300000004055E8C0D00000128AD00000A0A38E000000004055C8C0D00000128AD00000A0A38CD00000004055F8C0D00000128AD00000A0A38BA0000000405608C0D00000128AD00000A0A38A70000000405618C0D00000128AD00000A0A38940000000405FE018C0400000128AD00000A0A38800000000405FE0116FE018C0400000128AD00000A0A2B6C0405FE058C0400000128AD00000A0A2B5B0405FE038C0400000128AD00000A0A2B4A0405FE0316FE018C0400000128AD00000A0A2B360405FE0516FE018C0400000128AD00000A0A2B2204766C05766C287301000A8C0F00000128AD00000A0A2B0A140A2B060B3833FEFFFF062A0000133003004900000023000011037B260200042B3C0720E12100002E0A0720E22100002E152B2604051F3F5F628C0D00000128AD00000A0A2B1A04051F3F5F648C0D00000128AD00000A0A2B07140A2B030B2BC1062A00000013300200D500000023000011037B2602000438C200000007201A22000059450300000089000000050000009700000038A1000000042100000000000000802B5B037B210200047B200200047B2602000420D73200002B20037B210200047B200200047B2C0200047B5702000420153300002E022B062B2B33262BDC037B210200047B200200047B2C0200047B5702000420E83200002E022B062B0733022BA1142B132100000000000000808C0C00000128AD00000A0A2B27048C0D00000128AD00000A0A2B1904668C0D00000128AD00000A0A2B0A140A2B060B3838FFFFFF062A000000133002009F01000023000011037B26020004388C0100000720DC2100005938640000000720D23200003B5B010000386C010000026FFF0000062B240405582B030405588C0E00000128AD00000A0A3856010000026FFF0000062D022B062B092DDF2BD80405592B030405598C0E00000128AD00000A0A382E010000026FFF0000062D022B542B5745120000005FFFFFFF7FFFFFFFA7FFFFFF1D00000030000000CB000000CB000000CB000000CB000000CB000000CB000000CB00000043000000570000006B0000008D0000007C000000A1000000384AFFFFFF04055A2B0304055A8C0E00000128AD00000A0A38B800000004055B8C0E00000128AD00000A0A38A500000004055D8C0E00000128AD00000A0A38920000000405FE018C0400000128AD00000A0A387E0000000405FE0116FE018C0400000128AD00000A0A2B6A0405FE048C0400000128AD00000A0A2B590405FE028C0400000128AD00000A0A2B480405FE0316FE018C0400000128AD00000A0A2B340405FE0516FE018C0400000128AD00000A0A2B20046C056C287301000A8C0F00000128AD00000A0A2B0A140A2B060B386EFEFFFF062A000A142A00133002004600000023000011037B260200042B3907201A2200002B0C07201B22000033022B062B212E112BF004658C0E00000128AD00000A0A2B15048C0E00000128AD00000A0A2B07140A2B030B2BC4062A0000133002009D01000023000011037B26020004388A0100000720DC2100005938640000000720D23200003B5B010000386A010000026FFF0000062B240405582B030405588C0F00000128AD00000A0A3854010000026FFF0000062D022B062B092DDF2BD80405592B030405598C0F00000128AD00000A0A382C010000026FFF0000062D022B542B5745120000005FFFFFFF7FFFFFFFA7FFFFFF1D00000030000000C9000000C9000000C9000000C9000000C9000000C9000000C900000043000000570000006B0000008D0000007C000000A1000000384AFFFFFF04055A2B0304055A8C0F00000128AD00000A0A38B600000004055B8C0F00000128AD00000A0A38A300000004055D8C0F00000128AD00000A0A38900000000405FE018C0400000128AD00000A0A387C0000000405FE0116FE018C0400000128AD00000A0A2B680405FE048C0400000128AD00000A0A2B570405FE028C0400000128AD00000A0A2B460405FE0316FE018C0400000128AD00000A0A2B320405FE0516FE018C0400000128AD00000A0A2B1E0405287301000A8C0F00000128AD00000A0A2B0A140A2B060B3870FEFFFF062A0000000A142A00133002004600000023000011037B260200042B3907201A2200002B0C07201B22000033022B062B212E112BF004658C0F00000128AD00000A0A2B15048C0F00000128AD00000A0A2B07140A2B030B2BC4062A0000133002009901000023000011037B2602000438860100000720DC210000594512000000050000002D00000055000000850000009C0000002E0100002E0100002E0100002E0100002E0100002E0100002E010000B3000000CA000000DE00000006010000F20000001A0100003829010000026FFF0000062B540405287401000A2B070405287401000A8C1000000128AD00000A0A380B010000026FFF0000062D090405287501000A2B070405287501000A8C1000000128AD00000A0A38E3000000026FFF0000062D022B062B0D2DB32BA80405287601000A2B070405287601000A8C1000000128AD00000A0A38B30000000405287701000A8C1000000128AD00000A0A389C0000000405287801000A8C1000000128AD00000A0A38850000000405287901000A8C0400000128AD00000A0A386E0000000405287A01000A8C0400000128AD00000A0A2B5A0405287B01000A8C0400000128AD00000A0A2B460405287C01000A8C0400000128AD00000A0A2B320405287D01000A8C0400000128AD00000A0A2B1E0405287E01000A8C0400000128AD00000A0A2B0A140A2B060B3874FEFFFF062A0000000A142A00133002004A00000023000011037B260200042B3D07201A2200002B0C07201B22000033022B062B252E152BF004287F01000A8C1000000128AD00000A0A2B15048C1000000128AD00000A0A2B07140A2B030B2BC0062A000013300200F300000023000011037B2602000438E00000000720DD2100002B350720E8210000594506000000350000004C0000006000000088000000740000009C00000038AB000000026FFF0000062D022B062B0D2EF22BC70405288001000A2B070405288001000A8C7500000128AD00000A0A38850000000405288101000A8C0400000128AD00000A0A386E0000000405288201000A8C0400000128AD00000A0A2B5A0405288B00000A8C0400000128AD00000A0A2B460405288301000A8C0400000128AD00000A0A2B320405288401000A8C0400000128AD00000A0A2B1E0405288501000A8C0400000128AD00000A0A2B0A140A2B060B381AFFFFFF062A00133002006D00000023000011037B26020004385D0000000720DC2100002B0C0720E82100002E022B062B1D2E0C2BF00720E92100002E252B370405284200000A28AD00000A0A2B2F0405280600000A8C0400000128AD00000A0A2B1B040528B800000A8C0400000128AD00000A0A2B07140A2B030B2BA0062A0000000A142A000A142A00062A00005A02280D000006D083000001280100000A281600002B2A001B3005004B02000024000011738701000A0A037B1F0200046FCC00000A172B1C037B1F020004166FCB00000A7B26020004200E3300002E022B062B0C33022BE0037B1F0200042B11037B1F020004166FCB00000A7B1F0200046FDB00000A0B38D5010000120128DC00000A0C73EA0000060D060938B6010000087B26020004383A010000110420A82000002E17110420A92000002E0E110420E03200002E70387A0100000902087B2A020004141628710000067D92000004087B2A0200047B270200042C3E087B2A0200047B270200047B2C0200047B58020004724C150070280600000A2C1D09087B2A0200047B2C0200047B580200047D9000000409177D8E00000409177D8D000004382A010000087B2B0200047B26020004201320000040C500000009087B2B0200047B270200047B2C0200047B580200047D8F000004087B2B0200047B2A020004130511057B2602000420A92000002E0E11057B2602000420A82000003366090211057B2A020004141628710000067D9200000411057B270200042C3F11057B270200047B2C0200047B58020004724C150070280600000A2C220911057B2C0200047B580200047D9000000409177D8E0000042B07130438BFFEFFFF09177D8D0000042B6B0902087B2B0200047B2A020004141628710000067D920000042B5009087B2B0200047B2602000420C22100002E1002087B2B020004141628710000062B0B087B2B02000428AD00000A7D920000042B1B090208141628710000067D920000042B0A6F8801000A3840FEFFFF120128E000000A3A1FFEFFFFDE0E1201FE162000001B6F3000000ADC062A00411C00000200000053000000E80100003B0200000E000000000000001B3004004A01000025000011732701000A0A733B01000A0B037B1F0200046FCC00000A172B1C037B1F020004166FCB00000A7B26020004200E3300002E022B062B0C33022BE0037B1F0200042B11037B1F020004166FCB00000A7B1F0200046FDB00000A0C38C3000000120228DC00000A38B1000000097B260200043895000000110620A82000002E14110620A92000002E0B110620E03200002E222B5A02097B2A02000414162871000006130411046FA100000A6F8901000A13052B4E097B2B0200047B2602000420C22100002E1002097B2B020004141628710000062B0B097B2B02000428AD00000A130411046FA100000A13052B14020914162871000006130411046FA100000A13050611046FC700000A2B0713063864FFFFFF0711056F3C01000A2B060D3849FFFFFF120228E000000A3A31FFFFFFDE0E1202FE162000001B6F3000000ADC06076F3F01000A73EB0000062A00000110000002005900D62F010E0000000013300200910200002600001102280E000006387E02000003280E000006386A00000006072B5602060D03FE0B0000070AFE0B0100090B140C06172E0407173310D001000001280100000A0C384B02000006073348061A2E44061B2E40061C2E3C061D2E38061E2E340228100000062C100328100000062D022B062B192FB82BA60228100000062D022B052B060B2B93022B04032B01030C38FF010000061A59450F000000050000000500000005000000050000000500000005000000360000007B000000B4000000ED0000002E0100006D010000A8010000BB010000A801000038B6010000071A59450500000005000000050000000500000005000000050000003895010000D00A000001280100000A0C3885010000071A5945060000000500000015000000050000001500000005000000150000003860010000D00B000001280100000A0C3850010000D00C000001280100000A0C3840010000071A594507000000050000000500000005000000050000000500000005000000050000003817010000D00C000001280100000A0C3807010000071A59450700000005000000E300000005000000E300000005000000E30000000500000038DE000000D00D000001280100000A0C38CE000000071A594509000000050000000500000005000000050000000500000005000000050000000500000005000000389D000000D00E000001280100000A0C388D000000071A59450A000000020000000200000002000000020000000200000002000000020000000200000002000000020000002B5BD00F000001280100000A0C2B4E071A5945090000000200000002000000020000000200000002000000020000000200000002000000020000002B20D010000001280100000A0C2B13D011000001280100000A0C2B060A387CFDFFFF082A000000133002006602000027000011026FA100000A280E000006384E020000036FA100000A280E0000063888010000060738F000000002061304070AFE0B010011040B036FA200000A0C160D06172E0407173307170D38180200000607331B061A2E17061B2E13061C2E0F061D2E0B061E2E07060D38F9010000061A59450F0000000500000005000000050000000500000005000000050000002E00000082000000B3000000070100004001000077010000AA010000B5010000AA01000038B0010000071A5945050000000500000005000000050000000500000005000000388F0100001F090D3887010000071A594506000000050000000D000000050000000D000000050000000D00000038620100001F090D385A0100000828A500000A1632022B0C2B123C18FFFFFF3806FFFFFF1F0A0D383B0100001F0B0D3833010000071A59450700000005000000050000000500000005000000050000000500000005000000380A0100001F0B0D3802010000071A59450800000005000000DA00000005000000DA000000050000000D000000050000000D00000038D50000001F0C0D38CD0000000828A700000A166A32022B0B38BC0000000B3872FEFFFF1F0C0D38AE000000071A594509000000050000000500000005000000050000000500000005000000050000000500000005000000387D0000001F0D0D3875000000071A59450A000000020000000200000002000000020000000200000002000000020000000200000002000000020000002B431F0E0D2B3E071A5945090000000200000002000000020000000200000002000000020000000200000002000000020000002B101F0F0D2B0B1F120D2B060A38ACFDFFFF092A0000133003003B0000002800001173BA0000060A06042B0B031F186F1A00000A262B077D650000042BEE031F186F1A00000A06FE06BB000006731B00000A281700002B281800002B2A00133006005403000029000011143846030000046FA100000A3824030000056FA100000A3808030000140D141304037B260200041309110920DC21000059451200000065010000820100009F010000BC010000D90100002501000045010000F4010000F40100000500000045000000250000006500000085000000A5000000C5000000E50000000501000038EF01000002077211200070289B0000060D02087211200070289B000006130438CF0100000207722B200070289B0000060D0208722B200070289B000006130438AF01000002077249200070289B0000060D02087249200070289B0000061304388F01000002077265200070289B0000060D02087265200070289B0000061304386F0100000207727D200070289B0000060D0208727D200070289B0000061304384F01000002077299200070289B0000060D02087299200070289B0000061304382F010000020772B1200070289B0000060D020872B1200070289B0000061304380F010000020772D7200070289B0000060D020872D7200070289B000006130438EF000000020772F5200070289B0000060D020872F5200070289B000006130438CF00000002077221210070289B0000060D02087221210070289B000006130438AF0000000207723B210070289B0000060D0208723B210070289B0000061304388F00000002077257210070289B0000060D02087257210070289B00000613042B720207726F210070289B0000060D0208726F210070289B00000613042B550207728D210070289B0000060D0208728D210070289B00000613042B38020772A5210070289B0000060D020872A5210070289B00000613042B1B020772BD210070289B0000060D020872BD210070289B0000061304732701000A25046FC700000A25056FC700000A1305733B01000A25046FA100000A6F3C01000A25056FA100000A6F3C01000A6F3F01000A1306091104281900002B130707141107281A00002B110611050228CB00000611060328CF000006130811082D02142A11087B6C0000042C1172D3210070032865000006730700000A7A11087B6F00000417331A110828D1000006130511087B700000041105288C01000A0A2B3C11087B6F0000041833022B082B2E0C38F2FCFFFF110828D100000613052B060B38D6FCFFFF11087B700000041105288C01000A0A2B060A38B4FCFFFF062A133006008D0100002A00001114387F010000046FA100000A385E010000143848010000037B2602000413061106201A22000059450A0000002300000032000000500000004100000014000000050000007B0000007B0000006E0000005F000000387600000002077206230070289B0000060C2B6702077220230070289B0000060C2B580207723A230070289B0000060C2B4902077254230070289B0000060C2B3A02077276230070289B0000060C2B2B02077292230070289B0000060C2B1C02077206230070289B0000060C2B0D02077220230070289B0000060C732701000A25046FC700000A0D733B01000A25046FA100000A6F3C01000A6F3F01000A13040714086F8D01000A1104090228CB00000611040328CF000006130511052D02142A11057B6C0000042C1172D3210070032865000006730700000A7A11057B6F000004173318110528D10000060D11057B7000000409288C01000A0A2B3A11057B6F0000041833022B082B2C0C38B2FEFFFF110528D10000060D2B060B389CFEFFFF11057B7000000409288C01000A0A2B060A387BFEFFFF062A00000013300400BA0100002B000011026F15010006389F010000036F1600000A3882010000036F0300000A72B62300706F4C01000A3852010000162B01170C047B270200047B230200042C16047B270200047B230200047B1F0200046FCC00000A26738E01000A0D078E69083E2501000016130538030100000711059A130672EE0400701307047B270200047B2302000439BA000000047B270200047B230200047B1F0200046FCC00000A173352047B270200047B230200047B1F020004166FCB00000A7B26020004200E3300003330047B270200047B230200047B1F020004166FCB00000A7B1F02000411056FCB00000A7B2C0200047B5802000413072B62047B270200047B230200047B1F0200042C25047B270200047B230200047B1F02000411056FCB00000A7B2C0200047B5802000413072B2B047B270200047B230200047B2C0200047B5802000413072B12047B270200047B2C0200047B58020004130706110611076F1B01000613080911086F8F01000A1105175813051105078E69085932022B0F38EDFEFFFF3AACFEFFFF38A4FEFFFF06047B2A02000414172871000006262B060B3878FEFFFF0616146F0B01000613042B060A385BFEFFFF03110409289001000A2A000013300400910100002C000011026F150100060A738E01000A0B046F3D01000A163862010000160C383401000004086F9101000A383801000072EE0400703817010000037B2702000439CB000000037B270200047B2302000439BB000000037B270200047B230200047B1F0200046FCC00000A173354037B270200047B230200047B1F020004166FCB00000A7B26020004200E3300003332037B270200047B230200047B1F020004166FCB00000A7B1F020004086FCB00000A7B2C0200047B5802000413043877000000037B270200047B230200047B1F0200042C24037B270200047B230200047B1F020004086FCB00000A7B2C0200047B5802000413042B41037B270200047B230200047B2C0200047B5802000413042B28082D14037B270200047B2C0200047B5802000413042B1172C2230070032865000006730700000A7A060911046F1B01000613050711056F8F01000A0817580C2B07130438E2FEFFFF08046F3D01000A32022B0B38BCFEFFFF0D38C2FEFFFF06037B2A02000414172871000006262B0731ED3897FEFFFF0616146F0B01000607289201000A2A0000001B300400600100002D000011056F9301000A6F1600000A382F010000026F150100060B738E01000A0C056F9301000A6F0300000A72EB2400706F4C01000A38ED0000001638D10000001738CB000000037B270200042C1E037B270200047B1F0200042C11037B270200047B1F0200046FCC00000A0D068E690917582E08141304DDE4000000068E69173EAC000000161305388A0000000611059A130672EE0400701307037B270200042C41037B270200047B1F0200042C20037B270200047B1F02000411056FCB00000A7B2C0200047B5802000413072B26037B270200047B2C0200047B5802000413072B12037B270200047B2C0200047B58020004130707110611076F1B01000613080811086F8F01000A1105175813052B060D382FFFFFFF1105068E69175932022B0F3866FFFFFF3A14FFFFFF3809FFFFFF07037B2A02000414172871000006262B060A38CBFEFFFF0716146F0B01000608289201000A1304DE0626141304DE0011042A411C0000000000000000000057010000570100000600000017000001133002001A0000002E00001102037B2302000428980000060A04067B93000004289401000A2A000013300600480000002F00001102037B2302000428970000062B230204046FA100000A060414FE010328280100060B02077BC20000040328950000062B030A2BDA04077BC200000407036F1F010006289501000A2A13300900310200003000001173BC0000060A0602381702000005755B00000138EA0100000738CD010000056FA100000A6F0300000A72F5240070280600000A2C1A067B6600000403076FA200000A7402000001141428A30000062A067B66000004037B2302000428970000060C0E043A85000000037B2C0200043A7A000000037B2A0200042C72037B2A0200047B1F0200042C65037B2A0200047B1F0200046FCC00000A173352037B2A0200047B1F020004166FCB00000A7B2602000420F93200003335037B2A0200047B1F020004166FCB00000A7B230200047B1F02000406FE06BD000006732301000A280D00002B280E00002BFE0B0400037B2C0200042C3B037B2C0200047B5802000472241E0070280600000A2D24037B2C0200047B58020004720D250070280600000A2D0D037B2C0200047B580200042B10037B200200047B2C0200047B580200040D0414280200000A2C61037B2C0200042C59067B66000004067B66000004037B2C0200047B58020004166F170100062513042C37087E5F000004252D17267E5B000004FE06B1000006739601000A25805F000004281B00002B130611041106289701000A13053883000000067B66000004050409080514FE010E0403120728290100061308067B6600000411087BC100000403289500000611072C061107FE0B030011086F1E0100062B0A395FFEFFFF3829FEFFFF11086F1D0100062D022B082B090B3810FEFFFF052B011411087BC10000041108036F1F010006289801000A13052B0A7D6600000438DFFDFFFF11052A00000013300600FD0200003100001173BE0000060A060338E40200000538D00200001E38B30200001A38AD020000140C053988000000056FA100000AD016000002280100000A280200000A2C71027BAC0000047BB2000004067B670000047B2C0200047B580200046F9901000A1305D016000002280100000A721325007028CE00000A1306051106178D0200000125161105A26F6F01000A178D1C0000012516067B670000047B2C0200047B5802000428AD00000AA2289A01000A0C082A06027BAC0000047BB4000004175F172E031A2B011B7D680000040407027BAC0000047BB4000004606F9B01000A0D0906FE06BF000006739C01000A281C00002B252D13260906FE06C0000006739C01000A281C00002B1304110414289E01000A2C1C021104067B67000004289500000605110428D300000A0C38CE0100000407027BAC0000047BB4000004606F9F01000A1307110706FE06C100000673A001000A281D00002B252D1426110706FE06C200000673A001000A281D00002B130811081428A101000A3978000000021108067B67000004289500000611086FA201000A2D2B04D010000001280100000A280200000A2D0A05110828A301000A2B3F1108056FA401000A28AD00000A2B300428100000062D0F1108056FA401000A28AD00000A2B1911086FA501000A1108056FA401000A28B100000A28AD00000A0C38080100000407027BAC0000047BB4000004606FA601000A1309110906FE06C300000673A701000A281E00002B252D1426110906FE06C400000673A701000A281E00002B130A110A1428A801000A2C1B02110A067B670000042895000006110A28AD00000A0C38A20000000407027BAC0000047BB4000004606FA901000A130B110B06FE06C500000673AA01000A281F00002B252D1426110B06FE06C600000673AA01000A281F00002B130C110C1428AE00000A2C0A110C28AD00000A0C2B4D052C4A056FA100000AD001000001280100000A280200000A2D022B082B210B384DFDFFFF056FA100000A28960000062C022B0C2B183A31FDFFFF3826FDFFFF140C2B0A7D670000043812FDFFFF082A0000001B3003009F01000032000011046FA100000A280E0000063854010000071959451000000005000000E30000001D0000001D0000001D0000001D000000350000004D000000650000007A0000008F000000A4000000B9000000E3000000E3000000CE00000038DE0000000203046FA200000AA504000001287A0000060A38C80000000203046FA200000A28A500000A287E0000060A38B00000000203046FA200000AA50A000001287E0000060A38980000000203046FA200000AA50B00000128810000060A38800000000203046FA200000AA50C00000128840000060A2B6B0203046FA200000AA50D00000128870000060A2B560203046FA200000AA50E000001288A0000060A2B410203046FA200000AA50F000001288D0000060A2B2C0203046FA200000AA51000000128900000060A2B170203046FA200000A741100000128940000060A2B02140ADE1E26725E130070032866000006730700000A0C72511400700873AF00000A7A062D022B082B390B38A6FEFFFF725E130070032866000006730700000A0D7225250070037B2C0200046F3A00000A046FA100000A28680000060973B000000A7A062A00411C000000000000100000002F0100003F0100001E0000005C000001133003005200000033000011046FB600000A1F322B42140A2B4204755B0000012B15072D28046FA100000A280E000006172E022B052B0C0B2BE805046FAB01000A2B12020304289D0000062B0802030728A50000060A2B0433C02BBA062A0000133006005300000000000000D05A000001280100000A729925007028CE00000A8056000004D011000001280100000A72A1250070188D020000012516D001000001280100000AA22517D001000001280100000AA2280F01000A80570000042A001E02280E00000A2A52027B58000004037B20020004141628710000062A0000001E02280E00000A2A3A027B5A000004031728740000062A002E73AD000006805B0000042A1E02280E00000A2A133004007700000000000000036FA100000AD00F000001280100000A28AE00000A2B4903D00F000001280100000A28B400000A2B1B046FA100000AD00F000001280100000A28AE00000A2C022B082B20FE0B01002BDF04D00F000001280100000A28B400000AFE0B02002B042CC72BB3037E560000040304281001000A28D100000A2A00133003007100000000000000036FA100000AD00F000001280100000A28AE00000A2B4903D00F000001280100000A28B400000A2B1B046FA100000AD00F000001280100000A28AE00000A2C022B082B20FE0B01002BDF04D00F000001280100000A28B400000AFE0B02002B042CC72BB37E560000040304281001000A2A0000001E036FAC01000A2A1E037B920000042A1E02280E00000A2A133003005600000000000000036F4801000A8E69027B600000047B910000048E69313D036F4801000A027B600000047B910000048E69281100002B7E5E000004252D17267E5B000004FE06B000000673AD01000A25805E000004282000002B2A162A000076027B61000004036FAF01000A036F9301000A283701000A6FC700000A2A00001E02280E00000A2A3E027B6200000403141628710000062A3E027B6200000403141628710000062A1E02280E00000A2A7E027B63000004027B640000047B6200000403141628710000066FC700000A2A1E02280E00000A2A4A036F0300000A027B6500000428B001000A2A001E02280E00000A2A3A027B66000004031728740000062A001E02280E00000A2A72036F0300000A027B670000047B2C0200047B580200046FB101000A2A0000008A036F0300000A027B670000047B2C0200047B58020004027B680000046FB201000A2A0072036F0300000A027B670000047B2C0200047B580200046FB101000A2A0000008A036F0300000A027B670000047B2C0200047B58020004027B680000046FB201000A2A0072036F0300000A027B670000047B2C0200047B580200046FB101000A2A0000008A036F0300000A027B670000047B2C0200047B58020004027B680000046FB201000A2A0072036F0300000A027B670000047B2C0200047B580200046FB101000A2A0000008A036F0300000A027B670000047B2C0200047B58020004027B680000046FB201000A2A001330030036000000340000110228D10000062B29027B6F000004192B0D027B6F0000041A33022B062B162E022BEF0616027B790000046FB301000A2B030A2BD4062A00004A0273B401000A7D7300000402280E00000A2A0013300300430100003500001173DA0000060A0605382A0100000414280200000A3806010000027BAC0000046F0701000606FE06DB00000673B501000A282100002B7E84000004252D17267E83000004FE06E000000673B601000A258084000004282200002B282300002B7E85000004252D17267E83000004FE06E100000673B701000A258085000004282400002B281800002B2A06027BAC0000047BB4000004175F172E031A2B5E1B2B5B0E042D2B041A027BAC0000047BB4000004606F1A00000A06FE06DD000006731B00000A281700002B281800002B2B29041E027BAC0000047BB4000004606F1A00000A06FE06DC000006731B00000A281700002B281800002B0B2B077D820000042B9E027BAC0000046F03010006067B8100000412026FB801000A2C022B0C2B223964FFFFFF38F0FEFFFF07086FB901000A6FBA01000A2B0A7D8100000438CCFEFFFF072A00DE026FBB01000A26026FBB01000A7E86000004252D17267E83000004FE06E2000006739C01000A258086000004282500002B282600002B2A13300500030100003600001173BC01000A0A0438EF000000160C38DB00000007089A0D73C8000006250E057D7700000425097D7100000425097D7000000425177D6F0000042502252D0726096FBD01000A7D7800000425057D7400000425037D79000004250E0473BE01000A7D6B0000042509D014000001280100000A166FBF01000A7D6D0000043869000000096FC001000A2B571104110428D70000067D7000000411047B700000041428CF00000A2D3E1104110428CD0000067D6900000411047B690000042C27110428D80000062C1E110411047B690000048E697D6A0000040611046FC101000A2B042CC42BA50817580C2B0413042B9308078E6932022B0B3818FFFFFF0B380BFFFFFF062A0013300200640000003700001173C201000A0A023853000000160C2B4507089A2B3D032B30096FC301000A2C2C032D08096FC401000A2C21032D08096FC501000A2B06096FC601000A13040611046FC701000A2B042CD62BCC0817580C2B030D2BC008078E6932022B052BB10B2BAA062A133002005D00000038000011027B700000046F4801000A2B37027B6D0000042B12027B6F00000417330D02197D6F0000042B042C322BEA06169A6F9301000A027B780000046F1900000A2D022B052B050A2BC6142A06281200002B17281100002B282700002B2A062A0000001330040022000000390000110272EE04007028CA0000060A73C800000625047D6B0000042506169A7D760000042A000013300300620000003A000011026FC801000A2B43142A02166FC901000A2B29170B2B180602076FC901000A28D00000062B060717580B2B030A2BF707026FC801000A32022B052BDB0A2BD4067B6C0000042C022B062B152DBD2BB972D3210070042865000006730700000A7A062A000013300200020100003B000011027B6A000004037B6A000004289F00000A38E40000001438CF000000160C2B47027B73000004086FCA01000A38A9000000037B73000004086FCA01000A13040911042E1F0911043203032B01021305072C0E0711052E0C07177D6C000004072A11050B0817580C080632B5073A8F000000027B6F000004037B6F0000042E18027B6F000004037B6F0000043203032B01020B3869000000027B6E000004037B6E0000042E15027B6E000004037B6E0000043203032B01020B2B46027B6A000004037B6A0000042E1F027B6A000004037B6A00000430022B082B090D3851FFFFFF032B01020B2B19020B2B060B382BFFFFFF07177D6C0000042B060A3816FFFFFF072A000013300300A70100003C000011027B7600000414289E01000A388A010000027B6B0000042A027B6B0000040A732701000A0B027B6E00000418FE013850010000160D384F010000027B69000004099A382F01000008398000000009027B690000048E691759337311046F9301000A6F6301000A1305732701000A13060913072B3B0611076F2801000A130811086FA100000A110528AE00000A2C1211061108110528B400000A6FC700000A2B09110611086FC700000A1107175813071107066F2B01000A32BB0711051106286001000A6FC700000A38B000000009066F2B01000A322011046FAC01000A2C170711046FAF01000A28AD00000A6FC700000A388700000011046F9301000A06096F2801000A6FA100000A28AE00000A2C5711046F9301000A6FCB01000A2C2E11046F9301000A6F6301000A06096F2801000A6FA100000A280200000A2C0F0706096F2801000A6FC700000A2B310706096F2801000A11046F9301000A28B400000A6FC700000A2B160706096F2801000A6FC700000A2B07130438CAFEFFFF0917580D2B060C38AAFEFFFF09027B690000048E6932022B0F389FFEFFFF3978FEFFFF386CFEFFFF072A0013300200CD0300003D0000110203280200000A38B0030000162A02280E000006388E03000003280E00000638740300000617594512000000050000005703000057030000570300001300000076000000DF00000040010000A50100000402000065020000C202000057030000570300005703000057030000570300001C03000038520300000302280F0000062C031F632A152A071759450F0000000F000000000300000003000000030000050000001D000000070000001D000000090000001D0000000B0000001D0000000D0000000D0000000D00000038FB020000162A172A182A192A1A2A0302280F0000062C031F632A152A152A071759450F000000150000009D0200009D0200009D020000230000000500000007000000090000000B0000000D0000000F000000110000001300000013000000130000003898020000162A172A182A192A1A2A1B2A1C2A1D2A0302280F0000062C031F632A152A152A071759450F0000000D0000003402000034020000340200001B0000001B000000050000001B000000070000001B000000090000001B0000000B0000000B0000000B000000382F020000162A172A182A192A0302280F0000062C031F632A152A152A071759450F00000011000000D3010000D3010000D30100001F0000001F000000D30100000500000007000000090000000B0000000D0000000F0000000F0000000F00000038CE010000162A172A182A192A1A2A1B2A0302280F0000062C031F632A152A152A071759450F0000000B0000006E0100006E0100006E01000019000000190000001900000019000000050000001900000007000000190000000900000009000000090000003869010000162A172A192A0302280F0000062C031F632A152A152A071759450F0000000D0000000F0100000F0100000F0100001B0000001B0000000F0100001B0000001B0000000500000007000000090000000B0000000B0000000B000000380A010000162A172A182A192A0302280F0000062C031F632A152A152A071759450F00000009000000AE000000AE000000AE000000170000001700000017000000170000001700000017000000050000001700000007000000070000000700000038A9000000162A172A0302280F0000062C031F632A152A152A071759450F0000000600000051000000510000005100000014000000140000005100000014000000140000001400000014000000020000000400000004000000040000002B4F162A172A0302280F0000062C031F632A152A152A07172E022B082B170B3886FCFFFF071F1233022B082B240A386CFCFFFF162A0302280F0000062C022B0C2B0D394DFCFFFF3846FCFFFF1F632A152A152A00000013300300290100003E00001173CC01000A0A027B700000046FCD01000A3800010000160D2B5F08099A130473D900000625027D7B0000042511046F0300000A7D7C00000425037D7D000004389C0000000611052B65027B70000004110528D400000611057B7F00000414280200000A2C1011057B7A0000046FCC00000A2D02142A0917580D09088E69329B067E87000004252D17267E83000004FE06E300000673CE01000A258087000004282800002B2C0F0628D60000062B076FCF01000A2B94067E88000004252D17267E83000004FE06E400000673CE01000A258088000004282800002B2C022B092B091305385DFFFFFF142A067E89000004252D17267E83000004FE06E500000673D001000A258089000004282900002B282A00002B0B2B060C38FAFEFFFF027B70000004076F6F01000A2A00000013300400970100003F000011026F4801000A387F010000160B381001000006079A3855010000086F9301000A6FCB01000A382C010000086F9301000A6F2401000A2D0D086F9301000A6F0300000A2B48086F9301000A6F0300000A16086F9301000A6F0300000A6FD101000A18596F6000000A2B23086F9301000A6F0300000A16086F9301000A6F0300000A6FD101000A17596F6000000A037B7C000004280600000A3982000000086F9301000A6FCB01000A2C1403037B7D000004079A6F6301000A7D7F0000042A086F9301000A6F2401000A2C45037B7D000004079A6F2401000A2C1403037B7D000004079A6F6301000A7D7F0000042A08D037000001280100000A166F1500000A2C1D03037B7D000004079A7D7F0000042A03037B7D000004079A7D7F0000042A0717580B07068E693FE7FEFFFF160D2B6106099A130411046F9301000A28110000062C3309037B7D0000048E692F2803097D7E0000042B0A3A0EFFFFFF38CAFEFFFF11046F9301000A0328D50000062B060C38A5FEFFFF037B7F0000041428AE00000A2C012A0917580D2B060A387BFEFFFF09068E6932992A00133003004301000040000011026F1600000A3828010000160B382701000006079A6F0300000A037B7C000004280600000A38F1000000037B7D000004037B7E0000049A38CE00000008D042000002280100000A280200000A3993000000026F0300000A72EB2400706F4C01000A397E00000007068E6917593376037B7B0000047B6D0000042D27037B7B0000047B6B000004037B7E0000046F2801000A745B0000016FA200000A74420000022B27037B7B0000047B6B000004037B7E00000417596F2801000A745B0000016FA200000A74420000020D037B80000004026F3C01000A037B7A000004096F5A01000A2B49086F2401000A2C14072D11086F6301000A13050311057D7F0000042A086F1600000A13042B060C382CFFFFFF0711048E692F022B092B122C103808FFFFFF031104079A7D7F0000042A0717580B2B060A38D2FEFFFF07068E693FD0FEFFFF2A001B3005007101000041000011170A385E010000160A027E8A000004252D17267E83000004FE06E600000673CE01000A25808A000004282B00002B6FD201000A0B3815010000076FD301000A0C160D38E6000000087B7A000004096FCB00000A1304087B80000004096F9101000A6F1600000A130517130616130A2B3173E8000006130B110B1105110A9A7D8C00000402110BFE06E900000673D401000A6FD501000A2C03161306110A1758130A110A11058E69175932C511063977000000027E8B000004252D17267E83000004FE06E700000673D001000A25808B000004282900002B282A00002B1307087B7B0000047B7000000411076F6F01000A1308087B7B0000047B770000041104110811086F4801000A179A28A00000067484000001130911092C0F0811096FD601000A7D7F0000042B150917580D09087B7A0000046FCC00000A3F09FFFFFF087B7F0000041428AE00000A2C02170A076F2F00000A3AE0FEFFFFDE0A072C06076F3000000ADC063A9CFEFFFFDE0326DE002A000000413400000200000034000000270100005B0100000A0000000000000000000000000000006D0100006D0100000300000017000001133003005F00000042000011027B6D0000042B46021A7D6F000004733B01000A25027B780000046F3C01000A2B1306027B74000004280E00002B6FD701000A2B030A2BEA02066F3F01000A28D30000062A02187D6F0000042B042CF52BB602027B7400000428D30000062A00133004007202000043000011027B69000004385F020000027B74000004384102000017382F020000160D383A02000006099A130409068E691759FE01130511046FAC01000A2D141104D037000001280100000A16280B0000062C2909078E6932231104D037000001280100000A16280B00000639E501000002187D6E00000438D901000009078E693207160C38EB010000110539DD0000001104D037000001280100000A16280B00000639C600000016130609078E691759336107099A1308027B6B000004096F2801000A755B000001130911092C1D11096FA200000A2D1411046F9301000A280E0000061733051713062B10110811046F9301000A28D200000613061106152E13027B730000040911066FD801000A386101000011046F9301000A6F6301000A130709130A2B2607099A130B1106110B110728D200000628D901000A13061106153304160C2B0D110A1758130A110A078E6932D302187D6E000004027B730000040911066FD801000A38E800000011052C0F09078E6917592F07160C38F400000007099A130C027B6B000004096F2801000A130D110CD042000002280100000A280200000A2C56027B6B000004096F2801000A745B0000016FA200000A74420000021310027B770000041110027B70000004110428A0000006131111112D07160C388F000000027B6B0000040911116F5F01000A11116FA100000A130C110D755B000001130F110F2C1D110F6FA200000A2D1411046F9301000A280E00000617330517130E2B10110C11046F9301000A28D2000006130E110E153304160C2B35027B7300000409110E6FD801000A2B060C38CBFDFFFF0917580D2B060B38B9FDFFFF09068E6932022B0B38B9FDFFFF0A389BFDFFFF082A00007602735901000A7D7A00000402733B01000A7D8000000402280E00000A2A00001E02280E00000A2A4E0F0128DA01000A027B81000004280600000A2A62036F0300000A027B81000004027B82000004288A00000A2A00000062036F0300000A027B81000004027B82000004288A00000A2A0000002E73DF00000680830000042A1E02280E00000A2A360F0128DB01000A6FDC01000A2A00001E03282C00002B2A2E036FDE01000A8E16FE032A7E037B7F00000414280200000A2C0F037B7A0000046FCC00000A16FE022A162A36037B7F00000414280200000A2A00001E037B7F0000042A7E037B7F00000414280200000A2C0F037B7A0000046FCC00000A16FE022A162A56037B7F000004252D0B26D001000001280100000A2A00001E02280E00000A2A9E037B7C000004027B8C0000046F0300000A280600000A2C0D037B7F00000414280200000A2A162A1E02280E00000A2A6E022B0902037D930000042B07280E00000A2BF002047D910000042A1B300400FE000000440000110238C1000000026FDF01000A388E00000072FD1C0070032865000006730700000A7A73E001000A0A026F6901000A13042B271204286A01000A13050611056F6B01000A11056F6D01000A6FA100000A73E101000A6FE201000A1204287101000A2DD0DE0E1204FE163200001B6F3000000ADC067E98000004252D17267E97000004FE06F400000673E301000A258098000004282D00002B282A00002B0B2B0A3A7EFFFFFF3868FFFFFF060328EE000006076F3601000A256F4401000A169A0C6FBB01000A0D2B0A3945FFFFFF3835FFFFFF08027E99000004252D17267E97000004FE06F500000673E401000A258099000004282E00002B0928E501000A2A000001100000020030003464000E00000000C272AF250070027E9A000004252D17267E97000004FE06F600000673E601000A25809A000004282F00002B284500000A2A0000001B300600A4020000450000117E9600000438400200000228ED00000638210200007E96000004066FE701000A38FD0100007E96000004066FE801000A6FE901000A1307DD650200001A8D01000001251672E31F0070A225177E960000046FEA01000A8C0A000001A22518722C1E0070A22519026FEB01000A8C0A000001A2284900000A0B7E95000004072001200000147EED00000A6FEC01000A0C027E9B000004252D17267E97000004FE06F700000673E601000A25809B000004282F00002B283000002B0D08097E9C000004252D17267E97000004FE06F800000673ED01000A25809C000004283100002B283000002B6FEE01000A1304081C1711047E9D000004252D17267E97000004FE06F900000673EF01000A25809D000004283200002B283300002B6FF101000A6FF201000A130573F301000A130616130838D6000000110411089A13090211086FF401000A130A0872B3250070110A6FF501000A284200000A1109176FF601000A130B1106110B6FF701000A08110A6FF501000A161109168D020000016FF801000A2086080000130C0872B7250070110A6FF501000A284200000A110C11097EED00000A6FF901000A130D110D6FFA01000A257EFB01000A6FFC01000A257EFD01000A110B6FFE01000A7EFF01000A6FFC01000A110D6F0002000A11057E0102000A166F0202000A11057E0102000A110817586F0202000A11057E0302000A110B6FFE01000A1108175813081108026FEB01000A3F1DFFFFFF08110628EF0000062B0A3915FEFFFF38F9FDFFFF08110628F00000062B060A38D9FDFFFF11057EFF01000A6FFC01000A2B0A280402000A38B6FDFFFF7E96000004060708281300000673E101000A6F0502000A7E96000004066FE801000A6FE901000A1307DE22130E110E6F0602000A032865000006110E73B000000A7A7E96000004280702000ADC11072A4134000000000000000000007F0200007F0200001700000017000001020000000000000096020000960200000B000000000000001B300800C2010000460000110272C125007020C6000000D004000001280100000A178D020000012516D001000001280100000AA26FF901000A6FFA01000A387901000006026F0802000A2B67066F0902000A2B53067E0A02000A6FFC01000A067E0B02000A026F0C02000A067E0D02000A076F0E02000A067E0F02000A076F0E02000A067E1002000A086F1102000A067E1202000A6FFC01000A067EFF01000A6FFC01000A2B030C2BAA06086F1302000A2B030B2B96036F1402000A0D38D10000001203281502000A1304066F0902000A0CD09D000001280100000A72CF25007028CE00000A1305067E1602000A1105146F1702000A067EFB01000A6FFC01000A067EFD01000A11046FFE01000A067E0F02000A076F0E02000A067EFD01000A11046FFE01000AD09D000001280100000A281802000A7E9E000004252D17267E97000004FE06FA000006731B00000A25809E000004283400002B1306067E1A02000A1106146F1702000A067E1002000A086F1102000A067E1202000A6FFC01000A067EFF01000A6FFC01000A06086F1302000A1203281B02000A3A23FFFFFFDE0E1203FE165600001B6F3000000ADC067E1C02000A6FFC01000A2B060A3881FEFFFF067EFF01000A6FFC01000A2A0000011000000200B100E495010E000000001B3005000B010000470000110272E725007020C6000000D00A000001280100000A7EED00000A6FF901000A6FFA01000A2B0D067E1202000A6FFC01000A2B030A2BF0036F1402000A0B38A10000001201281502000A388F000000D09D000001280100000A72CF25007028CE00000A2B69067E1602000A09146F1702000A067EFB01000A6FFC01000A067EFD01000A086FFE01000AD09D000001280100000A281802000A7E9F000004252D17267E97000004FE06FB000006731B00000A25809F000004283400002B1304067E1A02000A1104146F1702000A2B030D2B94067E1D02000A6FFC01000A2B060C386BFFFFFF1201281B02000A3A53FFFFFFDE0E1201FE165600001B6F3000000ADC067EFF01000A6FFC01000A2A000110000002003D00B4F1000E00000000133003004400000000000000731E02000A2572E31F00706F1F02000A8094000004282002000A7E94000004176F2102000A7E940000046F2202000A6F2302000A8095000004732402000A80960000042A2E73F300000680970000042A1E02280E00000A2A1E036FE901000A2A1E036F6D01000A2A1E036FF501000A2A1E036FF501000A2A3272FF25007003284200000A2A0000000A032A0046036F0300000A72C1250070280600000A2A000046036F0300000A72E7250070280600000A2A0000F2026F1501000625031417287100000626284E0000062D0B725F030070730700000A7A28410000062C0B7205260070730700000A7A17046F0B0100062A0000001E02280E00000A2A133002008A0000000000000002732502000A7DA000000402732602000A7DA400000402732701000A7DA800000402732502000A7DA900000402732702000A7DAE00000402732702000A7DAF00000402734E01000A7DB000000402732802000A7DB100000402732902000A7DB200000402732A02000A7DBC000004022B0A021F707DB40000042B07280E00000A2BEF02027DAC0000042A000036027BA300000418FE0116FE012A00002A027BA300000417FE012A001E027BB30000042A2202037DB30000042A0000001E027BB80000042A2202037DB80000042A0000001E027BB90000042A2202037DB90000042A0000001E027BBA0000042A2202037DBA0000042A0000001E027BBB0000042A2202037DBB0000042A0000001B300300B3010000480000110338A1010000027BAB0000043873010000027BAB000004027BAC000004383D010000027BAB0000047BAE0000046F2B02000A16314D027BAB0000047BAE0000046F2C02000A0B2B211201282D02000A0C027BAE0000041202282E02000A1202282F02000A6F3002000A1201283102000A2DD6DE0E1201FE165C00001B6F3000000ADC027BAB0000047BA80000046F2B01000A163117027BA800000416027BAB0000047BA80000046F3202000A027BA10000042C23027BA10000040D027BA800000409096F3302000A28C500000A283402000A6FC700000A027BAE0000042C27027BAE0000046F2B02000A163119027BAE0000046F3502000A027BA8000004283602000A0A2B3E027BA80000046F2B01000A2D0828C800000A0A2B29027BA80000046F2B01000A17330F027BA8000004166F2801000A0A2B0C027BA8000004282901000A0A041428AE00000A2C64066FA100000A0428AE00000A2C022B0C2B524048FFFFFF38B9FEFFFF066FA100000AD06D000001280100000A280200000A2C022B0C2B193923FFFFFF3883FEFFFF061428AD00000A28CD00000A0A2B14060428B400000A0A2B0A392BFFFFFF3855FEFFFF062A0001100000020046002E74000E0000000013300300760000004900001114386B000000020B2B23027BA90000040312006F3702000A2B3F07027BAA0000042B29077BAB0000042B01140B072DDA062D41027BAA0000047BA00000040312006F3702000A2D022B062B282EDD2BD303283802000A0A2B042DD52BBD027BAA0000047BA000000403066F3902000A2B030A2B92062A000013300300BB00000049000011027BA90000040312006F3702000A389F000000027BAA0000047BA00000040312006F3702000A3874000000027BAA0000047BA0000004036F3A02000A2B57027BA900000403066F3902000A386900000003283802000A0A020B2B3D077BA9000004036F3B02000A2C17722027007003285500000A042865000006730700000A7A07027BAA0000042E08077BAB0000042B01140B2B03262BA6072D022B062BBC2CAF2B88027BA900000403066F3902000A2B072D05385AFFFFFF062A00133003003A0000004A000011027BAA0000047BA1000004252D2B2B25027BAA0000040314280200000A2D0803283C02000A2B05283D02000A250A7DA10000042B03262BD8062A0000F2027BB60000042B07032D022B062B102D1F2BF572B9270070730700000A2B1072EF270070032866000006730700000A7A027BB60000046F3E02000A2A000000F2027BB70000042B07032D022B062B102D1F2BF572B9270070730700000A2B1072EF270070032866000006730700000A7A027BB70000046F3E02000A2A00000032027BB70000046F3F02000A2A00000032027BB60000046F3F02000A2A00000013300400750000000000000073FE00000625027BA30000047DA300000425032D08027BB60000042B1114FE063D02000A734002000A734102000A7DB600000425042D08027BB70000042B1114FE063D02000A734002000A734102000A7DB700000425027BAA0000047DAA00000425027DAB00000425027BAC0000047DAC0000042A00000042021616281301000625037DA30000042A000000CE73FE00000625027BA30000047DA300000425177DA200000425027DAB00000425027BAC0000047DAC00000425257DAA0000042A133004009F0000004B000011027BAC00000402387A000000027BAC00000403046F160100062A02280901000603046F4202000A2B45027BAC0000047BB4000004175F17FE012B2204031606284302000A252D1326729A28007003284200000A1606284302000A512B030A2BDB045014280200000A2C022B062B282DF02BB70228050100060312016F4402000A2C022B092B102E92387FFFFFFF02070428160100062A04501428AE00000A2A0013300400F50000004C0000110538E3000000027BAC0000046F050100060412036F4402000A38AC000000093889000000027BAE0000040412016F4502000A2C07070A38B8000000027BA40000040412026F4602000A2C07080A38A1000000027BB00000040412006F5101000A3A8E000000027BAB0000042D34027BAF0000040412016F4502000A2C07070A386F000000027BBC0000040412046F4702000A2D03142B0711046F4802000A0A2B52027BA20000042C022B0B2B2BFE0B0200386EFFFFFF027BAF0000040412016F4502000A2C022B0C2B0E3955FFFFFF384AFFFFFF070A2B1B027BAB0000040304176F170100060A2B0A3A36FFFFFF3813FFFFFF062A0000003A027BBC00000403046F4902000A2A0013300300660000004D0000110304284A02000A2B58020B2B3A077BAE000004046F4B02000A2B33077BA4000004046F4C02000A2B1A72AA28007004285500000A730700000A7A077BAB0000040B2B042CF52BE2072D022B062BBF2DD92BC9027BAE00000404066F3002000A2B030A2BA5062A0000133003001B0000004E0000110203284D02000A0A1200FE16410000016F3A00000A28190100062A00133003001D0000004F0000110304284A02000A2B0F027BAF00000404066F3002000A2B030A2BEE062A000000133003001B0000004E0000110203284D02000A0A1200FE16410000016F3A00000A281B0100062A0056027BBF000004172E0A027BBF00000419FE012A172A00001B3004008000000050000011027BC40000047EC8000004252D17267EC7000004FE0623010006734E02000A2580C8000004283500002B6F4F02000A0A2B39066F5002000A2B2E07027BC6000004077BD40000046F9301000A6F6301000A077BD20000047B900000046F190100067DD30000042B030B2BCF066F2F00000A2DBFDE0A062C06066F3000000ADC2A01100000020030004575000A000000001B300300FF01000051000011732701000A0A027BC40000046F5102000A0B38CA0100001201285202000A3877010000087BD100000439A1000000732701000A0D087BD40000046F9301000A6F6301000A3839010000087BD100000438FF0000001613062B5B110511069A13071107755B000001130811082C1A11086FA200000A2D11091107110428B400000A6FC700000A2B2709087BD40000046F9301000A110428AE00000A2D0411072B091107110428B400000A6FC700000A110617581306110611058E69329D06110409286001000A6FC700000A3812010000087BD30000042C50087BD40000046F9301000A1309087BD3000004755B000001130A110A2C21110A6FA200000A2D1806087BD3000004110928B400000A6FC700000A38CB00000006087BD30000046FC700000A38BA000000087BD4000004D037000001280100000A166F1500000A2C32087BD40000046F9301000A6F6301000A130B2B07130538FAFEFFFF06110B732701000A286001000A6FC700000A3870000000087BD40000046FAC01000A2C022B092B4E130438C0FEFFFF087BD40000046FAF01000A2D022B082B1E0C3883FEFFFF06087BD40000046F9301000A28C500000A6FC700000A2B2906087BD40000046FAF01000A28AD00000A6FC700000A2B1172FD1C0070032865000006730700000A7A1201285302000A3A2AFEFFFFDE0E1201FE166500001B6F3000000ADC062A00411C00000200000012000000DD010000EF0100000E000000000000009202177DBE00000402735402000A7DC300000402735402000A7DC500000402280E00000A2A0000002E732201000680C70000042A1E02280E00000A2A5A037BD30000042C0C037BD20000047B8E0000042A162A003A02280E00000A02037DC90000042A001E02280E00000A2AC2026FBB01000A7ED8000004252D17267ED7000004FE0639010006739C01000A2580D8000004282500002B283600002B2A00000013300400CA0100005200001173490100060A060438B1010000060E04387401000006027BAC0000047BB4000004175F172E061A38470100001B38410100000314280200000A2C6F027BAC0000046F0701000606FE064A01000673B501000A282100002B7ED9000004252D17267ED7000004FE063A01000673B601000A2580D9000004282200002B7EDA000004252D17267ED7000004FE063B01000673B701000A2580DA000004282400002B281800002B0B38D3000000052D2B031A027BAC0000047BB4000004606F1A00000A06FE064C010006731B00000A281700002B281800002B2B29031E027BAC0000047BB4000004606F1A00000A06FE064B010006731B00000A281700002B281800002B0B07027BAC0000046F0301000606FE064D010006735502000A283700002B7EDB000004252D17267ED7000004FE063C010006735602000A2580DB000004283800002B7EDC000004252D17267ED7000004FE063D010006735702000A2580DC000004283900002B281800002B6FBA01000A2B0A7DE900000438B5FEFFFF067BEA0000042C022B0C2B3F7DEA0000043882FEFFFF0706FE064E010006731B00000A281700002B06FE064F010006735802000A283A00002B281800002B0B2B0A7DE80000043845FEFFFF072A00001B300400BC00000053000011040E042826010006140A735902000A0B6F5A02000A0C2B361202285B02000A2B2A02030905282D0100062B1111042C1E11047BBE0000042C022B062B1113042BEB0711046F5C02000A2B030D2BD31202285D02000A2DC1DE0E1202FE166C00001B6F3000000ADC076F5E02000A17330A07166F5F02000A0A2B0707282A0100060A062D1272D92900700E052865000006730700000A7A067BBD0000042C1C72532A007072A12A0070285500000A0E052865000006730700000A7A062A01100000020016004359000E000000001B300500420200005400001173500100060A0605380C020000060E0638DC0100000E081438C70100000204067BEB0000040E05067BEC00000428270100060B076F6002000A16FE010E055F392E010000735301000613041104067DEE0000041104027BAC0000047BB4000004175F172E031A2B011B7DED000004027BAC0000047BB10000041104FE0654010006736102000A283B00002B7EDD000004252D17267ED7000004FE063E010006736202000A2580DD000004283C00002B281800002B0B16130511047BEE0000047BEC0000042C4C11047BEE0000047BEC0000046F3D01000A1631381713050711047BEE000004FE0651010006731B00000A281700002B11047BEE000004FE0652010006735802000A283A00002B281800002B0B076F6002000A16315711052D19027BAC0000047BB100000407166F6302000A6F6402000A2B1C027BAC0000047BB100000407166F6302000A6F6502000A6F6402000A1306027BAC000004021106166F1701000613071107FE0B01000E08110751140C735902000A0D076F6602000A13082B2B1208286702000A1309020311090E04282D010006130A110A2C11110A7BBE0000042C0809110A6F5C02000A1208286802000A2DCCDE0E1208FE166F00001B6F3000000ADC096F5E02000A17330A09166F5F02000A0C2B0F09282A0100060C2B06513833FEFFFF082D022B0C2B1C7DEC000004381AFEFFFF72D92900700E072865000006730700000A7A087BBD0000042C022B0C2B277DEB00000438EAFDFFFF72532A0070067BEB000004285500000A0E072865000006730700000A7A082A0000011000000200820138BA010E00000000133003004100000055000011026F5E02000A2B33142A02166F5F02000A2B18170B2B170602076F5F02000A282B0100060A0717580B2B030A2BE507026F5E02000A32022B062BDC2DCD2BC9062A0000001B3003002C04000056000011027BC50000046F6902000A037BC50000046F6902000A289F00000A38010400001438EC030000160C3819010000027BC5000004086F6A02000A38C6030000037BC5000004086F6A02000A1304097BD500000411047BD50000042E48097BD50000042C2111047BD50000042C15097BD500000411047BD50000043203032B07022B04032B01021305072C110711053BB000000007177DBD000004072A11050B389F000000097BD50000041F64409200000011047BD50000041F64408400000011047BD10000042C08097BD30000042D32097BD40000046F9301000A11047BD40000046F9301000A6F1900000A2C14072C0D07032E0907177DBD000004072A030B2B41097BD10000042C0911047BD30000042D3011047BD40000046F9301000A097BD40000046F9301000A6F1900000A2C12072C0D07022E0907177DBD000004072A020B0817580C08063FE0FEFFFF027BC30000046F5102000A130638790000007355010006130711071206285202000A7DEF000004037BC30000041107FE0656010006736B02000A6F6C02000A130811077BEF0000047BD500000411087BD50000042E3511077BEF0000047BD500000411087BD50000043203032B01021309072C140711092E1207177DBD00000407130ADD5402000011090B1206285302000A3A7BFFFFFFDE0E1206FE166500001B6F3000000ADC073A61010000027BBF000004037BBF0000042E18027BBF000004037BBF0000043203032B01020B383B010000027BC40000046F6902000A163139027BC4000004283D00002B7BD10000042C27037BC40000046F6902000A163119037BC4000004283D00002B7BD30000042C07030B38F4000000037BC40000046F6902000A163139037BC4000004283D00002B7BD10000042C27027BC40000046F6902000A163119027BC4000004283D00002B7BD30000042C07020B38AD000000027BC50000046F6902000A130B037BC50000046F6902000A130C110B110C2E10110B110C3003032B01020B387D000000027BC10000046FBD01000A037BC10000046FBD01000A28AE00000A2C60027BC10000046F4801000A130D037BC10000046F4801000A130E110D8E69110E8E69333C17130F1613102B26110D11109A6F9301000A110E11109A6F9301000A28AE00000A2C0516130F2B0E1110175813101110110D8E6932D2110F2C02020B073AC6000000027BC10000046F4801000A8E69027BC50000046F6902000A027BC30000046F6902000A58332D037BC10000046F4801000A8E69037BC50000046F6902000A037BC30000046F6902000A583107020B3873000000027BC10000046F4801000A8E69027BC50000046F6902000A027BC30000046F6902000A583134037BC10000046F4801000A8E69037BC50000046F6902000A037BC30000046F6902000A5833022B082B0A0D3834FCFFFF030B2B19020B2B060B380EFCFFFF07177DBD0000042B060A38F9FBFFFF072A110A2A0110000002005A018CE6010E0000000013300200800000003D0000110203280200000A3869000000162A0228110000062B46026F0300000A72B12A00706F4C01000A2B2802280C000006169A03280200000A2C02162A02280E0000060A03280E0000060B06172E022B062B102CE82BD4071733022B062B072CDC2BB61F642A0228100000060328100000062E022B062B072C972B931F642A0706592A13300500FA00000057000011732001000625047DC0000004250475200000017DC1000004250475630000017DC200000425027DC600000438C00000000338A200000004D014000001280100000A166FBF01000A387D000000163877000000067BC100000414286D02000A2C1A067BC10000046FC001000A2C0D067BC10000046F6E02000A2B01160C0607085F2D0F072D09082D03162B07182B04172B01197DBF000004072C1D05736F02000AFE0B0300051673EA00000625037D920000046F7002000A060528310100062D02142A082C022B052B1B0B2B8606282E0100062D022B0C2B0C396FFFFFFF3854FFFFFF142A0628350100062D022B082B080A383AFFFFFF142A062A00001B300400FA01000058000011027BC10000046FCD01000A7EDE000004252D17267ED7000004FE063F010006737102000A2580DE000004283E00002B283F00002B385F010000027BC10000046F4801000A7EDF000004252D17267ED7000004FE0640010006737202000A2580DF000004284000002B282A00002B38EC000000027BC40000047EE0000004252D17267ED7000004FE0641010006737302000A2580E0000004284100002B282A00002B38A900000002070806282F010006027BBE0000042D02162A067EE1000004252D17267ED7000004FE0642010006737402000A2580E1000004284200002B2C44027BC40000047EE2000004252D17267ED7000004FE0643010006734E02000A2580E2000004284300002B2C180207027BC4000004062830010006027BBE0000042D02162A067EE3000004252D17267ED7000004FE0644010006737402000A2580E3000004284200002B2C022B082B1C0C3851FFFFFF02167DBE0000042B060B380EFFFFFF027BBE0000042A067EE4000004252D17267ED7000004FE0645010006737502000A2580E4000004284400002B282A00002B0D2B060A389BFEFFFF02027BC1000004096F6F01000A7DC1000004027BC10000046F4801000A13041613052B1D027BC400000411056F6A02000A110411059A7DD4000004110517581305110511048E6932DBDE0A2602167DBE000004DE00027BBE0000042A00000110000000009E014BE9010A0100000113300400FF02000059000011160A38EE02000073570100060B027BBE0000042D012A06048E6932012A0703069A38C502000004069A38B10200000814280200000A388B020000077BF00000046FCB01000A2C28086FCB01000A2D0802167DBE0000042A07077BF00000046F6301000A7DF0000004086F6301000A0C077BF00000046F2401000A2C372B28086F2401000A2D0802167DBE0000042A07077BF00000046F6301000A7DF0000004086F6301000A0C077BF00000046F2401000A2DCB077BF000000428110000062C32077BF0000004280C0000068E69173322086F2401000A2C1A07077BF0000004280C000006169A7DF0000004086F6301000A0C077BF0000004281100000639FA00000008D042000002280100000A280200000A3ACE0100000828110000062D4E086F1700000A07FE065801000673AA01000A281F00002B0D091428AE00000A2C25077BF0000004280C0000061304096F1600000A1305021104110505282F010006388001000002167DBE0000042A735901000613061106077BF0000004280C0000067DF100000408280C000006130711067BF10000048E6917334D051106FE065A010006737402000A284500002B130811082C34086F0300000A72C92A0070280600000A2D12086F0300000A72FD2A0070280600000A2C1011081107179A7DCA00000438FE0000000211067BF1000004110705282F01000638E9000000735B01000613091109077BF00000046F0300000A7DF2000004051109FE065C010006737602000A6F7702000A130A110A39B4000000110A7BCA00000414280200000A2C0D110A087DCA0000043898000000110A7BCA000004077BF000000428AE00000A3981000000110A7BCA000004082899000006130B110B14280200000A2C0902167DBE0000042B5F110BD001000001280100000A280200000A2C3B08110A7BCA000004280F0000062C0A110A087DCA0000042B33110A7BCA00000408280F0000062D022B092B202D1E386EFDFFFF02167DBE0000042A110A110B7DCA0000042B060C3849FDFFFF0617580A2B0A7DF00000043831FDFFFF06038E693F09FDFFFF2A001B300600E20300005A000011046F5102000A0A38B90300001200285202000A3842030000077BD40000046F9301000A381D030000086F0300000A72B12A00706F4C01000A38F302000008280C000006169A0C086F0300000A72B62300706F4C01000A396A030000077BD1000004392E010000735D0100060D077BD1000004284600002B130408280C0000061305091105284700002B7DF30000040509FE065E010006737602000A6F7702000A130611062D0C02167DBE000004DD2F03000011067BCA0000041428AE00000A3A01030000171307733B01000A130816130A2B5B735F010006130B110B1105110A9A7DF400000405110BFE0660010006737602000A6F7702000A130C110C2D0902167DBE0000042B30110C7BCA00000414280200000A2C031613071108110C7BCA0000046F3C01000A110A1758130A110A11058E691759329B110739860200001104745B0000011309027BC600000411096FA200000A74420000021108289F000006130D1106110D6FA100000A280C000006284700002B7DCA000004077BD100000416110DA2DE0D2602167DBE000004DD4D020000077BD300000439260200007361010006130E08280C000006130F110E110F284700002B7DF500000405110EFE0662010006737602000A6F7702000A131016131111102D26110E7BF500000428110000062C1805110EFE0663010006737602000A6F7702000A131017131111102D0C02167DBE000004DDD301000011107BCA0000041428AE00000A3AA5010000171312733B01000A131316131538ED000000736401000613161116110F11159A7DF6000004051116FE0665010006737602000A6F7702000A131711173A980000007366010006131811167BF600000428110000062D13111311167BF60000046F3C01000A3890000000111811167BF6000004280C0000067DF7000004051118FE0667010006737602000A6F7702000A131711172D0C02167DBE000004387900000072EE04007073240100061319111911167BF60000046FB300000A178D02000001251611177BCA000004A26F3601000A7DCA0000041119131711177BCA00000414280200000A2C03161312111311177BCA0000046F3C01000A1115175813151115110F8E69175932022B0F3802FFFFFF3911FDFFFF3803FDFFFF11122C022B0B38800000000C38DDFCFFFF077BD3000004745B00000113142B060B38B8FCFFFF027BC600000411146FA200000A74420000021113289F000006131A111011112D13111A6FA100000A280C000006284700002B2B18111A6FA100000A280C000006284700002B280C000006169A7DCA00000407111A7DD3000004DE0A2602167DBE000004DE1C1200285302000A3A3BFCFFFFDE0E1200FE166500001B6F3000000ADC2A0000414C000000000000480100003F000000870100000D0000001700000100000000600300005B000000BB0300000A000000170000010200000007000000CC030000D30300000E0000000000000013300500360100005B000011027BC100000414286D02000A3814010000027BC20000046FDE01000A2B0B027BC10000046F4801000A0A735402000A0B020738DB0000001638C2000000160D38AE00000006099A130409036F7802000A320E02070609283201000638A500000009068E69175933241104D037000001280100000A166F1500000A2C10020706030928330100060C387900000003096F7902000A7B8F0000042C0D020706030928340100060C2B5E73250100062511047DD40000042503086F7902000A7DD20000042503086F7902000A7B920000047DD300000413050711056F7A02000A027BC500000411056F7A02000A0917580D0817580C09068E6932022B0B3845FFFFFF0C3838FFFFFF08036F7802000A2E022B0C2B1D7DC4000004381BFFFFFF02167DBE0000042B0A3AF4FEFFFF38E2FEFFFF027BBE0000042A000013300400550000005C0000112B4C04059A2B44066FAC01000A2B2F06D037000001280100000A166F1500000A2D0802167DBE0000042A03732501000625067DD40000046F7A02000A2B042DEA2BCD051758FE0B03002B030A2BB905048E6932AE2A00000013300500CF0100005D0000110E0438BB010000040E049A389D010000056F7802000A065917387B01000005066F7902000A0D097B92000004755B000001130411042C0C11046FA200000A397A000000097B920000046FA100000A076F9301000A280200000A2D62097B920000046FA100000A6F2401000A2C1F076F9301000A6F2401000A2C12076F9301000A6F6301000A6F7B02000A2D31097B920000046FA100000A6F2401000A2C67076F9301000A6F2401000A2C5A076F9301000A6F6301000A28110000062C48732501000625077DD40000042505066F7902000A7DD20000042505066F7902000A7B920000047DD300000413050311056F7A02000A027BC500000411056F7A02000A0617580A062A050E04056F7802000A0E04596F7C02000A6F7D02000A0C02087EE5000004252D17267ED7000004FE0646010006737E02000A2580E5000004284800002B7DBE000004027BBE0000043976000000732501000625077DD400000425087DD000000425087EE6000004252D17267ED7000004FE0647010006739601000A2580E6000004281B00002B284900002B7DD100000413062B0A4067FFFFFF387BFEFFFF0311066F7A02000A2B060B385DFEFFFF027BC500000411066F7A02000A2B060A383FFEFFFF056F7802000A2A0013300400640100005E000011050E04056F7802000A0E04596F7C02000A284A00002B383C01000002067EE7000004252D17267ED7000004FE0648010006737E02000A2580E7000004284800002B38FE000000027BBE00000439D000000038C100000073680100060B07040E049A38C70000000607FE0669010006737F02000A6F8002000A0C08153347077BF80000046FAC01000A2D21077BF8000004D037000001280100000A166F1500000A2D0902167DBE0000042B7603732501000625077BF80000047DD40000046F7A02000A2B4B732501000625077BF80000047DD4000004250608284B00002B7DD2000004250608284B00002B7B920000047DD30000040D03096F7A02000A027BC3000004096F7A02000A06086F8202000A0E041758FE0B04000E04048E693F35FFFFFF027BBE0000042C022B0C2B307DF8000004382FFFFFFF066F7802000A1631022B0C2B197DBE00000438F8FEFFFF02167DBE0000042B060A38BEFEFFFF056F7802000A2A1B300300170600005F000011027BC50000046F5102000A0A2B521200285202000A2B4607077BD30000042D0F077BD1000004169A6FA100000A2B0B077BD30000046FA100000A7DD600000407077BD40000046F9301000A077BD6000004282C0100067DD50000042B030B2BB71200285302000A2DA5DE0E1200FE166500001B6F3000000ADC027BC30000046F5102000A0A2B3A1200285202000A0C08087BD30000046FA100000A7DD600000408087BD40000046F9301000A087BD30000046FA100000A282C0100067DD50000041200285302000A2DBDDE0E1200FE166500001B6F3000000ADC027BC40000046F5102000A0A38090500001200285202000A0D097BD1000004393C010000097BD40000046F9301000A6F6301000A1304161305380E010000097BD100000411059A13061106755B000001130711072C1F11076FA200000A2D16097BD40000046F9301000A280E000006173BD100000011066FA100000AD042000002280100000A280200000A2C46097BD40000046F9301000A6F6301000A13081106755B0000011309027BC6000004110811096FA200000A7442000002289E000006130A097BD10000041105110AA2387300000011066FA100000A110428AE00000A2C631104D011000001280100000A280200000A2C3811072C3411076FA100000AD005000001280100000A280200000A2C1C097BD1000004110511076FA200000A6F3A00000A28AD00000AA22B18110411066FA100000A280F000006130B02110B7DBE0000041105175813051105097BD10000048E693FE3FEFFFF38BA030000097BD300000439AF030000097BD300000439A4030000097BD3000004755B000001130C097BD40000046F9301000A6FCB01000A2C19097BD20000047B8D0000042D0C02167DBE000004DD88030000097BD40000046F9301000A6FCB01000A2C10110C2C0C02167DBE000004DD66030000110C2C1F110C6FA200000A2D16097BD40000046F9301000A280E000006173B27030000097BD30000046FA100000AD042000002280100000A280200000A39AD000000097BD40000046F9301000A130D097BD3000004755B000001130E110D28110000062C54110D6FB300000AD0A4000001280100000A280200000A2C3C027BC6000004110D280C000006169A110E6FA200000A7442000002289E000006130F09110F7DD3000004DD9E0200002602167DBE000004DDAD02000000027BC6000004110D110E6FA200000A7442000002289E00000613100911107DD3000004DD680200002602167DBE000004DD77020000097BD20000047B8D0000042D0D097BD30000046FA100000A2B10097BD30000046FA100000A6F8901000A1311097BD40000046F9301000A28110000062C3A097BD40000046F9301000A6F0300000A72B12A00706F4C01000A2C1E097BD40000046F9301000A280C000006169A1111280200000A3AE30100001111097BD40000046F9301000A28AE00000A39CC0100001111097BD40000046F9301000A28990000061312111214280200000A2C0C02167DBE000004DDBE0100001112D001000001280100000A280200000A39DE000000097BD3000004755B0000011313097BD40000046F9301000A097BD30000046FA100000A280F0000062C2109097BD3000004097BD40000046F9301000A28B400000A7DD3000004384101000011132C4211136FA200000A2D3911126F8302000A2C0F1112288402000A1428AE00000A2C2109097BD3000004097BD40000046F9301000A28B400000A7DD300000438FB0000001111D001000001280100000A280200000A2C2E097BD3000004751D0000012C2109097BD3000004097BD40000046F9301000A28B400000A7DD300000438BA00000002167DBE000004DDCA0000001112D011000001280100000A280200000A2C5F110C2C52110C6FA100000AD005000001280100000A280200000A2C3A09110C6FA200000A6F3A00000A28AD00000A7DD300000409097BD40000046F9301000A097BD30000046FA100000A282C0100067DD50000042B4502167DBE000004DE581111097BD40000046F9301000A28D2000006152E1E09097BD3000004097BD40000046F9301000A28B400000A7DD30000042B0902167DBE000004DE1C1200285302000A3AEBFAFFFFDE0E1200FE166500001B6F3000000ADC027BBE0000042A00417C0000020000000C0000005F0000006B0000000E00000000000000020000008500000047000000CC0000000E0000000000000000000000270300002F000000560300000D000000170000010000000064030000280000008C0300000D0000001700000102000000E60000001C050000020600000E000000000000001E02280E00000A2A2E733801000680D70000042A1E02280E00000A2A2E036FDE01000A8E16FE032A360F0128DB01000A6FDC01000A2A00001E03282C00002B2A360F01288502000A6FB901000A2A00000A032A00220F01288602000A2A00000032036F0300000A73240100062A0000001E036F9301000A2A133002005A00000060000011037BD10000042B3E037BD1000004169A6FA100000A6F4001000A2A037BD30000042B13037BD3000004755B0000010A062C022B062B162C202BE9066FA200000A2D022B062B062CD32BBE142A037BD30000046FA100000A2A142A000036037BCA00000414280200000A2A0000E6037BD40000046F9301000A6F0300000A72B62300706F4C01000A2D1B037BD40000046F9301000A6F0300000A72B12A00706F4C01000A2A172A000036037BCA00000414280200000A2A00001E037BCA0000042A2A037B8F00000414FE012A001E037B920000042A2A037B8F00000414FE032A001E02280E00000A2A660F0128DA01000A027BE8000004027BE9000004288A00000A2A000062036F0300000A027BE8000004027BE9000004288A00000A2A00000062036F0300000A027BE8000004027BE9000004288A00000A2A000000660F01288702000A027BE8000004027BE9000004288A00000A2A00008E036FC001000A2C19036FCD01000A284C00002B027BEA0000046F3D01000AFE012A162A4A03027BEA0000046F3F01000A6F6F01000A2A001E02280E00000A2A8E036FC001000A2C19036FCD01000A284C00002B027BEC0000046F3D01000AFE012A162A4A03027BEC0000046F3F01000A6F6F01000A2A001E02280E00000A2A8E0F01288602000A6F0300000A027BEE0000047BEB000004027BED000004288A00000A2A1E02280E00000A2A86037BD40000046F5001000A027BEF0000047BD40000046F5001000A280600000A2A00001E02280E00000A2A860328110000062C17036F0300000A027BF00000046F0300000A280600000A2A162A00001E02280E00000A2A66037BC9000004027BF1000004169A6F0300000A280600000A2A00001E02280E00000A2A4A037BC9000004027BF2000004280600000A2A001E02280E00000A2A5E037BC9000004027BF30000046F0300000A280600000A2A1E02280E00000A2A5E037BC9000004027BF40000046F0300000A280600000A2A1E02280E00000A2A5E037BC9000004027BF50000046F0300000A280600000A2A7A037BC9000004027BF5000004280C000006169A6F0300000A280600000A2A001E02280E00000A2A5E037BC9000004027BF60000046F0300000A280600000A2A1E02280E00000A2A66037BC9000004027BF7000004169A6F0300000A280600000A2A00001E02280E00000A2A5E037B8F000004027BF80000046F5001000A280600000A2A3A02280E00000A02037D260200042A006E022B0902037D260200042B07280E00000A2BF002047D1F0200042A82022B0E02037B530200047D260200042B07280E00000A2BEB02037D2C0200042A0000009A027B2C0200042D12027C26020004FE16410000026F3A00000A2A027B2C0200046F3A00000A2A0013300200D5010000610000111738C70100000338B1010000170C38B001000002076FAE0100063892010000092D07160A388E010000097B53020004201720000033090817580C3878010000097B53020004201920000033290817590C083A610100000717580B02076FAE0100060D097B530200042008200000FE010A385E010000097B5302000420D63200003B32010000097B5302000420702000003B22010000097B5302000420712000003B12010000097B53020004207D2000003B02010000097B53020004207B2000003BF2000000097B5302000420792000003BE2000000097B53020004207A2000003BD2000000097B5302000420752000003BC2000000097B5302000420772000003BB2000000097B53020004207F2000003BA2000000097B5302000420722000003B92000000097B5302000420732000003B82000000097B53020004207C2000003B72000000097B5302000420762000002E65097B5302000420782000002E58097B5302000420742000002E4B097B53020004201A2000002E3E097B53020004200F2000002E31097B5302000420102000002E24097B53020004201B2000002E17097B5302000420182000002E0A160A2B060D3868FEFFFF0717580B2B060B3849FEFFFF062D022B0B3846FEFFFF0A3833FEFFFF062A00000013300200AD0100006200001117389F010000030B388E01000002076FAE010006387C010000083866010000160A3869010000087B5302000420172000003B75010000087B5302000420192000003B65010000087B5302000420182000003B55010000087B5302000420D63200003B29010000087B5302000420702000003B19010000087B5302000420712000003B09010000087B53020004207D2000003BF9000000087B53020004207B2000003BE9000000087B5302000420792000003BD9000000087B53020004207A2000003BC9000000087B5302000420752000003BB9000000087B5302000420772000003BA9000000087B53020004207F2000003B99000000087B5302000420722000003B89000000087B5302000420732000003B79000000087B53020004207C2000003B69000000087B5302000420762000002E5C087B5302000420782000002E4F087B5302000420742000002E42087B53020004201A2000002E35087B53020004200F2000002E28087B5302000420102000002E1B087B53020004201B2000002E0E160A2B0A3A9CFEFFFF3890FEFFFF0717580B2B060C387EFEFFFF062D022B0B3868FEFFFF0A385BFEFFFF062A000000133002008400000063000011026FAD0100063872000000062B5A067B5302000420092000002B38067B5302000420102000002E0D067B5302000420192000003302172A02176FAE0100060A062C40067B53020004200C2000002E022B062B2D2EE02BC4067B5302000420182000002E022B062B182CCD2BA2067B53020004201420000033022B052B050A2B8B172A162A13300500731A00006400001173900100060A060238251A0000067B2E0200046F9C01000638FE190000142A0338D8190000037B370200042C2D738902000A25067B2E0200047D8A02000A0C037B37020004086F8B02000A087B8C02000A2C07087B8D02000A2A067B2E0200046F9C0100067B530200040D0920C02100003DF70100000920C02000003DD101000009200120000059451C0000008E110000870C00005919000059190000591900005919000059190000A10E0000D10A0000AA0D0000C91000005E0C0000DD0D0000D10A0000780E0000D10A00005919000059190000E20A00006C1100005919000059190000390D0000200B0000B00C0000960B00002F1100005C1700000920702000005945510000008F0200008F0200008F0200008F0200008F0200008F0200008F0200008F0200008F0200008F0200008F0200008F0200008F0200008F0200008F0200008F020000DD0800001D0800007E0200007E0200007E0200000B05000077040000510900009B040000BA0400002F0400002F080000091800001D04000060080000850300008904000070090000D9040000B50200000C040000FE0700004108000070090000700900007009000070090000700900007009000070090000DA030000700900007009000070090000900500007009000070090000700900007009000070090000D9070000B4070000670500007B050000A0020000700900000918000009180000091800000918000070090000700900007009000032090000700900007009000070090000700900007009000097030000EF0800007009000070090000700900007009000038041800000920B92100003BCE1000000920C02100003B2D12000038E91700000920232200003D3C0100000920C22100003B941000000920DC210000594548000000A9100000A9100000BE100000BE100000BE1000009410000094100000071000001B1000002F10000057100000431000006B1000006B1000007F1000007F1000007F1000007F100000A7160000A7160000680F00000D110000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000A7160000540F0000540F0000540F0000540F0000540F0000540F0000540F0000540F0000540F0000540F0000540F0000A7160000A7160000A7160000A7160000A7160000D3100000D3100000D3100000D3100000D3100000D3100000A7160000A7160000FA100000FA10000038A21600000920CB320000594515000000D2140000D2140000421600004216000042160000051500002D150000411500000515000042160000A600000094000000A600000042160000A60000004216000042160000A6000000A600000042160000561400000920ED3200003BD71200000920F932000059451E00000024120000560D0000D109000006100000B6130000B6130000B3150000B3150000B3150000C71400005414000065140000B31500008A140000B31500004C100000B3150000B3150000F5110000F5110000B3150000B3150000B3150000DA1400001B0E00003C13000005140000B3150000B3150000A212000038AE150000067B2E0200040428880100060B38B7150000067B2E02000428870100060B38A6150000067B2E02000428870100060B3895150000067B2E02000428870100060B3884150000067B2E02000403041F0928720100060B386F150000067B2E0200046FAD010006130511052C5511057B5302000420D6320000334711057B5802000472152B0070280600000A2C34067B2E0200046FAA010006067B2E0200046F9C01000620033300007D53020004067B2E02000403040528710100060B380915000011052C5511057B5302000420D6320000334711057B58020004721D2B0070280600000A2C34067B2E0200046FAA010006067B2E0200046F9C01000620043300007D53020004067B2E02000403040528710100060B38B0140000067B2E02000428810100060B389F140000067B2E0200040328800100060B388D140000067B2E02000420082000006FA60100062C12067B2E02000403287B0100060B3869140000067B2E0200040328770100060B067B2E02000407288201000626384A140000067B2E02000428870100060B07067B2E02000403161428860100067D2A020004067B2E020004072882010006263818140000067B2E02000428810100060B3807140000067B2E02000403287B0100060B38F5130000067B2E0200040328770100060B067B2E020004208720000006FE0691010006738E02000A6FA5010006067B2E0200040307287C010006067B2E0200040728820100062638AD130000067B2E0200040328770100060B389B130000067B2E0200040328770100060B3889130000067B2E0200040328800100060B067B2E02000407288201000626386A130000067B2E0200040328800100060B067B2E02000407288201000626384B130000067B2E02000428870100060B07067B2E02000403141628710100067D2A020004067B2E020004072882010006263819130000067B2E0200040328800100060B067B2E02000420862000006FA70100062C31067B2E02000420852000006FA60100062C0B067B2E0200046FAA01000607067B2E02000403141628710100067D2A02000407057D2502000438BD120000067B2E02000403041828740100060B38A9120000067B2E02000403041F0928720100060B3894120000067B2E02000428870100060B06FE0692010006738F02000A28B0010006130607067B2E0200041106161428860100067D2A020004067B2E020004201A2000006FA7010006398C000000067B2E020004176FAE010006397B000000067B2E020004176FAE0100067B5302000420082000002E30067B2E020004176FAE0100067B53020004200F2000002E18067B2E020004176FAE0100067B53020004200D2000003333067B2E0200046F9C01000620F12100007D5302000407067B2E02000403077B2A0200041628710100067D2A02000438E8000000067B2E020004201A2000006FA701000639D3000000067B2E020004176FAE01000639C2000000067B2E020004176FAE0100067B53020004201720000040A7000000067B2E0200046F9C01000620F12100007D5302000407067B2E02000403077B2A0200041628710100067D2A020004077B2A0200047B2A0200047B1F020004281500002B20163300007D26020004067B2E02000403077B2A0200047B2A0200047B1F020004281500002B287D010006077B2A0200047B2A0200047B1F020004281500002B077B2A0200047B2A0200047B1F020004281500002B7B230200047B1F0200047D1F020004067B2E02000420082000006FA70100062C0F067B2E0200040307287C0100062B1F067B2E020004200F2000006FA70100062C0D067B2E0200040307287E010006067B2E020004200D2000006FA70100063982100000067B2E020004030728780100063870100000067B2E02000428870100060B07067B2E02000403161428860100067D2A020004384B100000067B2E02000428870100060B07067B2E02000403161428860100067D2A0200043826100000067B2E0200040328790100060B067B2E020004072882010006263807100000067B2E02000403287B0100060B38F50F0000067B2E0200040328760100060B38E30F0000067B2E0200040328790100060B067B2E0200040728820100062638C40F0000067B2E0200040328770100060B07735901000A7D1F0200042B19077B1F020004067B2E02000403141628710100066F5A01000A067B2E020004208F2000006FA70100062DD5067B2E02000420902000006FA70100062C1407067B2E02000403141628710100067D2A020004067B2E0200040728820100062638470F0000067B2E02000403287A0100060B38350F0000067B2E02000420082000006FA60100062C12067B2E02000403287B0100060B38110F0000067B2E0200040328770100060B067B2E0200040728820100062638F20E0000067B2E0200040328800100060B067B2E0200040728820100062638D30E0000067B2E0200040328800100060B067B2E0200040728820100062638B40E0000067B2E020004288E0100060B38A30E0000067B2E02000428840100060B38920E0000032C1C037B380200042C14067B2E02000414041828740100060B38730E0000067B2E0200040428880100060B067B2E0200040728820100062638540E0000052D11067B2E02000428840100060B38400E0000200E330000735901000A25046F5A01000A736B0100060B042C3104177D240200042B28067B2E0200046FAA010006067B2E02000403161428860100061307077B1F02000411076F5A01000A067B2E02000420182000006FA70100062DC638DE0D0000067B2E0200046F9C010006067B2E020004176FAE0100062C18067B2E020004176FAE0100067B5302000420082000002E42067B2E020004176FAE0100062C26067B2E020004176FAE0100067B530200042017200000330E067B2E02000418286E0100062D0720F12100002B0C20163300002B0520ED3200007D53020004032C34037B390200042C2C067B2E0200046F9C0100067B5302000420163300003315067B2E0200046F9C01000620F12100007D53020004067B2E02000403041628710100060B38160D0000067B2E0200046F9C010006200A2200007D53020004067B2E02000403040528710100060B38ED0C0000067B2E0200046F9C010006201D2200007D53020004067B2E02000403041628710100060B38C40C0000067B2E0200046FAD0100067B5302000420192000003349067B2E0200046FAA010006067B2E0200046F9C01000672292B00707D58020004067B2E0200046F9C01000620E22100007D53020004067B2E02000403041628710100060B38640C0000067B2E0200046F9C01000620EC2100007D53020004067B2E02000403041628710100060B383B0C0000067B2E0200046F9C010006067B2E02000416286F0100062D0720EA2100002B0520F93200007D53020004067B2E02000403041628710100060B38FD0B0000067B2E0200046F9C010006042C0720232200002B05201F2200007D53020004067B2E02000403041628710100060B38CA0B0000067B2E0200046F9C010006042C0720DD2100002B05201B2200007D53020004067B2E02000403041628710100060B38970B0000052C30067B2E0200046F9C010006067B2E02000420D73200006FA60100062D0720113300002B0520103300007D530200042B54067B2E0200046F9C010006067B2E02000420D73200006FA60100062C26067B2E020004176FAE0100062C18067B2E020004176FAE0100067B53020004200E2000002E0720DF3200002B0520133300007D53020004067B2E02000403041628710100060B38FC0A0000067B2E0200046F9C010006200C3300007D53020004067B2E02000403041628710100060B38D30A0000043A69010000067B2E0200046F9C010006736C010006FE0B0200067B2E0200040304287C010006067B2E0200046F9C0100062D17047B230200040B0720E43200007D2602000438880A0000067B2E0200046F9C0100067B5302000420C22100003314067B2E02000403041628710100060B385D0A0000067B2E0200046F9C0100067B5302000420D63200003BA7000000067B2E0200046F9C0100067B5302000420082000003B8D000000067B2E0200046F9C0100067B5302000420D53200003B73000000067B2E0200046F9C0100067B5302000420D73200002E5C067B2E0200046F9C0100067B5302000420DC3200002E45067B2E0200046F9C0100067B5302000420DD3200002E2E067B2E0200046F9C0100067B5302000420D93200002E17067B2E0200046F9C0100067B5302000420822000003321040B0720C02100007D26020004067B2E020004031407288C0100060B387B090000047B230200040B0720E43200007D260200043864090000067B2E0200046F9C010006047B2602000420D63200003B80000000047B2602000420E6320000331A047B200200047B2602000420D63200003308047B2A0200042C59047B2602000420E63200003345047B2A0200042C3D047B2A0200047B1F0200042C30047B2A0200047B1F0200046FCC00000A17331D047B2A0200047B1F020004166FCB00000A7B2602000420F93200002E0720ED3200002B0520123300007D53020004067B2E02000403041628710100060B38AB080000067B2E0200046F9C010006042C0720DC2100002B05201A2200007D53020004067B2E02000403041628710100060B3878080000067B2E0200046F9C010006042C0720222200002B05201E2200007D53020004067B2E02000403041628710100060B3845080000067B2E0200046F9C010006067B2E02000428700100062D0720B92100002B0520FC3200007D53020004067B2E02000403041628710100060B3808080000052D0D067B2E02000428840100062B0C067B2E0200040428830100060B38E6070000067B2E0200046F9C010006052D07201C2200002B0520023300007D53020004067B2E02000403041628710100060B38B3070000067B2E0200046F9C010006736C0100060B067B2E0200046F9C010006200D2000007D53020004067B2E02000403072878010006067B2E02000407288201000626386E070000067B2E02000403041728740100060B385A070000067B2E02000403041828740100060B3846070000067B2E0200046F9C010006736C01000625187D290200041308067B2E0200046FA3010006067B2E020004178D41000002251620132000009E28AF010006161428860100061309067B2E020004201320000006FE0693010006738E02000A6FA801000626067B2E020004031109182874010006130A110804110A28750100060B04177D2402000438BB060000067B2E02000403041928720100060B38A7060000067B2E02000403041A28720100060B3893060000067B2E02000403041B28720100060B387F060000067B2E02000403041C28720100060B386B060000067B2E02000403041D28720100060B3857060000067B2E02000403041E28720100060B3843060000067B2E02000403041F0928720100060B382E060000067B2E02000403041F0A28720100060B3819060000067B2E02000403041F0B28720100060B3804060000067B2E02000403041F0C28720100060B38EF050000067B2E0200040304288B0100060B38DC050000067B2E020004031404288C0100060B38C8050000067B2E020004030428890100060B38B5050000067B2E020004030428890100060B077B2A0200047B1F020004281500002B067B2E02000428870100067D200200043882050000067B2E020004176FAE0100062C7C067B2E020004176FAE0100067B5302000420082000003364067B2E0200046F9C01000620093300007D53020004067B2E020004030428890100060B077B2A0200047B1F020004281500002B067B2E02000428870100067D20020004067B2E02000403077B2A0200047B1F020004281500002B287F01000638F8040000067B2E020004176FAE01000639DB000000067B2E020004176FAE0100067B53020004201720000040C0000000067B2E02000418286F01000639AF000000067B2E0200046F9C010006200A3300007D53020004067B2E020004030428890100060B077B2A0200047B1F020004281500002B067B2E02000428870100067D20020004067B2E02000403077B2A0200047B1F020004281500002B287D010006077B2A0200047B1F020004281500002B077B2A0200047B1F020004281500002B7B230200047B1F0200047D1F020004067B2E02000403077B2A0200047B1F020004281500002B287F010006380C040000067B2E020004030428890100060B077B2A0200047B1F020004281500002B067B2E02000428870100067D2002000438D9030000067B2E020004030428890100060B067B2E02000403077B2A0200047B1F020004281500002B287E01000638AA030000067B2E020004030428890100060B067B2E02000403077B2A0200047B1F020004281500002B287D010006387B030000067B2E020004030428890100060B077B2A0200047B1F020004281500002B067B2E02000428870100067D20020004067B2E02000403077B2A0200047B1F020004281500002B287F010006382C030000067B2E020004030428890100060B077B2A0200047B1F020004281500002B067B2E02000428870100067D20020004067B2E02000403077B2A0200047B1F020004281500002B287D010006077B2A0200047B1F020004281500002B077B2A0200047B1F020004281500002B7B230200047B1F0200047D1F020004067B2E02000403077B2A0200047B1F020004281500002B287F0100063892020000040B071304077B2602000420E63200003322047B200200047B2602000420D63200003310047B2A0200042D08077B2002000413041104067B2E0200046F9C0100067B530200047D26020004067B2E0200046F9C01000620082000007D5302000404177D24020004067B2E020004031104287C0100063818020000067B2E020004288F0100060B3807020000067B2E02000428870100060B067B2E0200046FA9010006067B2E0200046F9C010006200D2000007D53020004067B2E0200040307287801000638C9010000067B2E02000428870100060B067B2E0200046FA9010006067B2E0200046F9C010006200D2000007D53020004067B2E02000403072878010006388B010000067B2E02000428870100060B387A010000067B2E02000428810100060B3869010000067B2E02000428810100060B3858010000067B2E02000403041728740100060B3844010000067B2E02000403041828740100060B3830010000067B2E02000403041C28720100060B381C010000067B2E02000403041F0D28740100060B3807010000067B2E0200040304288B0100060B38F4000000067B2E0200046F9C0100067B54020004130B067B2E0200046F9C0100067B56020004130C067B2E0200046F9C0100067B58020004130D067B2E0200046FAA010006110D067B2E0200046F9C0100067B58020004284200000A130D067B2E0200046FAA010006110D067B2E0200046F9C0100067B58020004284200000A130D2B0A3958E6FFFF381EE6FFFF067B2E0200046F9C0100067B52020004130E2B0A3AFFE5FFFF38F8E5FFFF067B2E0200046FAA0100062B0A7D2E02000438D1E5FFFF2010330000110D110B110C110E73D3010006736C0100060B2B1B722F2B0070067B2E0200046F9C01000628CE010006730700000A7A072A00133005002A00000065000011026F9C010006736C01000625057D29020004026FA30100060203161428860100060A040628730100062A0000133003005E0100006600001103384C01000072972B0070027B2C02000428CE010006730700000A7A043818010000724A2C0070027B2C02000428CE010006730700000A7A020338E800000003177D24020004047B2602000420E03200002E3320E0320000736A01000625027D2B02000425027D220200040A02067D2102000402047D2A02000404027D2802000438D6000000040A02067D21020004067B220200040B06027D22020004027B29020004077B29020004323202077D2802000402077B270200047D2A02000407027D27020004027B2A020004027D280200043886000000077B280200040B072C0E027B29020004077B2902000432E8072D2102067B2B0200047D2A02000406027D2B020004027B2A020004027D280200042B4A02077D2802000402077B270200047D2A0200042B0A7D27020004380EFFFFFF07027D270200042B0A3AF9FEFFFF38DEFEFFFF027B2A020004027D280200042B0A3AC5FEFFFF38AAFEFFFF062A0000133005002A00000065000011026F9C010006736C01000625057D29020004026FA30100060203161428860100060A040628750100062A000013300300570100006600001103384501000072972B0070027B2C02000428CE010006730700000A7A043811010000724A2C0070027B2C02000428CE010006730700000A7A020338E100000003177D24020004047B2602000420E03200002E2C20E0320000736A01000625027D2B02000425027D220200040A02067D2102000402047D2A02000438D6000000040A02067D21020004067B220200040B06027D22020004027B29020004077B29020004313202077D2802000402077B270200047D2A02000407027D27020004027B2A020004027D280200043886000000077B280200040B077B280200042C0E027B29020004077B2902000431E3077B280200040B072D1502067B2B0200047D2A02000406027D2B0200042B4A02077D2802000402077B270200047D2A0200042B0A7D270200043815FFFFFF07027D270200042B0A3A00FFFFFF38E5FEFFFF027B2A020004027D280200042B0A3ACCFEFFFF38B1FEFFFF062A0013300500D70100006700001173940100060A060238BE010000178D41000002251620132000009E28AF01000638910100007E32020004252D1B385A0100007E31020004FE0698010006738F02000A25803202000428B00100060C067B2F02000403287B0100060D09735901000A7D1F020004067B2F020004200D2000006FA4010006161304735901000A1305161306067B2F020004208C2000006FA70100062C4A067B2F0200040728790100061307067B2F0200042013200000067B30020004252D18260606FE0695010006738E02000A2513087D3002000411086FA5010006110511076F5A01000A2BA4067B2F020004208D2000006FA70100062C5011042C1B72FF2C0070067B2F0200046F9C01000628CE010006730700000A7A171306171304067B2F02000428870100061309067B2F02000420132000006FA4010006110511096F5A01000A3842FFFFFF11056FCC00000A16315920E2320000067B2F020004082885010006736B010006130A11062C0D09110A7D2A0200043805FFFFFF20E23200001105736B01000625110A7D20020004130B2B062638A0FEFFFF097B1F020004110B6F5A01000A38D5FEFFFF067B2F020004200E2000006FA40100062B060B3869FEFFFF067B2F020004092882010006262B0A7D2F0200043838FEFFFF092A00133003002200000065000011026F9C010006736C0100060A022B0A02030628780100062B076FA30100062BEF062A000013300800660000000000000002200D2000006FA70100062B0D02200D2000006FA40100062B042C252BEF0420E132000002142885010006736B0100067D2002000402200E2000006FA40100062A0420E1320000735901000A250203171428860100066F5A01000A736B0100067D200200042A000086026F9C010006736C010006026FA3010006250203161428860100067D200200042A0000133008008800000068000011026F9C010006736C0100060A022B340220082000006FA70100062B0D0220082000006FA40100062B042C502BEF178D41000002251620092000009E28AF0100060B2B076FA30100062BC50620E4320000735901000A250207161428860100066F5A01000A736B0100067D230200040220092000006FA40100062B0B72A22D0070730700000A7A062A133003002200000065000011026F9C010006736C0100060A022B0A020306287C0100062B076FA30100062BEF062A00001330040057000000000000000220082000006FA70100062B230420E4320000735901000A736B0100067D230200042A0220082000006FA40100062B042DF12BD90420E432000002142885010006736B0100067D230200040220092000006FA40100062A0013300600C8000000690000110220172000002B36178D41000002251620192000009E28AF0100062B1106177D39020004020628850100060B2B030A2BEC076FCC00000A1731022B092B1D6FA40100062BC372712E0070047B2C02000428CE010006730700000A7A04076FCC00000A2C4407166FCB00000A7B1F0200042D1E200F330000735901000A2507166FCB00000A6F5A01000A736B0100062B27200F33000007166FCB00000A7B1F020004736B0100062B0F200F330000735901000A736B0100067D230200040220192000006FA40100062A13300600A70000006A00001102200F2000002B15021428850100060A066FCC00000A1731022B092B1D6FA40100062BE472712E0070047B2C02000428CE010006730700000A7A04066FCC00000A2C4406166FCB00000A7B1F0200042D1E20E3320000735901000A2506166FCB00000A6F5A01000A736B0100062B2720E332000006166FCB00000A7B1F020004736B0100062B0F20E3320000735901000A736B0100067D230200040220102000006FA40100062A0013300600B20000006A0000110220082000002B200273B101000625177D3802000428850100060A066FCC00000A1731022B092B1D6FA40100062BD972712E0070047B2C02000428CE010006730700000A7A04066FCC00000A2C4406166FCB00000A7B1F0200042D1E200F330000735901000A2506166FCB00000A6F5A01000A736B0100062B27200F33000006166FCB00000A7B1F020004736B0100062B0F200F330000735901000A736B0100067D230200040220092000006FA40100062A00001330030018000000650000110203287B0100062B0A02030628780100062B030A2BF3062A133002001A00000065000011026F9C010006736C0100060A026FAA010006020628820100062A00006A0220142000002B0903177D250200042B076FA40100062BF0032A00C2032B2703177D240200042B0F026F9C010006736C010006FE0B0100026FA301000603177D250200042B042CE02BD5032A0000000A142A00133004002D0000006B000011735901000A0A0203171428860100062B17072B0906076F5A01000A2B042C022BF3072D022B052BDE0B2BE6062A0000001330040090000000650000110538820000000203050428710100063865000000052B52062C0706FE0B03002B34062C1E067B240200042D1672DF2E0070067B2C02000428CE010006730700000A7A052C10057B250200042D08026F9E0100062DAB026F9E01000616FE01045F2C2C052C022B062B252DB62BAA057B250200042D022B082B15FE0B03002B9505177D250200042B060A3878FFFFFF052A4A026F9C010006736C010006026FA30100062A00133002003100000065000011026F9C010006736C0100060A022B19032B0906037D270200042B042C122BF303177D240200042B076FA30100062BE0062A000000133002001A00000065000011026F9C010006736C0100060A026FA30100060406288A0100062A000013300600B4000000650000110238A200000072642F0070037B2C02000428CE010006730700000A7A027B2602000420E6320000386F000000022B60067B2A0200042D150620E2320000735901000A736B0100067D2A020004067B2A0200047B1F020004036F5A01000A2B3320E6320000736A01000625027D200200042520E2320000735901000A25036F5A01000A736B0100067D2A0200040A2B030A2B9D03067D210200042B0433C22B8D02177D240200042B0A3A6FFFFFFF3854FFFFFF062A133004002B00000066000011026F9C010006736C0100060A022B0C0203141628710100060B2B076FA30100062BED040607288D0100062A001330040013000000650000110203141628710100060A040506288D0100062A0013300600D3000000650000110238C10000007215300070027B2C02000428CE010006730700000A7A04389200000072D4300070037B2C02000428CE010006730700000A7A047B2602000420E63200002B62040A067B270200042D150620E2320000735901000A736B0100067D27020004067B270200047B1F020004036F5A01000A2B5A20E6320000736A01000625047D200200042520E2320000735901000A25036F5A01000A736B0100067D270200040A2B0433CE2B9A03067D210200042B0A3A7FFFFFFF3864FFFFFF03177D240200042B0A3950FFFFFF3835FFFFFF062A00867287310070026F9C010006026F9C0100067B5802000428CF010006730700000A7A00005A72F3310070026F9C01000628CE010006730700000A7A001E02280E00000A2A6E7261320070027B2E0200046F9C01000628CE010006730700000A2A13300200D6000000000000000320082000006FA701000638A000000003200F2000006FA7010006387000000003200D2000006FA70100062B4003201A2000006FA70100063995000000027B2E020004176FAE0100063984000000027B2E020004176FAE0100067B5302000420082000002E022B0C38630000003A620000002BB9027B2E020004176FAE0100067B53020004200F2000002E022B062B402D422B8C027B2E020004176FAE0100067B53020004200D2000002E022B092B202D223859FFFFFF027B2E020004176FAE0100067B530200042017200000FE012A172A162A172A00006E7224330070027B2E0200046F9C01000628CE010006730700000A2A1E02280E00000A2A6E72C1330070027B2F0200046F9C01000628CE010006730700000A2A2E739701000680310200042A1E02280E00000A2ACA03208C2000006FA70100062B1103208D2000006FA70100062C022B062B102D102BEB0320132000006FA60100062A162A172A006A02280E00000A0203733A01000A28A00100060215289B0100062A001E027B330200042A2202037D330200042A0000001E027B340200042A2202037D340200042A0000002A02289C01000614FE032A001E027B350200042A2202037D350200042A0000001E027B360200042A2202037D360200042A0000001E0228AA0100062A42020328A70100062C060228AA0100062A0000005E020328A70100062D07046F9002000A7A0228AA0100062A133002001E000000630000110228AD0100062B07062C022B052B0D0A2BF6067B5302000403FE012A162A00006602289C0100062C0F02289C0100067B5302000403FE012A162A00004A020328A70100062D07046F9002000A7A172A001330030032000000170000110202289A01000618592B1602021628AE010006289D01000602289A0100060A2B07289B0100062BE302061758289B0100062A000013300300240000001700001102021628AE0100062B0902289A0100060A2B07289D0100062BF002061758289B0100062A320273990100066FAC0100062A000000133007007F0000006A0000110202289F01000628BB010006284D00002B2B20022B0A021428850100060A2B0728AA0100062BEF02289C0100062C022B092B1D28A20100062BD9726634007002289C01000628CE010006730700000A7A20DE32000006736B0100062520DE3200001402289F0100061602289F0100066F9E00000A73D30100067D2C0200042A0022021628AE0100062A00000013300200290000001700001102289A010006175803582B0F060228A10100068E692F022B052B0C0A2BEE0228A1010006069A2A142A00000013300400DE0000006C00001173B20100060A06027D3A02000473B10100060B067B3A0200048E691738B100000007257B3702000406FE06B3010006739102000A289202000A747D00001B7D370200043894000000067B3A0200048E69182B3307257B3702000406FE06B4010006739102000A289202000A747D00001B7D370200042B65067B3A0200048E691933022B062B2833EF2BC907257B3702000406FE06B5010006739102000A289202000A747D00001B7D370200042B2E07257B3702000406FE06B6010006739102000A289202000A747D00001B7D370200042B0A4071FFFFFF3845FFFFFF072A000013300500350000006D00001173B90100060A06027D3C02000473B101000625257B3702000406FE06BA010006739102000A289202000A747D00001B7D370200042A0000001E02280E00000A2A1E02280E00000A2AD2037B8A02000A027B3A02000416946FA70100062B1303037B8A02000A28840100067D8D02000A2B042C092BE903177D8C02000A2A000000133003004900000000000000037B8A02000A027B3A02000416946FA70100062B28037B8A02000A027B3A02000417946FA70100062C1E03037B8A02000A28840100067D8D02000A2B042DEB2BD403177D8C02000A2A000000133003006600000000000000037B8A02000A027B3A02000416946FA70100062B45037B8A02000A027B3A02000417946FA70100062B19037B8A02000A027B3A02000418946FA70100062C022B062B222D022BE303037B8A02000A28840100067D8D02000A2B042DEB2BB703177D8C02000A2A000013300300540000006E00001173B70100060A06032B36027B3A02000406FE06B8010006739302000A284E00002B2C30067B3B020004067B3B0200047B8A02000A28840100067D8D02000A2B077D3B0200042BC3067B3B020004177D8C02000A2A1E02280E00000A2A4A027B3B0200047B8A02000A036FA70100062A001E02280E00000A2ACA027B3C020004037B8A02000A6F9402000A2B1303037B8A02000A28840100067D8D02000A2B042C092BE903177D8C02000A2A0013300300A80100006F000011739502000A0A160B3883010000020728CD010006388701000017386B010000087B5302000438500100001104205E21000030231104201C2000003B0F0100001104205D2100002E541104205E2100002E5F3814010000110420DA3200002E36110420EE3200005945060000004000000052000000640000007400000084000000A7000000110420143300003BCD00000038D5000000160D38CE00000002087B5602000428BF0100060C160D38BA00000002087B5602000428BE0100060C160D38A600000002087B5602000428CA0100060C389400000002087B5602000428C90100060C388200000002087B560200041628C60100060C2B7202087B560200041628C50100060C2B6202087B5602000428C801000613050611056F9602000A1105166F9702000A0C160D2B3F02087B5602000428C701000613060611066F9602000A1106166F9702000A0C160D2B1C02087B5602000428C00100060C2B0D02087B5602000428CC0100060C087B5202000417580B092C022B092B16130438A9FEFFFF06086F9802000A2B060D388FFEFFFF07026F9E00000A32022B0B386DFEFFFF0C3873FEFFFF062A1E02280E00000A2A133004004B0A000000000000739902000A25720F35007020842000006F9A02000A25721B35007020822000006F9A02000A25722535007020832000006F9A02000A25720F00007020702000006F9A02000A25722F00007020712000006F9A02000A257219000070207D2000006F9A02000A257295000070207B2000006F9A02000A25728700007020792000006F9A02000A25727B000070207A2000006F9A02000A25725300007020752000006F9A02000A25726500007020772000006F9A02000A257201000070207F2000006F9A02000A25722300007020722000006F9A02000A25723900007020732000006F9A02000A2572A5000070207C2000006F9A02000A25725B00007020762000006F9A02000A25726F00007020782000006F9A02000A25724500007020742000006F9A02000A25722F350070207E2000006F9A02000A25723935007020AC2000006F9A02000A25723F35007020932000006F9A02000A25724B350070208C2000006F9A02000A257255350070208F2000006F9A02000A25726135007020BB2000006F9A02000A257271350070209E2000006F9A02000A25727D35007020942000006F9A02000A25728F350070208D2000006F9A02000A25729F350070208A2000006F9A02000A2572A535007020862000006F9A02000A2572AF35007020902000006F9A02000A2572BF35007020882000006F9A02000A2572C735007020892000006F9A02000A2572D735007020922000006F9A02000A2572E135007020852000006F9A02000A2572E735007020AA2000006F9A02000A2572ED35007020AB2000006F9A02000A2572F335007020A22000006F9A02000A25724518007020A92000006F9A02000A2572FB35007020A82000006F9A02000A25720336007020952000006F9A02000A25721136007020812000006F9A02000A25721F360070208B2000006F9A02000A25722D36007020962000006F9A02000A257239360070208E2000006F9A02000A25724136007020802000006F9A02000A25724F36007020BC2000006F9A02000A25726336007020B52000006F9A02000A25726F36007020872000006F9A02000A25727B36007020A42000006F9A02000A25728D36007020B32000006F9A02000A25729736007020B62000006F9A02000A2572A336007020BA2000006F9A02000A2572B300007020B92000006F9A02000A2572B536007020A62000006F9A02000A2572C136007020BF2000006F9A02000A2572D336007020A72000006F9A02000A2572E1360070209F2000006F9A02000A2572ED36007020C02000006F9A02000A2572FF36007020B82000006F9A02000A25721337007020992000006F9A02000A25722537007020912000006F9A02000A25722F37007020B42000006F9A02000A25724337007020BE2000006F9A02000A25725537007020A32000006F9A02000A25726737007020AD2000006F9A02000A25727537007020982000006F9A02000A257285370070209A2000006F9A02000A25729937007020972000006F9A02000A2572A7370070209C2000006F9A02000A2572B9370070209D2000006F9A02000A2572C737007020A02000006F9A02000A2572DD370070209B2000006F9A02000A2572EB37007020B72000006F9A02000A2572F937007020B22000006F9A02000A25720338007020BD2000006F9A02000A25721138007020A52000006F9A02000A25722138007020A12000006F9A02000A25723338007020012000006F9A02000A25723738007020022000006F9A02000A25723B38007020082000006F9A02000A25722A05007020092000006F9A02000A2572F0070070200A2000006F9A02000A2572281E0070200B2000006F9A02000A25723F380070200C2000006F9A02000A2572DE070070200D2000006F9A02000A2572BD170070200E2000006F9A02000A257243380070200F2000006F9A02000A25724738007020102000006F9A02000A25724B38007020132000006F9A02000A2572AF25007020142000006F9A02000A25724F38007020172000006F9A02000A2572EA04007020182000006F9A02000A25725338007020192000006F9A02000A2572241E0070201A2000006F9A02000A257257380070201B2000006F9A02000A25725B38007020FA3200006F9A02000A25726138007020FB3200006F9A02000A257267380070200B2200006F9A02000A25726D380070200C2200006F9A02000A257273380070200D2200006F9A02000A257279380070200E2200006F9A02000A25727F380070200F2200006F9A02000A25728538007020102200006F9A02000A25728B38007020112200006F9A02000A25729138007020122200006F9A02000A25729738007020132200006F9A02000A25729F38007020142200006F9A02000A2572A738007020F02100006F9A02000A2572AD38007020C22100006F9A02000A2572B338007020E32100006F9A02000A2572B938007020E42100006F9A02000A2572BF38007020E52100006F9A02000A2572C338007020E72100006F9A02000A2572C738007020E62100006F9A02000A2572CB38007020E82100006F9A02000A2572D138007020E92100006F9A02000A2572D738007020EB2100006F9A02000A2572DD38007020ED2100006F9A02000A2572E338007020E12100006F9A02000A2572E938007020DE2100006F9A02000A2572ED38007020DF2100006F9A02000A2572F138007020E02100006F9A02000A25720D25007020083300006F9A02000A2572F5380070200B3300006F9A02000A25723E07007020EE3200006F9A02000A25723A07007020EF3200006F9A02000A2572FB38007020F03200006F9A02000A25720139007020F13200006F9A02000A25720739007020F23200006F9A02000A25720D39007020F33200006F9A02000A257213390070205D2100006F9A02000A257219390070205E2100006F9A02000A25721F390070201C2000006F9A02000A25722339007020FD3200006F9A02000A25722939007020FE3200006F9A02000A25722F39007020D13200006F9A02000A25723539007020D13200006F9A02000A25723D39007020D23200006F9A02000A25724339007020D33200006F9A02000A25724B39007020E92100006F9A02000A25725139007020063300006F9A02000A25725739007020F23200006F9A02000A25725F39007020F33200006F9A02000A25726739007020F23200006F9A02000A25726F39007020F33200006F9A02000A25727739007020143300006F9A02000A25727D39007020E73200006F9A02000A25728739007020E73200006F9A02000A25729139007020E83200006F9A02000A25729B39007020E83200006F9A02000A2572A539007020E93200006F9A02000A2572B139007020E93200006F9A02000A2572BD39007020E93200006F9A02000A2572C939007020E93200006F9A02000A2572D539007020E93200006F9A02000A2572E139007020E93200006F9A02000A2572ED39007020E93200006F9A02000A2572F939007020E93200006F9A02000A2572053A007020EA3200006F9A02000A25720F3A007020EA3200006F9A02000A2572193A007020EB3200006F9A02000A2572233A007020EB3200006F9A02000A25722D3A007020EC3200006F9A02000A2572373A007020EC3200006F9A02000A803D0200042A0013300500A300000070000011140A737B00000A0B031758026F9E00000A387300000002036F9B02000A1F2F2B53020317586F9B02000A1F2A2B350318580C2B3302086F9B02000A0D0817580C091F2A331408026F9E00000A2F0B02086F9B02000A1F2F2E1F07096F9C02000A262B04333C2BC708026F9E00000A32022B062BC0332B2BA9026F9E00000A175908289F00000A0C2B042F162B89205E210000076F3A00000A02030873D30100060A062A0013300500A300000070000011140A737B00000A0B031758026F9E00000A387300000002036F9B02000A1F2F2B53020317586F9B02000A1F2F2B350318580C2B3302086F9B02000A0D0817580C091F0D331408026F9E00000A2F0B02086F9B02000A1F0A2E1F07096F9C02000A262B04333C2BC708026F9E00000A32022B062BC0332B2BA9026F9E00000A175908289F00000A0C2B042F162B89205D210000076F3A00000A02030873D30100060A062A0013300500A800000070000011140A737B00000A0B031758026F9E00000A388900000002036F9B02000A1F23386A000000020317586F9B02000A1F302B53020317586F9B02000A1F393D6500000007020317586F9B02000A6F9C02000A260318580C2B3B02086F9B02000A0D091F23331620CB320000076F3A00000A02030873D30100060A2B2C07096F9C02000A262B0432202BA90817580C2B0433162B9208026F9E00000A32022B092BB82F053870FFFFFF062A133006007101000071000011140A737B00000A0B14385B010000031758026F9E00000A38F900000002036F9B02000A1F3038DC000000020317586F9B02000A1F782E10020317586F9B02000A1F58402801000002036F9B02000A8C05000001020317586F9B02000A8C05000001283E01000A0D0318581304161305161306387E0000000211046F9B02000A130711071F30320611071F39311811071F61320611071F66310C11071F41321811071F46301211062D0E1713050711076F9C02000A262B3811071F61320611071F7A310C11071F41321E11071F5A301811062D09737B00000A0C1713060811076F9C02000A262B081104175913042B1E1104175813041104026F9E00000A32022B0C3871FFFFFF3367381DFFFFFF11052C022B092B5A2F583800FFFFFF20D5320000076F3A00000A0203110473D301000625097D5502000425082D0720153300002B1F7E3D02000472413A0070086F3A00000A72BD170070284000000A6F9D02000A7D570200040A2B060C389FFEFFFF062A000000133005005201000072000011140A737B00000A0B03381E0100001638FE00000016130438D100000002086F9B02000A38D900000011051F61320611051F7A311511051F41320611051F5A31091105289E02000A2C111713040711056F9C02000A26388F00000011051F5C3335020817586F9B02000A1F753328092D0C170D07161F406F9F02000A261713040702081B6FA000000A28A002000A6F7D00000A262B5411051F30320B11051F39FE0216FE012B011611045F2C0B0711056F9C02000A262B3211051F403315076F9E00000A2D0D170D0711056F9C02000A262B1711051F5F330B0711056F9C02000A262B060817590C2B100817580C08026F9E00000A3F23FFFFFF11042C022B092B4F13053820FFFFFF076F3A00000A13062B060D38FCFEFFFF7E3D020004110612076FA102000A2D022B082B170C38DCFEFFFF20D6320000110602030873D30100062B0C1107110602030873D30100060A062A000013300600C701000073000011140A737B00000A0B1438B1010000033859010000163841010000161305161306161307381F01000002096F9B02000A130811081F30321B11081F39301511072D111713060711086F9C02000A2638F100000011081F2E334211042D3E11052D3A11072D36091758026F9E00000A2F2B020917586F9B02000A1F30321E020917586F9B02000A1F3930111713040711086F9C02000A2638A900000011081F652E0611081F45336711052D6311072D5F091758026F9E00000A2F54020917586F9B02000A1F2B2E27020917586F9B02000A1F2D2E1A020917586F9B02000A1F30322D020917586F9B02000A1F3930201713050711086F9C02000A260917580D0702096F9B02000A6F9C02000A262B3611081F61320611081F7A310C11081F41321E11081F5A301811072D09737B00000A0C1713070811086F9C02000A262B060917590D2B100917580D09026F9E00000A3FD5FEFFFF11062C022B092B6A130438B8FEFFFF11041105602D022B082B0D0D38A1FEFFFF20D73200002B0520DC320000076F3A00000A02030973D301000625082D0720153300002B1F7E3D02000472413A0070086F3A00000A72BD170070284000000A6F9D02000A7D570200040A2B060C3849FEFFFF062A00133005005601000074000011140A737B00000A0B030C38B900000002086F9B02000A3833010000091F273814010000091F2238FB00000007096F9C02000A26389C000000091F2F334F081758026F9E00000A2F44020817586F9B02000A1F2F2E0D020817586F9B02000A1F2A332A076F9E00000A2D1C07096F9C02000A260817580C0702086F9B02000A6F9C02000A262B4E0817590C2B48091F213205091F2F311E091F3A3205091F403114091F5B3205091F60310A091F7B3213091F7E300E07096F9C02000A260817580C2B060817590C2B0C08026F9E00000A3F3BFFFFFF026F9E00000A175908289F00000A0C2B4B076F3A00000A13047E3D020004076F3A00000A12056FA102000A2C0F1105110402030873D30100060A2B2007076F9E00000A1759176FA202000A260817590C2B0A400DFFFFFF38FBFEFFFF062D022B0C2B1D3BEFFEFFFF38E2FEFFFF076F9E00000A1630022B082B970D38C7FEFFFF062A000013300500D300000070000011140A737B00000A0B0317580458026F9E00000A38A000000002036F9B02000A1F4038840000000203175804586F9B02000A1F222B6403185804580C2B6002086F9B02000A0D091F223326081758026F9E00000A2F1B020817586F9B02000A1F22330E07096F9C02000A260817580C2B23091F22331620D9320000076F3A00000A02030873D30100060A2B2607096F9C02000A260817580C2B0433362B9808026F9E00000A32022B092B9333253875FFFFFF062D022B092B192F173859FFFFFF72473A0070020328D1010006730700000A7A062A0013300500D300000070000011140A737B00000A0B0317580458026F9E00000A38A000000002036F9B02000A1F4038840000000203175804586F9B02000A1F272B6403185804580C2B6002086F9B02000A0D091F273326081758026F9E00000A2F1B020817586F9B02000A1F27330E07096F9C02000A260817580C2B23091F27331620D9320000076F3A00000A02030873D30100060A2B2607096F9C02000A260817580C2B0433362B9808026F9E00000A32022B092B9333253875FFFFFF062D022B092B192F173859FFFFFF72473A0070020328D1010006730700000A7A062A00133003008A0000007500001114387C000000031758026F9E00000A386100000002036F9B02000A2B4E020317586F9B02000A0C140D071F243311081F22330C0203175828C90100060D2B2F071F243312081F40330D020317581628C50100060D2B18071F403313081F24330E02031728C50100060D2B030B2BAF092C022B062B132F112B9B0928CB0100060A2B060A387EFFFFFF062A0000133003008A0000007500001114387C000000031758026F9E00000A386100000002036F9B02000A2B4E020317586F9B02000A0C140D071F243311081F27330C0203175828CA0100060D2B2F071F243312081F40330D020317581628C60100060D2B18071F403313081F24330E02031728C60100060D2B030B2BAF092C022B062B132F112B9B0928CB0100060A2B060A387EFFFFFF062A0000133006000102000076000011140A737B00000A0B03026F9E00000A38D201000002036F9B02000A1F2238B60100000317580C389D01000002086F9B02000A388B010000091F5C333E081758026F9E00000A2F33020817586F9B02000A1F5C2E0D020817586F9B02000A1F22331907020817586F9B02000A6F9C02000A260817580C3842010000091F5C3368081758026F9E00000A2F5D020817586F9B02000A1F753350081B58026F9E00000A322472DC3A0070020208026F9E00000A085917586FA000000A081428D2010006730700000A7A02081C6FA000000A130407110428A002000A6F7D00000A26081B580C38D5000000091F2240C5000000076F3A00000A13051105725A3B007072603B00706F3D00000A1305110572643B0070726A3B00706F3D00000A13051105726E3B007072743B00706F3D00000A1305110572783B0070727E3B00706F3D00000A1305110572823B007072883B00706F3D00000A13051105728C3B007072923B00706F3D00000A1305110572963B0070729C3B00706F3D00000A1305110572A03B007072A63B00706F3D00000A1305110572AA3B007072B03B00706F3D00000A130520D9320000110502030873D30100060A2B2B07096F9C02000A260817580C2B060D386FFEFFFF08026F9E00000A32022B0C3853FEFFFF33253843FEFFFF062D022B092B192F173827FEFFFF72473A0070020328D1010006730700000A7A062A000000133006001202000076000011140A737B00000A0B03026F9E00000A38E301000002036F9B02000A1F2738C70100000317580C38AE01000002086F9B02000A389C010000091F5C333E081758026F9E00000A2F33020817586F9B02000A1F5C2E0D020817586F9B02000A1F27331907020817586F9B02000A6F9C02000A260817580C3853010000091F5C3368081758026F9E00000A2F5D020817586F9B02000A1F753350081B58026F9E00000A322472DC3A0070020208026F9E00000A085917586FA000000A081428D2010006730700000A7A02081C6FA000000A130407110428A002000A6F7D00000A26081B580C38E6000000091F2740D6000000076F3A00000A13051105725A3B007072603B00706F3D00000A1305110572643B0070726A3B00706F3D00000A13051105726E3B007072743B00706F3D00000A1305110572783B0070727E3B00706F3D00000A1305110572823B007072883B00706F3D00000A13051105728C3B007072923B00706F3D00000A1305110572963B0070729C3B00706F3D00000A1305110572A03B007072A63B00706F3D00000A1305110572AA3B007072B03B00706F3D00000A130511056FD101000A172E0720D93200002B0520DD320000110502030873D30100060A2B2B07096F9C02000A260817580C2B060D385EFEFFFF08026F9E00000A32022B0C3842FEFFFF33253832FEFFFF062D022B092B192F173816FEFFFF72473A0070020328D1010006730700000A7A062A00001B300600610300007700001173A302000A0A737B00000A0B739502000A0C027B58020004733A01000A0D16130438DA0100000911046F9B02000A380602000011071F7B38E901000011041758096F9E00000A38C601000009110417586F9B02000A1F7B331D0711076F9C02000A261104175813040711076F9C02000A26388401000011071F7B4072010000110417581304739502000A130817130915130A1104110A330B72A22D0070730700000A7A1104130A09110428CD010006130B110B3942010000110B7B5302000420EE320000331109110B7B5602000428CA010006130B2B1D110B7B5302000420EF320000330F09110B7B5602000428C9010006130B110B7B53020004200D20000033081109175813092B88110B7B53020004200E20000040BD00000011091759130911093A6AFFFFFF0772DE0700706F7D00000A2607066FA402000A6FA502000A2611086FA602000A183177110811086FA602000A18596F9702000A7B5302000420182000002E1C110811086FA602000A18596F9702000A7B530200042013200000333F07110811086FA602000A18596F9702000A6FA702000A2607110811086FA602000A17596F9702000A6FA702000A26110811086FA602000A1859186FA802000A0772BD1700706F7D00000A260611086FA902000A2B221108110B6F9802000A110B7B520200041758130438A1FEFFFF0711076F9C02000A261104175813041104096F9E00000A32022B0F3815FEFFFF3C60FEFFFF3830FEFFFF027B5602000413052B0A404CFEFFFF380DFEFFFF027B5202000413062B07130738F3FDFFFF08207C20000072A5000070091105110673D30100066F9802000A08201A20000072241E0070091105110673D30100066F9802000A0820D632000072B43B0070091105110673D30100066F9802000A082008200000723B380070091105110673D30100066F9802000A0820D9320000076F3A00000A091105110673D30100066F9802000A066FAA02000A130C2B5F120C28AB02000A130D08201820000072EA040070091105110673D30100066F9802000A0820DF32000072DE070070091105110673D30100066F9802000A08110D6F9602000A08200E20000072BD170070091105110673D30100066F9802000A120C28AC02000A2D98DE0E120CFE168400001B6F3000000ADC082009200000722A050070071105110673D30100066F9802000A082A000000011000000200CB026C37030E0000000013300500DD00000070000011140A737B00000A0B031858026F9E00000A38BE00000002036F9B02000A1F23389C000000020317586F9B02000A1F23387F000000020318586F9B02000A1F303F97000000020318586F9B02000A1F393D8700000007020318586F9B02000A6F9C02000A260319580C2B5D02086F9B02000A0D091F233332081758026F9E00000A2F27020817586F9B02000A1F23331A0817580C20CC320000076F3A00000A02030873D30100060A2B3207096F9C02000A262B073326387AFFFFFF0817580C2B073319385DFFFFFF08026F9E00000A32022B092B962F05383BFFFFFF062A00000013300500270200007800001103026F9E00000A38EB010000142A0338D401000002066F9B02000A0B2B2806175838B301000006026F9E00000A320F20DA3200001402060673D30100062A02066F9B02000A0B071F202ED3071F0D2ECE071F0A2EC9071F092EC4071F2E333F061758026F9E00000A2F27020617586F9B02000A1F30321A020617586F9B02000A1F39300D020628C30100060C3894010000020628C40100060C3887010000071F30333F061758026F9E00000A2F27020617586F9B02000A1F782E0D020617586F9B02000A1F58330D020628C10100060C3850010000020628C30100060C3843010000071F303212071F39300D020628C30100060C382C010000071F613205071F7A3112071F413205071F5A310807289E02000A2C0D020628C20100060C3803010000071F402E08071F5F4088000000061758026F9E00000A3C6D000000020617586F9B02000A1F5F2E2C020617586F9B02000A1F61320D020617586F9B02000A1F7A3112020617586F9B02000A1F413239071F5A3034020628C20100060D071F403315092C1209097B58020004176F5F00000A7D5802000409252D0826020628C40100060C387B000000020628C40100060C386E000000071F213205071F2F3140071F3A3205071F403136071F5B320F071F6031022B082B280A3847FEFFFF071F7B32022B082B230A3826FEFFFF071F7E30022B0C2B143F12FEFFFF380BFEFFFF020628C40100060C2B1A72C23B0070021201288700000A061428D2010006730700000A7A082A00A602037B54020004036F3A00000A723A07007072581300706F3D00000A037B560200041428D20100062A00009202037B5402000404723A07007072581300706F3D00000A037B560200041428D20100062A000000A602047B54020004046F3A00000A723A07007072581300706F3D00000A047B560200040328D20100062A00003E020372EE040070041428D20100062A1330070061000000790000111F19036F9E00000A0559289F00000A2B0B0305066FA000000A0B2B030A2BF2021A8D01000001251604A22517058C0A000001A2251807723A07007072581300706F3D00000AA225190E042D0772EE0400702B070E046F0602000AA2289A00000A2A000000E2022B26020E052B1002037D5302000402057D540200042B077D520200042BE9020E047D560200042B07280E00000A2BD302047D580200042A00000072027B58020004252D1226027C53020004FE16410000026F3A00000A2A00000042534A4201000100000000000C00000076342E302E333033313900000000050070000000F4630000237E0000646400001040000023537472696E67730000000074A40000343C000023555300A8E00000100000002347554944000000B8E000000056000023426C6F62000000000000000000000002000001571DA209090E0000005AA4010016000001000000B60000004F00000058020000D4010000B4020000BB020000730100009D00000079000000080000001A0000002E00000084000000010000000400000029000000080000004E0000000000010001000000000006006800480006006F0048000600860048000600A40048000600AC0048000600B10048000600B70048000600BC0048000600C20048000600C90048000600CF0048000600D60048000600DC0048000600E30048000600EA0048000600F10048000600F90048000600000148000600050110010A0030014301060087018E010600A90148000600D60148000600EE01480006004B024301060066028E010600730248000A007C0287020A00A70287020A00B90243010600E002100106004A0310010600550310010600620348000A0069037403060084038E010600C303CF030600F10348000600380448000600670573050600860548000600920573050E00E105E7050E000606E705120016064F00120020062F06120045062F06120050065E06120087064F00120098064F001200AA064F000E00D706E7050E000F07E70506002A07480006005907480012006D07790706009B0748001200E0074F00120036084F0012004D084F001200C208CC081200E108CC081200EA08CC081200F408CC080600FD08480012000209CC0812000D09CC0812001509CC0812002109CC0812002B09CC0812003309CC0812003C09CC0812004509CC0812004E09CC0812005709CC0812006F09CC0812007909CC085700CB0900001200E2092F060600F80948001200340A5E060600C70A48000600030B480006001B0B290B0600350B290B0A00510B6D0B06008A0B6D0B0600AF0B6D0B0600BE0B48000600D10C48000A00130D870206008F0D48000600D60D48000A00020E87020A001F0E87020A005A0E87020A00700E87020A00850E87020600990E10010A00A60E87020A00B70E87020A00C20E87020A00CD0E87020A00DB0E87020A00EC0E87020600F80E040F0600370F040F0600440F48000600540F48000A00660F87020A00860F87020A009E0F87020A00C40F87020A00D90F87020A00271087020A00521087020600D612480006006A1310010A007A1387020A00881387020600B81310010600D61348000600141410010A002E1487020A00431487020600611476140A009E1487020A00C71487020A001B1529150A00381587020A00971729150A00221887020A00791887020A00AB1887020600D41810010600191A8E016B00281A00000600281B8E010600771C10010600841CCF030600B31CCF030600CF1CCF030600DB1CCF030600E81C10010600F91CCF030600121D100106004B1DCF0306005E1D100106008C1D10010600AB1DCF030600BB1D10010600DB1DCF030600EB1DCF0306001C1E241E0600621ECF030600980FCF030600BF1E8E010600141F241E0600251F48000600451FCF030600551FCF036B00CB0900006B00502100000A006E25870206008B2548000600463D48000600373E43010600573E43010600753E893EA7029C3E00000600AB3E10010600C23E10010600DF3E10010600FE3E10010600173F10010600303F100106004B3F10010600663F7A3F0600993F7A3F0600A73F10010600C43FDD3F0600F73F4301000000005B00000000000100010080011000640000000500010001000100100069017901050001000200030110006400000005000200070080011000330200000500040009000301100064000000050005001500000010000D0400000500060017000000100013040000050009001800010010002504790105000D001A0001001000A5047901050010001E008101100039054A05050014002700032110008C09000005001400350001001000A1094A05050016003800032110008C090000050019003B0001001000770A4A0505001D00400000001000D002000005002200410000001000D40200000500220043000500100064000000050029005300032110008C09000005002E00570000001000D8020000050030005B0000010000DC02000049003300620001001000780C8A0C05003700620000001000F802000005003800650080011000FC020000050056006B00030110006400000005005800A800030110003302000005005A00AA00032110008C09000005005B00AC0003011000C802000005006000B20003011000CC02000005006200B50003011000D002000005006300B80003011000D402000005006500BA0003011000D802000005006600BC0003011000DC02000005006700BE00000010009203000005006900C700800110000904000005007A00C900050010006400000005007A00D900030110003302000005008100DA00032110008C09000005008300DE0003011000C802000005008C00E80001001000E31BFB1B05008D00EA0081011000621CFB1B05009400EC00032110008C09000005009700F20001001000E21FFB1B0500A000FC00010010001020FB1B0500A000FE0001001000702281220500BD001D01032110008C0900000500C700210101001000002381220500C900240101010000202381224900CB002501010010005F2381220500D000250100001000190400000500D7002601032110008C0900000500D700370103011000640000000500E800490103011000330200000500EB00500103011000C80200000500ED00530103011000CC0200000500EF00550103011000D00200000500F000570103011000D40200000500F100590103011000D80200000500F2005B0103011000DC0200000500F3005D0103011000F80200000500F4005F0103011000FC0200000500F500610103011000920300000500F600640103011000090400000500F700660103011000190400000500F8006801000100009B26A6264900F9006A0101001000713BA62605001F026A0180011000BA08000005002E026E01030110006400000005002E029001030110003302000005002F029401032110008C09000005003102960101001000DC3CE93C05003302990100001000BE08000005003702AF01030110006400000005003A02B201030110003302000005003B02B70103011000C802000005003C02B901000010008009000005003D02BB01800110008409000005003E02BE01800110008809000005003E02CE01000010009D09000005005202D30133006400300006006400A00006003302A00031006400B700060064007001030064007B01030033027F010300C8028201230064008201030033027B010300C8027F010300CC028201210064009A0106003F047B01010033027F01010064007F0101003302A0000100C802CB010100CC027F0136009009D00316009409D4030600B109ED030600B909F5030600C709A0003600900904051600500A08051600590A12051600620A1C0506009F04A00006008D0AA0000600970A7F010600A10AA0000600AF0AF50356806400A0003300330299061100C802A1061100CC02A6063300D002A9061100D4027F013300D802AD0606006400A00006003302A6060600C802A1060600CC02A6060600D002A00036009009080816003A0C0C08010064001A08010033021A080100C8021A080606700CA606568064003E08568033023E085680C8023E080600A50C470853806400A00053803302A0005380C802A0005380CC02A0005380D002A0005380D402A0005380D802A0005380DC02A0005380F802A0005380FC02A00053809203A00053800904A00053801904A0005380BA08A0005380BE08A00053808009A00053808409A00053808809A00053809D09A00053806B0AA00053806F0AA0005380730AA0005380AB0BA0005380BA0BA0005380020CA0005380060CA00053800A0CA00053800E0CA0005380120CA0005380240CA00033006400CE1F33003302CE1F06006400602D06003302652D06006400602D36009009812D16007419852D16007D19852D16008619922D160090199C2D06006400BF2D06003302C42D06006400602D06006400C42D06003302E22D06006400A00006006400602D06006400ED2D06003302F22D03006400142E03003302A6060300C802C42D0300CC027F010300D0027F010300D402A6060300D802A6060300DC02CE1F0300F802CE1F0300FC02192E030092031E2E03000904292403001904192E0300BA08192E0300BE08602D03008009700103008409262E030064002B310300330234310300C802A0000300CC0229240300D002A6060300D40270010300D802393106006400A00006003302F22D36009009603116005A1B65311600631B813116006C1B98311600751BA33116007F1BA3311600891BAE311600931BA33116009D1BAE3106006400700106001D1C7F010600251C7F0106002205A0000600351CA0000600431C292406009F04262E0600491CC42D310064001732310033021C323100C802213236009009BA3416007F1FBF341600881FCF341600500ADF341600911FDF3416009A1FEE341600A31FF7341600AC1F05351600B51F0535030064004A350300330254350300C8027F010300CC023E080600202059350300D00270010300D4027F010300D8027F0106002A20C42D0300DC024A350300F802602D0300FC02602D03009203602D060036207F010300090463350300190463350300BA086D3506003F2076350300BE08803501008009893506005503923506004F207F0103008409973501008809973501009D09A03501006B0A990601006F0AAF350100730A80350300AB0BBD35030064007F01030033027F010300C8021E380300CC0223380300D002CE1F0300D402192E0300D80227380300DC0227380300F80227380300FC02602D36009009A9381600F222AE3806002205A00006006F0070010606700CA606568035231E3856803C231E38568046231E3856804E231E3806007923C53806009C23CB380600BB23BF2D0600D923262E0600F323D03806000324A60606000924700136009009193D1600AA2598311600B32565311600BC2581311600C5251E3D1600CE253C3D1600881F543D16009409673D1600D725733D160074197E3D16007D198A3D1600E025AE381600E9258A3D1600F225953D1600931BA13D160086199C2D1600FB25A13D06006400A00006003302F22D0600C802393106006400A00006003302393106006400F22D060033025C3E060064006E3E06006400700106006400292406006400A00006006400700106006400700106006400700106006400700106006400292406006400D0380606700CA6065680C126733E5680CC26733E5680DD26733E5680E926733E5680F626733E56800127733E56801027733E56801E27733E56802D27733E56803D27733E56804827733E56805227733E56805E27733E56806D27733E56807D27733E56808E27733E5680A027733E5680A927733E5680B827733E5680C327733E5680D227733E5680E327733E5680F427733E56800228733E56800D28733E56801E28733E56802728733E56803528733E56803F28733E56804A28733E56805628733E56806228733E56806F28733E56807C28733E56808A28733E56809528733E5680A128733E5680AD28733E5680BA28733E5680C828733E5680D528733E5680E428733E5680F228733E5680FE28733E56800A29733E56801829733E56802629733E56803429733E56804029733E56804C29733E56805929733E56806329733E56806F29733E56807C29733E56808729733E56809629733E5680A029733E5680AE29733E5680BA29733E5680C929733E5680D429733E5680E129733E5680F029733E5680FC29733E5680082A733E5680152A733E5680252A733E5680332A733E5680402A733E56804E2A733E56805D2A733E56806D2A733E56807E2A733E56808C2A733E56809C2A733E5680AA2A733E5680B72A733E5680C42A733E5680D62A733E5680E62A733E5680F12A733E5680012B733E5680112B733E5680202B733E56802D2B733E56803B2B733E5680462B733E5680512B733E56805B2B733E5680652B733E56806F2B733E56807D2B733E56808C2B733E56809B2B733E5680AA2B733E5680BA2B733E5680C62B733E5680D22B733E5680E32B733E5680F02B733E5680FD2B733E56800B2C733E56801C2C733E5680282C733E5680382C733E5680472C733E5680582C733E5680662C733E5680762C733E5680862C733E5680962C733E5680A62C733E5680B72C733E5680CF2C733E5680E62C733E5680092D733E56802E2D733E5680522D733E5680652D733E5680802D733E5680922D733E5680A62D733E5680BA2D733E5680CF2D733E5680E52D733E5680FE2D733E5680142E733E5680292E733E56803E2E733E5680552E733E5680692E733E5680862E733E5680A42E733E5680BD2E733E5680D02E733E5680E42E733E5680F22E733E5680052F733E5680182F733E5680292F733E56803A2F733E56804E2F733E5680632F733E5680772F733E56808C2F733E5680A02F733E5680B52F733E5680CB2F733E5680DC2F733E5680F02F733E56800330733E56801D30733E56803330733E56805030733E56805D30733E56806A30733E56807D30733E56809A30733E5680B830733E5680D430733E56805A0E733E5680AB18733E5680EC30733E56800431733E56801131733E56802731733E56803031733E56803A31733E56804931733E56806331733E56807A31733E56809831733E5680B431733E5680D431733E5680EF31733E56800F32733E56803332733E56804C32733E56806E32733E56808632733E5680A632733E5680C832733E5680E332733E56800033733E56801633733E56803133733E56804933733E56806633733E56808333733E56809E33733E5680B933733E5680D133733E5680F133733E56800834733E56802634733E56804534733E56805934733E56806E34733E56808334733E56809834733E5680AF34733E5680C634733E5680E334733E5680F734733E56800F35733E56802735733E56803735733E56804835733E56805935733E56806B35733E5680860F733E56807F35733E56809135733E5680A435733E5680B635733E5680C535733E5680D035733E5680E135733E5680F435733E56800336733E56800D36733E56801936733E56802636733E56805136733E56807236733E56808536733E5680A236733E5680C136733E5680CD36733E5680D536733E5680DC36733E5680F900733E5680E536733E5680EC36733E5680F436733E5680AC00733E5680F936733E5680FE36733E56801537733E56802537733E56803337733E56804737733E56805B37733E56806A37733E56807837733E56808737733E56808F37733E56809737733E5680A037733E5680A837733E5680B037733E5680B837733E5680CF37733E5680E837733E56800138733E56801B38733E56803538733E56805338733E56807138733E56808838733E56809E38733E5680B438733E5680CD38733E5680E538733E5680FB38733E56800939733E56801939733E56803039733E56804039733E5680CD0E733E56805639733E56806B39733E56807F39733E5680A139733E5680B139733E5680C339733E5680CE39733E5680E339733E5680053A733E5680273A733E5680493A733E5680723A733E5680933A733E5680A93A733E5680BA3A733E5680C93A733E5680850E733E5680E13A733E5680F03A733E56801D3B733E5680403B733E56804E3B733E5680533B733E030064002B3103003302ED2D0300C802ED2D0300CC02ED2D0300D002ED2D0300D4027F010300D8027F010300DC02733E0300F802ED2D0300FC02ED2D03009203A60603000904ED2D03001904ED2D0300BA0831440300BE08ED2D06006400E74506006400E74506003302F84536009009014616009409064601006400A6060100330231440100C80211460100CC021646030064009246030033027F010300C8027F0106006400D746060064000147060064000646330064000D4753806400A00053803302A0005380C802A0005380CC02A0005380D002A0005380D402A0005380D802A0005380DC02A0005380F802A0005380FC02A00053809203A00053800904A00053801904A0005380BA08A0005380BE08A00053808009A00053808409A00053808809A00053809D09A00053806B0AA00003006400A60603003302733E0300C80211460300CC02A0000300D002A6060300D402733E03009F04A00050200000000093006400210001006022000000009600B1013C0002007422000000009600B101400002007C220000000096000A0296000300B823000000008618630127000500C0230000000091182C029C000500CC23000000008618630127000500D4230000000083006400AD00050008240000000096006400CC00060014240000000096003302E40009002024000000009600C802F8000D002C24000000009600CC02070110003424000000009600D002070111003C24000000009600D4020F0112004424000000009600D802150013009824000000009600DC0254011500A024000000009600F80254011600A824000000009600FC0254011700B02400000000960092035F011800B8240000000091182C029C001900E825000000008618630127001900F0250000000083006400740119001826000000008618630127001A00202600000000831863018F011A0030260000000083081D04A8001B0038260000000086186301AA011B004826000000008608530450011C0050260000000086086604B5011C005C260000000086088604A3001D008C26000000008608BD0450011D009426000000008608CB04B5011D00A02600000000860822011D001E00A826000000008608D90451001E00B4260000000086088604CE011F00BC26000000008608E204D2011F00C826000000008608EC0450012000D0260000000086080205B5012000DC26000000008618630127002100E426000000009600C905FF0121005027000000009600C90525022200BC27000000009600760649022300FC27000000009600E506700224008028000000009600E506840228000829000000009600DD0670022D008C290000000096002407A1023100A0290000000096002407B0023400AC29000000009600BF0702033600102A0000000096001E0826033800142C0000000096006C0849033900902C000000009100640082033B00102E00000000910033029C033D008C30000000009600C905C3034000FC300000000091182C029C004100083100000000861863012700410010310000000083006400E60341002831000000008600D6091D0042007C31000000009600460AFF044200C833000000008618630127004300D0330000000091182C029C004300DC33000000008618630127004300E43300000000830064002B054300EC33000000008300330231054400F433000000008300C80237054500FC33000000008618630151004600C43400000000960064003C00470010350000000086186301270047001835000000009308D30AB60647002035000000009308DB0ABC0647002835000000009308E30AC30648003035000000009308EB0AC70648003835000000009308F30A3C0049004035000000009308FB0ACC06490048350000000093006400EB064A009C3500000000930033021E074A00FC35000000009300C8021E074B005C36000000009300CC029F074C00F038000000009300D002A7074F006C39000000009300D4023C005100A83A000000009300D80240005100D43B000000009300DC023C005200003C000000008618630127005200083C0000000091182C029C005200703C00000000860064001D005200D03C00000000860033021D005200483D000000008600C8021D005200603E000000008618630127005200683E0000000091182C029C005200743E0000000086186301270052007C3E00000000830064003B075200803E000000008300330215085300883E000000008308480C22085300903E000000008308500C2B0853009C3E0000000083081D0422085400A43E000000008308580C2B085400B03E000000008308600C22085500B83E000000008308680C2B085500C43E000000008618630127005600CC3E000000008600B00C56085600E03E00000000860006025D085700F43E000000008618630127005900083F00000000930064009C1F5900303F00000000930033029C1F5B00B03F000000009300C802B21F5D003040000000009300CC02BC1F60004040000000009300D002C41F6300584000000000861863012700670060400000000093006400302067008846000000009300330230206B00F048000000009300C8025A206F002C49000000009300CC02A4207200244C000000009300D0025A207700BC4C000000009300D402E0207A00F44C000000009300D802F2247D00CC7D000000009300DC02F2248100E07D000000009300F80202258500087E000000009300FC020F258800107F000000009300920356258B00A8850000000093000904FE27900074970000000093001904FE279200409B000000009300BA083D289400089C000000009300BE084A2898000C9C000000009300800957289C00449C000000009300840963289F007C9D00000000930088097028A300D49D0000000093009D098328A70020A00000000093006B0A9028AB0090A00000000093006F0A9C28AE0078A2000000009300730AA928B200D0A2000000009300AB0BB628B600A8A3000000009300BA0BC228B900D0A5000000009300020CCF28BD0028A6000000009300060CDC28C1009CA60000000093000A0CE828C40084A80000000093000E0CF528C800DCA8000000009300120C0229CC00C0A9000000009300240C0E29CF006CAB000000009300440C4A28D30070AB000000009300BE0C1B29D700C4AB000000009300C20C2729DA0070AD000000009300DA0C4A28DE0074AD000000009300DE0C3429E200C8AD000000009300E20C5129E50070AF000000009300E60C4A28E90074AF000000009300EA0C6729ED00CCAF000000009300EE0C8029F000CCB0000000009300F20C9129F40048B1000000009300F60C9E29F8004CB1000000009300FA0CAB29FC0050B1000000009600FE0CB729FF0054B1000000009300020D540102016CB1000000009300060DF7290301E0B3000000009300AA0D282A050148B5000000009300AE0D3F2A0701E8B7000000009300B20D542A09015CBA000000009300B60D642A0B01A4BA000000009300C60DC02A0E0104BE000000009300CA0DF42A1201A0BF000000009300CE0D352B150168C1000000009300D20D662B180108C3000000009300DD0D912B1B0190C4000000009300E10DF42A1F01B8C4000000009300E50DF42A22010CC50000000093002E0E2A2C25014CC7000000009300320E1A2D2A0158CA000000009300360E342D2E0120CC0000000093003A0E4A2D310180CC0000000091182C029C003501E0CC000000008618630127003501E8CC0000000083006400712D350100CD00000000861863012700360108CD0000000083006400792D360118CD0000000091182C029C00370124CD0000000086186301270037012CCD0000000083006400A82D3701B0CD0000000083003302A82D390130CE000000008300C802B12D3B0138CE000000008300CC02B72D3C0140CE000000008618630127003D0148CE0000000083006400D52D3D01ACCE0000000083003302DC2D3E01CCCE000000008618630127003F01D4CE0000000083006400712D3F01E4CE0000000083003302712D4001F4CE000000008618630127004101FCCE0000000083006400E62D41011CCF00000000861863012700420124CF00000000830064007401420138CF00000000861863012700430140CF0000000083006400792D430150CF00000000861863012700440158CF0000000083006400F72D440178CF0000000083003302F72D45019CCF000000008300C802062E4601BCCF000000008300CC02062E4701E0CF000000008300D0020D2E480100D0000000008300D4020D2E490124D0000000008300D8021C014A0144D0000000008300DC021C014B0168D00000000086006400332E4C01ACD0000000008618630127004C01C0D00000000093006400012F4C0110D200000000930033021A2F510148D2000000009300C802412F530158D3000000009300CC027A2F5901C8D3000000009300D0028F2F5B0134D4000000009300D4029F2F5C0164D4000000009300D802B72F5F01D4D4000000009300DC02D72F6201E4D5000000009300F8020130640198D7000000009300FC021430650174DB00000000930092035D306701ACDC00000000930009047530690150DE000000009300190490306B01A0DF000000009300BA08E1306D0154E1000000009300BE08F5306E01C0E1000000009300800924316F0140E400000000861863012700700160E400000000861863012700700168E400000000830064004F3170017CE400000000830033027401710198E4000000008300C80274017201B4E40000000091182C029C007301C0E4000000008618630127007301C8E40000000083006400C2317301D8E40000000083003302E8317401E0E4000000008300C802F72D7501ECE4000000008300CC02FB3176010CE5000000008300D002FB3177011CE5000000008300D4020232780124E5000000008300D802FB31790144E5000000008300DC0202327A015CE5000000008618630127007B0164E50000000083006400FB317B018CE5000000008618630127007C0194E500000000861863010A327C01B0E5000000009600921CB7327E01CCE60000000091006400E332800100E70000000096004C1EFD338101E4E9000000009600ED1E7C348301C4EB000000009600031F7C348501ECEC0000000091182C029C0087013CED0000000091182C029C00870148ED00000000861863012700870150ED00000000830064001035870158ED00000000830033021C35880160ED000000008300C8022835890168ED000000008300CC0228358A0170ED000000008300D00212078B0180ED000000008300D40233358C0184ED000000008300D80274018E0198ED000000008300DC0274018F01ACED000000009600F31F3D359001ECED000000008618630127009301F4ED0000000086186301270093018CEE0000000083086320500193019CEE0000000083086B2050019301A8EE0000000086087320FA359301B0EE000000008608872004369301BCEE0000000086089B200F369401C4EE000000008608B5201F369401D0EE000000008608CF2030369501D8EE000000008608DE2039369501E4EE000000008608ED2043369601ECEE000000008608042152369601F8EE0000000086081B216236970100EF0000000086082A216C3697010CEF0000000086006021F5369801DCF000000000830064000D379A0160F1000000008300330214379B0128F2000000008300C80232379D0170F2000000008300CC0242379E01B0F2000000008300D00242379F01F0F2000000008300D4025001A00100F3000000008300D8025001A00110F3000000008300DC025437A00194F3000000008300F8025C37A201A8F3000000008300FC026437A301DCF300000000830092037737A30188F4000000008600AE219837A5018CF5000000008600D421A237A8019CF5000000008600F521BF37AA0110F6000000008600F521D437AC0138F60000000086001122BF37AD0164F60000000086001122D437AF018CF6000000008308B6225001B001A4F6000000008600BE222700B00140F7000000008600DA229D38B00168F900000000861863012700B10190F90000000091182C029C00B1019CF900000000861863012700B101A4F90000000083006400B938B101BCF900000000861863015100B201CCF900000000861863012700B301D4F90000000093006400D438B30108FA00000000930033028639B501E0FB000000009300C802D139BA01B8FC000000009300CC025B3AC00118FF000000009300D002843AC90168FF000000009300D402D33ACA01B003010000009300D8021430CC013C04010000009600DC02E73ACE014405010000009600F8026C3BD2015C07010000009300FC02A53BD301680A01000000930092030A3CD701A40E0100000096000904363CDB01E80F0100000096001904493CDD014C10010000009600BA088C3CE1012812010000009600BE088C3CE601981301000000960080096C3BEB01381A01000000861863012700EC01401A0100000091182C029C00EC014C1A01000000861863012700EC01541A0100000083006400F72DEC01601A0100000083003302C231ED01701A010000008300C802E831EE01781A010000008300CC02BB3DEF01881A010000008300D002D53DF0018C1A010000008300D402F33DF101981A010000008300D802023EF201A81A010000008300DC020A3EF301B01A010000008300F802173EF401181B010000008300FC021F3EF501281B0100000083009203B938F601641B01000000830009041F3EF701741B0100000083001904263EF8017C1B010000008300BA082E3EF901881B010000008300BE08B72DFA01901B01000000830080092E3EFB019C1B01000000861863012700FC01A41B01000000830064004F31FC01C01B01000000830033027401FD01DC1B010000008300C8027401FE01F81B010000008300CC02353EFF01141C010000008300D00274010002381C010000008300D402533E01024C1C010000008618630127000202541C010000008300640074010202781C0100000083003302533E03028C1C010000008618630127000402941C0100000083006400613E0402B81C010000008618630127000502C01C0100000083006400B9380502E41C010000008618630127000602EC1C01000000830064001C010602101D010000008618630127000702181D01000000830064001F3E0702341D0100000086186301270008023C1D01000000830064001F3E0802501D010000008618630127000902581D01000000830064001F3E0902701D010000008618630127000A02781D01000000830064001F3E0A02901D010000008618630127000B02981D01000000830064001F3E0B02B01D01000000830033021F3E0C02D01D010000008618630127000D02D81D01000000830064001F3E0D02F01D010000008618630127000E02F81D01000000830064001F3E0E02141E010000008618630127000F021C1E01000000830064002E3E0F02341E010000008318630136441002441E01000000831863013D441102601E01000000831863014B441302841E01000000C600CE061D001402AC1E01000000930064005B441402902001000000930033025B4416024C22010000009300C80271441802DC22010000009300CC02D64419025C3D010000009300D002EC441D02943D010000009300D40205452102003F010000009300D802EC442402383F010000009300DC02054528029C40010000009300F8023F452B028042010000009300FC023F452D02B04201000000930092034B452F02244301000000930009043F453202484301000000930019043F453402DC43010000009300BA083F4536020C44010000009300BE084B453802704401000000930080094B453B02444501000000930084094B453E02F84501000000930088094B454102B8460100000093009D093F454402DC460100000093006B0A7845460204470100000093006F0A814547022047010000009300730A814549025447010000009300AB0B78454B025847010000009300BA0B9A454C029447010000009300020CAA454E023048010000009300060C7845520244480100000093000A0C8145530284480100000093000E0CBA455502AC48010000009300120CC94558026C49010000009300240CBA455A02A449010000009300440CD5455D02C449010000009300BE0C05456102A44A010000009300C20C78456402C84A010000009300DA0C78456502E04A010000008618630127006602E84A0100000083006400EC456602044B0100000083003302F1456602E84B010000008300C802EC456702044C0100000086186301270067020C4C0100000083006400EC456702284C0100000091182C029C006702344C0100000086186301270067023C4C0100000083006400F1456702704C0100000083186301510068028C4C0100000083081D043E036902944C010000008308580CD63C6902A04C010000008308600C1C466A02A84C010000008308680C4B446A02B44C0100000083080F3D50016B02C04C010000008308D30A22466B02C84C010000008308DB0A28466B02D44C010000008308E30A2F466C02DC4C010000008308EB0A36466C02E84C010000008300640027006D02F04C010000008300330236446D02044D010000008300C8023E466E021C4D010000008300CC024C467002484D010000008300D0024C467102644D010000008300D40253467202784D010000008300D80227007402B84D010000008300DC0227007402E84D010000009600333D61467402F84D010000008300F8026E467502844E010000008300FC021C467502904E010000008300920374467502C84E0100000093006400B8467602B44F0100000093003302C8467702F84F010000008618630127007802005001000000861863012700780208500100000083006400DD46780240500100000083003302DD4679029850010000008300C802DD467A020C51010000008300CC02DD467B026C51010000008618630127007C02745101000000830064004C467C028851010000008618630127007D0290510100000083006400DD467D02C45101000000930064003F477E027853010000008618630127007F0280530100000091182C029C007F02D85D010000009300640068477F02885E010000009300330268478102385F010000009300C80268478302EC5F010000009300CC02684785026C61010000009300D00268478702CC62010000009300D40268478902A064010000009300D80268478B020466010000009300DC02CA478D02E466010000009300F802CA479002C467010000009300FC02E44793025C680100000093009203E4479502F468010000009300090468479702046B010000009300190468479902246D010000009300BA086A489B02A470010000009300BE0868479C029071010000009300800968479E02C47301000000930064005654A002F07301000000930033025E54A2021874010000009300C8026754A5024474010000009300CC027154A8025474010000009300D0027F54AB02C47401000000831863018B54B002007501000000C600CE061D00B502000001002B0102000100C10100000100150200000200210200000100640000000100330200000200C80200000300CC0200000100D00200000200D40200000300D80200000400DC02000001002B0100000200F80200000300FC02000001002B01000001002B01000001002B01000001002B01000002009203000001002B01000001002B01000001002B01000001002B0100000100090400000100190400000100460400000100790400000100790400000100790400000100790400000100790400000100D60500000100D605000001002B0100000100F20600000200F80600000300FB0600000400060700000100F20600000200F80600000300FB06000004000607000005001C0700000100F20600000200F80600000300FB06000004000607000001002B01000002003D07101003004707000001002B01000002004E0700000100F80600000200D607000001002D0800000100F806020002008B0800000100BA0802000200BE08000001008009000002008409000003008809000001002B01000001009D09000001004C0A000001006B0A000001006F0A00000100730A00000100BC0A00000100790400000100790400000100790400000100AB0B00000100BA0B00000100020C00000200060C020003000A0C000001000E0C00000200120C02000100240C00000100440C00000100790400000100790400000100790400000100B90C00000100B90C00000200790400000100BE0C00000200C20C00000100DA0C00000200DE0C00000100E20C00000200E60C00000300EA0C00000100EE0C00000200F20C00000300F60C00000100FA0C00000200FE0C00000300020D00000400060D00000100AA0D00000200AE0D00000300B20D00000400B60D00000100C60D00000200CA0D00000300CE0D00000400D20D00000100DD0D00000200E10D00000300E50D000001002E0E00000200320E00000300360E000004003A0E000005003E0E00000100420E00000200460E000003004A0E000001004E0E00000200520E00000300560E000001000313000002000713101003000B13101004000F13000001001313000002001713101003001B13101004001F13000001002313000002002713020003002B13000001002F13000002003313000003003713000001005613000002005A13000003005E13020004006213000005006613000001004415000002004815000001004C15000002005015000001005415000002005815000003005C15000004006015000001006415000002006815000003006C15000004007015000001007415000002007815000003007C15000001008015000002008415000003008815000004008C15000001009015000002009415000003009815000004009C1500000100A41500000200A81500000300AC1500000400B01500000100B41500000200B81500000300BC1500000100C01500000200C41500000300C81500000400CC1500000100D01500000200D41500000300D81500000400DC1500000100E01500000200E41500000300E81500000100EC1500000200F01500000300F41500000400F81500000100FC15000002000016000003000416000004000816000001000C16000002001016000003001416000001001816000002001C16000003002016000004002416000001002816000002002C16000003003016000004003416000001003816000002003C16000003004016000001004416000002004816000003004C16000004005016000001005416000002005816000003005C16000004006016000001006416000002006816000003006C16000001007016000002007416000003007816000004007C16000001008016000002008416000003008816000004008C16000001009016000002009416000003009816000001001217000002001617000003001A17000004001E17000001002217000002002617000003002A17000004002E17000001004317000002004717000003004B17000001004F17000002005317000003005717000004005B17000001005F17000002006317000003006717000004006B17000001006F17000002007317000003007717000004007B17000001007F17000002008317000003008717000001008B17000002008F1700000300931700000100BB1700000100BF1700000200C31700000100D51700000200D91700000100DD1700000200E11700000100E51700000200E91700000100ED1700000200F11700000300F51700000100FF17000002000318000003000718000004000B18000001000F18000002001318000003001718000001003318000002003718000003003B18000001003F18000002004318000003004718000001005D18000002006118000003006518000004006918000001008918000002008D18000003009118000001009F1800000200A31800000300A71800000100C01800000200C41800000300C81800000400CC1810100500D018000001004019000002004419000003004819000004004C19000001005019000002005419000003005819000001005C19000002006019000003006419000004006819000001006C19000001007019000001009A19000002009E1900000100A21900000200A61900000100B91900000100BD1900000100C51900000100DA1900000100DE1900000100E21900000100E61900000100EA1900000100EE1900000100F21900000100F61900000100FA1900000100FE1900000100021A00000100061A000001000A1A000001000E1A000001003F1A00000200431A00000300471A000004004B1A000005004F1A00000100531A00000200571A00000100811A00000200851A00000300891A000004008D1A00000500911A00000600951A00000100CC1A00000200D01A00000100D41A00000100D81A00000200DC1A00000300E01A00000100E41A00000200E81A00000300EC1A00000100F01A00000200F41A00000100041B00000100081B000002000C1B00000100101B00000200141B00000100181B000002001C1B00000100201B00000200241B00000100361B000001003A1B00000100421B000001004E1B00000100521B00000100561B00000100A71B00000100B01B00000100C71B00000100CB1B00000100CF1B00000100D31B00000100D71B00000100DB1B00000100DF1B00000100501C000002005C1C00000100A31C00000200AA1C00000100AF1C000001005B1E00000200AA1C00000100FC1E000002005B1E00000100FC1E000002005B1E00000100BE1F00000100C21F00000100C61F00000100CA1F00000100CE1F00000100D21F00000200D61F00000100DA1F00000100DE1F00000100FF1F00000200AA1C000003000520000001007904000001007904000001007904000001007904000001007904101001006B21101002007221000001007A21000001007E21000002008221101001008621101001008A21101001008E21101001009221101002009621000001009A2100000100A62102000200AA2100000100FF1F00000200B90C10100300C72100000100B90C00000200E72100000100042200000200B90C00000100042200000100042200000200B90C00000100042200000100AA1C00000100FC2200000100B90C000001001324000002001724000001001B24000002001F24000003002324000004002724000005002B24000001002F24000002003324000003003724000004003B24000005003F24000006004324000001006224000002006624000003006A24000004006E24000005007224000006007624000007007A24000008007E24020009008224000001008624000001008F24000002009324000001009724000002009B2400000100BD2400000200C12400000300C52400000400C92400000100CD2400000100D12400000200D52400000300D92400000400DD2400000100E12400000200E52400000300E92400000400ED2400000100F12400000200F52400000100F92400000200FD24000003000125000004000525000001002925000002002D25000003003125000004003525000005003925000001005A25000002005E25000003006225000004006625000005006A2500000100A625000001000526000001000926000001000D26000001001126000001001526000001001926000001001D26000001002126000001002526000001002926000001002D26000001003126000001003526000001003926000001003D26000001004126000001004526000001004926000001004D26000001005126000001005B26000001005F26000001006326000001006726000001006B26000001006F26000001007326000001007726000001007B26000001007F26000001008326000001008726000001008B26000001008F26000001009326000001009726000001007C3B00000100803B00000200843B00000100883B000001008C3B10100200903B00000100943B10100200983B000001009C3B00000100A03B00000200A43B00000300A83B00000400AC3B00000100B03B00000200B43B00000300B83B00000400BC3B00000100C03B00000200C43B00000300C83B00000100CC3B00000200D03B00000300D43B00000400D83B00000100DC3B00000200E03B00000300E43B00000100E83B00000200EC3B00000100F03B00000200F43B00000100F83B00000200FC3B00000300003C00000100043C00000200083C000001000C3C00000200103C00000100143C00000200183C000001001C3C00000200203C00000300243C00000100283C000002002C3C00000300303C00000100343C00000200383C000003003C3C00000100403C00000200443C00000300483C000001004C3C00000200503C00000100543C00000100583C000002005C3C00000100603C00000200643C00000100683C000001006C3C00000200703C00000100743C00000200783C000003007C3C10100400803C00000100843C00000100883C000002008C3C00000100903C00000200943C00000300983C000001009C3C00000200A03C00000100A43C00000200A83C00000300AC3C00000100B03C00000200B43C00000300B83C00000400BC3C00000100C03C00000200C43C00000300C83C00000100CC3C00000100D03C00000100D43C00000100D83C000001000B3D00000100790400000100790400000100790400000100790400000100173D000001001B3D000002001F3D00000100233D00000100273D000001002B3D000002002F3D000001003D3D00000100423D00000100573D000001005B3D000001005F3D00000100633D00000100673D000001006B3D000001006F3D00000100733D00000100773D000001002B01000002007B3D000001002B01000002007F3D000001002B0100000200833D000001002B0100000200873D000001002B01000002009D3D000001002B0100000200A13D000001002B0100000200A53D000001002B0100000200A93D10100300AD3D000001002B0100000200B13D10100300B53D000001002B0100000200B93D000001002B0100000200BD3D000001002B0100000200C13D000001002B0100000200C53D00000100D53D000001002B0100000200D93D000001002B0100000200DD3D00000100E13D00000200E53D00000100E93D00000200ED3D00000300F13D00000100F53D00000200F93D00000300FD3D00000100013E00000200053E00000300093E000001000D3E00000200113E00000300153E00000400193E101005001D3E00000100213E00000200253E00000300293E000004002D3E00000500313E110074000E00110098001500990022011D00A100630127008900CE011D00890098004B00B900630151008900E00156000C00630166001400FA017700890001021D001C00630188001400060290000900630127001400630127001C003702A3001C004102A800C90063012700E1009F02C100E1009F02D700F900EE02F100110000030101110014030101110022030F0111002E031C0111003F0322012400630166001901800336011100960350011100A10350011100B30350012901E6035A012C00630127002C00060288000101FA035A013400640082013C0064009A013C0033027F013C005304500144007F04A3003C003F047B013C006604B5014C006301270051019E05F6014101AC05CE014C00060290004101B80550014901C10527005C006301270061019E05F6015C0006029000690163012700710163013B0281017106420269018F065E0299019E05F6018901C50664020900CE061D00A101DD066902A101DD067A028900DD069102890024079702B90163012700890094076902C901A707C10289009407C5026400630166001901B307D5028900BA07F702C101EA071203C101F8071803C10106081803890094071C03C101100822036100CE061D00690141083803990162083E03E101C5064203D90197085A01D901A4081D00C10163016103C10163016903C10163017203D90110083E038900B3087C035902620999037C00630127007C0006029000C10122011D008900B308DF0384009E050B048C00AC05A3008C00B80550018900F00940048900090A48048900090A4D048900240753049400630166001901130A69049C006301660019011A0A8804A400630166001901200AB00419012B0AD6047902630151008902410A270079016301EC048400630127008901C506F40484000602900089009407F9043101BE0A3E039102630127009102CE0A4D05AC007F04A300B4000E0B5001B4008604A300B40063019000A9023E0BFF06A902480B0507B10263012700B902980B0B07A102630127003900CE061207A102A40B1707C102B30B23078900F0093B07C902C60B4007BC00C5064C078900CE0B5307C400630166001901DA0B64075100CE0612078900DE0B78072900CE061D008900E80B4D04310163017D078900EF0B84073101F60B8D073101CE0612078900B3089707140062083E033101160CB60614009E050B04CC00AC05A300CC00B805500119011E0CD507BC0063012700BC0006028800AC00630166005100CE061D003101280C3E033101320C3E038900B3080108D400C5064C07D40006028800D40063012700A102C60C3E03D102D60CAC1FA102CE064D04E1000A0D5A01D9028604CE01C902260DE61FC902300DEB1FC902C60BF01FC902370DF51FC902400DFA1FC902480DFF1FC902510D0420C9025A0D0920C902630D0E20C9026D0D1420E100780D1B201100810D1500E10263012220B900630122209100A10D29208100BA0D4D201100E90D5A01E100BE0B7F20DC007F049520E100120E9E20E4007F0495208900810D4B005103190F7C2251002E0F822259002E0F8F2261002E0F9C2269002E0FA92271002E0FB62279002E0FC32281002E0FD022E100590F7F20E40063016600E100600FDE22E100750FDE22E1007E0FE722E100980FEF22EC0006029000E100AE0FFF22E100B40F0523E100BF0F1123F400C5062423F40062083E03E100D30F2A231100E90F3423010198003B23E100F30F4523E100F80F50231100FF0F5A23E1000B106123E100BF0F6C23E1001410DE22E10019107A23E10020108423E1003C108E23E1003C10DE22FC0063012700F4009E050B040401AC05A3000C0163016600E100B70EBD23FC00060290000401B8055001FC004310CC23E1004B10D223E1006310E023E1006910E823140163012700E1007110F62314010602900014014310CC23E10077100024E10080100C24E1008B10162441039B1024241100A4102924E100F30F2E24E100D30F3D24E100AF104624E100AF105023DC0063016600E100B9105023E100CA105023E100D4105023E100E1105023E100F3105023E10003115023E10010115023E1001F115023E10035115023E1003E115023E1004F115023E1005E115023E10074115023E1007D110523F10287112424E10063107F20E10093115023E1009A115023E100A2115023E100A5115023E100B1115023E100B5115023E100BB115023E100C4115023E100D4115023E100E0115023E100F3115023E100FD1150231100E90F5324E100F30F5D24E10006025023E10008125023E10013125023E1001C125023E1002C125023E10035125023E10045125023E1004C125023E1005312E0231C0163016600890063017424E1005712E023E1006A12E023E1007D12E023E1008412E023E1009212E023E1009C12E023E100B012E0232401630166001100C41250013101D0129224A903D0129C24EC0063012700EC00C5062423E100D30FA62451002E0FB324EC0062083E032C01630127003401630188002C01060290002C0162083E032C01DF1227002C019E050B043C01AC05A30034013702A30034014102A8001100E71250011100F312E124E100780DE9243C01B805500111003B131D00A10263015100440163012700440106029000440162083E03890094074A2544014310CC23110048135A01110048135025110099137C26B103980085261100A8138F264C0163016600540162083E035401C5062423C903C313AE261901D113B4265C01630166006401DF13DB268900E713E6266C0163012700740163012700740106028800F90022011D007401F213FB26EC00FE130427E10007140F2799009800182711000B142027E1001E1427276C0106029000E10023143127F40063012700F40006029000910351144727E10095145127190194076127E10007147A27EC00B1148A27E100BA1491277C0163016600F400DF13DB261100DA145A01E100E91491278401630127008C01630188008401060290001901F814D50784019E050B049401AC05A3008C013702A3009C01FD14D8278C014102A8009C010602880001010915DE27E100F30FE7279401B8055001A40163012700D102A0157D2881009C1640298100A81640298100B71640298100C31640298100CF1640298100980049298100810D49298100F60B49298100DA1649298100E91649298100FC1649298100321760293101A8167429310198008D073101810D8D073101DA168D073101E9168D073101FC168D071901B217C329AC0163012700AC01060290001100C7175A011901F917612719014310A22AE100F30FB02AB4014310CC23BC0163012700BC0106029000E1001B18232B4401C5062423E1001B18562BF9004B185A01E1006D18A72BE1009518C32BC40163016600E1007F04092CE100F30F182C9C01C5064C07E100F30F692C1100DE18772CCC01630166001901EC188B2C1903810DA62C1100FB18B02CD40163016600D903810DCA2CD90305195001E1001319D42CD903B00CDF2CD90319195A0111002719E42CDC01630166003904810DFE2C11003119082DE401630166001C017F044C07F900AA195001EC01630166001901C1193601F900C919CE018900EF0B4B008900EF0BE6268900EF0BFE2DEC00121A8A27F40163012700FC01630166000402630166000C02630166001402F213FB261C02361AF52EB401FE1304271100DE18132F24026301270099005B1A5A01EC00630104279900EE02F100C9036D1A5001240206029000B401630127001903991A50011903A51A50011903B21A742F1903BF1A742FB40106029000240262083E032402C5062423F401C5064C071100F81A50012C0263012700C903000301013402630166002C02060290003C02630166008900C60C3E0344029E05C6304C02AC05A3005402630166002C02FA0177002104FA035A014401FE130427F40106028800D1023E1BAC1F5C02461BA3005C028604A8006402361AF52E1901AB1BDA311903B41BAE26840162083E036C02630127007402630188006C02060290007C0263016600840263016600E1000714A4328C02630166009402FD14D8279402C5064C0774024102A800940262083E036C0262083E036104071D2F339C02630166002901211D4B33A402630166001901B30761332901391D8C339904711D9B33AC02630127006C02C506242374023702A3002901801DA933AC020602900029019C1DB5332901CE1DC4338904711D9B33C104E31DD3337104F21DD833C104F71DD3337104F21DDF33C104FD1DD333B104011EE933C1040E1ED3337104F21DF033C104161ED333D104351EF8339402B1148800B9003B1E1D00D104471EF83371046F1E2D3471047C1E3534C104881ED333C104901ED3337104F21D3B34C104971ED3337104F21D4434C1049D1ED333C104A31ED3337104F21D4E34C104AC1ED3337104B51E5834AC029E050B04B402AC05A300C104F30FD3337104D21E683411003F03753419011E0C8B2CC104DB1ED333B402B8055001C104E41ED333C104FF1ED3335904630127005904D9045100F1041B1FA134F9042F1FA734590422011D0001056B1FB334940263012700BC0263012700C40263012700CC0263012700D402630127009C0163012700DC0263012700CC0262083E03CC029E059136E402AC05A736EC02461BA300EC028604A800CC0206028800E402B8055001EC003921BD3649030A0D5A01E100980FC936CC024521D436E100D30FE036BC02F213FB26E100980F0637BC0206028800BC02E80BD827BC02FD14D827E100980F2437E100980F2C37F4028604A300F40253045001FC0263016600F4026301AA019C01F213FB2611009E216F37BC00F213FB26CC02F213FB26C402F213FB26DC02F213FB2604038604A300DC0206028800E100EC21B637CC02FD14D827C402FD14D82709020922CE370C036301660014039E05C6301C03AC05A30024039E050B042C03AC05A3002C03B80550012403630127003403630166003C03630166004403630166004C03630166005403630127005C039E050B046403AC05A3005403060290006403B8055001540362083E035403C5062423B40162083E036C0363016600740363016600B401C5062423D402C5064C0701014724742FB4019E050B047C03AC05A3007C03B8055001240362083E032403C506242384036301660024038A24C83A0101810D3B23C9039F245001AC0163010427AC01121A8A278C03630166009403630166009C0363016600A40363016600AC0363016600B40363016600BC038A24C83AAC0162083E03AC01C5062423240306029000110009255001AC012025713CAC014310CC23C40363016600CC0363016600AC013D25BE3C19014725C83CAC015125D63C11007B25500129059425123DD4038604A800DC03461BA300D403461BA30019015526473EE40363012700E40364007B01EC037F049000E40333027F01E403C8028201F40363016600FC0363016600F4037F04A300EC036301660031054F3DAC46040463016600FC037F044C070C04630127000C04FE1304270C04C50624230C0406029000140463012700140406028800A102DE0B7807A102A40B61471404C5064C0729008B3D9447A102121A9947A101943D1E071404F213FB26A102E80BC2471C04630127001C0462083E03A102A40B49480C0462083E03A102A40B50480C04C93D57481C04060290001C049E050B042404AC05A3002404B805500139056301D63C41056301270049056301C05459056301510061056301510069056301510071056301510079056301510081056301510089056301510091056301B501990563015100A10563015100A90563015100B105630127000E00880053050800CD00AB020800D000AB020800D4002B000800D80042080E00E00065080E00E40045090E00E8006B0A0E00EC00950B0E00F000BB0C0E00F400010E0E00F800470F0E00FC0079100E000001A1110E000401C9120E00080151130E000C01FB130E00100130140E001401A1140E00180120150E001C015D150E002001D0150E0024015A160E00280132170E002C01A1170E00300114180E0034017D180E003801AB190E003C01431A0E004001F31A0E0044016C1B0E004801B91B0E004C01341C0E005001F01C0E005401A21E1200FD01AB0202000102002512000D02AB0202001102002508003003AB02080034032B0008003803420808003C03C0380800E803783E0800EC037D3E0800F003823E0800F403873E0800F8038C3E0800FC03913E08000004963E080004049B3E08000804A03E08000C04A53E08001004AA3E08001404AF3E08001804B43E08001C04B93E08002004BE3E08002404C33E08002804C83E08002C04CD3E08003004D23E08003404D73E08003804DC3E08003C04E13E08004004E63E08004404EB3E08004804F03E08004C04F53E08005004FA3E08005404FF3E08005804043F08005C04093F080060040E3F08006404133F08006804183F08006C041D3F08007004223F08007404273F080078042C3F08007C04313F08008004363F080084043B3F08008804403F08008C04453F080090044A3F080094044F3F08009804543F08009C04593F0800A0045E3F0800A404633F1200A504AB020800A804683F0800AC046D3F0800B004723F0800B404773F0800B8047C3F0800BC04813F0800C004863F0800C4048B3F0800C804903F0800CC04953F0800D0049A3F0800D4049F3F0800D804A43F0800DC04A93F0800E004AE3F0800E404B33F0800E804B83F0800EC04BD3F0800F004C23F0800F404C73F0800F804CC3F0800FC04D13F08000005D63F08000405DB3F08000805E03F08000C05E53F08001005EA3F08001405EF3F08001805F43F08001C05F93F08002005FE3F08002405034008002805084008002C050D40080030051240080034051740080038051C4008003C052140080040052640080044052B4008004805304008004C053540080050053A40080054053F4008005805444008005C054940080060054E4008006405534008006805584008006C055D40080070056240080074056740080078056C4008007C057140080080057640080084057B4008008805804008008C058540080090058A40080094058F4008009805944008009C0599400800A0059E400800A405A3400800A805A8400800AC05AD400800B005B2400800B405B7400800B805BC400800BC05C1400800C005C6400800C405CB400800C805D0400800CC05D5400800D005DA400800D405DF400800D805E4400800DC05E9400800E005EE400800E405F3400800E805F8400800EC05FD400800F00502410800F40507410800F8050C410800FC051141080000061641080004061B4108000806204108000C062541080010062A41080014062F4108001806344108001C063941080020063E4108002406434108002806484108002C064D41080030065241080034065741080038065C4108003C066141080040066641080044066B4108004806704108004C067541080050067A41080054067F4108005806844108005C068941080060068E4102006106002508006406934112006506AB0208006806984108006C069D4108007006A24108007406A74112007506AB0208007806AC4112007906AB0208007C06B14112007D06AB0208008006B64102008106002508008406BB4102008506002508008806C04108008C06C54108009006CA4108009406CF4108009806D44108009C06D94102009D0600250800A006DE410800A406E3410800A806E8410800AC06ED410800B006F2410800B406F7410800B806FC410800BC0601420800C00606420800C4060B420800C80610420800CC0615420800D0061A420800D4061F420800D80624420800DC0629420800E0062E420800E40633420800E80638420800EC063D420800F00642420800F40647420800F8064C420800FC065142080000075642080004075B4208000807604208000C076542080010076A42080014076F4208001807744208001C077942080020077E4208002407834208002807884208002C078D42080030079242080034079742080038079C4208003C07A14208004007A64208004407AB4208004807B04208004C07B54208005007BA4208005407BF4208005807C44208005C07C94208006007CE4208006407D34208006807D84208006C07DD4208007007E24208007407E74208007807EC4208007C07F14208008007F64208008407FB4208008807004308008C070543080090070A43080094070F4308009807144308009C0719430800A0071E430800A40723430800A80728430800AC072D430800B00732430800B40737430800B8073C430800BC0741430800C00746430800C4074B430800C80750430800CC0755430800D0075A430800D4075F430800D80764430800DC0769430800E0076E430800E40773430800E80778430800EC077D430800F00782430800F40787430800F8078C430800FC079143080000089643080004089B4308000808A04308000C08A54308001008AA4308001408AF4308001808B44308001C08B94308002008BE4308002408C34308002808C84308002C08CD4308003008D24308003408D74308003808DC4308003C08E14308004008E64308004408EB4308004808F04308004C08F54308005008FA4308005408FF4308005508AB0208005808044408005C08094408005D08AB02080060080E4408006408134408006808184408006C081D44080070082244080074082744080078082C440E00F80882480E00FC0834490E000009E8490E0004098C4A0E000809284B0E000C09AC4B0E0010095C4C0E0014090E4D0E001809D04D0E001C099E4E0E002009404F0E002409E84F0E0028097C500E002C0900510E003009BE510E0034093B520E003809AA520E003C0915530E00400982530E004409E95312004509AB0208003D0AAB020800490AAB021200BD0AAB02200023002B002E0023002B002E006B1598542E007315A1542E007B15C7542E008315D0542E008B15EC542E0093151D552E009B1523552E00A315D0542E00AB153A552E00B3156A552E00BB151D552E00C31580552E00CB15AA552E00D315B5552E00DB152B00430023002B00830093002B00A30023002B00C30093002B00600123002B00630123002B00800123002B00830193002B00A00123002B00C00123002B00C30193002B00E00123002B00E10193002B00000223002B00010293002B00200223002B00210293002B00400223002B00410293002B00600223002B00610293002B00630293002B00230393002B00430393002B00600393002B00630393002B00800393002B00830393002B00A30393002B00C00393002B00C30393002B00E00393002B00E30393002B00000493002B00030493002B00200493002B00230493002B00400493002B00600493002B00800493002B00810493002B00A00493002B00A10493002B00A30493002B00C30493002B00E00423002B00E10493002B00E30493002B00000523002B00200523002B00400523002B00430593002B00600523002B00800523002B00A00523002B00C00523002B00C30593002B00E00523002B00010693002B00210693002B00410693002B00630693002B00800623002B00830693002B00A30693002B00A406FB012B00C30693002B00E30693002B00030793002B00230793002B00430793002B00630793002B00830793002B00A30793002B00C30793002B00E30793002B00030893002B00600893002B00800893002B00830893002B00A00893002B00A30893002B00C00893002B00C30893002B00E00893002B00000993002B00230993002B00430993002B00630993002B00A30923002B00600B93002B00800B93002B00A00B93002B00C00B93002B00E00B93002B00000C93002B00611693002B00011793002B00211793002B00411793002B00611793002B00202093002B00402093002B00602093002B00802093002B00A02093002B00C02093002B00E02093002B00002193002B00202193002B00402193002B00403393002B00603393002B00803393002B00A03393002B00E03393002B00003493002B00203493002B00403493002B00C03723002B00E03723002B00003823002B00203823002B00403823002B00603823002B00803823002B00A03823002B00C03823002B00E03823002B00003923002B00203923002B00403923002B00603923002B00803923002B00A03923002B00614693002B00814693002B00A14693002B00C14693002B00C44EFB012B000A0046001601DF010C0232025202B8020A032D0356038D03A803FC031C0442054705D106F4062907AD07EB07FD07A41FD31F412053207020BE20CD20F6201B25672509283528D129072A342A482A5F2A742ACF2A012B422B772BA12BB62BD52B3F2C292D422D2A2E432E242F5F2F892F982FB02FCA2FE32F0D301C3069307F309930EC30FE302F32F23210348A347736FD361E376A377F37AD37C837DC3730386038E1389D39E9397D3A913ADF3AFB3A733BB93B223C443C5B3CA53CDB3C113E524463446B447844E644FC441445584561456E458D45A346C246EB461747564772478347A147B347D547F247FF4777487A5408000100090002000A0004001100080014000B002C000E002D001500470016000000D002950100009004C20100009F04C60100001805C20100002205D70100009F04DB0100002705C2010000DC02EF070000F802F5070000FC02F9070000CC0235080000D00235080000D40235080000BA0BC2010000020CC20100002122E23700003122EC3700004722FC3700005222053800006522143800009203C2010000D0027B460000D4027F460000D802C2010000DC0285460000F8028B4602001900030002001B00050001001C00050002001D00070002001E00090001001F000900020020000B00010021000B00020022000D00010023000D00020024000F00010025000F0002004300110001004400110002004500130001004600130002004700150001004800150002005B00170001005C00170002005D00190001005E00190002005F001B00010060001B000200FF001D00020000011F0002000101210001000201210002000301230001000401230002000501250001000601250002000701270001000801270002000901290001000A01290002001D012B0002009A012D0001009B012D0002009C012F0001009D012F0002009E01310002009F0133000100A00133000200A10135000100A20135005B006C0081002C0167018601A301BA01EF01FC011D02CB0293039603BB03050415045A047F04A204DC06E40645075C07C9074F088920D420F8221C239923A123AA23EE236A247A24BA24C824D22443259626A626CC26D426EB26F326A027A927B527C327D027F627EF29EC2A1B2BF62B812CBA2CEE2C112DCC2D3C2E582E7C2EBA2EDE2EEC2E392F32303A304A30BD30D030D9304131BA315A3266326E328932CA3222333E335433A1335F34CA35D335DC35E535EE359D36B3363A374B3791373E384E3857388C389438EE3814394B397139B839C039C839153A313A523AC03A123B2B3B3C3B4F3B593B953B9D3B7C3CB63CAC3DE93DA944B444C444CC44F14637474D473D485D480480000001000000040000000000000000001C000000040000000000000000000000010033000000000004000000000000000000000001003C0000000000040000000000000000000000010048000000000004000000000000000000000001004F000000000004000300060005000C000B000E000D001200110013001100190018001A0018001B0018001C0018001D0018001E0018001F0018002000180021001800240023002500230026002300270023002A0029002E002D00330032003400320035003200360032003700320038003200390032003A0032003B0032003C0032003D0032003E0032003F00320040003200440043004500430046004300490048004A0048004B004800000000000E006400010000000E00330200000000100064000100000010003302000000001200353E000000004F00353E00000000C500353E00000000C700353E39004A018900F00289006304C7007A04CB007A04CF00D004D100E804C700E804C7005807090158072701E2078900B52389008524C7008D24CB00A026C700A0269302C726C700C726C7004227BB024227D102BD270D038D24CB004A01C7004A0115034A0117034A018900012C3B03A02C3B03C42C3B03F82C3B038D245D03C726CB006C2E8900972EC700AF2ECF00D02ECB00A02C1703A02C1703C726390044308900553017038D24CB004430BB034A0189007D32890098328900D8321703E80489004633E1037D331703863333044A01CB004838C700A02CCB00033989003139CF00623989007D39CB00253A8900433AD102483889001D3BC700253B8900353B8900473B3900253B390048388900643B3B03253B27014227D1028D245D03863C17034227C700863C0305863C11058D24170368463900FB460000005A2E45787072657373696F6E732E436F6D70696C65722E646C6C005A2E45787072657373696F6E732E436F6D70696C6572006D73636F726C69620053797374656D2E436F72650053797374656D0053797374656D2E44617461003C4D6F64756C653E00EE8080004F626A6563740054797065004765745479706546726F6D48616E646C650052756E74696D655479706548616E646C65006F705F457175616C69747900426F6F6C65616E0043686172005342797465004279746500496E7431360055496E74313600496E7433320055496E74333200496E7436340055496E7436340053696E676C6500446F75626C6500446563696D616C00537472696E6700456E756D004D656D626572496E666F0053797374656D2E5265666C656374696F6E006765745F4E616D65007468697300457874656E73696F6E4174747269627574650053797374656D2E52756E74696D652E436F6D70696C65725365727669636573002E63746F7200436F6D70696C65724D616E61676572005A2E45787072657373696F6E73004C69737460310053797374656D2E436F6C6C656374696F6E732E47656E65726963005475706C6560320056616C69646174654C6963656E7365006572726F724D65737361676500546F4C6F77657200457863657074696F6E0049734E756C6C4F72456D70747900507265646963617465603100457869737473005472696D00416464004164644C6963656E7365006C6963656E73654E616D65006C6963656E73654B6579002E6363746F7200EE8081006765745F4974656D31006765745F4974656D3200436F6D70696C657247656E6572617465644174747269627574650044696374696F6E61727960320054797065436F64650045787072657373696F6E0053797374656D2E4C696E712E45787072657373696F6E730044796E616D69630044796E616D696345787072657373696F6E0043616C6C5369746542696E64657200EE808200EE808300EE808400EE808500EE808600EE808700506172616D65746572496E666F004973446566696E656400EE808800EE80890047657447656E65726963417267756D656E747300476574496E74657266616365730047657454797065436F646500497341737369676E61626C6546726F6D004765744D6574686F6473004D6574686F64496E666F0042696E64696E67466C6167730046756E63603200456E756D657261626C650053797374656D2E4C696E7100416E790049456E756D657261626C65603100EE808A006765745F4973456E756D006765745F497347656E6572696354797065006765745F49735072696D697469766500547970654275696C6465720053797374656D2E5265666C656374696F6E2E456D69740043726561746554797065004461746554696D65006765745F52657475726E5479706500EE808B00EE8082603200EE8083603200EE808C006765745FEE8084004C617A7953696E676C6554687265616460310046756E636031005F76616C75650076616C7565466163746F7279006765745F497356616C756543726561746564007365745F497356616C7565437265617465640076616C756500496E766F6B65006765745F56616C756500497356616C7565437265617465640056616C7565005661726961626C65466163746F7279417267756D656E74006765745F497348616E646C6564007365745F497348616E646C6564007365745F4E616D65007365745F56616C7565006765745F497345787072657373696F6E56616C7565007365745F497345787072657373696F6E56616C756500497348616E646C6564004E616D6500497345787072657373696F6E56616C756500457874656E73696F6E4D6574686F6473005A2E45787072657373696F6E732E53716C5365727665722E4576616C0049456E756D657261746F720053797374656D2E436F6C6C656374696F6E730049446973706F7361626C650049456E756D657261626C6500476574456E756D657261746F72006765745F43757272656E74004D6F76654E65787400446973706F7365004173456E756D657261626C6500656E756D657261626C65004D617463680053797374656D2E546578742E526567756C617245787072657373696F6E73004D61746368436F6C6C656374696F6E00446174615461626C650053716C44617461416461707465720053797374656D2E446174612E53716C436C69656E740053716C436F6D6D616E6400446244617461416461707465720053797374656D2E446174612E436F6D6D6F6E0046696C6C0045786563757465446174615461626C650044617461526F77006765745F526F77730044617461526F77436F6C6C656374696F6E00496E7465726E616C44617461436F6C6C656374696F6E42617365006765745F4974656D00546F537472696E67005265676578005265706C6163650052656765785265706C61636500696E7075740064740066726F6D436F6C756D6E00746F436F6C756D6E0052656765784F7074696F6E73006F7074696F6E730053706C697400537472696E6753706C69744F7074696F6E7300736570617261746F72006F7074696F6E00736570617261746F727300506172616D41727261794174747269627574650053716C4D65746144617461004D6963726F736F66742E53716C5365727665722E53657276657200436F6E63617400456E7669726F6E6D656E74006765745F4E65774C696E650053656C656374004A6F696E00416C74657253716C5461626C65537472756374757265007461626C654E616D650053716C446254797065006765745F53716C446254797065006765745F507265636973696F6E006765745F5363616C65006765745F4D61784C656E6774680047657453716C547970654E616D65006D657461446174610044617461436F6C756D6E006765745F436F6C756D6E730044617461436F6C756D6E436F6C6C656374696F6E006765745F436F756E740045787472616374446174615461626C65436F6C756D6E4D6574614461746100757365546F537472696E67006765745F4461746154797065006765745F436F6C756D6E4E616D6500466F726D617400EE808D00EE808E0053716C42696E6172790053797374656D2E446174612E53716C54797065730053716C42797465730053716C537472696E670053716C436861727300477569640053716C426F6F6C65616E0053716C427974650053716C4461746554696D650053716C446F75626C650053716C477569640053716C496E7431360053716C496E7433320053716C496E7436340053716C4D6F6E65790053716C446563696D616C004D6178507265636973696F6E0053716C53696E676C650053716C586D6C00EE808F00EE809000EE8091003C3E63003C3E39003C3E395F5F385F3000EE80920053716C44796E616D69635069766F7400436F6C756D6E730044796E616D696356616C7565730053716C00456E756D657261746F72004765745069766F7453716C0053716C436F6E6E656374696F6E00496E6465784F6600537472696E67436F6D70617269736F6E00537562737472696E6700546F4C6973740057686572650053656C6563744D616E790044697374696E6374004462436F6E6E656374696F6E004F70656E005069766F740073716C003C3E395F5F345F30003C3E395F5F345F31003C3E395F5F345F3200EE809300EE809400EE80950053716C44796E616D69635069766F74436F6C756D6E00416C6961734E616D6500497344796E616D69630054656D706F726172794E616D650044796E616D696350617274730073006765745F596561720052616E646F6D004E657874006765745FEE8087007365745FEE8087006765745FEE8088007365745FEE8088006765745FEE8089007365745FEE8089004E756C6C61626C656031006765745F48617356616C756500537472696E674275696C6465720053797374656D2E5465787400456E636F64696E67006765745F41534349490047657442797465730053484135313243727970746F5365727669636550726F76696465720053797374656D2E53656375726974792E43727970746F6772617068790048617368416C676F726974686D00436F6D707574654861736800417070656E6400EE8096004D44350043726561746500EE809700436F6E7665727400546F496E74333200546F4368617241727261790053756D006765745F43686172730052656D6F766500457175616C73006F705F4C6573735468616E00EE809800EE809900EE809A00EE809B00EE809C006765745F4E6F7700466972737400EE809D006765745F4D6F6E7468006765745F446179003C3E395F5F32305F3000EE809E006765745FEE8083007365745FEE8083007365745FEE8084006765745FEE8085007365745FEE80850076616C75655F5F0046616B65416E6F6E796D6F757354797065005A2E45787072657373696F6E732E436F6465436F6D70696C65720050726F706572746965730047657456616C7565006E616D6500EE809F00EE80A0006765745F4C656E677468004D617468004D696E00EE80A100EE80A200EE80A300EE80A400EE80A500EE80A600EE80A700EE80A800EE80A900EE80AA00EE80AB00EE80AC006765745F5479706500436F6E7374616E7445787072657373696F6E00546F426F6F6C65616E00546F4368617200546F55496E74333200546F496E74363400546F55496E74363400546F53696E676C6500546F446F75626C6500546F446563696D616C00546F4461746554696D6500436F6E7374616E74006F705F496E657175616C697479004F766572666C6F77457863657074696F6E00546F4F626A65637400EE80AD00EE80AE00EE80AF00EE80B0006F705F496D706C6963697400EE80B100EE80B200EE80B300EE80B40046756E63603300EE80B500EE80B600EE80B70047657447656E6572696354797065446566696E6974696F6E00556E61727945787072657373696F6E006765745F4E6F6465547970650045787072657373696F6E5479706500EE80B800EE80B900EE80BA00EE80BB00EE80BC00EE80BD00EE80BE00EE80BF00EE818000EE818100EE818200436F6E646974696F6E616C45787072657373696F6E004D6574686F6443616C6C45787072657373696F6E00506172616D6574657245787072657373696F6E0050726F7065727479496E666F004D656D62657245787072657373696F6E0053776974636843617365004361746368426C6F636B0054727945787072657373696F6E0042696E61727945787072657373696F6E004C6162656C5461726765740043756C74757265496E666F0053797374656D2E476C6F62616C697A6174696F6E006765745F496E76617269616E7443756C74757265005472795061727365004E756D6265725374796C65730049466F726D617450726F766964657200566F69640054797065417300427265616B00476F746F45787072657373696F6E00436F6E74696E75650044656661756C740044656661756C7445787072657373696F6E004C6162656C004C6162656C45787072657373696F6E00456D7074790049665468656E456C7365004C6F6F70004C6F6F7045787072657373696F6E00426C6F636B00426C6F636B45787072657373696F6E004765744D6574686F640043616C6C0041737369676E0047657450726F70657274790050726F706572747900476F746F0049665468656E00547970654973005479706542696E61727945787072657373696F6E0052657475726E00546F4172726179005377697463680053776974636845787072657373696F6E005468726F770052657468726F770043617463680054727943617463680054727946696E616C6C7900547279436174636846696E616C6C79006765745F4C65667400456D70747954797065730041646441737369676E0041646441737369676E436865636B656400416E6441737369676E0044697669646541737369676E004578636C75736976654F7241737369676E004C656674536869667441737369676E004D6F64756C6F41737369676E004D756C7469706C7941737369676E004D756C7469706C7941737369676E436865636B6564004F7241737369676E005269676874536869667441737369676E00537562747261637441737369676E00537562747261637441737369676E436865636B6564004E6F74457175616C00436F6E646974696F6E006765745F4F706572616E64004F72456C736500416E64416C736F004F72004578636C75736976654F7200416E6400457175616C004C6573735468616E004C6573735468616E4F72457175616C00477265617465725468616E00477265617465725468616E4F72457175616C004C6566745368696674005269676874536869667400416464436865636B6564005375627472616374005375627472616374436865636B6564004D756C7469706C79004D756C7469706C79436865636B656400446976696465004D6F64756C6F004E6F740050726544656372656D656E7441737369676E00507265496E6372656D656E7441737369676E004E6567617465004E6567617465436865636B656400556E617279506C757300506F737444656372656D656E7441737369676E00506F7374496E6372656D656E7441737369676E006765745F497341727261790050617273650054696D655370616E0052657665727365006765745F4973436C617373004D616B6547656E657269635479706500EE818300EE818400EE818500EE818600EE818700EE818800EE818900EE818A00EE818B00EE818C00EE818D00EE818E00EE818F00EE8190006765745F46756C6C4E616D65004D616B6541727261795479706500EE819100EE819200EE819300EE819400EE819500436F6E7374727563746F72496E666F004E657745787072657373696F6E004D656D62657241737369676E6D656E7400476574436F6E7374727563746F7200476574436F6E7374727563746F7273004D6574686F644261736500476574506172616D657465727300536B697000416374696F6E603100466F724561636800537461727473576974680054727947657456616C75650041646452616E6765004E6577004765744669656C64004669656C64496E666F0042696E64004D656D626572496E6974004D656D626572496E697445787072657373696F6E004D656D62657242696E64696E67006765745F45787072657373696F6E7300526561644F6E6C79436F6C6C656374696F6E60310053797374656D2E436F6C6C656374696F6E732E4F626A6563744D6F64656C004C697374496E6974004C697374496E697445787072657373696F6E007365745F4974656D004E65774172726179496E6974004E6577417272617945787072657373696F6E00476574456C656D656E7454797065004E65774172726179426F756E6473004C61737400436F6E7461696E734B6579004D616B6547656E657269634D6574686F6400457870616E646F4F626A6563740053797374656D2E44796E616D696300456C656D656E74496E697400EE819600EE819700EE819800EE819900EE819A00EE819B00EE819C00EE819D00EE819E00EE819F00EE81A000EE81A100EE81A200EE81A300EE81A400EE81A500EE81A600EE81A700EE81A800EE81A900EE81AA00EE81AB00EE81AC00506F7700EE81AD00EE81AE00EE81AF00EE81B000EE81B100EE81B200EE81B300EE81B400EE81B500EE81B600EE81B700EE81B800EE81B900EE81BA00EE81BB00EE81BC00EE81BD00EE81BE00EE81BF00EE828000EE828100EE828200EE828300EE828400EE828500EE828600EE828700EE828800EE828900EE828A00EE828B00EE828C00EE828D00EE828E00EE828F00EE829000EE829100EE829200EE829300EE829400EE829500EE829600EE829700EE829800EE829900EE829A00EE829B00EE829C00EE829D00EE829E00EE829F00EE82A000EE82A100EE82A200EE82A300EE82A400EE82A500EE82A600EE82A700EE82A800EE82A900EE82AA006F705F4164646974696F6E006F705F5375627472616374696F6E006F705F4D756C7469706C79006F705F4469766973696F6E006F705F4D6F64756C7573006F705F477265617465725468616E006F705F4C6573735468616E4F72457175616C006F705F477265617465725468616E4F72457175616C00EE82AB00EE82AC00EE82AD00EE82AE00EE82AF00EE82B000EE82B100EE82B2006F705F556E6172794E65676174696F6E00EE82B300EE82B400EE82B500EE82B600EE82B700EE82B800EE82B900EE82BA00EE82BB00EE82BC00EE82BD00EE82BE00EE82BF00EE838000EE838100EE838200EE838300EE838400EE838500EE838600EE8387004944796E616D69634D6574614F626A65637450726F766964657200436F6E7461696E7300EE838800EE838900EE838A004D616B6542795265665479706500EE838B00EE838C00EE838D00EE838E00EE838F00EE839000EE839100EE839200EE839300556E696F6E00EE839400EE839500EE839600EE839700EE839800EE839900EE839A004C616D626461004C616D62646145787072657373696F6E00EE839B00EE839C00EE839D00EE839E00EE839F00EE83A0006765745F506172616D657465725479706500EE83A100EE83A200EE83A300EE83A400417272617941636365737300496E64657845787072657373696F6E00EE83A500EE83A600EE83A7004D616B65496E64657800EE83A800EE83A900EE83AA00496E766F636174696F6E45787072657373696F6E00EE83AB00EE83AC00EE83AD00EE83AE00EE83AF004576656E74496E666F0047657450726F706572746965730046697273744F7244656661756C74004765744669656C6473006765745F49734C69746572616C004669656C64006765745F4669656C6454797065004765744576656E7473004765744E6573746564547970657300EE83B000EE83B100EE83B200EE83B300EE83B400EE83B500EE83B600EE83B700EE83B800EE83B900EE83BA00EE83BB00EE83BC003C3E395F5F385F32003C3E395F5F385F33003C3E395F5F31335F31003C3E395F5F35385F3100EE83BD00EE83BE00EE83BF00EE8480006765745F49734F7074696F6E616C00EE848100EE848200416C6C00EE8483006765745F44656661756C7456616C756500EE848400EE848500EE848600EE848700EE848800EE848900EE848A00EE848B00EE848C00EE848D00EE848E00EE848F00EE849000EE849100496E73657274004B657956616C7565506169726032004B6579436F6C6C656374696F6E006765745F4B65797300EE849200EE849300EE849400EE849500EE849600EE849700EE8498006765745F4465636C6172696E6754797065006765745F497347656E657269634D6574686F6400EE849900EE849A00EE849B00EE849C00EE849D00EE849E006765745F43616E52656164006765745F43616E5772697465004765745365744D6574686F64004765744765744D6574686F6400EE849F00EE84A000EE84A100EE84A200EE84A300EE84A400EE84A500EE84A600EE84A700EE84A800EE84A9006765745F4973427952656600EE84AA00EE84AB00EE84AC00EE84AD00EE84AE00EE84AF00EE84B000EE84B100EE84B20049456E756D657261746F72603100EE84B300EE84B4004D617800EE84B5006765745F4B657900EE84B600EE84B700EE84B8003C3E395F5F305F31003C3E395F5F305F32003C3E395F5F315F30003C3E395F5F31305F30003C3E395F5F31305F31003C3E395F5F31305F32003C3E395F5F31335F30003C3E395F5F31335F3200EE84B9004361737400EE84BA00476574496E646578506172616D657465727300EE84BB00EE84BC00EE84BD00EE84BE00EE84BF00EE858000EE858100506172616D6574657245787072657373696F6E496E666F005A2E45787072657373696F6E732E436F6465436F6D70696C65722E43536861727000497342795265660049734F757441737369676E6D656E7400506172616D657465724E616D650054797065730056616C7565730065787072657373696F6E730074797065730044796E616D6963416E6F6E796D6F75735479706500417373656D626C794E616D65004D6F64756C654275696C6465720043726561746545787072657373696F6E0076616C756573006E6F646500EE85820047656E6572696354797065506172616D657465724275696C64657200494C47656E657261746F72004669656C644275696C646572004D6574686F6441747472696275746573004D6574686F644275696C64657200446566696E655479706500547970654174747269627574657300446566696E6547656E65726963506172616D657465727300446566696E65436F6E7374727563746F7200436F6E7374727563746F724275696C6465720043616C6C696E67436F6E76656E74696F6E7300476574494C47656E657261746F7200446566696E654669656C64004669656C644174747269627574657300446566696E6550726F70657274790050726F70657274794275696C6465720050726F70657274794174747269627574657300446566696E654D6574686F64004F70436F646573004C646172675F30004F70436F646500456D6974004C64666C6400526574005365744765744D6574686F64004C646172675F53005374666C64004D6F6E69746F720053797374656D2E546872656164696E6700456E746572006765745F4D65737361676500457869740047657444796E616D696354797065006669656C6473004C6F63616C4275696C646572004465636C6172654C6F63616C00446566696E654C6162656C004C646172675F31004973696E73740053746C6F63004C646C6F63004272747275655F53004C64635F49345F30004D61726B4C6162656C00457175616C697479436F6D7061726572603100456D697443616C6C0043616C6C76697274004C64635F49345F310047656E6572617465457175616C7300746200586F720047656E657261746548617368436F64650054687265616400476574446F6D61696E00417070446F6D61696E00446566696E6544796E616D6963417373656D626C7900417373656D626C794275696C64657200417373656D626C794275696C64657241636365737300446566696E6544796E616D69634D6F64756C65003C3E395F5F335F30003C3E395F5F335F31003C3E395F5F355F30003C3E395F5F355F31003C3E395F5F355F32003C3E395F5F365F30003C3E395F5F375F3000EE858300EE858400EE858500EE858600EE858700EE858800EE858900EE858A00EE858B0045787072657373696F6E50617273657200506172736553796E7461780073636F706500726573756C74547970650045787072657373696F6E53636F706500436F6E7374616E74730045787072657373696F6E7300536166654D6F646500496E7374616E63654D6574686F6473005573654361726574466F724578706F6E656E74006765745FEE8097006765745FEE8098006765745F5661726961626C65466163746F7279007365745F5661726961626C65466163746F7279006765745F416C696173457874656E73696F6E4D6574686F6473007365745F416C696173457874656E73696F6E4D6574686F6473006765745F416C6961734E616D6573007365745F416C6961734E616D6573006765745F416C6961735374617469634D656D62657273007365745F416C6961735374617469634D656D62657273006765745F416C6961735479706573007365745F416C696173547970657300496E7365727452616E6765006765745F56616C7565730056616C7565436F6C6C656374696F6E00437265617465426F64790069734D61696E0074526573756C7400EE858C00EE858D00EE858E00EE858F00EE859000EE859100EE859200EE859300EE8594004765745479706500EE859500EE85960047657456616C756545787072657373696F6E4F724E756C6C0064697361626C65416C696173004372656174654C617A795661726961626C65006C617A79005661726961626C65004372656174655661726961626C650074797065004E65774775696400437265617465506172616D65746572005661726961626C65466163746F727900416C696173457874656E73696F6E4D6574686F647300416C6961734E616D657300416C6961735374617469634D656D6265727300416C6961735479706573004170706C696361626C654D656D626572005A2E45787072657373696F6E732E436F6465436F6D70696C65722E4353686172702E4F7665726C6F61645265736F6C7574696F6E006765745FEE808A004372656174654F757441737369676E6D656E745661726961626C65004765744170706C696361626C65506172616D6574657273003C3E395F5F31325F3000EE8597004170706C696361626C654D656D62657247656E65726963417267756D656E74004170706C696361626C654D656D6265724B696E64004E6F726D616C00457874656E73696F6E0047656E6572696300457874656E73696F6E47656E65726963004170706C696361626C654D656D626572506172616D6574657200466F726D457870616E6461626C65506172616D6574657245787072657373696F6E7300466F726D457870616E6461626C6556616C756545787072657373696F6E7300466F726D4E6F726D616C506172616D6574657245787072657373696F6E00466F726D4E6F726D616C56616C756545787072657373696F6E004D6574686F64506172616D6574657200506F7765720056616C75655479706500EE859800EE859900EE859A00EE859B00EE859C00EE859D00EE859E00EE859F00EE85A000EE85A100EE85A200EE85A300EE85A40047657447656E657269634D6574686F64446566696E6974696F6E00EE85A500EE85A600EE85A700EE85A800EE85A900EE85AA00EE85AB00EE85AC00EE85AD00EE85AE0046696E6400EE85AF00EE85B000EE85B100EE85B2006765745F497347656E657269634D6574686F64446566696E6974696F6E00EE85B300EE85B400EE85B500EE85B600EE85B700EE85B800EE85B900EE85BA00EE85BB00EE85BC00EE85BD00EE85BE00EE85BF00EE868000EE868100EE868200EE868300EE868400EE8685006765745F497347656E65726963506172616D657465720047657452616E676500EE868600EE868700EE868800EE868900EE868A0046696E64496E64657800456C656D656E7441740052656D6F7665417400EE868B00EE868C00EE868D00EE868E00EE868F0045787072657373696F6E6031006765745F497356616C756554797065004E756C6C61626C6500476574556E6465726C79696E675479706500EE8690003C3E395F5F305F30003C3E395F5F315F31003C3E395F5F315F32003C3E395F5F315F36003C3E395F5F315F37003C3E395F5F385F31003C3E395F5F385F34003C3E395F5F385F35003C3E395F5F385F36003C3E395F5F31345F3000EE869100EE869200EE869300EE869400EE869500EE869600EE869700EE869800EE869900EE869A00EE869B00EE869C00EE869D00EE869E00EE869F00EE86A000EE86A100EE86A200EE86A300EE86A400436F756E7400EE86A500EE86A600EE86A700EE86A800EE86A900EE86AA00EE86AB00EE86AC00EE86AD00EE86AE00EE86AF00EE86B000EE86B100EE86B200EE86B300EE86B40053796E7461784B696E64005A2E45787072657373696F6E732E436F6465416E616C797369730054696C6465546F6B656E004578636C616D6174696F6E546F6B656E00446F6C6C6172546F6B656E0050657263656E74546F6B656E004361726574546F6B656E00416D70657273616E64546F6B656E00417374657269736B546F6B656E004F70656E506172656E546F6B656E00436C6F7365506172656E546F6B656E004D696E7573546F6B656E00506C7573546F6B656E00457175616C73546F6B656E004F70656E4272616365546F6B656E00436C6F73654272616365546F6B656E004F70656E427261636B6574546F6B656E00436C6F7365427261636B6574546F6B656E00426172546F6B656E004261636B736C617368546F6B656E00436F6C6F6E546F6B656E0053656D69636F6C6F6E546F6B656E00446F75626C6551756F7465546F6B656E0053696E676C6551756F7465546F6B656E004C6573735468616E546F6B656E00436F6D6D61546F6B656E00477265617465725468616E546F6B656E00446F74546F6B656E005175657374696F6E546F6B656E0048617368546F6B656E00536C617368546F6B656E00426F6F6C4B6579776F726400427974654B6579776F72640053427974654B6579776F72640053686F72744B6579776F7264005553686F72744B6579776F726400496E744B6579776F72640055496E744B6579776F7264004C6F6E674B6579776F726400554C6F6E674B6579776F726400446F75626C654B6579776F726400466C6F61744B6579776F726400446563696D616C4B6579776F726400537472696E674B6579776F726400436861724B6579776F726400566F69644B6579776F7264004F626A6563744B6579776F726400547970654F664B6579776F72640053697A654F664B6579776F7264004E756C6C4B6579776F726400547275654B6579776F72640046616C73654B6579776F72640049664B6579776F726400456C73654B6579776F7264005768696C654B6579776F726400466F724B6579776F726400466F72456163684B6579776F726400446F4B6579776F7264005377697463684B6579776F726400436173654B6579776F72640044656661756C744B6579776F7264005472794B6579776F72640043617463684B6579776F72640046696E616C6C794B6579776F7264004C6F636B4B6579776F726400476F746F4B6579776F726400427265616B4B6579776F726400436F6E74696E75654B6579776F72640052657475726E4B6579776F7264005468726F774B6579776F7264005075626C69634B6579776F726400507269766174654B6579776F726400496E7465726E616C4B6579776F72640050726F7465637465644B6579776F7264005374617469634B6579776F726400526561644F6E6C794B6579776F7264005365616C65644B6579776F726400436F6E73744B6579776F72640046697865644B6579776F726400537461636B416C6C6F634B6579776F726400566F6C6174696C654B6579776F7264004E65774B6579776F7264004F766572726964654B6579776F72640041627374726163744B6579776F7264005669727475616C4B6579776F7264004576656E744B6579776F72640045787465726E4B6579776F7264005265664B6579776F7264004F75744B6579776F726400496E4B6579776F72640049734B6579776F72640041734B6579776F726400506172616D734B6579776F7264004172674C6973744B6579776F7264004D616B655265664B6579776F726400526566547970654B6579776F72640052656656616C75654B6579776F726400546869734B6579776F726400426173654B6579776F7264004E616D6573706163654B6579776F7264005573696E674B6579776F726400436C6173734B6579776F7264005374727563744B6579776F726400496E746572666163654B6579776F726400456E756D4B6579776F72640044656C65676174654B6579776F726400436865636B65644B6579776F726400556E636865636B65644B6579776F726400556E736166654B6579776F7264004F70657261746F724B6579776F7264004578706C696369744B6579776F726400496D706C696369744B6579776F726400456E644F664C696E6554726976696100576869746573706163655472697669610053696E676C654C696E65436F6D6D656E74547269766961004D756C74694C696E65436F6D6D656E7454726976696100446F63756D656E746174696F6E436F6D6D656E744578746572696F725472697669610053696E676C654C696E65446F63756D656E746174696F6E436F6D6D656E74547269766961004D756C74694C696E65446F63756D656E746174696F6E436F6D6D656E745472697669610044697361626C6564546578745472697669610050726570726F63657373696E674D65737361676554726976696100496644697265637469766554726976696100456C696644697265637469766554726976696100456C736544697265637469766554726976696100456E64496644697265637469766554726976696100526567696F6E44697265637469766554726976696100456E64526567696F6E44697265637469766554726976696100446566696E6544697265637469766554726976696100556E646566446972656374697665547269766961004572726F72446972656374697665547269766961005761726E696E67446972656374697665547269766961004C696E6544697265637469766554726976696100507261676D615761726E696E6744697265637469766554726976696100507261676D61436865636B73756D446972656374697665547269766961005265666572656E63654469726563746976655472697669610042616444697265637469766554726976696100536B6970706564546F6B656E735472697669610041646445787072657373696F6E00537562747261637445787072657373696F6E004D756C7469706C7945787072657373696F6E0044697669646545787072657373696F6E004D6F64756C6F45787072657373696F6E004C656674536869667445787072657373696F6E005269676874536869667445787072657373696F6E004C6F676963616C4F7245787072657373696F6E004C6F676963616C416E6445787072657373696F6E00426974776973654F7245787072657373696F6E0042697477697365416E6445787072657373696F6E004578636C75736976654F7245787072657373696F6E00457175616C7345787072657373696F6E004E6F74457175616C7345787072657373696F6E004C6573735468616E45787072657373696F6E004C6573735468616E4F72457175616C45787072657373696F6E00477265617465725468616E45787072657373696F6E00477265617465725468616E4F72457175616C45787072657373696F6E00497345787072657373696F6E00417345787072657373696F6E00436F616C6573636545787072657373696F6E0053696D706C654D656D62657241636365737345787072657373696F6E00506F696E7465724D656D62657241636365737345787072657373696F6E00436F6E646974696F6E616C41636365737345787072657373696F6E00506172656E74686573697A656445787072657373696F6E00456C656D656E7441636365737345787072657373696F6E00417267756D656E744C69737400427261636B65746564417267756D656E744C69737400417267756D656E74004E616D65436F6C6F6E004361737445787072657373696F6E00416E6F6E796D6F75734D6574686F6445787072657373696F6E0053696D706C654C616D62646145787072657373696F6E00506172656E74686573697A65644C616D62646145787072657373696F6E004F626A656374496E697469616C697A657245787072657373696F6E00436F6C6C656374696F6E496E697469616C697A657245787072657373696F6E004172726179496E697469616C697A657245787072657373696F6E00416E6F6E796D6F75734F626A6563744D656D6265724465636C617261746F7200436F6D706C6578456C656D656E74496E697469616C697A657245787072657373696F6E004F626A6563744372656174696F6E45787072657373696F6E00416E6F6E796D6F75734F626A6563744372656174696F6E45787072657373696F6E0041727261794372656174696F6E45787072657373696F6E00496D706C6963697441727261794372656174696F6E45787072657373696F6E00537461636B416C6C6F6341727261794372656174696F6E45787072657373696F6E004F6D6974746564417272617953697A6545787072657373696F6E00496E746572706F6C61746564537472696E6745787072657373696F6E00496D706C69636974456C656D656E744163636573730053696D706C6541737369676E6D656E7445787072657373696F6E0041646441737369676E6D656E7445787072657373696F6E00537562747261637441737369676E6D656E7445787072657373696F6E004D756C7469706C7941737369676E6D656E7445787072657373696F6E0044697669646541737369676E6D656E7445787072657373696F6E004D6F64756C6F41737369676E6D656E7445787072657373696F6E00416E6441737369676E6D656E7445787072657373696F6E004578636C75736976654F7241737369676E6D656E7445787072657373696F6E004F7241737369676E6D656E7445787072657373696F6E004C656674536869667441737369676E6D656E7445787072657373696F6E005269676874536869667441737369676E6D656E7445787072657373696F6E00556E617279506C757345787072657373696F6E00556E6172794D696E757345787072657373696F6E00426974776973654E6F7445787072657373696F6E004C6F676963616C4E6F7445787072657373696F6E00507265496E6372656D656E7445787072657373696F6E0050726544656372656D656E7445787072657373696F6E00506F696E746572496E646972656374696F6E45787072657373696F6E00416464726573734F6645787072657373696F6E00506F7374496E6372656D656E7445787072657373696F6E00506F737444656372656D656E7445787072657373696F6E00417761697445787072657373696F6E00547970654F6645787072657373696F6E0053697A654F6645787072657373696F6E00436865636B656445787072657373696F6E00556E636865636B656445787072657373696F6E004D616B6552656645787072657373696F6E0052656656616C756545787072657373696F6E005265665479706545787072657373696F6E00436865636B6564466163746F727900547279466163746F727900556E636865636B6564466163746F7279004461746554696D6545787072657373696F6E0054696D6545787072657373696F6E00427265616B5F416C6C00427265616B5F4F7574657200436865636B65645F4E756C6C004578636C75736976654F7241737369676E6D656E74416C7465726E617469766545787072657373696F6E004578636C75736976654F72416C7465726E617469766545787072657373696F6E004578706F6E656E7445787072657373696F6E004578706F6E656E7441737369676E6D656E7445787072657373696F6E004E6F74457175616C73416C7465726E617469766545787072657373696F6E0048657861646563696D616C004C69746572616C004E756D626572004F70657261746F720054726976696100556E69636F6465005265616C00526F6F7400416E6F6E796D6F7573426F6479436F6E7461696E65720042696E617279436F6E7461696E657200426F6479436F6E7461696E65720045787072657373696F6E436F6E7461696E65720047726F75704172726179436F6E7461696E65720047726F7570436F6E7461696E657200526F6F74436F6E7461696E657200556E617279436F6E7461696E6572004E756D62657255004E756D6265724C004E756D626572554C004E756D62657246004E756D62657244004E756D6265724D004D6574686F6441636365737345787072657373696F6E00526567756C6172537472696E6753696E676C6551756F746500526567756C6172537472696E67446F75626C6551756F746500566572626174696D537472696E6753696E676C6551756F746500566572626174696D537472696E67446F75626C6551756F746500496E746572706F6C61746564537472696E6753696E676C6551756F746500496E746572706F6C61746564537472696E67446F75626C6551756F746500436865636B656447726F757045787072657373696F6E00436865636B6564426F647945787072657373696F6E00436865636B65644E756C6C45787072657373696F6E00556E636865636B656447726F757045787072657373696F6E00556E636865636B6564426F647945787072657373696F6E0047656E657269635479706545787072657373696F6E00506C7573506C7573546F6B656E004D696E75734D696E7573546F6B656E004E756C6C61626C655479706545787072657373696F6E00436F6C6F6E436F6C6F6E546F6B656E004D696E7573477265617465725468616E546F6B656E00547279436F6D70696C6545787072657373696F6E00466163746F7269616C45787072657373696F6E00446973706F7365547970654F72426974776973654E6F7445787072657373696F6E00427265616B416C6C4B6579776F726400427265616B4F757465724B6579776F7264004949464B6579776F72640052616E6765417272617945787072657373696F6E004D656D626572416363657373416C7465726E617469766545787072657373696F6E00436F6E646974696F6E616C4D656D62657241636365737345787072657373696F6E00436F6E646974696F6E616C4D6574686F6441636365737345787072657373696F6E00436F6E646974696F6E616C4D6574686F6447656E6572696341636365737345787072657373696F6E00436F6E646974696F6E616C496E64657841636365737345787072657373696F6E00496E64657841636365737345787072657373696F6E004D6574686F6445787072657373696F6E00436F6D6D61436F6E7461696E65720047726F7570506172616D65746572436F6E7461696E657200426F647945787072657373696F6E004D6574686F645661726961626C654F725374617469634D656D62657241636365737345787072657373696F6E00416E6F6E796D6F7573426F64794F72506172616D6574657245787072657373696F6E004861736848617368546F6B656E004E6F6E65004D6574686F6447656E6572696341636365737345787072657373696F6E0053796E7461784E6F646500EE86B500EE86B600EE86B700EE86B800EE86B900EE86BA00EE86BB00EE86BC00EE86BD00EE86BE00EE86BF00EE878000EE878100EE878200EE878300EE878400EE878500EE878600EE878700EE878800EE878900EE878A00EE878B00EE878C00EE878D00EE878E00EE878F00EE879000EE879100EE879200EE879300EE879400EE879500EE879600EE879700EE879800EE879900EE879A00EE879B00EE879C00EE879D00EE879E00EE879F00EE87A000EE87A100EE87A200EE87A300EE87A400EE87A500EE87A600EE87A700EE87A800EE87A900EE87AA00EE87AB00EE87AC00EE87AD00EE87AE00EE87AF00EE87B000EE87B100EE87B200EE87B300EE87B400EE87B500EE87B600EE87B700EE87B800EE87B900EE87BA00EE87BB00EE87BC00EE87BD00EE87BE00EE87BF00EE888000EE888100EE888200EE888300EE888400EE888500EE888600EE888700EE888800EE888900EE888A00EE888B00EE888C0053796E746178506172736572005A2E45787072657373696F6E732E436F6465416E616C797369732E43536861727000EE888D006765745FEE808600EE888E00EE888F00EE889000EE889100EE889200EE889300EE889400506172736554657874007465787400EE88950044656C656761746500436F6D62696E6500EE889600EE889700EE889800EE889900EE889A00EE889B00EE889C00EE889D00EE889E00EE889F00EE88A000EE88A100EE88A20049734C657474657200556E65736361706500EE88A300EE88A400EE88A500EE88A600EE88A700EE88A800EE88A900EE88AA00EE88AB00EE88AC00EE88AD0052656D6F766552616E676500EE88AE00EE88AF00EE88B000EE88B100EE88B200EE88B300EE88B400EE88B500EE88B600EE88B700EE88B800EE88B900EE88BA00EE88BB00EE88BC00EE88BD00EE88BE00EE88BF00EE898000EE898100EE898200EE898300EE898400EE8985005400436F6D70696C6174696F6E52656C61786174696F6E734174747269627574650052756E74696D65436F6D7061746962696C6974794174747269627574650044656275676761626C654174747269627574650053797374656D2E446961676E6F737469637300446562756767696E674D6F64657300417373656D626C795469746C6541747472696275746500417373656D626C794465736372697074696F6E41747472696275746500417373656D626C79436F6E66696775726174696F6E41747472696275746500417373656D626C79436F6D70616E7941747472696275746500417373656D626C7950726F6475637441747472696275746500417373656D626C79436F7079726967687441747472696275746500417373656D626C7954726164656D61726B41747472696275746500436F6D56697369626C654174747269627574650053797374656D2E52756E74696D652E496E7465726F705365727669636573004775696441747472696275746500417373656D626C7946696C6556657273696F6E417474726962757465005461726765744672616D65776F726B4174747269627574650053797374656D2E52756E74696D652E56657273696F6E696E67005375707072657373496C6461736D4174747269627574650000000D6F0062006A00650063007400000962006F006F006C0000096300680061007200000B7300620079007400650000096200790074006500000B730068006F0072007400000D7500730068006F0072007400000769006E0074000009750069006E00740000096C006F006E006700000B75006C006F006E006700000B66006C006F0061007400000D64006F00750062006C006500000F64006500630069006D0061006C00000D73007400720069006E006700000965006E0075006D0000176C006900630065006E00730065006E0061006D006500001B5B006C006900630065006E00730065006E0061006D0065005D000080CD54006800650020004C006900630065006E007300650020006E0061006D0065002000630061006E006E006F0074002000620065002000740068006500200070006C0061006300650068006F006C00640065007200200027005B006C006900630065006E00730065004E0061006D0065005D002E0020004D0061006B00650020007300750072006500200074006F002000750073006500200074006800650020006C006900630065006E007300650020006E0061006D0065002000700072006F00760069006400650064002E0001156C006900630065006E00730065006B006500790000195B006C006900630065006E00730065006B00650079005D000080C754006800650020004C006900630065006E007300650020006B00650079002000630061006E006E006F0074002000620065002000740068006500200070006C0061006300650068006F006C00640065007200200027005B006C006900630065006E00730065004B00650079005D002E0020004D0061006B00650020007300750072006500200074006F002000750073006500200074006800650020006C006900630065006E007300650020006B00650079002000700072006F00760069006400650064002E00015354006800650020004C006900630065006E007300650020004E0061006D0065002000630061006E006E006F00740020006200650020006E0075006C006C0020006F007200200065006D007000740079002E00005154006800650020004C006900630065006E007300650020004B00650079002000630061006E006E006F00740020006200650020006E0075006C006C0020006F007200200065006D007000740079002E00008145540068006500200073007500700070006F007200740020006F007200200074007200690061006C00200070006500720069006F006400200069007300200065007800700069007200650064002E00200050006C0065006100730065002000620075007900200061002000700072006F00640075006300740020006C006900630065006E007300650020006F007200200067006F00200074006F0020002700680074007400700073003A002F002F006700690074006800750062002E0063006F006D002F007A007A007A00700072006F006A0065006300740073002F004500760061006C002D00530051004C002E004E00450054002700200061006E006400200064006F0077006E006C006F0061006400200074006800650020006C0061007400650073007400200074007200690061006C002000760065007200730069006F006E002E0001176F0070005F0049006D0070006C006900630069007400001B41004C0054004500520020005400410042004C00450020005B00000F5D00200041004400440020000A0000032C000001000D42004900470049004E005400000742004900540000114400410054004500540049004D004500001144004500430049004D0041004C00280000032900000F44004500430049004D0041004C00000B46004C004F0041005400000749004E005400000B4D004F004E004500590000134E005600410052004300480041005200280000074D0041005800002155004E0049005100550045004900440045004E00540049004600490045005200001153004D0041004C004C0049004E005400000F540049004E00590049004E0054000015560041005200420049004E0041005200590028000017530051004C005F00560041005200490041004E005400000758004D004C00001755006E0073007500700070006F007200740065006400003555006E0073007500700070006F00720074006500640020005400790070006500200043006F00640065003A0020007B0030007D00003355006E0073007500700070006F007200740065006400200043006C007200200054007900700065003A0020007B0030007D00001D5B007B0030007D005D0020007B0031007D0020004E0055004C004C00000D530045004C004500430054000009460052004F004D00000D2000460052004F004D0020000021530045004C004500430054002000440049005300540049004E00430054002000003363006F006E007400650078007400200063006F006E006E0065006300740069006F006E0020003D002000740072007500650000095400650073007400000F530045004C004500430054002000000F2000460052004F004D00200028000003220000032700015B2900200041005300200053006F0075007200630065005400610062006C00650020005000490056004F0054002000280020004D00410058002800490044002900200046004F0052002000510074007900200049004E002000280000212900290020004100530020005000690076006F0074005400610062006C0065000009200041005300200000032000000F49006E00760061006C006900640000037B00000751007400790000055800320000032D00010D3000300030003000300030000081B34500520052004F0052005F003000300032003A0020005400680065002000700072006F007600690064006500640020006C006900630065006E007300650020006B0065007900200069007300200069006E00760061006C006900640020006F007200200074007200690061006C00200070006500720069006F006400200069007300200065007800700069007200650064002E00200050006C0065006100730065002000620075007900200061002000700072006F00640075006300740020006C006900630065006E007300650020006F007200200067006F00200074006F00200068007400740070003A002F002F007700770077002E007A007A007A00700072006F006A0065006300740073002E0063006F006D00200061006E006400200064006F0077006E006C006F0061006400200074006800650020006C0061007400650073007400200074007200690061006C002000760065007200730069006F006E002E0020004C006900630065006E007300650020004E0061006D0065003A00200027007B0030007D0027003B004C006900630065006E007300650020004B00650079003A00200027007B0031007D0027000181C94500520052004F0052005F003000300033003A0020005400680065002000700072006F007600690064006500640020006C006900630065006E007300650020006B0065007900200069007300200069006E00760061006C006900640020006F007200200074007200690061006C00200070006500720069006F006400200069007300200065007800700069007200650064002E00200050006C0065006100730065002000620075007900200061002000700072006F00640075006300740020006C006900630065006E007300650020006F007200200067006F00200074006F00200068007400740070003A002F002F007700770077002E007A007A007A00700072006F006A0065006300740073002E0063006F006D00200061006E006400200064006F0077006E006C006F0061006400200074006800650020006C0061007400650073007400200074007200690061006C002000760065007200730069006F006E002E0020004C006900630065006E007300650020004E0061006D0065003A00200027007B0030007D0027003B004C006900630065006E007300650020004B00650079003A00200027007B0031007D0027003B004D00440035002000490073007300750065003B000181DF4500520052004F0052005F003000300034003A0020005400680065002000700072006F007600690064006500640020006C006900630065006E007300650020006B0065007900200069007300200069006E00760061006C006900640020006F007200200074007200690061006C00200070006500720069006F006400200069007300200065007800700069007200650064002E00200050006C0065006100730065002000620075007900200061002000700072006F00640075006300740020006C006900630065006E007300650020006F007200200067006F00200074006F00200068007400740070003A002F002F007700770077002E007A007A007A00700072006F006A0065006300740073002E0063006F006D00200061006E006400200064006F0077006E006C006F0061006400200074006800650020006C0061007400650073007400200074007200690061006C002000760065007200730069006F006E002E0020004C006900630065006E007300650020004E0061006D0065003A00200027007B0030007D0027003B004C006900630065006E007300650020004B00650079003A00200027007B0031007D0027003B00450078007000690072006100740069006F006E0044006100740065003A00200027007B0032007D002700011579007900790079002D004D004D002D00640064000181954500520052004F0052005F003000300035003A00200054006800650020006D006F006E00740068006C007900200074007200690061006C00200070006500720069006F006400200069007300200065007800700069007200650064002E00200059006F0075002000630061006E00200065007800740065006E006400200079006F0075007200200074007200690061006C00200062007900200064006F0077006E006C006F006100640069006E006700200074006800650020006C00610074006500730074002000760065007200730069006F006E002000610073002000740068006500200062006500670069006E006E0069006E00670020006F00660020006500760065007200790020006D006F006E00740068002E0020004D006F0072006500200069006E0066006F0072006D006100740069006F006E002000630061006E00200062006500200066006F0075006E006400200068006500720065003A00200068007400740070003A002F002F006500760061006C002D00730071006C002E006E00650074002F0074007200690061006C000180C54500520052004F0052003A002000410020006D006500740068006F0064002000730074006100720074006500640020007400680065002000630075007200720065006E00740020006D006F006E0074006800200074007200690061006C0020006200650066006F007200650020007400680065002000560061006C00690064006100740065004C006900630065006E007300650020006D006500740068006F006400200068006100730020006200650065006E002000630061006C006C00650064002E0000434500520052004F0052003A0020004E006F0020006C006900630065006E0073006500200068006100730020006200650065006E002000610064006400650064002E000080B34500520052004F0052003A00200054006800650020005B006C006900630065006E00730065004E0061006D0065005D00200070006C0061006300650068006F006C006400650072002000200068006100730020006E006F00740020006200650065006E0020007200650070006C006100630065006400200062007900200074006800650020006C006900630065006E007300650020006E0061006D0065002000700072006F00760069006400650064002E000080AD4500520052004F0052003A00200054006800650020005B006C00690065006E00630065004B00650079005D00200070006C0061006300650068006F006C006400650072002000200068006100730020006E006F00740020006200650065006E0020007200650070006C006100630065006400200062007900200074006800650020006C006900630065006E007300650020006B00650079002000700072006F00760069006400650064002E000007340030003000004143006F006D00700069006C00650072002000450078007000720065007300730069006F006E002E004E004500540020002D002000420075006E0064006C006500010735003000300000274500760061006C002000450078007000720065007300730069006F006E002E004E0045005400000736003000300000194500760061006C002000530051004C002E004E004500540000137B0030007D007B0031007D007B0032007D0000053000300000177B0030007D003B007B0031007D003B007B0032007D00001F7B0030007D003B007B0031007D003B007B0032007D003B007B0033007D00002B7B0030007D003B007B0031007D007B0032007D007B0033007D003B007B0034007D003B007B0035007D0000317B0030007D007B0031007D003B007B0032007D007B0033007D007B0034007D003B007B0035007D003B007B0036007D0000808B2E00200054006800650020006500720072006F00720020006F006300630075007200720065006400200066006F0072002000650078007000720065007300730069006F006E00200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0000055C00220000808754006800650020006500720072006F00720020006F006300630075007200720065006400200066006F0072002000650078007000720065007300730069006F006E00200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0000694500760061006C0075006100740069006F006E0020006F0066002000740068006500200064006500630069006D0061006C00200063006F006E007300740061006E0074002000650078007000720065007300730069006F006E0020006600610069006C0065006400006F54006800650020006F007000650072006100740069006F006E0020006F0076006500720066006C006F0077007300200061007400200063006F006D00700069006C0065002000740069006D006500200069006E00200063006800650063006B006500640020006D006F00640065000080894F00700065007200610074006F007200200027007B0030007D0027002000630061006E006E006F00740020006200650020006100700070006C00690065006400200074006F0020006F0070006500720061006E006400730020006F00660020007400790070006500200027007B0031007D002700200061006E006400200027007B0032007D0027000107760061007200003D49006E00740065006700720061006C00200063006F006E007300740061006E007400200069007300200074006F006F0020006C006100720067006500001B47006500740045006E0075006D0065007200610074006F00720000114D006F00760065004E00650078007400000F430075007200720065006E0074000071430061006E006E006F0074002000740061006B00650020007400680065002000730069007A00650020006F0066002000610020007600610072006900610062006C00650020006F0066002000610020006D0061006E0061006700650064002000740079007000650020007B0030007D00000F44006900730070006F00730065000021520075006E00740069006D0065004500760065006E00740049006E0066006F000081294F006F00700073002100200073006F006D0065007400680069006E00670020006900730020006E006F0074002000790065007400200073007500700070006F0072007400650064002E0043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D00010B560061006C0075006500001154006F0053007400720069006E00670000037D000007300030003A00007B4F006F0070007300210020005400680065002000720061006E00670065002000650078007000720065007300730069006F006E00200069007300200069006E00760061006C00690064002E002000560061006C0069006400200066006F0072006D00610074003A002000270031002E002E00310030003000270001076F00750074000080F94F006F00700073002100200057006500200066006F00720067006F007400200074006F00200069006D0070006C0065006D0065006E0074002000610020006D006500740068006F006400200072006500710075006900720065006400200062007900200079006F007500720020007300630065006E006100720069006F002E00200050006C00650061007300650020007200650070006F007200740020007500730020007400680065002000660075006C006C00200073007400610063006B002000740072006100630065003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D000081254F006F00700073002100200054006800650020007400790070006500200063006F0075006C00640020006E006F007400200062006500200066006F0075006E0064002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D000181454F006F0070007300210020005400680065002000650078007000720065007300730069006F006E002000630061006E006E006F007400200068006100760065002000610020006C006500660074002000650078007000720065007300730069006F006E002E0043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D000181454F006F00700073002100200041006C006C002000650078007000720065007300730069006F006E00200061007400200074006800650020007200690067006800740020006D0075007300740020006200650020007200650073006F006C007600650064002E0043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D000181254F006F00700073002100200041002000670065006E006500720061006C0020006500720072006F007200200068006100730020006F0063006300750072007200650064002E0043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D0001032E0000032B00000360000081B14F006F00700073002100200054006800650020007400790070006500200063006F0075006C00640020006E006F007400200062006500200066006F0075006E0064002E0020004F006E006C007900200063006F006D006D006F006E00200074007900700065002000610072006500200072006500670069007300740065007200650064002000620079002000640065006600610075006C0074002E0020004D0061006B00650020007300750072006500200074006800650020007400790070006500200079006F007500200061007200650020007500730069006E006700200069007300200072006500670069007300740065007200650064003A002000680074007400700073003A002F002F006700690074006800750062002E0063006F006D002F007A007A007A00700072006F006A0065006300740073002F004500760061006C002D00450078007000720065007300730069006F006E002E004E00450054002F00770069006B0069002F004500760061006C0043006F006E0074006500780074002D00520065006700690073007400650072002D0026002D0055006E007200650067006900730074006500720001253C003E0066005F005F0041006E006F006E0079006D006F00750073005400790070006500000741006400640000196F0070005F0042006900740077006900730065004F007200001D6F0070005F004500780063006C00750073006900760065004F007200001B6F0070005F00420069007400770069007300650041006E00640000176F0070005F0045007100750061006C00690074007900001B6F0070005F0049006E0065007100750061006C0069007400790000176F0070005F004C006500730073005400680061006E0000256F0070005F004C006500730073005400680061006E004F00720045007100750061006C00001D6F0070005F0047007200650061007400650072005400680061006E00002B6F0070005F0047007200650061007400650072005400680061006E004F00720045007100750061006C0000196F0070005F004C0065006600740053006800690066007400001B6F0070005F00520069006700680074005300680069006600740000176F0070005F004100640064006900740069006F006E00001D6F0070005F005300750062007400720061006300740069006F006E0000176F0070005F004D0075006C007400690070006C00790000176F0070005F004400690076006900730069006F006E0000156F0070005F004D006F00640075006C00750073000081314F006F00700073002100200041006E00200061006D0062006900670069006F007500730020006D0065006D00620065007200200068006100730020006200650065006E00200066006F0075006E0064002E0043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D0001196F0070005F00440065006300720065006D0065006E00740000196F0070005F0049006E006300720065006D0065006E00740000196F0070005F0055006E0061007200790050006C007500730000216F0070005F0055006E006100720079004E00650067006100740069006F006E00001B6F0070005F004C006F0067006900630061006C004E006F00740000236F0070005F004F006E006500730043006F006D0070006C0065006D0065006E007400000B460075006E00630060000081274F006F007000730021002000540068006500200070006100720061006D006500740065007200200063006F0075006E007400200069007300200069006E00760061006C006900640043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D000109460075006E0063000017520075006E00740069006D006500540079007000650000053F002E000011470065007400560061006C007500650000734F00700065007200610074006F007200200027007B0030007D0027002000630061006E006E006F00740020006200650020006100700070006C00690065006400200074006F0020006F0070006500720061006E00640020006F00660020007400790070006500200027007B0031007D002700010750006F007700000D43006F006E0063006100740000033B0000035F0000096700650074005F00000D45007100750061006C00730000176700650074005F00440065006600610075006C0074000017470065007400480061007300680043006F0064006500000554005F000081194500720072006F0072003A00200030003000310033003A0020004F006F00700073002100200041002000670065006E006500720061006C0020006500720072006F007200200068006100730020006F0063006300750072007200650064002E00200050006C00650061007300650020007200650070006F00720074002000740068006500200069007300730075006500200069006E0063006C007500640069006E0067002000740068006500200073007400610063006B00200074007200610063006500200074006F0020006F0075007200200073007500700070006F007200740020007400650061006D003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D0000809754006800650020006C006100620065006C00200027007B0030007D002700200073006800610064006F0077007300200061006E006F00740068006500720020006C006100620065006C0020006200790020007400680065002000730061006D00650020006E0061006D006500200069006E0020006100200063006F006E007400610069006E00650064002000730063006F0070006500013555006E0065007800700065006300740065006400200075006E007200650073006F006C0076006500640020006A0075006D0070000080A955006E0065007800700065006300740065006400200075006E007200650073006F006C0076006500640020006A0075006D007000200066006F00720020006B006500790077006F007200640020006F00720020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E00000F530079007300740065006D002E0000812D410020006C006F00630061006C0020006F007200200070006100720061006D00650074006500720020006E0061006D0065006400200027007B0030007D0027002000630061006E006E006F00740020006200650020006400650063006C006100720065006400200069006E00200074006800690073002000730063006F0070006500200062006500630061007500730065002000740068006100740020006E0061006D00650020006900730020007500730065006400200069006E00200061006E00200065006E0063006C006F00730069006E00670020006C006F00630061006C002000730063006F0070006500200074006F00200064006500660069006E0065002000610020006C006F00630061006C0020006F007200200070006100720061006D00650074006500720001794F006F0070007300210020004E006F0020006100700070006C0069006300610062006C00650020006D0065006D00620065007200200068006100730020006200650065006E00200066006F0075006E006400200066006F00720020007400680065002000650078007000720065007300730069006F006E00004D4F006F00700073002100200041006D0062006900670075006F007500730020006D006100740063006800200066006F0075006E006400200066006F0072003A00200027007B0030007D002700010F49006E00640065007800650072000017450078007000720065007300730069006F006E006000003357006800650072006500530065006C006500630074004C006900730074004900740065007200610074006F0072006000320000174900470072006F007500700069006E00670060003200000761006C006C00000B6F00750074006500720000053E003E00006755006E0073007500700070006F007200740065006400200074006F006B0065006E00200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E000080B14D0069007300730069006E00670020006C006500660074002000650078007000720065007300730069006F006E00200066006F0072002000620069006E0061007200790020006B006500790077006F007200640020006F00720020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E000080B34D0069007300730069006E0067002000720069006700680074002000650078007000720065007300730069006F006E00200066006F0072002000620069006E0061007200790020006B006500790077006F007200640020006F00720020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E000080A155006E006500780070006500630074006500640020006D0061006E007900200022007B0030007D0022002000650078007000720065007300730069006F006E00200069006E0020007300770069007400630068002000730074006100740065006D0065006E007400200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E000080CD55006E00650078007000650063007400650064002000670065006E006500720061006C0020006500720072006F00720020006F0063006300750072006500640020007700690074006800200074006F006B0065006E00200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E002000530065006500200069006E006E0065007200200065007800630065007000740069006F006E003A0020007B0033007D00006D55006E0073007500700070006F007200740065006400200070006100720061006D00650074006500720020006C00690073007400200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0000808355006E0065007800700065006300740065006400200075006E00680061006E0064006C00650064002000650078007000720065007300730069006F006E00200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E000080AF4D0069007300730069006E00670020006C006500660074002000650078007000720065007300730069006F006E00200066006F007200200075006E0061007200790020006B006500790077006F007200640020006F00720020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E000080BD55006E006500780070006500630074006500640020006C006500660074002000650078007000720065007300730069006F006E00200066006F0072002000700072006500200075006E0061007200790020006B006500790077006F007200640020006F00720020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E000080B14D0069007300730069006E0067002000720069006700680074002000650078007000720065007300730069006F006E00200066006F007200200075006E0061007200790020006B006500790077006F007200640020006F00720020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E00006B55006E0073007500700070006F00720074006500640020006B006500790077006F0072006400200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E00006D55006E0073007500700070006F00720074006500640020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E000080C14D0069007300730069006E00670020007700680069006C00650020006B006500790077006F0072006400200069006E002000220064006F0022002000730074006100740065006D0065006E0074002E00200046006F0075006E006400200069006E007300740065006100640020006B006500790077006F0072006400200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0000809B4D0069007300730069006E006700200063006F006C006F006E0020006F00700065007200610074006F007200200027003A002700200066006F00720020007400650072006E006100720079002000650078007000720065007300730069006F006E00200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E000180A34D0069007300730069006E006700200063006F006C006F006E0020006F00700065007200610074006F007200200027003A002700200066006F0072002000730077006900740063006800200063006100730065002000650078007000720065007300730069006F006E00200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E000180A755006E00650078007000650063007400650064002000700061007200730065007200200065006E006400200020007700690074006800200075006E007200650073006F006C00760065006400200074006F006B0065006E0020006C00650066007400200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E00000B660061006C007300650000096E0075006C006C0000097400720075006500000976006F0069006400000561007300000B62007200650061006B0000096300610073006500000B63006100740063006800000F63006800650063006B0065006400000B63006F006E0073007400001163006F006E00740069006E0075006500000F640065006600610075006C007400000564006F00000965006C0073006500000F660069006E0061006C006C007900000766006F007200000F66006F0072006500610063006800000967006F0074006F00000569006600000569006E0000056900730000076E00650077000007720065006600000D720065007400750072006E00000D730069007A0065006F006600000D730077006900740063006800000B7400680072006F0077000007740072007900000D74007900700065006F006600001375006E0063006800650063006B0065006400000B7500730069006E006700000B7700680069006C00650000116100620073007400720061006300740000096200610073006500000B63006C006100730073000011640065006C0065006700610074006500000B6500760065006E00740000116500780070006C006900630069007400000D650078007400650072006E00000B66006900780065006400001169006D0070006C006900630069007400001369006E007400650072006600610063006500001169006E007400650072006E0061006C0000096C006F0063006B0000136E0061006D0065007300700061006300650000116F00700065007200610074006F00720000116F007600650072007200690064006500000D70006100720061006D007300000F70007200690076006100740065000013700072006F00740065006300740065006400000D7000750062006C0069006300001172006500610064006F006E006C007900000D7300650061006C0065006400001573007400610063006B0061006C006C006F006300000D730074006100740069006300000D73007400720075006300740000097400680069007300000D75006E007300610066006500000F7600690072007400750061006C00001176006F006C006100740069006C00650000037E00000321000003280000033D0000035B0000035D0000033A0000033C0000033E0000033F0000052B002B0000052D002D0001052B003D0000052D003D0001052A003D0000052F003D00000525003D00000526003D0000055E003D0000057C003D0000073C003C003D0000073E003E003D0000053F003F0000053D003E0000057C007C0000052600260000037C0000035E000003260000053D003D00000521003D0000053C003D0000053E003D0000053C003C0000032A0000032F000003250000053F005B0000054000270001054000220000052400270001052400220000052F002F0000052F002A000003230000053A003A0000052D003E0001055E007C0000075E007C003D0000055E005E0000075E005E003D0000053C003E0000052E002E00000740002400270001074000240022000007240040002700010724004000220000052300230000097B00230075007D0000097B00230055007D0000097B0023006C007D0000097B0023004C007D00000B7B00230075006C007D00000B7B00230075004C007D00000B7B00230055006C007D00000B7B00230055004C007D00000B7B0023006C0075007D00000B7B0023006C0055007D00000B7B0023004C0075007D00000B7B0023004C0055007D0000097B00230066007D0000097B00230046007D0000097B00230064007D0000097B00230044007D0000097B0023006D007D0000097B0023004D007D0000057B00230000809355006E0065007800700065006300740065006400200065006E00640020006F006600200073007400720069006E00670020007700690074006800200075006E0063006C006F00730065006400200073007400720069006E006700200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E00007D55006E007200650063006F0067006E0069007A006500640020006500730063006100700065002000730065007100750065006E0063006500200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0000055C005C0000035C0000055C0030000003000000055C0061000003070001055C0062000003080001055C00660000030C0000055C006E0000030A0000055C00720000030D0000055C0074000003090000055C00760000030B00000D46006F0072006D0061007400006F55006E0073007500700070006F0072007400650064002000630068006100720061006300740065007200200027007B0030007D002700200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0001000034309C5FBC4D814DB7AE50511BD51F500008B77A5C561934E0890307010E0600011209110D07000202120912090320000E0500010E12090320000104010000000B0615125501151259020E0E0300000205000102100E0407011210050002020E0E042001010E040001020E0A15126101151259020E0E052002011C180A15125501151259020E0E0920010215126101130006151259020E0E0720020113001301052001011300050002010E0E0300000102060E0420001300042000130109200102151259020E0E0906151269021209116D0A000312751279120912710A000312711279120912710C0004127512791209127112710C0004127112791209127112710620020212090208000302127D1209020520001D12090700011D12091209060001116D12090507021218020520010212090920011D12808111808509151280890212808102131001020215128091011E0015128089021E0002050A01128081032000020500010212090420001209070001120912809508151269021209116D03061209062001021280810306130002060203061301081512200213001301052001011301042800130108061512809D011300061512240113000A2001011512809D0113000420010102071512809D01130003280002042800130002061C0320001C042001011C0328000E0328001C0F0704151255011E001280A11C1280A506151255011E000520001280A1021E000C100101151255011E001280A9100704151255011280AD1280A11C1280A507151255011280AD0C0001151255011280AD1280B10807021280B51280B9062001011280BD062001081280B50800011280B51280BD0B07031280A11280C51280A50520001280C90420011C0E0600030E0E0E0E0900040E0E1280B50E0E0900040E0E0E0E1180D50C00050E0E1280B50E0E1180D50520020E0E0E0920021D0E1D0E1180D90900031D0E0E0E1180D904000000000700021D0E0E1D0E0807021D021D1280E10300000E0500020E0E0E0915128089021280E10E1A10020215128091011E0115128091011E0015128089021E001E01060A021280E10E0A00020E0E15128091010E0700020E1280B50E0707030E1180E90A0520001180E9032000050500010E1D1C0320000A0600010E1280E10A07031D1280E1081280ED0520001280F1032000080620011280ED080C00021D1280E11280B5101D020A07041280E11209116D0E072002010E1180E9082003010E1180E90A092004010E1180E905050500020E0E1C0A00021280E11280ED10020507011280E1021D05021D030206050B00031280E10E1280ED1209120704151255011280C51280A11280C51280A507151255011280C50C0001151255011280C51280B5030612300A0615128089021280E10E0600030E0E1C1C0620010E1280E1070615125501123C0606151255010E08070115118139010E05151255010E092000151181390113000615118139010E23070C0E0E1280B5151255010E15118139010E0E0E12813D1280BD1280A11280C51280A5072002080E1181410420010E080520020E08080620011D0E1D030815128089020E123C050A020E123C10100101151255011E0015128091011E00040A01123C081512808902123C021910010215128091011E0015128091011E0015128089021E00020D1512808902123C15128091010E1F10020215128091011E0115128091011E0015128089021E0015128091011E01050A02123C0E1110010115128091011E0015128091011E00030A010E072002010E12813D0420011C080500010E1D0E040001010E03061238090615128089020E123C09061512808902123C020E061512808902123C15128091010E052001123C0E05200102123C0A200115128091010E123C0407011D0E0507011180990520020808088144540068006500200073007500700070006F007200740020006F007200200074007200690061006C00200070006500720069006F006400200069007300200065007800700069007200650064002E00200050006C0065006100730065002000620075007900200061002000700072006F00640075006300740020006C006900630065006E007300650020006F007200200067006F00200074006F0020002700680074007400700073003A002F002F006700690074006800750062002E0063006F006D002F007A007A007A00700072006F006A0065006300740073002F004500760061006C002D00530051004C002E004E00450054002700200061006E006400200064006F0077006E006C006F0061006400200074006800650020006C0061007400650073007400200074007200690061006C002000760065007200730069006F006E002E000706151269020E0E04061180990206080306125008061512809D0112500500001180990600010111809903000008040001010804000101020A070212501511814D0102071512809D011250061511814D01020800001511814D01020A07041D051D05128151080500001281550520011D050E0620011D051D050420010E0E0620011281510E0400010E0E05000012816111070C0E11809912480E0E0E0E0E080808030420010803040001080E06151269020E0E062001130113000420001D03030A01030715128089020308131001020815128091011E0015128089021E0008042001030806200301080808080003020E0E118141090002021180991180990700040E0E1C1C1C070003020E0E10080500020108021B07051511814D01021511813901151259020E0E151259020E0E08020B1511813901151259020E0E0C1001011E0015128091011E00080A01151259020E0E030701020508001180990308000803080002030701080600020E0E1D1C0306124C080615128089020308042000125007061511814D01020820001511814D0102092001011511814D01020828001511814D01020306115404020000000706151269020E1C06151269020E1C063001011E000E07300102010E1E0080DE43006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D0081244F006F00700073002100200041002000670065006E006500720061006C0020006500720072006F007200200068006100730020006F0063006300750072007200650064002E0043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D0081284F006F00700073002100200073006F006D0065007400680069006E00670020006900730020006E006F0074002000790065007400200073007500700070006F0072007400650064002E0043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D0081244F006F00700073002100200054006800650020007400790070006500200063006F0075006C00640020006E006F007400200062006500200066006F0075006E0064002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D0081444F006F0070007300210020005400680065002000650078007000720065007300730069006F006E002000630061006E006E006F007400200068006100760065002000610020006C006500660074002000650078007000720065007300730069006F006E002E0043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D0081444F006F00700073002100200041006C006C002000650078007000720065007300730069006F006E00200061007400200074006800650020007200690067006800740020006D0075007300740020006200650020007200650073006F006C007600650064002E0043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D0081304F006F00700073002100200041006E00200061006D0062006900670069006F007500730020006D0065006D00620065007200200068006100730020006200650065006E00200066006F0075006E0064002E0043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D0081264F006F007000730021002000540068006500200070006100720061006D006500740065007200200063006F0075006E007400200069007300200069006E00760061006C006900640043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D0081264F006F00700073002100200054006800650020006D006500740068006F006400200063006F0075006C00640020006E006F007400200062006500200066006F0075006E0064002E0043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E0020006F007200200069006600200079006F0075002000620065006C00690065007600650020006900740027007300200061006E0020006500720072006F00720020006F006E0020006F0075007200200070006100720074003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D00808654006800650020006500720072006F00720020006F006300630075007200720065006400200066006F0072002000650078007000720065007300730069006F006E00200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0080A855006E0065007800700065006300740065006400200075006E007200650073006F006C0076006500640020006A0075006D007000200066006F00720020006B006500790077006F007200640020006F00720020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E003455006E0065007800700065006300740065006400200075006E007200650073006F006C0076006500640020006A0075006D00700070430061006E006E006F0074002000740061006B00650020007400680065002000730069007A00650020006F0066002000610020007600610072006900610062006C00650020006F0066002000610020006D0061006E0061006700650064002000740079007000650020007B0030007D007E4F00700065007200610074006F007200200027007B0030007D002700200069007300200061006D0062006900670075006F007500730020006F006E0020006F0070006500720061006E006400730020006F00660020007400790070006500200027007B0031007D002700200061006E006400200027007B0032007D0027003C49006E00740065006700720061006C00200063006F006E007300740061006E007400200069007300200074006F006F0020006C006100720067006500724F00700065007200610074006F007200200027002D0027002000630061006E006E006F00740020006200650020006100700070006C00690065006400200074006F0020006F0070006500720061006E00640020006F006600200074007900700065002000270075006C006F006E006700270080884F00700065007200610074006F007200200027007B0030007D0027002000630061006E006E006F00740020006200650020006100700070006C00690065006400200074006F0020006F0070006500720061006E006400730020006F00660020007400790070006500200027007B0031007D002700200061006E006400200027007B0032007D00270080D6430061006E006E006F007400200069006D0070006C0069006300690074006C007900200063006F006E007600650072007400200074007900700065002000270064006500630069006D0061006C002700200074006F0020002700620079007400650027002E00200041006E0020006500780070006C006900630069007400200063006F006E00760065007200730069006F006E00200065007800690073007400730020002800610072006500200079006F00750020006D0069007300730069006E00670020006100200063006100730074003F0029006E54006800650020006F007000650072006100740069006F006E0020006F0076006500720066006C006F0077007300200061007400200063006F006D00700069006C0065002000740069006D006500200069006E00200063006800650063006B006500640020006D006F0064006500724F00700065007200610074006F007200200027007B0030007D0027002000630061006E006E006F00740020006200650020006100700070006C00690065006400200074006F0020006F0070006500720061006E00640020006F00660020007400790070006500200027007B0031007D002700684500760061006C0075006100740069006F006E0020006F0066002000740068006500200064006500630069006D0061006C00200063006F006E007300740061006E0074002000650078007000720065007300730069006F006E0020006600610069006C0065006400812C410020006C006F00630061006C0020006F007200200070006100720061006D00650074006500720020006E0061006D0065006400200027007B0030007D0027002000630061006E006E006F00740020006200650020006400650063006C006100720065006400200069006E00200074006800690073002000730063006F0070006500200062006500630061007500730065002000740068006100740020006E0061006D00650020006900730020007500730065006400200069006E00200061006E00200065006E0063006C006F00730069006E00670020006C006F00630061006C002000730063006F0070006500200074006F00200064006500660069006E0065002000610020006C006F00630061006C0020006F007200200070006100720061006D006500740065007200809654006800650020006C006100620065006C00200027007B0030007D002700200073006800610064006F0077007300200061006E006F00740068006500720020006C006100620065006C0020006200790020007400680065002000730061006D00650020006E0061006D006500200069006E0020006100200063006F006E007400610069006E00650064002000730063006F007000650080AE4E0061006D0065006400200061007200670075006D0065006E0074002000730070006500630069006600690063006100740069006F006E00730020006D007500730074002000610070007000650061007200200061006600740065007200200061006C006C00200066006900780065006400200061007200670075006D0065006E00740073002000680061007600650020006200650065006E002000730070006500630069006600690065006400784F006F0070007300210020004E006F0020006100700070006C0069006300610062006C00650020006D0065006D00620065007200200068006100730020006200650065006E00200066006F0075006E006400200066006F00720020007400680065002000650078007000720065007300730069006F006E004C4F006F00700073002100200041006D0062006900670075006F007500730020006D006100740063006800200066006F0075006E006400200066006F0072003A00200027007B0030007D0027007A4F006F0070007300210020005400680065002000720061006E00670065002000650078007000720065007300730069006F006E00200069007300200069006E00760061006C00690064002E002000560061006C0069006400200066006F0072006D00610074003A002000270031002E002E00310030003000270080BA4F006F007000730021002000540068006500200066006F006C006C006F00770069006E00670020006D0065006D00620065007200200027007B0030007D00270020006900730020006E006F007400200073007500700070006F007200740065006400200069006E002000730061006600650020006D006F00640065002E00200054006800650020006D0065006D0062006500720020006D007500730074002000620065002000720065006700690073007400650072006500640081B04F006F00700073002100200054006800650020007400790070006500200063006F0075006C00640020006E006F007400200062006500200066006F0075006E0064002E0020004F006E006C007900200063006F006D006D006F006E00200074007900700065002000610072006500200072006500670069007300740065007200650064002000620079002000640065006600610075006C0074002E0020004D0061006B00650020007300750072006500200074006800650020007400790070006500200079006F007500200061007200650020007500730069006E006700200069007300200072006500670069007300740065007200650064003A002000680074007400700073003A002F002F006700690074006800750062002E0063006F006D002F007A007A007A00700072006F006A0065006300740073002F004500760061006C002D00450078007000720065007300730069006F006E002E004E00450054002F00770069006B0069002F004500760061006C0043006F006E0074006500780074002D00520065006700690073007400650072002D0026002D0055006E007200650067006900730074006500720080F84F006F00700073002100200057006500200066006F00720067006F007400200074006F00200069006D0070006C0065006D0065006E0074002000610020006D006500740068006F006400200072006500710075006900720065006400200062007900200079006F007500720020007300630065006E006100720069006F002E00200050006C00650061007300650020007200650070006F007200740020007500730020007400680065002000660075006C006C00200073007400610063006B002000740072006100630065003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D000700020E0E12810807070312813C080E0500020808080900030E0E12810812090700030E0E0E12090900040E0E0E12091209040612808112070812711209116D116D116D125D125D125D040001021C040001031C040001081C040001091C0400010A1C0400010B1C0400010C1C0400010D1C05000111411C0600011180991C06000112816D1C062002010E125D0600021C12091C10000412711280B012810812816D12816D0B07051271116D08125D125D0500011141080607021271127115000312711280B012810815128175031271127112710E0705127112816D12816D12091209090002128179127112090B151281750312711271127108200213021300130105200011817D19000512711280B01281081271127115128175031271127112710E070512711271127112816D12816D060702127112090B151281750312711209127115000312711280B01281081512817503127112091271818407808F1268021271118104020815125501151259021281081271120908090A0B08090A0B0C0D11410C0D114111541280B012818112711280B0127112711271127112711280B012808112818512818912808112818D12819112091281891280B01271127112711281811271127112711209116D12641271127115125501128195151181390112810812810812819515128089021281081271127102151255011281990212711281081209127111541280B01271127112818512819D12818512819D1280B012711271128181127112711271127112818D12711271127112091271127112816D12816D128081128081120912816D12816D12816D151255011209127112711280B01281A11281081281A51280B01281A51280B01281A11271127115125501127108128108127112816D12816D080815125501127108081280B0128108151255011271128108128108128108081281081281A11281A11281A112810815118139011512590212810812711512590212810812711271127112091271127112090E0500001281A90C0004020E1181AD1281B110080C0004020E1181AD1281B110090C0004020E1181AD1281B1100A0C0004020E1181AD1281B1100B0C0004020E1181AD1281B1100C0C0004020E1181AD1281B1100D0D0004020E1181AD1281B11011410800011281B91281A50700011281BD12090800011281C11281A5061512550112710500001281BD0B00031281811271127112710A00021281C512711281A507151255011281080520011300080900021281C9127112710620011280810E090002021280811280810A000212818512711280810900021281A11271127106200112818D0E0A0002128191127112818D0D00031281C512711281A51281A5090002128181127112710900021281CD127112090A00021281B91281A5127107151255011281950815118139011281080A15128089021281081271070A0212810812710E00021281951271151280910112710520001D13000D00031281D1127112711D12819507000112817912710500001281790715125501128199090002128199120912710B000212819D12711D12819909000212819D127112710D000312819D127112711D128199042000127104061D12090E000412818512710E1D12091D12710800011281C91D12710C00031281A1127112711280810920021280810E1D12090C000312818512808112711271091512808902127112710520020103080A15128089021281081209070A021281081209040A0112090900021180990E1281B10900021181D50E1281B10C00011281C915128091011271060002020E10080D15125501151259021281081271091512590212810812710E151181390115125902128108127107200112091D120908000212816D1C12090D000412711280B012810812710201000C000312091280B012810810080B000312091280B01281080227070B12091181041281081512550112090215118139011281081281081512550112090212810808061512550112090500020E1C1C05200112090810000512091280B01281081281511008028113074F12741271120912810812810812701281D9151255011281D91D1281D91281081D127D151269020E1271151255011271151181390112810812810812810812711D127D08127D12711281081281DD151255011271151255011281E1128108128108124D12711281E1151255011281E1128108128108124D12711281E11512550112711281081271080808127112816D127815125501151259020E12711280B01281D91281891280810E1281080E1511813901151259020E1271151259020E12711281D91281081281081281D91D1281D91281081D127D151269020E12711512550112711281081281081271127D12711281081281DD151255011281E1128108128108124D12711281E11512550112711281DD0820011281D91D1209090002021281D91281D90620001D1281D90915128089021281D902050A011281D907151255011281D90520001D127D1210010215128091011E0015128091011E0008040A01127D07151281E901127D0615125501127D0A200101151281E9011300042001020E07151255011281E107151269020E12710820020213001013010A200101151280910113000800011281DD1281D907000202124D124D0620011281ED0E0900021281E1124D12711000021281F11281DD15128091011281F5040A011271092000151281F90112710F00021281FD1281DD151280910112711810010215128091011E0015128091011E0015128091011E000F00021281DD1281D915128091011271062002010813000E000212820112091512809101127108151281E9011281080B15125501151259020E127107151259020E1271050A011281080C1511813901151259020E127107151269020E12090520010213000820011280811D12090E000412818512711280811271127107151255011282090A000212711280B01281082B070C127112711512550112711282011209151181390112810812810812711271120915125501127112810807070212711181040C000412711280B012810802020C000412711280B012810802080B000312711280B0128108020C000412711280B012810803030C000412711280B012810803080500020D0D0D0C000412711280B012810808080B000312711280B0128108080C000412711280B012810809090C000412711280B012810809080B000312711280B0128108090C000412711280B01281080A0A0C000412711280B01281080A080B000312711280B01281080A0C000412711280B01281080B0B0C000412711280B01281080B080B000312711280B01281080B0C000412711280B01281080C0C0B000312711280B01281080C0C000412711280B01281080D0D0B000312711280B01281080D08000211411141114107000202114111410E000412711280B012810811411141060001114111410C000312711280B012810811410B00021181D511809911809910000412711280B01281081180991180990C000412711280B01281080E0E0C000412711280B01281080E080B000312711280B01281080E0B0003011280B0124D1281080D1001020215128091011E001E001D0706151255011280A015118139011281081281081280A011810412810807151255011280A00F0002151255011280A01280B01281082007071512550112711512550112091511813901128108128108127112091181040B00021280A01280B01281080A0704116D116D1209116D0800021209120912090B0705116D116D1C116D116D0A0002116D12816D12816D040701127C0F0003151255011280811280B012090E2D070A12711209120915125501128081151255011280811512550112711D120915128091011280811280881181040D1001011D1E0015128091011E000F0002128185128081151280910112710E000412711280B0128108127112711C070712711209151255011280811512550112711D120912808811810407151255011280810C000312711280B012810812711907091280B01D1209081512550112818912710812090E12818907151255011281891100031282111209127115128091011281890C000312711280B012091281081307061280B0151255011281890812090E1281890F00021282111271151280910112818910000312711280B01281081512550112091907091D12091280B0151255011281890812710812090E1281890F000412711280B0128108128081127D0507011280A00E00021282151271151280910112710C0702151255011280A01280B4110003128215127112818D1512809101127120070912808012816D151255011280A00E127112711512809101127112711280B40A15128089021280A01271070A021280A012710E000212821912711512809101127111000312818512711280811512809101127114000512711280B01281081209127115125501120929070D12808411808512711D12818D12818D12091280811D1281ED1281ED1D12821D12821D1D120912090D000312818512711280811D12710920011D12818D11808509151280890212818D02141001021E0015128091011E0015128089021E0002050A0112818D0900020212818D12818D0920011D1281ED1180850915128089021281ED02050A011281ED090002021281ED1281ED0A000212819112711281ED0420011C1C0920011D12821D11808509151280890212821D02050A0112821D0900020212821D12821D0820011D12091180850815128089021209020E000412711280B0128108120912710A07041271116D125D125D0D000312711280B012810812816D070702127112816D15000412711280B0128108127115128089021271127104061280B00B0615128089021281081271072001127112810807200112091281080306126C0C06151281750312711271127109061512808902127D020B0615128089021280A0127108200212711271127105200102127D07200112711280A004061280A00706151255011271081512808902127D02062001021281D905200101127D0306127406200101128108040612810804061181410620010212818D072002020E118141062001021281ED0620010212821D04061D127D040612818D0706151269020808030612710807011512550112710820001512550112710615126902080814070312809415125501128081151269021280810513151280890215118221020E15126902124D05020F0A0115118221020E15126902124D051A151280890215118221020E15126902124D051512822502124D05170A0215118221020E15126902124D051512822502124D050A0A011512822502124D051515128089021512822502124D0515128091011280810D0A021512822502124D051280810D151269020E15126902128081050815126902128081050B2000151282250213001301110005151255011280811280B01C12090E020620001D12818D0900021D12818D12090E140705151255011280881D1280810812808112808807151255011280881D000615125501128088120912711D1280811D12091512550112711280B0140705151255011280811D12818D0812818D1280810520001280810E0002151255011280811D12818D020507011D127D0800011D127D1280880607011D12818D10000312808812091D120915125501127106070212808808120003128088151255011280881D12091281080C0706081280880808081280880B00021280881280881280881D07091512550112711512550112710208127D12091512550112710812710B0001151255011271128088060702116D116D0700020812091209150706151255011280901D12091D1209081209128090071512550112809009151280890212809002050A011280900A15128089021280901209070A0212809012090B00021280811280881D12090B07051D127D08127D08127D090002011280811280901007061D12090812091281081D1209120908000201120912809023070C021512822901128090128090081281081D1209021D12091280811282110812809C0815128091011280900920001512822901130008151282290112809007151261011280900A000101151255011280900807011512550112090800011280811280882507121D127D1D12090208127D02081209120912816D081209120912710812816D128108127106000102128088080615125501128108040612808807061512550112090D15118221020E15126902124D051020010215118221020E15126902124D0504061280981B06151280890215118221020E15126902124D051512822502124D05160615128089021512822502124D0515128091011280810A06151280890212818D020A061512808902128090020B06151280890212809012090715126902124D051720011512822502124D0515118221020E15126902124D050D10010115128091011E001280A912200115128091011280811512822502124D050620010212809007200112091280900C2002011512550112711D1209040612822D04061282310D06151269020E151259020E12092A070615125501151259020E12091D12091281D91D12818D1511813901151259020E1271151259020E12710B15125501151259020E120907151259020E12090E1512808902151259020E120912090B0A02151259020E120912090E1512808902151259020E127112710B0A02151259020E127112711200031281DD1281D9151280910112711D124D120002127115125501151259020E12711281080D1512808902151259020E12090E0A0A02151259020E12090E0E00010E15125501151259020E12092F070F0E0E1280951D0E1D1282351282391512550112823D120908128235151259020E120912823D118241128245125D0C151269020E151259020E12090E20041280950E11824912091D12090715128089020E0E040A020E0E0820011D1282351D0E0C1512817503128235081282351B10020215128091011E0115128091011E0015128175031E00081E01080A02128235128235050A011282350E200312824D1182411182511D1209052000128239071512550112823D0B200312823D0E12091182550E20041282590E11825D12091D12090E20041282450E11824112091D1209040611826506200101118265092002011182651281ED062001011282450720020111826508040001011C120002120915125501151259020E12091281081C070712823912826D118271151181390112823D1281ED12808112808107200112826D12090520001182710820020111826512090920020111826512826D092002011182651182710620010111827108151181390112823D0C2003011182651280811D12090620001D1280810D0002011280951512550112823D160705128239151181390112823D1281ED12808112808105000012827D0B200212828112822D1182850620011282310E04061280A80F061512808902151259020E120912090F061512808902151259020E127112710E061512808902151259020E12090E080615128089020E0E0D061512817503128235081282350A061512808902128081020B20011209151259020E12090B20011271151259020E12710A20010E151259020E1209092002128235128235080C000312711280B012810812090906151269020E1281A504061281A50906151269020E12816D0906151269020E1281890806151269020E12710906151269021280810E0806151269020E12090806151281E901122804061180850806151224011281A50E06151269020E15126902128081050D06151269020E15126902124D050C06151269020E15122401127108151269020E1281A508151269020E12816D08151269020E12818908151269021280810E0B151269020E151224011271092000151281E90112280A200101151281E90112280F2000151269020E151269021280810510200101151269020E1512690212808105082000151269020E0E09200101151269020E0E0E2000151269020E15126902124D050F200101151269020E15126902124D05092000151269020E12090A200101151269020E1209190704127115118289020E12818915118221020E1281891281A50B20001511828902130013010915118289020E1281890B20001511822102130013010915118221020E1281890B20020108151280910113000A00021281C11281A512710B20001512828D02130013011400021281C915128091011281891512809101127107200212710212090807021281A51280B00600011281A50E0620011281A50E0920021281A50E1281080507011281A50700011281A512090500001281A50720011281A5120907151224011281A50820011281A5128108081512809D011281A50720021280B002020720011280B011540520001280B0040702020E07000312090E0202072002020E101209110705127112818912816D0E1512240112710615122401127109200312711280B00E020A2002010E1512240112710807021281891280B008000212818912090E08200212818912090E0507011181050500001181050720011281891209050701128189092800151281E90112280F2800151269020E1512690212808105082800151269020E0E0E2800151269020E15126902124D05092800151269020E120904061180C00306124D0806151255011280C40D070215128229011280C41280C40915128089021280C402050A011280C40815128091011280C40815128229011280C42B070C15125501127115118139011280C41280C415125501127112091D127108127112816D120912816D120907151255011280C40815118139011280C40B200115125501127112810804061280B80A0615128089021280C402062001021280C4040300000005061D1280A004061D12710306127D0C00021512550112818D1209020C07021280D01512550112808114151280890215118221020E151269021280810502100A0115118221020E15126902128081051C151280890215118221020E1512690212808105151282250212808105190A0215118221020E151269021280810515128225021280810516151280890215128225021280810515128091011280810E0A021512822502128081051280810B1512808902128081128081080A02128081128081160005151255011280811280B012090E021512550112091A07051280B4151255011280B4151181390112818D12818D1280B407151255011280B4071512550112818D08151181390112818D1700061280B41280B012711209151255011280A0021281082B070B1280D4151255011280811280B4151255011280B41280D8020E127115118139011280811280811280B40F151280890215118221021280810E020B0A0115118221021280810E11151280890215118221021280810E1280810E0A0215118221021280810E1280810815118139011280812100091280B41280B0127112090E151255011280A0021512550112091281081012710607021280B4080C00011280B4151255011280B42E0711081280B4081280C41280C41280B415118139011280C41280DC1280C41280B41280B408081D127D1D127D020807151261011280C40A200113001512610113000B00021280B41280B41280B40707031280B402021300041280B41280B01271124D151255011280A0160706151255011280BC1D12091D12091D12091D127D080A151280890212091280BC070A0212091280BC050A011280BC091512808902127D1209060A02127D12090A15128089021280C41209070A021280C412090915128089021280BC020A15128089021280BC1209070A021280BC1209060001021280B421070C081280E0120912091D12091D12091280E41D12091280BC1280E81280BC120907151261011280BC07151255011280BC130004011280B41D12091D1209151255011280BC50071B15118139011280C41280C412091280EC12711D12091280BC0215125501120912816D081280F01280BC12711280F41D12091280BC020215125501120912816D081280F81280BC1280FC1280BC1271170004011280B41D1209151255011280C4151255011280BC1307061D127D151255011280C40808127D1280C40D0002021280B4151255011280A0040701127D110004011280B4151255011280C41D127D0815070708127D1D1280A01280A012816D1280C41280C40A200215125501130008080915128089021280A002050A011280A0180005081280B4151255011280C41D127D151255011280A008100704151255011280A0128100081280C407151261011280A0092001081512610113000D1001021E0015128091011E0008042001010836071415118139011280C41280C41280C41280C4120908127112816D120912816D12710212816D120912816D127112711209120912816D0600011209120904061280CC1D06151280890215118221020E15126902128081051512822502128081051706151280890215128225021280810515128091011280811206151280890215118221021280810E1280810B06151280890212091280BC0A061512808902127D12090B0615128089021280C412090A0615128089021280BC020B0615128089021280BC12090A0615128089021280A0020E15118221020E151269021280810519200115128225021280810515118221020E151269021280810513200115128091011280811512822502128081050915118221021280810E0E200112808115118221021280810E0720011280BC12090620011209127D05070112816D07200112091280C4062001021280BC07200112091280BC062001021280A01120010215118221020E15126902128081050B1001010815128091011E0008200112808112808104061280D40C20010215118221021280810E04061280C40406118104040120000004022000000403200000040420000004052000000406200000040720000004082000000409200000040A200000040B200000040C200000040D200000040E200000040F2000000410200000041120000004122000000413200000041420000004152000000416200000041720000004182000000419200000041A200000041B200000041C200000041D2000000470200000047120000004722000000473200000047420000004752000000476200000047720000004782000000479200000047A200000047B200000047C200000047D200000047E200000047F2000000480200000048120000004822000000483200000048420000004852000000486200000048720000004882000000489200000048A200000048B200000048C200000048D200000048E200000048F2000000490200000049120000004922000000493200000049420000004952000000496200000049720000004982000000499200000049A200000049B200000049C200000049D200000049E200000049F20000004A020000004A120000004A220000004A320000004A420000004A520000004A620000004A720000004A820000004A920000004AA20000004AB20000004AC20000004AD20000004AE20000004AF20000004B020000004B120000004B220000004B320000004B420000004B520000004B620000004B720000004B820000004B920000004BA20000004BB20000004BC20000004BD20000004BE20000004BF20000004C0200000045B210000045C210000045D210000045E210000045F2100000460210000046121000004622100000463210000046421000004652100000466210000046721000004682100000469210000046A210000046B210000046C210000046D210000046E210000046F210000047021000004712100000472210000047321000004DC21000004DD21000004DE21000004DF21000004E021000004E121000004E221000004E321000004E421000004E521000004E621000004E721000004E821000004E921000004EA21000004EB21000004EC21000004ED21000004EE21000004EF21000004F021000004F121000004F221000004F321000004B821000004B921000004BA21000004BB21000004BC21000004BD21000004BE21000004BF21000004C021000004C121000004C221000004C321000004C421000004C521000004C621000004C721000004C821000004C921000004CA21000004CB21000004CC21000004CD21000004CE21000004CF21000004D0210000040A220000040B220000040C220000040D220000040E220000040F22000004102200000411220000041222000004132200000414220000041A220000041B220000041C220000041D220000041E220000041F2200000420220000042122000004222200000423220000042422000004382200000439220000043A220000043B220000043C220000043D220000043E220000043F22000004C832000004C932000004CA32000004CB32000004CC32000004CD32000004CE32000004CF32000004D032000004D132000004D232000004D332000004D432000004D532000004D632000004D732000004D832000004D932000004DA32000004DB32000004DC32000004DD32000004DE32000004DF32000004E032000004E132000004E232000004E332000004E432000004E532000004E632000004E732000004E832000004E932000004EA32000004EB32000004EC32000004ED32000004EE32000004EF32000004F032000004F132000004F232000004F332000004F432000004F532000004F632000004F732000004F832000004F932000004FA32000004FB32000004FC32000004FD32000004FE32000004FF3200000400330000040133000004023300000403330000040433000004053300000406330000040733000004083300000409330000040A330000040B330000040C330000040D330000040E330000040F3300000410330000041133000004123300000413330000041433000004153300000416330000040612813C062001011181040D200201118104151255011281080620010112813C08070402080812813C0700020212811C08070703020812813C05070112813C0600010212811C30070F12811012810815121C0212811C12810811810412810812813C128120128108128108128108128108128151080E080A15121C0212811C1281080F151281E90115121C0212811C128108071512809D01125D09151280890212811C020F000412810812811C128120128108020507011281080F000412810812811C128120128108080807021281081281080E00031281081281081281081281082A070C1281141281201281201281080215125501128108021281081512809D01125D1281081281081281080B000212810812811C1281200C00030112811C1281201281080807021281081281200C0702128120151255011281080907011512550112810808000112810812811C0B000212810812811C1281080C0702151255011281081281080F00021512550112810812811C1281200F000412810812811C128120021281080E000312810812811C1281201281080B000212810812810812810811000412810812811C128120128108128108040612811C042000125D0620010212811C08061512809D01125D04061281180A06151280890212811C02040612815105061D12813C05200012813C052000128151062001011281510620001D12813C072001011D12813C0D2002011181041512809D01125D062001021181040D2002021181041512809D01125D0600011281080E050A0112813C05200012810806200112813C080328000805280012813C0528001281510628001D12813C1006151281E90115121C0212811C1281080807021281241281200B00021282991282991282990900011281201D11810405070112812C0E0001128120151280890212811C0205061D1181040D20010115121C0212811C12810805070112812809151280890211810402050A011181040B0615121C0212811C1281080906151269020E1181041F07071512550112813C0812813C021181041512550112813C1512550112813C071512550112813C0D0001151280910112813C12815108151269020E1181040A070412813C12815108030620011281510309000212813C1281510810070812813C1281511281510E0802020310070812813C128151080202030E1181040400010203072002128151080311070912813C1281511281510802020202030E070612813C12815108030E11810407200212815108080A000312813C12815108080E07041512550112813C030312813C0D00021512550112813C128151080C070612813C12815108030E0E3D070E151255011512550112813C1281511512550112813C128151080808031512550112813C080812813C15118139011512550112813C1512550112813C0B151255011512550112813C062001128151080620011281511C0520020108080C15118139011512550112813C0C00011512550112813C12813C0A0704080312813C12813C80B04D0069007300730069006E00670020006C006500660074002000650078007000720065007300730069006F006E00200066006F0072002000620069006E0061007200790020006B006500790077006F007200640020006F00720020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0080B24D0069007300730069006E0067002000720069006700680074002000650078007000720065007300730069006F006E00200066006F0072002000620069006E0061007200790020006B006500790077006F007200640020006F00720020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0080A24D0069007300730069006E006700200063006F006C006F006E0020006F00700065007200610074006F007200200027003A002700200066006F0072002000730077006900740063006800200063006100730065002000650078007000720065007300730069006F006E00200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E00809A4D0069007300730069006E006700200063006F006C006F006E0020006F00700065007200610074006F007200200027003A002700200066006F00720020007400650072006E006100720079002000650078007000720065007300730069006F006E00200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0080824D0069007300730069006E00670020006F00700065007200610074006F007200200027003E002700200066006F0072002000670065006E00650072006900630020007400790070006500200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0080AE4D0069007300730069006E00670020006C006500660074002000650078007000720065007300730069006F006E00200066006F007200200075006E0061007200790020006B006500790077006F007200640020006F00720020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0080B04D0069007300730069006E0067002000720069006700680074002000650078007000720065007300730069006F006E00200066006F007200200075006E0061007200790020006B006500790077006F007200640020006F00720020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0080C04D0069007300730069006E00670020007700680069006C00650020006B006500790077006F0072006400200069006E002000220064006F0022002000730074006100740065006D0065006E0074002E00200046006F0075006E006400200069006E007300740065006100640020006B006500790077006F0072006400200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0080CC55006E00650078007000650063007400650064002000670065006E006500720061006C0020006500720072006F00720020006F0063006300750072006500640020007700690074006800200074006F006B0065006E00200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E002000530065006500200069006E006E0065007200200065007800630065007000740069006F006E003A0020007B0033007D0080A055006E006500780070006500630074006500640020006D0061006E007900200022007B0030007D0022002000650078007000720065007300730069006F006E00200069006E0020007300770069007400630068002000730074006100740065006D0065006E007400200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0080A655006E00650078007000650063007400650064002000700061007200730065007200200065006E006400200020007700690074006800200075006E007200650073006F006C00760065006400200074006F006B0065006E0020006C00650066007400200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E00809255006E0065007800700065006300740065006400200065006E00640020006F006600200073007400720069006E00670020007700690074006800200075006E0063006C006F00730065006400200073007400720069006E006700200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E00808255006E0065007800700065006300740065006400200075006E00680061006E0064006C00650064002000650078007000720065007300730069006F006E00200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E0080BC55006E006500780070006500630074006500640020006C006500660074002000650078007000720065007300730069006F006E00200066006F0072002000700072006500200075006E0061007200790020006B006500790077006F007200640020006F00720020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E007C55006E007200650063006F0067006E0069007A006500640020006500730063006100700065002000730065007100750065006E0063006500200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E006E55006E0073007500700070006F0072007400650064002000630068006100720061006300740065007200200027007B0030007D002700200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E006A55006E0073007500700070006F00720074006500640020006B006500790077006F0072006400200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E006C55006E0073007500700070006F00720074006500640020006F00700065007200610074006F007200200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E006655006E0073007500700070006F007200740065006400200074006F006B0065006E00200022007B0030007D002200200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E006C55006E0073007500700070006F007200740065006400200070006100720061006D00650074006500720020006C00690073007400200061007400200070006F0073006900740069006F006E0020007B0031007D0020006E00650061007200200022007B0032007D0022002E000700020E0E12813C0800030E0E12813C0E0900030E0E125D12813C0800030E0E12815108040702080E0B00050E0E1281510E08125D0C2005011181040E12815108080801000800000000001E01000100540216577261704E6F6E457863657074696F6E5468726F777301062001011182A90801000200000000001B0100165A2E45787072657373696F6E732E436F6D70696C657200003001002B436F6D70696C65202E4E455420636F646520616E642065787072657373696F6E2061742072756E74696D650000050100000000160100115A5A5A2050726F6A6563747320496E632E00002F01002A436F7079726967687420C2A9205A5A5A2050726F6A6563747320496E632E2032303134202D203230313600001501001053514C2026202E4E455420546F6F6C7300002901002464666332346530372D313938332D343666382D623163642D64306166643165633633323300000A010005312E302E3400004701001A2E4E45544672616D65776F726B2C56657273696F6E3D76342E300100540E144672616D65776F726B446973706C61794E616D65102E4E4554204672616D65776F726B203400000000AC020000000000000000001EAC020000200000000000000000000000000000000000000000000010AC020000000000000000000000000000005F436F72446C6C4D61696E006D73636F7265652E646C6C0000000000FF25002000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000001800008000000000000000000000000000000100010000003000008000000000000000000000000000000100000000004800000058C00200480400000000000000000000480434000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE00000100000001000000040000000100000004003F000000000000000400000002000000000000000000000000000000440000000100560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000000B004A8030000010053007400720069006E006700460069006C00650049006E0066006F00000084030000010030003000300030003000340062003000000070002C00010043006F006D006D0065006E0074007300000043006F006D00700069006C00650020002E004E0045005400200063006F0064006500200061006E0064002000650078007000720065007300730069006F006E002000610074002000720075006E00740069006D006500000044001200010043006F006D00700061006E0079004E0061006D006500000000005A005A005A002000500072006F006A006500630074007300200049006E0063002E000000560017000100460069006C0065004400650073006300720069007000740069006F006E00000000005A002E00450078007000720065007300730069006F006E0073002E0043006F006D00700069006C0065007200000000002C0006000100460069006C006500560065007200730069006F006E000000000031002E0030002E003400000056001B00010049006E007400650072006E0061006C004E0061006D00650000005A002E00450078007000720065007300730069006F006E0073002E0043006F006D00700069006C00650072002E0064006C006C000000000078002A0001004C006500670061006C0043006F007000790072006900670068007400000043006F0070007900720069006700680074002000A90020005A005A005A002000500072006F006A006500630074007300200049006E0063002E002000320030003100340020002D002000320030003100360000004A00110001004C006500670061006C00540072006100640065006D00610072006B00730000000000530051004C002000260020002E004E0045005400200054006F006F006C007300000000005E001B0001004F0072006900670069006E0061006C00460069006C0065006E0061006D00650000005A002E00450078007000720065007300730069006F006E0073002E0043006F006D00700069006C00650072002E0064006C006C00000000004E0017000100500072006F0064007500630074004E0061006D006500000000005A002E00450078007000720065007300730069006F006E0073002E0043006F006D00700069006C006500720000000000300006000100500072006F006400750063007400560065007200730069006F006E00000031002E0030002E003400000038000800010041007300730065006D0062006C0079002000560065007200730069006F006E00000031002E0030002E0034002E00300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A002000C000000303C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - WITH PERMISSION_SET = SAFE; - - CREATE ASSEMBLY [Z.Expressions.SqlServer.Eval] - AUTHORIZATION [dbo] - FROM 0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000504500004C010300A887605B0000000000000000E00002210B010B000060010000080000000000001E7F010000200000008001000000001000200000000200000400000000000000040000000000000000C001000002000000000000030040850000100000100000000010000010000000000000100000000000000000000000D07E01004B00000000800100280500000000000000000000000000000000000000A001000C000000987D01001C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000082000004800000000000000000000002E74657874000000245F0100002000000060010000020000000000000000000000000000200000602E7273726300000028050000008001000006000000620100000000000000000000000000400000402E72656C6F6300000C00000000A0010000020000006801000000000000000000000000004000004200000000000000000000000000000000007F0100000000004800000002000500A0A40000F8D8000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A731800000A2A00133003008800000001000011027E130000042D1114FE0605000006731900000A80130000047E13000004731A00000A7D040000040220000000807D0700000402177D0C00000402281B00000A02281C00000A0A1200FE164A0000016F1D00000A7D050000040273750100067D1000000402731E00000A7D110000040273750100067D12000004021F1073C20100067D0F0000042A1B3003004E000000020000117E1F0000047C43000004286501000602257B0700000417587D07000004027B070000042D0E02257B0700000417587D07000004027B070000040ADE107E1F0000047C430000042866010006DC062A000001100000020000003C3C0010000000001B3003007D0000000300001173BA0100060C08037D63000004080A027B0F000004066FC301000626027B120000046F79010006163151027B120000046F850100060D2B25096F1F00000AA5360000010B067B640000041201282000000A1201282100000A6F81010006096F2200000A2DD3DE1409754B000001130411042C0711046F2300000ADC062A00000001100000020036003167001400000000133003001D00000004000011027B0F0000040312006FC50100062D0B7201000070732400000A7A062A1E0228F40000062A1E0228060000062A1E0228060000062A0000001330020024000000050000110228F40000060A062C14067E2800000A2E0C06282900000A732A00000A2A7E2B00000A2A1E0228090000062A1E0228090000062A1330020024000000050000110228F40000060A062C14067E2800000A2E0C06282C00000A732D00000A2A7E2E00000A2A1E02280C0000062A1E02280C0000062A1330020024000000050000110228F40000060A062C14067E2800000A2E0C06282F00000A733000000A2A7E3100000A2A1E02280F0000062A1E02280F0000062A1330020024000000050000110228F40000060A062C14067E2800000A2E0C06283200000A733300000A2A7E3400000A2A1E0228120000062A1E0228120000062A1330030046000000060000110228060000060A7E1600000428740000060C12027E16000004283500000A0628540000060D1203287D0000060B120128650000060228650000067B0D0000047D0D000004072A1E0228150000062A1E0228150000062A00001330020024000000050000110228F40000060A062C14067E2800000A2E0C06283600000A733700000A2A7E3800000A2A1E0228180000062A1E0228180000062A1330020024000000050000110228F40000060A062C14067E2800000A2E0C06283900000A733A00000A2A7E3B00000A2A1E02281B0000062A1E02281B0000062A4E022865000006177D010000040271030000022A1B30030087010000070000110F0028650000067B020000042C120F0028650000067B06000004283D00000A2A0F0028650000067B030000042C170F0028650000067B0300000474300000010A38FE0000000F0028650000067B0100000439E50000000F0028060000060A0F002865000006067D030000040674300000010F0028650000067B040000046F3E00000A166F3F00000A284000000A0B7202010070734100000A0C086F4200000A0708734300000A0D096F4400000A26DE0A092C06096F2300000ADCDE0A082C06086F2300000ADC0F002865000006167D01000004067430000001130411046F4500000A72360100706F4600000A2611046F4500000A72360100706F4700000A166F4800000A1613052B2111046F4900000A11056F4A00000A1611058C5D0000016F4B00000A110517581305110511046F4900000A6F4C00000A32CF2A0F0028060000060A062C08067E2800000A33012A0675300000012C0C06743000000128580100062A06752F0000012C1006742F0000011306110628570100062A06285E01000628580100062A00011C00000200A70009B0000A000000000200990023BC000A00000000133001000F000000050000110F0028060000060A06285F0100062A001330030011000000080000110274330000010A0306166F4E00000A512A000000133001000F000000050000110F0028060000060A06285F0100062A00133003001A000000080000110274330000010A0306166F4E00000A510406176F4E00000A512A0000133001000F000000050000110F0028060000060A06285F0100062A001330030023000000080000110274330000010A0306166F4E00000A510406176F4E00000A510506186F4E00000A512A00133001000F000000050000110F0028060000060A06285F0100062A00133003002D000000080000110274330000010A0306166F4E00000A510406176F4E00000A510506186F4E00000A510E0406196F4E00000A512A000000133001000F000000050000110F0028060000060A06285F0100062A001330030037000000080000110274330000010A0306166F4E00000A510406176F4E00000A510506186F4E00000A510E0406196F4E00000A510E05061A6F4E00000A512A320228650000067B090000042A320228650000067B090000042A320228650000067B090000042A320228650000067B060000042A320228650000067B060000042A320228650000067B060000042A320228650000067B0D0000042A320228650000067B0D0000042A320228650000067B0D0000042A1330030028000000050000110228650000067B120000040312006F880100062C02062A724A01007003284F00000A732400000A7A22020328330000062A22020328330000062A0000133002002600000009000011020328330000060A067E2800000A2E0C06282900000A735000000A2A1201FE150500001B072A22020328360000062A22020328360000062A13300200260000000A000011020328330000060A067E2800000A2E0C06282C00000A735100000A2A1201FE150600001B072A22020328390000062A22020328390000062A13300200260000000B000011020328330000060A067E2800000A2E0C06282F00000A735200000A2A1201FE150700001B072A220203283C0000062A220203283C0000062A13300200260000000C000011020328330000060A067E2800000A2E0C06283200000A735300000A2A1201FE150800001B072A220203283F0000062A220203283F0000062A133002002300000005000011020328330000060A067E2800000A2E0C066F1D00000A733700000A2A14283500000A2A22020328420000062A22020328420000062A00000013300200260000000D000011020328330000060A067E2800000A2E0C06283900000A735400000A2A1201FE150900001B072A22020328450000062A22020328450000062A260203285500000A172A22020328480000062A22020328480000062A4E022865000006177D090000040271030000022A1E02284B0000062A1E02284B0000062A033003005E0000000000000003726D0200706F5600000A2C1F03728B0200706F5600000A2D127E1800000472B1020070036F5700000A1001030228650000067B06000004285800000A2C18022865000006147D08000004022865000006037D060000040271030000022A220203284E0000062A220203284E0000062A4E022865000006177D0D0000040271030000022A1E0228510000062A1E0228510000062A5E04285C01000610020203046F5900000A0428F30000062A2602030428540000062A2602030428540000062A2602030428540000062A2602030428570000062A2602030428570000062A660203D00A00001B285A00000A0F02285B00000A28F30000062A52020F01285C00000A283500000A04285A0000062A52020F01285C00000A283500000A04285A0000062A0000133004001C000000050000110F027E1600000428330000060A0203066F5900000A0628F30000062A26020304285D0000062A26020304285D0000062A660203D060000001285A00000A0F02285C00000A28F30000062A2602030428600000062A2602030428600000062A120203582A1E027B150000042A0013300300210000000E0000117E1C000004027B1400000412006F5D00000A2D0B7201000070732400000A7A062A0A162A133001000A0000000F0000111200FE1503000002062A2E7E1B0000046F5E00000A2A1A28680000062A1A28680000062A2E7E1C0000046F5F00000A2A133004003D0000000E0000110228650000060A067E1D000004067B06000004067B110000046F6000000A6F050100067D0800000406177D0B00000402287D000006260271030000022A1E02286C0000062A1E02286C0000062A2E7E1E0000047B240000042A1E027B140000042A1A28030100062A1A28710000062A1A28710000062A0000133003006B0000001000001102726D0200706F5600000A2C1F02728B0200706F5600000A2D127E1800000472B1020070026F5700000A10001202FE150300000212027E1E0000046F3A0100067D14000004080A73010000060D09027D06000004090B7E1C00000412007B14000004076F6100000A26062A1E0228740000062A1E026F6200000A2A1E026F6300000A2A000330030073000000000000007E1B0000047B6400000A280100002B7E190000042D1114FE06FF000006736600000A80190000047E190000046F6700000A7E1C0000047B6800000A280200002B7E1A0000042D1114FE0600010006736900000A801A0000047E1A0000046F6A00000A7E1F0000047C440000042866010006172A1A28760000062A1A28760000062A000000133003003F000000110000110228650000067B080000042C1D7E1B0000040228650000067B080000047B2000000412006F6B00000A267E1C000004027B1400000412016F6C00000A26172A1E0228790000062A1E0228790000062A001330040042000000120000110F00285C00000A178D650000010C08161F3B9D086F6D00000A0A1201FE1503000002120106169A286E00000A7D14000004120106179A286E00000A7D15000004072A0000133002004700000013000011027B150000042C380228650000060A06027B150000046F040000060B06077B640000047D120000040228650000067B0F000004076FC401000602167D150000040271030000022A1E02287D0000062A1E02287D0000062A86027B140000048C5D00000172CD020070027B150000048C5D000001286F00000A2A0000001B3002004E0000001400001172D1020070734100000A0A066F4200000A720103007006734300000A0B071A6F7000000A076F4400000A26DE0A072C06076F2300000ADCDE0A062C06066F2300000ADC170CDE0526160CDE00082A00000128000002001D00102D000A0000000002000B002E39000A00000000000000004747000501000001133004005E000000150000110F02285C00000A6F7100000A722B0300706F7200000A2D1372390300700F02285C00000A287300000A2B070F02285C00000A0A0228650000067B100000040F01285C00000A066F780100060203D030000001285A00000A1428F30000062A3A020304283500000A28820000062A3A020304283500000A28820000062A7A0203D05D000001285A00000A0F02287400000A8C5D00000128F30000062A2602030428850000062A2602030428850000062A7A0203D067000001285A00000A0F02287500000A8C6700000128F30000062A2602030428880000062A2602030428880000062A7A0203D00C000001285A00000A0F02287600000A8C0C00000128F30000062A26020304288B0000062A26020304288B0000062A7A0203D04A000001285A00000A0F02287700000A8C4A00000128F30000062A26020304288E0000062A26020304288E0000062A7A0203D068000001285A00000A0F02287800000A8C6800000128F30000062A2602030428910000062A2602030428910000062A620203D00A00001B285A00000A046F7900000A28F30000062A2602030428940000062A2602030428940000062A7A0203D069000001285A00000A0F02287A00000A8C6900000128F30000062A2602030428970000062A2602030428970000062A7A0203D06A000001285A00000A0F02287B00000A8C6A00000128F30000062A26020304289A0000062A26020304289A0000062A00001330040037000000160000110203D00500001B285A00000A0F02287C00000A2D0E0F02287B00000A735000000A2B091200FE150500001B068C0500001B28F30000062A26020304289D0000062A26020304289D0000062A001330040037000000170000110203D01300001B285A00000A0F02287D00000A2D0E0F02287600000A737E00000A2B091200FE151300001B068C1300001B28F30000062A2602030428A00000062A2602030428A00000062A001330040037000000180000110203D00700001B285A00000A0F02287F00000A2D0E0F02287400000A735200000A2B091200FE150700001B068C0700001B28F30000062A2602030428A30000062A2602030428A30000062A001330040037000000190000110203D00900001B285A00000A0F02288000000A2D0E0F02287A00000A735400000A2B091200FE150900001B068C0900001B28F30000062A2602030428A60000062A2602030428A60000062A00133004009D0000001A00001104285C01000610020F01285C00000A72570300706F5600000A2C710F01285C00000A178D600000010C08167257030070A208176F8100000A0B078E6917331C046F5900000A0A0F01285C00000A6F7100000A283500000A10012B38078E6918331507169A28600100060A07179A283500000A10012B1D725B030070038C12000001284F00000A732400000A7A046F5900000A0A0203060428F30000062A2602030428A90000062A2602030428A90000062A2602030428A90000062A2602030428AC0000062A2602030428AC0000062A1E0228060000062A1E0228AF0000062A1E0228AF0000062A1E0228090000062A1E0228B20000062A1E0228B20000062A1E02280C0000062A1E0228B50000062A1E0228B50000062A1E02280F0000062A1E0228B80000062A1E0228B80000062A1E0228120000062A1E0228BB0000062A1E0228BB0000062A1E0228150000062A1E0228BE0000062A1E0228BE0000062A1E0228180000062A1E0228C10000062A1E0228C10000062A1E02281B0000062A1E0228C40000062A1E0228C40000062A00133001000F000000050000110F0028060000060A06285F0100062A00133003001F000000080000110274330000010A0306166F4E00000A7460000001733700000A81120000012A001330020024000000050000110228F40000060A062C14067E2800000A2E0C06740A00001B738200000A2A288300000A2A1E0228C90000062A1E0228C90000062A1330020024000000050000110228F40000060A062C14067E2800000A2E0C06740A00001B738400000A2A7E8500000A2A1E0228CC0000062A1E0228CC0000062A1330020024000000050000110228F40000060A062C14067E2800000A2E0C06288600000A738700000A2A7E8800000A2A1E0228CF0000062A1E0228CF0000062A1330020024000000050000110228F40000060A062C14067E2800000A2E0C06A54A000001738900000A2A7E8A00000A2A1E0228D20000062A1E0228D20000062A1E0228C90000062A1E0228D50000062A1E0228D50000062A1E0228CF0000062A1E0228D80000062A1E0228D80000062A1E0228D20000062A1E0228DB0000062A1E0228DB0000062A1E0228CC0000062A1E0228DE0000062A1E0228DE0000062A660203D00A00001B285A00000A0F02285B00000A28F30000062A52020F01285C00000A283500000A0428E10000062A52020F01285C00000A283500000A0428E10000062A620203D00A00001B285A00000A046F7900000A28F30000062A2602030428E40000062A2602030428E40000062A00000013300400370000001B0000110203D01400001B285A00000A0F02288B00000A2D0E0F02287700000A738C00000A2B091200FE151400001B068C1400001B28F30000062A2602030428E70000062A2602030428E70000062A7A0203D067000001285A00000A0F02287500000A8C6700000128F30000062A2602030428EA0000062A2602030428EA0000062A000013300400370000001C0000110203D00800001B285A00000A0F02288D00000A2D0E0F02287800000A735300000A2B091200FE150800001B068C0800001B28F30000062A2602030428ED0000062A2602030428ED0000062A660203D060000001285A00000A0F02285C00000A28F30000062A2602030428F00000062A2602030428F00000062A00000013300300B10000001D0000110F01285C00000A0A0228650000060B0271030000020C027B150000042D60077B1100000406046F8E00000A2C0F077B1200000406056F810100062B731204FE15030000021204027B140000047D140000041204076F020000067D1500000411040C0712027B150000046F030000060D097B6400000406056F780100062B31077B0B0000042D0E077B1100000406046F8E00000A260712027B150000046F040000060D097B6400000406056F78010006082A0000001B300400510200001E0000110228650000060A288F00000A0B06077D0E000004067B080000042C0C067B08000004077D23000004077E1D0000047B28000004289000000A2C06280301000626067B060000040C067B100000046F79010006163EE400000072B60400700D731800000A1304067B100000046F85010006130A3884000000110A6F1F00000AA53600000113051104728B0700701205282100000A289100000A72BB070070287300000A6F9200000A11041205282000000A72C1070070289100000A6F9200000A11041A8D01000001130B110B161205282000000AA2110B1772FF070070A2110B187E17000004A2110B19722B080070A2110B289300000A6F9200000A110A6F2200000A3A70FFFFFFDE15110A754B000001130C110C2C07110C6F2300000ADC0972B1020070289400000A1104289500000A6F5700000A08287300000A0C027B150000042C1006027B150000046F0400000613062B1473BA01000613061106067B120000047D64000004067B0D0000042C6C141308289600000A2C10289600000A130911096F9700000A1308067B080000042D23067E1D00000408067B110000046F6000000A6F050100067D0800000406177D0B000004067B080000047B2100000411067B640000046F9800000A1307DE5011082C0711086F9900000ADC067B080000042D23067E1D00000408067B110000046F6000000A6F050100067D0800000406177D0B000004067B080000047B2100000411067B640000046F9800000A1307027B150000042C120228650000067B0F00000411066FC40100060228650000067B090000042C070228790000062611072A000000011C000002007200970901150000000002008A0146D0010C0000000013300200260000000E0000110228650000060A06177D01000004067B040000046F3E00000A036F9200000A0271030000022A22020328F50000062A22020328F50000062A1B3004007E0000001F0000110F02285C00000A6F7100000A722B0300706F7200000A2D1372390300700F02285C00000A287300000A2B070F02285C00000A0A7202010070734100000A0C086F4200000A0608734300000A0D09289A00000A0BDE0A092C06096F2300000ADCDE0A082C06086F2300000ADC0203D030000001285A00000A0728F30000062A0000011C000002004C000955000A0000000002003E002361000A000000003A020304283500000A28F80000062A3A020304283500000A28F80000062A4E022865000006177D020000040271030000022A1E0228FB0000062A1E0228FB0000062A00001B3003009D010000200000110F0028650000067B020000042C120F0028650000067B06000004283D00000A2A0F0028650000067B030000042C130F0028650000067B0300000474300000010A2A0F0028650000067B0100000439420100000F0028060000060A0F002865000006067D030000040674300000010F0028650000067B040000046F3E00000A166F3F00000A284000000A0B7202010070734100000A0C086F4200000A0708734300000A0D096F4400000A26DE0A092C06096F2300000ADCDE0A082C06086F2300000ADC0F002865000006167D01000004067430000001130411046F4500000A72360100706F4600000A2611046F4500000A72360100706F4700000A166F4800000A1613052B2111046F4900000A11056F4A00000A1611058C5D0000016F4B00000A110517581305110511046F4900000A6F4C00000A32CF7202010070734100000A130611066F4200000A725D080070028C0300000272B3080070286F00000A1106734300000A13071107176F7000000A11076F4400000A26DE0C11072C0711076F2300000ADCDE0C11062C0711066F2300000ADC2A0F0028060000060A2A000000013400000200A30009AC000A000000000200950023B8000A00000000020067011279010C00000000020042014587010C000000007E72230900708016000004722F0900708017000004725D09007080180000042AF61F64739B00000A801B0000041F64739C00000A801C0000047368010006801F0000047327010006801D0000047E1D000004801E0000042881000006262A00001B30030033020000210000117E1F0000047C44000004286701000639070200007E1D000004288F00000A130B120B7E1D0000047B25000004289D00000A7D28000004288F00000A130C120C7E1D0000047B26000004289E00000A0A731800000A0B7E1B0000047B6400000A130D16130E38A6000000110D110E9A0C086F9F00000A086FA000000A6FA100000A130F2B29120F28A200000A0D120328A300000A7B230000040628A400000A2C0D07120328A500000A6F9200000A120F28A600000A2DCEDE0E120FFE161700001B6F2300000ADC076FA700000A13102B17121028A800000A1304086FA000000A11046FA900000A26121028AA00000A2DE0DE0E1210FE161900001B6F2300000ADCDE07086F6200000ADC110E1758130E110E110D8E693F4FFFFFFF288F00000A131112117E1D0000047B27000004289E00000A130573AB00000A13067E1C0000047B6800000A131216131338BC000000111211139A130711076FAC00000A11076FAD00000A6FAE00000A13142B39121428AF00000A1308120828B000000A7B0E000004110528A400000A2C1B120828B000000A167D0A0000041106120828B100000A6FB200000A121428B300000A2DBEDE0E1214FE161C00001B6F2300000ADC11066FB400000A13152B18121528B500000A130911076FAD00000A11096FB600000A26121528B700000A2DDFDE0E1215FE161E00001B6F2300000ADCDE0811076F6300000ADC111317581313111311128E693F39FFFFFF17130ADE1516130ADE107E1F0000047C440000042866010006DC110A2A0041AC0000020000008200000036000000B80000000E0000000000000002000000CE00000024000000F20000000E00000000000000020000006F00000093000000020100000700000000000000020000006B01000046000000B10100000E0000000000000002000000C801000025000000ED0100000E000000000000000200000056010000A7000000FD01000008000000000000000200000000000000200200002002000010000000000000008202281B00000A02037D2000000402047D2100000402288F00000A7D230000042A4E020304D001000001285A00000A284C0100062A52020314D001000001285A00000A16280300002B2A3A020304280400002B28080100062A00000013300500460000002200001173B900000A0A160B2B2206725E0B0070078C5D00000172620B0070286F00000A04079A6FBA00000A0717580B07048E6932D8020306D001000001285A00000A18280500002B2A52020304D001000001285A00000A17280600002B2A00133005002600000023000011020373B900000A0A0672660B0070046FBA00000A06D001000001285A00000A1B280700002B2A0000133005003200000023000011020373B900000A0A0672660B0070046FBA00000A06726E0B0070056FBA00000A06D001000001285A00000A1B280800002B2A0000133005003F00000023000011020373B900000A0A0672660B0070046FBA00000A06726E0B0070056FBA00000A0672760B00700E046FBA00000A06D001000001285A00000A1B280900002B2A00133005004C00000023000011020373B900000A0A0672660B0070046FBA00000A06726E0B0070056FBA00000A0672760B00700E046FBA00000A06727E0B00700E056FBA00000A06D001000001285A00000A1B280A00002B2A133005005900000023000011020373B900000A0A0672660B0070046FBA00000A06726E0B0070056FBA00000A0672760B00700E046FBA00000A06727E0B00700E056FBA00000A0672860B00700E066FBA00000A06D001000001285A00000A1B280B00002B2A000000133005006600000023000011020373B900000A0A0672660B0070046FBA00000A06726E0B0070056FBA00000A0672760B00700E046FBA00000A06727E0B00700E056FBA00000A0672860B00700E066FBA00000A06728E0B00700E076FBA00000A06D001000001285A00000A1B280C00002B2A0000133005007300000023000011020373B900000A0A0672660B0070046FBA00000A06726E0B0070056FBA00000A0672760B00700E046FBA00000A06727E0B00700E056FBA00000A0672860B00700E066FBA00000A06728E0B00700E076FBA00000A0672960B00700E086FBA00000A06D001000001285A00000A1B280D00002B2A00133005008000000023000011020373B900000A0A0672660B0070046FBA00000A06726E0B0070056FBA00000A0672760B00700E046FBA00000A06727E0B00700E056FBA00000A0672860B00700E066FBA00000A06728E0B00700E076FBA00000A0672960B00700E086FBA00000A06729E0B00700E096FBA00000A06D001000001285A00000A1B280E00002B2A133005008D00000023000011020373B900000A0A0672660B0070046FBA00000A06726E0B0070056FBA00000A0672760B00700E046FBA00000A06727E0B00700E056FBA00000A0672860B00700E066FBA00000A06728E0B00700E076FBA00000A0672960B00700E086FBA00000A06729E0B00700E096FBA00000A0672A60B00700E0A6FBA00000A06D001000001285A00000A1B280F00002B2A8A02282E0100060304281000002B2D1172AE0B007003284F00000A732400000A7A022AEA026FBB00000A72E30C0070285800000A2C26026FBB00000A723B0D0070285800000A2C14026FBB00000A727F0D00706F7200000A16FE012A162A00133003004C00000024000011030C160D2B3E08099A0A066FBC00000A7E320000042D1114FE064501000673BD00000A80320000047E32000004281100002B280400002B0B0207281C010006260917580D09088E6932BC022A1E026FBC00000A2AEA026FBB00000A72E30C0070285800000A2C26026FBB00000A723B0D0070285800000A2C14026FBB00000A727F0D00706F7200000A16FE012A162A0013300300600000002500001128BF00000A6FC000000A0A067E330000042D1114FE064601000673C100000A80330000047E33000004281200002B7E340000042D1114FE064701000673BD00000A80340000047E34000004281100002B280400002B0B0207281C01000626022A4A02D048000001285A00000A166FC300000A2A00133003004E00000026000011030C160D2B4008099A0A061F386FC400000A7E350000042D1114FE064801000673C500000A80350000047E35000004281300002B281400002B0B02072817010006260917580D09088E6932BA022A1E02281B00000A2A000013300300160000002700001173C600000A0A06027B6A00000417281500002B26062A4204027B6A00000417281500002B26042A00133005006300000028000011030D1613042B53140A140B73CE0100060C080911049A7D6A000004022828010006087B6A0000046FC700000A062D0D08FE06CF01000673C800000A0A06072D0D08FE06D001000673C900000A0B07281600002B261104175813041104098E6932A6022A9E02282A010006030428CA00000A281700002B2D1172AE0B007003284F00000A732400000A7A022A8A02282C0100060304281800002B2D1172AE0B007003284F00000A732400000A7A022A00001330020051000000290000110313041613052B3F110411059A0A061F186FCB00000A0B061F186FCC00000A0C061F186FC400000A0D0207281B010006260208281B010006260209281B01000626110517581305110511048E6932B9022A1E02281B00000A2A00000013300300160000002A00001173CD00000A0A06027B6B00000417281900002B26062A4204027B6B00000417281900002B26042A0013300500630000002B000011030D1613042B53140A140B73D10100060C080911049A7D6B000004022830010006087B6B0000046FC700000A062D0D08FE06D201000673CE00000A0A06072D0D08FE06D301000673CF00000A0B07281A00002B261104175813041104098E6932A6022A1E02281B00000A2A1E027B6C0000042A1E027B6C0000042A0013300500860000002C000011030D1613042B76140A140B73D40100060C080911049A7D6C000004022832010006087B6C0000046FC700000A087B6C000004062D0D08FE06D501000673D000000A0A06281B00002B26022832010006087B6C0000046FBB00000A087B6C000004072D0D08FE06D601000673D000000A0B07281B00002B261104175813041104098E693283022A000013300300250000002D000011030C160D2B1708099A0A02282E010006061201281C00002B260917580D09088E6932E3022A0000000330010044000000000000000228280100066FD100000A02282A0100066FD200000A02282C0100066FD300000A02282E0100066FD400000A0228300100066FD500000A0228320100066FD600000A022A133002002500000024000011030C160D2B1708099A0A066FBC00000A0B02072826010006260917580D09088E6932E3022A4A02D048000001285A00000A166FC300000A2A133003004E00000026000011030C160D2B4008099A0A061F386FC400000A7E360000042D1114FE064901000673C500000A80360000047E36000004281300002B281400002B0B02072821010006260917580D09088E6932BA022A0000133003003A0000002E000011030D1613042B2A0911049A0A022828010006066FC700000A12016FD700000A2C0A07061202281D00002B261104175813041104098E6932CF022A000013300300250000002F000011030C160D2B1708099A0A02282A010006061201281E00002B260917580D09088E6932E3022A000000133003002500000030000011030C160D2B1708099A0A02282C010006061201281F00002B260917580D09088E6932E3022A0000001330020051000000290000110313041613052B3F110411059A0A061F186FCB00000A0B061F186FCC00000A0C061F186FC400000A0D020728250100062602082825010006260209282501000626110517581305110511048E6932B9022A000000133003003A00000031000011030D1613042B2A0911049A0A022830010006066FC700000A12016FD800000A2C0A07061202282000002B261104175813041104098E6932CF022A0000133003003E00000032000011030C160D2B3008099A0A022832010006066FC700000A1201282100002B26022832010006066FBB00000A1201282100002B260917580D09088E6932CA022A000013300300CF000000330000110220000000807D240000040223000000000000144028D900000A7D250000040223000000000000004028DA00000A7D260000040223000000000000084028D900000A7D2700000402281B00000A0273DB00000A28290100060273DC00000A282B0100060273DD00000A282D0100060273DE00000A282F0100060273DF00000A28310100060273B900000A2833010006021F7028350100060202285900000A6FBB00000A28370100060216283901000602283B01000602288F00000A0A1200027B25000004289D00000A7D280000042A1E027B290000042A2202037D290000042A1E027B2A0000042A2202037D2A0000042A1E027B2B0000042A2202037D2B0000042A1E027B2C0000042A2202037D2C0000042A1E027B2D0000042A2202037D2D0000042A1E027B2E0000042A2202037D2E0000042A1E027B2F0000042A2202037D2F0000042A1E027B300000042A2202037D300000042A1E027B310000042A2202037D310000042A1B30030038000000020000117E1F0000047C43000004286501000602257B2400000417587D24000004027B240000040ADE107E1F0000047C430000042866010006DC062A01100000020000002626001000000000133004003C1500003400001102178D0D0000010A0616D064000001285A00000AA20628160100062602178D0D0000010B0716D076000001285A00000AA20728160100062602178D0D0000010C0816D077000001285A00000AA208281A0100062602178D0D0000010D0916D067000001285A00000AA209281C0100062602178D0D0000011304110416D069000001285A00000AA21104281C0100062602178D0D0000011305110516D065000001285A00000AA21105281C0100062602178D0D0000011306110616D078000001285A00000AA21106281C0100062602178D0D0000011307110716D079000001285A00000AA21107281C0100062602178D0D0000011308110816D05D000001285A00000AA21108281C0100062602178D0D0000011309110916D07A000001285A00000AA21109281C0100062602178D0D000001130A110A16D06A000001285A00000AA2110A281C0100062602178D0D000001130B110B16D001000001285A00000AA2110B281C0100062602178D0D000001130C110C16D07B000001285A00000AA2110C281C0100062602178D0D000001130D110D16D068000001285A00000AA2110D281C0100062602178D0D000001130E110E16D060000001285A00000AA2110E281C0100062602178D0D000001130F110F16D07C000001285A00000AA2110F281C0100062602178D0D0000011310111016D07D000001285A00000AA21110281C0100062602178D0D0000011311111116D07E000001285A00000AA21111281C0100062602178D0D0000011312111216D04C000001285A00000AA21112281C0100062602178D0D0000011313111316D07F000001285A00000AA21113281C0100062602178D0D0000011314111416D035000001285A00000AA21114281C0100062602178D0D0000011315111516D080000001285A00000AA21115281C0100062602178D0D0000011316111616D00C000001285A00000AA21116281C0100062602178D0D0000011317111716D081000001285A00000AA21117281C0100062602178D0D0000011318111816D082000001285A00000AA21118281C0100062602178D0D0000011319111916D009000001285A00000AA21119281C0100062602178D0D000001131A111A16D06C000001285A00000AA2111A281C0100062602178D0D000001131B111B16D083000001285A00000AA2111B281C0100062602178D0D000001131C111C16D084000001285A00000AA2111C281C0100062602178D0D000001131D111D16D077000001285A00000AA2111D281C0100062602178D0D000001131E111E16D085000001285A00000AA2111E281C0100062602178D0D000001131F111F16D00D000001285A00000AA2111F281C0100062602178D0D0000011320112016D086000001285A00000AA21120281C0100062602178D0D0000011321112116D087000001285A00000AA21121281C0100062602178D0D0000011322112216D088000001285A00000AA21122281C0100062602178D0D0000011323112316D006000001285A00000AA21123281C0100062602178D0D0000011324112416D029000001285A00000AA21124281C0100062602178D0D0000011325112516D089000001285A00000AA21125281C0100062602178D0D0000011326112616D01C000001285A00000AA21126281C0100062602178D0D0000011327112716D00B000001285A00000AA21127281C0100062602178D0D0000011328112816D08A000001285A00000AA21128281C0100062602178D0D0000011329112916D08B000001285A00000AA21129281C0100062602178D0D000001132A112A16D08C000001285A00000AA2112A281C0100062602178D0D000001132B112B16D08D000001285A00000AA2112B281C0100062602178D0D000001132C112C16D08E000001285A00000AA2112C281C0100062602178D0D000001132D112D16D08F000001285A00000AA2112D281C0100062602178D0D000001132E112E16D090000001285A00000AA2112E281C0100062602178D0D000001132F112F16D091000001285A00000AA2112F281C0100062602178D0D0000011330113016D092000001285A00000AA21130281C0100062602178D0D0000011331113116D093000001285A00000AA21131281C0100062602178D0D0000011332113216D094000001285A00000AA21132281C0100062602178D0D0000011333113316D095000001285A00000AA21133281C0100062602178D0D0000011334113416D096000001285A00000AA21134281C0100062602178D0D0000011335113516D097000001285A00000AA21135281C0100062602178D0D0000011336113616D098000001285A00000AA21136281C0100062602178D0D0000011337113716D099000001285A00000AA21137281C0100062602178D0D0000011338113816D09A000001285A00000AA21138281C0100062602178D0D0000011339113916D09B000001285A00000AA21139281C0100062602178D0D000001133A113A16D09C000001285A00000AA2113A281C0100062602178D0D000001133B113B16D09D000001285A00000AA2113B281C0100062602178D0D000001133C113C16D09E000001285A00000AA2113C281C0100062602178D0D0000010A0616D09F000001285A00000AA206281C0100062602178D0D0000010A0616D0A0000001285A00000AA206281C0100062602178D0D0000010A0616D0A1000001285A00000AA206281C0100062602178D0D0000010A0616D0A2000001285A00000AA206281C0100062602178D0D0000010A0616D0A3000001285A00000AA206281C0100062602178D0D0000010A0616D0A4000001285A00000AA206281C0100062602178D0D0000010A0616D0A5000001285A00000AA206281C0100062602178D0D0000010A0616D0A6000001285A00000AA206281C0100062602178D0D0000010A0616D0A7000001285A00000AA206281C0100062602178D0D0000010A0616D0A8000001285A00000AA206281C0100062602178D0D0000010A0616D0A9000001285A00000AA206281C0100062602178D0D0000010A0616D0AA000001285A00000AA206281C0100062602178D0D0000010A0616D0AB000001285A00000AA206281C0100062602178D0D0000010A0616D0AC000001285A00000AA206281C0100062602178D0D0000010A0616D0AD000001285A00000AA206281C0100062602178D0D0000010A0616D0AE000001285A00000AA206281C0100062602178D0D0000010A0616D0AF000001285A00000AA206281C0100062602178D0D0000010A0616D0B0000001285A00000AA206281C0100062602178D0D0000010A0616D0B1000001285A00000AA206281C0100062602178D0D0000010A0616D0B2000001285A00000AA206281C0100062602178D0D0000010A0616D0B3000001285A00000AA206281C0100062602178D0D0000010A0616D0B4000001285A00000AA206281C0100062602178D0D0000010A0616D076000001285A00000AA206281C0100062602178D0D0000010A0616D0B5000001285A00000AA206281C0100062602178D0D0000010A0616D074000001285A00000AA206281C0100062602178D0D0000010A0616D025000001285A00000AA206281C0100062602178D0D0000010A0616D0B6000001285A00000AA206281C0100062602178D0D0000010A0616D075000001285A00000AA206281C0100062602178D0D0000010A0616D027000001285A00000AA206281C0100062602178D0D0000010A0616D026000001285A00000AA206281C0100062602178D0D0000010A0616D02E000001285A00000AA206281C0100062602178D0D0000010A0616D0B7000001285A00000AA206281C0100062602178D0D0000010A0616D0B8000001285A00000AA206281C0100062602178D0D0000010A0616D0B9000001285A00000AA206281C0100062602178D0D0000010A0616D0BA000001285A00000AA206281C0100062602178D0D0000010A0616D0BB000001285A00000AA206281C0100062602178D0D0000010A0616D0BC000001285A00000AA206281C0100062602178D0D0000010A0616D0BD000001285A00000AA206281C0100062602178D0D0000010A0616D0BE000001285A00000AA206281C0100062602178D0D0000010A0616D0BF000001285A00000AA206281C0100062602178D0D0000010A0616D0C0000001285A00000AA206281C0100062602178D0D0000010A0616D0C1000001285A00000AA206281C0100062602178D0D0000010A0616D0C2000001285A00000AA206281C0100062602178D0D0000010A0616D0C3000001285A00000AA206281C0100062602178D0D0000010A0616D06E000001285A00000AA206281C0100062602178D0D0000010A0616D0C4000001285A00000AA206281C0100062602178D0D0000010A0616D0C5000001285A00000AA206281C0100062602178D0D0000010A0616D0C6000001285A00000AA206281C0100062602178D0D0000010A0616D0C7000001285A00000AA206281C0100062602178D0D0000010A0616D0C8000001285A00000AA206281C0100062602178D0D0000010A0616D0C9000001285A00000AA206281C0100062602178D0D0000010A0616D0CA000001285A00000AA206281C0100062602178D0D0000010A0616D0CB000001285A00000AA206281C0100062602178D0D0000010A0616D0CC000001285A00000AA206281C0100062602178D0D0000010A0616D0CD000001285A00000AA206281C0100062602178D0D0000010A0616D0CE000001285A00000AA206281C0100062602178D0D0000010A0616D0CF000001285A00000AA206281C0100062602178D0D0000010A0616D0D0000001285A00000AA206281C0100062602178D0D0000010A0616D0D1000001285A00000AA206281C0100062602178D0D0000010A0616D0D2000001285A00000AA206281C0100062602178D0D0000010A0616D0D3000001285A00000AA206281C0100062602178D0D0000010A0616D0D4000001285A00000AA206281C0100062602178D0D0000010A0616D0D5000001285A00000AA206281C0100062602178D0D0000010A0616D0D6000001285A00000AA206281C0100062602178D0D0000010A0616D0D7000001285A00000AA206281C0100062602178D0D0000010A0616D0D8000001285A00000AA206281C0100062602178D0D0000010A0616D0D9000001285A00000AA206281C0100062602178D0D0000010A0616D0DA000001285A00000AA206281C0100062602178D0D0000010A0616D0DB000001285A00000AA206281C0100062602178D0D0000010A0616D032000001285A00000AA206281C0100062602178D0D0000010A0616D033000001285A00000AA206281C0100062602178D0D0000010A0616D02F000001285A00000AA206281C0100062602178D0D0000010A0616D030000001285A00000AA206281C0100062602178D0D0000010A0616D0DC000001285A00000AA206281C0100062602178D0D0000010A0616D05A000001285A00000AA206281C0100062602178D0D0000010A0616D058000001285A00000AA206281C0100062602178D0D0000010A0616D0DD000001285A00000AA206281C0100062602178D0D0000010A0616D0DE000001285A00000AA206281C0100062602178D0D0000010A0616D0DF000001285A00000AA206281C0100062602178D0D0000010A0616D059000001285A00000AA206281C0100062602178D0D0000010A0616D057000001285A00000AA206281C0100062602178D0D0000010A0616D0E0000001285A00000AA206281C0100062602178D0D0000010A0616D0E1000001285A00000AA206281C0100062602178D0D0000010A0616D0E2000001285A00000AA206281C0100062602178D0D0000010A0616D0E3000001285A00000AA206281C0100062602178D0D0000010A0616D0E4000001285A00000AA206281C0100062602178D0D0000010A0616D0E5000001285A00000AA206281C0100062602178D0D0000010A0616D0E6000001285A00000AA206281C0100062602178D0D0000010A0616D0E7000001285A00000AA206281C0100062602178D0D0000010A0616D0E8000001285A00000AA206281C0100062602178D0D0000010A0616D0E9000001285A00000AA206281C0100062602178D0D0000010A0616D0EA000001285A00000AA206281C0100062602178D0D0000010A0616D0EB000001285A00000AA206281C0100062602178D0D0000010A0616D0EC000001285A00000AA206281C0100062602178D0D0000010A0616D0ED000001285A00000AA206281C0100062602178D0D0000010A0616D0EE000001285A00000AA206281C0100062602178D0D0000010A0616D0EF000001285A00000AA206281C0100062602178D0D0000010A0616D0F0000001285A00000AA206281C0100062602178D0D0000010A0616D0F1000001285A00000AA206281C0100062602178D0D0000010A0616D0F2000001285A00000AA206281C0100062602178D0D0000010A0616D0F3000001285A00000AA206281C0100062602178D0D0000010A0616D0F4000001285A00000AA206281C0100062602178D0D0000010A0616D0F5000001285A00000AA206281C0100062602178D0D0000010A0616D0F6000001285A00000AA206281C0100062602178D0D0000010A0616D0F7000001285A00000AA206281C0100062602178D0D0000010A0616D0F8000001285A00000AA206281C0100062602178D0D0000010A0616D0F9000001285A00000AA206281C0100062602178D0D0000010A0616D0FA000001285A00000AA206281C0100062602178D0D0000010A0616D0FB000001285A00000AA206281C0100062602178D0D0000010A0616D0FC000001285A00000AA206281C0100062602178D0D0000010A0616D0FD000001285A00000AA206281C0100062602178D0D0000010A0616D0FE000001285A00000AA206281C0100062602178D0D0000010A0616D0FF000001285A00000AA206281C0100062602178D0D0000010A0616D000010001285A00000AA206281C0100062602178D0D0000010A0616D001010001285A00000AA206281C0100062602178D0D0000010A0616D002010001285A00000AA206281C0100062602178D0D0000010A0616D003010001285A00000AA206281C0100062602178D0D0000010A0616D004010001285A00000AA206281C0100062602178D0D0000010A0616D005010001285A00000AA206281C0100062602178D0D0000010A0616D004000002285A00000AA206281C0100062602178D0D0000010A0616D015000002285A00000AA206281C0100062602178D0D0000010A0616D066000001285A00000AA206281C0100062602178D0D0000010A0616D006010001285A00000AA206281C0100062602178D0D0000010A0616D007010001285A00000AA206281C0100062602178D0D0000010A0616D017000002285A00000AA20628160100062602178D0D0000010A0616D056000001285A00000AA20628160100062602178D0D0000010A0616D0C6000001285A00000AA206281A010006262A220203282200002B2A26020304282300002B2A26020304282400002B2A66020314D02F00001B285A00000A16282500002B6FE000000A2A001B300500B00000003500001173B900000A0C0872660B0070046F5900000A6FBA00000A080A0475040000012C750474040000016FE100000A0D2B2A096F1F00000AA5360000010B061201282000000A6F1D00000A1201282100000A6F5900000A6FBA00000A096F2200000A2DCEDE1409754B000001130411042C0711046F2300000ADC020306D02F00001B285A00000A19282600002B0474040000016FE200000A2A020306D02F00001B285A00000A1B282700002B046FE300000A2A0110000002002D00366300140000000013300500630000003600001173DD00000A0A73B900000A0B160C2B33725E0B0070088C5D00000172620B0070286F00000A0D060904089A6FE400000A070904089A6F5900000A6FBA00000A0817580C08048E6932C7020307D02F00001B285A00000A17282600002B066FE200000A2A26020314282800002B2A3A020304282900002B282800002B2A133005009D0000003700001173B900000A0AD02F00001B285A00000A0B076FE500000A0C076FBB00000A72D30D00706F7200000A0D092D0808282A00002B2B01141304092D07088E6917592B03088E6913051613062B40042C171106048E693010060411069A0811069A6FBA00000A2B2006725E0B007011068C5D00000172620B0070286F00000A0811069A6FBA00000A1106175813061106110532BA02030611041A282B00002B2A1E026FBB00000A2A000000133006007B000000380000111D8D600000010A0616026F36010006A2061772CD020070A2061804A2061972CD020070A2061A036FBB00000AA2061B72CD020070A2061C052C3472CD020070056FE700000A7E380000042D1114FE065401000673E800000A80380000047E38000004282C00002B289500000A2B0572EF0D0070A20628EA00000A2A00133002005F00000039000011042D02142A030B0717594505000000020000000C00000016000000200000002A0000002B320204284F0100060A2B2E020428500100060A2B24020428510100060A2B1A020428520100060A2B10020428530100060A2B0673EB00000A0A062A1E02281B00000A2A1E02281B00000A2A0013300300650000003A000011027B6E0000047B6D000004027B6F0000040C120228EC00000A6F5900000A027B6F0000040D120328ED00000A6FEE00000A0A06027B6F0000041304120428EC00000A28CA00000A28EF00000A0B027B6E0000047B6D0000047BF000000A076FF100000A062A0000001B300400860100003B00001173D7010006130A02D01500001B285A00000A0304284A0100060A7E1B0000040612016FF200000A2C02072A110A73F300000A13091109026F280100066FF400000A1109026F2E0100066FF500000A1109026F300100066FF600000A1109026F320100066FF700000A1109026F340100067DF800000A1109026F380100067DF900000A11097D6D000004026F2A0100066FFA00000A163117110A7B6D000004026F2A01000673FB00000A7DFC00000A026F2C0100066FFD00000A163176026F2C0100066FFE00000A130B2B4E140C73D80100060D09110A7D6E00000409120B28FF00000A7D6F000004110A7B6D000004097B6F000004130C120C28ED00000A082D0D09FE06D9010006730001000A0C08730101000A6F0201000A120B280301000A2DA9DE0E120BFE163800001B6F2300000ADC110A7B6D0000041704284B010006130403280401000A1305110A7B6D000004110505280501000A130611061104282D00002B6F0701000A1307061107730401000613087E1B0000040611086F0801000A2611082A0000011000000200C9005B24010E000000001E02281B00000A2A1E02281B00000A2A13300300650000003A000011027B0901000A7B0A01000A027B0B01000A0C120228EC00000A6F5900000A027B0B01000A0D120328ED00000A6FEE00000A0A06027B0B01000A1304120428EC00000A28CA00000A28EF00000A0B027B0901000A7B0A01000A7BF000000A076FF100000A062A0000001B300400A10100003C000011730C01000A130A02D01500001B285A00000A0304284A0100060A7E1B0000040612016FF200000A2C0C077B22000004A52F00001B2A110A73F300000A13091109026F280100066FF400000A1109026F2E0100066FF500000A1109026F300100066FF600000A1109026F320100066FF700000A1109026F340100067DF800000A1109026F380100067DF900000A11097D0D01000A110A7B0D01000A0E0404284B0100060C026F2A0100066FFA00000A163117110A7B0D01000A026F2A01000673FB00000A7DFC00000A026F2C0100066FFD00000A16317B026F2C0100066FFE00000A130B2B53140D730E01000A13041104110A7D0F01000A1104120B28FF00000A7D1001000A110A7B0D01000A11047B1001000A130C120C28ED00000A092D0E1104FE061101000A730001000A0D09730101000A6F0201000A120B280301000A2DA4DE0E120BFE163800001B6F2300000ADC03280401000A1305110A7B0D01000A110505280501000A1306110608282E00002B6F1201000A1307061473040100061308110811078C2F00001B7D220000047E1B0000040611086F0801000A2611072A000000011000000200E3006043010E000000001E02281B00000A2A1E02281B00000A2A1E02281B00000A2A3E026F1301000A282F00002B16FE012A13300500780000003D000011027B750000047B73000004027B760000046F1501000A027B760000046FC700000A6FEE00000A0A06027B750000047B73000004027B750000047B73000004027B750000047B74000004166F1601000A027B76000004281701000A28EF00000A0B027B750000047B730000047BF000000A076FF100000A062A13300500780000003D000011027B770000047B73000004027B780000046F1801000A027B780000046FC700000A6FEE00000A0A06027B770000047B73000004027B770000047B73000004027B770000047B74000004166F1601000A027B78000004281901000A28EF00000A0B027B770000047B730000047BF000000A076FF100000A062A13300400580100003E00001173DD01000613061106027D730000041106047D7400000405281A01000A174034010000056F1B01000A7E390000042D1114FE0655010006731C01000A80390000047E39000004283000002B283100002B0A056F1D01000A0B0613071613082B6A140C73DE0100060D0911067D7500000409110711089A7D7600000403097B760000046FC700000A097B760000046F1501000A6F1E01000A11067B73000004097B760000046FC700000A082D0D09FE06DF010006730001000A0C08730101000A6F0201000A110817581308110811078E69328E07130916130A2B7514130473E00100061305110511067D7700000411051109110A9A7D780000040311057B780000046FC700000A11057B780000046F1801000A6F1E01000A11067B7300000411057B780000046FC700000A11042D0F1105FE06E1010006730001000A13041104730101000A6F0201000A110A1758130A110A11098E6932832A1E02281B00000A2A1E02281B00000A2A13300500C40000003F000011027B7B0000047B7A000004027B7C0000040C1202281F01000A027B7C0000040D1203282001000A6FEE00000A0A027B7B0000047B790000047E37000004178D740000011304110416027B7C00000413051205282001000A28CA00000AA21104282101000A0B076F2201000A027B7C00000413061206281F01000A282301000A2D09060728EF00000A2B1B0607027B7C00000413071207281F01000A282401000A28EF00000A0B027B7B0000047B7A0000047BF000000A060728EF00000A6FF100000A062A1B300400A90000004000001173E20100060D09027D7A00000473EB00000A0A09097B7A000004D004000001285A00000A6F2501000A7D7900000406097B790000046F2601000A036F2701000A13042B4C140B73E30100060C08097D7B0000040811046F2801000A7D7C000004097B7A000004087B7C00000413051205282001000A072D0D08FE06E4010006730001000A0B07730101000A6F0201000A11046F2200000A2DABDE0C11042C0711046F2300000ADC062A0000000110000002004200599B000C000000001E02281B00000A2A1E02281B00000A2A13300500C40000003F000011027B7F0000047B7E000004027B800000040C1202281F01000A027B800000040D1203282001000A6FEE00000A0A027B7F0000047B7D0000047E37000004178D740000011304110416027B8000000413051205282001000A28CA00000AA21104282101000A0B076F2201000A027B8000000413061206281F01000A282301000A2D09060728EF00000A2B1B0607027B8000000413071207281F01000A282401000A28EF00000A0B027B7F0000047B7E0000047BF000000A060728EF00000A6FF100000A062A1B300400190100004100001173E501000613071107027D7E00000473EB00000A0A11077B7E000004D006000001285A00000A6F2501000A0B06076F2601000A110711077B7E000004D02C00001B285A00000A6F2901000A7D7D000004D007000002285A00000A72F10D00701F28282A01000A0C08178D74000001130811081607A21108282B01000A0D11077B7D0000040928EF00000A130411077B7E0000047BF000000A11046FF100000A036F2701000A13092B5714130573E60100061306110611077D7F000004110611096F2801000A7D8000000411077B7E00000411067B80000004130A120A282001000A11052D0F1106FE06E7010006730001000A13051105730101000A6F0201000A11096F2200000A2DA0DE0C11092C0711096F2300000ADC062A000000011000000200A700640B010C000000001E02281B00000A2A1E02281B00000A2A13300500C40000003F000011027B830000047B82000004027B840000040C1202281F01000A027B840000040D1203282001000A6FEE00000A0A027B830000047B810000047E37000004178D740000011304110416027B8400000413051205282001000A28CA00000AA21104282101000A0B076F2201000A027B8400000413061206281F01000A282301000A2D09060728EF00000A2B1B0607027B8400000413071207281F01000A282401000A28EF00000A0B027B830000047B820000047BF000000A060728EF00000A6FF100000A062A1B300400AE0000004200001173E80100060D09027D8200000473EB00000A0A09097B82000004D004000001285A00000A72660B00706F2C01000A7D8100000406097B810000046F2601000A036F2701000A13042B4C140B73E90100060C08097D830000040811046F2801000A7D84000004097B82000004087B8400000413051205282001000A072D0D08FE06EA010006730001000A0B07730101000A6F0201000A11046F2200000A2DABDE0C11042C0711046F2300000ADC062A0000011000000200470059A0000C000000001B3004007A0000004300001173EB00000A0A036F2701000A0D2B21096F2801000A0B06021201281F01000A1201282001000A6F2C01000A6F2601000A096F2200000A2DD7DE0A092C06096F2300000ADC036F2D01000A17332B03283200002B0C1202281F01000A281A01000A17331502031202282001000A1202281F01000A284E010006062A00000110000002000D002D3A000A000000001E02281B00000A2A1E02281B00000A2A1E02281B00000A2A13300300AA00000044000011027B880000047B85000004027B870000047B860000040C1202281F01000A027B870000047B860000040D1203282001000A6FEE00000A0A027B890000046F2201000A027B870000047B8600000413041204281F01000A282301000A2D0E06027B8900000428EF00000A2B2506027B89000004027B870000047B8600000413051205281F01000A282401000A28EF00000A0B027B880000047B850000047BF000000A16076F2F01000A062A00001B300400F10000004500001173EB01000613041104027D8500000473EB00000A0A036F2701000A13052B7C73EC0100060C0811056F2801000A7D8600000473ED0100060B07087D870000040711047D880000040711047B85000004D001000001285A00000A6F2501000A7D8900000406077B890000046F2601000A11047B85000004087B8600000413061206282001000A07FE06EE010006730001000A730101000A6F0201000A11056F2200000A3A78FFFFFFDE0C11052C0711056F2300000ADC036F2D01000A17333103283200002B0D1203281F01000A281A01000A17331B11047B85000004031203282001000A1203281F01000A284E010006062A0000000110000002001D008CA9000C00000000133005002F00000046000011D004000001285A00000A722B0E0070178D0D0000010A0616D060000001285A00000AA206283001000A80370000042A001B3001004A00000047000011022D0B72350E0070732400000A7A026F3101000A6F3201000A0B2B12076F1F00000A74300000010A062858010006076F2200000A2DE6DE1107754B0000010C082C06086F2300000ADC2A00000110000002001A001E380011000000001B300300B600000048000011022D0B72350E0070732400000A7A02120028590100060B07733301000A0C283401000A0D09086F3501000A026F4900000A6F3201000A13072B5211076F1F00000A743300000113041613052B2E110411056F4E00000A130611062C0F061105902C0911066F1D00000A130608110511066F3601000A1105175813051105086F3701000A32C809086F3801000A11076F2200000A2DA5DE151107754B000001130811082C0711086F2300000ADCDE07096F3901000ADC2A0000011C0000020038005F9700150000000002002B0083AE000700000000133005005900000049000011026F4500000A6F4C00000A8D310000010A03026F4500000A6F4C00000A8D6700000151160B2B22026F4500000A076F3A01000A0C0607080350078F67000001285A010006A20717580B07026F4500000A6F4C00000A32D0062A000000133004004E0100004A000011031652026F3B01000A0B07281A01000A0C026F3C01000A0D08130411044513000000B700000096000000B70000000500000020000000B7000000120000005A000000B700000065000000B70000006F000000B7000000790000004D0000003D00000030000000CD0000008400000038C80000000918733D01000A0A38CC000000091F14733D01000A0A38BE000000091F0C176A733E01000A0A38AE000000091A733D01000A0A38A1000000091B1F1216733F01000A0A3891000000091C733D01000A0A3884000000091F10733D01000A0A2B79091E733D01000A0A2B6F0916733D01000A0A2B65091F0D733D01000A0A2B5A091F0C026F4001000A6A733E01000A0A2B48090207285B0100060A062D3C091F0C026F4001000A6A733E01000A0A0317522B27723C0F0070088C0F010001284F00000A732400000A7A72A510007007284F00000A732400000A7A062A000013300400360200004B00001104D00A00001B285A00000A284101000A2D5A04D015000001285A00000A284101000A2D4804D018000001285A00000A284101000A2D3604D04600001B285A00000A284101000A2D2404D012000001285A00000A284101000A2D1204D018010001285A00000A284101000A2C15021F15036F4001000A6A733E01000A0A38B301000004D04A000001285A00000A284101000A2C0E021F0E733D01000A0A389301000004D001000001285A00000A284101000A2C0E021F17733D01000A0A387301000004D00F000001285A00000A284101000A2C0D0218733D01000A0A385401000004D013000001285A00000A284101000A2C0E021F14733D01000A0A383401000004D016000001285A00000A284101000A2C0D021A733D01000A0A381501000004D019010001285A00000A284101000A2C0D021C733D01000A0A38F600000004D017000001285A00000A284101000A2C0E021F0E733D01000A0A38D600000004D011000001285A00000A284101000A2C0E021F10733D01000A0A38B600000004D010000001285A00000A284101000A2C0D021E733D01000A0A389700000004D00E000001285A00000A284101000A2C0A0216733D01000A0A2B7B04D01A010001285A00000A284101000A2C0B021F09733D01000A0A2B5E04D01B010001285A00000A284101000A2C10021B7E4201000A16733F01000A0A2B3C04D01C010001285A00000A284101000A2C0B021F0D733D01000A0A2B1F04D01D010001285A00000A284101000A2C0B021F19733D01000A0A2B02140A062A000013300400F50300004C000011020A026F5900000A6FC700000A25131139DE030000FE137E8A0000043AE20000001F11734301000A2572F811007016284401000A25720C12007017284401000A25722212007018284401000A25723212007019284401000A2572441200701A284401000A2572561200701B284401000A25726E1200701C284401000A2572841200701D284401000A2572981200701E284401000A2572A81200701F09284401000A2572BA1200701F0A284401000A2572CC1200701F0B284401000A2572DE1200701F0C284401000A2572F01200701F0D284401000A2572041300701F0E284401000A2572181300701F0F284401000A2572261300701F10284401000AFE13808A000004FE137E8A00000411111212284501000A39DB02000011124511000000050000001F0000004D0000007B00000096000000B1000000E00000000F0100003E0100006D0100009C010000CB010000FA0100002902000058020000730200008E020000388B02000002A5150000010B1201284601000A2D081201285B00000A2A142A02A50F0000010C1202284701000A2D0E1202287500000A735100000A2B0A1213FE150600001B11138C0600001B2A02A5130000010D1203288000000A2D0E1203287A00000A735400000A2B0A1214FE150900001B11148C0900001B2A027418000001130411046F4801000A2D0811046F7900000A2A142A027418010001130511056F4901000A2D0811056F4A01000A2A142A02A51600000113061206287D00000A2D0E1206287600000A737E00000A2B0A1215FE151300001B11158C1300001B2A02A51B01000113071207284B01000A2D0E1207284C01000A734D01000A2B0A1216FE154800001B11168C4800001B2A02A51901000113081208284E01000A2D0E1208284F01000A735001000A2B0A1217FE154900001B11178C4900001B2A02A51700000113091209288B00000A2D0E1209287700000A738C00000A2B0A1218FE151400001B11188C1400001B2A02A511000001130A120A288D00000A2D0E120A287800000A735300000A2B0A1219FE150800001B11198C0800001B2A02A510000001130B120B287F00000A2D0E120B287400000A735200000A2B0A121AFE150700001B111A8C0700001B2A02A50E000001130C120C287C00000A2D0E120C287B00000A735000000A2B0A121BFE150500001B111B8C0500001B2A02A51A010001130D120D285101000A2D0E120D285201000A734D01000A2B0A121CFE154800001B111C8C4800001B2A02A51C010001130E120E285301000A2D0E120E285401000A735501000A2B0A121DFE154A00001B111D8C4A00001B2A02A512000001130F120F285601000A2D08120F285C00000A2A142A02741D010001131011106F5701000A2D0811106F5801000A2A142A142A062A00000013300400200200004D000011026F5900000A6FC700000A250A3903020000FE137E8B0000043AE20000001F11734301000A2572F811007016284401000A25720C12007017284401000A25722212007018284401000A25723212007019284401000A2572441200701A284401000A2572561200701B284401000A25726E1200701C284401000A2572841200701D284401000A2572981200701E284401000A2572A81200701F09284401000A2572BA1200701F0A284401000A2572CC1200701F0B284401000A2572DE1200701F0C284401000A2572F01200701F0D284401000A2572041300701F0E284401000A2572181300701F0F284401000A2572261300701F10284401000AFE13808B000004FE137E8B000004061201284501000A390101000007451100000005000000100000001B00000026000000310000003C00000047000000520000005D00000068000000730000007E00000089000000940000009F000000AA000000B500000038B2000000D00A00001B285A00000A2AD00600001B285A00000A2AD00900001B285A00000A2AD00A00001B285A00000A2AD04600001B285A00000A2AD01300001B285A00000A2AD04800001B285A00000A2AD04900001B285A00000A2AD01400001B285A00000A2AD00800001B285A00000A2AD00700001B285A00000A2AD00500001B285A00000A2AD04800001B285A00000A2AD04A00001B285A00000A2AD060000001285A00000A2AD060000001285A00000A2A142AD001000001285A00000A2A1B3005008E0600004E00001102752F0000012C167234130070026F5900000A284F00000A732400000A7A0275300000012C0C0274300000010A385A06000002754B00001B2C5702744B00001B0B735901000A0A170C076F5A01000A131F2B24111F6F5B01000A0D082C12096F5C01000A130411046F5D01000A0A160C06096F5E01000A111F6F2200000A2DD3DD07060000111F2C07111F6F2300000ADC02754D00001B39ED00000002744D00001B1305171306735901000A0A11056F5F01000A132038B100000011206F6001000A130711062C4811077B6101000A6FFE00000A13212B1C122128FF00000A1308066F4500000A120828ED00000A6F4600000A261221280301000A2DDBDE0E1221FE163800001B6F2300000ADC161306066F6201000A1309066F4900000A11096F6301000A11077B6101000A6FFE00000A13222B1E122228FF00000A130A1109120A28ED00000A120A28EC00000A6F6401000A1222280301000A2DD9DE0E1222FE163800001B6F2300000ADC11206F2200000A3A43FFFFFFDD0F05000011202C0711206F2300000ADC0275060000013941030000026F5900000A6F6501000A3931030000026F5900000A6FE500000A8E6917401E030000026F5900000A6FE500000A169A130B110B6F6501000A39AE010000110B6F6601000AD0FD000001285A00000A284101000A3AC9000000110B6F6601000AD0FE000001285A00000A284101000A3AAE000000110B6F6601000AD0FF000001285A00000A284101000A3A93000000110B6F6601000AD000010001285A00000A284101000A2D7B110B6F6601000AD001010001285A00000A284101000A2D63110B6F6601000AD002010001285A00000A284101000A2D4B110B6F6601000AD003010001285A00000A284101000A2D33110B6F6601000AD004010001285A00000A284101000A2D1B110B6F6601000AD005010001285A00000A284101000A39CA000000027406000001130C110B6F1B01000A130D735901000A0A110D13231613242B20112311249A130E066F4500000A110E6FC700000A6F4600000A26112417581324112411238E6932D8110C6F0100000A13252B5411256F1F00000A130F066F6201000A1310066F4900000A11106F6301000A110D13261613272B25112611279A1311111011116FC700000A1111110F146F6701000A6F6401000A112717581327112711268E6932D311256F2200000A2DA3DD210300001125754B000001132811282C0711286F2300000ADC110B6F6801000A39D70000000274060000011312735901000A0A11126F0100000A1329389500000011296F1F00000A13131113744F00001B131411148E69066F4500000A6F4C00000A313C066F4500000A6F4C00000A13152B25066F4500000A7263140070111517588C5D000001289100000A6F4600000A26111517581315111511148E6932D3066F6201000A1316066F4900000A11166F6301000A1613172B1411161117111411179A6F4B00000A111717581317111711148E6932E411296F2200000A3A5FFFFFFFDD3E0200001129754B000001132A112A2C07112A6F2300000ADC0274060000011318735901000A0A066F4500000A72711400706F4600000A2611186F0100000A132B2B25112B6F1F00000A1319066F4900000A178D01000001132C112C161119A2112C6F6901000A26112B6F2200000A2DD2DDCC010000112B754B000001132D112D2C07112D6F2300000ADC0275060000013992000000026F5900000A6F6501000A3982000000026F5900000A6FE500000A8E69173172027406000001131A735901000A0A066F4500000A72711400706F4600000A26111A6F0100000A132E2B25112E6F1F00000A131B066F4900000A178D01000001132F112F16111BA2112F6F6901000A26112E6F2200000A2DD2DD2F010000112E754B000001133011302C0711306F2300000ADC0275060000012C7F026F5900000A6F6A01000A2C72027406000001131C735901000A0A066F4500000A72711400706F4600000A26111C6F0100000A13312B2511316F1F00000A131D066F4900000A178D010000011332113216111DA211326F6901000A2611316F2200000A2DD2DDA80000001131754B000001133311332C0711336F2300000ADC02751F0100012C75735901000A0A066F4500000A72711400706F4600000A2602741F0100016F6B01000A13342B2F11346F1F00000A7406010001131E066F4900000A178D010000011335113516111E6F6C01000AA211356F6901000A2611346F2200000A2DC8DE2B1134754B000001133611362C0711366F2300000ADC7234130070026F5900000A284F00000A732400000A7A062A0000017C0000020051003485000C000000000200D60029FF000E00000000020033012B5E010E000000000200B600C77D010C0000000002000703646B0315000000000200A303AB4E04150000000002008B0435C004150000000002002805355D0515000000000200AF0535E4051500000000020025063C61061500000000133004003F0000004F00001102285E0100060A066F4900000A6F4C00000A8D330000010B160C2B130708066F4900000A086F4A00000AA20817580C08066F4900000A6F4C00000A32DF072A0013300400FC0100005000001102250B39E7010000FE137E8C0000043AEF0000001F12734301000A25728114007016284401000A25728D14007017284401000A25729F14007018284401000A2572AB14007019284401000A2572B71400701A284401000A2572C51400701B284401000A2572D31400701C284401000A2572DD1400701D284401000A2572EB1400701E284401000A2572F71400701F09284401000A2572051500701F0A284401000A2572131500701F0B284401000A2572231500701F0C284401000A2572331500701F0D284401000A2572431500701F0E284401000A2572551500701F0F284401000A2572671500701F10284401000A25727B1500701F11284401000AFE13808C000004FE137E8C000004071202284501000A39D80000000845120000000500000005000000150000001500000022000000220000002F0000002F0000003C0000003C000000490000004900000056000000560000006300000063000000700000007D0000003885000000D00600001B285A00000A0A3880000000D00900001B285A00000A0A2B73D00800001B285A00000A0A2B66D00700001B285A00000A0A2B59D00500001B285A00000A0A2B4CD04A00001B285A00000A0A2B3FD04900001B285A00000A0A2B32D04800001B285A00000A0A2B25D01300001B285A00000A0A2B18D030000001285A00000A0A2B0B728F150070732400000A7A062A133003002900000051000011020312006F6D01000A2C140503066F6E01000A10020203046F6F01000A2B080203046F7001000A042A000000133003003000000052000011020312016F6D01000A2C130503076F6E01000A0A0203066F6F01000A2B1004036F7101000A0A0203066F7001000A062A4E02036F7201000A2D080203046F7001000A172A1330030016000000530000110203046F6D01000A0A062C0802036F7301000A26062A2E021716287401000A2DF62A2A021617287401000A262A3216021716287401000AFE012A1E02281B00000A2A4A02281B00000A02737501000A287601000A2A3202287701000A6F7801000A2A1E027B7901000A2A2202037D7901000A2A32027C7A01000A28650100062A1B300300490000005400001102287B01000A02287701000A0312006F7C01000A2C190503066F7D01000A100202287701000A03046F7E01000A2B0D02287701000A03046F7F01000A040BDE0702288001000ADC072A000000011000000200000040400007000000001B300300500000005500001102287B01000A02287701000A0312016F7C01000A2C180503076F7D01000A0A02287701000A03066F7E01000A2B1504036F8101000A0A02287701000A03066F7F01000A060CDE0702288001000ADC082A011000000200000047470007000000000B3001001B0000000000000002287B01000A02287701000A6F8201000ADE0702288001000ADC2A000110000002000000131300070000000032027C7A01000A28660100062A0000001B300300390000005300001102287B01000A02287701000A036F8301000A2D0F02287701000A03046F7F01000A2B04160ADE10170ADE0C26160ADE0702288001000ADC062A000000011C0000000000002B2B0005010000010200000030300007000000001B300300310000005600001102287B01000A02287701000A03046F7C01000A0A062C0D02287701000A036F8401000A26060BDE0702288001000ADC072A000000011000000200000028280007000000001B3003004C0000005600001102287701000A03046F7C01000A0ADE0C2604FE155700001B160ADE00062D2902287B01000A02287701000A03046F7C01000A0BDE152604FE155700001B160BDE0902288001000ADC172A072A01280000000000001010000C0100000100001F001635000C4C00000102001F0022410007000000001E02281B00000A2A3A02281B00000A02037D470000042A00133003007600000057000011032D1072A715007072AF150070738801000A7A027B490000040A027B470000042D4F2B21067B580000040B072C1007036F8901000A2C07067B5A0000042A067B590000040A062DDC2B2A067B580000040C082C16027B4700000408036F8A01000A2D07067B5A0000042A067B590000040A062DD6142A000013300300A300000058000011032D1072A715007072AF150070738801000A7A02257B4B00000417587D4B000004140A027B490000040B2B33077B580000040C027B470000042C12027B4700000408036F8A01000A16FE012B0708036F8901000A2D0C070A077B590000040B072DCA072C0807047D5A0000042A739A0100060D09037D5800000409047D5A000004062C0906097D590000042B0702097D49000004022528790100061758287A0100062A1E027B4C0000042A2202037D4C0000042A22021773900100062A0A162A0A162A0A162A86027B480000042D12027C48000004731B00000A14288B01000A26027B480000042A22021673900100062A00000013300400B100000058000011032D1072BB15007072A7150070738801000A7A02257B4B00000417587D4B000004140A027B490000040B2B4C077B580000040C027B470000042C12027B4700000408036F8A01000A16FE012B0708036F8901000A2C1972EB150070030208287701000604288C01000A738D01000A7A070A077B590000040B072DB1739A0100060D09037D5800000409047D5A000004062C0906097D590000042B0702097D49000004022528790100061758287A0100062A760216287A01000602147D4900000402257B4B00000417587D4B0000042A00133003005400000059000011032D1072A715007072AF150070738801000A7A027B490000040A2B33067B580000040B027B470000042C12027B4700000407036F8A01000A16FE012B0707036F8901000A2C02172A067B590000040A062DCA162A13300300730000005A000011032D0B7265160070738E01000A7A04162F10727116007072AF150070738F01000A7A036F9001000A04590228790100062F0B72AF150070738D01000A7A027B490000040A2B2903067B58000004067B5A000004739101000A8C36000001046F9201000A0417581002067B590000040A062DD42A1E0273890100062A1E0273890100062A0013300300980000005B000011032D1072A715007072AF150070738801000A7A02257B4B00000417587D4B000004140A027B490000040B2B33077B580000040C027B470000042C12027B4700000408036F8A01000A16FE012B0708036F8901000A2D0C070A077B590000040B072DCA072D012A07027B49000004330E02077B590000047D490000042B0C06077B590000047D59000004022528790100061759287A0100062A133003007F00000057000011032D1072A715007072AF150070738801000A7A027B490000040A027B470000042D552B24067B580000040B072C1307036F8901000A2C0A04067B5A00000451172A067B590000040A062DD92B2D067B580000040C082C19027B4700000408036F8A01000A2D0A04067B5A00000451172A067B590000040A062DD3041451162AA202281B00000A02037D4D00000402037B4B0000047D4E00000402177D5000000402147D4F0000042A3202288B0100068C360000012ABE027B4F0000042D0B72AF150070739301000A7A027B4F0000047B58000004027B4F0000047B5A000004739101000A2A7E027B4F0000042D0B72AF150070739301000A7A027B4F0000047B580000042A7E027B4F0000042D0B72AF150070739301000A7A027B4F0000047B5A0000042A000000033002006600000000000000027B4E000004027B4D0000047B4B0000042E0B72AF150070739301000A7A027B500000042C1A02027B4D0000047B490000047D4F00000402167D500000042B19027B4F0000042C1102027B4F0000047B590000047D4F000004027B4F00000414FE0116FE012AB6027B4E000004027B4D0000047B4B0000042E0B72AF150070739301000A7A02177D5000000402147D4F0000042A5602281B00000A02037D5200000402047D510000042A0000133003005D0000005A000011032D0B7265160070738E01000A7A04162F10727116007072AF150070738F01000A7A027B520000047B490000040A2B2903027B510000042D08067B5A0000042B06067B58000004046F9201000A0417581002067B590000040A062DD42A00000013300200200000005C000011160A027B520000047B490000040B2B0B0617580A077B590000040B072DF2062A0A162A32027B520000046F7F0100062A4A027B52000004027B5100000473960100062ABE02281B00000A02037D5400000402047D5300000402037B4B0000047D5500000402177D5700000402147D560000042ACE027B560000042D0B72AF150070739301000A7A027B530000042D0C027B560000047B5A0000042A027B560000047B580000042A00033002006600000000000000027B55000004027B540000047B4B0000042E0B72AF150070739301000A7A027B570000042C1A02027B540000047B490000047D5600000402167D570000042B19027B560000042C1102027B560000047B590000047D56000004027B5600000414FE0116FE012AB6027B55000004027B540000047B4B0000042E0B72AF150070739301000A7A02177D5700000402147D560000042A1E02281B00000A2A327E1E000004026F060100062A367E1E00000402036F070100062A367E1E00000402036F080100062A367E1E00000402036F090100062A367E1E00000402036F0A0100062A3A7E1E0000040203046F0B0100062A3E7E1E000004020304056F0C0100062A467E1E000004020304050E046F0D0100062A4E7E1E000004020304050E040E056F0E0100062A567E1E000004020304050E040E050E066F0F0100062A0330090017000000000000007E1E000004020304050E040E050E060E076F100100062A0003300A0019000000000000007E1E000004020304050E040E050E060E070E086F110100062A00000003300B001B000000000000007E1E000004020304050E040E050E060E070E080E096F120100062A327E1E000004026F3300002B2A367E1E00000402036F3400002B2A367E1E00000402036F2800002B2A327E1E000004026F3C0100062A367E1E00000402036F3D0100062A367E1E00000402036F3E0100062A327E1E000004026F3500002B2A367E1E00000402036F3600002B2A367E1E00000402036F3700002B2A00001B300200570000005D000011026F9401000A7E170000046F9501000A6F1D00000A0A7202010070734100000A0B0607739601000A0C08739701000A26076F4200000A08026F9801000A26DE0A082C06086F2300000ADCDE0A072C06076F2300000ADC2A00011C0000020029001740000A00000000020021002B4C000A000000002602031628B30100062A00001B3003002A0100005E000011043923010000020328B40100060A7202010070734100000A0B076F4200000A0607734300000A0C086F4400000A26DE0A082C06086F2300000ADCDE0A072C06076F2300000ADC727D16007028740000060D026F9901000A130411046F4500000A72360100706F4600000A2611046F4500000A72360100706F4700000A166F4800000A1613052B2111046F4900000A11056F4A00000A1611058C5D0000016F4B00000A110517581305110511046F4900000A6F4C00000A32CF1203727D160070283500000A11042854000006267202010070734100000A130611066F4200000A725D080070098C0300000272B3080070286F00000A1106734300000A13071107176F7000000A11076F4400000A26DE0C11072C0711076F2300000ADCDE0C11062C0711066F2300000ADC2A000001340000020027000930000A0000000002001900233C000A000000000200FD00120F010C000000000200D800451D010C000000005E7283160070026F9A01000A0228B5010006289B01000A2A133005005A0000005F00001102120028B60100060B72A11600700372BD160070289C01000A0C0872CD160070289400000A287300000A077E620000042D1114FE06B9010006739D01000A80620000047E62000004283800002B289500000A287300000A0C082A000013300300D80100006000001172EF0D00700A026F9E01000A0B07451A000000050000005001000010000000500100001B000000260000008800000050010000930000009E0000005001000050010000A90000005B010000E800000050010000F0000000500100005001000050010000F80000000001000050010000400100005001000048010000384B01000072D11600700A384B01000072DF1600700A384001000072E71600700A3835010000026F9F01000A2C4F026FA001000A2C471B8D010000010C081672F9160070A20817026F9F01000A8C69000001A2081872CD160070A20819026FA001000A8C69000001A2081A720B170070A208289300000A0A38DE000000720F1700700A38D3000000721F1700700A38C8000000722B1700700A38BD00000072331700700A38B2000000723F170070026FA101000A156A2E1E026FA101000A20401F00006A3010026FA101000A0D120328A201000A2B057253170070720B170070289C01000A0A2B73725B1700700A2B6B727D1700700A2B63728F1700700A2B5B729F170070026FA101000A156A2E1F026FA101000A20401F00006A3011026FA101000A1304120428A201000A2B057253170070720B170070289C01000A0A2B1B72B51700700A2B1372CD1700700A2B0B728F150070732400000A7A062A133005005900000049000011026F4500000A6F4C00000A8D310000010A03026F4500000A6F4C00000A8D6700000151160B2B22026F4500000A076F3A01000A0C0607080350078F6700000128B7010006A20717580B07026F4500000A6F4C00000A32D0062A000000133004004E0100004A000011031652026F3B01000A0B07281A01000A0C026F3C01000A0D08130411044513000000B700000096000000B70000000500000020000000B7000000120000005A000000B700000065000000B70000006F000000B7000000790000004D0000003D00000030000000CD0000008400000038C80000000918733D01000A0A38CC000000091F14733D01000A0A38BE000000091F0C176A733E01000A0A38AE000000091A733D01000A0A38A1000000091B1F1216733F01000A0A3891000000091C733D01000A0A3884000000091F10733D01000A0A2B79091E733D01000A0A2B6F0916733D01000A0A2B65091F0D733D01000A0A2B5A091F0C026F4001000A6A733E01000A0A2B4809020728B80100060A062D3C091F0C026F4001000A6A733E01000A0A0317522B2772D5170070088C0F010001284F00000A732400000A7A720B18007007284F00000A732400000A7A062A000013300400360200004B00001104D00A00001B285A00000A284101000A2D5A04D015000001285A00000A284101000A2D4804D018000001285A00000A284101000A2D3604D04600001B285A00000A284101000A2D2404D012000001285A00000A284101000A2D1204D018010001285A00000A284101000A2C15021F15036F4001000A6A733E01000A0A38B301000004D04A000001285A00000A284101000A2C0E021F0E733D01000A0A389301000004D001000001285A00000A284101000A2C0E021F17733D01000A0A387301000004D00F000001285A00000A284101000A2C0D0218733D01000A0A385401000004D013000001285A00000A284101000A2C0E021F14733D01000A0A383401000004D016000001285A00000A284101000A2C0D021A733D01000A0A381501000004D019010001285A00000A284101000A2C0D021C733D01000A0A38F600000004D017000001285A00000A284101000A2C0E021F0E733D01000A0A38D600000004D011000001285A00000A284101000A2C0E021F10733D01000A0A38B600000004D010000001285A00000A284101000A2C0D021E733D01000A0A389700000004D00E000001285A00000A284101000A2C0A0216733D01000A0A2B7B04D01A010001285A00000A284101000A2C0B021F09733D01000A0A2B5E04D01B010001285A00000A284101000A2C10021B7E4201000A16733F01000A0A2B3C04D01C010001285A00000A284101000A2C0B021F0D733D01000A0A2B1F04D01D010001285A00000A284101000A2C0B021F19733D01000A0A2B02140A062A4A02281B00000A0273750100067D640000042A4A02281B00000A0273A301000A7D660000042A32027B660000046FA401000A2A32027C6500000428650100062A32027C6500000428660100062A001B3002001F000000530000110228BD010006027B66000004036FA501000A170ADE070228BE010006DC062A00011000000200000016160007000000000B3002001D000000000000000228BD010006027B66000004036FA601000A26DE070228BE010006DC2A000000011000000200000015150007000000001E02281B00000A2A3E037B63000004027B8D000004FE012A1B300400AB00000061000011140D73EF01000613041104037D8D000004027B660000046FA401000A0B160C2B3508027B660000046FA401000A2F2304027B66000004086FA701000A5104507B6300000411047B8D0000043305171305DE560817580C080732C7160A041451DE0826041451160ADE00062D3A0228BD01000604027B66000004092D0E1104FE06F001000673A801000A0D096FA901000A51171305DE1226041451161305DE090228BE010006DC172A11052A000128000000001100506100080100000100006C002A9600094C00000102006C00339F000700000000133003002C0000000200001102281B00000A02038D190000027D67000004160A2B11027B670000040673BB010006A20617580A060332EB2A133002002900000002000011037B63000004027B670000048E695D0A06163203062B0206650A027B67000004069A036FBF0100062A000000133002002900000002000011037B63000004027B670000048E695D0A06163203062B0206650A027B67000004069A036FC00100062A00000013300300250000000200001103027B670000048E695D0A06163203062B0206650A027B67000004069A03046FC10100062A000000133003002C0000000200001102281B00000A02038D5400001B7DAA01000A160A2B11027BAA01000A0673AB01000AA20617580A060332EB2A1E026FAC01000A2AA6027BAA01000A7EAD01000A2D1114FE06AE01000A73AF01000A80AD01000A7EAD01000A283900002B2A00001330040032000000020000110F01FE165D00001B6FB101000A027BAA01000A8E695D0A06163203062B0206650A027BAA01000A069A0304056FB201000A2A00001330040032000000020000110F01FE165D00001B6FB101000A027BAA01000A8E695D0A06163203062B0206650A027BAA01000A069A0304056FB301000A2A00001330030031000000020000110F01FE165D00001B6FB101000A027BAA01000A8E695D0A06163203062B0206650A027BAA01000A069A03046FB401000A2A0000001330030031000000020000110F01FE165D00001B6FB101000A027BAA01000A8E695D0A06163203062B0206650A027BAA01000A069A03046FB501000A2A0000001330030031000000020000110F01FE165D00001B6FB101000A027BAA01000A8E695D0A06163203062B0206650A027BAA01000A069A03046FB601000A2A00000042534A4201000100000000000C00000076342E302E33303331390000000005006C000000784C0000237E0000E44C0000903F000023537472696E677300000000748C00004018000023555300B4A40000100000002347554944000000C4A400003434000023426C6F620000000000000002000001571FA20B090E000000FA253300160000010000002A010000300000008D000000F00100004802000009000000B601000011000000DD0000006100000009000000200000002C000000060000005D0000000100000007000000180000001B0000003900000000000A000100000000000600D601CF010600DD01CF010A000802F301060031021E0206003D021E02060049021E02060055021E0206006B021E0206007702CF010E00C60266000600F402D90206007203CF010600A403CF010A001504F3010A003F04F3010A006204F3010A008304F3010A00D404F3010A00FF04F30106009D06CF010A003E08F3010A00C50AF3010A00FB0AF3010A006F0BF30106008813CF0106009D13D9020600B913CF010600C013D9020600CE13CF010600D513CF010600DC13CF010600E313CF010600EA13CF010600F113CF010600F813CF0112000B14CF0106003314211406007E1421140600CC14211406009815CF010600FB15D902120054163C160600351721141200CF193C160E00051AE3190600261A21140A00D51BE7010A00E91BE7010A001C1C011C0A00471CE7010A00AF1CE7010600BA1D1E020600571ECF010600171F1E020A004321011C06008621672106001622CF0106008E2321140600A52321140600C22321140600E12321140600FA23211406001324211406002E24211406004924211406006224211406007B2421140600AB2498241301BF2400000600EE24CE2406000E25CE2412002C25CE2406007225CE2406008D25CF0106009A25CF010600A625CF010A00B025011C0A00CC25011C0600D32567210600E92567210A00F425011C06000726CF0106000E26CF010A004B26011C0E00612636000E00772636000A009E2688260A00BF26AC260A00D12688260A00DC26AC260A00F626E7010A002227E70106003D27CF010A004327E7010A005E27011C06007327CF010E007A2766000600A827CF010600DF27CF011200B420492806006428CF010A007628E7010600A228CF010600AA28CF010600B028CF010600B528CF010600BB28CF010600F028CF010A000D29011C060032291829060056291829A700982900000600A329D9022F00982900000600AC2ACF011200A02B3C160600B42B21141200C62C49280600D02CCF010600D52CCF010600DD2CCF010600E42CCF010600EB2CCF010600F12CCF010600F82CCF010600FF2CCF010600062DCF010600182DCF010600202DCF0106002A03CF0106002F2DCF011200482D392D0600562DCF011600632DCF010600672D1E020600712D1E0212007B2DD9021600852DD90216008D2DD9021600AB2D952D1600B52D952D1600C32D98241600C92D98241200D22D98241600EB2D98241600F32D98241600F92D952D1200252E092E1200332E092E1200712E4E2E1200852E4E2E1200942E4E2E1200A32E4E2E1200B32E4E2E1200BF2E4E2E1200F32ED02E1200FF2ED02E06001F2F0A2F0600282F0A2F0600342F0A2F06003F2F0A2F0600522F482F06005C2F482F06006A2F482F06006F2F482F0600782F482F0600832F482F0600882F482F06008F2F482F06009C2F482F1600BF2FA92F0600E42FCA2F12000430F42F12001E30F42F12003830F42F12004E30F42F12006430F42F12007130F42F16008C307C301200973049281200A4303C160600B13021140600D830C1300600E830C1300600F630C13006001331023106003331233106004031233106006E3150310600793150310600863150311200B23195310600BB3195310600C03195311600F831CA3106000E32023206001732023216004432253212005B324A32160070324A3206007A324A32060081324A32160097328C3216009B328C321600A9328C321600B6328C321600C5328C321600DF32CF321600EB32CF3216001433F63216002533F63216003333F63216004C33383316005C33383316007933663316008733663316008E3366331600983366331600A43366330A00AE33E7010A00B733AC260A00C533AC260A00D233AC260A00E43388260A00F33388261A000C3401341A00193401341A00253401341A00303401341A00383401341A00423401341E005C344C341E0067344C341E0071344C341E007A344C341E0080344C341E008B344C341E0091344C341A00A93497341A00B33497341A00C03497341A00EC34D3341A000B35FA341A001935FA341A002935FA341A00473538351A005C35383516006D35D90212007935492806008C354A3206009C354A320600BC35A5350600C535CF010600CB35CF010600D335CF010600DB35CF010600E335CF010600EB35CF010600F335CF010600FB35CF0106000336CF0116000B3625320A001136882606005236D9021200C9363C160E002C370A370E00543739370E006937E3190600AC3821141200FB383C1606002939CF011200B7393C161200D0393C160600F039D9021200713A3C160A00963BE7010A00B53B011C0A00C33B011C0A00373CE7010A005B3CF3010A00643CF3010A006E3CF3010A00773CF3010A008F3CF3010A00993CF3010E00423D273D1600B03D25321600C03D25320600E83D4A320600043ECF0106001A3E21140600313ECF010600483ECF0106006D3ECF0106007F3ECF010600A63ECF010A00C03EE70106005E3FCF010000000001000000000001000100010010002B0036000500010001000901100053003600090014000600810100005A00660005001B00020101001000740066000500200004010100100081006600050024000501800110008D006600050037004A01810110009A00660005003A00570180011000AB00360005004300570181011000BC003600050043005C0181011000CA003600050043005E0181011000DA00360005004300600181011000E500360005004300610101001000F000360005004300650101001000FB0036000500450069010120100009016600050047007501030010001801000005004D0089010300100027010000050051009001030010003E0100000500530096010320100055010000050058009A01810110006401660005005B009B01010100006901660025005B00B10181011000E500000005006200B101010010008301360005006300BA01010010009601360005006500BB0101001000A101360005006700C20101001000B201360005006800C601030110003C2B000005006A00CE0103011000D62B000005006B00D10103011000292C000005006C00D401030110006736000005006D00D701030110007A36000005006E00D801030110008D37000005007000DA0103011000A237000005007100DB0103011000D537000005007300DD0103011000E937000005007500DE01030110003438000005007700E001030110003E39000005007900E201030110006639000005007B00E30103011000FE39000005007D00E50103011000203A000005007F00E601030110008B3A000005008100E801030110009F3A000005008300E90103011000F23A000005008500EB0103011000063B000005008600EC01030110001A3B000005008700ED0100000000A03C000005008A00EF0103011000393F000005008D00EF0106007C020A0006008B020A0006009A020D000600FB021000060014031B0006001D031B00060022031E0006002A032100060033030A00060041030A0006004A030A00060055030A00060064030A0006007B032500060086032900060094032D000600A90331000600B8032D0011004B2517140600BD081E000600CF081E003600EE081B00360000091B0031001D091B001100E8277A2011002228932036004C13CB0136005A13D40136006413DD0133007213DD013600F000E101060014031B0006002A03E90106008F130D0006007B032500060087151E000600A1155F030600B2155F030600CC155F030600E2152500010001185904010028186A0401004E187504010074187E040100901887040100B41898040100D018A2040100EE181B0001000E190A001100DD29D92511003F2A21261100852AD9251100FF2A80261100882C80263100331A260511004B25662A11008438492C5680E51A1B005680F61A1B005680071B1B005680221B1B0056803E1B1B005680571B1B005680771B1B005680971B1B005680B41B1B000600F01C1E000600FE1C1E000600351D1E000100831D9D112100C41DB8118100CD1D0D000100D71DBD110600351D1E000100DC1D1E000100A61E1E002100F81E2D002100DC1D1E000100FD1EBD110100051F0A002100641F0A002100F81E2D002100641F0A002100F81E2D002100DC1D1E000100FD1EBD110100051F0A00060093200D0006009720BD11060032080D0006069C201E005680A4207D135680A9207D135680B4207D135680BF207D135680D0207D135680D6207D1311004B25353206001B211E000600B8032D000600351D1E0006002621BF1306003021DB1306003021E01311004B25B9320600502BB7260600EA2B9B270600E02143280600C922C62A06008D36CB2A06009D36CF2A0600C922C62A0600B737CA2B06009D36CF2A0600C922C62A0600E8221B000600FD37382C06000E3826050600FD37382C060048383D2C06005239E82C0600C922C62A06007A39ED2C06008B39F22C0600123AE82C0600C922C62A0600343AB62D06008B39F22C06005239E82C0600C922C62A0600B33A0E2E06008B39F22C0600C922C62A06008B39F22C06002E3B7F2E06003F3B842E0600503BE82C1300E53C802F1300F93C802F1300C83D802F060093201E005820000000008618C8033A000100EC20000000008600CE033E0001005821000000008600E90342000100F421000000008600FA034200020050200000000091003F250F1403001D2200000000860064014800030025220000000086000B04480003002D2200000000860010044800030038220000000086001E044C000300682200000000860029044C000300702200000000860034044C00030078220000000086004A0451000300A822000000008600520451000300B0220000000086005A0451000300B8220000000086006B0456000300E822000000008600730456000300F0220000000086007B0456000300F8220000000086008C045B000300282300000000860099045B0003003023000000008600A6045B0003003823000000008600B304600003008A23000000008600BE04600003009223000000008600C904600003009C23000000008600DE0465000300CC23000000008600E90465000400D423000000008600F40465000500DC2300000000860007056A0006000C2400000000860013056A00060014240000000086001F056A0006001C240000000086002B0560000600302400000000960038056F000600E0250000000096004D0575000700FC250000000096005E057C0008001C26000000009600740575000A003826000000009600850583000B0060260000000096009B0575000E007C26000000009600AC058C000F00AC26000000009600C20575001300C826000000009600D305970014000427000000009600E905750019002027000000009600FA05A4001A0063270000000086001006B300200070270000000086001F06B30020007D270000000086002E06B30020008A270000000086003D06B700200097270000000086004506B7002000A4270000000086004D06B7002000B1270000000086005506B3002000BE270000000086006406B3002000CB270000000086007306B3002000D8270000000086008206BB0020000C280000000086008B06BB00210015280000000086009406BB0022002028000000008600A806C00023005228000000008600B706C00024005B28000000008600C606C00025006428000000008600D506C90026009628000000008600E106C90027009F28000000008600ED06C9002800A828000000008600F906D2002900DA280000000086000507D2002A00E3280000000086001107D2002B00EC280000000086001D07DB002C001E290000000086002E07DB002D0027290000000086003F07DB002E0030290000000086005007E4002F005F290000000086005F07E400310068290000000086006E07E400330074290000000086007D07EA003500A6290000000086008D07EA003600AF290000000086009D07EA003700B829000000009600AD07F3003800C229000000009600B807F3003A00CB29000000009600C307F3003C00D429000000008600CE0760003E00E829000000008600DA0760003E00F029000000008600E60760003E00F8290000000086001D03F9003E00622A000000008600F207F9003F006B2A000000008600F707F9004000742A000000008600FC0760004100882A000000008600080860004100902A000000008600140860004100982A0000000086002008FF004100B02A0000000086002408FF004300BA2A0000000086002808FF004500C42A0000000086002C08FF004700CE2A0000000086003208FF004900D82A0000000086003808FF004B00E22A000000008600480807014D00FC2A000000008600540807014F00112B000000008600600807015100282B0000000086006C0810015300502B0000000086007808100155005A2B000000008600840810015700642B0000000086009008190159007E2B0000000086009C0819015B00882B000000008600A80819015D00922B000000009600B40822015F00972B000000008600DD083E006100A02B000000008608140928016100CD2B00000000E6093009B3006100D02B0000000096083B092D016100E62B000000009600440932016100F22B000000009600570932016100F92B0000000096006A0932016100002C0000000096007D09320161000C2C0000000086008C0960006100552C0000000086009409600061005D2C0000000086009C0960006100652C000000009600220332016100712C000000008600A4093E006100792C000000009600B40936016100802C000000009600C00936016100872C000000009600CC0936016100902C000000009600D8093A016100072D000000009600DC093A016200202D000000009600E009360163009F2D000000009600ED0936016300A62D000000009600F90936016300B02D000000008600050AB3006300FB2D0000000086000D0AB3006300032E000000008600150AB30063000C2E0000000096001D0A400163005C2E000000008600230A60006400AF2E000000008600280A60006400B72E0000000086002D0A60006400BF2E00000000C600320AB7006400E42E0000000096003B0A36016400682F0000000086004D0A19016400D22F000000008600630A47016600E12F000000008600790A47016800F02F0000000086008F0A4F016A000F30000000008600980A4F016C001930000000008600A10A4F016E002330000000008600AA0A580170004230000000008600B30A580172004C30000000008600BC0A580174005630000000008600D10A610176007530000000008600DF0A610178007F30000000008600ED0A61017A008930000000008600030B6A017C00A830000000008600190B6A017E00B2300000000086002F0B6A018000BC30000000008600450B73018200DB30000000008600530B73018400E530000000008600610B73018600EF30000000008600780B7C0188000831000000008600870B7C018A001231000000008600960B7C018C001C31000000008600A50B85018E003B31000000008600B20B850190004531000000008600BF0B850192004F31000000008600CC0B8E0194006E31000000008600D80B8E0196007831000000008600E40B8E0198008431000000008600F00B8E019A00C731000000008600040C8E019C00D131000000008600180C8E019E00DC310000000086002C0C6101A0001F32000000008600420C6101A2002932000000008600580C6101A40034320000000086006E0C4F01A60077320000000086007F0C4F01A8008132000000008600900C4F01AA008C32000000008600A10C8501AC00CF32000000008600B60C8501AE00D932000000008600CB0C8501B000E432000000008600E00CFF00B2008D33000000008600EC0CFF00B4009733000000008600F80CFF00B600A133000000008600040DFF00B800AB33000000008600120DFF00BA00B533000000008600200DFF00BC00BF330000000086002E0D4800BE00C7330000000086003D0D4800BE00CF330000000086004C0D4800BE00D7330000000086005B0D4C00BE00DF33000000008600700D4C00BE00E733000000008600850D4C00BE00EF330000000086009A0D5100BE00F733000000008600AC0D5100BE00FF33000000008600BE0D5100BE000734000000008600D00D5600BE000F34000000008600E20D5600BE001734000000008600F40D5600BE001F34000000008600060E5B00BE0027340000000086001D0E5B00BE002F34000000008600340E5B00BE0037340000000086004B0E6000BE003F34000000008600600E6000BE004734000000008600750E6000BE004F340000000086008A0E6500BE0057340000000086009F0E6500BF005F34000000008600B40E6500C0006734000000008600C90E6A00C1006F34000000008600DF0E6A00C1007734000000008600F50E6A00C10080340000000096000B0F7500C1009C34000000009600210F9701C200C8340000000086003C0F9F01C400F834000000008600470F9F01C4000035000000008600520F9F01C40008350000000086005D0FA401C40038350000000086006B0FA401C4004035000000008600790FA401C4004835000000008600870FA901C4007835000000008600940FA901C4008035000000008600A10FA901C4008835000000008600AE0FAE01C400B835000000008600C30FAE01C400C035000000008600D80FAE01C400C835000000008600ED0F9F01C400D03500000000860002109F01C400D83500000000860017109F01C400E0350000000086002C10A901C400E8350000000086004310A901C400F0350000000086005A10A901C400F8350000000086007110AE01C40000360000000086009010AE01C4000836000000008600AF10AE01C4001036000000008600CE10A401C4001836000000008600E610A401C4002036000000008600FE10A401C400283600000000860016110701C40042360000000086002A110701C60057360000000086003E110701C8006C3600000000860052117C01CA00853600000000860069117C01CC008F3600000000860080117C01CE009C3600000000860097116A01D000DF36000000008600B5116A01D200E936000000008600D3116A01D400F336000000008600F1115801D600123700000000860002125801D8001C3700000000860013125801DA00283700000000860024127301DC006B370000000086003A127301DE00753700000000860050127301E0007F3700000000860066121901E20099370000000086007A121901E400A3370000000086008E121901E600B037000000008600A212B301E8007038000000008600B0124800EB00EC3A0000000086007C02F900EB001E3B000000008600BD12F900EC00273B000000008600CC12F900ED00303B000000008600DB121901EE00D83B000000008600EA124701F000E73B000000008600F9124701F200F63B00000000860008136000F4000A3C00000000860015136000F400123C00000000860022136000F4001C3C0000000096002F136F00F4000F2D000000009100CC276F20F500172D0000000091000F288820F600FC3D0000000091188113E501F7001C3E0000000091188113E501F7005C3E000000009600B4093601F7004841000000008618C803F201F7006941000000008600AB13FE01F9007D410000000086008C090B02FB0092410000000086008C091402FC00A4410000000086008C092502FE00F6410000000086008C09330200010C420000000086008C094502020140420000000086008C095102040180420000000086008C0960020701CC420000000086008C0972020B0124430000000086008C09870210018C430000000086008C09A002160100440000000086008C09BC021D0180440000000086008C09DB0225010C450000000086008C09FD022E01A54500000000860013142203380104460000000086003C1429033A01A0460000000086004D1432033B012047000000008600661437033B01B84700000000860066143F033C012748000000008600891448033D014F48000000008600A01448033F017448000000008600B714370341011049000000008600B7144F0342019849000000008600D714370343012C4A000000008600E41458034401604A000000008600F41432034501B04A000000008600021529034501F44A000000008600151537034601504B00000000860015153F034701984B0000000086002F1558034801CC4B000000008600481558034901004C000000008600611537034A01604C00000000860061154F034B01A84C000000008600781537034C01F44C000000008618C8033A004D01CF4D000000008608081664034D01D74D000000008608221676034D01E04D000000008608671689034E01E84D000000008608801695034E01F14D0000000086089916A2034F01F94D000000008608B216AC034F01024E000000008608CB16B70350010A4E000000008608DA16C1035001134E000000008608E916CC0351011B4E0000000086080017DE035101244E0000000086081717F10352012C4E0000000086082617FC035201354E0000000086084217080453013D4E00000000860853170E045301464E0000000086086417B70054014E4E000000008608771715045401574E0000000086088A17B30055015F4E000000008608A2171A045501684E000000008600BA173E005601BC4E000000008600D2173A0056010464000000008600E717BB0056010D64000000008600E7171F0457011764000000008600E717250459012164000000008600E7172C045B013C64000000008600E71733045C010865000000008600E7173B045E0177650000000086008C092C04600181650000000086008C094404610190650000000086008C0950046301C845000000009100C629D32565015C46000000009100202A152666016446000000009100662AD32567010C47000000009100E12A79266801E14A000000009100672C792669014466000000009100BF1900056A01CC66000000009100151A10056E01BC67000000009300AB132B057101E4690000000093008C093C057501D46C0000000091004E1A50057A01186F000000009100601A61057E01C0700000000091007B1A61058001D872000000009100961A61058201A473000000009100B71A610584010C75000000009100CD1A6105860139660000000091003C36602A8801BC6B0000000091006B38422C89011C760000000091188113E5018A015876000000009300DD1B81108A01C076000000009300F31B88108B01A077000000009600281C8F108C010878000000009100521C9C108E016479000000009100681CA7109001A87B000000009600841CB3109301AC7F000000009600921CB8109401D881000000009600A21CBE109501F088000000009600B71CC51096013C89000000009600C31CD0109701448B000000009600D31CD61098017C8B000000009600D31CF3109C01B88B000000009600DF1C1611A001CC8B000000009600E61C2811A301EE8B0000000096000E1D3B11A601FA8B0000000096001A1D3B11A701058C000000009600261D4111A801128C000000008618C8033A00A9011A8C000000008618C8033A00A9012D8C0000000086083F1D3E00A9013A8C000000008608491D4711A901428C0000000086085D1D5311A9014B8C0000000086000E1D3A00AA01588C000000008600D31C6011AA01C08C000000008600D31C7311AD012C8D000000008600711D3A00B001648D0000000086001A1D3A00B001748D000000008600DF1C8C11B001D88D000000008600E61C9411B201288E000000008600771D9411B401A88E000000008618C8033A00B601B08E000000008618C803C111B601C08E00000000E6091409C811B701448F00000000E609E41DCD11B801F38F00000000E6093F1D3E00BA01FB8F000000008108ED1DD311BA01049000000000E609F71DD811BB010D9000000000E609001EB300BB01109000000000E6090F1EB300BB01139000000000E6091F1EB300BB01169000000000E609321E4800BB01389000000000E6093F1ED811BB01449000000000E6014A1ECD11BB01019100000000E601711D3A00BD01209100000000E6014E1EDD11BD01809100000000E6015D1EE211BE01FF9100000000E601641EEA11C001079200000000E101721EEF11C001109200000000E6019F1EF411C001B492000000008600771DF911C1013F93000000008618C8030E12C301689300000000E6090B1F4800C401759300000000E609271F1412C401A59300000000E609311F4800C401C59300000000E609391F4800C401E89300000000E601431FB300C4015A9400000000E6014C1F3A00C4018894000000008618C8032012C401A09400000000E1016B1FE211C6010C9500000000E109911F3E00C801389500000000E109BA1FB300C8013B9500000000E109EC1F4800C801489500000000E101721EEF11C8015B95000000008618C8032012C8018B9500000000E6090B1F4800CA01C09500000000E601431FB300CA01329600000000E6014C1F3A00CA016096000000008618C8033A00CA0168960000000096008C092712CA0175960000000096008C093012CB0183960000000096008C094112CD0191960000000096008C094F12CF019F960000000096008C096112D101AD960000000096008C096D12D301BC960000000096008C097C12D601CC960000000096008C098E12DA01DE960000000096008C09A312DF01F2960000000096008C09BC12E50108970000000096008C09D812EC012C970000000096008C09F712F40154970000000096008C091913FD017B970000000096008C093E13070288970000000096008C094513080296970000000096008C0951130A02A497000000009600E7175A130C02B197000000009600E7175F130D02BF97000000009600E71765130F02CD97000000009600E7173E131102DA97000000009600E7176C131202E897000000009600E71774131402F897000000009600DE20881016027898000000009600EA209F1317028498000000009600EA20A7131902089A000000009100F520B0131C02709A0000000091000C21B8131E02549C000000009100281C8F101F02BC9C000000009100521C9C102102189E000000009100681CA7102302F099000000009100F63EB81326025AA0000000008618C8033A0027026DA0000000008618C8033A00270280A00000000086083F1D3E0027028DA00000000086000E1D3A0027029AA00000000086001A1D3A002702A8A0000000008600DF1CC7132702E4A0000000008600E61CCD13280238A1000000008600771DD313290218A2000000008618C803D3112B0250A2000000008600DF1CC7132C0288A2000000008600E61CCD132D02C0A2000000008600771DD3132E02F4A2000000008618C803D311300234A30000000086083F1D3E00310260A3000000008600D31C60113102A0A3000000008600D31C73113402E0A3000000008600DF1C8C11370220A4000000008600E61C9411390260A4000000008600771D94113B022CA30000000091006F3FAD323D027A47000000008618C8033A003E028447000000008600572BBC263E02A647000000008600762BC9263F02D148000000008618C8033A004102DC48000000008600F12BA0274102FE480000000086000D2CAD2742027F49000000008618C8033A00440287490000000086003D2C472844028F49000000008600512C472846023767000000008618C8033A0048023F67000000008618C8033A0048024867000000008600A636D82A48026069000000008618C8033A0048026869000000008618C8033A0048027069000000008600C737D82A4802A46B000000008618C8033A004802AC6B000000008618C8033A004802CC6B0000000086001B38D82A4802B46B000000008618C8033A004802506C0000000086005238D82A4802386E000000008618C8033A004802406E000000008618C8033A004802486E0000000086009539D82A4802E06F000000008618C8033A004802E86F000000008618C8033A004802F06F000000008600453AD82A4802F871000000008618C8033A0048020072000000008618C8033A0048020872000000008600C43AD82A48023C74000000008618C8033A0048024474000000008618C8033A0048024C74000000008618C8033A0048025474000000008600643BD82A480220A1000000008618C8033A00480228A10000000086004C3FC7134802000001003821000001003821000000000000000000000000000000000000000001005521000001005521000001005C21020002006021000001005521000001005C21020002006021020003009321000001005521000001005C21020002006021020003009321020004009A21000001005521000001005C21020002006021020003009321020004009A2102000500A121000001005521000001005C21020002006021020003009321020004009A2102000500A12102000600A82100000100932000000100932000000100932000000100932000000100932000000100932000000100932000000100932000000100932000000100932000000100932000000100932000000100932000000100932000000100932000000000000000000100932000000000000000000100932000000000000000000100932000000100932000000100932000000100932000000100AF2100000200BB2100000100AF2100000200BB2100000100AF2100000200BB2100000100F20700000100F20700000100F20700000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100C62100000200C82100000100F20700000100F20700000100320800000100CA2100000200D421000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000001009320000002003208000000000000000000000000000000000000000001005521000001005C2102000200602100000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100932000000200320800000100CA2100000200E02100000300320800000100E52100000100E52100000100E52100000100CA2100000200D42100000100932000000200320800000100932000000200320800000100552100000100C62100000100C62100000100EF2100000200F82100000100F20700000200072200000100F20700000100F20700000200072200000100F20700000200072200000100F20700000200072200000100F207000002002A2200000100F207000002002A2200000300302200000100F207000002002A2200000300302200000400362200000100F207000002002A22000003003022000004003622000005003C2200000100F207000002002A22000003003022000004003622000005003C2200000600422200000100F207000002002A22000003003022000004003622000005003C2200000600422200000700482200000100F207000002002A22000003003022000004003622000005003C22000006004222000007004822000008004E2200000100F207000002002A22000003003022000004003622000005003C22000006004222000007004822000008004E2200000900542200000100F207000002002A22000003003022000004003622000005003C22000006004222000007004822000008004E2200000900542200000A005A22000001006022000002006622000001006B22000001007622000001007C22000001006622000002003208000001006622000002003208000001007622000001008D22000001007622000001009522000001006B22000001007622000001007C22000001009522000001009522000001007622000001008D2200000100762200000100320800000100320800000100320800000100320800000100320800000100320800000100320800000100320800000100320800000100F20700000100F207000002009D2200000100F207000002009D2200000100F20700000100F207000002009D2200000100F207000002009D2200000100F20700000100F20700000200A82200000100F20700000200A82200000100C62100000100C62100000100C62100000100C62100000100C62100000100B72200000200BF2200000300F20700000400072200000100C92200000200CF2200000300072200000100B72200000200F20700000300072200000400DD2200000100B72200000200F20700000300072200000400DD2200000500CF2200000100C92200000200072200000300E82200000400F62200000100C92200000200072200000100C92200000200072200000100C92200000200072200000100C92200000200072200000100C92200000200072200000100C62100000100C621000001000123000001000423000001000423020002000723000001001323020002000723000001006622000002001323000003001A23000001003208000001003208000001003208000001003208000001006622000001002223000002009320000003003208000004002D23000001002223000002009320000003004023000004002D23000001002223000002009320000003003208000001002223000002009320020003003208000001005023000001005023000001005023000001003208000001009320000002003208000003002D23000001009320000002004023000003002D2300000100932000000200320800000100932002000200320800000100932002000200320800000100C41D000001009320000001009320000002003208000001003208000001009320000002003208000001009320000001005A2300000200602300000100932000000100932002000200320800000100F81E00000100F81E00000200641F000001005A2300000200602300000100F81E00000200641F00000100F20700000100F20700000200072200000100F20700000200072200000100F20700000200072200000100F207000002002A2200000100F207000002002A2200000300302200000100F207000002002A2200000300302200000400362200000100F207000002002A22000003003022000004003622000005003C2200000100F207000002002A22000003003022000004003622000005003C2200000600422200000100F207000002002A22000003003022000004003622000005003C2200000600422200000700482200000100F207000002002A22000003003022000004003622000005003C22000006004222000007004822000008004E2200000100F207000002002A22000003003022000004003622000005003C22000006004222000007004822000008004E2200000900542200000100F207000002002A22000003003022000004003622000005003C22000006004222000007004822000008004E2200000900542200000A005A2200000100F20700000100F20700000200A82200000100F20700000200A82200000100F20700000100F207000002009D2200000100F207000002009D2200000100F20700000100F207000002009D2200000100F207000002009D2200000100662300000100042300000200E52100000100042300000200E521000003006B2300000100042300000200E521000001007A23000001000423020002000723000001001323020002000723000001006622000002001323000003001A2300000100C621000001003208000001003208000001009320020002003208101001008323000001003208000001003208000001009320020002003208101001008323000001009320000002003208000003002D23000001009320000002004023000003002D2300000100932000000200320800000100932002000200320800000100932002000200320800000100C62100000100952B00000100952B00000200F81E00000100952B00000100952B00000200F81E00000100952B00000200652C00000100952B00000200652C00000100C62103000D0010001100100015001000190011001D00110021001200150012001900130021003100641EEF1129005D1EE21129003F1D3E0029001F1EB3002900321E4800B901C8033A00C101C8033A00C901C8033A00D101C8031504D901C8031504E101C8031504E901C8031504F101C8031504F901C80315040102C80315040902C80315041102C80315041902C80315042102C80308143102C803D3113902C8033A004102C8033A004902C8033A000C00C8033A001400C80332141C00C80342140900C8033A00510292254C140900320AB7002400C8033A0041000B1F4800B101311F4800B101391F48004100431FB3005902050A3A006102C80315046902C80378147902C80399148902C8033A0091022C08C81599021626CD157100C803D21571004713D71599021E26DF157900C8031A0479004713E41599022826E8158100C803D31181004713ED1599023026F1158900C803F61589004713FB1591003826FF159902320A0F169100C80315049100471314169902442618169900C8031D16990047132216A102C8033A00A902712626161C00391F2B160C0014093016B102F520B013B902C8031504C102CC263A00C902C8033616D102E6263E0081010B273E16D9024A1E4416D9021409441691011727D311810134274B16E102140951169901E41D5816F1023F1D3E00F902C8033A0099011409E8170103CC25A51E2C00C803B11E3400C803B11E3C00C803B11E4400C803B11E4C00C803B11E0903AD07FC1E01034E1E021F01038A27071F01039227F3000900A0270D1F6900BA27151FA900391F1D1F9100391FB7005C00771D941164003F1D3E005C003F1D3E002400491D47115C00DF1C8C116C001A1D3A0074001A1D3A0064003021E01321035528B1207C00C803321484005C28E4205C003021E0138C00C803321494005C28E4206400E61C94115C00E61C9411010369282C2199022826332101036F284821D10282284F2101039228B70001039728021F01036F2860218100391F3E007900391FB300B100391F6A21B900391F6F218900391F7521C100391F1D1F9900391F79217100391F7D2171003009B300B1003009B3009C00C803B11E81003009B30099003009B30001036928A921C100C8033B23C1003B094123A900C8033B23A900471346239902CE284A23B100C8035023B10047135623B900C8035A23B90047136123B9003009B300A400C803B11E89003009B3002400DF1C8C116100D9288B236100E128902301036F2898230C004A1EB11E01036F289E236103FC28A42301030829A82369034229B2237103FC07B823AC007229C623790379293A00B1027E29EE236400C803D3115C00C803D31161004A1E192461008F2919246C000E1D3A006C00491D4711B400641E2A24BC000B1F3F24C400391F54246100B2299023C400311F2B16BC00431FB3000C00641E5924CC000B1F2B16B4009F1E6A24CC00431FB300D400C8033A0074000E1D3A007400491D4711DC00641E2A24E4000B1F3F24EC00391F5424EC00311F2B16D4004A1EB11EE400431FB300D400641E5924F4000B1F2B16DC009F1E6A24F400431FB3002103BE290625FC00C8033A00FC004A1E21256900042AB7002901112AE2250401C803321421031A2AF0259903B62A30269903C82A36260C01C80332142103D62A4B263901272B8A266900312B91261401C80332141C01C8033A003901972BB7002401C80332142C01C8033214A103AB2B5F276900BE2B72276900C82B7C273401C8033A003C01C80332144401C80332144C01C80332145401711D3A005C01711D3A006401711D3A006C01711D3A007401711D3A00FC00711D3A005401771D94117401771D94114101B02C03294101BC2C03295401C8033A005C01C8033A006401C8033A006C01C8033A007401C8033A00840172292B162100641EEA118C017229C62394017229C62364014A1E212569002336E225210337363F2A9C013F1E772AA401C803321421036036892A01036F28A72AAC01C8033A00B401391F5424B401311F2B166901BA36E62AA103DA36EF2A6901E136FB2ABC014A1EB11E6400771D94116901C8033A006901221676036901DA16C10369010017DE0369012617FC0369013517A2046901AB190A005C013F1D3E005C01C8032A2B6901ED366A0464013F1D3E006401641E2A24C4010B1F3F24CC01C8033214D401C80342146901F7364E2BC401431FB30051085F375A2B61087A37612BA10386376F2BDC018C092B166400DF1C8C11E401B737CA2BEC01C922C62AE4019D36CF2AF401C8033A00F401C922C62AFC01C8033A00FC01B737CA2BFC019D36CF2AFC01C737D82A04028C092B167101BA38532C2103CD385A2C7101D1380D1F6901E2386B2CA1030C39762CA90315390D1FA10323398B2C69003239972C6900C82B9F2C0C02C80332146900BE2BB52C9C014A1E21251402391F54241402311F2B16A1030C39052DA103C7390D1F69009227152DA1030E261D2D6901E0395D2DAC014A1EB11E1C02641E722D24020B1F2B166901BA365D2D6900673ABB2DA103863AC52D6901E039E62A2C023F1D3E002103EC3A3F2ABC01833B892E69008A3BE92E7901AA3BF92EF102641EEF11A908C8030A2F6903CB3B122FB108D43B182FA908E53B5816A908EE3B3E00B108FD3B182FB1080C3C3A00D9021409382F91011B3C0D1F9101283CB7008901C8034A2F8901C803522F8901C8035B2F9101413C3E0069004F3C152DD908823C772F3C02C803D3113C024A1E21253C02771D9411A9003009B30079003009B300C1003009B300C1083009B300C108391F912FD9083009B300D908391F962F4402C803B11EC9083009B300C908391FA42F4C02C803B11ED1083009B300D108391F962FE1083009B300E108391FAE2F5402C803B11E91003009B300E9083009B300E908391FB7008101C8033A005C02641E722D64020B1F2B1699010D3D38308101173D383081011D3D3E306C02641E722D74020B1F2B16F108543D750481015F3D5630E1024A1E3E309901E41D5C306900663DB3006900783D0D1F7101820662306900913DB300E1024A1E6C3069009D3DB300F908641EEF110109391FB7008402771D94118C02722942318402E41D212584024A1E212594027229C6238402DC3D6A2484029F1E6A240909F43D64319C02C8033A00A4025D1D5311A402491D47119C023F1D3E00A402831D9D11A402351D1E00A4020E1D3A009C02771D9411AC02722942319C02E41D21259C024A1E2125A4021A1D3A00B4027229C6239C02711D3A009C02DC3D6A249C029F1E6A241109C8033A001909C80315042109C8033A002909C803B53109005E3EDD11A101653EBB310909F43DD2310103CC25DA313109C80315042909C80315043909C803B531A9019B3E3E00B101C803CD11A901E53BE8314109C80315048101D33E013241041409C8110107C80336163908C8030732E906EA3E0E328101F13E38308901972BB7000103CC253F3201036F284632C402C80332148901133F67328901213F792189012F3F79218901413C7D215103320AB700CC02C8033A00CC023F1D3E00CC024A1EB11ECC029F1E6A24CC0214093016D402C8033214CC026A3F8732DC023021E013A402C8033A00A4023F1D3E00DC024B25B932DC026F3FAD32E402C803321421037F3FD6320900833F3E00A402D31C6011A402D31C7311A402DF1C8C11A402E61C9411A402771D94110E00E80075050E00EC0075060E00F000CF070E00F40003090E00F800710A0E00FC00770B0E000001990C0E000401C70D0E000801190F080070018113080074018613080078018B1308007C019013080080019513080084019A130800AD08FE130800C10803142E007B00E1332E009300F7332E009B0002342E007300B1332E00B30086132E00630088332E00A3000B342E00AB0014342E006B009F332E004B00F6322E00530018332E005B00823363002B017F1464003300EB1384003300EB13A000BB008613A4003300EB13C0003B01A014E0003B01A01400013B01A01420013B01A01440013B01A01460013B01A01480013B01A014A0013B01A014A301B3008613C0013B01A014E0013B01A01400023B01A0140302330CAB3120023B01A01440023B01A01460023B01A0146102BB00861380023B01A014A0023B01A014C0023B01A014E0023B01A014E302B300861300033B01A01420033B01A0142103BB00861340033B01A0144103BB00861360033B01A01480033B01A0148303BB008613A0033B01A014A303BB008613C303BB008613E003E3018613E303BB00861300046B0270160304BB0086132304BB00861340046B02F3174304BB0086136304BB00861380046B0280198304BB008613A304BB008613C0046B02221BC304BB008613E304BB00861300056B02D91C0305BB0086132105BB0086132305BB0086134105BB0086134305BB0086136105BB0086136305BB0086138105BB0086138305BB008613A105BB008613A305BB008613C105BB008613C305BB008613E105BB008613E305BB008613E4053300EB130106BB0086130306BB0086132106BB00861324063300EB134106BB0086136106BB00861364063300EB138106BB008613A106BB008613C106BB0086130107BB0086132107BB008613C108BB0086138109BB008613410CBB008613210DBB008613800E3B013C1FA00E3B013C1F800F3B01192120103B013C1FE0153B013C1F00163B013C1F20163B013C1F40163B013C1F60163B013C1F80163B013C1FA0163B013C1FC0163B013C1FE0163B013C1F00173B013C1F20173B013C1F40173B013C1F60173B013C1F80173B013C1FA0173B013C1FC0173B013C1FC4173300EB13E0173B013C1FE4173300EB1300183B013C1F04183300EB1320183B013C1F40183B013C1F60183B013C1F80183B013C1FA0183B013C1FC0183B013C1FE0186B02BC2120193B01A01440193B01A01460193B01A01480193B01A014A0193B01A014C0193B01A014E0193B01A014001A3B01A014201A3B01A014401A3B01A014601A3B01A014801A3B01A014A01A3B013C1FC01A3B013C1FE01A3B013C1F001B3B013C1F201B3B013C1F401B3B013C1F601B3B013C1F801B3B013C1FA01B3B013C1FC01B3B013C1FE01B3B013C1F001C3B013C1F001F3B013C1F201F3B013C1F401F3B013C1FC01FE3018613E01FBB008613E41F430086130020BB0086130025BB0086132025BB0086134025BB0086136025BB0086138025BB008613A025BB008613C025BB008613E025BB0086130026BB0086132026BB0086134026BB0086136026BB0086138026BB008613A026BB008613C026BB008613E026BB0086130027BB0086132027BB008613442743008613642743008613842743008613242843008613442843008613642843008613842843008613A028BB008613A42843008613C028BB008613C42843008613E028BB008613E428430086130029BB0086130429430086132029BB008613242943008613442943008613642943008613842943008613802ABB008613A02ABB008613442B43008613E42B43008613202CB3008613402CB3008613602CB3008613802CB3008613842C43008613602DBB008613802DBB008613202FBB008613402FBB0086132036B30086134036B30086136036B30086138036B30086132037BB008613A039BB008613C43943008613644143008613044243008613A442430086135A14601464147314DB1505165E16ED17B71EC61ED51EE41EF31E2A1F2F1F642012213821412156216621812190219921A121B3216D2377237F23CD23F723042498243325522507266F26AA26F02630278627D42714285F287A28BC28D128DB28E328F8280A290F29072A222A4B2AAD2ABA2A0C2B912BFB2B822CBC2C282D8A2DD22D132E582E902EB92EF32EFF2E1F2F3F2F652F7A2FB82F223074301B3126314B31593160318A319A31A331C131C831E231EE31F331FB3115321F325D326D32933203000100060004000F000D0010000F001100170012001B0013001E0019001F001B00200000003B13BD0100004013C20100004713C60100003319A70400004919B90400005E19C50400007319CF0400007E19D90400009119EB0400003517F60400009C19FC040000AB19C2010000A41DA8110000AA1DAC1100003B1300120000A41DA8110000BD1E05120000C21EC2010000CD1EC2010000D91EC2010000E81E0A120000F11E05120000521F0A1200005A1F1A120000601F0A1200002C080A1200001820A81100003D20C20100006B200A120000521F0A120000A41DA8110000A41DA81102006500030002006600050002006700070001002901090002002801090001002B010B0002002A010B0002002C010D0001002D010D0001002F010F0002002E010F0001003101110002003001110002003201130001003301130002003401150001003501150001003701170002003601170002003801190001003901190002006A011B0002006B011D0001006C011D00020077011F00010078011F0002007901210001007A01210002007B01230002007C01250002007D01270002007E01290002007F012B00020080012D0002008A012F0002008B01310002008C01330002008D013500020092013700020093013900020094013B00020097013D000200BC013F000200C701410010000C030300120024030700120022030500120026030900120028030B0012002A0303002214281438145214AB1EC01ECF1EDE1EED1E121F221F341FA120A920CB20D820F920062189216523BE23212436244B246324702476247F24882491241825E8253D269B26DF26FC260B27C327E027EF274F28822892289C28A428AC28CE29DA29EC29FF296F2A812AB22ADE2A042B362B3E2B462B842BD32BDB2BE32BEB2BF32BA62CFC2C652D7C2D3F2E742F892F9C2FA82FB22F27302F3045304D3069302D31373150316C3176317F319131A8314D3278327F32A432C832F332048000000100000000000000000000000000360000000400000000000000000000000100C601000000000400000000000000000000000100E701000000000100000004000000000000000000AF02000000000400000000000000000000000100FF13000000000400000000000000000000000100CF0100000000040000000000000000000000010001340000000004000000000000000000000001004C3400000000110010001200100013001200140010001C0006001D0006001E0006001F000700200007002100070022000700230007002400070025000700260007002700070028000700290007002A0007002B0007002C0007002D0007002E00070030001900000000001E001202010000001E00170200000000360012020100000036001702000000004200F717000000004400F717000000007F02EF17000000008102EF17000000008302EF17000000008502F717000000008702F717000000008902F717000000009B02F71700000000C302120201000000C302170200000000C502120201000000C502170200000000C702120201000000C702170200000000C902120201000000C9021702000000005103F717000000005303F717000000005503F717000000005D03EF17000000005F03EF17000000006103EF17CB00C120CB00EF209A02FE24710113259A0229259A023F259A0249259A025D259A0267259A0272259A027E259A028C259A029B259A02AB259A02BC25C602CE257D011325850167267D01A4267101A426C602E926C4022327C6026627C6026D27C602CD27C4020728C2025928C802CE25C802E926C8026627C8026D27C802CD27C80259287E02CA298002CA298202CA299A02D1299A02E1299A02F5298802362A71013B2ACD0113259A02362AD301A12A0D023F250D02362A2902652C7D01AF2C7101AF2C5D024D2E8402362A8602362A7E02362A8002362A8202362AD30156326103E8320000003C4D6F64756C653E005A2E45787072657373696F6E732E53716C5365727665722E4576616C2E646C6C0053514C4E45544974656D005A2E45787072657373696F6E732E53716C5365727665722E4576616C0053514C4E4554004576616C4D616E61676572005A2E45787072657373696F6E73004576616C44656C6567617465004576616C436F6E74657874004576616C436F6D70696C657200457863657074696F6E4D6573736167650053716C436F6E7465787448656C7065720053716C5479706548656C70657200446174615461626C6548656C706572005479706548656C70657200457874656E73696F6E73005368617265644C6F636B0053686172656443616368656032004C69737444696374696F6E617279004E6F6465456E756D657261746F72004E6F64654B657956616C7565436F6C6C656374696F6E004E6F64654B657956616C7565456E756D657261746F720044696374696F6E6172794E6F6465004576616C004576616C436F6D70696C6572506172616D657465724B696E640053514C4E4554506172616C6C656C4974656D005368617265644C697374005368617265644275636B65744C697374005368617265644275636B656443616368656032006D73636F726C69620053797374656D004F626A6563740056616C7565547970650053797374656D2E446174610053797374656D2E446174612E53716C547970657300494E756C6C61626C6500544B6579005456616C75650053797374656D2E436F6C6C656374696F6E73004944696374696F6E6172790049436F6C6C656374696F6E0049456E756D657261626C65004944696374696F6E617279456E756D657261746F720049456E756D657261746F7200456E756D00416C74657253747275637475726500497344796E616D69635069766F7400416C746572537472756374757265526573756C74005A2E45787072657373696F6E732E436F6D70696C6572004C617A7953696E676C6554687265616460310053797374656D2E436F6C6C656374696F6E732E47656E65726963004C697374603100416C7465725374727563747572655461626C654E616D65730043616368654B657900436F646500436F756E7465720044656C65676174650049734175746F446973706F7365004973436163686564004973436F6D70696C65640049734669727374436F756E746572004973496D706572736F6E617465004461746554696D65004C61737441636365737300506172616C6C656C4974656D7300506172616D657465725461626C6573005479706500506172616D65746572547970657300506172616D6574657256616C756573002E63746F72004765744E657874436F756E74416E64416464506172616C6C656C00416464506172616C6C656C56616C756500476574506172616C6C656C56616C7565006576616C004556414C0053716C496E743634004576616C426967496E74006576616C626967696E74004556414C424947494E540053716C426F6F6C65616E004576616C426974006576616C626974004556414C4249540053716C496E743332004576616C496E74006576616C696E74004556414C494E540053716C496E743136004576616C536D616C6C496E74006576616C736D616C6C696E74004556414C534D414C4C494E54004576616C53514C4E4554006576616C73716C6E6574004556414C53514C4E45540053716C537472696E67004576616C537472696E67006576616C737472696E67004556414C535452494E470053716C42797465004576616C54696E79496E74006576616C74696E79696E74004556414C54494E59494E5400437265617465536368656D610053514C4E45545F4576616C526573756C745365740053514C4E45545F4576616C5456465F310046696C6C5F53514C4E45545F4576616C5456465F310053514C4E45545F4576616C5456465F320046696C6C5F53514C4E45545F4576616C5456465F320053514C4E45545F4576616C5456465F330046696C6C5F53514C4E45545F4576616C5456465F330053514C4E45545F4576616C5456465F340046696C6C5F53514C4E45545F4576616C5456465F340053514C4E45545F4576616C5456465F350046696C6C5F53514C4E45545F4576616C5456465F35004765744175746F446973706F7365006765746175746F646973706F7365004745544155544F444953504F534500476574436F646500676574636F646500474554434F444500476574496D706572736F6E61746500676574696D706572736F6E61746500474554494D504552534F4E4154450047657456616C75650067657476616C75650047455456414C5545004E756C6C61626C6560310047657456616C7565426967496E740067657476616C7565626967696E740047455456414C5545424947494E540047657456616C75654269740067657476616C75656269740047455456414C55454249540047657456616C7565496E740067657476616C7565696E740047455456414C5545494E540047657456616C7565536D616C6C496E740067657476616C7565736D616C6C696E740047455456414C5545534D414C4C494E540047657456616C7565537472696E670067657476616C7565737472696E670047455456414C5545535452494E470047657456616C756554696E79496E740067657476616C756574696E79696E740047455456414C554554494E59494E54004164644C6963656E7365006164646C6963656E7365004144444C4943454E5345004175746F446973706F7365006175746F646973706F7365004155544F444953504F534500636F646500434F444500496D706572736F6E61746500696D706572736F6E61746500494D504552534F4E4154450056616C0076616C0056414C0056616C75650076616C75650056414C55450053716C42696E6172790056616C756542696E6172790076616C756562696E6172790056414C554542494E4152590056616C756553514C4E45540076616C756573716C6E65740056414C554553514C4E45540056616C7565537472696E670076616C7565737472696E670056414C5545535452494E470041646456616C75650056616C756553657269616C697A61626C650056616C7565506172616C6C656C0047657456616C7565506172616C6C656C00496E7465726E616C56616C75654E616D6500496E7465726E616C53656C6563745461626C65006765745F4974656D0054656D706C617465436F6E6E656374696F6E006765745F49734E756C6C006765745F4E756C6C00436163686544656C6567617465436F756E7400636163686564656C6567617465636F756E7400434143484544454C4547415445434F554E540043616368654974656D436F756E7400436F6D70696C6500636F6D70696C6500434F4D50494C4500496E7374616E6365436F756E746572004578706972654361636865006578706972656361636865004558504952454341434845004E6577004E45570052656C656173654C6F636B730072656C656173656C6F636B0052454C454153454C4F434B00446973706F736500646973706F736500444953504F534500506172736500526F6F7400726F6F7400524F4F5400546F537472696E67004C6F6164436F6E66696775726174696F6E0056616C756544796E616D6963446174615461626C650076616C756564796E616D6963646174617461626C650056414C554544594E414D4943444154415441424C450056616C7565496E740076616C7565696E740056414C5545494E540056616C75654269740076616C75656269740056414C55454249540053716C4461746554696D650056616C75654461746554696D650076616C75656461746574696D650056414C55454441544554494D450053716C477569640056616C7565556E697175654964656E7469666965720076616C7565756E697175656964656E7469666965720056414C5545554E495155454944454E5449464945520056616C7565536D616C6C496E740076616C7565736D616C6C696E740056414C5545534D414C4C494E540053716C42797465730056616C756556617242696E6172790076616C756576617262696E6172790056414C554556415242494E4152590056616C756554696E79496E740076616C756574696E79696E740056414C554554494E59494E540056616C7565426967496E740076616C7565626967696E740056414C5545424947494E540056616C75654E756C6C61626C65426967496E740076616C75656E756C6C61626C65626967696E740056414C55454E554C4C41424C45424947494E540056616C75654E756C6C61626C654461746554696D650076616C75656E756C6C61626C656461746574696D650056414C55454E554C4C41424C454441544554494D450056616C75654E756C6C61626C65496E740076616C75656E756C6C61626C65696E740056414C55454E554C4C41424C45494E540056616C75654E756C6C61626C6554696E79496E740076616C75656E756C6C61626C6574696E79696E740056414C55454E554C4C41424C4554494E59494E540056616C4E756C6C61626C650076616C6E756C6C61626C650056414C4E554C4C41424C450056616C75654E756C6C61626C650076616C75656E756C6C61626C650056414C55454E554C4C41424C45004576616C52656164416363657373006576616C72656164616363657373004556414C52454144414343455353004576616C52656164416363657373426967496E74006576616C72656164616363657373626967696E74004556414C52454144414343455353424947494E54004576616C52656164416363657373426974006576616C72656164616363657373626974004556414C52454144414343455353424954004576616C52656164416363657373496E74006576616C72656164616363657373696E74004556414C52454144414343455353494E54004576616C52656164416363657373536D616C6C496E74006576616C72656164616363657373736D616C6C696E74004556414C52454144414343455353534D414C4C494E54004576616C5265616441636365737353514C4E4554006576616C7265616461636365737373716C6E6574004556414C5245414441434345535353514C4E4554004576616C52656164416363657373537472696E67006576616C72656164616363657373737472696E67004556414C52454144414343455353535452494E47004576616C5265616441636365737354696E79496E74006576616C7265616461636365737374696E79696E74004556414C5245414441434345535354494E59494E540053514C4E45545F4576616C5456465F537472696E670046696C6C5F53514C4E45545F4576616C5456465F537472696E67004576616C42696E617279006576616C62696E617279004556414C42494E415259004576616C56617242696E617279006576616C76617262696E617279004556414C56415242494E415259004576616C4461746554696D65006576616C6461746574696D65004556414C4441544554494D45004576616C556E697175654964656E746966696572006576616C756E697175656964656E746966696572004556414C554E495155454944454E544946494552004576616C5265616441636365737342696E617279006576616C7265616461636365737362696E617279004556414C5245414441434345535342494E415259004576616C526561644163636573734461746554696D65006576616C726561646163636573736461746574696D65004556414C524541444143434553534441544554494D45004576616C52656164416363657373556E697175654964656E746966696572006576616C72656164616363657373756E697175656964656E746966696572004556414C52454144414343455353554E495155454944454E544946494552004576616C5265616441636365737356617242696E617279006576616C7265616461636365737376617262696E617279004556414C5245414441434345535356415242494E4152590056616C75654E756C6C61626C6542696E6172790076616C75656E756C6C61626C6562696E6172790056414C55454E554C4C41424C4542494E4152590056616C75654E756C6C61626C6556617242696E6172790076616C75656E756C6C61626C6576617262696E6172790056414C55454E554C4C41424C4556415242494E4152590056616C75654E756C6C61626C65556E697175654964656E7469666965720076616C75656E756C6C61626C65756E697175656964656E7469666965720056414C55454E554C4C41424C45554E495155454944454E5449464945520056616C75654E756C6C61626C654269740076616C75656E756C6C61626C656269740056414C55454E554C4C41424C454249540056616C75654E756C6C61626C65536D616C6C496E740076616C75656E756C6C61626C65736D616C6C696E740056414C55454E554C4C41424C45534D414C4C494E540056616C75654E756C6C61626C65537472696E670076616C75656E756C6C61626C65737472696E670056414C55454E554C4C41424C45535452494E4700496E7465726E616C56616C756500496E7465726E616C4576616C00616C74657273747275637475726500414C5445525354525543545552450056616C7565446174615461626C650076616C7565646174617461626C650056414C5545444154415441424C450044796E616D69635069766F740064796E616D69637069766F740044594E414D49435049564F540053514C4E45545F4576616C004974656D0049734E756C6C004E756C6C00436163686544656C65676174650043616368654974656D00436F6E66696775726174696F6E0044656661756C74436F6E74657874002E6363746F720046756E63603200496E6E657244656C6567617465004944696374696F6E617279603200436F6D70696C6553514C4E45540046756E6360310049456E756D657261626C6560310046756E6360330046756E6360340046756E6360350046756E6360360046756E6360370046756E6360380046756E6360390053797374656D2E436F72650046756E63603130005265676973746572416C6961730053797374656D2E5265666C656374696F6E00417373656D626C79005265676973746572417373656D626C79005265676973746572446F6D61696E417373656D626C696573005265676973746572457874656E73696F6E4D6574686F64004D6574686F64496E666F005265676973746572476C6F62616C436F6E7374616E74005265676973746572476C6F62616C5661726961626C650052656769737465725374617469634D656D626572004D656D626572496E666F0052656769737465725479706500556E7265676973746572416C69617300556E7265676973746572416C6C00556E7265676973746572417373656D626C7900556E7265676973746572457874656E73696F6E4D6574686F6400556E7265676973746572476C6F62616C436F6E7374616E7400556E7265676973746572476C6F62616C5661726961626C6500556E72656769737465725374617469634D656D62657200556E7265676973746572547970650043616368654974656D436F756E7465720054696D655370616E00457870697265436163686544656C617900536C6964696E6745787069726174696F6E44656C656761746500536C6964696E6745787069726174696F6E4974656D0045787069726543616368654E6578745363686564756C65640044696374696F6E6172796032006765745F416C696173457874656E73696F6E4D6574686F6473007365745F416C696173457874656E73696F6E4D6574686F64730053797374656D2E4C696E712E45787072657373696F6E7300436F6E7374616E7445787072657373696F6E006765745F416C696173476C6F62616C436F6E7374616E7473007365745F416C696173476C6F62616C436F6E7374616E7473006765745F416C696173476C6F62616C5661726961626C6573007365745F416C696173476C6F62616C5661726961626C6573006765745F416C6961734E616D6573007365745F416C6961734E616D6573006765745F416C6961735374617469634D656D62657273007365745F416C6961735374617469634D656D62657273006765745F416C6961735479706573007365745F416C69617354797065730042696E64696E67466C616773006765745F42696E64696E67466C616773007365745F42696E64696E67466C616773006765745F43616368654B6579507265666978007365745F43616368654B6579507265666978006765745F5573654361726574466F724578706F6E656E74007365745F5573654361726574466F724578706F6E656E74004765744E65787443616368654974656D436F756E74657200526567697374657244656661756C74416C69617300457865637574650054526573756C74005444656C6567617465003C416C696173457874656E73696F6E4D6574686F64733E6B5F5F4261636B696E674669656C64003C416C696173476C6F62616C436F6E7374616E74733E6B5F5F4261636B696E674669656C64003C416C696173476C6F62616C5661726961626C65733E6B5F5F4261636B696E674669656C64003C416C6961734E616D65733E6B5F5F4261636B696E674669656C64003C416C6961735374617469634D656D626572733E6B5F5F4261636B696E674669656C64003C416C69617354797065733E6B5F5F4261636B696E674669656C64003C42696E64696E67466C6167733E6B5F5F4261636B696E674669656C64003C43616368654B65795072656669783E6B5F5F4261636B696E674669656C64003C5573654361726574466F724578706F6E656E743E6B5F5F4261636B696E674669656C6400416C696173457874656E73696F6E4D6574686F647300416C696173476C6F62616C436F6E7374616E747300416C696173476C6F62616C5661726961626C657300416C6961734E616D657300416C6961735374617469634D656D6265727300416C69617354797065730043616368654B6579507265666978005573654361726574466F724578706F6E656E74005265736F6C766543616368654B657900506172616D6574657245787072657373696F6E005A2E45787072657373696F6E732E436F6465436F6D70696C65722E4353686172700045787072657373696F6E53636F7065005265736F6C7665506172616D657465720050726F7065727479496E666F0044696374696F6E6172794974656D50726F7065727479496E666F005265736F6C7A654C617A794D656D626572005265736F6C7665506172616D6574657244696374696F6E617279005265736F6C7665506172616D65746572456E756D657261626C65005265736F6C7665506172616D6574657253696E676C6544696374696F6E617279005265736F6C7665506172616D657465725479706564005265736F6C7665506172616D65746572556E74797065640047656E6572616C457863657074696F6E00496E76616C69645F56616C75654B657900556E65787065637465645F416C6961735265676973746572656400556E65787065637465645F43616368654974656D4578706972656400556E65787065637465645F4E756C6C526573756C7453657400556E65787065637465645F506172616D657465724B65794E6F74466F756E6400556E737570706F727465645F446174615461626C655F526573756C7453657400556E737570706F727465645F53716C4D657461446174615F5479706500556E737570706F727465645F53716C4D657461446174615F54797065436F646500446174615365740053656E644461746153657400446174615461626C650053656E64446174615461626C65004D6963726F736F66742E53716C5365727665722E5365727665720053716C4D657461446174610045787472616374446174615461626C65436F6C756D6E4D657461446174610044617461436F6C756D6E0053716C4D6574614461746146726F6D436F6C756D6E0053716C4D6574614461746146726F6D4F626A656374436F6C756D6E00436F6E76657274546F54797065004765744E756C6C61626C655479706500476574446174615461626C650044617461526F770047657444617461526F7773004765745479706546726F6D4E616D65004164644F72557064617465005472794164640054727952656D6F76650043616368654974656D4C6F636B0045787069726543616368654C6F636B00416371756972654C6F636B0052656C656173654C6F636B00547279416371756972654C6F636B004C6F636B56616C7565006765745F436F756E74006765745F496E6E657244696374696F6E617279007365745F496E6E657244696374696F6E61727900436C6561720054727947657456616C7565003C496E6E657244696374696F6E6172793E6B5F5F4261636B696E674669656C6400436F756E7400496E6E657244696374696F6E6172790049436F6D706172657200636F6D7061726572005F73796E63526F6F7400686561640076657273696F6E007365745F4974656D007365745F436F756E74006765745F4B657973006765745F4973526561644F6E6C79006765745F4973466978656453697A65006765745F497353796E6368726F6E697A6564006765745F53796E63526F6F74006765745F56616C7565730041646400436F6E7461696E7300417272617900436F7079546F00476574456E756D657261746F720053797374656D2E436F6C6C656374696F6E732E49456E756D657261626C652E476574456E756D657261746F720052656D6F7665003C436F756E743E6B5F5F4261636B696E674669656C64004B657973004973526561644F6E6C79004973466978656453697A6500497353796E6368726F6E697A65640053796E63526F6F740056616C756573006C6973740063757272656E74007374617274006765745F43757272656E740044696374696F6E617279456E747279006765745F456E747279006765745F4B6579006765745F56616C7565004D6F76654E6578740052657365740043757272656E7400456E747279004B65790069734B6579730053797374656D2E436F6C6C656374696F6E732E49436F6C6C656374696F6E2E436F7079546F0053797374656D2E436F6C6C656374696F6E732E49436F6C6C656374696F6E2E6765745F436F756E740053797374656D2E436F6C6C656374696F6E732E49436F6C6C656374696F6E2E6765745F497353796E6368726F6E697A65640053797374656D2E436F6C6C656374696F6E732E49436F6C6C656374696F6E2E6765745F53796E63526F6F740053797374656D2E436F6C6C656374696F6E732E49436F6C6C656374696F6E2E436F756E740053797374656D2E436F6C6C656374696F6E732E49436F6C6C656374696F6E2E497353796E6368726F6E697A65640053797374656D2E436F6C6C656374696F6E732E49436F6C6C656374696F6E2E53796E63526F6F74006B6579006E6578740076616C75655F5F004E6F6E650044696374696F6E61727900456E756D657261626C650053696E676C6544696374696F6E61727900547970656400556E747970656400536176654368616E6765730042756C6B496E7365727400416C74657253716C5461626C655374727563747572650047657453716C547970654E616D6500506172616C6C656C496400496E6E65724C697374004275636B65747300706172616C6C656C49640053716C46616365744174747269627574650073716C6E6574006F626A0076616C7565310053797374656D2E52756E74696D652E496E7465726F705365727669636573004F75744174747269627574650076616C7565320076616C7565330076616C7565340076616C756535006C6963656E73654E616D65006C6963656E73654B657900780079006B6579537472696E670076616C7565537472696E670074797065007461626C654E616D650063616368654B65790064656C6567617465416374696F6E00706172616D65746572547970657300506172616D417272617941747472696275746500747970653100747970653200747970653300747970653400747970653500747970653600747970653700747970653800747970653900616C696173006E616D6500617373656D626C69657300747970657300657874656E73696F6E4D6574686F6473006D656D6265727300616C696173657300706172616D657465727300706172616D657465724E616D657300636F6E74657874007464656C65676174650073636F706500706172616D657465724B696E6400726573756C745479706500706172616D657465724E616D65006D656D6265725479706500647300647400757365546F537472696E6700636F6C756D6E00636C72547970650064696374696F6E6172790075706461746556616C7565466163746F72790061646456616C7565466163746F7279006C6F636B56616C756500617272617900696E646578007468697300616C746572537472756374757265006D65746144617461006275636B657453697A6500417373656D626C795469746C6541747472696275746500417373656D626C794465736372697074696F6E41747472696275746500417373656D626C79436F6E66696775726174696F6E41747472696275746500417373656D626C79436F6D70616E7941747472696275746500417373656D626C7950726F6475637441747472696275746500417373656D626C79436F7079726967687441747472696275746500417373656D626C7954726164656D61726B41747472696275746500417373656D626C7943756C7475726541747472696275746500417373656D626C7956657273696F6E41747472696275746500417373656D626C7946696C6556657273696F6E4174747269627574650053797374656D2E446961676E6F73746963730044656275676761626C6541747472696275746500446562756767696E674D6F6465730053797374656D2E52756E74696D652E436F6D70696C6572536572766963657300436F6D70696C6174696F6E52656C61786174696F6E734174747269627574650052756E74696D65436F6D7061746962696C69747941747472696275746500457874656E73696F6E417474726962757465003C2E63746F723E625F5F30004353243C3E395F5F436163686564416E6F6E796D6F75734D6574686F6444656C65676174653100436F6D70696C657247656E6572617465644174747269627574650047756964004E6577477569640049446973706F7361626C6500457863657074696F6E0053716C55736572446566696E65645479706541747472696275746500466F726D6174005374727563744C61796F7574417474726962757465004C61796F75744B696E640053716C4D6574686F644174747269627574650044424E756C6C00436F6E7665727400546F496E74363400546F426F6F6C65616E00546F496E74333200546F496E743136006F705F496D706C6963697400546F427974650053716C50726F6365647572654174747269627574650053716C44796E616D69635069766F74005069766F7400457874656E73696F6E4D6574686F64730053797374656D2E446174612E53716C436C69656E740053716C436F6E6E656374696F6E0053797374656D2E446174612E436F6D6D6F6E004462436F6E6E656374696F6E004F70656E0053716C436F6D6D616E64004462436F6D6D616E6400457865637574654E6F6E51756572790044617461436F6C756D6E436F6C6C656374696F6E006765745F436F6C756D6E73005365744F7264696E616C0044617461526F77436F6C6C656374696F6E006765745F526F777300496E74333200496E7465726E616C44617461436F6C6C656374696F6E426173650053716C46756E6374696F6E41747472696275746500537472696E6700436F6D70696C65724D616E61676572005265706C616365006F705F496E657175616C69747900476574547970650052756E74696D655479706548616E646C65004765745479706546726F6D48616E646C65003C52656C656173654C6F636B733E625F5F3200416374696F6E6031004353243C3E395F5F436163686564416E6F6E796D6F75734D6574686F6444656C656761746534003C52656C656173654C6F636B733E625F5F33004353243C3E395F5F436163686564416E6F6E796D6F75734D6574686F6444656C6567617465350053797374656D2E4C696E7100546F4C69737400466F724561636800436861720053706C697400436F6E63617400436F6D6D616E6454797065007365745F436F6D6D616E6454797065005472696D005374617274735769746800426F6F6C65616E00496E743136004279746500496E74363400537472696E6753706C69744F7074696F6E7300546F4461746554696D65006765745F4E6F77006F705F477265617465725468616E00456E7669726F6E6D656E74006765745F4E65774C696E65004A6F696E0053716C436F6E746578740053797374656D2E53656375726974792E5072696E636970616C0057696E646F77734964656E74697479006765745F57696E646F77734964656E746974790057696E646F7773496D706572736F6E6174696F6E436F6E7465787400496E766F6B6500556E646F0045786563757465446174615461626C6500537562747261637400456E756D657261746F72004B657956616C7565506169726032006F705F4C6573735468616E00546F4172726179003C5265676973746572417373656D626C793E625F5F39004353243C3E395F5F436163686564416E6F6E796D6F75734D6574686F6444656C656761746561006765745F46756C6C4E616D65004765745479706573005768657265003C5265676973746572446F6D61696E417373656D626C6965733E625F5F62004353243C3E395F5F436163686564416E6F6E796D6F75734D6574686F6444656C656761746564003C5265676973746572446F6D61696E417373656D626C6965733E625F5F63004353243C3E395F5F436163686564416E6F6E796D6F75734D6574686F6444656C65676174656500417070446F6D61696E006765745F43757272656E74446F6D61696E00476574417373656D626C6965730053656C6563744D616E79003C5265676973746572457874656E73696F6E4D6574686F643E625F5F66004353243C3E395F5F436163686564416E6F6E796D6F75734D6574686F6444656C65676174653130004973446566696E6564004765744D6574686F6473003C3E635F5F446973706C6179436C6173733135006D6574686F64003C5265676973746572457874656E73696F6E4D6574686F643E625F5F3131003C5265676973746572457874656E73696F6E4D6574686F643E625F5F31320073006765745F4E616D650045787072657373696F6E00436F6E7374616E74004669656C64496E666F004765744669656C64730047657450726F70657274696573003C3E635F5F446973706C6179436C6173733162006D656D626572003C52656769737465725374617469634D656D6265723E625F5F3137003C52656769737465725374617469634D656D6265723E625F5F3138003C3E635F5F446973706C6179436C6173733231003C5265676973746572547970653E625F5F3164003C5265676973746572547970653E625F5F31650074003C556E7265676973746572457874656E73696F6E4D6574686F643E625F5F3233004353243C3E395F5F436163686564416E6F6E796D6F75734D6574686F6444656C656761746532340046726F6D4D696E757465730046726F6D486F75727300517565727961626C65004D61746800446563696D616C00446F75626C650053696E676C650053427974650055496E7433320055496E7436340055496E743136004F766572666C6F77457863657074696F6E00436F6E736F6C65004461746554696D654F6666736574004576656E74417267730053797374656D2E44796E616D696300457870616E646F4F626A6563740054696D655A6F6E65496E666F005572690041727261794C69737400486173687461626C6500486173685365746031005175657565603100537461636B60310053797374656D2E436F6D706F6E656E744D6F64656C00436F6D706F6E656E740054797065436F6E766572746572004465627567004576656E744C6F67004576656E74536368656D6154726163654C697374656E65720050726F63657373005472616365004576656E7444657363726970746F720053797374656D2E446961676E6F73746963732E4576656E74696E67004576656E7450726F7669646572004576656E7450726F766964657254726163654C697374656E65720053797374656D2E446961676E6F73746963732E4576656E74696E672E526561646572004576656E744C6F67496E666F726D6174696F6E004576656E744C6F67526561646572004576656E744C6F675265636F7264004576656E744C6F6757617463686572004576656E745265636F72640050726F76696465724D657461646174610053797374656D2E446961676E6F73746963732E506572666F726D616E63654461746100436F756E7465724461746100436F756E7465725365740053797374656D2E476C6F62616C697A6174696F6E0043616C656E6461720043756C74757265496E666F00526567696F6E496E666F0054657874496E666F0053797374656D2E494F004469726563746F7279004469726563746F7279496E666F0046696C650046696C65496E666F0046696C6553747265616D00506174680053747265616D0053747265616D5265616465720053747265616D5772697465720053797374656D2E494F2E436F6D7072657373696F6E00475A697053747265616D0053797374656D2E494F2E49736F6C6174656453746F726167650049736F6C6174656453746F726167650053797374656D2E494F2E506970657300416E6F6E796D6F757350697065436C69656E7453747265616D00416E6F6E796D6F75735069706553657276657253747265616D004E616D656450697065436C69656E7453747265616D004E616D65645069706553657276657253747265616D00506970655365637572697479005069706553747265616D0053797374656D2E494F2E506F7274730053657269616C506F72740049517565727961626C6560310045787072657373696F6E603100436F6E7374727563746F72496E666F0053797374656D2E5265666C656374696F6E2E456D697400417373656D626C794275696C646572004D6574686F644275696C64657200547970654275696C6465720053797374656D2E5265736F7572636573005265736F757263654D616E616765720053797374656D2E536563757269747900536563757265537472696E670053656375726974794D616E616765720053797374656D2E53656375726974792E416363657373436F6E74726F6C0041636365737352756C650046696C655365637572697479004F626A65637453656375726974790053797374656D2E53656375726974792E43727970746F677261706879004543447361436E67005348413100547269706C654445530053797374656D2E53656375726974792E43727970746F6772617068792E58353039436572746966696361746573005835303953746F72650053797374656D2E5465787400456E636F64696E6700537472696E674275696C6465720053797374656D2E546578742E526567756C617245787072657373696F6E730052656765780053797374656D2E546872656164696E67005265616465725772697465724C6F636B536C696D0053656D6170686F726500546872656164005761697448616E646C650053797374656D2E4E657400446E73004674705765625265717565737400487474704C697374656E657200487474705765625265717565737400576562436C69656E740053797374656D2E4E65742E4D61696C004D61696C4D65737361676500536D7470436C69656E740053797374656D2E4E65742E4E6574776F726B496E666F726D6174696F6E004E6574776F726B496E74657266616365004E6574776F726B4368616E67650050696E670053797374656D2E4E65742E5365637572697479004E65676F746961746553747265616D0053736C53747265616D0053797374656D2E4E65742E536F636B657473004E6574776F726B53747265616D00536F636B657400546370436C69656E74005463704C697374656E657200556470436C69656E7400446174615669657700446244617461416461707465720044624461746152656164657200446250726F7669646572466163746F72790053716C44617461416461707465720053716C446174615265616465720053797374656D2E586D6C00586D6C41747472696275746500586D6C446F63756D656E7400586D6C456C656D656E7400586D6C4E6F646500586D6C52656164657200586D6C5772697465720053797374656D2E586D6C2E4C696E7100584174747269627574650058446F63756D656E740058456C656D656E7400584E616D6500584E616D65737061636500584E6F64650058546578740053797374656D2E586D6C2E536368656D6100586D6C536368656D6100586D6C536368656D6153657400586D6C536368656D6156616C696461746F720053797374656D2E586D6C2E53657269616C697A6174696F6E00586D6C53657269616C697A65720053797374656D2E586D6C2E5850617468005850617468446F63756D656E7400585061746845787072657373696F6E0058506174684E6176696761746F720053797374656D2E586D6C2E58736C0058736C436F6D70696C65645472616E73666F726D0058736C74417267756D656E744C69737400536F72746564536574603100506172616C6C656C456E756D657261626C65004C617A79496E697469616C697A6572005370696E4C6F636B0053797374656D2E546872656164696E672E5461736B7300506172616C6C656C005475706C65005475706C656031005475706C656032005475706C656033005475706C656034005475706C656035005475706C656036005475706C656037005475706C656038004D617463680053716C436F6D6D616E644275696C6465720047657447656E65726963417267756D656E7473004C617374003C5265736F6C766543616368654B65793E625F5F300049436F6C6C656374696F6E60310053656C656374003C3E635F5F446973706C6179436C61737334003C3E635F5F446973706C6179436C61737337004353243C3E385F5F6C6F63616C7335006B657956616C7565003C436F6D70696C6553514C4E45543E625F5F33004372656174655661726961626C650042696E61727945787072657373696F6E0041737369676E0045787072657373696F6E7300436F6E7374616E7473004372656174654C617A795661726961626C65005A2E45787072657373696F6E732E436F6465416E616C797369732E4353686172700053796E746178506172736572005A2E45787072657373696F6E732E436F6465416E616C797369730053796E7461784E6F6465005061727365546578740045787072657373696F6E50617273657200506172736553796E746178004C616D626461003C3E635F5F446973706C6179436C617373626031003C3E635F5F446973706C6179436C617373656031004353243C3E385F5F6C6F63616C7363003C436F6D70696C653E625F5F61003C3E635F5F446973706C6179436C6173733134003C3E635F5F446973706C6179436C6173733137004353243C3E385F5F6C6F63616C7331350070726F7065727479496E666F003C5265736F6C7A654C617A794D656D6265723E625F5F3131003C3E635F5F446973706C6179436C6173733161006669656C64496E666F003C5265736F6C7A654C617A794D656D6265723E625F5F3132003C5265736F6C7A654C617A794D656D6265723E625F5F3130004353243C3E395F5F436163686564416E6F6E796D6F75734D6574686F6444656C6567617465313300506172616D65746572496E666F00476574496E646578506172616D657465727300416E79006765745F50726F7065727479547970650047657456616C756545787072657373696F6E4F724E756C6C004D656D62657245787072657373696F6E0050726F7065727479006765745F4669656C6454797065004669656C640054797065436F64650047657454797065436F6465003C3E635F5F446973706C6179436C617373316400706172616D6574657244696374696F6E617279003C3E635F5F446973706C6179436C6173733230004353243C3E385F5F6C6F63616C73316500706172616D65746572003C5265736F6C7665506172616D6574657244696374696F6E6172793E625F5F316300496E64657845787072657373696F6E006765745F5479706500556E61727945787072657373696F6E00437265617465506172616D657465720049456E756D657261746F726031003C3E635F5F446973706C6179436C61737332330064696374506172616D65746572003C3E635F5F446973706C6179436C6173733236004353243C3E385F5F6C6F63616C733234003C5265736F6C7665506172616D65746572456E756D657261626C653E625F5F3232004765744D6574686F64004D6574686F6443616C6C45787072657373696F6E0043616C6C003C3E635F5F446973706C6179436C6173733239003C3E635F5F446973706C6179436C6173733263004353243C3E385F5F6C6F63616C733261003C5265736F6C7665506172616D6574657253696E676C6544696374696F6E6172793E625F5F3238004669727374003C3E635F5F446973706C6179436C6173733266003C3E635F5F446973706C6179436C6173733331003C3E635F5F446973706C6179436C6173733333004353243C3E385F5F6C6F63616C733332004353243C3E385F5F6C6F63616C73333000706172616D6574657245787072657373696F6E003C5265736F6C7665506172616D65746572556E74797065643E625F5F326500496E736572740047657450726F706572747900446174615461626C65436F6C6C656374696F6E006765745F5461626C65730053716C446174615265636F72640053716C50697065006765745F506970650053656E64526573756C747353746172740053657456616C7565006765745F4669656C64436F756E740053656E64526573756C7473526F770053656E64526573756C7473456E64006765745F4461746154797065006765745F436F6C756D6E4E616D650053716C446254797065006765745F4D61784C656E677468006F705F457175616C6974790053716C43686172730053716C446F75626C650053716C4D6F6E65790053716C446563696D616C004D6178507265636973696F6E0053716C53696E676C650053716C586D6C003C50726976617465496D706C656D656E746174696F6E44657461696C733E7B30363144333234342D413744312D344144452D413541452D3243384541393442323732397D0024246D6574686F643078363030303135302D310024246D6574686F643078363030303135312D31006765745F5461626C6500436C6F6E6500496D706F7274526F77005A2E45787072657373696F6E732E436F6465436F6D70696C65720046616B65416E6F6E796D6F7573547970650050726F70657274696573004E6577526F77006765745F497347656E65726963547970650047657447656E6572696354797065446566696E6974696F6E006765745F49734172726179006765745F486173456C656D656E7454797065004D61746368436F6C6C656374696F6E00436170747572650024246D6574686F643078363030303135342D3100436F6E7461696E734B657900496E7465726C6F636B656400436F6D7061726545786368616E67650053657269616C697A61626C654174747269627574650044656661756C744D656D626572417474726962757465004E6F6E53657269616C697A656441747472696275746500417267756D656E744E756C6C457863657074696F6E00457175616C7300436F6D7061726500417267756D656E74457863657074696F6E00417267756D656E744F75744F6652616E6765457863657074696F6E006765745F4C656E67746800496E76616C69644F7065726174696F6E457863657074696F6E0050726F7065727479436F6C6C656374696F6E006765745F457874656E64656450726F706572746965730055706461746500436F7079003C416C74657253716C5461626C655374727563747572653E625F5F30006765745F53716C446254797065006765745F507265636973696F6E006765745F5363616C65003C3E635F5F446973706C6179436C61737332003C54727947657456616C75653E625F5F300050726564696361746560310046696E64003C6765745F436F756E743E625F5F300053756D0047657448617368436F646500000080FF4F006F00700073002100200041002000670065006E006500720061006C0020006500720072006F007200200068006100730020006F0063006300750072007200650064002E00200050006C00650061007300650020007200650070006F00720074002000740068006500200069007300730075006500200069006E0063006C007500640069006E0067002000740068006500200073007400610063006B00200074007200610063006500200074006F0020006F0075007200200073007500700070006F007200740020007400650061006D003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D00003363006F006E007400650078007400200063006F006E006E0065006300740069006F006E0020003D002000740072007500650000135A005A005A005F0049006E0064006500780000812154006800650020006B0065007900200027007B0030007D002700200063006F0075006C00640020006E006F007400200062006500200066006F0075006E0064002C00200079006F0075002000630061006E0020006F006E006C00790020006700650074002000760061006C00750065002000660072006F006D0020006500780069007300740069006E00670020006B006500790073002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D00011D640065006600610075006C00740043006F006D006D0061006E00640000256E00650077002000530071006C0043006F006E006E0065006300740069006F006E002800001B5B00530051004C004E00450054005F0043006F00640065005D0000033B00002F63006F006E007400650078007400200063006F006E006E0065006300740069006F006E003D0074007200750065000029530051004C004E00450054005F0043006F006E00660069006700750072006100740069006F006E00000D530045004C00450043005400001D530045004C0045004300540020002A002000460052004F004D00200000032000008159540068006500200073007000650063006900660069006500640020006B0065007900200069007300200069006E00760061006C00690064002E00200059006F00750020006D007500730074002000630068006F006F007300650020006200650074007700650065006E0020002700780027002C002000270069006E00740020007800270020006F0072002000270069006E0074003F00200078002700200066006F0072006D00610074002E002000430075007200720065006E00740020006B00650079003A0020007B0030007D002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D000182D30D000A002000200020002000200020002000200020002000200020007500730069006E00670020002800530071006C0043006F006E006E0065006300740069006F006E00200063006F006E006E0065006300740069006F006E0020003D0020006E00650077002000530071006C0043006F006E006E0065006300740069006F006E002800220063006F006E007400650078007400200063006F006E006E0065006300740069006F006E0020003D00200074007200750065002200290029000D000A002000200020002000200020002000200020002000200020007B000D000A0020002000200020002000200020002000200020002000200020002000200020007500730069006E00670020002800530071006C0043006F006D006D0061006E006400200063006F006D006D0061006E00640020003D0020006E00650077002000530071006C0043006F006D006D0061006E00640028002900290020000D000A0020002000200020002000200020002000200020002000200009007B000D000A002000200020002000200020002000200020002000200020000900090063006F006D006D0061006E0064002E0043006F006E006E0065006300740069006F006E0020003D00200063006F006E006E0065006300740069006F006E003B000D000A002000200020002000200020002000200020002000200020002000200020002000200020002000200063006F006E006E0065006300740069006F006E002E004F00700065006E00280029003B000D000A00200020002000200020002000200020002000200020002000200020002000200020002000200020005B00530051004C004E00450054005F0043006F00640065005D000D000A0020002000200020002000200020002000200020002000200020002000200020007D000D000A002000200020002000200020002000200020002000200020007D000D000A00200020002000200020002000200020002000200020002000002F63006F006D006D0061006E0064002E0043006F006D006D0061006E006400540065007800740020003D0020002200000522003B00003D20003D00200063006F006D006D0061006E0064002E00450078006500630075007400650044006100740061005400610062006C006500280029003B00002B2E0045007800740065006E00640065006400500072006F0070006500720074006900650073005B002700013127005D0020003D00200063006F006D006D0061006E0064002E0043006F006D006D0061006E006400540065007800740001550D000A004400450043004C0041005200450020004000730071006C006E00650074002000530051004C004E004500540020003D002000530051004C004E00450054003A003A005000610072007300650028002700016F27002900200049004E005300450052005400200049004E0054004F00200023007A00200045005800450043002000640062006F002E00530051004C004E00450054005F004500760061006C0052006500730075006C00740053006500740020004000730071006C006E0065007400010B760061006C0075006500002D4500760061006C00530051004C004E00450054005F00530065006C006500630074005400610062006C0065000081FF0D000A007500730069006E00670020002800530071006C0043006F006E006E0065006300740069006F006E00200063006F006E006E0065006300740069006F006E0020003D0020006E00650077002000530071006C0043006F006E006E0065006300740069006F006E002800220063006F006E007400650078007400200063006F006E006E0065006300740069006F006E0020003D00200074007200750065002200290029000D000A007B000D000A0020002000200020007500730069006E00670020002800530071006C0043006F006D006D0061006E0064002000640065006600610075006C00740043006F006D006D0061006E00640020003D0020006E00650077002000530071006C0043006F006D006D0061006E00640028002900290020000D000A0009007B000D000A0009000900640065006600610075006C00740043006F006D006D0061006E0064002E0043006F006E006E0065006300740069006F006E0020003D00200063006F006E006E0065006300740069006F006E003B000D000A002000200020002000200020002000200063006F006E006E0065006300740069006F006E002E004F00700065006E00280029003B000D000A00200020002000200020002000200020005B00530051004C004E00450054005F0043006F00640065005D000D000A0020002000200020007D000D000A007D000D000A0000037B0000037D0000077B0030007D0000077B0031007D0000077B0032007D0000077B0033007D0000077B0034007D0000077B0035007D0000077B0036007D0000077B0037007D0000077B0038007D00008133540068006500200061006C006900610073003A00200027007B0030007D002700200069007300200061006C0072006500610064007900200072006500670069007300740065007200650064002C00200079006F00750020006D00750073007400200073007000650063006900660069007900200061006E00200075006E007200650067006900730074006500720065006400200061006C0069006100730020006E0061006D0065002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D000157530079007300740065006D002E004400650070006C006F0079006D0065006E0074002E004100700070006C00690063006100740069006F006E002E004D0061006E00690066006500730074002E00460069006C0065000043530079007300740065006D002E004E00650074002E0057006500620052006500710075006500730074004D006500740068006F00640073002B00460069006C0065000053530079007300740065006D002E00440079006E0061006D00690063002E005500740069006C0073002E0043006F006C006C0065006300740069006F006E0045007800740065006E00730069006F006E007300001B530079007300740065006D002E0041006300740069006F006E00000100395200650073006F006C007600650054006F0050006100720061006D006500740065007200440069006300740069006F006E0061007200790000094900740065006D00008105410020006E006F006E002D006E0075006C006C00200044006100740061005300650074002F0044006100740061005400610062006C006500200069007300200072006500710075006900720065006400200074006F002000720065007400750072006E002000740068006500200072006500730075006C0074002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D000181675400680065002000740079007000650020002800540079007000650043006F00640065002900200027007B0030007D00270020006900730020006E006F007400200073007500700070006F007200740065006400200069006E002000530051004C0020005300650072007600650072002C0020006D0061006B00650020007300750072006500200074006F00200063006F006E007600650072007400200079006F0075007200200072006500730075006C007400200074006F0020006100200073007500700070006F007200740065006400200074007900700065002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D0001815154006800650020007400790070006500200027007B0030007D00270020006900730020006E006F007400200073007500700070006F007200740065006400200069006E002000530051004C0020005300650072007600650072002C0020006D0061006B00650020007300750072006500200074006F00200063006F006E007600650072007400200079006F0075007200200072006500730075006C007400200074006F0020006100200073007500700070006F007200740065006400200074007900700065002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D000113530071006C00420069006E006100720079000015530071006C0042006F006F006C00650061006E00000F530071006C0042007900740065000011530071006C00420079007400650073000011530071006C00430068006100720073000017530071006C004400610074006500540069006D0065000015530071006C0044006500630069006D0061006C000013530071006C0044006F00750062006C006500000F530071006C0047007500690064000011530071006C0049006E007400310036000011530071006C0049006E007400330032000011530071006C0049006E007400360034000011530071006C004D006F006E00650079000013530071006C00530069006E0067006C0065000013530071006C0053007400720069006E006700000D530071006C0058006D006C00000D440042004E0075006C006C0000812D540068006500200072006500730075006C007400200063006F0075006C00640020006E006F007400200062006500200063006F006E00760065007200740065006400200074006F0020006100200052006500730075006C0074005300650074002C00200074006800650020007400790070006500200027007B0030007D00270020006900730020006E006F007400200073007500700070006F0072007400650064002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D00010D560061006C00750065005F00000F560061006C00750065005F003100000B62006F006F006C003F00001142006F006F006C00650061006E003F00000B62007900740065003F00000B42007900740065003F00000D730068006F00720074003F00000D49006E007400310036003F00000969006E0074003F00000D49006E007400330032003F00000B6C006F006E0067003F00000D49006E007400360034003F00000D66006C006F00610074003F00000F530069006E0067006C0065003F00000F64006F00750062006C0065003F00000F44006F00750062006C0065003F00001164006500630069006D0061006C003F00001144006500630069006D0061006C003F0000134400610074006500540069006D0065003F00001344006100740061005400610062006C006500001755006E0073007500700070006F00720074006500640000076B0065007900000B6500720072006F007200002F41007200670075006D0065006E0074002000630061006E006E006F00740020006200650020006E0075006C006C0000794400750070006C006900630061007400650020006B006500790073003A0020006E006500770020006B00650079003A0020007B0030007D002C0020006F006C0064002000760061006C00750065003A0020007B0031007D002C0020006E00650077002000760061006C00750065003A0020007B0032007D00000B61007200720061007900000B69006E00640065007800000564007400001D5B007B0030007D005D0020007B0031007D0020004E0055004C004C00001B41004C0054004500520020005400410042004C00450020005B00000F5D00200041004400440020000A0000032C00000D42004900470049004E005400000742004900540000114400410054004500540049004D004500001144004500430049004D0041004C00280000032900000F44004500430049004D0041004C00000B46004C004F0041005400000749004E005400000B4D004F004E004500590000134E005600410052004300480041005200280000074D0041005800002155004E0049005100550045004900440045004E00540049004600490045005200001153004D0041004C004C0049004E005400000F540049004E00590049004E0054000015560041005200420049004E0041005200590028000017530051004C005F00560041005200490041004E005400000758004D004C00003555006E0073007500700070006F00720074006500640020005400790070006500200043006F00640065003A0020007B0030007D00003355006E0073007500700070006F007200740065006400200043006C007200200054007900700065003A0020007B0030007D00000044321D06D1A7DE4AA5AE2C8EA94B27290008B77A5C561934E08902060202061C0A061512290115122D010E02060E02060803061214030611310306126803061240080615123C020E123503200001032000080520011260080320001C0420001139042000113D04200011410420001145042000110C0420001149042000114D05000101110C0600011219110C060002011C101C080003011C101C101C0A0004011C101C101C101C0C0005011C101C101C101C101C0E0006011C101C101C101C101C101C032000020320000E0420011C0E082001151151010A0E08200115115101020E08200115115101080E08200115115101060E05200111490E08200115115101050E050002020E0E052001110C0E072002110C11491C082002110C11491155082002110C1149110C082002110C114911490500020808080420001208040000110C0300000803000002050001110C0E060001110C1149072002110C11490E082002110C11491141082002110C1149113D082002110C11491159082002110C1149115D082002110C11491145082002110C11491261082002110C1149114D082002110C11491139070002011C101149042000126104200011550420001159042000115D092003110C114912351C042800120803280002040800110C080615126C020E1214080615126C0208120803061218030612380300000108061512650212111C0B2002010E1512650212111C0C200212140E151269020E123508200115126D011C0E1020021512650212191C0E1512710112350D20021512650212191C0E1D12351120021512650212111C0E151269020E12350B2002151265021C1C0E12350E2003151275031C1C1C0E12351235112004151279041C1C1C1C0E12351235123514200515127D051C1C1C1C1C0E123512351235123518200615128081061C1C1C1C1C1C0E123512351235123512351B200715128085071C1C1C1C1C1C1C0E1235123512351235123512351E200815128089081C1C1C1C1C1C1C1C0E12351235123512351235123512352120091512808D091C1C1C1C1C1C1C1C1C0E1235123512351235123512351235123524200A151280910A1C1C1C1C1C1C1C1C1C1C0E12351235123512351235123512351235123506200212180E0E08200112181D128095042000121807200112181D123508200112181D12809906200212180E1C08200112181D12809D06200112181D0E04061180A1112000151280A5020E151280A5021280990512200101151280A5020E151280A502128099050B2000151280A5020E1280A90C200101151280A5020E1280A9092000151280A5020E1C0A200101151280A5020E1C092000151280A5020E0E0A200101151280A5020E0E112000151280A5020E151280A50212809D0512200101151280A5020E151280A50212809D050A2000151280A5020E12350B200101151280A5020E12350520001180AD062001011180AD042001010E04200101020520021C0E1C0620021C0E1D1C063001011E000E073001021E000E1C083001021E000E1D1C0B3001021E000E151271010E083001021E000E1D0E1006151280A5020E151280A502128099050A06151280A5020E1280A90806151280A5020E1C0806151280A5020E0E1006151280A5020E151280A50212809D050906151280A5020E123504061180AD112800151280A5020E151280A502128099050B2800151280A5020E1280A9092800151280A5020E1C092800151280A5020E0E112800151280A5020E151280A50212809D050A2800151280A5020E12350528001180AD0328000E0F00040E121812350E151269020E123515000315122D011280B11280B51158151269020E123504061280B9100004121412180E151269020E12351235131001051E0012180E151269020E123512351158100004011280B5151269020E12350E123513000215122D011280B11280B5151269020E123580FE4F006F00700073002100200041002000670065006E006500720061006C0020006500720072006F007200200068006100730020006F0063006300750072007200650064002E00200050006C00650061007300650020007200650070006F00720074002000740068006500200069007300730075006500200069006E0063006C007500640069006E0067002000740068006500200073007400610063006B00200074007200610063006500200074006F0020006F0075007200200073007500700070006F007200740020007400650061006D003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D008158540068006500200073007000650063006900660069006500640020006B0065007900200069007300200069006E00760061006C00690064002E00200059006F00750020006D007500730074002000630068006F006F007300650020006200650074007700650065006E0020002700780027002C002000270069006E00740020007800270020006F0072002000270069006E0074003F00200078002700200066006F0072006D00610074002E002000430075007200720065006E00740020006B00650079003A0020007B0030007D002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D008132540068006500200061006C006900610073003A00200027007B0030007D002700200069007300200061006C0072006500610064007900200072006500670069007300740065007200650064002C00200079006F00750020006D00750073007400200073007000650063006900660069007900200061006E00200075006E007200650067006900730074006500720065006400200061006C0069006100730020006E0061006D0065002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D00816C540068006500200063006100630068006500640020006900740065006D002000680061007300200065007800700069007200650064002E0020004900740065006D00730020006100750074006F006D00610074006900630061006C006C007900200065007800700069007200650020006100660074006500720020006100200070006500720069006F00640020006F0066002000740069006D0065002C00200079006F0075002000630061006E0020006300680061006E006700650020007400680069007300200063006F006E00660069006700750072006100740069006F006E002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D008104410020006E006F006E002D006E0075006C006C00200044006100740061005300650074002F0044006100740061005400610062006C006500200069007300200072006500710075006900720065006400200074006F002000720065007400750072006E002000740068006500200072006500730075006C0074002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D00812054006800650020006B0065007900200027007B0030007D002700200063006F0075006C00640020006E006F007400200062006500200066006F0075006E0064002C00200079006F0075002000630061006E0020006F006E006C00790020006700650074002000760061006C00750065002000660072006F006D0020006500780069007300740069006E00670020006B006500790073002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D00812C540068006500200072006500730075006C007400200063006F0075006C00640020006E006F007400200062006500200063006F006E00760065007200740065006400200074006F0020006100200052006500730075006C0074005300650074002C00200074006800650020007400790070006500200027007B0030007D00270020006900730020006E006F007400200073007500700070006F0072007400650064002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D00815054006800650020007400790070006500200027007B0030007D00270020006900730020006E006F007400200073007500700070006F007200740065006400200069006E002000530051004C0020005300650072007600650072002C0020006D0061006B00650020007300750072006500200074006F00200063006F006E007600650072007400200079006F0075007200200072006500730075006C007400200074006F0020006100200073007500700070006F007200740065006400200074007900700065002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D0081665400680065002000740079007000650020002800540079007000650043006F00640065002900200027007B0030007D00270020006900730020006E006F007400200073007500700070006F007200740065006400200069006E002000530051004C0020005300650072007600650072002C0020006D0061006B00650020007300750072006500200074006F00200063006F006E007600650072007400200079006F0075007200200072006500730075006C007400200074006F0020006100200073007500700070006F007200740065006400200074007900700065002E00200043006F006E00740061006300740020006F0075007200200073007500700070006F007200740020007400650061006D00200066006F00720020006D006F0072006500200069006E0066006F0072006D006100740069006F006E003A00200069006E0066006F0040007A007A007A00700072006F006A0065006300740073002E0063006F006D00060001011280BD060001011280C10C00021D1280C51280C1101D020A00021280C51280C910020B00031280C50E1280C912350400011C1C05000112351C0600011280C11C0A0001151271011280CD1C05000112350E1C1002041E01151280A5021E001E011E001E01151275031E001E011E01221002041E01151280A5021E001E011E00151265021E001E01151275031E001E011E011110020302151280A5021E001E011E001E011210020302151280A5021E001E011E00101E010500010110080500010210080B2000151280A502130013010C200101151280A50213001301122003130113001301151275031300130113011820031301130015126502130013011512750313001301130107200202130013010820020213001013010A06151280A50213001301032800080B2800151280A5021300130104061280D103061250062001011280D10420011C1C052002011C1C04200101080420001215042001021C072002011280D508042000121D0420001221042001011C062002021C101C0428011C1C04280012150328001C0520010112400520001180D90528001180D90620020112400208000115126D011C0E1000021512650212191C0E1512710112350D00021512650212191C0E1D12351100021512650212111C0E151269020E12350B0002151265021C1C0E12350E0003151275031C1C1C0E12351235110004151279041C1C1C1C0E12351235123514000515127D051C1C1C1C1C0E123512351235123518000615128081061C1C1C1C1C1C0E123512351235123512351B000715128085071C1C1C1C1C1C1C0E1235123512351235123512351E000815128089081C1C1C1C1C1C1C1C0E12351235123512351235123512352100091512808D091C1C1C1C1C1C1C1C1C0E1235123512351235123512351235123524000A151280910A1C1C1C1C1C1C1C1C1C1C0E123512351235123512351235123512351235061001011E000E0B1001021E000E151271010E081001021E000E1D0E0400011C0E0500021C0E1C0600021C0E1D1C071001021E000E1C081001021E000E1D1C03061158040000000004010000000402000000040300000004040000000405000000070002011280C10E080003011280C10E020700020E1280C10E0600010E1280C5070615122D011260052001021260052001011260072002020810126004061D12640A061D15123C021300130112010001005408074D617853697A65FFFFFFFF041000000004640000000620010111811507000015122D010E0A0615126D0115122D010E0515122D010E0915126D0115122D010E052002011C18091512290115122D010E0920010115126D0113000500001181290715123C020E1235050701118129030701080E070512601180D91260121D12812D04070112600620010111813919010001000000010054020D4973427974654F72646572656401062001011181418126010002005455794D6963726F736F66742E53716C5365727665722E5365727665722E446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038390A446174614163636573730000000054557F4D6963726F736F66742E53716C5365727665722E5365727665722E53797374656D446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038391053797374656D446174614163636573730000000004061281490400010A1C042001010A030611390307011C040001021C0306113D040001081C03061141040001061C04200101060306114505000111490E0907041C110C110C110C0400010E1C03061149040001051C04200101050306114D040001010E0420001300052001130008072002010E12815D05200012816D0620011280C90E0520001281710620011280CD0805200201081C1107071C0E12815D1281651280C1081280BD8176010004005455794D6963726F736F66742E53716C5365727665722E5365727665722E446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038390A446174614163636573730000000054557F4D6963726F736F66742E53716C5365727665722E5365727665722E53797374656D446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038391053797374656D4461746141636365737300000000540E1146696C6C526F774D6574686F644E616D651546696C6C5F53514C4E45545F4576616C5456465F31540E0F5461626C65446566696E6974696F6E1356616C75655F312073716C5F76617269616E740420011C080507011280CD818B010004005455794D6963726F736F66742E53716C5365727665722E5365727665722E446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038390A446174614163636573730000000054557F4D6963726F736F66742E53716C5365727665722E5365727665722E53797374656D446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038391053797374656D4461746141636365737300000000540E1146696C6C526F774D6574686F644E616D651546696C6C5F53514C4E45545F4576616C5456465F32540E0F5461626C65446566696E6974696F6E2856616C75655F312073716C5F76617269616E742C2056616C75655F322073716C5F76617269616E7481A0010004005455794D6963726F736F66742E53716C5365727665722E5365727665722E446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038390A446174614163636573730000000054557F4D6963726F736F66742E53716C5365727665722E5365727665722E53797374656D446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038391053797374656D4461746141636365737300000000540E1146696C6C526F774D6574686F644E616D651546696C6C5F53514C4E45545F4576616C5456465F33540E0F5461626C65446566696E6974696F6E3D56616C75655F312073716C5F76617269616E742C2056616C75655F322073716C5F76617269616E742C2056616C75655F332073716C5F76617269616E7481B5010004005455794D6963726F736F66742E53716C5365727665722E5365727665722E446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038390A446174614163636573730000000054557F4D6963726F736F66742E53716C5365727665722E5365727665722E53797374656D446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038391053797374656D4461746141636365737300000000540E1146696C6C526F774D6574686F644E616D651546696C6C5F53514C4E45545F4576616C5456465F34540E0F5461626C65446566696E6974696F6E5256616C75655F312073716C5F76617269616E742C2056616C75655F322073716C5F76617269616E742C2056616C75655F332073716C5F76617269616E742C2056616C75655F342073716C5F76617269616E7481CA010004005455794D6963726F736F66742E53716C5365727665722E5365727665722E446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038390A446174614163636573730000000054557F4D6963726F736F66742E53716C5365727665722E5365727665722E53797374656D446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038391053797374656D4461746141636365737300000000540E1146696C6C526F774D6574686F644E616D651546696C6C5F53514C4E45545F4576616C5456465F35540E0F5461626C65446566696E6974696F6E6756616C75655F312073716C5F76617269616E742C2056616C75655F322073716C5F76617269616E742C2056616C75655F332073716C5F76617269616E742C2056616C75655F342073716C5F76617269616E742C2056616C75655F352073716C5F76617269616E740500020E0E1C05151151010A0520010113000807021C151151010A0515115101020807021C15115101020515115101080807021C15115101080515115101060807021C15115101060515115101050807021C1511510105050002010E0E042001020E0520020E0E0E0420001235021D0507000112351181890420001D050715126C020812080407011208040701110C0715126C020E12148126010002005455794D6963726F736F66742E53716C5365727665722E5365727665722E446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038390A446174614163636573730100000054557F4D6963726F736F66742E53716C5365727665722E5365727665722E53797374656D446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038391053797374656D44617461416363657373010000000A0704110C1208110C12080A00010115123C020E12140D061512818D0115123C020E12140A00010115123C020812080D061512818D0115123C020812080715123C020E12140715123C020812080F10010115122D011E00151271011E00090A0115123C020E12140C1512818D0115123C020E12140B15122D0115123C020E12140A2001011512818D011300090A0115123C020812080C1512818D0115123C020812080B15122D0115123C0208120806070212141208120100010054020A4F6E4E756C6C43616C6C000620011D0E1D03040001080E0807031D0E110C1D03060702120812600600030E1C1C1C0620010111819909070312815D128165020500020E0E0E0307010E042000113105200011812903200006032000050320000A070701151151010A06151151011131080701151151011131070701151151010807070115115101050920021D0E1D0E1181AD08070312351D0E1D0E817D010004005455794D6963726F736F66742E53716C5365727665722E5365727665722E446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038390A446174614163636573730000000054557F4D6963726F736F66742E53716C5365727665722E5365727665722E53797374656D446174614163636573734B696E642C2053797374656D2E446174612C2056657273696F6E3D342E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D623737613563353631393334653038391053797374656D4461746141636365737300000000540E1146696C6C526F774D6574686F644E616D651A46696C6C5F53514C4E45545F4576616C5456465F537472696E67540E0F5461626C65446566696E6974696F6E1556616C75655F31204E56415243484152284D415829052001011D0504000012610306115505000111311C05200101113103061159062001011181290306115D07151151011181290907011511510111812907070115115101060B07050E1208110C1260110C040000113107000202113111310500020E1C1C0500010E1D1C0300000E0900020E0E151271010E0500001281B90520001281BD071512650212111C0620011301130020070D120811310E0E15122D010E1180D912601C1281BD1281B9121D1D1C12812D0800011280C11281650C07040E1280C112815D1281651407081C0E12815D1281651280C10812815D12816507200111311180A108151280A5020E12140B2000151181C1021300130108151181C1020E12140B2000151181C5021300130108151181C5020E12140420001301092000151181C901130006151181C9010E0520010213000515122D010808151280A50208120808151181C10208120808151181C50208120806151181C90108650716113115122D010E15123C020E1214151181C5020E12140E113115122D010815123C02081208151181C5020812080802113111311D15123C020E121408151181C1020E1214151181C9010E11311D15123C0208120808151181C102081208151181C90108070A0115126D011C0C1001011D1E00151271011E00040A01123508151280A5020E12350720020113001301090A011512650212191C0B0702151280A5020E123508090A011512650212111C080A01151265021C1C0A0701151280A5020E1235090A01151275031C1C1C0A0A01151279041C1C1C1C0B0A0115127D051C1C1C1C1C0D0A0115128081061C1C1C1C1C1C0E0A0115128085071C1C1C1C1C1C1C0F0A0115128089081C1C1C1C1C1C1C1C100A011512808D091C1C1C1C1C1C1C1C1C110A01151280910A1C1C1C1C1C1C1C1C1C1C040A020E0E0500010212350806151265021235020520001D1235071512650212350216100102151271011E00151271011E00151265021E00020D07041280951D12351D128095080B00011512710112351280950E06151265021280951512710112350500001281CD0620001D1280950D151265021280951512710112351B100202151271011E01151271011E00151265021E00151271011E01070A0212809512350907021D1280951D12350600010212809909061512650212809902062002021235020920011D1280991180AD081512650212809902050A011280990C070412351D1280991D12350804061280990C2001151280A502128099050E152002151280A502128099050E151280A5021280990509151280A50212809905060A02128099050B0701151280A502128099050E151265020E151280A5021280990517151275030E151280A50212809905151280A502128099050C0A020E151280A502128099052E0705151265020E151280A50212809905151275030E151280A50212809905151280A5021280990512701D128099080600011280A91C060A020E1280A9040A020E1C0920011D1281D51180AD0920011D1280B91180AD14070612351D1281D51D1280B91D1280991D123508040612809D0C2001151280A50212809D050E152002151280A50212809D050E151280A50212809D0509151280A50212809D05060A0212809D050B0701151280A50212809D050E151265020E151280A50212809D0517151275030E151280A50212809D05151280A50212809D050C0A020E151280A50212809D052E0705151265020E151280A50212809D05151275030E151280A50212809D05151280A50212809D0512741D12809D080306123507200212350E123509151275030E12351235050A020E12351A0705151275030E12351235151275030E1235123512781D1235080707040E0E1D0E080F151280A5020E151280A5021280990509151280A5020E1280A907151280A5020E1C07151280A5020E0E0F151280A5020E151280A50212809D05140705128099151280A50212809905051D128099080907040E1280A91D0E080707040E1C1D0E0814070512809D151280A50212809D05051D12809D080A0704123512351D1235080600011180A10D040701113180B9073D1D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D12351D1235030A011C021E00080A0115126D011E000615126D011E000A0A011512650212111E00081512650212111E00090A01151265021C1E0007151265021C1E001A0705151280A5020E12351180D9151280A5020E1235121D12812D130704151280A5020E1C151280A5020E1235080E040A011E00030A010E0B1001011E00151271011E00140707151280A5020E123512351D123502123508080500010E123508061512650212350E07151269020E123509200015128421011301071512650212350E17100202151271011E01151271011E00151265021E001E01050A0212350E0500010E1D0E0407011D0E0715122D011280B10B070215122D011280B1115804061280B50306127C0806151181C5020E1C0520001281D107151181C5020E1C0820021280B112350E0B00021284251281D11281D1080615122D011281D10715122D011281D11D07051280B1128425151181C5020E1C151181C5020E1C151181C5020E1C0B200101151269021300130107151181C1020E1C0715126D011281D107151229011281D10B2002010E151229011281D106000112842D0E0D00031281D11280B512842D123514100102151282D5011E001281D1151271011280B10C151282D5011512650212111C38070D0E121415126D011281D112808015122D011280B112842D1281D11512650212111C12141280B5127C151181C1020E1C151181C5020E1C080615128084011300071512808801130007151280840113000715128084011E000715128088011E0007151282D5011E003C070D0E121415122D011280B115126D011281D115128088011E0012842D1281D11E0012141280B515128084011E00151181C1020E1C151181C5020E1C040612808C04061281D5060001021280B90906151265021280B9020620001D1284350A10010102151271011E00050A011284350A20031281D11280B50E020B00021284391281D11280B90807021280B11284250B00021284391281D11281D507000111843D12350620001D1280B908151265021280B902050A011280B90620001D1281D52B070B1D1280B91D1281D515126D011281D112809015126D011281D112809412808C1D1280B9081D1281D50804061280B104061280980906151181C5020E123508151181C5020E12350F00031284411281D11280B91D1281D107000202123512350A00021284451281D112353407081280B11281D1151181C5020E1235151181C5020E12351D1281D1151181C5020E1235151181C5020E1235151181C5020E12350720011280B112350C15127101151181C5020E1235092000151284490113000D1512844901151181C5020E12352B070615122D011280B115126D011281D112809C1280981512844901151181C5020E1235151181C5020E123504061280A00920021280990E1180AD0C000212844D1280991D1281D13B070B15122D011280B11280B112809912844D12842515126D011281D11280A41280A01D1281D11512844901151181C5020E1235151181C5020E123504061280A82B070615122D011280B115126D011281D11280AC1280A81512844901151181C5020E1235151181C5020E12350D1512842101151181C5020E12350A0A01151181C5020E123526070415122D011280B1151181C5020E1235151181C5020E12351512844901151181C5020E123504061280B404061280B0062002010813002807061280B1128425151181C5020E1235151181C5020E1235151181C5020E1235151181C5020E12352F070715122D011280B11280B81280B4151181C5020E12351280B01512844901151181C5020E1235151181C5020E12350920021280B90E1D12350507011D12350520001284510A07031280C1122112812D072001011D1280C5050000128459062001011284551807091D021D1280C51284551284591280CD081C122112812D0620011280C9080A07031D1280C5081280C9072002010E11845D082003010E11845D0A092004010E11845D05050E07051280C5123511843D0E11843D021D030206050507011280C50806151280A5020E0807151280A5020E080420001D030520001181E107151151011181E10320000D05151151010D0320000C05151151010C69071E1C1155113D114D1261128461115911846D118465115D11451141113911846911847111491284750E0815115101021511510105151151011131151151011181E1151151010D1511510111812915115101061511510108151151010A151151011181E1151151010C0407020E0807151271011280CD0815128449011280CD0520001280C1062001011280CD07151271011284790815128449011284790520001280CD052002010E1C0620021C1C1D1C021D1C0720011280CD1D1C80A507371280C1151271011280CD021280CD1280C11512710112847902128479151181C5020E1C1280CD151181C5020E1C123512191D1280B91280B91C1280CD1280B912191C1D1C081280CD0812191C12191C12191C12841915128449011280CD1512844901128479151181C1020E1C151181C1020E1C1D1280B90812211D1280B90812812D122112812D12211D1C12812D12211D1C12812D12211D1C12812D12211D1C12812D0A07031280C11D1280CD0806070312350E0809151280A5021E001E010A151275031E001E011E010820021302130013010407011E0108151265021E001E010607021E011E0103070102070003081008080809151280A502130013010815123C02130013010A15127503130013011301060702130113010815126502130013010807031301130113010407020202021301090100044974656D0000052002010E0E052002081C1C06070312501C1C090704125012501C12500700031C101C1C1C0700040E0E1C1C1C05070212501C052002011C080407011250070703125012501C0507020812500520001284A506200101128381062001081280C10907030E12815D1283811507080E12815D128165110C1280C10812815D1281650906151265021280C50E0600030E0E1C1C0600030E0E0E0E08151265021280C50E060A021280C50E0907031D021D1280C50E05200011845D0A07050E11845D1D1C0A0A0615122D01126007151284A90112600B20011300151284A9011300100706020808151284A90112601280C0020815126C02130013010B00010815123C02130013010E061512650215123C0213001301080D1512650215123C0213001301081110010208151271011E00151265021E00080A0A0115123C02130013010213002101001C5A2E45787072657373696F6E732E53716C5365727665722E4576616C00006901006453514C204576616C2046756E6374696F6E207C204576616C7561746520432320636F646520616E642065787072657373696F6E20696E20542D53514C2073746F7265642070726F6365647572652C2066756E6374696F6E20616E6420747269676765722E0000050100000000160100115A5A5A2050726F6A6563747320496E632E00001101000C4576616C2053514C2E4E455400002F01002A436F7079726967687420C2A9205A5A5A2050726F6A6563747320496E632E2032303134202D203230313600001501001053514C2026202E4E455420546F6F6C7300000A010005312E302E3000000801000200000000000801000800000000001E01000100540216577261704E6F6E457863657074696F6E5468726F7773010000000000A887605B00000000020000001C010000B47D0100B45F01005253445311B3E9CAB4315F41AED81F110F5D99B601000000633A5C55736572735C4A6F6E617468616E5C4465736B746F705C5A5C5446535C4576616C5C5A2E45787072657373696F6E732E53716C5365727665722E4576616C5C5A2E45787072657373696F6E732E53716C5365727665722E4576616C5C6F626A5C52656C656173655C5A2E45787072657373696F6E732E53716C5365727665722E4576616C2E70646200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F87E010000000000000000000E7F0100002000000000000000000000000000000000000000000000007F01000000000000005F436F72446C6C4D61696E006D73636F7265652E646C6C0000000000FF25002000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000001800008000000000000000000000000000000100010000003000008000000000000000000000000000000100000000004800000058800100CC0400000000000000000000CC0434000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE00000100000001000000000000000100000000003F000000000000000400000002000000000000000000000000000000440000000100560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000000B0042C040000010053007400720069006E006700460069006C00650049006E0066006F000000080400000100300030003000300030003400620030000000E4006500010043006F006D006D0065006E00740073000000530051004C0020004500760061006C002000460075006E006300740069006F006E0020007C0020004500760061006C007500610074006500200043002300200063006F0064006500200061006E0064002000650078007000720065007300730069006F006E00200069006E00200054002D00530051004C002000730074006F007200650064002000700072006F006300650064007500720065002C002000660075006E006300740069006F006E00200061006E006400200074007200690067006700650072002E000000000044001200010043006F006D00700061006E0079004E0061006D006500000000005A005A005A002000500072006F006A006500630074007300200049006E0063002E00000064001D000100460069006C0065004400650073006300720069007000740069006F006E00000000005A002E00450078007000720065007300730069006F006E0073002E00530071006C005300650072007600650072002E004500760061006C00000000002C0006000100460069006C006500560065007200730069006F006E000000000031002E0030002E003000000064002100010049006E007400650072006E0061006C004E0061006D00650000005A002E00450078007000720065007300730069006F006E0073002E00530071006C005300650072007600650072002E004500760061006C002E0064006C006C000000000078002A0001004C006500670061006C0043006F007000790072006900670068007400000043006F0070007900720069006700680074002000A90020005A005A005A002000500072006F006A006500630074007300200049006E0063002E002000320030003100340020002D002000320030003100360000004C00110001004C006500670061006C00540072006100640065006D00610072006B00730000000000530051004C002000260020002E004E0045005400200054006F006F006C007300000000006C00210001004F0072006900670069006E0061006C00460069006C0065006E0061006D00650000005A002E00450078007000720065007300730069006F006E0073002E00530071006C005300650072007600650072002E004500760061006C002E0064006C006C00000000003C000D000100500072006F0064007500630074004E0061006D006500000000004500760061006C002000530051004C002E004E004500540000000000300006000100500072006F006400750063007400560065007200730069006F006E00000031002E0030002E003000000038000800010041007300730065006D0062006C0079002000560065007200730069006F006E00000031002E0030002E0030002E003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007001000C000000203F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - WITH PERMISSION_SET = SAFE - -- WITH PERMISSION_SET = EXTERNAL_ACCESS - -- WITH PERMISSION_SET = UNSAFE - ; - - CREATE TYPE [dbo].[SQLNET] EXTERNAL NAME [Z.Expressions.SqlServer.Eval].[Z.Expressions.SqlServer.Eval.SQLNET]; - EXEC('CREATE PROCEDURE [SQLNET_EvalResultSet] @sqlnet [SQLNET] AS EXTERNAL NAME [Z.Expressions.SqlServer.Eval].[Z.Expressions.SqlServer.Eval.SQLNET].[SQLNET_EvalResultSet]') - EXEC('CREATE FUNCTION [dbo].[SQLNET_EvalTVF_1] (@sqlnet [dbo].[SQLNET]) RETURNS TABLE ([Value_1] SQL_VARIANT NULL) AS EXTERNAL NAME [Z.Expressions.SqlServer.Eval].[Z.Expressions.SqlServer.Eval.SQLNET].[SQLNET_EvalTVF_1]') - EXEC('CREATE FUNCTION [dbo].[SQLNET_EvalTVF_2] (@sqlnet [dbo].[SQLNET]) RETURNS TABLE ([Value_1] SQL_VARIANT NULL, [Value_2] SQL_VARIANT NULL) AS EXTERNAL NAME [Z.Expressions.SqlServer.Eval].[Z.Expressions.SqlServer.Eval.SQLNET].[SQLNET_EvalTVF_2]') - EXEC('CREATE FUNCTION [dbo].[SQLNET_EvalTVF_3] (@sqlnet [dbo].[SQLNET]) RETURNS TABLE ([Value_1] SQL_VARIANT NULL, [Value_2] SQL_VARIANT NULL, [Value_3] SQL_VARIANT NULL) AS EXTERNAL NAME [Z.Expressions.SqlServer.Eval].[Z.Expressions.SqlServer.Eval.SQLNET].[SQLNET_EvalTVF_3]') - EXEC('CREATE FUNCTION [dbo].[SQLNET_EvalTVF_4] (@sqlnet [dbo].[SQLNET]) RETURNS TABLE ([Value_1] SQL_VARIANT NULL, [Value_2] SQL_VARIANT NULL, [Value_3] SQL_VARIANT NULL, [Value_4] SQL_VARIANT NULL) AS EXTERNAL NAME [Z.Expressions.SqlServer.Eval].[Z.Expressions.SqlServer.Eval.SQLNET].[SQLNET_EvalTVF_4]') - EXEC('CREATE FUNCTION [dbo].[SQLNET_EvalTVF_5] (@sqlnet [dbo].[SQLNET]) RETURNS TABLE ([Value_1] SQL_VARIANT NULL, [Value_2] SQL_VARIANT NULL, [Value_3] SQL_VARIANT NULL, [Value_4] SQL_VARIANT NULL, [Value_5] SQL_VARIANT NULL) AS EXTERNAL NAME [Z.Expressions.SqlServer.Eval].[Z.Expressions.SqlServer.Eval.SQLNET].[SQLNET_EvalTVF_5]') - EXEC('CREATE FUNCTION [dbo].[SQLNET_EvalTVF_String] (@sqlnet [dbo].[SQLNET]) RETURNS TABLE ( [Value_1] NVARCHAR (MAX) NULL) AS EXTERNAL NAME [Z.Expressions.SqlServer.Eval].[Z.Expressions.SqlServer.Eval.SQLNET].[SQLNET_EvalTVF_String]') - - COMMIT; - PRINT N'Completed!' - -END TRY -BEGIN CATCH - /* - * CATCH ERROR - */ - PRINT 'An error occured: ' + ERROR_MESSAGE() - IF ( @@TRANCOUNT > 0 ) - BEGIN - PRINT 'Rolling back the TRANSACTION...' - ROLLBACK TRAN - PRINT 'Done.' - END -END CATCH - -/* -* ROLLBACK UNCATCH ERROR -*/ -IF ( @@TRANCOUNT > 0 ) - BEGIN - PRINT 'An error occured and the CATCH Block was skipped; Rolling back the TRANSACTION...' - ROLLBACK TRAN - PRINT 'Done.' - END \ No newline at end of file diff --git a/docs/images/arrow-down1.png b/docs/images/arrow-down1.png deleted file mode 100644 index d476391882b71e774f2454db02442b6957d70df8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4285 zcmaJ_c|4Ts-+nY2`5d7kH9KG$`9zxVyU?&psu`=Gm{l=yaW005+% zo$NgYZHnND5d{n08Q3|jpi!mm_n{r8gwSHKQ3SviPYEVKoJrVFf+qosk2~>#Uc3cB3b3WX5yR?wryZU{Fj zh7d+{Iu%7Ye9GMmcPavBhKE}3gILnd1p*`j4GW=@BFWL_bSvmzy5@rZ&uIfFoG!1;-(fNC+COk2Eqyqmg1aHNsBG1}bF1oHO< z6-0}|hnRcXJNz9>FtUP%(P&h21B2MuSp8U(J|!yD0BL4s_EW>q5H3K#qvOalEFDgc zhW%2oCq(0-h*TPpLWcZQ#0FDhXjV``rvF(2iTaN$Ir{Hy5^R_O9ZNMp>LY$G=@-z= z?f-|8NdKUtX`Y1t=KFsNM|;Il2?m~oXi7{JPEfcI*w0W@b4(NgOQS@2Q7DnWcJW{s zg+_@EqfjB3!)S=kQ6d>niH+9%3-9J;?o5uRVaYgxv%M8mprB7A;>}Ia7!z9~Gn5I^ z2!%xMH?gxrU>qhk8K5me~eEc3)~(h zu=U(FU%^?ELOR>qdeKJ~{Ur)798nyLg=n~4gPNsOXzek0=$RgL>`j)8`uwVmLcT&3 z!@J1$!2`7e&yEhdpsr>HZ!by3@Bds9WaF%|FN$uz2db5`%g)u|pw63h%MHpXIkY@} zxo>lMvwyumAmX;~!sXErw5$ngIxv~Qa1`H+ zP-GtBxRiKXt4_QZUr2AU)={gbhL(6*Gul?FMxX3Tag4Kvw6sc6g^3bZ#JqL6*ICIK zH&zRTg2v0?qKONNS8lLhB64|#ZCZvRCn9mFw~bw|wn_pb{U%ahHhgvsE7bH;z)u1u zmiUVk6+?#X5CV{UC)FxlMx*4x< zjqceFyi@T`-rFlIWEl#GCT^4LAFXHSBK&!%Hf`~>ULuC`eJA!NH~p1aUr^6LspFjc zhtJODOLvv$5=2Ux||*#j#wu{{I@;a+FC<^$24BuP=9*?dm$Dym-lV*3%3j$ zptJi)4{&Gc8)B8u!c9GU*=#?l#%Mmkj?a@*+PgSCC5K=QtX*SS$GIfbt!6rPnYyt3 z2AKx3G5M@_zM__8u~K?hK8W7fu5@u_gVOi_RASexzE;RlKF^6l=a?6*8bE+ zIOBG{dwAK)FK}+8zNBW^){lL11HPsk-lv?nMDb7CBX|DM5!fsIDwgYC!5+68KjPIg zwPR;UN~(CRRHDZz2dEIWD~ zUg4e&`i^4wpMFX&gYqRT+E&tl;aM@zhl`nWYWV{FFQUg)Uad3-+gYM%jD^*XjQk4K;K2Q5boNa3$WHB7Vb6^}T zUP=7^qz#yn1ATC9h|FDeE9m9u^P@_I45j5YZhlZ^v=FLBAAL-}Rj(#=UU)&i;@FGG zvjZY${g1y=bskK9p$KMc4sX+qY=+N|-Bjt~0i|Wcm-UD?G-l(fw46q0ix)`^>vtma zejwz*?I?zjE7o;%r{+HVh0?UXv?1$gIk z4X-tJ05unrG7H@0-S)I~j_ItnTk{J_x*U&BIJ4%CAy>;f9c>4L@@#-Q zo<@fyTJ$)4^^4%+m>rt3KdsQpEOj{{yPA@eGYx$*6V^NLIFo<>2KM&(dVYb#b?Jsc zR=TxrdW3V%G}>@ddkU7$RgaRrH&pU8BdN;5|8m9JEoG*5B!4`c*mpbcyOB%BcokLL zY`guXm%v(qS;x9LW7)lXgQ+}n=+^2oGDigSMn_@=soyhg;b*ORNoYdh$J5EuD}BNj zG9*175x@1H!CHzIK2(~56$3HCZ}Xq!MZ7pq3llyjd4t`Ul!xCv1k)};B{~0C!en#q zd~cVTOla>r4yK>!3(#{FuZzg^V*6`9^U}RV#`u&(-jUVN5AkvebW*pu09h@mFz6M# zARbe%JaT}r*2;`+JJpK{LRSr%@KBjz)g$c^(yI3pB zp?mW}wQ-s3Jw$I8Eblz)HNHhPQoKC1T(@%mv{7xit?c`EspDns_P2V!s?|T=G>W4m zGZYlWKMff5^8Gs-JA?=dfZM>BJi5T?==UDS1iZ5c-Y={8@wMTe=i~6}3^^O|q_n>3 zk1kTX#oj019ppdNn{nUONH7@G1LtE}Ha$@`JED1Ci$baJNR&rd%@&Kc-mSc3FQwUN zy_r8mW#YScD_+^p?D*dG8~}V8UcIOcZ?~4V;22`7i?)mzG+mOS_P>^D8uEaru=BJ- z?lvKdJ-0A^zZ;hy!zSQc_o@^~WXj8<4lzIeA>WLPH4Hqa?aU9opK{DUg{mynBGp;{ z`zZaQF7)I&-n+O#k;8Qt&y@ZF)6m1uvCPyQ0TZJqbcrn5&Z^#ll-m>>So;q$VR(`OTq{T-jMUiuF?NE=hn_D6kQ86NSf9_{p{|b0Xj3 zAj|30i{C=ppF}8y6yM6MR$`jaL$QeXUH5-4JNNwMEF4_3pYT<^=>SLa&biBW4N2RA zQL@@wA1B0PR)R39bA!@=gvPa$&Y1_#^3q+eh*)X;&>Ad#0pZ@&=8+2DQ0k&0?UuHU z+-B2;P7Ceou;Ge=8#{q+5Q0&xc{a8rQ&RRZruOUsLmT1iZ;}276&I{ zA&3}^M=eL#${da}Ebf&;B*L(3Aw_>?e`-7V$C}taLjX`lIThQy&11qoe-xXPftB54 z8a?{3k)QYGiAAm?U;}1vv(xBltzfnxnaQwlMQBS@+JN=$b8y=cF_VopfK4rPoUNr~ zS@YJaa&_z5h4dDT2&A>ADNyy;+1G$p=4&Ml6#)2(P_t`HPx5&lqHG($Jv(UoiALBC<{_Sm5+nDQe>H+lfT%kV}e_ky#-*YJkoJ=?H3>l*zQ z@_Lunmm+yPiRVI*a};@y-dd>;bW|k3FC$=PFP_s=zO$%<*;SioxYka8c-(_uEq%O@TZKBWol*c+>b7;A zIo5gltlExLb>%}{J(IAcVALG`{b-#xZ|&42Bc#oPZ+6eqVAYj#^H~RmOL6hTSfYrX?t(t4I1)xAq=-_RE$2ll!9wIMfq|MV>$ZEW zYOmQwkvFG=hXMD>6FJQ|HIW9c+FLZ*dmaY@4SxaYBqf4zB%zFpc1(4r)jM|R{89W) z6$lm>l1^3Zeu)WC|Il~m{u*9!Z?LqiV#sGD@74fMj?vu2g-^OzV?`8+L`r?2o52@F Z0Ma2btLTJXlRtkbIPZ72ueS?I`yc;mZ+ZX# diff --git a/docs/images/logo.png b/docs/images/logo.png deleted file mode 100644 index a25dd5370a993537f336388acc6c2825f7019cf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1439 zcma)6`B&0;6#bxxs9y+65K$>Jb1K}LQBljleanb&X>`;ktAl1Pm9{#Cg}Izu%G}B* zmu%5QElbC(2r)~HO2yrzNGTOFtyCPE`3L5m^X`4`{qWAc=biIXXuj?!O@bx>0Ojf7 zLRYfo&qS&!F>FBNfs)_{sN1Oka5J#1J}5XeFfho%!WM-ltia%(!(gti zUPR(XOG|PIgE1kK6>r)kEGg;s^_`!ZN&$ck!1DC8Qence)5hur~y2S6zR901lDo7V$iU}$P;x*4ObkJB}_w%L{sz~aI}1pp2X zE^h9={sF-xlC6)=uJ02QX#j+WGk4Mhtu{L}HnyrGagTAhv9b4mgoK-zm@dxFMnuGE zXrOZth<-M^+0XAah0-SIm=cNRB@%gGUxA59V&ZvmOw5~8ryA_+HlY(^rhxV0a1b3YarmzUoi;c~kR3$rg3q#799!(b{xLV7!1c=w#yska%BUQ72CbCo4F?2mFqmD{$jgZpi$AH_UujeUO9vy(=T zoYQBM$2x~Zxn133{K=Hp(+uh7^!$dA|IY9~P+{NKcN+ke@18DHhDY1y9BDuw4bN9) zm6NsShx}xd)hFx3Dy;NOOBYNR#}#v~KHx#;!@r`ZP+#Is)UI9{`C`&;*F5hye|o48 z{&ezaKq+0omdRwv`%*>AtsVPzsGMz?P@zqqub#2_n=yxPY2^r|^2?MB9nm38u&xcq z5{E_us}IiwU~Q+ds#c`Gr)*wnRDN25TaEMXN|dX$1mm&@L~kEND9fUgo~ zTjs9Ec}w)V+^A`hmCYQ4AN*-3H9{WO^KQUX56`^tTI=n%`IlqFS=y}CqFq>azfq02 zdSUBcioTw(T5IMyCQ0;rK@aO~g3}?}$jueEQ24z(^_VT(@#R4Osv80<(a}Mq$}Ovf z9gxf|x10?<_+!ah0HrqMS#J?DRYl{0bF|I97Iwpz4xx(^m;2*>qnGhY?W$jPW^-6e zS(mH(yswpolL$wD^h*Sp3+E<;Q=UmMMyCDX3B@P#iK`SvavX2X&1*be+zU=5`Dj$ZjbEH)Lek{^-Q6hfs~2GY*4fARUKi5XkB)p=*>BVsqQ3u0{owk; zhN80(_6ry5>S$eSPT{t3v)17??uBjNAMTvzl;02?J${7wFaxTwG$*g3y^A-_Vi{tk zTWb^eRDXJ~NT(GqOO>dtc9$>@#vqVn0^rBfK|A0Nh^W&i*H diff --git a/docs/images/logo256X256-opacity.png b/docs/images/logo256X256-opacity.png deleted file mode 100644 index 9e36e8c36380abcdb8b874fe3560fb9cbaa6d979..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19064 zcmdpe^;=Zm7w#E`lx~o21f;tLq?Ht;Q>42ahAwI86ckVzq+1XW36ahrB&2(2?)iN0 zbN`9^!#ro6HG9rEd!N15de^(&nOIGACEO=Zp8x=WtD-Fb8UP^RTL^%O4jzo%%dNo! zmaDRX2LNCb|M!9bIe8SI5yMkOO#x#K4IP)6)b=a0(Em&d`ku00p0+OTz?bR~WzdA< z37X`sJS^SqTs`evoB?7i1}4z{sfzosF$0P>DYx4qEa4XLYx-_-`n^r=61( zAcVxn0zbj}?-OkoYfm2wcPqfe_3^*q*#A4Zork5P1vu0lXzuxz1e!7bGwWHnJKH(i z06kP&(Vz|E|9;=g-O>uUcnshBf5YTloSdwjJ%P)SjBe0|{@*YiJ5NU|p#1O;8vxJ) zD)O>AzIg}vK7k}w4}&o6ChJMLC;vial$AeKW+i{k zC!g)xNR59t&?3>{B1ypuB}h$9E;tZ4yL*^RT^`*(bbKW|zkN^SV{@53pS>R_jX2WY zqKqOyc@mkLRVx<+kUX*4DMFX|$jmzhuzx^}dJ06Q_Gm(jG>Ite0g{&}a=7ppD(2-7 zO?E6CA>av1=*Ryb1|Nen|1g)FpFg^D;jdUT%jX|NR5D>pS+GsfXgF#s_%vg~mlvmx z7e~gJN(=!WFl8`9nN|9on+YqXIk3WHDs?&Q^tt-q@uzfkN&ort=fxcjl;yz!^J6!{ zwd~WU2o((t8*Odv*1vz>>6T4;7*=I$zu^E+nqj3+25ej>5v>1iKMP4DN15G}k&(=U z;7PcWq+&A2r!uP$>=%z(la5+9*a}|8=I7I_Pm~<|S?i1bry!(SgwBie?D=!6`uh5o z{e4Gi7MAqcy$g;4JrAy5uBhgi5IN>`5m>F-AH1VOl2t?`b98icV{&p*M?By3 z^Xo5uQ5Iq^Fqu?PBb1@?cvo@lu-$;zMWy3I$D$AnS>(nF9h4Ub8fAgmC&Qd-+n_)4 z!pEn%v$IoeuI<9cj^N=PNu(w;M%&%pJ?ri+P#6X?OHWDpGGl*XpJCAhv`gqO7bl*~7hArD4930d&H`9^g(MfaBh`C3Y!sRf9 z;G!j8zs5c1;CO9imGEchLd8DHEp~;$mnX%)3z;_X3wuT4Pe9NX=N;q?0IL~G*la@H zNk>`q)N!qe>JljAZthIzI>^a|yB@E~`ZM4`rhs+$-Q9$$n;Vv%re?W{n%bl*bxlTI zvCs4x1i`*{h3N5@xQkz~xefKY*NouNThTi{ee*<*GRmUp^%wa>7TuD%*@ZuU91-)@ z3zKJEHl52Act>enP$=3F(MP?0pP)k)RmO&u#z>Cu;^^u1>(&2j&}AxnaX>bB@X;oXzKtcMrP;N<<@lI-?q#inw|Ns9b3UQZRi< zHE>i6E9muAFD`DK0xtJIk~@7ULMM=`Z)nJli+j@5(js3rvE!A>EEWknF2)GM3O4_Q zOZKsImXn}hANfpmO^##lxo1e!nzZ-N6jED3`)Bh-4OyzorBVUj*wOeR6Y(N1$|3zR zZEfPtOD!i0e?RDSG83)nUCF?A_Khi$4LM02AIH8E2gfj8ieJiDy&&uw31;3lFJtah z7o-p@ZE7MrLn1;n0&p4OPh~zlNDFROh^W#tr6AXukUkZUv zN7a43MU{ga0eS{|o$UnH?%f>{I%89N$SRi zPF+>w{5QKv)&;9_z#bsvwfn>DeRqYW!qF(KLV~I&Z7<78d|XI*j=f|?B9ECOrOfPTqAjV<-f(BsLLg}j?`t_?Gt{*U4WyB``z?tM&4vF~L;dgdb zT>R(V3yLb6VV=i@kdzzKZ(ZaMJ@F>$f!r29v0=$sP};&tl8$CCChP~Jx12>}T4gwhjCqsZPQYF+9!a^ooP{@BA1G*y?Op|^XF0YB48 z6$piGKIv6V4N>KXFD%4niTDV!s(lSrEE(8Hg2j)GahD6(pP!%CwIlUk55IiXqLRi+ zN!)6(DjYQdC4l%+0;2#4zq7HJwuwoFUd07^`|=n{0pYmz>O(}#amhCqgQQKF7d|wW zwl9!u>&KDR%yP;1RD>w9Bo++|GMKV2?fHja#`D#+5owpHfA9bL^6&PxY>h@3JLc8; zubSHZuT&O|3qAFTST!^UC^!QjNVE36EfLL#;9OUeNO11h^fWTt;Ss*s^x%E)T6{-s zYVxixu<#3?wzs5qAdQN5c@Vz;C&kMVKvJsuapT za;@z0s{EMN!IAIZ?9#Lh4ROMIfkbUqe+^Vw8M!`&yN$w{FlD?AD*C`##Qeq_Wkzp- z6o!!HAlc`UY=JVH`y0YstWPKebjIW$q0V)mE66iryx z<6Afg6sPchz$d~5-dCc9l#$Yy<{0qOF}}zt6i!( zN%;NqoTE274hd$LS-&d@zUDw{p$wyECRQE;DpA8M`-?~f>C!t%9K7K_9OWc*psCiieHS*zt$=o#V$J!j>BB~TDMK32Kq)dE8akpsAySN#W9eG zF}J&7_P1}R^##VUr4T{QZu0MmTSiX?Y0w7yLX0*IA5DJa^n`b4b!I4P!cg^WvMPhC0ZY`n3mtu8z*&_r6>2;D!xYKXv|4}NAZ@r<1PuDrm{$dD#E|+>%-4pEg>kXu1MPeLuZO6qXJrTRtkviG} zbuN1|gnUQl`~V(YEcri2btZc*E?YJE`BT;iSq6k2ayr3p{$W4qd?hS1b|mGAiN*b* z$OW#I(IY~`ym_9c>QJ19Rh1&z&%?&zp>D9q{k!j{vNE~PuNB^$7sM3PN5Jn$UYglF8Q&h`N z=aG~hiH5!XvD%vvggPH}9p2skD~V-R;eDE*-+5#8O^{ADmEot<&R_`osw6(_h!VXP z8>PW+lDqGl9dUnHSl}zmjoP5^b&y0hnMH83l2y8Xr;>4UdTwNB=)Cif?+X?t{g2mI z_vi%Ew+GNeo+07mG!{`a7L|x;`*3EJq2b~F_mtYTR}pBUTUpuc92{ZlWza#lRZ;FH z*au=+g5%`@y5q5KScGATn+7Ih?p8ov?p?q(znf(J$ehi)CgU8ifNFzyw?d6!_s^$;!46UmSE%pWas5P(sF6#{!x?}+W zC3h4rcRGq$j;K`qOW*g%GhUxV#}Dc0j6y;}#bkG`gbIY6Qd0Vjy9%B@UNRN0!hB}U z9>x3$^d1Ao&!}5Q+^NME7F&aEJ%4&^kCArY>{hJJNM+$Doo5192RCQTA90K7>t9+5 zE~M^<(YXG7fc_|x_awAI?V1od77k@>;!jH!(yq1``9$%CrjZ0; zc6Rn5*`0prRVaZ1#4PYyNZR+2>6oLcA!SDUZcOBu%{S@Hr-pIm7fy6kl-$>;Z|~$x zOq|BIMvbBrN{Y^$VT~RWM3pDw3g4ghEVX)EfBJO(u3>(N9|x+pK}OFbjkt0BjUyYo z8ZOxM?3UZgAQZMHQQV0uoJ;fN*|RK(AR=|+4uZ3-QAIa5K2Px~?ep-o^;W|PU^_dDHhimfva6`~O`Yzkg>PR?HN zd4RiPgV*gX>7U8T;u$l#=ki)T5=R|LjfFL6gAU8f!7_rVN6Zr&}=lW-LNb zom8n_>O57epSIu3^UFSveX;+tSxp(r{*1EZV0V8qE)^BMi!mx`HE5JRdG$lwY>7R< z&av2?a7%v|QZv{krELs`OmB%wU8>Y`@ewI&R&|LB`H@@^Dg}keL?g#&-XF+ldQ4k; z`|sKsFnleNo(i3@v-s52O>E41B}pes)npYF{g)I1G^l-W7f!|`=*;&rM$N^l+BXpwt%E2rAWnXez$~(5e)+z90LtjRvQ;pRVI=Y zaOFQTgzcvHF|*xb5gd1#muq$T-Fn$)1gL~$@n}yIo@$p)t)EY-_qz>_%BiRjp5J_u zJ?O$F*CLtt?TV=ZJJT3^qLHFxaxBe@6T|%WHW7N0vs)+JulGjgwr_X(*=_J$%JgLo z_A_uLtU({O6r`c)6c54Q!D(K5p5x{7BMiBWcb^Skc8>n>R>9DagNz17*DZdgGg2T# zV_;yQ`DMzD>LAE%`S5n3d!_f#1O|OyvF1WxA?oS<&Ew!;{szPg7JD;=8z1##EO&R5 zZ?6v9rO>z_ywPnX5q$7}lVxt`av3X*O}se2a0tYKtGzL8esk7$z33xkADj`7_xDxT z!XSFII9W#%J<}^IuC7LZ_Uzf=qEj?+F}pdU>)!XUm3)n2L0ZRkuCd)z!a=u@)FOs! zxE%5+DEO$;*1SEWZB&4LWRl4EZ*A^*T zw{j$C`%A4<tpxY2LWt{dAx#$uo^Iv2f_8--Rz9Mb~UvWEV)ah^i$ z(MA|?{UA60FQ&AmCFV<(W|f3zc{()DF1Y;p z@>-YVHnin+k*3DAJ|mY4C)_%ivhth=cY-Y#PM%o||Khw@ULNJ5K#x#f`JQC(Dk%Bj zT?Ef;6^5wNe)jWKQ8Iy2je+a!!h|$+!-%CN>gHo5qC}j*h>*JtQcoYDL6vi41h}jE z+T!Afuz?>;hu{032Lo4Emy2%STIXkpBSMg~#co zNA+QYJ-fhf*dFe$`Ya(2j^MLg7X5Fw5O?=_rBBBum|<|W+@{q8k;jCVxCd?uyaT00 zv34mlBYk~(YVj$G3N9J6!O1{TVD9mH`|7fFyC||`bNu>q+|kY1V2lvFxR?>-Q8-NW ze4?3d0@TP4hJm~n7{+lIyHEB*+-AD(v*0#j1o*N6AD9ktF-osjZW#`>0>H>O@aOZk zeNo|DB<>kglTMglCi zvPX4d-pI*|?VsS)K^Es>XTrIPJYV5;VafiITId;bB835TWC}-+-hLPA~Im9`{ZLg@hrO3Za94 zsmMMgQN@4G%!_Xr6NiGyVAb!<3rsp!`Nx6+TFH}s58hnybe#D&$3#TZ&z)>$?$ue3D(w_b@)xZA z{ZjAW4~`XYlf6oAvlg9|r-7 zN|=&mev%BSl0VCY@ro#VH54<&TsZsV?4DaM+V<)&XXby=&#;P&TBHNxI3k=qZs+iD zU~>G9ILsV1>(fW+PpiB*@)HB!8oeF9R%VZ7>>J;Ue%x{i={v-wLf46+ z=y4ArDTeW);F^Drcp@ytq+!Wt)Z<<$cUS)cm*fOPcM`B%-^N~VobSV^eH_dCm^ zULn0lvOyXVa`f;GhOAiDKyt7!I9RATo-Zqe7L+V*(2^xY8%?LNC9DxXgk>A*BFM$}b_>Ct*OZ z^FUVJX3Nbkr|YGG4LzsBhXD6cc?A*$Pj7Egwp(84h^z8rJ}=k%prFbhjCLS3vTxyu z#aa@=!6PD{dVE-K1%lMPj`urd# zFVC15uKDLw=gMw>?l`mCd^Xbz&-TjWo3%potcAQuXd0{9I*_kOfa*$3{-SePLkH=I z?MmiDio+WG0?3_yBJ;hNm~4H3D#LPX=*Z0gQ1dhDJswSH$C?$}?-E_sg!L z?w|5`p8wR6&4%#03SR!a^k{ON4@){~!?yQD>~8m8-m)u(m`6~`7#fOq`x^Y68uHe=veAKNmkY3EiNy|nKeOni*Dx$q@<@~C2EImL?NnL>p)Mv+lD#Rp0v9F z)}o3bqAsMu0-Zs+YIb&C8o_>srVu=`B+2aZQnB}KuSBK^di?zUn;xe7q|2=E6e}RY zb$4Y&I?65a&O;Y4eu8U`qDk*N?v2u;eO!MSgmybEKEU3NkpWSD>J$SfGtoE7L!mx zgf%r4@n*aW6Att((^I1B#%I^f%L}1PYinXCg%={y_ML5e{#!lK!JAw8U;?G{q@N8> zl-@&J^9-jaCkHQ^w=h)xZ7!fJ?cE}-h+#1$`Jn_%U;=Xk-E8fAQX{N4S#sZIBUUJk zeid;P9OJYoY;mO&LQd4yb^`+U^nIRgM<3iL{5=!X+vF4WKNiVNA`&ymTDf7f?o&7S zL6n5gUt11*;A3r2v#Oh0-F?i&grqPd8#ZF)^TJq?nNecTyV=H&^6ru>LycTw7=#y@ z9`{iB3G^4Jc_FVb?<%}D66PMzEseDkZGYkt+Stg1!S$!-7oX*?Ch*TqP|pD zTer2fy(W~u18PrB2J1YQ#lagOZwiph+k=rPMnJ%dy1~RGh~uZ+u`@9yy|0TF22qEG zSRMYeXXtk)N!^2%Nz(5@NDLA`Ij5X5B&c_{2s-myo?J+)k#W>>u0&cVO9%ViDZ0R8 zS${)A!{5@QrF6kPWwa&tfmOd-sngoJ;|aCUlwZEw%E`%<+PZ_%r>)$U9@934)YyNA zTOk2PEI3vg+j!4C5)s+zVIx;E@rNup5=_Pe1B#OEy9)2icQi2JraEubegq+x(_ZW7 zkO`@pT(pI-6W?rO!9X+!7+p8<2lgQ8}M9}o>N z&oK2Db8f%z{|~Z#evSLC7G7rjnkZ>YOQyuY3sU#((Qs*4h;pJV3EI>wU5@~m7nnY6VG$7HM0s*` z-}oCh?z_LU*=Dzg-rR&@)c&h#{(E?OCJ5P+;!Aw!!Q_RHjHs5jwxO}cV-FLY}J0*LmncMN;RZq`vQ*EhHfruJ-yauCA@Kd)``-dSPj17 z=}f%8^}$J641&ta1Je@ z{8z0A{KE$w=a8V>_6NF@RVfA(Kw`|mo%YbcPvYgPR~yosBDCTW1EAyfHm|(ci^Aol zN;oV})zU?mQ~8-pow-M7#?x^n4qs)Ab%>$lNXP4LKYe#0d8IkC!n!WsB(0` z;Xs%Z`cfJ}^Z&E}QF5Q!FaQE#clXniXxLITSZm^n=Sv?NUMs|-Rqf4uT+8?QUGM!| z+~*(+buj5ml#d`G@a{v#+wZ5Fa_*I3^ybJzsjF?6Szm3!!&rI9{HEU8fZK!l^ z?q0OnxsT%g*Vr`I?R=57PsAE<(;ECQkSu~QBu_g|`%JZ$$j#4~6|I?xFe!Gg5c0km zU~9avW}&hD*-x;rGG~;;wRwENV#^DIJzgW(d3cg?Z@M;z2nD;4w0IroLC51GYj(Sp$QIt3M6nc=551tqCP`Z3#Ai;p2n^zzrv<#y;1;#jop7* z>HCd44gDIWI$i6KCz)vTe!gqwkEM3hjc*xn3-|A=S(V~ppA{$T={Itr>1R5MCP1l} z{;!rHe*XNT&pgM4tsk!^s;%uy%k|b{p9c!y5ziyx-qvsqWoIA44;ULr2zd~YHmO75z(7=RbVZQc! z8>(y56OLcq|K}CAYx|w1>-k=d*5loo=-rqEueT>WQtqm&Icj+N=-vvzfyeqR@iF%~ znM^!>&NLfLVZvCKxRIy`iTcZx=P?%9a(5c9Wu$%J{D{Rye76R|)DV{rLP=_aEZABA zMf2tu#mX^pjD;02NE=XTzdfc1c7YNrS2R??dNBd^@DGybwe{t6?v_zZxm z<`-PijrSfW?FjB4=l`^qI;GciAt8bLe3jSTkI?9cQoGh~hz%bSh-b7P8KHn9j``_d zmCDgEszhorB7@FC3N1r%ypYFRGq993E}!0&b^3R-Qjc~~p||ndp{93k;R*VwT`+xU z`wH|Fy%$p6b$dvWFKf;m3-+v5>BhUmnwp}n;vXVL=O*(OWvO| zWr=$|ncDqrE0al7M8MtxID|Ggojvm z84{W#WbkIX2!UQ&5J3+^VAz*QYxDW~Uv7V5ceK)AgzZ|@T|-FkH5a!bd$=CpBmY4^+&$s2&rOD-=QTaD%(qNNe z@avnTk8N#FIMT&Smjj!cgsF`?pZ>QF1vmaaIY(_%A4;!2>OcXd<&gb(8z#%)54Ht~ zZ$VZQNfiRRaCbCA$WXLWe@$g2SVfbs>UE2gqM@OwuPJT+dHh#5c#I(U6O7-O>zvff z)%}rZ7M&ODnx>_sR3MsN%EVKLV1C1@mHwAnAYdENx!a0Drw%+6qtfj}&pYw zQs~4L4z53cY;U|5P*;%cwMDkv+df=U=~nlXBbT7G44?0-H@g<2L@#^@o6&h4W>l*` ze;zmIzl_WTmtVC&lDI-wDsFgqE(X!!Kz@0@$zvP%k40aN^_W6*^^M)Hpq3-ZAmE;$ z8;{kDpk1SkjAmBZ`FGe$9P)@UvQ^znbEd%zSOfN|xzbQ_6JKt1F)Kch#EbXu_X*68 z7|-At9AGQd5d^zU^TF5*atp`XD#lM`3=E#7`lE7QWH@6zG`Et1;93f!yJa3P9sJ4bnO@p>#9EgS0n zk>uRHZi8cT-k0ph)cD-!;cci5ln&gjsIcyb8#tC!*c4JKbAu6FgUtV&@$17$*|L94 zcjaqkI*@H#o427;c=N{dhl`jeCI)Q)4(_-l)WfHF|DgFJxciOEk63`VzwdN#CbB|Q zQh!fQhHvY3qiXRE2;UI*@U@5HQf8NcKw@wskHyAf;QR|%s-O-2IMmwPn$hj>S@D}g zUT+_cjcTf{v^sYA5tLp(iEI&ogB?VVDknub7Y(1CFEGAh`}KE~hNR2ru%B;xAEN0L z?-38^uauO2S4+}+*8OrS`P&H;tq*g4ar@_w zd!ERPmGF+N34t25t zIN8}0KKB=E`Nk0~#g7eOjn&>Max+ml2hs06K_AHxqqE8Pda5qE<_l^m#FShIg5S=R zUhJJb_-%jO`^_-VhD5!^m6G1;^utuTyJo7!q35ZQ>2%xhHW~7R)zM2x&}m3t>w(x* zjAQ+1p%xOLS1rHCRtQkA-^naX_O3)XBrHX;pil%%zxlnj73J$aAq%d@#k4=T9&9m& z=RQ6gu@pjIfp`sLILJKFfSjU&q9VF)0md)IW(5RY05~l=6aQyiK|%FM+beF2tEy2E zqPK|$6H!V_6g{8>re%!VDD@}F+X`4+Z*pGLAl)PJ*0==g`Zt98G5zIo2n?^r6jzp{ zlXV%B#s61&yeHK-k_i5H-|>Ct&2I8I-_w}lnCfb7$?K`J+QnPOqz8Gp+?C3VOOQXyKo$Mwc_`oc(LQ8MjOWSTffa zvvT?Ar0dy=7+}49!dAF3slil!ON>=5D`8+z;&<$`eIja6nONxJedmi*hacr>6u{@gMDB!x;Uc9dj1 zrZJQ1QiNb{j9!3=IPYvA?_*9})xV0G;}e(Q@I)vE`iMEf*pWQ2h#S%Gw0rb+2$x<& z#O!`~fQCW%j?!%_`<3hCJ?Gr{`TJVM0Gi+}%Kh$J=PV;b^d)oZ*yBy zshrL1{`zF_WLiz6*ShX1zXA3E5o<*e%R7>+c1rj}&K>|IJr)7}{mcztG_G-ApYR22 zMhEF0Tt({Z`Q^yE?Y7nTTOa(tRU1Ijp=DF(#cYAIHWQVM1i*$~B_M%{e+^JigpB5B zob(|PvS5hAO6(O!5zG-(%@rmt%X3FblyIgU{x$gBoVP^*Hid6U_?)b=``Y^Me9qDo z=^}qBp#ty^yeG^&oENb5xK;X|{1k3lSiIcf7k?^oA4B=siu7uc2_GcCFeT|0-lZjg z8SkD`w`XB`QyN589zDOa!t#f{WzRS1zrt><>=*X*320^%( z$JX)1g_BCLtsdEZEbg-}l)is!@Qa(87Uq}B_S?B`k(S8D+2V_PWTzn#a!ohqBQ{g` zj1O~mI~`vd(>jJ$mobh}`hFkVajAt6j!v%&c=Nue{qf_o{sNPwTz`QqJRzK76RAv;c9@ zozGjyyEktpaOepX6h40)HM;!Q5hOss%GG(^+;X*kmPf9C9K-lDVJ>7N!8UOBS+`eE z&#ltA3Em~;-G>BSVHwHc-Pf;q*FHw07wpjY^5QHkEb!UuuvWJ}SdZigLDTl^Q*tw* zjfNZQN6~GjM@iNB5+|ES!O>A(d+6s!N_##iK!RepRvN1o^jOL3LOz4Q>9vm@TN&34 za_vfi&2n>Dq|aPgS1?_B{N`e=!I849*%^0XXxs1-=_e?F#-hkX?#2vkICs^#nJ3eYv)|`d@Nm%|mYJM#-8#u3%;cmhKO-ZjfV-6J z?5c;ub~C{^Yb1;HhfIxrI=U{5)-fe-w32@*O0|zoi}c_l^$Mb|)ejG%t5{=&93x@_fpwI{1`N|gN zRtPrIxT8-4ySw%V@sZO;T&1hHA^muA?&1&UWeCgf5phN9+KG*KwIxcf=e~Qc4 zzQFVH<6S^!2K;OaaixVwNj9k;t}H9Nx1N4GSP)w6eHSWEV;AmpIrZgoC$D#vw;Vk= zBjd~b@#y$&(L|v#z`WGBPDb5*JXe$u+|(Cc=QP21zCTCkZ9+%LJ-9A_l^81>pUH!v zKzUg}d)MO568x}dMx*`NFOckIkTiApD)4tSM*&wR@r!n;YyPr#XZ@gGuIq#g_m9t+ zrl?-Wim(b02HC8%i{u{_W>doJ+k$I1KaPO+i)K@p@b@c+W|+s-M$*Z_#catzrdd%K z@<);2ZuI2UV2{?L#>-bs*>B$T4Fl*^;ktz%ip6}7YdL(+MJ!JL8tA)iCxC<|mhhh% za+&Dh@2I)VaYWF;q_u3$D{iL#P4n9{Bi+}+bKXGF>k7WDrbQX7_n)h9sWP7Tg^=?o z4)S!jU|gc!-l7NaAdRjAcpyVxt4PyM&!W|!^t{THJ)m5yrF6@*lYI_FDder3{Vu!Y z`R`?RZVr_3+bZNMS4qu@d-*qbwM0p0v5M#TP1Neb^m@9^5`;28(a3vvh zT#ZLk6obZ*AKw9z@FjzW^_v+pv9|?~kvy?92g#++OsVi5uMlF8-9+PV-+zJZA)<5y z+Ey`>O$k7yPE-oT3w?Uu<>iJEa~o*2Rmd$NgoMZBNsylyyR@p&-H7${@Q7LW2EVi3K<} zFko+8i-NFaBr6kLN+YS8mOSwN@#tueQA?Gz?`(CT^1!na#gy+q;yV{UMPc&^zzrI# z(UKl`*Ya4%QQLl&k;@dWA2Iho;P%Zy%EJ}BXWR6fNh4nC0-Ax#UYgr~aYUQtOAab( zYOlv6CcZh-=+pnr_DAOgHN7N--Z^S%1=5brkV|H3^d7gTY95m*zy#v`$%cdLY+P<~ zP7bS2ng%}g1WbooBQC;yA|NAHkm}e(*Pe(7kPDW65^Y;N?%V6T3N(QL^|HzoS1T3$ z;MuRWcK}diZJ=u06{xQmLa&I<3wBx$l`AGf&e<3RbC{QW5Hu7L-tUb&yQvcWLxyH_lX|OuN#NV^g%V5r?3ArIwJvflPJrDgj4xj>l zX>6~uy}YIX$q8GWoPmL$j>j)uTrIm_H$_kSH-ZMQiADSAF12;6i5P&bu{SNS6Y z>)LwAw$rDf?)4|F+D}geJ8n3dmVM~Nz4woEa>pZId7flI2ms4*7~(tcNUg)Y51|({ zOW5h@toPKXv^%v6h4)!f+xo@<2S-Jd|0MVBQ4^&fVwOJuti10N86p^@3nO!JeKTUc zg=K&b)%pN!A$|ghrPtI%=G<;RVFtH3r1||7JY8c(BJ?5 zo5MZF{Emj>e>m*usGX*@wY5MlsDw2b$a6ZZ%h+cUej-j3Xs|qI!z|gO6{XR`Vzf?W=Z-HElzUU zSqhT9z6uTCj!uQlK|VY;<$9-<&F@I{Xe>Vp z*xP?KXgB%XFh9aSfr!h?dt0gR#w1zrm#LTV+A`w>AC4tz^3&>`%^8J;Dmdt|$Yq&4 zwOpF#jt2*GkH~II1hGcZxEQAg{Tj6H6{64X?-{ZHsu?t?#_Icc*OyvODdX>7YQKS$ zu-dxuxJz*Eyb#|GeBdxA=*I`-Q%B4VpiC;pk13)tx{ER`iVOfnqc0!7y0}VjHV#ij z0quVbPXL`Cs#G*ys9cB%*TP$zG6)aRWF3@U@=%oTXwEV^=muZ@=YMK10ei2nV{e6r zL9(K`TqQrX&-+7!@#czT6`PQ#$xkx+o zC1d4EihQ#uQlFKWZ&QND)G*t1A378U>sm*mJSWIU`QTQsiE`E$z2CDU+z-c&Z>KnC*nTyCC z>3u9JFV|tmh9X$-hw6PnH@Sl|VPBbk-c7?)@i>d#}n;1IGz(p6SVbgHpMES6O07_t73R*hn>y%P@Xi4SN-U`{+`m0zb@r+9$=l= z#9#yeZC=2k!EbvnImTe}$$jrLq+|_SaXFsI>8~p6viF$uk0RZ&uhrBrZ3xWtb93Ex zuD9J*vu%C{toFbs0@j`wJLmfT1RQ~{++A}8LQV@Yu@5p4#9<^Pe+7gkzU9;8=gs!e zy_KDx;{d^r;-}J56$dch^PjX^WSR1g0J$jCu=*qakj)p%V+}ZvB6W4eiF_Xp(bcOy z9kV1Fk>v;;2m9KC%S8)m*B+_c>TSQ9fF$~(a3{LmTXRI&c_(U5az@lbI%fdi_ZW64 zD8AjgoNc!4T&GR}qWa<_oMk|Li|44&tf%zNPKlhfp?%J>^Q~!>Fk!n14|x@2Q_I9T zKb0Q^{vC0Tw~(4jkQ8kDZ?O)F@%Z2)*mcFo1!^+~_n;{Xf6W*1-=Nc@l(*h{zj|%4 zR-1RuL_kOhguV>;tDHNo22xT6{L+P_oNDx`X5Ri3YN zEEML@c|Epp9yBd8$>by2Pm=Ug3Snd*fyLB%*tXYR;J^FDmk3rm@AwDb(5Z$w?n^bg ztQhfev#I*|%LYt{%uieqnfzR;tqFWQke5h7uJnCmE9{@pfJI`qFa@(S;^~f=$r%X> zz?B;?uo9!X|0Tgz2JIUA+`lK8M>qi;FUy?m<~L4?@KK^HT=%MGRmLUHbdcH_Qly#x z{^-R2I1ksYNUzjIYL|S_#riw*>?Z{?5VijHed2~vAeM=VZSa8*wf~Ksr_%~f&&jX) znCfGb&0?Cy@B@*&eOWLZUQ9Rbi+Oy{&a&1g$bhKk=nP&`#_AFsm`;TBp0Fvm`#k}PUY#!BM@}OXV`*UfzKW)(Y zL`yf!|LZizL(#-}n8j->2B@?i(RF$?6YzQf}zUqj;CADc3BQH29&+MkQj{J zy1(7qT$o%ZV~mr+8Lx<;KTZ)uZ=310=|rUu8l!$!;GwRQC}OM{a9Ok&N&frv^w&;B z4aRS?Zj53ckb$TZj?t%xrjhyilPx~IdFf9iDm^olor}v{F^PNH+smuYTpvzg`%V0{ zZpLi0_km3x_nRF1=2x(Con`YZ9D?sdu@suL*Cu;XvzrKi&MbzOB8chLxx(94wg(%|d9N z^K`&ho*U8k68;OKx-=gABH!a~RbrwLV=YYI98`NB2k3~?Sa;vK*9ePOwl;H064|YB~boiry*%EoFf&` zKYJ^s

A~O;`RHwqyB;$4l*Ns=&b!_uee{x>YIzLsVb2(J&x*%HD7M1R}FD53I(p ziftEQ_nrTnfNA1`1WCz-+2f17ikjl1?LrLs0GWsHV2M;!pOO);DE#rAnfL#onr@rt zznH_*G`Tv+r_Wa9!B=k0C3{IR>~tan3zL(4j)wQ73@Z7R>Y2~7M@{9H(`S$-RyzJt zPY$~zSfkmWChXjtYg7BJp?LF69!7QM~O=%FLc<5 z2o%tHtyL-0a&k(9a^K?spFV$%pPzp=z%x@#qlL?&?I>LDba$nGo5Do-!UqZORx2t; zAUIIocb&ep{q?KF-?0-Bl2r0|L!S6>i{L$2+wKU7-I5xa1@8W`9H?RNM2|$%u0pl`hFD~q@3r}136^c_$S6nsN zV?5Y(FS~j$Je8VNuoTOfhcDTre83*0mj|Nm0{OR>eIzb^{9xiwe#TM``MbGQr>3SP z1V_zZk$D;C{@!6WSeWtX{pqK}9j)7$^>w@eZSAPN%QcyQ-Ka8VhH-hk&Q}a!@D-PC zh1*=0;1c z@qYjEdOzOp$LsYRk$F&{JFJ;X$?%oUg@=`x@z$svc?~a>m*B^25t4OvYNK`T`Wn4q z0hGusX&dG6gRg&JbBbYT9YRv= zqCqkDt$>^wcv0=ACdQkvx#{Fr#w=~C5N=5!`&cT9N~Jca#p3QrAr8gDhfWT8a~#gt zC$Jb3Uh(IUu^*o&2@-0>wkUT671|ET0Eh{RMS7_rJytAmb_xsYGv6CL&Hzb0VeRZh z{rcrItr71wI^yKaCy}Of1(ppoU7Q-BN{oO*c+{yTbs{x{eNuMw2b2-mPt==;| ze69!+zaJ%HU?9Ed?4)co9&*ngg@S7r}dDY&XTy%Ee4Rmh&N@@1~8Px;C{2{E${E>MA0qP z_ji9lN24>i3McjT(X8<{+{I`@%_gHlvTbCsw>l@MsWBxbsl9PH_x@aTR=|ad&D|NM z`0$$vJZK2b2a4_JqTyHKg6ra^?$9hR)Uk1i#(%QorjKq=rXYkk-|pz<^UFPnP< zV~Doiy5_Rf^2Z19s=H10YW7N8+`c!4SU~bed!B&yBpP&!CulV_?G4-8jnA1Jmesst zxxj&zN;&sW^_rQp*kiB1_wLcrT;mQ=#LTRKH&efte~Jh^GL|wk?J?OOnv%oz-1_!L ztsq1g>{1?(h7BAie6lF_cAf&dd9SHs1j!Ce_rsRkE_SR&!^c+1&kbO5mur<&)FRUlIN+VA)w| zljQx`<|jdnfPnG`zstJ~womS!p{e*VQ#BA-Q$8NGuc@!k%oG)~$T3nd8nQ3==?{YK z;G*OPU28twbnWvAQk@6R$GM|c7fA4DvCl`o;821dUs+zBC(k3nMm(G82vl+OB5J53WtG#YdT`LWB=>@im=DE%O>n&;q5s<^ zGI9axvC~4b)MBav0;izkWazQg#hcJm@A>BZW6{rkRHc46Ol@@)v2NMeGiZAsR62fnjG?fG)QTXbRY-bT4|o0qyr!|t6S8GpYc=N5Po5d+IZ z##9y2dJHnu?-Vp43&4XUYwq)K7Q90-YOT5J1tdpXac?KL*F@sC=!Ze{53X%FXh#~YyXM8|YAP;9c{^fuw*nCdwd zB#u;X5xMDaYR{jBnF06&bt5Iq>aVfePNmU&pKQjQQ8Cok3$5mG3oIej%0oe+u1os0 zHzSQZ86kBIRdaDRAOP1g4Nc`rm>q?UJ z?khLvmg?cM@CD^4_YxmCG7S8w zk$Ef{Br_$Sjz=on#b{_Rk66CL%r<#&qd2UC&mpzB!&c} zvuM|nK(RiOmz9uJ5@m%b_bTM^8@0Mw4tgka7z+CB1I7S^D;C>go~06PAE z9}tj{MFIe58Xsk4H8t(QpTX|-U>6!?Sy>tvH?Zx;Pc{JXZ7EyZPDlHINc?u~N=7vt z@?91Do)CrRy-XB@Ac2XE78OS&oHqY2p;i~JygUN=U|u+UY%C<2P>UTS5^WKAo33J6@bRz z0^p$3eV}!JrUwCceqv&8=sJ=bgO}HFj zFA9`T=tar{2HXIFt!l3@u*d;$E9=`T0o6@F=Qs{}Er5anaBGE!umT9)fW;s^{Wl;u z9UxG+&=)&@Q;D<32Aiq$TCrvZVfg@K6b@HpeSJ$eD#ynKVjHo{ISxCJUg@l?wqAB7%3P!XVB@pj)C)UT9T`Lv z3F7opz<7dSZ-$=t6J0I9M<=JvFkSP z)PMeT?M68lZ@9x86N^rS_9zA`vy%YGpT0@u>;@^@(zZu25R<7<}&Byaj-Z z7I4=r3kp2MK4@dYT0x&nZi90RA$aGm4;3INFE1+Z01lV5d_uy-O+ zbRn*Ep+8v&1j{h=cFW+%pnZT)xLL542gprjnLYMWoP_KEcjrC{GGFf}ZqEK5nHnK>)FkVX8oF|fvVO8^y>j@Lh->SK z8V>}#0QpW-0R#^j8cQl^B?C1B^+ly(8VZKDxJ#&lsPMsB-OO}J#j5p8e{k=6NvwEz z!VHwy>F4p{@VRij!)1E~8So-xd6}Ez;goBB=uG2HD@;4Tr$1mX$$YCsMxQja^ue(f zS@=6U&6~lH?dtZQ2WCv}`LW*B^Jd%UTl&~%viT4u z45KBhBr_$GvvKK^l>RDRD@E76)E&`@D>2jdtyIwE)7~mUolPmzEzQI>q!3aGklIfGVD?7(UAS2l~-fF)!I*kZcSSEjh)sJvn=#W0Dmu2&DdX`uWT)8 z&y+1u;-w||!m@lSeEN0oFTdMLB5$R+-erAON8Mv7O1<=pTq8JT-DD;I^;WH!$Hv65 zG$l2~piHSut4#5zO`!6)DEn8Ne2d{@0G9NC3bP5bqFvlLV)mZ)U+vW*v?8K+;v(0T zoTZLG$@5#}JUX0UNKCX$s_zcp zon*X!*Zhn1m#CVk+Q8W8Si#tQI)A1(&jRmW=3eGPCbY@I=$jFHV{zke8|B(l7-oD;VcnDq4zgi<;Gw)XQ?_?Ru)u8;2T8nn3drp$tl6?R8#ypE7V}||3Dx)-_^mDIwBM{LOS<4vDI+674yGl9WvNM># znONl8YQ!I5?fsaoojIduM{L*Z9&{NV6`>k9!kH?;nMvNiI@q?Y^7-1;bi-@zKKIFB8wt1EEr~5L!8P7BL-SF=&Zfbp5se;jj(G@F)}Q|M!>iZp6i@_V z1lhqy1V{%M!#&=4`OtR6N{TGo+|>R(mX6MAmL`;r3#8hZ$AN&_zL3_KGHl8s4 z5i3N~Z-0Ig*>cx1s>ct5IV3DZKU6Z-CES2)iYJxdV`@d#9V+)Amm;^8X~&}>T*aZn z&n8jI=^(Zw_~-2($$m~-!_hf|Yy;&_suaSUY?T7epW2~M$CqK7*_-HF-o$BKgQhN? z`QzPJAw@(boOtXaDN<_T>O$Yoq;c4aiJ}=V@I4q~(LB2;yY1+>rUa(K7iCS@sMIf% z*xq?1{!3`(_hjhf`^mo39L!u2->QbGwwfuDLzMBA#)(&4q>U#iF(KYnrj+(wQls6W z-LCD|k#d`m+Lu1(s3tC|WaJ^oy7+QLLk_e?nP2-lMl1_#$hCGh`nDZo5yQeMWjSxg zjz{Z;m*WMqPIF(6@w)Lg5*vSps_Ju48tk@}I|$c`xq2?6Z4n~A3DrX?7yBLA$mTSs zQFg4KTItuuX+ zCG=lpS^2g@9tIxnNMHG0UsBfF{9(d&+V)^~jU&exE2T7bHxD30yg*)e|6LRm?o45bwmW^9) zpCyLcmvuq9@8)dhY#x;#>ux10BT5hMQXZX5E7YA_j|bqV;h&M|u^JbeXXhxV#dY4t z&A&NP#2TP(f5|@e;J_5X)Q!pN-=ueu^V~kTMTOo{VTvq$jrK0zK%SxgN@+*QOo$+XFW&B5DRAOrWaLwyUahV!B>#dlfr^=t|Gnm^&SQJ`{UNn$Z|& z$!f`{Y&LOhKJjX6@V31@AkPsTU%hJcJSTdcpUV*zUv0be0^j!CUPFmi{oI(J$46TJ zdN7| zJ<1W15EkB)bbCH{Dw3V}Fu{~V{8I2TQb|n2<##uCv@kxEHkF@xk($)ur{duM(|QC5P>zooN~*3qeclhQ!zXVDW_P-$bjfJB62px0TsSVNjQZnNB>n5DIFy?L?i^z(9qZb0s;aZ0Cra~pb5J`u>1a>-S~eG(aIw5^Z~Ai`%0fQ z&0@4E)$&^o@<^>(>g}IE0H6(4N<@&x3E$zD@mINZL4{BNp=Pb2b|^Jm0KxNeVbait z=-k}E+e__XUAE+0m7h8#Ixir!klc(t;Sdu}Y)uw|E{cIi9*iD73=%6MU|zhI+o=|9s z@WC&VQO$~(0W>s}PHg}VJnbatM+nX|gYx?jnzYCmg&x*ybq|#?Ct+Q4bN%<)+Q!SX zv&Az9SAi^%c-JHkcQkaSCU9hMSDxJ?GBPr=8yg!u2?+^7@bE!yI&8XF6C*Q*DG`iP zIJ6ewa_kIDMDEV{Ux>SN?=?IwJP1J32a5tb7VNLqo!s^`!C80+Gk$ID*HVsUHwI2l z$LFP`rNjOG{dyI8j)@Ehf!nUGuDE0|Ok84On-s~z{$xGXq_%IsOg_wsA{+h2%szIi z(A7TX)ro~;A#ym2olDABsvhoj1HB2?e_C2^{fxA=ujdYCisE$j^cqPpkSuAu5n;RS zPr#n11TU{la$4GVGU{9xbxqB)PqAByD#0v_$_{ZGEyjk%t}T@BJsLJwt$g*v!N+%% z!A(@}>nVG9W0|15AeB8E_&D7|Sn%n>JFGY1*&1K7}EyN}ev=i)8n>`Q_}z@RBxR<8;8L z;Hka7{?0;K`D2iJ5jnRR2$m?$#3mfyX5?L6U1?2C)##59`t9LI1lKp;QEuI+^Y{?o zu99smD=iLfHnl+`(t3xFoN}vu)=FLKS*1M|)(+1pW52La5ov^3k_>LwdNpT39p2Xa z85kMWKF^jE9PaKCY5Nnyu>p2G+it?t#KgpDSy@@+u!*UV$!}FlRDv)l&u?8fE+`Sx ziQ<4B|9UwFPS1%f53+u~6U7oo4;xrILtEjj_V_pvkks?QCFm)+^kj#jfx+1kY&FSZ6q2M6A!t(ONaVP<`J;n_gKBDOMtPdW zmGKO$KPrg&ooiy~7naOIJB8b8J})uW>E~$&<9xEzh z9Al{^zvh*fw-P=VKc%5{{sk%gd_OcjGh>a6NhZcc!@Vz{%rImc0bURhRauJ5Cxql2Y`kf8sHt~yK!dM!44zh}4;L6y6g zS?67i*u_-V|Kej{%LZ`f;v;~Pb-yG%5nOD1{7C9ZM@OeeDe}2EucV{|Ize=`-}#dY zve#kx?b~m2v$g6PSJ(46oNm|{ryAHqjVo&@7gicD+I%lW+++E)V;UngL`I46$m!g7 zm&DN}mtvC`F296?ARS*_TIWi*ZZ2XMsb@RW246L=0M`Ig-bij*G3w~hPzyH$!#`AM z9Q-kDgB#v!_3v{=rUj1K_3HTT_@0#1N0r{rk7D}-XwBQSLU+c&I66A>vF}U1AI%`! zv{O(})ZR?y%kC%?YULGv_W~pWOgQ)W`1q`mv8mjO)J{B7Sx{8GZK~CA*G^`$j%Gf^ zMuD@0`%zE33CoUIwxC+<$DXvN@@NnS6$=9*9-fU%X^dB~Z)fY!>+9?Oc09aEhIIgU ztg}VJ)^A8)r@y@eqsA;MVJubj{ks)!c+ zwdODI)jP>RJOfLS#%V!? zAx#Y~T7mvsj^g`7B-Ha76japiMyHN~@>Z{6y)rY=4@&d+FE6Drig8qq2$N-X2r+G< zU!MUCP<1LA#M@$PYisWQ{@(rhIVgvh>|M=xWyCGZ*ITXR?4z2F+e>)8ON6fyZzAcU ziB!2#hj8)9LsnKksbvUZ^@Q$7<;Pp^3=3+RLxE^HmG z2hN1W9=SYt?5;nL8Z_Z_(Ma?tv?v&8o$Fm62dOe5aOp#7Mc?4Ny7Fk2Jkg@T`8^#F z`#k(5s;02Zp|k*k)&{ACjjp5|RD3@B`Mo50-=2ui84q=lMLka3`iS9y)0UNNdt zLpcI{d}6}<4{Rh!3WZa%-0si0YwK$-OGP<0b#HGE+5#KRmN*Ao zZ+GWi4rPA{;EcdMy_Bf~d_sI;AF;EulgAz(^itza$duRGPw_cAwDQ127RxYlXRADo zScK}mA5XScPQ7cd`)Makq@}enI5gCMcV5Ut=TDM|$FGT8+;z!Y&AuFS<%9#vG0B7m zP0sWf3iRLo{PYkyeK0W~Tg>XYsTp_^aTLN<=ehnbo}(7~hPW)J_xVqF5LrN76XcTf zWTK~MyS?6(9!G|`IactKKh^z5gTA}Q3KnL${@=fJ*;}nad$bTf!{?Jdp{+G|+yvag ziHW`+5!O7P3^?)lQP1?tmO0uASwG64s4>yE-)%bnTWKJMO^H?J5%i}maO^Y)*&5Io zQ+hYknwFdU>fhpVDzTPCHyKIAp^}DTApp4-XfrWFp3HuQrNk~z&z@AWciR#}8x$Sa z8BaMSjYkhnVrMv6>if+y-!A<{`>$|uEeFTO`g>8WdEB;L7?_!5D)fT3vgmyk)6|$? zcz*rR@il-xELL`-XkXpO;0-Swjy&qej~U?EmzB-cmRGSUZ8{vRb=$NitBV>O7vL*A z3Md|_6Jb&W2(#=^C`26{A8-C^Pv?Qo1X?9N`n>?mw7mJ(YSCbd%WQXnX`0hya|)v2 zrK4zWHcYdiZ4>^5?XonzT>GL>2s-tzCPl`k2z_s({Pd;Gmi&>P8zZPtG0N5kL;d0Q zY@;Xj-&$Ky9dq!U#XpmAojhc!s%Two;s!lx;_SN@DSCr?4@vz~N zrap}Sd6P`S`vHgP9YxfTHWQ8epaqP3NHHaOCSOs~Ml$_d_6JVeAOFK$qoRxrGi^aA zpUvGZIo`&jbhY~`g2{#1%EZK1e{U|kLD>}orqWlSY?Ya%r;fB~O|5b(F^*QXPCtr$cqbNUJNXvKahrw3=W1zhKC!@&(4Y@LV))gqb1&+ZQ>>@ zRUwWoPfCd>L0u@yi8xeLp;LvIJdV3>)zY|;$YPLGe&SIK1Z@4LYPJicS&z&1x4L9D zm#);T7euHz+!bYbB@M79L0TfJxabT>dL11jeP24~(8T}t?ZbzS9PGMJNubd>F|)mB zVs`;_pm555R#~~EiJ!m0jI;4r<3O(tT_XjGx2Jq$m7LwcYwR6S8$0s>w#yWPa99>jWT{t z0aT_-j)QZ;uZ?JqCQ3KW2Kjb;hNy5_@p*!2F=ho!RN6)AozbM)37MHO)z#HE80}o9 zK96uT>jSxdeW~U?@MgPq%F|yNI_SGSvM~3l*wV(}!e)x1E&~JMsVI0Etj}MbkxN^% zv5P@@lJ4?r7c8)BKYTH*2$Yrpix4%Yt-9LUP$j(EH1(ouJCa|IS1Ejk?p0&U-Ub-k zpA^l>H$S{3vwWL@LqHN9Q5d?hVmQO|aaxFhiAkp9sxCg~XwI7n1@7?h@T|Y|dh(z? z{*BHqW$+)hb79BhiV$?W&W%YZ^KKkv>ZP5J&l5Q#Bcl=6k2tAA(m**-x#$w@p48oU z>Z0*2DrBzmH>O?oQEpBS5g7r6AK27M8_C7?4clYNYLE;yv+_Tq{W{{ZU7XCU_0G56*YYomoRj3$z4cfBj{ zF?8qGX<1d(t6|xkSH*jm(fW@DSO4m`9U7>@;Ql;#eM;lo(+cXsu|6O1gF9m;1jxg~ zQEpXLRI-;fp}gkb8Mp>9e~QjHWhc6DsvrHuMz*M9n78Ncvf%DE|Je)MM=l%x z-2a;*`?sjOjE!yko6B`CHa0fjtmnMK3ji~wquTT0u;3;(I0~}EqXLx?8S2qd3OB2T zO3A1;LbPpc>e%8@wW=q9qDFAX8VyR52To#gB@@;-+k*dK{OG4PvsS3ZTNjKTsY3+` z?{u%<{NU4BG~ujtKe;eduL_N!>=M4}>^@0%r$h$nDnSTN;N2ZbG+BCFv%8)3_MlI2 zXy}!&BQ&`)(4u>H%zU%+#n(c(<7U)fFwi4rPaG+1i#hUF9C@bqI~kd$k-k1gjy0j9 zJn5j;%jNLRv0SL{t$QHLh1;d-0N|sH*ctk(=m$gC-6JwbX{mz}58%q+-j4Io54@YJw*p&>QysuBj`M{i+aOtAQ>V{PPTQ*o2M3C;4@VZs%tMc9 zX(T^>{P^ajOWZg=S8;z+GjNB6;EYf`HHV)~2-nGtA^Po%CT2?MWd7jFE!5@@ZrduN z2SJ&4HPM# zXrS=e*!Q6!@}^p5T7rR{t$VHBx?d}C*3>!L@mmmuuW&?g%&P>Y66G*dH2Sil#(T2R zC;HaAg4lJvd~#I}g&m(`6zB!oo@v!{MbNkp*IGzI1BQzCq9WN&$==#e#!9{{dUmfO z$|fs+!)N0j!<`W^py^q zDtS(%Nj$CLNA5L0f=Konp0=&U%af{0*F9hUls!%ANY|xLhuIQGBwQ?oaOm|B6p7{( z-kBk6bLMBy)|T5|U$0z;fu3IFu_cHEYh4=$?_o#$Rtc#vK{v}2{N_*n<1aW1X%mz3 zj$z5OjLpr`;ID$vonbNZ-Y>#_O^x*N;+s9gp(M7O?i67O^q1WJYm909jv||zR*$+q zVC-E(bn*Ghep5Mcdj>VY}iVP+wV^y)z#dv#cIABa0mH- zXxvUiF@@@#j1@27JJCEk<{(5sv&lGP(U0BvIRSIV$b!Cymc-7>^5OCH;B4*7+mz~` zW1AXj++>0#{)|i-IS|-^C?OuRmvc>A1BQY=EnR^|$(OE@Kj6ic4j;mzEbZRawPwIH zo2d1y8y%O5>ICb)0}iLKqOxCKHTCOQC?oaa?_F z{jzDCIqz5(Y8y3Sbyd9a`>=GxWzCZhhmvwm{V4#UE^H?9_2t&-t-$wN+#~1#n(M`f z16@*5W$Kial;ec)a`~H($J_-4Kj7{rKTK2GY)uyr8jRc~k5mr0Pz=EGH)chJQ`Q@m z#JNT2+=2MAC$P8Tp-AZ{Lex z(iWz!o#3SFU8sOL5QwO6IY0U_Jep#$7kv5E$hhH~`xw$&LEUTVBmaJM78dpvHy5wz zM;n`+$Lt|Q7;dNM=b!s4$&J;?%nd$3Oi~YFS9u*2TE6G&w7Bx>ooxyo_!fD&!AR9Xc6 zybq;12%4^54}Ifu@RL}&P#KsQ8Asb}GJO5@i>dYD&}iT2=%M-=oce|!RmU_V9_LkE zUcQfKu>|V_3DV{6nEUPz;?9-9y62J9leHM?9B-`1lL2Q0mq;{7GE`JTf;PXseFsmP zpsP{;xmm@BIqAzhnZ^=sY%C_LoK~>eLS*qii;4F!$M2J+dnMI(0cw>(j^X}HH-Z~Q zxsBE%DPW-ZAt*N@^5U?3dwZW1=7Pw_#5694!Aua#-f-Mlbs_4`R|ua;svNF4yAeXr z)S@yF-kdwAx^_nd@BAGR326`xUY3bcQcDCOSSrz?&b-}w#=Wt;`O8N2TAW#6r7m)^ zN=R8%PS~=uF{HJX;_m)FVC$~V8H}VwFtxZC4m)#@r6=K{{Uy2iFyy8Nb@chovS8Ej z(c0QNq(ZjnU1sRyq^7rB3t^`tchjZA0GO*I+FJDMXY^1K3qDAp4p7eg8fg5bKk7^)*Aj{OfT1+#N4)X$XD#BAV*R%M3cX%U?F zV0WxPRxAT7k5kEYEUXn|l0F89nmK!p2-4Lelpf1YO@Bp)f`FWp2dnFR*}Ib|#eAtI zr(Ont>)R1I1`B9iC^jZKdYJtUm_$Qr{2%UVUip0G&(lTw>0d=a=7`P&`xqfj+GnMA zsspATt1z>?4P|2k_jrtdLNB}^{NX`FwGNxIv-n}6kB_~cg9GH%_V$g4h=U?bV}`M= zxVR?4=UXv|_n&qp2Gra&SLAvlrq^!)3t9$u;2s=&j33&zGtB~<0th~j#{y4xTN=-! z54k*pJA@5<1qB6A7FJgAzx<@%Uhemdjh~r=JZECbE3#b&(7D$4H6*{NKBdcgoro4lIu~L-cGpZJOu*^L9lWxQof?CHE$xT(KIbhwq(18 z7HIO5uCA`Z{h<-g&}2usf7k~L8yhEExA(Is$ts4kOQlEKh$dbKKUduXx$VyEj75$6 zUY_r6rW9!h(tr9<66_cQqQ!tg01Pw-2FccHWR;VkoXuGZP)E_MS+k+MKQ2-SXR})+2=vS#~1YHQDD&A%q&2+ z3|hP0@KC4Nn^#-w>|^rjo0^uEmiF?xLA||};;kh1E*y2{4g|_&92&UVvJ6iC=iYd~tzI-PLN-^@EHbwZ_mGz8F2)sGFz1qvDVnVL{`73E?6zM^gFH)0}EyprqcJsw8 zf)k}pO|@-5{NQB~6>a&rJDOev`aM2X^tI9?f?o3VQ^iu1lgiWB&XB|<4TNY&+~bA4tl3SxIZ5?|WMmx1XJxh4nET!Dq;_?6VGWtz?By;lIrKXPRkQcNm;ysea;oE!iI3fF@F~voGSsTH4Wa}$8M)D;xK&a_)z=%bm8W?( zh0%dN-|^!I0=V)ocXhcWEs&9r%rEn@ofKC!Y5x|Bm~S6OI?wqRq@YV^h91*RF=LV> z?%Ft-plXn$BqMVYYv@}+N8RkwR})&F1xnlUVm+Zc2Re z#*-L)!e#-%vYQS`%;x00UUo?Idyflvfhf;%@l(GfV_YJl5JhTloCPy+>O;s&^8QT9 z_q>Z#a~$!Hcsj1GZCejfaA@dJ)n3=HNGjW?@p{E`v8Es9h%x`)d*8FCOC@pIjW7Jxe-K-v{CWUj<6{1~*+()^Wa zG}E7v%KQZb)<@eQ(;Kod}CITI^SUcYoGmb0w2g{Wz}S6yw13mgs~g2(>H2J zd2W(9a=KcCG1xfxwdE13cVIwNoU`=xg`67d0xzY+OkI3bPYuyvPxjXV{?XD%aaao* z!US<&29kLP57S%cS`cqDoGSHiYINckcv@Oo-^K!s*#pg&RS%*2n`M^QU2=PJvQC4n ze~n&l^bqN$6}a)Ly}gy?raKtUR*8(eH9rE^Jfs_X8r%#%3%$0IYL-4_!-}Wo4;_5C z!Bj?vhaz+LN#iNhy*@1|x3dd}6L6g{P#CtLBWP;HOGd&?(OT=u{!v~>hvMbBikZjb zBt(-<*OzmI>+rhx;odH5t(BBe@(J=#s7Pz*{HryJ9~TH_VzwUa4rz0%fGJrp&F&8R zx^~<#54E}m|G8IRY1k(LmRcANcURo~o|EXO z+Y(tGCu+qyY^ivi!8ksyGw*~R zda#d`CHuWru&vfMA4_tcBA?#_1Zar42|OS6r>y&K)1$qpqQlI4csnHBcM z%`Fgb`uf^1sz|(2$dd~eJS>=763ADlkPmo}DD@7n;{gn6*^xiqRPHw{zV6ppFD^o@ z{NVr*mn>=`_TPlJD|I+SL&`9Gz!?`&5k+i$D|-6bc*Bk!bO#5Sfkgtu#*mZQ&i>Q8 zn468^$Vi=uAuc%X%}{dZ?u!9xIknHx+SQXt6vrnZ^Fp%H{oE~7@B;+}7%wstu6Cg=Q6@bLM8w>;;* z_EvFqtbF`45qr%AoLOo3uf8w=qcGAOh(d5nCE??O)#>R|XPDCUjLqIBu6iP;saZXv zOlh9i@B@L7+6U5&Nv_%C0d9%ns>^+Q__lb7Dhk+SdM7g)P1kH zoxq^q-G&)!lT+ObxnNt|@Nhx9(=*3Lt_Tgq<*sQ^Cb*rdSy*=YQu5?mpnv-lZ+rW# z*%=YnDABnn%IzMv2O1n9u^;%30iMu^3zoDbIK0n>d?f>a+C!4R? zAc%WVv)En$M`+xb=dvm?`}FVz0exfVtCd%OEb`=e4XV`2ch>N9;X3`3WEvEq&-*9> zPEUaE*Dh>Yz=$@f%ymj$e|_Gcy|Y;B{I zc9~vVFfRQCZR&_O!;A(4YO=Y1Ot)^CW{nMcG?R8q1GB)Uw+A&kkZ3!hF#Dagjp*@o zwS^ko@eF#*e%lE3Pv~^vABObBi=&~nN7E5Z4dtTpNjX%=R30R@M`NWT}C(-whE#+r9OYI zUl6eQTW2NTvSUZFQiL^u%G2^<#0E4z`K9dC*7D*`$@}esIfGza%Xyb9Go1A*eJ8`PJS1RWR3ms?UQF1HyQt(ejTscz5qM;~LuFE-3ME z=YI9TL`})=XS=J(Zs5Yt+5ACZb8CyE_jY^|T4#mW{_wt}lbX%3?5{R)XGtB!QmAq#2J9+<|H8 z+cx74dus(y1CUHz5d&-MVBMas+%rqO{wrInc{v^uNBS%4?$UFuzfllnOD`eO*yaq) zy!9Kn*tt7DALwe?y=fBnj|3gU6#LK5q|UG&G77qfk&PNS9GXo0rvo>7U{9Q(AD@0e ze&HBL)i*?JCNv|*%Xj=# z|L19*u-3Z=J|19!hl`(5<$q0N$S)~DbzE=?X0i8md`7h};{?mu8?cW{o>IVo468yM zS-|=_jZ4;PqtSw{?#AVts@@@|(KcBA{RK_A*Ooj6r3isrv&W$Mc^9(K z{nbn{w5dwG>=eDWWebD@99DB<7}fsJuXxP_J41$M|M?zir~w%3-}w7u)1y_n+Hm;n za)N#^#QY4Lxs5R#X#@`t>zhS{Zd#Rz-U|H*qg-oA1r5VoJt--O5fMJVq$kYaT4?@v zi!V+`zjgL-#AVeRzF|h|-xEtIRO2ID3WK24GCtljVzE@-Z|<4llv*y;@8lI>JNZuW9R{&eiqba(0t*kmh-mDy2;%CkU(AH znm}ctB8Vn3JHz?6Ra>_5nkOET5&%a>pYV0TwC(#H{?z0oWC3b`omA52ex!kbe*PSv zDT*{J4#C}+Yx&0Un^!E3& z5TacZA|gIAH7odmc+)Xny>3uVT)Nof93CTvf;aWe`-X~gL)-uS@#Tb?-mWcJLJ(+t zhwuh_dc2kY6GT=8KCK=~|I=WoCp-=g8?ZX8kNAC8aLMERL?WjsfB)fSZR3`gy$=!9pim`DE~IkHhWf`<;2nRIWr!(nw1FzltWQ@+Xp$mCxp( zC{A&VKoHe8z(-07mY%BG*CL_*%NwoNV2^W82F4| z`QqX_@pI+pPo;5Nz8x0@Gcmm*!;WF1axyap3z|PW?x;MuL4COouLZnsTHJCCLO(KL zxWkXSr^0G#An!CZ;y5`fT2vR73fx3)m^n!JzVgDD!vM_j-sQbFj-%*0XH?Z}ut6vJ z3@$l-xA{mXM*|>n86(Y4RHY(Fb*69_pYK&lmK*!ib(xgYOXZ{V4<=ZIEv3o3`jNi`p<3`J2k2sN=$yERsD$+0~7Pue5I?j!VDkLF*gB_izW;C zeShg40~65Z4C-uU?T(5zWn&O6V=(pl4TsxU`v{(1Oh`A=6nLwid^U*j!bt|yWjmy;e{BweH5EB)7#6;vq@ z4m^NQq7c&C`(ZSV2eHofouc0hH%zjU;Y6Bq>1k=VfQR%#$JUw?T_6EUg7mw#V*jridzy7>kFuxub6>9&+bCsODTKm}c z&PTr$1d`g^Nu~E$sy8EL3C5|fueZ29Y_f2+!iO<;HMML3(9AFO?#X<^@TjN|nS5Zx z&DRatX2`yG+-9U2mOua@X!=m{V=o-a#IOind_15Gs}cSj0xN9%_;!f?_E^$Wwn<#e zN%6$MWlPfK`C8uyDa|^H&Y^+j_pRCY*7MLYgN~zj^@2EFJ>>fa7iAb2z43Or#|;79 z+!&>0j<~qEp?#_+1B*3xz>f)c6+l zKW0Z4iYZ!-f>r=$;Y0z`AcJAf2G^%g#c?j<4^8V?q+A}xDLVg33 z_F^ubmWdOT-Cior`W&$c7L&5r(#eU_j_@Hka4}3EFxUt_XK%^$v0d#!AZxK6wPVFs zu)d)|v-3O$?IhHZ4g$pd5}={Y2iVaY<6b$%IROyJ0anVpy)F52_b68M=Mj%`dZrFW zDyS6eZALg1S-cMz3B>Mb5Zchx^HzpSA*@PMMVh!8hsJt_odBQ!`IYNa)i;Ec7K~ck%%r6%wqN zDh_e~rQw=(#g~$@xgJewFXFR!Y(PyVaogvOHyR^>Pt5rv`YRsHr1@voPT}8nSJ14R z5ri|DNd+L&*#29D8a7j~(>`zB9lFQ85}Mc{W^W zQB@YV(QSd`RdgJ57V)=i=W`R7CqKG5eDWv2z$cf`f3$VOVvrVfP&Q!nn1w=fa9Eaq@>2l%j3^Id z;ilMPkcV!WvwexxqnMPVafw(`Nk8O~OQsU)XFmyI2uyPgQTvsl{oajzLgJngK){yt zq3(~PhBsrXBV;9j`wh1{r&ny!MussFlsqJn^!X30!?l?oxuR!%rJ*Ope9t-g6Ah|fombo8ufma*%{+_8HYBdlcmLvkg!i+W5#ZO*z zsMWdm;69in+4WA)bjHlU3b6$kh1Wy?{#XxaHhjb!4*%>u+Fr|B)V*0FVukV-Rfs&?>@s5+4af5;gFColZo4oPOwkFi$TGD>bYhg zVe(Pn)-xyDn~KrK$D(i|dWGnL9&8S2DahFG*EfJZyuH15zHJW@iU_69L^4m&V_(X3>atsh0AUlOP`+J}H3YlfYLuHsJ;zDL{+gb47UlMIkCXT4fzcNW zxnLg4`Eo9y5I9ZPyI2NRuRppA&>rWhE7AmC9lWD_UQo$fiUoY08yZsm>$Xu9Jl`Ok z={a|%TO$GyQN*%Tgz~G;=6+r6id52nCnSTewGt=DsURpc=iTTYEHW~&Nq*ILMMv-5 za#5t@WrtHiE8jDeobG^`*VThMSS-f$iR+I_=1`Ub+q7%2n18S12 zuh%62H%1Qwlf!0|YU%FZ`WLxinT!JSKai2wtqA)JKJT{%Phvn5$O(r zp-Z}(dw%zRzt8=6&p&XUbM}7se)rmIE#`}-KwFz4NJKuHN=i!p@w)bGaG_WF=KPd< z-ob623QTh!!Ze41$i}6#%A^Y{-j|d#CxFf~g2sEj zXDsys)kDY$43;*myNBEGo&9s!cFGCU(A10<6e?=arPGNW(QQ$Vd9#3>-D-3JTj~bW z@q560A@af&B~#^pJc)B9Xd(-Tj~>v^yl3=^TOOag8MDEJw*5j}S!?CeSl zdh>BYqeX9rfqr%sj24K=F;S81$eYoo>kOWXZPjv%_da#{BSrnrdusO!H%f^Z1ia)K zVKA|^?G~E&%I0~!nEk#MrZFot_oADM*%Y2&)(xEKag)h8Wk(15n`jmHR$ zkhx%nL6co8GGH~(qQpPJSYtXj!Mw&B_>dr?Iws?Kwc4 zbaQRzYA<~@??*d=w<4aeRJv2{IFh#E_M!oh8K`i0_;vsAfzz=iS~-Sd#XP#WtofE$ z{VmEL;-#^^yE?;%*-;cx0{n!yxtoiN!ovXvYy~N zMo8Xfde|WWsbgwQ5TYp!C#l-PZ|^m6!|kbzkA&2pL>H&w%`|?L_Nf2^?kfn_?u?+h z^|9gEgR{fi0hfnf^IaQIYZrfDOO_EpX8Aj7bRVph(a;YZ83Xh4^TUFs3rm7MaSB-_ zAhs0#lZyr)lc!YK+GVc;2)RXE0R0XA657?(r8k9OgKe%;H|XI1q)Ug_1zj+}tb-U* z$ZT|*G@+=O9XnRm@gFQpOGATqzENo>dk>iMr34;!*o@!Mdq|O+2ztz9uhfr^*TK;o zeAz=X!uV+ZvL<#T^EY=cE>fJ$u8t}<@ig8yP3ay_wSU{lQl?jHa6H8=QAGmtrH#~A zQc{;*{Y-zl9ybNbL>rc=x`Tt{x{QnG#HJQIhE{&`aEybJL&}Yc1on^)1I|vL212C{ zJr5sek)tEo@4Phe@tDAYJ3!~jZw_7D!JHSf-PEAGltjw#_dpY>@%*M{BoJQDLAg(; z6luV}9oaOqLjnbSH_E_3 zAM0IPChA)|h0gDwZ3(g3HHjJ8W5!&i{6yYktS|sM<;Q=Klyo-2`BEx?2@4(&Zr1zq z`0*FXC)spOU{OP0K18seb<4r$+$lvw3baUXJU{l0iHb7h=AmlXKE@vlZ!caYKkLpx z3tpY$jjE5Q+_yiKwOpM^WLqv4JkH-)wL-&Olb@iSiX^!#M~Zgb#k0$5`DnA?m? z%aVIwU(!uk2Zo!?x?>x{ydZX;g|iko+TsW5I$ zMFBpR?i$*kpBU!(7}Ncfn4}Air9w0g>2_y>WmmmnC0kZ6&{iyOZ@=&H#o52Yi3SEl zzw@p|MZ*@)q@Qh6StVZS8}dr^tNCePka}P(F{h-Y`me5(AwIr%8Y%q~C6Mu%CS)tj*! zVUAaCccxv(RrB+o(W%?M`-u0DRbXWlkPJrB!rVxI?4#)vprJALUc3^VkVvbBDm|fN zCmAnF2Nzt}w>Z`Tw{`jq>X5dq>3EbNteHN(baSHZ?%l(BJz3xP+;q7FKt@*}AwjSj zo2;9?cH<#0-SGO`u~L;oY))J5(1gIuu04gvFH*&MC)%}>Q{B=Q^Y{wKQGtb#bre&p zs|hf_U`NRE-Xopqz*ME9EvLJC_#P-ux>7D4If_|IRE8N=xSeWuT4y+RT^@%^$OA|L zD{2rG8EdH=pNjpWC#N#e;8}P+7ooe0!?t@zq@YH?437=C*mY^^h(|#PZwZkBef#G2 z_S(yMbdIe4krokHe9t9y1NINr=C3LrXeP-k@7@nziMXMlzK3Lfp#?<(@P!Vp*E3Bs zp8E+LYCp|f@@$8As^}TLqPI~B0WOI+>^`LY*`yQ9Nn zKHlFCqYfvA2DRzERM&{|4ZOa>5r155Z2sMBETTn}mpOMzY@P9yGqf_D(&N{j*^P+0 zPg?$;%miqOhEd0Cf51|(nQqlqI0C-T0$y7zgcD9eH}3%t0xbd9hZJPIW#bWvi1wXc z0!hLD;Gdu_GYT8cFT9n3XHQBzb9Qi;kO1Y2syWP#8P6ef0ZJ(x%<=wj)d$^YGFUb; zl*zO1Q^9YV_vcFtKY9}UOMmwHNl!Gle7+qn@G9u#C=M!}v z`W$ijF~8-f2?6$hj=_GQelg!GlAt*Nfe;h>Cc-ISv)7-OOa%ng@FoHK&bhujI&3_N z1?anCCVZmroHuV1Z21uqEuY%;-0eG1FMff5zBt)cd+I!n$?TJh$ZKYg4Ld1ei`k+M z+D!bNylCa3!|l~Q5*u(hLN&MW>yqL*?FR;cM^;w0=}W^LorV~Mk~BMAgPA$=W&)eE z$8RvE&CQQ;yt?lm!Ebsok zF{|kkTqWZ)yT(JQ(Z9rU*~=uav$}{lH@_5nA%%@yS$oAKxdHO9UF3L>REPO{}UhdgYsk&CQ2Svo<>mk*plwi@KDVVp9X~iVyWc22{Oyc z|LCht#a~ZH|EZl(yp+IKbsUYB;P@G*|8^XyX18X!Geg>SGd&R3aS}oi^$LOvm{Jfm zGN`R$T3I!%)^wMIJz-;JKAG>8yDHo&(q4PX!A&5|%UbY2MX~MY=Rbd(6z%My`3+m_ zMyxiRYQGE1Oc$q*HaXsWHRDfnFDD>)G@1ABb&a6owtz26BfteogJM?A0F)_N4W+hz z&xPeW^dC5nGuy!nb^A&W#% zs;FR@-fbuv3SC=@vEX> z!{t|$seCu`C4k7g`uPo=^t@l;Lm;kxnUF^iz?hlWo{J=bZPjxCP_T8o*iI@$7uVGl zs7-(3V!V#sb*P~QL|GJKe<=kRkE^_JzRF~ZgZC~2P)vsZR#0~cv7D{@T^95O?Z|dh zNVuSxHK@h}QDa`Zw=%f=H+tdF89FE}=7CVD=LI&$^0TJ)R8S>TJP{@;Dn5#zzgUXn zZSK<|vt;qd*Ata1eYT3~35*&k1cd~!nCv^<&+NZteOq0P(ROgiQGf-{wO*zJg-OY@ zOTU6Sz$Cu9^d1g8fv?M5(tlM^*`&Ii1;-VSwn(%AF8+jDT#WECF(vaJ zTd&(V15iC__4#R0hrv@u2Lehlu_rS^!om}vHfnewhU-8?kC^A^Eg+xN`g^J6x2^57 z_k4V^+&uaj`OHD%q#PbEzb9<|l6)i{=fJ=uetRx;p@W9w z{<{FV6&H$#eu|$Hp+Io?d;Q`*$dA|eM@FBCtv2g;OzG7JhvsDolxN_Xvd$?nugoBkb7t>o%;h?D{N5SHs;uS*);Zm&3WjL%=* ztQ|Nx920qJRGXabj>ucpU7)qvez74q?{B+g(Mek6aDLByWsA8v@Nx; zVEIXL@ZT~D5qVqj{CxYx$vVGyz#dsu1a-C1iV0q%=U#9lg0XpKVBE|GQ*1b6vim}- zo7%GJq_PBkeNGa-u+E)aWW@OFP#W^6_|g}Bo%`6qfp~&T)xH^w^ns&Rj3L;toiO#B zx5=|>N!*QyB0GoqVq%-3_mAc53rhnLe!I4+ubfmmm1y#IL844`%Hm{kZ>5U89xkX- zN}_)^00GSO(bV_JU2hjiZwI_RaZO#9rw4f8a0LVXzv2>NVpZ~M9VIjR#>0bVQ7xsC z)Yh+stq5s}b`le>Q#yXKy_ovuU@)Ptr{ay2Ssx z;KWW@kbKMgdttuDv+5|8jkf%-;ciF6UM9}&!)0t`A2VO(Gsd9)b5+@GvkOm7PacfINj6giL>J z6XaJ|p9bTeT3@DtNMJ|26d48M1qUGbshX6)T0E08x@~R{gidsHdQhdjrd-|J-%)}e zxkw1@MMdR0WDoj@mS(^6w|)z)Tces4I3k%Xu!aJQd3j7{^D)J0P7`9kMX3QcR!{HJev6Q<-o&q@Sl^=$jFF7+1QX(hadwd=SQe&(S-*1 z>+BC#2Vze8``rc|T%{f7EUGWS-d~C&vq0geMRFG^lEN+&>gzpEIZy}vJRtu0l4E%aqruM6g77)on7jHB(ek@!#I%#jwvmrz3raX^nK8S5UP{*@*jN^u zAmM;J7+kNA_KJWBiE@L2hg`oh?X8 zNIo%hK@AAQZPd)-Kk+sQ=tFXM;;17Lk(M;0;8oPhbh0|JcKRqKFL!oy(i@LcEi597 z$hw8Wp3|QwGBp{fj6d6j$jjKP>u&@TbF_mx3dgyuW$8 zLm_l>+h=c4SSod0oQXs^iF57Hqh5#sQ#rxS>0}WFiRWJm37)Zr`i4LizagXVhMk>F z*lKn8Koujw1LZA4rw`5cvFEMk`~rKOk|h` zY+`NE;dEELS}BcP(8u} zE>)p;QgcU3Rs{BK$2AK9&(loIG%aKiTXbnTIJk^%Z@+A}mK3U~8ZO@7YyEA%EFjzQ z?zzGX7i!R&%hDC5T+t(4=&-oQR-#=KLIuSL@R7%AFPEw7#4&#PVw)l*6(#t$)-lDz zBysZc{GKfs;EED~ZsR9(x|AegNa$-UTcR&}tfIn6xk!irLa~c4wI^146v-UdqcHS2 zYk7G68)hJ1uQDhI3&IJSkd#WzPt>^0K~QcvXC6 z@O%lePW_Yrmv(0V7t1vU;Oxf#V#XE?iN59l_I#=6Df26K0PxXJ(N!*0v=06+iyNTZ diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 14c8d09..0000000 --- a/docs/index.md +++ /dev/null @@ -1,357 +0,0 @@ ---- -layout: default -permalink: index ---- - - -

-
-
-
-
-
- - - -
- -
- - -
-
EASY TO
USE
-
- -
-
- -
-
-
Extend SQL with Dynamic Evaluation
-
-{% highlight csharp %} --- Evaluate dynamically expression in T-SQL -DECLARE @tableFormula TABLE ( - Formula VARCHAR(255), X INT, Y INT, Z INT -) - -INSERT INTO @tableFormula VALUES ('x+y*z', 1, 2, 3 ), - ('(x+y)*z', 1, 2, 3 ) --- SELECT 7 --- SELECT 9 -SELECT SQLNET::New(Formula) - .ValueInt('x', X) - .ValueInt('y', Y) - .ValueInt('z', Z).EvalInt() as Result -FROM @tableFormula -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/c8338/1' %} -
-
-
-
-
-
-

-
Extend SQL with Dynamic Evaluation at Runtime Using C# Expression.
-

-
-
-
-
-
-
-
-
-
- - - - - -
-{% include layout-angle-begin.html %} -
-

Amazing performance, outstanding support!

- -
-

We were very, very pleased with the customer support. There was no question, problem or wish that was not answered AND solved within days! We think that’s very unique!

- -
-
-

I’d definitely recommend it as it is a great product with a great performance and reliability.

- -
- - -
-{% include layout-angle-end.html %} -
- - - -
- -
- - -

Evaluate dynamic arithmetic expression in SQL

-
-
-

Make the impossible now possible. Evaluate C# expression in SQL to overcome limitations.

-
    -
  • Allow trusted users to create report field and filter
  • -
  • Consume Web Service
  • -
  • Replace text in template with String Interpolation
  • -
- -
-
-
-
Dynamic Expression Example
-
-{% highlight csharp %} --- Easy to use - --- CREATE test -DECLARE @table TABLE ( X INT, Y INT, Z INT ) -INSERT INTO @table VALUES ( 2, 4, 6 ), ( 3, 5, 7 ), ( 4, 6, 8 ) - --- Result: 14, 22, 32 -DECLARE @sqlnet SQLNET = SQLNET::New('x*y+z') -SELECT @sqlnet.ValueInt('x', X) - .ValueInt('y', Y) - .ValueInt('z', Z) - .EvalInt() as Result -FROM @table -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/6870e/1' %} -
-
-
-
- -
- - -

Split text with delimiter

-
-
-

Improve performance and capability for splitting text with an easy to use split function and LINQ expressions.

-
    -
  • Split text with multiple delimiters
  • -
  • Split text using a regular expression
  • -
  • Include row index
  • -
- -
-
-
-
Split Text Example
-
-{% highlight csharp %} - --- CREATE test -DECLARE @t TABLE (Id INT , Input VARCHAR(MAX)) -INSERT INTO @t VALUES ( 1, '1, 2, 3; 4; 5' ), ( 2, '6;7,8;9,10' ) - --- SPLIT with many delimiters: ',' and ';' -DECLARE @sqlnet SQLNET = SQLNET::New('Regex.Split(input, ",|;")') - -SELECT * -FROM @t AS A - CROSS APPLY ( SELECT * - FROM dbo.SQLNET_EvalTVF_1(@sqlnet.ValueString('input', Input)) - ) AS B -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/3de09/1' %} -
-
-
-
- -
- - -

Use regular expression in SQL Server

-
-
-

Use Regex flexibility to overcome "LIKE" and "PATHINDEX" limitations.

-
    -
  • IsMatch
  • -
  • Match
  • -
  • Matches
  • -
  • Replace
  • -
  • Split
  • -
- -
-
-
-
Regular Expression Example
-
-{% highlight csharp %} -DECLARE @customer TABLE ( Email VARCHAR(255) ) - -INSERT INTO @customer -VALUES ( 'info@zzzprojects.com' ), - ( 'invalid.com' ), - ( 'sales@zzzprojects.com' ) - -DECLARE @valid_email SQLNET = SQLNET::New('Regex.IsMatch(email, -@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")') - --- SELECT 'invalid.com' -SELECT * FROM @customer WHERE @valid_email.ValueString('email', Email).EvalBit() = 0 -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/92200/1' %} -
-
-
-
- -
- - -

Replace xp_cmdshell with restrictive alternative

-
-
-

void enabling xp_cmdshell and compromising your SQL Server and use instead a more restrictive solution.

-
    -
  • Impersonate Context
  • -
  • Improve maintainability
  • -
  • Improve readability
  • -
  • Improve security
  • -
- -
-
-
-
Example
-
-{% highlight csharp %} --- REQUIRE EXTERNAL_ACCESS permission -DECLARE @sqlnet SQLNET = SQLNET::New(' -string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - -var dir = new DirectoryInfo(path); -return dir.GetFiles("*.*") - .Select(x => new { x.FullName, FileContent = File.ReadAllText(x.FullName) }) - .OrderBy(x => x.FullName)') - .Impersonate() - --- SELECT FullName, FileContext FROM DesktopFiles ORDER BY Fullname -EXEC dbo.SQLNET_EvalResultSet @sqlnet -{% endhighlight %} -
-
-
-
- - - - -
-
diff --git a/docs/js/fiddle-client.js b/docs/js/fiddle-client.js deleted file mode 100644 index de7b221..0000000 --- a/docs/js/fiddle-client.js +++ /dev/null @@ -1,133 +0,0 @@ -function SqlFiddle() { - - //////////// - // constructors - //////////// - initializeMessage(); - createConsole(); - - //////////// - // variable - //////////// - var defaultOptions = null; - - //////////// - // console - public API - //////////// - this.closeConsole = function () { - hideConsole(); - } - this.openConsole = function (options) { - showConsole(options); - } - this.toggleConsole = function (options) { - if(getConsole().style.display == "") { - showConsole(options); - } else { - hideConsole(); - } - } - - //////////// - // console - private API - //////////// - function createConsole() { - createConsoleCss(); - - document.addEventListener('DOMContentLoaded', function () { - // create div - var div = document.createElement("DIV"); - div.id = "sqlfiddle-console"; - div.style.display = "none"; - - // create iframe - var iframe = document.createElement("IFRAME"); - iframe.id = "sqlfiddle-console-iframe"; - //iframe.setAttribute("src", "http://localhost:8001/Fiddle/FiddleConsole"); - iframe.setAttribute("src", "http://nugetmusthaves.com/Fiddle/FiddleConsole"); - - // append element - div.appendChild(iframe); - document.body.appendChild(div); - }); - } - function createConsoleCss() { - document.write("\ - \ - "); - } - function getConsole() { - return document.getElementById("sqlfiddle-console"); - } - function getConsoleWindow() { - return document.getElementById("sqlfiddle-console-iframe").contentWindow; - } - function showConsole(options) { - // show console - getConsole().style.display = ""; - - // send message - data = { - action: 'console-initialize', - defaultOptions: defaultOptions, - options: options - }; - sendMessageConsole(data); - } - function hideConsole() { - getConsole().style.display = "none"; - } - - //////////// - // options - public API - //////////// - this.setDefaultOptions = function (options) { - defaultOptions = options; - } - - //////////// - // message - private API - //////////// - function initializeMessage() { - if (window.addEventListener) { - window.addEventListener("message", receiveMessage, false); - } - else { - window.attachEvent("onmessage", receiveMessage); - } - } - function sendMessageConsole(msg) { - getConsoleWindow().postMessage(msg,'*'); - } - function sendMessageFiddle(id, msg) { - var console = document.getElementsByTagName("fiddle-" + id).contentWindow; - console.postMessage(msg,'*'); - } - function receiveMessage(event) { - // console - if(event.data.action == "console.hide") { - hideConsole(); - } - } -} - -var sqlFiddle = new SqlFiddle(); \ No newline at end of file diff --git a/docs/pages/api/api.md b/docs/pages/api/api.md deleted file mode 100644 index ee1e2ed..0000000 --- a/docs/pages/api/api.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -permalink: api ---- - -## Overview - -Let take a very short overview with the API - -{% include template-example.html %} -{% highlight csharp %} -SELECT SQLNET::New('x+y').ValueInt('x', 1).ValueInt('y', 2).EvalInt() as Result -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1123' %} - - - - **SQLNET:** A CLR Type created by Eval SQL.NET library - - **"::":** This is how you call static method in SQL CLR - - **New:** A static method which create a new instance of SQLNET Type - - **ValueInt:** Set a int value for a specific parameter name used in the expression - - **EvalInt:** Evaluate the expression and return a result of type INT - -
- -
-
-

Methods

-
- -
- -
- - - [Eval](/eval) - - [Value](/value) - - [Options](/options) - - [Configuration](/configuration) - -
-
-
-
- - diff --git a/docs/pages/api/configuration.md b/docs/pages/api/configuration.md deleted file mode 100644 index badfab1..0000000 --- a/docs/pages/api/configuration.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -permalink: configuration ---- - -## Configuration - -Optional stored procedure for License and Configuration - - -{% include template-example.html %} -{% highlight csharp %} - -CREATE PROCEDURE SQLNET_GlobalConfiguration -AS -BEGIN - -- The procedure is automatically called when the server restart/assembly load - -- If the assembly is already loaded, a manual execution is required - -- EXEC SQLNET_Configuration - DECLARE @isValid BIT = SQLNET::AddLicense('[LicenseName]', '[LicenseKey]') - - -- SELECT 1 - SELECT @isValid - - -- SELECT 1 - SELECT SQLNET::New(' -EvalManager.Configuration.RegisterAlias("MyMath", "Math"); -EvalManager.Configuration.ExpireCacheDelay = TimeSpan.FromMinutes(5); -EvalManager.Configuration.SlidingExpirationDelegate = TimeSpan.FromHours(3); -EvalManager.Configuration.SlidingExpirationItem = TimeSpan.FromMinutes(1); -return true; -').Eval() - -END -{% endhighlight %} - -## Configuration Register & Unregister - -Register or unregister information used by the EvalContext under which the code or expression is compiled. - - - RegisterAlias(string alias, string name) - - RegisterAssembly(param Assembly[]) - - RegisterDomainAssemblies() - - RegisterExtensionMethod(param Type[]) - - RegisterExtensionMethod(param MethodInfo[]) - - RegisterGlobalConstant(string key, object value) - - RegisterGlobalVariable(string key, object value) - - RegisterStaticMember(param Type[]) - - RegisterStaticMember(param MemberInfo[]) - - RegisterType(param Type[]) - -[EvalContext - Register & Unregister](https://github.com/zzzprojects/Eval-Expression.NET/wiki/EvalContext-Register-&-Unregister) - -## Configuration Options - -Change option used by the EvalContext under which the code or expression is compiled. - - - BindingFlags - - UseCaretForExponent - -[EvalContext - Options](https://github.com/zzzprojects/Eval-Expression.NET/wiki/EvalContext-Options) - -## Configuration.ExpireCacheDelay - -Sets a span of time within the next time the ExpireCache method is invoked to evict inactive cache item. - -## Configuration.SlidingExpirationDelegate - -Sets a span of time within which a delegate must be accessed before it evicted from the cache - -## Configuration.SlidingExpirationItem - -Sets a span of time within which an item must be accessed before it evicted from the cache - diff --git a/docs/pages/api/eval.md b/docs/pages/api/eval.md deleted file mode 100644 index 4f19ef9..0000000 --- a/docs/pages/api/eval.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -permalink: eval ---- -## Eval - -Evaluate the code or expression and return the result. - - - Eval - - EvalBigInt - - EvalBinary - - EvalBit - - EvalDateTime - - EvalInt - - EvalSmallInt - - EvalString - - EvalTinyInt - - EvalUniqueIdentifier - - EvalVarBinary - -{% include template-example.html %} -{% highlight csharp %} -DECLARE @sqlnet SQLNET = SQLNET::New('x+y').ValueInt('x', 1).ValueInt('y', 2).Root(); - -DECLARE @value_variant SQL_VARIANT = @sqlnet.Eval(); -DECLARE @value_int INT = @sqlnet.EvalInt(); -DECLARE @value_decimal DECIMAL(18, 2) = CAST(@sqlnet.Eval() AS DECIMAL(18, 2)) - --- SELECT 3, 3, 3.00 -SELECT @value_variant as variant , @value_int as int, @value_decimal as decimal -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/58568/15' %} - -## EvalReadAccess - -Evaluate the code or expression allowing "Read" and return the result. - - - EvalReadAccess - - EvalReadAccessBigInt - - EvalReadAccessBinary - - EvalReadAccessBit - - EvalReadAccessDateTime - - EvalReadAccessInt - - EvalReadAccessSmallInt - - EvalReadAccessString - - EvalReadAccessTinyInt - - EvalReadAccessUniqueIdentifier - - EvalReadAccessVarBinary - -## EvalSQLNET - -Evaluate the code or expression and return a new SQLNET object with the result in the parameter name "value" - -{% include template-example.html %} -{% highlight csharp %} --- Eval and create a new SQLNET object -DECLARE @sqlnet SQLNET = SQLNET::New('var list = new List() { 1, 2, 3, 4}') -DECLARE @result SQLNET = @sqlnet.EvalSQLNET() - --- Use the value previously resolved --- SELECT 4 -SELECT @result.Code('value.Count').EvalInt() as Result -Useful to optimize code with object initialization like Regex. -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/989' %} - -## EXEC SQLNET_EvalResultSet - -Stored Procedures that evaluate code or expression and return a Result Set. - -{% include template-example.html %} -{% highlight csharp %} --- REQUIRE EXTERNAL_ACCESS permission -DECLARE @sqlnet SQLNET = SQLNET::New(' -string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - -var dir = new DirectoryInfo(path); -return dir.GetFiles("*.*").Select(x => x.FullName).OrderBy(x => x).ToList();') - .Impersonate() - --- SELECT * FROM DesktopFiles ORDER BY File.Fullname -EXEC dbo.SQLNET_EvalResultSet @sqlnet -You can output the result to the client or insert it in a table like a normal procedure. -{% endhighlight %} - - -## EvalTVF - -Evaluate the code or expression from a Table-Valued Function (TVF). - - - SQLNET_EvalTVF_1 (SQL_VARIANT) - - SQLNET_EvalTVF_2 (SQL_VARIANT, SQL_VARIANT) - - SQLNET_EvalTVF_3 (SQL_VARIANT, SQL_VARIANT, SQL_VARIANT) - - SQLNET_EvalTVF_4 (SQL_VARIANT, SQL_VARIANT, SQL_VARIANT, SQL_VARIANT) - - SQLNET_EvalTVF_5 (SQL_VARIANT, ..., SQL_VARIANT) - - SQLNET_EvalTVF_String - -{% include template-example.html %} -{% highlight csharp %} -CREATE FUNCTION [dbo].[fn_Split] - ( - @input VARCHAR(MAX) , - @pattern VARCHAR(8000) = ',' - ) -RETURNS @split TABLE ( item VARCHAR(8000) ) - BEGIN - DECLARE @regex_split SQLNET = SQLNET::New('Regex.Split(input, pattern)') - .ValueString('input', @input) - .ValueString('pattern', @pattern) - - INSERT INTO @split - SELECT CAST(Value_1 AS VARCHAR(8000)) - FROM [dbo].[SQLNET_EvalTVF_1](@regex_split) - RETURN - END - -GO - --- SPLIT with multiple delimiters (',' and ';') -SELECT * FROM dbo.fn_Split('1, 2, 3; 4; 5', ',|;') -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/b738f/2' %} diff --git a/docs/pages/api/options.md b/docs/pages/api/options.md deleted file mode 100644 index ddb60a2..0000000 --- a/docs/pages/api/options.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -permalink: options ---- - -## AutoDispose() - -AutoDispose object and delegate from the cache after the code has been evaluated. - -{% include template-example.html %} -{% highlight csharp %} --- SELECT 3 -SELECT SQLNET::New('1+2').AutoDispose().EvalInt() as Result - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/994' %} - -Don't worry, we have you covered! Object and Delegate are automatically disposed after a period of time without activity. - -## Code(string code) - -Sets the code or expression to evaluate. - -DECLARE @sqlnet SQLNET = SQLNET::New('') - -{% include template-example.html %} -{% highlight csharp %} -DECLARE @sqlnet SQLNET = SQLNET::New('') - --- SELECT 3 -SELECT @sqlnet.Code('1+2').EvalInt() as Result - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1125' %} - -## Dispose() - -Dispose object and delegate from the cache - -{% include template-example.html %} -{% highlight csharp %} -DECLARE @sqlnet SQLNET = SQLNET::New('x + y') - -SELECT @sqlnet - .ValueInt('x', 1) - .ValueInt('y', 2) - .EvalInt() as Result - - -SELECT @sqlnet.getcode() as Result - -DECLARE @dispose BIT = @sqlnet.Dispose() - ---Not work because dipose... -SELECT @sqlnet - .ValueInt('x', 1) - .ValueInt('y', 2) - .EvalInt() as Result - - ---Not work because dipose... -SELECT @sqlnet.getcode() as Result -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/996' %} - -Don't worry, we have you covered! Object and Delegate are automatically disposed after a period of time without activity. - -## Impersonate() - -Change the security context to impersonate the credential of the one who runs the T-SQL statements. - -{% include template-example.html %} -{% highlight csharp %} --- REQUIRE EXTERNAL_ACCESS permission -DECLARE @sqlnet SQLNET = SQLNET::New(' -string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - -var dir = new DirectoryInfo(path); -return dir.GetFiles("*.*").Select(x => x.FullName).OrderBy(x => x).ToList();') - .Impersonate() - --- SELECT * FROM DesktopFiles ORDER BY File.Fullname -EXEC dbo.SQLNET_EvalResultSet @sqlnet - -{% endhighlight %} - - -Impersonate the current execution context under which the routine is executing. - -## Root() - -Root is required when the expression already specified value. This feature has been added to allow Parallelism. - -{% include template-example.html %} -{% highlight csharp %} -DECLARE @sqlnet SQLNET = SQLNET::New('x+y').ValueInt('y', 2).Root() - --- SELECT 3 -SELECT @sqlnet.ValueInt('x', 1).EvalInt() as Result - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/997' %} diff --git a/docs/pages/api/value.md b/docs/pages/api/value.md deleted file mode 100644 index 66a184c..0000000 --- a/docs/pages/api/value.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -permalink: value ---- - -## Value - -Add or update a value associated with the specified key. - - - Val\Value (SQL_Variant) - - ValueBigInt - - ValueBinary - - ValueBoolean - - ValueByte - - ValueBytes - - ValueChars - - ValueDateTime - - ValueGuid - - ValueInt - - ValueString - - ValueTinyInt - - ValueXml - -{% include template-example.html %} -{% highlight csharp %} --- SELECT 3 -SELECT SQLNET::New('x+1').ValueInt('x', 2).EvalInt() as Result - --- SELECT 3 -SELECT SQLNET::New('x+1').ValueInt('x', 2).EvalInt() as Result - --- SELECT 1 -SELECT SQLNET::New('x.Length').ValueBinary('x', 0x11).Eval() as Result - --- SELECT 'ZZZ Projects' -SELECT SQLNET::New('"ZZZ " + x').ValueString('x', 'Projects').Eval() as Result - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/009cc/2' %} - -For maximum performance, the right Value[Type] should be always used over Val && Value - -## ValueNullable - - - Val\Value (require to specify the type in the key "int? x") - - ValueBigInt - - ValueBoolean - - ValueByte - - ValueBytes - - ValueDateTime - - ValueGuid - - ValueInt - - ValueTinyInt - -{% include template-example.html %} -{% highlight csharp %} -DECLARE @x1 INT = NULL; -DECLARE @x2 INT = 2; - -DECLARE @sqlnet SQLNET = SQLNET::New('x.HasValue ? x.Value + 1 : 0'); - --- SELECT 0 -SELECT @sqlnet.ValueNullableInt('x', @x1).EvalInt() as Result - --- SELECT 3 -SELECT @sqlnet.ValueNullableInt('x', @x2).EvalInt() as Result - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/1cdb6/5' %} - -## ValueSQLNET - -Add or update a value associated with the specified key. The parameter "value" from the previously resolved expression is used. - -{% include template-example.html %} -{% highlight csharp %} -DECLARE @sqlnet SQLNET = SQLNET::New('var list = new List() { 1, 2, 3, 4}') -DECLARE @result SQLNET = @sqlnet.EvalSQLNET() - --- SELECT 4 -SELECT SQLNET::New('x.Count').ValueSQLNET('x', @result).Eval() AS Result - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/3149e/2' %} - -## GetValue - -Gets the value associated with the specified key. - - - GetValue(string key) - - GetValueBigInt(string key) - - GetValueBit(string key) - - GetValueInt(string key) - - GetValueSmallInt(string key) - - GetValueString(string key) - - GetValueTinyInt(string key) - -{% include template-example.html %} -{% highlight csharp %} --- SELECT 1 -SELECT SQLNET::New('x + 1').Val('x', 1).GetValue('x') as Result - --- SELECT 1 -SELECT SQLNET::New('x + 1').Val('x', 1).GetValueBigInt('x') as Result - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/3149e/6' %} diff --git a/docs/pages/faq/faq-eval-sql-net.md b/docs/pages/faq/faq-eval-sql-net.md deleted file mode 100644 index 0f425fd..0000000 --- a/docs/pages/faq/faq-eval-sql-net.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -permalink: faq-eval-sql-net ---- - -## Bug Fixing - -You find a bug when compiling? [Report it](https://github.com/zzzprojects/Eval-SQL.NET/issues) and it will be fixed usually within one business day. - -## Namespace - -All namespace support by SQL CLR are supported by Eval SQL.NET. - -[Supported .NET Framework Libraries](https://msdn.microsoft.com/en-us/library/ms403279.aspx) - - - CustomMarshalers - - Microsoft.VisualBasic - - Microsoft.VisualC - - mscorlib - - System - - System.Configuration - - System.Data - - System.Data.OracleClient - - System.Data.SqlXml - - System.Deployment - - System.Security - - System.Transactions - - System.Web.Services - - System.Xml - - System.Core.dll - - System.Xml.Linq.dll - - All common namespace and extensions method can be used without specifying the fullname. - -You can see the full list [here](https://github.com/zzzprojects/Eval-SQL.NET/blob/master/src/Z.Expressions.SqlServer.Eval/EvalContext/EvalContext.RegisterDefaultAlias.cs) - -Let us know if you believe we have missing some. - -## Performance - -You are worried about performance? Don't worry, Eval SQL.NET is super-fast and can evaluate over 150,000 expressions in a loop under one second and over 1,000,000 using a table! - -Result highly vary depending of your SQL Server performance and expression to evaluate. - -{% include template-example.html %} -{% highlight csharp %} - -DECLARE @startTime DATETIME, -@endTime DATETIME - -DECLARE @I INT = -1 -DECLARE @sqlnet SQLNET = SQLNET::New('i + 1') --- LET Compile the expression to check the compiled performance -SET @I = @sqlnet.Val('i', @I).EvalInt() - -SET @startTime = GETDATE() - -WHILE @I < 125000 - BEGIN - SET @I = @sqlnet.ValueInt('i', @I).EvalInt() - END - -SET @endTime = GETDATE() -PRINT 'StartTime = ' + CONVERT(VARCHAR(30), @startTime, 121) -PRINT 'EndTime = ' + CONVERT(VARCHAR(30), @endTime, 121) -PRINT 'Duration = ' + CONVERT(VARCHAR(30), @endTime - @starttime, 114) - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/3149e/10' %} - -## Security - -SQL CLR allow three type of permission: - - - SAFE - - EXTERNAL_ACCESS - - UNSAFE Eval SQL.NET support all types and is installed by default with SAFE permissions. Read more about [SQL CLR Permissions](https://msdn.microsoft.com/en-CA/library/ms345101.aspx) - -## SQL Injection - -This library allow to use parameter, so no SQL Injection is possible! - -However if you build the string to evaluate as you build a dynamic SQL, then there is nothing we can do for you. - -## Decimal throw an error! - -In C#, decimal must be suffixed with "m" to make them valid. By default "1.1" in C# is a double which cannot be added with decimal value. - -{% include template-example.html %} -{% highlight csharp %} - -// Trow exception -SELECT SQLNET::New('(x)+1.1234').Val('x', 1.1).Eval() as Result - --- SELECT 2.2234 -SELECT SQLNET::New('(x)+1.1234m').Val('x', 1.1).Eval() as Result -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/3149e/11' %} diff --git a/docs/pages/faq/faq-general.md b/docs/pages/faq/faq-general.md deleted file mode 100644 index e811f8b..0000000 --- a/docs/pages/faq/faq-general.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -permalink: faq-general ---- - -## Which Payment method do you support? -We support the following payment method: - -- PayPal -- Check -- Bank Transfer - -## Can I purchase this product from a Reseller? -Yes, just let him know to contact us. - -## What's your average SLA response and resolution times? -We try to provide an outstanding support service. - -We normally answer very fast, often within one hour. - -Most fixes is resolved within one business day. - -## Do you support EF Core -We do not yet. We are currently re-writing the library to support it. diff --git a/docs/pages/faq/faq-installation.md b/docs/pages/faq/faq-installation.md deleted file mode 100644 index 9857da8..0000000 --- a/docs/pages/faq/faq-installation.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -permalink: faq-installation ---- - -## How to I Install your product? -It simple, you download it from NuGet and add it to your project. - -More Info: [Tutorials - Installing](installing) - -## I have installed your product, but I don't see your extensions method -- Make sure to install it in the right project -- Make sure your project support .NET40 or better diff --git a/docs/pages/faq/faq-license.md b/docs/pages/faq/faq-license.md deleted file mode 100644 index 4a59e5d..0000000 --- a/docs/pages/faq/faq-license.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -permalink: faq-license ---- - -## Developer Seat - -### What's a developer seat? -A developer seat is a developer working for your company and developing code directly with our product. - -You don't have to purchase developer seat for front-end developer or back-end developer which doesn't use our product API. - -Since you buy developer seat, you can develop an unlimited amount of projects within your company. - -### What's the cost for additional developer seat? -The cost for additional developer seat is usually extremely low. We want to make sure our library is accessible for small and large company. - -### Do developer seat are transferable? -Yes, a developer seat can be transferred to any employee within your company. - -## Perpertual License - -### What's a perpetual license? -A perpetual license allows you to use the licensed product indefinitely. - -### Even when my Support & Upgrade is expired? -Yes. - -## Support & Upgdrade - -### My support & upgrade have expired! What will happen? -Don't worry. Your product continue to work forever! - -You can still download and use any version released before the support & upgrade expiration date. - -You will need to renew to use version released after the support & upgrade expiration date. - -### How do I renew my License? -We usually start to send renewal mail two months before the support & upgrade expiration date. - -If you didn't receive such email, you could contact us directly: info@zzzprojects.com - -### Can I have renewal discount? -We provide a 25% discount to early renewal. So anyone renewing before the support & upgrade expiration date automatically get a renewal discount. - -### I'm too late for early renewal discount! What can I do? -If you are few day late, we still provide early renewal discount. - -However, if you have few months late, you will need to purchase the library again. - -The best way to find out if you still have access to early renewal discount is by contacting us: info@zzzprojects.com - -### Why should I renew? -Renewing your support & upgrade give the following benefits: - -- Major version releases and new product features -- Fast support by mail -- Protection against price increases during the maintenance term - -## Royalty Free - -### Is Eval-SQL.NET Royalty Free? -Yes, the product is royalty free. - -This mean, you can develop a project and install it on thousands of clients. - -You paid for developer seat within your company. - -Some standard royalty free limitations: - -- You can't sell a similar product and claim it's yours. -- If your customer has access to your source code and develops using our API, they will have to purchase a license. diff --git a/docs/pages/faq/faq.md b/docs/pages/faq/faq.md deleted file mode 100644 index 4b33eba..0000000 --- a/docs/pages/faq/faq.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -permalink: faq ---- -## FAQ - -- [Contact Us](contact-us) -- [Issue Tracker](issue-tracker) -- [General](faq-general) -- [Installation](faq-installation) -- [License](faq-license) -- [Eval SQL.NET](faq-eval-sql-net) diff --git a/docs/pages/faq/issue-tracker.md b/docs/pages/faq/issue-tracker.md deleted file mode 100644 index e3454b8..0000000 --- a/docs/pages/faq/issue-tracker.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -permalink: issue-tracker ---- - -## Where is your Issue Tracker? - -While we prefer to be contacted directly: info@zzzprojects.com - -We understand some people prefer to have an online issue tracker to follow and comment their issues. - -You can create issue here: - -- [Issue Tracker](https://github.com/zzzprojects/Eval-SQL.NET/issues) diff --git a/docs/pages/problems/problems.md b/docs/pages/problems/problems.md deleted file mode 100644 index 6d20dda..0000000 --- a/docs/pages/problems/problems.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -permalink: problems ---- - -## Troubleshooting - -- [SQL Server Eval](sql-server-eval) -- [SQL Server Function (UDF)](/sql-server-function) -- [SQL Server File Operation](/sql-server-file-operation) -- [SQL Server Regex](/sql-server-regex) diff --git a/docs/pages/problems/sql-server-eval.md b/docs/pages/problems/sql-server-eval.md deleted file mode 100644 index 3e80865..0000000 --- a/docs/pages/problems/sql-server-eval.md +++ /dev/null @@ -1,158 +0,0 @@ ---- -permalink: sql-server-eval ---- -## Introduction - -How to evaluate an arithmetic expression in SQL Server is a common subject. There are several reasons why an "Eval" function like JavaScript could be useful in SQL such as evaluating custom report field for a trusted user. - -Multiple partial solutions exists like using "EXEC(Transact-SQL)" which is limited, cannot be used inside SELECT statement and lead to SQL Injection or using an homemade function which, most of time, fail at supporting simple operator priority and parenthesis. - -**SQL Eval.NET** is a complete solution which, not only lets you evaluate dynamic arithmetic expression, but lets you use the full C# language directly in T-SQL stored procedures, functions and triggers. - -{% include template-example.html %} -{% highlight csharp %} -DECLARE @tableFormula TABLE (Formula VARCHAR(255), X INT, Y INT, Z INT) - -INSERT INTO @tableFormula -VALUES ( 'x+y*z', 1, 2, 3 ), - ( '(x+y)*z', 1, 2, 3 ) - --- Select_0: 7 --- Select_1: 9 -SELECT SQLNET::New(Formula).ValueInt('x', X).ValueInt('y', Y).ValueInt('z', Z).EvalInt() as Result -FROM @tableFormula -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/2f73a/1' %} - -## SQL Eval - Arithmetic / Math Expression - -### Problem - -You need to evaluate a dynamic arithmetic operation specified by a trusted user or check a dynamic rule. - - - Dynamic report calculation field - - Dynamic report query filter - - Dynamic rule validation - -### Solution - -Eval SQL.NET supports all C# operators including operators precedence and parenthesis. - -Evaluating an expression is very fast and scalable. You can see performance 3-20x faster than User-Defined Function (UDF) and you can evaluate an expression as much as ONE MILLION times under a second. - -{% include template-example.html %} -{% highlight csharp %} -DECLARE @items TABLE (Quantity INT, Price MONEY) - -INSERT INTO @items -VALUES ( 2, 10 ), - ( 9, 6 ), - ( 15, 2 ), - ( 6, 0 ), - ( 84, 5 ) - -DECLARE @customColumn SQLNET = SQLNET::New('(quantity * price).ToString("$#.00")') -DECLARE @customFilter SQLNET = SQLNET::New('quantity > 3 && price > 0') - --- Select_0: 9, 6.00, $54.00 --- Select_1: 15, 2.00, $30.00 --- Select_2: 84, 5.00, $420.00 -SELECT * , - @customColumn.ValueInt('quantity', Quantity).Val('price', Price).EvalString() as Result -FROM @items -WHERE @customFilter.ValueInt('quantity', Quantity).Val('price', Price).EvalBit() = 1 -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/4ed27/1' %} - -## SQL Eval - Dynamic Expression - -### Problem - -You need to evaluate and execute a dynamic SQL expression which requires more than basic arithmetic operators. - - - if/else - - switch/case - - try/catch - -### Solution - -Eval SQL.NET is flexible and supports almost all C# keywords and features including: - - - Anonymous Type - - Generic Type - - Lambda Expression - - LINQ - -{% include template-example.html %} -{% highlight csharp %} -CREATE PROCEDURE [dbo].[Select_Switch] @x INT, @y INT, @z INT -AS - BEGIN - DECLARE @result INT - - SET @result = SQLNET::New(' -switch(x) -{ - case 1: return y + z; - case 2: return y - z; - case 3: return y * z; - default: return Convert.ToInt32(y ^^ z); // Pow -} - ').ValueInt('x', @x).ValueInt('y', @y).ValueInt('z', @z).EvalInt() - - SELECT @result as Result - END - -GO - --- RETURN 5 -EXEC Select_Switch 1, 2, 3 --- RETURN -1 -EXEC Select_Switch 2, 2, 3 --- RETURN 6 -EXEC Select_Switch 3, 2, 3 --- RETURN 8 -EXEC Select_Switch 4, 2, 3 -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/6b73d/2' %} - -## SQL Eval - Framework class Library - -### Problem - -You have a complex SQL and you know C# Syntax and C# Object could make this problem very easy. - - - Regex - - DirectoryInfo / FileInfo - - String.Format - -### Solution - -Eval SQL.NET improve readability and maintainability over complex SQL. It supports all [.NET framework class libraries](https://msdn.microsoft.com/en-us/library/gg145045.aspx) (FCL) that are supported by [SQL CLR Framework Libraries](https://docs.microsoft.com/en-us/sql/relational-databases/clr-integration/database-objects/supported-net-framework-libraries). - -{% include template-example.html %} -{% highlight csharp %} --- CREATE test -DECLARE @t TABLE (Id INT , Input VARCHAR(MAX)) -INSERT INTO @t VALUES ( 1, '1, 2, 3; 4; 5' ), ( 2, '6;7,8;9,10' ) - --- SPLIT with many delimiters: ',' and ';' -DECLARE @sqlnet SQLNET = SQLNET::New('Regex.Split(input, ",|;")') - -SELECT * -FROM @t AS A - CROSS APPLY ( SELECT * - FROM dbo.SQLNET_EvalTVF_1(@sqlnet.ValueString('input', Input)) - ) AS B -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/ca1ba/2' %} - -## Conclusion - -Eval SQL.NET can really be seen in SQL Server as the function "eval()" equivalent of JavaScript. Unlike common solutions limited to very simple math expressions, Eval SQL.NET features go way beyond: - - - Access to C# Operators - - Access to C# Keywords - - Access to C# Objects - -Getting better performance than User-Defined Function (UDF) and Table-Valued Function (TVF) is the Icing on the Cake! diff --git a/docs/pages/problems/sql-server-file-operation.md b/docs/pages/problems/sql-server-file-operation.md deleted file mode 100644 index aaf5516..0000000 --- a/docs/pages/problems/sql-server-file-operation.md +++ /dev/null @@ -1,141 +0,0 @@ ---- -permalink: sql-server-file-operation ---- - -## Introduction - -Reading and writing files are basic requirements for importing/exporting data through SQL server jobs. The xp_cmdshell stored procedure is often used but not a lot of developers and DBA are comfortable coding with it. The syntax makes the code often ugly, hard to develop and expensive to maintain due to the lack of good documentation, flexibility and understanding. - -Some DBA don't recommend and even ban all use of the procedure xp_cmdshell from their environment due to security issues. - -Eval SQL.NET allows you to use C# features and objects such as FileInfo and DirectoryInfo directly in T-SQL and improves code readability. It's the safest alternative to replace xp_cmdshell to access external resources by letting impersonate the current user context. - -It's safe and easy to use. - -{% include template-example.html %} -{% highlight csharp %} --- REQUIRE EXTERNAL_ACCESS permission -DECLARE @sqlnet SQLNET = SQLNET::New(' -string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - -var dir = new DirectoryInfo(path); -return dir.GetFiles("*.*").Select(x => x.FullName).OrderBy(x => x).ToList();') - .Impersonate() - --- SELECT * FROM DesktopFiles ORDER BY File.Fullname -EXEC dbo.SQLNET_EvalResultSet @sqlnet -{% endhighlight %} - -## SQL File Operation - Better flexibility - -### Problem - -You need to perform file operations but SQL xp_cmdshell limits you. - - - Return multiple column result back - - Passing parameter easier - - Impersonation - -### Solution - -Eval SQL.NET lets you use C# language and makes file operations very easy to perform. - -{% include template-example.html %} -{% highlight csharp %} - --- REQUIRE EXTERNAL_ACCESS permission -DECLARE @FileInfo TABLE - ( - FilePath VARCHAR(255) , - FileContent VARCHAR(MAX) - ) - -DECLARE @sqlnet SQLNET = SQLNET::New(' -string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - -var dir = new DirectoryInfo(path); -return dir.GetFiles("*.*").Select(x => new Tuple( - x.FullName, File.ReadAllText(x.FullName))) - .OrderBy(x => x).ToList();').Impersonate() - --- SELECT Path, FileText FROM DesktopFiles ORDER BY File.Fullname -INSERT INTO @FileInfo - EXEC dbo.SQLNET_EvalResultSet @sqlnet - -SELECT * -FROM @FileInfo - -{% endhighlight %} - - -## SQL File Operation - Better maintainability - -### Problem - -You need to develop a file operation but you're afraid your code will be very hard to maintain. - -### Solution - -Eval SQL.NET improves the maintainability by letting you use well known and well documented C# objects such as DirectoryInfo and FileInfo. - -{% include template-example.html %} -{% highlight csharp %} --- REQUIRE EXTERNAL_ACCESS permission --- BACKUP all ".txt" files created before 3 days ago --- RETURN the number of files affected - -SELECT SQLNET::New(' -string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); -string backupPath = Path.Combine(path, "Backup_" + DateTime.Now.ToString("yyyyMMdd")); - -DirectoryInfo desktopDirectory = new DirectoryInfo(path); -DirectoryInfo backupDirectory = new DirectoryInfo(backupPath); - -// ENSURE the directory exists -backupDirectory.Create(); - -// GET file to backup -var backupFiles = desktopDirectory.GetFiles("*.txt") - .Where(x => x.CreationTime < DateTime.Now.AddDays(-3)) - .ToList(); - -// COPY files to backup directory -backupFiles.ForEach(x => x.CopyTo(x.FullName.Replace(path, backupPath))); - -// RETURN the number of affected files -return backupFiles.Count; -').Impersonate().EvalReadAccessInt() as Result - -{% endhighlight %} - -## SQL File Operation - Better readability - -### Problem - -You need to perform file operations but the code soon becomes hard to understand and to change. - -### Solution - -Eval SQL.NET improves the readability by letting you use well known C# objects that wrap logic such as DirectoryInfo and FileInfo. - -## SQL File Operation - Better security - -### Problem - -You need to perform file operations but you don't want to enable xp_cmdshell in your SQL Server. - -### Solution - -Eval SQL.NET lets you perform file operations and change the security context to impersonate the credential of the one who runs the T-SQL statements. - -## Conclusion - -Eval SQL.NET grants you easy access to external resources through the C# language in T-SQL jobs and objects. - -It's a safe SQL alternative to xp_cmdshell and offers multiple advantages: - - - Improve Flexibility: Access to C# Language in SQL - - Improve Maintainability: FileInfo and DirectoryInfo are well-known/documented objects - - Improve Readability: C# is without a doubt easier to read than T-SQL for complex code - - Improve Security: Impersonate user context - diff --git a/docs/pages/problems/sql-server-function.md b/docs/pages/problems/sql-server-function.md deleted file mode 100644 index 0c03be7..0000000 --- a/docs/pages/problems/sql-server-function.md +++ /dev/null @@ -1,223 +0,0 @@ ---- -permalink: sql-server-function ---- - -## Introduction - -User-Defined Function (UDF) encapsulates code to make it easier to reuse. However, there are some limitations and restrictions: - - - Cannot call stored procedure - - Cannot use try/catch - - Cannot modify table state - - Cannot run dynamic sql - -**Eval SQL.NET** enhances function capabilities and lets you use C# language directly in T-SQL functions to overcome their limitations and restrictions. - -## SQL Function - Better readability - -### Problem - -You need to write a function but the code soon becomes very complex and unmaintainable. - -### Solution - -Eval SQL.NET improves the readability and maintainability of complex functions by using well-known C# objects. - -{% include template-example.html %} -{% highlight csharp %} - -DECLARE @s VARCHAR(MAX) = '1, 2, 3; 4; 5' -DECLARE @sqlnet SQLNET = SQLNET::New('Regex.Split(input, ",|;")') - -SELECT * -FROM dbo.SQLNET_EvalTVF_1(@sqlnet.ValueString('input', @s)) - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1069' %} - -### Discussion - -For simple code, SQL syntax may work like a charm but when the code's complexity increases, less SQL is best suited for the job. It is designed to write queries, not to create long spaghetti code. We all have seen some functions that could have been written so much easier using another language like C#. - -One of the most common function is probably the fn_split function. It's not that hard to understand but thousands of variance exist and most of them are limited to only one delimiter. Using Eval SQL.NET, the fn_split function takes regular expression to split text which makes it very powerful. - - -## SQL Function - Error handling - -### Problem - -You need to handle an error with a TRY/CATCH but you receive the SQL error: - - - *Invalid use of a side-effecting operator 'BEGIN TRY' within a function.* - - *Invalid use of a side-effecting operator 'END TRY' within a function.* - - *Invalid use of a side-effecting operator 'BEGIN CATCH' within a function.* - - *Invalid use of a side-effecting operator 'END CATCH' within a function.* - -### Solution - -Eval SQL.NET makes it possible to handle errors with TRY/CATCH within a T-SQL function. - -{% include template-example.html %} -{% highlight csharp %} - -CREATE FUNCTION [dbo].[fn_try_catch] ( @x INT, @y INT ) -RETURNS INT -AS - BEGIN - RETURN SQLNET::New(' -try -{ - return x / y -} -catch (Exception ex) -{ - return x; -} -').ValueInt('x', @x).ValueInt('y', @y).EvalInt() - - END - -GO - --- SELECT 4 -SELECT dbo.fn_try_catch(4, 0) as Result - --- SELECT 2 -SELECT dbo.fn_try_catch(4, 2) as Result - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/d0cf1/1' %} - -## SQL Function - Call stored procedure - -### Problem - -You need to call a procedure within a function but you receive the SQL error: - - - *Only functions and some extended stored procedures can be executed from within a function.** - -### Solution - -Eval SQL.NET makes it possible to call stored procedures within a T-SQL function. - -{% include template-example.html %} -{% highlight csharp %} - -CREATE FUNCTION [dbo].[fn_CallProcedure] ( ) -RETURNS SQL_VARIANT -AS - BEGIN - RETURN SQLNET::New(' -defaultCommand.CommandText = "[PROCEDURE_NAME]"; -defaultCommand.CommandType = CommandType.StoredProcedure; -defaultCommand.Parameters.AddWithValue("name", name); -return defaultCommand.ExecuteScalar(); -').ValueString('name', 'zzz').Eval() - - END - -{% endhighlight %} - -Using this feature is highly **NOT RECOMMANDED**. - -## SQL Function - Modify table state - -### Problem - -You need to insert, update or delete data within a function but you receive the SQL error: - -User-defined functions cannot be used to perform actions that modify the database state. - -### Solution - -Eval SQL.NET makes it possible to modify table state (insert, update and delete) within a T-SQL function. - -{% include template-example.html %} -{% highlight csharp %} - -CREATE FUNCTION [dbo].[fn_modify_table_state] - ( - @conn VARCHAR(8000) , - @sql VARCHAR(8000) - ) -RETURNS INT -AS - BEGIN - RETURN SQLNET::New(' -using(var connection = new SqlConnection(conn)) -{ - connection.Open(); - - using(var command = new SqlCommand(sql, connection)) - { - return command.ExecuteNonQuery(); - } -} -').ValueString('conn', @conn).ValueString('sql', @sql).EvalReadAccessInt() - - END - - GO - -DECLARE @conn VARCHAR(8000) = 'Data Source=XPS8700;Initial Catalog=SqlServerEval_Debug;Integrated Security=True' -DECLARE @sql VARCHAR(8000) = 'UPDATE [Table_1] SET Value = -1 WHERE Name = ''zzz''' - -DECLARE @rowAffecteds INT = dbo.fn_modify_table_state(@conn, @sql) - -{% endhighlight %} - -Using this feature is highly **NOT RECOMMANDED**. - -## SQL Function - Run dynamic SQL - -### Problem - -You need to "EXECUTE" a string within a function but you receive the SQL error: - -Invalid use of a side-effecting operator 'EXECUTE STRING' within a function. - -### Solution - -Eval SQL.NET makes it possible to run "EXECUTE" and evaluate dynamic expressions within a T-SQL function. - -{% include template-example.html %} -{% highlight csharp %} - -CREATE FUNCTION [dbo].[fn_Exec_Count] ( @sql VARCHAR(8000) ) -RETURNS INT -AS - BEGIN - RETURN SQLNET::New(' -var dt = new DataTable(); -var s = "Data Source=XPS8700;Initial Catalog=SqlServer_Eval;Integrated Security=True"; -using(var connection = new SqlConnection(s)) -{ - connection.Open(); - - using(var command = new SqlCommand()) - { - command.Connection = connection; - command.CommandText = "EXEC(''" + sql + "'')"; - dt.Load(command.ExecuteReader()); - return dt.Rows.Count; - } -} -').ValueString('sql', @sql).EvalReadAccessInt() - - END - -GO - --- SELECT 2 -SELECT dbo.fn_Exec_Count('SELECT 1 UNION SELECT 2') as Result - -{% endhighlight %} - -Using this feature is highly **NOT RECOMMANDED**. - -## Conclusion - -Eval SQL.NET improve the readability and make the code easier to develop and maintain with C# syntax over complex SQL code. - -Even if you are now allowed to make some table modification, we don't recommend using this feature and use a stored procedure instead. Make sure you use the right tool for the right job. - diff --git a/docs/pages/problems/sql-server-regex.md b/docs/pages/problems/sql-server-regex.md deleted file mode 100644 index 4f95a4f..0000000 --- a/docs/pages/problems/sql-server-regex.md +++ /dev/null @@ -1,230 +0,0 @@ ---- -permalink: sql-server-regex ---- - -## Introduction - -Finding or replacing text in SQL is a very frequent scenario. "LIKE" and "PATHINDEX" are often used but, unfortunately, are not close to be as much powerful and offering the same possibilities as regular expression (Regex) does. - -Eval SQL.NET lets you use and exploit fully C# regular expression features directly in T-SQL stored procedures, functions and triggers. It's possible to use regex in SQL search condition and select statement. - -{% include template-example.html %} -{% highlight csharp %} - -DECLARE @customer TABLE ( Email VARCHAR(255) ) - -INSERT INTO @customer -VALUES ( 'info@zzzprojects.com' ), - ( 'invalid.com' ), - ( 'sales@zzzprojects.com' ) - -DECLARE @valid_email SQLNET = SQLNET::New('Regex.IsMatch(email, -@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")') - --- SELECT 'invalid.com' -SELECT * FROM @customer WHERE @valid_email.Val('email', Email).EvalBit() = 0 - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/213f9/1' %} - - -## SQL Regex - IsMatch - -### Problem - -You need to perform a rule validation or search with a condition to find valid/invalid rows but "LIKE" and "PATHINDEX" limitations don't cover your requirements: - - - Find customer with invalid email - - Find customer with invalid phone - - Find customer with invalid website - - Validate password - -### Solution - -SQL Regex IsMatch indicates whether the regular expression finds a match in the string or not. - -{% include template-example.html %} -{% highlight csharp %} - -DECLARE @customer TABLE ( Email VARCHAR(255) ) - -INSERT INTO @customer -VALUES ( 'info@zzzprojects.com' ), - ( 'invalid.com' ), - ( 'sales@zzzprojects.com' ) - -DECLARE @valid_email SQLNET = SQLNET::New('Regex.IsMatch(email, -@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")') - --- SELECT 'invalid.com' -SELECT * FROM @customer WHERE @valid_email.ValueString('email', Email).EvalBit() = 0 - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/213f9/2' %} - -## SQL Regex - Match - -### Problem - -You need to extract the first occurrence from a string such as user profile description: - - - Extract the first email - - Extract the first phone - - Extract the first website - -### Solution - -SQL Regex Match searches in a string for the first occurrence of the regular expression and returns the match. - -{% include template-example.html %} -{% highlight csharp %} - -DECLARE @shortDescription VARCHAR(800) = 'zzz ... zzz... http://zzzprojects.com ... zzzz' -DECLARE @website VARCHAR(255) = NULL; - -IF ( @website IS NULL ) - BEGIN - -- IF user has not specified a website, try get it from the short description - SET @website = SQLNET::New(' -string value = Regex.Match(shortDescription, -"(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})").Value; - -return value != "" ? value : null; -') - .ValueString('shortDescription', @shortDescription) - .EvalString(); - END - --- return 'http://zzzprojects.com' -SELECT @website - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1012' %} - - -## SQL Regex - Matches - -### Problem - -You need to extract all occurrences from a string such as blog post: - - - Extract all emails - - Extract all phones - - Extract all websites - -### Solution - -SQL Regex Matches searches in the string for all occurrences of the regular expression and returns all the matches. - -{% include template-example.html %} -{% highlight csharp %} - -DECLARE @post VARCHAR(800) = 'zzz ... zzz... http://zzzprojects.com ... zzzz -. zzz... https://github.com/zzzprojects/Eval-SQL.NET ... zzzz -. zzz... zzz... https://github.com/zzzprojects/Eval-Expression.NET ... zzzz -. zzz.... zzz.... zzz... https://github.com/zzzprojects/EntityFramework-Plus ... zzzz -' - -DECLARE @websites TABLE ( Website VARCHAR(250) ) - -DECLARE @sqlnet_matchs SQLNET = SQLNET::New(' -var matches = Regex.Matches(post, -"(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})"); - -var list = new List(); -foreach(Match match in matches) -{ - list.Add(match.Value); -} - -return list; -').ValueString('post', @post) - - -INSERT INTO @websites - SELECT CAST(Value_1 AS VARCHAR(250)) - FROM dbo.SQLNET_EvalTVF_1(@sqlnet_matchs) - --- SELECT 'http://zzzprojects.com' --- SELECT 'https://github.com/zzzprojects/Eval-SQL.NET' --- SELECT 'https://github.com/zzzprojects/Eval-Expression.NET' --- SELECT 'https://github.com/zzzprojects/EntityFramework-Plus' -SELECT * FROM @websites - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/d48e7/3' %} - -## SQL Regex - Replace - -### Problem - -You need to convert, remove or substitute a text with a specific format: - - - Convert plain url to html link - - Remove phones - - Substitute name in text template - -### Solution - -SQL Regex Replace searches for strings that match a regular expression pattern and replaces a value with a replacement string. - -{% include template-example.html %} -{% highlight csharp %} - -DECLARE @post VARCHAR(800) = 'website: http://zzzprojects.com' - -SET @post = SQLNET::New(' -var input = post; -var pattern = @"(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})"; -var replacement = "$1"; - -return Regex.Replace(input, pattern, replacement); -').ValueString('post', @post).EvalString() - --- SELECT 'website: http://zzzprojects.com' -SELECT @post - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/b308e/1' %} - -## SQL Regex - Split - -### Problem - -You need to split a string but the traditional "fn_split" method is limited and doesn't cover your scenario: - - - Use multiple delimiter - - Keep the delimiter in value - - Split the first X occurrences - -### Solution - -SQL Regex Split lets you split a string into an array of substrings using a regular expression. - -{% include template-example.html %} -{% highlight csharp %} - -DECLARE @s VARCHAR(MAX) = '1, 2, 3; 4; 5' -DECLARE @sqlnet SQLNET = SQLNET::New('Regex.Split(input, ",|;")') - -SELECT * -FROM dbo.SQLNET_EvalTVF_1(@sqlnet.ValueString('input', @s)) - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1069' %} - -### Discussion - -If you are currently using an fn_split User-Defined Functions (UDF), this benchmark will probably make change your mind! - -|Methods |1,000 rows |10,000 rows |100,000 rows |1,000,000 rows | -|:--------- |:--------- |:------------- |:------------- |:------------- | -|Eval SQL.NET |4 ms |13 ms |160 ms |1,650 ms| -fn_split (TVF) |100 ms |625 ms |5,500 ms |55,000 ms| - -## Conclusion - -Eval SQL.NET offers all advanced C# regular expression features in T-SQL statements and search conditions. Even more, you can use C# syntax to return from SQL what you really want and not only the regex result. - -While it should never replace scenarios where pure SQL operators/functions such as "LIKE" and "PATHINDEX" are sufficient, Eval SQL.NET will help you easily cover all unsupported ones. - diff --git a/docs/pages/site/contact-us.md b/docs/pages/site/contact-us.md deleted file mode 100644 index 05f23bf..0000000 --- a/docs/pages/site/contact-us.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -permalink: contact-us ---- - -
-
-
- -
-## Test our `Outstanding` Support -We usually answer within the next business day, hour, or minutes! - -We love to hear from you! - -## I have a question! What should I do? - -The best way to ask us questions. - -Contact us directly: - -- If you want a more personal answer -- If your question is not suited for Stack Overflow -- If your message contains private information - -## I think I've found a bug! What should I do? -The best way to report an issue is using our [Issues Tracker](https://github.com/zzzprojects/Eval-SQL.NET/issues){:target="_blank"} - -Make sure to include: -- Entity Framework Version -- Entity Framework Extensions Version -- Database Provider - -Contact us directly: - -- If you want a more personal answer -- If your question is not suited for the Issue Tracker -- If your message contains private information - -## I think I've found a new feature! What should I do? -The best way to request a new feature is using our [Issues Tracker](https://github.com/zzzprojects/Eval-SQL.NET/issues){:target="_blank"} - -Contact us directly: - -- If you want a more personal answer -- If your question is not suited for the Issue Tracker -- If your message contains private information - -## I think you forget about my request! What should I do? -Just contact us back again, and we will make sure we don't miss it again! -
-
-
-
-
-

Contact Info

-
-
-

General

- info@zzzprojects.com -

Sales

- sales@zzzprojects.com -

Issues & Features

- Issues Tracker -
-
-

-
-
-
diff --git a/docs/pages/site/download.md b/docs/pages/site/download.md deleted file mode 100644 index ac60812..0000000 --- a/docs/pages/site/download.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -permalink: download ---- - -
-
-
-
-
- -
- - - Download - -
Download Count:
-
- - - -
-
-
-
-
-
-
- -
-
---- -## FAQ - -### How can I extend my trial? -The latest version always contains a trial that expires at the end of the month. You can extend your trial for several months by downloading the latest version at the start of every month. - -### Why this library is not free and open source? -`ZZZ Projects` mission is focused on adding value to the `.NET Community` and supporting a lot of `free and open source` libraries. - -However, this mission cannot be successful without being able to pay our developers for the time they pass to support & develop features for free and paid libraries. - -#### Free Librairies - -- [Html Agility Pack](http://html-agility-pack.net/){:target="_blank"} -- [Entity Framework Plus](http://entityframework-plus.net/){:target="_blank"} -- [Entity Framework DynamicFilter](https://github.com/zzzprojects/EntityFramework.DynamicFilters){:target="_blank"} -- [RefactorThis.GraphDiff](https://github.com/zzzprojects/GraphDiff){:target="_blank"} -- [Extension Methods](https://github.com/zzzprojects/Z.ExtensionMethods){:target="_blank"} - -#### Website - -- [.NET Fiddle](https://dotnetfiddle.net/){:target="_blank"} -- [SQL Fiddle](http://sqlfiddle.com/){:target="_blank"} -- [NuGet Must Haves](http://nugetmusthaves.com/){:target="_blank"} -- [Dapper Tutorial](http://dapper-tutorial.net/){:target="_blank"} - -By contributing on paid libraries, you are also helping in keeping other libraries and website FREE. - -
-
- - diff --git a/docs/pages/site/pricing.md b/docs/pages/site/pricing.md deleted file mode 100644 index 6fe47f4..0000000 --- a/docs/pages/site/pricing.md +++ /dev/null @@ -1,193 +0,0 @@ ---- -permalink: pricing ---- - - - - -
- -
-
- -
- - - - -

Every month, a FREE trial of the PRO version is available to let you evaluate all its features without limitations.

-

Step 1 - Choose License

-
- - -
- -

Step 2 - Purchase

-
- -
-
- - -
* Read the FAQ below for alternative payment methods.
-
- -
- -
- -
-
-

What is included?

-
-
-

License

-
    -
  •  Unlimited Maximum Characters
  • -
  •  Commercial License
  • -
  •  Royalty-Free
  • -
  •  Support & Upgrades (1 year)
  • -
-
-
-
-
-
- -
-
---- -## FAQ - -### Which payment alternative method are accepted? -We accept `PayPal`, `Cheque` and `Wire Transfer`. - -We **DO NOT** accept bitcoin and credit card. - -Please contact us for more information. - -Email: sales@zzzprojects.com - -### Do you accept reseller? -Yes contact us if you are a reseller or seeking for a reseller. - -Email: sales@zzzprojects.com - -### What `2-4` developer seats mean? -It mean that you can use the license with up 4 developers inside your team. - -The `5-9` developer seats mean you can use the license with up 9 developers. - -You only pay for developer seats. You can use our library with an unlimited amount of application, environment, server, and client machine. - -### I need more than `19 seats`, what can I do? -Please contact us with the number of seats required. We offer some additional great discount or enterprise license. - -Email: sales@zzzprojects.com - -### Is the license perpetual? -The product comes with a one year of support & upgrade but the license is perpetual (indefinitely use). So you are not forced to renew every year or renew at all. - -Renewing come with a lot of benefits such as a 25%/35%/50% discount on purchase price, discounted or free product, etc. - -### Why this library is not free and open source? -`ZZZ Projects` mission is focused on adding value to the `.NET Community` and supporting a lot of `free and open source` libraries. - -However, this mission cannot be successful without being able to pay our developers for the time they pass to support & develop features for free and paid libraries. - -#### Free Librairies - -- [Html Agility Pack](http://html-agility-pack.net/){:target="_blank"} -- [Entity Framework Plus](http://entityframework-plus.net/){:target="_blank"} -- [Entity Framework DynamicFilter](https://github.com/zzzprojects/EntityFramework.DynamicFilters){:target="_blank"} -- [RefactorThis.GraphDiff](https://github.com/zzzprojects/GraphDiff){:target="_blank"} -- [Extension Methods](https://github.com/zzzprojects/Z.ExtensionMethods){:target="_blank"} - -#### Website - -- [.NET Fiddle](https://dotnetfiddle.net/){:target="_blank"} -- [SQL Fiddle](http://sqlfiddle.com/){:target="_blank"} -- [NuGet Must Haves](http://nugetmusthaves.com/){:target="_blank"} -- [Dapper Tutorial](http://dapper-tutorial.net/){:target="_blank"} - -By contributing on paid libraries, you are also helping in keeping other libraries and website FREE. - -
-
- - - - diff --git a/docs/pages/site/trial.md b/docs/pages/site/trial.md deleted file mode 100644 index 3939ba2..0000000 --- a/docs/pages/site/trial.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: default -title: Trial -permalink: trial ---- - -Oops! Your trial has expired. - -### How can I extend my trial? -You can extend your trial for several months by downloading the latest version at the beginning of every month. - - - - Download - - - -### Where is the free version? -There is no free version. - -### How can I purchase a license? -A perpetual license can be purchased from here: Buy \ No newline at end of file diff --git a/docs/pages/tutorials.md b/docs/pages/tutorials.md deleted file mode 100644 index f1b7a25..0000000 --- a/docs/pages/tutorials.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -permalink: tutorials ---- - -
- -
-
-
-

Getting Started

-

Learn the Basics

-
-

Start learning about how to use Eval SQL.NET with our getting started tutorial.

-

- Learn more -

-
-
-
-
-

API

-

Application Program Interface

-
-

Start learning the common API of Eval SQL.NET, and everything around it.

-

- Learn more -

-
-
-
-
-

FAQ

-

Freqently Answered Question

-
-

Start learning Eval SQL.NET best practices and solution to the common problem you may encounter.

-

- Learn more -

-
-
-
-
-

Problems

-

Exception & Troubleshooting

-
-

Start learning how to fix and handle some exception and common troubleshooting error.

-

- Learn more -

-
-
-
diff --git a/docs/pages/tutorials/arithmetic-expressions.md b/docs/pages/tutorials/arithmetic-expressions.md deleted file mode 100644 index 5f7d3b9..0000000 --- a/docs/pages/tutorials/arithmetic-expressions.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -permalink: arithmetic-expressions ---- - -## Definition -An arithmetic expression is an expression that results in a numeric value. Try these examples to see how easy is to resolve an arithmetic expression. - -Eval SQL.NET is a complete C# runtime compiler which honor operator precedence and parenthesis. - -### Using formula & variables - - - -{% include template-example.html %} -{% highlight csharp %} -DECLARE @x INT = 2 -DECLARE @y INT = 4 -DECLARE @z INT = 6 - -DECLARE @result INT - -SET @result = SQLNET::New('x*y+z') - .ValueInt('x', @x) - .ValueInt('y', @y) - .ValueInt('z', @z) - .EvalInt() - --- SELECT 14 -SELECT @result as Result -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1101' %} - -### Using formula & table variables - -{% include template-example.html %} -{% highlight csharp %} - -DECLARE @table TABLE ( X INT, Y INT, Z INT ) - -INSERT INTO @table -VALUES ( 2, 4, 6 ), - ( 3, 5, 7 ), - ( 4, 6, 8 ) - --- 14 --- 22 --- 32 -DECLARE @sqlnet SQLNET = SQLNET::New('x*y+z') -SELECT @sqlnet.ValueInt('x', X) - .ValueInt('y', Y) - .ValueInt('z', Z) - .EvalInt() as Result -FROM @table - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/e44cf/2' %} - -### Using table formula & variables - -{% include template-example.html %} -{% highlight csharp %} - -DECLARE @table TABLE - ( - Formula VARCHAR(50) , - X INT , - Y INT , - Z INT - ) - -INSERT INTO @table -VALUES ( 'x*y+z', 2, 4, 6 ), - ( 'x+y*z', 2, 4, 6 ), - ( '(x+y)*z', 2, 4, 6 ) - --- 14 --- 26 --- 36 -DECLARE @sqlnet SQLNET = SQLNET::New('') -SELECT @sqlnet.Code(Formula) - .ValueInt('x', X) - .ValueInt('y', Y) - .ValueInt('z', Z).EvalInt() as Result -FROM @table -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/ed8f7/1' %} diff --git a/docs/pages/tutorials/installing.md b/docs/pages/tutorials/installing.md deleted file mode 100644 index 662f717..0000000 --- a/docs/pages/tutorials/installing.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -permalink: installing ---- - -**Eval SQL.NET** can be installed easily. - -This library is **NOT FREE** - -The latest version always contains a trial that expires at the end of the month. You can extend your trial for several months by downloading the latest version at the start of every month. - -## Download - -First, let install the library in a test database. - - - Create a new SQL Server database (using SQL Server 2012 or more recent) - - Install the latest version: Eval SQL.NET-Install.sql - - Read the SETUP section - - Change [DATABASE_NAME] by the newly created database name - - - - Download - \ No newline at end of file diff --git a/docs/pages/tutorials/licensing.md b/docs/pages/tutorials/licensing.md deleted file mode 100644 index 1a5892a..0000000 --- a/docs/pages/tutorials/licensing.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -permalink: licensing ---- - -## Evaluation Period -- You can evaluate the library for several months before purchasing it. -- The latest version always contains a trial that expires at the **end of the month**. -- You can extend your trial for several months by downloading the latest version at the start of every month. -- If you want to use the library for personal use or educational purpose, it's possible by downloading the latest version once per month. - -## How can I purchase the library? -- You can purchase the library [here](/pricing) -- Upon purchase, you will receive an email with a license name and a license key. -- Make sure to check your **SPAM** folder if you don't receive the license within 24h. - -## Setup License - -Upon purchase completion, an email will be sent with your license key information. - -{% include template-example.html %} -{% highlight csharp %} -CREATE PROCEDURE SQLNET_Configuration -AS -BEGIN - -- The procedure is automatically called when the server restart/assembly load - -- If the assembly is already loaded, a manual execution is required - -- EXEC SQLNET_Configuration - DECLARE @isValid BIT = SQLNET::AddLicense('[LicenseName]', '[LicenseKey]') - - -- SELECT 1 - SELECT @isValid -END -{% endhighlight %} - -*We recommend to always re-install the Eval-SQL.NET Script after enabling the license to ensure everything work if the server restart.* - -You can verify if the license is valid with the following command: - -{% include template-example.html %} -{% highlight csharp %} --- RETURN 1 if the license is valid. -SELECT SQLNET::AddLicense('[LicenseName]', '[LicenseKey]') - -{% endhighlight %} - diff --git a/docs/pages/tutorials/overview.md b/docs/pages/tutorials/overview.md deleted file mode 100644 index 5ba824c..0000000 --- a/docs/pages/tutorials/overview.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -permalink: overview ---- - -## Definition - - -**Eval SQL.NET** is a library that allow to evaluate dynamically C# expression directly in T-SQL. You never used Eval SQL.NET? Don't worry, this step-by-step walkthrough will help you to understand the library. - -Provide to your SQL Server all missing pieces like regular expression and dynamic arithmetic string evaluation. - -{% include template-example.html %} -{% highlight csharp %} --- SELECT 3 -SELECT SQLNET::New('x+y').ValueInt('x', 1).ValueInt('y', 2).EvalInt() as Result -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1105' %} - -### Find your solutions: - - - Dynamic Arithmetic Expression - - Dynamic Pivot Table - - Regular Expression - - String Interpolation - - Replace xp_cmdshell with DirectoryInfo & FileInfo - -## Performance & Scalability - -Performance tuning is one of the most important task for a DBA. Don't miss the chance to **dramatically improve query performance** by **300%** for simple expression and by more than **2000%** for complex code over User-Defined Function (UDF) and Table-Valued Function (TVF). - -| Methods | 1,000 rows | 10,000 rows | 100,000 rows | 1,000,000 rows | -| :-------------- | -------------: | -------------: | -------------: | -------------: | -| Eval-SQL.NET | 4 ms | 13 ms | 160 ms | 1,650 ms | -| fn_split (TVF) | 100 ms | 625 ms | 5,500 ms | 55,000 ms | - -*Benchmark to split string with delimiters in SQL* - -## Evaluate dynamic arithmetic/math expression in SQL - -Make the impossible now possible. Evaluate C# expression in SQL to overcome limitations. - -- Allow trusted users to create report field and filter -- Consume Web Service -- Replace text in template with String Interpolation - -{% include template-example.html title='Dynamic Expression Example' %} -{% highlight csharp %} --- CREATE test -DECLARE @table TABLE ( X INT, Y INT, Z INT ) -INSERT INTO @table VALUES ( 2, 4, 6 ), ( 3, 5, 7 ), ( 4, 6, 8 ) - --- Result: 14, 22, 32 -DECLARE @sqlnet SQLNET = SQLNET::New('x*y+z') -SELECT @sqlnet.ValueInt('x', X) - .ValueInt('y', Y) - .ValueInt('z', Z) - .EvalInt() as Result -FROM @table -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9bc9b/1' %} - -## Split text with delimiter - -Improve performance and capability for splitting text with an easy to use split function and LINQ expression - -- Split text with multiple delimiters -- Split text using a regular expression -- Include row index - - -{% include template-example.html title='Split Text Example' %} -{% highlight csharp %} --- CREATE test -DECLARE @t TABLE (Id INT , Input VARCHAR(MAX)) -INSERT INTO @t VALUES ( 1, '1, 2, 3; 4; 5' ), ( 2, '6;7,8;9,10' ) - --- SPLIT with many delimiters: ',' and ';' -DECLARE @sqlnet SQLNET = SQLNET::New('Regex.Split(input, ",|;")') - -SELECT * -FROM @t AS A - CROSS APPLY ( SELECT * - FROM dbo.SQLNET_EvalTVF_1(@sqlnet.ValueString('input', Input)) - ) AS B -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/98a4b/1' %} - -## Use regular expression in SQL Server - -Use Regex flexibility to overcome "LIKE" and "PATHINDEX" limitations. - - - IsMatch - - Match - - Matches - - Replace - - Split - -{% include template-example.html title='Regular Expression Example' %} -{% highlight csharp %} -DECLARE @customer TABLE ( Email VARCHAR(255) ) - -INSERT INTO @customer -VALUES ( 'info@zzzprojects.com' ), - ( 'invalid.com' ), - ( 'sales@zzzprojects.com' ) - -DECLARE @valid_email SQLNET = SQLNET::New('Regex.IsMatch(email, -@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")') - --- SELECT 'invalid.com' -SELECT * FROM @customer WHERE @valid_email.ValueString('email', Email).EvalBit() = 0 -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/79508/1' %} - -## Replace xp_cmdshell with restrictive alternative - -Avoid enabling xp_cmdshell and compromising your SQL Server and use instead a more restrictive solution. - - - Impersonate Context - - Improve maintainability - - Improve readability - - Improve security - -{% include template-example.html title='Example' %} -{% highlight csharp %} --- REQUIRE EXTERNAL_ACCESS permission -DECLARE @sqlnet SQLNET = SQLNET::New(' -string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - -var dir = new DirectoryInfo(path); -return dir.GetFiles("*.*") - .Select(x => new { x.FullName, FileContent = File.ReadAllText(x.FullName) }) - .OrderBy(x => x.FullName)')*9* - .Impersonate() - --- SELECT FullName, FileContext FROM DesktopFiles ORDER BY Fullname -EXEC dbo.SQLNET_EvalResultSet @sqlnet -{% endhighlight %} - -## Contribute - -The best way to contribute is by spreading the word about the library: - - - Blog it - - Comment it - - Fork it - - Star it - - Share it - - A **HUGE THANKS** for your help. diff --git a/docs/pages/tutorials/regular-expressions.md b/docs/pages/tutorials/regular-expressions.md deleted file mode 100644 index 47d9ae7..0000000 --- a/docs/pages/tutorials/regular-expressions.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -permalink: regular-expressions ---- - -## Definition - -Use Regex flexibility to overcome "LIKE" and "PATHINDEX" limitations. All Regex methods are also available such as; - - - IsMatch - - Match - - Matches - - Replace - - Split - -### Find rows with invalid email - -{% include template-example.html %} -{% highlight csharp %} -DECLARE @regex VARCHAR(255) = '^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$' -DECLARE @customer TABLE ( Email VARCHAR(255) ) - -INSERT INTO @customer -VALUES ( 'info@zzzprojects.com' ), - ( 'invalid.com' ), - ( 'sales@zzzprojects.com' ) - --- "Regex" is optional, you can directly use IsMatch -DECLARE @valid_email SQLNET = SQLNET::New('Regex.IsMatch(email, pattern') - .ValueString('pattern', @regex).Root() - --- SELECT 'invalid.com' -SELECT * -FROM @customer -WHERE @valid_email.Val('email', Email).EvalBit() = 0 -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/58f2b/1' %} - -### Find and insert in a table, all website from a text - - -{% include template-example.html %} -{% highlight csharp %} -DECLARE @websites TABLE ( Website VARCHAR(250) ) -DECLARE @regex VARCHAR(255) = '(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})' -DECLARE @post VARCHAR(MAX) = 'zzz ... zzz... http://zzzprojects.com ... zzzz -. zzz... https://github.com/zzzprojects/Eval-SQL.NET ... zzzz -. zzz... zzz... https://github.com/zzzprojects/Eval-Expression.NET ... zzzz -. zzz.... zzz.... zzz... https://github.com/zzzprojects/EntityFramework-Plus ... zzzz' - --- "Regex" is optional, you can directly use Matches -DECLARE @sqlnet SQLNET = SQLNET::New('Regex.Matches(input, pattern)') - .ValueString('input', @post) - .ValueString('pattern', @regex) - --- INSERT result in table -INSERT INTO @websites - SELECT CAST(Value_1 AS VARCHAR(250)) - FROM dbo.SQLNET_EvalTVF_1(@sqlnet) - --- SELECT result --- 'http://zzzprojects.com' --- 'https://github.com/zzzprojects/Eval-SQL.NET' --- 'https://github.com/zzzprojects/Eval-Expression.NET' --- 'https://github.com/zzzprojects/EntityFramework-Plus' -SELECT * FROM @websites -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1111' %} diff --git a/docs/pages/tutorials/requirements.md b/docs/pages/tutorials/requirements.md deleted file mode 100644 index 70a32ef..0000000 --- a/docs/pages/tutorials/requirements.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -permalink: requirements ---- - -## Minimus Requirements - -- SQL Server 2012+ -- SQL Azure -- SAFE Permission (SQL CLR) - -## SQL Server 2017 -- clr strict security disabled - -## EXTERNAL_ACCESS & UNSAFE permission -- database must be set TRUSTWORTHY ON diff --git a/docs/pages/tutorials/split-text.md b/docs/pages/tutorials/split-text.md deleted file mode 100644 index 1860a69..0000000 --- a/docs/pages/tutorials/split-text.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -permalink: split-text ---- - -## Definition - -Improve performance and capability for splitting text with an easy to use split function and LINQ expression - -- Split text with multiple delimiters -- Split text using a regular expression -- Include row index - -You probably already had to use the fn_split function in the past to split a string with a delimiter. They exists hundreds of variance for this function which are limited to one delimiter. - -Using C# code and String.Split or Regex.Split, you are no longer limited and can even use LINQ methods! - -### Split using single delimiter - -{% include template-example.html %} -{% highlight csharp %} -DECLARE @s VARCHAR(MAX) = '1, 2;3, 4|5' - -DECLARE @sqlnet SQLNET = SQLNET::New('s.Split(",")').ValueString('s', @s) - --- 1 --- 2;3 --- 4|5 -SELECT * -FROM dbo.SQLNET_EvalTVF_1(@sqlnet) -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1112' %} - -### Split using multiple delimiters - -{% include template-example.html %} -{% highlight csharp %} - -DECLARE @s VARCHAR(MAX) = '1, 2;3, 4|5' - -DECLARE @sqlnet SQLNET = SQLNET::New('s.Split(",", ";", "|")').ValueString('s', @s) - --- 1 --- 2 --- 3 --- 4 --- 5 -SELECT * -FROM dbo.SQLNET_EvalTVF_1(@sqlnet) -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1117' %} - -### Split and Trim - -{% include template-example.html %} -{% highlight csharp %} - -DECLARE @s VARCHAR(MAX) = '1, 2;3, 4|5' - -DECLARE @sqlnet SQLNET = SQLNET::New('s.Split(",", ";", "|") - .Select(x => x.Trim())') - .ValueString('s', @s) - --- 1 --- 2 --- 3 --- 4 --- 5 -SELECT * -FROM dbo.SQLNET_EvalTVF_1(@sqlnet) -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1118' %} - -### Split and Trim with Regex - - -{% include template-example.html %} -{% highlight csharp %} - -DECLARE @s VARCHAR(MAX) = '1, 2;3, 4|5' - -DECLARE @sqlnet SQLNET = SQLNET::New('Regex.Split(s, ",|;|\|") - .Select(x => x.Trim())') - .ValueString('s', @s) - --- 1 --- 2 --- 3 --- 4 --- 5 -SELECT * -FROM dbo.SQLNET_EvalTVF_1(@sqlnet) - -{% endhighlight %} -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1119' %} diff --git a/docs/pages/tutorials/tutorial-introduction.md b/docs/pages/tutorials/tutorial-introduction.md deleted file mode 100644 index f2cbf84..0000000 --- a/docs/pages/tutorials/tutorial-introduction.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -permalink: tutorial-introduction ---- - -## Introduction -Entity Framework Extensions allow you to improve dramatically your save operations performance. - -It's easy to use, and easy to customize. - -## Bulk SaveChanges -The BulkSaveChanges works like SaveChanges but way faster. - -BulkSaveChanges use Bulk Operations to save all entities in the Change Tracker efficiently instead of performing a database round-trip for every entity like SaveChanges does. - -BulkSaveChanges support everything: - -- Complex Types -- Inheritance (TPC, TPH, TPT) -- Relationship (One to One, One to Many, Many to Many) - -### Example -{% include template-example.html %} -{% highlight csharp %} -var ctx = new EntitiesContext(); - -ctx.Customers.AddRange(listToAdd); // add -ctx.Customers.RemoveRange(listToRemove); // remove -listToModify.ForEach(x => x.DateModified = DateTime.Now); // modify - -// Easy to use -ctx.BulkSaveChanges(); - -// Easy to customize -context.BulkSaveChanges(bulk => bulk.BatchSize = 100); -{% endhighlight %} -### Performance Comparisons - -| Operations | 1,000 Entities | 2,000 Entities | 5,000 Entities | -| :-------------- | -------------: | -------------: | -------------: | -| SaveChanges | 1,000 ms | 2,000 ms | 5,000 ms | -| BulkSaveChanges | 90 ms | 150 ms | 350 ms | - -## Bulk Operations - -Bulk Operations method provide you some flexibility by allowing some customization and performance enhancement. - -All common methods are supported: - -- BulkInsert -- BulkUpdate -- BulkDelete -- BulkMerge (UPSERT operation) -- BulkSynchronize - -### Example - -{% include template-example.html %} -{% highlight csharp %} -var ctx = new EntitiesContext(); - -// Easy to use -ctx.BulkInsert(list); -ctx.BulkUpdate(list); -ctx.BulkDelete(list); -ctx.BulkMerge(list); - -// Easy to customize -context.BulkMerge(customers, - bulk => bulk.ColumnPrimaryKeyExpression = customer => customer.Code; }); -{% endhighlight %} - -### Performance Comparisons - -| Operations | 1,000 Entities | 2,000 Entities | 5,000 Entities | -| :-------------- | -------------: | -------------: | -------------: | -| SaveChanges | 1,000 ms | 2,000 ms | 5,000 ms | -| BulkInsert | 6 ms | 10 ms | 15 ms | -| BulkUpdate | 50 ms | 55 ms | 65 ms | -| BulkDelete | 45 ms | 50 ms | 60 ms | -| BulkMerge | 65 ms | 80 ms | 110 ms | - -## FromQuery Operations - -FromQuery method allows you to execute UPDATE or DELETE statements without loading entities in the context. - -### Example - -{% include template-example.html %} -{% highlight csharp %} -// DELETE all customers that are inactive for more than two years -context.Customers - .Where(x => x.LastLogin < DateTime.Now.AddYears(-2)) - .DeleteFromQuery(); - -// UPDATE all customers that are inactive for more than two years -context.Customers - .Where(x => x.Actif && x.LastLogin < DateTime.Now.AddYears(-2)) - .UpdateFromQuery(x => new Customer {Actif = false}); -{% endhighlight %} - -### Performance Comparisons - -| Operations | 1,000 Entities | 2,000 Entities | 5,000 Entities | -| :-------------- | -------------: | -------------: | -------------: | -| SaveChanges | 1,000 ms | 2,000 ms | 5,000 ms | -| DeleteFromQuery | 1 ms | 1 ms | 1 ms | -| UpdateFromQuery | 1 ms | 1 ms | 1 ms | diff --git a/docs/pages/tutorials/upgrading.md b/docs/pages/tutorials/upgrading.md deleted file mode 100644 index dd2e96a..0000000 --- a/docs/pages/tutorials/upgrading.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -permalink: upgrading ---- - -All our release are normally backward compatible to make it very easy for you to upgrade. - -## Step 1 - Before Upgrading -Before upgrading: -- Make sure to read [release notes](https://github.com/zzzprojects/Eval-SQL.NET/releases) -- **NEVER** upgrade to production without testing in a development environment first - -## Step 2 - Download - - - - Download - \ No newline at end of file diff --git a/docs/robots.txt b/docs/robots.txt deleted file mode 100644 index e2c9bbf..0000000 --- a/docs/robots.txt +++ /dev/null @@ -1,6 +0,0 @@ -# www.robotstxt.org/ - -# Allow crawling of all content -User-agent: * -Disallow: -Sitemap: http://eval-sql.net/sitemap.xml diff --git a/docs2/pages/_topnav.md b/docs2/pages/_topnav.md deleted file mode 100644 index 2081779..0000000 --- a/docs2/pages/_topnav.md +++ /dev/null @@ -1,5 +0,0 @@ -- [Getting Started](getting-started/overview.md) -- Documentation - - [Documentation](documentations/eval.md) - - [Release Notes](https://github.com/zzzprojects/Eval-SQL.NET/releases) -- [Online Examples](/online-examples) diff --git a/docs2/pages/documentations/_sidebar.md b/docs2/pages/documentations/_sidebar.md deleted file mode 100644 index ca6304b..0000000 --- a/docs2/pages/documentations/_sidebar.md +++ /dev/null @@ -1,4 +0,0 @@ -- [Eval](eval.md) -- [Value](value.md) -- [Options](options.md) -- [Configuration](configuration.md) diff --git a/docs2/pages/documentations/api.md b/docs2/pages/documentations/api.md deleted file mode 100644 index e1ac945..0000000 --- a/docs2/pages/documentations/api.md +++ /dev/null @@ -1,49 +0,0 @@ -# API - -## Overview - -Let's take a very short overview with the API - - -```csharp -SELECT SQLNET::New('x+y').ValueInt('x', 1).ValueInt('y', 2).EvalInt() as Result -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1123' %} - - - - **SQLNET:** A CLR Type created by Eval SQL.NET library - - **"::":** This is how you call static method in SQL CLR - - **New:** A static method which creates a new instance of SQLNET Type - - **ValueInt:** Sets a int value for a specific parameter name used in the expression - - **EvalInt:** Evaluates the expression and return a result of type INT - -
- -
-
-

Methods

-
- -
- -
- - - [Eval](/eval) - - [Value](/value) - - [Options](/options) - - [Configuration](/configuration) - -
-
-
-
- - diff --git a/docs2/pages/documentations/configuration.md b/docs2/pages/documentations/configuration.md deleted file mode 100644 index a667363..0000000 --- a/docs2/pages/documentations/configuration.md +++ /dev/null @@ -1,71 +0,0 @@ -# Configuration - -## Configuration - -Optional stored procedure for License and Configuration - - - -```csharp - -CREATE PROCEDURE SQLNET_GlobalConfiguration -AS -BEGIN - -- The procedure is automatically called when the server restart/assembly load - -- If the assembly is already loaded, a manual execution is required - -- EXEC SQLNET_Configuration - DECLARE @isValid BIT = SQLNET::AddLicense('[LicenseName]', '[LicenseKey]') - - -- SELECT 1 - SELECT @isValid - - -- SELECT 1 - SELECT SQLNET::New(' -EvalManager.Configuration.RegisterAlias("MyMath", "Math"); -EvalManager.Configuration.ExpireCacheDelay = TimeSpan.FromMinutes(5); -EvalManager.Configuration.SlidingExpirationDelegate = TimeSpan.FromHours(3); -EvalManager.Configuration.SlidingExpirationItem = TimeSpan.FromMinutes(1); -return true; -').Eval() - -END -``` - -## Configuration Register & Unregister - -Register or unregister information used by the EvalContext under which the code or expression is compiled. - - - RegisterAlias(string alias, string name) - - RegisterAssembly(param Assembly[]) - - RegisterDomainAssemblies() - - RegisterExtensionMethod(param Type[]) - - RegisterExtensionMethod(param MethodInfo[]) - - RegisterGlobalConstant(string key, object value) - - RegisterGlobalVariable(string key, object value) - - RegisterStaticMember(param Type[]) - - RegisterStaticMember(param MemberInfo[]) - - RegisterType(param Type[]) - -[EvalContext - Register & Unregister](https://github.com/zzzprojects/Eval-Expression.NET/wiki/EvalContext-Register-&-Unregister) - -## Configuration Options - -Change option used by the EvalContext under which the code or expression is compiled. - - - BindingFlags - - UseCaretForExponent - -[EvalContext - Options](https://github.com/zzzprojects/Eval-Expression.NET/wiki/EvalContext-Options) - -## Configuration.ExpireCacheDelay - -Sets a span of time within the next time the ExpireCache method is invoked to evict inactive cache item. - -## Configuration.SlidingExpirationDelegate - -Sets a span of time within which a delegate must be accessed before it is evicted from the cache. - -## Configuration.SlidingExpirationItem - -Sets a span of time within which an item must be accessed before it is evicted from the cache. - diff --git a/docs2/pages/documentations/convert/convert-toboolean.md b/docs2/pages/documentations/convert/convert-toboolean.md deleted file mode 100644 index 28e2a73..0000000 --- a/docs2/pages/documentations/convert/convert-toboolean.md +++ /dev/null @@ -1,25 +0,0 @@ -# Convert_ToBoolean - -`Convert_ToBoolean` converts the specified string representation of a logical value to its Boolean equivalent. -```csharp -Convert_ToBoolean ( - @value NVARCHAR (MAX) - ) -RETURNS BIT -``` - -## Parameters - - - **value**: A string that contains the value of either `TrueString` or `FalseString`. - -## Returns - -`true` if `value` equals `TrueString`, or false if `value` equals `FalseString`. - -## Example - -```csharp -SELECT SQLNET::Convert_ToBoolean('false') -SELECT SQLNET::Convert_ToBoolean('true') -``` - diff --git a/docs2/pages/documentations/convert/convert-tobyte.md b/docs2/pages/documentations/convert/convert-tobyte.md deleted file mode 100644 index 4cbe3d0..0000000 --- a/docs2/pages/documentations/convert/convert-tobyte.md +++ /dev/null @@ -1,25 +0,0 @@ -# Convert_ToByte - -`Convert_ToByte` converts the specified string representation of a number to an equivalent 8-bit unsigned integer. -```csharp -Convert_ToByte ( - @value NVARCHAR (MAX) - ) -RETURNS TINYINT -``` - -## Parameters - - - **value**: A string that contains the number to convert. - -## Returns - -An 8-bit unsigned integer that is equivalent to the `value`. - -## Example - -```csharp -SELECT SQLNET::Convert_ToByte('3') -SELECT SQLNET::Convert_ToByte('136') -``` - diff --git a/docs2/pages/documentations/convert/convert-todatetime.md b/docs2/pages/documentations/convert/convert-todatetime.md deleted file mode 100644 index bd42930..0000000 --- a/docs2/pages/documentations/convert/convert-todatetime.md +++ /dev/null @@ -1,24 +0,0 @@ -# Convert_ToDateTime - -`Convert_ToDateTime` converts the specified string representation of a date and time to an equivalent date and time value. - -```csharp -Convert_ToDateTime ( - @value NVARCHAR (MAX) - ) -RETURNS DATETIME -``` - -## Parameters - - - **value**: The string representation of a date and time. - -## Returns - -The date and time that is equivalent to the `value`. - -## Example - -```csharp -SELECT SQLNET::Convert_ToDateTime('2015-12-27') -``` diff --git a/docs2/pages/documentations/convert/convert-todecimal.md b/docs2/pages/documentations/convert/convert-todecimal.md deleted file mode 100644 index 9a4494c..0000000 --- a/docs2/pages/documentations/convert/convert-todecimal.md +++ /dev/null @@ -1,24 +0,0 @@ -# Convert_ToDecimal - -`Convert_ToDecimal` converts the specified string representation of a number to an equivalent decimal number. - -```csharp -Convert_ToDecimal ( - @value NVARCHAR (MAX) - ) -RETURNS NUMERIC (18) -``` - -## Parameters - - - **value**: A string that contains a number to convert. - -## Returns - -A decimal number that is equivalent to the number in `value`. - -## Example - -```csharp -SELECT SQLNET::Convert_ToDecimal('2015-12-27') -``` diff --git a/docs2/pages/documentations/convert/convert-todouble.md b/docs2/pages/documentations/convert/convert-todouble.md deleted file mode 100644 index 7d69b92..0000000 --- a/docs2/pages/documentations/convert/convert-todouble.md +++ /dev/null @@ -1,25 +0,0 @@ -# Convert_ToDouble - -`Convert_ToDouble` converts the specified string representation of a number to an equivalent double-precision floating-point number. - -```csharp -Convert_ToDouble ( - @value NVARCHAR (MAX) - ) -RETURNS FLOAT (53) -``` - -## Parameters - - - **value**: A string that contains the number to convert. - -## Returns - -A double-precision floating-point number that is equivalent to the number in `value`. - -## Example - -```csharp -SELECT SQLNET::Convert_ToDouble('-1,035.77219') -SELECT SQLNET::Convert_ToDouble('1e-35') -``` diff --git a/docs2/pages/documentations/convert/convert-toint16.md b/docs2/pages/documentations/convert/convert-toint16.md deleted file mode 100644 index ea7e85b..0000000 --- a/docs2/pages/documentations/convert/convert-toint16.md +++ /dev/null @@ -1,24 +0,0 @@ -# Convert_ToInt16 - -`Convert_ToInt16` converts the string representation of a number in a specified base to an equivalent 16-bit signed integer. - -```csharp -Convert_ToInt16 ( - @value NVARCHAR (MAX) - ) -RETURNS SMALLINT -``` - -## Parameters - - - **value**: A string that contains the number to convert. - -## Returns - -A 16-bit signed integer that is equivalent to the number in `value`. - -## Example - -```csharp -SELECT SQLNET::Convert_ToInt16('251') -``` diff --git a/docs2/pages/documentations/convert/convert-toint32.md b/docs2/pages/documentations/convert/convert-toint32.md deleted file mode 100644 index e02fdfb..0000000 --- a/docs2/pages/documentations/convert/convert-toint32.md +++ /dev/null @@ -1,24 +0,0 @@ -# Convert_ToInt32 - -`Convert_ToInt32` converts the specified string representation of a number to an equivalent 32-bit signed integer. - -```csharp -Convert_ToInt32 ( - @value NVARCHAR (MAX) - ) -RETURNS SMALLINT -``` - -## Parameters - - - **value**: A string that contains the number to convert. - -## Returns - -A 32-bit signed integer that is equivalent to the number in `value`. - -## Example - -```csharp -SELECT SQLNET::Convert_ToInt32('4285') -``` diff --git a/docs2/pages/documentations/convert/convert-toint64.md b/docs2/pages/documentations/convert/convert-toint64.md deleted file mode 100644 index 8fc7b61..0000000 --- a/docs2/pages/documentations/convert/convert-toint64.md +++ /dev/null @@ -1,24 +0,0 @@ -# Convert_ToInt64 - -`Convert_ToInt64` converts the specified string representation of a number to an equivalent 64-bit signed integer. - -```csharp -Convert_ToInt64 ( - @value NVARCHAR (MAX) - ) -RETURNS SMALLINT -``` - -## Parameters - - - **value**: A string that contains the number to convert. - -## Returns - -A 64-bit signed integer that is equivalent to the number in `value`. - -## Example - -```csharp -SELECT SQLNET::Convert_ToInt64('854') -``` diff --git a/docs2/pages/documentations/convert/convert.md b/docs2/pages/documentations/convert/convert.md deleted file mode 100644 index 37c1bea..0000000 --- a/docs2/pages/documentations/convert/convert.md +++ /dev/null @@ -1,14 +0,0 @@ -# Convert - -Converts a string to another base data type. - -| Name | Description | Example | -| :--- | :---------- | :------ | -| [Convert_ToBoolean(value)](/convert-toboolean) | Converts the specified string representation of a logical value to its Boolean equivalent. | [Try it]()| -| [Convert_ToByte(value)](/convert-tobyte) | Converts the specified string representation of a number to an equivalent 8-bit unsigned integer. | [Try it]()| -| [Convert_ToDateTime(value)](/convert-todatetime) | Converts the specified string representation of a date and time to an equivalent date and time value. | [Try it]()| -| [Convert_ToDecimal(value)](/convert-todecimal) | Converts the specified string representation of a date and time to an equivalent decimal value. | [Try it]()| -| [Convert_ToDouble(value)](/convert-todouble) | Converts the specified string representation of a number to an equivalent double-precision floating-point number. | [Try it]()| -| [Convert_ToInt16(value)](/convert-toint16) | Converts the string representation of a number in a specified base to an equivalent 16-bit signed integer. | [Try it]()| -| [Convert_ToInt32(value)](/convert-toint32) | Converts the specified string representation of a number to an equivalent 32-bit signed integer. | [Try it]()| -| [Convert_ToInt64(value)](/convert-toint64) | Converts the specified string representation of a number to an equivalent 64-bit signed integer. | [Try it]()| diff --git a/docs2/pages/documentations/datetime/datetime-add-days.md b/docs2/pages/documentations/datetime/datetime-add-days.md deleted file mode 100644 index 1cf289b..0000000 --- a/docs2/pages/documentations/datetime/datetime-add-days.md +++ /dev/null @@ -1,28 +0,0 @@ -# DateTime_AddDays - -`DateTime_AddDays` returns a new DateTime that adds the specified number of days to the value of `currDate`. - -```csharp -DateTime_AddDays ( - @currDate DATETIME, - @value FLOAT (53)) - ) -RETURNS DATETIME -``` - -## Parameters - - - **currDate**: The current datetime object. - - **value**: A number of whole and fractional days. The `value` parameter can be negative or positive. - -## Returns - -A new `DateTime` object whose value is the sum of the date and time represented by `currDate` and the number of days represented by `value`. - -## Example - -```csharp -SELECT SQLNET::DateTime_AddDays('2017-05-25', 4) -SELECT SQLNET::DateTime_AddDays('2018-12-01', 2.2) -``` - diff --git a/docs2/pages/documentations/datetime/datetime-add-months.md b/docs2/pages/documentations/datetime/datetime-add-months.md deleted file mode 100644 index 0112090..0000000 --- a/docs2/pages/documentations/datetime/datetime-add-months.md +++ /dev/null @@ -1,28 +0,0 @@ -# DateTime_AddMonths - -`DateTime_AddMonths` returns a new DateTime that adds the specified number of months to the value of `currDate`. - -```csharp -DateTime_AddMonths ( - @currDate DATETIME, - @value INT) - ) -RETURNS DATETIME -``` - -## Parameters - - - **currDate**: The current datetime object. - - **value**: A number of months. The `value` parameter can be negative or positive. - -## Returns - -A new `DateTime` object whose value is the sum of the date and time represented by `currDate` and the number of months represented by `value`. - -## Example - -```csharp -SELECT SQLNET::DateTime_AddMonths('2017-05-25', 4) -SELECT SQLNET::DateTime_AddMonths('2018-12-01', -3) -``` - diff --git a/docs2/pages/documentations/datetime/datetime-add-years.md b/docs2/pages/documentations/datetime/datetime-add-years.md deleted file mode 100644 index 4472cff..0000000 --- a/docs2/pages/documentations/datetime/datetime-add-years.md +++ /dev/null @@ -1,28 +0,0 @@ -# DateTime_AddYears - -`DateTime_AddYears` returns a new DateTime that adds the specified number of years to the value of `currDate`. - -```csharp -DateTime_AddYears ( - @currDate DATETIME, - @value INT) - ) -RETURNS DATETIME -``` - -## Parameters - - - **currDate**: The current datetime object. - - **value**: A number of years. The `value` parameter can be negative or positive. - -## Returns - -A new `DateTime` object whose value is the sum of the date and time represented by `currDate` and the number of years represented by `value`. - -## Example - -```csharp -SELECT SQLNET::DateTime_AddYears('2017-05-25', 4) -SELECT SQLNET::DateTime_AddYears('2018-12-01', -3) -``` - diff --git a/docs2/pages/documentations/datetime/datetime-age.md b/docs2/pages/documentations/datetime/datetime-age.md deleted file mode 100644 index 862ee65..0000000 --- a/docs2/pages/documentations/datetime/datetime-age.md +++ /dev/null @@ -1,27 +0,0 @@ -# DateTime_Age - -`DateTime_Age` returns an age in number of years between `startDate` and `endDate`. - -```csharp -DateTime_Age ( - @startDate DATETIME, - @endDate DATETIME - ) -RETURNS FLOAT (53) -``` - -## Parameters - - - **startDate**: The start datetime object. - - **endDate**: The end datetime object. - -## Returns - -An age in number of years between `startDate` and `endDate`. - -## Example - -```csharp -SELECT SQLNET::DateTime_Age('2002-05-25', '2018-12-01') -``` - diff --git a/docs2/pages/documentations/datetime/datetime-dayofweek.md b/docs2/pages/documentations/datetime/datetime-dayofweek.md deleted file mode 100644 index 7668e21..0000000 --- a/docs2/pages/documentations/datetime/datetime-dayofweek.md +++ /dev/null @@ -1,25 +0,0 @@ -# DateTime_DayOfWeek - -`DateTime_DayOfWeek` returns the day of the week represented by `currDate`. - -```csharp -DateTime_DayOfWeek ( - @currDate DATETIME, - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -The day of the week represented by `currDate`. - -## Example - -```csharp -SELECT SQLNET::DateTime_DayOfWeek('2018-12-01') -``` - diff --git a/docs2/pages/documentations/datetime/datetime-dayofyear.md b/docs2/pages/documentations/datetime/datetime-dayofyear.md deleted file mode 100644 index 38e170f..0000000 --- a/docs2/pages/documentations/datetime/datetime-dayofyear.md +++ /dev/null @@ -1,26 +0,0 @@ -# DateTime_DayOfYear - -`DateTime_DayOfYear` returns day of the year, expressed as a value between 1 and 366 represented by `currDate`. - -```csharp -DateTime_DayOfYear ( - @currDate DATETIME, - ) -RETURNS INT -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -The day of the year, expressed as a value between 1 and 366. - -## Example - -```csharp -SELECT SQLNET::DateTime_DayOfYear('2018-12-01') -SELECT SQLNET::DateTime_DayOfYear('2016-12-31') -``` - diff --git a/docs2/pages/documentations/datetime/datetime-days-in-month.md b/docs2/pages/documentations/datetime/datetime-days-in-month.md deleted file mode 100644 index dbef3b3..0000000 --- a/docs2/pages/documentations/datetime/datetime-days-in-month.md +++ /dev/null @@ -1,28 +0,0 @@ -# DateTime_DaysInMonth - -`DateTime_DaysInMonth` returns day of the year, expressed as a value between 1 and 366 represented by `currDate`. - -```csharp -DateTime_DaysInMonth ( - @year INT, - @month INT - ) -RETURNS INT -``` - -## Parameters - - - **year**: The year. - - **month**: The month (a number ranging from 1 to 12). - -## Returns - -The number of days in `month` for the specified `year`. - -## Example - -```csharp -SELECT SQLNET::DateTime_DaysInMonth('2018', 12) -SELECT SQLNET::DateTime_DaysInMonth('2016', 2) -``` - diff --git a/docs2/pages/documentations/datetime/datetime-from-binary.md b/docs2/pages/documentations/datetime/datetime-from-binary.md deleted file mode 100644 index 04162af..0000000 --- a/docs2/pages/documentations/datetime/datetime-from-binary.md +++ /dev/null @@ -1,27 +0,0 @@ -# DateTime_FromBinary - -`DateTime_FromBinary` deserializes a 64-bit binary value and recreates an original serialized DateTime object. - -```csharp -DateTime_FromBinary ( - @dateData BIGINT - ) -RETURNS DATETIME -``` - -## Parameters - - - **dateData**: A 64-bit signed integer that encodes the `DateTime.Kind` property in a 2-bit field and the `DateTime.Ticks` property in a 62-bit field. - -## Returns - -An object that is equivalent to the DateTime object that was serialized by the [DateTime_ToBinary()](/datetime-tobinary) method. - -## Example - -```csharp -DECLARE @var BIGINT -SELECT @var = SQLNET::DateTime_ToBinary('2015-5-25') -SELECT SQLNET::DateTime_FromBinary(@var) -``` - diff --git a/docs2/pages/documentations/datetime/datetime-from-file-time-utc.md b/docs2/pages/documentations/datetime/datetime-from-file-time-utc.md deleted file mode 100644 index 610a813..0000000 --- a/docs2/pages/documentations/datetime/datetime-from-file-time-utc.md +++ /dev/null @@ -1,27 +0,0 @@ -# DateTime_FromFileTimeUtc - -`DateTime_FromFileTimeUtc` converts the specified Windows file time to an equivalent UTC time. - -```csharp -DateTime_FromFileTimeUtc ( - @fileTime BIGINT - ) -RETURNS DATETIME -``` - -## Parameters - - - **fileTime**: A Windows file time expressed in ticks. - -## Returns - -An object that represents the UTC time equivalent of the date and time represented by the `fileTime` parameter. - -## Example - -```csharp -DECLARE @var BIGINT -SELECT @var = SQLNET::DateTime_ToFileTimeUtc('2017-7-23') -SELECT SQLNET::DateTime_FromFileTimeUtc(@var) -``` - diff --git a/docs2/pages/documentations/datetime/datetime-from-file-time.md b/docs2/pages/documentations/datetime/datetime-from-file-time.md deleted file mode 100644 index 45f635e..0000000 --- a/docs2/pages/documentations/datetime/datetime-from-file-time.md +++ /dev/null @@ -1,27 +0,0 @@ -# DateTime_FromFileTime - -`DateTime_FromFileTime` converts the specified Windows file time to an equivalent local time. - -```csharp -DateTime_FromFileTime ( - @fileTime BIGINT - ) -RETURNS DATETIME -``` - -## Parameters - - - **fileTime**: A Windows file time expressed in ticks. - -## Returns - -An object that represents the local time equivalent of the date and time represented by the `fileTime` parameter. - -## Example - -```csharp -DECLARE @var BIGINT -SELECT @var = SQLNET::DateTime_ToFileTime('2015-5-25') -SELECT SQLNET::DateTime_FromFileTime(@var) -``` - diff --git a/docs2/pages/documentations/datetime/datetime-from-oadate.md b/docs2/pages/documentations/datetime/datetime-from-oadate.md deleted file mode 100644 index 010a945..0000000 --- a/docs2/pages/documentations/datetime/datetime-from-oadate.md +++ /dev/null @@ -1,24 +0,0 @@ -# DateTime_FromOADate - -`DateTime_FromOADate` returns a DateTime equivalent to the specified OLE Automation Date. -```csharp -DateTime_FromOADate ( - @oaDate FLOAT (53) - ) -RETURNS DATETIME -``` - -## Parameters - - - **oaDate**: An OLE Automation Date value. - -## Returns - -An object that represents the same date and time as `oaDate`. - -## Example - -```csharp -SELECT SQLNET::DateTime_FromOADate(39456) -``` - diff --git a/docs2/pages/documentations/datetime/datetime-isdaylight-saving-time.md b/docs2/pages/documentations/datetime/datetime-isdaylight-saving-time.md deleted file mode 100644 index 6f93f66..0000000 --- a/docs2/pages/documentations/datetime/datetime-isdaylight-saving-time.md +++ /dev/null @@ -1,25 +0,0 @@ -# DateTime_IsDaylightSavingTime - -`DateTime_IsDaylightSavingTime` indicates whether `currDate` instance of DateTime is within the daylight saving time range for the current time zone. - -```csharp -DateTime_IsDaylightSavingTime ( - @currDate DATETIME, - ) -RETURNS BIT -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -`true` if the value of the 'currDate' instance of DateTime is within the daylight saving time range for the local time zone; `false` if Kind is Utc. - -## Example - -```csharp -SELECT SQLNET::DateTime_IsDaylightSavingTime('2018-12-01') -``` - diff --git a/docs2/pages/documentations/datetime/datetime-isleap-year.md b/docs2/pages/documentations/datetime/datetime-isleap-year.md deleted file mode 100644 index 5273722..0000000 --- a/docs2/pages/documentations/datetime/datetime-isleap-year.md +++ /dev/null @@ -1,26 +0,0 @@ -# DateTime_IsLeapYear - -`DateTime_IsLeapYear` returns an indication whether the specified year is a leap year. - -```csharp -DateTime_IsLeapYear ( - @year INT) - ) -RETURNS BIT -``` - -## Parameters - - - **year**: A 4-digit year. - -## Returns - -`true` if `year` is a leap year; otherwise, `false`. - -## Example - -```csharp -SELECT SQLNET::DateTime_IsLeapYear('2017') -SELECT SQLNET::DateTime_IsLeapYear('2012') -``` - diff --git a/docs2/pages/documentations/datetime/datetime-now.md b/docs2/pages/documentations/datetime/datetime-now.md deleted file mode 100644 index e60ea1a..0000000 --- a/docs2/pages/documentations/datetime/datetime-now.md +++ /dev/null @@ -1,19 +0,0 @@ -# DateTime_Now - -`DateTime_Now` returns a DateTime object that is set to the current date and time on this computer, expressed as the local time. - -```csharp -DateTime_Now() -RETURNS DATETIME -``` - -## Returns - -A DateTime object whose value is the current local date and time. - -## Example - -```csharp -SELECT SQLNET::DateTime_Now() -``` - diff --git a/docs2/pages/documentations/datetime/datetime-ticks.md b/docs2/pages/documentations/datetime/datetime-ticks.md deleted file mode 100644 index 4bcea31..0000000 --- a/docs2/pages/documentations/datetime/datetime-ticks.md +++ /dev/null @@ -1,25 +0,0 @@ -# DateTime_Ticks - -`DateTime_Ticks` returns the number of ticks that represent the date and time of the `currDate` instance. - -```csharp -DateTime_Ticks( - @currDate DATETIME - ) -RETURNS BIGINT -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -The number of ticks that represent the date and time of the `currDate` instance. The value is between `DateTime.MinValue.Ticks` and `DateTime.MaxValue.Ticks`. - -## Example - -```csharp -SELECT SQLNET::DateTime_Ticks(2018-12-01) -``` - diff --git a/docs2/pages/documentations/datetime/datetime-to-oadate.md b/docs2/pages/documentations/datetime/datetime-to-oadate.md deleted file mode 100644 index 540d323..0000000 --- a/docs2/pages/documentations/datetime/datetime-to-oadate.md +++ /dev/null @@ -1,25 +0,0 @@ -# DateTime_ToOADate - -`DateTime_ToOADate` converts the value of this instance to the equivalent OLE Automation date. - -```csharp -DateTime_ToOADate ( - @currDate DATETIME - ) -RETURNS FLOAT (53) -``` - -## Parameters - - - **oaDate**: An OLE Automation Date value. - -## Returns - -A double-precision floating-point number that contains an OLE Automation date equivalent to the value of this instance. - -## Example - -```csharp -SELECT SQLNET::DateTime_ToOADate(39456) -``` - diff --git a/docs2/pages/documentations/datetime/datetime-to-universal-time.md b/docs2/pages/documentations/datetime/datetime-to-universal-time.md deleted file mode 100644 index 3437dda..0000000 --- a/docs2/pages/documentations/datetime/datetime-to-universal-time.md +++ /dev/null @@ -1,25 +0,0 @@ -# DateTime_ToUniversalTime - -`DateTime_ToUniversalTime` converts the value of the `currDate` DateTime object to Coordinated Universal Time (UTC) time. - -```csharp -DateTime_ToUniversalTime ( - @currDate DATETIME - ) -RETURNS BIGINT -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -A DateTime object in Coordinated Universal Time (UTC) time equivalent to the value of the current DateTime object, or `MaxValue` if the converted value is too large to be represented by a DateTime object, or `MinValue` if the converted value is too small to be represented as a DateTime object. - -## Example - -```csharp -SELECT SQLNET::DateTime_ToUniversalTime('2015-5-25') -``` - diff --git a/docs2/pages/documentations/datetime/datetime-tobinary.md b/docs2/pages/documentations/datetime/datetime-tobinary.md deleted file mode 100644 index ba46f58..0000000 --- a/docs2/pages/documentations/datetime/datetime-tobinary.md +++ /dev/null @@ -1,27 +0,0 @@ -# DateTime_ToBinary - -`DateTime_ToBinary` serializes the `currDate` object to a 64-bit binary value that subsequently can be used to recreate the DateTime object. - -```csharp -DateTime_ToBinary ( - @currDate DATETIME - ) -RETURNS BIGINT -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -A 64-bit signed integer that encodes the `DateTime.Kind` and `DateTime.Ticks` properties. - -## Example - -```csharp -DECLARE @var BIGINT -SELECT @var = SQLNET::DateTime_ToBinary('2015-5-25') -SELECT SQLNET::DateTime_FromBinary(@var) -``` - diff --git a/docs2/pages/documentations/datetime/datetime-today.md b/docs2/pages/documentations/datetime/datetime-today.md deleted file mode 100644 index 9f2ccd9..0000000 --- a/docs2/pages/documentations/datetime/datetime-today.md +++ /dev/null @@ -1,19 +0,0 @@ -# DateTime_Today - -`DateTime_Today` returns a DateTime object that is set to today's date, with the time component set to 00:00:00. - -```csharp -DateTime_Today() -RETURNS DATETIME -``` - -## Returns - -A DateTime object that is set to today's date, with the time component set to 00:00:00. - -## Example - -```csharp -SELECT SQLNET::DateTime_Today() -``` - diff --git a/docs2/pages/documentations/datetime/datetime-tofile-time-utc.md b/docs2/pages/documentations/datetime/datetime-tofile-time-utc.md deleted file mode 100644 index da24f47..0000000 --- a/docs2/pages/documentations/datetime/datetime-tofile-time-utc.md +++ /dev/null @@ -1,27 +0,0 @@ -# DateTime_ToFileTimeUtc - -`DateTime_ToFileTimeUtc` converts the value of the `currDate` DateTime object to a Windows file time. - -```csharp -DateTime_ToFileTimeUtc ( - @currDate DATETIME - ) -RETURNS BIGINT -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -The value of the `currDate` DateTime object expressed as a Windows file time. - -## Example - -```csharp -DECLARE @var BIGINT -SELECT @var = SQLNET::DateTime_ToFileTimeUtc('2015-5-25') -SELECT SQLNET::DateTime_FromFileTimeUtc(@var) -``` - diff --git a/docs2/pages/documentations/datetime/datetime-tofile-time.md b/docs2/pages/documentations/datetime/datetime-tofile-time.md deleted file mode 100644 index 2aba15d..0000000 --- a/docs2/pages/documentations/datetime/datetime-tofile-time.md +++ /dev/null @@ -1,27 +0,0 @@ -# DateTime_ToFileTime - -`DateTime_ToFileTime` converts the value of the `currDate` DateTime object to a Windows file time. - -```csharp -DateTime_ToFileTime ( - @currDate DATETIME - ) -RETURNS BIGINT -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -The value of the `currDate` DateTime object expressed as a Windows file time. - -## Example - -```csharp -DECLARE @var BIGINT -SELECT @var = SQLNET::DateTime_ToFileTime('2015-5-25') -SELECT SQLNET::DateTime_FromFileTime(@var) -``` - diff --git a/docs2/pages/documentations/datetime/datetime-tolocal-time.md b/docs2/pages/documentations/datetime/datetime-tolocal-time.md deleted file mode 100644 index c671636..0000000 --- a/docs2/pages/documentations/datetime/datetime-tolocal-time.md +++ /dev/null @@ -1,25 +0,0 @@ -# DateTime_ToLocalTime - -`DateTime_ToLocalTime` converts the value of the `currDate` DateTime object to local time. - -```csharp -DateTime_ToLocalTime ( - @currDate DATETIME - ) -RETURNS BIGINT -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -A DateTime object in local time equivalent to the value of the current DateTime object, or `MaxValue` if the converted value is too large to be represented by a DateTime object, or `MinValue` if the converted value is too small to be represented as a DateTime object. - -## Example - -```csharp -SELECT SQLNET::DateTime_ToLocalTime('2015-5-25') -``` - diff --git a/docs2/pages/documentations/datetime/datetime-tolong-date-string.md b/docs2/pages/documentations/datetime/datetime-tolong-date-string.md deleted file mode 100644 index 8a2e806..0000000 --- a/docs2/pages/documentations/datetime/datetime-tolong-date-string.md +++ /dev/null @@ -1,25 +0,0 @@ -# DateTime_ToLongDateString - -`DateTime_ToLongDateString` converts the value of the current DateTime object to its equivalent long date string representation. - -```csharp -DateTime_ToLongDateString ( - @currDate DATETIME - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -A string that contains the long date string representation of the current DateTime object. - -## Example - -```csharp -SELECT SQLNET::DateTime_ToLongDateString('2015-5-25 3:02:15 AM') -``` - diff --git a/docs2/pages/documentations/datetime/datetime-tolong-time-string.md b/docs2/pages/documentations/datetime/datetime-tolong-time-string.md deleted file mode 100644 index c302b56..0000000 --- a/docs2/pages/documentations/datetime/datetime-tolong-time-string.md +++ /dev/null @@ -1,26 +0,0 @@ -# DateTime_ToLongTimeString - -`DateTime_ToLongTimeString` converts the value of the current DateTime object to its equivalent long time string representation. - -```csharp -DateTime_ToLongTimeString ( - @currDate DATETIME - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -A string that contains the long time string representation of the current DateTime object. - -## Example - -```csharp -SELECT SQLNET::DateTime_ToLongTimeString('2015-5-25 3:02:15 AM') -``` - -- \ No newline at end of file diff --git a/docs2/pages/documentations/datetime/datetime-toshort-date-string.md b/docs2/pages/documentations/datetime/datetime-toshort-date-string.md deleted file mode 100644 index 88f3db9..0000000 --- a/docs2/pages/documentations/datetime/datetime-toshort-date-string.md +++ /dev/null @@ -1,25 +0,0 @@ -# DateTime_ToShortDateString - -`DateTime_ToShortDateString` converts the value of the current DateTime object to its equivalent short date string representation. - -```csharp -DateTime_ToShortDateString ( - @currDate DATETIME - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -A string that contains the short date string representation of the current DateTime object. - -## Example - -```csharp -SELECT SQLNET::DateTime_ToShortDateString('2015-5-25 3:02:15 AM') -``` - diff --git a/docs2/pages/documentations/datetime/datetime-toshort-time-string.md b/docs2/pages/documentations/datetime/datetime-toshort-time-string.md deleted file mode 100644 index 7e2a9f5..0000000 --- a/docs2/pages/documentations/datetime/datetime-toshort-time-string.md +++ /dev/null @@ -1,26 +0,0 @@ -# DateTime_ToShortTimeString - -`DateTime_ToShortTimeString` converts the value of the current DateTime object to its equivalent short time string representation. - -```csharp -DateTime_ToShortTimeString ( - @currDate DATETIME - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -A string that contains the short time string representation of the current DateTime object. - -## Example - -```csharp -SELECT SQLNET::DateTime_ToShortTimeString('2015-5-25 3:02:15 AM') -``` - -- \ No newline at end of file diff --git a/docs2/pages/documentations/datetime/datetime-tostring-with-format.md b/docs2/pages/documentations/datetime/datetime-tostring-with-format.md deleted file mode 100644 index 3b7fb4a..0000000 --- a/docs2/pages/documentations/datetime/datetime-tostring-with-format.md +++ /dev/null @@ -1,27 +0,0 @@ -# DateTime_ToStringWithFormat - -`DateTime_ToStringWithFormat` converts the value of the current DateTime object to its equivalent string representation using the specified format and the formatting conventions of the current culture. - -```csharp -DateTime_ToStringWithFormat ( - @currDate DATETIME, - @format NVARCHAR (MAX)) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **currDate**: The current datetime object. - - **format**: A standard or custom date and time format string. - -## Returns - -A string representation of value of the current DateTime object as specified by `format`. - -## Example - -```csharp -SELECT SQLNET::DateTime_ToStringWithFormat('2015-5-25 3:02:15 AM', 'dd MMM HH:mm:ss') -``` - diff --git a/docs2/pages/documentations/datetime/datetime-tostring.md b/docs2/pages/documentations/datetime/datetime-tostring.md deleted file mode 100644 index ae92199..0000000 --- a/docs2/pages/documentations/datetime/datetime-tostring.md +++ /dev/null @@ -1,25 +0,0 @@ -# DateTime_ToString - -`DateTime_ToString` converts the value of the current DateTime object to its equivalent string representation. - -```csharp -DateTime_ToString ( - @currDate DATETIME - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **currDate**: The current datetime object. - -## Returns - -A string representation of the value of the current DateTime object. - -## Example - -```csharp -SELECT SQLNET::DateTime_ToString('2015-5-25 3:02:15 AM') -``` - diff --git a/docs2/pages/documentations/datetime/datetime-utc-now.md b/docs2/pages/documentations/datetime/datetime-utc-now.md deleted file mode 100644 index b529f4a..0000000 --- a/docs2/pages/documentations/datetime/datetime-utc-now.md +++ /dev/null @@ -1,19 +0,0 @@ -# DateTime_UtcNow - -`DateTime_UtcNow` returns a DateTime object that is set to the current date and time on this computer, expressed as the Coordinated Universal Time (UTC) time. - -```csharp -DateTime_UtcNow() -RETURNS DATETIME -``` - -## Returns - -A DateTime object whose value is the current Coordinated Universal Time (UTC) date and time. - -## Example - -```csharp -SELECT SQLNET::DateTime_UtcNow() -``` - diff --git a/docs2/pages/documentations/datetime/datetime.md b/docs2/pages/documentations/datetime/datetime.md deleted file mode 100644 index 890d307..0000000 --- a/docs2/pages/documentations/datetime/datetime.md +++ /dev/null @@ -1,36 +0,0 @@ -# DateTime - -Represents an instant in time, typically expressed as a date and time of day. - -| Name | Description | Example | -| :--- | :---------- | :------ | -| [DateTime_AddDays(currDate, value)](/datetime-add-days) | Returns a new DateTime that adds the specified number of days to the `currDate`. | [Try it]()| -| [DateTime_AddMonths(currDate, value)](/datetime-add-months) | Returns a new DateTime that adds the specified number of months to the `currDate`. | [Try it]()| -| [DateTime_AddYears(currDate, value)](/datetime-add-years) | Returns a new DateTime that adds the specified number of years to the `currDate`. | [Try it]()| -| [DateTime_Age(startDate, endDate)](/datetime-age) | Returns an age in number of years between `startDate` and `endDate`. | [Try it]()| -| [DateTime_DayOfWeek(currDate)](/datetime-dayofweek) | Returns the day of the week represented by `currDate`. | [Try it]()| -| [DateTime_DayOfYear(currDate)](/datetime-dayofyear) | Returns the day of the year represented by `currDate`. | [Try it]()| -| [DateTime_DaysInMonth(year, month)](/datetime-days-in-month) | Returns the number of days in the specified month and year. | [Try it]()| -| [DateTime_FromBinary(dateData)](/datetime-from-binary) | Deserializes a 64-bit binary value and recreates an original serialized DateTime object. | [Try it]()| -| [DateTime_FromFileTime(fileTime)](/datetime-from-file-time) | Converts the specified Windows file time to an equivalent local time. | [Try it]()| -| [DateTime_FromFileTimeUtc(fileTime)](/datetime-from-file-time-utc) | Converts the specified Windows file time to an equivalent UTC time. | [Try it]()| -| [DateTime_FromOADate(fileTime)](/datetime-from-oadate) | Converts the specified Windows file time to an equivalent UTC time. | [Try it]()| -| [DateTime_IsDaylightSavingTime(currDate)](/datetime-isdaylight-saving-time) | Indicates whether `currDate` instance of DateTime is within the daylight saving time range for the current time zone. | [Try it]()| -| [DateTime_IsLeapYear(year)](/datetime-isleap-year) | Returns an indication whether the specified year is a leap year. | [Try it]()| -| [DateTime_Now()](/datetime-now) | Returns a DateTime object that is set to the current date and time on this computer, expressed as the local time. | [Try it]()| -| [DateTime_Ticks(currDate)](/datetime-ticks) | Returns the number of ticks that represent the date and time of the `currDate` instance. | [Try it]()| -| [DateTime_ToBinary(currDate)](/datetime-totobinary) | Serializes the current DateTime object to a 64-bit binary value that subsequently can be used to recreate the DateTime object. | [Try it]()| -| [DateTime_Today()](/datetime-today) | Returns a DateTime object that is set to the today's date and the time component set to 00:00:00. | [Try it]()| -| [DateTime_ToFileTime(currDate)](/datetime-tofile-time) | Converts the value of the current DateTime object to a Windows file time. | [Try it]()| -| [DateTime_ToFileTimeUtc(currDate)](/datetime-tofile-time-utc) | Converts the value of the current DateTime object to a Windows file time. | [Try it]()| -| [DateTime_ToLocalTime(currDate)](/datetime-tolocal-time) | Converts the value of the current DateTime object to local time. | [Try it]()| -| [DateTime_ToLongDateString(currDate)](/datetime-tolong-date-string) | Converts the value of the current DateTime object to its equivalent long date string representation. | [Try it]()| -| [DateTime_ToLongTimeString(currDate)](/datetime-tolong-time-string) | Converts the value of the current DateTime object to its equivalent long time string representation. | [Try it]()| -| [DateTime_ToOADate(currDate)](/datetime-to-oadate) | Converts the value of this instance to the equivalent OLE Automation date. | [Try it]()| -| [DateTime_ToShortDateString(currDate)](/datetime-toshort-date-string) | Converts the value of the current DateTime object to its equivalent short date string representation. | [Try it]()| -| [DateTime_ToShortTimeString(currDate)](/datetime-toshort-time-string) | Converts the value of the current DateTime object to its equivalent short time string representation. | [Try it]()| -| [DateTime_ToString(currDate)](/datetime-tostring) | Converts the value of the current DateTime object to its equivalent string representation. | [Try it]()| -| [DateTime_ToStringWithFormat(currDate, format)](/datetime-tostring-with-format) | Converts the value of the current DateTime object to its equivalent string representation using the specified format and the formatting conventions of the current culture. | [Try it]()| -| [DateTime_ToUniversalTime(currDate)](/datetime-to-universal-time) | Converts the value of the current DateTime object to Coordinated Universal Time (UTC) time. | [Try it]()| -| [DateTime_UtcNow()](/datetime-utc-now) | Returns a DateTime object that is set to the current date and time on this computer, expressed as the Coordinated Universal Time (UTC) time. | [Try it]()| - diff --git a/docs2/pages/documentations/directory/directory-create-sub-directory.md b/docs2/pages/documentations/directory/directory-create-sub-directory.md deleted file mode 100644 index b21a936..0000000 --- a/docs2/pages/documentations/directory/directory-create-sub-directory.md +++ /dev/null @@ -1,21 +0,0 @@ -# Directory_CreateSubDirectory - -`Directory_CreateSubDirectory` creates a subdirectory or subdirectories on the specified path. - -```csharp -Directory_CreateSubDirectory - @path NVARCHAR (MAX), - @subDirectory NVARCHAR (MAX) -``` - -## Parameters - - - **path**: The directory path. - - **subDirectory**: The name of sub directory to create. - -## Example - -```csharp -EXEC Directory_CreateSubDirectory @path = 'C:\Temp', @subDirectory = 'SubDir' -``` - diff --git a/docs2/pages/documentations/directory/directory-create.md b/docs2/pages/documentations/directory/directory-create.md deleted file mode 100644 index c555aa3..0000000 --- a/docs2/pages/documentations/directory/directory-create.md +++ /dev/null @@ -1,18 +0,0 @@ -# Directory_Create - -`Directory_Create` creates all directories and subdirectories in the specified path unless they already exist. - -```csharp -Directory_Create @path NVARCHAR (MAX) -``` - -## Parameters - - - **path**: The directory to create. - -## Example - -```csharp -EXEC Directory_Create @path = 'C:\Temp' -``` - diff --git a/docs2/pages/documentations/directory/directory-delete-all.md b/docs2/pages/documentations/directory/directory-delete-all.md deleted file mode 100644 index 0f6935f..0000000 --- a/docs2/pages/documentations/directory/directory-delete-all.md +++ /dev/null @@ -1,18 +0,0 @@ -# Directory_DeleteAll - -`Directory_DeleteAll` deletes a directory from a specified path including subdirectories, and files. - -```csharp -Directory_DeleteAll @path NVARCHAR (MAX) -``` - -## Parameters - - - **path**: The directory to delete. - -## Example - -```csharp -EXEC Directory_DeleteAll @path = 'C:\Temp1' -``` - diff --git a/docs2/pages/documentations/directory/directory-delete.md b/docs2/pages/documentations/directory/directory-delete.md deleted file mode 100644 index b136898..0000000 --- a/docs2/pages/documentations/directory/directory-delete.md +++ /dev/null @@ -1,18 +0,0 @@ -# Directory_Delete - -`Directory_Delete` deletes an empty directory from a specified path. - -```csharp -Directory_Delete @path NVARCHAR (MAX) -``` - -## Parameters - - - **path**: The directory to delete. - -## Example - -```csharp -EXEC Directory_Delete @path = 'C:\Temp1' -``` - diff --git a/docs2/pages/documentations/directory/directory-exists.md b/docs2/pages/documentations/directory/directory-exists.md deleted file mode 100644 index 6f56cbd..0000000 --- a/docs2/pages/documentations/directory/directory-exists.md +++ /dev/null @@ -1,25 +0,0 @@ -# Directory_Exists - -`Directory_Exists` determines whether the given path refers to an existing directory on disk. - -```csharp -Directory_Exists ( - @path NVARCHAR (MAX) - ) -RETURNS BIT -``` - -## Parameters - - - **path**: The path to test. - -## Returns - -`true` if path refers to an existing directory; `false` if the directory does not exist or an error occurs when trying to determine if the specified directory exists. - -## Example - -```csharp -SELECT SQLNET::Directory_Exists('C:\Temp') -``` - diff --git a/docs2/pages/documentations/directory/directory-get-all-directories.md b/docs2/pages/documentations/directory/directory-get-all-directories.md deleted file mode 100644 index 38efadc..0000000 --- a/docs2/pages/documentations/directory/directory-get-all-directories.md +++ /dev/null @@ -1,23 +0,0 @@ -# Directory_GetAllDirectories - -`Directory_GetAllDirectories` returns the names of subdirectories (including their paths) in the specified directory. - -```csharp -Directory_GetAllDirectories ( - @path NVARCHAR (MAX)) -RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) -``` - -## Parameters - - - **path**: The relative or absolute path to the directory to search. This string is not case-sensitive. - -## Returns - -A list of the full names (including paths) of subdirectories in the specified path, or an empty list if no directories are found. - -## Example - -```csharp -SELECT * FROM Directory_GetAllDirectories('C:\Logs') -``` diff --git a/docs2/pages/documentations/directory/directory-get-all-file-system-entries.md b/docs2/pages/documentations/directory/directory-get-all-file-system-entries.md deleted file mode 100644 index 1ae25f1..0000000 --- a/docs2/pages/documentations/directory/directory-get-all-file-system-entries.md +++ /dev/null @@ -1,24 +0,0 @@ -# Directory_GetAllFileSystemEntries - -`Directory_GetAllFileSystemEntries` returns the names of all files and subdirectories in a specified path. - -```csharp -Directory_GetAllFileSystemEntries ( - @path NVARCHAR (MAX)) -RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) -``` - -## Parameters - - - **path**: The relative or absolute path to the directory to search. This string is not case-sensitive. - -## Returns - -A list of the names of files and subdirectories in the specified directory, or an empty list if no files or subdirectories are found. - -## Example - -```csharp -SELECT * FROM Directory_GetAllFileSystemEntries('C:\Logs') -``` - diff --git a/docs2/pages/documentations/directory/directory-get-all-files.md b/docs2/pages/documentations/directory/directory-get-all-files.md deleted file mode 100644 index d73af20..0000000 --- a/docs2/pages/documentations/directory/directory-get-all-files.md +++ /dev/null @@ -1,24 +0,0 @@ -# Directory_GetAllFiles - -`Directory_GetAllFiles` returns the names of files (including their paths) in the specified directory. - -```csharp -Directory_GetAllFiles ( - @path NVARCHAR (MAX)) -RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) -``` - -## Parameters - - - **path**: The relative or absolute path to the directory to search. This string is not case-sensitive. - -## Returns - -An list of the full names (including paths) for the files in the specified directory, or an empty list if no files are found. - -## Example - -```csharp -SELECT * FROM Directory_GetAllFiles('C:\Logs') -``` - diff --git a/docs2/pages/documentations/directory/directory-get-creation-time-utc.md b/docs2/pages/documentations/directory/directory-get-creation-time-utc.md deleted file mode 100644 index f63788f..0000000 --- a/docs2/pages/documentations/directory/directory-get-creation-time-utc.md +++ /dev/null @@ -1,24 +0,0 @@ -# Directory_GetCreationTimeUtc - -`Directory_GetCreationTimeUtc` returns the creation date and time, in Coordinated Universal Time (UTC) format, of a directory. - -```csharp -Directory_GetCreationTimeUtc ( - @path NVARCHAR (MAX)) -RETURNS DATETIME -``` - -## Parameters - - - **path**: The path of the directory. - -## Returns - -A DateTime object set to the creation date and time for the specified directory. This value is expressed in UTC time. - -## Example - -```csharp -SELECT SQLNET::Directory_GetCreationTimeUtc('C:\Logs') -``` - diff --git a/docs2/pages/documentations/directory/directory-get-creation-time.md b/docs2/pages/documentations/directory/directory-get-creation-time.md deleted file mode 100644 index 40d4a0b..0000000 --- a/docs2/pages/documentations/directory/directory-get-creation-time.md +++ /dev/null @@ -1,24 +0,0 @@ -# Directory_GetCreationTime - -`Directory_GetCreationTime` returns the creation date and time of a directory. - -```csharp -Directory_GetCreationTime ( - @path NVARCHAR (MAX)) -RETURNS DATETIME -``` - -## Parameters - - - **path**: The path of the directory. - -## Returns - -A DateTime object set to the creation date and time for the specified directory. This value is expressed in local time. - -## Example - -```csharp -SELECT SQLNET::Directory_GetCreationTime('C:\Logs') -``` - diff --git a/docs2/pages/documentations/directory/directory-get-directories.md b/docs2/pages/documentations/directory/directory-get-directories.md deleted file mode 100644 index e99a5fb..0000000 --- a/docs2/pages/documentations/directory/directory-get-directories.md +++ /dev/null @@ -1,39 +0,0 @@ -# Directory_GetDirectories - -`Directory_GetDirectories` returns the names of the subdirectories (including their paths) that match the specified search pattern in the specified directory, and optionally searches subdirectories. - -```csharp -Directory_GetDirectories ( - @path NVARCHAR (MAX), - @searchPattern NVARCHAR (MAX) - @searchOption -) -RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) -``` - -## Parameters - - - **path**: The relative or absolute path to the directory to search. This string is not case-sensitive. - - **searchPattern**: The search string to match against the names of files in path. This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions. - - **searchOption**: One of the enumeration values that specifies whether the search operation should include all subdirectories or only the current directory. - -### SearchOption - -You can use one of the following options. - -| SearchOption |Integer Value | Descritpiton | -|:----------------------|:--------------|:--------------| -|TopDirectoryOnly | 0 | Includes only the current directory in a search operation. | -|AllDirectories | 1 | Includes the current directory and all its subdirectories in a search operation. This option includes reparse points such as mounted drives and symbolic links in the search. | - -## Returns - -A list of the full names (including paths) of the subdirectories that match the specified criteria, or an empty array if no directories are found. - -## Example - -```csharp -SELECT * FROM Directory_GetDirectories('C:\', 'p*', 1) -SELECT * FROM Directory_GetDirectories('C:\', 'U*', 0) -``` - diff --git a/docs2/pages/documentations/directory/directory-get-file-system-entries.md b/docs2/pages/documentations/directory/directory-get-file-system-entries.md deleted file mode 100644 index 6d31a55..0000000 --- a/docs2/pages/documentations/directory/directory-get-file-system-entries.md +++ /dev/null @@ -1,39 +0,0 @@ -# Directory_GetFileSystemEntries - -`Directory_GetFileSystemEntries` returns a list of all the file names and directory names that match a search pattern in a specified path, and optionally searches subdirectories. - -```csharp -Directory_GetFileSystemEntries ( - @path NVARCHAR (MAX)), - @searchPattern NVARCHAR (MAX) - @searchOption -) -RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) -``` - -## Parameters - - - **path**: The relative or absolute path to the directory to search. This string is not case-sensitive. - - **searchPattern**: The search string to match against the names of files in path. This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions. - - **searchOption**: One of the enumeration values that specifies whether the search operation should include all subdirectories or only the current directory. - -### SearchOption - -You can use one of the following options. - -| SearchOption |Integer Value | Descritpiton | -|:----------------------|:--------------|:--------------| -|TopDirectoryOnly | 0 | Includes only the current directory in a search operation. | -|AllDirectories | 1 | Includes the current directory and all its subdirectories in a search operation. This option includes reparse points such as mounted drives and symbolic links in the search. | - -## Returns - -An list of file the file names and directory names that match the specified search criteria, or an empty list if no files or directories are found. - -## Example - -```csharp -SELECT * FROM Directory_GetFileSystemEntries('C:\Logs', '*.html', 1) -SELECT * FROM Directory_GetFileSystemEntries('C:\Temp', '*.pdf', 0) -``` - diff --git a/docs2/pages/documentations/directory/directory-get-files.md b/docs2/pages/documentations/directory/directory-get-files.md deleted file mode 100644 index 46e1849..0000000 --- a/docs2/pages/documentations/directory/directory-get-files.md +++ /dev/null @@ -1,39 +0,0 @@ -# Directory_GetFiles - -`Directory_GetFiles` returns the names of files (including their paths) that match the specified search pattern in the specified directory, using a value to determine whether to search subdirectories. - -```csharp -Directory_GetFiles ( - @path NVARCHAR (MAX), - @searchPattern NVARCHAR (MAX) - @searchOption -) -RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) -``` - -## Parameters - - - **path**: The relative or absolute path to the directory to search. This string is not case-sensitive. - - **searchPattern**: The search string to match against the names of files in path. This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions. - - **searchOption**: One of the enumeration values that specifies whether the search operation should include all subdirectories or only the current directory. - -### SearchOption - -You can use one of the following options. - -| SearchOption |Integer Value | Descritpiton | -|:----------------------|:--------------|:--------------| -|TopDirectoryOnly | 0 | Includes only the current directory in a search operation. | -|AllDirectories | 1 | Includes the current directory and all its subdirectories in a search operation. This option includes reparse points such as mounted drives and symbolic links in the search. | - -## Returns - -A list of the full names (including paths) for the files in the specified directory that match the specified search pattern and option, or an empty list if no files are found. - -## Example - -```csharp -SELECT * FROM Directory_GetFiles('C:\Logs', '*.html', 1) -SELECT * FROM Directory_GetFiles('C:\Temp', '*.pdf', 0) -``` - diff --git a/docs2/pages/documentations/directory/directory-get-last-access-time-utc.md b/docs2/pages/documentations/directory/directory-get-last-access-time-utc.md deleted file mode 100644 index f1212fc..0000000 --- a/docs2/pages/documentations/directory/directory-get-last-access-time-utc.md +++ /dev/null @@ -1,24 +0,0 @@ -# Directory_GetLastAccessTimeUtc - -`Directory_GetLastAccessTimeUtc` returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. - -```csharp -Directory_GetLastAccessTimeUtc ( - @path NVARCHAR (MAX)) -RETURNS DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to obtain access date and time information. - -## Returns - -A DateTime object that is set to the date and time the specified file or directory was last accessed. This value is expressed in UTC time. - -## Example - -```csharp -SELECT SQLNET::Directory_GetLastAccessTimeUtc('C:\Logs') -``` - diff --git a/docs2/pages/documentations/directory/directory-get-last-access-time.md b/docs2/pages/documentations/directory/directory-get-last-access-time.md deleted file mode 100644 index 8d0ae62..0000000 --- a/docs2/pages/documentations/directory/directory-get-last-access-time.md +++ /dev/null @@ -1,24 +0,0 @@ -# Directory_GetLastAccessTime - -`Directory_GetLastAccessTime` returns the date and time the specified file or directory was last accessed. - -```csharp -Directory_GetLastAccessTime ( - @path NVARCHAR (MAX)) -RETURNS DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to obtain access date and time information. - -## Returns - -A DateTime object that is set to the date and time the specified file or directory was last accessed. This value is expressed in local time. - -## Example - -```csharp -SELECT SQLNET::Directory_GetLastAccessTime('C:\Logs') -``` - diff --git a/docs2/pages/documentations/directory/directory-get-last-write-time-utc.md b/docs2/pages/documentations/directory/directory-get-last-write-time-utc.md deleted file mode 100644 index 44e7955..0000000 --- a/docs2/pages/documentations/directory/directory-get-last-write-time-utc.md +++ /dev/null @@ -1,24 +0,0 @@ -# Directory_GetLastWriteTimeUtc - -`Directory_GetLastWriteTimeUtc` returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last written to. - -```csharp -Directory_GetLastWriteTimeUtc ( - @path NVARCHAR (MAX)) -RETURNS DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to obtain access date and time information. - -## Returns - -A DateTime object that is set to the date and time the specified file or directory was last written to. This value is expressed in UTC time. - -## Example - -```csharp -SELECT SQLNET::Directory_GetLastWriteTimeUtc('C:\Logs') -``` - diff --git a/docs2/pages/documentations/directory/directory-get-last-write-time.md b/docs2/pages/documentations/directory/directory-get-last-write-time.md deleted file mode 100644 index 39e94bb..0000000 --- a/docs2/pages/documentations/directory/directory-get-last-write-time.md +++ /dev/null @@ -1,24 +0,0 @@ -# Directory_GetLastWriteTime - -`Directory_GetLastWriteTime` returns the date and time the specified file or directory was last written to. - -```csharp -Directory_GetLastWriteTime ( - @path NVARCHAR (MAX)) -RETURNS DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to obtain access date and time information. - -## Returns - -A DateTime object that is set to the date and time the specified file or directory was last written to. This value is expressed in local time. - -## Example - -```csharp -SELECT SQLNET::Directory_GetLastWriteTime('C:\Logs') -``` - diff --git a/docs2/pages/documentations/directory/directory-move.md b/docs2/pages/documentations/directory/directory-move.md deleted file mode 100644 index f626f56..0000000 --- a/docs2/pages/documentations/directory/directory-move.md +++ /dev/null @@ -1,21 +0,0 @@ -# Directory_Move - -`Directory_Move` moves a file or a directory and its contents to a new location. - -```csharp -Directory_Move - @sourceDirName NVARCHAR (MAX), - @destDirName NVARCHAR (MAX) -``` - -## Parameters - - - **sourceDirName**: The path of the file or directory to move. - - **destDirName**: The path to the new location for `sourceDirName`. If `sourceDirName` is a file, then `destDirName` must also be a file name. - -## Example - -```csharp -EXEC Directory_Move @sourceDirName = 'C:\source', @destDirName = 'C:\destination' -``` - diff --git a/docs2/pages/documentations/directory/directory-set-creation-time-utc.md b/docs2/pages/documentations/directory/directory-set-creation-time-utc.md deleted file mode 100644 index 73f9952..0000000 --- a/docs2/pages/documentations/directory/directory-set-creation-time-utc.md +++ /dev/null @@ -1,21 +0,0 @@ -# Directory_SetCreationTimeUtc - -`Directory_SetCreationTimeUtc` sets the creation date and time, in Coordinated Universal Time (UTC) format, for the specified file or directory. - -```csharp -Directory_SetCreationTimeUtc - @path NVARCHAR (MAX), - @creationTime DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to set the creation date and time information. - - **creationTime**: The date and time the file or directory was last written to. This value is expressed in UTC time. - -## Example - -```csharp -EXEC Directory_SetCreationTimeUtc @path = 'C:\destination', @creationTime = '2018-12-05 8:00:00 AM' -``` - diff --git a/docs2/pages/documentations/directory/directory-set-creation-time.md b/docs2/pages/documentations/directory/directory-set-creation-time.md deleted file mode 100644 index 6755a97..0000000 --- a/docs2/pages/documentations/directory/directory-set-creation-time.md +++ /dev/null @@ -1,21 +0,0 @@ -# Directory_SetCreationTime - -`Directory_SetCreationTime` sets the creation date and time for the specified file or directory. - -```csharp -Directory_SetCreationTime - @path NVARCHAR (MAX), - @creationTime DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to set the creation date and time information. - - **creationTime**: The date and time the file or directory was last written to. This value is expressed in local time. - -## Example - -```csharp -EXEC Directory_SetCreationTime @path = 'C:\destination', @creationTime = '2018-12-05' -``` - diff --git a/docs2/pages/documentations/directory/directory-set-last-access-time-utc.md b/docs2/pages/documentations/directory/directory-set-last-access-time-utc.md deleted file mode 100644 index 86c9eaa..0000000 --- a/docs2/pages/documentations/directory/directory-set-last-access-time-utc.md +++ /dev/null @@ -1,21 +0,0 @@ -# Directory_SetLastAccessTimeUtc - -`Directory_SetLastAccessTimeUtc` sets the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. - -```csharp -Directory_SetLastAccessTimeUtc - @path NVARCHAR (MAX), - @lastAccessTime DATETIME -``` - -## Parameters - - - **path**: The path of the directory. - - **lastAccessTime**: An object that contains the value to set for the access date and time of `path`. This value is expressed in UTC time. - -## Example - -```csharp -EXEC Directory_SetLastAccessTimeUtc @path = 'C:\destination', @lastAccessTime = '2018-12-05 8:00:00 AM' -``` - diff --git a/docs2/pages/documentations/directory/directory-set-last-access-time.md b/docs2/pages/documentations/directory/directory-set-last-access-time.md deleted file mode 100644 index 2a5d0c9..0000000 --- a/docs2/pages/documentations/directory/directory-set-last-access-time.md +++ /dev/null @@ -1,21 +0,0 @@ -# Directory_SetLastAccessTime - -`Directory_SetLastAccessTime` sets the date and time the specified file or directory was last accessed. - -```csharp -Directory_SetLastAccessTime - @path NVARCHAR (MAX), - @lastAccessTime DATETIME -``` - -## Parameters - - - **path**: The path of the directory. - - **lastAccessTime**: An object that contains the value to set for the access date and time of `path`. This value is expressed in local time. - -## Example - -```csharp -EXEC Directory_SetLastAccessTime @path = 'C:\destination', @lastAccessTime = '2018-12-05' -``` - diff --git a/docs2/pages/documentations/directory/directory-set-last-write-time-utc.md b/docs2/pages/documentations/directory/directory-set-last-write-time-utc.md deleted file mode 100644 index c1c11dd..0000000 --- a/docs2/pages/documentations/directory/directory-set-last-write-time-utc.md +++ /dev/null @@ -1,20 +0,0 @@ -# Directory_SetLastWriteTimeUtc - -`Directory_SetLastWriteTimeUtc` sets the date and time, in Coordinated Universal Time (UTC) format, that a directory was last written to. -```csharp -Directory_SetLastWriteTimeUtc - @path NVARCHAR (MAX), - @lastWriteTime DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to set the creation date and time information. - - **lastWriteTime**: The date and time the directory was last written to. This value is expressed in local time. - -## Example - -```csharp -EXEC Directory_SetLastWriteTimeUtc @path = 'C:\destination', @lastWriteTime = '2018-12-05 8:00:00 AM' -``` - diff --git a/docs2/pages/documentations/directory/directory-set-last-write-time.md b/docs2/pages/documentations/directory/directory-set-last-write-time.md deleted file mode 100644 index 548ddd5..0000000 --- a/docs2/pages/documentations/directory/directory-set-last-write-time.md +++ /dev/null @@ -1,21 +0,0 @@ -# Directory_SetLastWriteTime - -`Directory_SetLastWriteTime` sets the date and time the specified file or directory was last written to. - -```csharp -Directory_SetLastWriteTime - @path NVARCHAR (MAX), - @lastWriteTime DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to set the creation date and time information. - - **lastWriteTime**: The date and time the directory was last written to. This value is expressed in local time. - -## Example - -```csharp -EXEC Directory_SetLastWriteTime @path = 'C:\destination', @lastWriteTime = '2018-12-05' -``` - diff --git a/docs2/pages/documentations/directory/directory.md b/docs2/pages/documentations/directory/directory.md deleted file mode 100644 index 3a94a2a..0000000 --- a/docs2/pages/documentations/directory/directory.md +++ /dev/null @@ -1,30 +0,0 @@ -# Directory - -Provides methods for creating, moving, and enumerating through directories and subdirectories. - -| Name | Description | Example | -| :--- | :---------- | :------ | -| [Directory_Create(path)](/directory-create) | Creates all directories and subdirectories in the specified path unless they already exist. | [Try it]()| -| [Directory_CreateSubDirectory(path)](/directory-create-sub-directory) | Creates a subdirectory or subdirectories on the specified path. | [Try it]()| -| [Directory_Delete(path)](/directory-delete) | Deletes an empty directory from a specified path. | [Try it]()| -| [Directory_DeleteAll(path)](/directory-delete-all) | Deletes a directory from a specified path including subdirectories, and files. | [Try it]()| -| [Directory_Exists(path)](/directory-exists) | Determines whether the given path refers to an existing directory on disk. | [Try it]()| -| [Directory_GetAllDirectories(path)](/directory-get-all-directories) | Returns the names of subdirectories (including their paths) in the specified directory. | [Try it]()| -| [Directory_GetAllFiles(path)](/directory-get-all-files) | Returns the names of files (including their paths) in the specified directory. | [Try it]()| -| [Directory_GetAllFileSystemEntries(path)](/directory-get-all-file-system-entries) | Returns the names of all files and subdirectories in a specified path. | [Try it]()| -| [Directory_GetCreationTime(path)](/directory-get-creation-time) | Returns the creation date and time of a directory. | [Try it]()| -| [Directory_GetCreationTimeUtc(path)](/directory-get-creation-time-utc) | Returns the creation date and time, in Coordinated Universal Time (UTC) format, of a directory. | [Try it]()| -| [Directory_GetDirectories(path)](/directory-get-directories) | Returns the names of the subdirectories (including their paths) that match the specified search pattern in the specified directory, and optionally searches subdirectories. | [Try it]()| -| [Directory_GetFiles(path)](/directory-get-files) | Returns the names of files (including their paths) that match the specified search pattern in the specified directory, using a value to determine whether to search subdirectories. | [Try it]()| -| [Directory_GetFileSystemEntries(path)](/directory-get-file-system-entries) | Returns a list of all the file names and directory names that match a search pattern in a specified path, and optionally searches subdirectories. | [Try it]()| -| [Directory_GetLastAccessTime(path)](/directory-get-last-access-time) | Returns the date and time the specified file or directory was last accessed. | [Try it]()| -| [Directory_GetLastAccessTimeUtc(path)](/directory-get-last-access-time-utc) | Returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. | [Try it]()| -| [Directory_GetLastWriteTime(path)](/directory-get-last-write-time) | Returns the date and time the specified file or directory was last written to. | [Try it]()| -| [Directory_GetLastWriteTimeUtc(path)](/directory-get-last-write-time-utc) | Returns the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last written to. | [Try it]()| -| [Directory_Move(sourceDirName, destDirName)](/directory-move) | Moves a file or a directory and its contents to a new location. | [Try it]()| -| [Directory_SetCreationTime(path, creationTime)](/directory-set-creation-time) | Sets the creation date and time for the specified file or directory. | [Try it]()| -| [Directory_SetCreationTimeUtc(path, creationTime)](/directory-set-creation-time-utc) | Sets the creation date and time, in Coordinated Universal Time (UTC) format, for the specified file or directory. | [Try it]()| -| [Directory_SetLastAccessTime(path, lastTime)](/directory-set-last-access-time) | Sets the date and time the specified file or directory was last accessed. | [Try it]()| -| [Directory_SetLastAccessTimeUtc(path, lastTime)](/directory-set-last-access-time-utc) | Sets the date and time, in Coordinated Universal Time (UTC) format, that the specified file or directory was last accessed. | [Try it]()| -| [Directory_SetLastWriteTime(path, lastTime)](/directory-set-last-write-time) | Sets the date and time a directory was last written to. | [Try it]()| -| [Directory_SetLastWriteTimeUtc(path, lastTime)](/directory-set-last-write-time-utc) | Sets the date and time, in Coordinated Universal Time (UTC) format, that a directory was last written to. | [Try it]()| diff --git a/docs2/pages/documentations/eval-expressions/_sidebar.md b/docs2/pages/documentations/eval-expressions/_sidebar.md deleted file mode 100644 index 69c1e54..0000000 --- a/docs2/pages/documentations/eval-expressions/_sidebar.md +++ /dev/null @@ -1,3 +0,0 @@ - - [LINQ Dynamic](linq-dynamic.md) - - [Eval.Compile](eval-compile.md) - - [Eval.Execute](eval-execute.md) diff --git a/docs2/pages/documentations/eval-expressions/eval-compile.md b/docs2/pages/documentations/eval-expressions/eval-compile.md deleted file mode 100644 index 1e80206..0000000 --- a/docs2/pages/documentations/eval-expressions/eval-compile.md +++ /dev/null @@ -1,65 +0,0 @@ -# Eval.Compile - -## Description -You can compile C# expression at runtime using the [Eval-Expression.NET](http://eval-expression.net/) library. - -You can download it here: [Download](http://eval-expression.net/download) - -> The Eval-Expression.NET library can be activated with the Eval-SQL.NET license. - -## Compile and return a strongly typed delegate -You can return the delegate as a strongly typed function or action: - -- Eval.Compile<TDelegate>(string code) -- Eval.Compile<TDelegate>(string code, IEnumerable<string> parameterNames) -- Eval.Compile<TDelegate>(string code, params string[] parameterNames) - -### Example -```csharp -// Delegate Func -var compiled = Eval.Compile>("{0} + {1}"); -int result = compiled(1, 2); - -// Delegate Action -var compiled = Eval.Compile>("{0} + {1}"); -compiled(1, 2); - -// Named Parameter -var compiled = Eval.Compile>("X + Y", "X", "Y"); -int result = compiled(1, 2); -``` -{% include component-try-it.html href='https://dotnetfiddle.net/MBHlX8' %} - -## Compile and return a delegate -You can return the delegate as a generic delegate: - -- Eval.Compile(string code): Func<object> -- Eval.Compile(string code, Type type1): Func<object, object> -- Eval.Compile(string code, Type type1, ... , Type type9): Func<object, ... , object, object> -- Eval.Compile(string code, IEnumerable<Type> types): Func<IEnumerable, object> -- Eval.Compile(string code, params Type[] types): Func<IEnumerable, object> -- Eval.Compile(string code, IDictionary<string, Type> nameTypes): Func<IDictionary, object> - -### Example -```csharp -// Overload: Up to 9 parameters can be used -var compiled = Eval.Compile("{0} + {1}", typeof(int), typeof(int)); -object result = compiled(1, 2); - -// Overload: params Type[] -var values = new List() {1, 2}; -var types = values.Select(x => x.GetType()).ToArray(); - -var compiled = Eval.Compile("{0} + {1}", types); -var result = compiled(values); - -// Overload: IDictionary -var values = new Dictionary { {"X", 1}, {"Y", 2} }; -var types = values.ToDictionary(x => x.Key, x => x.Value.GetType()); - -var compiled = Eval.Compile("X + Y", types); -var result = compiled(values); -``` -{% include component-try-it.html href='https://dotnetfiddle.net/870F71' %} - - diff --git a/docs2/pages/documentations/eval-expressions/eval-execute.md b/docs2/pages/documentations/eval-expressions/eval-execute.md deleted file mode 100644 index 4708973..0000000 --- a/docs2/pages/documentations/eval-expressions/eval-execute.md +++ /dev/null @@ -1,73 +0,0 @@ -# Eval.Execute - -## Description -You can execute C# expression at runtime using the [Eval-Expression.NET](http://eval-expression.net/) library. - -You can download it here: [Download](http://eval-expression.net/download) - -> The Eval-Expression.NET library can be activated with the Eval-SQL.NET license. - -You can specify parameter value to use in the expression from various way: - -- Anonymous Type -- Argument Position -- Class Member -- Dictionary - -Under the hood, the fist time an expression is executed, it's getting compiled and the delegate is stored in the memory before being returned and executed. All future calls from the same expression will retrieve the delegate from the memory to optimize the performance. - -Even with this optimization, if you have to evaluate multiple times the same expression, for example in a for loop, we highly recommend you to use directly the delegate returning from the Compile method instead. - -## Execute and return a strongly typed result -You can return the result as a strongly typed type: - -- Eval.Execute<TResult>(string code) -- Eval.Execute<TResult>(string code, object parameters) -- Eval.Execute<TResult>(string code, params object[] parameters) - -### Example - -```csharp -// Parameter: Anonymous Type -int result = Eval.Execute("X + Y", new { X = 1, Y = 2} ); - -// Parameter: Argument Position -int result = Eval.Execute("{0} + {1}", 1, 2); - -// Parameter: Class Member -dynamic expandoObject = new ExpandoObject(); -expandoObject.X = 1; -expandoObject.Y = 2; -int result = Eval.Execute("X + Y", expandoObject); - -// Parameter: Dictionary Key -var values = new Dictionary() { {"X", 1}, {"Y", 2} }; -int result = Eval.Execute("X + Y", values); -``` -{% include component-try-it.html href='https://dotnetfiddle.net/W9TwcP' %} - -## Execute and return an object result -You can return the result as an object: - -- Eval.Execute(string code) -- Eval.Execute(string code, object parameters) -- Eval.Execute(string code, params object[] parameters) - -```csharp -// Parameter: Anonymous Type -object result = Eval.Execute("X + Y", new { X = 1, Y = 2} ); - -// Parameter: Argument Position -object result = Eval.Execute("{0} + {1}", 1, 2); - -// Parameter: Class Member -dynamic expandoObject = new ExpandoObject(); -expandoObject.X = 1; -expandoObject.Y = 2; -object result = Eval.Execute("X + Y", expandoObject); - -// Parameter: Dictionary Key -var values = new Dictionary() { {"X", 1}, {"Y", 2} }; -object result = Eval.Execute("X + Y", values); -``` -{% include component-try-it.html href='https://dotnetfiddle.net/8mtLH8' %} diff --git a/docs2/pages/documentations/eval-expressions/linq-dynamic.md b/docs2/pages/documentations/eval-expressions/linq-dynamic.md deleted file mode 100644 index 180385f..0000000 --- a/docs2/pages/documentations/eval-expressions/linq-dynamic.md +++ /dev/null @@ -1,75 +0,0 @@ -# LINQ Dynamic - -## Description -You can execute query dynamically through the [Eval-Expression.NET](http://eval-expression.net/) library. - -You can download it here: [Download](http://eval-expression.net/download) - -> The Eval-Expression.NET library can be activated with the Eval-SQL.NET license. - -## LINQ Dynamic - Predicate -You can use any LINQ method that support predicate with a dynamic C# expression : - -- Deferred - - SkipWhile - - TakeWhile - - Where -- Immediate - - All - - Any - - Count - - First - - FirstOrDefault - - Last - - LastOrDefault - - LongCount - - Single - - SingleOrDefault - -### Example -```csharp -var list = new List() { 1, 2, 3, 4, 5 }; - -var list2 = list.Where(x => "x > 2"); -var list3 = list.Where(x => "x > X", new { X = 2 }); // with parameter -``` -{% include component-try-it.html href='https://dotnetfiddle.net/S42mkU' %} - -## LINQ Dynamic - Ordering and Selecting -You can use any ordering and selecting method with a dynamic C# expression: - - - OrderByDescendingDynamic - - OrderByDynamic - - SelectDynamic - - SelectMany - - ThenByDescendingDynamic - - ThenByDynamic - -> The **"Dynamic"** suffix is required for not overriding the default behavior (ordering or selecting by a string is valid). - -### Example -```csharp -var list = new List() { 5, 2, 4, 1, 3 }; - -// SelectDynamic -var list2 = list.SelectDynamic(x => "new { y = x + 1 }"); -var list3 = list.SelectDynamic(x => "new { y = x + 1 }", new { y = 1 }); - -// OrderByDynamic -var list4 = list.OrderByDynamic(x => "x + 1"); -var list5 = list.OrderByDynamic(x => "x + Y", new { Y = 1 }); -``` - -## LINQ Dynamic - Execute -You can push the LINQ Dynamic experience further by using the Execute method and chaining anything else: - -- Execute -- Execute<TResult> - -### Example -```csharp -var list = new List() { 1, 2, 3, 4, 5 }; - -var list2 = list.Execute>("Where(x => x > 2).OrderBy(x => x).ToList()"); -var list3 = list.Execute>("Where(x => x > y).OrderBy(x => x).ToList()", new { y = 2 }); -``` diff --git a/docs2/pages/documentations/eval.md b/docs2/pages/documentations/eval.md deleted file mode 100644 index 3bfc210..0000000 --- a/docs2/pages/documentations/eval.md +++ /dev/null @@ -1,120 +0,0 @@ -# Eval - -## Eval - -Evaluate the code or expression and return the result. - - - Eval - - EvalBigInt - - EvalBinary - - EvalBit - - EvalDateTime - - EvalInt - - EvalSmallInt - - EvalString - - EvalTinyInt - - EvalUniqueIdentifier - - EvalVarBinary - - -```csharp -DECLARE @sqlnet SQLNET = SQLNET::New('x+y').ValueInt('x', 1).ValueInt('y', 2).Root(); - -DECLARE @value_variant SQL_VARIANT = @sqlnet.Eval(); -DECLARE @value_int INT = @sqlnet.EvalInt(); -DECLARE @value_decimal DECIMAL(18, 2) = CAST(@sqlnet.Eval() AS DECIMAL(18, 2)) - --- SELECT 3, 3, 3.00 -SELECT @value_variant as variant , @value_int as int, @value_decimal as decimal -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/58568/15' %} - -## EvalReadAccess - -Evaluate the code or expression allowing "Read" and return the result. - - - EvalReadAccess - - EvalReadAccessBigInt - - EvalReadAccessBinary - - EvalReadAccessBit - - EvalReadAccessDateTime - - EvalReadAccessInt - - EvalReadAccessSmallInt - - EvalReadAccessString - - EvalReadAccessTinyInt - - EvalReadAccessUniqueIdentifier - - EvalReadAccessVarBinary - -## EvalSQLNET - -Evaluate the code or expression and return a new SQLNET object with the result in the parameter name "value" - - -```csharp --- Eval and create a new SQLNET object -DECLARE @sqlnet SQLNET = SQLNET::New('var list = new List() { 1, 2, 3, 4}') -DECLARE @result SQLNET = @sqlnet.EvalSQLNET() - --- Use the value previously resolved --- SELECT 4 -SELECT @result.Code('value.Count').EvalInt() as Result -Useful to optimize code with object initialization like Regex. -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/989' %} - -## EXEC SQLNET_EvalResultSet - -Stored Procedures that evaluate code or expression and return a Result Set. - - -```csharp --- REQUIRE EXTERNAL_ACCESS permission -DECLARE @sqlnet SQLNET = SQLNET::New(' -string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - -var dir = new DirectoryInfo(path); -return dir.GetFiles("*.*").Select(x => x.FullName).OrderBy(x => x).ToList();') - .Impersonate() - --- SELECT * FROM DesktopFiles ORDER BY File.Fullname -EXEC dbo.SQLNET_EvalResultSet @sqlnet -You can output the result to the client or insert it in a table like a normal procedure. -``` - - -## EvalTVF - -Evaluate the code or expression from a Table-Valued Function (TVF). - - - SQLNET_EvalTVF_1 (SQL_VARIANT) - - SQLNET_EvalTVF_2 (SQL_VARIANT, SQL_VARIANT) - - SQLNET_EvalTVF_3 (SQL_VARIANT, SQL_VARIANT, SQL_VARIANT) - - SQLNET_EvalTVF_4 (SQL_VARIANT, SQL_VARIANT, SQL_VARIANT, SQL_VARIANT) - - SQLNET_EvalTVF_5 (SQL_VARIANT, ..., SQL_VARIANT) - - SQLNET_EvalTVF_String - - -```csharp -CREATE FUNCTION [dbo].[fn_Split] - ( - @input VARCHAR(MAX) , - @pattern VARCHAR(8000) = ',' - ) -RETURNS @split TABLE ( item VARCHAR(8000) ) - BEGIN - DECLARE @regex_split SQLNET = SQLNET::New('Regex.Split(input, pattern)') - .ValueString('input', @input) - .ValueString('pattern', @pattern) - - INSERT INTO @split - SELECT CAST(Value_1 AS VARCHAR(8000)) - FROM [dbo].[SQLNET_EvalTVF_1](@regex_split) - RETURN - END - -GO - --- SPLIT with multiple delimiters (',' and ';') -SELECT * FROM dbo.fn_Split('1, 2, 3; 4; 5', ',|;') -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/b738f/2' %} diff --git a/docs2/pages/documentations/file/file-append-all-text.md b/docs2/pages/documentations/file/file-append-all-text.md deleted file mode 100644 index 094f111..0000000 --- a/docs2/pages/documentations/file/file-append-all-text.md +++ /dev/null @@ -1,21 +0,0 @@ -# File_AppendAllText - -`File_AppendAllText` opens a file, appends the specified string to the file, and then closes the file. If the file does not exist, it creates a file, writes the specified string to the file, then closes the file. - -```csharp -File_AppendAllText - @path NVARCHAR (MAX), - @content NVARCHAR (MAX) -``` - -## Parameters - - - **path**: The file to append the specified string to. - - **content**: The string to append to the file. - -## Example - -```csharp -EXEC File_AppendAllText @path = 'C:\Temp\MyTest.txt', @content = 'This is extra text' -``` - diff --git a/docs2/pages/documentations/file/file-copy.md b/docs2/pages/documentations/file/file-copy.md deleted file mode 100644 index cadd714..0000000 --- a/docs2/pages/documentations/file/file-copy.md +++ /dev/null @@ -1,23 +0,0 @@ -# File_Copy - -`File_Copy` copies an existing file to a new file. - -```csharp -File_Copy - @sourceFileName NVARCHAR (MAX), - @destFileName NVARCHAR (MAX), - @overwrite BIT -``` - -## Parameters - - - **sourceFileName**: The file to copy. - - **destFileName**: The name of the destination file. This cannot be a directory. - - **overwrite**: `true` if the destination file can be overwritten; otherwise, `false`. - -## Example - -```csharp -EXEC File_Copy @sourceFileName = 'C:\Temp\MyTest.txt', @destFileName = 'C:\Temp\MyTest1.txt', @overwrite = 1 -``` - diff --git a/docs2/pages/documentations/file/file-create.md b/docs2/pages/documentations/file/file-create.md deleted file mode 100644 index 28c7f0a..0000000 --- a/docs2/pages/documentations/file/file-create.md +++ /dev/null @@ -1,19 +0,0 @@ -# File_Create - -`File_Create` creates or overwrites a file in the specified path. - -```csharp -File_Create - @path NVARCHAR (MAX) -``` - -## Parameters - - - **path**: The path and name of the file to create. - -## Example - -```csharp -EXEC File_Create @path = 'C:\Temp\MyTest.txt' -``` - diff --git a/docs2/pages/documentations/file/file-decrypt.md b/docs2/pages/documentations/file/file-decrypt.md deleted file mode 100644 index 942f7f1..0000000 --- a/docs2/pages/documentations/file/file-decrypt.md +++ /dev/null @@ -1,19 +0,0 @@ -# File_Decrypt - -`File_Decrypt` decrypts a file that was encrypted by the current account using the [File_Encrypt](/file_encrypt) procedure. - -```csharp -File_Decrypt - @path NVARCHAR (MAX) -``` - -## Parameters - - - **path**: A path that describes a file to decrypt. - -## Example - -```csharp -EXEC File_Decrypt @path = 'C:\Temp\MyTest.txt' -``` - diff --git a/docs2/pages/documentations/file/file-delete.md b/docs2/pages/documentations/file/file-delete.md deleted file mode 100644 index 228643c..0000000 --- a/docs2/pages/documentations/file/file-delete.md +++ /dev/null @@ -1,19 +0,0 @@ -# File_Delete - -`File_Delete` deletes the specified file. - -```csharp -File_Delete - @path NVARCHAR (MAX) -``` - -## Parameters - - - **path**: The name of the file to be deleted. Wildcard characters are not supported. - -## Example - -```csharp -EXEC File_Delete @path = 'C:\Temp\MyTest.txt' -``` - diff --git a/docs2/pages/documentations/file/file-encrypt.md b/docs2/pages/documentations/file/file-encrypt.md deleted file mode 100644 index 977f171..0000000 --- a/docs2/pages/documentations/file/file-encrypt.md +++ /dev/null @@ -1,19 +0,0 @@ -# File_Encrypt - -`File_Encrypt` encrypts a file so that only the account used to encrypt the file can decrypt it. - -```csharp -File_Encrypt - @path NVARCHAR (MAX) -``` - -## Parameters - - - **path**: A path that describes a file to encrypt. - -## Example - -```csharp -EXEC File_Encrypt @path = 'C:\Temp\MyTest.txt' -``` - diff --git a/docs2/pages/documentations/file/file-get-creation-time-utc.md b/docs2/pages/documentations/file/file-get-creation-time-utc.md deleted file mode 100644 index 4091630..0000000 --- a/docs2/pages/documentations/file/file-get-creation-time-utc.md +++ /dev/null @@ -1,24 +0,0 @@ -# File_GetCreationTimeUtc - -`File_GetCreationTimeUtc` returns the creation date and time, in coordinated universal time (UTC), of the specified file or directory. - -```csharp -File_GetCreationTimeUtc ( - @path NVARCHAR (MAX)) -RETURNS DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to obtain creation date and time information. - -## Returns - -A DateTime object set to the creation date and time for the specified file or directory. This value is expressed in UTC time. - -## Example - -```csharp -SELECT SQLNET::File_GetCreationTimeUtc('C:\Temp\MyTest.txt') -``` - diff --git a/docs2/pages/documentations/file/file-get-creation-time.md b/docs2/pages/documentations/file/file-get-creation-time.md deleted file mode 100644 index 1f02f49..0000000 --- a/docs2/pages/documentations/file/file-get-creation-time.md +++ /dev/null @@ -1,24 +0,0 @@ -# File_GetCreationTime - -`File_GetCreationTime` returns the creation date and time of the specified file or directory. - -```csharp -File_GetCreationTime ( - @path NVARCHAR (MAX)) -RETURNS DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to obtain creation date and time information. - -## Returns - -A DateTime object set to the creation date and time for the specified file or directory. This value is expressed in local time. - -## Example - -```csharp -SELECT SQLNET::File_GetCreationTime('C:\Temp\MyTest.txt') -``` - diff --git a/docs2/pages/documentations/file/file-get-last-access-time-utc.md b/docs2/pages/documentations/file/file-get-last-access-time-utc.md deleted file mode 100644 index 5b55ae1..0000000 --- a/docs2/pages/documentations/file/file-get-last-access-time-utc.md +++ /dev/null @@ -1,24 +0,0 @@ -# File_GetLastAccessTimeUtc - -`File_GetLastAccessTimeUtc` returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last accessed. - -```csharp -File_GetLastAccessTimeUtc ( - @path NVARCHAR (MAX)) -RETURNS DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to obtain access date and time information. - -## Returns - -A DateTime object set to the date and time that the specified file or directory was last accessed. This value is expressed in UTC time. - -## Example - -```csharp -SELECT SQLNET::File_GetLastAccessTimeUtc('C:\Temp\MyTest.txt') -``` - diff --git a/docs2/pages/documentations/file/file-get-last-access-time.md b/docs2/pages/documentations/file/file-get-last-access-time.md deleted file mode 100644 index c9c5daa..0000000 --- a/docs2/pages/documentations/file/file-get-last-access-time.md +++ /dev/null @@ -1,24 +0,0 @@ -# File_GetLastAccessTime - -`File_GetLastAccessTime` returns the date and time the specified file or directory was last accessed. - -```csharp -File_GetLastAccessTime ( - @path NVARCHAR (MAX)) -RETURNS DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to obtain access date and time information. - -## Returns - -A DateTime object set to the date and time that the specified file or directory was last accessed. This value is expressed in local time. - -## Example - -```csharp -SELECT SQLNET::File_GetLastAccessTime('C:\Temp\MyTest.txt') -``` - diff --git a/docs2/pages/documentations/file/file-get-last-write-time-utc.md b/docs2/pages/documentations/file/file-get-last-write-time-utc.md deleted file mode 100644 index 18d9950..0000000 --- a/docs2/pages/documentations/file/file-get-last-write-time-utc.md +++ /dev/null @@ -1,24 +0,0 @@ -# File_GetLastWriteTimeUtc - -`File_GetLastWriteTimeUtc` returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last written to. - -```csharp -File_GetLastWriteTimeUtc ( - @path NVARCHAR (MAX)) -RETURNS DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to obtain write date and time information. - -## Returns - -A DateTime object set to the date and time that the specified file or directory was last written to. This value is expressed in UTC time. - -## Example - -```csharp -SELECT SQLNET::File_GetLastWriteTimeUtc('C:\Temp\MyTest.txt') -``` - diff --git a/docs2/pages/documentations/file/file-get-last-write-time.md b/docs2/pages/documentations/file/file-get-last-write-time.md deleted file mode 100644 index 0a941ff..0000000 --- a/docs2/pages/documentations/file/file-get-last-write-time.md +++ /dev/null @@ -1,24 +0,0 @@ -# File_GetLastWriteTime - -`File_GetLastWriteTime` returns the date and time the specified file or directory was last written to. - -```csharp -File_GetLastWriteTime ( - @path NVARCHAR (MAX)) -RETURNS DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to obtain write date and time information. - -## Returns - -A DateTime object set to the date and time that the specified file or directory was last written to. This value is expressed in local time. - -## Example - -```csharp -SELECT SQLNET::File_GetLastWriteTime('C:\Temp\MyTest.txt') -``` - diff --git a/docs2/pages/documentations/file/file-isexists.md b/docs2/pages/documentations/file/file-isexists.md deleted file mode 100644 index 3ea089e..0000000 --- a/docs2/pages/documentations/file/file-isexists.md +++ /dev/null @@ -1,25 +0,0 @@ -# File_IsExists - -`File_IsExists` determines whether the specified file exists. - -```csharp -File_IsExists ( - @path NVARCHAR (MAX) - ) -RETURNS BIT -``` - -## Parameters - - - **path**: The path of a file to check. - -## Returns - -`true` if path refers to an existing directory; `false` if the directory does not exist or an error occurs when trying to determine if the specified directory exists. - -## Example - -```csharp -SELECT SQLNET::File_IsExists('C:\Temp\MyTest.txt') -``` - diff --git a/docs2/pages/documentations/file/file-move.md b/docs2/pages/documentations/file/file-move.md deleted file mode 100644 index 19ef334..0000000 --- a/docs2/pages/documentations/file/file-move.md +++ /dev/null @@ -1,21 +0,0 @@ -# File_Move - -`File_Move` moves a specified file to a new location, providing the option to specify a new file name. - -```csharp -File_Move - @sourceFileName NVARCHAR (MAX), - @destFileName NVARCHAR (MAX) -``` - -## Parameters - - - **sourceFileName**: The name of the file to move. - - **destFileName**: The new path and name for the file. - -## Example - -```csharp -EXEC File_Move @sourceFileName = 'C:\Temp\MyTest.txt', @destFileName = 'C:\Temp\MyNewTest.txt' -``` - diff --git a/docs2/pages/documentations/file/file-read-all-text.md b/docs2/pages/documentations/file/file-read-all-text.md deleted file mode 100644 index 136b20e..0000000 --- a/docs2/pages/documentations/file/file-read-all-text.md +++ /dev/null @@ -1,24 +0,0 @@ -# File_ReadAllText - -`File_ReadAllText` 0pens a text file, reads and returns all the text in the file, and then closes the file. - -```csharp -File_ReadAllText ( - @path NVARCHAR (MAX)) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **path**: The file path to open for reading. - -## Returns - -A string containing all the text in the file. - -## Example - -```csharp -SELECT SQLNET::File_ReadAllText('C:\Temp\MyTest.txt') -``` - diff --git a/docs2/pages/documentations/file/file-replace.md b/docs2/pages/documentations/file/file-replace.md deleted file mode 100644 index 18e8adf..0000000 --- a/docs2/pages/documentations/file/file-replace.md +++ /dev/null @@ -1,25 +0,0 @@ -# File_Replace - -`File_Replace` replaces the contents of a specified file with the contents of another file, deleting the original file, and creating a backup of the replaced file and optionally ignores merge errors. - -```csharp -File_Replace - @sourceFileName NVARCHAR (MAX), - @destFileName NVARCHAR (MAX), - @destBackupFileName NVARCHAR (MAX), - @ignoreMetadataErrors BIT -``` - -## Parameters - - - **sourceFileName**: The name of a file that replaces the file specified by `destinationFileName`. - - **destFileName**: The name of the file being replaced. - - **destBackupFileName**: The name of the backup file. - - **ignoreMetadataErrors**: `true` to ignore merge errors (such as attributes and access control lists (ACLs)) from the replaced file to the replacement file; otherwise, `false`. - -## Example - -```csharp -EXEC File_Replace @sourceFileName = 'C:\Temp\MyTest.txt', @destFileName = 'C:\Temp\MyNewTest.txt', @destBackupFileName = 'C:\Temp\MybackupTest.txt', @ignoreMetadataErrors = 0 -``` - diff --git a/docs2/pages/documentations/file/file-set-creation-time-utc.md b/docs2/pages/documentations/file/file-set-creation-time-utc.md deleted file mode 100644 index 8576a15..0000000 --- a/docs2/pages/documentations/file/file-set-creation-time-utc.md +++ /dev/null @@ -1,21 +0,0 @@ -# File_SetCreationTimeUtc - -`File_SetCreationTimeUtc` sets the date and time, in coordinated universal time (UTC), that the file was created. - -```csharp -File_SetCreationTimeUtc - @path NVARCHAR (MAX), - @creationTime DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to obtain creation date and time information. - - **creationTime**: A DateTime containing the value to set for the creation date and time of path. This value is expressed in UTC time. - -## Example - -```csharp -EXEC File_SetCreationTimeUtc @path = 'C:\Temp\MyTest.txt', @creationTime = '2018-12-05' -``` - diff --git a/docs2/pages/documentations/file/file-set-creation-time.md b/docs2/pages/documentations/file/file-set-creation-time.md deleted file mode 100644 index 51ac849..0000000 --- a/docs2/pages/documentations/file/file-set-creation-time.md +++ /dev/null @@ -1,21 +0,0 @@ -# File_SetCreationTime - -`File_SetCreationTime` sets the date and time the file was created. - -```csharp -File_SetCreationTime - @path NVARCHAR (MAX), - @creationTime DATETIME -``` - -## Parameters - - - **path**: The file or directory for which to obtain creation date and time information. - - **creationTime**: A DateTime containing the value to set for the creation date and time of path. This value is expressed in local time. - -## Example - -```csharp -EXEC File_SetCreationTime @path = 'C:\Temp\MyTest.txt', @creationTime = '2018-12-05' -``` - diff --git a/docs2/pages/documentations/file/file-set-last-access-time-utc.md b/docs2/pages/documentations/file/file-set-last-access-time-utc.md deleted file mode 100644 index 49cedc6..0000000 --- a/docs2/pages/documentations/file/file-set-last-access-time-utc.md +++ /dev/null @@ -1,21 +0,0 @@ -# File_SetLastAccessTimeUtc - -`File_SetLastAccessTimeUtc` sets the date and time, in coordinated universal time (UTC), that the specified file was last accessed. - -```csharp -File_SetLastAccessTimeUtc - @path NVARCHAR (MAX), - @lastAccessTime DATETIME -``` - -## Parameters - - - **path**: The file for which to set the access date and time information. - - **lastAccessTime**: A DateTime containing the value to set for the last access date and time of path. This value is expressed in UTC time. - -## Example - -```csharp -EXEC File_SetLastAccessTimeUtc @path = 'C:\Temp\MyTest.txt', @lastAccessTime = '2018-12-05' -``` - diff --git a/docs2/pages/documentations/file/file-set-last-access-time.md b/docs2/pages/documentations/file/file-set-last-access-time.md deleted file mode 100644 index ee65070..0000000 --- a/docs2/pages/documentations/file/file-set-last-access-time.md +++ /dev/null @@ -1,21 +0,0 @@ -# File_SetLastAccessTime - -`File_SetLastAccessTime` sets the date and time the specified file was last accessed. - -```csharp -File_SetLastAccessTime - @path NVARCHAR (MAX), - @lastAccessTime DATETIME -``` - -## Parameters - - - **path**: The file for which to set the access date and time information. - - **lastAccessTime**: A DateTime containing the value to set for the last access date and time of path. This value is expressed in local time. - -## Example - -```csharp -EXEC File_SetLastAccessTime @path = 'C:\Temp\MyTest.txt', @lastAccessTime = '2018-12-05' -``` - diff --git a/docs2/pages/documentations/file/file-set-last-write-time-utc.md b/docs2/pages/documentations/file/file-set-last-write-time-utc.md deleted file mode 100644 index 54245d0..0000000 --- a/docs2/pages/documentations/file/file-set-last-write-time-utc.md +++ /dev/null @@ -1,21 +0,0 @@ -# File_SetLastWriteTimeUtc - -`File_SetLastWriteTimeUtc` sets the date and time, in coordinated universal time (UTC), that the specified file was last written to. - -```csharp -File_SetLastWriteTimeUtc - @path NVARCHAR (MAX), - @lastWriteTime DATETIME -``` - -## Parameters - - - **path**: The file for which to set the date and time information. - - **lastWriteTime**: A DateTime containing the value to set for the last write date and time of path. This value is expressed in UTC time. - -## Example - -```csharp -EXEC File_SetLastWriteTimeUtc @path = 'C:\Temp\MyTest.txt', @lastWriteTime = '2018-12-05' -``` - diff --git a/docs2/pages/documentations/file/file-set-last-write-time.md b/docs2/pages/documentations/file/file-set-last-write-time.md deleted file mode 100644 index d0eecae..0000000 --- a/docs2/pages/documentations/file/file-set-last-write-time.md +++ /dev/null @@ -1,21 +0,0 @@ -# File_SetLastWriteTime - -`File_SetLastWriteTime` sets the date and time that the specified file was last written to. - -```csharp -File_SetLastWriteTime - @path NVARCHAR (MAX), - @lastWriteTime DATETIME -``` - -## Parameters - - - **path**: The file for which to set the date and time information. - - **lastWriteTime**: A DateTime containing the value to set for the last write date and time of path. This value is expressed in local time. - -## Example - -```csharp -EXEC File_SetLastWriteTime @path = 'C:\Temp\MyTest.txt', @lastWriteTime = '2018-12-05' -``` - diff --git a/docs2/pages/documentations/file/file-write-all-text.md b/docs2/pages/documentations/file/file-write-all-text.md deleted file mode 100644 index f3d981c..0000000 --- a/docs2/pages/documentations/file/file-write-all-text.md +++ /dev/null @@ -1,21 +0,0 @@ -# File_WriteAllText - -`File_WriteAllText` Creates a new file, write the contents to the file, and then closes the file. If the target file already exists, it is overwritten. - -```csharp -File_WriteAllText - @path NVARCHAR (MAX), - @contents NVARCHAR (MAX) -``` - -## Parameters - - - **path**: The file to write to. - - **contents**: The string to write to the file. - -## Example - -```csharp -EXEC File_WriteAllText @path = 'C:\Temp\MyTest.txt', @contents = 'This is a text' -``` - diff --git a/docs2/pages/documentations/file/file.md b/docs2/pages/documentations/file/file.md deleted file mode 100644 index b2822d9..0000000 --- a/docs2/pages/documentations/file/file.md +++ /dev/null @@ -1,29 +0,0 @@ -# File - -Provides methods for the creation, copying, deletion, moving, and opening of a single file. - -| Name | Description | Example | -| :--- | :---------- | :------ | -| [File_AppendAllText(path, content)](/file-append-all-text) | Appends the specified stringto the file, creating the file if it does not already exist. | [Try it]()| -| [File_Copy(sourceFileName, destFileName, overwrite)](/file-append-all-text) | Copies an existing file to a new file. | [Try it]()| -| [File_Create(path)](/file-create) | Creates or overwrites a file in the specified path. | [Try it]()| -| [File_Decrypt(path)](/file-decrypt) | Decrypts a file that was encrypted by the current account using the [File_Encrypt](/file_encrypt) procedure. | [Try it]()| -| [File_Delete(path)](/file-delete) | Deletes the specified file. | [Try it]()| -| [File_Encrypt(path)](/file-encrypt) | Encrypts a file so that only the account used to encrypt the file can decrypt it. | [Try it]()| -| [File_GetCreationTime(path)](/file-get-creation-time) | Returns the creation date and time of the specified file or directory. | [Try it]()| -| [File_GetCreationTimeUtc(path)](/file-get-creation-time-utc) | Returns the creation date and time, in coordinated universal time (UTC), of the specified file or directory. | [Try it]()| -| [File_GetLastAccessTime(path)](/file-get-last-access-time) | Returns the date and time the specified file or directory was last accessed. | [Try it]()| -| [File_GetLastAccessTimeUtc(path)](/file-get-last-access-time-utc) | Returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last accessed. | [Try it]()| -| [File_GetLastWriteTime(path)](/file-get-last-write-time) | Returns the date and time the specified file or directory was last written to. | [Try it]()| -| [File_GetLastWriteTimeUtc(path)](/file-get-last-write-time-utc) | Returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last written to. | [Try it]()| -| [File_IsExists(path)](/file-isexists) | Determines whether the specified file exists. | [Try it]()| -| [File_Move(sourceFileName, destFileName)](/file-move) | Moves a specified file to a new location, providing the option to specify a new file name. | [Try it]()| -| [File_ReadAllText(path)](/file-move) | Opens a text file, reads and returns all the text in the file, and then closes the file. | [Try it]()| -| [File_Replace(sourceFileName, destFileName, destBackupFileName, ignoreMetadataErrors)](/file-replace) | Replaces the contents of a specified file with the contents of another file, deleting the original file, and creating a backup of the replaced file and optionally ignores merge errors. | [Try it]()| -| [File_SetCreationTime(path, creationTime)](/file-set-creation-time) | Sets the date and time the file was created. | [Try it]()| -| [File_SetCreationTimeUtc(path, creationTime)](/file-set-creation-time-utc) | Sets the date and time, in coordinated universal time (UTC), that the file was created. | [Try it]()| -| [File_SetLastAccessTime(path, lastAccessTime)](/file-set-last-access-time) | Sets the date and time the file was created. | [Try it]()| -| [File_SetLastAccessTimeUtc(path, lastAccessTime)](/file-set-last-access-time-utc) | Sets the date and time, in coordinated universal time (UTC), that the specified file was last accessed. | [Try it]()| -| [File_SetLastWriteTime(path, lastWriteTime)](/file-set-last-write-time) | Sets the date and time that the specified file was last written to. | [Try it]()| -| [File_SetLastWriteTimeUtc(path, lastWriteTime)](/file-set-last-write-time-utc) | Sets the date and time, in coordinated universal time (UTC), that the specified file was last written to. | [Try it]()| -| [File_WriteAllText(path, contents)](/file-write-all-text) | Creates a new file, write the contents to the file, and then closes the file. If the target file already exists, it is overwritten. | [Try it]()| diff --git a/docs2/pages/documentations/math/math-Tanh.md b/docs2/pages/documentations/math/math-Tanh.md deleted file mode 100644 index 024f42f..0000000 --- a/docs2/pages/documentations/math/math-Tanh.md +++ /dev/null @@ -1,24 +0,0 @@ -# Math_Tanh - -`Math_Tanh` returns the hyperbolic tangent of the specified angle. - -```csharp -Math_Tanh ( - @value FLOAT (53)) -RETURNS FLOAT (53) -``` - -## Parameters - - - **value**: An angle, measured in radians. - -## Returns - -The hyperbolic tangent of value. If value is equal to NegativeInfinity or PositiveInfinity, PositiveInfinity is returned. If value is equal to NaN, NaN is returned. - -## Example - -```csharp -SELECT SQLNET::Math_Tanh(0.2) -``` - diff --git a/docs2/pages/documentations/math/math-bigmul.md b/docs2/pages/documentations/math/math-bigmul.md deleted file mode 100644 index 86727eb..0000000 --- a/docs2/pages/documentations/math/math-bigmul.md +++ /dev/null @@ -1,26 +0,0 @@ -# Math_BigMul - -`Math_BigMul` produces the full product of two 32-bit numbers. - -```csharp -Math_BigMul ( - @a INT, - @b INT) -RETURNS BIGINT -``` - -## Parameters - - - **a**: The first number to multiply. - - **b**: The second number to multiply. - -## Returns - -The number containing the product of the specified numbers. - -## Example - -```csharp -SELECT SQLNET::Math_BigMul(2147483647, 2147483647) -``` - diff --git a/docs2/pages/documentations/math/math-cosh.md b/docs2/pages/documentations/math/math-cosh.md deleted file mode 100644 index fe1e2c2..0000000 --- a/docs2/pages/documentations/math/math-cosh.md +++ /dev/null @@ -1,24 +0,0 @@ -# Math_Cosh - -`Math_Cosh` returns the hyperbolic cosine of the specified angle. - -```csharp -Math_Cosh ( - @value FLOAT (53)) -RETURNS FLOAT (53) -``` - -## Parameters - - - **value**: An angle, measured in radians. - -## Returns - -The hyperbolic cosine of value. If value is equal to NegativeInfinity or PositiveInfinity, PositiveInfinity is returned. If value is equal to NaN, NaN is returned. - -## Example - -```csharp -SELECT SQLNET::Math_Cosh(0.1) -``` - diff --git a/docs2/pages/documentations/math/math-cube-root.md b/docs2/pages/documentations/math/math-cube-root.md deleted file mode 100644 index 6fd7f8b..0000000 --- a/docs2/pages/documentations/math/math-cube-root.md +++ /dev/null @@ -1,24 +0,0 @@ -# Math_CubeRoot - -`Math_CubeRoot` returns the cube root of a specified number. - -```csharp -Math_CubeRoot ( - @value FLOAT (53)) -RETURNS FLOAT (53) -``` - -## Parameters - - - **value**: The number whose cude root is to be found. - -## Returns - -The cube root of a `value`. - -## Example - -```csharp -SELECT SQLNET::Math_CubeRoot(8) -``` - diff --git a/docs2/pages/documentations/math/math-ieee-remainder.md b/docs2/pages/documentations/math/math-ieee-remainder.md deleted file mode 100644 index ea12e5a..0000000 --- a/docs2/pages/documentations/math/math-ieee-remainder.md +++ /dev/null @@ -1,27 +0,0 @@ -# Math_IEEERemainder - -`Math_IEEERemainder` returns the remainder resulting from the division of a specified number by another specified number. - -```csharp -Math_IEEERemainder ( - @x INT, - @y INT) -RETURNS BIGINT -``` - -## Parameters - - - **x**: A dividend. - - **y**: A divisor - -## Returns - -A number equal to `x` - (`y` Q), where Q is the quotient of `x` / `y` rounded to the nearest integer (if `x` / `y` falls halfway between two integers, the even integer is returned). - -## Example - -```csharp -SELECT SQLNET::Math_IEEERemainder(3, 2) -SELECT SQLNET::Math_IEEERemainder(-16.3, 4.1) -``` - diff --git a/docs2/pages/documentations/math/math-nth-root.md b/docs2/pages/documentations/math/math-nth-root.md deleted file mode 100644 index 0c2678e..0000000 --- a/docs2/pages/documentations/math/math-nth-root.md +++ /dev/null @@ -1,25 +0,0 @@ -# Math_NthRoot - -`Math_NthRoot` returns the nth root of a specified number. - -```csharp -Math_NthRoot ( - @value FLOAT (53), - @nth FLOAT (53)) -RETURNS FLOAT (53) -``` - -## Parameters - - - **value**: The number whose nth root is to be found. - -## Returns - -The nth root of a `value`. - -## Example - -```csharp -SELECT SQLNET::Math_NthRoot(8) -``` - diff --git a/docs2/pages/documentations/math/math-remainder-int32.md b/docs2/pages/documentations/math/math-remainder-int32.md deleted file mode 100644 index 735e2ed..0000000 --- a/docs2/pages/documentations/math/math-remainder-int32.md +++ /dev/null @@ -1,26 +0,0 @@ -# Math_RemainderInt32 - -`Math_RemainderInt32` returns the remainder of two 32-bit signed integers. - -```csharp -Math_RemainderInt32 ( - @a INT, - @b INT) -RETURNS INT -``` - -## Parameters - - - **a**: A dividend. - - **b**: A divisor - -## Returns - -The remainder of the specified numbers. - -## Example - -```csharp -SELECT SQLNET::Math_RemainderInt32(2147483647, 2000) -``` - diff --git a/docs2/pages/documentations/math/math-remainder-int64.md b/docs2/pages/documentations/math/math-remainder-int64.md deleted file mode 100644 index c825c05..0000000 --- a/docs2/pages/documentations/math/math-remainder-int64.md +++ /dev/null @@ -1,25 +0,0 @@ -# Math_RemainderInt64 - -`Math_RemainderInt64` returns the remainder of two 64-bit signed integers. -```csharp -Math_RemainderInt64 ( - @a INT, - @b INT) -RETURNS INT -``` - -## Parameters - - - **a**: A dividend. - - **b**: A divisor - -## Returns - -The remainder of the specified numbers. - -## Example - -```csharp -SELECT SQLNET::Math_RemainderInt64(2147483647, 2000) -``` - diff --git a/docs2/pages/documentations/math/math-sinh.md b/docs2/pages/documentations/math/math-sinh.md deleted file mode 100644 index b41c48b..0000000 --- a/docs2/pages/documentations/math/math-sinh.md +++ /dev/null @@ -1,24 +0,0 @@ -# Math_Sinh - -`Math_Sinh` returns the hyperbolic sine of the specified angle. - -```csharp -Math_Sinh ( - @value FLOAT (53)) -RETURNS FLOAT (53) -``` - -## Parameters - - - **value**: An angle, measured in radians. - -## Returns - -The hyperbolic sine of value. If value is equal to NegativeInfinity or PositiveInfinity, PositiveInfinity is returned. If value is equal to NaN, NaN is returned. - -## Example - -```csharp -SELECT SQLNET::Math_Sinh(0.1) -``` - diff --git a/docs2/pages/documentations/math/math.md b/docs2/pages/documentations/math/math.md deleted file mode 100644 index 0f5bccd..0000000 --- a/docs2/pages/documentations/math/math.md +++ /dev/null @@ -1,15 +0,0 @@ -# Math - -Provides methods for trigonometric, and other common mathematical functions. - -| Name | Description | Example | -| :--- | :---------- | :------ | -| [Math_BigMul(a, b)](/math-bigmul) | Produces the full product of two 32-bit numbers. | [Try it]()| -| [Math_Cosh(value)](/math-cosh) | Returns the hyperbolic cosine of the specified angle. | [Try it]()| -| [Math_CubeRoot(value)](/math-cube-root) | Returns the cube root of a specified number. | [Try it]()| -| [Math_IEEERemainder(x, y)](/math-cube-root) | Returns the remainder resulting from the division of a specified number by another specified number. | [Try it]()| -| [Math_NthRoot(value, nth)](/math-nth-root) | Returns the nth root of a specified number. | [Try it]()| -| [Math_RemainderInt32(a, b)](/math-remainder-int32) | Returns the remainder of two 32-bit signed integers. | [Try it]()| -| [Math_RemainderInt64(a, b)](/math-remainder-int32) | Returns the remainder of two 64-bit signed integers. | [Try it]()| -| [Math_Sinh(value)](/math-sinh) | Returns the hyperbolic sine of the specified angle. | [Try it]()| -| [Math_Tanh(value)](/math-sinh) | Returns the hyperbolic tangent of the specified angle. | [Try it]()| diff --git a/docs2/pages/documentations/options.md b/docs2/pages/documentations/options.md deleted file mode 100644 index 2211dad..0000000 --- a/docs2/pages/documentations/options.md +++ /dev/null @@ -1,99 +0,0 @@ -# Options - -## AutoDispose() - -AutoDispose object and delegate from the cache after the code has been evaluated. - - -```csharp --- SELECT 3 -SELECT SQLNET::New('1+2').AutoDispose().EvalInt() as Result - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/994' %} - -Don't worry, we have you covered! Object and Delegate are automatically disposed after a period of time without activity. - -## Code(string code) - -Sets the code or expression to evaluate. - -DECLARE @sqlnet SQLNET = SQLNET::New('') - - -```csharp -DECLARE @sqlnet SQLNET = SQLNET::New('') - --- SELECT 3 -SELECT @sqlnet.Code('1+2').EvalInt() as Result - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1125' %} - -## Dispose() - -Dispose object and delegate from the cache - - -```csharp -DECLARE @sqlnet SQLNET = SQLNET::New('x + y') - -SELECT @sqlnet - .ValueInt('x', 1) - .ValueInt('y', 2) - .EvalInt() as Result - - -SELECT @sqlnet.getcode() as Result - -DECLARE @dispose BIT = @sqlnet.Dispose() - ---Not work because dipose... -SELECT @sqlnet - .ValueInt('x', 1) - .ValueInt('y', 2) - .EvalInt() as Result - - ---Not work because dipose... -SELECT @sqlnet.getcode() as Result -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/996' %} - -Don't worry, we have you covered! Object and Delegate are automatically disposed after a period of time without activity. - -## Impersonate() - -Change the security context to impersonate the credential of the one who runs the T-SQL statements. - - -```csharp --- REQUIRE EXTERNAL_ACCESS permission -DECLARE @sqlnet SQLNET = SQLNET::New(' -string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - -var dir = new DirectoryInfo(path); -return dir.GetFiles("*.*").Select(x => x.FullName).OrderBy(x => x).ToList();') - .Impersonate() - --- SELECT * FROM DesktopFiles ORDER BY File.Fullname -EXEC dbo.SQLNET_EvalResultSet @sqlnet - -``` - - -Impersonate the current execution context under which the routine is executing. - -## Root() - -Root is required when the expression already specified value. This feature has been added to allow Parallelism. - - -```csharp -DECLARE @sqlnet SQLNET = SQLNET::New('x+y').ValueInt('y', 2).Root() - --- SELECT 3 -SELECT @sqlnet.ValueInt('x', 1).EvalInt() as Result - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/997' %} diff --git a/docs2/pages/documentations/path/path-change-extension.md b/docs2/pages/documentations/path/path-change-extension.md deleted file mode 100644 index 3027558..0000000 --- a/docs2/pages/documentations/path/path-change-extension.md +++ /dev/null @@ -1,26 +0,0 @@ -# Path_ChangeExtension - -`Path_ChangeExtension` returns a new string in which all occurrences of a specified `oldValye` Unicode character or String in the `source` string are replaced with another specified `newValue` Unicode character or String. - -```csharp -Path_ChangeExtension ( - @path NVARCHAR (4000), - @extension NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Parameters - - - **path**: The path information to modify. - - **extension**: The new extension (with or without a leading period). Specify `null` to remove an existing extension from `path`. - -## Returns - - - The modified path information. - -## Example - -```csharp -SELECT SQLNET::Path_ChangeExtension('C:\Temp\MyTest.txt', '.ext') -``` diff --git a/docs2/pages/documentations/path/path-combine.md b/docs2/pages/documentations/path/path-combine.md deleted file mode 100644 index 6f43ff2..0000000 --- a/docs2/pages/documentations/path/path-combine.md +++ /dev/null @@ -1,26 +0,0 @@ -# Path_Combine - -`Path_Combine` combines two strings into a path. - -```csharp -Path_Combine ( - @path1 NVARCHAR (4000), - @path2 NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Parameters - - - **path1**: The first path to combine. - - **path2**: The second path to combine. - -## Returns - - - The combined paths. If one of the specified paths is a zero-length string, this method returns the other path. If `path2` contains an absolute path, this method returns `path2`. - -## Example - -```csharp -SELECT SQLNET::Path_Combine('C:\Temp\', 'MyTest.txt') -``` diff --git a/docs2/pages/documentations/path/path-get-directory-name.md b/docs2/pages/documentations/path/path-get-directory-name.md deleted file mode 100644 index 6a5337c..0000000 --- a/docs2/pages/documentations/path/path-get-directory-name.md +++ /dev/null @@ -1,24 +0,0 @@ -# Path_GetDirectoryName - -`Path_GetDirectoryName` returns the directory information for the specified path string. - -```csharp -Path_GetDirectoryName ( - @path NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Parameters - - - **path**: The path of a file or directory. - -## Returns - - - Directory information for `path`, or `null` if path denotes a root directory or is `null`. Returns Empty if `path` does not contain directory information. - -## Example - -```csharp -SELECT SQLNET::Path_GetDirectoryName('C:\Temp\MyTest.txt') -``` diff --git a/docs2/pages/documentations/path/path-get-extension.md b/docs2/pages/documentations/path/path-get-extension.md deleted file mode 100644 index 714c29c..0000000 --- a/docs2/pages/documentations/path/path-get-extension.md +++ /dev/null @@ -1,24 +0,0 @@ -# Path_GetExtension - -`Path_GetExtension` returns the extension of the specified path string. - -```csharp -Path_GetExtension ( - @path NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Parameters - - - **path**: The path string from which to get the extension. - -## Returns - -The extension of the specified path (including the period "."), or null, or empty string. If `path` is null, it returns null. If path does not have extension information, it returns empty string. - -## Example - -```csharp -SELECT SQLNET::Path_GetExtension('C:\Temp\MyTest.txt') -``` diff --git a/docs2/pages/documentations/path/path-get-file-name-without-extension.md b/docs2/pages/documentations/path/path-get-file-name-without-extension.md deleted file mode 100644 index d099315..0000000 --- a/docs2/pages/documentations/path/path-get-file-name-without-extension.md +++ /dev/null @@ -1,24 +0,0 @@ -# Path_GetFileNameWithoutExtension - -`Path_GetFileNameWithoutExtension` returns the file name and extension of the specified path string without the extension. - -```csharp -Path_GetFileNameWithoutExtension ( - @path NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Parameters - - - **path**: The path string from which to obtain the file name and extension. - -## Returns - -The path string minus the last period (.) and all characters following it. - -## Example - -```csharp -SELECT SQLNET::Path_GetFileNameWithoutExtension('C:\Temp\MyTest.txt') -``` diff --git a/docs2/pages/documentations/path/path-get-file-name.md b/docs2/pages/documentations/path/path-get-file-name.md deleted file mode 100644 index 21433c5..0000000 --- a/docs2/pages/documentations/path/path-get-file-name.md +++ /dev/null @@ -1,24 +0,0 @@ -# Path_GetFileName - -`Path_GetFileName` returns the file name and extension of the specified path string. - -```csharp -Path_GetFileName ( - @path NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Parameters - - - **path**: The path string from which to obtain the file name and extension. - -## Returns - -The characters after the last directory character in `path`. If the last character of `path` is a directory or volume separator character, this method returns empty string. If `path` is `null`, this method returns `null`. - -## Example - -```csharp -SELECT SQLNET::Path_GetFileName('C:\Temp\MyTest.txt') -``` diff --git a/docs2/pages/documentations/path/path-get-full-path.md b/docs2/pages/documentations/path/path-get-full-path.md deleted file mode 100644 index d87a1de..0000000 --- a/docs2/pages/documentations/path/path-get-full-path.md +++ /dev/null @@ -1,24 +0,0 @@ -# Path_GetFullPath - -`Path_GetFullPath` returns the absolute path for the specified path string. - -```csharp -Path_GetFullPath ( - @path NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Parameters - - - **path**: The file or directory for which to obtain absolute path information. - -## Returns - -The fully qualified location of `path`. - -## Example - -```csharp -SELECT SQLNET::Path_GetFullPath('MyTest.txt') -``` diff --git a/docs2/pages/documentations/path/path-get-path-root.md b/docs2/pages/documentations/path/path-get-path-root.md deleted file mode 100644 index 9b43fa7..0000000 --- a/docs2/pages/documentations/path/path-get-path-root.md +++ /dev/null @@ -1,24 +0,0 @@ -# Path_GetPathRoot - -`Path_GetPathRoot` returns the root directory information of the specified path. - -```csharp -Path_GetPathRoot ( - @path NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Parameters - - - **path**: The path from which to obtain root directory information. - -## Returns - -The root directory of `path`, or `null` if `path` is `null`, or an empty string if `path` does not contain root directory information. - -## Example - -```csharp -SELECT SQLNET::Path_GetPathRoot('MyTest.txt') -``` diff --git a/docs2/pages/documentations/path/path-get-random-file-name.md b/docs2/pages/documentations/path/path-get-random-file-name.md deleted file mode 100644 index 25723c4..0000000 --- a/docs2/pages/documentations/path/path-get-random-file-name.md +++ /dev/null @@ -1,18 +0,0 @@ -# Path_GetRandomFileName - -`Path_GetRandomFileName` returns a random folder name or file name. - -```csharp -Path_GetRandomFileName () -RETURNS NVARCHAR (4000) -``` - -## Returns - -A random folder name or file name. - -## Example - -```csharp -SELECT SQLNET::Path_GetRandomFileName() -``` diff --git a/docs2/pages/documentations/path/path-get-temp-file-name.md b/docs2/pages/documentations/path/path-get-temp-file-name.md deleted file mode 100644 index 9ca9d27..0000000 --- a/docs2/pages/documentations/path/path-get-temp-file-name.md +++ /dev/null @@ -1,18 +0,0 @@ -# Path_GetTempFileName - -`Path_GetTempFileName` creates a uniquely named, zero-byte temporary file on disk and returns the full path of that file. - -```csharp -Path_GetTempFileName () -RETURNS NVARCHAR (4000) -``` - -## Returns - -The full path of the temporary file. - -## Example - -```csharp -SELECT SQLNET::Path_GetTempFileName() -``` diff --git a/docs2/pages/documentations/path/path-get-temp-path.md b/docs2/pages/documentations/path/path-get-temp-path.md deleted file mode 100644 index 6205700..0000000 --- a/docs2/pages/documentations/path/path-get-temp-path.md +++ /dev/null @@ -1,18 +0,0 @@ -# Path_GetTempPath - -`Path_GetTempPath` returns the path of the current user's temporary folder. - -```csharp -Path_GetTempPath () -RETURNS NVARCHAR (4000) -``` - -## Returns - -The path to the temporary folder, ending with a backslash. - -## Example - -```csharp -SELECT SQLNET::Path_GetTempPath() -``` diff --git a/docs2/pages/documentations/path/path-has-extension.md b/docs2/pages/documentations/path/path-has-extension.md deleted file mode 100644 index af22a94..0000000 --- a/docs2/pages/documentations/path/path-has-extension.md +++ /dev/null @@ -1,24 +0,0 @@ -# Path_HasExtension - -`Path_HasExtension` determines whether a path includes a file name extension. - -```csharp -Path_HasExtension ( - @path NVARCHAR (4000) - ) -RETURNS BIT -``` - -## Parameters - - - **path**: The path to search for an extension. - -## Returns - -`true` if the characters that follow the last directory separator (\\ or /) or volume separator (:) in the path include a period (.) followed by one or more characters; otherwise, `false`. - -## Example - -```csharp -SELECT SQLNET::Path_HasExtension('C:\Temp\MyTest.txt') -``` diff --git a/docs2/pages/documentations/path/path-is-path-rooted.md b/docs2/pages/documentations/path/path-is-path-rooted.md deleted file mode 100644 index fcec3c4..0000000 --- a/docs2/pages/documentations/path/path-is-path-rooted.md +++ /dev/null @@ -1,25 +0,0 @@ -# Path_IsPathRooted - -`Path_IsPathRooted` gets a value indicating whether the specified path string contains a root. - -```csharp -Path_IsPathRooted ( - @path NVARCHAR (4000) - ) -RETURNS BIT -``` - -## Parameters - - - **path**: The path to test. - -## Returns - -`true` if path contains a root; otherwise, `false`. - -## Example - -```csharp -SELECT SQLNET::Path_IsPathRooted('C:\Temp\MyTest.txt') -SELECT SQLNET::Path_IsPathRooted('Temp\MyTest.txt') -``` diff --git a/docs2/pages/documentations/path/path.md b/docs2/pages/documentations/path/path.md deleted file mode 100644 index b4d6b8e..0000000 --- a/docs2/pages/documentations/path/path.md +++ /dev/null @@ -1,20 +0,0 @@ -# Path - -Performs operations on string instances that contain file or directory path information. These operations are performed in a cross-platform manner. - -| Name | Description | Example | -| :--- | :---------- | :------ | -| [Path_ChangeExtension(path, extension)](/path-change-extension) | Changes the extension of a path string. | [Try it]()| -| [Path_Combine(path1, path2)](/path-combine) | Combines two strings into a path. | [Try it]()| -| [Path_GetDirectoryName(path)](/path-get-directory-name) | Returns the directory information for the specified path string. | [Try it]()| -| [Path_GetExtension(path)](/path-get-extension) | Returns the extension of the specified path string. | [Try it]()| -| [Path_GetFileName(path)](/path-get-file-name) | Returns the file name and extension of the specified path string. | [Try it]()| -| [Path_GetFileNameWithoutExtension(path)](/path-get-file-name-without-extension) | Returns the file name and extension of the specified path string without the extension. | [Try it]()| -| [Path_GetFullPath(path)](/path-get-full-path) | Returns the absolute path for the specified path string. | [Try it]()| -| [Path_GetPathRoot(path)](/path-get-path-root) | Returns the root directory information of the specified path. | [Try it]()| -| [Path_GetRandomFileName()](/path-get-random-file-name) | Returns a random folder name or file name. | [Try it]()| -| [Path_GetTempFileName()](/path-get-temp-file-name) | Creates a uniquely named, zero-byte temporary file on disk and returns the full path of that file. | [Try it]()| -| [Path_GetTempPath()](/path-get-temp-path) | Returns the path of the current user's temporary folder. | [Try it]()| -| [Path_GetFileName(path)](/path-get-file-name) | Returns the file name and extension of the specified path string. | [Try it]()| -| [Path_HasExtension(path)](/path-get-has-extension) | Determines whether a path includes a file name extension. | [Try it]()| -| [Path_IsPathRooted(path)](/path-get-is-path-rooted) | Gets a value indicating whether the specified path string contains a root. | [Try it]()| diff --git a/docs2/pages/documentations/regex/regex-escape.md b/docs2/pages/documentations/regex/regex-escape.md deleted file mode 100644 index 0b28a60..0000000 --- a/docs2/pages/documentations/regex/regex-escape.md +++ /dev/null @@ -1,25 +0,0 @@ -# Regex_Escape - -`Regex_Escape` escapes a minimal set of characters (\, *, +, ?, |, {, [, (,), ^, $, ., #, and white space) by replacing them with their escape codes. This instructs the regular expression engine to interpret these characters literally rather than as metacharacters. - -```csharp -Regex_Escape ( - @input NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **input**: The input string that contains the text to convert. - -## Returns - -A string of characters with metacharacters converted to their escaped form. - -## Example - -```csharp -SELECT SQLNET::Regex_Escape('test(*.*)') -``` - diff --git a/docs2/pages/documentations/regex/regex-index.md b/docs2/pages/documentations/regex/regex-index.md deleted file mode 100644 index a3a8cc7..0000000 --- a/docs2/pages/documentations/regex/regex-index.md +++ /dev/null @@ -1,44 +0,0 @@ -# Regex_Index - -`Regex_Index` returns the position in the original string where the first character of the captured substring is found. - -```csharp -Regex_Index ( - @input NVARCHAR (MAX), - @pattern NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **input**: The input string that contains the text to convert. - - **pattern**: The regular expression pattern to match. - -## Returns - -The zero-based index position in the original string where the first character of the captured substring is found or -1 if it is not. - -## Example - -```csharp -SELECT SQLNET::Regex_Index('An extraordinary day dawns with each new day.', '\be\w*\b') -``` - -# Regex_Index4k - -It is equivalent to `Regex_Index` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -Regex_Index4k ( - @input NVARCHAR (4000), - @pattern NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::Regex_Index4k('An extraordinary day dawns with each new day.', '\be\w*\b') -``` diff --git a/docs2/pages/documentations/regex/regex-indexop.md b/docs2/pages/documentations/regex/regex-indexop.md deleted file mode 100644 index a4a1766..0000000 --- a/docs2/pages/documentations/regex/regex-indexop.md +++ /dev/null @@ -1,68 +0,0 @@ -# Regex_IndexOp - -`Regex_IndexOp` returns the position in the original string where the first character of the captured substring is found using the specified matching options. - -```csharp -Regex_IndexOp ( - @input NVARCHAR (MAX), - @pattern NVARCHAR (MAX), - @options INT - ) -RETURNS INT -``` - -## Parameters - - - **input**: The input string that contains the text to convert. - - **pattern**: The regular expression pattern to match. - - **options**: A bitwise combination of the enumeration values that provide options for matching. - -### Options - -You can use any of the following options. - -| Options |Integer Value | Descritpiton | -|:----------------------|:--------------|:--------------| -|None | 0 | Specifies that no options are set. | -|IgnoreCase | 1 | Specifies case-insensitive matching. | -|Multiline | 2 | Multiline mode. Changes the meaning of ^ and $ so they match at the beginning and end, respectively, of any line, and not just the beginning and end of the entire string.| -|ExplicitCapture | 4 | Specifies that the only valid captures are explicitly named or numbered groups of the form (?…). This allows unnamed parentheses to act as noncapturing groups without the syntactic clumsiness of the expression (?:…).| -|Compiled | 8 | Specifies that the regular expression is compiled to an assembly. This yields faster execution but increases startup time. | -|Singleline | 16 | Specifies single-line mode. Changes the meaning of the dot (.) so it matches every character (instead of every character except \n).| -|IgnorePatternWhitespace| 32 | Eliminates unescaped whitespace from the pattern and enables comments marked with #. | -|RightToLeft | 64 | Specifies that the search will be from right to left instead of from left to right. | -|ECMAScript | 256 | Enables ECMAScript-compliant behavior for the expression. This value can be used only in conjunction with the `IgnoreCase`, `Multiline`, and `Compiled` values. The use of this value with any other values results in an exception.| -|CultureInvariant | 512 | Specifies that cultural differences in language are ignored. | - -You can also use more than one option by specifying the sum of their integer values. For example, to specify `IgnoreCase` and `Multiline` options, use 3 integer value and pass it as 3rd parameter. - -## Returns - -The zero-based index position in the original string where the first character of the captured substring is found or -1 if it is not. - -## Example - -```csharp -SELECT SQLNET::Regex_IndexOp('An extraordinary day dawns with each new day.', '\be\w*\b', 1) -SELECT SQLNET::Regex_IndexOp('An extraordinary day dawns with each new day.', '\be\w*\b', 3) -``` - -# Regex_IndexOp4k - -It is equivalent to `Regex_IndexOp` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -Regex_IndexOp4k ( - @input NVARCHAR (4000), - @pattern NVARCHAR (4000), - @options INT - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::Regex_IndexOp4k('An extraordinary day dawns with each new day.', '\be\w*\b', 1) -SELECT SQLNET::Regex_IndexOp4k('An extraordinary day dawns with each new day.', '\be\w*\b', 3) -``` diff --git a/docs2/pages/documentations/regex/regex-ismatch.md b/docs2/pages/documentations/regex/regex-ismatch.md deleted file mode 100644 index 5106de9..0000000 --- a/docs2/pages/documentations/regex/regex-ismatch.md +++ /dev/null @@ -1,46 +0,0 @@ -# Regex_IsMatch - -`Regex_IsMatch` indicates whether the specified regular expression finds a match in the specified input string. - -```csharp -Regex_IsMatch ( - @input NVARCHAR (MAX), - @pattern NVARCHAR (MAX) - ) -RETURNS BIT -``` - -## Parameters - - - **input**: The input string that contains the text to convert. - - **pattern**: The regular expression pattern to match. - -## Returns - -The zero-based index position in the original string where the first character of the captured substring is found or -1 if it is not. - -## Example - -```csharp -SELECT SQLNET::Regex_IsMatch('A08Z-931-468A', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$') -SELECT SQLNET::Regex_IsMatch('_A90-123-129X', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$') -``` - -# Regex_IsMatch4k - -It is equivalent to `Regex_IsMatch` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -Regex_IsMatch4k ( - @input NVARCHAR (4000), - @pattern NVARCHAR (4000) - ) -RETURNS BIT -``` - -## Example - -```csharp -SELECT SQLNET::Regex_IsMatch4k('A08Z-931-468A', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$') -SELECT SQLNET::Regex_IsMatch4k('_A90-123-129X', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$') -``` diff --git a/docs2/pages/documentations/regex/regex-ismatchop.md b/docs2/pages/documentations/regex/regex-ismatchop.md deleted file mode 100644 index d954416..0000000 --- a/docs2/pages/documentations/regex/regex-ismatchop.md +++ /dev/null @@ -1,68 +0,0 @@ -# Regex_IsMatchOp - -`Regex_IsMatchOp` indicates whether the specified regular expression finds a match in the specified input string using the specified matching options. - -```csharp -Regex_IsMatchOp ( - @input NVARCHAR (MAX), - @pattern NVARCHAR (MAX), - @options INT - ) -RETURNS BIT -``` - -## Parameters - - - **input**: The input string that contains the text to convert. - - **pattern**: The regular expression pattern to match. - - **options**: A bitwise combination of the enumeration values that provide options for matching. - -### Options - -You can use any of the following options. - -| Options |Integer Value | Descritpiton | -|:----------------------|:--------------|:--------------| -|None | 0 | Specifies that no options are set. | -|IgnoreCase | 1 | Specifies case-insensitive matching. | -|Multiline | 2 | Multiline mode. Changes the meaning of ^ and $ so they match at the beginning and end, respectively, of any line, and not just the beginning and end of the entire string.| -|ExplicitCapture | 4 | Specifies that the only valid captures are explicitly named or numbered groups of the form (?…). This allows unnamed parentheses to act as noncapturing groups without the syntactic clumsiness of the expression (?:…).| -|Compiled | 8 | Specifies that the regular expression is compiled to an assembly. This yields faster execution but increases startup time. | -|Singleline | 16 | Specifies single-line mode. Changes the meaning of the dot (.) so it matches every character (instead of every character except \n).| -|IgnorePatternWhitespace| 32 | Eliminates unescaped whitespace from the pattern and enables comments marked with #. | -|RightToLeft | 64 | Specifies that the search will be from right to left instead of from left to right. | -|ECMAScript | 256 | Enables ECMAScript-compliant behavior for the expression. This value can be used only in conjunction with the `IgnoreCase`, `Multiline`, and `Compiled` values. The use of this value with any other values results in an exception.| -|CultureInvariant | 512 | Specifies that cultural differences in language are ignored. | - -You can also use more than one option by specifying the sum of their integer values. For example, to specify `IgnoreCase` and `Multiline` options, use 3 integer value and pass it as 3rd parameter. - -## Returns - -The zero-based index position in the original string where the first character of the captured substring is found or -1 if it is not. - -## Example - -```csharp -SELECT SQLNET::Regex_IsMatchOp('A08Z-931-468A', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$', 1) -SELECT SQLNET::Regex_IsMatchOp('_A90-123-129X', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$', 3) -``` - -# Regex_IsMatchOp4k - -It is equivalent to `Regex_IsMatchOp` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -Regex_IsMatchOp4k ( - @input NVARCHAR (4000), - @pattern NVARCHAR (4000), - @options INT - ) -RETURNS BIT -``` - -## Example - -```csharp -SELECT SQLNET::Regex_IsMatchOp4k('A08Z-931-468A', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$', 1) -SELECT SQLNET::Regex_IsMatchOp4k('_A90-123-129X', '^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$', 3) -``` diff --git a/docs2/pages/documentations/regex/regex-match.md b/docs2/pages/documentations/regex/regex-match.md deleted file mode 100644 index 37560fd..0000000 --- a/docs2/pages/documentations/regex/regex-match.md +++ /dev/null @@ -1,44 +0,0 @@ -# Regex_Match - -`Regex_Match` searches an input string for a substring that matches a regular expression pattern and returns the first occurrence of that string. - -```csharp -Regex_Match ( - @input NVARCHAR (MAX), - @pattern NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **input**: The input string that contains the text to convert. - - **pattern**: The regular expression pattern to match. - -## Returns - -Gets the captured substring from the input string. - -## Example - -```csharp -SELECT SQLNET::Regex_Match('An extraordinary day dawns with each new day.', '\be\w*\b') -``` - -# Regex_Match4k - -It is equivalent to `Regex_Match` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -Regex_Match4k ( - @input NVARCHAR (4000), - @pattern NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::Regex_Match4k('An extraordinary day dawns with each new day.', '\be\w*\b') -``` diff --git a/docs2/pages/documentations/regex/regex-matchop.md b/docs2/pages/documentations/regex/regex-matchop.md deleted file mode 100644 index f1f7217..0000000 --- a/docs2/pages/documentations/regex/regex-matchop.md +++ /dev/null @@ -1,68 +0,0 @@ -# Regex_MatchOp - -`Regex_MatchOp` searches an input string for a substring that matches a regular expression pattern and returns the first occurrence of that string using the specified matching options. - -```csharp -Regex_MatchOp ( - @input NVARCHAR (MAX), - @pattern NVARCHAR (MAX), - @options INT - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **input**: The input string that contains the text to convert. - - **pattern**: The regular expression pattern to match. - - **options**: A bitwise combination of the enumeration values that provide options for matching. - -### Options - -You can use any of the following options. - -| Options |Integer Value | Descritpiton | -|:----------------------|:--------------|:--------------| -|None | 0 | Specifies that no options are set. | -|IgnoreCase | 1 | Specifies case-insensitive matching. | -|Multiline | 2 | Multiline mode. Changes the meaning of ^ and $ so they match at the beginning and end, respectively, of any line, and not just the beginning and end of the entire string.| -|ExplicitCapture | 4 | Specifies that the only valid captures are explicitly named or numbered groups of the form (?…). This allows unnamed parentheses to act as noncapturing groups without the syntactic clumsiness of the expression (?:…).| -|Compiled | 8 | Specifies that the regular expression is compiled to an assembly. This yields faster execution but increases startup time. | -|Singleline | 16 | Specifies single-line mode. Changes the meaning of the dot (.) so it matches every character (instead of every character except \n).| -|IgnorePatternWhitespace| 32 | Eliminates unescaped whitespace from the pattern and enables comments marked with #. | -|RightToLeft | 64 | Specifies that the search will be from right to left instead of from left to right. | -|ECMAScript | 256 | Enables ECMAScript-compliant behavior for the expression. This value can be used only in conjunction with the `IgnoreCase`, `Multiline`, and `Compiled` values. The use of this value with any other values results in an exception.| -|CultureInvariant | 512 | Specifies that cultural differences in language are ignored. | - -You can also use more than one option by specifying the sum of their integer values. For example, to specify `IgnoreCase` and `Multiline` options, use 3 integer value and pass it as 3rd parameter. - -## Returns - -Gets the captured substring from the input string. - -## Example - -```csharp -SELECT SQLNET::Regex_MatchOp('An extraordinary day dawns with each new day.', '\be\w*\b', 1) -SELECT SQLNET::Regex_MatchOp('An extraordinary day dawns with each new day.', '\be\w*\b', 3) -``` - -# Regex_MatchOp4k - -It is equivalent to `Regex_MatchOp` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -Regex_MatchOp4k ( - @input NVARCHAR (4000), - @pattern NVARCHAR (4000), - @options INT - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::Regex_MatchOp4k('An extraordinary day dawns with each new day.', '\be\w*\b', 1) -SELECT SQLNET::Regex_MatchOp4k('An extraordinary day dawns with each new day.', '\be\w*\b', 3) -``` diff --git a/docs2/pages/documentations/regex/regex-replace.md b/docs2/pages/documentations/regex/regex-replace.md deleted file mode 100644 index 1d90df8..0000000 --- a/docs2/pages/documentations/regex/regex-replace.md +++ /dev/null @@ -1,47 +0,0 @@ -# Regex_Replace - -`Regex_Replace` replaces all strings that match a specified regular expression with a specified replacement string. - -```csharp -Regex_Replace ( - @input NVARCHAR (MAX), - @pattern NVARCHAR (MAX), - @replacement NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **input**: The input string that contains the text to convert. - - **pattern**: The regular expression pattern to match. - - **replacement**: The replacement string. - -## Returns - -A new string that is identical to the `input` string, except that the `replacement` string takes the place of each matched string. If `pattern` is not matched in the current instance, the method returns the current instance unchanged. - -## Example - -```csharp -SELECT SQLNET::Regex_Replace('Dot Net Not Perls', 'N.t', 'NET') -``` - -# Regex_Replace4k - -It is equivalent to `Regex_Replace` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -Regex_Replace4k ( - @input NVARCHAR (4000), - @pattern NVARCHAR (4000), - @replacement NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::Regex_Replace4k('Dot Net Not Perls', 'N.t', 'NET') -``` diff --git a/docs2/pages/documentations/regex/regex-replaceop.md b/docs2/pages/documentations/regex/regex-replaceop.md deleted file mode 100644 index 720f40f..0000000 --- a/docs2/pages/documentations/regex/regex-replaceop.md +++ /dev/null @@ -1,69 +0,0 @@ -# Regex_ReplaceOp - -`Regex_ReplaceOp` replaces all strings that match a specified regular expression with a specified replacement string using the specified matching options. - -```csharp -Regex_ReplaceOp ( - @input NVARCHAR (MAX), - @pattern NVARCHAR (MAX), - @replacement NVARCHAR (MAX), - @options INT - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **input**: The input string that contains the text to convert. - - **pattern**: The regular expression pattern to match. - - **replacement**: The replacement string. - - **options**: A bitwise combination of the enumeration values that provide options for matching. - -### Options - -You can use any of the following options. - -| Options |Integer Value | Descritpiton | -|:----------------------|:--------------|:--------------| -|None | 0 | Specifies that no options are set. | -|IgnoreCase | 1 | Specifies case-insensitive matching. | -|Multiline | 2 | Multiline mode. Changes the meaning of ^ and $ so they match at the beginning and end, respectively, of any line, and not just the beginning and end of the entire string.| -|ExplicitCapture | 4 | Specifies that the only valid captures are explicitly named or numbered groups of the form (?…). This allows unnamed parentheses to act as noncapturing groups without the syntactic clumsiness of the expression (?:…).| -|Compiled | 8 | Specifies that the regular expression is compiled to an assembly. This yields faster execution but increases startup time. | -|Singleline | 16 | Specifies single-line mode. Changes the meaning of the dot (.) so it matches every character (instead of every character except \n).| -|IgnorePatternWhitespace| 32 | Eliminates unescaped whitespace from the pattern and enables comments marked with #. | -|RightToLeft | 64 | Specifies that the search will be from right to left instead of from left to right. | -|ECMAScript | 256 | Enables ECMAScript-compliant behavior for the expression. This value can be used only in conjunction with the `IgnoreCase`, `Multiline`, and `Compiled` values. The use of this value with any other values results in an exception.| -|CultureInvariant | 512 | Specifies that cultural differences in language are ignored. | - -You can also use more than one option by specifying the sum of their integer values. For example, to specify `IgnoreCase` and `Multiline` options, use 3 integer value and pass it as 3rd parameter. - -## Returns - -The zero-based index position in the original string where the first character of the captured substring is found or -1 if it is not. - -## Example - -```csharp -SELECT SQLNET::Regex_ReplaceOp('Dot Net Not Perls', 'N.t', 'NET', 1) -``` - -# Regex_ReplaceOp4k - -It is equivalent to `Regex_ReplaceOp` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -Regex_ReplaceOp4k ( - @input NVARCHAR (4000), - @pattern NVARCHAR (4000), - @replacement NVARCHAR (4000), - @options INT - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::Regex_ReplaceOp4k(''Dot Net Not Perls', 'N.t', 'NET', 1) -``` diff --git a/docs2/pages/documentations/regex/regex-split.md b/docs2/pages/documentations/regex/regex-split.md deleted file mode 100644 index 2625755..0000000 --- a/docs2/pages/documentations/regex/regex-split.md +++ /dev/null @@ -1,44 +0,0 @@ -# Regex_Split - -`Regex_Split` splits an input string into an array of substrings at the positions defined by a regular expression pattern. - -```csharp -Regex_Split ( - @input NVARCHAR (MAX), - @pattern NVARCHAR (MAX) - ) -RETURNS TABLE (Match NVARCHAR (MAX) NULL) -``` - -## Parameters - - - **input**: The input string that contains the text to convert. - - **pattern**: The regular expression pattern to match. - -## Returns - -An array of strings. - -## Example - -```csharp -SELECT * FROM Regex_Split('plum--pear', '-') -``` - -# Regex_Split4k - -It is equivalent to `Regex_Split` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -Regex_Split4k ( - @input NVARCHAR (4000), - @pattern NVARCHAR (4000) - ) -RETURNS TABLE (Match NVARCHAR (4000) NULL) -``` - -## Example - -```csharp -SELECT * FROM Regex_Split4k('plum--pear', '-') -``` diff --git a/docs2/pages/documentations/regex/regex-splitop.md b/docs2/pages/documentations/regex/regex-splitop.md deleted file mode 100644 index 0637b4c..0000000 --- a/docs2/pages/documentations/regex/regex-splitop.md +++ /dev/null @@ -1,66 +0,0 @@ -# Regex_SplitOp - -`Regex_SplitOp` splits an input string into an array of substrings at the positions defined by a regular expression pattern using the specified matching options. - -```csharp -Regex_SplitOp ( - @input NVARCHAR (MAX), - @pattern NVARCHAR (MAX), - @options INT - ) -RETURNS TABLE (Match NVARCHAR (MAX) NULL) -``` - -## Parameters - - - **input**: The input string that contains the text to convert. - - **pattern**: The regular expression pattern to match. - - **options**: A bitwise combination of the enumeration values that provide options for matching. - -### Options - -An array of strings. - -| Options |Integer Value | Descritpiton | -|:----------------------|:--------------|:--------------| -|None | 0 | Specifies that no options are set. | -|IgnoreCase | 1 | Specifies case-insensitive matching. | -|Multiline | 2 | Multiline mode. Changes the meaning of ^ and $ so they match at the beginning and end, respectively, of any line, and not just the beginning and end of the entire string.| -|ExplicitCapture | 4 | Specifies that the only valid captures are explicitly named or numbered groups of the form (?…). This allows unnamed parentheses to act as noncapturing groups without the syntactic clumsiness of the expression (?:…).| -|Compiled | 8 | Specifies that the regular expression is compiled to an assembly. This yields faster execution but increases startup time. | -|Singleline | 16 | Specifies single-line mode. Changes the meaning of the dot (.) so it matches every character (instead of every character except \n).| -|IgnorePatternWhitespace| 32 | Eliminates unescaped whitespace from the pattern and enables comments marked with #. | -|RightToLeft | 64 | Specifies that the search will be from right to left instead of from left to right. | -|ECMAScript | 256 | Enables ECMAScript-compliant behavior for the expression. This value can be used only in conjunction with the `IgnoreCase`, `Multiline`, and `Compiled` values. The use of this value with any other values results in an exception.| -|CultureInvariant | 512 | Specifies that cultural differences in language are ignored. | - -You can also use more than one option by specifying the sum of their integer values. For example, to specify `IgnoreCase` and `Multiline` options, use 3 integer value and pass it as 3rd parameter. - -## Returns - -Gets the captured substring from the input string. - -## Example - -```csharp -SELECT * FROM Regex_Split('plum--pear', '-', 1) -``` - -# Regex_SplitOp4k - -It is equivalent to `Regex_SplitOp` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -Regex_SplitOp4k ( - @input NVARCHAR (4000), - @pattern NVARCHAR (4000), - @options INT - ) -RETURNS TABLE (Match NVARCHAR (MAX) NULL) -``` - -## Example - -```csharp -SELECT * FROM Regex_Split4k('plum--pear', '-', 1) -``` diff --git a/docs2/pages/documentations/regex/regex.md b/docs2/pages/documentations/regex/regex.md deleted file mode 100644 index 0c36353..0000000 --- a/docs2/pages/documentations/regex/regex.md +++ /dev/null @@ -1,17 +0,0 @@ -# Regex - -Represents an immutable regular expression. - -| Name | Description | Example | -| :--- | :---------- | :------ | -| [Regex_Escape(input)](/regex-escape) | Escapes a minimal set of characters by replacing them with their escape codes. | [Try it]()| -| [Regex_Index(input, pattern)](/regex-index) | Returns the position in the original string where the first character of the captured substring is found. | [Try it]()| -| [Regex_IndexOp(input, pattern, options)](/regex-indexop) | Returns the position in the original string where the first character of the captured substring is found using the specified matching options. | [Try it]()| -| [Regex_IsMatch(input, pattern)](/regex-ismatch) | Indicates whether the specified regular expression finds a match in the specified input string. | [Try it]()| -| [Regex_IsMatchOp(input, pattern, options)](/regex-ismatchop) | Indicates whether the specified regular expression finds a match in the specified input string using the specified matching options. | [Try it]()| -| [Regex_Match(input, pattern)](/regex-match) | Searches an input string for a substring that matches a regular expression pattern and returns the first occurrence of that string. | [Try it]()| -| [Regex_MatchOp(input, pattern, options)](/regex-matchop) | Searches an input string for a substring that matches a regular expression pattern and returns the first occurrence of that string using the specified matching options. | [Try it]()| -| [Regex_Replace(input, pattern, replacement)](/regex-replace) | Replaces all strings that match a specified regular expression with a specified replacement string. | [Try it]()| -| [Regex_ReplaceOp(input, pattern, replacement, options)](/regex-replaceop) | Replaces all strings that match a specified regular expression with a specified replacement string using the specified matching options. | [Try it]()| -| [Regex_Split(input, pattern, replacement)](/regex-split) | Splits an input string into an array of substrings at the positions defined by a regular expression pattern. | [Try it]()| -| [Regex_SplitOp(input, pattern, replacement, options)](/regex-splitop) | Splits an input string into an array of substrings at the positions defined by a regular expression pattern using the specified matching options. | [Try it]()| diff --git a/docs2/pages/documentations/string/_sidebar.md b/docs2/pages/documentations/string/_sidebar.md deleted file mode 100644 index 7bc0dce..0000000 --- a/docs2/pages/documentations/string/_sidebar.md +++ /dev/null @@ -1,33 +0,0 @@ -- [String](string.md) - - [Compare CurrentCulture IgnoreCase](string-compare-current-culture-ignore-case.md) - - [Compare CurrentCulture](string-compare-current-culture.md) - - [Compare IgnoreCase](string-compare-ignore-case.md) - - [Compare InvariantCulture IgnoreCase](string-compare-invariant-culture-ignore-case.md) - - [Compare InvariantCulture](string-compare-invariant-culture.md) - - [Compare Ordinal IgnoreCase](string-compare-ordinal-ignore-case.md) - - [Compare Ordinal](string-compare-ordinal.md) - - [Compare](string-compare.md) - - [Contains](string-contains.md) - - [Endswith](string-endswith.md) - - [Indexof CurrentCulture IgnoreCase](string-indexof-current-culture-ignore-case.md) - - [Indexof CurrentCulture](string-indexof-current-culture.md) - - [Indexof InvariantCulture IgnoreCase](string-indexof-invariant-culture-ignore-case.md) - - [Indexof InvariantCulture](string-indexof-invariant-culture.md) - - [Indexof Ordinal IgnoreCase](string-indexof-ordinal-ignore-case.md) - - [Indexof Ordinal](string-indexof-ordinal.md) - - [Indexof](string-indexof.md) - - [Insert](string-insert.md) - - [LastIndexof CurrentCulture IgnoreCase](string-last-indexof-current-culture-ignore-case.md) - - [LastIndexof CurrentCulture](string-last-indexof-current-culture.md) - - [LastIndexof InvariantCulture IgnoreCase](string-last-indexof-invariant-culture-ignore-case.md) - - [LastIndexof InvariantCulture](string-last-indexof-invariant-culture.md) - - [LastIndexof Ordinal IgnoreCase](string-last-indexof-ordinal-ignore-case.md) - - [LastIndexof Ordinal](string-last-indexof-ordinal.md) - - [LastIndexof](string-last-indexof.md) - - [Length](string-length.md) - - [Occurrences](string-occurrences.md) - - [Padleft](string-padleft.md) - - [Padright](string-padright.md) - - [RemoveNumOfChars](string-remove-num-of-chars.md) - - [Remove](string-remove.md) - - [Replace](string-replace.md) diff --git a/docs2/pages/documentations/string/string-compare-current-culture-ignore-case.md b/docs2/pages/documentations/string/string-compare-current-culture-ignore-case.md deleted file mode 100644 index b2b49fd..0000000 --- a/docs2/pages/documentations/string/string-compare-current-culture-ignore-case.md +++ /dev/null @@ -1,52 +0,0 @@ -# String_CompareCurrentCultureIgnoreCase - -`String_CompareCurrentCultureIgnoreCase` compares two specified String objects using culture-sensitive sort rules, the current culture, and ignoring the case of the strings, and returns an integer that indicates their relative position in the sort order. - -```csharp -String_CompareCurrentCultureIgnoreCase ( - @strA NVARCHAR (MAX), - @strB NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **strA**: The first string to compare. - - **strB**: The second string to compare. - -## Returns - -A 32-bit signed integer that indicates the lexical relationship between the two comparands. - -| Value | Condition | -|:--------- |:--------- | -|Less than zero |strA precedes strB in the sort order.| -|Zero |strA occurs in the same position as strB in the sort order.| -|Greater than zero |strA follows strB in the sort order.| - -## Example - -```csharp -SELECT SQLNET::String_CompareCurrentCultureIgnoreCase('case', 'Case') -SELECT SQLNET::String_CompareCurrentCultureIgnoreCase('encyclopædia', 'encyclopaedia') -``` - -# String_CompareCurrentCultureIgnoreCase4k - -It is equivalent to `String_CompareCurrentCultureIgnoreCase` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_CompareCurrentCultureIgnoreCase4k ( - @strA NVARCHAR (4000), - @strB NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_CompareCurrentCultureIgnoreCase4k('case', 'Case') -SELECT SQLNET::String_CompareCurrentCultureIgnoreCase4k('encyclopædia', 'encyclopaedia') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-compare-current-culture.md b/docs2/pages/documentations/string/string-compare-current-culture.md deleted file mode 100644 index 9563249..0000000 --- a/docs2/pages/documentations/string/string-compare-current-culture.md +++ /dev/null @@ -1,52 +0,0 @@ -# String_CompareCurrentCulture - -`String_CompareCurrentCulture` compares two specified String objects using culture-sensitive sort rules and the current culture, and returns an integer that indicates their relative position in the sort order. - -```csharp -String_CompareCurrentCulture ( - @strA NVARCHAR (MAX), - @strB NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **strA**: The first string to compare. - - **strB**: The second string to compare. - -## Returns - -A 32-bit signed integer that indicates the lexical relationship between the two comparands. - -| Value | Condition | -|:--------- |:--------- | -|Less than zero |strA precedes strB in the sort order.| -|Zero |strA occurs in the same position as strB in the sort order.| -|Greater than zero |strA follows strB in the sort order.| - -## Example - -```csharp -SELECT SQLNET::String_CompareCurrentCulture('case', 'Case') -SELECT SQLNET::String_CompareCurrentCulture('encyclopædia', 'encyclopaedia') -``` - -# String_CompareCurrentCulture4k - -It is equivalent to `String_CompareCurrentCulture` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_CompareCurrentCulture4k ( - @strA NVARCHAR (4000), - @strB NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_CompareCurrentCulture4k('case', 'Case') -SELECT SQLNET::String_CompareCurrentCulture4k('encyclopædia', 'encyclopaedia') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-compare-ignore-case.md b/docs2/pages/documentations/string/string-compare-ignore-case.md deleted file mode 100644 index 086cee6..0000000 --- a/docs2/pages/documentations/string/string-compare-ignore-case.md +++ /dev/null @@ -1,52 +0,0 @@ -# String_CompareIgnoreCase - -`String_CompareIgnoreCase` compares two specified String objects, ignoring or honoring their case, and returns an integer that indicates their relative position in the sort order. - -```csharp -String_CompareIgnoreCase ( - @strA NVARCHAR (MAX), - @strB NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **strA**: The first string to compare. - - **strB**: The second string to compare. - -## Returns - -A 32-bit signed integer that indicates the lexical relationship between the two comparands. - -| Value | Condition | -|:--------- |:--------- | -|Less than zero |strA precedes strB in the sort order.| -|Zero |strA occurs in the same position as strB in the sort order.| -|Greater than zero |strA follows strB in the sort order.| - -## Example - -```csharp -SELECT SQLNET::String_CompareIgnoreCase('case', 'Case') -SELECT SQLNET::String_CompareIgnoreCase('Archæology', 'ARCHÆOLOGY') -``` - -# String_CompareIgnoreCase4k - -It is equivalent to `String_CompareIgnoreCase` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_CompareIgnoreCase4k ( - @strA NVARCHAR (4000), - @strB NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_CompareIgnoreCase4k('case', 'Case') -SELECT SQLNET::String_CompareIgnoreCase4k('Archæology', 'ARCHÆOLOGY') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-compare-invariant-culture-ignore-case.md b/docs2/pages/documentations/string/string-compare-invariant-culture-ignore-case.md deleted file mode 100644 index 016ba52..0000000 --- a/docs2/pages/documentations/string/string-compare-invariant-culture-ignore-case.md +++ /dev/null @@ -1,52 +0,0 @@ -# String_CompareInvariantCultureIgnoreCase - -`String_CompareInvariantCultureIgnoreCase` compares two specified String objects using culture-sensitive sort rules, the invariant culture, and ignoring the case of the strings, and returns an integer that indicates their relative position in the sort order. - -```csharp -String_CompareInvariantCultureIgnoreCase ( - @strA NVARCHAR (MAX), - @strB NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **strA**: The first string to compare. - - **strB**: The second string to compare. - -## Returns - -A 32-bit signed integer that indicates the lexical relationship between the two comparands. - -| Value | Condition | -|:--------- |:--------- | -|Less than zero |strA precedes strB in the sort order.| -|Zero |strA occurs in the same position as strB in the sort order.| -|Greater than zero |strA follows strB in the sort order.| - -## Example - -```csharp -SELECT SQLNET::String_CompareInvariantCultureIgnoreCase('case', 'Case') -SELECT SQLNET::String_CompareInvariantCultureIgnoreCase('encyclopædia', 'encyclopaedia') -``` - -# String_CompareInvariantCultureIgnoreCase4k - -It is equivalent to `String_CompareInvariantCultureIgnoreCase` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_CompareInvariantCultureIgnoreCase4k ( - @strA NVARCHAR (4000), - @strB NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_CompareInvariantCultureIgnoreCase4k('case', 'Case') -SELECT SQLNET::String_CompareInvariantCultureIgnoreCase4k('encyclopædia', 'encyclopaedia') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-compare-invariant-culture.md b/docs2/pages/documentations/string/string-compare-invariant-culture.md deleted file mode 100644 index 66b22c8..0000000 --- a/docs2/pages/documentations/string/string-compare-invariant-culture.md +++ /dev/null @@ -1,52 +0,0 @@ -# String_CompareInvariantCulture - -`String_CompareInvariantCulture` compares two specified String objects using culture-sensitive sort rules and the invariant culture, and returns an integer that indicates their relative position in the sort order. - -```csharp -String_CompareInvariantCulture ( - @strA NVARCHAR (MAX), - @strB NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **strA**: The first string to compare. - - **strB**: The second string to compare. - -## Returns - -A 32-bit signed integer that indicates the lexical relationship between the two comparands. - -| Value | Condition | -|:--------- |:--------- | -|Less than zero |strA precedes strB in the sort order.| -|Zero |strA occurs in the same position as strB in the sort order.| -|Greater than zero |strA follows strB in the sort order.| - -## Example - -```csharp -SELECT SQLNET::String_CompareInvariantCulture('case', 'Case') -SELECT SQLNET::String_CompareInvariantCulture('encyclopædia', 'encyclopaedia') -``` - -# String_CompareInvariantCulture4k - -It is equivalent to `String_CompareInvariantCulture` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_CompareInvariantCulture4k ( - @strA NVARCHAR (4000), - @strB NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_CompareInvariantCulture4k('case', 'Case') -SELECT SQLNET::String_CompareInvariantCulture4k('encyclopædia', 'encyclopaedia') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-compare-ordinal-ignore-case.md b/docs2/pages/documentations/string/string-compare-ordinal-ignore-case.md deleted file mode 100644 index bf7d729..0000000 --- a/docs2/pages/documentations/string/string-compare-ordinal-ignore-case.md +++ /dev/null @@ -1,52 +0,0 @@ -# String_CompareOrdinalIgnoreCase - -`String_CompareOrdinalIgnoreCase` compares two specified String objects using ordinal (binary) sort rules and ignoring the case of the strings, and returns an integer that indicates their relative position in the sort order. - -```csharp -String_CompareOrdinalIgnoreCase ( - @strA NVARCHAR (MAX), - @strB NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **strA**: The first string to compare. - - **strB**: The second string to compare. - -## Returns - -A 32-bit signed integer that indicates the lexical relationship between the two comparands. - -| Value | Condition | -|:--------- |:--------- | -|Less than zero |strA precedes strB in the sort order.| -|Zero |strA occurs in the same position as strB in the sort order.| -|Greater than zero |strA follows strB in the sort order.| - -## Example - -```csharp -SELECT SQLNET::String_CompareOrdinalIgnoreCase('case', 'Case') -SELECT SQLNET::String_CompareOrdinalIgnoreCase('Archæology', 'ARCHÆOLOGY') -``` - -# String_CompareOrdinalIgnoreCase4k - -It is equivalent to `String_CompareOrdinalIgnoreCase` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_CompareOrdinalIgnoreCase4k ( - @strA NVARCHAR (4000), - @strB NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_CompareOrdinalIgnoreCase4k('case', 'Case') -SELECT SQLNET::String_CompareOrdinalIgnoreCase4k('Archæology', 'ARCHÆOLOGY') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-compare-ordinal.md b/docs2/pages/documentations/string/string-compare-ordinal.md deleted file mode 100644 index b3bcba3..0000000 --- a/docs2/pages/documentations/string/string-compare-ordinal.md +++ /dev/null @@ -1,52 +0,0 @@ -# String_CompareOrdinal - -`String_CompareOrdinal` compares two specified String objects using ordinal (binary) sort rules, and returns an integer that indicates their relative position in the sort order. - -```csharp -String_CompareOrdinal ( - @strA NVARCHAR (MAX), - @strB NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **strA**: The first string to compare. - - **strB**: The second string to compare. - -## Returns - -A 32-bit signed integer that indicates the lexical relationship between the two comparands. - -| Value | Condition | -|:--------- |:--------- | -|Less than zero |strA precedes strB in the sort order.| -|Zero |strA occurs in the same position as strB in the sort order.| -|Greater than zero |strA follows strB in the sort order.| - -## Example - -```csharp -SELECT SQLNET::String_CompareOrdinal('case', 'Case') -SELECT SQLNET::String_CompareOrdinal('Archæology', 'ARCHÆOLOGY') -``` - -# String_CompareOrdinal4k - -It is equivalent to `String_CompareOrdinal` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_CompareOrdinal4k ( - @strA NVARCHAR (4000), - @strB NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_CompareOrdinal4k('case', 'Case') -SELECT SQLNET::String_CompareOrdinal4k('Archæology', 'ARCHÆOLOGY') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-compare.md b/docs2/pages/documentations/string/string-compare.md deleted file mode 100644 index ee71ad3..0000000 --- a/docs2/pages/documentations/string/string-compare.md +++ /dev/null @@ -1,50 +0,0 @@ -# String_Compare - -`String_Compare` compares two specified String objects and returns an integer that indicates their relative position in the sort order. - -```csharp -String_Compare ( - @strA NVARCHAR (MAX), - @strB NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **strA**: The first string to compare. - - **strB**: The second string to compare. - -## Returns - -A 32-bit signed integer that indicates the lexical relationship between the two comparands. - -| Value | Condition | -|:--------- |:--------- | -|Less than zero |strA precedes strB in the sort order.| -|Zero |strA occurs in the same position as strB in the sort order.| -|Greater than zero |strA follows strB in the sort order.| - -## Example - -```csharp -SELECT SQLNET::String_Compare('abc', 'abc') -``` - -# String_Compare4k - -It is equivalent to `String_Compare` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_Compare4k ( - @strA NVARCHAR (4000), - @strB NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_Compare4k('abc', 'abc') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-contains.md b/docs2/pages/documentations/string/string-contains.md deleted file mode 100644 index 8b01d01..0000000 --- a/docs2/pages/documentations/string/string-contains.md +++ /dev/null @@ -1,44 +0,0 @@ -# String_Contains - -`String_Contains` returns a value indicating whether a specified substring occurs within this string. - -```csharp -String_Contains ( - @source NVARCHAR (MAX), - @target NVARCHAR (MAX) - ) -RETURNS BIT -``` - -## Parameters - - - **source**: The source string. - - **target**: The string to search within source string. - -## Returns - - `true` if the target parameter occurs within the source string, or if target is the empty string (""); otherwise, `false`. - -## Example - -```csharp -SELECT SQLNET::String_Contains('This is a string.', 'string') -``` - -# String_Contains4k - -It is equivalent to `String_Contains` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_Contains4k ( - @source NVARCHAR (4000), - @target NVARCHAR (4000) - ) -RETURNS BIT -``` - -## Example - -```csharp -SELECT SQLNET::String_Contains4k('This is a string.', 'string') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-endswith.md b/docs2/pages/documentations/string/string-endswith.md deleted file mode 100644 index f86a407..0000000 --- a/docs2/pages/documentations/string/string-endswith.md +++ /dev/null @@ -1,44 +0,0 @@ -# String_EndsWith - -`String_EndsWith` determines whether the end of the source string instance matches a target string. - -```csharp -String_EndsWith ( - @source NVARCHAR (MAX), - @target NVARCHAR (MAX) - ) -RETURNS BIT -``` - -## Parameters - - - **source**: The source string. - - **target**: The string to compare to the substring at the end of the source string. - -## Returns - - `true` if the target matches the end of the source string; otherwise, `false`. - -## Example - -```csharp -SELECT SQLNET::String_EndsWith('This is a string.', 'string.') -``` - -# String_EndsWith4k - -It is equivalent to `String_EndsWith` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_EndsWith4k ( - @source NVARCHAR (4000), - @target NVARCHAR (4000) - ) -RETURNS BIT -``` - -## Example - -```csharp -SELECT SQLNET::String_EndsWith4k('This is a string.', 'string.') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-indexof-current-culture-ignore-case.md b/docs2/pages/documentations/string/string-indexof-current-culture-ignore-case.md deleted file mode 100644 index 914867d..0000000 --- a/docs2/pages/documentations/string/string-indexof-current-culture-ignore-case.md +++ /dev/null @@ -1,46 +0,0 @@ -# String_IndexOfCurrentCultureIgnoreCase - -`String_IndexOfCurrentCultureIgnoreCase` returns the zero-based index of the first occurrence of a `searchValue` Unicode character or string within the `source` string using culture-sensitive sort rules, the current culture, and ignoring the case of the strings. - -```csharp -String_IndexOfCurrentCultureIgnoreCase ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_IndexOfCurrentCultureIgnoreCase('This is a string.', 'string') -SELECT SQLNET::String_IndexOfCurrentCultureIgnoreCase('Archæology', 'Æ') -``` - -# String_IndexOfCurrentCultureIgnoreCase4k - -It is equivalent to `String_IndexOfCurrentCultureIgnoreCase` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_IndexOfCurrentCultureIgnoreCase4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_IndexOfCurrentCultureIgnoreCase4k('This is a string.', 'string') -SELECT SQLNET::String_IndexOfCurrentCultureIgnoreCase4k('Archæology', 'Æ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-indexof-current-culture.md b/docs2/pages/documentations/string/string-indexof-current-culture.md deleted file mode 100644 index 241aba9..0000000 --- a/docs2/pages/documentations/string/string-indexof-current-culture.md +++ /dev/null @@ -1,46 +0,0 @@ -# String_IndexOfCurrentCulture - -`String_IndexOfCurrentCulture` returns the zero-based index of the first occurrence of a `searchValue` Unicode character or string within the `source` string using culture-sensitive sort rules and the current culture. - -```csharp -String_IndexOfCurrentCulture ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_IndexOfCurrentCulture('This is a string.', 'string') -SELECT SQLNET::String_IndexOfCurrentCulture('Archæology', 'Æ') -``` - -# String_IndexOfCurrentCulture4k - -It is equivalent to `String_IndexOfCurrentCulture` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_IndexOfCurrentCulture4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_IndexOfCurrentCulture4k('This is a string.', 'string') -SELECT SQLNET::String_IndexOfCurrentCulture4k('Archæology', 'Æ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-indexof-invariant-culture-ignore-case.md b/docs2/pages/documentations/string/string-indexof-invariant-culture-ignore-case.md deleted file mode 100644 index 4415713..0000000 --- a/docs2/pages/documentations/string/string-indexof-invariant-culture-ignore-case.md +++ /dev/null @@ -1,46 +0,0 @@ -# String_IndexOfInvariantCultureIgnoreCase - -`String_IndexOfInvariantCultureIgnoreCase` returns the zero-based index of the first occurrence of a `searchValue` Unicode character or string within the `source` string using culture-sensitive sort rules, the invariant culture, and ignoring the case of the strings. - -```csharp -String_IndexOfInvariantCultureIgnoreCase ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_IndexOfInvariantCultureIgnoreCase('This is a string.', 'string') -SELECT SQLNET::String_IndexOfInvariantCultureIgnoreCase('Archæology', 'Æ') -``` - -# String_IndexOfInvariantCultureIgnoreCase4k - -It is equivalent to `String_IndexOfInvariantCultureIgnoreCase` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_IndexOfInvariantCultureIgnoreCase4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_IndexOfInvariantCultureIgnoreCase4k('This is a string.', 'string') -SELECT SQLNET::String_IndexOfInvariantCultureIgnoreCase4k('Archæology', 'Æ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-indexof-invariant-culture.md b/docs2/pages/documentations/string/string-indexof-invariant-culture.md deleted file mode 100644 index 671f6c1..0000000 --- a/docs2/pages/documentations/string/string-indexof-invariant-culture.md +++ /dev/null @@ -1,46 +0,0 @@ -# String_IndexOfInvariantCulture - -`String_IndexOfInvariantCulture` returns the zero-based index of the first occurrence of a `searchValue` Unicode character or string within the `source` string using culture-sensitive sort rules and the invariant culture. - -```csharp -String_IndexOfInvariantCulture ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_IndexOfInvariantCulture('This is a string.', 'string') -SELECT SQLNET::String_IndexOfInvariantCulture('Archæology', 'Æ') -``` - -# String_IndexOfInvariantCulture4k - -It is equivalent to `String_IndexOfInvariantCulture` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_IndexOfInvariantCulture4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_IndexOfInvariantCulture4k('This is a string.', 'string') -SELECT SQLNET::String_IndexOfInvariantCulture4k('Archæology', 'Æ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-indexof-ordinal-ignore-case.md b/docs2/pages/documentations/string/string-indexof-ordinal-ignore-case.md deleted file mode 100644 index b2b148c..0000000 --- a/docs2/pages/documentations/string/string-indexof-ordinal-ignore-case.md +++ /dev/null @@ -1,46 +0,0 @@ -# String_IndexOfOrdinalIgnoreCase - -`String_IndexOfOrdinalIgnoreCase` returns the zero-based index of the first occurrence of a `searchValue` Unicode character or string within the `source` string using ordinal (binary) sort rules and ignoring the case of the strings. - -```csharp -String_IndexOfOrdinalIgnoreCase ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_IndexOfOrdinalIgnoreCase('This is a string.', 'string') -SELECT SQLNET::String_IndexOfOrdinalIgnoreCase('Archæology', 'Æ') -``` - -# String_IndexOfOrdinalIgnoreCase4k - -It is equivalent to `String_IndexOfOrdinalIgnoreCase` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_IndexOfOrdinalIgnoreCase4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_IndexOfOrdinalIgnoreCase4k('This is a string.', 'string') -SELECT SQLNET::String_IndexOfOrdinalIgnoreCase4k('Archæology', 'Æ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-indexof-ordinal.md b/docs2/pages/documentations/string/string-indexof-ordinal.md deleted file mode 100644 index 34a7094..0000000 --- a/docs2/pages/documentations/string/string-indexof-ordinal.md +++ /dev/null @@ -1,46 +0,0 @@ -# String_IndexOfOrdinal - -`String_IndexOfOrdinal` returns the zero-based index of the first occurrence of a `searchValue` Unicode character or string within the `source` string using ordinal (binary) sort rules. - -```csharp -String_IndexOfOrdinal ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_IndexOfOrdinal('This is a string.', 'string') -SELECT SQLNET::String_IndexOfOrdinal('Archæology', 'Æ') -``` - -# String_IndexOfOrdinal4k - -It is equivalent to `String_IndexOfOrdinal` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_IndexOfOrdinal4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_IndexOfOrdinal4k('This is a string.', 'string') -SELECT SQLNET::String_IndexOfOrdinal4k('Archæology', 'Æ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-indexof.md b/docs2/pages/documentations/string/string-indexof.md deleted file mode 100644 index 6da29f6..0000000 --- a/docs2/pages/documentations/string/string-indexof.md +++ /dev/null @@ -1,44 +0,0 @@ -# String_IndexOf - -`String_IndexOf` returns the zero-based index of the first occurrence of a `searchValue` Unicode character or string within the `source` string. - -```csharp -String_IndexOf ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_IndexOf('This is a string.', 'string') -``` - -# String_IndexOf4k - -It is equivalent to `String_IndexOf` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_IndexOf4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_IndexOf4k('This is a string.', 'string') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-insert.md b/docs2/pages/documentations/string/string-insert.md deleted file mode 100644 index 698c1d7..0000000 --- a/docs2/pages/documentations/string/string-insert.md +++ /dev/null @@ -1,49 +0,0 @@ -# String_Insert - -`String_Insert` returns a new string in which a `value` string is inserted at a specified index position in the `source` string. - -```csharp -String_Insert ( - @source NVARCHAR (MAX), - @startIndex INT, - @value NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - - **startIndex**: The zero-based index position of the insertion. - - **value**: The string to insert. - -## Returns - -A new string that is equivalent to the `source` string, but with `value` inserted at position `startIndex`. - -## Example - -```csharp -SELECT SQLNET::String_Insert('This is a string.', 10, 'new ') -SELECT SQLNET::String_Insert('aaaabbbb', 4, ' ') -``` - -# String_Insert4k - -It is equivalent to `String_Insert` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_Insert4k ( - @source NVARCHAR (4000), - @startIndex INT, - @value NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_Insert4k('This is a string.', 10, 'new ') -SELECT SQLNET::String_Insert4k('aaaabbbb', 4, ' ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-last-indexof-current-culture-ignore-case.md b/docs2/pages/documentations/string/string-last-indexof-current-culture-ignore-case.md deleted file mode 100644 index 9e5719c..0000000 --- a/docs2/pages/documentations/string/string-last-indexof-current-culture-ignore-case.md +++ /dev/null @@ -1,46 +0,0 @@ -# String_LastIndexOfCurrentCultureIgnoreCase - -`String_LastIndexOfCurrentCultureIgnoreCase` returns the zero-based index of the last occurrence of a `searchValue` Unicode character or string within the `source` string using culture-sensitive sort rules, the current culture, and ignoring the case of the strings. - -```csharp -String_LastIndexOfCurrentCultureIgnoreCase ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOfCurrentCultureIgnoreCase('This is a string.', 'string') -SELECT SQLNET::String_LastIndexOfCurrentCultureIgnoreCase('Archæology Archæology', 'Æ') -``` - -# String_LastIndexOfCurrentCultureIgnoreCase4k - -It is equivalent to `String_LastIndexOfCurrentCultureIgnoreCase` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_LastIndexOfCurrentCultureIgnoreCase4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOfCurrentCultureIgnoreCase4k('This is a string.', 'string') -SELECT SQLNET::String_LastIndexOfCurrentCultureIgnoreCase4k('Archæology Archæology', 'Æ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-last-indexof-current-culture.md b/docs2/pages/documentations/string/string-last-indexof-current-culture.md deleted file mode 100644 index 01831de..0000000 --- a/docs2/pages/documentations/string/string-last-indexof-current-culture.md +++ /dev/null @@ -1,46 +0,0 @@ -# String_LastIndexOfCurrentCulture - -`String_LastIndexOfCurrentCulture` returns the zero-based index of the last occurrence of a `searchValue` Unicode character or string within the `source` string using culture-sensitive sort rules and the current culture. - -```csharp -String_LastIndexOfCurrentCulture ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOfCurrentCulture('This is a string.', 'string') -SELECT SQLNET::String_LastIndexOfCurrentCulture('Archæology Archæology', 'Æ') -``` - -# String_LastIndexOfCurrentCulture4k - -It is equivalent to `String_LastIndexOfCurrentCulture` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_LastIndexOfCurrentCulture4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOfCurrentCulture4k('This is a string.', 'string') -SELECT SQLNET::String_LastIndexOfCurrentCulture4k('Archæology Archæology', 'Æ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-last-indexof-invariant-culture-ignore-case.md b/docs2/pages/documentations/string/string-last-indexof-invariant-culture-ignore-case.md deleted file mode 100644 index d0240fb..0000000 --- a/docs2/pages/documentations/string/string-last-indexof-invariant-culture-ignore-case.md +++ /dev/null @@ -1,46 +0,0 @@ -# String_LastIndexOfInvariantCultureIgnoreCase - -`String_LastIndexOfInvariantCultureIgnoreCase` returns the zero-based index of the last occurrence of a `searchValue` Unicode character or string within the `source` string using culture-sensitive sort rules, the invariant culture, and ignoring the case of the strings. - -```csharp -String_LastIndexOfInvariantCultureIgnoreCase ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOfInvariantCultureIgnoreCase('This is a string.', 'string') -SELECT SQLNET::String_LastIndexOfInvariantCultureIgnoreCase('Archæology', 'Æ') -``` - -# String_LastIndexOfInvariantCultureIgnoreCase4k - -It is equivalent to `String_LastIndexOfInvariantCultureIgnoreCase` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_LastIndexOfInvariantCultureIgnoreCase4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOfInvariantCultureIgnoreCase4k('This is a string.', 'string') -SELECT SQLNET::String_LastIndexOfInvariantCultureIgnoreCase4k('Archæology', 'Æ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-last-indexof-invariant-culture.md b/docs2/pages/documentations/string/string-last-indexof-invariant-culture.md deleted file mode 100644 index a667653..0000000 --- a/docs2/pages/documentations/string/string-last-indexof-invariant-culture.md +++ /dev/null @@ -1,46 +0,0 @@ -# String_LastIndexOfInvariantCulture - -`String_LastIndexOfInvariantCulture` returns the zero-based index of the last occurrence of a `searchValue` Unicode character or string within the `source` string using culture-sensitive sort rules and the invariant culture. - -```csharp -String_LastIndexOfInvariantCulture ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOfInvariantCulture('This is a string.', 'string') -SELECT SQLNET::String_LastIndexOfInvariantCulture('Archæology Archæology', 'Æ') -``` - -# String_LastIndexOfInvariantCulture4k - -It is equivalent to `String_LastIndexOfInvariantCulture` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_LastIndexOfInvariantCulture4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOfInvariantCulture4k('This is a string.', 'string') -SELECT SQLNET::String_LastIndexOfInvariantCulture4k('Archæology Archæology', 'Æ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-last-indexof-ordinal-ignore-case.md b/docs2/pages/documentations/string/string-last-indexof-ordinal-ignore-case.md deleted file mode 100644 index e2a39c8..0000000 --- a/docs2/pages/documentations/string/string-last-indexof-ordinal-ignore-case.md +++ /dev/null @@ -1,46 +0,0 @@ -# String_LastIndexOfOrdinalIgnoreCase - -`String_LastIndexOfOrdinalIgnoreCase` returns the zero-based index of the last occurrence of a `searchValue` Unicode character or string within the `source` string using ordinal (binary) sort rules and ignoring the case of the strings. - -```csharp -String_LastIndexOfOrdinalIgnoreCase ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOfOrdinalIgnoreCase('This is a string.', 'string') -SELECT SQLNET::String_LastIndexOfOrdinalIgnoreCase('Archæology', 'Æ') -``` - -# String_LastIndexOfOrdinalIgnoreCase4k - -It is equivalent to `String_LastIndexOfOrdinalIgnoreCase` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_LastIndexOfOrdinalIgnoreCase4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOfOrdinalIgnoreCase4k('This is a string.', 'string') -SELECT SQLNET::String_LastIndexOfOrdinalIgnoreCase4k('Archæology', 'Æ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-last-indexof-ordinal.md b/docs2/pages/documentations/string/string-last-indexof-ordinal.md deleted file mode 100644 index 94dc2a9..0000000 --- a/docs2/pages/documentations/string/string-last-indexof-ordinal.md +++ /dev/null @@ -1,46 +0,0 @@ -# String_LastIndexOfOrdinal - -`String_LastIndexOfOrdinal` returns the zero-based index of the last occurrence of a `searchValue` Unicode character or string within the `source` string using ordinal (binary) sort rules. - -```csharp -String_LastIndexOfOrdinal ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOfOrdinal('This is a string.', 'string') -SELECT SQLNET::String_LastIndexOfOrdinal('Archæology Archæology', 'Æ') -``` - -# String_LastIndexOfOrdinal4k - -It is equivalent to `String_LastIndexOfOrdinal` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_LastIndexOfOrdinal4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOfOrdinal4k('This is a string.', 'string') -SELECT SQLNET::String_LastIndexOfOrdinal4k('Archæology Archæology', 'Æ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-last-indexof.md b/docs2/pages/documentations/string/string-last-indexof.md deleted file mode 100644 index 56889fd..0000000 --- a/docs2/pages/documentations/string/string-last-indexof.md +++ /dev/null @@ -1,44 +0,0 @@ -# String_LastIndexOf - -`String_LastIndexOf` returns the zero-based index of the last occurrence of a `searchValue` Unicode character or string within the `source` string. - -```csharp -String_LastIndexOf ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX) - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - -## Returns - -The zero-based index position of the `searchValue` parameter from the start of the `source` string if that string is found, or -1 if it is not. If `searchValue` is Empty, the return value is 0. - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOf('This is a string.', 'string') -``` - -# String_LastIndexOf4k - -It is equivalent to `String_LastIndexOf` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_LastIndexOf4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000) - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_LastIndexOf4k('This is a string.', 'string') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-length.md b/docs2/pages/documentations/string/string-length.md deleted file mode 100644 index a3da4c9..0000000 --- a/docs2/pages/documentations/string/string-length.md +++ /dev/null @@ -1,41 +0,0 @@ -# String_Length - -`String_Length` returns the number of characters in the `source` string. - -```csharp -String_Length ( - @source NVARCHAR (MAX), - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - -## Returns - -The number of characters in the `source` string. - -## Example - -```csharp -SELECT SQLNET::String_Length('This is a string.') -``` - -# String_Length4k - -It is equivalent to `String_Length` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_Length4k ( - @source NVARCHAR (4000), - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_Length4k('This is a string.') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-occurrences.md b/docs2/pages/documentations/string/string-occurrences.md deleted file mode 100644 index 5154fe5..0000000 --- a/docs2/pages/documentations/string/string-occurrences.md +++ /dev/null @@ -1,49 +0,0 @@ -# String_Occurrences - -`String_Occurrences` returns the number of occurrences of `searchValue` in the `source` string. - -```csharp -String_Occurrences ( - @source NVARCHAR (MAX), - @searchValue NVARCHAR (MAX), - @isCaseSensitive BIT - ) -RETURNS INT -``` - -## Parameters - - - **source**: The source string. - - **searchValue**: The string to search within the source string. - - **isCaseSensitive**: 0 to ignore case during the comparison; otherwise, 1. - -## Returns - -The number of characters in the `source` string. - -## Example - -```csharp -SELECT SQLNET::String_Occurrences('This is a String.', 's', 0) -SELECT SQLNET::String_Occurrences('This is a String.', 's', 1) -``` - -# String_Occurrences4k - -It is equivalent to `String_Occurrences` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_Occurrences4k ( - @source NVARCHAR (4000), - @searchValue NVARCHAR (4000), - @isCaseSensitive BIT - ) -RETURNS INT -``` - -## Example - -```csharp -SELECT SQLNET::String_Occurrences4k('This is a String.', 's', 0) -SELECT SQLNET::String_Occurrences4k('This is a String.', 's', 1) -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-padleft.md b/docs2/pages/documentations/string/string-padleft.md deleted file mode 100644 index fc429e3..0000000 --- a/docs2/pages/documentations/string/string-padleft.md +++ /dev/null @@ -1,51 +0,0 @@ -# String_PadLeft - -`String_PadLeft` returns a new string that right-aligns the characters in the `source` string by padding them on the left with a specified `paddingChar` Unicode character, for a specified total length. - -```csharp -String_PadLeft ( - @source NVARCHAR (MAX), - @totalWidth INT, - @paddingChar NVARCHAR (1) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - - **totalWidth**: The number of characters in the resulting string, equal to the number of original characters plus any additional padding characters. - - **paddingChar**: A Unicode padding character. - -## Returns - - - A new string that is equivalent to the `source` string, but right-aligned and padded on the left with as many paddingChar characters as needed to create a length of `totalWidth`. - - If `totalWidth` is less than the length of the `source` string, the method returns a reference to the existing instance. - - If `totalWidth` is equal to the length of the `source` string, the method returns a new string that is identical to the `source` string. - -## Example - -```csharp -SELECT SQLNET::String_PadLeft('This is a String.', 20, '.') -SELECT SQLNET::String_PadLeft('This is a String.', 10, '.') -``` - -# String_PadLeft4k - -It is equivalent to `String_PadLeft` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_PadLeft4k ( - @source NVARCHAR (4000), - @totalWidth INT, - @paddingChar NVARCHAR (1) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_PadLeft4k('This is a String.', 20, '.') -SELECT SQLNET::String_PadLeft4k('This is a String.', 10, '.') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-padright.md b/docs2/pages/documentations/string/string-padright.md deleted file mode 100644 index 516d5bf..0000000 --- a/docs2/pages/documentations/string/string-padright.md +++ /dev/null @@ -1,51 +0,0 @@ -# String_PadRight - -`String_PadRight` returns a new string that left-aligns the characters in the `source` string by padding them on the right with a specified `paddingChar` Unicode character, for a specified total length. - -```csharp -String_PadRight ( - @source NVARCHAR (MAX), - @totalWidth INT, - @paddingChar NVARCHAR (1) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - - **totalWidth**: The number of characters in the resulting string, equal to the number of original characters plus any additional padding characters. - - **paddingChar**: A Unicode padding character. - -## Returns - - - A new string that is equivalent to the `source` string, but right-aligned and padded on the left with as many paddingChar characters as needed to create a length of `totalWidth`. - - If `totalWidth` is less than the length of the `source` string, the method returns a reference to the existing instance. - - If `totalWidth` is equal to the length of the `source` string, the method returns a new string that is identical to the `source` string. - -## Example - -```csharp -SELECT SQLNET::String_PadRight('This is a String.', 20, '.') -SELECT SQLNET::String_PadRight('This is a String.', 10, '.') -``` - -# String_PadRight4k - -It is equivalent to `String_PadRight` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_PadRight4k ( - @source NVARCHAR (4000), - @totalWidth INT, - @paddingChar NVARCHAR (1) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_PadRight4k('This is a String.', 20, '.') -SELECT SQLNET::String_PadRight4k('This is a String.', 10, '.') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-remove-num-of-chars.md b/docs2/pages/documentations/string/string-remove-num-of-chars.md deleted file mode 100644 index 54bddc3..0000000 --- a/docs2/pages/documentations/string/string-remove-num-of-chars.md +++ /dev/null @@ -1,45 +0,0 @@ -# String_RemoveNumOfChars - -`String_RemoveNumOfChars` returns a new string in which a specified number of characters in the `source` beginning at a specified position have been deleted. - -```csharp -String_RemoveNumOfChars ( - @source NVARCHAR (MAX), - @startIndex INT - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - - **startIndex**: The zero-based position to begin deleting characters. - - **count**: The number of characters to delete. - -## Returns - - - A new string that is equivalent to this string except for the removed characters. - -## Example - -```csharp -SELECT SQLNET::String_RemoveNumOfChars('abc---def', 3, 3) -``` - -# String_RemoveNumOfChars4k - -It is equivalent to `String_RemoveNumOfChars` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_RemoveNumOfChars4k ( - @source NVARCHAR (4000), - @startIndex INT - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_RemoveNumOfChars4k('abc---def', 3, 3) -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-remove.md b/docs2/pages/documentations/string/string-remove.md deleted file mode 100644 index 3fbc950..0000000 --- a/docs2/pages/documentations/string/string-remove.md +++ /dev/null @@ -1,44 +0,0 @@ -# String_Remove - -`String_Remove` returns a new string in which all the characters in the `source` string, beginning at a specified position are deleted till the end of the `source` string. - -```csharp -String_Remove ( - @source NVARCHAR (MAX), - @startIndex INT - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - - **startIndex**: The zero-based position to begin deleting characters. - -## Returns - - - A new string that is equivalent to this string except for the removed characters. - -## Example - -```csharp -SELECT SQLNET::String_Remove('abc---def', 3) -``` - -# String_Remove4k - -It is equivalent to `String_Remove` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_Remove4k ( - @source NVARCHAR (4000), - @startIndex INT - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_Remove4k('abc---def', 3) -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-replace.md b/docs2/pages/documentations/string/string-replace.md deleted file mode 100644 index fba2d1f..0000000 --- a/docs2/pages/documentations/string/string-replace.md +++ /dev/null @@ -1,50 +0,0 @@ -# String_Replace - -`String_Replace` returns a new string in which all occurrences of a specified `oldValye` Unicode character or String in the `source` string are replaced with another specified `newValue` Unicode character or String. - -```csharp -String_Replace ( - @source NVARCHAR (MAX), - @oldValue NVARCHAR (MAX), - @newValue NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - - **oldValue**: The string to be replaced. - - **newValue**: The string to replace all occurrences of oldValue. - -## Returns - - - A string that is equivalent to the `source` string except that all instances of `oldValue` are replaced with `newValue`. - - If `oldValue` is not found in the current instance, the method returns the `source` string without any changes. - -## Example - -```csharp -SELECT SQLNET::String_Replace('1 2 3 4 5 6 7 8 9', ' ', ',') -SELECT SQLNET::String_Replace('This docment uses 3 other docments to docment the docmentation', 'docment', 'document') -``` - -# String_Replace4k - -It is equivalent to `String_Replace` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_Replace4k ( - @source NVARCHAR (4000), - @oldValue NVARCHAR (MAX), - @newValue NVARCHAR (MAX) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_Replace4k('1 2 3 4 5 6 7 8 9', ' ', ',') -SELECT SQLNET::String_Replace4k('This docment uses 3 other docments to docment the docmentation', 'docment', 'document') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-split-remove-empty-entries.md b/docs2/pages/documentations/string/string-split-remove-empty-entries.md deleted file mode 100644 index 5c68110..0000000 --- a/docs2/pages/documentations/string/string-split-remove-empty-entries.md +++ /dev/null @@ -1,47 +0,0 @@ -# String_SplitRemoveEmptyEntries - -`String_SplitRemoveEmptyEntries` returns a string array that contains the substrings in the `source` string that are delimited by elements of a specified `delimStr` string. The return value does not include array elements that contain an empty string. - -```csharp -String_SplitRemoveEmptyEntries ( - @source NVARCHAR (MAX), - @delimStr NVARCHAR (MAX) - ) -RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) -``` - -## Parameters - - - **source**: The source string. - - **delimStr**: A string that is converted to character array that delimits the substrings in the `source` string, an empty array that contains no delimiters, or `null`. - -## Returns - - - A string that is equivalent to the `source` string except that all instances of `oldValue` are replaced with `newValue`. - - If `oldValue` is not found in the `source` string, the method returns the `source` string without any changes. - -## Example - -```csharp -SELECT * FROM String_SplitRemoveEmptyEntries(',ONE,,TWO,,,THREE,,', ',') -SELECT * FROM String_SplitRemoveEmptyEntries('1,2,3,4;5;6;:7:8:9', ',;:') -``` - -# String_SplitRemoveEmptyEntries4k - -It is equivalent to `String_SplitRemoveEmptyEntries` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_SplitRemoveEmptyEntries4k ( - @source NVARCHAR (4000), - @delimStr NVARCHAR (4000) - ) -RETURNS TABLE ([Match] NVARCHAR (4000) NULL) -``` - -## Example - -```csharp -SELECT * FROM String_SplitRemoveEmptyEntries4k(',ONE,,TWO,,,THREE,,', ',') -SELECT * FROM String_SplitRemoveEmptyEntries4k('1,2,3,4;5;6;:7:8:9', ',;:') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-split.md b/docs2/pages/documentations/string/string-split.md deleted file mode 100644 index 412a697..0000000 --- a/docs2/pages/documentations/string/string-split.md +++ /dev/null @@ -1,47 +0,0 @@ -# String_Split - -`String_Split` returns a string array that contains the substrings in the `source` string that are delimited by elements of a specified `delimStr` string. - -```csharp -String_Split ( - @source NVARCHAR (MAX), - @delimStr NVARCHAR (MAX) - ) -RETURNS TABLE ([Match] NVARCHAR (MAX) NULL) -``` - -## Parameters - - - **source**: The source string. - - **delimStr**: A string that is converted to character array that delimits the substrings in the `source` string, an empty array that contains no delimiters, or `null`. - -## Returns - - - A string that is equivalent to the `source` string except that all instances of `oldValue` are replaced with `newValue`. - - If `oldValue` is not found in the `source` string, the method returns the `source` string without any changes. - -## Example - -```csharp -SELECT * FROM String_Split(',ONE,,TWO,,,THREE,,', ',') -SELECT * FROM String_Split('1,2,3,4;5;6;:7:8:9', ',;:') -``` - -# String_Split4k - -It is equivalent to `String_Split` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_Split4k ( - @source NVARCHAR (4000), - @delimStr NVARCHAR (4000) - ) -RETURNS TABLE ([Match] NVARCHAR (4000) NULL) -``` - -## Example - -```csharp -SELECT * FROM String_Split4k(',ONE,,TWO,,,THREE,,', ',') -SELECT * FROM String_Split4k('1,2,3,4;5;6;:7:8:9', ',;:') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-startswith.md b/docs2/pages/documentations/string/string-startswith.md deleted file mode 100644 index 9b071df..0000000 --- a/docs2/pages/documentations/string/string-startswith.md +++ /dev/null @@ -1,44 +0,0 @@ -# String_StartsWith - -`String_StartsWith` determines whether the beginning of the `source` string instance matches the specified `target` string. - -```csharp -String_StartsWith ( - @source NVARCHAR (MAX), - @target NVARCHAR (MAX) - ) -RETURNS BIT -``` - -## Parameters - - - **source**: The source string. - - **target**: The string to compare. - -## Returns - -`true` if `target` matches the beginning of the `source` string; otherwise, false. - -## Example - -```csharp -SELECT SQLNET::String_StartsWith('This is bold text', '') -``` - -# String_StartsWith4k - -It is equivalent to `String_StartsWith` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_StartsWith4k ( - @source NVARCHAR (4000), - @target NVARCHAR (4000) - ) -RETURNS BIT -``` - -## Example - -```csharp -SELECT SQLNET::String_StartsWith4k('This is bold text', '') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-substring.md b/docs2/pages/documentations/string/string-substring.md deleted file mode 100644 index dd300e2..0000000 --- a/docs2/pages/documentations/string/string-substring.md +++ /dev/null @@ -1,47 +0,0 @@ -# String_Substring - -`String_Substring` returns a substring from this instance. The substring starts at a specified character position and has a specified length. - -```csharp -String_Substring ( - @source NVARCHAR (MAX), - @startIndex INT, - @length INT - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - - **startIndex**: The zero-based starting character position of a substring in the `source` string. - - **length**: The number of characters in the substring. - -## Returns - -A string that is equivalent to the substring of length that begins at `startIndex` in the `source` string, or Empty if `startIndex` is equal to the length of this instance and `length` is zero. - -## Example - -```csharp -SELECT SQLNET::String_Substring('Name: Felica Walker', 6, 13) -``` - -# String_Substring4k - -It is equivalent to `String_Substring` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_Substring4k ( - @source NVARCHAR (4000), - @startIndex INT, - @length INT - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_Substring4k('Name: Felica Walker', 6, 13) -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-tolower-invariant.md b/docs2/pages/documentations/string/string-tolower-invariant.md deleted file mode 100644 index 5c4c3e2..0000000 --- a/docs2/pages/documentations/string/string-tolower-invariant.md +++ /dev/null @@ -1,41 +0,0 @@ -# String_ToLowerInvariant - -`String_ToLowerInvariant` returns a copy of the `source` string converted to lowercase using the casing rules of the invariant culture. - -```csharp -String_ToLowerInvariant ( - @source NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - -## Returns - -A string in lowercase. - -## Example - -```csharp -SELECT SQLNET::String_ToLowerInvariant('wAr aNd pEaCe') -``` - -# String_ToLowerInvariant4k - -It is equivalent to `String_ToLowerInvariant` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_ToLowerInvariant4k ( - @source NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_ToLowerInvariant4k('wAr aNd pEaCe') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-tolower.md b/docs2/pages/documentations/string/string-tolower.md deleted file mode 100644 index c825ee9..0000000 --- a/docs2/pages/documentations/string/string-tolower.md +++ /dev/null @@ -1,41 +0,0 @@ -# String_ToLower - -`String_ToLower` returns a copy of the `source` string converted to lowercase. - -```csharp -String_ToLower ( - @source NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - -## Returns - -A string in lowercase. - -## Example - -```csharp -SELECT SQLNET::String_ToLower('wAr aNd pEaCe') -``` - -# String_ToLower4k - -It is equivalent to `String_ToLower` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_ToLower4k ( - @source NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_ToLower4k('wAr aNd pEaCe') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-totitle-case.md b/docs2/pages/documentations/string/string-totitle-case.md deleted file mode 100644 index ae3e267..0000000 --- a/docs2/pages/documentations/string/string-totitle-case.md +++ /dev/null @@ -1,43 +0,0 @@ -# String_ToTitleCase - -`String_ToTitleCase` returns a converted string to title case (except for words that are entirely in uppercase, which are considered to be acronyms). - -```csharp -String_ToTitleCase ( - @source NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - -## Returns - -The string converted to title case. - -## Example - -```csharp -SELECT SQLNET::String_ToTitleCase('wAr aNd pEaCe') -SELECT SQLNET::String_ToTitleCase('UNICEF and children') -``` - -# String_ToTitleCase4k - -It is equivalent to `String_ToTitleCase` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_ToTitleCase4k ( - @source NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_ToTitleCase4k('wAr aNd pEaCe') -SELECT SQLNET::String_ToTitleCase4k('UNICEF and children') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-toupper-invariant.md b/docs2/pages/documentations/string/string-toupper-invariant.md deleted file mode 100644 index 7c53715..0000000 --- a/docs2/pages/documentations/string/string-toupper-invariant.md +++ /dev/null @@ -1,41 +0,0 @@ -# String_ToUpperInvariant - -`String_ToUpperInvariant` returns a copy of the `source` string converted to uppercase using the casing rules of the invariant culture. - -```csharp -String_ToUpperInvariant ( - @source NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - -## Returns - -A string in uppercase. - -## Example - -```csharp -SELECT SQLNET::String_ToUpperInvariant('wAr aNd pEaCe') -``` - -# String_ToUpperInvariant4k - -It is equivalent to `String_ToUpperInvariant` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_ToUpperInvariant4k ( - @source NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_ToUpperInvariant4k('wAr aNd pEaCe') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-toupper.md b/docs2/pages/documentations/string/string-toupper.md deleted file mode 100644 index ae3f93c..0000000 --- a/docs2/pages/documentations/string/string-toupper.md +++ /dev/null @@ -1,41 +0,0 @@ -# String_ToUpper - -`String_ToUpper` returns a copy of the `source` string converted to uppercase. - -```csharp -String_ToUpper ( - @source NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - -## Returns - -A string in uppercase. - -## Example - -```csharp -SELECT SQLNET::String_ToUpper('wAr aNd pEaCe') -``` - -# String_ToUpper4k - -It is equivalent to `String_ToUpper` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_ToUpper4k ( - @source NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_ToUpper4k('wAr aNd pEaCe') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-trim.md b/docs2/pages/documentations/string/string-trim.md deleted file mode 100644 index 7ea9d29..0000000 --- a/docs2/pages/documentations/string/string-trim.md +++ /dev/null @@ -1,42 +0,0 @@ -# String_Trim - -`String_Trim` removes all leading and trailing white-space characters from the `source` string. - -```csharp -String_Trim ( - @source NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - -## Returns - - - The string that remains after all white-space characters are removed from the start and end of the `source` string. - - If no characters can be trimmed from the `source` instance, the method returns it without any changes. - -## Example - -```csharp -SELECT SQLNET::String_Trim(' John Doe ') -``` - -# String_Trim4k - -It is equivalent to `String_Trim` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_Trim4k ( - @source NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_Trim4k(' John Doe ') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-trimchars.md b/docs2/pages/documentations/string/string-trimchars.md deleted file mode 100644 index 103a7cd..0000000 --- a/docs2/pages/documentations/string/string-trimchars.md +++ /dev/null @@ -1,45 +0,0 @@ -# String_TrimChars - -`String_TrimChars` removes all leading and trailing occurrences of a set of characters specified in `charsToTrimStr` from the the `source` string. - -```csharp -String_TrimChars ( - @source NVARCHAR (MAX), - @charsToTrimStr NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - - **charsToTrimStr**: A string that is converted to an array of Unicode characters to remove, or null. - -## Returns - - - The string that remains after all white-space characters are removed from the start and end of the `source` string. - - If no characters can be trimmed from the `source` instance, the method returns it without any changes. - -## Example - -```csharp -SELECT SQLNET::String_TrimChars('*John Doe/', '*/') -``` - -# String_TrimChars4k - -It is equivalent to `String_TrimChars` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_TrimChars4k ( - @source NVARCHAR (4000), - @charsToTrimStr NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_TrimChars4k('*John Doe/', '*/') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-trimend.md b/docs2/pages/documentations/string/string-trimend.md deleted file mode 100644 index 39d4b93..0000000 --- a/docs2/pages/documentations/string/string-trimend.md +++ /dev/null @@ -1,45 +0,0 @@ -# String_TrimEnd - -`String_TrimEnd` removes all trailing occurrences of a set of characters specified in `charsToTrimStr` string from the the `source` string. - -```csharp -String_TrimEnd ( - @source NVARCHAR (MAX), - @charsToTrimStr NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - - **charsToTrimStr**: A string that is converted to an array of Unicode characters to remove, or null. - -## Returns - - - The string that remains after all white-space characters are removed from the start and end of the `source` string. - - If no characters can be trimmed from the `source` instance, the method returns it without any changes. - -## Example - -```csharp -SELECT SQLNET::String_TrimEnd('*John Doe/', '*/') -``` - -# String_TrimEnd4k - -It is equivalent to `String_TrimEnd` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_TrimEnd4k ( - @source NVARCHAR (4000), - @charsToTrimStr NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_TrimEnd4k('*John Doe/', '*/') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string-trimstart.md b/docs2/pages/documentations/string/string-trimstart.md deleted file mode 100644 index 014c0d3..0000000 --- a/docs2/pages/documentations/string/string-trimstart.md +++ /dev/null @@ -1,45 +0,0 @@ -# String_TrimStart - -`String_TrimStart` removes all leading occurrences of a set of characters specified in `charsToTrimStr` from the the `source` string. - -```csharp -String_TrimStart ( - @source NVARCHAR (MAX), - @charsToTrimStr NVARCHAR (MAX) - ) -RETURNS NVARCHAR (MAX) -``` - -## Parameters - - - **source**: The source string. - - **charsToTrimStr**: A string that is converted to an array of Unicode characters to remove, or null. - -## Returns - - - The string that remains after all white-space characters are removed from the start and end of the `source` string. - - If no characters can be trimmed from the `source` instance, the method returns it without any changes. - -## Example - -```csharp -SELECT SQLNET::String_TrimStart('*John Doe/', '*/') -``` - -# String_TrimStart4k - -It is equivalent to `String_TrimStart` except no NVARCHAR(MAX) parameters; it can be used when input data will never be over 4000 characters as this function offers better performance. - -```csharp -String_TrimStart4k ( - @source NVARCHAR (4000), - @charsToTrimStr NVARCHAR (4000) - ) -RETURNS NVARCHAR (4000) -``` - -## Example - -```csharp -SELECT SQLNET::String_TrimStart4k('*John Doe/', '*/') -``` \ No newline at end of file diff --git a/docs2/pages/documentations/string/string.md b/docs2/pages/documentations/string/string.md deleted file mode 100644 index e7c041c..0000000 --- a/docs2/pages/documentations/string/string.md +++ /dev/null @@ -1,51 +0,0 @@ -# String - -Represents text as a sequence of UTF-16 code units. - -| Name | Description | Example | -| :--- | :---------- | :------ | -| [String_Compare(strA, strB)](/string-compare) | Compares two specified String objects. | [Try it]()| -| [String_CompareCurrentCulture(strA, strB)](/string-compare-current-culture) | Compares two specified String objects using culture-sensitive sort rules and the current culture. | [Try it]()| -| [String_CompareCurrentCultureIgnoreCase(strA, strB)](/string-compare-current-culture-ignore-case) | Compares two specified String objects using culture-sensitive sort rules, the current culture, and ignoring the case of the strings. | [Try it]()| -| [String_CompareIgnoreCase(strA, strB)](/string-compare-ignore-case) | Compares two specified String objects ignoring their case. | [Try it]()| -| [String_CompareInvariantCulture(strA, strB)](/string-compare-invariant-culture) | Compares two specified String objects using culture-sensitive sort rules and the invariant culture. | [Try it]()| -| [String_CompareInvariantCultureIgnoreCase(strA, strB)](/string-compare-invariant-culture-ignore-case) | Compares two specified String objects using culture-sensitive sort rules, the invariant culture, and ignoring the case of the strings. | [Try it]()| -| [String_CompareOrdinal(strA, strB)](/string-compare-ordinal) | Compares two specified String objects using ordinal (binary) sort rules. | [Try it]()| -| [String_CompareOrdinalIgnoreCase(strA, strB)](/string-compare-ordinal-ignore-case) | Compares two specified String objects using ordinal (binary) sort rules, and ignoring the case of the strings. | [Try it]()| -| [String_Contains(source, target)](/string-contains) | Returns a value indicating whether a specified substring occurs within this string. | [Try it]()| -| [String_EndsWith(source, target)](/string-endswith) | Determines whether the end of the source string instance matches a target string. | [Try it]()| -| [String_IndexOf(source, searchValue)](/string-indexof) | Returns the zero-based index of the first occurrence of the specified string. | [Try it]()| -| [String_IndexOfCurrentCulture(source, searchValue)](/string-indexof-current-culture) | Returns the zero-based index of the first occurrence of the specified string using culture-sensitive sort rules and the current culture. | [Try it]()| -| [String_IndexOfCurrentCultureIgnoreCase(source, searchValue)](/string-indexof-current-culture-ignore-case) | Returns the zero-based index of the first occurrence of the specified string using culture-sensitive sort rules, the current culture, and ignoring the case of the strings. | [Try it]()| -| [String_IndexOfInvariantCulture(source, searchValue)](/string-indexof-invariant-culture) | Returns the zero-based index of the first occurrence of the specified string using culture-sensitive sort rules and the invariant culture. | [Try it]()| -| [String_IndexOfInvariantCultureIgnoreCase(source, searchValue)](/string-indexof-invariant-culture-ignore-case) | Returns the zero-based index of the first occurrence of the specified string using culture-sensitive sort rules, the invariant culture, and ignoring the case of the strings. | [Try it]()| -| [String_IndexOfOrdinal(source, searchValue)](/string-indexof-ordinal) | Returns the zero-based index of the first occurrence of the specified string using ordinal (binary) sort rules. | [Try it]()| -| [String_IndexOfOrdinalIgnoreCase(source, searchValue)](/string-indexof-ordinal-ignore-case) | Returns the zero-based index of the first occurrence of the specified string using ordinal (binary) sort rules, and ignoring the case of the strings. | [Try it]()| -| [String_Insert(source, startIndex, value)](/string-insert) | Returns a new string in which a specified string is inserted at a specified index position. | [Try it]()| -| [String_LastIndexOf(source, searchValue)](/string-last-indexof) | Returns the zero-based index of the last occurrence of the specified string. | [Try it]()| -| [String_LastIndexOfCurrentCulture(source, searchValue)](/string-last-indexof-current-culture) | Returns the zero-based index of the last occurrence of the specified string using culture-sensitive sort rules and the current culture. | [Try it]()| -| [String_LastIndexOfCurrentCultureIgnoreCase(source, searchValue)](/string-last-indexof-current-culture-ignore-case) | Returns the zero-based index of the last occurrence of the specified string using culture-sensitive sort rules, the current culture, and ignoring the case of the strings. | [Try it]()| -| [String_LastIndexOfInvariantCulture(source, searchValue)](/string-last-indexof-invariant-culture) | Returns the zero-based index of the last occurrence of the specified string using culture-sensitive sort rules and the invariant culture. | [Try it]()| -| [String_LastIndexOfInvariantCultureIgnoreCase(source, searchValue)](/string-last-indexof-invariant-culture-ignore-case) | Returns the zero-based index of the last occurrence of the specified string using culture-sensitive sort rules, the invariant culture, and ignoring the case of the strings. | [Try it]()| -| [String_LastIndexOfOrdinal(source, searchValue)](/string-last-indexof-ordinal) | Returns the zero-based index of the last occurrence of the specified string using ordinal (binary) sort rules. | [Try it]()| -| [String_LastIndexOfOrdinalIgnoreCase(source, searchValue)](/string-last-indexof-ordinal-ignore-case) | Returns the zero-based index of the last occurrence of the specified string using ordinal (binary) sort rules, and ignoring the case of the strings. | [Try it]()| -| [String_Length(source)](/string-length) | Returns the number of characters in the specified string. | [Try it]()| -| [String_Occurrences(source, searchValue, isCaseSensitive)](/string-occurrences) | Returns the number of occurrences in the specified string. | [Try it]()| -| [String_PadLeft(source, totalWidth, paddingChar)](/string-padleft) | Returns a new string that right-aligns the characters in this instance by padding them on the left with a specified Unicode character, for a specified total length. | [Try it]()| -| [String_PadRight(source, totalWidth, paddingChar)](/string-padright) | Returns a new string that left-aligns the characters in this instance by padding them on the right with a specified Unicode character, for a specified total length. | [Try it]()| -| [String_Remove(source, startIndex)](/string-remove) | Returns a new string in which all the characters in the `source` string, beginning at a specified position are deleted till the end of the `source` string. | [Try it]()| -| [String_RemoveNumOfChars(source, startIndex, count)](/string-remove-num-of-chars) | Returns a new string in which a specified number of characters in the `source` beginning at a specified position have been deleted. | [Try it]()| -| [String_Replace(source, oldValue, newValue)](/string-remove) | Returns a new string in which all occurrences of a specified Unicode character or String in the current string are replaced with another specified Unicode character or String. | [Try it]()| -| [String_Split(source, delimStr)](/string-split) | Returns a string array that contains the substrings in this instance that are delimited by elements of a specified string. | [Try it]()| -| [String_SplitRemoveEmptyEntries(source, delimStr)](/string-split-remove-empty-entries) | Returns a string array that contains the substrings in this instance that are delimited by elements of a specified string and remove elements that contain an empty string. | [Try it]()| -| [String_StartsWith(source, target)](/string-startswith) | Determines whether the beginning of this string instance matches a specified string. | [Try it]()| -| [String_Substring(source, startIndex, length)](/string-substring) | Returns a substring from the `source` string starting at a specified character position and has a specified length. | [Try it]()| -| [String_ToLower(source)](/string-tolower) | Returns a copy of this string converted to lowercase. | [Try it]()| -| [String_ToLowerInvariant(source)](/string-tolower-invariant) | Returns a copy of this string converted to lowercase using the casing rules of the invariant culture. | [Try it]()| -| [String_ToTitleCase(source)](/string-totitle-case) | Converts the specified string to title case (except for words that are entirely in uppercase, which are considered to be acronyms). | [Try it]()| -| [String_ToUpper(source)](/string-toupper) | Returns a copy of this string converted to uppercase. | [Try it]()| -| [String_ToUpperInvariant(source)](/string-tolower-invariant) | Returns a copy of this string converted to uppercase using the casing rules of the invariant culture. | [Try it]()| -| [String_Trim(source)](/string-trim) | Removes all the leading and trailing white-space characters from the `source` string. | [Try it]()| -| [String_TrimChars(source, charsToTrimStr)](/string-trimchars) | Removes all the leading and trailing occurrences of a set of characters specified in `charsToTrimStr` from the `source` string. | [Try it]()| -| [String_TrimEnd(source, charsToTrimStr)](/string-trimend) | Removes all the trailing occurrences of a set of characters specified in `charsToTrimStr` from the `source` string. | [Try it]()| -| [String_TrimStart(source, charsToTrimStr)](/string-trimstart) | Removes all the leading occurrences of a set of characters specified in `charsToTrimStr` from the `source` string. | [Try it]()| diff --git a/docs2/pages/documentations/value.md b/docs2/pages/documentations/value.md deleted file mode 100644 index 294c579..0000000 --- a/docs2/pages/documentations/value.md +++ /dev/null @@ -1,104 +0,0 @@ -# Value - -## Value - -Add or update a value associated with the specified key. - - - Val\Value (SQL_Variant) - - ValueBigInt - - ValueBinary - - ValueBoolean - - ValueByte - - ValueBytes - - ValueChars - - ValueDateTime - - ValueGuid - - ValueInt - - ValueString - - ValueTinyInt - - ValueXml - - -```csharp --- SELECT 3 -SELECT SQLNET::New('x+1').ValueInt('x', 2).EvalInt() as Result - --- SELECT 3 -SELECT SQLNET::New('x+1').ValueInt('x', 2).EvalInt() as Result - --- SELECT 1 -SELECT SQLNET::New('x.Length').ValueBinary('x', 0x11).Eval() as Result - --- SELECT 'ZZZ Projects' -SELECT SQLNET::New('"ZZZ " + x').ValueString('x', 'Projects').Eval() as Result - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/009cc/2' %} - -> For maximum performance, the right Value[Type] should always be used over Val && Value - -## ValueNullable - - - Val\Value (require to specify the type in the key "int? x") - - ValueBigInt - - ValueBoolean - - ValueByte - - ValueBytes - - ValueDateTime - - ValueGuid - - ValueInt - - ValueTinyInt - - -```csharp -DECLARE @x1 INT = NULL; -DECLARE @x2 INT = 2; - -DECLARE @sqlnet SQLNET = SQLNET::New('x.HasValue ? x.Value + 1 : 0'); - --- SELECT 0 -SELECT @sqlnet.ValueNullableInt('x', @x1).EvalInt() as Result - --- SELECT 3 -SELECT @sqlnet.ValueNullableInt('x', @x2).EvalInt() as Result - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/1cdb6/5' %} - -## ValueSQLNET - -Add or update a value associated with the specified key. The parameter "value" from the previously resolved expression is used. - - -```csharp -DECLARE @sqlnet SQLNET = SQLNET::New('var list = new List() { 1, 2, 3, 4}') -DECLARE @result SQLNET = @sqlnet.EvalSQLNET() - --- SELECT 4 -SELECT SQLNET::New('x.Count').ValueSQLNET('x', @result).Eval() AS Result - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/3149e/2' %} - -## GetValue - -Gets the value associated with the specified key. - - - GetValue(string key) - - GetValueBigInt(string key) - - GetValueBit(string key) - - GetValueInt(string key) - - GetValueSmallInt(string key) - - GetValueString(string key) - - GetValueTinyInt(string key) - - -```csharp --- SELECT 1 -SELECT SQLNET::New('x + 1').Val('x', 1).GetValue('x') as Result - --- SELECT 1 -SELECT SQLNET::New('x + 1').Val('x', 1).GetValueBigInt('x') as Result - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/3149e/6' %} diff --git a/docs2/pages/faq/faq-eval-sql-net.md b/docs2/pages/faq/faq-eval-sql-net.md deleted file mode 100644 index ac4f1e8..0000000 --- a/docs2/pages/faq/faq-eval-sql-net.md +++ /dev/null @@ -1,94 +0,0 @@ -# FAQ - Eval SQL.NET - -## Bug Fixing - -You found a bug when compiling? [Report it](https://github.com/zzzprojects/Eval-SQL.NET/issues) and it will be fixed, usually within one business day. - -## Namespace - -All namespace support by SQL CLR are supported by Eval SQL.NET. - -[Supported .NET Framework Libraries](https://msdn.microsoft.com/en-us/library/ms403279.aspx) - - - CustomMarshalers - - Microsoft.VisualBasic - - Microsoft.VisualC - - mscorlib - - System - - System.Configuration - - System.Data - - System.Data.OracleClient - - System.Data.SqlXml - - System.Deployment - - System.Security - - System.Transactions - - System.Web.Services - - System.Xml - - System.Core.dll - - System.Xml.Linq.dll - - All common namespaces and extension methods can be used without specifying the fullname. - -You can see the full list [here](https://github.com/zzzprojects/Eval-SQL.NET/blob/master/src/Z.Expressions.SqlServer.Eval/EvalContext/EvalContext.RegisterDefaultAlias.cs) - -Let us know if you believe we missed some. - -## Performance - -You are worried about performance? Don't worry, Eval SQL.NET is super-fast and can evaluate over 150,000 expressions in a loop under one second and over 1,000,000 using a table! - -Result highly vary depending of your SQL Server performance and expressions to evaluate. - - -```csharp - -DECLARE @startTime DATETIME, -@endTime DATETIME - -DECLARE @I INT = -1 -DECLARE @sqlnet SQLNET = SQLNET::New('i + 1') --- LET Compile the expression to check the compiled performance -SET @I = @sqlnet.Val('i', @I).EvalInt() - -SET @startTime = GETDATE() - -WHILE @I < 125000 - BEGIN - SET @I = @sqlnet.ValueInt('i', @I).EvalInt() - END - -SET @endTime = GETDATE() -PRINT 'StartTime = ' + CONVERT(VARCHAR(30), @startTime, 121) -PRINT 'EndTime = ' + CONVERT(VARCHAR(30), @endTime, 121) -PRINT 'Duration = ' + CONVERT(VARCHAR(30), @endTime - @starttime, 114) - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/3149e/10' %} - -## Security - -SQL CLR allows three types of permissions: - - - SAFE - - EXTERNAL_ACCESS - - UNSAFE Eval SQL.NET supports all types and is installed by default with SAFE permissions. Read more about [SQL CLR Permissions](https://msdn.microsoft.com/en-CA/library/ms345101.aspx) - -## SQL Injection - -This library allows to use parameter, so no SQL Injection is possible! - -However, if you build the string to evaluate as you build a dynamic SQL, then there is nothing we can do for you. - -## Decimal throw an error! - -In C#, decimals must be suffixed with "m" to make them valid. By default "1.1" in C# is a double which cannot be added with decimal value. - - -```csharp - -// Trow exception -SELECT SQLNET::New('(x)+1.1234').Val('x', 1.1).Eval() as Result - --- SELECT 2.2234 -SELECT SQLNET::New('(x)+1.1234m').Val('x', 1.1).Eval() as Result -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/3149e/11' %} diff --git a/docs2/pages/faq/faq-general.md b/docs2/pages/faq/faq-general.md deleted file mode 100644 index 6b5917b..0000000 --- a/docs2/pages/faq/faq-general.md +++ /dev/null @@ -1,21 +0,0 @@ -# FAQ - General - -## Which Payment method do you support? -We support the following payment methods: - -- PayPal -- Check -- Bank Transfer - -## Can I purchase this product from a Reseller? -Yes, just let him know how to contact us. - -## What's your average SLA response and resolution times? -We try to provide an outstanding support service. - -We normally answer very fast, often within one hour. - -Most fixes are resolved within one business day. - -## Do you support EF Core? -We do not yet. We are currently re-writing the library to support it. diff --git a/docs2/pages/faq/faq-installation.md b/docs2/pages/faq/faq-installation.md deleted file mode 100644 index 804213d..0000000 --- a/docs2/pages/faq/faq-installation.md +++ /dev/null @@ -1,10 +0,0 @@ -# FAQ - Installation - -## How to I Install your product? -It's simple, you download it from NuGet and add it to your project. - -More Info: [Tutorials - Installing](installing) - -## I have installed your product, but I don't see your extensions method. -- Make sure to install it in the right project -- Make sure your project supports .NET40 or better diff --git a/docs2/pages/faq/faq-license.md b/docs2/pages/faq/faq-license.md deleted file mode 100644 index 4c3dc32..0000000 --- a/docs2/pages/faq/faq-license.md +++ /dev/null @@ -1,67 +0,0 @@ -# FAQ - License - -## Developer Seat - -### What's a developer seat? -A developer seat is a developer working for your company and developing code directly with our product. - -You don't have to purchase a developer seat for front-end developer or back-end developer which doesn't use our product API. - -Since you buy developer a seat, you can develop an unlimited amount of projects within your company. - -### What's the cost for additional developer seat? -The cost for additional developer seat is usually extremely low. We want to make sure our library is accessible for small and large company. - -### Are developer seats are transferable? -Yes, a developer seat can be transferred to any employee within your company. - -## Perpertual License - -### What's a perpetual license? -A perpetual license allows you to use the licensed product indefinitely. - -### Even when my Support & Upgrade is expired? -Yes. - -## Support & Upgdrade - -### My support & upgrade have expired! What will happen? -Don't worry. Your product continue to work forever! - -You can still download and use any version released before the support & upgrade expiration date. - -You will need to renew to use versions released after the support & upgrade expiration date. - -### How do I renew my License? -We usually start to send renewal emails one months before the support & upgrade expiration date. - -If you didn't receive such email, you can contact us directly: info@zzzprojects.com - -### Can I have a renewal discount? -We provide a 25% discount to early renewals. So, anyone renewing before the support & upgrade expiration date automatically get a renewal discount. - -### I'm too late for early renewal discount! What can I do? -If you are few days late, we still provide early renewal discounts. - -However, if you are a few months late, you will need to purchase the library again. - -The best way to find out if you still have access to early renewal discount is by contacting us: info@zzzprojects.com - -### Why should I renew? -Renewing your support & upgrade give the following benefits: - -- Major version releases and new product features -- Fast support by email -- Protection against price increases during the maintenance term - -## Royalty Free - -### Is Eval-SQL.NET Royalty Free? -Yes, the product is royalty free. - -This means, you can develop a project and install it on thousands of client machines if you paid for developer seat within your company. - -Some standard royalty free limitations: - -- You can't sell a similar product and claim it's yours. -- If your customer have access to your source code and develops using our API, they will have to purchase a license. diff --git a/docs2/pages/faq/faq.md b/docs2/pages/faq/faq.md deleted file mode 100644 index 8b06cdf..0000000 --- a/docs2/pages/faq/faq.md +++ /dev/null @@ -1,9 +0,0 @@ -# FAQ -## FAQ - -- [Contact Us](contact-us) -- [Issue Tracker](issue-tracker) -- [General](faq-general) -- [Installation](faq-installation) -- [License](faq-license) -- [Eval SQL.NET](faq-eval-sql-net) diff --git a/docs2/pages/faq/issue-tracker.md b/docs2/pages/faq/issue-tracker.md deleted file mode 100644 index 9a56acb..0000000 --- a/docs2/pages/faq/issue-tracker.md +++ /dev/null @@ -1,11 +0,0 @@ -# Issue Tracker - -## Where is your Issue Tracker? - -While we prefer to be contacted directly: info@zzzprojects.com - -We understand some people prefer to have an online issue tracker to follow and comment their issues. - -You can create issue here: - -- [Issue Tracker](https://github.com/zzzprojects/Eval-SQL.NET/issues) diff --git a/docs2/pages/getting-started/_sidebar.md b/docs2/pages/getting-started/_sidebar.md deleted file mode 100644 index e5ab38d..0000000 --- a/docs2/pages/getting-started/_sidebar.md +++ /dev/null @@ -1,6 +0,0 @@ -- [Overview](overview.md) -- [Licensing](licensing.md) -- Tutorials - - [Arithmetic Expressions](arithmetic-expressions.md) - - [Split Text](split-text.md) - - [Reqular Expressions](regular-expressions.md) diff --git a/docs2/pages/getting-started/arithmetic-expressions.md b/docs2/pages/getting-started/arithmetic-expressions.md deleted file mode 100644 index 9cf64dc..0000000 --- a/docs2/pages/getting-started/arithmetic-expressions.md +++ /dev/null @@ -1,84 +0,0 @@ -# Arithmetic Expressions - -## Definition -An arithmetic expression is an expression that results in a numeric value. Try these examples to see how easy it is to resolve an arithmetic expression. - -Eval SQL.NET is a complete C# runtime compiler which honor operator precedence and parenthesis. - -### Using formula & variables - - - - -```csharp -DECLARE @x INT = 2 -DECLARE @y INT = 4 -DECLARE @z INT = 6 - -DECLARE @result INT - -SET @result = SQLNET::New('x*y+z') - .ValueInt('x', @x) - .ValueInt('y', @y) - .ValueInt('z', @z) - .EvalInt() - --- SELECT 14 -SELECT @result as Result -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1101' %} - -### Using formula & table variables - - -```csharp - -DECLARE @table TABLE ( X INT, Y INT, Z INT ) - -INSERT INTO @table -VALUES ( 2, 4, 6 ), - ( 3, 5, 7 ), - ( 4, 6, 8 ) - --- 14 --- 22 --- 32 -DECLARE @sqlnet SQLNET = SQLNET::New('x*y+z') -SELECT @sqlnet.ValueInt('x', X) - .ValueInt('y', Y) - .ValueInt('z', Z) - .EvalInt() as Result -FROM @table - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/e44cf/2' %} - -### Using table formula & variables - - -```csharp - -DECLARE @table TABLE - ( - Formula VARCHAR(50) , - X INT , - Y INT , - Z INT - ) - -INSERT INTO @table -VALUES ( 'x*y+z', 2, 4, 6 ), - ( 'x+y*z', 2, 4, 6 ), - ( '(x+y)*z', 2, 4, 6 ) - --- 14 --- 26 --- 36 -DECLARE @sqlnet SQLNET = SQLNET::New('') -SELECT @sqlnet.Code(Formula) - .ValueInt('x', X) - .ValueInt('y', Y) - .ValueInt('z', Z).EvalInt() as Result -FROM @table -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/ed8f7/1' %} diff --git a/docs2/pages/getting-started/licensing.md b/docs2/pages/getting-started/licensing.md deleted file mode 100644 index 376b325..0000000 --- a/docs2/pages/getting-started/licensing.md +++ /dev/null @@ -1,47 +0,0 @@ -# Licensing - -## Evaluation Period -- You can evaluate the library for several months before purchasing it. -- The latest version always contains a trial that expires at the **end of the month**. -- You can extend your trial for several months by downloading the latest version at the beginning of each month. - -## How can I purchase the library? -- You can purchase the library [here](/pricing) -- Upon purchase, you will receive an email with a license name and a license key. -- Make sure to check your **SPAM** folder if you don't receive the license within 24h. - -## How can I get a free license for a personal or academic purpose? -We don't offer free licenses. - -However, you can benefit from all the prime features for personal or academic projects for free by downloading the trial at the beginning of every month. - -## Setup License - -Upon purchase completion, an email will be sent with your license key information. - - -```csharp -CREATE PROCEDURE SQLNET_Configuration -AS -BEGIN - -- The procedure is automatically called when the server restart/assembly load - -- If the assembly is already loaded, a manual execution is required - -- EXEC SQLNET_Configuration - DECLARE @isValid BIT = SQLNET::AddLicense('[LicenseName]', '[LicenseKey]') - - -- SELECT 1 - SELECT @isValid -END -``` - -_We recommend to always re-install the Eval-SQL.NET Script after enabling the license to ensure everything works if the server restarts._ - -You can verify if the license is valid with the following command: - - -```csharp --- RETURN 1 if the license is valid. -SELECT SQLNET::AddLicense('[LicenseName]', '[LicenseKey]') - -``` - diff --git a/docs2/pages/getting-started/overview.md b/docs2/pages/getting-started/overview.md deleted file mode 100644 index 98ec783..0000000 --- a/docs2/pages/getting-started/overview.md +++ /dev/null @@ -1,178 +0,0 @@ -# Overview - -## Definition - -**Eval SQL.NET** is a library that allows to evaluate dynamically C# expression directly in T-SQL. You never used Eval SQL.NET? Don't worry, this step-by-step walkthrough will help you understand the library. - -Provide to your SQL Server all missing pieces like regular expression and dynamic arithmetic string evaluation. - - -```csharp --- SELECT 3 -SELECT SQLNET::New('x+y').ValueInt('x', 1).ValueInt('y', 2).EvalInt() as Result -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1105' %} - -## Installing -Download the SQLNET.zip - -### SQL Server 2017 - prerequisite -1. Open the script SQLNET-Cert.sql -2. Run the script -3. Continue the install with next step - -### SQL Server 2008 or higher -1. Open the script SQLNET-Install.sql -2. Replace '[DATABASE_NAME]' with your database name -3. Run the script - -### Note -- For EXTERNAL_ACCESS PERMISSION - - Uncomment "ALTER DATABASE [DATABASE_NAME] SET TRUSTWORTHY ON" - - Uncomment "WITH PERMISSION_SET = EXTERNAL_ACCESS" - - Comment "WITH PERMISSION_SET = SAFE" - -- For UNSAFE PERMISSION - - Uncomment "ALTER DATABASE [DATABASE_NAME] SET TRUSTWORTHY ON" - - Uncomment "WITH PERMISSION_SET = UNSAFE" - - Comment "WITH PERMISSION_SET = SAFE" - -## Requirements - -### Minimus Requirements - -- SQL Server 2012+ -- SAFE Permission (SQL CLR) - -### Find your solutions: - - - Dynamic Arithmetic Expression - - Dynamic Pivot Table - - Regular Expression - - String Interpolation - - Replace xp_cmdshell with DirectoryInfo & FileInfo - -## Performance & Scalability - -Performance tuning is one of the most important task for a DBA. Don't miss the chance to **dramatically improve query performance** by **300%** for simple expression and by more than **2000%** for complex code over User-Defined Function (UDF) and Table-Valued Function (TVF). - -| Methods | 1,000 rows | 10,000 rows | 100,000 rows | 1,000,000 rows | -| :-------------- | -------------: | -------------: | -------------: | -------------: | -| Eval-SQL.NET | 4 ms | 13 ms | 160 ms | 1,650 ms | -| fn_split (TVF) | 100 ms | 625 ms | 5,500 ms | 55,000 ms | - -*Benchmark to split string with delimiters in SQL* - -## Evaluate dynamic arithmetic/math expression in SQL - -Make the impossible now possible. Evaluate C# expression in SQL to overcome limitations. - -- Allow trusted users to create report field and filter -- Consume Web Service -- Replace text in template with String Interpolation - -### Dynamic Expression Example -```csharp --- CREATE test -DECLARE @table TABLE ( X INT, Y INT, Z INT ) -INSERT INTO @table VALUES ( 2, 4, 6 ), ( 3, 5, 7 ), ( 4, 6, 8 ) - --- Result: 14, 22, 32 -DECLARE @sqlnet SQLNET = SQLNET::New('x*y+z') -SELECT @sqlnet.ValueInt('x', X) - .ValueInt('y', Y) - .ValueInt('z', Z) - .EvalInt() as Result -FROM @table -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9bc9b/1' %} - -## Split text with delimiter - -Improve performance and capability for splitting text with an easy to use split function and LINQ expression - -- Split text with multiple delimiters -- Split text using a regular expression -- Include row index - - -### Split Text Example -```csharp --- CREATE test -DECLARE @t TABLE (Id INT , Input VARCHAR(MAX)) -INSERT INTO @t VALUES ( 1, '1, 2, 3; 4; 5' ), ( 2, '6;7,8;9,10' ) - --- SPLIT with many delimiters: ',' and ';' -DECLARE @sqlnet SQLNET = SQLNET::New('Regex.Split(input, ",|;")') - -SELECT * -FROM @t AS A - CROSS APPLY ( SELECT * - FROM dbo.SQLNET_EvalTVF_1(@sqlnet.ValueString('input', Input)) - ) AS B -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/98a4b/1' %} - -## Use regular expression in SQL Server - -Use Regex flexibility to overcome "LIKE" and "PATINDEX" limitations. - - - IsMatch - - Match - - Matches - - Replace - - Split - -### Regular Expression Example -```csharp -DECLARE @customer TABLE ( Email VARCHAR(255) ) - -INSERT INTO @customer -VALUES ( 'info@zzzprojects.com' ), - ( 'invalid.com' ), - ( 'sales@zzzprojects.com' ) - -DECLARE @valid_email SQLNET = SQLNET::New('Regex.IsMatch(email, -@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")') - --- SELECT 'invalid.com' -SELECT * FROM @customer WHERE @valid_email.ValueString('email', Email).EvalBit() = 0 -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/79508/1' %} - -## Replace xp_cmdshell with restrictive alternative - -Avoid enabling xp_cmdshell and compromising your SQL Server and use instead a more restrictive solution. - - - Impersonate Context - - Improve maintainability - - Improve readability - - Improve security - -### Example -```csharp --- REQUIRE EXTERNAL_ACCESS permission -DECLARE @sqlnet SQLNET = SQLNET::New(' -string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - -var dir = new DirectoryInfo(path); -return dir.GetFiles("*.*") - .Select(x => new { x.FullName, FileContent = File.ReadAllText(x.FullName) }) - .OrderBy(x => x.FullName)')*9* - .Impersonate() - --- SELECT FullName, FileContext FROM DesktopFiles ORDER BY Fullname -EXEC dbo.SQLNET_EvalResultSet @sqlnet -``` - -## Contribute - -The best way to contribute is by spreading the word about the library: - - - Blog it - - Comment it - - Fork it - - Star it - - Share it - -A **HUGE THANKS** for your help. diff --git a/docs2/pages/getting-started/regular-expressions.md b/docs2/pages/getting-started/regular-expressions.md deleted file mode 100644 index 9ccc54b..0000000 --- a/docs2/pages/getting-started/regular-expressions.md +++ /dev/null @@ -1,65 +0,0 @@ -# Reqular Expressions - -## Definition - -Use Regex flexibility to overcome "LIKE" and "PATINDEX" limitations. All Regex methods are also available such as; - - - IsMatch - - Match - - Matches - - Replace - - Split - -### Find rows with invalid emails - - -```csharp -DECLARE @regex VARCHAR(255) = '^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$' -DECLARE @customer TABLE ( Email VARCHAR(255) ) - -INSERT INTO @customer -VALUES ( 'info@zzzprojects.com' ), - ( 'invalid.com' ), - ( 'sales@zzzprojects.com' ) - --- "Regex" is optional, you can directly use IsMatch -DECLARE @valid_email SQLNET = SQLNET::New('Regex.IsMatch(email, pattern') - .ValueString('pattern', @regex).Root() - --- SELECT 'invalid.com' -SELECT * -FROM @customer -WHERE @valid_email.Val('email', Email).EvalBit() = 0 -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/58f2b/1' %} - -### Find and insert in a table, all websites from a text - - - -```csharp -DECLARE @websites TABLE ( Website VARCHAR(250) ) -DECLARE @regex VARCHAR(255) = '(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})' -DECLARE @post VARCHAR(MAX) = 'zzz ... zzz... http://zzzprojects.com ... zzzz -. zzz... https://github.com/zzzprojects/Eval-SQL.NET ... zzzz -. zzz... zzz... https://github.com/zzzprojects/Eval-Expression.NET ... zzzz -. zzz.... zzz.... zzz... https://github.com/zzzprojects/EntityFramework-Plus ... zzzz' - --- "Regex" is optional, you can directly use Matches -DECLARE @sqlnet SQLNET = SQLNET::New('Regex.Matches(input, pattern)') - .ValueString('input', @post) - .ValueString('pattern', @regex) - --- INSERT result in table -INSERT INTO @websites - SELECT CAST(Value_1 AS VARCHAR(250)) - FROM dbo.SQLNET_EvalTVF_1(@sqlnet) - --- SELECT result --- 'http://zzzprojects.com' --- 'https://github.com/zzzprojects/Eval-SQL.NET' --- 'https://github.com/zzzprojects/Eval-Expression.NET' --- 'https://github.com/zzzprojects/EntityFramework-Plus' -SELECT * FROM @websites -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1111' %} diff --git a/docs2/pages/getting-started/split-text.md b/docs2/pages/getting-started/split-text.md deleted file mode 100644 index 4313acf..0000000 --- a/docs2/pages/getting-started/split-text.md +++ /dev/null @@ -1,92 +0,0 @@ -# Split Text - -## Definition - -Improve performance and capability for splitting text with an easy to use split function and LINQ expression - -- Split text with multiple delimiters -- Split text using a regular expression -- Include row index - -You probably already had to use the fn_split function in the past to split a string with a delimiter. Hundreds of variances exist for this function which are limited to one delimiter. - -Using C# code and String.Split or Regex.Split, you are no longer limited and can even use LINQ methods! - -### Split using single delimiter - - -```csharp -DECLARE @s VARCHAR(MAX) = '1, 2;3, 4|5' - -DECLARE @sqlnet SQLNET = SQLNET::New('s.Split(",")').ValueString('s', @s) - --- 1 --- 2;3 --- 4|5 -SELECT * -FROM dbo.SQLNET_EvalTVF_1(@sqlnet) -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1112' %} - -### Split using multiple delimiters - - -```csharp - -DECLARE @s VARCHAR(MAX) = '1, 2;3, 4|5' - -DECLARE @sqlnet SQLNET = SQLNET::New('s.Split(",", ";", "|")').ValueString('s', @s) - --- 1 --- 2 --- 3 --- 4 --- 5 -SELECT * -FROM dbo.SQLNET_EvalTVF_1(@sqlnet) -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1117' %} - -### Split and Trim - - -```csharp - -DECLARE @s VARCHAR(MAX) = '1, 2;3, 4|5' - -DECLARE @sqlnet SQLNET = SQLNET::New('s.Split(",", ";", "|") - .Select(x => x.Trim())') - .ValueString('s', @s) - --- 1 --- 2 --- 3 --- 4 --- 5 -SELECT * -FROM dbo.SQLNET_EvalTVF_1(@sqlnet) -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1118' %} - -### Split and Trim with Regex - - - -```csharp - -DECLARE @s VARCHAR(MAX) = '1, 2;3, 4|5' - -DECLARE @sqlnet SQLNET = SQLNET::New('Regex.Split(s, ",|;|\|") - .Select(x => x.Trim())') - .ValueString('s', @s) - --- 1 --- 2 --- 3 --- 4 --- 5 -SELECT * -FROM dbo.SQLNET_EvalTVF_1(@sqlnet) - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1119' %} diff --git a/docs2/pages/getting-started/tutorial-introduction.md b/docs2/pages/getting-started/tutorial-introduction.md deleted file mode 100644 index 15ca09e..0000000 --- a/docs2/pages/getting-started/tutorial-introduction.md +++ /dev/null @@ -1,105 +0,0 @@ -# Introduction - -## Introduction -Entity Framework Extensions allows you to improve dramatically your save operations performance. - -It's easy to use, and easy to customize. - -## Bulk SaveChanges -The BulkSaveChanges works like SaveChanges but way faster. - -BulkSaveChanges uses Bulk Operations to save all entities in the Change Tracker efficiently instead of performing a database round-trip for every entity like SaveChanges does. - -BulkSaveChanges support everything: - -- Complex Types -- Inheritance (TPC, TPH, TPT) -- Relationship (One to One, One to Many, Many to Many) - -### Example - -```csharp -var ctx = new EntitiesContext(); - -ctx.Customers.AddRange(listToAdd); // add -ctx.Customers.RemoveRange(listToRemove); // remove -listToModify.ForEach(x => x.DateModified = DateTime.Now); // modify - -// Easy to use -ctx.BulkSaveChanges(); - -// Easy to customize -context.BulkSaveChanges(bulk => bulk.BatchSize = 100); -``` -### Performance Comparisons - -| Operations | 1,000 Entities | 2,000 Entities | 5,000 Entities | -| :-------------- | -------------: | -------------: | -------------: | -| SaveChanges | 1,000 ms | 2,000 ms | 5,000 ms | -| BulkSaveChanges | 90 ms | 150 ms | 350 ms | - -## Bulk Operations - -Bulk Operations method provide you some flexibility by allowing some customization and performance enhancement. - -All common methods are supported: - -- BulkInsert -- BulkUpdate -- BulkDelete -- BulkMerge (UPSERT operation) -- BulkSynchronize - -### Example - - -```csharp -var ctx = new EntitiesContext(); - -// Easy to use -ctx.BulkInsert(list); -ctx.BulkUpdate(list); -ctx.BulkDelete(list); -ctx.BulkMerge(list); - -// Easy to customize -context.BulkMerge(customers, - bulk => bulk.ColumnPrimaryKeyExpression = customer => customer.Code; }); -``` - -### Performance Comparisons - -| Operations | 1,000 Entities | 2,000 Entities | 5,000 Entities | -| :-------------- | -------------: | -------------: | -------------: | -| SaveChanges | 1,000 ms | 2,000 ms | 5,000 ms | -| BulkInsert | 6 ms | 10 ms | 15 ms | -| BulkUpdate | 50 ms | 55 ms | 65 ms | -| BulkDelete | 45 ms | 50 ms | 60 ms | -| BulkMerge | 65 ms | 80 ms | 110 ms | - -## FromQuery Operations - -FromQuery method allows you to execute UPDATE or DELETE statements without loading entities in the context. - -### Example - - -```csharp -// DELETE all customers that are inactive for more than two years -context.Customers - .Where(x => x.LastLogin < DateTime.Now.AddYears(-2)) - .DeleteFromQuery(); - -// UPDATE all customers that are inactive for more than two years -context.Customers - .Where(x => x.IsActive && x.LastLogin < DateTime.Now.AddYears(-2)) - .UpdateFromQuery(x => new Customer {IsActive = false}); -``` - -### Performance Comparisons - -| Operations | 1,000 Entities | 2,000 Entities | 5,000 Entities | -| :-------------- | -------------: | -------------: | -------------: | -| SaveChanges | 1,000 ms | 2,000 ms | 5,000 ms | -| DeleteFromQuery | 1 ms | 1 ms | 1 ms | -| UpdateFromQuery | 1 ms | 1 ms | 1 ms | diff --git a/docs2/pages/site/contact-us.md b/docs2/pages/site/contact-us.md deleted file mode 100644 index 265b559..0000000 --- a/docs2/pages/site/contact-us.md +++ /dev/null @@ -1,67 +0,0 @@ -# Contact Us - -
-
-
- -
-## Test our `Outstanding` Support -We usually answer within the next business day, hour, or minutes! - -We love to hear from you! - -## I have a question! What should I do? - -The best way to ask us questions. - -Contact us directly: - -- If you want a more personal answer -- If your question is not suited for Stack Overflow -- If your message contains private information - -## I think I've found a bug! What should I do? -The best way to report an issue is using our [Issues Tracker](https://github.com/zzzprojects/Eval-SQL.NET/issues){:target="_blank"} - -Make sure to include: -- Entity Framework Version -- Entity Framework Extensions Version -- Database Provider - -Contact us directly: - -- If you want a more personal answer -- If your question is not suited for the Issue Tracker -- If your message contains private information - -## I think I've found a new feature! What should I do? -The best way to request a new feature is using our [Issues Tracker](https://github.com/zzzprojects/Eval-SQL.NET/issues){:target="_blank"} - -Contact us directly: - -- If you want a more personal answer -- If your question is not suited for the Issue Tracker -- If your message contains private information - -## I think you forget about my request! What should I do? -Just contact us back again, and we will make sure we don't miss it again! -
-
-
-
-
-

Contact Info

-
-
-

General

- info@zzzprojects.com -

Sales

- sales@zzzprojects.com -

Issues & Features

- Issues Tracker -
-
-

-
-
-
diff --git a/docs2/pages/site/download.md b/docs2/pages/site/download.md deleted file mode 100644 index adcbe4c..0000000 --- a/docs2/pages/site/download.md +++ /dev/null @@ -1,91 +0,0 @@ -# Download - -
-
-
-
-
- -
- - - Download - -
Download Count:
-
- - - -
-
-
-
-
-
-
- -
-
---- -## FAQ - -### How can I extend my trial? -The latest version always contains a trial that expires at the end of the month. You can extend your trial for several months by downloading the latest version at the start of every month. - -### Why this library is not free and open source? -`ZZZ Projects` mission is focused on adding value to the `.NET Community` and supporting a lot of `free and open source` libraries. - -However, this mission cannot be successful without being able to pay our developers for the time they pass to support & develop features for free and paid libraries. - -#### Free Librairies - -- [Html Agility Pack](http://html-agility-pack.net/){:target="_blank"} -- [Entity Framework Plus](http://entityframework-plus.net/){:target="_blank"} -- [Entity Framework DynamicFilter](https://github.com/zzzprojects/EntityFramework.DynamicFilters){:target="_blank"} -- [RefactorThis.GraphDiff](https://github.com/zzzprojects/GraphDiff){:target="_blank"} -- [Extension Methods](https://github.com/zzzprojects/Z.ExtensionMethods){:target="_blank"} - -#### Website - -- [.NET Fiddle](https://dotnetfiddle.net/){:target="_blank"} -- [SQL Fiddle](http://sqlfiddle.com/){:target="_blank"} -- [NuGet Must Haves](http://nugetmusthaves.com/){:target="_blank"} -- [Dapper Tutorial](http://dapper-tutorial.net/){:target="_blank"} - -By contributing on paid libraries, you are also helping in keeping other libraries and website FREE. - -
-
- - diff --git a/docs2/pages/site/pricing.md b/docs2/pages/site/pricing.md deleted file mode 100644 index a3b3230..0000000 --- a/docs2/pages/site/pricing.md +++ /dev/null @@ -1,190 +0,0 @@ -# Purchase - - - - - -
- -
-
- -
- - - - -

Every month, a FREE trial of the PRO version is available to let you evaluate all its features without limitations.

-

Step 1 - Choose License

-
- - -
- -

Step 2 - Purchase

-
- -
-
- - -
* Read the FAQ below for alternative payment methods.
-
- -
- -
- -
-
-

What is included?

-
-
-

License

-
    -
  •  Unlimited Maximum Characters
  • -
  •  Commercial License
  • -
  •  Royalty-Free
  • -
  •  Support & Upgrades (1 year)
  • -
-
-
-
-
-
- -
-
---- -## FAQ - -### Which payment alternative methods are accepted? -We accept `PayPal`, `Cheque` and `Wire Transfer`. - -Please contact us for more information. - -Email: sales@zzzprojects.com - -### Do you accept reseller? -Yes, contact us if you are a reseller or seeking for a reseller. - -Email: sales@zzzprojects.com - -### What `2-4` developer seats mean? -It means that you can use the license for up 4 developers inside your team. - -The `5-9` developer seats mean you can use the license for up to 9 developers. - -You only pay for developer seats. You can use our library with an unlimited amount of application, environment, server, and client machine. - -### I need more than `19 seats`, what can I do? -Please contact us with the number of seats required. We offer some additional great discounts or enterprise license. - -Email: sales@zzzprojects.com - -### Is the license perpetual? -The product comes with a one year of support & upgrade but the license is perpetual (indefinitely use). So, you are not forced to renew every year or renew at all. - -Renewing comes with a lot of benefits such as a 25%/35%/50% discount on purchase price, discounted or free product, etc. - -### Why is this library not free and open source? -`ZZZ Projects` mission is focused on adding value to the `.NET Community` and supporting a lot of `free and open source` libraries. - -However, this mission cannot be successful without being able to pay our developers for the time they pass to support & develop features for free and paid libraries. - -#### Free Librairies - -- [Html Agility Pack](http://html-agility-pack.net/){:target="_blank"} -- [Entity Framework Plus](http://entityframework-plus.net/){:target="_blank"} -- [Entity Framework DynamicFilter](https://github.com/zzzprojects/EntityFramework.DynamicFilters){:target="_blank"} -- [RefactorThis.GraphDiff](https://github.com/zzzprojects/GraphDiff){:target="_blank"} -- [Extension Methods](https://github.com/zzzprojects/Z.ExtensionMethods){:target="_blank"} - -#### Website - -- [.NET Fiddle](https://dotnetfiddle.net/){:target="_blank"} -- [SQL Fiddle](http://sqlfiddle.com/){:target="_blank"} -- [NuGet Must Haves](http://nugetmusthaves.com/){:target="_blank"} -- [Dapper Tutorial](http://dapper-tutorial.net/){:target="_blank"} - -By contributing on paid libraries, you also help keeping other libraries and websites FREE. - -
-
- - - - diff --git a/docs2/pages/troubleshooting/_sidebar.md b/docs2/pages/troubleshooting/_sidebar.md deleted file mode 100644 index c941fa9..0000000 --- a/docs2/pages/troubleshooting/_sidebar.md +++ /dev/null @@ -1,5 +0,0 @@ -- [Trial Extend](trial.md) -- [SQL Server Eval](sql-server-eval.md) -- [SQL Server Function (UDF)](sql-server-function.md) -- [SQL Server File Operation](sql-server-file-operation.md) -- [SQL Server Regex](sql-server-regex.md) diff --git a/docs2/pages/troubleshooting/problems.md b/docs2/pages/troubleshooting/problems.md deleted file mode 100644 index d35dd60..0000000 --- a/docs2/pages/troubleshooting/problems.md +++ /dev/null @@ -1,8 +0,0 @@ -# Problems - -## Troubleshooting - -- [SQL Server Eval](sql-server-eval) -- [SQL Server Function (UDF)](/sql-server-function) -- [SQL Server File Operation](/sql-server-file-operation) -- [SQL Server Regex](/sql-server-regex) diff --git a/docs2/pages/troubleshooting/sql-server-eval.md b/docs2/pages/troubleshooting/sql-server-eval.md deleted file mode 100644 index af60cbb..0000000 --- a/docs2/pages/troubleshooting/sql-server-eval.md +++ /dev/null @@ -1,157 +0,0 @@ -# SQL Server Eval - -## Introduction - -How to evaluate an arithmetic expression in SQL Server is a common subject. There are several reasons why an "Eval" function like JavaScript could be useful in SQL such as evaluating custom report fields for a trusted user. - -Multiple partial solutions exist like using "EXEC(Transact-SQL)" which is limited, it cannot be used inside SELECT statement and lead to SQL Injection or using an homemade function which, most of time, fail supporting simple operator priorities and parenthesis. - -**SQL Eval.NET** is a complete solution which, not only lets you evaluate dynamic arithmetic expression, but lets you use the full C# language directly in T-SQL stored procedures, functions and triggers. - - -```csharp -DECLARE @tableFormula TABLE (Formula VARCHAR(255), X INT, Y INT, Z INT) - -INSERT INTO @tableFormula -VALUES ( 'x+y*z', 1, 2, 3 ), - ( '(x+y)*z', 1, 2, 3 ) - --- Select_0: 7 --- Select_1: 9 -SELECT SQLNET::New(Formula).ValueInt('x', X).ValueInt('y', Y).ValueInt('z', Z).EvalInt() as Result -FROM @tableFormula -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/2f73a/1' %} - -## SQL Eval - Arithmetic / Math Expression - -### Problem - -You need to evaluate a dynamic arithmetic operation specified by a trusted user or check a dynamic rule. - - - Dynamic report calculation field - - Dynamic report query filter - - Dynamic rule validation - -### Solution - -Eval SQL.NET supports all C# operators including operators precedence and parenthesis. - -Evaluating an expression is very fast and scalable. You can see performance 3-20x faster than User-Defined Function (UDF) and you can evaluate an expression as much as ONE MILLION times under a second. - - -```csharp -DECLARE @items TABLE (Quantity INT, Price MONEY) - -INSERT INTO @items -VALUES ( 2, 10 ), - ( 9, 6 ), - ( 15, 2 ), - ( 6, 0 ), - ( 84, 5 ) - -DECLARE @customColumn SQLNET = SQLNET::New('(quantity * price).ToString("$#.00")') -DECLARE @customFilter SQLNET = SQLNET::New('quantity > 3 && price > 0') - --- Select_0: 9, 6.00, $54.00 --- Select_1: 15, 2.00, $30.00 --- Select_2: 84, 5.00, $420.00 -SELECT * , - @customColumn.ValueInt('quantity', Quantity).Val('price', Price).EvalString() as Result -FROM @items -WHERE @customFilter.ValueInt('quantity', Quantity).Val('price', Price).EvalBit() = 1 -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/4ed27/1' %} - -## SQL Eval - Dynamic Expression - -### Problem - -You need to evaluate and execute a dynamic SQL expression which requires more than basic arithmetic operators. - - - if/else - - switch/case - - try/catch - -### Solution - -Eval SQL.NET is flexible and supports almost all C# keywords and features including: - - - Anonymous Type - - Generic Type - - Lambda Expression - - LINQ - - -```csharp -CREATE PROCEDURE [dbo].[Select_Switch] @x INT, @y INT, @z INT -AS - BEGIN - DECLARE @result INT - - SET @result = SQLNET::New(' -switch(x) -{ - case 1: return y + z; - case 2: return y - z; - case 3: return y * z; - default: return Convert.ToInt32(y ^^ z); // Pow -} - ').ValueInt('x', @x).ValueInt('y', @y).ValueInt('z', @z).EvalInt() - - SELECT @result as Result - END - -GO - --- RETURN 5 -EXEC Select_Switch 1, 2, 3 --- RETURN -1 -EXEC Select_Switch 2, 2, 3 --- RETURN 6 -EXEC Select_Switch 3, 2, 3 --- RETURN 8 -EXEC Select_Switch 4, 2, 3 -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/6b73d/2' %} - -## SQL Eval - Framework class Library - -### Problem - -You have a complex SQL and you know C# Syntax and C# Object could very easily solve this problem. - - - Regex - - DirectoryInfo / FileInfo - - String.Format - -### Solution - -Eval SQL.NET improves readability and maintainability over complex SQL. It supports all [.NET framework class libraries](https://msdn.microsoft.com/en-us/library/gg145045.aspx) (FCL) that are supported by [SQL CLR Framework Libraries](https://docs.microsoft.com/en-us/sql/relational-databases/clr-integration/database-objects/supported-net-framework-libraries). - - -```csharp --- CREATE test -DECLARE @t TABLE (Id INT , Input VARCHAR(MAX)) -INSERT INTO @t VALUES ( 1, '1, 2, 3; 4; 5' ), ( 2, '6;7,8;9,10' ) - --- SPLIT with many delimiters: ',' and ';' -DECLARE @sqlnet SQLNET = SQLNET::New('Regex.Split(input, ",|;")') - -SELECT * -FROM @t AS A - CROSS APPLY ( SELECT * - FROM dbo.SQLNET_EvalTVF_1(@sqlnet.ValueString('input', Input)) - ) AS B -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/ca1ba/2' %} - -## Conclusion - -Eval SQL.NET can be seen in SQL Server as the function "eval()" equivalent of JavaScript. Unlike common solutions limited to very simple math expressions, Eval SQL.NET features go way beyond: - - - Access to C# Operators - - Access to C# Keywords - - Access to C# Objects - -Getting better performance than User-Defined Function (UDF) and Table-Valued Function (TVF) is the Icing on the Cake! diff --git a/docs2/pages/troubleshooting/sql-server-file-operation.md b/docs2/pages/troubleshooting/sql-server-file-operation.md deleted file mode 100644 index 2fba3da..0000000 --- a/docs2/pages/troubleshooting/sql-server-file-operation.md +++ /dev/null @@ -1,139 +0,0 @@ -# SQL Server File Operation - -## Introduction - -Reading and writing files are basic requirements for importing/exporting data through SQL server jobs. The xp_cmdshell stored procedure is often used but not a lot of developers and DBA are comfortable coding with it. The syntax makes the code often ugly, hard to develop and expensive to maintain due to the lack of good documentation, flexibility and understanding. - -Some DBA don't recommend and even ban all use of the procedure xp_cmdshell from their environment due to security issues. - -Eval SQL.NET allows you to use C# features and objects such as FileInfo and DirectoryInfo directly in T-SQL and improves code readability. It's the safest alternative to replace xp_cmdshell to access external resources by letting impersonate the current user context. - -It's safe and easy to use. - - -```csharp --- REQUIRE EXTERNAL_ACCESS permission -DECLARE @sqlnet SQLNET = SQLNET::New(' -string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - -var dir = new DirectoryInfo(path); -return dir.GetFiles("*.*").Select(x => x.FullName).OrderBy(x => x).ToList();') - .Impersonate() - --- SELECT * FROM DesktopFiles ORDER BY File.Fullname -EXEC dbo.SQLNET_EvalResultSet @sqlnet -``` - -## SQL File Operation - Better flexibility - -### Problem - -You need to perform file operations but SQL xp_cmdshell limits you. - - - Return multiple column result back - - Passing parameter easier - - Impersonation - -### Solution - -Eval SQL.NET lets you use C# language and makes file operations very easy to perform. - - -```csharp - --- REQUIRE EXTERNAL_ACCESS permission -DECLARE @FileInfo TABLE - ( - FilePath VARCHAR(255) , - FileContent VARCHAR(MAX) - ) - -DECLARE @sqlnet SQLNET = SQLNET::New(' -string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - -var dir = new DirectoryInfo(path); -return dir.GetFiles("*.*").Select(x => new Tuple( - x.FullName, File.ReadAllText(x.FullName))) - .OrderBy(x => x).ToList();').Impersonate() - --- SELECT Path, FileText FROM DesktopFiles ORDER BY File.Fullname -INSERT INTO @FileInfo - EXEC dbo.SQLNET_EvalResultSet @sqlnet - -SELECT * -FROM @FileInfo - -``` - - -## SQL File Operation - Better maintainability - -### Problem - -You need to develop a file operation but you're afraid your code will be very hard to maintain. - -### Solution - -Eval SQL.NET improves the maintainability by letting you use well known and well documented C# objects such as DirectoryInfo and FileInfo. - - -```csharp --- REQUIRE EXTERNAL_ACCESS permission --- BACKUP all ".txt" files created before 3 days ago --- RETURN the number of files affected - -SELECT SQLNET::New(' -string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); -string backupPath = Path.Combine(path, "Backup_" + DateTime.Now.ToString("yyyyMMdd")); - -DirectoryInfo desktopDirectory = new DirectoryInfo(path); -DirectoryInfo backupDirectory = new DirectoryInfo(backupPath); - -// ENSURE the directory exists -backupDirectory.Create(); - -// GET file to backup -var backupFiles = desktopDirectory.GetFiles("*.txt") - .Where(x => x.CreationTime < DateTime.Now.AddDays(-3)) - .ToList(); - -// COPY files to backup directory -backupFiles.ForEach(x => x.CopyTo(x.FullName.Replace(path, backupPath))); - -// RETURN the number of affected files -return backupFiles.Count; -').Impersonate().EvalReadAccessInt() as Result - -``` - -## SQL File Operation - Better readability - -### Problem - -You need to perform file operations but the code soon becomes hard to understand and to change. - -### Solution - -Eval SQL.NET improves the readability by letting you use well known C# objects that wrap logic such as DirectoryInfo and FileInfo. - -## SQL File Operation - Better security - -### Problem - -You need to perform file operations but you don't want to enable xp_cmdshell in your SQL Server. - -### Solution - -Eval SQL.NET lets you perform file operations and change the security context to impersonate the credential of the one who runs the T-SQL statements. - -## Conclusion - -Eval SQL.NET grants you easy access to external resources through the C# language in T-SQL jobs and objects. - -It's a safe SQL alternative to xp_cmdshell and offers multiple advantages: - - - Improve Flexibility: Access to C# Language in SQL - - Improve Maintainability: FileInfo and DirectoryInfo are well-known/documented objects - - Improve Readability: C# is without a doubt easier to read than T-SQL for complex code - - Improve Security: Impersonate user context - diff --git a/docs2/pages/troubleshooting/sql-server-function.md b/docs2/pages/troubleshooting/sql-server-function.md deleted file mode 100644 index bd10f56..0000000 --- a/docs2/pages/troubleshooting/sql-server-function.md +++ /dev/null @@ -1,221 +0,0 @@ -# SQL Server Function (UDF) - -## Introduction - -User-Defined Function (UDF) encapsulates code to make it easier to reuse. However, there are some limitations and restrictions: - - - Cannot call stored procedure - - Cannot use try/catch - - Cannot modify table state - - Cannot run dynamic sql - -**Eval SQL.NET** enhances function capabilities and lets you use C# language directly in T-SQL functions to overcome their limitations and restrictions. - -## SQL Function - Better readability - -### Problem - -You need to write a function but the code soon becomes very complex and unmaintainable. - -### Solution - -Eval SQL.NET improves the readability and maintainability of complex functions by using well-known C# objects. - - -```csharp - -DECLARE @s VARCHAR(MAX) = '1, 2, 3; 4; 5' -DECLARE @sqlnet SQLNET = SQLNET::New('Regex.Split(input, ",|;")') - -SELECT * -FROM dbo.SQLNET_EvalTVF_1(@sqlnet.ValueString('input', @s)) - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1069' %} - -### Discussion - -For simple code, SQL syntax may work like a charm but when the code's complexity increases, less SQL is best suited for the job. It is designed to write queries, not to create long spaghetti code. We all have seen some functions that could have been written so much easier using another language like C#. - -One of the most common function is probably the fn_split function. It's not that hard to understand but thousands of variances exist and most of them are limited to only one delimiter. Using Eval SQL.NET, the fn_split function takes regular expression to split text which makes it very powerful. - - -## SQL Function - Error handling - -### Problem - -You need to handle an error with a TRY/CATCH but you receive the SQL error: - - - *Invalid use of a side-effecting operator 'BEGIN TRY' within a function.* - - *Invalid use of a side-effecting operator 'END TRY' within a function.* - - *Invalid use of a side-effecting operator 'BEGIN CATCH' within a function.* - - *Invalid use of a side-effecting operator 'END CATCH' within a function.* - -### Solution - -Eval SQL.NET makes it possible to handle errors with TRY/CATCH within a T-SQL function. - - -```csharp - -CREATE FUNCTION [dbo].[fn_try_catch] ( @x INT, @y INT ) -RETURNS INT -AS - BEGIN - RETURN SQLNET::New(' -try -{ - return x / y -} -catch (Exception ex) -{ - return x; -} -').ValueInt('x', @x).ValueInt('y', @y).EvalInt() - - END - -GO - --- SELECT 4 -SELECT dbo.fn_try_catch(4, 0) as Result - --- SELECT 2 -SELECT dbo.fn_try_catch(4, 2) as Result - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/d0cf1/1' %} - -## SQL Function - Call stored procedure - -### Problem - -You need to call a procedure within a function but you receive the SQL error: - - - *Only functions and some extended stored procedures can be executed from within a function.** - -### Solution - -Eval SQL.NET makes it possible to call stored procedures within a T-SQL function. - - -```csharp - -CREATE FUNCTION [dbo].[fn_CallProcedure] ( ) -RETURNS SQL_VARIANT -AS - BEGIN - RETURN SQLNET::New(' -defaultCommand.CommandText = "[PROCEDURE_NAME]"; -defaultCommand.CommandType = CommandType.StoredProcedure; -defaultCommand.Parameters.AddWithValue("name", name); -return defaultCommand.ExecuteScalar(); -').ValueString('name', 'zzz').Eval() - - END - -``` - -Using this feature is highly **NOT RECOMMENDED**. - -## SQL Function - Modify table state - -### Problem - -You need to insert, update or delete data within a function but you receive the SQL error: - -User-defined functions cannot be used to perform actions that modify the database state. - -### Solution - -Eval SQL.NET makes it possible to modify table state (insert, update and delete) within a T-SQL function. - - -```csharp - -CREATE FUNCTION [dbo].[fn_modify_table_state] - ( - @conn VARCHAR(8000) , - @sql VARCHAR(8000) - ) -RETURNS INT -AS - BEGIN - RETURN SQLNET::New(' -using(var connection = new SqlConnection(conn)) -{ - connection.Open(); - - using(var command = new SqlCommand(sql, connection)) - { - return command.ExecuteNonQuery(); - } -} -').ValueString('conn', @conn).ValueString('sql', @sql).EvalReadAccessInt() - - END - - GO - -DECLARE @conn VARCHAR(8000) = 'Data Source=XPS8700;Initial Catalog=SqlServerEval_Debug;Integrated Security=True' -DECLARE @sql VARCHAR(8000) = 'UPDATE [Table_1] SET Value = -1 WHERE Name = ''zzz''' - -DECLARE @rowAffecteds INT = dbo.fn_modify_table_state(@conn, @sql) - -``` - -Using this feature is highly **NOT RECOMMENDED**. - -## SQL Function - Run dynamic SQL - -### Problem - -You need to "EXECUTE" a string within a function but you receive the SQL error: - -Invalid use of a side-effecting operator 'EXECUTE STRING' within a function. - -### Solution - -Eval SQL.NET makes it possible to run "EXECUTE" and evaluate dynamic expressions within a T-SQL function. - - -```csharp - -CREATE FUNCTION [dbo].[fn_Exec_Count] ( @sql VARCHAR(8000) ) -RETURNS INT -AS - BEGIN - RETURN SQLNET::New(' -var dt = new DataTable(); -var s = "Data Source=XPS8700;Initial Catalog=SqlServer_Eval;Integrated Security=True"; -using(var connection = new SqlConnection(s)) -{ - connection.Open(); - - using(var command = new SqlCommand()) - { - command.Connection = connection; - command.CommandText = "EXEC(''" + sql + "'')"; - dt.Load(command.ExecuteReader()); - return dt.Rows.Count; - } -} -').ValueString('sql', @sql).EvalReadAccessInt() - - END - -GO - --- SELECT 2 -SELECT dbo.fn_Exec_Count('SELECT 1 UNION SELECT 2') as Result - -``` - -Using this feature is highly **NOT RECOMMENDED**. - -## Conclusion - -Eval SQL.NET improves the readability and make the code easier to develop and maintain with C# syntax over complex SQL code. - -Even if you are now allowed to make some table modifications, we don't recommend using this feature and use a stored procedure instead. Make sure you use the right tool for the right job. - diff --git a/docs2/pages/troubleshooting/sql-server-regex.md b/docs2/pages/troubleshooting/sql-server-regex.md deleted file mode 100644 index 7339cf7..0000000 --- a/docs2/pages/troubleshooting/sql-server-regex.md +++ /dev/null @@ -1,228 +0,0 @@ -# SQL Server Regex - -## Introduction - -Finding or replacing text in SQL is a very frequent scenario. "LIKE" and "PATINDEX" are often used but, unfortunately, are not close to be as powerful and offering the same possibilities as regular expression (Regex) does. - -Eval SQL.NET lets you use and exploit fully C# regular expression features directly in T-SQL stored procedures, functions and triggers. It's possible to use regex in SQL search condition and select statement. - - -```csharp - -DECLARE @customer TABLE ( Email VARCHAR(255) ) - -INSERT INTO @customer -VALUES ( 'info@zzzprojects.com' ), - ( 'invalid.com' ), - ( 'sales@zzzprojects.com' ) - -DECLARE @valid_email SQLNET = SQLNET::New('Regex.IsMatch(email, -@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")') - --- SELECT 'invalid.com' -SELECT * FROM @customer WHERE @valid_email.Val('email', Email).EvalBit() = 0 - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/213f9/1' %} - - -## SQL Regex - IsMatch - -### Problem - -You need to perform a rule validation or search with a condition to find valid/invalid rows but "LIKE" and "PATINDEX" limitations don't cover your requirements: - - - Find customer with invalid email - - Find customer with invalid phone - - Find customer with invalid website - - Validate password - -### Solution - -SQL Regex IsMatch indicates whether the regular expression finds a match in the string or not. - - -```csharp - -DECLARE @customer TABLE ( Email VARCHAR(255) ) - -INSERT INTO @customer -VALUES ( 'info@zzzprojects.com' ), - ( 'invalid.com' ), - ( 'sales@zzzprojects.com' ) - -DECLARE @valid_email SQLNET = SQLNET::New('Regex.IsMatch(email, -@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")') - --- SELECT 'invalid.com' -SELECT * FROM @customer WHERE @valid_email.ValueString('email', Email).EvalBit() = 0 - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/213f9/2' %} - -## SQL Regex - Match - -### Problem - -You need to extract the first occurrence from a string such as user profile description: - - - Extract the first email - - Extract the first phone - - Extract the first website - -### Solution - -SQL Regex Match searches in a string for the first occurrence of the regular expression and returns the match. - - -```csharp - -DECLARE @shortDescription VARCHAR(800) = 'zzz ... zzz... http://zzzprojects.com ... zzzz' -DECLARE @website VARCHAR(255) = NULL; - -IF ( @website IS NULL ) - BEGIN - -- IF user has not specified a website, try to get it from the short description - SET @website = SQLNET::New(' -string value = Regex.Match(shortDescription, -"(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})").Value; - -return value != "" ? value : null; -') - .ValueString('shortDescription', @shortDescription) - .EvalString(); - END - --- return 'http://zzzprojects.com' -SELECT @website - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1012' %} - - -## SQL Regex - Matches - -### Problem - -You need to extract all occurrences from a string such as blog post: - - - Extract all emails - - Extract all phones - - Extract all websites - -### Solution - -SQL Regex Matches searches in the string for all occurrences of the regular expression and returns all the matches. - - -```csharp - -DECLARE @post VARCHAR(800) = 'zzz ... zzz... http://zzzprojects.com ... zzzz -. zzz... https://github.com/zzzprojects/Eval-SQL.NET ... zzzz -. zzz... zzz... https://github.com/zzzprojects/Eval-Expression.NET ... zzzz -. zzz.... zzz.... zzz... https://github.com/zzzprojects/EntityFramework-Plus ... zzzz -' - -DECLARE @websites TABLE ( Website VARCHAR(250) ) - -DECLARE @sqlnet_matchs SQLNET = SQLNET::New(' -var matches = Regex.Matches(post, -"(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})"); - -var list = new List(); -foreach(Match match in matches) -{ - list.Add(match.Value); -} - -return list; -').ValueString('post', @post) - - -INSERT INTO @websites - SELECT CAST(Value_1 AS VARCHAR(250)) - FROM dbo.SQLNET_EvalTVF_1(@sqlnet_matchs) - --- SELECT 'http://zzzprojects.com' --- SELECT 'https://github.com/zzzprojects/Eval-SQL.NET' --- SELECT 'https://github.com/zzzprojects/Eval-Expression.NET' --- SELECT 'https://github.com/zzzprojects/EntityFramework-Plus' -SELECT * FROM @websites - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/d48e7/3' %} - -## SQL Regex - Replace - -### Problem - -You need to convert, remove or substitute a text with a specific format: - - - Convert plain url to html link - - Remove phones - - Substitute name in text template - -### Solution - -SQL Regex Replace searches for strings that match a regular expression pattern and replaces a value with a replacement string. - - -```csharp - -DECLARE @post VARCHAR(800) = 'website: http://zzzprojects.com' - -SET @post = SQLNET::New(' -var input = post; -var pattern = @"(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})"; -var replacement = "$1"; - -return Regex.Replace(input, pattern, replacement); -').ValueString('post', @post).EvalString() - --- SELECT 'website: http://zzzprojects.com' -SELECT @post - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/b308e/1' %} - -## SQL Regex - Split - -### Problem - -You need to split a string but the traditional "fn_split" method is limited and doesn't cover your scenario: - - - Use multiple delimiter - - Keep the delimiter in value - - Split the first X occurrences - -### Solution - -SQL Regex Split lets you split a string into an array of substrings using a regular expression. - - -```csharp - -DECLARE @s VARCHAR(MAX) = '1, 2, 3; 4; 5' -DECLARE @sqlnet SQLNET = SQLNET::New('Regex.Split(input, ",|;")') - -SELECT * -FROM dbo.SQLNET_EvalTVF_1(@sqlnet.ValueString('input', @s)) - -``` -{% include component-try-it.html href='http://sqlfiddle.com/#!18/9eecb/1069' %} - -### Discussion - -If you are currently using an fn_split User-Defined Functions (UDF), this benchmark will probably make you change your mind! - -|Methods |1,000 rows |10,000 rows |100,000 rows |1,000,000 rows | -|:--------- |:--------- |:------------- |:------------- |:------------- | -|Eval SQL.NET |4 ms |13 ms |160 ms |1,650 ms| -fn_split (TVF) |100 ms |625 ms |5,500 ms |55,000 ms| - -## Conclusion - -Eval SQL.NET offers all advanced C# regular expression features in T-SQL statements and search conditions. Even more, you can use C# syntax to return from SQL what you really want and not only the regex result. - -While it should never replace scenarios where pure SQL operators/functions such as "LIKE" and "PATINDEX" are sufficient, Eval SQL.NET will help you easily cover all unsupported ones. - diff --git a/docs2/pages/troubleshooting/trial.md b/docs2/pages/troubleshooting/trial.md deleted file mode 100644 index 93478b9..0000000 --- a/docs2/pages/troubleshooting/trial.md +++ /dev/null @@ -1,18 +0,0 @@ -# Trial - -Oops! Your trial has expired. - -### How can I extend my trial? -You can extend your trial for several months by downloading the latest version at the beginning of every month. - - - - Download - - - -### Where is the free version? -There is no free version. - -### How can I purchase a license? -A perpetual license can be purchased from here: Buy \ No newline at end of file From d1196151594d1beb761e5f1d1d639cf8ef875250 Mon Sep 17 00:00:00 2001 From: Jonathan Magnan Date: Wed, 20 Mar 2024 16:47:28 -0400 Subject: [PATCH 118/118] Update README.md --- README.md | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index f2c12d4..5d11721 100644 --- a/README.md +++ b/README.md @@ -148,12 +148,17 @@ A **HUGE THANKS** for your help. ## More Projects -- [EntityFramework Extensions](https://entityframework-extensions.net/) -- [Dapper Plus](https://dapper-plus.net/) -- [Bulk Operations](https://bulk-operations.net/) -- [C# Eval Expression](https://eval-expression.net/) -- and much more! - -To view all our free and paid projects, visit our [website](https://zzzprojects.com/). - -Contact our outstanding **[customer support](https://eval-sql.net/contact-us)** for any request. We usually answer within the next day, hour, or minutes! +- Projects: + - [EntityFramework Extensions](https://entityframework-extensions.net/) + - [Dapper Plus](https://dapper-plus.net/) + - [C# Eval Expression](https://eval-expression.net/) +- Learn Websites + - [Learn EF Core](https://www.learnentityframeworkcore.com/) + - [Learn Dapper](https://www.learndapper.com/) +- Online Tools: + - [.NET Fiddle](https://dotnetfiddle.net/) + - [SQL Fiddle](https://sqlfiddle.com/) + - [ZZZ Code AI](https://zzzcode.ai/) +- and much more! + +To view all our free and paid projects, visit our website [ZZZ Projects](https://zzzprojects.com/).