From c6e7eae394e0907947da267c046fceca96b59d5e Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 13 Dec 2017 23:36:22 +0100 Subject: [PATCH 001/106] :sparkles: implemented JSON Merge Patch (RFC 7396) SQLite's json1 extension (https://www.sqlite.org/json1.html) supports JSON Merge Patch (https://tools.ietf.org/html/rfc7396). As the implementation is trivial and we already support JSON Patch, I think this could be a nice extension to the library. --- doc/examples/merge_patch.cpp | 40 +++++ doc/examples/merge_patch.link | 1 + doc/examples/merge_patch.output | 11 ++ src/json.hpp | 79 ++++++++++ test/Makefile | 1 + test/src/unit-merge_patch.cpp | 261 ++++++++++++++++++++++++++++++++ 6 files changed, 393 insertions(+) create mode 100644 doc/examples/merge_patch.cpp create mode 100644 doc/examples/merge_patch.link create mode 100644 doc/examples/merge_patch.output create mode 100644 test/src/unit-merge_patch.cpp diff --git a/doc/examples/merge_patch.cpp b/doc/examples/merge_patch.cpp new file mode 100644 index 00000000..77a5f2a2 --- /dev/null +++ b/doc/examples/merge_patch.cpp @@ -0,0 +1,40 @@ +#include +#include "json.hpp" +#include // for std::setw + +using json = nlohmann::json; + +int main() +{ + // the original document + json document = R"({ + "title": "Goodbye!", + "author": { + "givenName": "John", + "familyName": "Doe" + }, + "tags": [ + "example", + "sample" + ], + "content": "This will be unchanged" + })"_json; + + // the patch + json patch = R"({ + "title": "Hello!", + "phoneNumber": "+01-123-456-7890", + "author": { + "familyName": null + }, + "tags": [ + "example" + ] + })"_json; + + // apply the patch + document.merge_patch(patch); + + // output original and patched document + std::cout << std::setw(4) << document << std::endl; +} diff --git a/doc/examples/merge_patch.link b/doc/examples/merge_patch.link new file mode 100644 index 00000000..7a6cbbac --- /dev/null +++ b/doc/examples/merge_patch.link @@ -0,0 +1 @@ +online \ No newline at end of file diff --git a/doc/examples/merge_patch.output b/doc/examples/merge_patch.output new file mode 100644 index 00000000..96adb7b3 --- /dev/null +++ b/doc/examples/merge_patch.output @@ -0,0 +1,11 @@ +{ + "author": { + "givenName": "John" + }, + "content": "This will be unchanged", + "phoneNumber": "+01-123-456-7890", + "tags": [ + "example" + ], + "title": "Hello!" +} diff --git a/src/json.hpp b/src/json.hpp index b0c85dc1..a08cace6 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -14165,6 +14165,7 @@ class basic_json diff for two JSON values.,diff} @sa @ref patch -- apply a JSON patch + @sa @ref merge_patch -- apply a JSON Merge Patch @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) @@ -14296,6 +14297,84 @@ class basic_json } /// @} + + //////////////////////////////// + // JSON Merge Patch functions // + //////////////////////////////// + + /// @name JSON Merge Patch functions + /// @{ + + /*! + @brief applies a JSON Merge Patch + + The merge patch format is primarily intended for use with the HTTP PATCH + method as a means of describing a set of modifications to a target + resource's content. This function applies a merge patch to the current + JSON value. + + The function implements the following algorithm from Section 2 of + [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396): + + ``` + define MergePatch(Target, Patch): + if Patch is an Object: + if Target is not an Object: + Target = {} // Ignore the contents and set it to an empty Object + for each Name/Value pair in Patch: + if Value is null: + if Name exists in Target: + remove the Name/Value pair from Target + else: + Target[Name] = MergePatch(Target[Name], Value) + return Target + else: + return Patch + ``` + + Thereby, `Target` is the current object; that is, the patch is applied to + the current value. + + @param[in] patch the patch to apply + + @complexity Linear in the lengths of @a patch. + + @liveexample{The following code shows how a JSON Merge Patch is applied to + a JSON document.,merge_patch} + + @sa @ref patch -- apply a JSON patch + @sa [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396) + + @since version 3.0.0 + */ + void merge_patch(const basic_json& patch) + { + if (patch.is_object()) + { + if (not is_object()) + { + *this = object(); + } + for (auto it = patch.begin(); it != patch.end(); ++it) + { + if (it.value().is_null()) + { + erase(it.key()); + } + else + { + operator[](it.key()).merge_patch(it.value()); + } + } + } + else + { + *this = patch; + } + } + + /// @} + }; ///////////// diff --git a/test/Makefile b/test/Makefile index a170acb9..b293c2b6 100644 --- a/test/Makefile +++ b/test/Makefile @@ -28,6 +28,7 @@ SOURCES = src/unit.cpp \ src/unit-iterator_wrapper.cpp \ src/unit-iterators1.cpp \ src/unit-iterators2.cpp \ + src/unit-merge_patch.cpp \ src/unit-json_patch.cpp \ src/unit-json_pointer.cpp \ src/unit-meta.cpp \ diff --git a/test/src/unit-merge_patch.cpp b/test/src/unit-merge_patch.cpp new file mode 100644 index 00000000..79bbaa2a --- /dev/null +++ b/test/src/unit-merge_patch.cpp @@ -0,0 +1,261 @@ +/* + __ _____ _____ _____ + __| | __| | | | JSON for Modern C++ (test suite) +| | |__ | | | | | | version 2.1.1 +|_____|_____|_____|_|___| https://github.com/nlohmann/json + +Licensed under the MIT License . +Copyright (c) 2013-2017 Niels Lohmann . + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include "catch.hpp" + +#include "json.hpp" +using nlohmann::json; + +TEST_CASE("JSON Merge Patch") +{ + SECTION("examples from RFC 7396") + { + SECTION("Section 1") + { + json document = R"({ + "a": "b", + "c": { + "d": "e", + "f": "g" + } + })"_json; + + json patch = R"({ + "a": "z", + "c": { + "f": null + } + })"_json; + + json expected = R"({ + "a": "z", + "c": { + "d": "e" + } + })"_json; + + document.merge_patch(patch); + CHECK(document == expected); + } + + SECTION("Section 3") + { + json document = R"({ + "title": "Goodbye!", + "author": { + "givenName": "John", + "familyName": "Doe" + }, + "tags": [ + "example", + "sample" + ], + "content": "This will be unchanged" + })"_json; + + json patch = R"({ + "title": "Hello!", + "phoneNumber": "+01-123-456-7890", + "author": { + "familyName": null + }, + "tags": [ + "example" + ] + })"_json; + + json expected = R"({ + "title": "Hello!", + "author": { + "givenName": "John" + }, + "tags": [ + "example" + ], + "content": "This will be unchanged", + "phoneNumber": "+01-123-456-7890" + })"_json; + + document.merge_patch(patch); + CHECK(document == expected); + } + + SECTION("Appendix A") + { + SECTION("Example 1") + { + json original = R"({"a":"b"})"_json; + json patch = R"({"a":"c"})"_json; + json result = R"({"a":"c"})"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 2") + { + json original = R"({"a":"b"})"_json; + json patch = R"({"b":"c"})"_json; + json result = R"({"a":"b", "b":"c"})"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 3") + { + json original = R"({"a":"b"})"_json; + json patch = R"({"a":null})"_json; + json result = R"({})"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 4") + { + json original = R"({"a":"b","b":"c"})"_json; + json patch = R"({"a":null})"_json; + json result = R"({"b":"c"})"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 5") + { + json original = R"({"a":["b"]})"_json; + json patch = R"({"a":"c"})"_json; + json result = R"({"a":"c"})"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 6") + { + json original = R"({"a":"c"})"_json; + json patch = R"({"a":["b"]})"_json; + json result = R"({"a":["b"]})"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 7") + { + json original = R"({"a":{"b": "c"}})"_json; + json patch = R"({"a":{"b":"d","c":null}})"_json; + json result = R"({"a": {"b": "d"}})"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 8") + { + json original = R"({"a":[{"b":"c"}]})"_json; + json patch = R"({"a":[1]})"_json; + json result = R"({"a":[1]})"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 9") + { + json original = R"(["a","b"])"_json; + json patch = R"(["c","d"])"_json; + json result = R"(["c","d"])"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 10") + { + json original = R"({"a":"b"})"_json; + json patch = R"(["c"])"_json; + json result = R"(["c"])"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 11") + { + json original = R"({"a":"foo"})"_json; + json patch = R"(null)"_json; + json result = R"(null)"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 12") + { + json original = R"({"a":"foo"})"_json; + json patch = R"("bar")"_json; + json result = R"("bar")"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 13") + { + json original = R"({"e":null})"_json; + json patch = R"({"a":1})"_json; + json result = R"({"e":null,"a":1})"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 14") + { + json original = R"([1,2])"_json; + json patch = R"({"a":"b","c":null})"_json; + json result = R"({"a":"b"})"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + + SECTION("Example 15") + { + json original = R"({})"_json; + json patch = R"({"a":{"bb":{"ccc":null}}})"_json; + json result = R"({"a":{"bb":{}}})"_json; + + original.merge_patch(patch); + CHECK(original == result); + } + } + } +} From ba2316372abc57f7981fafe1833020102e66d838 Mon Sep 17 00:00:00 2001 From: Tobias Hermann Date: Wed, 3 Jan 2018 11:06:32 +0100 Subject: [PATCH 002/106] fix link to the documentation of the emplace function --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 256409e3..d64bbe1d 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ If you are using [vcpkg](https://github.com/Microsoft/vcpkg/) on your project fo ## Examples -Beside the examples below, you may want to check the [documentation](https://nlohmann.github.io/json/) where each function contains a separate code example (e.g., check out [`emplace()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a602f275f0359ab181221384989810604.html#a602f275f0359ab181221384989810604)). All [example files](https://github.com/nlohmann/json/tree/develop/doc/examples) can be compiled and executed on their own (e.g., file [emplace.cpp](https://github.com/nlohmann/json/blob/develop/doc/examples/emplace.cpp)). +Beside the examples below, you may want to check the [documentation](https://nlohmann.github.io/json/) where each function contains a separate code example (e.g., check out [`emplace()`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a5338e282d1d02bed389d852dd670d98d.html#a5338e282d1d02bed389d852dd670d98d)). All [example files](https://github.com/nlohmann/json/tree/develop/doc/examples) can be compiled and executed on their own (e.g., file [emplace.cpp](https://github.com/nlohmann/json/blob/develop/doc/examples/emplace.cpp)). ### JSON as first-class data type From 96b40b27a50c26d89527b7c74eb702667ff24472 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Fri, 5 Jan 2018 18:33:42 +0100 Subject: [PATCH 003/106] :memo: fixed Doxygen warnings Apparently, using "\n" inside an alias is an error now, but "^^" basically means the same. --- doc/Doxyfile | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/doc/Doxyfile b/doc/Doxyfile index 878ee2ad..4c64dd6f 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -1,4 +1,4 @@ -# Doxyfile 1.8.14 +# Doxyfile 1.8.15 #--------------------------------------------------------------------------- # Project related configuration options @@ -12,6 +12,7 @@ OUTPUT_DIRECTORY = . CREATE_SUBDIRS = NO ALLOW_UNICODE_NAMES = NO OUTPUT_LANGUAGE = English +OUTPUT_TEXT_DIRECTION = None BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = NO ABBREVIATE_BRIEF = @@ -27,11 +28,11 @@ MULTILINE_CPP_IS_BRIEF = NO INHERIT_DOCS = YES SEPARATE_MEMBER_PAGES = YES TAB_SIZE = 4 -ALIASES = "complexity=@par Complexity\n" \ - "liveexample{2}=@par Example\n \1 \n @includelineno \2.cpp \n Output (play with this example @htmlinclude \2.link):\n @verbinclude \2.output \n The example code above can be translated with @verbatim g++ -std=c++11 -Isrc doc/examples/\2.cpp -o \2 @endverbatim" \ - "requirement=@par Requirements\n" \ - "exceptionsafety=@par Exception safety\n" \ - "iterators=@par Iterator validity\n" +ALIASES = "complexity=@par Complexity^^" \ + "liveexample{2}=@par Example^^ \1 ^^ @includelineno \2.cpp \n Output (play with this example @htmlinclude \2.link):^^ @verbinclude \2.output ^^ The example code above can be translated with @verbatim g++ -std=c++11 -Isrc doc/examples/\2.cpp -o \2 @endverbatim" \ + "requirement=@par Requirements^^" \ + "exceptionsafety=@par Exception safety^^" \ + "iterators=@par Iterator validity^^" TCL_SUBST = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO @@ -107,7 +108,8 @@ WARN_LOGFILE = # Configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../src/json.hpp \ - index.md faq.md + index.md \ + faq.md INPUT_ENCODING = UTF-8 FILE_PATTERNS = RECURSIVE = NO @@ -138,6 +140,7 @@ USE_HTAGS = NO VERBATIM_HEADERS = NO CLANG_ASSISTED_PARSING = YES CLANG_OPTIONS = -std=c++11 +CLANG_COMPILATION_DATABASE_PATH = 0 #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- From 78f8f837e6bd8fb0c3537bd08d0595505045290a Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Fri, 5 Jan 2018 18:34:10 +0100 Subject: [PATCH 004/106] added items() function #874 --- doc/examples/items.cpp | 23 + doc/examples/items.link | 1 + doc/examples/items.output | 7 + src/json.hpp | 62 +++ test/src/unit-iterator_wrapper.cpp | 697 +++++++++++++++++++++++++++++ 5 files changed, 790 insertions(+) create mode 100644 doc/examples/items.cpp create mode 100644 doc/examples/items.link create mode 100644 doc/examples/items.output diff --git a/doc/examples/items.cpp b/doc/examples/items.cpp new file mode 100644 index 00000000..b2224d60 --- /dev/null +++ b/doc/examples/items.cpp @@ -0,0 +1,23 @@ +#include +#include "json.hpp" + +using json = nlohmann::json; + +int main() +{ + // create JSON values + json j_object = {{"one", 1}, {"two", 2}}; + json j_array = {1, 2, 4, 8, 16}; + + // example for an object + for (auto& x : j_object.items()) + { + std::cout << "key: " << x.key() << ", value: " << x.value() << '\n'; + } + + // example for an array + for (auto& x : j_array.items()) + { + std::cout << "key: " << x.key() << ", value: " << x.value() << '\n'; + } +} diff --git a/doc/examples/items.link b/doc/examples/items.link new file mode 100644 index 00000000..0b74c5b3 --- /dev/null +++ b/doc/examples/items.link @@ -0,0 +1 @@ +online \ No newline at end of file diff --git a/doc/examples/items.output b/doc/examples/items.output new file mode 100644 index 00000000..89b09f52 --- /dev/null +++ b/doc/examples/items.output @@ -0,0 +1,7 @@ +key: one, value: 1 +key: two, value: 2 +key: 0, value: 1 +key: 1, value: 2 +key: 2, value: 4 +key: 3, value: 8 +key: 4, value: 16 diff --git a/src/json.hpp b/src/json.hpp index 5b0b0ea5..a12fcbe3 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -11375,6 +11375,68 @@ class basic_json return iteration_proxy(ref); } + /*! + @brief helper to access iterator member functions in range-based for + + This function allows to access @ref iterator::key() and @ref + iterator::value() during range-based for loops. In these loops, a + reference to the JSON values is returned, so there is no access to the + underlying iterator. + + For loop without `items()` function: + + @code{cpp} + for (auto it = j_object.begin(); it != j_object.end(); ++it) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + Range-based for loop without `items()` function: + + @code{cpp} + for (auto it : j_object) + { + // "it" is of type json::reference and has no key() member + std::cout << "value: " << it << '\n'; + } + @endcode + + Range-based for loop with `items()` function: + + @code{cpp} + for (auto it : j_object.items()) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + @note When iterating over an array, `key()` will return the index of the + element as string (see example). + + @return iteration proxy object wrapping @a ref with an interface to use in + range-based for loops + + @liveexample{The following code shows how the function is used.,items} + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + */ + iteration_proxy items() + { + return iteration_proxy(*this); + } + + /*! + @copydoc items() + */ + iteration_proxy items() const + { + return iteration_proxy(*this); + } + /// @} diff --git a/test/src/unit-iterator_wrapper.cpp b/test/src/unit-iterator_wrapper.cpp index e16ce16d..4f5bd15d 100644 --- a/test/src/unit-iterator_wrapper.cpp +++ b/test/src/unit-iterator_wrapper.cpp @@ -727,3 +727,700 @@ TEST_CASE("iterator_wrapper") } } } + +TEST_CASE("items()") +{ + SECTION("object") + { + SECTION("value") + { + json j = {{"A", 1}, {"B", 2}}; + int counter = 1; + + for (auto i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "A"); + CHECK(i.value() == json(1)); + break; + } + + case 2: + { + CHECK(i.key() == "B"); + CHECK(i.value() == json(2)); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + + SECTION("reference") + { + json j = {{"A", 1}, {"B", 2}}; + int counter = 1; + + for (auto& i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "A"); + CHECK(i.value() == json(1)); + + // change the value + i.value() = json(11); + CHECK(i.value() == json(11)); + break; + } + + case 2: + { + CHECK(i.key() == "B"); + CHECK(i.value() == json(2)); + + // change the value + i.value() = json(22); + CHECK(i.value() == json(22)); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + + // check if values where changed + CHECK(j == json({{"A", 11}, {"B", 22}})); + } + + SECTION("const value") + { + json j = {{"A", 1}, {"B", 2}}; + int counter = 1; + + for (const auto i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "A"); + CHECK(i.value() == json(1)); + break; + } + + case 2: + { + CHECK(i.key() == "B"); + CHECK(i.value() == json(2)); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + + SECTION("const reference") + { + json j = {{"A", 1}, {"B", 2}}; + int counter = 1; + + for (const auto& i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "A"); + CHECK(i.value() == json(1)); + break; + } + + case 2: + { + CHECK(i.key() == "B"); + CHECK(i.value() == json(2)); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + } + + SECTION("const object") + { + SECTION("value") + { + const json j = {{"A", 1}, {"B", 2}}; + int counter = 1; + + for (auto i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "A"); + CHECK(i.value() == json(1)); + break; + } + + case 2: + { + CHECK(i.key() == "B"); + CHECK(i.value() == json(2)); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + + SECTION("reference") + { + const json j = {{"A", 1}, {"B", 2}}; + int counter = 1; + + for (auto& i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "A"); + CHECK(i.value() == json(1)); + break; + } + + case 2: + { + CHECK(i.key() == "B"); + CHECK(i.value() == json(2)); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + + SECTION("const value") + { + const json j = {{"A", 1}, {"B", 2}}; + int counter = 1; + + for (const auto i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "A"); + CHECK(i.value() == json(1)); + break; + } + + case 2: + { + CHECK(i.key() == "B"); + CHECK(i.value() == json(2)); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + + SECTION("const reference") + { + const json j = {{"A", 1}, {"B", 2}}; + int counter = 1; + + for (const auto& i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "A"); + CHECK(i.value() == json(1)); + break; + } + + case 2: + { + CHECK(i.key() == "B"); + CHECK(i.value() == json(2)); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + } + + SECTION("array") + { + SECTION("value") + { + json j = {"A", "B"}; + int counter = 1; + + for (auto i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "0"); + CHECK(i.value() == "A"); + break; + } + + case 2: + { + CHECK(i.key() == "1"); + CHECK(i.value() == "B"); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + + SECTION("reference") + { + json j = {"A", "B"}; + int counter = 1; + + for (auto& i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "0"); + CHECK(i.value() == "A"); + + // change the value + i.value() = "AA"; + CHECK(i.value() == "AA"); + break; + } + + case 2: + { + CHECK(i.key() == "1"); + CHECK(i.value() == "B"); + + // change the value + i.value() = "BB"; + CHECK(i.value() == "BB"); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + + // check if values where changed + CHECK(j == json({"AA", "BB"})); + } + + SECTION("const value") + { + json j = {"A", "B"}; + int counter = 1; + + for (const auto i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "0"); + CHECK(i.value() == "A"); + break; + } + + case 2: + { + CHECK(i.key() == "1"); + CHECK(i.value() == "B"); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + + SECTION("const reference") + { + json j = {"A", "B"}; + int counter = 1; + + for (const auto& i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "0"); + CHECK(i.value() == "A"); + break; + } + + case 2: + { + CHECK(i.key() == "1"); + CHECK(i.value() == "B"); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + } + + SECTION("const array") + { + SECTION("value") + { + const json j = {"A", "B"}; + int counter = 1; + + for (auto i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "0"); + CHECK(i.value() == "A"); + break; + } + + case 2: + { + CHECK(i.key() == "1"); + CHECK(i.value() == "B"); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + + SECTION("reference") + { + const json j = {"A", "B"}; + int counter = 1; + + for (auto& i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "0"); + CHECK(i.value() == "A"); + break; + } + + case 2: + { + CHECK(i.key() == "1"); + CHECK(i.value() == "B"); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + + SECTION("const value") + { + const json j = {"A", "B"}; + int counter = 1; + + for (const auto i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "0"); + CHECK(i.value() == "A"); + break; + } + + case 2: + { + CHECK(i.key() == "1"); + CHECK(i.value() == "B"); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + + SECTION("const reference") + { + const json j = {"A", "B"}; + int counter = 1; + + for (const auto& i : j.items()) + { + switch (counter++) + { + case 1: + { + CHECK(i.key() == "0"); + CHECK(i.value() == "A"); + break; + } + + case 2: + { + CHECK(i.key() == "1"); + CHECK(i.value() == "B"); + break; + } + + default: + { + break; + } + } + } + + CHECK(counter == 3); + } + } + + SECTION("primitive") + { + SECTION("value") + { + json j = 1; + int counter = 1; + + for (auto i : j.items()) + { + ++counter; + CHECK(i.key() == ""); + CHECK(i.value() == json(1)); + } + + CHECK(counter == 2); + } + + SECTION("reference") + { + json j = 1; + int counter = 1; + + for (auto& i : j.items()) + { + ++counter; + CHECK(i.key() == ""); + CHECK(i.value() == json(1)); + + // change value + i.value() = json(2); + } + + CHECK(counter == 2); + + // check if value has changed + CHECK(j == json(2)); + } + + SECTION("const value") + { + json j = 1; + int counter = 1; + + for (const auto i : j.items()) + { + ++counter; + CHECK(i.key() == ""); + CHECK(i.value() == json(1)); + } + + CHECK(counter == 2); + } + + SECTION("const reference") + { + json j = 1; + int counter = 1; + + for (const auto& i : j.items()) + { + ++counter; + CHECK(i.key() == ""); + CHECK(i.value() == json(1)); + } + + CHECK(counter == 2); + } + } + + SECTION("const primitive") + { + SECTION("value") + { + const json j = 1; + int counter = 1; + + for (auto i : j.items()) + { + ++counter; + CHECK(i.key() == ""); + CHECK(i.value() == json(1)); + } + + CHECK(counter == 2); + } + + SECTION("reference") + { + const json j = 1; + int counter = 1; + + for (auto& i : j.items()) + { + ++counter; + CHECK(i.key() == ""); + CHECK(i.value() == json(1)); + } + + CHECK(counter == 2); + } + + SECTION("const value") + { + const json j = 1; + int counter = 1; + + for (const auto i : j.items()) + { + ++counter; + CHECK(i.key() == ""); + CHECK(i.value() == json(1)); + } + + CHECK(counter == 2); + } + + SECTION("const reference") + { + const json j = 1; + int counter = 1; + + for (const auto& i : j.items()) + { + ++counter; + CHECK(i.key() == ""); + CHECK(i.value() == json(1)); + } + + CHECK(counter == 2); + } + } +} From 15b6421d0789a5402275358d43719f4b37979929 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Fri, 5 Jan 2018 23:26:22 +0100 Subject: [PATCH 005/106] :white_check_mark: added UTF-8 decoder capability and stress test As described in http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt; Markus Kuhn - 2015-08-28 - CC BY 4.0 --- test/data/markus_kuhn/UTF-8-test.txt | Bin 0 -> 22781 bytes test/src/unit-unicode.cpp | 392 +++++++++++++++++++++++++++ 2 files changed, 392 insertions(+) create mode 100644 test/data/markus_kuhn/UTF-8-test.txt diff --git a/test/data/markus_kuhn/UTF-8-test.txt b/test/data/markus_kuhn/UTF-8-test.txt new file mode 100644 index 0000000000000000000000000000000000000000..a5b5d50e6b61eb9a3b751b3954f83e61bb59db9b GIT binary patch literal 22781 zcmdU1X_Fh*b>CYjiIrHEbIyIeVd1bb#8j*y4MbNJE8ngr{T%> zH=?M0*NGF|Zns=*maBHFY*)*j-4j3B+Sy$_dEy6TNmiFvPA)BPEUj+fmviUj>}zDb zylhzyHeB;;sk==Fw0Y8Snr+$lJK|ijTdwCUO2hB+4}n}98At=QQVnO2tbk<@(9!SA*KTMb-()7zJ}9Yk)m)3ovMPE_?< z4&m`=AYfdi2gL9x(zW;T2&>e#!>~kZOLg0AmhhcCgBHcvb3FXf@9Z>qKS;P_9xq{M zX9r^v+X4}FC$KAEXd?8A)3Eozr9kXRLJ%VDrme$0ABAGOEs(JYzJ!rugIk~^6$2>n zcEzq>1dFOMR23y23`tPI^(hkaJx~+w1GHs>5#U|33BkDdJ8tNBov>p!@zi!F0^_$X zwVlAF6hNWW!L)ctp%pbicFV`;>TVE5OOcBa*d6d8P>GKyMu;y#v2jP!v2ly zk#^vNEf_7C=(s`3piW3-P;OK9WvZqTur#5BA;#K-8dm*1m=Jj3)$CxO%20DT9xyLe zwsDmL*Fxz!%_e`wy4l5ZQiI8()+YdS1n&OdNLR+dk#pITbEYjt^fc~L?miBLAnr&X@2<+Unk z1xxnas$;=~9Ct4@5j@+*5Y%*_V9+xuWkXKLj~OeW4FN%?jpW=YyARqX)rK9|RoI{z z6*L^m6}lKPRobrk?FftsJC)FhN~FyyrMJYKuwgkgxUNh6oN`}GFDwzt;8txQTCib0 zpaX3vNd^8-vO$_rm*s*-zPDPw2N~g;P^31r#;!I1WQ{2rZPN#c8k3rQ#uD?@lrel9 zc&guQIdCZHh-Bg7@$K#H&0~wwZMb+&)Ax7DrV9Ahba&}X@N9^jV}PH6M+Px?o*Hkbs)2c49sb4l;8pIYPlARu zoGPT(Z8+q>K>~n^Evy`)jv=&wc~r>Af(RF7VRiKHP%*^JY6M2Y=RqsH9fW|J=p5L9 znCI@cwPR{0b+~K4%VEB*<45q|vDS%Qr|sIF1&&Z+V?K-_EmasQ z8kByYLD(%L0K%By=V1!rzE^DozUTgkfsVl1(8MKiTZq~&WQ?&SPutJLna1mUxDM_8 zP)ZNpy(L@sZI)m$I*2Ai09`mdo-eM(DM*@X6gpHP8)DPgmBh+wV22I*AB0J!9+fy; z8{>>!u-$}rV^pxJHiRsQ=#+ES2`J?=&=eCklnU@e6AC)5L_(+U%sfB{lLwa<+D)c0 z@KC(hsyj~Ym{ISVi82sR3hY2obbeCmm0&TKs!kix5mfO0s0&XAKVcanR?92p6&3Aj z8SfK619~GH1bV)=)P}u8YO7}+ICuU$#}Wm8Gqf%qN3>YhoB8(iHYkdjXatJ~CgW3j zY>f4iQ(Nk~HBd)WUqlpu?vm2{m{U#~UP-4-nIT8$v^)WO76SEQ@N+P=V`Y;of&qRv z)cla%oCy!KxVqci&#Y-mCc=zBS!*Ss((AM;P-3Qwi3bb$e1=vyB2^fTxfonxrVgS2 zoKKuoB7(+ABNaY2vzm!32iYF<<33-#7gY~A0sMvCghhF zq-e|{8C-$Ugm&8k%c>);(`u^J2$kppjT%GKyf1X4j@nzOxnwR`JcchcJNi(NkUAXU zsBwD@$v}mutT zh$~}5e&&(OGeVveIhlv#Txx{K7vFe!R?Jf(r*fF<3Yq8RORop!41|tK>vn&mbRg_| zm`Ke*yX7d<8wxo^y-#oF)cePZYNK$x)71O)b{_BPK~X?uV0lu#G3m<#4hJ(Lj;r?y z0rQC89Lx$irrv9cn1}opAZH|VRK3AOy>gQIHZf-ayJ7t0~3rOy}M?jxyqUWGiivnIv=ZUUoW)yJ@%RT>A zZ|6_n7AGs61L#Y#T@(gG2L*alV=(oPCW|Yqyd_s}%50DMoQs02-}TDL_lo|U|9IgU zC=ru;a?(B`3|YRkv3!@5islZ`Ka<&Mu%8qz@G5oS74LhKL_mwUeB`g-0 z885ud+RgBaa?Su6Jh+(ko8rwxp}|7{J$ZAyStvAkr{x|eJ@}@Vx<*jdf`#awGu6MuZz3+SfqlZB<_ZYm#KJdX0efT3E z{n*Dp@ySnp`tc{O+%Dc{KKqNm^vj?7mHw}O{tLhM#V4=MWD%p!p1(ZSbgF~$IZ9|@ zg!S8ed2saM1%5jc`snXjU|w4_tD$k&MOa#0(%M{7dBDVc`BIg7T&ttBKjlj4(;A;C z%OM8p(pcEW0&zC_v`#PuCjC>2m;UAU-Y8z_ntVyVEMJkY%CF0B$ZyJT$#2W=$nVPU z$?wZk^0gTrVd(n<`9t|5`D6JL`BV8b`E&UT`AhjL`D^(b`CIurd0L7ms`DQ&^p6@y z`L3KAm+#sX`8t%Z^NN=5b@{sdz5Ijxqx_Tnv;2$vtNfe%yZndzr`(Wl$ngJN9>_N+ zkBxD0tWOa~o#LpUo^Ebg{P?c6w`b&8c}|{}7v#U>zvY`V@PFJCkH$WbuTdWB&64GgT zysDZJJZ*k%+6;6}KSAQkmiF_oRc4|oB7=iG(#2q13uZ9^c@>u(QBsJ|L8XgMXgXOq zm#rG3WWd$cxU&sS8R<2D{;i>eh5TVo7);F63rof4=zI7naP@a<-sQ;!47FNLX26 z$t>m86H2;}Fo~I(<6PcQ(on~9X!b$vkUblwOT$G!=a?r8i#%}tK7u}$E(?52e5$%z z*gDHJG1+X$Lc>MgN8*O8*Ce66mo|5>-H8DsEtVFV6DByx&-srR$fax7FT;7z+SNRt z9uA?!e{cTuJqZ2D`v2HZW++5+qqcUo+YTB| z5%$vF(4+}4($33K3g=HB_{TU{ceuFp^0>{9KK<6e(WXyw-d)#qrSHrK4`C4W@n1a# ze);9^9145>{DTL(fKE5hGUG_Lmbq~a<|`Q&!6_2p=}QBWMm2ea0_}P(FGrd?Dc08U2^rTakV#X z(Xa@!XT)ZkA}VQUq(i@Jt;5YC4X0I>Gg1m|sD$YQ%kbjn(^BG&1Lw8KC-o-N)2xl) z*{Cy)XwN6?Gk^8aUTcTgmT;Fg4`YW4w{vK-y7n%!r@hIhc*HIwuXW+JhA~|rCz7kD zn_I9`2oX=0$j~ z30Q8Z3fn^)s82;V(zUh!)zHLRu!j}ZoYp3d(oJZC#sC`E$OSyN?QmdVhS@=Y=}{-( zrZe5oLhIafo$g}7J)};MR=h6_ACB8crtjR2W%^xdvJl5O|J8_AObq4NWVKM1)X&S53})42gHvR~Io zCU5;QAF6wAcnkNvJ|GL31u)a|b4=={0}XCp4!onNK0W z_(((4S{kxYI#EJ5wb`r%y)(juZ6z1&m-~8h>Gr6A7gfNC(|{@KZm0;o+q!9y_RIk$ z7vs^vE!Ql8fE`MnZe=scf6dnoFWAP%kJAe|{{-W{H~n<>H}jV-^bZ=y^2RC~gR0n} zkc;=A5NYAHD~0p8o<+db4A9Y@pgbl3uV0=OaVhN4#N5@hu%i?v24T zJ(F?mj%30|pjAJ?#2fmEhk#j-o4F^<;Vp>-Cod#(nAA=*Rwo7g`!3#-%}x${>ipI5 z!O2`BF>Lq(lPBm7t^@2UBe@rEL(U*LH;rLfodHTRS5xE6G8Hmm;>xXhvJ0b73K;#4*}HwR>dIZnepaCUAE6hTQO%}vGzUetHYUmh$4KVTMi zNfR2UFij8q9n>fC1Idl)ptnatpK)KC*w6+8W0gf`1F*Flj}by43 zC48);eEiH|X~d!}__&>n8g^^E;Ek(?MZ~f#5tC7yM2Vv=mLH8tX5`n~{)LiWmHTZs zfIPlSt;OW-$JJWE$W++IXh3%+^~WyXxV7MQ%qHF^n5l3w%v3jld22x#%-CXJgClgR zDUQ(j_@FSIvCSCFjLsA@r4yJ%=`>bD%O0UqReglcCyMja*iDR?(V1eVbON&|oyKzL zFGlE8s1Z7^6z3;;9sm|&W^|^QDV@M9Lg#Ip;0OTqXie_JvV5|DfU-W8I1Zch%s+aK zW;-RE7Lt;R(lwWfN<5k-*n@yrRL~=$aGDH@-g?Z^*m(16PpHNsaT!^{^P4=S4s$u4 zn4_g-PG6ET$^-GbU5eSWO3BPePsM`!RsujH>i4x$Ilc89&MIe9-DdQnA3T!WrWLlMIw zp{lN#KWL=_YYXWDsV)UqntpW`df>;3Z59c&tui(!b9f~fie^igAJ#+iN8yc(*PM%o zgQ+lQ#JPjq$ur$Tjq@=p!HGQLh0Y9+wa(;}L%?JP$Ax_^nZjg87@pla_1*mCaesQs zBt{CNc)%f4raCGP@*pJw5#o&C&kib4X2*-!d*E^m64IZa^19wsZbc|NX=Mqr?7V z!~O?`{SOZN9~$;QJnVmD*#GFT|FL2J|ZGz&1f`h z_Eg0#9_P<(SztEeVN5IK^2&0qE&E{3&!4{dd8KC_9bCn0@XQtbyn>$t{6x|G*@p*L z@ftjf&+!^Oi_h^IJd4lq8a#*3@fsXVxA`=q{yCuGHFyqacnzKd8eW6vfri)Md3=u7 p;CXzG*Wh`4j@JOEDqJmkvO@N>BDCH5J3T8tzwg#xE%c3^^?x0SNE-kE literal 0 HcmV?d00001 diff --git a/test/src/unit-unicode.cpp b/test/src/unit-unicode.cpp index 3b2a239b..97fc2751 100644 --- a/test/src/unit-unicode.cpp +++ b/test/src/unit-unicode.cpp @@ -1076,3 +1076,395 @@ TEST_CASE("Unicode", "[hide]") CHECK_THROWS_AS(json::parse("\xef\xbb\xbb"), json::parse_error&); } } + +void roundtrip(bool success_expected, const std::string& s); + +void roundtrip(bool success_expected, const std::string& s) +{ + CAPTURE(s); + + // create JSON string value + json j = s; + // create JSON text + std::string ps = std::string("\"") + s + "\""; + + if (success_expected) + { + // serialization succeeds + CHECK_NOTHROW(j.dump()); + + // exclude parse test for U+0000 + if (s[0] != '\0') + { + // parsing JSON text succeeds + CHECK_NOTHROW(json::parse(ps)); + } + + // roundtrip succeeds + CHECK_NOTHROW(json::parse(j.dump())); + + // after roundtrip, the same string is stored + json jr = json::parse(j.dump()); + CHECK(jr.get() == s); + } + else + { + // serialization fails + CHECK_THROWS_AS(j.dump(), json::type_error&); + + // parsing JSON text fails + CHECK_THROWS_AS(json::parse(ps), json::parse_error&); + } +} + +TEST_CASE("Markus Kuhn's UTF-8 decoder capability and stress test") +{ + // Markus Kuhn - 2015-08-28 - CC BY 4.0 + // http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt + + SECTION("1 Some correct UTF-8 text") + { + roundtrip(true, "κόσμε"); + } + + SECTION("2 Boundary condition test cases") + { + SECTION("2.1 First possible sequence of a certain length") + { + // 2.1.1 1 byte (U-00000000) + roundtrip(true, std::string("\0", 1)); + // 2.1.2 2 bytes (U-00000080) + roundtrip(true, "\xc2\x80"); + // 2.1.3 3 bytes (U-00000800) + roundtrip(true, "\xe0\xa0\x80"); + // 2.1.4 4 bytes (U-00010000) + roundtrip(true, "\xf0\x90\x80\x80"); + + // 2.1.5 5 bytes (U-00200000) + roundtrip(false, "\xF8\x88\x80\x80\x80"); + // 2.1.6 6 bytes (U-04000000) + roundtrip(false, "\xFC\x84\x80\x80\x80\x80"); + } + + SECTION("2.2 Last possible sequence of a certain length") + { + // 2.2.1 1 byte (U-0000007F) + roundtrip(true, "\x7f"); + // 2.2.2 2 bytes (U-000007FF) + roundtrip(true, "\xdf\xbf"); + // 2.2.3 3 bytes (U-0000FFFF) + roundtrip(true, "\xef\xbf\xbf"); + + // 2.2.4 4 bytes (U-001FFFFF) + roundtrip(false, "\xF7\xBF\xBF\xBF"); + // 2.2.5 5 bytes (U-03FFFFFF) + roundtrip(false, "\xFB\xBF\xBF\xBF\xBF"); + // 2.2.6 6 bytes (U-7FFFFFFF) + roundtrip(false, "\xFD\xBF\xBF\xBF\xBF\xBF"); + } + + SECTION("2.3 Other boundary conditions") + { + // 2.3.1 U-0000D7FF = ed 9f bf + roundtrip(true, "\xed\x9f\xbf"); + // 2.3.2 U-0000E000 = ee 80 80 + roundtrip(true, "\xee\x80\x80"); + // 2.3.3 U-0000FFFD = ef bf bd + roundtrip(true, "\xef\xbf\xbd"); + // 2.3.4 U-0010FFFF = f4 8f bf bf + roundtrip(true, "\xf4\x8f\xbf\xbf"); + + // 2.3.5 U-00110000 = f4 90 80 80 + roundtrip(false, "\xf4\x90\x80\x80"); + } + } + + SECTION("3 Malformed sequences") + { + SECTION("3.1 Unexpected continuation bytes") + { + // Each unexpected continuation byte should be separately signalled as a + // malformed sequence of its own. + + // 3.1.1 First continuation byte 0x80 + roundtrip(false, "\x80"); + // 3.1.2 Last continuation byte 0xbf + roundtrip(false, "\xbf"); + + // 3.1.3 2 continuation bytes + roundtrip(false, "\x80\xbf"); + // 3.1.4 3 continuation bytes + roundtrip(false, "\x80\xbf\x80"); + // 3.1.5 4 continuation bytes + roundtrip(false, "\x80\xbf\x80\xbf"); + // 3.1.6 5 continuation bytes + roundtrip(false, "\x80\xbf\x80\xbf\x80"); + // 3.1.7 6 continuation bytes + roundtrip(false, "\x80\xbf\x80\xbf\x80\xbf"); + // 3.1.8 7 continuation bytes + roundtrip(false, "\x80\xbf\x80\xbf\x80\xbf\x80"); + + // 3.1.9 Sequence of all 64 possible continuation bytes (0x80-0xbf) + roundtrip(false, "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"); + } + + SECTION("3.2 Lonely start characters") + { + // 3.2.1 All 32 first bytes of 2-byte sequences (0xc0-0xdf) + roundtrip(false, "\xc0 \xc1 \xc2 \xc3 \xc4 \xc5 \xc6 \xc7 \xc8 \xc9 \xca \xcb \xcc \xcd \xce \xcf \xd0 \xd1 \xd2 \xd3 \xd4 \xd5 \xd6 \xd7 \xd8 \xd9 \xda \xdb \xdc \xdd \xde \xdf"); + // 3.2.2 All 16 first bytes of 3-byte sequences (0xe0-0xef) + roundtrip(false, "\xe0 \xe1 \xe2 \xe3 \xe4 \xe5 \xe6 \xe7 \xe8 \xe9 \xea \xeb \xec \xed \xee \xef"); + // 3.2.3 All 8 first bytes of 4-byte sequences (0xf0-0xf7) + roundtrip(false, "\xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7"); + // 3.2.4 All 4 first bytes of 5-byte sequences (0xf8-0xfb) + roundtrip(false, "\xf8 \xf9 \xfa \xfb"); + // 3.2.5 All 2 first bytes of 6-byte sequences (0xfc-0xfd) + roundtrip(false, "\xfc \xfd"); + } + + SECTION("3.3 Sequences with last continuation byte missing") + { + // All bytes of an incomplete sequence should be signalled as a single + // malformed sequence, i.e., you should see only a single replacement + // character in each of the next 10 tests. (Characters as in section 2) + + // 3.3.1 2-byte sequence with last byte missing (U+0000) + roundtrip(false, "\xc0"); + // 3.3.2 3-byte sequence with last byte missing (U+0000) + roundtrip(false, "\xe0\x80"); + // 3.3.3 4-byte sequence with last byte missing (U+0000) + roundtrip(false, "\xf0\x80\x80"); + // 3.3.4 5-byte sequence with last byte missing (U+0000) + roundtrip(false, "\xf8\x80\x80\x80"); + // 3.3.5 6-byte sequence with last byte missing (U+0000) + roundtrip(false, "\xfc\x80\x80\x80\x80"); + // 3.3.6 2-byte sequence with last byte missing (U-000007FF) + roundtrip(false, "\xdf"); + // 3.3.7 3-byte sequence with last byte missing (U-0000FFFF) + roundtrip(false, "\xef\xbf"); + // 3.3.8 4-byte sequence with last byte missing (U-001FFFFF) + roundtrip(false, "\xf7\xbf\xbf"); + // 3.3.9 5-byte sequence with last byte missing (U-03FFFFFF) + roundtrip(false, "\xfb\xbf\xbf\xbf"); + // 3.3.10 6-byte sequence with last byte missing (U-7FFFFFFF) + roundtrip(false, "\xfd\xbf\xbf\xbf\xbf"); + } + + SECTION("3.4 Concatenation of incomplete sequences") + { + // All the 10 sequences of 3.3 concatenated, you should see 10 malformed + // sequences being signalled: + roundtrip(false, "\xc0\xe0\x80\xf0\x80\x80\xf8\x80\x80\x80\xfc\x80\x80\x80\x80\xdf\xef\xbf\xf7\xbf\xbf\xfb\xbf\xbf\xbf\xfd\xbf\xbf\xbf\xbf"); + } + + SECTION("3.5 Impossible bytes") + { + // The following two bytes cannot appear in a correct UTF-8 string + + // 3.5.1 fe + roundtrip(false, "\xfe"); + // 3.5.2 ff + roundtrip(false, "\xff"); + // 3.5.3 fe fe ff ff + roundtrip(false, "\xfe\xfe\xff\xff"); + } + } + + SECTION("4 Overlong sequences") + { + // The following sequences are not malformed according to the letter of + // the Unicode 2.0 standard. However, they are longer then necessary and + // a correct UTF-8 encoder is not allowed to produce them. A "safe UTF-8 + // decoder" should reject them just like malformed sequences for two + // reasons: (1) It helps to debug applications if overlong sequences are + // not treated as valid representations of characters, because this helps + // to spot problems more quickly. (2) Overlong sequences provide + // alternative representations of characters, that could maliciously be + // used to bypass filters that check only for ASCII characters. For + // instance, a 2-byte encoded line feed (LF) would not be caught by a + // line counter that counts only 0x0a bytes, but it would still be + // processed as a line feed by an unsafe UTF-8 decoder later in the + // pipeline. From a security point of view, ASCII compatibility of UTF-8 + // sequences means also, that ASCII characters are *only* allowed to be + // represented by ASCII bytes in the range 0x00-0x7f. To ensure this + // aspect of ASCII compatibility, use only "safe UTF-8 decoders" that + // reject overlong UTF-8 sequences for which a shorter encoding exists. + + SECTION("4.1 Examples of an overlong ASCII character") + { + // With a safe UTF-8 decoder, all of the following five overlong + // representations of the ASCII character slash ("/") should be rejected + // like a malformed UTF-8 sequence, for instance by substituting it with + // a replacement character. If you see a slash below, you do not have a + // safe UTF-8 decoder! + + // 4.1.1 U+002F = c0 af + roundtrip(false, "\xc0\xaf"); + // 4.1.2 U+002F = e0 80 af + roundtrip(false, "\xe0\x80\xaf"); + // 4.1.3 U+002F = f0 80 80 af + roundtrip(false, "\xf0\x80\x80\xaf"); + // 4.1.4 U+002F = f8 80 80 80 af + roundtrip(false, "\xf8\x80\x80\x80\xaf"); + // 4.1.5 U+002F = fc 80 80 80 80 af + roundtrip(false, "\xfc\x80\x80\x80\x80\xaf"); + } + + SECTION("4.2 Maximum overlong sequences") + { + // Below you see the highest Unicode value that is still resulting in an + // overlong sequence if represented with the given number of bytes. This + // is a boundary test for safe UTF-8 decoders. All five characters should + // be rejected like malformed UTF-8 sequences. + + // 4.2.1 U-0000007F = c1 bf + roundtrip(false, "\xc1\xbf"); + // 4.2.2 U-000007FF = e0 9f bf + roundtrip(false, "\xe0\x9f\xbf"); + // 4.2.3 U-0000FFFF = f0 8f bf bf + roundtrip(false, "\xf0\x8f\xbf\xbf"); + // 4.2.4 U-001FFFFF = f8 87 bf bf bf + roundtrip(false, "\xf8\x87\xbf\xbf\xbf"); + // 4.2.5 U-03FFFFFF = fc 83 bf bf bf bf + roundtrip(false, "\xfc\x83\xbf\xbf\xbf\xbf"); + } + + SECTION("4.3 Overlong representation of the NUL character") + { + // The following five sequences should also be rejected like malformed + // UTF-8 sequences and should not be treated like the ASCII NUL + // character. + + // 4.3.1 U+0000 = c0 80 + roundtrip(false, "\xc0\x80"); + // 4.3.2 U+0000 = e0 80 80 + roundtrip(false, "\xe0\x80\x80"); + // 4.3.3 U+0000 = f0 80 80 80 + roundtrip(false, "\xf0\x80\x80\x80"); + // 4.3.4 U+0000 = f8 80 80 80 80 + roundtrip(false, "\xf8\x80\x80\x80\x80"); + // 4.3.5 U+0000 = fc 80 80 80 80 80 + roundtrip(false, "\xfc\x80\x80\x80\x80\x80"); + } + } + + SECTION("5 Illegal code positions") + { + // The following UTF-8 sequences should be rejected like malformed + // sequences, because they never represent valid ISO 10646 characters and + // a UTF-8 decoder that accepts them might introduce security problems + // comparable to overlong UTF-8 sequences. + + SECTION("5.1 Single UTF-16 surrogates") + { + // 5.1.1 U+D800 = ed a0 80 + roundtrip(false, "\xed\xa0\x80"); + // 5.1.2 U+DB7F = ed ad bf + roundtrip(false, "\xed\xad\xbf"); + // 5.1.3 U+DB80 = ed ae 80 + roundtrip(false, "\xed\xae\x80"); + // 5.1.4 U+DBFF = ed af bf + roundtrip(false, "\xed\xaf\xbf"); + // 5.1.5 U+DC00 = ed b0 80 + roundtrip(false, "\xed\xb0\x80"); + // 5.1.6 U+DF80 = ed be 80 + roundtrip(false, "\xed\xbe\x80"); + // 5.1.7 U+DFFF = ed bf bf + roundtrip(false, "\xed\xbf\xbf"); + } + + SECTION("5.2 Paired UTF-16 surrogates") + { + // 5.2.1 U+D800 U+DC00 = ed a0 80 ed b0 80 + roundtrip(false, "\xed\xa0\x80\xed\xb0\x80"); + // 5.2.2 U+D800 U+DFFF = ed a0 80 ed bf bf + roundtrip(false, "\xed\xa0\x80\xed\xbf\xbf"); + // 5.2.3 U+DB7F U+DC00 = ed ad bf ed b0 80 + roundtrip(false, "\xed\xad\xbf\xed\xb0\x80"); + // 5.2.4 U+DB7F U+DFFF = ed ad bf ed bf bf + roundtrip(false, "\xed\xad\xbf\xed\xbf\xbf"); + // 5.2.5 U+DB80 U+DC00 = ed ae 80 ed b0 80 + roundtrip(false, "\xed\xae\x80\xed\xb0\x80"); + // 5.2.6 U+DB80 U+DFFF = ed ae 80 ed bf bf + roundtrip(false, "\xed\xae\x80\xed\xbf\xbf"); + // 5.2.7 U+DBFF U+DC00 = ed af bf ed b0 80 + roundtrip(false, "\xed\xaf\xbf\xed\xb0\x80"); + // 5.2.8 U+DBFF U+DFFF = ed af bf ed bf bf + roundtrip(false, "\xed\xaf\xbf\xed\xbf\xbf"); + } + + SECTION("5.3 Noncharacter code positions") + { + // The following "noncharacters" are "reserved for internal use" by + // applications, and according to older versions of the Unicode Standard + // "should never be interchanged". Unicode Corrigendum #9 dropped the + // latter restriction. Nevertheless, their presence in incoming UTF-8 data + // can remain a potential security risk, depending on what use is made of + // these codes subsequently. Examples of such internal use: + // + // - Some file APIs with 16-bit characters may use the integer value -1 + // = U+FFFF to signal an end-of-file (EOF) or error condition. + // + // - In some UTF-16 receivers, code point U+FFFE might trigger a + // byte-swap operation (to convert between UTF-16LE and UTF-16BE). + // + // With such internal use of noncharacters, it may be desirable and safer + // to block those code points in UTF-8 decoders, as they should never + // occur legitimately in incoming UTF-8 data, and could trigger unsafe + // behaviour in subsequent processing. + + // Particularly problematic noncharacters in 16-bit applications: + + // 5.3.1 U+FFFE = ef bf be + roundtrip(true, "\xef\xbf\xbe"); + // 5.3.2 U+FFFF = ef bf bf + roundtrip(true, "\xef\xbf\xbf"); + + // 5.3.3 U+FDD0 .. U+FDEF + roundtrip(true, "\xEF\xB7\x90"); + roundtrip(true, "\xEF\xB7\x91"); + roundtrip(true, "\xEF\xB7\x92"); + roundtrip(true, "\xEF\xB7\x93"); + roundtrip(true, "\xEF\xB7\x94"); + roundtrip(true, "\xEF\xB7\x95"); + roundtrip(true, "\xEF\xB7\x96"); + roundtrip(true, "\xEF\xB7\x97"); + roundtrip(true, "\xEF\xB7\x98"); + roundtrip(true, "\xEF\xB7\x99"); + roundtrip(true, "\xEF\xB7\x9A"); + roundtrip(true, "\xEF\xB7\x9B"); + roundtrip(true, "\xEF\xB7\x9C"); + roundtrip(true, "\xEF\xB7\x9D"); + roundtrip(true, "\xEF\xB7\x9E"); + roundtrip(true, "\xEF\xB7\x9F"); + roundtrip(true, "\xEF\xB7\xA0"); + roundtrip(true, "\xEF\xB7\xA1"); + roundtrip(true, "\xEF\xB7\xA2"); + roundtrip(true, "\xEF\xB7\xA3"); + roundtrip(true, "\xEF\xB7\xA4"); + roundtrip(true, "\xEF\xB7\xA5"); + roundtrip(true, "\xEF\xB7\xA6"); + roundtrip(true, "\xEF\xB7\xA7"); + roundtrip(true, "\xEF\xB7\xA8"); + roundtrip(true, "\xEF\xB7\xA9"); + roundtrip(true, "\xEF\xB7\xAA"); + roundtrip(true, "\xEF\xB7\xAB"); + roundtrip(true, "\xEF\xB7\xAC"); + roundtrip(true, "\xEF\xB7\xAD"); + roundtrip(true, "\xEF\xB7\xAE"); + roundtrip(true, "\xEF\xB7\xAF"); + + // 5.3.4 U+nFFFE U+nFFFF (for n = 1..10) + roundtrip(true, "\xF0\x9F\xBF\xBF"); + roundtrip(true, "\xF0\xAF\xBF\xBF"); + roundtrip(true, "\xF0\xBF\xBF\xBF"); + roundtrip(true, "\xF1\x8F\xBF\xBF"); + roundtrip(true, "\xF1\x9F\xBF\xBF"); + roundtrip(true, "\xF1\xAF\xBF\xBF"); + roundtrip(true, "\xF1\xBF\xBF\xBF"); + roundtrip(true, "\xF2\x8F\xBF\xBF"); + roundtrip(true, "\xF2\x9F\xBF\xBF"); + roundtrip(true, "\xF2\xAF\xBF\xBF"); + } + } +} From c9938ea8389cd723357f6d7a7e5216775e6a5b92 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 7 Jan 2018 22:09:12 +0100 Subject: [PATCH 006/106] :construction: started UBJSON implementation --- src/json.hpp | 405 ++++- test/Makefile | 1 + .../CouchDB4k.formatted.json | 275 +++ .../universal-binary-json-java/CouchDB4k.ubj | Bin 0 -> 2724 bytes test/data/universal-binary-json-java/LICENSE | 202 +++ .../MediaContent.formatted.json | 34 + .../MediaContent.ubj | Bin 0 -> 442 bytes test/data/universal-binary-json-java/README | 357 ++++ .../TwitterTimeline.formatted.json | 80 + .../TwitterTimeline.ubj | Bin 0 -> 1792 bytes test/data/universal-binary-json-java/url.txt | 1 + test/src/unit-ubjson.cpp | 1593 +++++++++++++++++ 12 files changed, 2929 insertions(+), 19 deletions(-) create mode 100644 test/data/universal-binary-json-java/CouchDB4k.formatted.json create mode 100644 test/data/universal-binary-json-java/CouchDB4k.ubj create mode 100644 test/data/universal-binary-json-java/LICENSE create mode 100644 test/data/universal-binary-json-java/MediaContent.formatted.json create mode 100644 test/data/universal-binary-json-java/MediaContent.ubj create mode 100644 test/data/universal-binary-json-java/README create mode 100644 test/data/universal-binary-json-java/TwitterTimeline.formatted.json create mode 100644 test/data/universal-binary-json-java/TwitterTimeline.ubj create mode 100644 test/data/universal-binary-json-java/url.txt create mode 100644 test/src/unit-ubjson.cpp diff --git a/src/json.hpp b/src/json.hpp index a12fcbe3..a356bdef 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -4534,6 +4534,27 @@ class binary_reader return res; } + /*! + @brief create a JSON value from UBJSON input + + @param[in] strict whether to expect the input to be consumed completed + @return JSON value created from UBJSON input + + @throw parse_error.110 if input ended unexpectedly or the end of file was + not reached when @a strict was set to true + @throw parse_error.112 if unsupported byte was read + */ + BasicJsonType parse_ubjson(const bool strict) + { + const auto res = parse_ubjson_internal(); + if (strict) + { + get(); + check_eof(true); + } + return res; + } + /*! @brief determine system byte order @@ -5195,6 +5216,68 @@ class binary_reader } } + /*! + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + */ + BasicJsonType parse_ubjson_internal(const bool get_char = true) + { + switch (get_char ? get() : current) + { + case std::char_traits::eof(): // EOF + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + + case 'T': // true + return true; + case 'F': // false + return false; + + case 'Z': // null + return nullptr; + + case 'N': // no-op + return parse_ubjson_internal(); // read next byte + + case 'U': + return get_number(); + case 'i': + return get_number(); + case 'I': + return get_number(); + case 'l': + return get_number(); + case 'L': + return get_number(); + case 'd': + return get_number(); + case 'D': + return get_number(); + + case 'C': // char + { + get(); + check_eof(); + return std::string(1, static_cast(current)); + } + + case 'S': // string + return get_ubjson_string(); + + case '[': // array + return get_ubjson_array(); + + case '{': // object + return get_ubjson_object(); + + default: // anything else + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, + "error reading UBJSON; last byte: 0x" + ss.str())); + } + } + /*! @brief get next character from the input @@ -5495,6 +5578,80 @@ class binary_reader return result; } + /*! + @brief reads a UBJSON string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + + @return string + + @throw parse_error.110 if input ended + @throw parse_error.113 if an unexpected byte is read + */ + std::string get_ubjson_string(const bool get_char = true) + { + if (get_char) + { + get(); + } + + check_eof(); + + switch (current) + { + case 'U': + return get_string(get_number()); + case 'i': + return get_string(get_number()); + case 'I': + return get_string(get_number()); + case 'l': + return get_string(get_number()); + case 'L': + return get_string(get_number()); + default: + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, + "expected a UBJSON string; last byte: 0x" + ss.str())); + } + } + + BasicJsonType get_ubjson_array() + { + BasicJsonType result = value_t::array; + + while (get() != ']') + { + // skip no-op + if (current == 'N') + { + continue; + } + result.push_back(parse_ubjson_internal(false)); + } + + return result; + } + + BasicJsonType get_ubjson_object() + { + BasicJsonType result = value_t::object; + + while (get() != '}') + { + auto key = get_ubjson_string(false); + result[std::move(key)] = parse_ubjson_internal(); + } + + return result; + } + /*! @brief check if input ended @throw parse_error.110 if input ended @@ -5678,23 +5835,23 @@ class binary_writer { write_number(static_cast(0x60 + N)); } - else if (N <= 0xFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x78)); write_number(static_cast(N)); } - else if (N <= 0xFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x79)); write_number(static_cast(N)); } - else if (N <= 0xFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x7A)); write_number(static_cast(N)); } // LCOV_EXCL_START - else if (N <= 0xFFFFFFFFFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x7B)); write_number(static_cast(N)); @@ -5716,23 +5873,23 @@ class binary_writer { write_number(static_cast(0x80 + N)); } - else if (N <= 0xFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x98)); write_number(static_cast(N)); } - else if (N <= 0xFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x99)); write_number(static_cast(N)); } - else if (N <= 0xFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x9A)); write_number(static_cast(N)); } // LCOV_EXCL_START - else if (N <= 0xFFFFFFFFFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x9B)); write_number(static_cast(N)); @@ -5755,23 +5912,23 @@ class binary_writer { write_number(static_cast(0xA0 + N)); } - else if (N <= 0xFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0xB8)); write_number(static_cast(N)); } - else if (N <= 0xFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0xB9)); write_number(static_cast(N)); } - else if (N <= 0xFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0xBA)); write_number(static_cast(N)); } // LCOV_EXCL_START - else if (N <= 0xFFFFFFFFFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0xBB)); write_number(static_cast(N)); @@ -5939,19 +6096,19 @@ class binary_writer // fixstr write_number(static_cast(0xA0 | N)); } - else if (N <= 255) + else if (N <= (std::numeric_limits::max)()) { // str 8 oa->write_character(static_cast(0xD9)); write_number(static_cast(N)); } - else if (N <= 65535) + else if (N <= (std::numeric_limits::max)()) { // str 16 oa->write_character(static_cast(0xDA)); write_number(static_cast(N)); } - else if (N <= 4294967295) + else if (N <= (std::numeric_limits::max)()) { // str 32 oa->write_character(static_cast(0xDB)); @@ -5974,13 +6131,13 @@ class binary_writer // fixarray write_number(static_cast(0x90 | N)); } - else if (N <= 0xFFFF) + else if (N <= (std::numeric_limits::max)()) { // array 16 oa->write_character(static_cast(0xDC)); write_number(static_cast(N)); } - else if (N <= 0xFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { // array 32 oa->write_character(static_cast(0xDD)); @@ -6004,13 +6161,13 @@ class binary_writer // fixmap write_number(static_cast(0x80 | (N & 0xF))); } - else if (N <= 65535) + else if (N <= (std::numeric_limits::max)()) { // map 16 oa->write_character(static_cast(0xDE)); write_number(static_cast(N)); } - else if (N <= 4294967295) + else if (N <= (std::numeric_limits::max)()) { // map 32 oa->write_character(static_cast(0xDF)); @@ -6031,6 +6188,110 @@ class binary_writer } } + /*! + @brief[in] j JSON value to serialize + */ + void write_ubjson(const BasicJsonType& j, const bool use_count = false) + { + switch (j.type()) + { + case value_t::null: + { + oa->write_character(static_cast('Z')); + break; + } + + case value_t::boolean: + { + oa->write_character(j.m_value.boolean + ? static_cast('T') + : static_cast('F')); + break; + } + + case value_t::number_integer: + { + write_number_with_ubjson_prefix(j.m_value.number_integer); + break; + } + + case value_t::number_unsigned: + { + write_number_with_ubjson_prefix(j.m_value.number_unsigned); + break; + } + + case value_t::number_float: + { + write_number_with_ubjson_prefix(j.m_value.number_float); + break; + } + + case value_t::string: + { + oa->write_character(static_cast('S')); + write_number_with_ubjson_prefix(j.m_value.string->size()); + oa->write_characters( + reinterpret_cast(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + oa->write_character(static_cast('[')); + + if (use_count) + { + oa->write_character(static_cast('#')); + write_number_with_ubjson_prefix(j.m_value.array->size()); + } + + for (const auto& el : *j.m_value.array) + { + write_ubjson(el, use_count); + } + + if (not use_count) + { + oa->write_character(static_cast(']')); + } + + break; + } + + case value_t::object: + { + oa->write_character(static_cast('{')); + + if (use_count) + { + oa->write_character(static_cast('#')); + write_number_with_ubjson_prefix(j.m_value.object->size()); + } + + for (const auto& el : *j.m_value.object) + { + write_number_with_ubjson_prefix(el.first.size()); + oa->write_characters( + reinterpret_cast(el.first.c_str()), + el.first.size()); + write_ubjson(el.second, use_count); + } + + if (not use_count) + { + oa->write_character(static_cast('}')); + } + + break; + } + + default: + break; + } + } + private: /* @brief write a number to output input @@ -6058,6 +6319,82 @@ class binary_writer oa->write_characters(vec.data(), sizeof(NumberType)); } + template + void write_number_with_ubjson_prefix(const NumberType n) + { + if (std::is_floating_point::value) + { + oa->write_character(static_cast('D')); // float64 + write_number(n); + } + else if (std::is_unsigned::value) + { + if (n <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast('i')); // uint8 + write_number(static_cast(n)); + } + else if (n <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast('U')); // uint8 + write_number(static_cast(n)); + } + else if (n <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast('I')); // int16 + write_number(static_cast(n)); + } + else if (n <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast('l')); // int32 + write_number(static_cast(n)); + } + else if (n <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast('L')); // int64 + write_number(static_cast(n)); + } + else + { + // TODO: replace by exception + assert(false); + } + } + else + { + if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast('i')); // int8 + write_number(static_cast(n)); + } + else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast('U')); // uint8 + write_number(static_cast(n)); + } + else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast('I')); // int16 + write_number(static_cast(n)); + } + else if (-(std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast('l')); // int32 + write_number(static_cast(n)); + } + else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast('L')); // int64 + write_number(static_cast(n)); + } + else + { + // TODO: replace by exception + assert(false); + } + } + } + private: /// whether we can assume little endianess const bool is_little_endian = binary_reader::little_endianess(); @@ -13511,6 +13848,23 @@ class basic_json binary_writer(o).write_msgpack(j); } + static std::vector to_ubjson(const basic_json& j) + { + std::vector result; + to_ubjson(j, result); + return result; + } + + static void to_ubjson(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_ubjson(j); + } + + static void to_ubjson(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_ubjson(j); + } + /*! @brief create a JSON value from an input in CBOR format @@ -13705,6 +14059,19 @@ class basic_json return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_msgpack(strict); } + static basic_json from_ubjson(detail::input_adapter i, + const bool strict = true) + { + return binary_reader(i).parse_ubjson(strict); + } + + template::value, int> = 0> + static basic_json from_ubjson(A1 && a1, A2 && a2, const bool strict = true) + { + return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_ubjson(strict); + } + /// @} ////////////////////////// diff --git a/test/Makefile b/test/Makefile index a170acb9..d13fa1e8 100644 --- a/test/Makefile +++ b/test/Makefile @@ -39,6 +39,7 @@ SOURCES = src/unit.cpp \ src/unit-regression.cpp \ src/unit-serialization.cpp \ src/unit-testsuites.cpp \ + src/unit-ubjson.cpp \ src/unit-unicode.cpp OBJECTS = $(SOURCES:.cpp=.o) diff --git a/test/data/universal-binary-json-java/CouchDB4k.formatted.json b/test/data/universal-binary-json-java/CouchDB4k.formatted.json new file mode 100644 index 00000000..d12387da --- /dev/null +++ b/test/data/universal-binary-json-java/CouchDB4k.formatted.json @@ -0,0 +1,275 @@ +{ + "data3":"ColreUHAtuYoUOx1N4ZloouQt2o6ugnUT6eYtS10gu7niM8i0vEiNufpk1RlMQXaHXlIwQBDsMFDFUQcFeg2vW5eD259Xm", + "data4":"zCxriJhL726WNNTdJJzurgSA8vKT6rHA0cFCb9koZcLUMXg4rmoXVPqIHWYaCV0ovl2t6xm7I1Hm36jXpLlXEb8fRfbwBeTW2V0OAsVqYH8eAT", + "data0":"9EVqHm5ARqcEB5jq2D14U2bCJPyBY0JWDr1Tjh8gTB0sWUNjqYiWDxFzlx6S", + "data7":"Bi1ujcgEvfADfBeyZudE7nwxc3Ik8qpYjsJIfKmwOMEbV2L3Bi0x2tcRpGuf4fiyvIbypDvJN1PPdQtfQW1Gv6zccXHwwZwKzUq6", + "data5":{ + "integers":[ + 756509, + 116117, + 776378, + 275045, + 703447, + 50156, + 685803, + 147958, + 941747, + 905651, + 57367, + 530248, + 312888, + 740951, + 988947, + 450154 + ], + "float1":76.572, + "float2":83.5299, + "nested1":{ + "integers":[ + 756509, + 116117, + 776378, + 275045, + 703447, + 50156, + 685803, + 147958, + 941747, + 905651, + 57367, + 530248, + 312888, + 740951, + 988947, + 450154 + ], + "floats":[ + 43121609.5543, + 99454976.3019, + 32945584.756, + 18122905.9212, + 45893183.44, + 63052200.6225, + 69032152.6897, + 3748217.6946, + 75449850.474, + 37111527.415, + 84852536.859, + 32906366.487, + 27027600.417, + 63874310.5614, + 39440408.51, + 97176857.1716, + 97438252.1171, + 49728043.5056, + 40818570.245, + 41415831.8949, + 24796297.4251, + 2819085.3449, + 84263963.4848, + 74503228.6878, + 67925677.403, + 4758851.9417, + 75227407.9214, + 76946667.8403, + 72518275.9469, + 94167085.9588, + 75883067.8321, + 27389831.6101, + 57987075.5053, + 1298995.2674, + 14590614.6939, + 45292214.2242, + 3332166.364, + 53784167.729, + 25193846.1867, + 81456965.477, + 68532032.39, + 73820009.7952, + 57736110.5717, + 37304166.7363, + 20054244.864, + 29746392.7397, + 86467624.6, + 45192685.8793, + 44008816.5186, + 1861872.8736, + 14595859.467, + 87795257.6703, + 57768720.8303, + 18290154.3126, + 45893183.44, + 63052200.6225, + 69032152.6897, + 3748217.6946, + 75449850.474, + 37111527.415, + 84852536.859, + 32906366.487, + 27027600.417, + 63874310.5614, + 39440408.51, + 97176857.1716, + 97438252.1171, + 49728043.5056, + 40818570.245, + 41415831.8949, + 24796297.4251, + 2819085.3449, + 84263963.4848, + 74503228.6878, + 67925677.403, + 4758851.9417, + 75227407.9214, + 76946667.8403, + 72518275.9469, + 94167085.9588, + 75883067.8321, + 27389831.6101, + 57987075.5053, + 1298995.2674, + 80858801.2712, + 98262252.4656, + 51612877.944, + 33397812.7835, + 36089655.3049, + 50164685.8153, + 16852105.5192, + 61171929.752, + 86376339.7175, + 73009014.5521, + 7397302.331, + 34345128.9589, + 98343269.4418, + 95039116.9058, + 44833102.5752, + 51052997.8873, + 22719195.6783, + 64883244.8699 + ] + }, + "nested2":{ + "integers":[ + 756509, + 116117, + 776378, + 275045, + 703447, + 50156, + 685803, + 147958, + 941747, + 905651, + 57367, + 530248, + 312888, + 740951, + 988947, + 450154 + ], + "float1":76.572, + "float2":83.5299 + } + }, + "strings":[ + "edx5XzRkPVeEW2MBQzQMcUSuMI4FntjhlJ9VGhQaBHKPEazAaT", + "2fQUbzRUax4A", + "jURcBZ0vrJcmf2roZUMzZJQoTsKZDIdj7KhO7itskKvM80jBU9", + "8jKLmo3N2zYdKyTyfTczfr2x6bPaarorlnTNJ7r8lIkiZyBvrP", + "jbUeAVOdBSPzYmYhH0sabUHUH39O5e", + "I8yAQKZsyZhMfpzWjArQU9pQ6PfU6b14q2eWvQjtCUdgAUxFjg", + "97N8ZmGcxRZO4ZabzRRcY4KVHqxJwQ8qY", + "0DtY1aWXmUfJENt9rYW9", + "DtpBUEppPwMnWexi8eIIxlXRO3GUpPgeNFG9ONpWJYvk8xBkVj", + "YsX8V2xOrTw6LhNIMMhO4F4VXFyXUXFr66L3sTkLWgFA9NZuBV", + "fKYYthv8iFvaYoFoYZyB", + "zGuLsPXoJqMbO4PcePteZfDMYFXdWtvNF8WvaplXypsd6" + ], + "data1":"9EVqHm5ARqcEB5jq21v2g0jVcG9CXB0Abk7uAF4NHYyTzeF3TnHhpZBECD14U2bCJPyBY0JWDr1Tjh8gTB0sWUNjqYiWDxFzlx6S", + "integers":[ + 756509, + 116117, + 776378, + 275045, + 703447, + 50156, + 685803, + 147958, + 941747, + 905651, + 57367, + 530248, + 312888, + 740951, + 988947, + 450154 + ], + "more_nested":{ + "integers":[ + 756509, + 116117, + 776378, + 275045, + 703447, + 50156, + 685803, + 147958, + 941747, + 905651, + 57367, + 530248, + 312888, + 740951, + 988947, + 450154 + ], + "float1":76.572, + "float2":83.5299, + "nested1":{ + "integers":[ + 756509, + 116117, + 776378, + 275045, + 703447, + 50156, + 685803, + 147958, + 941747, + 905651, + 57367, + 530248, + 312888, + 740951, + 988947, + 450154 + ] + }, + "nested2":{ + "strings":[ + "2fQUbzRUax4A", + "jURcBZ0vrJcmf2roZUMzZJQoTsKZDIdj7KhO7itskKvM80jBU9", + "8jKLmo3N2zYdKyTyfTczfr2x6bPaarorlnTNJ7r8lIkiZyBvrP", + "jbUeAVOdBSPzYmYhH0sabUHUH39O5e", + "I8yAQKZsyZhMfpzWjArQU9pQ6PfU6b14q2eWvQjtCUdgAUxFjg", + "97N8ZmGcxRZO4ZabzRRcY4KVHqxJwQ8qY", + "0DtY1aWXmUfJENt9rYW9", + "DtpBUEppPwMnWexi8eIIxlXRO3GUpPgeNFG9ONpWJYvk8xBkVj", + "YsX8V2xOrTw6LhNIMMhO4F4VXFyXUXFr66L3sTkLWgFA9NZuBV", + "fKYYthv8iFvaYoFoYZyB", + "zGuLsPXoJqMbO4PcePteZfDMYFXdWtvNF8WvaplXypsd6" + ], + "integers":[ + 756509, + 116117, + 776378, + 57367, + 530248, + 312888, + 740951, + 988947, + 450154 + ] + } + } +} \ No newline at end of file diff --git a/test/data/universal-binary-json-java/CouchDB4k.ubj b/test/data/universal-binary-json-java/CouchDB4k.ubj new file mode 100644 index 0000000000000000000000000000000000000000..75a6465bc74dcbec4c856640935b331b9e6fa0c3 GIT binary patch literal 2724 zcmeHJS;!kz6i!{Lty(JHh+svO#X1O!TnIw~ClDU(~ zB#OA;LVr|(3b3oHj|lF=@NgTQFk$2_N-_F^*|#C;+nlR=Tsaf3YR z8za;=DlN)uc&#bpsyflk)@a-un;hlR>cOyCd`YR&9CL#Ox-oVt%z{5A%DI9@v=)W> zj4`uC~Evb8So>47Ly)jgRdPBe(5_*j~$Lj$1yR&#ZXu&Q#j_0-rgGaQV#YUGMRk%qs^{ zDgJ`b96^7_XVz?aiqD+zcDiIfUe9NaUC*V;uT!a+tn--@*PqO1R(|B;m0mxvqZ}|h z&i?Swh5+V~6KnXGp^GCIa={UQ!v(PI0XqBYuK~UEWCp|^ti2#^ElYqdI_Y*mqZ@rd z*FSa|2=LmcfNuM2H=q-?y#VNe_dZRP*IW+bo&pC5Kgs|)C0YsSdGn!kd7lMz>66QV zPJ4PkpwoXm2gH{ytblO-+66%OKX*N#TQ}Sc=-OM~1!3F8sdU>_X93#&%DsTLDs@0l z-IKby{lzMXZ+-tNpv{F9z~8rRCx}}fybI9zuRj5TXrBs5+L)fbOzr}7_vX(5UH8mq zfNpv7OF)}0I{;{n^Z|%FG9ieceBB51@PQjrTlY#p=kD7C{Ql}qslR7W2J}euMryI; zRS=iAe)})Y9PKQ<3ussGK0xLDc@TfvvjNbm$MyiaeA71|UbDRdsB4jFmb=rxT)yHf z5ccgJ06Oxh^HQ@rE&%j&@y$$~L&^y*Ewq7xFM%oWMemL?KkV26?4=?kT1wWHV!C)O+WoVHbbJmD!?Yu?c8 zq(EcB*BTCEW#dqA1|AUxmL|{kE+%+tMk}I)XI4k@MswY#Lq#i%6teDVWGhz~6RsXBezd4To7NK6Z{ssdMVYb& zRVQg!wSr}*Ni`g^AU3&iB1{!(Y~ppj^m4>>T zbSanTlfKcY<*VAL-gafSTB^w-T`=Pwl`y@gj|meSRFg<*p*kf|N9HA|Q!B8Aroqk( z&0s^4M0u?CkltqLl59rWti&s>{Z<8L)wwz6QQvUY#IZHv(ZSwQ7aB&1p!HK`1g|8k2p)3E=tp9nkSn-#l_Yfx$DJLCs7_P_t554~w^nRUZ MR{dt4`J-XwXD4K^8UO$Q literal 0 HcmV?d00001 diff --git a/test/data/universal-binary-json-java/LICENSE b/test/data/universal-binary-json-java/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/test/data/universal-binary-json-java/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/test/data/universal-binary-json-java/MediaContent.formatted.json b/test/data/universal-binary-json-java/MediaContent.formatted.json new file mode 100644 index 00000000..fe547871 --- /dev/null +++ b/test/data/universal-binary-json-java/MediaContent.formatted.json @@ -0,0 +1,34 @@ +{ + "Media":{ + "uri":"http://javaone.com/keynote.mpg", + "title":"Javaone Keynote", + "width":640, + "height":480, + "format":"video/mpg4", + "duration":18000000, + "size":58982400, + "bitrate":262144, + "persons":[ + "Bill Gates", + "Steve Jobs" + ], + "player":"JAVA", + "copyright":null + }, + "Images":[ + { + "uri":"http://javaone.com/keynote_large.jpg", + "title":"Javaone Keynote", + "width":1024, + "height":768, + "size":"LARGE" + }, + { + "uri":"http://javaone.com/keynote_small.jpg", + "title":"Javaone Keynote", + "width":320, + "height":240, + "size":"SMALL" + } + ] +} \ No newline at end of file diff --git a/test/data/universal-binary-json-java/MediaContent.ubj b/test/data/universal-binary-json-java/MediaContent.ubj new file mode 100644 index 0000000000000000000000000000000000000000..616531ce4938f44ec1dfac12194504e76cea6ca0 GIT binary patch literal 442 zcma)%Jx;?w5QW#jfGLnT0CGWXH&j#@2}L$elSmXaXcG_ihPBt)w=ptR3J$}uI08pt zBMT`FQp%?{Gv9p5MKGsIaCHuEs|BtaWBS`P-SB~{j*_)%(>EGBWhiO;8i5f;5-y6V zj~}NF!MmtTlQZV-5H=+0#@OI|BYai5pB1*@2+PrtcAy*<$u^3<@om@;H=pcYtC)f2id=E6ZO%@s+y( literal 0 HcmV?d00001 diff --git a/test/data/universal-binary-json-java/README b/test/data/universal-binary-json-java/README new file mode 100644 index 00000000..b4fc4059 --- /dev/null +++ b/test/data/universal-binary-json-java/README @@ -0,0 +1,357 @@ +Universal Binary JSON Java Library +http://ubjson.org + + +About this project... +--------------------- +This code base is actively under development and implements the latest +specification of Universal Binary JSON (Draft 8). + +I/O is handled through the following core classes: + + * UBJOutputStream + * UBJInputStream + * UBJInputStreamParser + +Additionally, if you are working with Java's NIO and need byte[]-based +results, you can wrap any of the above I/O classes around one of the highly +optimized custom byte[]-stream impls: + + * ByteArrayInputStream (optimized for reuse, not from JDK) + * ByteArrayOutputStream (optimized for reuse, not from JDK) + +If you are working with NIO and want maximum performance by using (and reusing) +direct ByteBuffers along with the UBJSON stream impls, take a look at the: + + * ByteBufferInputStream + * ByteBufferOutputStream + +classes. You can wrap any ByteBuffer source or destination with this stream type, +then wrap that stream type with a UBJSON stream impl and utilize the full +potential of Java's NIO with Universal Binary JSON without giving yourself an +ulcer. + +This allows you to re-use the streams over and over again in a pool of reusable +streams for high-performance I/O with no object creation and garbage collection +overhead; a perfect match for high frequency NIO-based communication. + +All of the core I/O classes have been stable for a while, with tweaks to make the +performance tighter and the error messages more informative over the last few +months. + +More Java-convenient reflection-based I/O classes are available in the +org.ubjson.io.reflect package, but they are under active development. + +There are other efforts (like utilities) in other sub portions of the source +tree. This project intends to eventually contain a multitude of UBJSON +abstraction layers, I/O methods and utilities. + + +Changelog +--------- +02-10-12 + * Added ByteBuffer input and output stream impls as compliments to the + re-usable byte[] stream impls. + + Provides a fast translation layer between standard Java stream-IO and the + new Buffer-based I/O in NIO (including transparent support for using + ultra-fast direct ByteBuffers). + + * Optimized some of the read/write methods by removing unnecessary bounds + checks that are done by subsequent Input or Output stream impls themselves. + +02-09-12 + * Fixed bug with readHugeAsBigInteger returning an invalid value and not + treating the underlying bytes as a string-encoded value. + + * Removed implicit buffer.flip() at the end of StreamDecoder; there is no + way to know what the caller had planned for the buffer before reading all + the data back out. Also the flip was in the wrong place and in the case of + an empty decode request (length=0) the flip would not have been performed, + providing the caller with a "full" buffer of nothing. + + * Rewrote all readHugeXXX method impls; now huge's can be read in as a + simple Number (BigInteger or BigDecimal) as well as raw bytes and even + decoded chars. Additionally the methods can even accept and use existing + buffers to write into to allow for tighter optimizations. + + * Rewrote all readStringXXX methods using the same optimizations and + flexibility that readHuge methods now use. + +02-07-12 + More Memory and CPU optimizations across all the I/O impls. + + * StreamDecoder was rewritten to no longer create a ByteBuffer on every + invocation and instead re-use the same one to decode from on every single call. + + * StreamDecoder now requires the call to pass in a CharBuffer instance to hold + the result of the decode operation. This avoids the creation of a CharBuffer + and allows for large-scale optimization by re-using existing buffers between + calls. + + * StreamEncoder was rewritten to no longer create a ByteBuffer on every + invocation either and now re-uses the same single instance over and over + again. + + * UBJOutputStream writeHuge and writeString series of methods were all + rewritten to accept a CharBuffer in the rawest form (no longer char[]) to stop + hiding the fact that the underlying encode operation required one. + + This gives the caller an opportunity to cache and re-use CharBuffers over + and over again if they can; otherwise this just pushes the CharBuffer.wrap() + call up to the caller instead of hiding it secretly in the method impl under + the guise of accepting a raw char[] (that it couldn't use directly). + + For callers that can re-use buffers, this will lead to big performance gains + now that were previously impossible. + + * UBJInputStream added readHuge and readString methods that accept an existing + CharBuffer argument to make use of the optimizations made in the Stream encoder + and decoder impls. + +01-15-12 + Huge performance boost for deserialization! + + StreamDecoder previously used separate read and write buffers for decoding + bytes to chars including the resulting char[] that was returned to the caller. + This design required at least 1 full array copy before returning a result in + the best case and 2x full array copies before returning the result in the + worst case. + + The rewrite removed the need for a write buffer entire as well as ALL array + copies; in the best OR worse case they never occur anymore. + + Raw performance boost of roughly 25% in all UBJ I/O classes as a result. + +12-01-11 through 01-24-12 + A large amount of work has continued on the core I/O classes (stream impls) + to help make them not only faster and more robust, but also more helpful. + When errors are encountered in the streams, they are reported along with the + stream positions. This is critical for debugging problems with corrupt + formats. + + Also provided ByteArray I/O stream classes that have the potential to provide + HUGE performance boosts for high frequency systems. + + Both these classes (ByteArrayInputStream and ByteArrayOutputStream) are + reusable and when wrapped by a UBJInputStream or UBJOutputStream, the top + level UBJ streams implicitly become reusable as well. + + Reusing the streams not only saves on object creation/GC cleanup but also + allows the caller to re-use the temporary byte[] used to translate to and + from the UBJ format, avoiding object churn entirely! + + This optimized design was chosen to be intentionally performant when combined + with NIO implementations as the ByteBuffer's can be used to wrap() existing + outbound buffers (avoiding the most expensive part of a buffer) or use + array() to get access to the underlying buffer that needs to be written to + the stream. + + In the case of direct ByteBuffers, there is no additional overhead added + because the calls to get or put are required anyway to pull or push the + values from the native memory location. + + This approach allows the fastest implementation of Universal Binary JSON + I/O possible in the JVM whether you are using the standard IO (stream) + classes or the NIO (ByteBuffer) classes in the JDK. + + Some ancillary work on UBJ-based command line utilities (viewers, converters, + etc.) has begun as well. + +11-28-11 + * Fixed UBJInputStreamParser implementation; nextType correctly implements + logic to skip existing element (if called back to back) as well as validate + the marker type it encounters before returning it to the caller. + + * Modified IObjectReader contract; a Parser implementation is required to + make traversing the UBJ stream possible without knowing what type of element + is next. + +11-27-11 + * Streamlined ByteArrayOutputStream implementation to ensure the capacity + of the underlying byte[] is never grown unless absolutely necessary. + + * Rewrote class Javadoc for ByteArrayOutputStream to include a code snippet + on how to use it. + +11-26-11 + * Fixed major bug in how 16, 32 and 64-bit integers are re-assembled when + read back from binary representations. + + * Added a numeric test to specifically catch this error if it ever pops up + again. + + * Optimized reading and writing of numeric values in Input and Output + stream implementations. + + * Optimized ObjectWriter implementation by streamlining the numeric read/write + logic and removing the sub-optimal force-compression of on-disk storage. + + * Fixed ObjectWriter to match exactly with the output written by + UBJOutputStream. + + * Normalized all testing between I/O classes so they use the same classes + to ensure parity. + +11-10-11 + * DRAFT 8 Spec Support Added. + + * Added support for the END marker (readEnd) to the InputStreams which is + required for proper unbounded-container support. + + * Added support for the END marker (writeEnd) to UBJOutputStream. + + UBJInputStreamParser must be used for properly support unbounded-containers + because you never know when the 'E' will be encountered marking the end; + so the caller needs to pay attention to the type marker that nextType() + returns and respond accordingly. + + * Added readHugeAsBytes to InputStream implementations, allowing the bytes + used to represent a HUGE to be read in their raw form with no decoding. + + This can save on processing as BigInteger and BigDecimal do their own decoding + of byte[] directly. + + * Added readHugeAsChars to InputStream implementations, allowing a HUGE + value to be read in as a raw char[] without trying to decode it to a + BigInteger or BigDecimal. + + * Added writeHuge(char[]) to support writing out HUGE values directly from + their raw char[] form without trying to decode from a BigInteger or + BigDecimal. + + * readArrayLength and readObjectLenght were modified to return -1 when an + unbounded container length is encountered (255). + + * Fixed UBJInputStreamParser.nextType to correctly skip past any NOOP + markers found in the underlying stream before returning a valid next type. + + * Normalized all reading of "next byte" to the singular + UBJInputStream.nextMarker method -- correctly skips over NOOP until end of + stream OR until the next valid marker byte, then returns it. + + * Modified readNull behavior to have no return type. It is already designed + to throw an exception when 'NULL' isn't found, no need for the additional + return type. + + * Began work on a simple abstract representation of the UBJ data types as + objects that can be assembled into maps and lists and written/read easily + using the IO package. + + This is intended to be a higher level of abstraction than the IO streams, + but lower level (and faster) than the reflection-based work that inspects + user-provided classes. + + * Refactored StreamDecoder and StreamEncoder into the core IO package, + because they are part of core IO. + + * Refactored StreamParser into the io.parser package to more clearly denote + its relationship to the core IO classes. It is a slightly higher level + abstraction ontop of the core IO, having it along side the core IO classes + while .reflect was a subpackage was confusing and suggested that + StreamParser was somehow intended as a swapable replacement for + UBJInputStream which is not how it is intended to be used. + + * Refactored org.ubjson.reflect to org.ubjson.io.reflect to more correctly + communicate the relationship -- the reflection-based classes are built on + the core IO classes and are just a higher abstraction to interact with UBJSON + with. + + * Renamed IDataType to IMarkerType to follow the naming convention for the + marker bytes set forth by the spec doc. + + +10-14-11 + * ObjectWriter rewritten and works correctly. Tested with the example test + data and wrote out the compressed and uncompressed formats files correctly + from their original object representation. + + * Added support for reading and writing huge values as BigInteger as well + as BigDecimal. + + * Added automatic numeric storage compression support to ObjectWriter - based + on the numeric value (regardless of type) the value will be stored as the + smallest possible representation in the UBJ format if requested. + + * Added mapping support for BigDecimal, BigInteger, AtomicInteger and + AtomicLong to ObjectWriter. + + * Added readNull and readBoolean to the UBJInputStream and + UBJInputStreamParser implementations to make the API feel complete and feel + more natural to use. + +10-10-11 + * com.ubjson.io AND com.ubjson.io.charset are finalized against the + Draft 8 specification. + + * The lowest level UBJInput/OuputStream classes were tightened up to run as + fast as possible showing an 800ns-per-op improvement in speed. + + * Profiled core UBJInput/OuputStream classes using HPROF for a few million + iterations and found no memory leaks and no performance traps; everything at + that low level is as tight as it can be. + + * Stream-parsing facilities were moved out of the overloaded UBJInputStream + class and into their own subclass called UBJInputStreamParser which operates + exactly like a pull-parsing scenario (calling nextType then switching on the + value and pulling the appropriate value out of the stream). + + * More example testing/benchmarking data checked into /test/java/com/ubjson/data + + Will begin reworking the Reflection based Object mapping in the + org.ubjson.reflect package now that the core IO classes are finalized. + + * Removed all old scratch test files from the org.ubjson package, this was + confusing. + +09-27-11 + * Initial check-in of core IO classes to read/write spec. + + +Status +------ +Using the standard UBJInputStream, UBJInputStreamParser and UBJOutputStream +implementations to manually read/write UBJ objects is stable and tuned for +optimal performance. + +Automatic mapping of objects to/from UBJ format via the reflection-based +implementation is not tuned yet. Writing is implemented, but not tuned for +optimal performance and reading still has to be written. + + * org.ubjson.io - STABLE + * org.ubjson.io.parser - STABLE + * org.ubjson.io.reflect - ALPHA + * org.ubjson.model - BETA + + +License +------- +This library is released under the Apache 2 License. See LICENSE. + + +Description +----------- +This project represents (the official?) Java implementations of the +Universal Binary JSON specification: http://ubjson.org + + +Example +------- +Comming soon... + + +Performance +----------- +Comming soon... + + +Reference +--------- +Universal Binary JSON Specification - http://ubjson.org +JSON Specification - http://json.org + + +Contact +------- +If you have questions, comments or bug reports for this software please contact +us at: software@thebuzzmedia.com \ No newline at end of file diff --git a/test/data/universal-binary-json-java/TwitterTimeline.formatted.json b/test/data/universal-binary-json-java/TwitterTimeline.formatted.json new file mode 100644 index 00000000..f56dd9b2 --- /dev/null +++ b/test/data/universal-binary-json-java/TwitterTimeline.formatted.json @@ -0,0 +1,80 @@ +{ + "id_str":"121769183821312000", + "retweet_count":0, + "in_reply_to_screen_name":null, + "in_reply_to_user_id":null, + "truncated":false, + "retweeted":false, + "possibly_sensitive":false, + "in_reply_to_status_id_str":null, + "entities":{ + "urls":[ + { + "url":"http:\/\/t.co\/wtioKkFS", + "display_url":"dlvr.it\/pWQy2", + "indices":[ + 33, + 53 + ], + "expanded_url":"http:\/\/dlvr.it\/pWQy2" + } + ], + "hashtags":[ + + ], + "user_mentions":[ + + ] + }, + "geo":null, + "place":null, + "coordinates":null, + "created_at":"Thu Oct 06 02:10:10 +0000 2011", + "in_reply_to_user_id_str":null, + "user":{ + "id_str":"77029015", + "profile_link_color":"009999", + "protected":false, + "url":"http:\/\/www.techday.co.nz\/", + "screen_name":"techdaynz", + "statuses_count":5144, + "profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1479058408\/techday_48_normal.jpg", + "name":"TechDay", + "default_profile_image":false, + "default_profile":false, + "profile_background_color":"131516", + "lang":"en", + "profile_background_tile":false, + "utc_offset":43200, + "description":"", + "is_translator":false, + "show_all_inline_media":false, + "contributors_enabled":false, + "profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/75893948\/Techday_Background.jpg", + "created_at":"Thu Sep 24 20:02:01 +0000 2009", + "profile_sidebar_fill_color":"efefef", + "follow_request_sent":false, + "friends_count":3215, + "followers_count":3149, + "time_zone":"Auckland", + "favourites_count":0, + "profile_sidebar_border_color":"eeeeee", + "profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1479058408\/techday_48_normal.jpg", + "following":false, + "geo_enabled":false, + "notifications":false, + "profile_use_background_image":true, + "listed_count":151, + "verified":false, + "profile_text_color":"333333", + "location":"Ponsonby, Auckland, NZ", + "id":77029015, + "profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/75893948\/Techday_Background.jpg" + }, + "contributors":null, + "source":"\u003Ca href=\"http:\/\/dlvr.it\" rel=\"nofollow\"\u003Edlvr.it\u003C\/a\u003E", + "in_reply_to_status_id":null, + "favorited":false, + "id":121769183821312000, + "text":"Apple CEO's message to employees http:\/\/t.co\/wtioKkFS" +} \ No newline at end of file diff --git a/test/data/universal-binary-json-java/TwitterTimeline.ubj b/test/data/universal-binary-json-java/TwitterTimeline.ubj new file mode 100644 index 0000000000000000000000000000000000000000..19702d4bb147d330ce7bfbc9d819e065c83cafad GIT binary patch literal 1792 zcmai#-)|d55XVDeQYWz~v94=c8hA&jM8tr6*PZEWcWGk<-lbe6kmM^C zPB#~p#~jC&kC5+RH9z9S?Mf^6U~dGvj~`Rem}nfuTAM^DIyv_7kU%*Gj9dKbVw`#B zvGx2@&u^RsK7GCKh_~-G{2N>)swUkos=9B6gKbdC(aH)mkhxpkd zs+jN*V8}CR*@mAG?`}O0@!`T^z~jr2A=M@e7^LZTaEc|#)d+VFo%WI_>tU=v6L5AitG${I1q$O;)K zK9ElNwOax&0W!xA@jSngs8QSoa_xBeN{l+~Zm-#Ebt4Cj^2uH-3FJusC&0ImdW{w- z?u<0(2TK9^J^W&^K@b%JoUUn*C&ovI70NP(^uENJZ9VEGCR zd6@UbqLMAVbB#Bz. +Copyright (c) 2013-2017 Niels Lohmann . + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include "catch.hpp" + +#include "json.hpp" +using nlohmann::json; + +#include + +TEST_CASE("UBJSON") +{ + SECTION("individual values") + { + SECTION("discarded") + { + // discarded values are not serialized + json j = json::value_t::discarded; + const auto result = json::to_ubjson(j); + CHECK(result.empty()); + } + + SECTION("null") + { + json j = nullptr; + std::vector expected = {'Z'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("boolean") + { + SECTION("true") + { + json j = true; + std::vector expected = {'T'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("false") + { + json j = false; + std::vector expected = {'F'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("number") + { + SECTION("signed") + { + SECTION("-9223372036854775808..-2147483649 (int64)") + { + std::vector numbers; + numbers.push_back(INT64_MIN); + numbers.push_back(-1000000000000000000); + numbers.push_back(-100000000000000000); + numbers.push_back(-10000000000000000); + numbers.push_back(-1000000000000000); + numbers.push_back(-100000000000000); + numbers.push_back(-10000000000000); + numbers.push_back(-1000000000000); + numbers.push_back(-100000000000); + numbers.push_back(-10000000000); + numbers.push_back(-2147483649); + for (auto i : numbers) + { + CAPTURE(i); + + // create JSON value with integer number + json j = i; + + // check type + CHECK(j.is_number_integer()); + + // create expected byte vector + std::vector expected; + expected.push_back(static_cast('L')); + expected.push_back(static_cast((i >> 56) & 0xff)); + expected.push_back(static_cast((i >> 48) & 0xff)); + expected.push_back(static_cast((i >> 40) & 0xff)); + expected.push_back(static_cast((i >> 32) & 0xff)); + expected.push_back(static_cast((i >> 24) & 0xff)); + expected.push_back(static_cast((i >> 16) & 0xff)); + expected.push_back(static_cast((i >> 8) & 0xff)); + expected.push_back(static_cast(i & 0xff)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 9); + + // check individual bytes + CHECK(result[0] == 'L'); + uint64_t restored = (static_cast(result[1]) << 070) + + (static_cast(result[2]) << 060) + + (static_cast(result[3]) << 050) + + (static_cast(result[4]) << 040) + + (static_cast(result[5]) << 030) + + (static_cast(result[6]) << 020) + + (static_cast(result[7]) << 010) + + static_cast(result[8]); + CHECK(restored == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("-2147483648..-32769 (int32)") + { + std::vector numbers; + numbers.push_back(-32769); + numbers.push_back(-100000); + numbers.push_back(-1000000); + numbers.push_back(-10000000); + numbers.push_back(-100000000); + numbers.push_back(-1000000000); + numbers.push_back(-2147483648); + for (auto i : numbers) + { + CAPTURE(i); + + // create JSON value with integer number + json j = i; + + // check type + CHECK(j.is_number_integer()); + + // create expected byte vector + std::vector expected; + expected.push_back(static_cast('l')); + expected.push_back(static_cast((i >> 24) & 0xff)); + expected.push_back(static_cast((i >> 16) & 0xff)); + expected.push_back(static_cast((i >> 8) & 0xff)); + expected.push_back(static_cast(i & 0xff)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 5); + + // check individual bytes + CHECK(result[0] == 'l'); + int32_t restored = (static_cast(result[1]) << 030) + + (static_cast(result[2]) << 020) + + (static_cast(result[3]) << 010) + + static_cast(result[4]); + CHECK(restored == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("-32768..-129 (int16)") + { + for (int32_t i = -32768; i <= -129; ++i) + { + CAPTURE(i); + + // create JSON value with integer number + json j = i; + + // check type + CHECK(j.is_number_integer()); + + // create expected byte vector + std::vector expected; + expected.push_back(static_cast('I')); + expected.push_back(static_cast((i >> 8) & 0xff)); + expected.push_back(static_cast(i & 0xff)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 3); + + // check individual bytes + CHECK(result[0] == 'I'); + int16_t restored = static_cast(((result[1] << 8) + result[2])); + CHECK(restored == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("-9263 (int16)") + { + json j = -9263; + std::vector expected = {'I', 0xdb, 0xd1}; + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 3); + + // check individual bytes + CHECK(result[0] == 'I'); + int16_t restored = static_cast(((result[1] << 8) + result[2])); + CHECK(restored == -9263); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("-128..-1 (int8)") + { + for (auto i = -128; i <= -1; ++i) + { + CAPTURE(i); + + // create JSON value with integer number + json j = i; + + // check type + CHECK(j.is_number_integer()); + + // create expected byte vector + std::vector expected; + expected.push_back('i'); + expected.push_back(static_cast(i)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 2); + + // check individual bytes + CHECK(result[0] == 'i'); + CHECK(static_cast(result[1]) == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("0..127 (int8)") + { + for (size_t i = 0; i <= 127; ++i) + { + CAPTURE(i); + + // create JSON value with integer number + json j = -1; + j.get_ref() = static_cast(i); + + // check type + CHECK(j.is_number_integer()); + + // create expected byte vector + std::vector expected; + expected.push_back(static_cast('i')); + expected.push_back(static_cast(i)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 2); + + // check individual bytes + CHECK(result[0] == 'i'); + CHECK(result[1] == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("128..255 (uint8)") + { + for (size_t i = 128; i <= 255; ++i) + { + CAPTURE(i); + + // create JSON value with integer number + json j = -1; + j.get_ref() = static_cast(i); + + // check type + CHECK(j.is_number_integer()); + + // create expected byte vector + std::vector expected; + expected.push_back(static_cast('U')); + expected.push_back(static_cast(i)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 2); + + // check individual bytes + CHECK(result[0] == 'U'); + CHECK(result[1] == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("256..32767 (int16)") + { + for (size_t i = 256; i <= 32767; ++i) + { + CAPTURE(i); + + // create JSON value with integer number + json j = -1; + j.get_ref() = static_cast(i); + + // check type + CHECK(j.is_number_integer()); + + // create expected byte vector + std::vector expected; + expected.push_back(static_cast('I')); + expected.push_back(static_cast((i >> 8) & 0xff)); + expected.push_back(static_cast(i & 0xff)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 3); + + // check individual bytes + CHECK(result[0] == 'I'); + uint16_t restored = static_cast(static_cast(result[1]) * 256 + static_cast(result[2])); + CHECK(restored == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("65536..2147483647 (int32)") + { + for (uint32_t i : + { + 65536u, 77777u, 1048576u + }) + { + CAPTURE(i); + + // create JSON value with integer number + json j = -1; + j.get_ref() = static_cast(i); + + // check type + CHECK(j.is_number_integer()); + + // create expected byte vector + std::vector expected; + expected.push_back('l'); + expected.push_back(static_cast((i >> 24) & 0xff)); + expected.push_back(static_cast((i >> 16) & 0xff)); + expected.push_back(static_cast((i >> 8) & 0xff)); + expected.push_back(static_cast(i & 0xff)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 5); + + // check individual bytes + CHECK(result[0] == 'l'); + uint32_t restored = (static_cast(result[1]) << 030) + + (static_cast(result[2]) << 020) + + (static_cast(result[3]) << 010) + + static_cast(result[4]); + CHECK(restored == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("2147483648..9223372036854775807 (int64)") + { + for (uint64_t i : + { + 2147483648ul, 9223372036854775807ul + }) + { + CAPTURE(i); + + // create JSON value with integer number + json j = -1; + j.get_ref() = static_cast(i); + + // check type + CHECK(j.is_number_integer()); + + // create expected byte vector + std::vector expected; + expected.push_back('L'); + expected.push_back(static_cast((i >> 070) & 0xff)); + expected.push_back(static_cast((i >> 060) & 0xff)); + expected.push_back(static_cast((i >> 050) & 0xff)); + expected.push_back(static_cast((i >> 040) & 0xff)); + expected.push_back(static_cast((i >> 030) & 0xff)); + expected.push_back(static_cast((i >> 020) & 0xff)); + expected.push_back(static_cast((i >> 010) & 0xff)); + expected.push_back(static_cast(i & 0xff)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 9); + + // check individual bytes + CHECK(result[0] == 'L'); + uint64_t restored = (static_cast(result[1]) << 070) + + (static_cast(result[2]) << 060) + + (static_cast(result[3]) << 050) + + (static_cast(result[4]) << 040) + + (static_cast(result[5]) << 030) + + (static_cast(result[6]) << 020) + + (static_cast(result[7]) << 010) + + static_cast(result[8]); + CHECK(restored == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + } + + SECTION("unsigned") + { + SECTION("0..127 (int8)") + { + for (size_t i = 0; i <= 127; ++i) + { + CAPTURE(i); + + // create JSON value with unsigned integer number + json j = i; + + // check type + CHECK(j.is_number_unsigned()); + + // create expected byte vector + std::vector expected; + expected.push_back('i'); + expected.push_back(static_cast(i)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 2); + + // check individual bytes + CHECK(result[0] == 'i'); + uint8_t restored = static_cast(result[1]); + CHECK(restored == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("128..255 (uint8)") + { + for (size_t i = 128; i <= 255; ++i) + { + CAPTURE(i); + + // create JSON value with unsigned integer number + json j = i; + + // check type + CHECK(j.is_number_unsigned()); + + // create expected byte vector + std::vector expected; + expected.push_back('U'); + expected.push_back(static_cast(i)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 2); + + // check individual bytes + CHECK(result[0] == 'U'); + uint8_t restored = static_cast(result[1]); + CHECK(restored == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("256..32767 (int16)") + { + for (size_t i = 256; i <= 32767; ++i) + { + CAPTURE(i); + + // create JSON value with unsigned integer number + json j = i; + + // check type + CHECK(j.is_number_unsigned()); + + // create expected byte vector + std::vector expected; + expected.push_back('I'); + expected.push_back(static_cast((i >> 8) & 0xff)); + expected.push_back(static_cast(i & 0xff)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 3); + + // check individual bytes + CHECK(result[0] == 'I'); + uint16_t restored = static_cast(static_cast(result[1]) * 256 + static_cast(result[2])); + CHECK(restored == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("65536..2147483647 (int32)") + { + for (uint32_t i : + { + 65536u, 77777u, 1048576u + }) + { + CAPTURE(i); + + // create JSON value with unsigned integer number + json j = i; + + // check type + CHECK(j.is_number_unsigned()); + + // create expected byte vector + std::vector expected; + expected.push_back('l'); + expected.push_back(static_cast((i >> 24) & 0xff)); + expected.push_back(static_cast((i >> 16) & 0xff)); + expected.push_back(static_cast((i >> 8) & 0xff)); + expected.push_back(static_cast(i & 0xff)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 5); + + // check individual bytes + CHECK(result[0] == 'l'); + uint32_t restored = (static_cast(result[1]) << 030) + + (static_cast(result[2]) << 020) + + (static_cast(result[3]) << 010) + + static_cast(result[4]); + CHECK(restored == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("2147483648..9223372036854775807 (int64)") + { + for (uint64_t i : + { + 2147483648ul, 9223372036854775807ul + }) + { + CAPTURE(i); + + // create JSON value with integer number + json j = i; + + // check type + CHECK(j.is_number_unsigned()); + + // create expected byte vector + std::vector expected; + expected.push_back('L'); + expected.push_back(static_cast((i >> 070) & 0xff)); + expected.push_back(static_cast((i >> 060) & 0xff)); + expected.push_back(static_cast((i >> 050) & 0xff)); + expected.push_back(static_cast((i >> 040) & 0xff)); + expected.push_back(static_cast((i >> 030) & 0xff)); + expected.push_back(static_cast((i >> 020) & 0xff)); + expected.push_back(static_cast((i >> 010) & 0xff)); + expected.push_back(static_cast(i & 0xff)); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == 9); + + // check individual bytes + CHECK(result[0] == 'L'); + uint64_t restored = (static_cast(result[1]) << 070) + + (static_cast(result[2]) << 060) + + (static_cast(result[3]) << 050) + + (static_cast(result[4]) << 040) + + (static_cast(result[5]) << 030) + + (static_cast(result[6]) << 020) + + (static_cast(result[7]) << 010) + + static_cast(result[8]); + CHECK(restored == i); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + } + + SECTION("float64") + { + SECTION("3.1415925") + { + double v = 3.1415925; + json j = v; + std::vector expected = + { + 'D', 0x40, 0x09, 0x21, 0xfb, 0x3f, 0xa6, 0xde, 0xfc + }; + const auto result = json::to_ubjson(j); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + CHECK(json::from_ubjson(result) == v); + } + } + } + + SECTION("string") + { + SECTION("N = 0..127") + { + for (size_t N = 0; N <= 127; ++N) + { + CAPTURE(N); + + // create JSON value with string containing of N * 'x' + const auto s = std::string(N, 'x'); + json j = s; + + // create expected byte vector + std::vector expected; + expected.push_back('S'); + expected.push_back('i'); + expected.push_back(static_cast(N)); + for (size_t i = 0; i < N; ++i) + { + expected.push_back('x'); + } + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == N + 3); + // check that no null byte is appended + if (N > 0) + { + CHECK(result.back() != '\x00'); + } + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("N = 128..255") + { + for (size_t N = 128; N <= 255; ++N) + { + CAPTURE(N); + + // create JSON value with string containing of N * 'x' + const auto s = std::string(N, 'x'); + json j = s; + + // create expected byte vector + std::vector expected; + expected.push_back('S'); + expected.push_back('U'); + expected.push_back(static_cast(N)); + for (size_t i = 0; i < N; ++i) + { + expected.push_back('x'); + } + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == N + 3); + // check that no null byte is appended + CHECK(result.back() != '\x00'); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("N = 256..32767") + { + for (size_t N : + { + 256u, 999u, 1025u, 3333u, 2048u, 32767u + }) + { + CAPTURE(N); + + // create JSON value with string containing of N * 'x' + const auto s = std::string(N, 'x'); + json j = s; + + // create expected byte vector (hack: create string first) + std::vector expected(N, 'x'); + // reverse order of commands, because we insert at begin() + expected.insert(expected.begin(), static_cast(N & 0xff)); + expected.insert(expected.begin(), static_cast((N >> 8) & 0xff)); + expected.insert(expected.begin(), 'I'); + expected.insert(expected.begin(), 'S'); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == N + 4); + // check that no null byte is appended + CHECK(result.back() != '\x00'); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("N = 65536..2147483647") + { + for (size_t N : + { + 65536u, 77777u, 1048576u + }) + { + CAPTURE(N); + + // create JSON value with string containing of N * 'x' + const auto s = std::string(N, 'x'); + json j = s; + + // create expected byte vector (hack: create string first) + std::vector expected(N, 'x'); + // reverse order of commands, because we insert at begin() + expected.insert(expected.begin(), static_cast(N & 0xff)); + expected.insert(expected.begin(), static_cast((N >> 8) & 0xff)); + expected.insert(expected.begin(), static_cast((N >> 16) & 0xff)); + expected.insert(expected.begin(), static_cast((N >> 24) & 0xff)); + expected.insert(expected.begin(), 'l'); + expected.insert(expected.begin(), 'S'); + + // compare result + size + const auto result = json::to_ubjson(j); + CHECK(result == expected); + CHECK(result.size() == N + 6); + // check that no null byte is appended + CHECK(result.back() != '\x00'); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + } + + SECTION("array") + { + SECTION("empty") + { + json j = json::array(); + std::vector expected = {'[', ']'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("[null]") + { + json j = {nullptr}; + std::vector expected = {'[', 'Z', ']'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("[1,2,3,4,5]") + { + json j = json::parse("[1,2,3,4,5]"); + std::vector expected = {'[', 'i', 1, 'i', 2, 'i', 3, 'i', 4, 'i', 5, ']'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("[[[[]]]]") + { + json j = json::parse("[[[[]]]]"); + std::vector expected = {'[', '[', '[', '[', ']', ']', ']', ']'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("array with uint16_t elements") + { + json j(257, nullptr); + std::vector expected(j.size() + 2, 'Z'); // all null + expected[0] = '['; // opening array + expected[258] = ']'; // closing array + const auto result = json::to_ubjson(j); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("array with uint32_t elements") + { + json j(65793, nullptr); + std::vector expected(j.size() + 2, 'Z'); // all null + expected[0] = '['; // opening array + expected[65794] = ']'; // closing array + const auto result = json::to_ubjson(j); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + + SECTION("object") + { + SECTION("empty") + { + json j = json::object(); + std::vector expected = {'{', '}'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("{\"\":null}") + { + json j = {{"", nullptr}}; + std::vector expected = {'{', 'i', 0, 'Z', '}'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("{\"a\": {\"b\": {\"c\": {}}}}") + { + json j = json::parse("{\"a\": {\"b\": {\"c\": {}}}}"); + std::vector expected = + { + '{', 'i', 1, 'a', '{', 'i', 1, 'b', '{', 'i', 1, 'c', '{', '}', '}', '}', '}' + }; + const auto result = json::to_ubjson(j); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + } + } + + SECTION("errors") + { + SECTION("empty byte vector") + { + CHECK_THROWS_AS(json::from_ubjson(std::vector()), json::parse_error&); + CHECK_THROWS_WITH(json::from_ubjson(std::vector()), + "[json.exception.parse_error.110] parse error at 1: unexpected end of input"); + } + + SECTION("too short byte vector") + { + } + + SECTION("unsupported bytes") + { + SECTION("concrete examples") + { + CHECK_THROWS_AS(json::from_cbor(std::vector({0x1c})), json::parse_error&); + CHECK_THROWS_WITH(json::from_cbor(std::vector({0x1c})), + "[json.exception.parse_error.112] parse error at 1: error reading CBOR; last byte: 0x1C"); + CHECK_THROWS_AS(json::from_cbor(std::vector({0xf8})), json::parse_error&); + CHECK_THROWS_WITH(json::from_cbor(std::vector({0xf8})), + "[json.exception.parse_error.112] parse error at 1: error reading CBOR; last byte: 0xF8"); + } + + SECTION("all unsupported bytes") + { + for (auto byte : + { + // ? + 0x1c, 0x1d, 0x1e, 0x1f, + // ? + 0x3c, 0x3d, 0x3e, 0x3f, + // byte strings + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + // byte strings + 0x58, 0x59, 0x5a, 0x5b, + // ? + 0x5c, 0x5d, 0x5e, + // byte string + 0x5f, + // ? + 0x7c, 0x7d, 0x7e, + // ? + 0x9c, 0x9d, 0x9e, + // ? + 0xbc, 0xbd, 0xbe, + // date/time + 0xc0, 0xc1, + // bignum + 0xc2, 0xc3, + // fraction + 0xc4, + // bigfloat + 0xc5, + // tagged item + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, + // expected conversion + 0xd5, 0xd6, 0xd7, + // more tagged items + 0xd8, 0xd9, 0xda, 0xdb, + // ? + 0xdc, 0xdd, 0xde, 0xdf, + // (simple value) + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, + // undefined + 0xf7, + // simple value + 0xf8 + }) + { + CHECK_THROWS_AS(json::from_cbor(std::vector({static_cast(byte)})), json::parse_error&); + } + } + } + + SECTION("invalid string in map") + { + CHECK_THROWS_AS(json::from_cbor(std::vector({0xa1, 0xff, 0x01})), json::parse_error&); + CHECK_THROWS_WITH(json::from_cbor(std::vector({0xa1, 0xff, 0x01})), + "[json.exception.parse_error.113] parse error at 2: expected a CBOR string; last byte: 0xFF"); + } + + SECTION("strict mode") + { + std::vector vec = {0xf6, 0xf6}; + SECTION("non-strict mode") + { + const auto result = json::from_cbor(vec, false); + CHECK(result == json()); + } + + SECTION("strict mode") + { + CHECK_THROWS_AS(json::from_cbor(vec), json::parse_error&); + CHECK_THROWS_WITH(json::from_cbor(vec), + "[json.exception.parse_error.110] parse error at 2: expected end of input"); + } + } + } +} + +// use this testcase outside [hide] to run it with Valgrind +TEST_CASE("single CBOR roundtrip") +{ + SECTION("sample.json") + { + std::string filename = "test/data/json_testsuite/sample.json"; + + // parse JSON file + std::ifstream f_json(filename); + json j1 = json::parse(f_json); + + // parse MessagePack file + std::ifstream f_cbor(filename + ".cbor", std::ios::binary); + std::vector packed((std::istreambuf_iterator(f_cbor)), + std::istreambuf_iterator()); + json j2; + CHECK_NOTHROW(j2 = json::from_cbor(packed)); + + // compare parsed JSON values + CHECK(j1 == j2); + + SECTION("roundtrips") + { + SECTION("std::ostringstream") + { + std::ostringstream ss; + json::to_cbor(j1, ss); + json j3 = json::from_cbor(ss.str()); + CHECK(j1 == j3); + } + + SECTION("std::string") + { + std::string s; + json::to_cbor(j1, s); + json j3 = json::from_cbor(s); + CHECK(j1 == j3); + } + } + + // check with different start index + packed.insert(packed.begin(), 5, 0xff); + CHECK(j1 == json::from_cbor(packed.begin() + 5, packed.end())); + } +} + +TEST_CASE("CBOR roundtrips", "[hide]") +{ + SECTION("input from flynn") + { + for (std::string filename : + { + "test/data/json_nlohmann_tests/all_unicode.json", + "test/data/json.org/1.json", + "test/data/json.org/2.json", + "test/data/json.org/3.json", + "test/data/json.org/4.json", + "test/data/json.org/5.json", + "test/data/json_roundtrip/roundtrip01.json", + "test/data/json_roundtrip/roundtrip02.json", + "test/data/json_roundtrip/roundtrip03.json", + "test/data/json_roundtrip/roundtrip04.json", + "test/data/json_roundtrip/roundtrip05.json", + "test/data/json_roundtrip/roundtrip06.json", + "test/data/json_roundtrip/roundtrip07.json", + "test/data/json_roundtrip/roundtrip08.json", + "test/data/json_roundtrip/roundtrip09.json", + "test/data/json_roundtrip/roundtrip10.json", + "test/data/json_roundtrip/roundtrip11.json", + "test/data/json_roundtrip/roundtrip12.json", + "test/data/json_roundtrip/roundtrip13.json", + "test/data/json_roundtrip/roundtrip14.json", + "test/data/json_roundtrip/roundtrip15.json", + "test/data/json_roundtrip/roundtrip16.json", + "test/data/json_roundtrip/roundtrip17.json", + "test/data/json_roundtrip/roundtrip18.json", + "test/data/json_roundtrip/roundtrip19.json", + "test/data/json_roundtrip/roundtrip20.json", + "test/data/json_roundtrip/roundtrip21.json", + "test/data/json_roundtrip/roundtrip22.json", + "test/data/json_roundtrip/roundtrip23.json", + "test/data/json_roundtrip/roundtrip24.json", + "test/data/json_roundtrip/roundtrip25.json", + "test/data/json_roundtrip/roundtrip26.json", + "test/data/json_roundtrip/roundtrip27.json", + "test/data/json_roundtrip/roundtrip28.json", + "test/data/json_roundtrip/roundtrip29.json", + "test/data/json_roundtrip/roundtrip30.json", + "test/data/json_roundtrip/roundtrip31.json", + "test/data/json_roundtrip/roundtrip32.json", + "test/data/json_testsuite/sample.json", // kills AppVeyor + "test/data/json_tests/pass1.json", + "test/data/json_tests/pass2.json", + "test/data/json_tests/pass3.json", + "test/data/regression/floats.json", + "test/data/regression/signed_ints.json", + "test/data/regression/unsigned_ints.json", + "test/data/regression/working_file.json", + "test/data/nst_json_testsuite/test_parsing/y_array_arraysWithSpaces.json", + "test/data/nst_json_testsuite/test_parsing/y_array_empty-string.json", + "test/data/nst_json_testsuite/test_parsing/y_array_empty.json", + "test/data/nst_json_testsuite/test_parsing/y_array_ending_with_newline.json", + "test/data/nst_json_testsuite/test_parsing/y_array_false.json", + "test/data/nst_json_testsuite/test_parsing/y_array_heterogeneous.json", + "test/data/nst_json_testsuite/test_parsing/y_array_null.json", + "test/data/nst_json_testsuite/test_parsing/y_array_with_1_and_newline.json", + "test/data/nst_json_testsuite/test_parsing/y_array_with_leading_space.json", + "test/data/nst_json_testsuite/test_parsing/y_array_with_several_null.json", + "test/data/nst_json_testsuite/test_parsing/y_array_with_trailing_space.json", + "test/data/nst_json_testsuite/test_parsing/y_number.json", + "test/data/nst_json_testsuite/test_parsing/y_number_0e+1.json", + "test/data/nst_json_testsuite/test_parsing/y_number_0e1.json", + "test/data/nst_json_testsuite/test_parsing/y_number_after_space.json", + "test/data/nst_json_testsuite/test_parsing/y_number_double_close_to_zero.json", + "test/data/nst_json_testsuite/test_parsing/y_number_double_huge_neg_exp.json", + //"test/data/nst_json_testsuite/test_parsing/y_number_huge_exp.json", + "test/data/nst_json_testsuite/test_parsing/y_number_int_with_exp.json", + "test/data/nst_json_testsuite/test_parsing/y_number_minus_zero.json", + "test/data/nst_json_testsuite/test_parsing/y_number_negative_int.json", + "test/data/nst_json_testsuite/test_parsing/y_number_negative_one.json", + "test/data/nst_json_testsuite/test_parsing/y_number_negative_zero.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e_neg_exp.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e_pos_exp.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_exponent.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_fraction_exponent.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_neg_exp.json", + //"test/data/nst_json_testsuite/test_parsing/y_number_real_neg_overflow.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_pos_exponent.json", + //"test/data/nst_json_testsuite/test_parsing/y_number_real_pos_overflow.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_underflow.json", + "test/data/nst_json_testsuite/test_parsing/y_number_simple_int.json", + "test/data/nst_json_testsuite/test_parsing/y_number_simple_real.json", + //"test/data/nst_json_testsuite/test_parsing/y_number_too_big_neg_int.json", + //"test/data/nst_json_testsuite/test_parsing/y_number_too_big_pos_int.json", + //"test/data/nst_json_testsuite/test_parsing/y_number_very_big_negative_int.json", + "test/data/nst_json_testsuite/test_parsing/y_object.json", + "test/data/nst_json_testsuite/test_parsing/y_object_basic.json", + "test/data/nst_json_testsuite/test_parsing/y_object_duplicated_key.json", + "test/data/nst_json_testsuite/test_parsing/y_object_duplicated_key_and_value.json", + "test/data/nst_json_testsuite/test_parsing/y_object_empty.json", + "test/data/nst_json_testsuite/test_parsing/y_object_empty_key.json", + "test/data/nst_json_testsuite/test_parsing/y_object_escaped_null_in_key.json", + "test/data/nst_json_testsuite/test_parsing/y_object_extreme_numbers.json", + "test/data/nst_json_testsuite/test_parsing/y_object_long_strings.json", + "test/data/nst_json_testsuite/test_parsing/y_object_simple.json", + "test/data/nst_json_testsuite/test_parsing/y_object_string_unicode.json", + "test/data/nst_json_testsuite/test_parsing/y_object_with_newlines.json", + "test/data/nst_json_testsuite/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json", + "test/data/nst_json_testsuite/test_parsing/y_string_UTF-16_Surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json", + "test/data/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pair.json", + "test/data/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pairs.json", + "test/data/nst_json_testsuite/test_parsing/y_string_allowed_escapes.json", + "test/data/nst_json_testsuite/test_parsing/y_string_backslash_and_u_escaped_zero.json", + "test/data/nst_json_testsuite/test_parsing/y_string_backslash_doublequotes.json", + "test/data/nst_json_testsuite/test_parsing/y_string_comments.json", + "test/data/nst_json_testsuite/test_parsing/y_string_double_escape_a.json", + "test/data/nst_json_testsuite/test_parsing/y_string_double_escape_n.json", + "test/data/nst_json_testsuite/test_parsing/y_string_escaped_control_character.json", + "test/data/nst_json_testsuite/test_parsing/y_string_escaped_noncharacter.json", + "test/data/nst_json_testsuite/test_parsing/y_string_in_array.json", + "test/data/nst_json_testsuite/test_parsing/y_string_in_array_with_leading_space.json", + "test/data/nst_json_testsuite/test_parsing/y_string_last_surrogates_1_and_2.json", + "test/data/nst_json_testsuite/test_parsing/y_string_newline_uescaped.json", + "test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json", + "test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+1FFFF.json", + "test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json", + "test/data/nst_json_testsuite/test_parsing/y_string_null_escape.json", + "test/data/nst_json_testsuite/test_parsing/y_string_one-byte-utf-8.json", + "test/data/nst_json_testsuite/test_parsing/y_string_pi.json", + "test/data/nst_json_testsuite/test_parsing/y_string_simple_ascii.json", + "test/data/nst_json_testsuite/test_parsing/y_string_space.json", + "test/data/nst_json_testsuite/test_parsing/y_string_three-byte-utf-8.json", + "test/data/nst_json_testsuite/test_parsing/y_string_two-byte-utf-8.json", + "test/data/nst_json_testsuite/test_parsing/y_string_u+2028_line_sep.json", + "test/data/nst_json_testsuite/test_parsing/y_string_u+2029_par_sep.json", + "test/data/nst_json_testsuite/test_parsing/y_string_uEscape.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unescaped_char_delete.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unicode.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unicodeEscapedBackslash.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unicode_2.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+2064_invisible_plus.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unicode_escaped_double_quote.json", + // "test/data/nst_json_testsuite/test_parsing/y_string_utf16.json", + "test/data/nst_json_testsuite/test_parsing/y_string_utf8.json", + "test/data/nst_json_testsuite/test_parsing/y_string_with_del_character.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_lonely_false.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_lonely_int.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_lonely_negative_real.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_lonely_null.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_lonely_string.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_lonely_true.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_string_empty.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_trailing_newline.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_true_in_array.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_whitespace_array.json" + }) + { + CAPTURE(filename); + + // parse JSON file + std::ifstream f_json(filename); + json j1 = json::parse(f_json); + + SECTION("std::vector") + { + // parse CBOR file + std::ifstream f_cbor(filename + ".cbor", std::ios::binary); + std::vector packed( + (std::istreambuf_iterator(f_cbor)), + std::istreambuf_iterator()); + json j2; + CHECK_NOTHROW(j2 = json::from_cbor(packed)); + + // compare parsed JSON values + CHECK(j1 == j2); + } + + SECTION("std::ifstream") + { + // parse CBOR file + std::ifstream f_cbor(filename + ".cbor", std::ios::binary); + json j2; + CHECK_NOTHROW(j2 = json::from_cbor(f_cbor)); + + // compare parsed JSON values + CHECK(j1 == j2); + } + + SECTION("uint8_t* and size") + { + // parse CBOR file + std::ifstream f_cbor(filename + ".cbor", std::ios::binary); + std::vector packed( + (std::istreambuf_iterator(f_cbor)), + std::istreambuf_iterator()); + json j2; + CHECK_NOTHROW(j2 = json::from_cbor({packed.data(), packed.size()})); + + // compare parsed JSON values + CHECK(j1 == j2); + } + + SECTION("output to output adapters") + { + // parse CBOR file + std::ifstream f_cbor(filename + ".cbor", std::ios::binary); + std::vector packed( + (std::istreambuf_iterator(f_cbor)), + std::istreambuf_iterator()); + + SECTION("std::vector") + { + std::vector vec; + json::to_cbor(j1, vec); + CHECK(vec == packed); + } + } + } + } +} + +/* +TEST_CASE("Universal Binary JSON Specification Examples") +{ + for (std::string prefix : + { + "test/data/universal-binary-json-java/CouchDB4k", + "test/data/universal-binary-json-java/MediaContent", + "test/data/universal-binary-json-java/TwitterTimeline" + }) + { + CAPTURE(prefix); + + // parse JSON file + std::ifstream f_json(prefix + ".formatted.json"); + json j1 = json::parse(f_json); + + SECTION("std::vector") + { + // parse UBJSON file + std::ifstream f_ubjson(prefix + ".ubj", std::ios::binary); + std::vector packed( + (std::istreambuf_iterator(f_ubjson)), + std::istreambuf_iterator()); + json j2; + CHECK_NOTHROW(j2 = json::from_ubjson(packed)); + + // compare parsed JSON values + CHECK(j1 == j2); + } + } +} +*/ + + +/* +TEST_CASE("all first bytes", "[!throws]") +{ + // these bytes will fail immediately with exception parse_error.112 + std::set unsupported = + { + //// types not supported by this library + + // byte strings + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, + // byte strings + 0x58, 0x59, 0x5a, 0x5b, 0x5f, + // date/time + 0xc0, 0xc1, + // bignum + 0xc2, 0xc3, + // decimal fracion + 0xc4, + // bigfloat + 0xc5, + // tagged item + 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, + 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd8, + 0xd9, 0xda, 0xdb, + // expected conversion + 0xd5, 0xd6, 0xd7, + // simple value + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, + 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xef, 0xf0, + 0xf1, 0xf2, 0xf3, + 0xf8, + // undefined + 0xf7, + + //// bytes not specified by CBOR + + 0x1c, 0x1d, 0x1e, 0x1f, + 0x3c, 0x3d, 0x3e, 0x3f, + 0x5c, 0x5d, 0x5e, + 0x7c, 0x7d, 0x7e, + 0x9c, 0x9d, 0x9e, + 0xbc, 0xbd, 0xbe, + 0xdc, 0xdd, 0xde, 0xdf, + 0xee, + 0xfc, 0xfe, 0xfd, + + /// break cannot be the first byte + + 0xff + }; + + for (auto i = 0; i < 256; ++i) + { + const auto byte = static_cast(i); + + try + { + json::from_cbor(std::vector(1, byte)); + } + catch (const json::parse_error& e) + { + // check that parse_error.112 is only thrown if the + // first byte is in the unsupported set + CAPTURE(e.what()); + if (std::find(unsupported.begin(), unsupported.end(), byte) != unsupported.end()) + { + CHECK(e.id == 112); + } + else + { + CHECK(e.id != 112); + } + } + } +} +*/ + +/* +TEST_CASE("examples from RFC 7049 Appendix A") +{ + SECTION("numbers") + { + CHECK(json::to_cbor(json::parse("0")) == std::vector({0x00})); + CHECK(json::parse("0") == json::from_cbor(std::vector({0x00}))); + + CHECK(json::to_cbor(json::parse("1")) == std::vector({0x01})); + CHECK(json::parse("1") == json::from_cbor(std::vector({0x01}))); + + CHECK(json::to_cbor(json::parse("10")) == std::vector({0x0a})); + CHECK(json::parse("10") == json::from_cbor(std::vector({0x0a}))); + + CHECK(json::to_cbor(json::parse("23")) == std::vector({0x17})); + CHECK(json::parse("23") == json::from_cbor(std::vector({0x17}))); + + CHECK(json::to_cbor(json::parse("24")) == std::vector({0x18, 0x18})); + CHECK(json::parse("24") == json::from_cbor(std::vector({0x18, 0x18}))); + + CHECK(json::to_cbor(json::parse("25")) == std::vector({0x18, 0x19})); + CHECK(json::parse("25") == json::from_cbor(std::vector({0x18, 0x19}))); + + CHECK(json::to_cbor(json::parse("100")) == std::vector({0x18, 0x64})); + CHECK(json::parse("100") == json::from_cbor(std::vector({0x18, 0x64}))); + + CHECK(json::to_cbor(json::parse("1000")) == std::vector({0x19, 0x03, 0xe8})); + CHECK(json::parse("1000") == json::from_cbor(std::vector({0x19, 0x03, 0xe8}))); + + CHECK(json::to_cbor(json::parse("1000000")) == std::vector({0x1a, 0x00, 0x0f, 0x42, 0x40})); + CHECK(json::parse("1000000") == json::from_cbor(std::vector({0x1a, 0x00, 0x0f, 0x42, 0x40}))); + + CHECK(json::to_cbor(json::parse("1000000000000")) == std::vector({0x1b, 0x00, 0x00, 0x00, 0xe8, 0xd4, 0xa5, 0x10, 0x00})); + CHECK(json::parse("1000000000000") == json::from_cbor(std::vector({0x1b, 0x00, 0x00, 0x00, 0xe8, 0xd4, 0xa5, 0x10, 0x00}))); + + CHECK(json::to_cbor(json::parse("18446744073709551615")) == std::vector({0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff})); + CHECK(json::parse("18446744073709551615") == json::from_cbor(std::vector({0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}))); + + // positive bignum is not supported + //CHECK(json::to_cbor(json::parse("18446744073709551616")) == std::vector({0xc2, 0x49, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); + //CHECK(json::parse("18446744073709551616") == json::from_cbor(std::vector({0xc2, 0x49, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}))); + + //CHECK(json::to_cbor(json::parse("-18446744073709551616")) == std::vector({0x3b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff})); + //CHECK(json::parse("-18446744073709551616") == json::from_cbor(std::vector({0x3b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}))); + + // negative bignum is not supported + //CHECK(json::to_cbor(json::parse("-18446744073709551617")) == std::vector({0xc3, 0x49, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); + //CHECK(json::parse("-18446744073709551617") == json::from_cbor(std::vector({0xc3, 0x49, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}))); + + CHECK(json::to_cbor(json::parse("-1")) == std::vector({0x20})); + CHECK(json::parse("-1") == json::from_cbor(std::vector({0x20}))); + + CHECK(json::to_cbor(json::parse("-10")) == std::vector({0x29})); + CHECK(json::parse("-10") == json::from_cbor(std::vector({0x29}))); + + CHECK(json::to_cbor(json::parse("-100")) == std::vector({0x38, 0x63})); + CHECK(json::parse("-100") == json::from_cbor(std::vector({0x38, 0x63}))); + + CHECK(json::to_cbor(json::parse("-1000")) == std::vector({0x39, 0x03, 0xe7})); + CHECK(json::parse("-1000") == json::from_cbor(std::vector({0x39, 0x03, 0xe7}))); + + // half-precision float + //CHECK(json::to_cbor(json::parse("0.0")) == std::vector({0xf9, 0x00, 0x00})); + CHECK(json::parse("0.0") == json::from_cbor(std::vector({0xf9, 0x00, 0x00}))); + + // half-precision float + //CHECK(json::to_cbor(json::parse("-0.0")) == std::vector({0xf9, 0x80, 0x00})); + CHECK(json::parse("-0.0") == json::from_cbor(std::vector({0xf9, 0x80, 0x00}))); + + // half-precision float + //CHECK(json::to_cbor(json::parse("1.0")) == std::vector({0xf9, 0x3c, 0x00})); + CHECK(json::parse("1.0") == json::from_cbor(std::vector({0xf9, 0x3c, 0x00}))); + + CHECK(json::to_cbor(json::parse("1.1")) == std::vector({0xfb, 0x3f, 0xf1, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a})); + CHECK(json::parse("1.1") == json::from_cbor(std::vector({0xfb, 0x3f, 0xf1, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a}))); + + // half-precision float + //CHECK(json::to_cbor(json::parse("1.5")) == std::vector({0xf9, 0x3e, 0x00})); + CHECK(json::parse("1.5") == json::from_cbor(std::vector({0xf9, 0x3e, 0x00}))); + + // half-precision float + //CHECK(json::to_cbor(json::parse("65504.0")) == std::vector({0xf9, 0x7b, 0xff})); + CHECK(json::parse("65504.0") == json::from_cbor(std::vector({0xf9, 0x7b, 0xff}))); + + //CHECK(json::to_cbor(json::parse("100000.0")) == std::vector({0xfa, 0x47, 0xc3, 0x50, 0x00})); + CHECK(json::parse("100000.0") == json::from_cbor(std::vector({0xfa, 0x47, 0xc3, 0x50, 0x00}))); + + //CHECK(json::to_cbor(json::parse("3.4028234663852886e+38")) == std::vector({0xfa, 0x7f, 0x7f, 0xff, 0xff})); + CHECK(json::parse("3.4028234663852886e+38") == json::from_cbor(std::vector({0xfa, 0x7f, 0x7f, 0xff, 0xff}))); + + CHECK(json::to_cbor(json::parse("1.0e+300")) == std::vector({0xfb, 0x7e, 0x37, 0xe4, 0x3c, 0x88, 0x00, 0x75, 0x9c})); + CHECK(json::parse("1.0e+300") == json::from_cbor(std::vector({0xfb, 0x7e, 0x37, 0xe4, 0x3c, 0x88, 0x00, 0x75, 0x9c}))); + + // half-precision float + //CHECK(json::to_cbor(json::parse("5.960464477539063e-8")) == std::vector({0xf9, 0x00, 0x01})); + CHECK(json::parse("-4.0") == json::from_cbor(std::vector({0xf9, 0xc4, 0x00}))); + + // half-precision float + //CHECK(json::to_cbor(json::parse("0.00006103515625")) == std::vector({0xf9, 0x04, 0x00})); + CHECK(json::parse("-4.0") == json::from_cbor(std::vector({0xf9, 0xc4, 0x00}))); + + // half-precision float + //CHECK(json::to_cbor(json::parse("-4.0")) == std::vector({0xf9, 0xc4, 0x00})); + CHECK(json::parse("-4.0") == json::from_cbor(std::vector({0xf9, 0xc4, 0x00}))); + + CHECK(json::to_cbor(json::parse("-4.1")) == std::vector({0xfb, 0xc0, 0x10, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66})); + CHECK(json::parse("-4.1") == json::from_cbor(std::vector({0xfb, 0xc0, 0x10, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66}))); + } + + SECTION("simple values") + { + CHECK(json::to_cbor(json::parse("false")) == std::vector({0xf4})); + CHECK(json::parse("false") == json::from_cbor(std::vector({0xf4}))); + + CHECK(json::to_cbor(json::parse("true")) == std::vector({0xf5})); + CHECK(json::parse("true") == json::from_cbor(std::vector({0xf5}))); + + CHECK(json::to_cbor(json::parse("true")) == std::vector({0xf5})); + CHECK(json::parse("true") == json::from_cbor(std::vector({0xf5}))); + } + + SECTION("strings") + { + CHECK(json::to_cbor(json::parse("\"\"")) == std::vector({0x60})); + CHECK(json::parse("\"\"") == json::from_cbor(std::vector({0x60}))); + + CHECK(json::to_cbor(json::parse("\"a\"")) == std::vector({0x61, 0x61})); + CHECK(json::parse("\"a\"") == json::from_cbor(std::vector({0x61, 0x61}))); + + CHECK(json::to_cbor(json::parse("\"IETF\"")) == std::vector({0x64, 0x49, 0x45, 0x54, 0x46})); + CHECK(json::parse("\"IETF\"") == json::from_cbor(std::vector({0x64, 0x49, 0x45, 0x54, 0x46}))); + + CHECK(json::to_cbor(json::parse("\"\\u00fc\"")) == std::vector({0x62, 0xc3, 0xbc})); + CHECK(json::parse("\"\\u00fc\"") == json::from_cbor(std::vector({0x62, 0xc3, 0xbc}))); + + CHECK(json::to_cbor(json::parse("\"\\u6c34\"")) == std::vector({0x63, 0xe6, 0xb0, 0xb4})); + CHECK(json::parse("\"\\u6c34\"") == json::from_cbor(std::vector({0x63, 0xe6, 0xb0, 0xb4}))); + + CHECK(json::to_cbor(json::parse("\"\\ud800\\udd51\"")) == std::vector({0x64, 0xf0, 0x90, 0x85, 0x91})); + CHECK(json::parse("\"\\ud800\\udd51\"") == json::from_cbor(std::vector({0x64, 0xf0, 0x90, 0x85, 0x91}))); + + // indefinite length strings + CHECK(json::parse("\"streaming\"") == json::from_cbor(std::vector({0x7f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0xff}))); + } + + SECTION("arrays") + { + CHECK(json::to_cbor(json::parse("[]")) == std::vector({0x80})); + CHECK(json::parse("[]") == json::from_cbor(std::vector({0x80}))); + + CHECK(json::to_cbor(json::parse("[1, 2, 3]")) == std::vector({0x83, 0x01, 0x02, 0x03})); + CHECK(json::parse("[1, 2, 3]") == json::from_cbor(std::vector({0x83, 0x01, 0x02, 0x03}))); + + CHECK(json::to_cbor(json::parse("[1, [2, 3], [4, 5]]")) == std::vector({0x83, 0x01, 0x82, 0x02, 0x03, 0x82, 0x04, 0x05})); + CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({0x83, 0x01, 0x82, 0x02, 0x03, 0x82, 0x04, 0x05}))); + + CHECK(json::to_cbor(json::parse("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]")) == std::vector({0x98, 0x19, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x18, 0x18, 0x19})); + CHECK(json::parse("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]") == json::from_cbor(std::vector({0x98, 0x19, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x18, 0x18, 0x19}))); + + // indefinite length arrays + CHECK(json::parse("[]") == json::from_cbor(std::vector({0x9f, 0xff}))); + CHECK(json::parse("[1, [2, 3], [4, 5]] ") == json::from_cbor(std::vector({0x9f, 0x01, 0x82, 0x02, 0x03, 0x9f, 0x04, 0x05, 0xff, 0xff}))); + CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({0x9f, 0x01, 0x82, 0x02, 0x03, 0x82, 0x04, 0x05, 0xff}))); + CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({0x83, 0x01, 0x82, 0x02, 0x03, 0x9f, 0x04, 0x05, 0xff}))); + CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({0x83, 0x01, 0x9f, 0x02, 0x03, 0xff, 0x82, 0x04, 0x05}))); + CHECK(json::parse("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]") == json::from_cbor(std::vector({0x9f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x18, 0x18, 0x19, 0xff}))); + } + + SECTION("objects") + { + CHECK(json::to_cbor(json::parse("{}")) == std::vector({0xa0})); + CHECK(json::parse("{}") == json::from_cbor(std::vector({0xa0}))); + + CHECK(json::to_cbor(json::parse("{\"a\": 1, \"b\": [2, 3]}")) == std::vector({0xa2, 0x61, 0x61, 0x01, 0x61, 0x62, 0x82, 0x02, 0x03})); + CHECK(json::parse("{\"a\": 1, \"b\": [2, 3]}") == json::from_cbor(std::vector({0xa2, 0x61, 0x61, 0x01, 0x61, 0x62, 0x82, 0x02, 0x03}))); + + CHECK(json::to_cbor(json::parse("[\"a\", {\"b\": \"c\"}]")) == std::vector({0x82, 0x61, 0x61, 0xa1, 0x61, 0x62, 0x61, 0x63})); + CHECK(json::parse("[\"a\", {\"b\": \"c\"}]") == json::from_cbor(std::vector({0x82, 0x61, 0x61, 0xa1, 0x61, 0x62, 0x61, 0x63}))); + + CHECK(json::to_cbor(json::parse("{\"a\": \"A\", \"b\": \"B\", \"c\": \"C\", \"d\": \"D\", \"e\": \"E\"}")) == std::vector({0xa5, 0x61, 0x61, 0x61, 0x41, 0x61, 0x62, 0x61, 0x42, 0x61, 0x63, 0x61, 0x43, 0x61, 0x64, 0x61, 0x44, 0x61, 0x65, 0x61, 0x45})); + CHECK(json::parse("{\"a\": \"A\", \"b\": \"B\", \"c\": \"C\", \"d\": \"D\", \"e\": \"E\"}") == json::from_cbor(std::vector({0xa5, 0x61, 0x61, 0x61, 0x41, 0x61, 0x62, 0x61, 0x42, 0x61, 0x63, 0x61, 0x43, 0x61, 0x64, 0x61, 0x44, 0x61, 0x65, 0x61, 0x45}))); + + // indefinite length objects + CHECK(json::parse("{\"a\": 1, \"b\": [2, 3]}") == json::from_cbor(std::vector({0xbf, 0x61, 0x61, 0x01, 0x61, 0x62, 0x9f, 0x02, 0x03, 0xff, 0xff}))); + CHECK(json::parse("[\"a\", {\"b\": \"c\"}]") == json::from_cbor(std::vector({0x82, 0x61, 0x61, 0xbf, 0x61, 0x62, 0x61, 0x63, 0xff}))); + CHECK(json::parse("{\"Fun\": true, \"Amt\": -2}") == json::from_cbor(std::vector({0xbf, 0x63, 0x46, 0x75, 0x6e, 0xf5, 0x63, 0x41, 0x6d, 0x74, 0x21, 0xff}))); + } +} +*/ From 126ce2e56c8084a480937e2ec887ecc19d7872ab Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Mon, 8 Jan 2018 18:54:17 +0100 Subject: [PATCH 007/106] :construction: further UBJSON --- src/json.hpp | 79 ++++++++++++++++++++++++++++++++++++++++ test/src/unit-ubjson.cpp | 12 ++---- 2 files changed, 83 insertions(+), 8 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index a356bdef..2aef1594 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -6395,6 +6395,85 @@ class binary_writer } } + char ubjson_prefix(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::null: + return 'Z'; + + case value_t::boolean: + return j.m_value.boolean ? 'T' : 'F'; + + case value_t::number_integer: + { + if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'i'; + } + else if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'U'; + } + else if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'I'; + } + else if (-(std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'l'; + } + else if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'L'; + } + break; + } + + case value_t::number_unsigned: + { + if ((std::numeric_limits::min)() <= j.m_value.number_unsigned and j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + return 'i'; + } + else if ((std::numeric_limits::min)() <= j.m_value.number_unsigned and j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + return 'U'; + } + else if ((std::numeric_limits::min)() <= j.m_value.number_unsigned and j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + return 'I'; + } + else if (-(std::numeric_limits::min)() <= j.m_value.number_unsigned and j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + return 'l'; + } + else if ((std::numeric_limits::min)() <= j.m_value.number_unsigned and j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + return 'L'; + } + break; + } + + case value_t::number_float: + return 'D'; + + case value_t::string: + return 'S'; + + case value_t::array: + return '['; + + case value_t::object: + return '{'; + + default: + break; + } + + return '\0'; + } + private: /// whether we can assume little endianess const bool is_little_endian = binary_reader::little_endianess(); diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index ce1b3c38..7e1ffefc 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -414,10 +414,8 @@ TEST_CASE("UBJSON") SECTION("2147483648..9223372036854775807 (int64)") { - for (uint64_t i : - { - 2147483648ul, 9223372036854775807ul - }) + std::vector v = {2147483648ul, 9223372036854775807ul}; + for (uint64_t i : v) { CAPTURE(i); @@ -605,10 +603,8 @@ TEST_CASE("UBJSON") SECTION("2147483648..9223372036854775807 (int64)") { - for (uint64_t i : - { - 2147483648ul, 9223372036854775807ul - }) + std::vector v = {2147483648ul, 9223372036854775807ul}; + for (uint64_t i : v) { CAPTURE(i); From 3d7658da891c435312ab781ebd8ff0e70f8d3cf0 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Mon, 8 Jan 2018 19:48:18 +0100 Subject: [PATCH 008/106] :construction: working on AppVeyor's errors --- test/src/unit-ubjson.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index 7e1ffefc..b7daa1a1 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -88,7 +88,7 @@ TEST_CASE("UBJSON") SECTION("-9223372036854775808..-2147483649 (int64)") { std::vector numbers; - numbers.push_back(INT64_MIN); + numbers.push_back((std::numeric_limits::min)()); numbers.push_back(-1000000000000000000); numbers.push_back(-100000000000000000); numbers.push_back(-10000000000000000); @@ -128,14 +128,14 @@ TEST_CASE("UBJSON") // check individual bytes CHECK(result[0] == 'L'); - uint64_t restored = (static_cast(result[1]) << 070) + - (static_cast(result[2]) << 060) + - (static_cast(result[3]) << 050) + - (static_cast(result[4]) << 040) + - (static_cast(result[5]) << 030) + - (static_cast(result[6]) << 020) + - (static_cast(result[7]) << 010) + - static_cast(result[8]); + int64_t restored = (static_cast(result[1]) << 070) + + (static_cast(result[2]) << 060) + + (static_cast(result[3]) << 050) + + (static_cast(result[4]) << 040) + + (static_cast(result[5]) << 030) + + (static_cast(result[6]) << 020) + + (static_cast(result[7]) << 010) + + static_cast(result[8]); CHECK(restored == i); // roundtrip @@ -145,7 +145,7 @@ TEST_CASE("UBJSON") SECTION("-2147483648..-32769 (int32)") { - std::vector numbers; + std::vector numbers; numbers.push_back(-32769); numbers.push_back(-100000); numbers.push_back(-1000000); From 5bffc95773c6dc57c9a1e6162fa7ff81389373ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 14:41:01 +0200 Subject: [PATCH 009/106] add json_fwd.hpp --- Makefile | 8 ++++-- src/json.hpp | 54 ++--------------------------------------- src/json_fwd.hpp | 63 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 54 deletions(-) create mode 100644 src/json_fwd.hpp diff --git a/Makefile b/Makefile index b07fb6b0..b8b74628 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,10 @@ .PHONY: pretty clean ChangeLog.md +SRCDIR = src +SRCS = ${SRCDIR}/json.hpp \ + ${SRCDIR}/json_fwd.hpp + +# main target all: @echo "ChangeLog.md - generate ChangeLog file" @echo "check - compile and execute test suite" @@ -218,10 +223,9 @@ pretty: --indent-col1-comments --pad-oper --pad-header --align-pointer=type \ --align-reference=type --add-brackets --convert-tabs --close-templates \ --lineend=linux --preserve-date --suffix=none --formatted \ - src/json.hpp test/src/*.cpp \ + $(SRCS) test/src/*.cpp \ benchmarks/src/benchmarks.cpp doc/examples/*.cpp - ########################################################################## # changelog ########################################################################## diff --git a/src/json.hpp b/src/json.hpp index a12fcbe3..3768af0a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -36,7 +36,6 @@ SOFTWARE. #include // lconv, localeconv #include // isfinite, labs, ldexp, signbit #include // nullptr_t, ptrdiff_t, size_t -#include // int64_t, uint64_t #include // abort, strtod, strtof, strtold, strtoul, strtoll, strtoull #include // memcpy, strlen #include // forward_list @@ -47,15 +46,13 @@ SOFTWARE. #include // advance, begin, back_inserter, bidirectional_iterator_tag, distance, end, inserter, iterator, iterator_traits, next, random_access_iterator_tag, reverse_iterator #include // numeric_limits #include // locale -#include // map -#include // addressof, allocator, allocator_traits, unique_ptr #include // accumulate #include // stringstream -#include // getline, stoi, string, to_string #include // add_pointer, conditional, decay, enable_if, false_type, integral_constant, is_arithmetic, is_base_of, is_const, is_constructible, is_convertible, is_default_constructible, is_enum, is_floating_point, is_integral, is_nothrow_move_assignable, is_nothrow_move_constructible, is_pointer, is_reference, is_same, is_scalar, is_signed, remove_const, remove_cv, remove_pointer, remove_reference, true_type, underlying_type #include // declval, forward, make_pair, move, pair, swap #include // valarray -#include // vector + +#include "json_fwd.hpp" // exclude unsupported compilers #if defined(__clang__) @@ -124,20 +121,6 @@ SOFTWARE. */ namespace nlohmann { -template -struct adl_serializer; - -// forward declaration of basic_json (required to split the class) -template class ObjectType = std::map, - template class ArrayType = std::vector, - class StringType = std::string, class BooleanType = bool, - class NumberIntegerType = std::int64_t, - class NumberUnsignedType = std::uint64_t, - class NumberFloatType = double, - template class AllocatorType = std::allocator, - template class JSONSerializer = adl_serializer> -class basic_json; - // Ugly macros to avoid uglier copy-paste when specializing basic_json. They // may be removed in the future once the class is split. @@ -6896,14 +6879,6 @@ constexpr const auto& to_json = detail::static_const::value; constexpr const auto& from_json = detail::static_const::value; } - -/*! -@brief default JSONSerializer template argument - -This serializer ignores the template arguments and uses ADL -([argument-dependent lookup](http://en.cppreference.com/w/cpp/language/adl)) -for serialization. -*/ template struct adl_serializer { @@ -6940,17 +6915,6 @@ struct adl_serializer } }; -/*! -@brief JSON Pointer - -A JSON pointer defines a string syntax for identifying a specific value -within a JSON document. It can be used with functions `at` and -`operator[]`. Furthermore, JSON pointers are the base for JSON patches. - -@sa [RFC 6901](https://tools.ietf.org/html/rfc6901) - -@since version 2.0.0 -*/ class json_pointer { /// allow basic_json to access private members @@ -14411,20 +14375,6 @@ class basic_json /// @} }; -///////////// -// presets // -///////////// - -/*! -@brief default JSON class - -This type is the default specialization of the @ref basic_json class which -uses the standard template types. - -@since version 1.0.0 -*/ -using json = basic_json<>; - ////////////////// // json_pointer // ////////////////// diff --git a/src/json_fwd.hpp b/src/json_fwd.hpp new file mode 100644 index 00000000..a068da18 --- /dev/null +++ b/src/json_fwd.hpp @@ -0,0 +1,63 @@ +#ifndef NLOHMANN_JSON_FWD_HPP +#define NLOHMANN_JSON_FWD_HPP + +#include // int64_t, uint64_t +#include // map +#include // addressof, allocator, allocator_traits, unique_ptr +#include // getline, stoi, string, to_string +#include // vector + +/*! +@brief namespace for Niels Lohmann +@see https://github.com/nlohmann +@since version 1.0.0 +*/ +namespace nlohmann +{ +/*! +@brief default JSONSerializer template argument + +This serializer ignores the template arguments and uses ADL +([argument-dependent lookup](http://en.cppreference.com/w/cpp/language/adl)) +for serialization. +*/ +template +struct adl_serializer; + +template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer> +class basic_json; + +/*! +@brief JSON Pointer + +A JSON pointer defines a string syntax for identifying a specific value +within a JSON document. It can be used with functions `at` and +`operator[]`. Furthermore, JSON pointers are the base for JSON patches. + +@sa [RFC 6901](https://tools.ietf.org/html/rfc6901) + +@since version 2.0.0 +*/ +class json_pointer; + +/*! +@brief default JSON class + +This type is the default specialization of the @ref basic_json class which +uses the standard template types. + +@since version 1.0.0 +*/ +using json = basic_json<>; +} + +#endif From d686713f9138dd728b55a89af9738c755aea22f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 14:59:17 +0200 Subject: [PATCH 010/106] add detail/macro_{un}scope.hpp --- Makefile | 4 +- src/detail/macro_scope.hpp | 104 ++++++++++++++++++++++++++++++ src/detail/macro_unscope.hpp | 25 ++++++++ src/json.hpp | 120 +---------------------------------- 4 files changed, 134 insertions(+), 119 deletions(-) create mode 100644 src/detail/macro_scope.hpp create mode 100644 src/detail/macro_unscope.hpp diff --git a/Makefile b/Makefile index b8b74628..3f1e3337 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,9 @@ SRCDIR = src SRCS = ${SRCDIR}/json.hpp \ - ${SRCDIR}/json_fwd.hpp + ${SRCDIR}/json_fwd.hpp \ + ${SRCDIR}/detail/macro_scope.hpp \ + ${SRCDIR}/detail/macro_unscope.hpp # main target all: diff --git a/src/detail/macro_scope.hpp b/src/detail/macro_scope.hpp new file mode 100644 index 00000000..b2ac7742 --- /dev/null +++ b/src/detail/macro_scope.hpp @@ -0,0 +1,104 @@ +#ifndef NLOHMANN_JSON_MACRO_SCOPE_HPP +#define NLOHMANN_JSON_MACRO_SCOPE_HPP + +// This file contains all internal macro definitions +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// exclude unsupported compilers +#if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif +#elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40900 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif +#endif + +// disable float-equal warnings on GCC/clang +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wfloat-equal" +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdocumentation" +#endif + +// allow for portable deprecation warnings +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define JSON_DEPRECATED __attribute__((deprecated)) +#elif defined(_MSC_VER) + #define JSON_DEPRECATED __declspec(deprecated) +#else + #define JSON_DEPRECATED +#endif + +// allow to disable exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) +#else + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) +#endif + +// manual branch prediction +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define JSON_LIKELY(x) __builtin_expect(!!(x), 1) + #define JSON_UNLIKELY(x) __builtin_expect(!!(x), 0) +#else + #define JSON_LIKELY(x) x + #define JSON_UNLIKELY(x) x +#endif + +// C++ language standard detection +#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 +#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 +#endif + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +/*! +@brief Helper to determine whether there's a key_type for T. + +This helper is used to tell associative containers apart from other containers +such as sequence containers. For instance, `std::map` passes the test as it +contains a `mapped_type`, whereas `std::vector` fails the test. + +@sa http://stackoverflow.com/a/7728728/266378 +@since version 1.0.0, overworked in version 2.0.6 +*/ +#define NLOHMANN_JSON_HAS_HELPER(type) \ + template struct has_##type { \ + private: \ + template \ + static int detect(U &&); \ + static void detect(...); \ + public: \ + static constexpr bool value = \ + std::is_integral()))>::value; \ + } + +#endif diff --git a/src/detail/macro_unscope.hpp b/src/detail/macro_unscope.hpp new file mode 100644 index 00000000..9b8cf7b9 --- /dev/null +++ b/src/detail/macro_unscope.hpp @@ -0,0 +1,25 @@ +#ifndef NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP +#define NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP + +// restore GCC/clang diagnostic settings +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #pragma GCC diagnostic pop +#endif +#if defined(__clang__) + #pragma GCC diagnostic pop +#endif + +// clean up +#undef JSON_CATCH +#undef JSON_THROW +#undef JSON_TRY +#undef JSON_LIKELY +#undef JSON_UNLIKELY +#undef JSON_DEPRECATED +#undef JSON_HAS_CPP_14 +#undef JSON_HAS_CPP_17 +#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION +#undef NLOHMANN_BASIC_JSON_TPL +#undef NLOHMANN_JSON_HAS_HELPER + +#endif diff --git a/src/json.hpp b/src/json.hpp index 3768af0a..3555400a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -53,66 +53,7 @@ SOFTWARE. #include // valarray #include "json_fwd.hpp" - -// exclude unsupported compilers -#if defined(__clang__) - #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 - #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" - #endif -#elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) - #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40900 - #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" - #endif -#endif - -// disable float-equal warnings on GCC/clang -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wfloat-equal" -#endif - -// disable documentation warnings on clang -#if defined(__clang__) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wdocumentation" -#endif - -// allow for portable deprecation warnings -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #define JSON_DEPRECATED __attribute__((deprecated)) -#elif defined(_MSC_VER) - #define JSON_DEPRECATED __declspec(deprecated) -#else - #define JSON_DEPRECATED -#endif - -// allow to disable exceptions -#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION) - #define JSON_THROW(exception) throw exception - #define JSON_TRY try - #define JSON_CATCH(exception) catch(exception) -#else - #define JSON_THROW(exception) std::abort() - #define JSON_TRY if(true) - #define JSON_CATCH(exception) if(false) -#endif - -// manual branch prediction -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #define JSON_LIKELY(x) __builtin_expect(!!(x), 1) - #define JSON_UNLIKELY(x) __builtin_expect(!!(x), 0) -#else - #define JSON_LIKELY(x) x - #define JSON_UNLIKELY(x) x -#endif - -// C++ language standard detection -#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 - #define JSON_HAS_CPP_17 - #define JSON_HAS_CPP_14 -#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) - #define JSON_HAS_CPP_14 -#endif +#include "detail/macro_scope.hpp" /*! @brief namespace for Niels Lohmann @@ -121,23 +62,6 @@ SOFTWARE. */ namespace nlohmann { -// Ugly macros to avoid uglier copy-paste when specializing basic_json. They -// may be removed in the future once the class is split. - -#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ - template class ObjectType, \ - template class ArrayType, \ - class StringType, class BooleanType, class NumberIntegerType, \ - class NumberUnsignedType, class NumberFloatType, \ - template class AllocatorType, \ - template class JSONSerializer> - -#define NLOHMANN_BASIC_JSON_TPL \ - basic_json - - /*! @brief unnamed namespace with internal helper functions @@ -771,35 +695,11 @@ struct external_constructor // has_/is_ functions // //////////////////////// -/*! -@brief Helper to determine whether there's a key_type for T. - -This helper is used to tell associative containers apart from other containers -such as sequence containers. For instance, `std::map` passes the test as it -contains a `mapped_type`, whereas `std::vector` fails the test. - -@sa http://stackoverflow.com/a/7728728/266378 -@since version 1.0.0, overworked in version 2.0.6 -*/ -#define NLOHMANN_JSON_HAS_HELPER(type) \ - template struct has_##type { \ - private: \ - template \ - static int detect(U &&); \ - static void detect(...); \ - public: \ - static constexpr bool value = \ - std::is_integral()))>::value; \ - } - NLOHMANN_JSON_HAS_HELPER(mapped_type); NLOHMANN_JSON_HAS_HELPER(key_type); NLOHMANN_JSON_HAS_HELPER(value_type); NLOHMANN_JSON_HAS_HELPER(iterator); -#undef NLOHMANN_JSON_HAS_HELPER - - template struct is_compatible_object_type_impl : std::false_type {}; @@ -14865,22 +14765,6 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std return nlohmann::json::json_pointer(std::string(s, n)); } -// restore GCC/clang diagnostic settings -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #pragma GCC diagnostic pop -#endif -#if defined(__clang__) - #pragma GCC diagnostic pop -#endif - -// clean up -#undef JSON_CATCH -#undef JSON_THROW -#undef JSON_TRY -#undef JSON_LIKELY -#undef JSON_UNLIKELY -#undef JSON_DEPRECATED -#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION -#undef NLOHMANN_BASIC_JSON_TPL +#include "detail/macro_unscope.hpp" #endif From f364f5ac5a4aa17c2af5a2d94d7b7f478e58ac43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 15:06:35 +0200 Subject: [PATCH 011/106] add detail/meta.hpp --- Makefile | 4 +- src/detail/meta.hpp | 226 ++++++++++++++++++++++++++++++++++++++++++++ src/json.hpp | 212 +---------------------------------------- 3 files changed, 230 insertions(+), 212 deletions(-) create mode 100644 src/detail/meta.hpp diff --git a/Makefile b/Makefile index 3f1e3337..6600e00b 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,9 @@ SRCDIR = src SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/json_fwd.hpp \ ${SRCDIR}/detail/macro_scope.hpp \ - ${SRCDIR}/detail/macro_unscope.hpp + ${SRCDIR}/detail/macro_unscope.hpp \ + ${SRCDIR}/detail/meta.hpp + # main target all: diff --git a/src/detail/meta.hpp b/src/detail/meta.hpp new file mode 100644 index 00000000..9a3a97fa --- /dev/null +++ b/src/detail/meta.hpp @@ -0,0 +1,226 @@ +#ifndef NLOHMANN_JSON_DETAIL_META_HPP +#define NLOHMANN_JSON_DETAIL_META_HPP + +#include +#include +#include // add_pointer, conditional, decay, enable_if, false_type, integral_constant, is_arithmetic, is_base_of, is_const, is_constructible, is_convertible, is_default_constructible, is_enum, is_floating_point, is_integral, is_nothrow_move_assignable, is_nothrow_move_constructible, is_pointer, is_reference, is_same, is_scalar, is_signed, remove_const, remove_cv, remove_pointer, remove_reference, true_type, underlying_type +#include + +#include "json_fwd.hpp" +#include "detail/macro_scope.hpp" + +namespace nlohmann +{ +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ +///////////// +// helpers // +///////////// + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +template +using uncvref_t = typename std::remove_cv::type>::type; + +// implementation of C++14 index_sequence and affiliates +// source: https://stackoverflow.com/a/32223343 +template +struct index_sequence +{ + using type = index_sequence; + using value_type = std::size_t; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +template +struct merge_and_renumber; + +template +struct merge_and_renumber, index_sequence> + : index_sequence < I1..., (sizeof...(I1) + I2)... > {}; + +template +struct make_index_sequence + : merge_and_renumber < typename make_index_sequence < N / 2 >::type, + typename make_index_sequence < N - N / 2 >::type > {}; + +template<> struct make_index_sequence<0> : index_sequence<> {}; +template<> struct make_index_sequence<1> : index_sequence<0> {}; + +template +using index_sequence_for = make_index_sequence; + +/* +Implementation of two C++17 constructs: conjunction, negation. This is needed +to avoid evaluating all the traits in a condition + +For example: not std::is_same::value and has_value_type::value +will not compile when T = void (on MSVC at least). Whereas +conjunction>, has_value_type>::value will +stop evaluating if negation<...>::value == false + +Please note that those constructs must be used with caution, since symbols can +become very long quickly (which can slow down compilation and cause MSVC +internal compiler errors). Only use it when you have to (see example ahead). +*/ +template struct conjunction : std::true_type {}; +template struct conjunction : B1 {}; +template +struct conjunction : std::conditional, B1>::type {}; + +template struct negation : std::integral_constant {}; + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +//////////////////////// +// has_/is_ functions // +//////////////////////// + +NLOHMANN_JSON_HAS_HELPER(mapped_type); +NLOHMANN_JSON_HAS_HELPER(key_type); +NLOHMANN_JSON_HAS_HELPER(value_type); +NLOHMANN_JSON_HAS_HELPER(iterator); + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl +{ + static constexpr auto value = + std::is_constructible::value and + std::is_constructible::value; +}; + +template +struct is_compatible_object_type +{ + static auto constexpr value = is_compatible_object_type_impl < + conjunction>, + has_mapped_type, + has_key_type>::value, + typename BasicJsonType::object_t, CompatibleObjectType >::value; +}; + +template +struct is_basic_json_nested_type +{ + static auto constexpr value = std::is_same::value or + std::is_same::value or + std::is_same::value or + std::is_same::value; +}; + +template +struct is_compatible_array_type +{ + static auto constexpr value = + conjunction>, + negation>, + negation>, + negation>, + has_value_type, + has_iterator>::value; +}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + std::is_constructible::value and + CompatibleLimits::is_integer and + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type +{ + static constexpr auto value = + is_compatible_integer_type_impl < + std::is_integral::value and + not std::is_same::value, + RealIntegerType, CompatibleNumberIntegerType > ::value; +}; + + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json +{ + private: + // also check the return type of from_json + template::from_json( + std::declval(), std::declval()))>::value>> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json +{ + private: + template < + typename U, + typename = enable_if_t::from_json(std::declval()))>::value >> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +template +struct has_to_json +{ + private: + template::to_json( + std::declval(), std::declval()))> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index 3555400a..7b37521a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -48,12 +48,12 @@ SOFTWARE. #include // locale #include // accumulate #include // stringstream -#include // add_pointer, conditional, decay, enable_if, false_type, integral_constant, is_arithmetic, is_base_of, is_const, is_constructible, is_convertible, is_default_constructible, is_enum, is_floating_point, is_integral, is_nothrow_move_assignable, is_nothrow_move_constructible, is_pointer, is_reference, is_same, is_scalar, is_signed, remove_const, remove_cv, remove_pointer, remove_reference, true_type, underlying_type #include // declval, forward, make_pair, move, pair, swap #include // valarray #include "json_fwd.hpp" #include "detail/macro_scope.hpp" +#include "detail/meta.hpp" /*! @brief namespace for Niels Lohmann @@ -62,14 +62,6 @@ SOFTWARE. */ namespace nlohmann { -/*! -@brief unnamed namespace with internal helper functions - -This namespace collects some functions that could not be defined inside the -@ref basic_json class. - -@since version 2.1.0 -*/ namespace detail { //////////////// @@ -455,79 +447,6 @@ inline bool operator<(const value_t lhs, const value_t rhs) noexcept return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index]; } - -///////////// -// helpers // -///////////// - -template struct is_basic_json : std::false_type {}; - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -struct is_basic_json : std::true_type {}; - -// alias templates to reduce boilerplate -template -using enable_if_t = typename std::enable_if::type; - -template -using uncvref_t = typename std::remove_cv::type>::type; - -// implementation of C++14 index_sequence and affiliates -// source: https://stackoverflow.com/a/32223343 -template -struct index_sequence -{ - using type = index_sequence; - using value_type = std::size_t; - static constexpr std::size_t size() noexcept - { - return sizeof...(Ints); - } -}; - -template -struct merge_and_renumber; - -template -struct merge_and_renumber, index_sequence> - : index_sequence < I1..., (sizeof...(I1) + I2)... > {}; - -template -struct make_index_sequence - : merge_and_renumber < typename make_index_sequence < N / 2 >::type, - typename make_index_sequence < N - N / 2 >::type > {}; - -template<> struct make_index_sequence<0> : index_sequence<> {}; -template<> struct make_index_sequence<1> : index_sequence<0> {}; - -template -using index_sequence_for = make_index_sequence; - -/* -Implementation of two C++17 constructs: conjunction, negation. This is needed -to avoid evaluating all the traits in a condition - -For example: not std::is_same::value and has_value_type::value -will not compile when T = void (on MSVC at least). Whereas -conjunction>, has_value_type>::value will -stop evaluating if negation<...>::value == false - -Please note that those constructs must be used with caution, since symbols can -become very long quickly (which can slow down compilation and cause MSVC -internal compiler errors). Only use it when you have to (see example ahead). -*/ -template struct conjunction : std::true_type {}; -template struct conjunction : B1 {}; -template -struct conjunction : std::conditional, B1>::type {}; - -template struct negation : std::integral_constant {}; - -// dispatch utility (taken from ranges-v3) -template struct priority_tag : priority_tag < N - 1 > {}; -template<> struct priority_tag<0> {}; - - ////////////////// // constructors // ////////////////// @@ -690,135 +609,6 @@ struct external_constructor } }; - -//////////////////////// -// has_/is_ functions // -//////////////////////// - -NLOHMANN_JSON_HAS_HELPER(mapped_type); -NLOHMANN_JSON_HAS_HELPER(key_type); -NLOHMANN_JSON_HAS_HELPER(value_type); -NLOHMANN_JSON_HAS_HELPER(iterator); - -template -struct is_compatible_object_type_impl : std::false_type {}; - -template -struct is_compatible_object_type_impl -{ - static constexpr auto value = - std::is_constructible::value and - std::is_constructible::value; -}; - -template -struct is_compatible_object_type -{ - static auto constexpr value = is_compatible_object_type_impl < - conjunction>, - has_mapped_type, - has_key_type>::value, - typename BasicJsonType::object_t, CompatibleObjectType >::value; -}; - -template -struct is_basic_json_nested_type -{ - static auto constexpr value = std::is_same::value or - std::is_same::value or - std::is_same::value or - std::is_same::value; -}; - -template -struct is_compatible_array_type -{ - static auto constexpr value = - conjunction>, - negation>, - negation>, - negation>, - has_value_type, - has_iterator>::value; -}; - -template -struct is_compatible_integer_type_impl : std::false_type {}; - -template -struct is_compatible_integer_type_impl -{ - // is there an assert somewhere on overflows? - using RealLimits = std::numeric_limits; - using CompatibleLimits = std::numeric_limits; - - static constexpr auto value = - std::is_constructible::value and - CompatibleLimits::is_integer and - RealLimits::is_signed == CompatibleLimits::is_signed; -}; - -template -struct is_compatible_integer_type -{ - static constexpr auto value = - is_compatible_integer_type_impl < - std::is_integral::value and - not std::is_same::value, - RealIntegerType, CompatibleNumberIntegerType >::value; -}; - - -// trait checking if JSONSerializer::from_json(json const&, udt&) exists -template -struct has_from_json -{ - private: - // also check the return type of from_json - template::from_json( - std::declval(), std::declval()))>::value>> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -// This trait checks if JSONSerializer::from_json(json const&) exists -// this overload is used for non-default-constructible user-defined-types -template -struct has_non_default_from_json -{ - private: - template::from_json(std::declval()))>::value>> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -// This trait checks if BasicJsonType::json_serializer::to_json exists -template -struct has_to_json -{ - private: - template::to_json( - std::declval(), std::declval()))> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - - ///////////// // to_json // ///////////// From 8c555db970c557d25e6e0a02915998a12a4ffa04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 15:19:40 +0200 Subject: [PATCH 012/106] add detail/exceptions.hpp --- Makefile | 4 +- src/detail/exceptions.hpp | 331 ++++++++++++++++++++++++++++++++++++++ src/json.hpp | 320 +----------------------------------- 3 files changed, 335 insertions(+), 320 deletions(-) create mode 100644 src/detail/exceptions.hpp diff --git a/Makefile b/Makefile index 6600e00b..b2ab6f72 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,9 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/json_fwd.hpp \ ${SRCDIR}/detail/macro_scope.hpp \ ${SRCDIR}/detail/macro_unscope.hpp \ - ${SRCDIR}/detail/meta.hpp + ${SRCDIR}/detail/meta.hpp \ + ${SRCDIR}/detail/exceptions.hpp + # main target diff --git a/src/detail/exceptions.hpp b/src/detail/exceptions.hpp new file mode 100644 index 00000000..8eee702a --- /dev/null +++ b/src/detail/exceptions.hpp @@ -0,0 +1,331 @@ +#ifndef NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP +#define NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP + +#include // exception +#include // runtime_error +#include // to_string + +namespace nlohmann +{ +namespace detail +{ +//////////////// +// exceptions // +//////////////// + +/*! +@brief general exception of the @ref basic_json class + +This class is an extension of `std::exception` objects with a member @a id for +exception ids. It is used as the base class for all exceptions thrown by the +@ref basic_json class. This class can hence be used as "wildcard" to catch +exceptions. + +Subclasses: +- @ref parse_error for exceptions indicating a parse error +- @ref invalid_iterator for exceptions indicating errors with iterators +- @ref type_error for exceptions indicating executing a member function with + a wrong type +- @ref out_of_range for exceptions indicating access out of the defined range +- @ref other_error for exceptions indicating other library errors + +@internal +@note To have nothrow-copy-constructible exceptions, we internally use + `std::runtime_error` which can cope with arbitrary-length error messages. + Intermediate strings are built with static functions and then passed to + the actual constructor. +@endinternal + +@liveexample{The following code shows how arbitrary library exceptions can be +caught.,exception} + +@since version 3.0.0 +*/ +class exception : public std::exception +{ + public: + /// returns the explanatory string + const char* what() const noexcept override + { + return m.what(); + } + + /// the id of the exception + const int id; + + protected: + exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} + + static std::string name(const std::string& ename, int id_) + { + return "[json.exception." + ename + "." + std::to_string(id_) + "] "; + } + + private: + /// an exception object as storage for error messages + std::runtime_error m; +}; + +/*! +@brief exception indicating a parse error + +This exception is thrown by the library when a parse error occurs. Parse errors +can occur during the deserialization of JSON text, CBOR, MessagePack, as well +as when using JSON Patch. + +Member @a byte holds the byte index of the last read character in the input +file. + +Exceptions have ids 1xx. + +name / id | example message | description +------------------------------ | --------------- | ------------------------- +json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position. +json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point. +json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. +json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects. +json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors. +json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`. +json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character. +json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. +json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number. +json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. +json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. +json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. + +@note For an input with n bytes, 1 is the index of the first character and n+1 + is the index of the terminating null byte or the end of file. This also + holds true when reading a byte vector (CBOR or MessagePack). + +@liveexample{The following code shows how a `parse_error` exception can be +caught.,parse_error} + +@sa @ref exception for the base class of the library exceptions +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class parse_error : public exception +{ + public: + /*! + @brief create a parse error exception + @param[in] id_ the id of the exception + @param[in] byte_ the byte index where the error occurred (or 0 if the + position cannot be determined) + @param[in] what_arg the explanatory string + @return parse_error object + */ + static parse_error create(int id_, std::size_t byte_, const std::string& what_arg) + { + std::string w = exception::name("parse_error", id_) + "parse error" + + (byte_ != 0 ? (" at " + std::to_string(byte_)) : "") + + ": " + what_arg; + return parse_error(id_, byte_, w.c_str()); + } + + /*! + @brief byte index of the parse error + + The byte index of the last read character in the input file. + + @note For an input with n bytes, 1 is the index of the first character and + n+1 is the index of the terminating null byte or the end of file. + This also holds true when reading a byte vector (CBOR or MessagePack). + */ + const std::size_t byte; + + private: + parse_error(int id_, std::size_t byte_, const char* what_arg) + : exception(id_, what_arg), byte(byte_) {} +}; + +/*! +@brief exception indicating errors with iterators + +This exception is thrown if iterators passed to a library function do not match +the expected semantics. + +Exceptions have ids 2xx. + +name / id | example message | description +----------------------------------- | --------------- | ------------------------- +json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. +json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion. +json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from. +json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid. +json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid. +json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range. +json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key. +json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. +json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. +json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. +json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to. +json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container. +json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered. +json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin(). + +@liveexample{The following code shows how an `invalid_iterator` exception can be +caught.,invalid_iterator} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class invalid_iterator : public exception +{ + public: + static invalid_iterator create(int id_, const std::string& what_arg) + { + std::string w = exception::name("invalid_iterator", id_) + what_arg; + return invalid_iterator(id_, w.c_str()); + } + + private: + invalid_iterator(int id_, const char* what_arg) + : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating executing a member function with a wrong type + +This exception is thrown in case of a type error; that is, a library function is +executed on a JSON value whose type does not match the expected semantics. + +Exceptions have ids 3xx. + +name / id | example message | description +----------------------------- | --------------- | ------------------------- +json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead. +json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types. +json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t&. +json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types. +json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types. +json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types. +json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types. +json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types. +json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types. +json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types. +json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types. +json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types. +json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined. +json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers. +json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive. +json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. | + +@liveexample{The following code shows how a `type_error` exception can be +caught.,type_error} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class type_error : public exception +{ + public: + static type_error create(int id_, const std::string& what_arg) + { + std::string w = exception::name("type_error", id_) + what_arg; + return type_error(id_, w.c_str()); + } + + private: + type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating access out of the defined range + +This exception is thrown in case a library function is called on an input +parameter that exceeds the expected range, for instance in case of array +indices or nonexisting object keys. + +Exceptions have ids 4xx. + +name / id | example message | description +------------------------------- | --------------- | ------------------------- +json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1. +json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it. +json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object. +json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. +json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. +json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. + +@liveexample{The following code shows how an `out_of_range` exception can be +caught.,out_of_range} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class out_of_range : public exception +{ + public: + static out_of_range create(int id_, const std::string& what_arg) + { + std::string w = exception::name("out_of_range", id_) + what_arg; + return out_of_range(id_, w.c_str()); + } + + private: + out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating other library errors + +This exception is thrown in case of errors that cannot be classified with the +other exception types. + +Exceptions have ids 5xx. + +name / id | example message | description +------------------------------ | --------------- | ------------------------- +json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed. + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range + +@liveexample{The following code shows how an `other_error` exception can be +caught.,other_error} + +@since version 3.0.0 +*/ +class other_error : public exception +{ + public: + static other_error create(int id_, const std::string& what_arg) + { + std::string w = exception::name("other_error", id_) + what_arg; + return other_error(id_, w.c_str()); + } + + private: + other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index 7b37521a..48074c81 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -54,6 +54,7 @@ SOFTWARE. #include "json_fwd.hpp" #include "detail/macro_scope.hpp" #include "detail/meta.hpp" +#include "detail/exceptions.hpp" /*! @brief namespace for Niels Lohmann @@ -64,325 +65,6 @@ namespace nlohmann { namespace detail { -//////////////// -// exceptions // -//////////////// - -/*! -@brief general exception of the @ref basic_json class - -This class is an extension of `std::exception` objects with a member @a id for -exception ids. It is used as the base class for all exceptions thrown by the -@ref basic_json class. This class can hence be used as "wildcard" to catch -exceptions. - -Subclasses: -- @ref parse_error for exceptions indicating a parse error -- @ref invalid_iterator for exceptions indicating errors with iterators -- @ref type_error for exceptions indicating executing a member function with - a wrong type -- @ref out_of_range for exceptions indicating access out of the defined range -- @ref other_error for exceptions indicating other library errors - -@internal -@note To have nothrow-copy-constructible exceptions, we internally use - `std::runtime_error` which can cope with arbitrary-length error messages. - Intermediate strings are built with static functions and then passed to - the actual constructor. -@endinternal - -@liveexample{The following code shows how arbitrary library exceptions can be -caught.,exception} - -@since version 3.0.0 -*/ -class exception : public std::exception -{ - public: - /// returns the explanatory string - const char* what() const noexcept override - { - return m.what(); - } - - /// the id of the exception - const int id; - - protected: - exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} - - static std::string name(const std::string& ename, int id_) - { - return "[json.exception." + ename + "." + std::to_string(id_) + "] "; - } - - private: - /// an exception object as storage for error messages - std::runtime_error m; -}; - -/*! -@brief exception indicating a parse error - -This exception is thrown by the library when a parse error occurs. Parse errors -can occur during the deserialization of JSON text, CBOR, MessagePack, as well -as when using JSON Patch. - -Member @a byte holds the byte index of the last read character in the input -file. - -Exceptions have ids 1xx. - -name / id | example message | description ------------------------------- | --------------- | ------------------------- -json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position. -json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point. -json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. -json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects. -json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors. -json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`. -json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character. -json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. -json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number. -json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. -json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. -json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. - -@note For an input with n bytes, 1 is the index of the first character and n+1 - is the index of the terminating null byte or the end of file. This also - holds true when reading a byte vector (CBOR or MessagePack). - -@liveexample{The following code shows how a `parse_error` exception can be -caught.,parse_error} - -@sa @ref exception for the base class of the library exceptions -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class parse_error : public exception -{ - public: - /*! - @brief create a parse error exception - @param[in] id_ the id of the exception - @param[in] byte_ the byte index where the error occurred (or 0 if the - position cannot be determined) - @param[in] what_arg the explanatory string - @return parse_error object - */ - static parse_error create(int id_, std::size_t byte_, const std::string& what_arg) - { - std::string w = exception::name("parse_error", id_) + "parse error" + - (byte_ != 0 ? (" at " + std::to_string(byte_)) : "") + - ": " + what_arg; - return parse_error(id_, byte_, w.c_str()); - } - - /*! - @brief byte index of the parse error - - The byte index of the last read character in the input file. - - @note For an input with n bytes, 1 is the index of the first character and - n+1 is the index of the terminating null byte or the end of file. - This also holds true when reading a byte vector (CBOR or MessagePack). - */ - const std::size_t byte; - - private: - parse_error(int id_, std::size_t byte_, const char* what_arg) - : exception(id_, what_arg), byte(byte_) {} -}; - -/*! -@brief exception indicating errors with iterators - -This exception is thrown if iterators passed to a library function do not match -the expected semantics. - -Exceptions have ids 2xx. - -name / id | example message | description ------------------------------------ | --------------- | ------------------------- -json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. -json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion. -json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from. -json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid. -json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid. -json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range. -json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key. -json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. -json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. -json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. -json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to. -json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container. -json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered. -json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin(). - -@liveexample{The following code shows how an `invalid_iterator` exception can be -caught.,invalid_iterator} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class invalid_iterator : public exception -{ - public: - static invalid_iterator create(int id_, const std::string& what_arg) - { - std::string w = exception::name("invalid_iterator", id_) + what_arg; - return invalid_iterator(id_, w.c_str()); - } - - private: - invalid_iterator(int id_, const char* what_arg) - : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating executing a member function with a wrong type - -This exception is thrown in case of a type error; that is, a library function is -executed on a JSON value whose type does not match the expected semantics. - -Exceptions have ids 3xx. - -name / id | example message | description ------------------------------ | --------------- | ------------------------- -json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead. -json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types. -json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t&. -json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types. -json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types. -json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types. -json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types. -json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types. -json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types. -json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types. -json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types. -json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types. -json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined. -json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers. -json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive. -json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. | - -@liveexample{The following code shows how a `type_error` exception can be -caught.,type_error} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class type_error : public exception -{ - public: - static type_error create(int id_, const std::string& what_arg) - { - std::string w = exception::name("type_error", id_) + what_arg; - return type_error(id_, w.c_str()); - } - - private: - type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating access out of the defined range - -This exception is thrown in case a library function is called on an input -parameter that exceeds the expected range, for instance in case of array -indices or nonexisting object keys. - -Exceptions have ids 4xx. - -name / id | example message | description -------------------------------- | --------------- | ------------------------- -json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1. -json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it. -json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object. -json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. -json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. -json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. - -@liveexample{The following code shows how an `out_of_range` exception can be -caught.,out_of_range} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class out_of_range : public exception -{ - public: - static out_of_range create(int id_, const std::string& what_arg) - { - std::string w = exception::name("out_of_range", id_) + what_arg; - return out_of_range(id_, w.c_str()); - } - - private: - out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating other library errors - -This exception is thrown in case of errors that cannot be classified with the -other exception types. - -Exceptions have ids 5xx. - -name / id | example message | description ------------------------------- | --------------- | ------------------------- -json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed. - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range - -@liveexample{The following code shows how an `other_error` exception can be -caught.,other_error} - -@since version 3.0.0 -*/ -class other_error : public exception -{ - public: - static other_error create(int id_, const std::string& what_arg) - { - std::string w = exception::name("other_error", id_) + what_arg; - return other_error(id_, w.c_str()); - } - - private: - other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - - - /////////////////////////// // JSON type enumeration // /////////////////////////// From 7056b375c43ec048cd5c7b2e93eb1e45c5a251e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 15:58:56 +0200 Subject: [PATCH 013/106] add detail/value_t.hpp --- Makefile | 3 +- src/detail/value_t.hpp | 78 ++++++++++++++++++++++++++++++++++++++++++ src/json.hpp | 65 +---------------------------------- 3 files changed, 81 insertions(+), 65 deletions(-) create mode 100644 src/detail/value_t.hpp diff --git a/Makefile b/Makefile index b2ab6f72..f10899f5 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/macro_scope.hpp \ ${SRCDIR}/detail/macro_unscope.hpp \ ${SRCDIR}/detail/meta.hpp \ - ${SRCDIR}/detail/exceptions.hpp + ${SRCDIR}/detail/exceptions.hpp \ + ${SRCDIR}/detail/value_t.hpp diff --git a/src/detail/value_t.hpp b/src/detail/value_t.hpp new file mode 100644 index 00000000..dbfffd47 --- /dev/null +++ b/src/detail/value_t.hpp @@ -0,0 +1,78 @@ +#ifndef NLOHMANN_JSON_DETAIL_VALUE_T_HPP +#define NLOHMANN_JSON_DETAIL_VALUE_T_HPP + +#include // and +#include // size_t +#include // uint8_t + +namespace nlohmann +{ +namespace detail +{ +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + discarded ///< discarded by the the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string +- furthermore, each type is not smaller than itself +- discarded values are not comparable + +@since version 1.0.0 +*/ +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + static constexpr std::array order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); + return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index]; +} +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index 48074c81..6d50dff2 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -55,6 +55,7 @@ SOFTWARE. #include "detail/macro_scope.hpp" #include "detail/meta.hpp" #include "detail/exceptions.hpp" +#include "detail/value_t.hpp" /*! @brief namespace for Niels Lohmann @@ -65,70 +66,6 @@ namespace nlohmann { namespace detail { -/////////////////////////// -// JSON type enumeration // -/////////////////////////// - -/*! -@brief the JSON type enumeration - -This enumeration collects the different JSON types. It is internally used to -distinguish the stored values, and the functions @ref basic_json::is_null(), -@ref basic_json::is_object(), @ref basic_json::is_array(), -@ref basic_json::is_string(), @ref basic_json::is_boolean(), -@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), -@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), -@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and -@ref basic_json::is_structured() rely on it. - -@note There are three enumeration entries (number_integer, number_unsigned, and -number_float), because the library distinguishes these three types for numbers: -@ref basic_json::number_unsigned_t is used for unsigned integers, -@ref basic_json::number_integer_t is used for signed integers, and -@ref basic_json::number_float_t is used for floating-point numbers or to -approximate integers which do not fit in the limits of their respective type. - -@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON -value with the default value for a given type - -@since version 1.0.0 -*/ -enum class value_t : uint8_t -{ - null, ///< null value - object, ///< object (unordered set of name/value pairs) - array, ///< array (ordered collection of values) - string, ///< string value - boolean, ///< boolean value - number_integer, ///< number value (signed integer) - number_unsigned, ///< number value (unsigned integer) - number_float, ///< number value (floating-point) - discarded ///< discarded by the the parser callback function -}; - -/*! -@brief comparison operator for JSON types - -Returns an ordering that is similar to Python: -- order: null < boolean < number < object < array < string -- furthermore, each type is not smaller than itself -- discarded values are not comparable - -@since version 1.0.0 -*/ -inline bool operator<(const value_t lhs, const value_t rhs) noexcept -{ - static constexpr std::array order = {{ - 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, - 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */ - } - }; - - const auto l_index = static_cast(lhs); - const auto r_index = static_cast(rhs); - return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index]; -} - ////////////////// // constructors // ////////////////// From e0c02c14f0106037c526ae52d594fdbd7627d0ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 16:33:55 +0200 Subject: [PATCH 014/106] add detail/conversions/from_json.hpp --- Makefile | 4 +- src/detail/conversions/from_json.hpp | 316 +++++++++++++++++++++++++++ src/detail/meta.hpp | 10 + src/json.hpp | 302 +------------------------ 4 files changed, 331 insertions(+), 301 deletions(-) create mode 100644 src/detail/conversions/from_json.hpp diff --git a/Makefile b/Makefile index f10899f5..22df2ff2 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,9 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/macro_unscope.hpp \ ${SRCDIR}/detail/meta.hpp \ ${SRCDIR}/detail/exceptions.hpp \ - ${SRCDIR}/detail/value_t.hpp + ${SRCDIR}/detail/value_t.hpp \ + ${SRCDIR}/detail/conversions/from_json.hpp + diff --git a/src/detail/conversions/from_json.hpp b/src/detail/conversions/from_json.hpp new file mode 100644 index 00000000..471c1320 --- /dev/null +++ b/src/detail/conversions/from_json.hpp @@ -0,0 +1,316 @@ +#ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP +#define NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP + +#include +#include +#include +#include + +#include "detail/exceptions.hpp" +#include "detail/macro_scope.hpp" +#include "detail/meta.hpp" +#include "detail/value_t.hpp" + +namespace nlohmann +{ +namespace detail +{ +/////////////// +// from_json // +/////////////// + +// overloads for basic_json template parameters +template::value and + not std::is_same::value, + int> = 0> +void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) +{ + switch (static_cast(j)) + { + case value_t::number_unsigned: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_integer: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_float: + { + val = static_cast(*j.template get_ptr()); + break; + } + + default: + JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); + } +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) +{ + if (JSON_UNLIKELY(not j.is_boolean())) + { + JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name()))); + } + b = *j.template get_ptr(); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) +{ + if (JSON_UNLIKELY(not j.is_string())) + { + JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()))); + } + s = *j.template get_ptr(); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) +{ + get_arithmetic_value(j, val); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) +{ + get_arithmetic_value(j, val); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) +{ + get_arithmetic_value(j, val); +} + +template::value, int> = 0> +void from_json(const BasicJsonType& j, EnumType& e) +{ + typename std::underlying_type::type val; + get_arithmetic_value(j, val); + e = static_cast(val); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + arr = *j.template get_ptr(); +} + +// forward_list doesn't have an insert method +template::value, int> = 0> +void from_json(const BasicJsonType& j, std::forward_list& l) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + std::transform(j.rbegin(), j.rend(), + std::front_inserter(l), [](const BasicJsonType & i) + { + return i.template get(); + }); +} + +// valarray doesn't have an insert method +template::value, int> = 0> +void from_json(const BasicJsonType& j, std::valarray& l) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + l.resize(j.size()); + std::copy(j.m_value.array->begin(), j.m_value.array->end(), std::begin(l)); +} + +template +void from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<0> /*unused*/) +{ + using std::end; + + std::transform(j.begin(), j.end(), + std::inserter(arr, end(arr)), [](const BasicJsonType & i) + { + // get() returns *this, this won't call a from_json + // method when value_type is BasicJsonType + return i.template get(); + }); +} + +template +auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<1> /*unused*/) +-> decltype( + arr.reserve(std::declval()), + void()) +{ + using std::end; + + arr.reserve(j.size()); + std::transform(j.begin(), j.end(), + std::inserter(arr, end(arr)), [](const BasicJsonType & i) + { + // get() returns *this, this won't call a from_json + // method when value_type is BasicJsonType + return i.template get(); + }); +} + +template +void from_json_array_impl(const BasicJsonType& j, std::array& arr, priority_tag<2> /*unused*/) +{ + for (std::size_t i = 0; i < N; ++i) + { + arr[i] = j.at(i).template get(); + } +} + +template::value and + std::is_convertible::value and + not std::is_same::value, int> = 0> +void from_json(const BasicJsonType& j, CompatibleArrayType& arr) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + + from_json_array_impl(j, arr, priority_tag<2> {}); +} + +template::value, int> = 0> +void from_json(const BasicJsonType& j, CompatibleObjectType& obj) +{ + if (JSON_UNLIKELY(not j.is_object())) + { + JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name()))); + } + + auto inner_object = j.template get_ptr(); + using value_type = typename CompatibleObjectType::value_type; + std::transform( + inner_object->begin(), inner_object->end(), + std::inserter(obj, obj.begin()), + [](typename BasicJsonType::object_t::value_type const & p) + { + return value_type(p.first, p.second.template get()); + }); +} + +// overload for arithmetic types, not chosen for basic_json template arguments +// (BooleanType, etc..); note: Is it really necessary to provide explicit +// overloads for boolean_t etc. in case of a custom BooleanType which is not +// an arithmetic type? +template::value and + not std::is_same::value and + not std::is_same::value and + not std::is_same::value and + not std::is_same::value, + int> = 0> +void from_json(const BasicJsonType& j, ArithmeticType& val) +{ + switch (static_cast(j)) + { + case value_t::number_unsigned: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_integer: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_float: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::boolean: + { + val = static_cast(*j.template get_ptr()); + break; + } + + default: + JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); + } +} + +template +void from_json(const BasicJsonType& j, std::pair& p) +{ + p = {j.at(0).template get(), j.at(1).template get()}; +} + +template +void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_sequence) +{ + t = std::make_tuple(j.at(Idx).template get::type>()...); +} + +template +void from_json(const BasicJsonType& j, std::tuple& t) +{ + from_json_tuple_impl(j, t, index_sequence_for {}); +} + +struct from_json_fn +{ + private: + template + auto call(const BasicJsonType& j, T& val, priority_tag<1> /*unused*/) const + noexcept(noexcept(from_json(j, val))) + -> decltype(from_json(j, val), void()) + { + return from_json(j, val); + } + + template + void call(const BasicJsonType& /*unused*/, T& /*unused*/, priority_tag<0> /*unused*/) const noexcept + { + static_assert(sizeof(BasicJsonType) == 0, + "could not find from_json() method in T's namespace"); +#ifdef _MSC_VER + // MSVC does not show a stacktrace for the above assert + using decayed = uncvref_t; + static_assert(sizeof(typename decayed::force_msvc_stacktrace) == 0, + "forcing MSVC stacktrace to show which T we're talking about."); +#endif + } + + public: + template + void operator()(const BasicJsonType& j, T& val) const + noexcept(noexcept(std::declval().call(j, val, priority_tag<1> {}))) + { + return call(j, val, priority_tag<1> {}); + } +}; +} + +/// namespace to hold default `from_json` function +/// to see why this is required: +/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html +namespace +{ +constexpr const auto& from_json = detail::static_const::value; +} +} + +#endif diff --git a/src/detail/meta.hpp b/src/detail/meta.hpp index 9a3a97fa..a9b20443 100644 --- a/src/detail/meta.hpp +++ b/src/detail/meta.hpp @@ -220,6 +220,16 @@ struct has_to_json static constexpr bool value = std::is_integral>()))>::value; }; + +// taken from ranges-v3 +template +struct static_const +{ + static constexpr T value{}; +}; + +template +constexpr T static_const::value; } } diff --git a/src/json.hpp b/src/json.hpp index 6d50dff2..e7ce109a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -56,6 +56,7 @@ SOFTWARE. #include "detail/meta.hpp" #include "detail/exceptions.hpp" #include "detail/value_t.hpp" +#include "detail/conversions/from_json.hpp" /*! @brief namespace for Niels Lohmann @@ -347,261 +348,6 @@ void to_json(BasicJsonType& j, const std::tuple& t) to_json_tuple_impl(j, t, index_sequence_for {}); } -/////////////// -// from_json // -/////////////// - -// overloads for basic_json template parameters -template::value and - not std::is_same::value, - int> = 0> -void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) -{ - switch (static_cast(j)) - { - case value_t::number_unsigned: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_integer: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_float: - { - val = static_cast(*j.template get_ptr()); - break; - } - - default: - JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); - } -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) -{ - if (JSON_UNLIKELY(not j.is_boolean())) - { - JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name()))); - } - b = *j.template get_ptr(); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) -{ - if (JSON_UNLIKELY(not j.is_string())) - { - JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()))); - } - s = *j.template get_ptr(); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) -{ - get_arithmetic_value(j, val); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) -{ - get_arithmetic_value(j, val); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) -{ - get_arithmetic_value(j, val); -} - -template::value, int> = 0> -void from_json(const BasicJsonType& j, EnumType& e) -{ - typename std::underlying_type::type val; - get_arithmetic_value(j, val); - e = static_cast(val); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) -{ - if (JSON_UNLIKELY(not j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); - } - arr = *j.template get_ptr(); -} - -// forward_list doesn't have an insert method -template::value, int> = 0> -void from_json(const BasicJsonType& j, std::forward_list& l) -{ - if (JSON_UNLIKELY(not j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); - } - std::transform(j.rbegin(), j.rend(), - std::front_inserter(l), [](const BasicJsonType & i) - { - return i.template get(); - }); -} - -// valarray doesn't have an insert method -template::value, int> = 0> -void from_json(const BasicJsonType& j, std::valarray& l) -{ - if (JSON_UNLIKELY(not j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); - } - l.resize(j.size()); - std::copy(j.m_value.array->begin(), j.m_value.array->end(), std::begin(l)); -} - -template -void from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<0> /*unused*/) -{ - using std::end; - - std::transform(j.begin(), j.end(), - std::inserter(arr, end(arr)), [](const BasicJsonType & i) - { - // get() returns *this, this won't call a from_json - // method when value_type is BasicJsonType - return i.template get(); - }); -} - -template -auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<1> /*unused*/) --> decltype( - arr.reserve(std::declval()), - void()) -{ - using std::end; - - arr.reserve(j.size()); - std::transform(j.begin(), j.end(), - std::inserter(arr, end(arr)), [](const BasicJsonType & i) - { - // get() returns *this, this won't call a from_json - // method when value_type is BasicJsonType - return i.template get(); - }); -} - -template -void from_json_array_impl(const BasicJsonType& j, std::array& arr, priority_tag<2> /*unused*/) -{ - for (std::size_t i = 0; i < N; ++i) - { - arr[i] = j.at(i).template get(); - } -} - -template::value and - std::is_convertible::value and - not std::is_same::value, int> = 0> -void from_json(const BasicJsonType& j, CompatibleArrayType& arr) -{ - if (JSON_UNLIKELY(not j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); - } - - from_json_array_impl(j, arr, priority_tag<2> {}); -} - -template::value, int> = 0> -void from_json(const BasicJsonType& j, CompatibleObjectType& obj) -{ - if (JSON_UNLIKELY(not j.is_object())) - { - JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name()))); - } - - auto inner_object = j.template get_ptr(); - using value_type = typename CompatibleObjectType::value_type; - std::transform( - inner_object->begin(), inner_object->end(), - std::inserter(obj, obj.begin()), - [](typename BasicJsonType::object_t::value_type const & p) - { - return value_type(p.first, p.second.template get()); - }); -} - -// overload for arithmetic types, not chosen for basic_json template arguments -// (BooleanType, etc..); note: Is it really necessary to provide explicit -// overloads for boolean_t etc. in case of a custom BooleanType which is not -// an arithmetic type? -template::value and - not std::is_same::value and - not std::is_same::value and - not std::is_same::value and - not std::is_same::value, - int> = 0> -void from_json(const BasicJsonType& j, ArithmeticType& val) -{ - switch (static_cast(j)) - { - case value_t::number_unsigned: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_integer: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_float: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::boolean: - { - val = static_cast(*j.template get_ptr()); - break; - } - - default: - JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); - } -} - -template -void from_json(const BasicJsonType& j, std::pair& p) -{ - p = {j.at(0).template get(), j.at(1).template get()}; -} - -template -void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_sequence) -{ - t = std::make_tuple(j.at(Idx).template get::type>()...); -} - -template -void from_json(const BasicJsonType& j, std::tuple& t) -{ - from_json_tuple_impl(j, t, index_sequence_for {}); -} - struct to_json_fn { private: @@ -635,49 +381,6 @@ struct to_json_fn } }; -struct from_json_fn -{ - private: - template - auto call(const BasicJsonType& j, T& val, priority_tag<1> /*unused*/) const - noexcept(noexcept(from_json(j, val))) - -> decltype(from_json(j, val), void()) - { - return from_json(j, val); - } - - template - void call(const BasicJsonType& /*unused*/, T& /*unused*/, priority_tag<0> /*unused*/) const noexcept - { - static_assert(sizeof(BasicJsonType) == 0, - "could not find from_json() method in T's namespace"); -#ifdef _MSC_VER - // MSVC does not show a stacktrace for the above assert - using decayed = uncvref_t; - static_assert(sizeof(typename decayed::force_msvc_stacktrace) == 0, - "forcing MSVC stacktrace to show which T we're talking about."); -#endif - } - - public: - template - void operator()(const BasicJsonType& j, T& val) const - noexcept(noexcept(std::declval().call(j, val, priority_tag<1> {}))) - { - return call(j, val, priority_tag<1> {}); - } -}; - -// taken from ranges-v3 -template -struct static_const -{ - static constexpr T value{}; -}; - -template -constexpr T static_const::value; - //////////////////// // input adapters // //////////////////// @@ -6181,11 +5884,10 @@ class json_ref } // namespace detail -/// namespace to hold default `to_json` / `from_json` functions +/// namespace to hold default `to_json` function namespace { constexpr const auto& to_json = detail::static_const::value; -constexpr const auto& from_json = detail::static_const::value; } template From 21881606f23b91764be76631471fd629a7a0e440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 16:40:38 +0200 Subject: [PATCH 015/106] add detail/conversions/to_json.hpp --- Makefile | 3 +- src/detail/conversions/to_json.hpp | 337 +++++++++++++++++++++++++++++ src/json.hpp | 322 +-------------------------- 3 files changed, 340 insertions(+), 322 deletions(-) create mode 100644 src/detail/conversions/to_json.hpp diff --git a/Makefile b/Makefile index 22df2ff2..0e6a8b39 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/meta.hpp \ ${SRCDIR}/detail/exceptions.hpp \ ${SRCDIR}/detail/value_t.hpp \ - ${SRCDIR}/detail/conversions/from_json.hpp + ${SRCDIR}/detail/conversions/from_json.hpp \ + ${SRCDIR}/detail/conversions/to_json.hpp diff --git a/src/detail/conversions/to_json.hpp b/src/detail/conversions/to_json.hpp new file mode 100644 index 00000000..0c6d4749 --- /dev/null +++ b/src/detail/conversions/to_json.hpp @@ -0,0 +1,337 @@ +#ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP +#define NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP + +#include +#include +#include + +#include "detail/meta.hpp" +#include "detail/value_t.hpp" + +namespace nlohmann +{ +namespace detail +{ +////////////////// +// constructors // +////////////////// + +template struct external_constructor; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept + { + j.m_type = value_t::boolean; + j.m_value = b; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) + { + j.m_type = value_t::string; + j.m_value = s; + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s) + { + j.m_type = value_t::string; + j.m_value = std::move(s); + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept + { + j.m_type = value_t::number_float; + j.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept + { + j.m_type = value_t::number_unsigned; + j.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept + { + j.m_type = value_t::number_integer; + j.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) + { + j.m_type = value_t::array; + j.m_value = arr; + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr) + { + j.m_type = value_t::array; + j.m_value = std::move(arr); + j.assert_invariant(); + } + + template::value, + int> = 0> + static void construct(BasicJsonType& j, const CompatibleArrayType& arr) + { + using std::begin; + using std::end; + j.m_type = value_t::array; + j.m_value.array = j.template create(begin(arr), end(arr)); + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, const std::vector& arr) + { + j.m_type = value_t::array; + j.m_value = value_t::array; + j.m_value.array->reserve(arr.size()); + for (const bool x : arr) + { + j.m_value.array->push_back(x); + } + j.assert_invariant(); + } + + template::value, int> = 0> + static void construct(BasicJsonType& j, const std::valarray& arr) + { + j.m_type = value_t::array; + j.m_value = value_t::array; + j.m_value.array->resize(arr.size()); + std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin()); + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) + { + j.m_type = value_t::object; + j.m_value = obj; + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj) + { + j.m_type = value_t::object; + j.m_value = std::move(obj); + j.assert_invariant(); + } + + template::value, int> = 0> + static void construct(BasicJsonType& j, const CompatibleObjectType& obj) + { + using std::begin; + using std::end; + + j.m_type = value_t::object; + j.m_value.object = j.template create(begin(obj), end(obj)); + j.assert_invariant(); + } +}; + +///////////// +// to_json // +///////////// + +template::value, int> = 0> +void to_json(BasicJsonType& j, T b) noexcept +{ + external_constructor::construct(j, b); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, const CompatibleString& s) +{ + external_constructor::construct(j, s); +} + +template +void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s) +{ + external_constructor::construct(j, std::move(s)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, FloatType val) noexcept +{ + external_constructor::construct(j, static_cast(val)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept +{ + external_constructor::construct(j, static_cast(val)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept +{ + external_constructor::construct(j, static_cast(val)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, EnumType e) noexcept +{ + using underlying_type = typename std::underlying_type::type; + external_constructor::construct(j, static_cast(e)); +} + +template +void to_json(BasicJsonType& j, const std::vector& e) +{ + external_constructor::construct(j, e); +} + +template::value or + std::is_same::value, + int> = 0> +void to_json(BasicJsonType& j, const CompatibleArrayType& arr) +{ + external_constructor::construct(j, arr); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, std::valarray arr) +{ + external_constructor::construct(j, std::move(arr)); +} + +template +void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr) +{ + external_constructor::construct(j, std::move(arr)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, const CompatibleObjectType& obj) +{ + external_constructor::construct(j, obj); +} + +template +void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj) +{ + external_constructor::construct(j, std::move(obj)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, T (&arr)[N]) +{ + external_constructor::construct(j, arr); +} + +template +void to_json(BasicJsonType& j, const std::pair& p) +{ + j = {p.first, p.second}; +} + +template +void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence) +{ + j = {std::get(t)...}; +} + +template +void to_json(BasicJsonType& j, const std::tuple& t) +{ + to_json_tuple_impl(j, t, index_sequence_for {}); +} + +struct to_json_fn +{ + private: + template + auto call(BasicJsonType& j, T&& val, priority_tag<1> /*unused*/) const noexcept(noexcept(to_json(j, std::forward(val)))) + -> decltype(to_json(j, std::forward(val)), void()) + { + return to_json(j, std::forward(val)); + } + + template + void call(BasicJsonType& /*unused*/, T&& /*unused*/, priority_tag<0> /*unused*/) const noexcept + { + static_assert(sizeof(BasicJsonType) == 0, + "could not find to_json() method in T's namespace"); + +#ifdef _MSC_VER + // MSVC does not show a stacktrace for the above assert + using decayed = uncvref_t; + static_assert(sizeof(typename decayed::force_msvc_stacktrace) == 0, + "forcing MSVC stacktrace to show which T we're talking about."); +#endif + } + + public: + template + void operator()(BasicJsonType& j, T&& val) const + noexcept(noexcept(std::declval().call(j, std::forward(val), priority_tag<1> {}))) + { + return call(j, std::forward(val), priority_tag<1> {}); + } +}; +} + +/// namespace to hold default `to_json` function +namespace +{ +constexpr const auto& to_json = detail::static_const::value; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index e7ce109a..ae7d727e 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -49,7 +49,6 @@ SOFTWARE. #include // accumulate #include // stringstream #include // declval, forward, make_pair, move, pair, swap -#include // valarray #include "json_fwd.hpp" #include "detail/macro_scope.hpp" @@ -57,6 +56,7 @@ SOFTWARE. #include "detail/exceptions.hpp" #include "detail/value_t.hpp" #include "detail/conversions/from_json.hpp" +#include "detail/conversions/to_json.hpp" /*! @brief namespace for Niels Lohmann @@ -67,320 +67,6 @@ namespace nlohmann { namespace detail { -////////////////// -// constructors // -////////////////// - -template struct external_constructor; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept - { - j.m_type = value_t::boolean; - j.m_value = b; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) - { - j.m_type = value_t::string; - j.m_value = s; - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s) - { - j.m_type = value_t::string; - j.m_value = std::move(s); - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept - { - j.m_type = value_t::number_float; - j.m_value = val; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept - { - j.m_type = value_t::number_unsigned; - j.m_value = val; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept - { - j.m_type = value_t::number_integer; - j.m_value = val; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) - { - j.m_type = value_t::array; - j.m_value = arr; - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr) - { - j.m_type = value_t::array; - j.m_value = std::move(arr); - j.assert_invariant(); - } - - template::value, - int> = 0> - static void construct(BasicJsonType& j, const CompatibleArrayType& arr) - { - using std::begin; - using std::end; - j.m_type = value_t::array; - j.m_value.array = j.template create(begin(arr), end(arr)); - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, const std::vector& arr) - { - j.m_type = value_t::array; - j.m_value = value_t::array; - j.m_value.array->reserve(arr.size()); - for (const bool x : arr) - { - j.m_value.array->push_back(x); - } - j.assert_invariant(); - } - - template::value, int> = 0> - static void construct(BasicJsonType& j, const std::valarray& arr) - { - j.m_type = value_t::array; - j.m_value = value_t::array; - j.m_value.array->resize(arr.size()); - std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin()); - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) - { - j.m_type = value_t::object; - j.m_value = obj; - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj) - { - j.m_type = value_t::object; - j.m_value = std::move(obj); - j.assert_invariant(); - } - - template::value, int> = 0> - static void construct(BasicJsonType& j, const CompatibleObjectType& obj) - { - using std::begin; - using std::end; - - j.m_type = value_t::object; - j.m_value.object = j.template create(begin(obj), end(obj)); - j.assert_invariant(); - } -}; - -///////////// -// to_json // -///////////// - -template::value, int> = 0> -void to_json(BasicJsonType& j, T b) noexcept -{ - external_constructor::construct(j, b); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, const CompatibleString& s) -{ - external_constructor::construct(j, s); -} - -template -void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s) -{ - external_constructor::construct(j, std::move(s)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, FloatType val) noexcept -{ - external_constructor::construct(j, static_cast(val)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept -{ - external_constructor::construct(j, static_cast(val)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept -{ - external_constructor::construct(j, static_cast(val)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, EnumType e) noexcept -{ - using underlying_type = typename std::underlying_type::type; - external_constructor::construct(j, static_cast(e)); -} - -template -void to_json(BasicJsonType& j, const std::vector& e) -{ - external_constructor::construct(j, e); -} - -template::value or - std::is_same::value, - int> = 0> -void to_json(BasicJsonType& j, const CompatibleArrayType& arr) -{ - external_constructor::construct(j, arr); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, std::valarray arr) -{ - external_constructor::construct(j, std::move(arr)); -} - -template -void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr) -{ - external_constructor::construct(j, std::move(arr)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, const CompatibleObjectType& obj) -{ - external_constructor::construct(j, obj); -} - -template -void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj) -{ - external_constructor::construct(j, std::move(obj)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, T (&arr)[N]) -{ - external_constructor::construct(j, arr); -} - -template -void to_json(BasicJsonType& j, const std::pair& p) -{ - j = {p.first, p.second}; -} - -template -void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence) -{ - j = {std::get(t)...}; -} - -template -void to_json(BasicJsonType& j, const std::tuple& t) -{ - to_json_tuple_impl(j, t, index_sequence_for {}); -} - -struct to_json_fn -{ - private: - template - auto call(BasicJsonType& j, T&& val, priority_tag<1> /*unused*/) const noexcept(noexcept(to_json(j, std::forward(val)))) - -> decltype(to_json(j, std::forward(val)), void()) - { - return to_json(j, std::forward(val)); - } - - template - void call(BasicJsonType& /*unused*/, T&& /*unused*/, priority_tag<0> /*unused*/) const noexcept - { - static_assert(sizeof(BasicJsonType) == 0, - "could not find to_json() method in T's namespace"); - -#ifdef _MSC_VER - // MSVC does not show a stacktrace for the above assert - using decayed = uncvref_t; - static_assert(sizeof(typename decayed::force_msvc_stacktrace) == 0, - "forcing MSVC stacktrace to show which T we're talking about."); -#endif - } - - public: - template - void operator()(BasicJsonType& j, T&& val) const - noexcept(noexcept(std::declval().call(j, std::forward(val), priority_tag<1> {}))) - { - return call(j, std::forward(val), priority_tag<1> {}); - } -}; - //////////////////// // input adapters // //////////////////// @@ -5884,12 +5570,6 @@ class json_ref } // namespace detail -/// namespace to hold default `to_json` function -namespace -{ -constexpr const auto& to_json = detail::static_const::value; -} - template struct adl_serializer { From 7ab3e8d7b3007747a0da9e4ef9cff4e2f5c6d870 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 16:48:55 +0200 Subject: [PATCH 016/106] add detail/parsing/input_adapters.hpp --- Makefile | 3 +- src/detail/parsing/input_adapters.hpp | 258 ++++++++++++++++++++++++++ src/json.hpp | 240 +----------------------- 3 files changed, 261 insertions(+), 240 deletions(-) create mode 100644 src/detail/parsing/input_adapters.hpp diff --git a/Makefile b/Makefile index 0e6a8b39..9a3060af 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/exceptions.hpp \ ${SRCDIR}/detail/value_t.hpp \ ${SRCDIR}/detail/conversions/from_json.hpp \ - ${SRCDIR}/detail/conversions/to_json.hpp + ${SRCDIR}/detail/conversions/to_json.hpp \ + ${SRCDIR}/detail/parsing/input_adapters.hpp diff --git a/src/detail/parsing/input_adapters.hpp b/src/detail/parsing/input_adapters.hpp new file mode 100644 index 00000000..17cf5892 --- /dev/null +++ b/src/detail/parsing/input_adapters.hpp @@ -0,0 +1,258 @@ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP + +#include +#include +#include +#include +#include +#include + +#include "detail/macro_scope.hpp" + +namespace nlohmann +{ +namespace detail +{ +//////////////////// +// input adapters // +//////////////////// + +/*! +@brief abstract input adapter interface + +Produces a stream of std::char_traits::int_type characters from a +std::istream, a buffer, or some other input type. Accepts the return of exactly +one non-EOF character for future input. The int_type characters returned +consist of all valid char values as positive values (typically unsigned char), +plus an EOF value outside that range, specified by the value of the function +std::char_traits::eof(). This value is typically -1, but could be any +arbitrary value which is not a valid char value. +*/ +struct input_adapter_protocol +{ + /// get a character [0,255] or std::char_traits::eof(). + virtual std::char_traits::int_type get_character() = 0; + /// restore the last non-eof() character to input + virtual void unget_character() = 0; + virtual ~input_adapter_protocol() = default; +}; + +/// a type to simplify interfaces +using input_adapter_t = std::shared_ptr; + +/*! +Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at +beginning of input. Does not support changing the underlying std::streambuf +in mid-input. Maintains underlying std::istream and std::streambuf to support +subsequent use of standard std::istream operations to process any input +characters following those used in parsing the JSON input. Clears the +std::istream flags; any input errors (e.g., EOF) will be detected by the first +subsequent call for input from the std::istream. +*/ +class input_stream_adapter : public input_adapter_protocol +{ + public: + ~input_stream_adapter() override + { + // clear stream flags; we use underlying streambuf I/O, do not + // maintain ifstream flags + is.clear(); + } + + explicit input_stream_adapter(std::istream& i) + : is(i), sb(*i.rdbuf()) + { + // skip byte order mark + std::char_traits::int_type c; + if ((c = get_character()) == 0xEF) + { + if ((c = get_character()) == 0xBB) + { + if ((c = get_character()) == 0xBF) + { + return; // Ignore BOM + } + else if (c != std::char_traits::eof()) + { + is.unget(); + } + is.putback('\xBB'); + } + else if (c != std::char_traits::eof()) + { + is.unget(); + } + is.putback('\xEF'); + } + else if (c != std::char_traits::eof()) + { + is.unget(); // no byte order mark; process as usual + } + } + + // delete because of pointer members + input_stream_adapter(const input_stream_adapter&) = delete; + input_stream_adapter& operator=(input_stream_adapter&) = delete; + + // std::istream/std::streambuf use std::char_traits::to_int_type, to + // ensure that std::char_traits::eof() and the character 0xFF do not + // end up as the same value, eg. 0xFFFFFFFF. + std::char_traits::int_type get_character() override + { + return sb.sbumpc(); + } + + void unget_character() override + { + sb.sungetc(); // is.unget() avoided for performance + } + + private: + /// the associated input stream + std::istream& is; + std::streambuf& sb; +}; + +/// input adapter for buffer input +class input_buffer_adapter : public input_adapter_protocol +{ + public: + input_buffer_adapter(const char* b, const std::size_t l) + : cursor(b), limit(b + l), start(b) + { + // skip byte order mark + if (l >= 3 and b[0] == '\xEF' and b[1] == '\xBB' and b[2] == '\xBF') + { + cursor += 3; + } + } + + // delete because of pointer members + input_buffer_adapter(const input_buffer_adapter&) = delete; + input_buffer_adapter& operator=(input_buffer_adapter&) = delete; + + std::char_traits::int_type get_character() noexcept override + { + if (JSON_LIKELY(cursor < limit)) + { + return std::char_traits::to_int_type(*(cursor++)); + } + + return std::char_traits::eof(); + } + + void unget_character() noexcept override + { + if (JSON_LIKELY(cursor > start)) + { + --cursor; + } + } + + private: + /// pointer to the current character + const char* cursor; + /// pointer past the last character + const char* limit; + /// pointer to the first character + const char* start; +}; + +class input_adapter +{ + public: + // native support + + /// input adapter for input stream + input_adapter(std::istream& i) + : ia(std::make_shared(i)) {} + + /// input adapter for input stream + input_adapter(std::istream&& i) + : ia(std::make_shared(i)) {} + + /// input adapter for buffer + template::value and + std::is_integral::type>::value and + sizeof(typename std::remove_pointer::type) == 1, + int>::type = 0> + input_adapter(CharT b, std::size_t l) + : ia(std::make_shared(reinterpret_cast(b), l)) {} + + // derived support + + /// input adapter for string literal + template::value and + std::is_integral::type>::value and + sizeof(typename std::remove_pointer::type) == 1, + int>::type = 0> + input_adapter(CharT b) + : input_adapter(reinterpret_cast(b), + std::strlen(reinterpret_cast(b))) {} + + /// input adapter for iterator range with contiguous storage + template::iterator_category, std::random_access_iterator_tag>::value, + int>::type = 0> + input_adapter(IteratorType first, IteratorType last) + { + // assertion to check that the iterator range is indeed contiguous, + // see http://stackoverflow.com/a/35008842/266378 for more discussion + assert(std::accumulate( + first, last, std::pair(true, 0), + [&first](std::pair res, decltype(*first) val) + { + res.first &= (val == *(std::next(std::addressof(*first), res.second++))); + return res; + }).first); + + // assertion to check that each element is 1 byte long + static_assert( + sizeof(typename std::iterator_traits::value_type) == 1, + "each element in the iterator range must have the size of 1 byte"); + + const auto len = static_cast(std::distance(first, last)); + if (JSON_LIKELY(len > 0)) + { + // there is at least one element: use the address of first + ia = std::make_shared(reinterpret_cast(&(*first)), len); + } + else + { + // the address of first cannot be used: use nullptr + ia = std::make_shared(nullptr, len); + } + } + + /// input adapter for array + template + input_adapter(T (&array)[N]) + : input_adapter(std::begin(array), std::end(array)) {} + + /// input adapter for contiguous container + template::value and + std::is_base_of()))>::iterator_category>::value, + int>::type = 0> + input_adapter(const ContiguousContainer& c) + : input_adapter(std::begin(c), std::end(c)) {} + + operator input_adapter_t() + { + return ia; + } + + private: + /// the actual adapter + input_adapter_t ia = nullptr; +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index ae7d727e..f3fea0b8 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -57,6 +57,7 @@ SOFTWARE. #include "detail/value_t.hpp" #include "detail/conversions/from_json.hpp" #include "detail/conversions/to_json.hpp" +#include "detail/parsing/input_adapters.hpp" /*! @brief namespace for Niels Lohmann @@ -67,245 +68,6 @@ namespace nlohmann { namespace detail { -//////////////////// -// input adapters // -//////////////////// - -/*! -@brief abstract input adapter interface - -Produces a stream of std::char_traits::int_type characters from a -std::istream, a buffer, or some other input type. Accepts the return of exactly -one non-EOF character for future input. The int_type characters returned -consist of all valid char values as positive values (typically unsigned char), -plus an EOF value outside that range, specified by the value of the function -std::char_traits::eof(). This value is typically -1, but could be any -arbitrary value which is not a valid char value. -*/ -struct input_adapter_protocol -{ - /// get a character [0,255] or std::char_traits::eof(). - virtual std::char_traits::int_type get_character() = 0; - /// restore the last non-eof() character to input - virtual void unget_character() = 0; - virtual ~input_adapter_protocol() = default; -}; - -/// a type to simplify interfaces -using input_adapter_t = std::shared_ptr; - -/*! -Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at -beginning of input. Does not support changing the underlying std::streambuf -in mid-input. Maintains underlying std::istream and std::streambuf to support -subsequent use of standard std::istream operations to process any input -characters following those used in parsing the JSON input. Clears the -std::istream flags; any input errors (e.g., EOF) will be detected by the first -subsequent call for input from the std::istream. -*/ -class input_stream_adapter : public input_adapter_protocol -{ - public: - ~input_stream_adapter() override - { - // clear stream flags; we use underlying streambuf I/O, do not - // maintain ifstream flags - is.clear(); - } - - explicit input_stream_adapter(std::istream& i) - : is(i), sb(*i.rdbuf()) - { - // skip byte order mark - std::char_traits::int_type c; - if ((c = get_character()) == 0xEF) - { - if ((c = get_character()) == 0xBB) - { - if ((c = get_character()) == 0xBF) - { - return; // Ignore BOM - } - else if (c != std::char_traits::eof()) - { - is.unget(); - } - is.putback('\xBB'); - } - else if (c != std::char_traits::eof()) - { - is.unget(); - } - is.putback('\xEF'); - } - else if (c != std::char_traits::eof()) - { - is.unget(); // no byte order mark; process as usual - } - } - - // delete because of pointer members - input_stream_adapter(const input_stream_adapter&) = delete; - input_stream_adapter& operator=(input_stream_adapter&) = delete; - - // std::istream/std::streambuf use std::char_traits::to_int_type, to - // ensure that std::char_traits::eof() and the character 0xFF do not - // end up as the same value, eg. 0xFFFFFFFF. - std::char_traits::int_type get_character() override - { - return sb.sbumpc(); - } - - void unget_character() override - { - sb.sungetc(); // is.unget() avoided for performance - } - - private: - /// the associated input stream - std::istream& is; - std::streambuf& sb; -}; - -/// input adapter for buffer input -class input_buffer_adapter : public input_adapter_protocol -{ - public: - input_buffer_adapter(const char* b, const std::size_t l) - : cursor(b), limit(b + l), start(b) - { - // skip byte order mark - if (l >= 3 and b[0] == '\xEF' and b[1] == '\xBB' and b[2] == '\xBF') - { - cursor += 3; - } - } - - // delete because of pointer members - input_buffer_adapter(const input_buffer_adapter&) = delete; - input_buffer_adapter& operator=(input_buffer_adapter&) = delete; - - std::char_traits::int_type get_character() noexcept override - { - if (JSON_LIKELY(cursor < limit)) - { - return std::char_traits::to_int_type(*(cursor++)); - } - - return std::char_traits::eof(); - } - - void unget_character() noexcept override - { - if (JSON_LIKELY(cursor > start)) - { - --cursor; - } - } - - private: - /// pointer to the current character - const char* cursor; - /// pointer past the last character - const char* limit; - /// pointer to the first character - const char* start; -}; - -class input_adapter -{ - public: - // native support - - /// input adapter for input stream - input_adapter(std::istream& i) - : ia(std::make_shared(i)) {} - - /// input adapter for input stream - input_adapter(std::istream&& i) - : ia(std::make_shared(i)) {} - - /// input adapter for buffer - template::value and - std::is_integral::type>::value and - sizeof(typename std::remove_pointer::type) == 1, - int>::type = 0> - input_adapter(CharT b, std::size_t l) - : ia(std::make_shared(reinterpret_cast(b), l)) {} - - // derived support - - /// input adapter for string literal - template::value and - std::is_integral::type>::value and - sizeof(typename std::remove_pointer::type) == 1, - int>::type = 0> - input_adapter(CharT b) - : input_adapter(reinterpret_cast(b), - std::strlen(reinterpret_cast(b))) {} - - /// input adapter for iterator range with contiguous storage - template::iterator_category, std::random_access_iterator_tag>::value, - int>::type = 0> - input_adapter(IteratorType first, IteratorType last) - { - // assertion to check that the iterator range is indeed contiguous, - // see http://stackoverflow.com/a/35008842/266378 for more discussion - assert(std::accumulate( - first, last, std::pair(true, 0), - [&first](std::pair res, decltype(*first) val) - { - res.first &= (val == *(std::next(std::addressof(*first), res.second++))); - return res; - }).first); - - // assertion to check that each element is 1 byte long - static_assert( - sizeof(typename std::iterator_traits::value_type) == 1, - "each element in the iterator range must have the size of 1 byte"); - - const auto len = static_cast(std::distance(first, last)); - if (JSON_LIKELY(len > 0)) - { - // there is at least one element: use the address of first - ia = std::make_shared(reinterpret_cast(&(*first)), len); - } - else - { - // the address of first cannot be used: use nullptr - ia = std::make_shared(nullptr, len); - } - } - - /// input adapter for array - template - input_adapter(T (&array)[N]) - : input_adapter(std::begin(array), std::end(array)) {} - - /// input adapter for contiguous container - template::value and - std::is_base_of()))>::iterator_category>::value, - int>::type = 0> - input_adapter(const ContiguousContainer& c) - : input_adapter(std::begin(c), std::end(c)) {} - - operator input_adapter_t() - { - return ia; - } - - private: - /// the actual adapter - input_adapter_t ia = nullptr; -}; - ////////////////////// // lexer and parser // ////////////////////// From 3a0743db9726b65b8c2fd3d12ed772076680650c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 16:54:16 +0200 Subject: [PATCH 017/106] add detail/parsing/lexer.hpp --- Makefile | 3 +- src/detail/parsing/lexer.hpp | 1273 ++++++++++++++++++++++++++++++++++ src/json.hpp | 1259 +-------------------------------- 3 files changed, 1279 insertions(+), 1256 deletions(-) create mode 100644 src/detail/parsing/lexer.hpp diff --git a/Makefile b/Makefile index 9a3060af..aacaa00f 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/value_t.hpp \ ${SRCDIR}/detail/conversions/from_json.hpp \ ${SRCDIR}/detail/conversions/to_json.hpp \ - ${SRCDIR}/detail/parsing/input_adapters.hpp + ${SRCDIR}/detail/parsing/input_adapters.hpp \ + ${SRCDIR}/detail/parsing/lexer.hpp diff --git a/src/detail/parsing/lexer.hpp b/src/detail/parsing/lexer.hpp new file mode 100644 index 00000000..b1232db0 --- /dev/null +++ b/src/detail/parsing/lexer.hpp @@ -0,0 +1,1273 @@ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP + +#include +#include +#include + +#include "detail/macro_scope.hpp" +#include "detail/parsing/input_adapters.hpp" + +namespace nlohmann +{ +namespace detail +{ +/////////// +// lexer // +/////////// + +/*! +@brief lexical analysis + +This class organizes the lexical analysis during JSON deserialization. +*/ +template +class lexer +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + + public: + /// token types for the parser + enum class token_type + { + uninitialized, ///< indicating the scanner is uninitialized + literal_true, ///< the `true` literal + literal_false, ///< the `false` literal + literal_null, ///< the `null` literal + value_string, ///< a string -- use get_string() for actual value + value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value + value_integer, ///< a signed integer -- use get_number_integer() for actual value + value_float, ///< an floating point number -- use get_number_float() for actual value + begin_array, ///< the character for array begin `[` + begin_object, ///< the character for object begin `{` + end_array, ///< the character for array end `]` + end_object, ///< the character for object end `}` + name_separator, ///< the name separator `:` + value_separator, ///< the value separator `,` + parse_error, ///< indicating a parse error + end_of_input, ///< indicating the end of the input buffer + literal_or_value ///< a literal or the begin of a value (only for diagnostics) + }; + + /// return name of values of type token_type (only used for errors) + static const char* token_type_name(const token_type t) noexcept + { + switch (t) + { + case token_type::uninitialized: + return ""; + case token_type::literal_true: + return "true literal"; + case token_type::literal_false: + return "false literal"; + case token_type::literal_null: + return "null literal"; + case token_type::value_string: + return "string literal"; + case lexer::token_type::value_unsigned: + case lexer::token_type::value_integer: + case lexer::token_type::value_float: + return "number literal"; + case token_type::begin_array: + return "'['"; + case token_type::begin_object: + return "'{'"; + case token_type::end_array: + return "']'"; + case token_type::end_object: + return "'}'"; + case token_type::name_separator: + return "':'"; + case token_type::value_separator: + return "','"; + case token_type::parse_error: + return ""; + case token_type::end_of_input: + return "end of input"; + case token_type::literal_or_value: + return "'[', '{', or a literal"; + default: // catch non-enum values + return "unknown token"; // LCOV_EXCL_LINE + } + } + + explicit lexer(detail::input_adapter_t adapter) + : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {} + + // delete because of pointer members + lexer(const lexer&) = delete; + lexer& operator=(lexer&) = delete; + + private: + ///////////////////// + // locales + ///////////////////// + + /// return the locale-dependent decimal point + static char get_decimal_point() noexcept + { + const auto loc = localeconv(); + assert(loc != nullptr); + return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); + } + + ///////////////////// + // scan functions + ///////////////////// + + /*! + @brief get codepoint from 4 hex characters following `\u` + + For input "\u c1 c2 c3 c4" the codepoint is: + (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 + = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) + + Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' + must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The + conversion is done by subtracting the offset (0x30, 0x37, and 0x57) + between the ASCII value of the character and the desired integer value. + + @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or + non-hex character) + */ + int get_codepoint() + { + // this function only makes sense after reading `\u` + assert(current == 'u'); + int codepoint = 0; + + const auto factors = { 12, 8, 4, 0 }; + for (const auto factor : factors) + { + get(); + + if (current >= '0' and current <= '9') + { + codepoint += ((current - 0x30) << factor); + } + else if (current >= 'A' and current <= 'F') + { + codepoint += ((current - 0x37) << factor); + } + else if (current >= 'a' and current <= 'f') + { + codepoint += ((current - 0x57) << factor); + } + else + { + return -1; + } + } + + assert(0x0000 <= codepoint and codepoint <= 0xFFFF); + return codepoint; + } + + /*! + @brief check if the next byte(s) are inside a given range + + Adds the current byte and, for each passed range, reads a new byte and + checks if it is inside the range. If a violation was detected, set up an + error message and return false. Otherwise, return true. + + @param[in] ranges list of integers; interpreted as list of pairs of + inclusive lower and upper bound, respectively + + @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, + 1, 2, or 3 pairs. This precondition is enforced by an assertion. + + @return true if and only if no range violation was detected + */ + bool next_byte_in_range(std::initializer_list ranges) + { + assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6); + add(current); + + for (auto range = ranges.begin(); range != ranges.end(); ++range) + { + get(); + if (JSON_LIKELY(*range <= current and current <= *(++range))) + { + add(current); + } + else + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return false; + } + } + + return true; + } + + /*! + @brief scan a string literal + + This function scans a string according to Sect. 7 of RFC 7159. While + scanning, bytes are escaped and copied into buffer yytext. Then the function + returns successfully, yytext is *not* null-terminated (as it may contain \0 + bytes), and yytext.size() is the number of bytes in the string. + + @return token_type::value_string if string could be successfully scanned, + token_type::parse_error otherwise + + @note In case of errors, variable error_message contains a textual + description. + */ + token_type scan_string() + { + // reset yytext (ignore opening quote) + reset(); + + // we entered the function by reading an open quote + assert(current == '\"'); + + while (true) + { + // get next character + switch (get()) + { + // end of file while parsing string + case std::char_traits::eof(): + { + error_message = "invalid string: missing closing quote"; + return token_type::parse_error; + } + + // closing quote + case '\"': + { + return token_type::value_string; + } + + // escapes + case '\\': + { + switch (get()) + { + // quotation mark + case '\"': + add('\"'); + break; + // reverse solidus + case '\\': + add('\\'); + break; + // solidus + case '/': + add('/'); + break; + // backspace + case 'b': + add('\b'); + break; + // form feed + case 'f': + add('\f'); + break; + // line feed + case 'n': + add('\n'); + break; + // carriage return + case 'r': + add('\r'); + break; + // tab + case 't': + add('\t'); + break; + + // unicode escapes + case 'u': + { + const int codepoint1 = get_codepoint(); + int codepoint = codepoint1; // start with codepoint1 + + if (JSON_UNLIKELY(codepoint1 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if code point is a high surrogate + if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF) + { + // expect next \uxxxx entry + if (JSON_LIKELY(get() == '\\' and get() == 'u')) + { + const int codepoint2 = get_codepoint(); + + if (JSON_UNLIKELY(codepoint2 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if codepoint2 is a low surrogate + if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF)) + { + // overwrite codepoint + codepoint = + // high surrogate occupies the most significant 22 bits + (codepoint1 << 10) + // low surrogate occupies the least significant 15 bits + + codepoint2 + // there is still the 0xD800, 0xDC00 and 0x10000 noise + // in the result so we have to subtract with: + // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 + - 0x35FDC00; + } + else + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF)) + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; + return token_type::parse_error; + } + } + + // result of the above calculation yields a proper codepoint + assert(0x00 <= codepoint and codepoint <= 0x10FFFF); + + // translate codepoint into bytes + if (codepoint < 0x80) + { + // 1-byte characters: 0xxxxxxx (ASCII) + add(codepoint); + } + else if (codepoint <= 0x7FF) + { + // 2-byte characters: 110xxxxx 10xxxxxx + add(0xC0 | (codepoint >> 6)); + add(0x80 | (codepoint & 0x3F)); + } + else if (codepoint <= 0xFFFF) + { + // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx + add(0xE0 | (codepoint >> 12)); + add(0x80 | ((codepoint >> 6) & 0x3F)); + add(0x80 | (codepoint & 0x3F)); + } + else + { + // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + add(0xF0 | (codepoint >> 18)); + add(0x80 | ((codepoint >> 12) & 0x3F)); + add(0x80 | ((codepoint >> 6) & 0x3F)); + add(0x80 | (codepoint & 0x3F)); + } + + break; + } + + // other characters after escape + default: + error_message = "invalid string: forbidden character after backslash"; + return token_type::parse_error; + } + + break; + } + + // invalid control characters + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + { + error_message = "invalid string: control character must be escaped"; + return token_type::parse_error; + } + + // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) + case 0x20: + case 0x21: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + { + add(current); + break; + } + + // U+0080..U+07FF: bytes C2..DF 80..BF + case 0xC2: + case 0xC3: + case 0xC4: + case 0xC5: + case 0xC6: + case 0xC7: + case 0xC8: + case 0xC9: + case 0xCA: + case 0xCB: + case 0xCC: + case 0xCD: + case 0xCE: + case 0xCF: + case 0xD0: + case 0xD1: + case 0xD2: + case 0xD3: + case 0xD4: + case 0xD5: + case 0xD6: + case 0xD7: + case 0xD8: + case 0xD9: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: + { + if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF}))) + { + return token_type::parse_error; + } + break; + } + + // U+0800..U+0FFF: bytes E0 A0..BF 80..BF + case 0xE0: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF + // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xEE: + case 0xEF: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+D000..U+D7FF: bytes ED 80..9F 80..BF + case 0xED: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF + case 0xF0: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF + case 0xF1: + case 0xF2: + case 0xF3: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF + case 0xF4: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // remaining bytes (80..C1 and F5..FF) are ill-formed + default: + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return token_type::parse_error; + } + } + } + } + + static void strtof(float& f, const char* str, char** endptr) noexcept + { + f = std::strtof(str, endptr); + } + + static void strtof(double& f, const char* str, char** endptr) noexcept + { + f = std::strtod(str, endptr); + } + + static void strtof(long double& f, const char* str, char** endptr) noexcept + { + f = std::strtold(str, endptr); + } + + /*! + @brief scan a number literal + + This function scans a string according to Sect. 6 of RFC 7159. + + The function is realized with a deterministic finite state machine derived + from the grammar described in RFC 7159. Starting in state "init", the + input is read and used to determined the next state. Only state "done" + accepts the number. State "error" is a trap state to model errors. In the + table below, "anything" means any character but the ones listed before. + + state | 0 | 1-9 | e E | + | - | . | anything + ---------|----------|----------|----------|---------|---------|----------|----------- + init | zero | any1 | [error] | [error] | minus | [error] | [error] + minus | zero | any1 | [error] | [error] | [error] | [error] | [error] + zero | done | done | exponent | done | done | decimal1 | done + any1 | any1 | any1 | exponent | done | done | decimal1 | done + decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error] + decimal2 | decimal2 | decimal2 | exponent | done | done | done | done + exponent | any2 | any2 | [error] | sign | sign | [error] | [error] + sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] + any2 | any2 | any2 | done | done | done | done | done + + The state machine is realized with one label per state (prefixed with + "scan_number_") and `goto` statements between them. The state machine + contains cycles, but any cycle can be left when EOF is read. Therefore, + the function is guaranteed to terminate. + + During scanning, the read bytes are stored in yytext. This string is + then converted to a signed integer, an unsigned integer, or a + floating-point number. + + @return token_type::value_unsigned, token_type::value_integer, or + token_type::value_float if number could be successfully scanned, + token_type::parse_error otherwise + + @note The scanner is independent of the current locale. Internally, the + locale's decimal point is used instead of `.` to work with the + locale-dependent converters. + */ + token_type scan_number() + { + // reset yytext to store the number's bytes + reset(); + + // the type of the parsed number; initially set to unsigned; will be + // changed if minus sign, decimal point or exponent is read + token_type number_type = token_type::value_unsigned; + + // state (init): we just found out we need to scan a number + switch (current) + { + case '-': + { + add(current); + goto scan_number_minus; + } + + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + default: + { + // all other characters are rejected outside scan_number() + assert(false); // LCOV_EXCL_LINE + } + } + +scan_number_minus: + // state: we just parsed a leading minus sign + number_type = token_type::value_integer; + switch (get()) + { + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + default: + { + error_message = "invalid number; expected digit after '-'"; + return token_type::parse_error; + } + } + +scan_number_zero: + // state: we just parse a zero (maybe with a leading minus sign) + switch (get()) + { + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_any1: + // state: we just parsed a number 0-9 (maybe with a leading minus sign) + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_decimal1: + // state: we just parsed a decimal point + number_type = token_type::value_float; + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + default: + { + error_message = "invalid number; expected digit after '.'"; + return token_type::parse_error; + } + } + +scan_number_decimal2: + // we just parsed at least one number after a decimal point + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_exponent: + // we just parsed an exponent + number_type = token_type::value_float; + switch (get()) + { + case '+': + case '-': + { + add(current); + goto scan_number_sign; + } + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = + "invalid number; expected '+', '-', or digit after exponent"; + return token_type::parse_error; + } + } + +scan_number_sign: + // we just parsed an exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = "invalid number; expected digit after exponent sign"; + return token_type::parse_error; + } + } + +scan_number_any2: + // we just parsed a number after the exponent or exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + goto scan_number_done; + } + +scan_number_done: + // unget the character after the number (we only read it to know that + // we are done scanning a number) + unget(); + + char* endptr = nullptr; + errno = 0; + + // try to parse integers first and fall back to floats + if (number_type == token_type::value_unsigned) + { + const auto x = std::strtoull(yytext.data(), &endptr, 10); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + if (errno == 0) + { + value_unsigned = static_cast(x); + if (value_unsigned == x) + { + return token_type::value_unsigned; + } + } + } + else if (number_type == token_type::value_integer) + { + const auto x = std::strtoll(yytext.data(), &endptr, 10); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + if (errno == 0) + { + value_integer = static_cast(x); + if (value_integer == x) + { + return token_type::value_integer; + } + } + } + + // this code is reached if we parse a floating-point number or if an + // integer conversion above failed + strtof(value_float, yytext.data(), &endptr); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + return token_type::value_float; + } + + /*! + @param[in] literal_text the literal text to expect + @param[in] length the length of the passed literal text + @param[in] return_type the token type to return on success + */ + token_type scan_literal(const char* literal_text, const std::size_t length, + token_type return_type) + { + assert(current == literal_text[0]); + for (std::size_t i = 1; i < length; ++i) + { + if (JSON_UNLIKELY(get() != literal_text[i])) + { + error_message = "invalid literal"; + return token_type::parse_error; + } + } + return return_type; + } + + ///////////////////// + // input management + ///////////////////// + + /// reset yytext; current character is beginning of token + void reset() noexcept + { + yytext.clear(); + token_string.clear(); + token_string.push_back(std::char_traits::to_char_type(current)); + } + + /* + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a + `std::char_traits::eof()` in that case. Stores the scanned characters + for use in error messages. + + @return character read from the input + */ + std::char_traits::int_type get() + { + ++chars_read; + current = ia->get_character(); + if (JSON_LIKELY(current != std::char_traits::eof())) + { + token_string.push_back(std::char_traits::to_char_type(current)); + } + return current; + } + + /// unget current character (return it again on next get) + void unget() + { + --chars_read; + if (JSON_LIKELY(current != std::char_traits::eof())) + { + ia->unget_character(); + assert(token_string.size() != 0); + token_string.pop_back(); + } + } + + /// add a character to yytext + void add(int c) + { + yytext.push_back(std::char_traits::to_char_type(c)); + } + + public: + ///////////////////// + // value getters + ///////////////////// + + /// return integer value + constexpr number_integer_t get_number_integer() const noexcept + { + return value_integer; + } + + /// return unsigned integer value + constexpr number_unsigned_t get_number_unsigned() const noexcept + { + return value_unsigned; + } + + /// return floating-point value + constexpr number_float_t get_number_float() const noexcept + { + return value_float; + } + + /// return current string value (implicitly resets the token; useful only once) + std::string move_string() + { + return std::move(yytext); + } + + ///////////////////// + // diagnostics + ///////////////////// + + /// return position of last read token + constexpr std::size_t get_position() const noexcept + { + return chars_read; + } + + /// return the last read token (for errors only). Will never contain EOF + /// (an arbitrary value that is not a valid char value, often -1), because + /// 255 may legitimately occur. May contain NUL, which should be escaped. + std::string get_token_string() const + { + // escape control characters + std::string result; + for (const auto c : token_string) + { + if ('\x00' <= c and c <= '\x1F') + { + // escape control characters + std::stringstream ss; + ss << "(c) << ">"; + result += ss.str(); + } + else + { + // add character as is + result.push_back(c); + } + } + + return result; + } + + /// return syntax error message + constexpr const char* get_error_message() const noexcept + { + return error_message; + } + + ///////////////////// + // actual scanner + ///////////////////// + + token_type scan() + { + // read next character and ignore whitespace + do + { + get(); + } + while (current == ' ' or current == '\t' or current == '\n' or current == '\r'); + + switch (current) + { + // structural characters + case '[': + return token_type::begin_array; + case ']': + return token_type::end_array; + case '{': + return token_type::begin_object; + case '}': + return token_type::end_object; + case ':': + return token_type::name_separator; + case ',': + return token_type::value_separator; + + // literals + case 't': + return scan_literal("true", 4, token_type::literal_true); + case 'f': + return scan_literal("false", 5, token_type::literal_false); + case 'n': + return scan_literal("null", 4, token_type::literal_null); + + // string + case '\"': + return scan_string(); + + // number + case '-': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return scan_number(); + + // end of input (the null byte is needed when parsing from + // string literals) + case '\0': + case std::char_traits::eof(): + return token_type::end_of_input; + + // error + default: + error_message = "invalid literal"; + return token_type::parse_error; + } + } + + private: + /// input adapter + detail::input_adapter_t ia = nullptr; + + /// the current character + std::char_traits::int_type current = std::char_traits::eof(); + + /// the number of characters read + std::size_t chars_read = 0; + + /// raw input token string (for error messages) + std::vector token_string {}; + + /// buffer for variable-length tokens (numbers, strings) + std::string yytext {}; + + /// a description of occurred lexer errors + const char* error_message = ""; + + // number values + number_integer_t value_integer = 0; + number_unsigned_t value_unsigned = 0; + number_float_t value_float = 0; + + /// the decimal point + const char decimal_point_char = '.'; +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index f3fea0b8..d93ba316 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -58,6 +58,7 @@ SOFTWARE. #include "detail/conversions/from_json.hpp" #include "detail/conversions/to_json.hpp" #include "detail/parsing/input_adapters.hpp" +#include "detail/parsing/lexer.hpp" /*! @brief namespace for Niels Lohmann @@ -68,1261 +69,9 @@ namespace nlohmann { namespace detail { -////////////////////// -// lexer and parser // -////////////////////// - -/*! -@brief lexical analysis - -This class organizes the lexical analysis during JSON deserialization. -*/ -template -class lexer -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - - public: - /// token types for the parser - enum class token_type - { - uninitialized, ///< indicating the scanner is uninitialized - literal_true, ///< the `true` literal - literal_false, ///< the `false` literal - literal_null, ///< the `null` literal - value_string, ///< a string -- use get_string() for actual value - value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value - value_integer, ///< a signed integer -- use get_number_integer() for actual value - value_float, ///< an floating point number -- use get_number_float() for actual value - begin_array, ///< the character for array begin `[` - begin_object, ///< the character for object begin `{` - end_array, ///< the character for array end `]` - end_object, ///< the character for object end `}` - name_separator, ///< the name separator `:` - value_separator, ///< the value separator `,` - parse_error, ///< indicating a parse error - end_of_input, ///< indicating the end of the input buffer - literal_or_value ///< a literal or the begin of a value (only for diagnostics) - }; - - /// return name of values of type token_type (only used for errors) - static const char* token_type_name(const token_type t) noexcept - { - switch (t) - { - case token_type::uninitialized: - return ""; - case token_type::literal_true: - return "true literal"; - case token_type::literal_false: - return "false literal"; - case token_type::literal_null: - return "null literal"; - case token_type::value_string: - return "string literal"; - case lexer::token_type::value_unsigned: - case lexer::token_type::value_integer: - case lexer::token_type::value_float: - return "number literal"; - case token_type::begin_array: - return "'['"; - case token_type::begin_object: - return "'{'"; - case token_type::end_array: - return "']'"; - case token_type::end_object: - return "'}'"; - case token_type::name_separator: - return "':'"; - case token_type::value_separator: - return "','"; - case token_type::parse_error: - return ""; - case token_type::end_of_input: - return "end of input"; - case token_type::literal_or_value: - return "'[', '{', or a literal"; - default: // catch non-enum values - return "unknown token"; // LCOV_EXCL_LINE - } - } - - explicit lexer(detail::input_adapter_t adapter) - : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {} - - // delete because of pointer members - lexer(const lexer&) = delete; - lexer& operator=(lexer&) = delete; - - private: - ///////////////////// - // locales - ///////////////////// - - /// return the locale-dependent decimal point - static char get_decimal_point() noexcept - { - const auto loc = localeconv(); - assert(loc != nullptr); - return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); - } - - ///////////////////// - // scan functions - ///////////////////// - - /*! - @brief get codepoint from 4 hex characters following `\u` - - For input "\u c1 c2 c3 c4" the codepoint is: - (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 - = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) - - Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' - must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The - conversion is done by subtracting the offset (0x30, 0x37, and 0x57) - between the ASCII value of the character and the desired integer value. - - @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or - non-hex character) - */ - int get_codepoint() - { - // this function only makes sense after reading `\u` - assert(current == 'u'); - int codepoint = 0; - - const auto factors = { 12, 8, 4, 0 }; - for (const auto factor : factors) - { - get(); - - if (current >= '0' and current <= '9') - { - codepoint += ((current - 0x30) << factor); - } - else if (current >= 'A' and current <= 'F') - { - codepoint += ((current - 0x37) << factor); - } - else if (current >= 'a' and current <= 'f') - { - codepoint += ((current - 0x57) << factor); - } - else - { - return -1; - } - } - - assert(0x0000 <= codepoint and codepoint <= 0xFFFF); - return codepoint; - } - - /*! - @brief check if the next byte(s) are inside a given range - - Adds the current byte and, for each passed range, reads a new byte and - checks if it is inside the range. If a violation was detected, set up an - error message and return false. Otherwise, return true. - - @param[in] ranges list of integers; interpreted as list of pairs of - inclusive lower and upper bound, respectively - - @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, - 1, 2, or 3 pairs. This precondition is enforced by an assertion. - - @return true if and only if no range violation was detected - */ - bool next_byte_in_range(std::initializer_list ranges) - { - assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6); - add(current); - - for (auto range = ranges.begin(); range != ranges.end(); ++range) - { - get(); - if (JSON_LIKELY(*range <= current and current <= *(++range))) - { - add(current); - } - else - { - error_message = "invalid string: ill-formed UTF-8 byte"; - return false; - } - } - - return true; - } - - /*! - @brief scan a string literal - - This function scans a string according to Sect. 7 of RFC 7159. While - scanning, bytes are escaped and copied into buffer yytext. Then the function - returns successfully, yytext is *not* null-terminated (as it may contain \0 - bytes), and yytext.size() is the number of bytes in the string. - - @return token_type::value_string if string could be successfully scanned, - token_type::parse_error otherwise - - @note In case of errors, variable error_message contains a textual - description. - */ - token_type scan_string() - { - // reset yytext (ignore opening quote) - reset(); - - // we entered the function by reading an open quote - assert(current == '\"'); - - while (true) - { - // get next character - switch (get()) - { - // end of file while parsing string - case std::char_traits::eof(): - { - error_message = "invalid string: missing closing quote"; - return token_type::parse_error; - } - - // closing quote - case '\"': - { - return token_type::value_string; - } - - // escapes - case '\\': - { - switch (get()) - { - // quotation mark - case '\"': - add('\"'); - break; - // reverse solidus - case '\\': - add('\\'); - break; - // solidus - case '/': - add('/'); - break; - // backspace - case 'b': - add('\b'); - break; - // form feed - case 'f': - add('\f'); - break; - // line feed - case 'n': - add('\n'); - break; - // carriage return - case 'r': - add('\r'); - break; - // tab - case 't': - add('\t'); - break; - - // unicode escapes - case 'u': - { - const int codepoint1 = get_codepoint(); - int codepoint = codepoint1; // start with codepoint1 - - if (JSON_UNLIKELY(codepoint1 == -1)) - { - error_message = "invalid string: '\\u' must be followed by 4 hex digits"; - return token_type::parse_error; - } - - // check if code point is a high surrogate - if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF) - { - // expect next \uxxxx entry - if (JSON_LIKELY(get() == '\\' and get() == 'u')) - { - const int codepoint2 = get_codepoint(); - - if (JSON_UNLIKELY(codepoint2 == -1)) - { - error_message = "invalid string: '\\u' must be followed by 4 hex digits"; - return token_type::parse_error; - } - - // check if codepoint2 is a low surrogate - if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF)) - { - // overwrite codepoint - codepoint = - // high surrogate occupies the most significant 22 bits - (codepoint1 << 10) - // low surrogate occupies the least significant 15 bits - + codepoint2 - // there is still the 0xD800, 0xDC00 and 0x10000 noise - // in the result so we have to subtract with: - // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 - - 0x35FDC00; - } - else - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; - return token_type::parse_error; - } - } - else - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; - return token_type::parse_error; - } - } - else - { - if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF)) - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; - return token_type::parse_error; - } - } - - // result of the above calculation yields a proper codepoint - assert(0x00 <= codepoint and codepoint <= 0x10FFFF); - - // translate codepoint into bytes - if (codepoint < 0x80) - { - // 1-byte characters: 0xxxxxxx (ASCII) - add(codepoint); - } - else if (codepoint <= 0x7FF) - { - // 2-byte characters: 110xxxxx 10xxxxxx - add(0xC0 | (codepoint >> 6)); - add(0x80 | (codepoint & 0x3F)); - } - else if (codepoint <= 0xFFFF) - { - // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx - add(0xE0 | (codepoint >> 12)); - add(0x80 | ((codepoint >> 6) & 0x3F)); - add(0x80 | (codepoint & 0x3F)); - } - else - { - // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - add(0xF0 | (codepoint >> 18)); - add(0x80 | ((codepoint >> 12) & 0x3F)); - add(0x80 | ((codepoint >> 6) & 0x3F)); - add(0x80 | (codepoint & 0x3F)); - } - - break; - } - - // other characters after escape - default: - error_message = "invalid string: forbidden character after backslash"; - return token_type::parse_error; - } - - break; - } - - // invalid control characters - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - { - error_message = "invalid string: control character must be escaped"; - return token_type::parse_error; - } - - // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) - case 0x20: - case 0x21: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x7F: - { - add(current); - break; - } - - // U+0080..U+07FF: bytes C2..DF 80..BF - case 0xC2: - case 0xC3: - case 0xC4: - case 0xC5: - case 0xC6: - case 0xC7: - case 0xC8: - case 0xC9: - case 0xCA: - case 0xCB: - case 0xCC: - case 0xCD: - case 0xCE: - case 0xCF: - case 0xD0: - case 0xD1: - case 0xD2: - case 0xD3: - case 0xD4: - case 0xD5: - case 0xD6: - case 0xD7: - case 0xD8: - case 0xD9: - case 0xDA: - case 0xDB: - case 0xDC: - case 0xDD: - case 0xDE: - case 0xDF: - { - if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF}))) - { - return token_type::parse_error; - } - break; - } - - // U+0800..U+0FFF: bytes E0 A0..BF 80..BF - case 0xE0: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF - // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF - case 0xE1: - case 0xE2: - case 0xE3: - case 0xE4: - case 0xE5: - case 0xE6: - case 0xE7: - case 0xE8: - case 0xE9: - case 0xEA: - case 0xEB: - case 0xEC: - case 0xEE: - case 0xEF: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+D000..U+D7FF: bytes ED 80..9F 80..BF - case 0xED: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF - case 0xF0: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF - case 0xF1: - case 0xF2: - case 0xF3: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF - case 0xF4: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // remaining bytes (80..C1 and F5..FF) are ill-formed - default: - { - error_message = "invalid string: ill-formed UTF-8 byte"; - return token_type::parse_error; - } - } - } - } - - static void strtof(float& f, const char* str, char** endptr) noexcept - { - f = std::strtof(str, endptr); - } - - static void strtof(double& f, const char* str, char** endptr) noexcept - { - f = std::strtod(str, endptr); - } - - static void strtof(long double& f, const char* str, char** endptr) noexcept - { - f = std::strtold(str, endptr); - } - - /*! - @brief scan a number literal - - This function scans a string according to Sect. 6 of RFC 7159. - - The function is realized with a deterministic finite state machine derived - from the grammar described in RFC 7159. Starting in state "init", the - input is read and used to determined the next state. Only state "done" - accepts the number. State "error" is a trap state to model errors. In the - table below, "anything" means any character but the ones listed before. - - state | 0 | 1-9 | e E | + | - | . | anything - ---------|----------|----------|----------|---------|---------|----------|----------- - init | zero | any1 | [error] | [error] | minus | [error] | [error] - minus | zero | any1 | [error] | [error] | [error] | [error] | [error] - zero | done | done | exponent | done | done | decimal1 | done - any1 | any1 | any1 | exponent | done | done | decimal1 | done - decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error] - decimal2 | decimal2 | decimal2 | exponent | done | done | done | done - exponent | any2 | any2 | [error] | sign | sign | [error] | [error] - sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] - any2 | any2 | any2 | done | done | done | done | done - - The state machine is realized with one label per state (prefixed with - "scan_number_") and `goto` statements between them. The state machine - contains cycles, but any cycle can be left when EOF is read. Therefore, - the function is guaranteed to terminate. - - During scanning, the read bytes are stored in yytext. This string is - then converted to a signed integer, an unsigned integer, or a - floating-point number. - - @return token_type::value_unsigned, token_type::value_integer, or - token_type::value_float if number could be successfully scanned, - token_type::parse_error otherwise - - @note The scanner is independent of the current locale. Internally, the - locale's decimal point is used instead of `.` to work with the - locale-dependent converters. - */ - token_type scan_number() - { - // reset yytext to store the number's bytes - reset(); - - // the type of the parsed number; initially set to unsigned; will be - // changed if minus sign, decimal point or exponent is read - token_type number_type = token_type::value_unsigned; - - // state (init): we just found out we need to scan a number - switch (current) - { - case '-': - { - add(current); - goto scan_number_minus; - } - - case '0': - { - add(current); - goto scan_number_zero; - } - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - default: - { - // all other characters are rejected outside scan_number() - assert(false); // LCOV_EXCL_LINE - } - } - -scan_number_minus: - // state: we just parsed a leading minus sign - number_type = token_type::value_integer; - switch (get()) - { - case '0': - { - add(current); - goto scan_number_zero; - } - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - default: - { - error_message = "invalid number; expected digit after '-'"; - return token_type::parse_error; - } - } - -scan_number_zero: - // state: we just parse a zero (maybe with a leading minus sign) - switch (get()) - { - case '.': - { - add(decimal_point_char); - goto scan_number_decimal1; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_any1: - // state: we just parsed a number 0-9 (maybe with a leading minus sign) - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - case '.': - { - add(decimal_point_char); - goto scan_number_decimal1; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_decimal1: - // state: we just parsed a decimal point - number_type = token_type::value_float; - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_decimal2; - } - - default: - { - error_message = "invalid number; expected digit after '.'"; - return token_type::parse_error; - } - } - -scan_number_decimal2: - // we just parsed at least one number after a decimal point - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_decimal2; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_exponent: - // we just parsed an exponent - number_type = token_type::value_float; - switch (get()) - { - case '+': - case '-': - { - add(current); - goto scan_number_sign; - } - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - { - error_message = - "invalid number; expected '+', '-', or digit after exponent"; - return token_type::parse_error; - } - } - -scan_number_sign: - // we just parsed an exponent sign - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - { - error_message = "invalid number; expected digit after exponent sign"; - return token_type::parse_error; - } - } - -scan_number_any2: - // we just parsed a number after the exponent or exponent sign - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - goto scan_number_done; - } - -scan_number_done: - // unget the character after the number (we only read it to know that - // we are done scanning a number) - unget(); - - char* endptr = nullptr; - errno = 0; - - // try to parse integers first and fall back to floats - if (number_type == token_type::value_unsigned) - { - const auto x = std::strtoull(yytext.data(), &endptr, 10); - - // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); - - if (errno == 0) - { - value_unsigned = static_cast(x); - if (value_unsigned == x) - { - return token_type::value_unsigned; - } - } - } - else if (number_type == token_type::value_integer) - { - const auto x = std::strtoll(yytext.data(), &endptr, 10); - - // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); - - if (errno == 0) - { - value_integer = static_cast(x); - if (value_integer == x) - { - return token_type::value_integer; - } - } - } - - // this code is reached if we parse a floating-point number or if an - // integer conversion above failed - strtof(value_float, yytext.data(), &endptr); - - // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); - - return token_type::value_float; - } - - /*! - @param[in] literal_text the literal text to expect - @param[in] length the length of the passed literal text - @param[in] return_type the token type to return on success - */ - token_type scan_literal(const char* literal_text, const std::size_t length, - token_type return_type) - { - assert(current == literal_text[0]); - for (std::size_t i = 1; i < length; ++i) - { - if (JSON_UNLIKELY(get() != literal_text[i])) - { - error_message = "invalid literal"; - return token_type::parse_error; - } - } - return return_type; - } - - ///////////////////// - // input management - ///////////////////// - - /// reset yytext; current character is beginning of token - void reset() noexcept - { - yytext.clear(); - token_string.clear(); - token_string.push_back(std::char_traits::to_char_type(current)); - } - - /* - @brief get next character from the input - - This function provides the interface to the used input adapter. It does - not throw in case the input reached EOF, but returns a - `std::char_traits::eof()` in that case. Stores the scanned characters - for use in error messages. - - @return character read from the input - */ - std::char_traits::int_type get() - { - ++chars_read; - current = ia->get_character(); - if (JSON_LIKELY(current != std::char_traits::eof())) - { - token_string.push_back(std::char_traits::to_char_type(current)); - } - return current; - } - - /// unget current character (return it again on next get) - void unget() - { - --chars_read; - if (JSON_LIKELY(current != std::char_traits::eof())) - { - ia->unget_character(); - assert(token_string.size() != 0); - token_string.pop_back(); - } - } - - /// add a character to yytext - void add(int c) - { - yytext.push_back(std::char_traits::to_char_type(c)); - } - - public: - ///////////////////// - // value getters - ///////////////////// - - /// return integer value - constexpr number_integer_t get_number_integer() const noexcept - { - return value_integer; - } - - /// return unsigned integer value - constexpr number_unsigned_t get_number_unsigned() const noexcept - { - return value_unsigned; - } - - /// return floating-point value - constexpr number_float_t get_number_float() const noexcept - { - return value_float; - } - - /// return current string value (implicitly resets the token; useful only once) - std::string move_string() - { - return std::move(yytext); - } - - ///////////////////// - // diagnostics - ///////////////////// - - /// return position of last read token - constexpr std::size_t get_position() const noexcept - { - return chars_read; - } - - /// return the last read token (for errors only). Will never contain EOF - /// (an arbitrary value that is not a valid char value, often -1), because - /// 255 may legitimately occur. May contain NUL, which should be escaped. - std::string get_token_string() const - { - // escape control characters - std::string result; - for (const auto c : token_string) - { - if ('\x00' <= c and c <= '\x1F') - { - // escape control characters - std::stringstream ss; - ss << "(c) << ">"; - result += ss.str(); - } - else - { - // add character as is - result.push_back(c); - } - } - - return result; - } - - /// return syntax error message - constexpr const char* get_error_message() const noexcept - { - return error_message; - } - - ///////////////////// - // actual scanner - ///////////////////// - - token_type scan() - { - // read next character and ignore whitespace - do - { - get(); - } - while (current == ' ' or current == '\t' or current == '\n' or current == '\r'); - - switch (current) - { - // structural characters - case '[': - return token_type::begin_array; - case ']': - return token_type::end_array; - case '{': - return token_type::begin_object; - case '}': - return token_type::end_object; - case ':': - return token_type::name_separator; - case ',': - return token_type::value_separator; - - // literals - case 't': - return scan_literal("true", 4, token_type::literal_true); - case 'f': - return scan_literal("false", 5, token_type::literal_false); - case 'n': - return scan_literal("null", 4, token_type::literal_null); - - // string - case '\"': - return scan_string(); - - // number - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - return scan_number(); - - // end of input (the null byte is needed when parsing from - // string literals) - case '\0': - case std::char_traits::eof(): - return token_type::end_of_input; - - // error - default: - error_message = "invalid literal"; - return token_type::parse_error; - } - } - - private: - /// input adapter - detail::input_adapter_t ia = nullptr; - - /// the current character - std::char_traits::int_type current = std::char_traits::eof(); - - /// the number of characters read - std::size_t chars_read = 0; - - /// raw input token string (for error messages) - std::vector token_string {}; - - /// buffer for variable-length tokens (numbers, strings) - std::string yytext {}; - - /// a description of occurred lexer errors - const char* error_message = ""; - - // number values - number_integer_t value_integer = 0; - number_unsigned_t value_unsigned = 0; - number_float_t value_float = 0; - - /// the decimal point - const char decimal_point_char = '.'; -}; +//////////// +// parser // +//////////// /*! @brief syntax analysis From 9ea25685a8020555510a7bc862655839d489dcd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 17:02:40 +0200 Subject: [PATCH 018/106] add detail/parsing/parser.hpp --- Makefile | 3 +- src/detail/parsing/parser.hpp | 589 ++++++++++++++++++++++++++++++++++ src/json.hpp | 570 +------------------------------- 3 files changed, 592 insertions(+), 570 deletions(-) create mode 100644 src/detail/parsing/parser.hpp diff --git a/Makefile b/Makefile index aacaa00f..69421ace 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/conversions/from_json.hpp \ ${SRCDIR}/detail/conversions/to_json.hpp \ ${SRCDIR}/detail/parsing/input_adapters.hpp \ - ${SRCDIR}/detail/parsing/lexer.hpp + ${SRCDIR}/detail/parsing/lexer.hpp \ + ${SRCDIR}/detail/parsing/parser.hpp diff --git a/src/detail/parsing/parser.hpp b/src/detail/parsing/parser.hpp new file mode 100644 index 00000000..c82c2f6d --- /dev/null +++ b/src/detail/parsing/parser.hpp @@ -0,0 +1,589 @@ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP + +#include +#include +#include +#include + +#include "detail/exceptions.hpp" +#include "detail/macro_scope.hpp" +#include "detail/parsing/input_adapters.hpp" +#include "detail/parsing/lexer.hpp" + +namespace nlohmann +{ +namespace detail +{ +//////////// +// parser // +//////////// + +/*! +@brief syntax analysis + +This class implements a recursive decent parser. +*/ +template +class parser +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using lexer_t = lexer; + using token_type = typename lexer_t::token_type; + + public: + enum class parse_event_t : uint8_t + { + /// the parser read `{` and started to process a JSON object + object_start, + /// the parser read `}` and finished processing a JSON object + object_end, + /// the parser read `[` and started to process a JSON array + array_start, + /// the parser read `]` and finished processing a JSON array + array_end, + /// the parser read a key of a value in an object + key, + /// the parser finished reading a JSON value + value + }; + + using parser_callback_t = + std::function; + + /// a parser reading from an input adapter + explicit parser(detail::input_adapter_t adapter, + const parser_callback_t cb = nullptr, + const bool allow_exceptions_ = true) + : callback(cb), m_lexer(adapter), allow_exceptions(allow_exceptions_) + {} + + /*! + @brief public parser interface + + @param[in] strict whether to expect the last token to be EOF + @param[in,out] result parsed JSON value + + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ + void parse(const bool strict, BasicJsonType& result) + { + // read first token + get_token(); + + parse_internal(true, result); + result.assert_invariant(); + + // in strict mode, input must be completely read + if (strict) + { + get_token(); + expect(token_type::end_of_input); + } + + // in case of an error, return discarded value + if (errored) + { + result = value_t::discarded; + return; + } + + // set top-level value to null if it was discarded by the callback + // function + if (result.is_discarded()) + { + result = nullptr; + } + } + + /*! + @brief public accept interface + + @param[in] strict whether to expect the last token to be EOF + @return whether the input is a proper JSON text + */ + bool accept(const bool strict = true) + { + // read first token + get_token(); + + if (not accept_internal()) + { + return false; + } + + // strict => last token must be EOF + return not strict or (get_token() == token_type::end_of_input); + } + + private: + /*! + @brief the actual parser + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ + void parse_internal(bool keep, BasicJsonType& result) + { + // never parse after a parse error was detected + assert(not errored); + + // start with a discarded value + if (not result.is_discarded()) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + + switch (last_token) + { + case token_type::begin_object: + { + if (keep) + { + if (callback) + { + keep = callback(depth++, parse_event_t::object_start, result); + } + + if (not callback or keep) + { + // explicitly set result to object to cope with {} + result.m_type = value_t::object; + result.m_value = value_t::object; + } + } + + // read next token + get_token(); + + // closing } -> we are done + if (last_token == token_type::end_object) + { + if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + break; + } + + // parse values + std::string key; + BasicJsonType value; + while (true) + { + // store key + if (not expect(token_type::value_string)) + { + return; + } + key = m_lexer.move_string(); + + bool keep_tag = false; + if (keep) + { + if (callback) + { + BasicJsonType k(key); + keep_tag = callback(depth, parse_event_t::key, k); + } + else + { + keep_tag = true; + } + } + + // parse separator (:) + get_token(); + if (not expect(token_type::name_separator)) + { + return; + } + + // parse and add value + get_token(); + value.m_value.destroy(value.m_type); + value.m_type = value_t::discarded; + parse_internal(keep, value); + + if (JSON_UNLIKELY(errored)) + { + return; + } + + if (keep and keep_tag and not value.is_discarded()) + { + result.m_value.object->emplace(std::move(key), std::move(value)); + } + + // comma -> next value + get_token(); + if (last_token == token_type::value_separator) + { + get_token(); + continue; + } + + // closing } + if (not expect(token_type::end_object)) + { + return; + } + break; + } + + if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + break; + } + + case token_type::begin_array: + { + if (keep) + { + if (callback) + { + keep = callback(depth++, parse_event_t::array_start, result); + } + + if (not callback or keep) + { + // explicitly set result to array to cope with [] + result.m_type = value_t::array; + result.m_value = value_t::array; + } + } + + // read next token + get_token(); + + // closing ] -> we are done + if (last_token == token_type::end_array) + { + if (callback and not callback(--depth, parse_event_t::array_end, result)) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + break; + } + + // parse values + BasicJsonType value; + while (true) + { + // parse value + value.m_value.destroy(value.m_type); + value.m_type = value_t::discarded; + parse_internal(keep, value); + + if (JSON_UNLIKELY(errored)) + { + return; + } + + if (keep and not value.is_discarded()) + { + result.m_value.array->push_back(std::move(value)); + } + + // comma -> next value + get_token(); + if (last_token == token_type::value_separator) + { + get_token(); + continue; + } + + // closing ] + if (not expect(token_type::end_array)) + { + return; + } + break; + } + + if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + break; + } + + case token_type::literal_null: + { + result.m_type = value_t::null; + break; + } + + case token_type::value_string: + { + result.m_type = value_t::string; + result.m_value = m_lexer.move_string(); + break; + } + + case token_type::literal_true: + { + result.m_type = value_t::boolean; + result.m_value = true; + break; + } + + case token_type::literal_false: + { + result.m_type = value_t::boolean; + result.m_value = false; + break; + } + + case token_type::value_unsigned: + { + result.m_type = value_t::number_unsigned; + result.m_value = m_lexer.get_number_unsigned(); + break; + } + + case token_type::value_integer: + { + result.m_type = value_t::number_integer; + result.m_value = m_lexer.get_number_integer(); + break; + } + + case token_type::value_float: + { + result.m_type = value_t::number_float; + result.m_value = m_lexer.get_number_float(); + + // throw in case of infinity or NAN + if (JSON_UNLIKELY(not std::isfinite(result.m_value.number_float))) + { + if (allow_exceptions) + { + JSON_THROW(out_of_range::create(406, "number overflow parsing '" + + m_lexer.get_token_string() + "'")); + } + expect(token_type::uninitialized); + } + break; + } + + case token_type::parse_error: + { + // using "uninitialized" to avoid "expected" message + if (not expect(token_type::uninitialized)) + { + return; + } + break; // LCOV_EXCL_LINE + } + + default: + { + // the last token was unexpected; we expected a value + if (not expect(token_type::literal_or_value)) + { + return; + } + break; // LCOV_EXCL_LINE + } + } + + if (keep and callback and not callback(depth, parse_event_t::value, result)) + { + result.m_type = value_t::discarded; + } + } + + /*! + @brief the actual acceptor + + @invariant 1. The last token is not yet processed. Therefore, the caller + of this function must make sure a token has been read. + 2. When this function returns, the last token is processed. + That is, the last read character was already considered. + + This invariant makes sure that no token needs to be "unput". + */ + bool accept_internal() + { + switch (last_token) + { + case token_type::begin_object: + { + // read next token + get_token(); + + // closing } -> we are done + if (last_token == token_type::end_object) + { + return true; + } + + // parse values + while (true) + { + // parse key + if (last_token != token_type::value_string) + { + return false; + } + + // parse separator (:) + get_token(); + if (last_token != token_type::name_separator) + { + return false; + } + + // parse value + get_token(); + if (not accept_internal()) + { + return false; + } + + // comma -> next value + get_token(); + if (last_token == token_type::value_separator) + { + get_token(); + continue; + } + + // closing } + return (last_token == token_type::end_object); + } + } + + case token_type::begin_array: + { + // read next token + get_token(); + + // closing ] -> we are done + if (last_token == token_type::end_array) + { + return true; + } + + // parse values + while (true) + { + // parse value + if (not accept_internal()) + { + return false; + } + + // comma -> next value + get_token(); + if (last_token == token_type::value_separator) + { + get_token(); + continue; + } + + // closing ] + return (last_token == token_type::end_array); + } + } + + case token_type::value_float: + { + // reject infinity or NAN + return std::isfinite(m_lexer.get_number_float()); + } + + case token_type::literal_false: + case token_type::literal_null: + case token_type::literal_true: + case token_type::value_integer: + case token_type::value_string: + case token_type::value_unsigned: + return true; + + default: // the last token was unexpected + return false; + } + } + + /// get next token from lexer + token_type get_token() + { + return (last_token = m_lexer.scan()); + } + + /*! + @throw parse_error.101 if expected token did not occur + */ + bool expect(token_type t) + { + if (JSON_UNLIKELY(t != last_token)) + { + errored = true; + expected = t; + if (allow_exceptions) + { + throw_exception(); + } + else + { + return false; + } + } + + return true; + } + + [[noreturn]] void throw_exception() const + { + std::string error_msg = "syntax error - "; + if (last_token == token_type::parse_error) + { + error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" + + m_lexer.get_token_string() + "'"; + } + else + { + error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token)); + } + + if (expected != token_type::uninitialized) + { + error_msg += "; expected " + std::string(lexer_t::token_type_name(expected)); + } + + JSON_THROW(parse_error::create(101, m_lexer.get_position(), error_msg)); + } + + private: + /// current level of recursion + int depth = 0; + /// callback function + const parser_callback_t callback = nullptr; + /// the type of the last read token + token_type last_token = token_type::uninitialized; + /// the lexer + lexer_t m_lexer; + /// whether a syntax error occurred + bool errored = false; + /// possible reason for the syntax error + token_type expected = token_type::uninitialized; + /// whether to throw exceptions in case of errors + const bool allow_exceptions = true; +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index d93ba316..326589ef 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -59,6 +59,7 @@ SOFTWARE. #include "detail/conversions/to_json.hpp" #include "detail/parsing/input_adapters.hpp" #include "detail/parsing/lexer.hpp" +#include "detail/parsing/parser.hpp" /*! @brief namespace for Niels Lohmann @@ -69,575 +70,6 @@ namespace nlohmann { namespace detail { -//////////// -// parser // -//////////// - -/*! -@brief syntax analysis - -This class implements a recursive decent parser. -*/ -template -class parser -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - using lexer_t = lexer; - using token_type = typename lexer_t::token_type; - - public: - enum class parse_event_t : uint8_t - { - /// the parser read `{` and started to process a JSON object - object_start, - /// the parser read `}` and finished processing a JSON object - object_end, - /// the parser read `[` and started to process a JSON array - array_start, - /// the parser read `]` and finished processing a JSON array - array_end, - /// the parser read a key of a value in an object - key, - /// the parser finished reading a JSON value - value - }; - - using parser_callback_t = - std::function; - - /// a parser reading from an input adapter - explicit parser(detail::input_adapter_t adapter, - const parser_callback_t cb = nullptr, - const bool allow_exceptions_ = true) - : callback(cb), m_lexer(adapter), allow_exceptions(allow_exceptions_) - {} - - /*! - @brief public parser interface - - @param[in] strict whether to expect the last token to be EOF - @param[in,out] result parsed JSON value - - @throw parse_error.101 in case of an unexpected token - @throw parse_error.102 if to_unicode fails or surrogate error - @throw parse_error.103 if to_unicode fails - */ - void parse(const bool strict, BasicJsonType& result) - { - // read first token - get_token(); - - parse_internal(true, result); - result.assert_invariant(); - - // in strict mode, input must be completely read - if (strict) - { - get_token(); - expect(token_type::end_of_input); - } - - // in case of an error, return discarded value - if (errored) - { - result = value_t::discarded; - return; - } - - // set top-level value to null if it was discarded by the callback - // function - if (result.is_discarded()) - { - result = nullptr; - } - } - - /*! - @brief public accept interface - - @param[in] strict whether to expect the last token to be EOF - @return whether the input is a proper JSON text - */ - bool accept(const bool strict = true) - { - // read first token - get_token(); - - if (not accept_internal()) - { - return false; - } - - // strict => last token must be EOF - return not strict or (get_token() == token_type::end_of_input); - } - - private: - /*! - @brief the actual parser - @throw parse_error.101 in case of an unexpected token - @throw parse_error.102 if to_unicode fails or surrogate error - @throw parse_error.103 if to_unicode fails - */ - void parse_internal(bool keep, BasicJsonType& result) - { - // never parse after a parse error was detected - assert(not errored); - - // start with a discarded value - if (not result.is_discarded()) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - - switch (last_token) - { - case token_type::begin_object: - { - if (keep) - { - if (callback) - { - keep = callback(depth++, parse_event_t::object_start, result); - } - - if (not callback or keep) - { - // explicitly set result to object to cope with {} - result.m_type = value_t::object; - result.m_value = value_t::object; - } - } - - // read next token - get_token(); - - // closing } -> we are done - if (last_token == token_type::end_object) - { - if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - break; - } - - // parse values - std::string key; - BasicJsonType value; - while (true) - { - // store key - if (not expect(token_type::value_string)) - { - return; - } - key = m_lexer.move_string(); - - bool keep_tag = false; - if (keep) - { - if (callback) - { - BasicJsonType k(key); - keep_tag = callback(depth, parse_event_t::key, k); - } - else - { - keep_tag = true; - } - } - - // parse separator (:) - get_token(); - if (not expect(token_type::name_separator)) - { - return; - } - - // parse and add value - get_token(); - value.m_value.destroy(value.m_type); - value.m_type = value_t::discarded; - parse_internal(keep, value); - - if (JSON_UNLIKELY(errored)) - { - return; - } - - if (keep and keep_tag and not value.is_discarded()) - { - result.m_value.object->emplace(std::move(key), std::move(value)); - } - - // comma -> next value - get_token(); - if (last_token == token_type::value_separator) - { - get_token(); - continue; - } - - // closing } - if (not expect(token_type::end_object)) - { - return; - } - break; - } - - if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - break; - } - - case token_type::begin_array: - { - if (keep) - { - if (callback) - { - keep = callback(depth++, parse_event_t::array_start, result); - } - - if (not callback or keep) - { - // explicitly set result to array to cope with [] - result.m_type = value_t::array; - result.m_value = value_t::array; - } - } - - // read next token - get_token(); - - // closing ] -> we are done - if (last_token == token_type::end_array) - { - if (callback and not callback(--depth, parse_event_t::array_end, result)) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - break; - } - - // parse values - BasicJsonType value; - while (true) - { - // parse value - value.m_value.destroy(value.m_type); - value.m_type = value_t::discarded; - parse_internal(keep, value); - - if (JSON_UNLIKELY(errored)) - { - return; - } - - if (keep and not value.is_discarded()) - { - result.m_value.array->push_back(std::move(value)); - } - - // comma -> next value - get_token(); - if (last_token == token_type::value_separator) - { - get_token(); - continue; - } - - // closing ] - if (not expect(token_type::end_array)) - { - return; - } - break; - } - - if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - break; - } - - case token_type::literal_null: - { - result.m_type = value_t::null; - break; - } - - case token_type::value_string: - { - result.m_type = value_t::string; - result.m_value = m_lexer.move_string(); - break; - } - - case token_type::literal_true: - { - result.m_type = value_t::boolean; - result.m_value = true; - break; - } - - case token_type::literal_false: - { - result.m_type = value_t::boolean; - result.m_value = false; - break; - } - - case token_type::value_unsigned: - { - result.m_type = value_t::number_unsigned; - result.m_value = m_lexer.get_number_unsigned(); - break; - } - - case token_type::value_integer: - { - result.m_type = value_t::number_integer; - result.m_value = m_lexer.get_number_integer(); - break; - } - - case token_type::value_float: - { - result.m_type = value_t::number_float; - result.m_value = m_lexer.get_number_float(); - - // throw in case of infinity or NAN - if (JSON_UNLIKELY(not std::isfinite(result.m_value.number_float))) - { - if (allow_exceptions) - { - JSON_THROW(out_of_range::create(406, "number overflow parsing '" + - m_lexer.get_token_string() + "'")); - } - expect(token_type::uninitialized); - } - break; - } - - case token_type::parse_error: - { - // using "uninitialized" to avoid "expected" message - if (not expect(token_type::uninitialized)) - { - return; - } - break; // LCOV_EXCL_LINE - } - - default: - { - // the last token was unexpected; we expected a value - if (not expect(token_type::literal_or_value)) - { - return; - } - break; // LCOV_EXCL_LINE - } - } - - if (keep and callback and not callback(depth, parse_event_t::value, result)) - { - result.m_type = value_t::discarded; - } - } - - /*! - @brief the actual acceptor - - @invariant 1. The last token is not yet processed. Therefore, the caller - of this function must make sure a token has been read. - 2. When this function returns, the last token is processed. - That is, the last read character was already considered. - - This invariant makes sure that no token needs to be "unput". - */ - bool accept_internal() - { - switch (last_token) - { - case token_type::begin_object: - { - // read next token - get_token(); - - // closing } -> we are done - if (last_token == token_type::end_object) - { - return true; - } - - // parse values - while (true) - { - // parse key - if (last_token != token_type::value_string) - { - return false; - } - - // parse separator (:) - get_token(); - if (last_token != token_type::name_separator) - { - return false; - } - - // parse value - get_token(); - if (not accept_internal()) - { - return false; - } - - // comma -> next value - get_token(); - if (last_token == token_type::value_separator) - { - get_token(); - continue; - } - - // closing } - return (last_token == token_type::end_object); - } - } - - case token_type::begin_array: - { - // read next token - get_token(); - - // closing ] -> we are done - if (last_token == token_type::end_array) - { - return true; - } - - // parse values - while (true) - { - // parse value - if (not accept_internal()) - { - return false; - } - - // comma -> next value - get_token(); - if (last_token == token_type::value_separator) - { - get_token(); - continue; - } - - // closing ] - return (last_token == token_type::end_array); - } - } - - case token_type::value_float: - { - // reject infinity or NAN - return std::isfinite(m_lexer.get_number_float()); - } - - case token_type::literal_false: - case token_type::literal_null: - case token_type::literal_true: - case token_type::value_integer: - case token_type::value_string: - case token_type::value_unsigned: - return true; - - default: // the last token was unexpected - return false; - } - } - - /// get next token from lexer - token_type get_token() - { - return (last_token = m_lexer.scan()); - } - - /*! - @throw parse_error.101 if expected token did not occur - */ - bool expect(token_type t) - { - if (JSON_UNLIKELY(t != last_token)) - { - errored = true; - expected = t; - if (allow_exceptions) - { - throw_exception(); - } - else - { - return false; - } - } - - return true; - } - - [[noreturn]] void throw_exception() const - { - std::string error_msg = "syntax error - "; - if (last_token == token_type::parse_error) - { - error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" + - m_lexer.get_token_string() + "'"; - } - else - { - error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token)); - } - - if (expected != token_type::uninitialized) - { - error_msg += "; expected " + std::string(lexer_t::token_type_name(expected)); - } - - JSON_THROW(parse_error::create(101, m_lexer.get_position(), error_msg)); - } - - private: - /// current level of recursion - int depth = 0; - /// callback function - const parser_callback_t callback = nullptr; - /// the type of the last read token - token_type last_token = token_type::uninitialized; - /// the lexer - lexer_t m_lexer; - /// whether a syntax error occurred - bool errored = false; - /// possible reason for the syntax error - token_type expected = token_type::uninitialized; - /// whether to throw exceptions in case of errors - const bool allow_exceptions = true; -}; - /////////////// // iterators // /////////////// From 51ecc31db71ba01bc6c2595e77df08146ea887bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 17:10:32 +0200 Subject: [PATCH 019/106] add detail/iterators/primitive_iterator.hpp --- Makefile | 3 +- src/detail/iterators/primitive_iterator.hpp | 130 ++++++++++++++++++++ src/json.hpp | 117 +----------------- 3 files changed, 133 insertions(+), 117 deletions(-) create mode 100644 src/detail/iterators/primitive_iterator.hpp diff --git a/Makefile b/Makefile index 69421ace..4f5e9249 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/conversions/to_json.hpp \ ${SRCDIR}/detail/parsing/input_adapters.hpp \ ${SRCDIR}/detail/parsing/lexer.hpp \ - ${SRCDIR}/detail/parsing/parser.hpp + ${SRCDIR}/detail/parsing/parser.hpp \ + ${SRCDIR}/detail/iterators/primitive_iterator.hpp diff --git a/src/detail/iterators/primitive_iterator.hpp b/src/detail/iterators/primitive_iterator.hpp new file mode 100644 index 00000000..8ebafe0e --- /dev/null +++ b/src/detail/iterators/primitive_iterator.hpp @@ -0,0 +1,130 @@ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP + +#include +#include +#include + +namespace nlohmann +{ +namespace detail +{ +/* +@brief an iterator for primitive JSON types + +This class models an iterator for primitive JSON types (boolean, number, +string). It's only purpose is to allow the iterator/const_iterator classes +to "iterate" over primitive values. Internally, the iterator is modeled by +a `difference_type` variable. Value begin_value (`0`) models the begin, +end_value (`1`) models past the end. +*/ +class primitive_iterator_t +{ + public: + using difference_type = std::ptrdiff_t; + + constexpr difference_type get_value() const noexcept + { + return m_it; + } + + /// set iterator to a defined beginning + void set_begin() noexcept + { + m_it = begin_value; + } + + /// set iterator to a defined past the end + void set_end() noexcept + { + m_it = end_value; + } + + /// return whether the iterator can be dereferenced + constexpr bool is_begin() const noexcept + { + return m_it == begin_value; + } + + /// return whether the iterator is at end + constexpr bool is_end() const noexcept + { + return m_it == end_value; + } + + friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it == rhs.m_it; + } + + friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it < rhs.m_it; + } + + primitive_iterator_t operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it - rhs.m_it; + } + + friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) + { + return os << it.m_it; + } + + primitive_iterator_t& operator++() + { + ++m_it; + return *this; + } + + primitive_iterator_t const operator++(int) + { + auto result = *this; + m_it++; + return result; + } + + primitive_iterator_t& operator--() + { + --m_it; + return *this; + } + + primitive_iterator_t const operator--(int) + { + auto result = *this; + m_it--; + return result; + } + + primitive_iterator_t& operator+=(difference_type n) + { + m_it += n; + return *this; + } + + primitive_iterator_t& operator-=(difference_type n) + { + m_it -= n; + return *this; + } + + private: + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; + + /// iterator as signed integer type + difference_type m_it = (std::numeric_limits::min)(); +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index 326589ef..3d4eddd3 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -60,6 +60,7 @@ SOFTWARE. #include "detail/parsing/input_adapters.hpp" #include "detail/parsing/lexer.hpp" #include "detail/parsing/parser.hpp" +#include "detail/iterators/primitive_iterator.hpp" /*! @brief namespace for Niels Lohmann @@ -74,122 +75,6 @@ namespace detail // iterators // /////////////// -/*! -@brief an iterator for primitive JSON types - -This class models an iterator for primitive JSON types (boolean, number, -string). It's only purpose is to allow the iterator/const_iterator classes -to "iterate" over primitive values. Internally, the iterator is modeled by -a `difference_type` variable. Value begin_value (`0`) models the begin, -end_value (`1`) models past the end. -*/ -class primitive_iterator_t -{ - public: - using difference_type = std::ptrdiff_t; - - constexpr difference_type get_value() const noexcept - { - return m_it; - } - - /// set iterator to a defined beginning - void set_begin() noexcept - { - m_it = begin_value; - } - - /// set iterator to a defined past the end - void set_end() noexcept - { - m_it = end_value; - } - - /// return whether the iterator can be dereferenced - constexpr bool is_begin() const noexcept - { - return m_it == begin_value; - } - - /// return whether the iterator is at end - constexpr bool is_end() const noexcept - { - return m_it == end_value; - } - - friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it == rhs.m_it; - } - - friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it < rhs.m_it; - } - - primitive_iterator_t operator+(difference_type i) - { - auto result = *this; - result += i; - return result; - } - - friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it - rhs.m_it; - } - - friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) - { - return os << it.m_it; - } - - primitive_iterator_t& operator++() - { - ++m_it; - return *this; - } - - primitive_iterator_t const operator++(int) - { - auto result = *this; - m_it++; - return result; - } - - primitive_iterator_t& operator--() - { - --m_it; - return *this; - } - - primitive_iterator_t const operator--(int) - { - auto result = *this; - m_it--; - return result; - } - - primitive_iterator_t& operator+=(difference_type n) - { - m_it += n; - return *this; - } - - primitive_iterator_t& operator-=(difference_type n) - { - m_it -= n; - return *this; - } - - private: - static constexpr difference_type begin_value = 0; - static constexpr difference_type end_value = begin_value + 1; - - /// iterator as signed integer type - difference_type m_it = (std::numeric_limits::min)(); -}; - /*! @brief an iterator value From 3e65a652905610f0cc28109ad35a911befdb2b61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 17:18:07 +0200 Subject: [PATCH 020/106] add detail/iterators/internal_iterator.hpp --- Makefile | 3 ++- src/detail/iterators/internal_iterator.hpp | 28 ++++++++++++++++++++++ src/json.hpp | 17 +------------ 3 files changed, 31 insertions(+), 17 deletions(-) create mode 100644 src/detail/iterators/internal_iterator.hpp diff --git a/Makefile b/Makefile index 4f5e9249..d587f051 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/parsing/input_adapters.hpp \ ${SRCDIR}/detail/parsing/lexer.hpp \ ${SRCDIR}/detail/parsing/parser.hpp \ - ${SRCDIR}/detail/iterators/primitive_iterator.hpp + ${SRCDIR}/detail/iterators/primitive_iterator.hpp \ + ${SRCDIR}/detail/iterators/internal_iterator.hpp diff --git a/src/detail/iterators/internal_iterator.hpp b/src/detail/iterators/internal_iterator.hpp new file mode 100644 index 00000000..25763355 --- /dev/null +++ b/src/detail/iterators/internal_iterator.hpp @@ -0,0 +1,28 @@ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP + +#include "detail/iterators/primitive_iterator.hpp" + +namespace nlohmann +{ +namespace detail +{ +/*! +@brief an iterator value + +@note This structure could easily be a union, but MSVC currently does not allow +unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. +*/ +template struct internal_iterator +{ + /// iterator for JSON objects + typename BasicJsonType::object_t::iterator object_iterator {}; + /// iterator for JSON arrays + typename BasicJsonType::array_t::iterator array_iterator {}; + /// generic iterator for all other types + primitive_iterator_t primitive_iterator {}; +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index 3d4eddd3..561761dc 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -61,6 +61,7 @@ SOFTWARE. #include "detail/parsing/lexer.hpp" #include "detail/parsing/parser.hpp" #include "detail/iterators/primitive_iterator.hpp" +#include "detail/iterators/internal_iterator.hpp" /*! @brief namespace for Niels Lohmann @@ -75,22 +76,6 @@ namespace detail // iterators // /////////////// -/*! -@brief an iterator value - -@note This structure could easily be a union, but MSVC currently does not allow -unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. -*/ -template struct internal_iterator -{ - /// iterator for JSON objects - typename BasicJsonType::object_t::iterator object_iterator {}; - /// iterator for JSON arrays - typename BasicJsonType::array_t::iterator array_iterator {}; - /// generic iterator for all other types - primitive_iterator_t primitive_iterator {}; -}; - template class iteration_proxy; /*! From bf06cf6c22b128cfe7ea06d3f4c37d434b575245 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 17:23:15 +0200 Subject: [PATCH 021/106] add detail/iterators/iter_impl.hpp --- Makefile | 3 +- src/detail/iterators/iter_impl.hpp | 612 +++++++++++++++++++++++++++++ src/json.hpp | 596 +--------------------------- 3 files changed, 615 insertions(+), 596 deletions(-) create mode 100644 src/detail/iterators/iter_impl.hpp diff --git a/Makefile b/Makefile index d587f051..f5e18015 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/parsing/lexer.hpp \ ${SRCDIR}/detail/parsing/parser.hpp \ ${SRCDIR}/detail/iterators/primitive_iterator.hpp \ - ${SRCDIR}/detail/iterators/internal_iterator.hpp + ${SRCDIR}/detail/iterators/internal_iterator.hpp \ + ${SRCDIR}/detail/iterators/iter_impl.hpp diff --git a/src/detail/iterators/iter_impl.hpp b/src/detail/iterators/iter_impl.hpp new file mode 100644 index 00000000..79b11b33 --- /dev/null +++ b/src/detail/iterators/iter_impl.hpp @@ -0,0 +1,612 @@ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP + +#include +#include + +#include "detail/exceptions.hpp" +#include "detail/macro_scope.hpp" + +namespace nlohmann +{ +namespace detail +{ +// forward declare, to be able to friend it later on +template class iteration_proxy; + +/*! +@brief a template for a bidirectional iterator for the @ref basic_json class + +This class implements a both iterators (iterator and const_iterator) for the +@ref basic_json class. + +@note An iterator is called *initialized* when a pointer to a JSON value has + been set (e.g., by a constructor or a copy assignment). If the iterator is + default-constructed, it is *uninitialized* and most methods are undefined. + **The library uses assertions to detect calls on uninitialized iterators.** + +@requirement The class satisfies the following concept requirements: +- +[BidirectionalIterator](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator): + The iterator that can be moved can be moved in both directions (i.e. + incremented and decremented). + +@since version 1.0.0, simplified in version 2.0.9, change to bidirectional + iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593) +*/ +template +class iter_impl +{ + /// allow basic_json to access private members + friend iter_impl::value, typename std::remove_const::type, const BasicJsonType>::type>; + friend BasicJsonType; + friend iteration_proxy; + + using object_t = typename BasicJsonType::object_t; + using array_t = typename BasicJsonType::array_t; + // make sure BasicJsonType is basic_json or const basic_json + static_assert(is_basic_json::type>::value, + "iter_impl only accepts (const) basic_json"); + + public: + + /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. + /// The C++ Standard has never required user-defined iterators to derive from std::iterator. + /// A user-defined iterator should provide publicly accessible typedefs named + /// iterator_category, value_type, difference_type, pointer, and reference. + /// Note that value_type is required to be non-const, even for constant iterators. + using iterator_category = std::bidirectional_iterator_tag; + + /// the type of the values when the iterator is dereferenced + using value_type = typename BasicJsonType::value_type; + /// a type to represent differences between iterators + using difference_type = typename BasicJsonType::difference_type; + /// defines a pointer to the type iterated over (value_type) + using pointer = typename std::conditional::value, + typename BasicJsonType::const_pointer, + typename BasicJsonType::pointer>::type; + /// defines a reference to the type iterated over (value_type) + using reference = + typename std::conditional::value, + typename BasicJsonType::const_reference, + typename BasicJsonType::reference>::type; + + /// default constructor + iter_impl() = default; + + /*! + @brief constructor for a given JSON instance + @param[in] object pointer to a JSON object for this iterator + @pre object != nullptr + @post The iterator is initialized; i.e. `m_object != nullptr`. + */ + explicit iter_impl(pointer object) noexcept : m_object(object) + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = typename object_t::iterator(); + break; + } + + case value_t::array: + { + m_it.array_iterator = typename array_t::iterator(); + break; + } + + default: + { + m_it.primitive_iterator = primitive_iterator_t(); + break; + } + } + } + + /*! + @note The conventional copy constructor and copy assignment are implicitly + defined. Combined with the following converting constructor and + assignment, they support: (1) copy from iterator to iterator, (2) + copy from const iterator to const iterator, and (3) conversion from + iterator to const iterator. However conversion from const iterator + to iterator is not defined. + */ + + /*! + @brief converting constructor + @param[in] other non-const iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl(const iter_impl::type>& other) noexcept + : m_object(other.m_object), m_it(other.m_it) {} + + /*! + @brief converting assignment + @param[in,out] other non-const iterator to copy from + @return const/non-const iterator + @note It is not checked whether @a other is initialized. + */ + iter_impl& operator=(const iter_impl::type>& other) noexcept + { + m_object = other.m_object; + m_it = other.m_it; + return *this; + } + + private: + /*! + @brief set the iterator to the first value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_begin() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = m_object->m_value.object->begin(); + break; + } + + case value_t::array: + { + m_it.array_iterator = m_object->m_value.array->begin(); + break; + } + + case value_t::null: + { + // set to end so begin()==end() is true: null is empty + m_it.primitive_iterator.set_end(); + break; + } + + default: + { + m_it.primitive_iterator.set_begin(); + break; + } + } + } + + /*! + @brief set the iterator past the last value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_end() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = m_object->m_value.object->end(); + break; + } + + case value_t::array: + { + m_it.array_iterator = m_object->m_value.array->end(); + break; + } + + default: + { + m_it.primitive_iterator.set_end(); + break; + } + } + } + + public: + /*! + @brief return a reference to the value pointed to by the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator*() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return m_it.object_iterator->second; + } + + case value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return *m_it.array_iterator; + } + + case value_t::null: + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + + default: + { + if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) + { + return *m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + } + } + } + + /*! + @brief dereference the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + pointer operator->() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return &(m_it.object_iterator->second); + } + + case value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return &*m_it.array_iterator; + } + + default: + { + if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) + { + return m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + } + } + } + + /*! + @brief post-increment (it++) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl const operator++(int) + { + auto result = *this; + ++(*this); + return result; + } + + /*! + @brief pre-increment (++it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator++() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + std::advance(m_it.object_iterator, 1); + break; + } + + case value_t::array: + { + std::advance(m_it.array_iterator, 1); + break; + } + + default: + { + ++m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief post-decrement (it--) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl const operator--(int) + { + auto result = *this; + --(*this); + return result; + } + + /*! + @brief pre-decrement (--it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator--() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + std::advance(m_it.object_iterator, -1); + break; + } + + case value_t::array: + { + std::advance(m_it.array_iterator, -1); + break; + } + + default: + { + --m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief comparison: equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator==(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (JSON_UNLIKELY(m_object != other.m_object)) + { + JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); + } + + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + return (m_it.object_iterator == other.m_it.object_iterator); + + case value_t::array: + return (m_it.array_iterator == other.m_it.array_iterator); + + default: + return (m_it.primitive_iterator == other.m_it.primitive_iterator); + } + } + + /*! + @brief comparison: not equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator!=(const iter_impl& other) const + { + return not operator==(other); + } + + /*! + @brief comparison: smaller + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (JSON_UNLIKELY(m_object != other.m_object)) + { + JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); + } + + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators")); + + case value_t::array: + return (m_it.array_iterator < other.m_it.array_iterator); + + default: + return (m_it.primitive_iterator < other.m_it.primitive_iterator); + } + } + + /*! + @brief comparison: less than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<=(const iter_impl& other) const + { + return not other.operator < (*this); + } + + /*! + @brief comparison: greater than + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>(const iter_impl& other) const + { + return not operator<=(other); + } + + /*! + @brief comparison: greater than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>=(const iter_impl& other) const + { + return not operator<(other); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator+=(difference_type i) + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); + + case value_t::array: + { + std::advance(m_it.array_iterator, i); + break; + } + + default: + { + m_it.primitive_iterator += i; + break; + } + } + + return *this; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator-=(difference_type i) + { + return operator+=(-i); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator+(difference_type i) const + { + auto result = *this; + result += i; + return result; + } + + /*! + @brief addition of distance and iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + friend iter_impl operator+(difference_type i, const iter_impl& it) + { + auto result = it; + result += i; + return result; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator-(difference_type i) const + { + auto result = *this; + result -= i; + return result; + } + + /*! + @brief return difference + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + difference_type operator-(const iter_impl& other) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); + + case value_t::array: + return m_it.array_iterator - other.m_it.array_iterator; + + default: + return m_it.primitive_iterator - other.m_it.primitive_iterator; + } + } + + /*! + @brief access to successor + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator[](difference_type n) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators")); + + case value_t::array: + return *std::next(m_it.array_iterator, n); + + case value_t::null: + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + + default: + { + if (JSON_LIKELY(m_it.primitive_iterator.get_value() == -n)) + { + return *m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + } + } + } + + /*! + @brief return the key of an object iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + typename object_t::key_type key() const + { + assert(m_object != nullptr); + + if (JSON_LIKELY(m_object->is_object())) + { + return m_it.object_iterator->first; + } + + JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators")); + } + + /*! + @brief return the value of an iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference value() const + { + return operator*(); + } + + private: + /// associated JSON instance + pointer m_object = nullptr; + /// the actual iterator of the associated instance + internal_iterator::type> m_it = {}; +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index 561761dc..fbaffd87 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -62,6 +62,7 @@ SOFTWARE. #include "detail/parsing/parser.hpp" #include "detail/iterators/primitive_iterator.hpp" #include "detail/iterators/internal_iterator.hpp" +#include "detail/iterators/iter_impl.hpp" /*! @brief namespace for Niels Lohmann @@ -76,601 +77,6 @@ namespace detail // iterators // /////////////// -template class iteration_proxy; - -/*! -@brief a template for a bidirectional iterator for the @ref basic_json class - -This class implements a both iterators (iterator and const_iterator) for the -@ref basic_json class. - -@note An iterator is called *initialized* when a pointer to a JSON value has - been set (e.g., by a constructor or a copy assignment). If the iterator is - default-constructed, it is *uninitialized* and most methods are undefined. - **The library uses assertions to detect calls on uninitialized iterators.** - -@requirement The class satisfies the following concept requirements: -- -[BidirectionalIterator](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator): - The iterator that can be moved can be moved in both directions (i.e. - incremented and decremented). - -@since version 1.0.0, simplified in version 2.0.9, change to bidirectional - iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593) -*/ -template -class iter_impl -{ - /// allow basic_json to access private members - friend iter_impl::value, typename std::remove_const::type, const BasicJsonType>::type>; - friend BasicJsonType; - friend iteration_proxy; - - using object_t = typename BasicJsonType::object_t; - using array_t = typename BasicJsonType::array_t; - // make sure BasicJsonType is basic_json or const basic_json - static_assert(is_basic_json::type>::value, - "iter_impl only accepts (const) basic_json"); - - public: - - /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. - /// The C++ Standard has never required user-defined iterators to derive from std::iterator. - /// A user-defined iterator should provide publicly accessible typedefs named - /// iterator_category, value_type, difference_type, pointer, and reference. - /// Note that value_type is required to be non-const, even for constant iterators. - using iterator_category = std::bidirectional_iterator_tag; - - /// the type of the values when the iterator is dereferenced - using value_type = typename BasicJsonType::value_type; - /// a type to represent differences between iterators - using difference_type = typename BasicJsonType::difference_type; - /// defines a pointer to the type iterated over (value_type) - using pointer = typename std::conditional::value, - typename BasicJsonType::const_pointer, - typename BasicJsonType::pointer>::type; - /// defines a reference to the type iterated over (value_type) - using reference = - typename std::conditional::value, - typename BasicJsonType::const_reference, - typename BasicJsonType::reference>::type; - - /// default constructor - iter_impl() = default; - - /*! - @brief constructor for a given JSON instance - @param[in] object pointer to a JSON object for this iterator - @pre object != nullptr - @post The iterator is initialized; i.e. `m_object != nullptr`. - */ - explicit iter_impl(pointer object) noexcept : m_object(object) - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - m_it.object_iterator = typename object_t::iterator(); - break; - } - - case value_t::array: - { - m_it.array_iterator = typename array_t::iterator(); - break; - } - - default: - { - m_it.primitive_iterator = primitive_iterator_t(); - break; - } - } - } - - /*! - @note The conventional copy constructor and copy assignment are implicitly - defined. Combined with the following converting constructor and - assignment, they support: (1) copy from iterator to iterator, (2) - copy from const iterator to const iterator, and (3) conversion from - iterator to const iterator. However conversion from const iterator - to iterator is not defined. - */ - - /*! - @brief converting constructor - @param[in] other non-const iterator to copy from - @note It is not checked whether @a other is initialized. - */ - iter_impl(const iter_impl::type>& other) noexcept - : m_object(other.m_object), m_it(other.m_it) {} - - /*! - @brief converting assignment - @param[in,out] other non-const iterator to copy from - @return const/non-const iterator - @note It is not checked whether @a other is initialized. - */ - iter_impl& operator=(const iter_impl::type>& other) noexcept - { - m_object = other.m_object; - m_it = other.m_it; - return *this; - } - - private: - /*! - @brief set the iterator to the first value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_begin() noexcept - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - m_it.object_iterator = m_object->m_value.object->begin(); - break; - } - - case value_t::array: - { - m_it.array_iterator = m_object->m_value.array->begin(); - break; - } - - case value_t::null: - { - // set to end so begin()==end() is true: null is empty - m_it.primitive_iterator.set_end(); - break; - } - - default: - { - m_it.primitive_iterator.set_begin(); - break; - } - } - } - - /*! - @brief set the iterator past the last value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_end() noexcept - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - m_it.object_iterator = m_object->m_value.object->end(); - break; - } - - case value_t::array: - { - m_it.array_iterator = m_object->m_value.array->end(); - break; - } - - default: - { - m_it.primitive_iterator.set_end(); - break; - } - } - } - - public: - /*! - @brief return a reference to the value pointed to by the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator*() const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return m_it.object_iterator->second; - } - - case value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return *m_it.array_iterator; - } - - case value_t::null: - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - - default: - { - if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) - { - return *m_object; - } - - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - } - } - } - - /*! - @brief dereference the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - pointer operator->() const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return &(m_it.object_iterator->second); - } - - case value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return &*m_it.array_iterator; - } - - default: - { - if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) - { - return m_object; - } - - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - } - } - } - - /*! - @brief post-increment (it++) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl const operator++(int) - { - auto result = *this; - ++(*this); - return result; - } - - /*! - @brief pre-increment (++it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator++() - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - std::advance(m_it.object_iterator, 1); - break; - } - - case value_t::array: - { - std::advance(m_it.array_iterator, 1); - break; - } - - default: - { - ++m_it.primitive_iterator; - break; - } - } - - return *this; - } - - /*! - @brief post-decrement (it--) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl const operator--(int) - { - auto result = *this; - --(*this); - return result; - } - - /*! - @brief pre-decrement (--it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator--() - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - std::advance(m_it.object_iterator, -1); - break; - } - - case value_t::array: - { - std::advance(m_it.array_iterator, -1); - break; - } - - default: - { - --m_it.primitive_iterator; - break; - } - } - - return *this; - } - - /*! - @brief comparison: equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator==(const iter_impl& other) const - { - // if objects are not the same, the comparison is undefined - if (JSON_UNLIKELY(m_object != other.m_object)) - { - JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); - } - - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - return (m_it.object_iterator == other.m_it.object_iterator); - - case value_t::array: - return (m_it.array_iterator == other.m_it.array_iterator); - - default: - return (m_it.primitive_iterator == other.m_it.primitive_iterator); - } - } - - /*! - @brief comparison: not equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator!=(const iter_impl& other) const - { - return not operator==(other); - } - - /*! - @brief comparison: smaller - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<(const iter_impl& other) const - { - // if objects are not the same, the comparison is undefined - if (JSON_UNLIKELY(m_object != other.m_object)) - { - JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); - } - - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators")); - - case value_t::array: - return (m_it.array_iterator < other.m_it.array_iterator); - - default: - return (m_it.primitive_iterator < other.m_it.primitive_iterator); - } - } - - /*! - @brief comparison: less than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<=(const iter_impl& other) const - { - return not other.operator < (*this); - } - - /*! - @brief comparison: greater than - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>(const iter_impl& other) const - { - return not operator<=(other); - } - - /*! - @brief comparison: greater than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>=(const iter_impl& other) const - { - return not operator<(other); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator+=(difference_type i) - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); - - case value_t::array: - { - std::advance(m_it.array_iterator, i); - break; - } - - default: - { - m_it.primitive_iterator += i; - break; - } - } - - return *this; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator-=(difference_type i) - { - return operator+=(-i); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator+(difference_type i) const - { - auto result = *this; - result += i; - return result; - } - - /*! - @brief addition of distance and iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - friend iter_impl operator+(difference_type i, const iter_impl& it) - { - auto result = it; - result += i; - return result; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator-(difference_type i) const - { - auto result = *this; - result -= i; - return result; - } - - /*! - @brief return difference - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - difference_type operator-(const iter_impl& other) const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); - - case value_t::array: - return m_it.array_iterator - other.m_it.array_iterator; - - default: - return m_it.primitive_iterator - other.m_it.primitive_iterator; - } - } - - /*! - @brief access to successor - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator[](difference_type n) const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators")); - - case value_t::array: - return *std::next(m_it.array_iterator, n); - - case value_t::null: - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - - default: - { - if (JSON_LIKELY(m_it.primitive_iterator.get_value() == -n)) - { - return *m_object; - } - - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - } - } - } - - /*! - @brief return the key of an object iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - typename object_t::key_type key() const - { - assert(m_object != nullptr); - - if (JSON_LIKELY(m_object->is_object())) - { - return m_it.object_iterator->first; - } - - JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators")); - } - - /*! - @brief return the value of an iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference value() const - { - return operator*(); - } - - private: - /// associated JSON instance - pointer m_object = nullptr; - /// the actual iterator of the associated instance - internal_iterator::type> m_it = {}; -}; - /// proxy class for the iterator_wrapper functions template class iteration_proxy { From 5fc9ef2b901d24b312b2fd4bf787b678e30c4599 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 17:26:22 +0200 Subject: [PATCH 022/106] add detail/iterators/iteration_proxy.hpp --- Makefile | 3 +- src/detail/iterators/iteration_proxy.hpp | 99 ++++++++++++++++++++++++ src/json.hpp | 87 +-------------------- 3 files changed, 102 insertions(+), 87 deletions(-) create mode 100644 src/detail/iterators/iteration_proxy.hpp diff --git a/Makefile b/Makefile index f5e18015..cbe650e9 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/parsing/parser.hpp \ ${SRCDIR}/detail/iterators/primitive_iterator.hpp \ ${SRCDIR}/detail/iterators/internal_iterator.hpp \ - ${SRCDIR}/detail/iterators/iter_impl.hpp + ${SRCDIR}/detail/iterators/iter_impl.hpp \ + ${SRCDIR}/detail/iterators/iteration_proxy.hpp diff --git a/src/detail/iterators/iteration_proxy.hpp b/src/detail/iterators/iteration_proxy.hpp new file mode 100644 index 00000000..6a13f39d --- /dev/null +++ b/src/detail/iterators/iteration_proxy.hpp @@ -0,0 +1,99 @@ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP + +#include +#include + +namespace nlohmann +{ +namespace detail +{ +/// proxy class for the iterator_wrapper functions +template class iteration_proxy +{ + private: + /// helper class for iteration + class iteration_proxy_internal + { + private: + /// the iterator + IteratorType anchor; + /// an index for arrays (used to create key names) + std::size_t array_index = 0; + + public: + explicit iteration_proxy_internal(IteratorType it) noexcept : anchor(it) {} + + /// dereference operator (needed for range-based for) + iteration_proxy_internal& operator*() + { + return *this; + } + + /// increment operator (needed for range-based for) + iteration_proxy_internal& operator++() + { + ++anchor; + ++array_index; + + return *this; + } + + /// inequality operator (needed for range-based for) + bool operator!=(const iteration_proxy_internal& o) const noexcept + { + return anchor != o.anchor; + } + + /// return key of the iterator + std::string key() const + { + assert(anchor.m_object != nullptr); + + switch (anchor.m_object->type()) + { + // use integer array index as key + case value_t::array: + return std::to_string(array_index); + + // use key from the object + case value_t::object: + return anchor.key(); + + // use an empty key for all primitive types + default: + return ""; + } + } + + /// return value of the iterator + typename IteratorType::reference value() const + { + return anchor.value(); + } + }; + + /// the container to iterate + typename IteratorType::reference container; + + public: + /// construct iteration proxy from a container + explicit iteration_proxy(typename IteratorType::reference cont) + : container(cont) {} + + /// return iterator begin (needed for range-based for) + iteration_proxy_internal begin() noexcept + { + return iteration_proxy_internal(container.begin()); + } + + /// return iterator end (needed for range-based for) + iteration_proxy_internal end() noexcept + { + return iteration_proxy_internal(container.end()); + } +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index fbaffd87..eb61f34a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -63,6 +63,7 @@ SOFTWARE. #include "detail/iterators/primitive_iterator.hpp" #include "detail/iterators/internal_iterator.hpp" #include "detail/iterators/iter_impl.hpp" +#include "detail/iterators/iteration_proxy.hpp" /*! @brief namespace for Niels Lohmann @@ -77,92 +78,6 @@ namespace detail // iterators // /////////////// -/// proxy class for the iterator_wrapper functions -template class iteration_proxy -{ - private: - /// helper class for iteration - class iteration_proxy_internal - { - private: - /// the iterator - IteratorType anchor; - /// an index for arrays (used to create key names) - std::size_t array_index = 0; - - public: - explicit iteration_proxy_internal(IteratorType it) noexcept : anchor(it) {} - - /// dereference operator (needed for range-based for) - iteration_proxy_internal& operator*() - { - return *this; - } - - /// increment operator (needed for range-based for) - iteration_proxy_internal& operator++() - { - ++anchor; - ++array_index; - - return *this; - } - - /// inequality operator (needed for range-based for) - bool operator!=(const iteration_proxy_internal& o) const noexcept - { - return anchor != o.anchor; - } - - /// return key of the iterator - std::string key() const - { - assert(anchor.m_object != nullptr); - - switch (anchor.m_object->type()) - { - // use integer array index as key - case value_t::array: - return std::to_string(array_index); - - // use key from the object - case value_t::object: - return anchor.key(); - - // use an empty key for all primitive types - default: - return ""; - } - } - - /// return value of the iterator - typename IteratorType::reference value() const - { - return anchor.value(); - } - }; - - /// the container to iterate - typename IteratorType::reference container; - - public: - /// construct iteration proxy from a container - explicit iteration_proxy(typename IteratorType::reference cont) - : container(cont) {} - - /// return iterator begin (needed for range-based for) - iteration_proxy_internal begin() noexcept - { - return iteration_proxy_internal(container.begin()); - } - - /// return iterator end (needed for range-based for) - iteration_proxy_internal end() noexcept - { - return iteration_proxy_internal(container.end()); - } -}; - /*! @brief a template for a reverse iterator class From ae6f66048cf99e8bc07644e9e83404f70879b639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 17:29:55 +0200 Subject: [PATCH 023/106] add detail/iterators/json_reverse_iterator.hpp --- Makefile | 3 +- .../iterators/json_reverse_iterator.hpp | 122 ++++++++++++++++++ src/json.hpp | 109 +--------------- 3 files changed, 125 insertions(+), 109 deletions(-) create mode 100644 src/detail/iterators/json_reverse_iterator.hpp diff --git a/Makefile b/Makefile index cbe650e9..1b947462 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/iterators/primitive_iterator.hpp \ ${SRCDIR}/detail/iterators/internal_iterator.hpp \ ${SRCDIR}/detail/iterators/iter_impl.hpp \ - ${SRCDIR}/detail/iterators/iteration_proxy.hpp + ${SRCDIR}/detail/iterators/iteration_proxy.hpp \ + ${SRCDIR}/detail/iterators/json_reverse_iterator.hpp diff --git a/src/detail/iterators/json_reverse_iterator.hpp b/src/detail/iterators/json_reverse_iterator.hpp new file mode 100644 index 00000000..52862d38 --- /dev/null +++ b/src/detail/iterators/json_reverse_iterator.hpp @@ -0,0 +1,122 @@ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP + +#include +#include +#include + +namespace nlohmann +{ +namespace detail +{ +////////////////////// +// reverse_iterator // +////////////////////// + +/*! +@brief a template for a reverse iterator class + +@tparam Base the base iterator type to reverse. Valid types are @ref +iterator (to create @ref reverse_iterator) and @ref const_iterator (to +create @ref const_reverse_iterator). + +@requirement The class satisfies the following concept requirements: +- +[BidirectionalIterator](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator): + The iterator that can be moved can be moved in both directions (i.e. + incremented and decremented). +- [OutputIterator](http://en.cppreference.com/w/cpp/concept/OutputIterator): + It is possible to write to the pointed-to element (only if @a Base is + @ref iterator). + +@since version 1.0.0 +*/ +template +class json_reverse_iterator : public std::reverse_iterator +{ + public: + using difference_type = std::ptrdiff_t; + /// shortcut to the reverse iterator adapter + using base_iterator = std::reverse_iterator; + /// the reference type for the pointed-to element + using reference = typename Base::reference; + + /// create reverse iterator from iterator + json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept + : base_iterator(it) {} + + /// create reverse iterator from base class + json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {} + + /// post-increment (it++) + json_reverse_iterator const operator++(int) + { + return static_cast(base_iterator::operator++(1)); + } + + /// pre-increment (++it) + json_reverse_iterator& operator++() + { + return static_cast(base_iterator::operator++()); + } + + /// post-decrement (it--) + json_reverse_iterator const operator--(int) + { + return static_cast(base_iterator::operator--(1)); + } + + /// pre-decrement (--it) + json_reverse_iterator& operator--() + { + return static_cast(base_iterator::operator--()); + } + + /// add to iterator + json_reverse_iterator& operator+=(difference_type i) + { + return static_cast(base_iterator::operator+=(i)); + } + + /// add to iterator + json_reverse_iterator operator+(difference_type i) const + { + return static_cast(base_iterator::operator+(i)); + } + + /// subtract from iterator + json_reverse_iterator operator-(difference_type i) const + { + return static_cast(base_iterator::operator-(i)); + } + + /// return difference + difference_type operator-(const json_reverse_iterator& other) const + { + return base_iterator(*this) - base_iterator(other); + } + + /// access to successor + reference operator[](difference_type n) const + { + return *(this->operator+(n)); + } + + /// return the key of an object iterator + auto key() const -> decltype(std::declval().key()) + { + auto it = --this->base(); + return it.key(); + } + + /// return the value of an iterator + reference value() const + { + auto it = --this->base(); + return it.operator * (); + } +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index eb61f34a..3cf317f7 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -64,6 +64,7 @@ SOFTWARE. #include "detail/iterators/internal_iterator.hpp" #include "detail/iterators/iter_impl.hpp" #include "detail/iterators/iteration_proxy.hpp" +#include "detail/iterators/json_reverse_iterator.hpp" /*! @brief namespace for Niels Lohmann @@ -74,114 +75,6 @@ namespace nlohmann { namespace detail { -/////////////// -// iterators // -/////////////// - -/*! -@brief a template for a reverse iterator class - -@tparam Base the base iterator type to reverse. Valid types are @ref -iterator (to create @ref reverse_iterator) and @ref const_iterator (to -create @ref const_reverse_iterator). - -@requirement The class satisfies the following concept requirements: -- -[BidirectionalIterator](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator): - The iterator that can be moved can be moved in both directions (i.e. - incremented and decremented). -- [OutputIterator](http://en.cppreference.com/w/cpp/concept/OutputIterator): - It is possible to write to the pointed-to element (only if @a Base is - @ref iterator). - -@since version 1.0.0 -*/ -template -class json_reverse_iterator : public std::reverse_iterator -{ - public: - using difference_type = std::ptrdiff_t; - /// shortcut to the reverse iterator adapter - using base_iterator = std::reverse_iterator; - /// the reference type for the pointed-to element - using reference = typename Base::reference; - - /// create reverse iterator from iterator - json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept - : base_iterator(it) {} - - /// create reverse iterator from base class - json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {} - - /// post-increment (it++) - json_reverse_iterator const operator++(int) - { - return static_cast(base_iterator::operator++(1)); - } - - /// pre-increment (++it) - json_reverse_iterator& operator++() - { - return static_cast(base_iterator::operator++()); - } - - /// post-decrement (it--) - json_reverse_iterator const operator--(int) - { - return static_cast(base_iterator::operator--(1)); - } - - /// pre-decrement (--it) - json_reverse_iterator& operator--() - { - return static_cast(base_iterator::operator--()); - } - - /// add to iterator - json_reverse_iterator& operator+=(difference_type i) - { - return static_cast(base_iterator::operator+=(i)); - } - - /// add to iterator - json_reverse_iterator operator+(difference_type i) const - { - return static_cast(base_iterator::operator+(i)); - } - - /// subtract from iterator - json_reverse_iterator operator-(difference_type i) const - { - return static_cast(base_iterator::operator-(i)); - } - - /// return difference - difference_type operator-(const json_reverse_iterator& other) const - { - return base_iterator(*this) - base_iterator(other); - } - - /// access to successor - reference operator[](difference_type n) const - { - return *(this->operator+(n)); - } - - /// return the key of an object iterator - auto key() const -> decltype(std::declval().key()) - { - auto it = --this->base(); - return it.key(); - } - - /// return the value of an iterator - reference value() const - { - auto it = --this->base(); - return it.operator * (); - } -}; - ///////////////////// // output adapters // ///////////////////// From 4dbb433a79e44058d4702a1a73f1838f0a25d6de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 17:41:23 +0200 Subject: [PATCH 024/106] add detail/parsing/output_adapters.hpp --- Makefile | 3 +- src/detail/parsing/output_adapters.hpp | 114 +++++++++++++++++++++++++ src/json.hpp | 102 +--------------------- 3 files changed, 117 insertions(+), 102 deletions(-) create mode 100644 src/detail/parsing/output_adapters.hpp diff --git a/Makefile b/Makefile index 1b947462..bf4e5b67 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/iterators/internal_iterator.hpp \ ${SRCDIR}/detail/iterators/iter_impl.hpp \ ${SRCDIR}/detail/iterators/iteration_proxy.hpp \ - ${SRCDIR}/detail/iterators/json_reverse_iterator.hpp + ${SRCDIR}/detail/iterators/json_reverse_iterator.hpp \ + ${SRCDIR}/detail/parsing/output_adapters.hpp diff --git a/src/detail/parsing/output_adapters.hpp b/src/detail/parsing/output_adapters.hpp new file mode 100644 index 00000000..5cbc11b9 --- /dev/null +++ b/src/detail/parsing/output_adapters.hpp @@ -0,0 +1,114 @@ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP + +#include +#include +#include +#include +#include +#include + +namespace nlohmann +{ +namespace detail +{ +/// abstract output adapter interface +template struct output_adapter_protocol +{ + virtual void write_character(CharType c) = 0; + virtual void write_characters(const CharType* s, std::size_t length) = 0; + virtual ~output_adapter_protocol() = default; +}; + +/// a type to simplify interfaces +template +using output_adapter_t = std::shared_ptr>; + +/// output adapter for byte vectors +template +class output_vector_adapter : public output_adapter_protocol +{ + public: + explicit output_vector_adapter(std::vector& vec) : v(vec) {} + + void write_character(CharType c) override + { + v.push_back(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + std::copy(s, s + length, std::back_inserter(v)); + } + + private: + std::vector& v; +}; + +/// output adapter for output streams +template +class output_stream_adapter : public output_adapter_protocol +{ + public: + explicit output_stream_adapter(std::basic_ostream& s) : stream(s) {} + + void write_character(CharType c) override + { + stream.put(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + stream.write(s, static_cast(length)); + } + + private: + std::basic_ostream& stream; +}; + +/// output adapter for basic_string +template +class output_string_adapter : public output_adapter_protocol +{ + public: + explicit output_string_adapter(std::basic_string& s) : str(s) {} + + void write_character(CharType c) override + { + str.push_back(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + str.append(s, length); + } + + private: + std::basic_string& str; +}; + +template +class output_adapter +{ + public: + output_adapter(std::vector& vec) + : oa(std::make_shared>(vec)) {} + + output_adapter(std::basic_ostream& s) + : oa(std::make_shared>(s)) {} + + output_adapter(std::basic_string& s) + : oa(std::make_shared>(s)) {} + + operator output_adapter_t() + { + return oa; + } + + private: + output_adapter_t oa = nullptr; +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index 3cf317f7..7d62e412 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -65,6 +65,7 @@ SOFTWARE. #include "detail/iterators/iter_impl.hpp" #include "detail/iterators/iteration_proxy.hpp" #include "detail/iterators/json_reverse_iterator.hpp" +#include "detail/parsing/output_adapters.hpp" /*! @brief namespace for Niels Lohmann @@ -75,107 +76,6 @@ namespace nlohmann { namespace detail { -///////////////////// -// output adapters // -///////////////////// - -/// abstract output adapter interface -template struct output_adapter_protocol -{ - virtual void write_character(CharType c) = 0; - virtual void write_characters(const CharType* s, std::size_t length) = 0; - virtual ~output_adapter_protocol() = default; -}; - -/// a type to simplify interfaces -template -using output_adapter_t = std::shared_ptr>; - -/// output adapter for byte vectors -template -class output_vector_adapter : public output_adapter_protocol -{ - public: - explicit output_vector_adapter(std::vector& vec) : v(vec) {} - - void write_character(CharType c) override - { - v.push_back(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - std::copy(s, s + length, std::back_inserter(v)); - } - - private: - std::vector& v; -}; - -/// output adapter for output streams -template -class output_stream_adapter : public output_adapter_protocol -{ - public: - explicit output_stream_adapter(std::basic_ostream& s) : stream(s) {} - - void write_character(CharType c) override - { - stream.put(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - stream.write(s, static_cast(length)); - } - - private: - std::basic_ostream& stream; -}; - -/// output adapter for basic_string -template -class output_string_adapter : public output_adapter_protocol -{ - public: - explicit output_string_adapter(std::basic_string& s) : str(s) {} - - void write_character(CharType c) override - { - str.push_back(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - str.append(s, length); - } - - private: - std::basic_string& str; -}; - -template -class output_adapter -{ - public: - output_adapter(std::vector& vec) - : oa(std::make_shared>(vec)) {} - - output_adapter(std::basic_ostream& s) - : oa(std::make_shared>(s)) {} - - output_adapter(std::basic_string& s) - : oa(std::make_shared>(s)) {} - - operator output_adapter_t() - { - return oa; - } - - private: - output_adapter_t oa = nullptr; -}; - ////////////////////////////// // binary reader and writer // ////////////////////////////// From d620f76f0db9599e208390c6c4103bcf31e4b3d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 17:50:24 +0200 Subject: [PATCH 025/106] add detail/parsing/binary_reader.hpp --- Makefile | 6 +- src/detail/parsing/binary_reader.hpp | 1087 ++++++++++++++++++++++++++ src/json.hpp | 1066 +------------------------ 3 files changed, 1093 insertions(+), 1066 deletions(-) create mode 100644 src/detail/parsing/binary_reader.hpp diff --git a/Makefile b/Makefile index bf4e5b67..6fa61613 100644 --- a/Makefile +++ b/Makefile @@ -18,10 +18,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/iterators/iter_impl.hpp \ ${SRCDIR}/detail/iterators/iteration_proxy.hpp \ ${SRCDIR}/detail/iterators/json_reverse_iterator.hpp \ - ${SRCDIR}/detail/parsing/output_adapters.hpp - - - + ${SRCDIR}/detail/parsing/output_adapters.hpp \ + ${SRCDIR}/detail/parsing/binary_reader.hpp # main target all: diff --git a/src/detail/parsing/binary_reader.hpp b/src/detail/parsing/binary_reader.hpp new file mode 100644 index 00000000..0d8ce4ad --- /dev/null +++ b/src/detail/parsing/binary_reader.hpp @@ -0,0 +1,1087 @@ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "detail/exceptions.hpp" +#include "detail/macro_scope.hpp" +#include "detail/parsing/input_adapters.hpp" +#include "detail/value_t.hpp" + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// binary reader // +/////////////////// + +/*! +@brief deserialization of CBOR and MessagePack values +*/ +template +class binary_reader +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + + public: + /*! + @brief create a binary reader + + @param[in] adapter input adapter to read from + */ + explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter)) + { + assert(ia); + } + + /*! + @brief create a JSON value from CBOR input + + @param[in] strict whether to expect the input to be consumed completed + @return JSON value created from CBOR input + + @throw parse_error.110 if input ended unexpectedly or the end of file was + not reached when @a strict was set to true + @throw parse_error.112 if unsupported byte was read + */ + BasicJsonType parse_cbor(const bool strict) + { + const auto res = parse_cbor_internal(); + if (strict) + { + get(); + check_eof(true); + } + return res; + } + + /*! + @brief create a JSON value from MessagePack input + + @param[in] strict whether to expect the input to be consumed completed + @return JSON value created from MessagePack input + + @throw parse_error.110 if input ended unexpectedly or the end of file was + not reached when @a strict was set to true + @throw parse_error.112 if unsupported byte was read + */ + BasicJsonType parse_msgpack(const bool strict) + { + const auto res = parse_msgpack_internal(); + if (strict) + { + get(); + check_eof(true); + } + return res; + } + + /*! + @brief determine system byte order + + @return true if and only if system's byte order is little endian + + @note from http://stackoverflow.com/a/1001328/266378 + */ + static constexpr bool little_endianess(int num = 1) noexcept + { + return (*reinterpret_cast(&num) == 1); + } + + private: + /*! + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + */ + BasicJsonType parse_cbor_internal(const bool get_char = true) + { + switch (get_char ? get() : current) + { + // EOF + case std::char_traits::eof(): + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + + // Integer 0x00..0x17 (0..23) + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + return static_cast(current); + + case 0x18: // Unsigned integer (one-byte uint8_t follows) + return get_number(); + + case 0x19: // Unsigned integer (two-byte uint16_t follows) + return get_number(); + + case 0x1A: // Unsigned integer (four-byte uint32_t follows) + return get_number(); + + case 0x1B: // Unsigned integer (eight-byte uint64_t follows) + return get_number(); + + // Negative integer -1-0x00..-1-0x17 (-1..-24) + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + return static_cast(0x20 - 1 - current); + + case 0x38: // Negative integer (one-byte uint8_t follows) + { + // must be uint8_t ! + return static_cast(-1) - get_number(); + } + + case 0x39: // Negative integer -1-n (two-byte uint16_t follows) + { + return static_cast(-1) - get_number(); + } + + case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) + { + return static_cast(-1) - get_number(); + } + + case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) + { + return static_cast(-1) - + static_cast(get_number()); + } + + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + case 0x7F: // UTF-8 string (indefinite length) + { + return get_cbor_string(); + } + + // array (0x00..0x17 data items follow) + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + { + return get_cbor_array(current & 0x1F); + } + + case 0x98: // array (one-byte uint8_t for n follows) + { + return get_cbor_array(get_number()); + } + + case 0x99: // array (two-byte uint16_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9A: // array (four-byte uint32_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9B: // array (eight-byte uint64_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9F: // array (indefinite length) + { + BasicJsonType result = value_t::array; + while (get() != 0xFF) + { + result.push_back(parse_cbor_internal(false)); + } + return result; + } + + // map (0x00..0x17 pairs of data items follow) + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + { + return get_cbor_object(current & 0x1F); + } + + case 0xB8: // map (one-byte uint8_t for n follows) + { + return get_cbor_object(get_number()); + } + + case 0xB9: // map (two-byte uint16_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBA: // map (four-byte uint32_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBB: // map (eight-byte uint64_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBF: // map (indefinite length) + { + BasicJsonType result = value_t::object; + while (get() != 0xFF) + { + auto key = get_cbor_string(); + result[key] = parse_cbor_internal(); + } + return result; + } + + case 0xF4: // false + { + return false; + } + + case 0xF5: // true + { + return true; + } + + case 0xF6: // null + { + return value_t::null; + } + + case 0xF9: // Half-Precision Float (two-byte IEEE 754) + { + const int byte1 = get(); + check_eof(); + const int byte2 = get(); + check_eof(); + + // code from RFC 7049, Appendix D, Figure 3: + // As half-precision floating-point numbers were only added + // to IEEE 754 in 2008, today's programming platforms often + // still only have limited support for them. It is very + // easy to include at least decoding support for them even + // without such support. An example of a small decoder for + // half-precision floating-point numbers in the C language + // is shown in Fig. 3. + const int half = (byte1 << 8) + byte2; + const int exp = (half >> 10) & 0x1F; + const int mant = half & 0x3FF; + double val; + if (exp == 0) + { + val = std::ldexp(mant, -24); + } + else if (exp != 31) + { + val = std::ldexp(mant + 1024, exp - 25); + } + else + { + val = (mant == 0) ? std::numeric_limits::infinity() + : std::numeric_limits::quiet_NaN(); + } + return (half & 0x8000) != 0 ? -val : val; + } + + case 0xFA: // Single-Precision Float (four-byte IEEE 754) + { + return get_number(); + } + + case 0xFB: // Double-Precision Float (eight-byte IEEE 754) + { + return get_number(); + } + + default: // anything else (0xFF is handled inside the other types) + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, "error reading CBOR; last byte: 0x" + ss.str())); + } + } + } + + BasicJsonType parse_msgpack_internal() + { + switch (get()) + { + // EOF + case std::char_traits::eof(): + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + + // positive fixint + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5C: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + return static_cast(current); + + // fixmap + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + { + return get_msgpack_object(current & 0x0F); + } + + // fixarray + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + case 0x98: + case 0x99: + case 0x9A: + case 0x9B: + case 0x9C: + case 0x9D: + case 0x9E: + case 0x9F: + { + return get_msgpack_array(current & 0x0F); + } + + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + return get_msgpack_string(); + + case 0xC0: // nil + return value_t::null; + + case 0xC2: // false + return false; + + case 0xC3: // true + return true; + + case 0xCA: // float 32 + return get_number(); + + case 0xCB: // float 64 + return get_number(); + + case 0xCC: // uint 8 + return get_number(); + + case 0xCD: // uint 16 + return get_number(); + + case 0xCE: // uint 32 + return get_number(); + + case 0xCF: // uint 64 + return get_number(); + + case 0xD0: // int 8 + return get_number(); + + case 0xD1: // int 16 + return get_number(); + + case 0xD2: // int 32 + return get_number(); + + case 0xD3: // int 64 + return get_number(); + + case 0xD9: // str 8 + case 0xDA: // str 16 + case 0xDB: // str 32 + return get_msgpack_string(); + + case 0xDC: // array 16 + { + return get_msgpack_array(get_number()); + } + + case 0xDD: // array 32 + { + return get_msgpack_array(get_number()); + } + + case 0xDE: // map 16 + { + return get_msgpack_object(get_number()); + } + + case 0xDF: // map 32 + { + return get_msgpack_object(get_number()); + } + + // positive fixint + case 0xE0: + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xED: + case 0xEE: + case 0xEF: + case 0xF0: + case 0xF1: + case 0xF2: + case 0xF3: + case 0xF4: + case 0xF5: + case 0xF6: + case 0xF7: + case 0xF8: + case 0xF9: + case 0xFA: + case 0xFB: + case 0xFC: + case 0xFD: + case 0xFE: + case 0xFF: + return static_cast(current); + + default: // anything else + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, + "error reading MessagePack; last byte: 0x" + ss.str())); + } + } + } + + /*! + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a -'ve valued + `std::char_traits::eof()` in that case. + + @return character read from the input + */ + int get() + { + ++chars_read; + return (current = ia->get_character()); + } + + /* + @brief read a number from the input + + @tparam NumberType the type of the number + + @return number of type @a NumberType + + @note This function needs to respect the system's endianess, because + bytes in CBOR and MessagePack are stored in network order (big + endian) and therefore need reordering on little endian systems. + + @throw parse_error.110 if input has less than `sizeof(NumberType)` bytes + */ + template NumberType get_number() + { + // step 1: read input into array with system's byte order + std::array vec; + for (std::size_t i = 0; i < sizeof(NumberType); ++i) + { + get(); + check_eof(); + + // reverse byte order prior to conversion if necessary + if (is_little_endian) + { + vec[sizeof(NumberType) - i - 1] = static_cast(current); + } + else + { + vec[i] = static_cast(current); // LCOV_EXCL_LINE + } + } + + // step 2: convert array into number of type T and return + NumberType result; + std::memcpy(&result, vec.data(), sizeof(NumberType)); + return result; + } + + /*! + @brief create a string by reading characters from the input + + @param[in] len number of bytes to read + + @note We can not reserve @a len bytes for the result, because @a len + may be too large. Usually, @ref check_eof() detects the end of + the input before we run out of string memory. + + @return string created by reading @a len bytes + + @throw parse_error.110 if input has less than @a len bytes + */ + template + std::string get_string(const NumberType len) + { + std::string result; + std::generate_n(std::back_inserter(result), len, [this]() + { + get(); + check_eof(); + return static_cast(current); + }); + return result; + } + + /*! + @brief reads a CBOR string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + Additionally, CBOR's strings with indefinite lengths are supported. + + @return string + + @throw parse_error.110 if input ended + @throw parse_error.113 if an unexpected byte is read + */ + std::string get_cbor_string() + { + check_eof(); + + switch (current) + { + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + { + return get_string(current & 0x1F); + } + + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + { + return get_string(get_number()); + } + + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + { + return get_string(get_number()); + } + + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + { + return get_string(get_number()); + } + + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + { + return get_string(get_number()); + } + + case 0x7F: // UTF-8 string (indefinite length) + { + std::string result; + while (get() != 0xFF) + { + check_eof(); + result.push_back(static_cast(current)); + } + return result; + } + + default: + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, "expected a CBOR string; last byte: 0x" + ss.str())); + } + } + } + + template + BasicJsonType get_cbor_array(const NumberType len) + { + BasicJsonType result = value_t::array; + std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() + { + return parse_cbor_internal(); + }); + return result; + } + + template + BasicJsonType get_cbor_object(const NumberType len) + { + BasicJsonType result = value_t::object; + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + len, [this]() + { + get(); + auto key = get_cbor_string(); + auto val = parse_cbor_internal(); + return std::make_pair(std::move(key), std::move(val)); + }); + return result; + } + + /*! + @brief reads a MessagePack string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + + @return string + + @throw parse_error.110 if input ended + @throw parse_error.113 if an unexpected byte is read + */ + std::string get_msgpack_string() + { + check_eof(); + + switch (current) + { + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + { + return get_string(current & 0x1F); + } + + case 0xD9: // str 8 + { + return get_string(get_number()); + } + + case 0xDA: // str 16 + { + return get_string(get_number()); + } + + case 0xDB: // str 32 + { + return get_string(get_number()); + } + + default: + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, + "expected a MessagePack string; last byte: 0x" + ss.str())); + } + } + } + + template + BasicJsonType get_msgpack_array(const NumberType len) + { + BasicJsonType result = value_t::array; + std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() + { + return parse_msgpack_internal(); + }); + return result; + } + + template + BasicJsonType get_msgpack_object(const NumberType len) + { + BasicJsonType result = value_t::object; + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + len, [this]() + { + get(); + auto key = get_msgpack_string(); + auto val = parse_msgpack_internal(); + return std::make_pair(std::move(key), std::move(val)); + }); + return result; + } + + /*! + @brief check if input ended + @throw parse_error.110 if input ended + */ + void check_eof(const bool expect_eof = false) const + { + if (expect_eof) + { + if (JSON_UNLIKELY(current != std::char_traits::eof())) + { + JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); + } + } + else + { + if (JSON_UNLIKELY(current == std::char_traits::eof())) + { + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + } + } + } + + private: + /// input adapter + input_adapter_t ia = nullptr; + + /// the current character + int current = std::char_traits::eof(); + + /// the number of characters read + std::size_t chars_read = 0; + + /// whether we can assume little endianess + const bool is_little_endian = little_endianess(); +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index 7d62e412..171377b7 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -66,6 +66,7 @@ SOFTWARE. #include "detail/iterators/iteration_proxy.hpp" #include "detail/iterators/json_reverse_iterator.hpp" #include "detail/parsing/output_adapters.hpp" +#include "detail/parsing/binary_reader.hpp" /*! @brief namespace for Niels Lohmann @@ -76,1068 +77,9 @@ namespace nlohmann { namespace detail { -////////////////////////////// -// binary reader and writer // -////////////////////////////// - -/*! -@brief deserialization of CBOR and MessagePack values -*/ -template -class binary_reader -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - - public: - /*! - @brief create a binary reader - - @param[in] adapter input adapter to read from - */ - explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter)) - { - assert(ia); - } - - /*! - @brief create a JSON value from CBOR input - - @param[in] strict whether to expect the input to be consumed completed - @return JSON value created from CBOR input - - @throw parse_error.110 if input ended unexpectedly or the end of file was - not reached when @a strict was set to true - @throw parse_error.112 if unsupported byte was read - */ - BasicJsonType parse_cbor(const bool strict) - { - const auto res = parse_cbor_internal(); - if (strict) - { - get(); - check_eof(true); - } - return res; - } - - /*! - @brief create a JSON value from MessagePack input - - @param[in] strict whether to expect the input to be consumed completed - @return JSON value created from MessagePack input - - @throw parse_error.110 if input ended unexpectedly or the end of file was - not reached when @a strict was set to true - @throw parse_error.112 if unsupported byte was read - */ - BasicJsonType parse_msgpack(const bool strict) - { - const auto res = parse_msgpack_internal(); - if (strict) - { - get(); - check_eof(true); - } - return res; - } - - /*! - @brief determine system byte order - - @return true if and only if system's byte order is little endian - - @note from http://stackoverflow.com/a/1001328/266378 - */ - static constexpr bool little_endianess(int num = 1) noexcept - { - return (*reinterpret_cast(&num) == 1); - } - - private: - /*! - @param[in] get_char whether a new character should be retrieved from the - input (true, default) or whether the last read - character should be considered instead - */ - BasicJsonType parse_cbor_internal(const bool get_char = true) - { - switch (get_char ? get() : current) - { - // EOF - case std::char_traits::eof(): - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - - // Integer 0x00..0x17 (0..23) - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - return static_cast(current); - - case 0x18: // Unsigned integer (one-byte uint8_t follows) - return get_number(); - - case 0x19: // Unsigned integer (two-byte uint16_t follows) - return get_number(); - - case 0x1A: // Unsigned integer (four-byte uint32_t follows) - return get_number(); - - case 0x1B: // Unsigned integer (eight-byte uint64_t follows) - return get_number(); - - // Negative integer -1-0x00..-1-0x17 (-1..-24) - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - return static_cast(0x20 - 1 - current); - - case 0x38: // Negative integer (one-byte uint8_t follows) - { - // must be uint8_t ! - return static_cast(-1) - get_number(); - } - - case 0x39: // Negative integer -1-n (two-byte uint16_t follows) - { - return static_cast(-1) - get_number(); - } - - case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) - { - return static_cast(-1) - get_number(); - } - - case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) - { - return static_cast(-1) - - static_cast(get_number()); - } - - // UTF-8 string (0x00..0x17 bytes follow) - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: // UTF-8 string (one-byte uint8_t for n follows) - case 0x79: // UTF-8 string (two-byte uint16_t for n follow) - case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) - case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) - case 0x7F: // UTF-8 string (indefinite length) - { - return get_cbor_string(); - } - - // array (0x00..0x17 data items follow) - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - { - return get_cbor_array(current & 0x1F); - } - - case 0x98: // array (one-byte uint8_t for n follows) - { - return get_cbor_array(get_number()); - } - - case 0x99: // array (two-byte uint16_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9A: // array (four-byte uint32_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9B: // array (eight-byte uint64_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9F: // array (indefinite length) - { - BasicJsonType result = value_t::array; - while (get() != 0xFF) - { - result.push_back(parse_cbor_internal(false)); - } - return result; - } - - // map (0x00..0x17 pairs of data items follow) - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - { - return get_cbor_object(current & 0x1F); - } - - case 0xB8: // map (one-byte uint8_t for n follows) - { - return get_cbor_object(get_number()); - } - - case 0xB9: // map (two-byte uint16_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBA: // map (four-byte uint32_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBB: // map (eight-byte uint64_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBF: // map (indefinite length) - { - BasicJsonType result = value_t::object; - while (get() != 0xFF) - { - auto key = get_cbor_string(); - result[key] = parse_cbor_internal(); - } - return result; - } - - case 0xF4: // false - { - return false; - } - - case 0xF5: // true - { - return true; - } - - case 0xF6: // null - { - return value_t::null; - } - - case 0xF9: // Half-Precision Float (two-byte IEEE 754) - { - const int byte1 = get(); - check_eof(); - const int byte2 = get(); - check_eof(); - - // code from RFC 7049, Appendix D, Figure 3: - // As half-precision floating-point numbers were only added - // to IEEE 754 in 2008, today's programming platforms often - // still only have limited support for them. It is very - // easy to include at least decoding support for them even - // without such support. An example of a small decoder for - // half-precision floating-point numbers in the C language - // is shown in Fig. 3. - const int half = (byte1 << 8) + byte2; - const int exp = (half >> 10) & 0x1F; - const int mant = half & 0x3FF; - double val; - if (exp == 0) - { - val = std::ldexp(mant, -24); - } - else if (exp != 31) - { - val = std::ldexp(mant + 1024, exp - 25); - } - else - { - val = (mant == 0) ? std::numeric_limits::infinity() - : std::numeric_limits::quiet_NaN(); - } - return (half & 0x8000) != 0 ? -val : val; - } - - case 0xFA: // Single-Precision Float (four-byte IEEE 754) - { - return get_number(); - } - - case 0xFB: // Double-Precision Float (eight-byte IEEE 754) - { - return get_number(); - } - - default: // anything else (0xFF is handled inside the other types) - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(112, chars_read, "error reading CBOR; last byte: 0x" + ss.str())); - } - } - } - - BasicJsonType parse_msgpack_internal() - { - switch (get()) - { - // EOF - case std::char_traits::eof(): - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - - // positive fixint - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5C: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x7F: - return static_cast(current); - - // fixmap - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - { - return get_msgpack_object(current & 0x0F); - } - - // fixarray - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - case 0x98: - case 0x99: - case 0x9A: - case 0x9B: - case 0x9C: - case 0x9D: - case 0x9E: - case 0x9F: - { - return get_msgpack_array(current & 0x0F); - } - - // fixstr - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - return get_msgpack_string(); - - case 0xC0: // nil - return value_t::null; - - case 0xC2: // false - return false; - - case 0xC3: // true - return true; - - case 0xCA: // float 32 - return get_number(); - - case 0xCB: // float 64 - return get_number(); - - case 0xCC: // uint 8 - return get_number(); - - case 0xCD: // uint 16 - return get_number(); - - case 0xCE: // uint 32 - return get_number(); - - case 0xCF: // uint 64 - return get_number(); - - case 0xD0: // int 8 - return get_number(); - - case 0xD1: // int 16 - return get_number(); - - case 0xD2: // int 32 - return get_number(); - - case 0xD3: // int 64 - return get_number(); - - case 0xD9: // str 8 - case 0xDA: // str 16 - case 0xDB: // str 32 - return get_msgpack_string(); - - case 0xDC: // array 16 - { - return get_msgpack_array(get_number()); - } - - case 0xDD: // array 32 - { - return get_msgpack_array(get_number()); - } - - case 0xDE: // map 16 - { - return get_msgpack_object(get_number()); - } - - case 0xDF: // map 32 - { - return get_msgpack_object(get_number()); - } - - // positive fixint - case 0xE0: - case 0xE1: - case 0xE2: - case 0xE3: - case 0xE4: - case 0xE5: - case 0xE6: - case 0xE7: - case 0xE8: - case 0xE9: - case 0xEA: - case 0xEB: - case 0xEC: - case 0xED: - case 0xEE: - case 0xEF: - case 0xF0: - case 0xF1: - case 0xF2: - case 0xF3: - case 0xF4: - case 0xF5: - case 0xF6: - case 0xF7: - case 0xF8: - case 0xF9: - case 0xFA: - case 0xFB: - case 0xFC: - case 0xFD: - case 0xFE: - case 0xFF: - return static_cast(current); - - default: // anything else - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(112, chars_read, - "error reading MessagePack; last byte: 0x" + ss.str())); - } - } - } - - /*! - @brief get next character from the input - - This function provides the interface to the used input adapter. It does - not throw in case the input reached EOF, but returns a -'ve valued - `std::char_traits::eof()` in that case. - - @return character read from the input - */ - int get() - { - ++chars_read; - return (current = ia->get_character()); - } - - /* - @brief read a number from the input - - @tparam NumberType the type of the number - - @return number of type @a NumberType - - @note This function needs to respect the system's endianess, because - bytes in CBOR and MessagePack are stored in network order (big - endian) and therefore need reordering on little endian systems. - - @throw parse_error.110 if input has less than `sizeof(NumberType)` bytes - */ - template NumberType get_number() - { - // step 1: read input into array with system's byte order - std::array vec; - for (std::size_t i = 0; i < sizeof(NumberType); ++i) - { - get(); - check_eof(); - - // reverse byte order prior to conversion if necessary - if (is_little_endian) - { - vec[sizeof(NumberType) - i - 1] = static_cast(current); - } - else - { - vec[i] = static_cast(current); // LCOV_EXCL_LINE - } - } - - // step 2: convert array into number of type T and return - NumberType result; - std::memcpy(&result, vec.data(), sizeof(NumberType)); - return result; - } - - /*! - @brief create a string by reading characters from the input - - @param[in] len number of bytes to read - - @note We can not reserve @a len bytes for the result, because @a len - may be too large. Usually, @ref check_eof() detects the end of - the input before we run out of string memory. - - @return string created by reading @a len bytes - - @throw parse_error.110 if input has less than @a len bytes - */ - template - std::string get_string(const NumberType len) - { - std::string result; - std::generate_n(std::back_inserter(result), len, [this]() - { - get(); - check_eof(); - return static_cast(current); - }); - return result; - } - - /*! - @brief reads a CBOR string - - This function first reads starting bytes to determine the expected - string length and then copies this number of bytes into a string. - Additionally, CBOR's strings with indefinite lengths are supported. - - @return string - - @throw parse_error.110 if input ended - @throw parse_error.113 if an unexpected byte is read - */ - std::string get_cbor_string() - { - check_eof(); - - switch (current) - { - // UTF-8 string (0x00..0x17 bytes follow) - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - { - return get_string(current & 0x1F); - } - - case 0x78: // UTF-8 string (one-byte uint8_t for n follows) - { - return get_string(get_number()); - } - - case 0x79: // UTF-8 string (two-byte uint16_t for n follow) - { - return get_string(get_number()); - } - - case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) - { - return get_string(get_number()); - } - - case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) - { - return get_string(get_number()); - } - - case 0x7F: // UTF-8 string (indefinite length) - { - std::string result; - while (get() != 0xFF) - { - check_eof(); - result.push_back(static_cast(current)); - } - return result; - } - - default: - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(113, chars_read, "expected a CBOR string; last byte: 0x" + ss.str())); - } - } - } - - template - BasicJsonType get_cbor_array(const NumberType len) - { - BasicJsonType result = value_t::array; - std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() - { - return parse_cbor_internal(); - }); - return result; - } - - template - BasicJsonType get_cbor_object(const NumberType len) - { - BasicJsonType result = value_t::object; - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - len, [this]() - { - get(); - auto key = get_cbor_string(); - auto val = parse_cbor_internal(); - return std::make_pair(std::move(key), std::move(val)); - }); - return result; - } - - /*! - @brief reads a MessagePack string - - This function first reads starting bytes to determine the expected - string length and then copies this number of bytes into a string. - - @return string - - @throw parse_error.110 if input ended - @throw parse_error.113 if an unexpected byte is read - */ - std::string get_msgpack_string() - { - check_eof(); - - switch (current) - { - // fixstr - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - { - return get_string(current & 0x1F); - } - - case 0xD9: // str 8 - { - return get_string(get_number()); - } - - case 0xDA: // str 16 - { - return get_string(get_number()); - } - - case 0xDB: // str 32 - { - return get_string(get_number()); - } - - default: - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(113, chars_read, - "expected a MessagePack string; last byte: 0x" + ss.str())); - } - } - } - - template - BasicJsonType get_msgpack_array(const NumberType len) - { - BasicJsonType result = value_t::array; - std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() - { - return parse_msgpack_internal(); - }); - return result; - } - - template - BasicJsonType get_msgpack_object(const NumberType len) - { - BasicJsonType result = value_t::object; - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - len, [this]() - { - get(); - auto key = get_msgpack_string(); - auto val = parse_msgpack_internal(); - return std::make_pair(std::move(key), std::move(val)); - }); - return result; - } - - /*! - @brief check if input ended - @throw parse_error.110 if input ended - */ - void check_eof(const bool expect_eof = false) const - { - if (expect_eof) - { - if (JSON_UNLIKELY(current != std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); - } - } - else - { - if (JSON_UNLIKELY(current == std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - } - } - } - - private: - /// input adapter - input_adapter_t ia = nullptr; - - /// the current character - int current = std::char_traits::eof(); - - /// the number of characters read - std::size_t chars_read = 0; - - /// whether we can assume little endianess - const bool is_little_endian = little_endianess(); -}; +/////////////////// +// binary writer // +/////////////////// /*! @brief serialization to CBOR and MessagePack values From c117515e3141d6708dc7a4daec9cbfe2d61be179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 17:55:06 +0200 Subject: [PATCH 026/106] add detail/parsing/binary_writer.hpp --- Makefile | 3 +- src/detail/parsing/binary_writer.hpp | 558 +++++++++++++++++++++++++++ src/json.hpp | 540 +------------------------- 3 files changed, 561 insertions(+), 540 deletions(-) create mode 100644 src/detail/parsing/binary_writer.hpp diff --git a/Makefile b/Makefile index 6fa61613..928f37d8 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/iterators/iteration_proxy.hpp \ ${SRCDIR}/detail/iterators/json_reverse_iterator.hpp \ ${SRCDIR}/detail/parsing/output_adapters.hpp \ - ${SRCDIR}/detail/parsing/binary_reader.hpp + ${SRCDIR}/detail/parsing/binary_reader.hpp \ + ${SRCDIR}/detail/parsing/binary_writer.hpp # main target all: diff --git a/src/detail/parsing/binary_writer.hpp b/src/detail/parsing/binary_writer.hpp new file mode 100644 index 00000000..25badd89 --- /dev/null +++ b/src/detail/parsing/binary_writer.hpp @@ -0,0 +1,558 @@ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP + +#include +#include +#include +#include +#include + +#include "detail/parsing/binary_reader.hpp" +#include "detail/parsing/output_adapters.hpp" + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// binary writer // +/////////////////// + +/*! +@brief serialization to CBOR and MessagePack values +*/ +template +class binary_writer +{ + public: + /*! + @brief create a binary writer + + @param[in] adapter output adapter to write to + */ + explicit binary_writer(output_adapter_t adapter) : oa(adapter) + { + assert(oa); + } + + /*! + @brief[in] j JSON value to serialize + */ + void write_cbor(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::null: + { + oa->write_character(static_cast(0xF6)); + break; + } + + case value_t::boolean: + { + oa->write_character(j.m_value.boolean + ? static_cast(0xF5) + : static_cast(0xF4)); + break; + } + + case value_t::number_integer: + { + if (j.m_value.number_integer >= 0) + { + // CBOR does not differentiate between positive signed + // integers and unsigned integers. Therefore, we used the + // code from the value_t::number_unsigned case here. + if (j.m_value.number_integer <= 0x17) + { + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x18)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x19)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x1A)); + write_number(static_cast(j.m_value.number_integer)); + } + else + { + oa->write_character(static_cast(0x1B)); + write_number(static_cast(j.m_value.number_integer)); + } + } + else + { + // The conversions below encode the sign in the first + // byte, and the value is converted to a positive number. + const auto positive_number = -1 - j.m_value.number_integer; + if (j.m_value.number_integer >= -24) + { + write_number(static_cast(0x20 + positive_number)); + } + else if (positive_number <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x38)); + write_number(static_cast(positive_number)); + } + else if (positive_number <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x39)); + write_number(static_cast(positive_number)); + } + else if (positive_number <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x3A)); + write_number(static_cast(positive_number)); + } + else + { + oa->write_character(static_cast(0x3B)); + write_number(static_cast(positive_number)); + } + } + break; + } + + case value_t::number_unsigned: + { + if (j.m_value.number_unsigned <= 0x17) + { + write_number(static_cast(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x18)); + write_number(static_cast(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x19)); + write_number(static_cast(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x1A)); + write_number(static_cast(j.m_value.number_unsigned)); + } + else + { + oa->write_character(static_cast(0x1B)); + write_number(static_cast(j.m_value.number_unsigned)); + } + break; + } + + case value_t::number_float: // Double-Precision Float + { + oa->write_character(static_cast(0xFB)); + write_number(j.m_value.number_float); + break; + } + + case value_t::string: + { + // step 1: write control byte and the string length + const auto N = j.m_value.string->size(); + if (N <= 0x17) + { + write_number(static_cast(0x60 + N)); + } + else if (N <= 0xFF) + { + oa->write_character(static_cast(0x78)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFF) + { + oa->write_character(static_cast(0x79)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFFFFFF) + { + oa->write_character(static_cast(0x7A)); + write_number(static_cast(N)); + } + // LCOV_EXCL_START + else if (N <= 0xFFFFFFFFFFFFFFFF) + { + oa->write_character(static_cast(0x7B)); + write_number(static_cast(N)); + } + // LCOV_EXCL_STOP + + // step 2: write the string + oa->write_characters( + reinterpret_cast(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + // step 1: write control byte and the array size + const auto N = j.m_value.array->size(); + if (N <= 0x17) + { + write_number(static_cast(0x80 + N)); + } + else if (N <= 0xFF) + { + oa->write_character(static_cast(0x98)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFF) + { + oa->write_character(static_cast(0x99)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFFFFFF) + { + oa->write_character(static_cast(0x9A)); + write_number(static_cast(N)); + } + // LCOV_EXCL_START + else if (N <= 0xFFFFFFFFFFFFFFFF) + { + oa->write_character(static_cast(0x9B)); + write_number(static_cast(N)); + } + // LCOV_EXCL_STOP + + // step 2: write each element + for (const auto& el : *j.m_value.array) + { + write_cbor(el); + } + break; + } + + case value_t::object: + { + // step 1: write control byte and the object size + const auto N = j.m_value.object->size(); + if (N <= 0x17) + { + write_number(static_cast(0xA0 + N)); + } + else if (N <= 0xFF) + { + oa->write_character(static_cast(0xB8)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFF) + { + oa->write_character(static_cast(0xB9)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFFFFFF) + { + oa->write_character(static_cast(0xBA)); + write_number(static_cast(N)); + } + // LCOV_EXCL_START + else if (N <= 0xFFFFFFFFFFFFFFFF) + { + oa->write_character(static_cast(0xBB)); + write_number(static_cast(N)); + } + // LCOV_EXCL_STOP + + // step 2: write each element + for (const auto& el : *j.m_value.object) + { + write_cbor(el.first); + write_cbor(el.second); + } + break; + } + + default: + break; + } + } + + /*! + @brief[in] j JSON value to serialize + */ + void write_msgpack(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::null: // nil + { + oa->write_character(static_cast(0xC0)); + break; + } + + case value_t::boolean: // true and false + { + oa->write_character(j.m_value.boolean + ? static_cast(0xC3) + : static_cast(0xC2)); + break; + } + + case value_t::number_integer: + { + if (j.m_value.number_integer >= 0) + { + // MessagePack does not differentiate between positive + // signed integers and unsigned integers. Therefore, we used + // the code from the value_t::number_unsigned case here. + if (j.m_value.number_unsigned < 128) + { + // positive fixnum + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 8 + oa->write_character(static_cast(0xCC)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 16 + oa->write_character(static_cast(0xCD)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 32 + oa->write_character(static_cast(0xCE)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 64 + oa->write_character(static_cast(0xCF)); + write_number(static_cast(j.m_value.number_integer)); + } + } + else + { + if (j.m_value.number_integer >= -32) + { + // negative fixnum + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() and + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 8 + oa->write_character(static_cast(0xD0)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() and + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 16 + oa->write_character(static_cast(0xD1)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() and + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 32 + oa->write_character(static_cast(0xD2)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() and + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 64 + oa->write_character(static_cast(0xD3)); + write_number(static_cast(j.m_value.number_integer)); + } + } + break; + } + + case value_t::number_unsigned: + { + if (j.m_value.number_unsigned < 128) + { + // positive fixnum + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 8 + oa->write_character(static_cast(0xCC)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 16 + oa->write_character(static_cast(0xCD)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 32 + oa->write_character(static_cast(0xCE)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 64 + oa->write_character(static_cast(0xCF)); + write_number(static_cast(j.m_value.number_integer)); + } + break; + } + + case value_t::number_float: // float 64 + { + oa->write_character(static_cast(0xCB)); + write_number(j.m_value.number_float); + break; + } + + case value_t::string: + { + // step 1: write control byte and the string length + const auto N = j.m_value.string->size(); + if (N <= 31) + { + // fixstr + write_number(static_cast(0xA0 | N)); + } + else if (N <= 255) + { + // str 8 + oa->write_character(static_cast(0xD9)); + write_number(static_cast(N)); + } + else if (N <= 65535) + { + // str 16 + oa->write_character(static_cast(0xDA)); + write_number(static_cast(N)); + } + else if (N <= 4294967295) + { + // str 32 + oa->write_character(static_cast(0xDB)); + write_number(static_cast(N)); + } + + // step 2: write the string + oa->write_characters( + reinterpret_cast(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + // step 1: write control byte and the array size + const auto N = j.m_value.array->size(); + if (N <= 15) + { + // fixarray + write_number(static_cast(0x90 | N)); + } + else if (N <= 0xFFFF) + { + // array 16 + oa->write_character(static_cast(0xDC)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFFFFFF) + { + // array 32 + oa->write_character(static_cast(0xDD)); + write_number(static_cast(N)); + } + + // step 2: write each element + for (const auto& el : *j.m_value.array) + { + write_msgpack(el); + } + break; + } + + case value_t::object: + { + // step 1: write control byte and the object size + const auto N = j.m_value.object->size(); + if (N <= 15) + { + // fixmap + write_number(static_cast(0x80 | (N & 0xF))); + } + else if (N <= 65535) + { + // map 16 + oa->write_character(static_cast(0xDE)); + write_number(static_cast(N)); + } + else if (N <= 4294967295) + { + // map 32 + oa->write_character(static_cast(0xDF)); + write_number(static_cast(N)); + } + + // step 2: write each element + for (const auto& el : *j.m_value.object) + { + write_msgpack(el.first); + write_msgpack(el.second); + } + break; + } + + default: + break; + } + } + + private: + /* + @brief write a number to output input + + @param[in] n number of type @a NumberType + @tparam NumberType the type of the number + + @note This function needs to respect the system's endianess, because bytes + in CBOR and MessagePack are stored in network order (big endian) and + therefore need reordering on little endian systems. + */ + template void write_number(NumberType n) + { + // step 1: write number to array of length NumberType + std::array vec; + std::memcpy(vec.data(), &n, sizeof(NumberType)); + + // step 2: write array to output (with possible reordering) + if (is_little_endian) + { + // reverse byte order prior to conversion if necessary + std::reverse(vec.begin(), vec.end()); + } + + oa->write_characters(vec.data(), sizeof(NumberType)); + } + + private: + /// whether we can assume little endianess + const bool is_little_endian = binary_reader::little_endianess(); + + /// the output + output_adapter_t oa = nullptr; +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index 171377b7..ff1af030 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -67,6 +67,7 @@ SOFTWARE. #include "detail/iterators/json_reverse_iterator.hpp" #include "detail/parsing/output_adapters.hpp" #include "detail/parsing/binary_reader.hpp" +#include "detail/parsing/binary_writer.hpp" /*! @brief namespace for Niels Lohmann @@ -77,545 +78,6 @@ namespace nlohmann { namespace detail { -/////////////////// -// binary writer // -/////////////////// - -/*! -@brief serialization to CBOR and MessagePack values -*/ -template -class binary_writer -{ - public: - /*! - @brief create a binary writer - - @param[in] adapter output adapter to write to - */ - explicit binary_writer(output_adapter_t adapter) : oa(adapter) - { - assert(oa); - } - - /*! - @brief[in] j JSON value to serialize - */ - void write_cbor(const BasicJsonType& j) - { - switch (j.type()) - { - case value_t::null: - { - oa->write_character(static_cast(0xF6)); - break; - } - - case value_t::boolean: - { - oa->write_character(j.m_value.boolean - ? static_cast(0xF5) - : static_cast(0xF4)); - break; - } - - case value_t::number_integer: - { - if (j.m_value.number_integer >= 0) - { - // CBOR does not differentiate between positive signed - // integers and unsigned integers. Therefore, we used the - // code from the value_t::number_unsigned case here. - if (j.m_value.number_integer <= 0x17) - { - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x18)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x19)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x1A)); - write_number(static_cast(j.m_value.number_integer)); - } - else - { - oa->write_character(static_cast(0x1B)); - write_number(static_cast(j.m_value.number_integer)); - } - } - else - { - // The conversions below encode the sign in the first - // byte, and the value is converted to a positive number. - const auto positive_number = -1 - j.m_value.number_integer; - if (j.m_value.number_integer >= -24) - { - write_number(static_cast(0x20 + positive_number)); - } - else if (positive_number <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x38)); - write_number(static_cast(positive_number)); - } - else if (positive_number <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x39)); - write_number(static_cast(positive_number)); - } - else if (positive_number <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x3A)); - write_number(static_cast(positive_number)); - } - else - { - oa->write_character(static_cast(0x3B)); - write_number(static_cast(positive_number)); - } - } - break; - } - - case value_t::number_unsigned: - { - if (j.m_value.number_unsigned <= 0x17) - { - write_number(static_cast(j.m_value.number_unsigned)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x18)); - write_number(static_cast(j.m_value.number_unsigned)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x19)); - write_number(static_cast(j.m_value.number_unsigned)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x1A)); - write_number(static_cast(j.m_value.number_unsigned)); - } - else - { - oa->write_character(static_cast(0x1B)); - write_number(static_cast(j.m_value.number_unsigned)); - } - break; - } - - case value_t::number_float: // Double-Precision Float - { - oa->write_character(static_cast(0xFB)); - write_number(j.m_value.number_float); - break; - } - - case value_t::string: - { - // step 1: write control byte and the string length - const auto N = j.m_value.string->size(); - if (N <= 0x17) - { - write_number(static_cast(0x60 + N)); - } - else if (N <= 0xFF) - { - oa->write_character(static_cast(0x78)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFF) - { - oa->write_character(static_cast(0x79)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFFFFFF) - { - oa->write_character(static_cast(0x7A)); - write_number(static_cast(N)); - } - // LCOV_EXCL_START - else if (N <= 0xFFFFFFFFFFFFFFFF) - { - oa->write_character(static_cast(0x7B)); - write_number(static_cast(N)); - } - // LCOV_EXCL_STOP - - // step 2: write the string - oa->write_characters( - reinterpret_cast(j.m_value.string->c_str()), - j.m_value.string->size()); - break; - } - - case value_t::array: - { - // step 1: write control byte and the array size - const auto N = j.m_value.array->size(); - if (N <= 0x17) - { - write_number(static_cast(0x80 + N)); - } - else if (N <= 0xFF) - { - oa->write_character(static_cast(0x98)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFF) - { - oa->write_character(static_cast(0x99)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFFFFFF) - { - oa->write_character(static_cast(0x9A)); - write_number(static_cast(N)); - } - // LCOV_EXCL_START - else if (N <= 0xFFFFFFFFFFFFFFFF) - { - oa->write_character(static_cast(0x9B)); - write_number(static_cast(N)); - } - // LCOV_EXCL_STOP - - // step 2: write each element - for (const auto& el : *j.m_value.array) - { - write_cbor(el); - } - break; - } - - case value_t::object: - { - // step 1: write control byte and the object size - const auto N = j.m_value.object->size(); - if (N <= 0x17) - { - write_number(static_cast(0xA0 + N)); - } - else if (N <= 0xFF) - { - oa->write_character(static_cast(0xB8)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFF) - { - oa->write_character(static_cast(0xB9)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFFFFFF) - { - oa->write_character(static_cast(0xBA)); - write_number(static_cast(N)); - } - // LCOV_EXCL_START - else if (N <= 0xFFFFFFFFFFFFFFFF) - { - oa->write_character(static_cast(0xBB)); - write_number(static_cast(N)); - } - // LCOV_EXCL_STOP - - // step 2: write each element - for (const auto& el : *j.m_value.object) - { - write_cbor(el.first); - write_cbor(el.second); - } - break; - } - - default: - break; - } - } - - /*! - @brief[in] j JSON value to serialize - */ - void write_msgpack(const BasicJsonType& j) - { - switch (j.type()) - { - case value_t::null: // nil - { - oa->write_character(static_cast(0xC0)); - break; - } - - case value_t::boolean: // true and false - { - oa->write_character(j.m_value.boolean - ? static_cast(0xC3) - : static_cast(0xC2)); - break; - } - - case value_t::number_integer: - { - if (j.m_value.number_integer >= 0) - { - // MessagePack does not differentiate between positive - // signed integers and unsigned integers. Therefore, we used - // the code from the value_t::number_unsigned case here. - if (j.m_value.number_unsigned < 128) - { - // positive fixnum - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 8 - oa->write_character(static_cast(0xCC)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 16 - oa->write_character(static_cast(0xCD)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 32 - oa->write_character(static_cast(0xCE)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 64 - oa->write_character(static_cast(0xCF)); - write_number(static_cast(j.m_value.number_integer)); - } - } - else - { - if (j.m_value.number_integer >= -32) - { - // negative fixnum - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() and - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 8 - oa->write_character(static_cast(0xD0)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() and - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 16 - oa->write_character(static_cast(0xD1)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() and - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 32 - oa->write_character(static_cast(0xD2)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() and - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 64 - oa->write_character(static_cast(0xD3)); - write_number(static_cast(j.m_value.number_integer)); - } - } - break; - } - - case value_t::number_unsigned: - { - if (j.m_value.number_unsigned < 128) - { - // positive fixnum - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 8 - oa->write_character(static_cast(0xCC)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 16 - oa->write_character(static_cast(0xCD)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 32 - oa->write_character(static_cast(0xCE)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 64 - oa->write_character(static_cast(0xCF)); - write_number(static_cast(j.m_value.number_integer)); - } - break; - } - - case value_t::number_float: // float 64 - { - oa->write_character(static_cast(0xCB)); - write_number(j.m_value.number_float); - break; - } - - case value_t::string: - { - // step 1: write control byte and the string length - const auto N = j.m_value.string->size(); - if (N <= 31) - { - // fixstr - write_number(static_cast(0xA0 | N)); - } - else if (N <= 255) - { - // str 8 - oa->write_character(static_cast(0xD9)); - write_number(static_cast(N)); - } - else if (N <= 65535) - { - // str 16 - oa->write_character(static_cast(0xDA)); - write_number(static_cast(N)); - } - else if (N <= 4294967295) - { - // str 32 - oa->write_character(static_cast(0xDB)); - write_number(static_cast(N)); - } - - // step 2: write the string - oa->write_characters( - reinterpret_cast(j.m_value.string->c_str()), - j.m_value.string->size()); - break; - } - - case value_t::array: - { - // step 1: write control byte and the array size - const auto N = j.m_value.array->size(); - if (N <= 15) - { - // fixarray - write_number(static_cast(0x90 | N)); - } - else if (N <= 0xFFFF) - { - // array 16 - oa->write_character(static_cast(0xDC)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFFFFFF) - { - // array 32 - oa->write_character(static_cast(0xDD)); - write_number(static_cast(N)); - } - - // step 2: write each element - for (const auto& el : *j.m_value.array) - { - write_msgpack(el); - } - break; - } - - case value_t::object: - { - // step 1: write control byte and the object size - const auto N = j.m_value.object->size(); - if (N <= 15) - { - // fixmap - write_number(static_cast(0x80 | (N & 0xF))); - } - else if (N <= 65535) - { - // map 16 - oa->write_character(static_cast(0xDE)); - write_number(static_cast(N)); - } - else if (N <= 4294967295) - { - // map 32 - oa->write_character(static_cast(0xDF)); - write_number(static_cast(N)); - } - - // step 2: write each element - for (const auto& el : *j.m_value.object) - { - write_msgpack(el.first); - write_msgpack(el.second); - } - break; - } - - default: - break; - } - } - - private: - /* - @brief write a number to output input - - @param[in] n number of type @a NumberType - @tparam NumberType the type of the number - - @note This function needs to respect the system's endianess, because bytes - in CBOR and MessagePack are stored in network order (big endian) and - therefore need reordering on little endian systems. - */ - template void write_number(NumberType n) - { - // step 1: write number to array of length NumberType - std::array vec; - std::memcpy(vec.data(), &n, sizeof(NumberType)); - - // step 2: write array to output (with possible reordering) - if (is_little_endian) - { - // reverse byte order prior to conversion if necessary - std::reverse(vec.begin(), vec.end()); - } - - oa->write_characters(vec.data(), sizeof(NumberType)); - } - - private: - /// whether we can assume little endianess - const bool is_little_endian = binary_reader::little_endianess(); - - /// the output - output_adapter_t oa = nullptr; -}; - /////////////////// // serialization // /////////////////// From a3473fda6acae16682a10051c1f092e039c19826 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 18:04:51 +0200 Subject: [PATCH 027/106] add detail/serializer.hpp --- Makefile | 3 +- src/detail/serializer.hpp | 794 ++++++++++++++++++++++++++++++++++++++ src/json.hpp | 769 +----------------------------------- 3 files changed, 797 insertions(+), 769 deletions(-) create mode 100644 src/detail/serializer.hpp diff --git a/Makefile b/Makefile index 928f37d8..b646081d 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/iterators/json_reverse_iterator.hpp \ ${SRCDIR}/detail/parsing/output_adapters.hpp \ ${SRCDIR}/detail/parsing/binary_reader.hpp \ - ${SRCDIR}/detail/parsing/binary_writer.hpp + ${SRCDIR}/detail/parsing/binary_writer.hpp \ + ${SRCDIR}/detail/serializer.hpp # main target all: diff --git a/src/detail/serializer.hpp b/src/detail/serializer.hpp new file mode 100644 index 00000000..955a3eac --- /dev/null +++ b/src/detail/serializer.hpp @@ -0,0 +1,794 @@ +#ifndef NLOHMANN_JSON_DETAIL_SERIALIZER_HPP +#define NLOHMANN_JSON_DETAIL_SERIALIZER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "detail/macro_scope.hpp" +#include "detail/meta.hpp" +#include "detail/parsing/output_adapters.hpp" + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// serialization // +/////////////////// + +template +class serializer +{ + using string_t = typename BasicJsonType::string_t; + using number_float_t = typename BasicJsonType::number_float_t; + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + public: + /*! + @param[in] s output stream to serialize to + @param[in] ichar indentation character to use + */ + serializer(output_adapter_t s, const char ichar) + : o(std::move(s)), loc(std::localeconv()), + thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep)), + decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point)), + indent_char(ichar), indent_string(512, indent_char) {} + + // delete because of pointer members + serializer(const serializer&) = delete; + serializer& operator=(const serializer&) = delete; + + /*! + @brief internal implementation of the serialization function + + This function is called by the public member function dump and organizes + the serialization internally. The indentation level is propagated as + additional parameter. In case of arrays and objects, the function is + called recursively. + + - strings and object keys are escaped using `escape_string()` + - integer numbers are converted implicitly via `operator<<` + - floating-point numbers are converted to a string using `"%g"` format + + @param[in] val value to serialize + @param[in] pretty_print whether the output shall be pretty-printed + @param[in] indent_step the indent level + @param[in] current_indent the current indent level (only used internally) + */ + void dump(const BasicJsonType& val, const bool pretty_print, + const bool ensure_ascii, + const unsigned int indent_step, + const unsigned int current_indent = 0) + { + switch (val.m_type) + { + case value_t::object: + { + if (val.m_value.object->empty()) + { + o->write_characters("{}", 2); + return; + } + + if (pretty_print) + { + o->write_characters("{\n", 2); + + // variable to hold indentation for recursive calls + const auto new_indent = current_indent + indent_step; + if (JSON_UNLIKELY(indent_string.size() < new_indent)) + { + indent_string.resize(indent_string.size() * 2, ' '); + } + + // first n-1 elements + auto i = val.m_value.object->cbegin(); + for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) + { + o->write_characters(indent_string.c_str(), new_indent); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\": ", 3); + dump(i->second, true, ensure_ascii, indent_step, new_indent); + o->write_characters(",\n", 2); + } + + // last element + assert(i != val.m_value.object->cend()); + assert(std::next(i) == val.m_value.object->cend()); + o->write_characters(indent_string.c_str(), new_indent); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\": ", 3); + dump(i->second, true, ensure_ascii, indent_step, new_indent); + + o->write_character('\n'); + o->write_characters(indent_string.c_str(), current_indent); + o->write_character('}'); + } + else + { + o->write_character('{'); + + // first n-1 elements + auto i = val.m_value.object->cbegin(); + for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) + { + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\":", 2); + dump(i->second, false, ensure_ascii, indent_step, current_indent); + o->write_character(','); + } + + // last element + assert(i != val.m_value.object->cend()); + assert(std::next(i) == val.m_value.object->cend()); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\":", 2); + dump(i->second, false, ensure_ascii, indent_step, current_indent); + + o->write_character('}'); + } + + return; + } + + case value_t::array: + { + if (val.m_value.array->empty()) + { + o->write_characters("[]", 2); + return; + } + + if (pretty_print) + { + o->write_characters("[\n", 2); + + // variable to hold indentation for recursive calls + const auto new_indent = current_indent + indent_step; + if (JSON_UNLIKELY(indent_string.size() < new_indent)) + { + indent_string.resize(indent_string.size() * 2, ' '); + } + + // first n-1 elements + for (auto i = val.m_value.array->cbegin(); + i != val.m_value.array->cend() - 1; ++i) + { + o->write_characters(indent_string.c_str(), new_indent); + dump(*i, true, ensure_ascii, indent_step, new_indent); + o->write_characters(",\n", 2); + } + + // last element + assert(not val.m_value.array->empty()); + o->write_characters(indent_string.c_str(), new_indent); + dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent); + + o->write_character('\n'); + o->write_characters(indent_string.c_str(), current_indent); + o->write_character(']'); + } + else + { + o->write_character('['); + + // first n-1 elements + for (auto i = val.m_value.array->cbegin(); + i != val.m_value.array->cend() - 1; ++i) + { + dump(*i, false, ensure_ascii, indent_step, current_indent); + o->write_character(','); + } + + // last element + assert(not val.m_value.array->empty()); + dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent); + + o->write_character(']'); + } + + return; + } + + case value_t::string: + { + o->write_character('\"'); + dump_escaped(*val.m_value.string, ensure_ascii); + o->write_character('\"'); + return; + } + + case value_t::boolean: + { + if (val.m_value.boolean) + { + o->write_characters("true", 4); + } + else + { + o->write_characters("false", 5); + } + return; + } + + case value_t::number_integer: + { + dump_integer(val.m_value.number_integer); + return; + } + + case value_t::number_unsigned: + { + dump_integer(val.m_value.number_unsigned); + return; + } + + case value_t::number_float: + { + dump_float(val.m_value.number_float); + return; + } + + case value_t::discarded: + { + o->write_characters("", 11); + return; + } + + case value_t::null: + { + o->write_characters("null", 4); + return; + } + } + } + + private: + /*! + @brief returns the number of expected bytes following in UTF-8 string + + @param[in] u the first byte of a UTF-8 string + @return the number of expected bytes following + */ + static constexpr std::size_t bytes_following(const uint8_t u) + { + return ((u <= 127) ? 0 + : ((192 <= u and u <= 223) ? 1 + : ((224 <= u and u <= 239) ? 2 + : ((240 <= u and u <= 247) ? 3 : std::string::npos)))); + } + + /*! + @brief calculates the extra space to escape a JSON string + + @param[in] s the string to escape + @param[in] ensure_ascii whether to escape non-ASCII characters with + \uXXXX sequences + @return the number of characters required to escape string @a s + + @complexity Linear in the length of string @a s. + */ + static std::size_t extra_space(const string_t& s, + const bool ensure_ascii) noexcept + { + std::size_t res = 0; + + for (std::size_t i = 0; i < s.size(); ++i) + { + switch (s[i]) + { + // control characters that can be escaped with a backslash + case '"': + case '\\': + case '\b': + case '\f': + case '\n': + case '\r': + case '\t': + { + // from c (1 byte) to \x (2 bytes) + res += 1; + break; + } + + // control characters that need \uxxxx escaping + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x0B: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + { + // from c (1 byte) to \uxxxx (6 bytes) + res += 5; + break; + } + + default: + { + if (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F)) + { + const auto bytes = bytes_following(static_cast(s[i])); + // invalid characters will be detected by throw_if_invalid_utf8 + assert (bytes != std::string::npos); + + if (bytes == 3) + { + // codepoints that need 4 bytes (i.e., 3 additional + // bytes) in UTF-8 need a surrogate pair when \u + // escaping is used: from 4 bytes to \uxxxx\uxxxx + // (12 bytes) + res += (12 - bytes - 1); + } + else + { + // from x bytes to \uxxxx (6 bytes) + res += (6 - bytes - 1); + } + + // skip the additional bytes + i += bytes; + } + break; + } + } + } + + return res; + } + + static void escape_codepoint(int codepoint, string_t& result, std::size_t& pos) + { + // expecting a proper codepoint + assert(0x00 <= codepoint and codepoint <= 0x10FFFF); + + // the last written character was the backslash before the 'u' + assert(result[pos] == '\\'); + + // write the 'u' + result[++pos] = 'u'; + + // convert a number 0..15 to its hex representation (0..f) + static const std::array hexify = + { + { + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' + } + }; + + if (codepoint < 0x10000) + { + // codepoints U+0000..U+FFFF can be represented as \uxxxx. + result[++pos] = hexify[(codepoint >> 12) & 0x0F]; + result[++pos] = hexify[(codepoint >> 8) & 0x0F]; + result[++pos] = hexify[(codepoint >> 4) & 0x0F]; + result[++pos] = hexify[codepoint & 0x0F]; + } + else + { + // codepoints U+10000..U+10FFFF need a surrogate pair to be + // represented as \uxxxx\uxxxx. + // http://www.unicode.org/faq/utf_bom.html#utf16-4 + codepoint -= 0x10000; + const int high_surrogate = 0xD800 | ((codepoint >> 10) & 0x3FF); + const int low_surrogate = 0xDC00 | (codepoint & 0x3FF); + result[++pos] = hexify[(high_surrogate >> 12) & 0x0F]; + result[++pos] = hexify[(high_surrogate >> 8) & 0x0F]; + result[++pos] = hexify[(high_surrogate >> 4) & 0x0F]; + result[++pos] = hexify[high_surrogate & 0x0F]; + ++pos; // backslash is already in output + result[++pos] = 'u'; + result[++pos] = hexify[(low_surrogate >> 12) & 0x0F]; + result[++pos] = hexify[(low_surrogate >> 8) & 0x0F]; + result[++pos] = hexify[(low_surrogate >> 4) & 0x0F]; + result[++pos] = hexify[low_surrogate & 0x0F]; + } + + ++pos; + } + + /*! + @brief dump escaped string + + Escape a string by replacing certain special characters by a sequence of an + escape character (backslash) and another character and other control + characters by a sequence of "\u" followed by a four-digit hex + representation. The escaped string is written to output stream @a o. + + @param[in] s the string to escape + @param[in] ensure_ascii whether to escape non-ASCII characters with + \uXXXX sequences + + @complexity Linear in the length of string @a s. + */ + void dump_escaped(const string_t& s, const bool ensure_ascii) const + { + throw_if_invalid_utf8(s); + + const auto space = extra_space(s, ensure_ascii); + if (space == 0) + { + o->write_characters(s.c_str(), s.size()); + return; + } + + // create a result string of necessary size + string_t result(s.size() + space, '\\'); + std::size_t pos = 0; + + for (std::size_t i = 0; i < s.size(); ++i) + { + switch (s[i]) + { + case '"': // quotation mark (0x22) + { + result[pos + 1] = '"'; + pos += 2; + break; + } + + case '\\': // reverse solidus (0x5C) + { + // nothing to change + pos += 2; + break; + } + + case '\b': // backspace (0x08) + { + result[pos + 1] = 'b'; + pos += 2; + break; + } + + case '\f': // formfeed (0x0C) + { + result[pos + 1] = 'f'; + pos += 2; + break; + } + + case '\n': // newline (0x0A) + { + result[pos + 1] = 'n'; + pos += 2; + break; + } + + case '\r': // carriage return (0x0D) + { + result[pos + 1] = 'r'; + pos += 2; + break; + } + + case '\t': // horizontal tab (0x09) + { + result[pos + 1] = 't'; + pos += 2; + break; + } + + default: + { + // escape control characters (0x00..0x1F) or, if + // ensure_ascii parameter is used, non-ASCII characters + if ((0x00 <= s[i] and s[i] <= 0x1F) or + (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F))) + { + const auto bytes = bytes_following(static_cast(s[i])); + // invalid characters will be detected by throw_if_invalid_utf8 + assert (bytes != std::string::npos); + + // check that the additional bytes are present + assert(i + bytes < s.size()); + + // to use \uxxxx escaping, we first need to calculate + // the codepoint from the UTF-8 bytes + int codepoint = 0; + + // bytes is unsigned type: + assert(bytes <= 3); + switch (bytes) + { + case 0: + { + codepoint = s[i] & 0xFF; + break; + } + + case 1: + { + codepoint = ((s[i] & 0x3F) << 6) + + (s[i + 1] & 0x7F); + break; + } + + case 2: + { + codepoint = ((s[i] & 0x1F) << 12) + + ((s[i + 1] & 0x7F) << 6) + + (s[i + 2] & 0x7F); + break; + } + + case 3: + { + codepoint = ((s[i] & 0xF) << 18) + + ((s[i + 1] & 0x7F) << 12) + + ((s[i + 2] & 0x7F) << 6) + + (s[i + 3] & 0x7F); + break; + } + + default: + break; // LCOV_EXCL_LINE + } + + escape_codepoint(codepoint, result, pos); + i += bytes; + } + else + { + // all other characters are added as-is + result[pos++] = s[i]; + } + break; + } + } + } + + assert(pos == result.size()); + o->write_characters(result.c_str(), result.size()); + } + + /*! + @brief dump an integer + + Dump a given integer to output stream @a o. Works internally with + @a number_buffer. + + @param[in] x integer number (signed or unsigned) to dump + @tparam NumberType either @a number_integer_t or @a number_unsigned_t + */ + template::value or + std::is_same::value, + int> = 0> + void dump_integer(NumberType x) + { + // special case for "0" + if (x == 0) + { + o->write_character('0'); + return; + } + + const bool is_negative = (x <= 0) and (x != 0); // see issue #755 + std::size_t i = 0; + + while (x != 0) + { + // spare 1 byte for '\0' + assert(i < number_buffer.size() - 1); + + const auto digit = std::labs(static_cast(x % 10)); + number_buffer[i++] = static_cast('0' + digit); + x /= 10; + } + + if (is_negative) + { + // make sure there is capacity for the '-' + assert(i < number_buffer.size() - 2); + number_buffer[i++] = '-'; + } + + std::reverse(number_buffer.begin(), number_buffer.begin() + i); + o->write_characters(number_buffer.data(), i); + } + + /*! + @brief dump a floating-point number + + Dump a given floating-point number to output stream @a o. Works internally + with @a number_buffer. + + @param[in] x floating-point number to dump + */ + void dump_float(number_float_t x) + { + // NaN / inf + if (not std::isfinite(x) or std::isnan(x)) + { + o->write_characters("null", 4); + return; + } + + // get number of digits for a text -> float -> text round-trip + static constexpr auto d = std::numeric_limits::digits10; + + // the actual conversion + std::ptrdiff_t len = snprintf(number_buffer.data(), number_buffer.size(), "%.*g", d, x); + + // negative value indicates an error + assert(len > 0); + // check if buffer was large enough + assert(static_cast(len) < number_buffer.size()); + + // erase thousands separator + if (thousands_sep != '\0') + { + const auto end = std::remove(number_buffer.begin(), + number_buffer.begin() + len, thousands_sep); + std::fill(end, number_buffer.end(), '\0'); + assert((end - number_buffer.begin()) <= len); + len = (end - number_buffer.begin()); + } + + // convert decimal point to '.' + if (decimal_point != '\0' and decimal_point != '.') + { + const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point); + if (dec_pos != number_buffer.end()) + { + *dec_pos = '.'; + } + } + + o->write_characters(number_buffer.data(), static_cast(len)); + + // determine if need to append ".0" + const bool value_is_int_like = + std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1, + [](char c) + { + return (c == '.' or c == 'e'); + }); + + if (value_is_int_like) + { + o->write_characters(".0", 2); + } + } + + /*! + @brief check whether a string is UTF-8 encoded + + The function checks each byte of a string whether it is UTF-8 encoded. The + result of the check is stored in the @a state parameter. The function must + be called initially with state 0 (accept). State 1 means the string must + be rejected, because the current byte is not allowed. If the string is + completely processed, but the state is non-zero, the string ended + prematurely; that is, the last byte indicated more bytes should have + followed. + + @param[in,out] state the state of the decoding + @param[in] byte next byte to decode + + @note The function has been edited: a std::array is used and the code + point is not calculated. + + @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann + @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ + */ + static void decode(uint8_t& state, const uint8_t byte) + { + static const std::array utf8d = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF + 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF + 0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF + 0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF + 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2 + 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4 + 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6 + 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8 + } + }; + + const uint8_t type = utf8d[byte]; + state = utf8d[256u + state * 16u + type]; + } + + /*! + @brief throw an exception if a string is not UTF-8 encoded + + @param[in] str UTF-8 string to check + @throw type_error.316 if passed string is not UTF-8 encoded + + @since version 3.0.0 + */ + static void throw_if_invalid_utf8(const std::string& str) + { + // start with state 0 (= accept) + uint8_t state = 0; + + for (size_t i = 0; i < str.size(); ++i) + { + const auto byte = static_cast(str[i]); + decode(state, byte); + if (state == 1) + { + // state 1 means reject + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(byte); + JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + ss.str())); + } + } + + if (state != 0) + { + // we finish reading, but do not accept: string was incomplete + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(static_cast(str.back())); + JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + ss.str())); + } + } + + private: + /// the output of the serializer + output_adapter_t o = nullptr; + + /// a (hopefully) large enough character buffer + std::array number_buffer{{}}; + + /// the locale + const std::lconv* loc = nullptr; + /// the locale's thousand separator character + const char thousands_sep = '\0'; + /// the locale's decimal point character + const char decimal_point = '\0'; + + /// the indentation character + const char indent_char; + + /// the indentation string + string_t indent_string; +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index ff1af030..d52d6e83 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -68,6 +68,7 @@ SOFTWARE. #include "detail/parsing/output_adapters.hpp" #include "detail/parsing/binary_reader.hpp" #include "detail/parsing/binary_writer.hpp" +#include "detail/serializer.hpp" /*! @brief namespace for Niels Lohmann @@ -78,774 +79,6 @@ namespace nlohmann { namespace detail { -/////////////////// -// serialization // -/////////////////// - -template -class serializer -{ - using string_t = typename BasicJsonType::string_t; - using number_float_t = typename BasicJsonType::number_float_t; - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - public: - /*! - @param[in] s output stream to serialize to - @param[in] ichar indentation character to use - */ - serializer(output_adapter_t s, const char ichar) - : o(std::move(s)), loc(std::localeconv()), - thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep)), - decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point)), - indent_char(ichar), indent_string(512, indent_char) {} - - // delete because of pointer members - serializer(const serializer&) = delete; - serializer& operator=(const serializer&) = delete; - - /*! - @brief internal implementation of the serialization function - - This function is called by the public member function dump and organizes - the serialization internally. The indentation level is propagated as - additional parameter. In case of arrays and objects, the function is - called recursively. - - - strings and object keys are escaped using `escape_string()` - - integer numbers are converted implicitly via `operator<<` - - floating-point numbers are converted to a string using `"%g"` format - - @param[in] val value to serialize - @param[in] pretty_print whether the output shall be pretty-printed - @param[in] indent_step the indent level - @param[in] current_indent the current indent level (only used internally) - */ - void dump(const BasicJsonType& val, const bool pretty_print, - const bool ensure_ascii, - const unsigned int indent_step, - const unsigned int current_indent = 0) - { - switch (val.m_type) - { - case value_t::object: - { - if (val.m_value.object->empty()) - { - o->write_characters("{}", 2); - return; - } - - if (pretty_print) - { - o->write_characters("{\n", 2); - - // variable to hold indentation for recursive calls - const auto new_indent = current_indent + indent_step; - if (JSON_UNLIKELY(indent_string.size() < new_indent)) - { - indent_string.resize(indent_string.size() * 2, ' '); - } - - // first n-1 elements - auto i = val.m_value.object->cbegin(); - for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) - { - o->write_characters(indent_string.c_str(), new_indent); - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\": ", 3); - dump(i->second, true, ensure_ascii, indent_step, new_indent); - o->write_characters(",\n", 2); - } - - // last element - assert(i != val.m_value.object->cend()); - assert(std::next(i) == val.m_value.object->cend()); - o->write_characters(indent_string.c_str(), new_indent); - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\": ", 3); - dump(i->second, true, ensure_ascii, indent_step, new_indent); - - o->write_character('\n'); - o->write_characters(indent_string.c_str(), current_indent); - o->write_character('}'); - } - else - { - o->write_character('{'); - - // first n-1 elements - auto i = val.m_value.object->cbegin(); - for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) - { - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\":", 2); - dump(i->second, false, ensure_ascii, indent_step, current_indent); - o->write_character(','); - } - - // last element - assert(i != val.m_value.object->cend()); - assert(std::next(i) == val.m_value.object->cend()); - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\":", 2); - dump(i->second, false, ensure_ascii, indent_step, current_indent); - - o->write_character('}'); - } - - return; - } - - case value_t::array: - { - if (val.m_value.array->empty()) - { - o->write_characters("[]", 2); - return; - } - - if (pretty_print) - { - o->write_characters("[\n", 2); - - // variable to hold indentation for recursive calls - const auto new_indent = current_indent + indent_step; - if (JSON_UNLIKELY(indent_string.size() < new_indent)) - { - indent_string.resize(indent_string.size() * 2, ' '); - } - - // first n-1 elements - for (auto i = val.m_value.array->cbegin(); - i != val.m_value.array->cend() - 1; ++i) - { - o->write_characters(indent_string.c_str(), new_indent); - dump(*i, true, ensure_ascii, indent_step, new_indent); - o->write_characters(",\n", 2); - } - - // last element - assert(not val.m_value.array->empty()); - o->write_characters(indent_string.c_str(), new_indent); - dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent); - - o->write_character('\n'); - o->write_characters(indent_string.c_str(), current_indent); - o->write_character(']'); - } - else - { - o->write_character('['); - - // first n-1 elements - for (auto i = val.m_value.array->cbegin(); - i != val.m_value.array->cend() - 1; ++i) - { - dump(*i, false, ensure_ascii, indent_step, current_indent); - o->write_character(','); - } - - // last element - assert(not val.m_value.array->empty()); - dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent); - - o->write_character(']'); - } - - return; - } - - case value_t::string: - { - o->write_character('\"'); - dump_escaped(*val.m_value.string, ensure_ascii); - o->write_character('\"'); - return; - } - - case value_t::boolean: - { - if (val.m_value.boolean) - { - o->write_characters("true", 4); - } - else - { - o->write_characters("false", 5); - } - return; - } - - case value_t::number_integer: - { - dump_integer(val.m_value.number_integer); - return; - } - - case value_t::number_unsigned: - { - dump_integer(val.m_value.number_unsigned); - return; - } - - case value_t::number_float: - { - dump_float(val.m_value.number_float); - return; - } - - case value_t::discarded: - { - o->write_characters("", 11); - return; - } - - case value_t::null: - { - o->write_characters("null", 4); - return; - } - } - } - - private: - /*! - @brief returns the number of expected bytes following in UTF-8 string - - @param[in] u the first byte of a UTF-8 string - @return the number of expected bytes following - */ - static constexpr std::size_t bytes_following(const uint8_t u) - { - return ((u <= 127) ? 0 - : ((192 <= u and u <= 223) ? 1 - : ((224 <= u and u <= 239) ? 2 - : ((240 <= u and u <= 247) ? 3 : std::string::npos)))); - } - - /*! - @brief calculates the extra space to escape a JSON string - - @param[in] s the string to escape - @param[in] ensure_ascii whether to escape non-ASCII characters with - \uXXXX sequences - @return the number of characters required to escape string @a s - - @complexity Linear in the length of string @a s. - */ - static std::size_t extra_space(const string_t& s, - const bool ensure_ascii) noexcept - { - std::size_t res = 0; - - for (std::size_t i = 0; i < s.size(); ++i) - { - switch (s[i]) - { - // control characters that can be escaped with a backslash - case '"': - case '\\': - case '\b': - case '\f': - case '\n': - case '\r': - case '\t': - { - // from c (1 byte) to \x (2 bytes) - res += 1; - break; - } - - // control characters that need \uxxxx escaping - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x0B: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - { - // from c (1 byte) to \uxxxx (6 bytes) - res += 5; - break; - } - - default: - { - if (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F)) - { - const auto bytes = bytes_following(static_cast(s[i])); - // invalid characters will be detected by throw_if_invalid_utf8 - assert (bytes != std::string::npos); - - if (bytes == 3) - { - // codepoints that need 4 bytes (i.e., 3 additional - // bytes) in UTF-8 need a surrogate pair when \u - // escaping is used: from 4 bytes to \uxxxx\uxxxx - // (12 bytes) - res += (12 - bytes - 1); - } - else - { - // from x bytes to \uxxxx (6 bytes) - res += (6 - bytes - 1); - } - - // skip the additional bytes - i += bytes; - } - break; - } - } - } - - return res; - } - - static void escape_codepoint(int codepoint, string_t& result, std::size_t& pos) - { - // expecting a proper codepoint - assert(0x00 <= codepoint and codepoint <= 0x10FFFF); - - // the last written character was the backslash before the 'u' - assert(result[pos] == '\\'); - - // write the 'u' - result[++pos] = 'u'; - - // convert a number 0..15 to its hex representation (0..f) - static const std::array hexify = - { - { - '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' - } - }; - - if (codepoint < 0x10000) - { - // codepoints U+0000..U+FFFF can be represented as \uxxxx. - result[++pos] = hexify[(codepoint >> 12) & 0x0F]; - result[++pos] = hexify[(codepoint >> 8) & 0x0F]; - result[++pos] = hexify[(codepoint >> 4) & 0x0F]; - result[++pos] = hexify[codepoint & 0x0F]; - } - else - { - // codepoints U+10000..U+10FFFF need a surrogate pair to be - // represented as \uxxxx\uxxxx. - // http://www.unicode.org/faq/utf_bom.html#utf16-4 - codepoint -= 0x10000; - const int high_surrogate = 0xD800 | ((codepoint >> 10) & 0x3FF); - const int low_surrogate = 0xDC00 | (codepoint & 0x3FF); - result[++pos] = hexify[(high_surrogate >> 12) & 0x0F]; - result[++pos] = hexify[(high_surrogate >> 8) & 0x0F]; - result[++pos] = hexify[(high_surrogate >> 4) & 0x0F]; - result[++pos] = hexify[high_surrogate & 0x0F]; - ++pos; // backslash is already in output - result[++pos] = 'u'; - result[++pos] = hexify[(low_surrogate >> 12) & 0x0F]; - result[++pos] = hexify[(low_surrogate >> 8) & 0x0F]; - result[++pos] = hexify[(low_surrogate >> 4) & 0x0F]; - result[++pos] = hexify[low_surrogate & 0x0F]; - } - - ++pos; - } - - /*! - @brief dump escaped string - - Escape a string by replacing certain special characters by a sequence of an - escape character (backslash) and another character and other control - characters by a sequence of "\u" followed by a four-digit hex - representation. The escaped string is written to output stream @a o. - - @param[in] s the string to escape - @param[in] ensure_ascii whether to escape non-ASCII characters with - \uXXXX sequences - - @complexity Linear in the length of string @a s. - */ - void dump_escaped(const string_t& s, const bool ensure_ascii) const - { - throw_if_invalid_utf8(s); - - const auto space = extra_space(s, ensure_ascii); - if (space == 0) - { - o->write_characters(s.c_str(), s.size()); - return; - } - - // create a result string of necessary size - string_t result(s.size() + space, '\\'); - std::size_t pos = 0; - - for (std::size_t i = 0; i < s.size(); ++i) - { - switch (s[i]) - { - case '"': // quotation mark (0x22) - { - result[pos + 1] = '"'; - pos += 2; - break; - } - - case '\\': // reverse solidus (0x5C) - { - // nothing to change - pos += 2; - break; - } - - case '\b': // backspace (0x08) - { - result[pos + 1] = 'b'; - pos += 2; - break; - } - - case '\f': // formfeed (0x0C) - { - result[pos + 1] = 'f'; - pos += 2; - break; - } - - case '\n': // newline (0x0A) - { - result[pos + 1] = 'n'; - pos += 2; - break; - } - - case '\r': // carriage return (0x0D) - { - result[pos + 1] = 'r'; - pos += 2; - break; - } - - case '\t': // horizontal tab (0x09) - { - result[pos + 1] = 't'; - pos += 2; - break; - } - - default: - { - // escape control characters (0x00..0x1F) or, if - // ensure_ascii parameter is used, non-ASCII characters - if ((0x00 <= s[i] and s[i] <= 0x1F) or - (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F))) - { - const auto bytes = bytes_following(static_cast(s[i])); - // invalid characters will be detected by throw_if_invalid_utf8 - assert (bytes != std::string::npos); - - // check that the additional bytes are present - assert(i + bytes < s.size()); - - // to use \uxxxx escaping, we first need to calculate - // the codepoint from the UTF-8 bytes - int codepoint = 0; - - // bytes is unsigned type: - assert(bytes <= 3); - switch (bytes) - { - case 0: - { - codepoint = s[i] & 0xFF; - break; - } - - case 1: - { - codepoint = ((s[i] & 0x3F) << 6) - + (s[i + 1] & 0x7F); - break; - } - - case 2: - { - codepoint = ((s[i] & 0x1F) << 12) - + ((s[i + 1] & 0x7F) << 6) - + (s[i + 2] & 0x7F); - break; - } - - case 3: - { - codepoint = ((s[i] & 0xF) << 18) - + ((s[i + 1] & 0x7F) << 12) - + ((s[i + 2] & 0x7F) << 6) - + (s[i + 3] & 0x7F); - break; - } - - default: - break; // LCOV_EXCL_LINE - } - - escape_codepoint(codepoint, result, pos); - i += bytes; - } - else - { - // all other characters are added as-is - result[pos++] = s[i]; - } - break; - } - } - } - - assert(pos == result.size()); - o->write_characters(result.c_str(), result.size()); - } - - /*! - @brief dump an integer - - Dump a given integer to output stream @a o. Works internally with - @a number_buffer. - - @param[in] x integer number (signed or unsigned) to dump - @tparam NumberType either @a number_integer_t or @a number_unsigned_t - */ - template::value or - std::is_same::value, - int> = 0> - void dump_integer(NumberType x) - { - // special case for "0" - if (x == 0) - { - o->write_character('0'); - return; - } - - const bool is_negative = (x <= 0) and (x != 0); // see issue #755 - std::size_t i = 0; - - while (x != 0) - { - // spare 1 byte for '\0' - assert(i < number_buffer.size() - 1); - - const auto digit = std::labs(static_cast(x % 10)); - number_buffer[i++] = static_cast('0' + digit); - x /= 10; - } - - if (is_negative) - { - // make sure there is capacity for the '-' - assert(i < number_buffer.size() - 2); - number_buffer[i++] = '-'; - } - - std::reverse(number_buffer.begin(), number_buffer.begin() + i); - o->write_characters(number_buffer.data(), i); - } - - /*! - @brief dump a floating-point number - - Dump a given floating-point number to output stream @a o. Works internally - with @a number_buffer. - - @param[in] x floating-point number to dump - */ - void dump_float(number_float_t x) - { - // NaN / inf - if (not std::isfinite(x) or std::isnan(x)) - { - o->write_characters("null", 4); - return; - } - - // get number of digits for a text -> float -> text round-trip - static constexpr auto d = std::numeric_limits::digits10; - - // the actual conversion - std::ptrdiff_t len = snprintf(number_buffer.data(), number_buffer.size(), "%.*g", d, x); - - // negative value indicates an error - assert(len > 0); - // check if buffer was large enough - assert(static_cast(len) < number_buffer.size()); - - // erase thousands separator - if (thousands_sep != '\0') - { - const auto end = std::remove(number_buffer.begin(), - number_buffer.begin() + len, thousands_sep); - std::fill(end, number_buffer.end(), '\0'); - assert((end - number_buffer.begin()) <= len); - len = (end - number_buffer.begin()); - } - - // convert decimal point to '.' - if (decimal_point != '\0' and decimal_point != '.') - { - const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point); - if (dec_pos != number_buffer.end()) - { - *dec_pos = '.'; - } - } - - o->write_characters(number_buffer.data(), static_cast(len)); - - // determine if need to append ".0" - const bool value_is_int_like = - std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1, - [](char c) - { - return (c == '.' or c == 'e'); - }); - - if (value_is_int_like) - { - o->write_characters(".0", 2); - } - } - - /*! - @brief check whether a string is UTF-8 encoded - - The function checks each byte of a string whether it is UTF-8 encoded. The - result of the check is stored in the @a state parameter. The function must - be called initially with state 0 (accept). State 1 means the string must - be rejected, because the current byte is not allowed. If the string is - completely processed, but the state is non-zero, the string ended - prematurely; that is, the last byte indicated more bytes should have - followed. - - @param[in,out] state the state of the decoding - @param[in] byte next byte to decode - - @note The function has been edited: a std::array is used and the code - point is not calculated. - - @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann - @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ - */ - static void decode(uint8_t& state, const uint8_t byte) - { - static const std::array utf8d = - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF - 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF - 0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF - 0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF - 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2 - 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4 - 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6 - 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8 - } - }; - - const uint8_t type = utf8d[byte]; - state = utf8d[256u + state * 16u + type]; - } - - /*! - @brief throw an exception if a string is not UTF-8 encoded - - @param[in] str UTF-8 string to check - @throw type_error.316 if passed string is not UTF-8 encoded - - @since version 3.0.0 - */ - static void throw_if_invalid_utf8(const std::string& str) - { - // start with state 0 (= accept) - uint8_t state = 0; - - for (size_t i = 0; i < str.size(); ++i) - { - const auto byte = static_cast(str[i]); - decode(state, byte); - if (state == 1) - { - // state 1 means reject - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(byte); - JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + ss.str())); - } - } - - if (state != 0) - { - // we finish reading, but do not accept: string was incomplete - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(static_cast(str.back())); - JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + ss.str())); - } - } - - private: - /// the output of the serializer - output_adapter_t o = nullptr; - - /// a (hopefully) large enough character buffer - std::array number_buffer{{}}; - - /// the locale - const std::lconv* loc = nullptr; - /// the locale's thousand separator character - const char thousands_sep = '\0'; - /// the locale's decimal point character - const char decimal_point = '\0'; - - /// the indentation character - const char indent_char; - - /// the indentation string - string_t indent_string; -}; - template class json_ref { From 8e9714fe3dae9725011083096bdd1b115e9c1a61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 18:14:27 +0200 Subject: [PATCH 028/106] add detail/json_ref.hpp --- Makefile | 3 +- src/detail/json_ref.hpp | 66 +++++++++++++++++++++++++++++++++++++++++ src/json.hpp | 58 +----------------------------------- 3 files changed, 69 insertions(+), 58 deletions(-) create mode 100644 src/detail/json_ref.hpp diff --git a/Makefile b/Makefile index b646081d..a2c73dbf 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/parsing/output_adapters.hpp \ ${SRCDIR}/detail/parsing/binary_reader.hpp \ ${SRCDIR}/detail/parsing/binary_writer.hpp \ - ${SRCDIR}/detail/serializer.hpp + ${SRCDIR}/detail/serializer.hpp \ + ${SRCDIR}/detail/json_ref.hpp # main target all: diff --git a/src/detail/json_ref.hpp b/src/detail/json_ref.hpp new file mode 100644 index 00000000..ec120c02 --- /dev/null +++ b/src/detail/json_ref.hpp @@ -0,0 +1,66 @@ +#ifndef NLOHMANN_JSON_DETAIL_JSON_REF_HPP +#define NLOHMANN_JSON_DETAIL_JSON_REF_HPP + +#include +#include + +namespace nlohmann +{ +namespace detail +{ +template +class json_ref +{ + public: + using value_type = BasicJsonType; + + json_ref(value_type&& value) + : owned_value(std::move(value)), value_ref(&owned_value), is_rvalue(true) + {} + + json_ref(const value_type& value) + : value_ref(const_cast(&value)), is_rvalue(false) + {} + + json_ref(std::initializer_list init) + : owned_value(init), value_ref(&owned_value), is_rvalue(true) + {} + + template + json_ref(Args&& ... args) + : owned_value(std::forward(args)...), value_ref(&owned_value), is_rvalue(true) + {} + + // class should be movable only + json_ref(json_ref&&) = default; + json_ref(const json_ref&) = delete; + json_ref& operator=(const json_ref&) = delete; + + value_type moved_or_copied() const + { + if (is_rvalue) + { + return std::move(*value_ref); + } + return *value_ref; + } + + value_type const& operator*() const + { + return *static_cast(value_ref); + } + + value_type const* operator->() const + { + return static_cast(value_ref); + } + + private: + mutable value_type owned_value = nullptr; + value_type* value_ref = nullptr; + const bool is_rvalue; +}; +} +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index d52d6e83..32051d7e 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -69,6 +69,7 @@ SOFTWARE. #include "detail/parsing/binary_reader.hpp" #include "detail/parsing/binary_writer.hpp" #include "detail/serializer.hpp" +#include "detail/json_ref.hpp" /*! @brief namespace for Niels Lohmann @@ -77,63 +78,6 @@ SOFTWARE. */ namespace nlohmann { -namespace detail -{ -template -class json_ref -{ - public: - using value_type = BasicJsonType; - - json_ref(value_type&& value) - : owned_value(std::move(value)), value_ref(&owned_value), is_rvalue(true) - {} - - json_ref(const value_type& value) - : value_ref(const_cast(&value)), is_rvalue(false) - {} - - json_ref(std::initializer_list init) - : owned_value(init), value_ref(&owned_value), is_rvalue(true) - {} - - template - json_ref(Args&& ... args) - : owned_value(std::forward(args)...), value_ref(&owned_value), is_rvalue(true) - {} - - // class should be movable only - json_ref(json_ref&&) = default; - json_ref(const json_ref&) = delete; - json_ref& operator=(const json_ref&) = delete; - - value_type moved_or_copied() const - { - if (is_rvalue) - { - return std::move(*value_ref); - } - return *value_ref; - } - - value_type const& operator*() const - { - return *static_cast(value_ref); - } - - value_type const* operator->() const - { - return static_cast(value_ref); - } - - private: - mutable value_type owned_value = nullptr; - value_type* value_ref = nullptr; - const bool is_rvalue; -}; - -} // namespace detail - template struct adl_serializer { From 9cab30cfceda84aead05a78653dbb519fd00c2c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 18:22:49 +0200 Subject: [PATCH 029/106] add adl_serializer.hpp --- Makefile | 3 ++- src/adl_serializer.hpp | 48 ++++++++++++++++++++++++++++++++++++++++++ src/json.hpp | 38 +-------------------------------- 3 files changed, 51 insertions(+), 38 deletions(-) create mode 100644 src/adl_serializer.hpp diff --git a/Makefile b/Makefile index a2c73dbf..289080c7 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,8 @@ SRCS = ${SRCDIR}/json.hpp \ ${SRCDIR}/detail/parsing/binary_reader.hpp \ ${SRCDIR}/detail/parsing/binary_writer.hpp \ ${SRCDIR}/detail/serializer.hpp \ - ${SRCDIR}/detail/json_ref.hpp + ${SRCDIR}/detail/json_ref.hpp \ + ${SRCDIR}/adl_serializer.hpp # main target all: diff --git a/src/adl_serializer.hpp b/src/adl_serializer.hpp new file mode 100644 index 00000000..c2ad371c --- /dev/null +++ b/src/adl_serializer.hpp @@ -0,0 +1,48 @@ +#ifndef NLOHMANN_JSON_ADL_SERIALIZER_HPP +#define NLOHMANN_JSON_ADL_SERIALIZER_HPP + +#include + +#include "detail/conversions/from_json.hpp" +#include "detail/conversions/to_json.hpp" + +namespace nlohmann +{ +template +struct adl_serializer +{ + /*! + @brief convert a JSON value to any value type + + This function is usually called by the `get()` function of the + @ref basic_json class (either explicit or via conversion operators). + + @param[in] j JSON value to read from + @param[in,out] val value to write to + */ + template + static void from_json(BasicJsonType&& j, ValueType& val) noexcept( + noexcept(::nlohmann::from_json(std::forward(j), val))) + { + ::nlohmann::from_json(std::forward(j), val); + } + + /*! + @brief convert any value type to a JSON value + + This function is usually called by the constructors of the @ref basic_json + class. + + @param[in,out] j JSON value to write to + @param[in] val value to read from + */ + template + static void to_json(BasicJsonType& j, ValueType&& val) noexcept( + noexcept(::nlohmann::to_json(j, std::forward(val)))) + { + ::nlohmann::to_json(j, std::forward(val)); + } +}; +} + +#endif diff --git a/src/json.hpp b/src/json.hpp index 32051d7e..4eb7ec79 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -70,6 +70,7 @@ SOFTWARE. #include "detail/parsing/binary_writer.hpp" #include "detail/serializer.hpp" #include "detail/json_ref.hpp" +#include "adl_serializer.hpp" /*! @brief namespace for Niels Lohmann @@ -78,42 +79,6 @@ SOFTWARE. */ namespace nlohmann { -template -struct adl_serializer -{ - /*! - @brief convert a JSON value to any value type - - This function is usually called by the `get()` function of the - @ref basic_json class (either explicit or via conversion operators). - - @param[in] j JSON value to read from - @param[in,out] val value to write to - */ - template - static void from_json(BasicJsonType&& j, ValueType& val) noexcept( - noexcept(::nlohmann::from_json(std::forward(j), val))) - { - ::nlohmann::from_json(std::forward(j), val); - } - - /*! - @brief convert any value type to a JSON value - - This function is usually called by the constructors of the @ref basic_json - class. - - @param[in,out] j JSON value to write to - @param[in] val value to read from - */ - template - static void to_json(BasicJsonType& j, ValueType&& val) noexcept( - noexcept(::nlohmann::to_json(j, std::forward(val)))) - { - ::nlohmann::to_json(j, std::forward(val)); - } -}; - class json_pointer { /// allow basic_json to access private members @@ -7969,7 +7934,6 @@ inline bool operator!=(json_pointer const& lhs, json_pointer const& rhs) noexcep } } // namespace nlohmann - /////////////////////// // nonmember support // /////////////////////// From 57d822b6e20b1d7c96e535a37511de56df3d3679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 19:28:01 +0200 Subject: [PATCH 030/106] add missing includes, put back include comments --- src/detail/conversions/from_json.hpp | 18 +++++++------ src/detail/conversions/to_json.hpp | 10 +++++--- src/detail/iterators/iter_impl.hpp | 9 +++++-- src/detail/iterators/iteration_proxy.hpp | 6 +++-- .../iterators/json_reverse_iterator.hpp | 6 ++--- src/detail/iterators/primitive_iterator.hpp | 7 +++--- src/detail/macro_scope.hpp | 2 ++ src/detail/meta.hpp | 9 ++++--- src/detail/parsing/binary_reader.hpp | 22 ++++++++++------ src/detail/parsing/binary_writer.hpp | 10 ++++---- src/detail/parsing/input_adapters.hpp | 19 +++++++++----- src/detail/parsing/lexer.hpp | 12 ++++++--- src/detail/parsing/output_adapters.hpp | 14 ++++++----- src/detail/parsing/parser.hpp | 11 +++++--- src/detail/serializer.hpp | 25 +++++++++++-------- src/detail/value_t.hpp | 5 ++-- src/json.hpp | 21 +++++----------- src/json_fwd.hpp | 4 +-- 18 files changed, 123 insertions(+), 87 deletions(-) diff --git a/src/detail/conversions/from_json.hpp b/src/detail/conversions/from_json.hpp index 471c1320..55925464 100644 --- a/src/detail/conversions/from_json.hpp +++ b/src/detail/conversions/from_json.hpp @@ -1,10 +1,16 @@ #ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP #define NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP -#include -#include -#include -#include +#include // transform +#include // array +#include // and, not +#include // forward_list +#include // inserter, front_inserter, end +#include // string +#include // tuple, make_tuple +#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include // pair, declval +#include // valarray #include "detail/exceptions.hpp" #include "detail/macro_scope.hpp" @@ -15,10 +21,6 @@ namespace nlohmann { namespace detail { -/////////////// -// from_json // -/////////////// - // overloads for basic_json template parameters template::value and diff --git a/src/detail/conversions/to_json.hpp b/src/detail/conversions/to_json.hpp index 0c6d4749..0153b13d 100644 --- a/src/detail/conversions/to_json.hpp +++ b/src/detail/conversions/to_json.hpp @@ -1,9 +1,13 @@ #ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP #define NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP -#include -#include -#include +#include // or, and, not +#include // begin, end +#include // tuple, get +#include // is_same, is_constructible, is_floating_point, is_enum, underlying_type +#include // move, forward, declval, pair +#include // valarray +#include // vector #include "detail/meta.hpp" #include "detail/value_t.hpp" diff --git a/src/detail/iterators/iter_impl.hpp b/src/detail/iterators/iter_impl.hpp index 79b11b33..e11412c6 100644 --- a/src/detail/iterators/iter_impl.hpp +++ b/src/detail/iterators/iter_impl.hpp @@ -1,11 +1,16 @@ #ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP #define NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP -#include -#include +#include // not +#include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next +#include // conditional, is_const, remove_const #include "detail/exceptions.hpp" +#include "detail/iterators/internal_iterator.hpp" +#include "detail/iterators/primitive_iterator.hpp" #include "detail/macro_scope.hpp" +#include "detail/meta.hpp" +#include "detail/value_t.hpp" namespace nlohmann { diff --git a/src/detail/iterators/iteration_proxy.hpp b/src/detail/iterators/iteration_proxy.hpp index 6a13f39d..e4ce84e4 100644 --- a/src/detail/iterators/iteration_proxy.hpp +++ b/src/detail/iterators/iteration_proxy.hpp @@ -1,8 +1,10 @@ #ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP #define NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP -#include -#include +#include // size_t +#include // string, to_string + +#include "detail/value_t.hpp" namespace nlohmann { diff --git a/src/detail/iterators/json_reverse_iterator.hpp b/src/detail/iterators/json_reverse_iterator.hpp index 52862d38..b0f4effe 100644 --- a/src/detail/iterators/json_reverse_iterator.hpp +++ b/src/detail/iterators/json_reverse_iterator.hpp @@ -1,9 +1,9 @@ #ifndef NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP #define NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP -#include -#include -#include +#include // ptrdiff_t +#include // reverse_iterator +#include // declval namespace nlohmann { diff --git a/src/detail/iterators/primitive_iterator.hpp b/src/detail/iterators/primitive_iterator.hpp index 8ebafe0e..c5cd4031 100644 --- a/src/detail/iterators/primitive_iterator.hpp +++ b/src/detail/iterators/primitive_iterator.hpp @@ -1,9 +1,10 @@ #ifndef NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP #define NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP -#include -#include -#include +#include // not +#include // ptrdiff_t +#include // numeric_limits +#include // ostream namespace nlohmann { diff --git a/src/detail/macro_scope.hpp b/src/detail/macro_scope.hpp index b2ac7742..f20cc667 100644 --- a/src/detail/macro_scope.hpp +++ b/src/detail/macro_scope.hpp @@ -1,6 +1,8 @@ #ifndef NLOHMANN_JSON_MACRO_SCOPE_HPP #define NLOHMANN_JSON_MACRO_SCOPE_HPP +#include // not + // This file contains all internal macro definitions // You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them diff --git a/src/detail/meta.hpp b/src/detail/meta.hpp index a9b20443..35705183 100644 --- a/src/detail/meta.hpp +++ b/src/detail/meta.hpp @@ -1,10 +1,11 @@ #ifndef NLOHMANN_JSON_DETAIL_META_HPP #define NLOHMANN_JSON_DETAIL_META_HPP -#include -#include -#include // add_pointer, conditional, decay, enable_if, false_type, integral_constant, is_arithmetic, is_base_of, is_const, is_constructible, is_convertible, is_default_constructible, is_enum, is_floating_point, is_integral, is_nothrow_move_assignable, is_nothrow_move_constructible, is_pointer, is_reference, is_same, is_scalar, is_signed, remove_const, remove_cv, remove_pointer, remove_reference, true_type, underlying_type -#include +#include // not +#include // size_t +#include // numeric_limits +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // declval #include "json_fwd.hpp" #include "detail/macro_scope.hpp" diff --git a/src/detail/parsing/binary_reader.hpp b/src/detail/parsing/binary_reader.hpp index 0d8ce4ad..a1195393 100644 --- a/src/detail/parsing/binary_reader.hpp +++ b/src/detail/parsing/binary_reader.hpp @@ -1,14 +1,20 @@ #ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP #define NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP -#include -#include -#include -#include -#include -#include -#include -#include +#include // generate_n +#include // array +#include // assert +#include // ldexp +#include // size_t +#include // uint8_t, uint16_t, uint32_t, uint64_t +#include // memcpy +#include // setw, setfill +#include // hex +#include // back_inserter +#include // numeric_limits +#include // stringstream +#include // char_traits, string +#include // make_pair, move #include "detail/exceptions.hpp" #include "detail/macro_scope.hpp" diff --git a/src/detail/parsing/binary_writer.hpp b/src/detail/parsing/binary_writer.hpp index 25badd89..59583b9c 100644 --- a/src/detail/parsing/binary_writer.hpp +++ b/src/detail/parsing/binary_writer.hpp @@ -1,11 +1,11 @@ #ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP #define NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP -#include -#include -#include -#include -#include +#include // reverse +#include // array +#include // uint8_t, uint16_t, uint32_t, uint64_t +#include // memcpy +#include // numeric_limits #include "detail/parsing/binary_reader.hpp" #include "detail/parsing/output_adapters.hpp" diff --git a/src/detail/parsing/input_adapters.hpp b/src/detail/parsing/input_adapters.hpp index 17cf5892..7d4f2dee 100644 --- a/src/detail/parsing/input_adapters.hpp +++ b/src/detail/parsing/input_adapters.hpp @@ -1,12 +1,19 @@ #ifndef NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP #define NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP -#include -#include -#include -#include -#include -#include +#include // min +#include // array +#include // assert +#include // size_t +#include // strlen +#include // streamsize, streamoff, streampos +#include // istream +#include // begin, end, iterator_traits, random_access_iterator_tag, distance, next +#include // shared_ptr, make_shared, addressof +#include // accumulate +#include // string, char_traits +#include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer +#include // pair, declval #include "detail/macro_scope.hpp" diff --git a/src/detail/parsing/lexer.hpp b/src/detail/parsing/lexer.hpp index b1232db0..f50b0521 100644 --- a/src/detail/parsing/lexer.hpp +++ b/src/detail/parsing/lexer.hpp @@ -1,9 +1,15 @@ #ifndef NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP #define NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP -#include -#include -#include +#include // localeconv +#include // size_t +#include // strtof, strtod, strtold, strtoll, strtoull +#include // initializer_list +#include // hex, uppercase +#include // setw, setfill +#include // stringstream +#include // char_traits, string +#include // vector #include "detail/macro_scope.hpp" #include "detail/parsing/input_adapters.hpp" diff --git a/src/detail/parsing/output_adapters.hpp b/src/detail/parsing/output_adapters.hpp index 5cbc11b9..71099038 100644 --- a/src/detail/parsing/output_adapters.hpp +++ b/src/detail/parsing/output_adapters.hpp @@ -1,12 +1,14 @@ #ifndef NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP #define NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP -#include -#include -#include -#include -#include -#include +#include // copy +#include // size_t +#include // streamsize +#include // back_inserter +#include // shared_ptr, make_shared +#include // basic_ostream +#include // basic_string +#include // vector namespace nlohmann { diff --git a/src/detail/parsing/parser.hpp b/src/detail/parsing/parser.hpp index c82c2f6d..52a9c4fe 100644 --- a/src/detail/parsing/parser.hpp +++ b/src/detail/parsing/parser.hpp @@ -1,15 +1,18 @@ #ifndef NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP #define NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP -#include -#include -#include -#include +#include // assert +#include // isfinite +#include // uint8_t +#include // function +#include // string +#include // move #include "detail/exceptions.hpp" #include "detail/macro_scope.hpp" #include "detail/parsing/input_adapters.hpp" #include "detail/parsing/lexer.hpp" +#include "detail/value_t.hpp" namespace nlohmann { diff --git a/src/detail/serializer.hpp b/src/detail/serializer.hpp index 955a3eac..0d3303d9 100644 --- a/src/detail/serializer.hpp +++ b/src/detail/serializer.hpp @@ -1,21 +1,24 @@ #ifndef NLOHMANN_JSON_DETAIL_SERIALIZER_HPP #define NLOHMANN_JSON_DETAIL_SERIALIZER_HPP -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include // reverse, remove, fill, find, none_of +#include // array +#include // assert +#include // and, or +#include // localeconv, lconv +#include // labs, isfinite, isnan, signbit +#include // size_t, ptrdiff_t +#include // uint8_t +#include // snprintf +#include // next +#include // numeric_limits +#include // string +#include // is_same #include "detail/macro_scope.hpp" #include "detail/meta.hpp" #include "detail/parsing/output_adapters.hpp" +#include "detail/value_t.hpp" namespace nlohmann { diff --git a/src/detail/value_t.hpp b/src/detail/value_t.hpp index dbfffd47..b96f294b 100644 --- a/src/detail/value_t.hpp +++ b/src/detail/value_t.hpp @@ -1,6 +1,7 @@ #ifndef NLOHMANN_JSON_DETAIL_VALUE_T_HPP #define NLOHMANN_JSON_DETAIL_VALUE_T_HPP +#include // array #include // and #include // size_t #include // uint8_t @@ -37,7 +38,7 @@ value with the default value for a given type @since version 1.0.0 */ -enum class value_t : uint8_t +enum class value_t : std::uint8_t { null, ///< null value object, ///< object (unordered set of name/value pairs) @@ -62,7 +63,7 @@ Returns an ordering that is similar to Python: */ inline bool operator<(const value_t lhs, const value_t rhs) noexcept { - static constexpr std::array order = {{ + static constexpr std::array order = {{ 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */ } diff --git a/src/json.hpp b/src/json.hpp index 4eb7ec79..f4c139e4 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -29,26 +29,17 @@ SOFTWARE. #ifndef NLOHMANN_JSON_HPP #define NLOHMANN_JSON_HPP -#include // all_of, copy, fill, find, for_each, generate_n, none_of, remove, reverse, transform -#include // array +#include // all_of, find, for_each #include // assert #include // and, not, or -#include // lconv, localeconv -#include // isfinite, labs, ldexp, signbit #include // nullptr_t, ptrdiff_t, size_t -#include // abort, strtod, strtof, strtold, strtoul, strtoll, strtoull -#include // memcpy, strlen -#include // forward_list -#include // function, hash, less +#include // hash, less #include // initializer_list -#include // hex -#include // istream, ostream -#include // advance, begin, back_inserter, bidirectional_iterator_tag, distance, end, inserter, iterator, iterator_traits, next, random_access_iterator_tag, reverse_iterator -#include // numeric_limits -#include // locale +#include // istream, ostream +#include // iterator_traits, random_access_iterator_tag #include // accumulate -#include // stringstream -#include // declval, forward, make_pair, move, pair, swap +#include // string, stoi, to_string +#include // declval, forward, move, pair, swap #include "json_fwd.hpp" #include "detail/macro_scope.hpp" diff --git a/src/json_fwd.hpp b/src/json_fwd.hpp index a068da18..f2a6b0f2 100644 --- a/src/json_fwd.hpp +++ b/src/json_fwd.hpp @@ -3,8 +3,8 @@ #include // int64_t, uint64_t #include // map -#include // addressof, allocator, allocator_traits, unique_ptr -#include // getline, stoi, string, to_string +#include // allocator +#include // string #include // vector /*! From 7e4ee23f4078b424dd4eae6b5dfff5f549eb1cf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 14 Aug 2017 20:45:33 +0200 Subject: [PATCH 031/106] add single_header CMake target --- .gitignore | 3 + CMakeLists.txt | 21 +- Makefile | 53 +- single_header/json.hpp | 19067 +++++++++++++++++++++++++++++++++++++++ test/Makefile | 2 +- 5 files changed, 19119 insertions(+), 27 deletions(-) create mode 100644 single_header/json.hpp diff --git a/.gitignore b/.gitignore index 8157f1a9..bfd2e6ee 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,6 @@ benchmarks/files/numbers/*.json cmake-build-debug test/test-* +amalgamate +single_include +third_party/Amalgamate diff --git a/CMakeLists.txt b/CMakeLists.txt index 257bee82..9cbe3501 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,12 @@ cmake_minimum_required(VERSION 3.0.0) ## project(nlohmann_json VERSION 3.0.1 LANGUAGES CXX) +## +## INCLUDE +## +## +include(ExternalProject) + ## ## OPTIONS ## @@ -15,7 +21,7 @@ option(JSON_BuildTests "Build the unit tests when BUILD_TESTING is enabled." ON) ## CONFIGURATION ## set(NLOHMANN_JSON_TARGET_NAME ${PROJECT_NAME}) -set(NLOHMANN_JSON_SOURCE_DIR "src/") +set(NLOHMANN_JSON_SOURCE_DIR "src") set(NLOHMANN_JSON_CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}") set(NLOHMANN_JSON_INCLUDE_INSTALL_DIR "include") set(NLOHMANN_JSON_HEADER_INSTALL_DIR "${NLOHMANN_JSON_INCLUDE_INSTALL_DIR}/nlohmann") @@ -62,6 +68,19 @@ if(BUILD_TESTING AND JSON_BuildTests) add_subdirectory(test) endif() +ExternalProject_Add(amalgamate + GIT_REPOSITORY "https://github.com/theodelrieu/Amalgamate" + CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}" +) + +# There is no way to tell amalgamate to force-write the output file even if it already exists... +add_custom_target(single_header ALL rm -f "${CMAKE_SOURCE_DIR}/single_header/json.hpp" + COMMENT "Amalgamating json.hpp..." + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/${NLOHMANN_JSON_SOURCE_DIR} + DEPENDS amalgamate + COMMAND "${CMAKE_BINARY_DIR}/bin/amalgamate" -w '*.hpp' -i . json.hpp "${CMAKE_SOURCE_DIR}/single_header/json.hpp" +) + ## ## INSTALL ## install header files, generate and install cmake config files for find_package() diff --git a/Makefile b/Makefile index 289080c7..8165aa9f 100644 --- a/Makefile +++ b/Makefile @@ -1,29 +1,32 @@ .PHONY: pretty clean ChangeLog.md -SRCDIR = src -SRCS = ${SRCDIR}/json.hpp \ - ${SRCDIR}/json_fwd.hpp \ - ${SRCDIR}/detail/macro_scope.hpp \ - ${SRCDIR}/detail/macro_unscope.hpp \ - ${SRCDIR}/detail/meta.hpp \ - ${SRCDIR}/detail/exceptions.hpp \ - ${SRCDIR}/detail/value_t.hpp \ - ${SRCDIR}/detail/conversions/from_json.hpp \ - ${SRCDIR}/detail/conversions/to_json.hpp \ - ${SRCDIR}/detail/parsing/input_adapters.hpp \ - ${SRCDIR}/detail/parsing/lexer.hpp \ - ${SRCDIR}/detail/parsing/parser.hpp \ - ${SRCDIR}/detail/iterators/primitive_iterator.hpp \ - ${SRCDIR}/detail/iterators/internal_iterator.hpp \ - ${SRCDIR}/detail/iterators/iter_impl.hpp \ - ${SRCDIR}/detail/iterators/iteration_proxy.hpp \ - ${SRCDIR}/detail/iterators/json_reverse_iterator.hpp \ - ${SRCDIR}/detail/parsing/output_adapters.hpp \ - ${SRCDIR}/detail/parsing/binary_reader.hpp \ - ${SRCDIR}/detail/parsing/binary_writer.hpp \ - ${SRCDIR}/detail/serializer.hpp \ - ${SRCDIR}/detail/json_ref.hpp \ - ${SRCDIR}/adl_serializer.hpp +SRCDIR = ./src +SRCS = $(SRCDIR)/json.hpp \ + $(SRCDIR)/json_fwd.hpp \ + $(SRCDIR)/detail/macro_scope.hpp \ + $(SRCDIR)/detail/macro_unscope.hpp \ + $(SRCDIR)/detail/meta.hpp \ + $(SRCDIR)/detail/exceptions.hpp \ + $(SRCDIR)/detail/value_t.hpp \ + $(SRCDIR)/detail/conversions/from_json.hpp \ + $(SRCDIR)/detail/conversions/to_json.hpp \ + $(SRCDIR)/detail/parsing/input_adapters.hpp \ + $(SRCDIR)/detail/parsing/lexer.hpp \ + $(SRCDIR)/detail/parsing/parser.hpp \ + $(SRCDIR)/detail/iterators/primitive_iterator.hpp \ + $(SRCDIR)/detail/iterators/internal_iterator.hpp \ + $(SRCDIR)/detail/iterators/iter_impl.hpp \ + $(SRCDIR)/detail/iterators/iteration_proxy.hpp \ + $(SRCDIR)/detail/iterators/json_reverse_iterator.hpp \ + $(SRCDIR)/detail/parsing/output_adapters.hpp \ + $(SRCDIR)/detail/parsing/binary_reader.hpp \ + $(SRCDIR)/detail/parsing/binary_writer.hpp \ + $(SRCDIR)/detail/serializer.hpp \ + $(SRCDIR)/detail/json_ref.hpp \ + $(SRCDIR)/adl_serializer.hpp + +UNAME = $(shell uname) +CXX=clang++ # main target all: @@ -42,7 +45,6 @@ all: @echo "pedantic_gcc - run GCC with maximal warning flags" @echo "pretty - beautify code with Artistic Style" - ########################################################################## # unit tests ########################################################################## @@ -247,6 +249,7 @@ pretty: $(SRCS) test/src/*.cpp \ benchmarks/src/benchmarks.cpp doc/examples/*.cpp + ########################################################################## # changelog ########################################################################## diff --git a/single_header/json.hpp b/single_header/json.hpp new file mode 100644 index 00000000..e6fe5fc1 --- /dev/null +++ b/single_header/json.hpp @@ -0,0 +1,19067 @@ +/* + __ _____ _____ _____ + __| | __| | | | JSON for Modern C++ +| | |__ | | | | | | version 3.0.0 +|_____|_____|_____|_|___| https://github.com/nlohmann/json + +Licensed under the MIT License . +Copyright (c) 2013-2017 Niels Lohmann . + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#ifndef NLOHMANN_JSON_HPP +#define NLOHMANN_JSON_HPP + +#include // all_of, find, for_each +#include // assert +#include // and, not, or +#include // nullptr_t, ptrdiff_t, size_t +#include // hash, less +#include // initializer_list +#include // istream, ostream +#include // iterator_traits, random_access_iterator_tag +#include // accumulate +#include // string, stoi, to_string +#include // declval, forward, move, pair, swap + + +/*** Start of inlined file: json_fwd.hpp ***/ +#ifndef NLOHMANN_JSON_FWD_HPP +#define NLOHMANN_JSON_FWD_HPP + +#include // int64_t, uint64_t +#include // map +#include // allocator +#include // string +#include // vector + +/*! +@brief namespace for Niels Lohmann +@see https://github.com/nlohmann +@since version 1.0.0 +*/ +namespace nlohmann +{ +/*! +@brief default JSONSerializer template argument + +This serializer ignores the template arguments and uses ADL +([argument-dependent lookup](http://en.cppreference.com/w/cpp/language/adl)) +for serialization. +*/ +template +struct adl_serializer; + +template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer> +class basic_json; + +/*! +@brief JSON Pointer + +A JSON pointer defines a string syntax for identifying a specific value +within a JSON document. It can be used with functions `at` and +`operator[]`. Furthermore, JSON pointers are the base for JSON patches. + +@sa [RFC 6901](https://tools.ietf.org/html/rfc6901) + +@since version 2.0.0 +*/ +class json_pointer; + +/*! +@brief default JSON class + +This type is the default specialization of the @ref basic_json class which +uses the standard template types. + +@since version 1.0.0 +*/ +using json = basic_json<>; +} + +#endif + +/*** End of inlined file: json_fwd.hpp ***/ + + +/*** Start of inlined file: macro_scope.hpp ***/ +#ifndef NLOHMANN_JSON_MACRO_SCOPE_HPP +#define NLOHMANN_JSON_MACRO_SCOPE_HPP + +#include // not + +// This file contains all internal macro definitions +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// exclude unsupported compilers +#if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif +#elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40900 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif +#endif + +// disable float-equal warnings on GCC/clang +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wfloat-equal" +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdocumentation" +#endif + +// allow for portable deprecation warnings +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define JSON_DEPRECATED __attribute__((deprecated)) +#elif defined(_MSC_VER) + #define JSON_DEPRECATED __declspec(deprecated) +#else + #define JSON_DEPRECATED +#endif + +// allow to disable exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) +#else + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) +#endif + +// manual branch prediction +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define JSON_LIKELY(x) __builtin_expect(!!(x), 1) + #define JSON_UNLIKELY(x) __builtin_expect(!!(x), 0) +#else + #define JSON_LIKELY(x) x + #define JSON_UNLIKELY(x) x +#endif + +// C++ language standard detection +#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 +#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 +#endif + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +/*! +@brief Helper to determine whether there's a key_type for T. + +This helper is used to tell associative containers apart from other containers +such as sequence containers. For instance, `std::map` passes the test as it +contains a `mapped_type`, whereas `std::vector` fails the test. + +@sa http://stackoverflow.com/a/7728728/266378 +@since version 1.0.0, overworked in version 2.0.6 +*/ +#define NLOHMANN_JSON_HAS_HELPER(type) \ + template struct has_##type { \ + private: \ + template \ + static int detect(U &&); \ + static void detect(...); \ + public: \ + static constexpr bool value = \ + std::is_integral()))>::value; \ + } + +#endif + +/*** End of inlined file: macro_scope.hpp ***/ + + +/*** Start of inlined file: meta.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_META_HPP +#define NLOHMANN_JSON_DETAIL_META_HPP + +#include // not +#include // size_t +#include // numeric_limits +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // declval + + +/*** Start of inlined file: json_fwd.hpp ***/ +#ifndef NLOHMANN_JSON_FWD_HPP +#define NLOHMANN_JSON_FWD_HPP + +#include // int64_t, uint64_t +#include // map +#include // allocator +#include // string +#include // vector + +/*! +@brief namespace for Niels Lohmann +@see https://github.com/nlohmann +@since version 1.0.0 +*/ +namespace nlohmann +{ +/*! +@brief default JSONSerializer template argument + +This serializer ignores the template arguments and uses ADL +([argument-dependent lookup](http://en.cppreference.com/w/cpp/language/adl)) +for serialization. +*/ +template +struct adl_serializer; + +template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer> +class basic_json; + +/*! +@brief JSON Pointer + +A JSON pointer defines a string syntax for identifying a specific value +within a JSON document. It can be used with functions `at` and +`operator[]`. Furthermore, JSON pointers are the base for JSON patches. + +@sa [RFC 6901](https://tools.ietf.org/html/rfc6901) + +@since version 2.0.0 +*/ +class json_pointer; + +/*! +@brief default JSON class + +This type is the default specialization of the @ref basic_json class which +uses the standard template types. + +@since version 1.0.0 +*/ +using json = basic_json<>; +} + +#endif + +/*** End of inlined file: json_fwd.hpp ***/ + + +/*** Start of inlined file: macro_scope.hpp ***/ +#ifndef NLOHMANN_JSON_MACRO_SCOPE_HPP +#define NLOHMANN_JSON_MACRO_SCOPE_HPP + +#include // not + +// This file contains all internal macro definitions +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// exclude unsupported compilers +#if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif +#elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40900 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif +#endif + +// disable float-equal warnings on GCC/clang +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wfloat-equal" +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdocumentation" +#endif + +// allow for portable deprecation warnings +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define JSON_DEPRECATED __attribute__((deprecated)) +#elif defined(_MSC_VER) + #define JSON_DEPRECATED __declspec(deprecated) +#else + #define JSON_DEPRECATED +#endif + +// allow to disable exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) +#else + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) +#endif + +// manual branch prediction +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define JSON_LIKELY(x) __builtin_expect(!!(x), 1) + #define JSON_UNLIKELY(x) __builtin_expect(!!(x), 0) +#else + #define JSON_LIKELY(x) x + #define JSON_UNLIKELY(x) x +#endif + +// C++ language standard detection +#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 +#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 +#endif + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +/*! +@brief Helper to determine whether there's a key_type for T. + +This helper is used to tell associative containers apart from other containers +such as sequence containers. For instance, `std::map` passes the test as it +contains a `mapped_type`, whereas `std::vector` fails the test. + +@sa http://stackoverflow.com/a/7728728/266378 +@since version 1.0.0, overworked in version 2.0.6 +*/ +#define NLOHMANN_JSON_HAS_HELPER(type) \ + template struct has_##type { \ + private: \ + template \ + static int detect(U &&); \ + static void detect(...); \ + public: \ + static constexpr bool value = \ + std::is_integral()))>::value; \ + } + +#endif + +/*** End of inlined file: macro_scope.hpp ***/ + +namespace nlohmann +{ +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ +///////////// +// helpers // +///////////// + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +template +using uncvref_t = typename std::remove_cv::type>::type; + +// implementation of C++14 index_sequence and affiliates +// source: https://stackoverflow.com/a/32223343 +template +struct index_sequence +{ + using type = index_sequence; + using value_type = std::size_t; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +template +struct merge_and_renumber; + +template +struct merge_and_renumber, index_sequence> + : index_sequence < I1..., (sizeof...(I1) + I2)... > {}; + +template +struct make_index_sequence + : merge_and_renumber < typename make_index_sequence < N / 2 >::type, + typename make_index_sequence < N - N / 2 >::type > {}; + +template<> struct make_index_sequence<0> : index_sequence<> {}; +template<> struct make_index_sequence<1> : index_sequence<0> {}; + +template +using index_sequence_for = make_index_sequence; + +/* +Implementation of two C++17 constructs: conjunction, negation. This is needed +to avoid evaluating all the traits in a condition + +For example: not std::is_same::value and has_value_type::value +will not compile when T = void (on MSVC at least). Whereas +conjunction>, has_value_type>::value will +stop evaluating if negation<...>::value == false + +Please note that those constructs must be used with caution, since symbols can +become very long quickly (which can slow down compilation and cause MSVC +internal compiler errors). Only use it when you have to (see example ahead). +*/ +template struct conjunction : std::true_type {}; +template struct conjunction : B1 {}; +template +struct conjunction : std::conditional, B1>::type {}; + +template struct negation : std::integral_constant {}; + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +//////////////////////// +// has_/is_ functions // +//////////////////////// + +NLOHMANN_JSON_HAS_HELPER(mapped_type); +NLOHMANN_JSON_HAS_HELPER(key_type); +NLOHMANN_JSON_HAS_HELPER(value_type); +NLOHMANN_JSON_HAS_HELPER(iterator); + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl +{ + static constexpr auto value = + std::is_constructible::value and + std::is_constructible::value; +}; + +template +struct is_compatible_object_type +{ + static auto constexpr value = is_compatible_object_type_impl < + conjunction>, + has_mapped_type, + has_key_type>::value, + typename BasicJsonType::object_t, CompatibleObjectType >::value; +}; + +template +struct is_basic_json_nested_type +{ + static auto constexpr value = std::is_same::value or + std::is_same::value or + std::is_same::value or + std::is_same::value; +}; + +template +struct is_compatible_array_type +{ + static auto constexpr value = + conjunction>, + negation>, + negation>, + negation>, + has_value_type, + has_iterator>::value; +}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + std::is_constructible::value and + CompatibleLimits::is_integer and + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type +{ + static constexpr auto value = + is_compatible_integer_type_impl < + std::is_integral::value and + not std::is_same::value, + RealIntegerType, CompatibleNumberIntegerType > ::value; +}; + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json +{ + private: + // also check the return type of from_json + template::from_json( + std::declval(), std::declval()))>::value>> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json +{ + private: + template < + typename U, + typename = enable_if_t::from_json(std::declval()))>::value >> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +template +struct has_to_json +{ + private: + template::to_json( + std::declval(), std::declval()))> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// taken from ranges-v3 +template +struct static_const +{ + static constexpr T value{}; +}; + +template +constexpr T static_const::value; +} +} + +#endif + +/*** End of inlined file: meta.hpp ***/ + + +/*** Start of inlined file: exceptions.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP +#define NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP + +#include // exception +#include // runtime_error +#include // to_string + +namespace nlohmann +{ +namespace detail +{ +//////////////// +// exceptions // +//////////////// + +/*! +@brief general exception of the @ref basic_json class + +This class is an extension of `std::exception` objects with a member @a id for +exception ids. It is used as the base class for all exceptions thrown by the +@ref basic_json class. This class can hence be used as "wildcard" to catch +exceptions. + +Subclasses: +- @ref parse_error for exceptions indicating a parse error +- @ref invalid_iterator for exceptions indicating errors with iterators +- @ref type_error for exceptions indicating executing a member function with + a wrong type +- @ref out_of_range for exceptions indicating access out of the defined range +- @ref other_error for exceptions indicating other library errors + +@internal +@note To have nothrow-copy-constructible exceptions, we internally use + `std::runtime_error` which can cope with arbitrary-length error messages. + Intermediate strings are built with static functions and then passed to + the actual constructor. +@endinternal + +@liveexample{The following code shows how arbitrary library exceptions can be +caught.,exception} + +@since version 3.0.0 +*/ +class exception : public std::exception +{ + public: + /// returns the explanatory string + const char* what() const noexcept override + { + return m.what(); + } + + /// the id of the exception + const int id; + + protected: + exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} + + static std::string name(const std::string& ename, int id_) + { + return "[json.exception." + ename + "." + std::to_string(id_) + "] "; + } + + private: + /// an exception object as storage for error messages + std::runtime_error m; +}; + +/*! +@brief exception indicating a parse error + +This exception is thrown by the library when a parse error occurs. Parse errors +can occur during the deserialization of JSON text, CBOR, MessagePack, as well +as when using JSON Patch. + +Member @a byte holds the byte index of the last read character in the input +file. + +Exceptions have ids 1xx. + +name / id | example message | description +------------------------------ | --------------- | ------------------------- +json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position. +json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point. +json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. +json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects. +json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors. +json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`. +json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character. +json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. +json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number. +json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. +json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. +json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. + +@note For an input with n bytes, 1 is the index of the first character and n+1 + is the index of the terminating null byte or the end of file. This also + holds true when reading a byte vector (CBOR or MessagePack). + +@liveexample{The following code shows how a `parse_error` exception can be +caught.,parse_error} + +@sa @ref exception for the base class of the library exceptions +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class parse_error : public exception +{ + public: + /*! + @brief create a parse error exception + @param[in] id_ the id of the exception + @param[in] byte_ the byte index where the error occurred (or 0 if the + position cannot be determined) + @param[in] what_arg the explanatory string + @return parse_error object + */ + static parse_error create(int id_, std::size_t byte_, const std::string& what_arg) + { + std::string w = exception::name("parse_error", id_) + "parse error" + + (byte_ != 0 ? (" at " + std::to_string(byte_)) : "") + + ": " + what_arg; + return parse_error(id_, byte_, w.c_str()); + } + + /*! + @brief byte index of the parse error + + The byte index of the last read character in the input file. + + @note For an input with n bytes, 1 is the index of the first character and + n+1 is the index of the terminating null byte or the end of file. + This also holds true when reading a byte vector (CBOR or MessagePack). + */ + const std::size_t byte; + + private: + parse_error(int id_, std::size_t byte_, const char* what_arg) + : exception(id_, what_arg), byte(byte_) {} +}; + +/*! +@brief exception indicating errors with iterators + +This exception is thrown if iterators passed to a library function do not match +the expected semantics. + +Exceptions have ids 2xx. + +name / id | example message | description +----------------------------------- | --------------- | ------------------------- +json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. +json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion. +json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from. +json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid. +json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid. +json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range. +json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key. +json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. +json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. +json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. +json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to. +json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container. +json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered. +json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin(). + +@liveexample{The following code shows how an `invalid_iterator` exception can be +caught.,invalid_iterator} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class invalid_iterator : public exception +{ + public: + static invalid_iterator create(int id_, const std::string& what_arg) + { + std::string w = exception::name("invalid_iterator", id_) + what_arg; + return invalid_iterator(id_, w.c_str()); + } + + private: + invalid_iterator(int id_, const char* what_arg) + : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating executing a member function with a wrong type + +This exception is thrown in case of a type error; that is, a library function is +executed on a JSON value whose type does not match the expected semantics. + +Exceptions have ids 3xx. + +name / id | example message | description +----------------------------- | --------------- | ------------------------- +json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead. +json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types. +json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t&. +json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types. +json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types. +json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types. +json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types. +json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types. +json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types. +json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types. +json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types. +json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types. +json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined. +json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers. +json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive. +json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. | + +@liveexample{The following code shows how a `type_error` exception can be +caught.,type_error} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class type_error : public exception +{ + public: + static type_error create(int id_, const std::string& what_arg) + { + std::string w = exception::name("type_error", id_) + what_arg; + return type_error(id_, w.c_str()); + } + + private: + type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating access out of the defined range + +This exception is thrown in case a library function is called on an input +parameter that exceeds the expected range, for instance in case of array +indices or nonexisting object keys. + +Exceptions have ids 4xx. + +name / id | example message | description +------------------------------- | --------------- | ------------------------- +json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1. +json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it. +json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object. +json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. +json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. +json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. + +@liveexample{The following code shows how an `out_of_range` exception can be +caught.,out_of_range} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class out_of_range : public exception +{ + public: + static out_of_range create(int id_, const std::string& what_arg) + { + std::string w = exception::name("out_of_range", id_) + what_arg; + return out_of_range(id_, w.c_str()); + } + + private: + out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating other library errors + +This exception is thrown in case of errors that cannot be classified with the +other exception types. + +Exceptions have ids 5xx. + +name / id | example message | description +------------------------------ | --------------- | ------------------------- +json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed. + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range + +@liveexample{The following code shows how an `other_error` exception can be +caught.,other_error} + +@since version 3.0.0 +*/ +class other_error : public exception +{ + public: + static other_error create(int id_, const std::string& what_arg) + { + std::string w = exception::name("other_error", id_) + what_arg; + return other_error(id_, w.c_str()); + } + + private: + other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; +} +} + +#endif + +/*** End of inlined file: exceptions.hpp ***/ + + +/*** Start of inlined file: value_t.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_VALUE_T_HPP +#define NLOHMANN_JSON_DETAIL_VALUE_T_HPP + +#include // array +#include // and +#include // size_t +#include // uint8_t + +namespace nlohmann +{ +namespace detail +{ +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : std::uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + discarded ///< discarded by the the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string +- furthermore, each type is not smaller than itself +- discarded values are not comparable + +@since version 1.0.0 +*/ +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + static constexpr std::array order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); + return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index]; +} +} +} + +#endif + +/*** End of inlined file: value_t.hpp ***/ + + +/*** Start of inlined file: from_json.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP +#define NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP + +#include // transform +#include // array +#include // and, not +#include // forward_list +#include // inserter, front_inserter, end +#include // string +#include // tuple, make_tuple +#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include // pair, declval +#include // valarray + + +/*** Start of inlined file: exceptions.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP +#define NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP + +#include // exception +#include // runtime_error +#include // to_string + +namespace nlohmann +{ +namespace detail +{ +//////////////// +// exceptions // +//////////////// + +/*! +@brief general exception of the @ref basic_json class + +This class is an extension of `std::exception` objects with a member @a id for +exception ids. It is used as the base class for all exceptions thrown by the +@ref basic_json class. This class can hence be used as "wildcard" to catch +exceptions. + +Subclasses: +- @ref parse_error for exceptions indicating a parse error +- @ref invalid_iterator for exceptions indicating errors with iterators +- @ref type_error for exceptions indicating executing a member function with + a wrong type +- @ref out_of_range for exceptions indicating access out of the defined range +- @ref other_error for exceptions indicating other library errors + +@internal +@note To have nothrow-copy-constructible exceptions, we internally use + `std::runtime_error` which can cope with arbitrary-length error messages. + Intermediate strings are built with static functions and then passed to + the actual constructor. +@endinternal + +@liveexample{The following code shows how arbitrary library exceptions can be +caught.,exception} + +@since version 3.0.0 +*/ +class exception : public std::exception +{ + public: + /// returns the explanatory string + const char* what() const noexcept override + { + return m.what(); + } + + /// the id of the exception + const int id; + + protected: + exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} + + static std::string name(const std::string& ename, int id_) + { + return "[json.exception." + ename + "." + std::to_string(id_) + "] "; + } + + private: + /// an exception object as storage for error messages + std::runtime_error m; +}; + +/*! +@brief exception indicating a parse error + +This exception is thrown by the library when a parse error occurs. Parse errors +can occur during the deserialization of JSON text, CBOR, MessagePack, as well +as when using JSON Patch. + +Member @a byte holds the byte index of the last read character in the input +file. + +Exceptions have ids 1xx. + +name / id | example message | description +------------------------------ | --------------- | ------------------------- +json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position. +json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point. +json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. +json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects. +json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors. +json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`. +json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character. +json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. +json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number. +json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. +json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. +json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. + +@note For an input with n bytes, 1 is the index of the first character and n+1 + is the index of the terminating null byte or the end of file. This also + holds true when reading a byte vector (CBOR or MessagePack). + +@liveexample{The following code shows how a `parse_error` exception can be +caught.,parse_error} + +@sa @ref exception for the base class of the library exceptions +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class parse_error : public exception +{ + public: + /*! + @brief create a parse error exception + @param[in] id_ the id of the exception + @param[in] byte_ the byte index where the error occurred (or 0 if the + position cannot be determined) + @param[in] what_arg the explanatory string + @return parse_error object + */ + static parse_error create(int id_, std::size_t byte_, const std::string& what_arg) + { + std::string w = exception::name("parse_error", id_) + "parse error" + + (byte_ != 0 ? (" at " + std::to_string(byte_)) : "") + + ": " + what_arg; + return parse_error(id_, byte_, w.c_str()); + } + + /*! + @brief byte index of the parse error + + The byte index of the last read character in the input file. + + @note For an input with n bytes, 1 is the index of the first character and + n+1 is the index of the terminating null byte or the end of file. + This also holds true when reading a byte vector (CBOR or MessagePack). + */ + const std::size_t byte; + + private: + parse_error(int id_, std::size_t byte_, const char* what_arg) + : exception(id_, what_arg), byte(byte_) {} +}; + +/*! +@brief exception indicating errors with iterators + +This exception is thrown if iterators passed to a library function do not match +the expected semantics. + +Exceptions have ids 2xx. + +name / id | example message | description +----------------------------------- | --------------- | ------------------------- +json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. +json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion. +json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from. +json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid. +json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid. +json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range. +json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key. +json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. +json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. +json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. +json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to. +json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container. +json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered. +json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin(). + +@liveexample{The following code shows how an `invalid_iterator` exception can be +caught.,invalid_iterator} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class invalid_iterator : public exception +{ + public: + static invalid_iterator create(int id_, const std::string& what_arg) + { + std::string w = exception::name("invalid_iterator", id_) + what_arg; + return invalid_iterator(id_, w.c_str()); + } + + private: + invalid_iterator(int id_, const char* what_arg) + : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating executing a member function with a wrong type + +This exception is thrown in case of a type error; that is, a library function is +executed on a JSON value whose type does not match the expected semantics. + +Exceptions have ids 3xx. + +name / id | example message | description +----------------------------- | --------------- | ------------------------- +json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead. +json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types. +json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t&. +json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types. +json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types. +json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types. +json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types. +json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types. +json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types. +json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types. +json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types. +json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types. +json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined. +json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers. +json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive. +json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. | + +@liveexample{The following code shows how a `type_error` exception can be +caught.,type_error} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class type_error : public exception +{ + public: + static type_error create(int id_, const std::string& what_arg) + { + std::string w = exception::name("type_error", id_) + what_arg; + return type_error(id_, w.c_str()); + } + + private: + type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating access out of the defined range + +This exception is thrown in case a library function is called on an input +parameter that exceeds the expected range, for instance in case of array +indices or nonexisting object keys. + +Exceptions have ids 4xx. + +name / id | example message | description +------------------------------- | --------------- | ------------------------- +json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1. +json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it. +json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object. +json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. +json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. +json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. + +@liveexample{The following code shows how an `out_of_range` exception can be +caught.,out_of_range} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class out_of_range : public exception +{ + public: + static out_of_range create(int id_, const std::string& what_arg) + { + std::string w = exception::name("out_of_range", id_) + what_arg; + return out_of_range(id_, w.c_str()); + } + + private: + out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating other library errors + +This exception is thrown in case of errors that cannot be classified with the +other exception types. + +Exceptions have ids 5xx. + +name / id | example message | description +------------------------------ | --------------- | ------------------------- +json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed. + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range + +@liveexample{The following code shows how an `other_error` exception can be +caught.,other_error} + +@since version 3.0.0 +*/ +class other_error : public exception +{ + public: + static other_error create(int id_, const std::string& what_arg) + { + std::string w = exception::name("other_error", id_) + what_arg; + return other_error(id_, w.c_str()); + } + + private: + other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; +} +} + +#endif + +/*** End of inlined file: exceptions.hpp ***/ + + +/*** Start of inlined file: meta.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_META_HPP +#define NLOHMANN_JSON_DETAIL_META_HPP + +#include // not +#include // size_t +#include // numeric_limits +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // declval + +namespace nlohmann +{ +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ +///////////// +// helpers // +///////////// + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +template +using uncvref_t = typename std::remove_cv::type>::type; + +// implementation of C++14 index_sequence and affiliates +// source: https://stackoverflow.com/a/32223343 +template +struct index_sequence +{ + using type = index_sequence; + using value_type = std::size_t; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +template +struct merge_and_renumber; + +template +struct merge_and_renumber, index_sequence> + : index_sequence < I1..., (sizeof...(I1) + I2)... > {}; + +template +struct make_index_sequence + : merge_and_renumber < typename make_index_sequence < N / 2 >::type, + typename make_index_sequence < N - N / 2 >::type > {}; + +template<> struct make_index_sequence<0> : index_sequence<> {}; +template<> struct make_index_sequence<1> : index_sequence<0> {}; + +template +using index_sequence_for = make_index_sequence; + +/* +Implementation of two C++17 constructs: conjunction, negation. This is needed +to avoid evaluating all the traits in a condition + +For example: not std::is_same::value and has_value_type::value +will not compile when T = void (on MSVC at least). Whereas +conjunction>, has_value_type>::value will +stop evaluating if negation<...>::value == false + +Please note that those constructs must be used with caution, since symbols can +become very long quickly (which can slow down compilation and cause MSVC +internal compiler errors). Only use it when you have to (see example ahead). +*/ +template struct conjunction : std::true_type {}; +template struct conjunction : B1 {}; +template +struct conjunction : std::conditional, B1>::type {}; + +template struct negation : std::integral_constant {}; + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +//////////////////////// +// has_/is_ functions // +//////////////////////// + +NLOHMANN_JSON_HAS_HELPER(mapped_type); +NLOHMANN_JSON_HAS_HELPER(key_type); +NLOHMANN_JSON_HAS_HELPER(value_type); +NLOHMANN_JSON_HAS_HELPER(iterator); + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl +{ + static constexpr auto value = + std::is_constructible::value and + std::is_constructible::value; +}; + +template +struct is_compatible_object_type +{ + static auto constexpr value = is_compatible_object_type_impl < + conjunction>, + has_mapped_type, + has_key_type>::value, + typename BasicJsonType::object_t, CompatibleObjectType >::value; +}; + +template +struct is_basic_json_nested_type +{ + static auto constexpr value = std::is_same::value or + std::is_same::value or + std::is_same::value or + std::is_same::value; +}; + +template +struct is_compatible_array_type +{ + static auto constexpr value = + conjunction>, + negation>, + negation>, + negation>, + has_value_type, + has_iterator>::value; +}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + std::is_constructible::value and + CompatibleLimits::is_integer and + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type +{ + static constexpr auto value = + is_compatible_integer_type_impl < + std::is_integral::value and + not std::is_same::value, + RealIntegerType, CompatibleNumberIntegerType > ::value; +}; + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json +{ + private: + // also check the return type of from_json + template::from_json( + std::declval(), std::declval()))>::value>> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json +{ + private: + template < + typename U, + typename = enable_if_t::from_json(std::declval()))>::value >> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +template +struct has_to_json +{ + private: + template::to_json( + std::declval(), std::declval()))> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// taken from ranges-v3 +template +struct static_const +{ + static constexpr T value{}; +}; + +template +constexpr T static_const::value; +} +} + +#endif + +/*** End of inlined file: meta.hpp ***/ + + +/*** Start of inlined file: value_t.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_VALUE_T_HPP +#define NLOHMANN_JSON_DETAIL_VALUE_T_HPP + +#include // array +#include // and +#include // size_t +#include // uint8_t + +namespace nlohmann +{ +namespace detail +{ +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : std::uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + discarded ///< discarded by the the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string +- furthermore, each type is not smaller than itself +- discarded values are not comparable + +@since version 1.0.0 +*/ +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + static constexpr std::array order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); + return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index]; +} +} +} + +#endif + +/*** End of inlined file: value_t.hpp ***/ + +namespace nlohmann +{ +namespace detail +{ +// overloads for basic_json template parameters +template::value and + not std::is_same::value, + int> = 0> +void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) +{ + switch (static_cast(j)) + { + case value_t::number_unsigned: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_integer: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_float: + { + val = static_cast(*j.template get_ptr()); + break; + } + + default: + JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); + } +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) +{ + if (JSON_UNLIKELY(not j.is_boolean())) + { + JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name()))); + } + b = *j.template get_ptr(); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) +{ + if (JSON_UNLIKELY(not j.is_string())) + { + JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()))); + } + s = *j.template get_ptr(); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) +{ + get_arithmetic_value(j, val); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) +{ + get_arithmetic_value(j, val); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) +{ + get_arithmetic_value(j, val); +} + +template::value, int> = 0> +void from_json(const BasicJsonType& j, EnumType& e) +{ + typename std::underlying_type::type val; + get_arithmetic_value(j, val); + e = static_cast(val); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + arr = *j.template get_ptr(); +} + +// forward_list doesn't have an insert method +template::value, int> = 0> +void from_json(const BasicJsonType& j, std::forward_list& l) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + std::transform(j.rbegin(), j.rend(), + std::front_inserter(l), [](const BasicJsonType & i) + { + return i.template get(); + }); +} + +// valarray doesn't have an insert method +template::value, int> = 0> +void from_json(const BasicJsonType& j, std::valarray& l) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + l.resize(j.size()); + std::copy(j.m_value.array->begin(), j.m_value.array->end(), std::begin(l)); +} + +template +void from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<0> /*unused*/) +{ + using std::end; + + std::transform(j.begin(), j.end(), + std::inserter(arr, end(arr)), [](const BasicJsonType & i) + { + // get() returns *this, this won't call a from_json + // method when value_type is BasicJsonType + return i.template get(); + }); +} + +template +auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<1> /*unused*/) +-> decltype( + arr.reserve(std::declval()), + void()) +{ + using std::end; + + arr.reserve(j.size()); + std::transform(j.begin(), j.end(), + std::inserter(arr, end(arr)), [](const BasicJsonType & i) + { + // get() returns *this, this won't call a from_json + // method when value_type is BasicJsonType + return i.template get(); + }); +} + +template +void from_json_array_impl(const BasicJsonType& j, std::array& arr, priority_tag<2> /*unused*/) +{ + for (std::size_t i = 0; i < N; ++i) + { + arr[i] = j.at(i).template get(); + } +} + +template::value and + std::is_convertible::value and + not std::is_same::value, int> = 0> +void from_json(const BasicJsonType& j, CompatibleArrayType& arr) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + + from_json_array_impl(j, arr, priority_tag<2> {}); +} + +template::value, int> = 0> +void from_json(const BasicJsonType& j, CompatibleObjectType& obj) +{ + if (JSON_UNLIKELY(not j.is_object())) + { + JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name()))); + } + + auto inner_object = j.template get_ptr(); + using value_type = typename CompatibleObjectType::value_type; + std::transform( + inner_object->begin(), inner_object->end(), + std::inserter(obj, obj.begin()), + [](typename BasicJsonType::object_t::value_type const & p) + { + return value_type(p.first, p.second.template get()); + }); +} + +// overload for arithmetic types, not chosen for basic_json template arguments +// (BooleanType, etc..); note: Is it really necessary to provide explicit +// overloads for boolean_t etc. in case of a custom BooleanType which is not +// an arithmetic type? +template::value and + not std::is_same::value and + not std::is_same::value and + not std::is_same::value and + not std::is_same::value, + int> = 0> +void from_json(const BasicJsonType& j, ArithmeticType& val) +{ + switch (static_cast(j)) + { + case value_t::number_unsigned: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_integer: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_float: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::boolean: + { + val = static_cast(*j.template get_ptr()); + break; + } + + default: + JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); + } +} + +template +void from_json(const BasicJsonType& j, std::pair& p) +{ + p = {j.at(0).template get(), j.at(1).template get()}; +} + +template +void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_sequence) +{ + t = std::make_tuple(j.at(Idx).template get::type>()...); +} + +template +void from_json(const BasicJsonType& j, std::tuple& t) +{ + from_json_tuple_impl(j, t, index_sequence_for {}); +} + +struct from_json_fn +{ + private: + template + auto call(const BasicJsonType& j, T& val, priority_tag<1> /*unused*/) const + noexcept(noexcept(from_json(j, val))) + -> decltype(from_json(j, val), void()) + { + return from_json(j, val); + } + + template + void call(const BasicJsonType& /*unused*/, T& /*unused*/, priority_tag<0> /*unused*/) const noexcept + { + static_assert(sizeof(BasicJsonType) == 0, + "could not find from_json() method in T's namespace"); +#ifdef _MSC_VER + // MSVC does not show a stacktrace for the above assert + using decayed = uncvref_t; + static_assert(sizeof(typename decayed::force_msvc_stacktrace) == 0, + "forcing MSVC stacktrace to show which T we're talking about."); +#endif + } + + public: + template + void operator()(const BasicJsonType& j, T& val) const + noexcept(noexcept(std::declval().call(j, val, priority_tag<1> {}))) + { + return call(j, val, priority_tag<1> {}); + } +}; +} + +/// namespace to hold default `from_json` function +/// to see why this is required: +/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html +namespace +{ +constexpr const auto& from_json = detail::static_const::value; +} +} + +#endif + +/*** End of inlined file: from_json.hpp ***/ + + +/*** Start of inlined file: to_json.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP +#define NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP + +#include // or, and, not +#include // begin, end +#include // tuple, get +#include // is_same, is_constructible, is_floating_point, is_enum, underlying_type +#include // move, forward, declval, pair +#include // valarray +#include // vector + +namespace nlohmann +{ +namespace detail +{ +////////////////// +// constructors // +////////////////// + +template struct external_constructor; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept + { + j.m_type = value_t::boolean; + j.m_value = b; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) + { + j.m_type = value_t::string; + j.m_value = s; + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s) + { + j.m_type = value_t::string; + j.m_value = std::move(s); + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept + { + j.m_type = value_t::number_float; + j.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept + { + j.m_type = value_t::number_unsigned; + j.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept + { + j.m_type = value_t::number_integer; + j.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) + { + j.m_type = value_t::array; + j.m_value = arr; + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr) + { + j.m_type = value_t::array; + j.m_value = std::move(arr); + j.assert_invariant(); + } + + template::value, + int> = 0> + static void construct(BasicJsonType& j, const CompatibleArrayType& arr) + { + using std::begin; + using std::end; + j.m_type = value_t::array; + j.m_value.array = j.template create(begin(arr), end(arr)); + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, const std::vector& arr) + { + j.m_type = value_t::array; + j.m_value = value_t::array; + j.m_value.array->reserve(arr.size()); + for (const bool x : arr) + { + j.m_value.array->push_back(x); + } + j.assert_invariant(); + } + + template::value, int> = 0> + static void construct(BasicJsonType& j, const std::valarray& arr) + { + j.m_type = value_t::array; + j.m_value = value_t::array; + j.m_value.array->resize(arr.size()); + std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin()); + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) + { + j.m_type = value_t::object; + j.m_value = obj; + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj) + { + j.m_type = value_t::object; + j.m_value = std::move(obj); + j.assert_invariant(); + } + + template::value, int> = 0> + static void construct(BasicJsonType& j, const CompatibleObjectType& obj) + { + using std::begin; + using std::end; + + j.m_type = value_t::object; + j.m_value.object = j.template create(begin(obj), end(obj)); + j.assert_invariant(); + } +}; + +///////////// +// to_json // +///////////// + +template::value, int> = 0> +void to_json(BasicJsonType& j, T b) noexcept +{ + external_constructor::construct(j, b); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, const CompatibleString& s) +{ + external_constructor::construct(j, s); +} + +template +void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s) +{ + external_constructor::construct(j, std::move(s)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, FloatType val) noexcept +{ + external_constructor::construct(j, static_cast(val)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept +{ + external_constructor::construct(j, static_cast(val)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept +{ + external_constructor::construct(j, static_cast(val)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, EnumType e) noexcept +{ + using underlying_type = typename std::underlying_type::type; + external_constructor::construct(j, static_cast(e)); +} + +template +void to_json(BasicJsonType& j, const std::vector& e) +{ + external_constructor::construct(j, e); +} + +template::value or + std::is_same::value, + int> = 0> +void to_json(BasicJsonType& j, const CompatibleArrayType& arr) +{ + external_constructor::construct(j, arr); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, std::valarray arr) +{ + external_constructor::construct(j, std::move(arr)); +} + +template +void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr) +{ + external_constructor::construct(j, std::move(arr)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, const CompatibleObjectType& obj) +{ + external_constructor::construct(j, obj); +} + +template +void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj) +{ + external_constructor::construct(j, std::move(obj)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, T (&arr)[N]) +{ + external_constructor::construct(j, arr); +} + +template +void to_json(BasicJsonType& j, const std::pair& p) +{ + j = {p.first, p.second}; +} + +template +void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence) +{ + j = {std::get(t)...}; +} + +template +void to_json(BasicJsonType& j, const std::tuple& t) +{ + to_json_tuple_impl(j, t, index_sequence_for {}); +} + +struct to_json_fn +{ + private: + template + auto call(BasicJsonType& j, T&& val, priority_tag<1> /*unused*/) const noexcept(noexcept(to_json(j, std::forward(val)))) + -> decltype(to_json(j, std::forward(val)), void()) + { + return to_json(j, std::forward(val)); + } + + template + void call(BasicJsonType& /*unused*/, T&& /*unused*/, priority_tag<0> /*unused*/) const noexcept + { + static_assert(sizeof(BasicJsonType) == 0, + "could not find to_json() method in T's namespace"); + +#ifdef _MSC_VER + // MSVC does not show a stacktrace for the above assert + using decayed = uncvref_t; + static_assert(sizeof(typename decayed::force_msvc_stacktrace) == 0, + "forcing MSVC stacktrace to show which T we're talking about."); +#endif + } + + public: + template + void operator()(BasicJsonType& j, T&& val) const + noexcept(noexcept(std::declval().call(j, std::forward(val), priority_tag<1> {}))) + { + return call(j, std::forward(val), priority_tag<1> {}); + } +}; +} + +/// namespace to hold default `to_json` function +namespace +{ +constexpr const auto& to_json = detail::static_const::value; +} +} + +#endif + +/*** End of inlined file: to_json.hpp ***/ + + +/*** Start of inlined file: input_adapters.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP + +#include // min +#include // array +#include // assert +#include // size_t +#include // strlen +#include // streamsize, streamoff, streampos +#include // istream +#include // begin, end, iterator_traits, random_access_iterator_tag, distance, next +#include // shared_ptr, make_shared, addressof +#include // accumulate +#include // string, char_traits +#include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer +#include // pair, declval + +namespace nlohmann +{ +namespace detail +{ +//////////////////// +// input adapters // +//////////////////// + +/*! +@brief abstract input adapter interface + +Produces a stream of std::char_traits::int_type characters from a +std::istream, a buffer, or some other input type. Accepts the return of exactly +one non-EOF character for future input. The int_type characters returned +consist of all valid char values as positive values (typically unsigned char), +plus an EOF value outside that range, specified by the value of the function +std::char_traits::eof(). This value is typically -1, but could be any +arbitrary value which is not a valid char value. +*/ +struct input_adapter_protocol +{ + /// get a character [0,255] or std::char_traits::eof(). + virtual std::char_traits::int_type get_character() = 0; + /// restore the last non-eof() character to input + virtual void unget_character() = 0; + virtual ~input_adapter_protocol() = default; +}; + +/// a type to simplify interfaces +using input_adapter_t = std::shared_ptr; + +/*! +Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at +beginning of input. Does not support changing the underlying std::streambuf +in mid-input. Maintains underlying std::istream and std::streambuf to support +subsequent use of standard std::istream operations to process any input +characters following those used in parsing the JSON input. Clears the +std::istream flags; any input errors (e.g., EOF) will be detected by the first +subsequent call for input from the std::istream. +*/ +class input_stream_adapter : public input_adapter_protocol +{ + public: + ~input_stream_adapter() override + { + // clear stream flags; we use underlying streambuf I/O, do not + // maintain ifstream flags + is.clear(); + } + + explicit input_stream_adapter(std::istream& i) + : is(i), sb(*i.rdbuf()) + { + // skip byte order mark + std::char_traits::int_type c; + if ((c = get_character()) == 0xEF) + { + if ((c = get_character()) == 0xBB) + { + if ((c = get_character()) == 0xBF) + { + return; // Ignore BOM + } + else if (c != std::char_traits::eof()) + { + is.unget(); + } + is.putback('\xBB'); + } + else if (c != std::char_traits::eof()) + { + is.unget(); + } + is.putback('\xEF'); + } + else if (c != std::char_traits::eof()) + { + is.unget(); // no byte order mark; process as usual + } + } + + // delete because of pointer members + input_stream_adapter(const input_stream_adapter&) = delete; + input_stream_adapter& operator=(input_stream_adapter&) = delete; + + // std::istream/std::streambuf use std::char_traits::to_int_type, to + // ensure that std::char_traits::eof() and the character 0xFF do not + // end up as the same value, eg. 0xFFFFFFFF. + std::char_traits::int_type get_character() override + { + return sb.sbumpc(); + } + + void unget_character() override + { + sb.sungetc(); // is.unget() avoided for performance + } + + private: + /// the associated input stream + std::istream& is; + std::streambuf& sb; +}; + +/// input adapter for buffer input +class input_buffer_adapter : public input_adapter_protocol +{ + public: + input_buffer_adapter(const char* b, const std::size_t l) + : cursor(b), limit(b + l), start(b) + { + // skip byte order mark + if (l >= 3 and b[0] == '\xEF' and b[1] == '\xBB' and b[2] == '\xBF') + { + cursor += 3; + } + } + + // delete because of pointer members + input_buffer_adapter(const input_buffer_adapter&) = delete; + input_buffer_adapter& operator=(input_buffer_adapter&) = delete; + + std::char_traits::int_type get_character() noexcept override + { + if (JSON_LIKELY(cursor < limit)) + { + return std::char_traits::to_int_type(*(cursor++)); + } + + return std::char_traits::eof(); + } + + void unget_character() noexcept override + { + if (JSON_LIKELY(cursor > start)) + { + --cursor; + } + } + + private: + /// pointer to the current character + const char* cursor; + /// pointer past the last character + const char* limit; + /// pointer to the first character + const char* start; +}; + +class input_adapter +{ + public: + // native support + + /// input adapter for input stream + input_adapter(std::istream& i) + : ia(std::make_shared(i)) {} + + /// input adapter for input stream + input_adapter(std::istream&& i) + : ia(std::make_shared(i)) {} + + /// input adapter for buffer + template::value and + std::is_integral::type>::value and + sizeof(typename std::remove_pointer::type) == 1, + int>::type = 0> + input_adapter(CharT b, std::size_t l) + : ia(std::make_shared(reinterpret_cast(b), l)) {} + + // derived support + + /// input adapter for string literal + template::value and + std::is_integral::type>::value and + sizeof(typename std::remove_pointer::type) == 1, + int>::type = 0> + input_adapter(CharT b) + : input_adapter(reinterpret_cast(b), + std::strlen(reinterpret_cast(b))) {} + + /// input adapter for iterator range with contiguous storage + template::iterator_category, std::random_access_iterator_tag>::value, + int>::type = 0> + input_adapter(IteratorType first, IteratorType last) + { + // assertion to check that the iterator range is indeed contiguous, + // see http://stackoverflow.com/a/35008842/266378 for more discussion + assert(std::accumulate( + first, last, std::pair(true, 0), + [&first](std::pair res, decltype(*first) val) + { + res.first &= (val == *(std::next(std::addressof(*first), res.second++))); + return res; + }).first); + + // assertion to check that each element is 1 byte long + static_assert( + sizeof(typename std::iterator_traits::value_type) == 1, + "each element in the iterator range must have the size of 1 byte"); + + const auto len = static_cast(std::distance(first, last)); + if (JSON_LIKELY(len > 0)) + { + // there is at least one element: use the address of first + ia = std::make_shared(reinterpret_cast(&(*first)), len); + } + else + { + // the address of first cannot be used: use nullptr + ia = std::make_shared(nullptr, len); + } + } + + /// input adapter for array + template + input_adapter(T (&array)[N]) + : input_adapter(std::begin(array), std::end(array)) {} + + /// input adapter for contiguous container + template::value and + std::is_base_of()))>::iterator_category>::value, + int>::type = 0> + input_adapter(const ContiguousContainer& c) + : input_adapter(std::begin(c), std::end(c)) {} + + operator input_adapter_t() + { + return ia; + } + + private: + /// the actual adapter + input_adapter_t ia = nullptr; +}; +} +} + +#endif + +/*** End of inlined file: input_adapters.hpp ***/ + + +/*** Start of inlined file: lexer.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP + +#include // localeconv +#include // size_t +#include // strtof, strtod, strtold, strtoll, strtoull +#include // initializer_list +#include // hex, uppercase +#include // setw, setfill +#include // stringstream +#include // char_traits, string +#include // vector + + +/*** Start of inlined file: input_adapters.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP + +#include // min +#include // array +#include // assert +#include // size_t +#include // strlen +#include // streamsize, streamoff, streampos +#include // istream +#include // begin, end, iterator_traits, random_access_iterator_tag, distance, next +#include // shared_ptr, make_shared, addressof +#include // accumulate +#include // string, char_traits +#include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer +#include // pair, declval + +namespace nlohmann +{ +namespace detail +{ +//////////////////// +// input adapters // +//////////////////// + +/*! +@brief abstract input adapter interface + +Produces a stream of std::char_traits::int_type characters from a +std::istream, a buffer, or some other input type. Accepts the return of exactly +one non-EOF character for future input. The int_type characters returned +consist of all valid char values as positive values (typically unsigned char), +plus an EOF value outside that range, specified by the value of the function +std::char_traits::eof(). This value is typically -1, but could be any +arbitrary value which is not a valid char value. +*/ +struct input_adapter_protocol +{ + /// get a character [0,255] or std::char_traits::eof(). + virtual std::char_traits::int_type get_character() = 0; + /// restore the last non-eof() character to input + virtual void unget_character() = 0; + virtual ~input_adapter_protocol() = default; +}; + +/// a type to simplify interfaces +using input_adapter_t = std::shared_ptr; + +/*! +Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at +beginning of input. Does not support changing the underlying std::streambuf +in mid-input. Maintains underlying std::istream and std::streambuf to support +subsequent use of standard std::istream operations to process any input +characters following those used in parsing the JSON input. Clears the +std::istream flags; any input errors (e.g., EOF) will be detected by the first +subsequent call for input from the std::istream. +*/ +class input_stream_adapter : public input_adapter_protocol +{ + public: + ~input_stream_adapter() override + { + // clear stream flags; we use underlying streambuf I/O, do not + // maintain ifstream flags + is.clear(); + } + + explicit input_stream_adapter(std::istream& i) + : is(i), sb(*i.rdbuf()) + { + // skip byte order mark + std::char_traits::int_type c; + if ((c = get_character()) == 0xEF) + { + if ((c = get_character()) == 0xBB) + { + if ((c = get_character()) == 0xBF) + { + return; // Ignore BOM + } + else if (c != std::char_traits::eof()) + { + is.unget(); + } + is.putback('\xBB'); + } + else if (c != std::char_traits::eof()) + { + is.unget(); + } + is.putback('\xEF'); + } + else if (c != std::char_traits::eof()) + { + is.unget(); // no byte order mark; process as usual + } + } + + // delete because of pointer members + input_stream_adapter(const input_stream_adapter&) = delete; + input_stream_adapter& operator=(input_stream_adapter&) = delete; + + // std::istream/std::streambuf use std::char_traits::to_int_type, to + // ensure that std::char_traits::eof() and the character 0xFF do not + // end up as the same value, eg. 0xFFFFFFFF. + std::char_traits::int_type get_character() override + { + return sb.sbumpc(); + } + + void unget_character() override + { + sb.sungetc(); // is.unget() avoided for performance + } + + private: + /// the associated input stream + std::istream& is; + std::streambuf& sb; +}; + +/// input adapter for buffer input +class input_buffer_adapter : public input_adapter_protocol +{ + public: + input_buffer_adapter(const char* b, const std::size_t l) + : cursor(b), limit(b + l), start(b) + { + // skip byte order mark + if (l >= 3 and b[0] == '\xEF' and b[1] == '\xBB' and b[2] == '\xBF') + { + cursor += 3; + } + } + + // delete because of pointer members + input_buffer_adapter(const input_buffer_adapter&) = delete; + input_buffer_adapter& operator=(input_buffer_adapter&) = delete; + + std::char_traits::int_type get_character() noexcept override + { + if (JSON_LIKELY(cursor < limit)) + { + return std::char_traits::to_int_type(*(cursor++)); + } + + return std::char_traits::eof(); + } + + void unget_character() noexcept override + { + if (JSON_LIKELY(cursor > start)) + { + --cursor; + } + } + + private: + /// pointer to the current character + const char* cursor; + /// pointer past the last character + const char* limit; + /// pointer to the first character + const char* start; +}; + +class input_adapter +{ + public: + // native support + + /// input adapter for input stream + input_adapter(std::istream& i) + : ia(std::make_shared(i)) {} + + /// input adapter for input stream + input_adapter(std::istream&& i) + : ia(std::make_shared(i)) {} + + /// input adapter for buffer + template::value and + std::is_integral::type>::value and + sizeof(typename std::remove_pointer::type) == 1, + int>::type = 0> + input_adapter(CharT b, std::size_t l) + : ia(std::make_shared(reinterpret_cast(b), l)) {} + + // derived support + + /// input adapter for string literal + template::value and + std::is_integral::type>::value and + sizeof(typename std::remove_pointer::type) == 1, + int>::type = 0> + input_adapter(CharT b) + : input_adapter(reinterpret_cast(b), + std::strlen(reinterpret_cast(b))) {} + + /// input adapter for iterator range with contiguous storage + template::iterator_category, std::random_access_iterator_tag>::value, + int>::type = 0> + input_adapter(IteratorType first, IteratorType last) + { + // assertion to check that the iterator range is indeed contiguous, + // see http://stackoverflow.com/a/35008842/266378 for more discussion + assert(std::accumulate( + first, last, std::pair(true, 0), + [&first](std::pair res, decltype(*first) val) + { + res.first &= (val == *(std::next(std::addressof(*first), res.second++))); + return res; + }).first); + + // assertion to check that each element is 1 byte long + static_assert( + sizeof(typename std::iterator_traits::value_type) == 1, + "each element in the iterator range must have the size of 1 byte"); + + const auto len = static_cast(std::distance(first, last)); + if (JSON_LIKELY(len > 0)) + { + // there is at least one element: use the address of first + ia = std::make_shared(reinterpret_cast(&(*first)), len); + } + else + { + // the address of first cannot be used: use nullptr + ia = std::make_shared(nullptr, len); + } + } + + /// input adapter for array + template + input_adapter(T (&array)[N]) + : input_adapter(std::begin(array), std::end(array)) {} + + /// input adapter for contiguous container + template::value and + std::is_base_of()))>::iterator_category>::value, + int>::type = 0> + input_adapter(const ContiguousContainer& c) + : input_adapter(std::begin(c), std::end(c)) {} + + operator input_adapter_t() + { + return ia; + } + + private: + /// the actual adapter + input_adapter_t ia = nullptr; +}; +} +} + +#endif + +/*** End of inlined file: input_adapters.hpp ***/ + +namespace nlohmann +{ +namespace detail +{ +/////////// +// lexer // +/////////// + +/*! +@brief lexical analysis + +This class organizes the lexical analysis during JSON deserialization. +*/ +template +class lexer +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + + public: + /// token types for the parser + enum class token_type + { + uninitialized, ///< indicating the scanner is uninitialized + literal_true, ///< the `true` literal + literal_false, ///< the `false` literal + literal_null, ///< the `null` literal + value_string, ///< a string -- use get_string() for actual value + value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value + value_integer, ///< a signed integer -- use get_number_integer() for actual value + value_float, ///< an floating point number -- use get_number_float() for actual value + begin_array, ///< the character for array begin `[` + begin_object, ///< the character for object begin `{` + end_array, ///< the character for array end `]` + end_object, ///< the character for object end `}` + name_separator, ///< the name separator `:` + value_separator, ///< the value separator `,` + parse_error, ///< indicating a parse error + end_of_input, ///< indicating the end of the input buffer + literal_or_value ///< a literal or the begin of a value (only for diagnostics) + }; + + /// return name of values of type token_type (only used for errors) + static const char* token_type_name(const token_type t) noexcept + { + switch (t) + { + case token_type::uninitialized: + return ""; + case token_type::literal_true: + return "true literal"; + case token_type::literal_false: + return "false literal"; + case token_type::literal_null: + return "null literal"; + case token_type::value_string: + return "string literal"; + case lexer::token_type::value_unsigned: + case lexer::token_type::value_integer: + case lexer::token_type::value_float: + return "number literal"; + case token_type::begin_array: + return "'['"; + case token_type::begin_object: + return "'{'"; + case token_type::end_array: + return "']'"; + case token_type::end_object: + return "'}'"; + case token_type::name_separator: + return "':'"; + case token_type::value_separator: + return "','"; + case token_type::parse_error: + return ""; + case token_type::end_of_input: + return "end of input"; + case token_type::literal_or_value: + return "'[', '{', or a literal"; + default: // catch non-enum values + return "unknown token"; // LCOV_EXCL_LINE + } + } + + explicit lexer(detail::input_adapter_t adapter) + : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {} + + // delete because of pointer members + lexer(const lexer&) = delete; + lexer& operator=(lexer&) = delete; + + private: + ///////////////////// + // locales + ///////////////////// + + /// return the locale-dependent decimal point + static char get_decimal_point() noexcept + { + const auto loc = localeconv(); + assert(loc != nullptr); + return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); + } + + ///////////////////// + // scan functions + ///////////////////// + + /*! + @brief get codepoint from 4 hex characters following `\u` + + For input "\u c1 c2 c3 c4" the codepoint is: + (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 + = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) + + Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' + must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The + conversion is done by subtracting the offset (0x30, 0x37, and 0x57) + between the ASCII value of the character and the desired integer value. + + @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or + non-hex character) + */ + int get_codepoint() + { + // this function only makes sense after reading `\u` + assert(current == 'u'); + int codepoint = 0; + + const auto factors = { 12, 8, 4, 0 }; + for (const auto factor : factors) + { + get(); + + if (current >= '0' and current <= '9') + { + codepoint += ((current - 0x30) << factor); + } + else if (current >= 'A' and current <= 'F') + { + codepoint += ((current - 0x37) << factor); + } + else if (current >= 'a' and current <= 'f') + { + codepoint += ((current - 0x57) << factor); + } + else + { + return -1; + } + } + + assert(0x0000 <= codepoint and codepoint <= 0xFFFF); + return codepoint; + } + + /*! + @brief check if the next byte(s) are inside a given range + + Adds the current byte and, for each passed range, reads a new byte and + checks if it is inside the range. If a violation was detected, set up an + error message and return false. Otherwise, return true. + + @param[in] ranges list of integers; interpreted as list of pairs of + inclusive lower and upper bound, respectively + + @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, + 1, 2, or 3 pairs. This precondition is enforced by an assertion. + + @return true if and only if no range violation was detected + */ + bool next_byte_in_range(std::initializer_list ranges) + { + assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6); + add(current); + + for (auto range = ranges.begin(); range != ranges.end(); ++range) + { + get(); + if (JSON_LIKELY(*range <= current and current <= *(++range))) + { + add(current); + } + else + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return false; + } + } + + return true; + } + + /*! + @brief scan a string literal + + This function scans a string according to Sect. 7 of RFC 7159. While + scanning, bytes are escaped and copied into buffer yytext. Then the function + returns successfully, yytext is *not* null-terminated (as it may contain \0 + bytes), and yytext.size() is the number of bytes in the string. + + @return token_type::value_string if string could be successfully scanned, + token_type::parse_error otherwise + + @note In case of errors, variable error_message contains a textual + description. + */ + token_type scan_string() + { + // reset yytext (ignore opening quote) + reset(); + + // we entered the function by reading an open quote + assert(current == '\"'); + + while (true) + { + // get next character + switch (get()) + { + // end of file while parsing string + case std::char_traits::eof(): + { + error_message = "invalid string: missing closing quote"; + return token_type::parse_error; + } + + // closing quote + case '\"': + { + return token_type::value_string; + } + + // escapes + case '\\': + { + switch (get()) + { + // quotation mark + case '\"': + add('\"'); + break; + // reverse solidus + case '\\': + add('\\'); + break; + // solidus + case '/': + add('/'); + break; + // backspace + case 'b': + add('\b'); + break; + // form feed + case 'f': + add('\f'); + break; + // line feed + case 'n': + add('\n'); + break; + // carriage return + case 'r': + add('\r'); + break; + // tab + case 't': + add('\t'); + break; + + // unicode escapes + case 'u': + { + const int codepoint1 = get_codepoint(); + int codepoint = codepoint1; // start with codepoint1 + + if (JSON_UNLIKELY(codepoint1 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if code point is a high surrogate + if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF) + { + // expect next \uxxxx entry + if (JSON_LIKELY(get() == '\\' and get() == 'u')) + { + const int codepoint2 = get_codepoint(); + + if (JSON_UNLIKELY(codepoint2 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if codepoint2 is a low surrogate + if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF)) + { + // overwrite codepoint + codepoint = + // high surrogate occupies the most significant 22 bits + (codepoint1 << 10) + // low surrogate occupies the least significant 15 bits + + codepoint2 + // there is still the 0xD800, 0xDC00 and 0x10000 noise + // in the result so we have to subtract with: + // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 + - 0x35FDC00; + } + else + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF)) + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; + return token_type::parse_error; + } + } + + // result of the above calculation yields a proper codepoint + assert(0x00 <= codepoint and codepoint <= 0x10FFFF); + + // translate codepoint into bytes + if (codepoint < 0x80) + { + // 1-byte characters: 0xxxxxxx (ASCII) + add(codepoint); + } + else if (codepoint <= 0x7FF) + { + // 2-byte characters: 110xxxxx 10xxxxxx + add(0xC0 | (codepoint >> 6)); + add(0x80 | (codepoint & 0x3F)); + } + else if (codepoint <= 0xFFFF) + { + // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx + add(0xE0 | (codepoint >> 12)); + add(0x80 | ((codepoint >> 6) & 0x3F)); + add(0x80 | (codepoint & 0x3F)); + } + else + { + // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + add(0xF0 | (codepoint >> 18)); + add(0x80 | ((codepoint >> 12) & 0x3F)); + add(0x80 | ((codepoint >> 6) & 0x3F)); + add(0x80 | (codepoint & 0x3F)); + } + + break; + } + + // other characters after escape + default: + error_message = "invalid string: forbidden character after backslash"; + return token_type::parse_error; + } + + break; + } + + // invalid control characters + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + { + error_message = "invalid string: control character must be escaped"; + return token_type::parse_error; + } + + // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) + case 0x20: + case 0x21: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + { + add(current); + break; + } + + // U+0080..U+07FF: bytes C2..DF 80..BF + case 0xC2: + case 0xC3: + case 0xC4: + case 0xC5: + case 0xC6: + case 0xC7: + case 0xC8: + case 0xC9: + case 0xCA: + case 0xCB: + case 0xCC: + case 0xCD: + case 0xCE: + case 0xCF: + case 0xD0: + case 0xD1: + case 0xD2: + case 0xD3: + case 0xD4: + case 0xD5: + case 0xD6: + case 0xD7: + case 0xD8: + case 0xD9: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: + { + if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF}))) + { + return token_type::parse_error; + } + break; + } + + // U+0800..U+0FFF: bytes E0 A0..BF 80..BF + case 0xE0: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF + // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xEE: + case 0xEF: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+D000..U+D7FF: bytes ED 80..9F 80..BF + case 0xED: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF + case 0xF0: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF + case 0xF1: + case 0xF2: + case 0xF3: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF + case 0xF4: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // remaining bytes (80..C1 and F5..FF) are ill-formed + default: + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return token_type::parse_error; + } + } + } + } + + static void strtof(float& f, const char* str, char** endptr) noexcept + { + f = std::strtof(str, endptr); + } + + static void strtof(double& f, const char* str, char** endptr) noexcept + { + f = std::strtod(str, endptr); + } + + static void strtof(long double& f, const char* str, char** endptr) noexcept + { + f = std::strtold(str, endptr); + } + + /*! + @brief scan a number literal + + This function scans a string according to Sect. 6 of RFC 7159. + + The function is realized with a deterministic finite state machine derived + from the grammar described in RFC 7159. Starting in state "init", the + input is read and used to determined the next state. Only state "done" + accepts the number. State "error" is a trap state to model errors. In the + table below, "anything" means any character but the ones listed before. + + state | 0 | 1-9 | e E | + | - | . | anything + ---------|----------|----------|----------|---------|---------|----------|----------- + init | zero | any1 | [error] | [error] | minus | [error] | [error] + minus | zero | any1 | [error] | [error] | [error] | [error] | [error] + zero | done | done | exponent | done | done | decimal1 | done + any1 | any1 | any1 | exponent | done | done | decimal1 | done + decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error] + decimal2 | decimal2 | decimal2 | exponent | done | done | done | done + exponent | any2 | any2 | [error] | sign | sign | [error] | [error] + sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] + any2 | any2 | any2 | done | done | done | done | done + + The state machine is realized with one label per state (prefixed with + "scan_number_") and `goto` statements between them. The state machine + contains cycles, but any cycle can be left when EOF is read. Therefore, + the function is guaranteed to terminate. + + During scanning, the read bytes are stored in yytext. This string is + then converted to a signed integer, an unsigned integer, or a + floating-point number. + + @return token_type::value_unsigned, token_type::value_integer, or + token_type::value_float if number could be successfully scanned, + token_type::parse_error otherwise + + @note The scanner is independent of the current locale. Internally, the + locale's decimal point is used instead of `.` to work with the + locale-dependent converters. + */ + token_type scan_number() + { + // reset yytext to store the number's bytes + reset(); + + // the type of the parsed number; initially set to unsigned; will be + // changed if minus sign, decimal point or exponent is read + token_type number_type = token_type::value_unsigned; + + // state (init): we just found out we need to scan a number + switch (current) + { + case '-': + { + add(current); + goto scan_number_minus; + } + + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + default: + { + // all other characters are rejected outside scan_number() + assert(false); // LCOV_EXCL_LINE + } + } + +scan_number_minus: + // state: we just parsed a leading minus sign + number_type = token_type::value_integer; + switch (get()) + { + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + default: + { + error_message = "invalid number; expected digit after '-'"; + return token_type::parse_error; + } + } + +scan_number_zero: + // state: we just parse a zero (maybe with a leading minus sign) + switch (get()) + { + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_any1: + // state: we just parsed a number 0-9 (maybe with a leading minus sign) + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_decimal1: + // state: we just parsed a decimal point + number_type = token_type::value_float; + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + default: + { + error_message = "invalid number; expected digit after '.'"; + return token_type::parse_error; + } + } + +scan_number_decimal2: + // we just parsed at least one number after a decimal point + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_exponent: + // we just parsed an exponent + number_type = token_type::value_float; + switch (get()) + { + case '+': + case '-': + { + add(current); + goto scan_number_sign; + } + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = + "invalid number; expected '+', '-', or digit after exponent"; + return token_type::parse_error; + } + } + +scan_number_sign: + // we just parsed an exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = "invalid number; expected digit after exponent sign"; + return token_type::parse_error; + } + } + +scan_number_any2: + // we just parsed a number after the exponent or exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + goto scan_number_done; + } + +scan_number_done: + // unget the character after the number (we only read it to know that + // we are done scanning a number) + unget(); + + char* endptr = nullptr; + errno = 0; + + // try to parse integers first and fall back to floats + if (number_type == token_type::value_unsigned) + { + const auto x = std::strtoull(yytext.data(), &endptr, 10); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + if (errno == 0) + { + value_unsigned = static_cast(x); + if (value_unsigned == x) + { + return token_type::value_unsigned; + } + } + } + else if (number_type == token_type::value_integer) + { + const auto x = std::strtoll(yytext.data(), &endptr, 10); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + if (errno == 0) + { + value_integer = static_cast(x); + if (value_integer == x) + { + return token_type::value_integer; + } + } + } + + // this code is reached if we parse a floating-point number or if an + // integer conversion above failed + strtof(value_float, yytext.data(), &endptr); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + return token_type::value_float; + } + + /*! + @param[in] literal_text the literal text to expect + @param[in] length the length of the passed literal text + @param[in] return_type the token type to return on success + */ + token_type scan_literal(const char* literal_text, const std::size_t length, + token_type return_type) + { + assert(current == literal_text[0]); + for (std::size_t i = 1; i < length; ++i) + { + if (JSON_UNLIKELY(get() != literal_text[i])) + { + error_message = "invalid literal"; + return token_type::parse_error; + } + } + return return_type; + } + + ///////////////////// + // input management + ///////////////////// + + /// reset yytext; current character is beginning of token + void reset() noexcept + { + yytext.clear(); + token_string.clear(); + token_string.push_back(std::char_traits::to_char_type(current)); + } + + /* + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a + `std::char_traits::eof()` in that case. Stores the scanned characters + for use in error messages. + + @return character read from the input + */ + std::char_traits::int_type get() + { + ++chars_read; + current = ia->get_character(); + if (JSON_LIKELY(current != std::char_traits::eof())) + { + token_string.push_back(std::char_traits::to_char_type(current)); + } + return current; + } + + /// unget current character (return it again on next get) + void unget() + { + --chars_read; + if (JSON_LIKELY(current != std::char_traits::eof())) + { + ia->unget_character(); + assert(token_string.size() != 0); + token_string.pop_back(); + } + } + + /// add a character to yytext + void add(int c) + { + yytext.push_back(std::char_traits::to_char_type(c)); + } + + public: + ///////////////////// + // value getters + ///////////////////// + + /// return integer value + constexpr number_integer_t get_number_integer() const noexcept + { + return value_integer; + } + + /// return unsigned integer value + constexpr number_unsigned_t get_number_unsigned() const noexcept + { + return value_unsigned; + } + + /// return floating-point value + constexpr number_float_t get_number_float() const noexcept + { + return value_float; + } + + /// return current string value (implicitly resets the token; useful only once) + std::string move_string() + { + return std::move(yytext); + } + + ///////////////////// + // diagnostics + ///////////////////// + + /// return position of last read token + constexpr std::size_t get_position() const noexcept + { + return chars_read; + } + + /// return the last read token (for errors only). Will never contain EOF + /// (an arbitrary value that is not a valid char value, often -1), because + /// 255 may legitimately occur. May contain NUL, which should be escaped. + std::string get_token_string() const + { + // escape control characters + std::string result; + for (const auto c : token_string) + { + if ('\x00' <= c and c <= '\x1F') + { + // escape control characters + std::stringstream ss; + ss << "(c) << ">"; + result += ss.str(); + } + else + { + // add character as is + result.push_back(c); + } + } + + return result; + } + + /// return syntax error message + constexpr const char* get_error_message() const noexcept + { + return error_message; + } + + ///////////////////// + // actual scanner + ///////////////////// + + token_type scan() + { + // read next character and ignore whitespace + do + { + get(); + } + while (current == ' ' or current == '\t' or current == '\n' or current == '\r'); + + switch (current) + { + // structural characters + case '[': + return token_type::begin_array; + case ']': + return token_type::end_array; + case '{': + return token_type::begin_object; + case '}': + return token_type::end_object; + case ':': + return token_type::name_separator; + case ',': + return token_type::value_separator; + + // literals + case 't': + return scan_literal("true", 4, token_type::literal_true); + case 'f': + return scan_literal("false", 5, token_type::literal_false); + case 'n': + return scan_literal("null", 4, token_type::literal_null); + + // string + case '\"': + return scan_string(); + + // number + case '-': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return scan_number(); + + // end of input (the null byte is needed when parsing from + // string literals) + case '\0': + case std::char_traits::eof(): + return token_type::end_of_input; + + // error + default: + error_message = "invalid literal"; + return token_type::parse_error; + } + } + + private: + /// input adapter + detail::input_adapter_t ia = nullptr; + + /// the current character + std::char_traits::int_type current = std::char_traits::eof(); + + /// the number of characters read + std::size_t chars_read = 0; + + /// raw input token string (for error messages) + std::vector token_string {}; + + /// buffer for variable-length tokens (numbers, strings) + std::string yytext {}; + + /// a description of occurred lexer errors + const char* error_message = ""; + + // number values + number_integer_t value_integer = 0; + number_unsigned_t value_unsigned = 0; + number_float_t value_float = 0; + + /// the decimal point + const char decimal_point_char = '.'; +}; +} +} + +#endif + +/*** End of inlined file: lexer.hpp ***/ + + +/*** Start of inlined file: parser.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP + +#include // assert +#include // isfinite +#include // uint8_t +#include // function +#include // string +#include // move + + +/*** Start of inlined file: lexer.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP + +#include // localeconv +#include // size_t +#include // strtof, strtod, strtold, strtoll, strtoull +#include // initializer_list +#include // hex, uppercase +#include // setw, setfill +#include // stringstream +#include // char_traits, string +#include // vector + +namespace nlohmann +{ +namespace detail +{ +/////////// +// lexer // +/////////// + +/*! +@brief lexical analysis + +This class organizes the lexical analysis during JSON deserialization. +*/ +template +class lexer +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + + public: + /// token types for the parser + enum class token_type + { + uninitialized, ///< indicating the scanner is uninitialized + literal_true, ///< the `true` literal + literal_false, ///< the `false` literal + literal_null, ///< the `null` literal + value_string, ///< a string -- use get_string() for actual value + value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value + value_integer, ///< a signed integer -- use get_number_integer() for actual value + value_float, ///< an floating point number -- use get_number_float() for actual value + begin_array, ///< the character for array begin `[` + begin_object, ///< the character for object begin `{` + end_array, ///< the character for array end `]` + end_object, ///< the character for object end `}` + name_separator, ///< the name separator `:` + value_separator, ///< the value separator `,` + parse_error, ///< indicating a parse error + end_of_input, ///< indicating the end of the input buffer + literal_or_value ///< a literal or the begin of a value (only for diagnostics) + }; + + /// return name of values of type token_type (only used for errors) + static const char* token_type_name(const token_type t) noexcept + { + switch (t) + { + case token_type::uninitialized: + return ""; + case token_type::literal_true: + return "true literal"; + case token_type::literal_false: + return "false literal"; + case token_type::literal_null: + return "null literal"; + case token_type::value_string: + return "string literal"; + case lexer::token_type::value_unsigned: + case lexer::token_type::value_integer: + case lexer::token_type::value_float: + return "number literal"; + case token_type::begin_array: + return "'['"; + case token_type::begin_object: + return "'{'"; + case token_type::end_array: + return "']'"; + case token_type::end_object: + return "'}'"; + case token_type::name_separator: + return "':'"; + case token_type::value_separator: + return "','"; + case token_type::parse_error: + return ""; + case token_type::end_of_input: + return "end of input"; + case token_type::literal_or_value: + return "'[', '{', or a literal"; + default: // catch non-enum values + return "unknown token"; // LCOV_EXCL_LINE + } + } + + explicit lexer(detail::input_adapter_t adapter) + : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {} + + // delete because of pointer members + lexer(const lexer&) = delete; + lexer& operator=(lexer&) = delete; + + private: + ///////////////////// + // locales + ///////////////////// + + /// return the locale-dependent decimal point + static char get_decimal_point() noexcept + { + const auto loc = localeconv(); + assert(loc != nullptr); + return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); + } + + ///////////////////// + // scan functions + ///////////////////// + + /*! + @brief get codepoint from 4 hex characters following `\u` + + For input "\u c1 c2 c3 c4" the codepoint is: + (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 + = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) + + Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' + must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The + conversion is done by subtracting the offset (0x30, 0x37, and 0x57) + between the ASCII value of the character and the desired integer value. + + @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or + non-hex character) + */ + int get_codepoint() + { + // this function only makes sense after reading `\u` + assert(current == 'u'); + int codepoint = 0; + + const auto factors = { 12, 8, 4, 0 }; + for (const auto factor : factors) + { + get(); + + if (current >= '0' and current <= '9') + { + codepoint += ((current - 0x30) << factor); + } + else if (current >= 'A' and current <= 'F') + { + codepoint += ((current - 0x37) << factor); + } + else if (current >= 'a' and current <= 'f') + { + codepoint += ((current - 0x57) << factor); + } + else + { + return -1; + } + } + + assert(0x0000 <= codepoint and codepoint <= 0xFFFF); + return codepoint; + } + + /*! + @brief check if the next byte(s) are inside a given range + + Adds the current byte and, for each passed range, reads a new byte and + checks if it is inside the range. If a violation was detected, set up an + error message and return false. Otherwise, return true. + + @param[in] ranges list of integers; interpreted as list of pairs of + inclusive lower and upper bound, respectively + + @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, + 1, 2, or 3 pairs. This precondition is enforced by an assertion. + + @return true if and only if no range violation was detected + */ + bool next_byte_in_range(std::initializer_list ranges) + { + assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6); + add(current); + + for (auto range = ranges.begin(); range != ranges.end(); ++range) + { + get(); + if (JSON_LIKELY(*range <= current and current <= *(++range))) + { + add(current); + } + else + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return false; + } + } + + return true; + } + + /*! + @brief scan a string literal + + This function scans a string according to Sect. 7 of RFC 7159. While + scanning, bytes are escaped and copied into buffer yytext. Then the function + returns successfully, yytext is *not* null-terminated (as it may contain \0 + bytes), and yytext.size() is the number of bytes in the string. + + @return token_type::value_string if string could be successfully scanned, + token_type::parse_error otherwise + + @note In case of errors, variable error_message contains a textual + description. + */ + token_type scan_string() + { + // reset yytext (ignore opening quote) + reset(); + + // we entered the function by reading an open quote + assert(current == '\"'); + + while (true) + { + // get next character + switch (get()) + { + // end of file while parsing string + case std::char_traits::eof(): + { + error_message = "invalid string: missing closing quote"; + return token_type::parse_error; + } + + // closing quote + case '\"': + { + return token_type::value_string; + } + + // escapes + case '\\': + { + switch (get()) + { + // quotation mark + case '\"': + add('\"'); + break; + // reverse solidus + case '\\': + add('\\'); + break; + // solidus + case '/': + add('/'); + break; + // backspace + case 'b': + add('\b'); + break; + // form feed + case 'f': + add('\f'); + break; + // line feed + case 'n': + add('\n'); + break; + // carriage return + case 'r': + add('\r'); + break; + // tab + case 't': + add('\t'); + break; + + // unicode escapes + case 'u': + { + const int codepoint1 = get_codepoint(); + int codepoint = codepoint1; // start with codepoint1 + + if (JSON_UNLIKELY(codepoint1 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if code point is a high surrogate + if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF) + { + // expect next \uxxxx entry + if (JSON_LIKELY(get() == '\\' and get() == 'u')) + { + const int codepoint2 = get_codepoint(); + + if (JSON_UNLIKELY(codepoint2 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if codepoint2 is a low surrogate + if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF)) + { + // overwrite codepoint + codepoint = + // high surrogate occupies the most significant 22 bits + (codepoint1 << 10) + // low surrogate occupies the least significant 15 bits + + codepoint2 + // there is still the 0xD800, 0xDC00 and 0x10000 noise + // in the result so we have to subtract with: + // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 + - 0x35FDC00; + } + else + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF)) + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; + return token_type::parse_error; + } + } + + // result of the above calculation yields a proper codepoint + assert(0x00 <= codepoint and codepoint <= 0x10FFFF); + + // translate codepoint into bytes + if (codepoint < 0x80) + { + // 1-byte characters: 0xxxxxxx (ASCII) + add(codepoint); + } + else if (codepoint <= 0x7FF) + { + // 2-byte characters: 110xxxxx 10xxxxxx + add(0xC0 | (codepoint >> 6)); + add(0x80 | (codepoint & 0x3F)); + } + else if (codepoint <= 0xFFFF) + { + // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx + add(0xE0 | (codepoint >> 12)); + add(0x80 | ((codepoint >> 6) & 0x3F)); + add(0x80 | (codepoint & 0x3F)); + } + else + { + // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + add(0xF0 | (codepoint >> 18)); + add(0x80 | ((codepoint >> 12) & 0x3F)); + add(0x80 | ((codepoint >> 6) & 0x3F)); + add(0x80 | (codepoint & 0x3F)); + } + + break; + } + + // other characters after escape + default: + error_message = "invalid string: forbidden character after backslash"; + return token_type::parse_error; + } + + break; + } + + // invalid control characters + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + { + error_message = "invalid string: control character must be escaped"; + return token_type::parse_error; + } + + // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) + case 0x20: + case 0x21: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + { + add(current); + break; + } + + // U+0080..U+07FF: bytes C2..DF 80..BF + case 0xC2: + case 0xC3: + case 0xC4: + case 0xC5: + case 0xC6: + case 0xC7: + case 0xC8: + case 0xC9: + case 0xCA: + case 0xCB: + case 0xCC: + case 0xCD: + case 0xCE: + case 0xCF: + case 0xD0: + case 0xD1: + case 0xD2: + case 0xD3: + case 0xD4: + case 0xD5: + case 0xD6: + case 0xD7: + case 0xD8: + case 0xD9: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: + { + if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF}))) + { + return token_type::parse_error; + } + break; + } + + // U+0800..U+0FFF: bytes E0 A0..BF 80..BF + case 0xE0: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF + // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xEE: + case 0xEF: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+D000..U+D7FF: bytes ED 80..9F 80..BF + case 0xED: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF + case 0xF0: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF + case 0xF1: + case 0xF2: + case 0xF3: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF + case 0xF4: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // remaining bytes (80..C1 and F5..FF) are ill-formed + default: + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return token_type::parse_error; + } + } + } + } + + static void strtof(float& f, const char* str, char** endptr) noexcept + { + f = std::strtof(str, endptr); + } + + static void strtof(double& f, const char* str, char** endptr) noexcept + { + f = std::strtod(str, endptr); + } + + static void strtof(long double& f, const char* str, char** endptr) noexcept + { + f = std::strtold(str, endptr); + } + + /*! + @brief scan a number literal + + This function scans a string according to Sect. 6 of RFC 7159. + + The function is realized with a deterministic finite state machine derived + from the grammar described in RFC 7159. Starting in state "init", the + input is read and used to determined the next state. Only state "done" + accepts the number. State "error" is a trap state to model errors. In the + table below, "anything" means any character but the ones listed before. + + state | 0 | 1-9 | e E | + | - | . | anything + ---------|----------|----------|----------|---------|---------|----------|----------- + init | zero | any1 | [error] | [error] | minus | [error] | [error] + minus | zero | any1 | [error] | [error] | [error] | [error] | [error] + zero | done | done | exponent | done | done | decimal1 | done + any1 | any1 | any1 | exponent | done | done | decimal1 | done + decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error] + decimal2 | decimal2 | decimal2 | exponent | done | done | done | done + exponent | any2 | any2 | [error] | sign | sign | [error] | [error] + sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] + any2 | any2 | any2 | done | done | done | done | done + + The state machine is realized with one label per state (prefixed with + "scan_number_") and `goto` statements between them. The state machine + contains cycles, but any cycle can be left when EOF is read. Therefore, + the function is guaranteed to terminate. + + During scanning, the read bytes are stored in yytext. This string is + then converted to a signed integer, an unsigned integer, or a + floating-point number. + + @return token_type::value_unsigned, token_type::value_integer, or + token_type::value_float if number could be successfully scanned, + token_type::parse_error otherwise + + @note The scanner is independent of the current locale. Internally, the + locale's decimal point is used instead of `.` to work with the + locale-dependent converters. + */ + token_type scan_number() + { + // reset yytext to store the number's bytes + reset(); + + // the type of the parsed number; initially set to unsigned; will be + // changed if minus sign, decimal point or exponent is read + token_type number_type = token_type::value_unsigned; + + // state (init): we just found out we need to scan a number + switch (current) + { + case '-': + { + add(current); + goto scan_number_minus; + } + + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + default: + { + // all other characters are rejected outside scan_number() + assert(false); // LCOV_EXCL_LINE + } + } + +scan_number_minus: + // state: we just parsed a leading minus sign + number_type = token_type::value_integer; + switch (get()) + { + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + default: + { + error_message = "invalid number; expected digit after '-'"; + return token_type::parse_error; + } + } + +scan_number_zero: + // state: we just parse a zero (maybe with a leading minus sign) + switch (get()) + { + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_any1: + // state: we just parsed a number 0-9 (maybe with a leading minus sign) + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_decimal1: + // state: we just parsed a decimal point + number_type = token_type::value_float; + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + default: + { + error_message = "invalid number; expected digit after '.'"; + return token_type::parse_error; + } + } + +scan_number_decimal2: + // we just parsed at least one number after a decimal point + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_exponent: + // we just parsed an exponent + number_type = token_type::value_float; + switch (get()) + { + case '+': + case '-': + { + add(current); + goto scan_number_sign; + } + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = + "invalid number; expected '+', '-', or digit after exponent"; + return token_type::parse_error; + } + } + +scan_number_sign: + // we just parsed an exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = "invalid number; expected digit after exponent sign"; + return token_type::parse_error; + } + } + +scan_number_any2: + // we just parsed a number after the exponent or exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + goto scan_number_done; + } + +scan_number_done: + // unget the character after the number (we only read it to know that + // we are done scanning a number) + unget(); + + char* endptr = nullptr; + errno = 0; + + // try to parse integers first and fall back to floats + if (number_type == token_type::value_unsigned) + { + const auto x = std::strtoull(yytext.data(), &endptr, 10); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + if (errno == 0) + { + value_unsigned = static_cast(x); + if (value_unsigned == x) + { + return token_type::value_unsigned; + } + } + } + else if (number_type == token_type::value_integer) + { + const auto x = std::strtoll(yytext.data(), &endptr, 10); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + if (errno == 0) + { + value_integer = static_cast(x); + if (value_integer == x) + { + return token_type::value_integer; + } + } + } + + // this code is reached if we parse a floating-point number or if an + // integer conversion above failed + strtof(value_float, yytext.data(), &endptr); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + return token_type::value_float; + } + + /*! + @param[in] literal_text the literal text to expect + @param[in] length the length of the passed literal text + @param[in] return_type the token type to return on success + */ + token_type scan_literal(const char* literal_text, const std::size_t length, + token_type return_type) + { + assert(current == literal_text[0]); + for (std::size_t i = 1; i < length; ++i) + { + if (JSON_UNLIKELY(get() != literal_text[i])) + { + error_message = "invalid literal"; + return token_type::parse_error; + } + } + return return_type; + } + + ///////////////////// + // input management + ///////////////////// + + /// reset yytext; current character is beginning of token + void reset() noexcept + { + yytext.clear(); + token_string.clear(); + token_string.push_back(std::char_traits::to_char_type(current)); + } + + /* + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a + `std::char_traits::eof()` in that case. Stores the scanned characters + for use in error messages. + + @return character read from the input + */ + std::char_traits::int_type get() + { + ++chars_read; + current = ia->get_character(); + if (JSON_LIKELY(current != std::char_traits::eof())) + { + token_string.push_back(std::char_traits::to_char_type(current)); + } + return current; + } + + /// unget current character (return it again on next get) + void unget() + { + --chars_read; + if (JSON_LIKELY(current != std::char_traits::eof())) + { + ia->unget_character(); + assert(token_string.size() != 0); + token_string.pop_back(); + } + } + + /// add a character to yytext + void add(int c) + { + yytext.push_back(std::char_traits::to_char_type(c)); + } + + public: + ///////////////////// + // value getters + ///////////////////// + + /// return integer value + constexpr number_integer_t get_number_integer() const noexcept + { + return value_integer; + } + + /// return unsigned integer value + constexpr number_unsigned_t get_number_unsigned() const noexcept + { + return value_unsigned; + } + + /// return floating-point value + constexpr number_float_t get_number_float() const noexcept + { + return value_float; + } + + /// return current string value (implicitly resets the token; useful only once) + std::string move_string() + { + return std::move(yytext); + } + + ///////////////////// + // diagnostics + ///////////////////// + + /// return position of last read token + constexpr std::size_t get_position() const noexcept + { + return chars_read; + } + + /// return the last read token (for errors only). Will never contain EOF + /// (an arbitrary value that is not a valid char value, often -1), because + /// 255 may legitimately occur. May contain NUL, which should be escaped. + std::string get_token_string() const + { + // escape control characters + std::string result; + for (const auto c : token_string) + { + if ('\x00' <= c and c <= '\x1F') + { + // escape control characters + std::stringstream ss; + ss << "(c) << ">"; + result += ss.str(); + } + else + { + // add character as is + result.push_back(c); + } + } + + return result; + } + + /// return syntax error message + constexpr const char* get_error_message() const noexcept + { + return error_message; + } + + ///////////////////// + // actual scanner + ///////////////////// + + token_type scan() + { + // read next character and ignore whitespace + do + { + get(); + } + while (current == ' ' or current == '\t' or current == '\n' or current == '\r'); + + switch (current) + { + // structural characters + case '[': + return token_type::begin_array; + case ']': + return token_type::end_array; + case '{': + return token_type::begin_object; + case '}': + return token_type::end_object; + case ':': + return token_type::name_separator; + case ',': + return token_type::value_separator; + + // literals + case 't': + return scan_literal("true", 4, token_type::literal_true); + case 'f': + return scan_literal("false", 5, token_type::literal_false); + case 'n': + return scan_literal("null", 4, token_type::literal_null); + + // string + case '\"': + return scan_string(); + + // number + case '-': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return scan_number(); + + // end of input (the null byte is needed when parsing from + // string literals) + case '\0': + case std::char_traits::eof(): + return token_type::end_of_input; + + // error + default: + error_message = "invalid literal"; + return token_type::parse_error; + } + } + + private: + /// input adapter + detail::input_adapter_t ia = nullptr; + + /// the current character + std::char_traits::int_type current = std::char_traits::eof(); + + /// the number of characters read + std::size_t chars_read = 0; + + /// raw input token string (for error messages) + std::vector token_string {}; + + /// buffer for variable-length tokens (numbers, strings) + std::string yytext {}; + + /// a description of occurred lexer errors + const char* error_message = ""; + + // number values + number_integer_t value_integer = 0; + number_unsigned_t value_unsigned = 0; + number_float_t value_float = 0; + + /// the decimal point + const char decimal_point_char = '.'; +}; +} +} + +#endif + +/*** End of inlined file: lexer.hpp ***/ + +namespace nlohmann +{ +namespace detail +{ +//////////// +// parser // +//////////// + +/*! +@brief syntax analysis + +This class implements a recursive decent parser. +*/ +template +class parser +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using lexer_t = lexer; + using token_type = typename lexer_t::token_type; + + public: + enum class parse_event_t : uint8_t + { + /// the parser read `{` and started to process a JSON object + object_start, + /// the parser read `}` and finished processing a JSON object + object_end, + /// the parser read `[` and started to process a JSON array + array_start, + /// the parser read `]` and finished processing a JSON array + array_end, + /// the parser read a key of a value in an object + key, + /// the parser finished reading a JSON value + value + }; + + using parser_callback_t = + std::function; + + /// a parser reading from an input adapter + explicit parser(detail::input_adapter_t adapter, + const parser_callback_t cb = nullptr, + const bool allow_exceptions_ = true) + : callback(cb), m_lexer(adapter), allow_exceptions(allow_exceptions_) + {} + + /*! + @brief public parser interface + + @param[in] strict whether to expect the last token to be EOF + @param[in,out] result parsed JSON value + + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ + void parse(const bool strict, BasicJsonType& result) + { + // read first token + get_token(); + + parse_internal(true, result); + result.assert_invariant(); + + // in strict mode, input must be completely read + if (strict) + { + get_token(); + expect(token_type::end_of_input); + } + + // in case of an error, return discarded value + if (errored) + { + result = value_t::discarded; + return; + } + + // set top-level value to null if it was discarded by the callback + // function + if (result.is_discarded()) + { + result = nullptr; + } + } + + /*! + @brief public accept interface + + @param[in] strict whether to expect the last token to be EOF + @return whether the input is a proper JSON text + */ + bool accept(const bool strict = true) + { + // read first token + get_token(); + + if (not accept_internal()) + { + return false; + } + + // strict => last token must be EOF + return not strict or (get_token() == token_type::end_of_input); + } + + private: + /*! + @brief the actual parser + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ + void parse_internal(bool keep, BasicJsonType& result) + { + // never parse after a parse error was detected + assert(not errored); + + // start with a discarded value + if (not result.is_discarded()) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + + switch (last_token) + { + case token_type::begin_object: + { + if (keep) + { + if (callback) + { + keep = callback(depth++, parse_event_t::object_start, result); + } + + if (not callback or keep) + { + // explicitly set result to object to cope with {} + result.m_type = value_t::object; + result.m_value = value_t::object; + } + } + + // read next token + get_token(); + + // closing } -> we are done + if (last_token == token_type::end_object) + { + if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + break; + } + + // parse values + std::string key; + BasicJsonType value; + while (true) + { + // store key + if (not expect(token_type::value_string)) + { + return; + } + key = m_lexer.move_string(); + + bool keep_tag = false; + if (keep) + { + if (callback) + { + BasicJsonType k(key); + keep_tag = callback(depth, parse_event_t::key, k); + } + else + { + keep_tag = true; + } + } + + // parse separator (:) + get_token(); + if (not expect(token_type::name_separator)) + { + return; + } + + // parse and add value + get_token(); + value.m_value.destroy(value.m_type); + value.m_type = value_t::discarded; + parse_internal(keep, value); + + if (JSON_UNLIKELY(errored)) + { + return; + } + + if (keep and keep_tag and not value.is_discarded()) + { + result.m_value.object->emplace(std::move(key), std::move(value)); + } + + // comma -> next value + get_token(); + if (last_token == token_type::value_separator) + { + get_token(); + continue; + } + + // closing } + if (not expect(token_type::end_object)) + { + return; + } + break; + } + + if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + break; + } + + case token_type::begin_array: + { + if (keep) + { + if (callback) + { + keep = callback(depth++, parse_event_t::array_start, result); + } + + if (not callback or keep) + { + // explicitly set result to array to cope with [] + result.m_type = value_t::array; + result.m_value = value_t::array; + } + } + + // read next token + get_token(); + + // closing ] -> we are done + if (last_token == token_type::end_array) + { + if (callback and not callback(--depth, parse_event_t::array_end, result)) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + break; + } + + // parse values + BasicJsonType value; + while (true) + { + // parse value + value.m_value.destroy(value.m_type); + value.m_type = value_t::discarded; + parse_internal(keep, value); + + if (JSON_UNLIKELY(errored)) + { + return; + } + + if (keep and not value.is_discarded()) + { + result.m_value.array->push_back(std::move(value)); + } + + // comma -> next value + get_token(); + if (last_token == token_type::value_separator) + { + get_token(); + continue; + } + + // closing ] + if (not expect(token_type::end_array)) + { + return; + } + break; + } + + if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + break; + } + + case token_type::literal_null: + { + result.m_type = value_t::null; + break; + } + + case token_type::value_string: + { + result.m_type = value_t::string; + result.m_value = m_lexer.move_string(); + break; + } + + case token_type::literal_true: + { + result.m_type = value_t::boolean; + result.m_value = true; + break; + } + + case token_type::literal_false: + { + result.m_type = value_t::boolean; + result.m_value = false; + break; + } + + case token_type::value_unsigned: + { + result.m_type = value_t::number_unsigned; + result.m_value = m_lexer.get_number_unsigned(); + break; + } + + case token_type::value_integer: + { + result.m_type = value_t::number_integer; + result.m_value = m_lexer.get_number_integer(); + break; + } + + case token_type::value_float: + { + result.m_type = value_t::number_float; + result.m_value = m_lexer.get_number_float(); + + // throw in case of infinity or NAN + if (JSON_UNLIKELY(not std::isfinite(result.m_value.number_float))) + { + if (allow_exceptions) + { + JSON_THROW(out_of_range::create(406, "number overflow parsing '" + + m_lexer.get_token_string() + "'")); + } + expect(token_type::uninitialized); + } + break; + } + + case token_type::parse_error: + { + // using "uninitialized" to avoid "expected" message + if (not expect(token_type::uninitialized)) + { + return; + } + break; // LCOV_EXCL_LINE + } + + default: + { + // the last token was unexpected; we expected a value + if (not expect(token_type::literal_or_value)) + { + return; + } + break; // LCOV_EXCL_LINE + } + } + + if (keep and callback and not callback(depth, parse_event_t::value, result)) + { + result.m_type = value_t::discarded; + } + } + + /*! + @brief the actual acceptor + + @invariant 1. The last token is not yet processed. Therefore, the caller + of this function must make sure a token has been read. + 2. When this function returns, the last token is processed. + That is, the last read character was already considered. + + This invariant makes sure that no token needs to be "unput". + */ + bool accept_internal() + { + switch (last_token) + { + case token_type::begin_object: + { + // read next token + get_token(); + + // closing } -> we are done + if (last_token == token_type::end_object) + { + return true; + } + + // parse values + while (true) + { + // parse key + if (last_token != token_type::value_string) + { + return false; + } + + // parse separator (:) + get_token(); + if (last_token != token_type::name_separator) + { + return false; + } + + // parse value + get_token(); + if (not accept_internal()) + { + return false; + } + + // comma -> next value + get_token(); + if (last_token == token_type::value_separator) + { + get_token(); + continue; + } + + // closing } + return (last_token == token_type::end_object); + } + } + + case token_type::begin_array: + { + // read next token + get_token(); + + // closing ] -> we are done + if (last_token == token_type::end_array) + { + return true; + } + + // parse values + while (true) + { + // parse value + if (not accept_internal()) + { + return false; + } + + // comma -> next value + get_token(); + if (last_token == token_type::value_separator) + { + get_token(); + continue; + } + + // closing ] + return (last_token == token_type::end_array); + } + } + + case token_type::value_float: + { + // reject infinity or NAN + return std::isfinite(m_lexer.get_number_float()); + } + + case token_type::literal_false: + case token_type::literal_null: + case token_type::literal_true: + case token_type::value_integer: + case token_type::value_string: + case token_type::value_unsigned: + return true; + + default: // the last token was unexpected + return false; + } + } + + /// get next token from lexer + token_type get_token() + { + return (last_token = m_lexer.scan()); + } + + /*! + @throw parse_error.101 if expected token did not occur + */ + bool expect(token_type t) + { + if (JSON_UNLIKELY(t != last_token)) + { + errored = true; + expected = t; + if (allow_exceptions) + { + throw_exception(); + } + else + { + return false; + } + } + + return true; + } + + [[noreturn]] void throw_exception() const + { + std::string error_msg = "syntax error - "; + if (last_token == token_type::parse_error) + { + error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" + + m_lexer.get_token_string() + "'"; + } + else + { + error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token)); + } + + if (expected != token_type::uninitialized) + { + error_msg += "; expected " + std::string(lexer_t::token_type_name(expected)); + } + + JSON_THROW(parse_error::create(101, m_lexer.get_position(), error_msg)); + } + + private: + /// current level of recursion + int depth = 0; + /// callback function + const parser_callback_t callback = nullptr; + /// the type of the last read token + token_type last_token = token_type::uninitialized; + /// the lexer + lexer_t m_lexer; + /// whether a syntax error occurred + bool errored = false; + /// possible reason for the syntax error + token_type expected = token_type::uninitialized; + /// whether to throw exceptions in case of errors + const bool allow_exceptions = true; +}; +} +} + +#endif + +/*** End of inlined file: parser.hpp ***/ + + +/*** Start of inlined file: primitive_iterator.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP + +#include // not +#include // ptrdiff_t +#include // numeric_limits +#include // ostream + +namespace nlohmann +{ +namespace detail +{ +/* +@brief an iterator for primitive JSON types + +This class models an iterator for primitive JSON types (boolean, number, +string). It's only purpose is to allow the iterator/const_iterator classes +to "iterate" over primitive values. Internally, the iterator is modeled by +a `difference_type` variable. Value begin_value (`0`) models the begin, +end_value (`1`) models past the end. +*/ +class primitive_iterator_t +{ + public: + using difference_type = std::ptrdiff_t; + + constexpr difference_type get_value() const noexcept + { + return m_it; + } + + /// set iterator to a defined beginning + void set_begin() noexcept + { + m_it = begin_value; + } + + /// set iterator to a defined past the end + void set_end() noexcept + { + m_it = end_value; + } + + /// return whether the iterator can be dereferenced + constexpr bool is_begin() const noexcept + { + return m_it == begin_value; + } + + /// return whether the iterator is at end + constexpr bool is_end() const noexcept + { + return m_it == end_value; + } + + friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it == rhs.m_it; + } + + friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it < rhs.m_it; + } + + primitive_iterator_t operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it - rhs.m_it; + } + + friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) + { + return os << it.m_it; + } + + primitive_iterator_t& operator++() + { + ++m_it; + return *this; + } + + primitive_iterator_t const operator++(int) + { + auto result = *this; + m_it++; + return result; + } + + primitive_iterator_t& operator--() + { + --m_it; + return *this; + } + + primitive_iterator_t const operator--(int) + { + auto result = *this; + m_it--; + return result; + } + + primitive_iterator_t& operator+=(difference_type n) + { + m_it += n; + return *this; + } + + primitive_iterator_t& operator-=(difference_type n) + { + m_it -= n; + return *this; + } + + private: + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; + + /// iterator as signed integer type + difference_type m_it = (std::numeric_limits::min)(); +}; +} +} + +#endif + +/*** End of inlined file: primitive_iterator.hpp ***/ + + +/*** Start of inlined file: internal_iterator.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP + + +/*** Start of inlined file: primitive_iterator.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP + +#include // not +#include // ptrdiff_t +#include // numeric_limits +#include // ostream + +namespace nlohmann +{ +namespace detail +{ +/* +@brief an iterator for primitive JSON types + +This class models an iterator for primitive JSON types (boolean, number, +string). It's only purpose is to allow the iterator/const_iterator classes +to "iterate" over primitive values. Internally, the iterator is modeled by +a `difference_type` variable. Value begin_value (`0`) models the begin, +end_value (`1`) models past the end. +*/ +class primitive_iterator_t +{ + public: + using difference_type = std::ptrdiff_t; + + constexpr difference_type get_value() const noexcept + { + return m_it; + } + + /// set iterator to a defined beginning + void set_begin() noexcept + { + m_it = begin_value; + } + + /// set iterator to a defined past the end + void set_end() noexcept + { + m_it = end_value; + } + + /// return whether the iterator can be dereferenced + constexpr bool is_begin() const noexcept + { + return m_it == begin_value; + } + + /// return whether the iterator is at end + constexpr bool is_end() const noexcept + { + return m_it == end_value; + } + + friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it == rhs.m_it; + } + + friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it < rhs.m_it; + } + + primitive_iterator_t operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it - rhs.m_it; + } + + friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) + { + return os << it.m_it; + } + + primitive_iterator_t& operator++() + { + ++m_it; + return *this; + } + + primitive_iterator_t const operator++(int) + { + auto result = *this; + m_it++; + return result; + } + + primitive_iterator_t& operator--() + { + --m_it; + return *this; + } + + primitive_iterator_t const operator--(int) + { + auto result = *this; + m_it--; + return result; + } + + primitive_iterator_t& operator+=(difference_type n) + { + m_it += n; + return *this; + } + + primitive_iterator_t& operator-=(difference_type n) + { + m_it -= n; + return *this; + } + + private: + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; + + /// iterator as signed integer type + difference_type m_it = (std::numeric_limits::min)(); +}; +} +} + +#endif + +/*** End of inlined file: primitive_iterator.hpp ***/ + +namespace nlohmann +{ +namespace detail +{ +/*! +@brief an iterator value + +@note This structure could easily be a union, but MSVC currently does not allow +unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. +*/ +template struct internal_iterator +{ + /// iterator for JSON objects + typename BasicJsonType::object_t::iterator object_iterator {}; + /// iterator for JSON arrays + typename BasicJsonType::array_t::iterator array_iterator {}; + /// generic iterator for all other types + primitive_iterator_t primitive_iterator {}; +}; +} +} + +#endif + +/*** End of inlined file: internal_iterator.hpp ***/ + + +/*** Start of inlined file: iter_impl.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP + +#include // not +#include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next +#include // conditional, is_const, remove_const + + +/*** Start of inlined file: internal_iterator.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP + +namespace nlohmann +{ +namespace detail +{ +/*! +@brief an iterator value + +@note This structure could easily be a union, but MSVC currently does not allow +unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. +*/ +template struct internal_iterator +{ + /// iterator for JSON objects + typename BasicJsonType::object_t::iterator object_iterator {}; + /// iterator for JSON arrays + typename BasicJsonType::array_t::iterator array_iterator {}; + /// generic iterator for all other types + primitive_iterator_t primitive_iterator {}; +}; +} +} + +#endif + +/*** End of inlined file: internal_iterator.hpp ***/ + +namespace nlohmann +{ +namespace detail +{ +// forward declare, to be able to friend it later on +template class iteration_proxy; + +/*! +@brief a template for a bidirectional iterator for the @ref basic_json class + +This class implements a both iterators (iterator and const_iterator) for the +@ref basic_json class. + +@note An iterator is called *initialized* when a pointer to a JSON value has + been set (e.g., by a constructor or a copy assignment). If the iterator is + default-constructed, it is *uninitialized* and most methods are undefined. + **The library uses assertions to detect calls on uninitialized iterators.** + +@requirement The class satisfies the following concept requirements: +- +[BidirectionalIterator](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator): + The iterator that can be moved can be moved in both directions (i.e. + incremented and decremented). + +@since version 1.0.0, simplified in version 2.0.9, change to bidirectional + iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593) +*/ +template +class iter_impl +{ + /// allow basic_json to access private members + friend iter_impl::value, typename std::remove_const::type, const BasicJsonType>::type>; + friend BasicJsonType; + friend iteration_proxy; + + using object_t = typename BasicJsonType::object_t; + using array_t = typename BasicJsonType::array_t; + // make sure BasicJsonType is basic_json or const basic_json + static_assert(is_basic_json::type>::value, + "iter_impl only accepts (const) basic_json"); + + public: + + /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. + /// The C++ Standard has never required user-defined iterators to derive from std::iterator. + /// A user-defined iterator should provide publicly accessible typedefs named + /// iterator_category, value_type, difference_type, pointer, and reference. + /// Note that value_type is required to be non-const, even for constant iterators. + using iterator_category = std::bidirectional_iterator_tag; + + /// the type of the values when the iterator is dereferenced + using value_type = typename BasicJsonType::value_type; + /// a type to represent differences between iterators + using difference_type = typename BasicJsonType::difference_type; + /// defines a pointer to the type iterated over (value_type) + using pointer = typename std::conditional::value, + typename BasicJsonType::const_pointer, + typename BasicJsonType::pointer>::type; + /// defines a reference to the type iterated over (value_type) + using reference = + typename std::conditional::value, + typename BasicJsonType::const_reference, + typename BasicJsonType::reference>::type; + + /// default constructor + iter_impl() = default; + + /*! + @brief constructor for a given JSON instance + @param[in] object pointer to a JSON object for this iterator + @pre object != nullptr + @post The iterator is initialized; i.e. `m_object != nullptr`. + */ + explicit iter_impl(pointer object) noexcept : m_object(object) + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = typename object_t::iterator(); + break; + } + + case value_t::array: + { + m_it.array_iterator = typename array_t::iterator(); + break; + } + + default: + { + m_it.primitive_iterator = primitive_iterator_t(); + break; + } + } + } + + /*! + @note The conventional copy constructor and copy assignment are implicitly + defined. Combined with the following converting constructor and + assignment, they support: (1) copy from iterator to iterator, (2) + copy from const iterator to const iterator, and (3) conversion from + iterator to const iterator. However conversion from const iterator + to iterator is not defined. + */ + + /*! + @brief converting constructor + @param[in] other non-const iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl(const iter_impl::type>& other) noexcept + : m_object(other.m_object), m_it(other.m_it) {} + + /*! + @brief converting assignment + @param[in,out] other non-const iterator to copy from + @return const/non-const iterator + @note It is not checked whether @a other is initialized. + */ + iter_impl& operator=(const iter_impl::type>& other) noexcept + { + m_object = other.m_object; + m_it = other.m_it; + return *this; + } + + private: + /*! + @brief set the iterator to the first value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_begin() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = m_object->m_value.object->begin(); + break; + } + + case value_t::array: + { + m_it.array_iterator = m_object->m_value.array->begin(); + break; + } + + case value_t::null: + { + // set to end so begin()==end() is true: null is empty + m_it.primitive_iterator.set_end(); + break; + } + + default: + { + m_it.primitive_iterator.set_begin(); + break; + } + } + } + + /*! + @brief set the iterator past the last value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_end() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = m_object->m_value.object->end(); + break; + } + + case value_t::array: + { + m_it.array_iterator = m_object->m_value.array->end(); + break; + } + + default: + { + m_it.primitive_iterator.set_end(); + break; + } + } + } + + public: + /*! + @brief return a reference to the value pointed to by the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator*() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return m_it.object_iterator->second; + } + + case value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return *m_it.array_iterator; + } + + case value_t::null: + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + + default: + { + if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) + { + return *m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + } + } + } + + /*! + @brief dereference the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + pointer operator->() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return &(m_it.object_iterator->second); + } + + case value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return &*m_it.array_iterator; + } + + default: + { + if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) + { + return m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + } + } + } + + /*! + @brief post-increment (it++) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl const operator++(int) + { + auto result = *this; + ++(*this); + return result; + } + + /*! + @brief pre-increment (++it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator++() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + std::advance(m_it.object_iterator, 1); + break; + } + + case value_t::array: + { + std::advance(m_it.array_iterator, 1); + break; + } + + default: + { + ++m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief post-decrement (it--) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl const operator--(int) + { + auto result = *this; + --(*this); + return result; + } + + /*! + @brief pre-decrement (--it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator--() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + std::advance(m_it.object_iterator, -1); + break; + } + + case value_t::array: + { + std::advance(m_it.array_iterator, -1); + break; + } + + default: + { + --m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief comparison: equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator==(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (JSON_UNLIKELY(m_object != other.m_object)) + { + JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); + } + + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + return (m_it.object_iterator == other.m_it.object_iterator); + + case value_t::array: + return (m_it.array_iterator == other.m_it.array_iterator); + + default: + return (m_it.primitive_iterator == other.m_it.primitive_iterator); + } + } + + /*! + @brief comparison: not equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator!=(const iter_impl& other) const + { + return not operator==(other); + } + + /*! + @brief comparison: smaller + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (JSON_UNLIKELY(m_object != other.m_object)) + { + JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); + } + + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators")); + + case value_t::array: + return (m_it.array_iterator < other.m_it.array_iterator); + + default: + return (m_it.primitive_iterator < other.m_it.primitive_iterator); + } + } + + /*! + @brief comparison: less than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<=(const iter_impl& other) const + { + return not other.operator < (*this); + } + + /*! + @brief comparison: greater than + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>(const iter_impl& other) const + { + return not operator<=(other); + } + + /*! + @brief comparison: greater than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>=(const iter_impl& other) const + { + return not operator<(other); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator+=(difference_type i) + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); + + case value_t::array: + { + std::advance(m_it.array_iterator, i); + break; + } + + default: + { + m_it.primitive_iterator += i; + break; + } + } + + return *this; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator-=(difference_type i) + { + return operator+=(-i); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator+(difference_type i) const + { + auto result = *this; + result += i; + return result; + } + + /*! + @brief addition of distance and iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + friend iter_impl operator+(difference_type i, const iter_impl& it) + { + auto result = it; + result += i; + return result; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator-(difference_type i) const + { + auto result = *this; + result -= i; + return result; + } + + /*! + @brief return difference + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + difference_type operator-(const iter_impl& other) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); + + case value_t::array: + return m_it.array_iterator - other.m_it.array_iterator; + + default: + return m_it.primitive_iterator - other.m_it.primitive_iterator; + } + } + + /*! + @brief access to successor + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator[](difference_type n) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators")); + + case value_t::array: + return *std::next(m_it.array_iterator, n); + + case value_t::null: + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + + default: + { + if (JSON_LIKELY(m_it.primitive_iterator.get_value() == -n)) + { + return *m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + } + } + } + + /*! + @brief return the key of an object iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + typename object_t::key_type key() const + { + assert(m_object != nullptr); + + if (JSON_LIKELY(m_object->is_object())) + { + return m_it.object_iterator->first; + } + + JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators")); + } + + /*! + @brief return the value of an iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference value() const + { + return operator*(); + } + + private: + /// associated JSON instance + pointer m_object = nullptr; + /// the actual iterator of the associated instance + internal_iterator::type> m_it = {}; +}; +} +} + +#endif + +/*** End of inlined file: iter_impl.hpp ***/ + + +/*** Start of inlined file: iteration_proxy.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP + +#include // size_t +#include // string, to_string + +namespace nlohmann +{ +namespace detail +{ +/// proxy class for the iterator_wrapper functions +template class iteration_proxy +{ + private: + /// helper class for iteration + class iteration_proxy_internal + { + private: + /// the iterator + IteratorType anchor; + /// an index for arrays (used to create key names) + std::size_t array_index = 0; + + public: + explicit iteration_proxy_internal(IteratorType it) noexcept : anchor(it) {} + + /// dereference operator (needed for range-based for) + iteration_proxy_internal& operator*() + { + return *this; + } + + /// increment operator (needed for range-based for) + iteration_proxy_internal& operator++() + { + ++anchor; + ++array_index; + + return *this; + } + + /// inequality operator (needed for range-based for) + bool operator!=(const iteration_proxy_internal& o) const noexcept + { + return anchor != o.anchor; + } + + /// return key of the iterator + std::string key() const + { + assert(anchor.m_object != nullptr); + + switch (anchor.m_object->type()) + { + // use integer array index as key + case value_t::array: + return std::to_string(array_index); + + // use key from the object + case value_t::object: + return anchor.key(); + + // use an empty key for all primitive types + default: + return ""; + } + } + + /// return value of the iterator + typename IteratorType::reference value() const + { + return anchor.value(); + } + }; + + /// the container to iterate + typename IteratorType::reference container; + + public: + /// construct iteration proxy from a container + explicit iteration_proxy(typename IteratorType::reference cont) + : container(cont) {} + + /// return iterator begin (needed for range-based for) + iteration_proxy_internal begin() noexcept + { + return iteration_proxy_internal(container.begin()); + } + + /// return iterator end (needed for range-based for) + iteration_proxy_internal end() noexcept + { + return iteration_proxy_internal(container.end()); + } +}; +} +} + +#endif + +/*** End of inlined file: iteration_proxy.hpp ***/ + + +/*** Start of inlined file: json_reverse_iterator.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP + +#include // ptrdiff_t +#include // reverse_iterator +#include // declval + +namespace nlohmann +{ +namespace detail +{ +////////////////////// +// reverse_iterator // +////////////////////// + +/*! +@brief a template for a reverse iterator class + +@tparam Base the base iterator type to reverse. Valid types are @ref +iterator (to create @ref reverse_iterator) and @ref const_iterator (to +create @ref const_reverse_iterator). + +@requirement The class satisfies the following concept requirements: +- +[BidirectionalIterator](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator): + The iterator that can be moved can be moved in both directions (i.e. + incremented and decremented). +- [OutputIterator](http://en.cppreference.com/w/cpp/concept/OutputIterator): + It is possible to write to the pointed-to element (only if @a Base is + @ref iterator). + +@since version 1.0.0 +*/ +template +class json_reverse_iterator : public std::reverse_iterator +{ + public: + using difference_type = std::ptrdiff_t; + /// shortcut to the reverse iterator adapter + using base_iterator = std::reverse_iterator; + /// the reference type for the pointed-to element + using reference = typename Base::reference; + + /// create reverse iterator from iterator + json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept + : base_iterator(it) {} + + /// create reverse iterator from base class + json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {} + + /// post-increment (it++) + json_reverse_iterator const operator++(int) + { + return static_cast(base_iterator::operator++(1)); + } + + /// pre-increment (++it) + json_reverse_iterator& operator++() + { + return static_cast(base_iterator::operator++()); + } + + /// post-decrement (it--) + json_reverse_iterator const operator--(int) + { + return static_cast(base_iterator::operator--(1)); + } + + /// pre-decrement (--it) + json_reverse_iterator& operator--() + { + return static_cast(base_iterator::operator--()); + } + + /// add to iterator + json_reverse_iterator& operator+=(difference_type i) + { + return static_cast(base_iterator::operator+=(i)); + } + + /// add to iterator + json_reverse_iterator operator+(difference_type i) const + { + return static_cast(base_iterator::operator+(i)); + } + + /// subtract from iterator + json_reverse_iterator operator-(difference_type i) const + { + return static_cast(base_iterator::operator-(i)); + } + + /// return difference + difference_type operator-(const json_reverse_iterator& other) const + { + return base_iterator(*this) - base_iterator(other); + } + + /// access to successor + reference operator[](difference_type n) const + { + return *(this->operator+(n)); + } + + /// return the key of an object iterator + auto key() const -> decltype(std::declval().key()) + { + auto it = --this->base(); + return it.key(); + } + + /// return the value of an iterator + reference value() const + { + auto it = --this->base(); + return it.operator * (); + } +}; +} +} + +#endif + +/*** End of inlined file: json_reverse_iterator.hpp ***/ + + +/*** Start of inlined file: output_adapters.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP + +#include // copy +#include // size_t +#include // streamsize +#include // back_inserter +#include // shared_ptr, make_shared +#include // basic_ostream +#include // basic_string +#include // vector + +namespace nlohmann +{ +namespace detail +{ +/// abstract output adapter interface +template struct output_adapter_protocol +{ + virtual void write_character(CharType c) = 0; + virtual void write_characters(const CharType* s, std::size_t length) = 0; + virtual ~output_adapter_protocol() = default; +}; + +/// a type to simplify interfaces +template +using output_adapter_t = std::shared_ptr>; + +/// output adapter for byte vectors +template +class output_vector_adapter : public output_adapter_protocol +{ + public: + explicit output_vector_adapter(std::vector& vec) : v(vec) {} + + void write_character(CharType c) override + { + v.push_back(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + std::copy(s, s + length, std::back_inserter(v)); + } + + private: + std::vector& v; +}; + +/// output adapter for output streams +template +class output_stream_adapter : public output_adapter_protocol +{ + public: + explicit output_stream_adapter(std::basic_ostream& s) : stream(s) {} + + void write_character(CharType c) override + { + stream.put(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + stream.write(s, static_cast(length)); + } + + private: + std::basic_ostream& stream; +}; + +/// output adapter for basic_string +template +class output_string_adapter : public output_adapter_protocol +{ + public: + explicit output_string_adapter(std::basic_string& s) : str(s) {} + + void write_character(CharType c) override + { + str.push_back(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + str.append(s, length); + } + + private: + std::basic_string& str; +}; + +template +class output_adapter +{ + public: + output_adapter(std::vector& vec) + : oa(std::make_shared>(vec)) {} + + output_adapter(std::basic_ostream& s) + : oa(std::make_shared>(s)) {} + + output_adapter(std::basic_string& s) + : oa(std::make_shared>(s)) {} + + operator output_adapter_t() + { + return oa; + } + + private: + output_adapter_t oa = nullptr; +}; +} +} + +#endif + +/*** End of inlined file: output_adapters.hpp ***/ + + +/*** Start of inlined file: binary_reader.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP + +#include // generate_n +#include // array +#include // assert +#include // ldexp +#include // size_t +#include // uint8_t, uint16_t, uint32_t, uint64_t +#include // memcpy +#include // setw, setfill +#include // hex +#include // back_inserter +#include // numeric_limits +#include // stringstream +#include // char_traits, string +#include // make_pair, move + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// binary reader // +/////////////////// + +/*! +@brief deserialization of CBOR and MessagePack values +*/ +template +class binary_reader +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + + public: + /*! + @brief create a binary reader + + @param[in] adapter input adapter to read from + */ + explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter)) + { + assert(ia); + } + + /*! + @brief create a JSON value from CBOR input + + @param[in] strict whether to expect the input to be consumed completed + @return JSON value created from CBOR input + + @throw parse_error.110 if input ended unexpectedly or the end of file was + not reached when @a strict was set to true + @throw parse_error.112 if unsupported byte was read + */ + BasicJsonType parse_cbor(const bool strict) + { + const auto res = parse_cbor_internal(); + if (strict) + { + get(); + check_eof(true); + } + return res; + } + + /*! + @brief create a JSON value from MessagePack input + + @param[in] strict whether to expect the input to be consumed completed + @return JSON value created from MessagePack input + + @throw parse_error.110 if input ended unexpectedly or the end of file was + not reached when @a strict was set to true + @throw parse_error.112 if unsupported byte was read + */ + BasicJsonType parse_msgpack(const bool strict) + { + const auto res = parse_msgpack_internal(); + if (strict) + { + get(); + check_eof(true); + } + return res; + } + + /*! + @brief determine system byte order + + @return true if and only if system's byte order is little endian + + @note from http://stackoverflow.com/a/1001328/266378 + */ + static constexpr bool little_endianess(int num = 1) noexcept + { + return (*reinterpret_cast(&num) == 1); + } + + private: + /*! + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + */ + BasicJsonType parse_cbor_internal(const bool get_char = true) + { + switch (get_char ? get() : current) + { + // EOF + case std::char_traits::eof(): + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + + // Integer 0x00..0x17 (0..23) + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + return static_cast(current); + + case 0x18: // Unsigned integer (one-byte uint8_t follows) + return get_number(); + + case 0x19: // Unsigned integer (two-byte uint16_t follows) + return get_number(); + + case 0x1A: // Unsigned integer (four-byte uint32_t follows) + return get_number(); + + case 0x1B: // Unsigned integer (eight-byte uint64_t follows) + return get_number(); + + // Negative integer -1-0x00..-1-0x17 (-1..-24) + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + return static_cast(0x20 - 1 - current); + + case 0x38: // Negative integer (one-byte uint8_t follows) + { + // must be uint8_t ! + return static_cast(-1) - get_number(); + } + + case 0x39: // Negative integer -1-n (two-byte uint16_t follows) + { + return static_cast(-1) - get_number(); + } + + case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) + { + return static_cast(-1) - get_number(); + } + + case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) + { + return static_cast(-1) - + static_cast(get_number()); + } + + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + case 0x7F: // UTF-8 string (indefinite length) + { + return get_cbor_string(); + } + + // array (0x00..0x17 data items follow) + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + { + return get_cbor_array(current & 0x1F); + } + + case 0x98: // array (one-byte uint8_t for n follows) + { + return get_cbor_array(get_number()); + } + + case 0x99: // array (two-byte uint16_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9A: // array (four-byte uint32_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9B: // array (eight-byte uint64_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9F: // array (indefinite length) + { + BasicJsonType result = value_t::array; + while (get() != 0xFF) + { + result.push_back(parse_cbor_internal(false)); + } + return result; + } + + // map (0x00..0x17 pairs of data items follow) + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + { + return get_cbor_object(current & 0x1F); + } + + case 0xB8: // map (one-byte uint8_t for n follows) + { + return get_cbor_object(get_number()); + } + + case 0xB9: // map (two-byte uint16_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBA: // map (four-byte uint32_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBB: // map (eight-byte uint64_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBF: // map (indefinite length) + { + BasicJsonType result = value_t::object; + while (get() != 0xFF) + { + auto key = get_cbor_string(); + result[key] = parse_cbor_internal(); + } + return result; + } + + case 0xF4: // false + { + return false; + } + + case 0xF5: // true + { + return true; + } + + case 0xF6: // null + { + return value_t::null; + } + + case 0xF9: // Half-Precision Float (two-byte IEEE 754) + { + const int byte1 = get(); + check_eof(); + const int byte2 = get(); + check_eof(); + + // code from RFC 7049, Appendix D, Figure 3: + // As half-precision floating-point numbers were only added + // to IEEE 754 in 2008, today's programming platforms often + // still only have limited support for them. It is very + // easy to include at least decoding support for them even + // without such support. An example of a small decoder for + // half-precision floating-point numbers in the C language + // is shown in Fig. 3. + const int half = (byte1 << 8) + byte2; + const int exp = (half >> 10) & 0x1F; + const int mant = half & 0x3FF; + double val; + if (exp == 0) + { + val = std::ldexp(mant, -24); + } + else if (exp != 31) + { + val = std::ldexp(mant + 1024, exp - 25); + } + else + { + val = (mant == 0) ? std::numeric_limits::infinity() + : std::numeric_limits::quiet_NaN(); + } + return (half & 0x8000) != 0 ? -val : val; + } + + case 0xFA: // Single-Precision Float (four-byte IEEE 754) + { + return get_number(); + } + + case 0xFB: // Double-Precision Float (eight-byte IEEE 754) + { + return get_number(); + } + + default: // anything else (0xFF is handled inside the other types) + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, "error reading CBOR; last byte: 0x" + ss.str())); + } + } + } + + BasicJsonType parse_msgpack_internal() + { + switch (get()) + { + // EOF + case std::char_traits::eof(): + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + + // positive fixint + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5C: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + return static_cast(current); + + // fixmap + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + { + return get_msgpack_object(current & 0x0F); + } + + // fixarray + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + case 0x98: + case 0x99: + case 0x9A: + case 0x9B: + case 0x9C: + case 0x9D: + case 0x9E: + case 0x9F: + { + return get_msgpack_array(current & 0x0F); + } + + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + return get_msgpack_string(); + + case 0xC0: // nil + return value_t::null; + + case 0xC2: // false + return false; + + case 0xC3: // true + return true; + + case 0xCA: // float 32 + return get_number(); + + case 0xCB: // float 64 + return get_number(); + + case 0xCC: // uint 8 + return get_number(); + + case 0xCD: // uint 16 + return get_number(); + + case 0xCE: // uint 32 + return get_number(); + + case 0xCF: // uint 64 + return get_number(); + + case 0xD0: // int 8 + return get_number(); + + case 0xD1: // int 16 + return get_number(); + + case 0xD2: // int 32 + return get_number(); + + case 0xD3: // int 64 + return get_number(); + + case 0xD9: // str 8 + case 0xDA: // str 16 + case 0xDB: // str 32 + return get_msgpack_string(); + + case 0xDC: // array 16 + { + return get_msgpack_array(get_number()); + } + + case 0xDD: // array 32 + { + return get_msgpack_array(get_number()); + } + + case 0xDE: // map 16 + { + return get_msgpack_object(get_number()); + } + + case 0xDF: // map 32 + { + return get_msgpack_object(get_number()); + } + + // positive fixint + case 0xE0: + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xED: + case 0xEE: + case 0xEF: + case 0xF0: + case 0xF1: + case 0xF2: + case 0xF3: + case 0xF4: + case 0xF5: + case 0xF6: + case 0xF7: + case 0xF8: + case 0xF9: + case 0xFA: + case 0xFB: + case 0xFC: + case 0xFD: + case 0xFE: + case 0xFF: + return static_cast(current); + + default: // anything else + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, + "error reading MessagePack; last byte: 0x" + ss.str())); + } + } + } + + /*! + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a -'ve valued + `std::char_traits::eof()` in that case. + + @return character read from the input + */ + int get() + { + ++chars_read; + return (current = ia->get_character()); + } + + /* + @brief read a number from the input + + @tparam NumberType the type of the number + + @return number of type @a NumberType + + @note This function needs to respect the system's endianess, because + bytes in CBOR and MessagePack are stored in network order (big + endian) and therefore need reordering on little endian systems. + + @throw parse_error.110 if input has less than `sizeof(NumberType)` bytes + */ + template NumberType get_number() + { + // step 1: read input into array with system's byte order + std::array vec; + for (std::size_t i = 0; i < sizeof(NumberType); ++i) + { + get(); + check_eof(); + + // reverse byte order prior to conversion if necessary + if (is_little_endian) + { + vec[sizeof(NumberType) - i - 1] = static_cast(current); + } + else + { + vec[i] = static_cast(current); // LCOV_EXCL_LINE + } + } + + // step 2: convert array into number of type T and return + NumberType result; + std::memcpy(&result, vec.data(), sizeof(NumberType)); + return result; + } + + /*! + @brief create a string by reading characters from the input + + @param[in] len number of bytes to read + + @note We can not reserve @a len bytes for the result, because @a len + may be too large. Usually, @ref check_eof() detects the end of + the input before we run out of string memory. + + @return string created by reading @a len bytes + + @throw parse_error.110 if input has less than @a len bytes + */ + template + std::string get_string(const NumberType len) + { + std::string result; + std::generate_n(std::back_inserter(result), len, [this]() + { + get(); + check_eof(); + return static_cast(current); + }); + return result; + } + + /*! + @brief reads a CBOR string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + Additionally, CBOR's strings with indefinite lengths are supported. + + @return string + + @throw parse_error.110 if input ended + @throw parse_error.113 if an unexpected byte is read + */ + std::string get_cbor_string() + { + check_eof(); + + switch (current) + { + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + { + return get_string(current & 0x1F); + } + + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + { + return get_string(get_number()); + } + + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + { + return get_string(get_number()); + } + + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + { + return get_string(get_number()); + } + + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + { + return get_string(get_number()); + } + + case 0x7F: // UTF-8 string (indefinite length) + { + std::string result; + while (get() != 0xFF) + { + check_eof(); + result.push_back(static_cast(current)); + } + return result; + } + + default: + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, "expected a CBOR string; last byte: 0x" + ss.str())); + } + } + } + + template + BasicJsonType get_cbor_array(const NumberType len) + { + BasicJsonType result = value_t::array; + std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() + { + return parse_cbor_internal(); + }); + return result; + } + + template + BasicJsonType get_cbor_object(const NumberType len) + { + BasicJsonType result = value_t::object; + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + len, [this]() + { + get(); + auto key = get_cbor_string(); + auto val = parse_cbor_internal(); + return std::make_pair(std::move(key), std::move(val)); + }); + return result; + } + + /*! + @brief reads a MessagePack string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + + @return string + + @throw parse_error.110 if input ended + @throw parse_error.113 if an unexpected byte is read + */ + std::string get_msgpack_string() + { + check_eof(); + + switch (current) + { + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + { + return get_string(current & 0x1F); + } + + case 0xD9: // str 8 + { + return get_string(get_number()); + } + + case 0xDA: // str 16 + { + return get_string(get_number()); + } + + case 0xDB: // str 32 + { + return get_string(get_number()); + } + + default: + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, + "expected a MessagePack string; last byte: 0x" + ss.str())); + } + } + } + + template + BasicJsonType get_msgpack_array(const NumberType len) + { + BasicJsonType result = value_t::array; + std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() + { + return parse_msgpack_internal(); + }); + return result; + } + + template + BasicJsonType get_msgpack_object(const NumberType len) + { + BasicJsonType result = value_t::object; + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + len, [this]() + { + get(); + auto key = get_msgpack_string(); + auto val = parse_msgpack_internal(); + return std::make_pair(std::move(key), std::move(val)); + }); + return result; + } + + /*! + @brief check if input ended + @throw parse_error.110 if input ended + */ + void check_eof(const bool expect_eof = false) const + { + if (expect_eof) + { + if (JSON_UNLIKELY(current != std::char_traits::eof())) + { + JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); + } + } + else + { + if (JSON_UNLIKELY(current == std::char_traits::eof())) + { + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + } + } + } + + private: + /// input adapter + input_adapter_t ia = nullptr; + + /// the current character + int current = std::char_traits::eof(); + + /// the number of characters read + std::size_t chars_read = 0; + + /// whether we can assume little endianess + const bool is_little_endian = little_endianess(); +}; +} +} + +#endif + +/*** End of inlined file: binary_reader.hpp ***/ + + +/*** Start of inlined file: binary_writer.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP + +#include // reverse +#include // array +#include // uint8_t, uint16_t, uint32_t, uint64_t +#include // memcpy +#include // numeric_limits + + +/*** Start of inlined file: binary_reader.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP + +#include // generate_n +#include // array +#include // assert +#include // ldexp +#include // size_t +#include // uint8_t, uint16_t, uint32_t, uint64_t +#include // memcpy +#include // setw, setfill +#include // hex +#include // back_inserter +#include // numeric_limits +#include // stringstream +#include // char_traits, string +#include // make_pair, move + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// binary reader // +/////////////////// + +/*! +@brief deserialization of CBOR and MessagePack values +*/ +template +class binary_reader +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + + public: + /*! + @brief create a binary reader + + @param[in] adapter input adapter to read from + */ + explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter)) + { + assert(ia); + } + + /*! + @brief create a JSON value from CBOR input + + @param[in] strict whether to expect the input to be consumed completed + @return JSON value created from CBOR input + + @throw parse_error.110 if input ended unexpectedly or the end of file was + not reached when @a strict was set to true + @throw parse_error.112 if unsupported byte was read + */ + BasicJsonType parse_cbor(const bool strict) + { + const auto res = parse_cbor_internal(); + if (strict) + { + get(); + check_eof(true); + } + return res; + } + + /*! + @brief create a JSON value from MessagePack input + + @param[in] strict whether to expect the input to be consumed completed + @return JSON value created from MessagePack input + + @throw parse_error.110 if input ended unexpectedly or the end of file was + not reached when @a strict was set to true + @throw parse_error.112 if unsupported byte was read + */ + BasicJsonType parse_msgpack(const bool strict) + { + const auto res = parse_msgpack_internal(); + if (strict) + { + get(); + check_eof(true); + } + return res; + } + + /*! + @brief determine system byte order + + @return true if and only if system's byte order is little endian + + @note from http://stackoverflow.com/a/1001328/266378 + */ + static constexpr bool little_endianess(int num = 1) noexcept + { + return (*reinterpret_cast(&num) == 1); + } + + private: + /*! + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + */ + BasicJsonType parse_cbor_internal(const bool get_char = true) + { + switch (get_char ? get() : current) + { + // EOF + case std::char_traits::eof(): + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + + // Integer 0x00..0x17 (0..23) + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + return static_cast(current); + + case 0x18: // Unsigned integer (one-byte uint8_t follows) + return get_number(); + + case 0x19: // Unsigned integer (two-byte uint16_t follows) + return get_number(); + + case 0x1A: // Unsigned integer (four-byte uint32_t follows) + return get_number(); + + case 0x1B: // Unsigned integer (eight-byte uint64_t follows) + return get_number(); + + // Negative integer -1-0x00..-1-0x17 (-1..-24) + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + return static_cast(0x20 - 1 - current); + + case 0x38: // Negative integer (one-byte uint8_t follows) + { + // must be uint8_t ! + return static_cast(-1) - get_number(); + } + + case 0x39: // Negative integer -1-n (two-byte uint16_t follows) + { + return static_cast(-1) - get_number(); + } + + case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) + { + return static_cast(-1) - get_number(); + } + + case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) + { + return static_cast(-1) - + static_cast(get_number()); + } + + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + case 0x7F: // UTF-8 string (indefinite length) + { + return get_cbor_string(); + } + + // array (0x00..0x17 data items follow) + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + { + return get_cbor_array(current & 0x1F); + } + + case 0x98: // array (one-byte uint8_t for n follows) + { + return get_cbor_array(get_number()); + } + + case 0x99: // array (two-byte uint16_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9A: // array (four-byte uint32_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9B: // array (eight-byte uint64_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9F: // array (indefinite length) + { + BasicJsonType result = value_t::array; + while (get() != 0xFF) + { + result.push_back(parse_cbor_internal(false)); + } + return result; + } + + // map (0x00..0x17 pairs of data items follow) + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + { + return get_cbor_object(current & 0x1F); + } + + case 0xB8: // map (one-byte uint8_t for n follows) + { + return get_cbor_object(get_number()); + } + + case 0xB9: // map (two-byte uint16_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBA: // map (four-byte uint32_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBB: // map (eight-byte uint64_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBF: // map (indefinite length) + { + BasicJsonType result = value_t::object; + while (get() != 0xFF) + { + auto key = get_cbor_string(); + result[key] = parse_cbor_internal(); + } + return result; + } + + case 0xF4: // false + { + return false; + } + + case 0xF5: // true + { + return true; + } + + case 0xF6: // null + { + return value_t::null; + } + + case 0xF9: // Half-Precision Float (two-byte IEEE 754) + { + const int byte1 = get(); + check_eof(); + const int byte2 = get(); + check_eof(); + + // code from RFC 7049, Appendix D, Figure 3: + // As half-precision floating-point numbers were only added + // to IEEE 754 in 2008, today's programming platforms often + // still only have limited support for them. It is very + // easy to include at least decoding support for them even + // without such support. An example of a small decoder for + // half-precision floating-point numbers in the C language + // is shown in Fig. 3. + const int half = (byte1 << 8) + byte2; + const int exp = (half >> 10) & 0x1F; + const int mant = half & 0x3FF; + double val; + if (exp == 0) + { + val = std::ldexp(mant, -24); + } + else if (exp != 31) + { + val = std::ldexp(mant + 1024, exp - 25); + } + else + { + val = (mant == 0) ? std::numeric_limits::infinity() + : std::numeric_limits::quiet_NaN(); + } + return (half & 0x8000) != 0 ? -val : val; + } + + case 0xFA: // Single-Precision Float (four-byte IEEE 754) + { + return get_number(); + } + + case 0xFB: // Double-Precision Float (eight-byte IEEE 754) + { + return get_number(); + } + + default: // anything else (0xFF is handled inside the other types) + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, "error reading CBOR; last byte: 0x" + ss.str())); + } + } + } + + BasicJsonType parse_msgpack_internal() + { + switch (get()) + { + // EOF + case std::char_traits::eof(): + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + + // positive fixint + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5C: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + return static_cast(current); + + // fixmap + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + { + return get_msgpack_object(current & 0x0F); + } + + // fixarray + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + case 0x98: + case 0x99: + case 0x9A: + case 0x9B: + case 0x9C: + case 0x9D: + case 0x9E: + case 0x9F: + { + return get_msgpack_array(current & 0x0F); + } + + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + return get_msgpack_string(); + + case 0xC0: // nil + return value_t::null; + + case 0xC2: // false + return false; + + case 0xC3: // true + return true; + + case 0xCA: // float 32 + return get_number(); + + case 0xCB: // float 64 + return get_number(); + + case 0xCC: // uint 8 + return get_number(); + + case 0xCD: // uint 16 + return get_number(); + + case 0xCE: // uint 32 + return get_number(); + + case 0xCF: // uint 64 + return get_number(); + + case 0xD0: // int 8 + return get_number(); + + case 0xD1: // int 16 + return get_number(); + + case 0xD2: // int 32 + return get_number(); + + case 0xD3: // int 64 + return get_number(); + + case 0xD9: // str 8 + case 0xDA: // str 16 + case 0xDB: // str 32 + return get_msgpack_string(); + + case 0xDC: // array 16 + { + return get_msgpack_array(get_number()); + } + + case 0xDD: // array 32 + { + return get_msgpack_array(get_number()); + } + + case 0xDE: // map 16 + { + return get_msgpack_object(get_number()); + } + + case 0xDF: // map 32 + { + return get_msgpack_object(get_number()); + } + + // positive fixint + case 0xE0: + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xED: + case 0xEE: + case 0xEF: + case 0xF0: + case 0xF1: + case 0xF2: + case 0xF3: + case 0xF4: + case 0xF5: + case 0xF6: + case 0xF7: + case 0xF8: + case 0xF9: + case 0xFA: + case 0xFB: + case 0xFC: + case 0xFD: + case 0xFE: + case 0xFF: + return static_cast(current); + + default: // anything else + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, + "error reading MessagePack; last byte: 0x" + ss.str())); + } + } + } + + /*! + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a -'ve valued + `std::char_traits::eof()` in that case. + + @return character read from the input + */ + int get() + { + ++chars_read; + return (current = ia->get_character()); + } + + /* + @brief read a number from the input + + @tparam NumberType the type of the number + + @return number of type @a NumberType + + @note This function needs to respect the system's endianess, because + bytes in CBOR and MessagePack are stored in network order (big + endian) and therefore need reordering on little endian systems. + + @throw parse_error.110 if input has less than `sizeof(NumberType)` bytes + */ + template NumberType get_number() + { + // step 1: read input into array with system's byte order + std::array vec; + for (std::size_t i = 0; i < sizeof(NumberType); ++i) + { + get(); + check_eof(); + + // reverse byte order prior to conversion if necessary + if (is_little_endian) + { + vec[sizeof(NumberType) - i - 1] = static_cast(current); + } + else + { + vec[i] = static_cast(current); // LCOV_EXCL_LINE + } + } + + // step 2: convert array into number of type T and return + NumberType result; + std::memcpy(&result, vec.data(), sizeof(NumberType)); + return result; + } + + /*! + @brief create a string by reading characters from the input + + @param[in] len number of bytes to read + + @note We can not reserve @a len bytes for the result, because @a len + may be too large. Usually, @ref check_eof() detects the end of + the input before we run out of string memory. + + @return string created by reading @a len bytes + + @throw parse_error.110 if input has less than @a len bytes + */ + template + std::string get_string(const NumberType len) + { + std::string result; + std::generate_n(std::back_inserter(result), len, [this]() + { + get(); + check_eof(); + return static_cast(current); + }); + return result; + } + + /*! + @brief reads a CBOR string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + Additionally, CBOR's strings with indefinite lengths are supported. + + @return string + + @throw parse_error.110 if input ended + @throw parse_error.113 if an unexpected byte is read + */ + std::string get_cbor_string() + { + check_eof(); + + switch (current) + { + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + { + return get_string(current & 0x1F); + } + + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + { + return get_string(get_number()); + } + + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + { + return get_string(get_number()); + } + + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + { + return get_string(get_number()); + } + + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + { + return get_string(get_number()); + } + + case 0x7F: // UTF-8 string (indefinite length) + { + std::string result; + while (get() != 0xFF) + { + check_eof(); + result.push_back(static_cast(current)); + } + return result; + } + + default: + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, "expected a CBOR string; last byte: 0x" + ss.str())); + } + } + } + + template + BasicJsonType get_cbor_array(const NumberType len) + { + BasicJsonType result = value_t::array; + std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() + { + return parse_cbor_internal(); + }); + return result; + } + + template + BasicJsonType get_cbor_object(const NumberType len) + { + BasicJsonType result = value_t::object; + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + len, [this]() + { + get(); + auto key = get_cbor_string(); + auto val = parse_cbor_internal(); + return std::make_pair(std::move(key), std::move(val)); + }); + return result; + } + + /*! + @brief reads a MessagePack string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + + @return string + + @throw parse_error.110 if input ended + @throw parse_error.113 if an unexpected byte is read + */ + std::string get_msgpack_string() + { + check_eof(); + + switch (current) + { + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + { + return get_string(current & 0x1F); + } + + case 0xD9: // str 8 + { + return get_string(get_number()); + } + + case 0xDA: // str 16 + { + return get_string(get_number()); + } + + case 0xDB: // str 32 + { + return get_string(get_number()); + } + + default: + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, + "expected a MessagePack string; last byte: 0x" + ss.str())); + } + } + } + + template + BasicJsonType get_msgpack_array(const NumberType len) + { + BasicJsonType result = value_t::array; + std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() + { + return parse_msgpack_internal(); + }); + return result; + } + + template + BasicJsonType get_msgpack_object(const NumberType len) + { + BasicJsonType result = value_t::object; + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + len, [this]() + { + get(); + auto key = get_msgpack_string(); + auto val = parse_msgpack_internal(); + return std::make_pair(std::move(key), std::move(val)); + }); + return result; + } + + /*! + @brief check if input ended + @throw parse_error.110 if input ended + */ + void check_eof(const bool expect_eof = false) const + { + if (expect_eof) + { + if (JSON_UNLIKELY(current != std::char_traits::eof())) + { + JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); + } + } + else + { + if (JSON_UNLIKELY(current == std::char_traits::eof())) + { + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + } + } + } + + private: + /// input adapter + input_adapter_t ia = nullptr; + + /// the current character + int current = std::char_traits::eof(); + + /// the number of characters read + std::size_t chars_read = 0; + + /// whether we can assume little endianess + const bool is_little_endian = little_endianess(); +}; +} +} + +#endif + +/*** End of inlined file: binary_reader.hpp ***/ + + +/*** Start of inlined file: output_adapters.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP + +#include // copy +#include // size_t +#include // streamsize +#include // back_inserter +#include // shared_ptr, make_shared +#include // basic_ostream +#include // basic_string +#include // vector + +namespace nlohmann +{ +namespace detail +{ +/// abstract output adapter interface +template struct output_adapter_protocol +{ + virtual void write_character(CharType c) = 0; + virtual void write_characters(const CharType* s, std::size_t length) = 0; + virtual ~output_adapter_protocol() = default; +}; + +/// a type to simplify interfaces +template +using output_adapter_t = std::shared_ptr>; + +/// output adapter for byte vectors +template +class output_vector_adapter : public output_adapter_protocol +{ + public: + explicit output_vector_adapter(std::vector& vec) : v(vec) {} + + void write_character(CharType c) override + { + v.push_back(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + std::copy(s, s + length, std::back_inserter(v)); + } + + private: + std::vector& v; +}; + +/// output adapter for output streams +template +class output_stream_adapter : public output_adapter_protocol +{ + public: + explicit output_stream_adapter(std::basic_ostream& s) : stream(s) {} + + void write_character(CharType c) override + { + stream.put(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + stream.write(s, static_cast(length)); + } + + private: + std::basic_ostream& stream; +}; + +/// output adapter for basic_string +template +class output_string_adapter : public output_adapter_protocol +{ + public: + explicit output_string_adapter(std::basic_string& s) : str(s) {} + + void write_character(CharType c) override + { + str.push_back(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + str.append(s, length); + } + + private: + std::basic_string& str; +}; + +template +class output_adapter +{ + public: + output_adapter(std::vector& vec) + : oa(std::make_shared>(vec)) {} + + output_adapter(std::basic_ostream& s) + : oa(std::make_shared>(s)) {} + + output_adapter(std::basic_string& s) + : oa(std::make_shared>(s)) {} + + operator output_adapter_t() + { + return oa; + } + + private: + output_adapter_t oa = nullptr; +}; +} +} + +#endif + +/*** End of inlined file: output_adapters.hpp ***/ + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// binary writer // +/////////////////// + +/*! +@brief serialization to CBOR and MessagePack values +*/ +template +class binary_writer +{ + public: + /*! + @brief create a binary writer + + @param[in] adapter output adapter to write to + */ + explicit binary_writer(output_adapter_t adapter) : oa(adapter) + { + assert(oa); + } + + /*! + @brief[in] j JSON value to serialize + */ + void write_cbor(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::null: + { + oa->write_character(static_cast(0xF6)); + break; + } + + case value_t::boolean: + { + oa->write_character(j.m_value.boolean + ? static_cast(0xF5) + : static_cast(0xF4)); + break; + } + + case value_t::number_integer: + { + if (j.m_value.number_integer >= 0) + { + // CBOR does not differentiate between positive signed + // integers and unsigned integers. Therefore, we used the + // code from the value_t::number_unsigned case here. + if (j.m_value.number_integer <= 0x17) + { + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x18)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x19)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x1A)); + write_number(static_cast(j.m_value.number_integer)); + } + else + { + oa->write_character(static_cast(0x1B)); + write_number(static_cast(j.m_value.number_integer)); + } + } + else + { + // The conversions below encode the sign in the first + // byte, and the value is converted to a positive number. + const auto positive_number = -1 - j.m_value.number_integer; + if (j.m_value.number_integer >= -24) + { + write_number(static_cast(0x20 + positive_number)); + } + else if (positive_number <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x38)); + write_number(static_cast(positive_number)); + } + else if (positive_number <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x39)); + write_number(static_cast(positive_number)); + } + else if (positive_number <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x3A)); + write_number(static_cast(positive_number)); + } + else + { + oa->write_character(static_cast(0x3B)); + write_number(static_cast(positive_number)); + } + } + break; + } + + case value_t::number_unsigned: + { + if (j.m_value.number_unsigned <= 0x17) + { + write_number(static_cast(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x18)); + write_number(static_cast(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x19)); + write_number(static_cast(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x1A)); + write_number(static_cast(j.m_value.number_unsigned)); + } + else + { + oa->write_character(static_cast(0x1B)); + write_number(static_cast(j.m_value.number_unsigned)); + } + break; + } + + case value_t::number_float: // Double-Precision Float + { + oa->write_character(static_cast(0xFB)); + write_number(j.m_value.number_float); + break; + } + + case value_t::string: + { + // step 1: write control byte and the string length + const auto N = j.m_value.string->size(); + if (N <= 0x17) + { + write_number(static_cast(0x60 + N)); + } + else if (N <= 0xFF) + { + oa->write_character(static_cast(0x78)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFF) + { + oa->write_character(static_cast(0x79)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFFFFFF) + { + oa->write_character(static_cast(0x7A)); + write_number(static_cast(N)); + } + // LCOV_EXCL_START + else if (N <= 0xFFFFFFFFFFFFFFFF) + { + oa->write_character(static_cast(0x7B)); + write_number(static_cast(N)); + } + // LCOV_EXCL_STOP + + // step 2: write the string + oa->write_characters( + reinterpret_cast(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + // step 1: write control byte and the array size + const auto N = j.m_value.array->size(); + if (N <= 0x17) + { + write_number(static_cast(0x80 + N)); + } + else if (N <= 0xFF) + { + oa->write_character(static_cast(0x98)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFF) + { + oa->write_character(static_cast(0x99)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFFFFFF) + { + oa->write_character(static_cast(0x9A)); + write_number(static_cast(N)); + } + // LCOV_EXCL_START + else if (N <= 0xFFFFFFFFFFFFFFFF) + { + oa->write_character(static_cast(0x9B)); + write_number(static_cast(N)); + } + // LCOV_EXCL_STOP + + // step 2: write each element + for (const auto& el : *j.m_value.array) + { + write_cbor(el); + } + break; + } + + case value_t::object: + { + // step 1: write control byte and the object size + const auto N = j.m_value.object->size(); + if (N <= 0x17) + { + write_number(static_cast(0xA0 + N)); + } + else if (N <= 0xFF) + { + oa->write_character(static_cast(0xB8)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFF) + { + oa->write_character(static_cast(0xB9)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFFFFFF) + { + oa->write_character(static_cast(0xBA)); + write_number(static_cast(N)); + } + // LCOV_EXCL_START + else if (N <= 0xFFFFFFFFFFFFFFFF) + { + oa->write_character(static_cast(0xBB)); + write_number(static_cast(N)); + } + // LCOV_EXCL_STOP + + // step 2: write each element + for (const auto& el : *j.m_value.object) + { + write_cbor(el.first); + write_cbor(el.second); + } + break; + } + + default: + break; + } + } + + /*! + @brief[in] j JSON value to serialize + */ + void write_msgpack(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::null: // nil + { + oa->write_character(static_cast(0xC0)); + break; + } + + case value_t::boolean: // true and false + { + oa->write_character(j.m_value.boolean + ? static_cast(0xC3) + : static_cast(0xC2)); + break; + } + + case value_t::number_integer: + { + if (j.m_value.number_integer >= 0) + { + // MessagePack does not differentiate between positive + // signed integers and unsigned integers. Therefore, we used + // the code from the value_t::number_unsigned case here. + if (j.m_value.number_unsigned < 128) + { + // positive fixnum + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 8 + oa->write_character(static_cast(0xCC)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 16 + oa->write_character(static_cast(0xCD)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 32 + oa->write_character(static_cast(0xCE)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 64 + oa->write_character(static_cast(0xCF)); + write_number(static_cast(j.m_value.number_integer)); + } + } + else + { + if (j.m_value.number_integer >= -32) + { + // negative fixnum + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() and + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 8 + oa->write_character(static_cast(0xD0)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() and + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 16 + oa->write_character(static_cast(0xD1)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() and + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 32 + oa->write_character(static_cast(0xD2)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() and + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 64 + oa->write_character(static_cast(0xD3)); + write_number(static_cast(j.m_value.number_integer)); + } + } + break; + } + + case value_t::number_unsigned: + { + if (j.m_value.number_unsigned < 128) + { + // positive fixnum + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 8 + oa->write_character(static_cast(0xCC)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 16 + oa->write_character(static_cast(0xCD)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 32 + oa->write_character(static_cast(0xCE)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 64 + oa->write_character(static_cast(0xCF)); + write_number(static_cast(j.m_value.number_integer)); + } + break; + } + + case value_t::number_float: // float 64 + { + oa->write_character(static_cast(0xCB)); + write_number(j.m_value.number_float); + break; + } + + case value_t::string: + { + // step 1: write control byte and the string length + const auto N = j.m_value.string->size(); + if (N <= 31) + { + // fixstr + write_number(static_cast(0xA0 | N)); + } + else if (N <= 255) + { + // str 8 + oa->write_character(static_cast(0xD9)); + write_number(static_cast(N)); + } + else if (N <= 65535) + { + // str 16 + oa->write_character(static_cast(0xDA)); + write_number(static_cast(N)); + } + else if (N <= 4294967295) + { + // str 32 + oa->write_character(static_cast(0xDB)); + write_number(static_cast(N)); + } + + // step 2: write the string + oa->write_characters( + reinterpret_cast(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + // step 1: write control byte and the array size + const auto N = j.m_value.array->size(); + if (N <= 15) + { + // fixarray + write_number(static_cast(0x90 | N)); + } + else if (N <= 0xFFFF) + { + // array 16 + oa->write_character(static_cast(0xDC)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFFFFFF) + { + // array 32 + oa->write_character(static_cast(0xDD)); + write_number(static_cast(N)); + } + + // step 2: write each element + for (const auto& el : *j.m_value.array) + { + write_msgpack(el); + } + break; + } + + case value_t::object: + { + // step 1: write control byte and the object size + const auto N = j.m_value.object->size(); + if (N <= 15) + { + // fixmap + write_number(static_cast(0x80 | (N & 0xF))); + } + else if (N <= 65535) + { + // map 16 + oa->write_character(static_cast(0xDE)); + write_number(static_cast(N)); + } + else if (N <= 4294967295) + { + // map 32 + oa->write_character(static_cast(0xDF)); + write_number(static_cast(N)); + } + + // step 2: write each element + for (const auto& el : *j.m_value.object) + { + write_msgpack(el.first); + write_msgpack(el.second); + } + break; + } + + default: + break; + } + } + + private: + /* + @brief write a number to output input + + @param[in] n number of type @a NumberType + @tparam NumberType the type of the number + + @note This function needs to respect the system's endianess, because bytes + in CBOR and MessagePack are stored in network order (big endian) and + therefore need reordering on little endian systems. + */ + template void write_number(NumberType n) + { + // step 1: write number to array of length NumberType + std::array vec; + std::memcpy(vec.data(), &n, sizeof(NumberType)); + + // step 2: write array to output (with possible reordering) + if (is_little_endian) + { + // reverse byte order prior to conversion if necessary + std::reverse(vec.begin(), vec.end()); + } + + oa->write_characters(vec.data(), sizeof(NumberType)); + } + + private: + /// whether we can assume little endianess + const bool is_little_endian = binary_reader::little_endianess(); + + /// the output + output_adapter_t oa = nullptr; +}; +} +} + +#endif + +/*** End of inlined file: binary_writer.hpp ***/ + + +/*** Start of inlined file: serializer.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_SERIALIZER_HPP +#define NLOHMANN_JSON_DETAIL_SERIALIZER_HPP + +#include // reverse, remove, fill, find, none_of +#include // array +#include // assert +#include // and, or +#include // localeconv, lconv +#include // labs, isfinite, isnan, signbit +#include // size_t, ptrdiff_t +#include // uint8_t +#include // snprintf +#include // next +#include // numeric_limits +#include // string +#include // is_same + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// serialization // +/////////////////// + +template +class serializer +{ + using string_t = typename BasicJsonType::string_t; + using number_float_t = typename BasicJsonType::number_float_t; + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + public: + /*! + @param[in] s output stream to serialize to + @param[in] ichar indentation character to use + */ + serializer(output_adapter_t s, const char ichar) + : o(std::move(s)), loc(std::localeconv()), + thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep)), + decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point)), + indent_char(ichar), indent_string(512, indent_char) {} + + // delete because of pointer members + serializer(const serializer&) = delete; + serializer& operator=(const serializer&) = delete; + + /*! + @brief internal implementation of the serialization function + + This function is called by the public member function dump and organizes + the serialization internally. The indentation level is propagated as + additional parameter. In case of arrays and objects, the function is + called recursively. + + - strings and object keys are escaped using `escape_string()` + - integer numbers are converted implicitly via `operator<<` + - floating-point numbers are converted to a string using `"%g"` format + + @param[in] val value to serialize + @param[in] pretty_print whether the output shall be pretty-printed + @param[in] indent_step the indent level + @param[in] current_indent the current indent level (only used internally) + */ + void dump(const BasicJsonType& val, const bool pretty_print, + const bool ensure_ascii, + const unsigned int indent_step, + const unsigned int current_indent = 0) + { + switch (val.m_type) + { + case value_t::object: + { + if (val.m_value.object->empty()) + { + o->write_characters("{}", 2); + return; + } + + if (pretty_print) + { + o->write_characters("{\n", 2); + + // variable to hold indentation for recursive calls + const auto new_indent = current_indent + indent_step; + if (JSON_UNLIKELY(indent_string.size() < new_indent)) + { + indent_string.resize(indent_string.size() * 2, ' '); + } + + // first n-1 elements + auto i = val.m_value.object->cbegin(); + for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) + { + o->write_characters(indent_string.c_str(), new_indent); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\": ", 3); + dump(i->second, true, ensure_ascii, indent_step, new_indent); + o->write_characters(",\n", 2); + } + + // last element + assert(i != val.m_value.object->cend()); + assert(std::next(i) == val.m_value.object->cend()); + o->write_characters(indent_string.c_str(), new_indent); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\": ", 3); + dump(i->second, true, ensure_ascii, indent_step, new_indent); + + o->write_character('\n'); + o->write_characters(indent_string.c_str(), current_indent); + o->write_character('}'); + } + else + { + o->write_character('{'); + + // first n-1 elements + auto i = val.m_value.object->cbegin(); + for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) + { + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\":", 2); + dump(i->second, false, ensure_ascii, indent_step, current_indent); + o->write_character(','); + } + + // last element + assert(i != val.m_value.object->cend()); + assert(std::next(i) == val.m_value.object->cend()); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\":", 2); + dump(i->second, false, ensure_ascii, indent_step, current_indent); + + o->write_character('}'); + } + + return; + } + + case value_t::array: + { + if (val.m_value.array->empty()) + { + o->write_characters("[]", 2); + return; + } + + if (pretty_print) + { + o->write_characters("[\n", 2); + + // variable to hold indentation for recursive calls + const auto new_indent = current_indent + indent_step; + if (JSON_UNLIKELY(indent_string.size() < new_indent)) + { + indent_string.resize(indent_string.size() * 2, ' '); + } + + // first n-1 elements + for (auto i = val.m_value.array->cbegin(); + i != val.m_value.array->cend() - 1; ++i) + { + o->write_characters(indent_string.c_str(), new_indent); + dump(*i, true, ensure_ascii, indent_step, new_indent); + o->write_characters(",\n", 2); + } + + // last element + assert(not val.m_value.array->empty()); + o->write_characters(indent_string.c_str(), new_indent); + dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent); + + o->write_character('\n'); + o->write_characters(indent_string.c_str(), current_indent); + o->write_character(']'); + } + else + { + o->write_character('['); + + // first n-1 elements + for (auto i = val.m_value.array->cbegin(); + i != val.m_value.array->cend() - 1; ++i) + { + dump(*i, false, ensure_ascii, indent_step, current_indent); + o->write_character(','); + } + + // last element + assert(not val.m_value.array->empty()); + dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent); + + o->write_character(']'); + } + + return; + } + + case value_t::string: + { + o->write_character('\"'); + dump_escaped(*val.m_value.string, ensure_ascii); + o->write_character('\"'); + return; + } + + case value_t::boolean: + { + if (val.m_value.boolean) + { + o->write_characters("true", 4); + } + else + { + o->write_characters("false", 5); + } + return; + } + + case value_t::number_integer: + { + dump_integer(val.m_value.number_integer); + return; + } + + case value_t::number_unsigned: + { + dump_integer(val.m_value.number_unsigned); + return; + } + + case value_t::number_float: + { + dump_float(val.m_value.number_float); + return; + } + + case value_t::discarded: + { + o->write_characters("", 11); + return; + } + + case value_t::null: + { + o->write_characters("null", 4); + return; + } + } + } + + private: + /*! + @brief returns the number of expected bytes following in UTF-8 string + + @param[in] u the first byte of a UTF-8 string + @return the number of expected bytes following + */ + static constexpr std::size_t bytes_following(const uint8_t u) + { + return ((u <= 127) ? 0 + : ((192 <= u and u <= 223) ? 1 + : ((224 <= u and u <= 239) ? 2 + : ((240 <= u and u <= 247) ? 3 : std::string::npos)))); + } + + /*! + @brief calculates the extra space to escape a JSON string + + @param[in] s the string to escape + @param[in] ensure_ascii whether to escape non-ASCII characters with + \uXXXX sequences + @return the number of characters required to escape string @a s + + @complexity Linear in the length of string @a s. + */ + static std::size_t extra_space(const string_t& s, + const bool ensure_ascii) noexcept + { + std::size_t res = 0; + + for (std::size_t i = 0; i < s.size(); ++i) + { + switch (s[i]) + { + // control characters that can be escaped with a backslash + case '"': + case '\\': + case '\b': + case '\f': + case '\n': + case '\r': + case '\t': + { + // from c (1 byte) to \x (2 bytes) + res += 1; + break; + } + + // control characters that need \uxxxx escaping + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x0B: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + { + // from c (1 byte) to \uxxxx (6 bytes) + res += 5; + break; + } + + default: + { + if (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F)) + { + const auto bytes = bytes_following(static_cast(s[i])); + // invalid characters will be detected by throw_if_invalid_utf8 + assert (bytes != std::string::npos); + + if (bytes == 3) + { + // codepoints that need 4 bytes (i.e., 3 additional + // bytes) in UTF-8 need a surrogate pair when \u + // escaping is used: from 4 bytes to \uxxxx\uxxxx + // (12 bytes) + res += (12 - bytes - 1); + } + else + { + // from x bytes to \uxxxx (6 bytes) + res += (6 - bytes - 1); + } + + // skip the additional bytes + i += bytes; + } + break; + } + } + } + + return res; + } + + static void escape_codepoint(int codepoint, string_t& result, std::size_t& pos) + { + // expecting a proper codepoint + assert(0x00 <= codepoint and codepoint <= 0x10FFFF); + + // the last written character was the backslash before the 'u' + assert(result[pos] == '\\'); + + // write the 'u' + result[++pos] = 'u'; + + // convert a number 0..15 to its hex representation (0..f) + static const std::array hexify = + { + { + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' + } + }; + + if (codepoint < 0x10000) + { + // codepoints U+0000..U+FFFF can be represented as \uxxxx. + result[++pos] = hexify[(codepoint >> 12) & 0x0F]; + result[++pos] = hexify[(codepoint >> 8) & 0x0F]; + result[++pos] = hexify[(codepoint >> 4) & 0x0F]; + result[++pos] = hexify[codepoint & 0x0F]; + } + else + { + // codepoints U+10000..U+10FFFF need a surrogate pair to be + // represented as \uxxxx\uxxxx. + // http://www.unicode.org/faq/utf_bom.html#utf16-4 + codepoint -= 0x10000; + const int high_surrogate = 0xD800 | ((codepoint >> 10) & 0x3FF); + const int low_surrogate = 0xDC00 | (codepoint & 0x3FF); + result[++pos] = hexify[(high_surrogate >> 12) & 0x0F]; + result[++pos] = hexify[(high_surrogate >> 8) & 0x0F]; + result[++pos] = hexify[(high_surrogate >> 4) & 0x0F]; + result[++pos] = hexify[high_surrogate & 0x0F]; + ++pos; // backslash is already in output + result[++pos] = 'u'; + result[++pos] = hexify[(low_surrogate >> 12) & 0x0F]; + result[++pos] = hexify[(low_surrogate >> 8) & 0x0F]; + result[++pos] = hexify[(low_surrogate >> 4) & 0x0F]; + result[++pos] = hexify[low_surrogate & 0x0F]; + } + + ++pos; + } + + /*! + @brief dump escaped string + + Escape a string by replacing certain special characters by a sequence of an + escape character (backslash) and another character and other control + characters by a sequence of "\u" followed by a four-digit hex + representation. The escaped string is written to output stream @a o. + + @param[in] s the string to escape + @param[in] ensure_ascii whether to escape non-ASCII characters with + \uXXXX sequences + + @complexity Linear in the length of string @a s. + */ + void dump_escaped(const string_t& s, const bool ensure_ascii) const + { + throw_if_invalid_utf8(s); + + const auto space = extra_space(s, ensure_ascii); + if (space == 0) + { + o->write_characters(s.c_str(), s.size()); + return; + } + + // create a result string of necessary size + string_t result(s.size() + space, '\\'); + std::size_t pos = 0; + + for (std::size_t i = 0; i < s.size(); ++i) + { + switch (s[i]) + { + case '"': // quotation mark (0x22) + { + result[pos + 1] = '"'; + pos += 2; + break; + } + + case '\\': // reverse solidus (0x5C) + { + // nothing to change + pos += 2; + break; + } + + case '\b': // backspace (0x08) + { + result[pos + 1] = 'b'; + pos += 2; + break; + } + + case '\f': // formfeed (0x0C) + { + result[pos + 1] = 'f'; + pos += 2; + break; + } + + case '\n': // newline (0x0A) + { + result[pos + 1] = 'n'; + pos += 2; + break; + } + + case '\r': // carriage return (0x0D) + { + result[pos + 1] = 'r'; + pos += 2; + break; + } + + case '\t': // horizontal tab (0x09) + { + result[pos + 1] = 't'; + pos += 2; + break; + } + + default: + { + // escape control characters (0x00..0x1F) or, if + // ensure_ascii parameter is used, non-ASCII characters + if ((0x00 <= s[i] and s[i] <= 0x1F) or + (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F))) + { + const auto bytes = bytes_following(static_cast(s[i])); + // invalid characters will be detected by throw_if_invalid_utf8 + assert (bytes != std::string::npos); + + // check that the additional bytes are present + assert(i + bytes < s.size()); + + // to use \uxxxx escaping, we first need to calculate + // the codepoint from the UTF-8 bytes + int codepoint = 0; + + // bytes is unsigned type: + assert(bytes <= 3); + switch (bytes) + { + case 0: + { + codepoint = s[i] & 0xFF; + break; + } + + case 1: + { + codepoint = ((s[i] & 0x3F) << 6) + + (s[i + 1] & 0x7F); + break; + } + + case 2: + { + codepoint = ((s[i] & 0x1F) << 12) + + ((s[i + 1] & 0x7F) << 6) + + (s[i + 2] & 0x7F); + break; + } + + case 3: + { + codepoint = ((s[i] & 0xF) << 18) + + ((s[i + 1] & 0x7F) << 12) + + ((s[i + 2] & 0x7F) << 6) + + (s[i + 3] & 0x7F); + break; + } + + default: + break; // LCOV_EXCL_LINE + } + + escape_codepoint(codepoint, result, pos); + i += bytes; + } + else + { + // all other characters are added as-is + result[pos++] = s[i]; + } + break; + } + } + } + + assert(pos == result.size()); + o->write_characters(result.c_str(), result.size()); + } + + /*! + @brief dump an integer + + Dump a given integer to output stream @a o. Works internally with + @a number_buffer. + + @param[in] x integer number (signed or unsigned) to dump + @tparam NumberType either @a number_integer_t or @a number_unsigned_t + */ + template::value or + std::is_same::value, + int> = 0> + void dump_integer(NumberType x) + { + // special case for "0" + if (x == 0) + { + o->write_character('0'); + return; + } + + const bool is_negative = (x <= 0) and (x != 0); // see issue #755 + std::size_t i = 0; + + while (x != 0) + { + // spare 1 byte for '\0' + assert(i < number_buffer.size() - 1); + + const auto digit = std::labs(static_cast(x % 10)); + number_buffer[i++] = static_cast('0' + digit); + x /= 10; + } + + if (is_negative) + { + // make sure there is capacity for the '-' + assert(i < number_buffer.size() - 2); + number_buffer[i++] = '-'; + } + + std::reverse(number_buffer.begin(), number_buffer.begin() + i); + o->write_characters(number_buffer.data(), i); + } + + /*! + @brief dump a floating-point number + + Dump a given floating-point number to output stream @a o. Works internally + with @a number_buffer. + + @param[in] x floating-point number to dump + */ + void dump_float(number_float_t x) + { + // NaN / inf + if (not std::isfinite(x) or std::isnan(x)) + { + o->write_characters("null", 4); + return; + } + + // get number of digits for a text -> float -> text round-trip + static constexpr auto d = std::numeric_limits::digits10; + + // the actual conversion + std::ptrdiff_t len = snprintf(number_buffer.data(), number_buffer.size(), "%.*g", d, x); + + // negative value indicates an error + assert(len > 0); + // check if buffer was large enough + assert(static_cast(len) < number_buffer.size()); + + // erase thousands separator + if (thousands_sep != '\0') + { + const auto end = std::remove(number_buffer.begin(), + number_buffer.begin() + len, thousands_sep); + std::fill(end, number_buffer.end(), '\0'); + assert((end - number_buffer.begin()) <= len); + len = (end - number_buffer.begin()); + } + + // convert decimal point to '.' + if (decimal_point != '\0' and decimal_point != '.') + { + const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point); + if (dec_pos != number_buffer.end()) + { + *dec_pos = '.'; + } + } + + o->write_characters(number_buffer.data(), static_cast(len)); + + // determine if need to append ".0" + const bool value_is_int_like = + std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1, + [](char c) + { + return (c == '.' or c == 'e'); + }); + + if (value_is_int_like) + { + o->write_characters(".0", 2); + } + } + + /*! + @brief check whether a string is UTF-8 encoded + + The function checks each byte of a string whether it is UTF-8 encoded. The + result of the check is stored in the @a state parameter. The function must + be called initially with state 0 (accept). State 1 means the string must + be rejected, because the current byte is not allowed. If the string is + completely processed, but the state is non-zero, the string ended + prematurely; that is, the last byte indicated more bytes should have + followed. + + @param[in,out] state the state of the decoding + @param[in] byte next byte to decode + + @note The function has been edited: a std::array is used and the code + point is not calculated. + + @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann + @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ + */ + static void decode(uint8_t& state, const uint8_t byte) + { + static const std::array utf8d = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF + 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF + 0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF + 0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF + 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2 + 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4 + 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6 + 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8 + } + }; + + const uint8_t type = utf8d[byte]; + state = utf8d[256u + state * 16u + type]; + } + + /*! + @brief throw an exception if a string is not UTF-8 encoded + + @param[in] str UTF-8 string to check + @throw type_error.316 if passed string is not UTF-8 encoded + + @since version 3.0.0 + */ + static void throw_if_invalid_utf8(const std::string& str) + { + // start with state 0 (= accept) + uint8_t state = 0; + + for (size_t i = 0; i < str.size(); ++i) + { + const auto byte = static_cast(str[i]); + decode(state, byte); + if (state == 1) + { + // state 1 means reject + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(byte); + JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + ss.str())); + } + } + + if (state != 0) + { + // we finish reading, but do not accept: string was incomplete + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(static_cast(str.back())); + JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + ss.str())); + } + } + + private: + /// the output of the serializer + output_adapter_t o = nullptr; + + /// a (hopefully) large enough character buffer + std::array number_buffer{{}}; + + /// the locale + const std::lconv* loc = nullptr; + /// the locale's thousand separator character + const char thousands_sep = '\0'; + /// the locale's decimal point character + const char decimal_point = '\0'; + + /// the indentation character + const char indent_char; + + /// the indentation string + string_t indent_string; +}; +} +} + +#endif + +/*** End of inlined file: serializer.hpp ***/ + + +/*** Start of inlined file: json_ref.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_JSON_REF_HPP +#define NLOHMANN_JSON_DETAIL_JSON_REF_HPP + +#include +#include + +namespace nlohmann +{ +namespace detail +{ +template +class json_ref +{ + public: + using value_type = BasicJsonType; + + json_ref(value_type&& value) + : owned_value(std::move(value)), value_ref(&owned_value), is_rvalue(true) + {} + + json_ref(const value_type& value) + : value_ref(const_cast(&value)), is_rvalue(false) + {} + + json_ref(std::initializer_list init) + : owned_value(init), value_ref(&owned_value), is_rvalue(true) + {} + + template + json_ref(Args&& ... args) + : owned_value(std::forward(args)...), value_ref(&owned_value), is_rvalue(true) + {} + + // class should be movable only + json_ref(json_ref&&) = default; + json_ref(const json_ref&) = delete; + json_ref& operator=(const json_ref&) = delete; + + value_type moved_or_copied() const + { + if (is_rvalue) + { + return std::move(*value_ref); + } + return *value_ref; + } + + value_type const& operator*() const + { + return *static_cast(value_ref); + } + + value_type const* operator->() const + { + return static_cast(value_ref); + } + + private: + mutable value_type owned_value = nullptr; + value_type* value_ref = nullptr; + const bool is_rvalue; +}; +} +} + +#endif + +/*** End of inlined file: json_ref.hpp ***/ + + +/*** Start of inlined file: adl_serializer.hpp ***/ +#ifndef NLOHMANN_JSON_ADL_SERIALIZER_HPP +#define NLOHMANN_JSON_ADL_SERIALIZER_HPP + +#include + +namespace nlohmann +{ +template +struct adl_serializer +{ + /*! + @brief convert a JSON value to any value type + + This function is usually called by the `get()` function of the + @ref basic_json class (either explicit or via conversion operators). + + @param[in] j JSON value to read from + @param[in,out] val value to write to + */ + template + static void from_json(BasicJsonType&& j, ValueType& val) noexcept( + noexcept(::nlohmann::from_json(std::forward(j), val))) + { + ::nlohmann::from_json(std::forward(j), val); + } + + /*! + @brief convert any value type to a JSON value + + This function is usually called by the constructors of the @ref basic_json + class. + + @param[in,out] j JSON value to write to + @param[in] val value to read from + */ + template + static void to_json(BasicJsonType& j, ValueType&& val) noexcept( + noexcept(::nlohmann::to_json(j, std::forward(val)))) + { + ::nlohmann::to_json(j, std::forward(val)); + } +}; +} + +#endif + +/*** End of inlined file: adl_serializer.hpp ***/ + +/*! +@brief namespace for Niels Lohmann +@see https://github.com/nlohmann +@since version 1.0.0 +*/ +namespace nlohmann +{ +class json_pointer +{ + /// allow basic_json to access private members + NLOHMANN_BASIC_JSON_TPL_DECLARATION + friend class basic_json; + + public: + /*! + @brief create JSON pointer + + Create a JSON pointer according to the syntax described in + [Section 3 of RFC6901](https://tools.ietf.org/html/rfc6901#section-3). + + @param[in] s string representing the JSON pointer; if omitted, the empty + string is assumed which references the whole JSON value + + @throw parse_error.107 if the given JSON pointer @a s is nonempty and + does not begin with a slash (`/`); see example below + + @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s + is not followed by `0` (representing `~`) or `1` (representing `/`); + see example below + + @liveexample{The example shows the construction several valid JSON + pointers as well as the exceptional behavior.,json_pointer} + + @since version 2.0.0 + */ + explicit json_pointer(const std::string& s = "") : reference_tokens(split(s)) {} + + /*! + @brief return a string representation of the JSON pointer + + @invariant For each JSON pointer `ptr`, it holds: + @code {.cpp} + ptr == json_pointer(ptr.to_string()); + @endcode + + @return a string representation of the JSON pointer + + @liveexample{The example shows the result of `to_string`., + json_pointer__to_string} + + @since version 2.0.0 + */ + std::string to_string() const noexcept + { + return std::accumulate(reference_tokens.begin(), reference_tokens.end(), + std::string{}, + [](const std::string & a, const std::string & b) + { + return a + "/" + escape(b); + }); + } + + /// @copydoc to_string() + operator std::string() const + { + return to_string(); + } + + /*! + @param[in] s reference token to be converted into an array index + + @return integer representation of @a s + + @throw out_of_range.404 if string @a s could not be converted to an integer + */ + static int array_index(const std::string& s) + { + size_t processed_chars = 0; + const int res = std::stoi(s, &processed_chars); + + // check if the string was completely read + if (JSON_UNLIKELY(processed_chars != s.size())) + { + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'")); + } + + return res; + } + + private: + /*! + @brief remove and return last reference pointer + @throw out_of_range.405 if JSON pointer has no parent + */ + std::string pop_back() + { + if (JSON_UNLIKELY(is_root())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); + } + + auto last = reference_tokens.back(); + reference_tokens.pop_back(); + return last; + } + + /// return whether pointer points to the root document + bool is_root() const + { + return reference_tokens.empty(); + } + + json_pointer top() const + { + if (JSON_UNLIKELY(is_root())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); + } + + json_pointer result = *this; + result.reference_tokens = {reference_tokens[0]}; + return result; + } + + /*! + @brief create and return a reference to the pointed to value + + @complexity Linear in the number of reference tokens. + + @throw parse_error.109 if array index is not a number + @throw type_error.313 if value cannot be unflattened + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + NLOHMANN_BASIC_JSON_TPL& get_and_create(NLOHMANN_BASIC_JSON_TPL& j) const; + + /*! + @brief return a reference to the pointed to value + + @note This version does not throw if a value is not present, but tries to + create nested values instead. For instance, calling this function + with pointer `"/this/that"` on a null value is equivalent to calling + `operator[]("this").operator[]("that")` on that value, effectively + changing the null value to an object. + + @param[in] ptr a JSON value + + @return reference to the JSON value pointed to by the JSON pointer + + @complexity Linear in the length of the JSON pointer. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + NLOHMANN_BASIC_JSON_TPL& get_unchecked(NLOHMANN_BASIC_JSON_TPL* ptr) const; + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + NLOHMANN_BASIC_JSON_TPL& get_checked(NLOHMANN_BASIC_JSON_TPL* ptr) const; + + /*! + @brief return a const reference to the pointed to value + + @param[in] ptr a JSON value + + @return const reference to the JSON value pointed to by the JSON + pointer + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + const NLOHMANN_BASIC_JSON_TPL& get_unchecked(const NLOHMANN_BASIC_JSON_TPL* ptr) const; + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + const NLOHMANN_BASIC_JSON_TPL& get_checked(const NLOHMANN_BASIC_JSON_TPL* ptr) const; + + /*! + @brief split the string input to reference tokens + + @note This function is only called by the json_pointer constructor. + All exceptions below are documented there. + + @throw parse_error.107 if the pointer is not empty or begins with '/' + @throw parse_error.108 if character '~' is not followed by '0' or '1' + */ + static std::vector split(const std::string& reference_string) + { + std::vector result; + + // special case: empty reference string -> no reference tokens + if (reference_string.empty()) + { + return result; + } + + // check if nonempty reference string begins with slash + if (JSON_UNLIKELY(reference_string[0] != '/')) + { + JSON_THROW(detail::parse_error::create(107, 1, + "JSON pointer must be empty or begin with '/' - was: '" + + reference_string + "'")); + } + + // extract the reference tokens: + // - slash: position of the last read slash (or end of string) + // - start: position after the previous slash + for ( + // search for the first slash after the first character + std::size_t slash = reference_string.find_first_of('/', 1), + // set the beginning of the first reference token + start = 1; + // we can stop if start == string::npos+1 = 0 + start != 0; + // set the beginning of the next reference token + // (will eventually be 0 if slash == std::string::npos) + start = slash + 1, + // find next slash + slash = reference_string.find_first_of('/', start)) + { + // use the text between the beginning of the reference token + // (start) and the last slash (slash). + auto reference_token = reference_string.substr(start, slash - start); + + // check reference tokens are properly escaped + for (std::size_t pos = reference_token.find_first_of('~'); + pos != std::string::npos; + pos = reference_token.find_first_of('~', pos + 1)) + { + assert(reference_token[pos] == '~'); + + // ~ must be followed by 0 or 1 + if (JSON_UNLIKELY(pos == reference_token.size() - 1 or + (reference_token[pos + 1] != '0' and + reference_token[pos + 1] != '1'))) + { + JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'")); + } + } + + // finally, store the reference token + unescape(reference_token); + result.push_back(reference_token); + } + + return result; + } + + /*! + @brief replace all occurrences of a substring by another string + + @param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t + @param[in] f the substring to replace with @a t + @param[in] t the string to replace @a f + + @pre The search string @a f must not be empty. **This precondition is + enforced with an assertion.** + + @since version 2.0.0 + */ + static void replace_substring(std::string& s, const std::string& f, + const std::string& t) + { + assert(not f.empty()); + for (auto pos = s.find(f); // find first occurrence of f + pos != std::string::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find next occurrence of f + {} + } + + /// escape "~"" to "~0" and "/" to "~1" + static std::string escape(std::string s) + { + replace_substring(s, "~", "~0"); + replace_substring(s, "/", "~1"); + return s; + } + + /// unescape "~1" to tilde and "~0" to slash (order is important!) + static void unescape(std::string& s) + { + replace_substring(s, "~1", "/"); + replace_substring(s, "~0", "~"); + } + + /*! + @param[in] reference_string the reference string to the current value + @param[in] value the value to consider + @param[in,out] result the result object to insert values to + + @note Empty objects or arrays are flattened to `null`. + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + static void flatten(const std::string& reference_string, + const NLOHMANN_BASIC_JSON_TPL& value, + NLOHMANN_BASIC_JSON_TPL& result); + + /*! + @param[in] value flattened JSON + + @return unflattened JSON + + @throw parse_error.109 if array index is not a number + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitive + @throw type_error.313 if value cannot be unflattened + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + static NLOHMANN_BASIC_JSON_TPL + unflatten(const NLOHMANN_BASIC_JSON_TPL& value); + + friend bool operator==(json_pointer const& lhs, + json_pointer const& rhs) noexcept; + + friend bool operator!=(json_pointer const& lhs, + json_pointer const& rhs) noexcept; + + /// the reference tokens + std::vector reference_tokens; +}; + +/*! +@brief a class to store JSON values + +@tparam ObjectType type for JSON objects (`std::map` by default; will be used +in @ref object_t) +@tparam ArrayType type for JSON arrays (`std::vector` by default; will be used +in @ref array_t) +@tparam StringType type for JSON strings and object keys (`std::string` by +default; will be used in @ref string_t) +@tparam BooleanType type for JSON booleans (`bool` by default; will be used +in @ref boolean_t) +@tparam NumberIntegerType type for JSON integer numbers (`int64_t` by +default; will be used in @ref number_integer_t) +@tparam NumberUnsignedType type for JSON unsigned integer numbers (@c +`uint64_t` by default; will be used in @ref number_unsigned_t) +@tparam NumberFloatType type for JSON floating-point numbers (`double` by +default; will be used in @ref number_float_t) +@tparam AllocatorType type of the allocator to use (`std::allocator` by +default) +@tparam JSONSerializer the serializer to resolve internal calls to `to_json()` +and `from_json()` (@ref adl_serializer by default) + +@requirement The class satisfies the following concept requirements: +- Basic + - [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible): + JSON values can be default constructed. The result will be a JSON null + value. + - [MoveConstructible](http://en.cppreference.com/w/cpp/concept/MoveConstructible): + A JSON value can be constructed from an rvalue argument. + - [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible): + A JSON value can be copy-constructed from an lvalue expression. + - [MoveAssignable](http://en.cppreference.com/w/cpp/concept/MoveAssignable): + A JSON value van be assigned from an rvalue argument. + - [CopyAssignable](http://en.cppreference.com/w/cpp/concept/CopyAssignable): + A JSON value can be copy-assigned from an lvalue expression. + - [Destructible](http://en.cppreference.com/w/cpp/concept/Destructible): + JSON values can be destructed. +- Layout + - [StandardLayoutType](http://en.cppreference.com/w/cpp/concept/StandardLayoutType): + JSON values have + [standard layout](http://en.cppreference.com/w/cpp/language/data_members#Standard_layout): + All non-static data members are private and standard layout types, the + class has no virtual functions or (virtual) base classes. +- Library-wide + - [EqualityComparable](http://en.cppreference.com/w/cpp/concept/EqualityComparable): + JSON values can be compared with `==`, see @ref + operator==(const_reference,const_reference). + - [LessThanComparable](http://en.cppreference.com/w/cpp/concept/LessThanComparable): + JSON values can be compared with `<`, see @ref + operator<(const_reference,const_reference). + - [Swappable](http://en.cppreference.com/w/cpp/concept/Swappable): + Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of + other compatible types, using unqualified function call @ref swap(). + - [NullablePointer](http://en.cppreference.com/w/cpp/concept/NullablePointer): + JSON values can be compared against `std::nullptr_t` objects which are used + to model the `null` value. +- Container + - [Container](http://en.cppreference.com/w/cpp/concept/Container): + JSON values can be used like STL containers and provide iterator access. + - [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer); + JSON values can be used like STL containers and provide reverse iterator + access. + +@invariant The member variables @a m_value and @a m_type have the following +relationship: +- If `m_type == value_t::object`, then `m_value.object != nullptr`. +- If `m_type == value_t::array`, then `m_value.array != nullptr`. +- If `m_type == value_t::string`, then `m_value.string != nullptr`. +The invariants are checked by member function assert_invariant(). + +@internal +@note ObjectType trick from http://stackoverflow.com/a/9860911 +@endinternal + +@see [RFC 7159: The JavaScript Object Notation (JSON) Data Interchange +Format](http://rfc7159.net/rfc7159) + +@since version 1.0.0 + +@nosubgrouping +*/ +NLOHMANN_BASIC_JSON_TPL_DECLARATION +class basic_json +{ + private: + template friend struct detail::external_constructor; + friend ::nlohmann::json_pointer; + friend ::nlohmann::detail::parser; + friend ::nlohmann::detail::serializer; + template + friend class ::nlohmann::detail::iter_impl; + template + friend class ::nlohmann::detail::binary_writer; + template + friend class ::nlohmann::detail::binary_reader; + + /// workaround type for MSVC + using basic_json_t = NLOHMANN_BASIC_JSON_TPL; + + // convenience aliases for types residing in namespace detail; + using lexer = ::nlohmann::detail::lexer; + using parser = ::nlohmann::detail::parser; + + using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t; + template + using internal_iterator = ::nlohmann::detail::internal_iterator; + template + using iter_impl = ::nlohmann::detail::iter_impl; + template + using iteration_proxy = ::nlohmann::detail::iteration_proxy; + template using json_reverse_iterator = ::nlohmann::detail::json_reverse_iterator; + + template + using output_adapter_t = ::nlohmann::detail::output_adapter_t; + + using binary_reader = ::nlohmann::detail::binary_reader; + template using binary_writer = ::nlohmann::detail::binary_writer; + + using serializer = ::nlohmann::detail::serializer; + + public: + using value_t = detail::value_t; + /// @copydoc nlohmann::json_pointer + using json_pointer = ::nlohmann::json_pointer; + template + using json_serializer = JSONSerializer; + /// helper type for initializer lists of basic_json values + using initializer_list_t = std::initializer_list>; + + //////////////// + // exceptions // + //////////////// + + /// @name exceptions + /// Classes to implement user-defined exceptions. + /// @{ + + /// @copydoc detail::exception + using exception = detail::exception; + /// @copydoc detail::parse_error + using parse_error = detail::parse_error; + /// @copydoc detail::invalid_iterator + using invalid_iterator = detail::invalid_iterator; + /// @copydoc detail::type_error + using type_error = detail::type_error; + /// @copydoc detail::out_of_range + using out_of_range = detail::out_of_range; + /// @copydoc detail::other_error + using other_error = detail::other_error; + + /// @} + + ///////////////////// + // container types // + ///////////////////// + + /// @name container types + /// The canonic container types to use @ref basic_json like any other STL + /// container. + /// @{ + + /// the type of elements in a basic_json container + using value_type = basic_json; + + /// the type of an element reference + using reference = value_type&; + /// the type of an element const reference + using const_reference = const value_type&; + + /// a type to represent differences between iterators + using difference_type = std::ptrdiff_t; + /// a type to represent container sizes + using size_type = std::size_t; + + /// the allocator type + using allocator_type = AllocatorType; + + /// the type of an element pointer + using pointer = typename std::allocator_traits::pointer; + /// the type of an element const pointer + using const_pointer = typename std::allocator_traits::const_pointer; + + /// an iterator for a basic_json container + using iterator = iter_impl; + /// a const iterator for a basic_json container + using const_iterator = iter_impl; + /// a reverse iterator for a basic_json container + using reverse_iterator = json_reverse_iterator; + /// a const reverse iterator for a basic_json container + using const_reverse_iterator = json_reverse_iterator; + + /// @} + + /*! + @brief returns the allocator associated with the container + */ + static allocator_type get_allocator() + { + return allocator_type(); + } + + /*! + @brief returns version information on the library + + This function returns a JSON object with information about the library, + including the version number and information on the platform and compiler. + + @return JSON object holding version information + key | description + ----------- | --------------- + `compiler` | Information on the used compiler. It is an object with the following keys: `c++` (the used C++ standard), `family` (the compiler family; possible values are `clang`, `icc`, `gcc`, `ilecpp`, `msvc`, `pgcpp`, `sunpro`, and `unknown`), and `version` (the compiler version). + `copyright` | The copyright line for the library as string. + `name` | The name of the library as string. + `platform` | The used platform as string. Possible values are `win32`, `linux`, `apple`, `unix`, and `unknown`. + `url` | The URL of the project as string. + `version` | The version of the library. It is an object with the following keys: `major`, `minor`, and `patch` as defined by [Semantic Versioning](http://semver.org), and `string` (the version string). + + @liveexample{The following code shows an example output of the `meta()` + function.,meta} + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @complexity Constant. + + @since 2.1.0 + */ + static basic_json meta() + { + basic_json result; + + result["copyright"] = "(C) 2013-2017 Niels Lohmann"; + result["name"] = "JSON for Modern C++"; + result["url"] = "https://github.com/nlohmann/json"; + result["version"] = + { + {"string", "3.0.0"}, {"major", 3}, {"minor", 0}, {"patch", 0} + }; + +#ifdef _WIN32 + result["platform"] = "win32"; +#elif defined __linux__ + result["platform"] = "linux"; +#elif defined __APPLE__ + result["platform"] = "apple"; +#elif defined __unix__ + result["platform"] = "unix"; +#else + result["platform"] = "unknown"; +#endif + +#if defined(__ICC) || defined(__INTEL_COMPILER) + result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}}; +#elif defined(__clang__) + result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}}; +#elif defined(__GNUC__) || defined(__GNUG__) + result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}}; +#elif defined(__HP_cc) || defined(__HP_aCC) + result["compiler"] = "hp" +#elif defined(__IBMCPP__) + result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}}; +#elif defined(_MSC_VER) + result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}}; +#elif defined(__PGI) + result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}}; +#elif defined(__SUNPRO_CC) + result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}}; +#else + result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}}; +#endif + +#ifdef __cplusplus + result["compiler"]["c++"] = std::to_string(__cplusplus); +#else + result["compiler"]["c++"] = "unknown"; +#endif + return result; + } + + /////////////////////////// + // JSON value data types // + /////////////////////////// + + /// @name JSON value data types + /// The data types to store a JSON value. These types are derived from + /// the template arguments passed to class @ref basic_json. + /// @{ + +#if defined(JSON_HAS_CPP_14) + // Use transparent comparator if possible, combined with perfect forwarding + // on find() and count() calls prevents unnecessary string construction. + using object_comparator_t = std::less<>; +#else + using object_comparator_t = std::less; +#endif + + /*! + @brief a type for an object + + [RFC 7159](http://rfc7159.net/rfc7159) describes JSON objects as follows: + > An object is an unordered collection of zero or more name/value pairs, + > where a name is a string and a value is a string, number, boolean, null, + > object, or array. + + To store objects in C++, a type is defined by the template parameters + described below. + + @tparam ObjectType the container to store objects (e.g., `std::map` or + `std::unordered_map`) + @tparam StringType the type of the keys or names (e.g., `std::string`). + The comparison function `std::less` is used to order elements + inside the container. + @tparam AllocatorType the allocator to use for objects (e.g., + `std::allocator`) + + #### Default type + + With the default values for @a ObjectType (`std::map`), @a StringType + (`std::string`), and @a AllocatorType (`std::allocator`), the default + value for @a object_t is: + + @code {.cpp} + std::map< + std::string, // key_type + basic_json, // value_type + std::less, // key_compare + std::allocator> // allocator_type + > + @endcode + + #### Behavior + + The choice of @a object_t influences the behavior of the JSON class. With + the default type, objects have the following behavior: + + - When all names are unique, objects will be interoperable in the sense + that all software implementations receiving that object will agree on + the name-value mappings. + - When the names within an object are not unique, later stored name/value + pairs overwrite previously stored name/value pairs, leaving the used + names unique. For instance, `{"key": 1}` and `{"key": 2, "key": 1}` will + be treated as equal and both stored as `{"key": 1}`. + - Internally, name/value pairs are stored in lexicographical order of the + names. Objects will also be serialized (see @ref dump) in this order. + For instance, `{"b": 1, "a": 2}` and `{"a": 2, "b": 1}` will be stored + and serialized as `{"a": 2, "b": 1}`. + - When comparing objects, the order of the name/value pairs is irrelevant. + This makes objects interoperable in the sense that they will not be + affected by these differences. For instance, `{"b": 1, "a": 2}` and + `{"a": 2, "b": 1}` will be treated as equal. + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) specifies: + > An implementation may set limits on the maximum depth of nesting. + + In this class, the object's limit of nesting is not explicitly constrained. + However, a maximum depth of nesting may be introduced by the compiler or + runtime environment. A theoretical limit can be queried by calling the + @ref max_size function of a JSON object. + + #### Storage + + Objects are stored as pointers in a @ref basic_json type. That is, for any + access to object values, a pointer of type `object_t*` must be + dereferenced. + + @sa @ref array_t -- type for an array value + + @since version 1.0.0 + + @note The order name/value pairs are added to the object is *not* + preserved by the library. Therefore, iterating an object may return + name/value pairs in a different order than they were originally stored. In + fact, keys will be traversed in alphabetical order as `std::map` with + `std::less` is used by default. Please note this behavior conforms to [RFC + 7159](http://rfc7159.net/rfc7159), because any order implements the + specified "unordered" nature of JSON objects. + */ + using object_t = ObjectType>>; + + /*! + @brief a type for an array + + [RFC 7159](http://rfc7159.net/rfc7159) describes JSON arrays as follows: + > An array is an ordered sequence of zero or more values. + + To store objects in C++, a type is defined by the template parameters + explained below. + + @tparam ArrayType container type to store arrays (e.g., `std::vector` or + `std::list`) + @tparam AllocatorType allocator to use for arrays (e.g., `std::allocator`) + + #### Default type + + With the default values for @a ArrayType (`std::vector`) and @a + AllocatorType (`std::allocator`), the default value for @a array_t is: + + @code {.cpp} + std::vector< + basic_json, // value_type + std::allocator // allocator_type + > + @endcode + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) specifies: + > An implementation may set limits on the maximum depth of nesting. + + In this class, the array's limit of nesting is not explicitly constrained. + However, a maximum depth of nesting may be introduced by the compiler or + runtime environment. A theoretical limit can be queried by calling the + @ref max_size function of a JSON array. + + #### Storage + + Arrays are stored as pointers in a @ref basic_json type. That is, for any + access to array values, a pointer of type `array_t*` must be dereferenced. + + @sa @ref object_t -- type for an object value + + @since version 1.0.0 + */ + using array_t = ArrayType>; + + /*! + @brief a type for a string + + [RFC 7159](http://rfc7159.net/rfc7159) describes JSON strings as follows: + > A string is a sequence of zero or more Unicode characters. + + To store objects in C++, a type is defined by the template parameter + described below. Unicode values are split by the JSON class into + byte-sized characters during deserialization. + + @tparam StringType the container to store strings (e.g., `std::string`). + Note this container is used for keys/names in objects, see @ref object_t. + + #### Default type + + With the default values for @a StringType (`std::string`), the default + value for @a string_t is: + + @code {.cpp} + std::string + @endcode + + #### Encoding + + Strings are stored in UTF-8 encoding. Therefore, functions like + `std::string::size()` or `std::string::length()` return the number of + bytes in the string rather than the number of characters or glyphs. + + #### String comparison + + [RFC 7159](http://rfc7159.net/rfc7159) states: + > Software implementations are typically required to test names of object + > members for equality. Implementations that transform the textual + > representation into sequences of Unicode code units and then perform the + > comparison numerically, code unit by code unit, are interoperable in the + > sense that implementations will agree in all cases on equality or + > inequality of two strings. For example, implementations that compare + > strings with escaped characters unconverted may incorrectly find that + > `"a\\b"` and `"a\u005Cb"` are not equal. + + This implementation is interoperable as it does compare strings code unit + by code unit. + + #### Storage + + String values are stored as pointers in a @ref basic_json type. That is, + for any access to string values, a pointer of type `string_t*` must be + dereferenced. + + @since version 1.0.0 + */ + using string_t = StringType; + + /*! + @brief a type for a boolean + + [RFC 7159](http://rfc7159.net/rfc7159) implicitly describes a boolean as a + type which differentiates the two literals `true` and `false`. + + To store objects in C++, a type is defined by the template parameter @a + BooleanType which chooses the type to use. + + #### Default type + + With the default values for @a BooleanType (`bool`), the default value for + @a boolean_t is: + + @code {.cpp} + bool + @endcode + + #### Storage + + Boolean values are stored directly inside a @ref basic_json type. + + @since version 1.0.0 + */ + using boolean_t = BooleanType; + + /*! + @brief a type for a number (integer) + + [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: + > The representation of numbers is similar to that used in most + > programming languages. A number is represented in base 10 using decimal + > digits. It contains an integer component that may be prefixed with an + > optional minus sign, which may be followed by a fraction part and/or an + > exponent part. Leading zeros are not allowed. (...) Numeric values that + > cannot be represented in the grammar below (such as Infinity and NaN) + > are not permitted. + + This description includes both integer and floating-point numbers. + However, C++ allows more precise storage if it is known whether the number + is a signed integer, an unsigned integer or a floating-point number. + Therefore, three different types, @ref number_integer_t, @ref + number_unsigned_t and @ref number_float_t are used. + + To store integer numbers in C++, a type is defined by the template + parameter @a NumberIntegerType which chooses the type to use. + + #### Default type + + With the default values for @a NumberIntegerType (`int64_t`), the default + value for @a number_integer_t is: + + @code {.cpp} + int64_t + @endcode + + #### Default behavior + + - The restrictions about leading zeros is not enforced in C++. Instead, + leading zeros in integer literals lead to an interpretation as octal + number. Internally, the value will be stored as decimal number. For + instance, the C++ integer literal `010` will be serialized to `8`. + During deserialization, leading zeros yield an error. + - Not-a-number (NaN) values will be serialized to `null`. + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) specifies: + > An implementation may set limits on the range and precision of numbers. + + When the default type is used, the maximal integer number that can be + stored is `9223372036854775807` (INT64_MAX) and the minimal integer number + that can be stored is `-9223372036854775808` (INT64_MIN). Integer numbers + that are out of range will yield over/underflow when used in a + constructor. During deserialization, too large or small integer numbers + will be automatically be stored as @ref number_unsigned_t or @ref + number_float_t. + + [RFC 7159](http://rfc7159.net/rfc7159) further states: + > Note that when such software is used, numbers that are integers and are + > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense + > that implementations will agree exactly on their numeric values. + + As this range is a subrange of the exactly supported range [INT64_MIN, + INT64_MAX], this class's integer type is interoperable. + + #### Storage + + Integer number values are stored directly inside a @ref basic_json type. + + @sa @ref number_float_t -- type for number values (floating-point) + + @sa @ref number_unsigned_t -- type for number values (unsigned integer) + + @since version 1.0.0 + */ + using number_integer_t = NumberIntegerType; + + /*! + @brief a type for a number (unsigned) + + [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: + > The representation of numbers is similar to that used in most + > programming languages. A number is represented in base 10 using decimal + > digits. It contains an integer component that may be prefixed with an + > optional minus sign, which may be followed by a fraction part and/or an + > exponent part. Leading zeros are not allowed. (...) Numeric values that + > cannot be represented in the grammar below (such as Infinity and NaN) + > are not permitted. + + This description includes both integer and floating-point numbers. + However, C++ allows more precise storage if it is known whether the number + is a signed integer, an unsigned integer or a floating-point number. + Therefore, three different types, @ref number_integer_t, @ref + number_unsigned_t and @ref number_float_t are used. + + To store unsigned integer numbers in C++, a type is defined by the + template parameter @a NumberUnsignedType which chooses the type to use. + + #### Default type + + With the default values for @a NumberUnsignedType (`uint64_t`), the + default value for @a number_unsigned_t is: + + @code {.cpp} + uint64_t + @endcode + + #### Default behavior + + - The restrictions about leading zeros is not enforced in C++. Instead, + leading zeros in integer literals lead to an interpretation as octal + number. Internally, the value will be stored as decimal number. For + instance, the C++ integer literal `010` will be serialized to `8`. + During deserialization, leading zeros yield an error. + - Not-a-number (NaN) values will be serialized to `null`. + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) specifies: + > An implementation may set limits on the range and precision of numbers. + + When the default type is used, the maximal integer number that can be + stored is `18446744073709551615` (UINT64_MAX) and the minimal integer + number that can be stored is `0`. Integer numbers that are out of range + will yield over/underflow when used in a constructor. During + deserialization, too large or small integer numbers will be automatically + be stored as @ref number_integer_t or @ref number_float_t. + + [RFC 7159](http://rfc7159.net/rfc7159) further states: + > Note that when such software is used, numbers that are integers and are + > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense + > that implementations will agree exactly on their numeric values. + + As this range is a subrange (when considered in conjunction with the + number_integer_t type) of the exactly supported range [0, UINT64_MAX], + this class's integer type is interoperable. + + #### Storage + + Integer number values are stored directly inside a @ref basic_json type. + + @sa @ref number_float_t -- type for number values (floating-point) + @sa @ref number_integer_t -- type for number values (integer) + + @since version 2.0.0 + */ + using number_unsigned_t = NumberUnsignedType; + + /*! + @brief a type for a number (floating-point) + + [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: + > The representation of numbers is similar to that used in most + > programming languages. A number is represented in base 10 using decimal + > digits. It contains an integer component that may be prefixed with an + > optional minus sign, which may be followed by a fraction part and/or an + > exponent part. Leading zeros are not allowed. (...) Numeric values that + > cannot be represented in the grammar below (such as Infinity and NaN) + > are not permitted. + + This description includes both integer and floating-point numbers. + However, C++ allows more precise storage if it is known whether the number + is a signed integer, an unsigned integer or a floating-point number. + Therefore, three different types, @ref number_integer_t, @ref + number_unsigned_t and @ref number_float_t are used. + + To store floating-point numbers in C++, a type is defined by the template + parameter @a NumberFloatType which chooses the type to use. + + #### Default type + + With the default values for @a NumberFloatType (`double`), the default + value for @a number_float_t is: + + @code {.cpp} + double + @endcode + + #### Default behavior + + - The restrictions about leading zeros is not enforced in C++. Instead, + leading zeros in floating-point literals will be ignored. Internally, + the value will be stored as decimal number. For instance, the C++ + floating-point literal `01.2` will be serialized to `1.2`. During + deserialization, leading zeros yield an error. + - Not-a-number (NaN) values will be serialized to `null`. + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) states: + > This specification allows implementations to set limits on the range and + > precision of numbers accepted. Since software that implements IEEE + > 754-2008 binary64 (double precision) numbers is generally available and + > widely used, good interoperability can be achieved by implementations + > that expect no more precision or range than these provide, in the sense + > that implementations will approximate JSON numbers within the expected + > precision. + + This implementation does exactly follow this approach, as it uses double + precision floating-point numbers. Note values smaller than + `-1.79769313486232e+308` and values greater than `1.79769313486232e+308` + will be stored as NaN internally and be serialized to `null`. + + #### Storage + + Floating-point number values are stored directly inside a @ref basic_json + type. + + @sa @ref number_integer_t -- type for number values (integer) + + @sa @ref number_unsigned_t -- type for number values (unsigned integer) + + @since version 1.0.0 + */ + using number_float_t = NumberFloatType; + + /// @} + + private: + + /// helper for exception-safe object creation + template + static T* create(Args&& ... args) + { + AllocatorType alloc; + using AllocatorTraits = std::allocator_traits>; + + auto deleter = [&](T * object) + { + AllocatorTraits::deallocate(alloc, object, 1); + }; + std::unique_ptr object(AllocatorTraits::allocate(alloc, 1), deleter); + AllocatorTraits::construct(alloc, object.get(), std::forward(args)...); + assert(object != nullptr); + return object.release(); + } + + //////////////////////// + // JSON value storage // + //////////////////////// + + /*! + @brief a JSON value + + The actual storage for a JSON value of the @ref basic_json class. This + union combines the different storage types for the JSON value types + defined in @ref value_t. + + JSON type | value_t type | used type + --------- | --------------- | ------------------------ + object | object | pointer to @ref object_t + array | array | pointer to @ref array_t + string | string | pointer to @ref string_t + boolean | boolean | @ref boolean_t + number | number_integer | @ref number_integer_t + number | number_unsigned | @ref number_unsigned_t + number | number_float | @ref number_float_t + null | null | *no value is stored* + + @note Variable-length types (objects, arrays, and strings) are stored as + pointers. The size of the union should not exceed 64 bits if the default + value types are used. + + @since version 1.0.0 + */ + union json_value + { + /// object (stored with pointer to save storage) + object_t* object; + /// array (stored with pointer to save storage) + array_t* array; + /// string (stored with pointer to save storage) + string_t* string; + /// boolean + boolean_t boolean; + /// number (integer) + number_integer_t number_integer; + /// number (unsigned integer) + number_unsigned_t number_unsigned; + /// number (floating-point) + number_float_t number_float; + + /// default constructor (for null values) + json_value() = default; + /// constructor for booleans + json_value(boolean_t v) noexcept : boolean(v) {} + /// constructor for numbers (integer) + json_value(number_integer_t v) noexcept : number_integer(v) {} + /// constructor for numbers (unsigned) + json_value(number_unsigned_t v) noexcept : number_unsigned(v) {} + /// constructor for numbers (floating-point) + json_value(number_float_t v) noexcept : number_float(v) {} + /// constructor for empty values of a given type + json_value(value_t t) + { + switch (t) + { + case value_t::object: + { + object = create(); + break; + } + + case value_t::array: + { + array = create(); + break; + } + + case value_t::string: + { + string = create(""); + break; + } + + case value_t::boolean: + { + boolean = boolean_t(false); + break; + } + + case value_t::number_integer: + { + number_integer = number_integer_t(0); + break; + } + + case value_t::number_unsigned: + { + number_unsigned = number_unsigned_t(0); + break; + } + + case value_t::number_float: + { + number_float = number_float_t(0.0); + break; + } + + case value_t::null: + { + object = nullptr; // silence warning, see #821 + break; + } + + default: + { + object = nullptr; // silence warning, see #821 + if (JSON_UNLIKELY(t == value_t::null)) + { + JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.0.0")); // LCOV_EXCL_LINE + } + break; + } + } + } + + /// constructor for strings + json_value(const string_t& value) + { + string = create(value); + } + + /// constructor for rvalue strings + json_value(string_t&& value) + { + string = create(std::move(value)); + } + + /// constructor for objects + json_value(const object_t& value) + { + object = create(value); + } + + /// constructor for rvalue objects + json_value(object_t&& value) + { + object = create(std::move(value)); + } + + /// constructor for arrays + json_value(const array_t& value) + { + array = create(value); + } + + /// constructor for rvalue arrays + json_value(array_t&& value) + { + array = create(std::move(value)); + } + + void destroy(value_t t) + { + switch (t) + { + case value_t::object: + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, object); + std::allocator_traits::deallocate(alloc, object, 1); + break; + } + + case value_t::array: + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, array); + std::allocator_traits::deallocate(alloc, array, 1); + break; + } + + case value_t::string: + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, string); + std::allocator_traits::deallocate(alloc, string, 1); + break; + } + + default: + { + break; + } + } + } + }; + + /*! + @brief checks the class invariants + + This function asserts the class invariants. It needs to be called at the + end of every constructor to make sure that created objects respect the + invariant. Furthermore, it has to be called each time the type of a JSON + value is changed, because the invariant expresses a relationship between + @a m_type and @a m_value. + */ + void assert_invariant() const + { + assert(m_type != value_t::object or m_value.object != nullptr); + assert(m_type != value_t::array or m_value.array != nullptr); + assert(m_type != value_t::string or m_value.string != nullptr); + } + + public: + ////////////////////////// + // JSON parser callback // + ////////////////////////// + + /*! + @brief parser event types + + The parser callback distinguishes the following events: + - `object_start`: the parser read `{` and started to process a JSON object + - `key`: the parser read a key of a value in an object + - `object_end`: the parser read `}` and finished processing a JSON object + - `array_start`: the parser read `[` and started to process a JSON array + - `array_end`: the parser read `]` and finished processing a JSON array + - `value`: the parser finished reading a JSON value + + @image html callback_events.png "Example when certain parse events are triggered" + + @sa @ref parser_callback_t for more information and examples + */ + using parse_event_t = typename parser::parse_event_t; + + /*! + @brief per-element parser callback type + + With a parser callback function, the result of parsing a JSON text can be + influenced. When passed to @ref parse, it is called on certain events + (passed as @ref parse_event_t via parameter @a event) with a set recursion + depth @a depth and context JSON value @a parsed. The return value of the + callback function is a boolean indicating whether the element that emitted + the callback shall be kept or not. + + We distinguish six scenarios (determined by the event type) in which the + callback function can be called. The following table describes the values + of the parameters @a depth, @a event, and @a parsed. + + parameter @a event | description | parameter @a depth | parameter @a parsed + ------------------ | ----------- | ------------------ | ------------------- + parse_event_t::object_start | the parser read `{` and started to process a JSON object | depth of the parent of the JSON object | a JSON value with type discarded + parse_event_t::key | the parser read a key of a value in an object | depth of the currently parsed JSON object | a JSON string containing the key + parse_event_t::object_end | the parser read `}` and finished processing a JSON object | depth of the parent of the JSON object | the parsed JSON object + parse_event_t::array_start | the parser read `[` and started to process a JSON array | depth of the parent of the JSON array | a JSON value with type discarded + parse_event_t::array_end | the parser read `]` and finished processing a JSON array | depth of the parent of the JSON array | the parsed JSON array + parse_event_t::value | the parser finished reading a JSON value | depth of the value | the parsed JSON value + + @image html callback_events.png "Example when certain parse events are triggered" + + Discarding a value (i.e., returning `false`) has different effects + depending on the context in which function was called: + + - Discarded values in structured types are skipped. That is, the parser + will behave as if the discarded value was never read. + - In case a value outside a structured type is skipped, it is replaced + with `null`. This case happens if the top-level element is skipped. + + @param[in] depth the depth of the recursion during parsing + + @param[in] event an event of type parse_event_t indicating the context in + the callback function has been called + + @param[in,out] parsed the current intermediate parse result; note that + writing to this value has no effect for parse_event_t::key events + + @return Whether the JSON value which called the function during parsing + should be kept (`true`) or not (`false`). In the latter case, it is either + skipped completely or replaced by an empty discarded object. + + @sa @ref parse for examples + + @since version 1.0.0 + */ + using parser_callback_t = typename parser::parser_callback_t; + + ////////////////// + // constructors // + ////////////////// + + /// @name constructors and destructors + /// Constructors of class @ref basic_json, copy/move constructor, copy + /// assignment, static functions creating objects, and the destructor. + /// @{ + + /*! + @brief create an empty value with a given type + + Create an empty JSON value with a given type. The value will be default + initialized with an empty value which depends on the type: + + Value type | initial value + ----------- | ------------- + null | `null` + boolean | `false` + string | `""` + number | `0` + object | `{}` + array | `[]` + + @param[in] v the type of the value to create + + @complexity Constant. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows the constructor for different @ref + value_t values,basic_json__value_t} + + @sa @ref clear() -- restores the postcondition of this constructor + + @since version 1.0.0 + */ + basic_json(const value_t v) + : m_type(v), m_value(v) + { + assert_invariant(); + } + + /*! + @brief create a null object + + Create a `null` JSON value. It either takes a null pointer as parameter + (explicitly creating `null`) or no parameter (implicitly creating `null`). + The passed null pointer itself is not read -- it is only used to choose + the right constructor. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this constructor never throws + exceptions. + + @liveexample{The following code shows the constructor with and without a + null pointer parameter.,basic_json__nullptr_t} + + @since version 1.0.0 + */ + basic_json(std::nullptr_t = nullptr) noexcept + : basic_json(value_t::null) + { + assert_invariant(); + } + + /*! + @brief create a JSON value + + This is a "catch all" constructor for all compatible JSON types; that is, + types for which a `to_json()` method exists. The constructor forwards the + parameter @a val to that method (to `json_serializer::to_json` method + with `U = uncvref_t`, to be exact). + + Template type @a CompatibleType includes, but is not limited to, the + following types: + - **arrays**: @ref array_t and all kinds of compatible containers such as + `std::vector`, `std::deque`, `std::list`, `std::forward_list`, + `std::array`, `std::valarray`, `std::set`, `std::unordered_set`, + `std::multiset`, and `std::unordered_multiset` with a `value_type` from + which a @ref basic_json value can be constructed. + - **objects**: @ref object_t and all kinds of compatible associative + containers such as `std::map`, `std::unordered_map`, `std::multimap`, + and `std::unordered_multimap` with a `key_type` compatible to + @ref string_t and a `value_type` from which a @ref basic_json value can + be constructed. + - **strings**: @ref string_t, string literals, and all compatible string + containers can be used. + - **numbers**: @ref number_integer_t, @ref number_unsigned_t, + @ref number_float_t, and all convertible number types such as `int`, + `size_t`, `int64_t`, `float` or `double` can be used. + - **boolean**: @ref boolean_t / `bool` can be used. + + See the examples below. + + @tparam CompatibleType a type such that: + - @a CompatibleType is not derived from `std::istream`, + - @a CompatibleType is not @ref basic_json (to avoid hijacking copy/move + constructors), + - @a CompatibleType is not a @ref basic_json nested type (e.g., + @ref json_pointer, @ref iterator, etc ...) + - @ref @ref json_serializer has a + `to_json(basic_json_t&, CompatibleType&&)` method + + @tparam U = `uncvref_t` + + @param[in] val the value to be forwarded to the respective constructor + + @complexity Usually linear in the size of the passed @a val, also + depending on the implementation of the called `to_json()` + method. + + @exceptionsafety Depends on the called constructor. For types directly + supported by the library (i.e., all types for which no `to_json()` function + was provided), strong guarantee holds: if an exception is thrown, there are + no changes to any JSON value. + + @liveexample{The following code shows the constructor with several + compatible types.,basic_json__CompatibleType} + + @since version 2.1.0 + */ + template, + detail::enable_if_t::value and + not std::is_same::value and + not detail::is_basic_json_nested_type< + basic_json_t, U>::value and + detail::has_to_json::value, + int> = 0> + basic_json(CompatibleType && val) noexcept(noexcept(JSONSerializer::to_json( + std::declval(), std::forward(val)))) + { + JSONSerializer::to_json(*this, std::forward(val)); + assert_invariant(); + } + + /*! + @brief create a container (array or object) from an initializer list + + Creates a JSON value of type array or object from the passed initializer + list @a init. In case @a type_deduction is `true` (default), the type of + the JSON value to be created is deducted from the initializer list @a init + according to the following rules: + + 1. If the list is empty, an empty JSON object value `{}` is created. + 2. If the list consists of pairs whose first element is a string, a JSON + object value is created where the first elements of the pairs are + treated as keys and the second elements are as values. + 3. In all other cases, an array is created. + + The rules aim to create the best fit between a C++ initializer list and + JSON values. The rationale is as follows: + + 1. The empty initializer list is written as `{}` which is exactly an empty + JSON object. + 2. C++ has no way of describing mapped types other than to list a list of + pairs. As JSON requires that keys must be of type string, rule 2 is the + weakest constraint one can pose on initializer lists to interpret them + as an object. + 3. In all other cases, the initializer list could not be interpreted as + JSON object type, so interpreting it as JSON array type is safe. + + With the rules described above, the following JSON values cannot be + expressed by an initializer list: + + - the empty array (`[]`): use @ref array(initializer_list_t) + with an empty initializer list in this case + - arrays whose elements satisfy rule 2: use @ref + array(initializer_list_t) with the same initializer list + in this case + + @note When used without parentheses around an empty initializer list, @ref + basic_json() is called instead of this function, yielding the JSON null + value. + + @param[in] init initializer list with JSON values + + @param[in] type_deduction internal parameter; when set to `true`, the type + of the JSON value is deducted from the initializer list @a init; when set + to `false`, the type provided via @a manual_type is forced. This mode is + used by the functions @ref array(initializer_list_t) and + @ref object(initializer_list_t). + + @param[in] manual_type internal parameter; when @a type_deduction is set + to `false`, the created JSON value will use the provided type (only @ref + value_t::array and @ref value_t::object are valid); when @a type_deduction + is set to `true`, this parameter has no effect + + @throw type_error.301 if @a type_deduction is `false`, @a manual_type is + `value_t::object`, but @a init contains an element which is not a pair + whose first element is a string. In this case, the constructor could not + create an object. If @a type_deduction would have be `true`, an array + would have been created. See @ref object(initializer_list_t) + for an example. + + @complexity Linear in the size of the initializer list @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The example below shows how JSON values are created from + initializer lists.,basic_json__list_init_t} + + @sa @ref array(initializer_list_t) -- create a JSON array + value from an initializer list + @sa @ref object(initializer_list_t) -- create a JSON object + value from an initializer list + + @since version 1.0.0 + */ + basic_json(initializer_list_t init, + bool type_deduction = true, + value_t manual_type = value_t::array) + { + // check if each element is an array with two elements whose first + // element is a string + bool is_an_object = std::all_of(init.begin(), init.end(), + [](const detail::json_ref& element_ref) + { + return (element_ref->is_array() and element_ref->size() == 2 and (*element_ref)[0].is_string()); + }); + + // adjust type if type deduction is not wanted + if (not type_deduction) + { + // if array is wanted, do not create an object though possible + if (manual_type == value_t::array) + { + is_an_object = false; + } + + // if object is wanted but impossible, throw an exception + if (JSON_UNLIKELY(manual_type == value_t::object and not is_an_object)) + { + JSON_THROW(type_error::create(301, "cannot create object from initializer list")); + } + } + + if (is_an_object) + { + // the initializer list is a list of pairs -> create object + m_type = value_t::object; + m_value = value_t::object; + + std::for_each(init.begin(), init.end(), [this](const detail::json_ref& element_ref) + { + auto element = element_ref.moved_or_copied(); + m_value.object->emplace( + std::move(*((*element.m_value.array)[0].m_value.string)), + std::move((*element.m_value.array)[1])); + }); + } + else + { + // the initializer list describes an array -> create array + m_type = value_t::array; + m_value.array = create(init.begin(), init.end()); + } + + assert_invariant(); + } + + /*! + @brief explicitly create an array from an initializer list + + Creates a JSON array value from a given initializer list. That is, given a + list of values `a, b, c`, creates the JSON value `[a, b, c]`. If the + initializer list is empty, the empty array `[]` is created. + + @note This function is only needed to express two edge cases that cannot + be realized with the initializer list constructor (@ref + basic_json(initializer_list_t, bool, value_t)). These cases + are: + 1. creating an array whose elements are all pairs whose first element is a + string -- in this case, the initializer list constructor would create an + object, taking the first elements as keys + 2. creating an empty array -- passing the empty initializer list to the + initializer list constructor yields an empty object + + @param[in] init initializer list with JSON values to create an array from + (optional) + + @return JSON array value + + @complexity Linear in the size of @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows an example for the `array` + function.,array} + + @sa @ref basic_json(initializer_list_t, bool, value_t) -- + create a JSON value from an initializer list + @sa @ref object(initializer_list_t) -- create a JSON object + value from an initializer list + + @since version 1.0.0 + */ + static basic_json array(initializer_list_t init = {}) + { + return basic_json(init, false, value_t::array); + } + + /*! + @brief explicitly create an object from an initializer list + + Creates a JSON object value from a given initializer list. The initializer + lists elements must be pairs, and their first elements must be strings. If + the initializer list is empty, the empty object `{}` is created. + + @note This function is only added for symmetry reasons. In contrast to the + related function @ref array(initializer_list_t), there are + no cases which can only be expressed by this function. That is, any + initializer list @a init can also be passed to the initializer list + constructor @ref basic_json(initializer_list_t, bool, value_t). + + @param[in] init initializer list to create an object from (optional) + + @return JSON object value + + @throw type_error.301 if @a init is not a list of pairs whose first + elements are strings. In this case, no object can be created. When such a + value is passed to @ref basic_json(initializer_list_t, bool, value_t), + an array would have been created from the passed initializer list @a init. + See example below. + + @complexity Linear in the size of @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows an example for the `object` + function.,object} + + @sa @ref basic_json(initializer_list_t, bool, value_t) -- + create a JSON value from an initializer list + @sa @ref array(initializer_list_t) -- create a JSON array + value from an initializer list + + @since version 1.0.0 + */ + static basic_json object(initializer_list_t init = {}) + { + return basic_json(init, false, value_t::object); + } + + /*! + @brief construct an array with count copies of given value + + Constructs a JSON array value by creating @a cnt copies of a passed value. + In case @a cnt is `0`, an empty array is created. + + @param[in] cnt the number of JSON copies of @a val to create + @param[in] val the JSON value to copy + + @post `std::distance(begin(),end()) == cnt` holds. + + @complexity Linear in @a cnt. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows examples for the @ref + basic_json(size_type\, const basic_json&) + constructor.,basic_json__size_type_basic_json} + + @since version 1.0.0 + */ + basic_json(size_type cnt, const basic_json& val) + : m_type(value_t::array) + { + m_value.array = create(cnt, val); + assert_invariant(); + } + + /*! + @brief construct a JSON container given an iterator range + + Constructs the JSON value with the contents of the range `[first, last)`. + The semantics depends on the different types a JSON value can have: + - In case of a null type, invalid_iterator.206 is thrown. + - In case of other primitive types (number, boolean, or string), @a first + must be `begin()` and @a last must be `end()`. In this case, the value is + copied. Otherwise, invalid_iterator.204 is thrown. + - In case of structured types (array, object), the constructor behaves as + similar versions for `std::vector` or `std::map`; that is, a JSON array + or object is constructed from the values in the range. + + @tparam InputIT an input iterator type (@ref iterator or @ref + const_iterator) + + @param[in] first begin of the range to copy from (included) + @param[in] last end of the range to copy from (excluded) + + @pre Iterators @a first and @a last must be initialized. **This + precondition is enforced with an assertion (see warning).** If + assertions are switched off, a violation of this precondition yields + undefined behavior. + + @pre Range `[first, last)` is valid. Usually, this precondition cannot be + checked efficiently. Only certain edge cases are detected; see the + description of the exceptions below. A violation of this precondition + yields undefined behavior. + + @warning A precondition is enforced with a runtime assertion that will + result in calling `std::abort` if this precondition is not met. + Assertions can be disabled by defining `NDEBUG` at compile time. + See http://en.cppreference.com/w/cpp/error/assert for more + information. + + @throw invalid_iterator.201 if iterators @a first and @a last are not + compatible (i.e., do not belong to the same JSON value). In this case, + the range `[first, last)` is undefined. + @throw invalid_iterator.204 if iterators @a first and @a last belong to a + primitive type (number, boolean, or string), but @a first does not point + to the first element any more. In this case, the range `[first, last)` is + undefined. See example code below. + @throw invalid_iterator.206 if iterators @a first and @a last belong to a + null value. In this case, the range `[first, last)` is undefined. + + @complexity Linear in distance between @a first and @a last. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The example below shows several ways to create JSON values by + specifying a subrange with iterators.,basic_json__InputIt_InputIt} + + @since version 1.0.0 + */ + template::value or + std::is_same::value, int>::type = 0> + basic_json(InputIT first, InputIT last) + { + assert(first.m_object != nullptr); + assert(last.m_object != nullptr); + + // make sure iterator fits the current value + if (JSON_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(201, "iterators are not compatible")); + } + + // copy type from first iterator + m_type = first.m_object->m_type; + + // check if iterator range is complete for primitive values + switch (m_type) + { + case value_t::boolean: + case value_t::number_float: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::string: + { + if (JSON_UNLIKELY(not first.m_it.primitive_iterator.is_begin() + or not last.m_it.primitive_iterator.is_end())) + { + JSON_THROW(invalid_iterator::create(204, "iterators out of range")); + } + break; + } + + default: + break; + } + + switch (m_type) + { + case value_t::number_integer: + { + m_value.number_integer = first.m_object->m_value.number_integer; + break; + } + + case value_t::number_unsigned: + { + m_value.number_unsigned = first.m_object->m_value.number_unsigned; + break; + } + + case value_t::number_float: + { + m_value.number_float = first.m_object->m_value.number_float; + break; + } + + case value_t::boolean: + { + m_value.boolean = first.m_object->m_value.boolean; + break; + } + + case value_t::string: + { + m_value = *first.m_object->m_value.string; + break; + } + + case value_t::object: + { + m_value.object = create(first.m_it.object_iterator, + last.m_it.object_iterator); + break; + } + + case value_t::array: + { + m_value.array = create(first.m_it.array_iterator, + last.m_it.array_iterator); + break; + } + + default: + JSON_THROW(invalid_iterator::create(206, "cannot construct with iterators from " + + std::string(first.m_object->type_name()))); + } + + assert_invariant(); + } + + /////////////////////////////////////// + // other constructors and destructor // + /////////////////////////////////////// + + /// @private + basic_json(const detail::json_ref& ref) + : basic_json(ref.moved_or_copied()) + {} + + /*! + @brief copy constructor + + Creates a copy of a given JSON value. + + @param[in] other the JSON value to copy + + @post `*this == other` + + @complexity Linear in the size of @a other. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is linear. + - As postcondition, it holds: `other == basic_json(other)`. + + @liveexample{The following code shows an example for the copy + constructor.,basic_json__basic_json} + + @since version 1.0.0 + */ + basic_json(const basic_json& other) + : m_type(other.m_type) + { + // check of passed value is valid + other.assert_invariant(); + + switch (m_type) + { + case value_t::object: + { + m_value = *other.m_value.object; + break; + } + + case value_t::array: + { + m_value = *other.m_value.array; + break; + } + + case value_t::string: + { + m_value = *other.m_value.string; + break; + } + + case value_t::boolean: + { + m_value = other.m_value.boolean; + break; + } + + case value_t::number_integer: + { + m_value = other.m_value.number_integer; + break; + } + + case value_t::number_unsigned: + { + m_value = other.m_value.number_unsigned; + break; + } + + case value_t::number_float: + { + m_value = other.m_value.number_float; + break; + } + + default: + break; + } + + assert_invariant(); + } + + /*! + @brief move constructor + + Move constructor. Constructs a JSON value with the contents of the given + value @a other using move semantics. It "steals" the resources from @a + other and leaves it as JSON null value. + + @param[in,out] other value to move to this object + + @post `*this` has the same value as @a other before the call. + @post @a other is a JSON null value. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this constructor never throws + exceptions. + + @requirement This function helps `basic_json` satisfying the + [MoveConstructible](http://en.cppreference.com/w/cpp/concept/MoveConstructible) + requirements. + + @liveexample{The code below shows the move constructor explicitly called + via std::move.,basic_json__moveconstructor} + + @since version 1.0.0 + */ + basic_json(basic_json&& other) noexcept + : m_type(std::move(other.m_type)), + m_value(std::move(other.m_value)) + { + // check that passed value is valid + other.assert_invariant(); + + // invalidate payload + other.m_type = value_t::null; + other.m_value = {}; + + assert_invariant(); + } + + /*! + @brief copy assignment + + Copy assignment operator. Copies a JSON value via the "copy and swap" + strategy: It is expressed in terms of the copy constructor, destructor, + and the `swap()` member function. + + @param[in] other value to copy from + + @complexity Linear. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is linear. + + @liveexample{The code below shows and example for the copy assignment. It + creates a copy of value `a` which is then swapped with `b`. Finally\, the + copy of `a` (which is the null value after the swap) is + destroyed.,basic_json__copyassignment} + + @since version 1.0.0 + */ + reference& operator=(basic_json other) noexcept ( + std::is_nothrow_move_constructible::value and + std::is_nothrow_move_assignable::value and + std::is_nothrow_move_constructible::value and + std::is_nothrow_move_assignable::value + ) + { + // check that passed value is valid + other.assert_invariant(); + + using std::swap; + swap(m_type, other.m_type); + swap(m_value, other.m_value); + + assert_invariant(); + return *this; + } + + /*! + @brief destructor + + Destroys the JSON value and frees all allocated memory. + + @complexity Linear. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is linear. + - All stored elements are destroyed and all memory is freed. + + @since version 1.0.0 + */ + ~basic_json() + { + assert_invariant(); + m_value.destroy(m_type); + } + + /// @} + + public: + /////////////////////// + // object inspection // + /////////////////////// + + /// @name object inspection + /// Functions to inspect the type of a JSON value. + /// @{ + + /*! + @brief serialization + + Serialization function for JSON values. The function tries to mimic + Python's `json.dumps()` function, and currently supports its @a indent + and @a ensure_ascii parameters. + + @param[in] indent If indent is nonnegative, then array elements and object + members will be pretty-printed with that indent level. An indent level of + `0` will only insert newlines. `-1` (the default) selects the most compact + representation. + @param[in] indent_char The character to use for indentation if @a indent is + greater than `0`. The default is ` ` (space). + @param[in] ensure_ascii If @a ensure_ascii is true, all non-ASCII characters + in the output are escaped with `\uXXXX` sequences, and the result consists + of ASCII characters only. + + @return string containing the serialization of the JSON value + + @throw type_error.316 if a string stored inside the JSON value is not + UTF-8 encoded + + @complexity Linear. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @liveexample{The following example shows the effect of different @a indent\, + @a indent_char\, and @a ensure_ascii parameters to the result of the + serialization.,dump} + + @see https://docs.python.org/2/library/json.html#json.dump + + @since version 1.0.0; indentation character @a indent_char, option + @a ensure_ascii and exceptions added in version 3.0.0 + */ + string_t dump(const int indent = -1, const char indent_char = ' ', + const bool ensure_ascii = false) const + { + string_t result; + serializer s(detail::output_adapter(result), indent_char); + + if (indent >= 0) + { + s.dump(*this, true, ensure_ascii, static_cast(indent)); + } + else + { + s.dump(*this, false, ensure_ascii, 0); + } + + return result; + } + + /*! + @brief return the type of the JSON value (explicit) + + Return the type of the JSON value as a value from the @ref value_t + enumeration. + + @return the type of the JSON value + Value type | return value + ------------------------- | ------------------------- + null | value_t::null + boolean | value_t::boolean + string | value_t::string + number (integer) | value_t::number_integer + number (unsigned integer) | value_t::number_unsigned + number (floating-point) | value_t::number_float + object | value_t::object + array | value_t::array + discarded | value_t::discarded + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `type()` for all JSON + types.,type} + + @sa @ref operator value_t() -- return the type of the JSON value (implicit) + @sa @ref type_name() -- return the type as string + + @since version 1.0.0 + */ + constexpr value_t type() const noexcept + { + return m_type; + } + + /*! + @brief return whether type is primitive + + This function returns true if and only if the JSON type is primitive + (string, number, boolean, or null). + + @return `true` if type is primitive (string, number, boolean, or null), + `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_primitive()` for all JSON + types.,is_primitive} + + @sa @ref is_structured() -- returns whether JSON value is structured + @sa @ref is_null() -- returns whether JSON value is `null` + @sa @ref is_string() -- returns whether JSON value is a string + @sa @ref is_boolean() -- returns whether JSON value is a boolean + @sa @ref is_number() -- returns whether JSON value is a number + + @since version 1.0.0 + */ + constexpr bool is_primitive() const noexcept + { + return is_null() or is_string() or is_boolean() or is_number(); + } + + /*! + @brief return whether type is structured + + This function returns true if and only if the JSON type is structured + (array or object). + + @return `true` if type is structured (array or object), `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_structured()` for all JSON + types.,is_structured} + + @sa @ref is_primitive() -- returns whether value is primitive + @sa @ref is_array() -- returns whether value is an array + @sa @ref is_object() -- returns whether value is an object + + @since version 1.0.0 + */ + constexpr bool is_structured() const noexcept + { + return is_array() or is_object(); + } + + /*! + @brief return whether value is null + + This function returns true if and only if the JSON value is null. + + @return `true` if type is null, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_null()` for all JSON + types.,is_null} + + @since version 1.0.0 + */ + constexpr bool is_null() const noexcept + { + return (m_type == value_t::null); + } + + /*! + @brief return whether value is a boolean + + This function returns true if and only if the JSON value is a boolean. + + @return `true` if type is boolean, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_boolean()` for all JSON + types.,is_boolean} + + @since version 1.0.0 + */ + constexpr bool is_boolean() const noexcept + { + return (m_type == value_t::boolean); + } + + /*! + @brief return whether value is a number + + This function returns true if and only if the JSON value is a number. This + includes both integer (signed and unsigned) and floating-point values. + + @return `true` if type is number (regardless whether integer, unsigned + integer or floating-type), `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number()` for all JSON + types.,is_number} + + @sa @ref is_number_integer() -- check if value is an integer or unsigned + integer number + @sa @ref is_number_unsigned() -- check if value is an unsigned integer + number + @sa @ref is_number_float() -- check if value is a floating-point number + + @since version 1.0.0 + */ + constexpr bool is_number() const noexcept + { + return is_number_integer() or is_number_float(); + } + + /*! + @brief return whether value is an integer number + + This function returns true if and only if the JSON value is a signed or + unsigned integer number. This excludes floating-point values. + + @return `true` if type is an integer or unsigned integer number, `false` + otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number_integer()` for all + JSON types.,is_number_integer} + + @sa @ref is_number() -- check if value is a number + @sa @ref is_number_unsigned() -- check if value is an unsigned integer + number + @sa @ref is_number_float() -- check if value is a floating-point number + + @since version 1.0.0 + */ + constexpr bool is_number_integer() const noexcept + { + return (m_type == value_t::number_integer or m_type == value_t::number_unsigned); + } + + /*! + @brief return whether value is an unsigned integer number + + This function returns true if and only if the JSON value is an unsigned + integer number. This excludes floating-point and signed integer values. + + @return `true` if type is an unsigned integer number, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number_unsigned()` for all + JSON types.,is_number_unsigned} + + @sa @ref is_number() -- check if value is a number + @sa @ref is_number_integer() -- check if value is an integer or unsigned + integer number + @sa @ref is_number_float() -- check if value is a floating-point number + + @since version 2.0.0 + */ + constexpr bool is_number_unsigned() const noexcept + { + return (m_type == value_t::number_unsigned); + } + + /*! + @brief return whether value is a floating-point number + + This function returns true if and only if the JSON value is a + floating-point number. This excludes signed and unsigned integer values. + + @return `true` if type is a floating-point number, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number_float()` for all + JSON types.,is_number_float} + + @sa @ref is_number() -- check if value is number + @sa @ref is_number_integer() -- check if value is an integer number + @sa @ref is_number_unsigned() -- check if value is an unsigned integer + number + + @since version 1.0.0 + */ + constexpr bool is_number_float() const noexcept + { + return (m_type == value_t::number_float); + } + + /*! + @brief return whether value is an object + + This function returns true if and only if the JSON value is an object. + + @return `true` if type is object, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_object()` for all JSON + types.,is_object} + + @since version 1.0.0 + */ + constexpr bool is_object() const noexcept + { + return (m_type == value_t::object); + } + + /*! + @brief return whether value is an array + + This function returns true if and only if the JSON value is an array. + + @return `true` if type is array, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_array()` for all JSON + types.,is_array} + + @since version 1.0.0 + */ + constexpr bool is_array() const noexcept + { + return (m_type == value_t::array); + } + + /*! + @brief return whether value is a string + + This function returns true if and only if the JSON value is a string. + + @return `true` if type is string, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_string()` for all JSON + types.,is_string} + + @since version 1.0.0 + */ + constexpr bool is_string() const noexcept + { + return (m_type == value_t::string); + } + + /*! + @brief return whether value is discarded + + This function returns true if and only if the JSON value was discarded + during parsing with a callback function (see @ref parser_callback_t). + + @note This function will always be `false` for JSON values after parsing. + That is, discarded values can only occur during parsing, but will be + removed when inside a structured value or replaced by null in other cases. + + @return `true` if type is discarded, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_discarded()` for all JSON + types.,is_discarded} + + @since version 1.0.0 + */ + constexpr bool is_discarded() const noexcept + { + return (m_type == value_t::discarded); + } + + /*! + @brief return the type of the JSON value (implicit) + + Implicitly return the type of the JSON value as a value from the @ref + value_t enumeration. + + @return the type of the JSON value + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies the @ref value_t operator for + all JSON types.,operator__value_t} + + @sa @ref type() -- return the type of the JSON value (explicit) + @sa @ref type_name() -- return the type as string + + @since version 1.0.0 + */ + constexpr operator value_t() const noexcept + { + return m_type; + } + + /// @} + + private: + ////////////////// + // value access // + ////////////////// + + /// get a boolean (explicit) + boolean_t get_impl(boolean_t* /*unused*/) const + { + if (JSON_LIKELY(is_boolean())) + { + return m_value.boolean; + } + + JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(type_name()))); + } + + /// get a pointer to the value (object) + object_t* get_impl_ptr(object_t* /*unused*/) noexcept + { + return is_object() ? m_value.object : nullptr; + } + + /// get a pointer to the value (object) + constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept + { + return is_object() ? m_value.object : nullptr; + } + + /// get a pointer to the value (array) + array_t* get_impl_ptr(array_t* /*unused*/) noexcept + { + return is_array() ? m_value.array : nullptr; + } + + /// get a pointer to the value (array) + constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept + { + return is_array() ? m_value.array : nullptr; + } + + /// get a pointer to the value (string) + string_t* get_impl_ptr(string_t* /*unused*/) noexcept + { + return is_string() ? m_value.string : nullptr; + } + + /// get a pointer to the value (string) + constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept + { + return is_string() ? m_value.string : nullptr; + } + + /// get a pointer to the value (boolean) + boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept + { + return is_boolean() ? &m_value.boolean : nullptr; + } + + /// get a pointer to the value (boolean) + constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept + { + return is_boolean() ? &m_value.boolean : nullptr; + } + + /// get a pointer to the value (integer number) + number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept + { + return is_number_integer() ? &m_value.number_integer : nullptr; + } + + /// get a pointer to the value (integer number) + constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept + { + return is_number_integer() ? &m_value.number_integer : nullptr; + } + + /// get a pointer to the value (unsigned number) + number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept + { + return is_number_unsigned() ? &m_value.number_unsigned : nullptr; + } + + /// get a pointer to the value (unsigned number) + constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept + { + return is_number_unsigned() ? &m_value.number_unsigned : nullptr; + } + + /// get a pointer to the value (floating-point number) + number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept + { + return is_number_float() ? &m_value.number_float : nullptr; + } + + /// get a pointer to the value (floating-point number) + constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept + { + return is_number_float() ? &m_value.number_float : nullptr; + } + + /*! + @brief helper function to implement get_ref() + + This function helps to implement get_ref() without code duplication for + const and non-const overloads + + @tparam ThisType will be deduced as `basic_json` or `const basic_json` + + @throw type_error.303 if ReferenceType does not match underlying value + type of the current JSON + */ + template + static ReferenceType get_ref_impl(ThisType& obj) + { + // delegate the call to get_ptr<>() + auto ptr = obj.template get_ptr::type>(); + + if (JSON_LIKELY(ptr != nullptr)) + { + return *ptr; + } + + JSON_THROW(type_error::create(303, "incompatible ReferenceType for get_ref, actual type is " + std::string(obj.type_name()))); + } + + public: + /// @name value access + /// Direct access to the stored value of a JSON value. + /// @{ + + /*! + @brief get special-case overload + + This overloads avoids a lot of template boilerplate, it can be seen as the + identity method + + @tparam BasicJsonType == @ref basic_json + + @return a copy of *this + + @complexity Constant. + + @since version 2.1.0 + */ + template::type, basic_json_t>::value, + int> = 0> + basic_json get() const + { + return *this; + } + + /*! + @brief get a value (explicit) + + Explicit type conversion between the JSON value and a compatible value + which is [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible) + and [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). + The value is converted by calling the @ref json_serializer + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + ValueType ret; + JSONSerializer::from_json(*this, ret); + return ret; + @endcode + + This overloads is chosen if: + - @a ValueType is not @ref basic_json, + - @ref json_serializer has a `from_json()` method of the form + `void from_json(const basic_json&, ValueType&)`, and + - @ref json_serializer does not have a `from_json()` method of + the form `ValueType from_json(const basic_json&)` + + @tparam ValueTypeCV the provided value type + @tparam ValueType the returned value type + + @return copy of the JSON value, converted to @a ValueType + + @throw what @ref json_serializer `from_json()` method throws + + @liveexample{The example below shows several conversions from JSON values + to other types. There a few things to note: (1) Floating-point numbers can + be converted to integers\, (2) A JSON array can be converted to a standard + `std::vector`\, (3) A JSON object can be converted to C++ + associative containers such as `std::unordered_map`.,get__ValueType_const} + + @since version 2.1.0 + */ + template, + detail::enable_if_t < + not std::is_same::value and + detail::has_from_json::value and + not detail::has_non_default_from_json::value, + int> = 0> + ValueType get() const noexcept(noexcept( + JSONSerializer::from_json(std::declval(), std::declval()))) + { + // we cannot static_assert on ValueTypeCV being non-const, because + // there is support for get(), which is why we + // still need the uncvref + static_assert(not std::is_reference::value, + "get() cannot be used with reference types, you might want to use get_ref()"); + static_assert(std::is_default_constructible::value, + "types must be DefaultConstructible when used with get()"); + + ValueType ret; + JSONSerializer::from_json(*this, ret); + return ret; + } + + /*! + @brief get a value (explicit); special case + + Explicit type conversion between the JSON value and a compatible value + which is **not** [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible) + and **not** [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). + The value is converted by calling the @ref json_serializer + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + return JSONSerializer::from_json(*this); + @endcode + + This overloads is chosen if: + - @a ValueType is not @ref basic_json and + - @ref json_serializer has a `from_json()` method of the form + `ValueType from_json(const basic_json&)` + + @note If @ref json_serializer has both overloads of + `from_json()`, this one is chosen. + + @tparam ValueTypeCV the provided value type + @tparam ValueType the returned value type + + @return copy of the JSON value, converted to @a ValueType + + @throw what @ref json_serializer `from_json()` method throws + + @since version 2.1.0 + */ + template, + detail::enable_if_t::value and + detail::has_non_default_from_json::value, + int> = 0> + ValueType get() const noexcept(noexcept( + JSONSerializer::from_json(std::declval()))) + { + static_assert(not std::is_reference::value, + "get() cannot be used with reference types, you might want to use get_ref()"); + return JSONSerializer::from_json(*this); + } + + /*! + @brief get a pointer value (explicit) + + Explicit pointer access to the internally stored JSON value. No copies are + made. + + @warning The pointer becomes invalid if the underlying JSON object + changes. + + @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref + object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, + @ref number_unsigned_t, or @ref number_float_t. + + @return pointer to the internally stored JSON value if the requested + pointer type @a PointerType fits to the JSON value; `nullptr` otherwise + + @complexity Constant. + + @liveexample{The example below shows how pointers to internal values of a + JSON value can be requested. Note that no type conversions are made and a + `nullptr` is returned if the value and the requested pointer type does not + match.,get__PointerType} + + @sa @ref get_ptr() for explicit pointer-member access + + @since version 1.0.0 + */ + template::value, int>::type = 0> + PointerType get() noexcept + { + // delegate the call to get_ptr + return get_ptr(); + } + + /*! + @brief get a pointer value (explicit) + @copydoc get() + */ + template::value, int>::type = 0> + constexpr const PointerType get() const noexcept + { + // delegate the call to get_ptr + return get_ptr(); + } + + /*! + @brief get a pointer value (implicit) + + Implicit pointer access to the internally stored JSON value. No copies are + made. + + @warning Writing data to the pointee of the result yields an undefined + state. + + @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref + object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, + @ref number_unsigned_t, or @ref number_float_t. Enforced by a static + assertion. + + @return pointer to the internally stored JSON value if the requested + pointer type @a PointerType fits to the JSON value; `nullptr` otherwise + + @complexity Constant. + + @liveexample{The example below shows how pointers to internal values of a + JSON value can be requested. Note that no type conversions are made and a + `nullptr` is returned if the value and the requested pointer type does not + match.,get_ptr} + + @since version 1.0.0 + */ + template::value, int>::type = 0> + PointerType get_ptr() noexcept + { + // get the type of the PointerType (remove pointer and const) + using pointee_t = typename std::remove_const::type>::type>::type; + // make sure the type matches the allowed types + static_assert( + std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + , "incompatible pointer type"); + + // delegate the call to get_impl_ptr<>() + return get_impl_ptr(static_cast(nullptr)); + } + + /*! + @brief get a pointer value (implicit) + @copydoc get_ptr() + */ + template::value and + std::is_const::type>::value, int>::type = 0> + constexpr const PointerType get_ptr() const noexcept + { + // get the type of the PointerType (remove pointer and const) + using pointee_t = typename std::remove_const::type>::type>::type; + // make sure the type matches the allowed types + static_assert( + std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + , "incompatible pointer type"); + + // delegate the call to get_impl_ptr<>() const + return get_impl_ptr(static_cast(nullptr)); + } + + /*! + @brief get a reference value (implicit) + + Implicit reference access to the internally stored JSON value. No copies + are made. + + @warning Writing data to the referee of the result yields an undefined + state. + + @tparam ReferenceType reference type; must be a reference to @ref array_t, + @ref object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, or + @ref number_float_t. Enforced by static assertion. + + @return reference to the internally stored JSON value if the requested + reference type @a ReferenceType fits to the JSON value; throws + type_error.303 otherwise + + @throw type_error.303 in case passed type @a ReferenceType is incompatible + with the stored JSON value; see example below + + @complexity Constant. + + @liveexample{The example shows several calls to `get_ref()`.,get_ref} + + @since version 1.1.0 + */ + template::value, int>::type = 0> + ReferenceType get_ref() + { + // delegate call to get_ref_impl + return get_ref_impl(*this); + } + + /*! + @brief get a reference value (implicit) + @copydoc get_ref() + */ + template::value and + std::is_const::type>::value, int>::type = 0> + ReferenceType get_ref() const + { + // delegate call to get_ref_impl + return get_ref_impl(*this); + } + + /*! + @brief get a value (implicit) + + Implicit type conversion between the JSON value and a compatible value. + The call is realized by calling @ref get() const. + + @tparam ValueType non-pointer type compatible to the JSON value, for + instance `int` for JSON integer numbers, `bool` for JSON booleans, or + `std::vector` types for JSON arrays. The character type of @ref string_t + as well as an initializer list of this type is excluded to avoid + ambiguities as these types implicitly convert to `std::string`. + + @return copy of the JSON value, converted to type @a ValueType + + @throw type_error.302 in case passed type @a ValueType is incompatible + to the JSON value type (e.g., the JSON value is of type boolean, but a + string is requested); see example below + + @complexity Linear in the size of the JSON value. + + @liveexample{The example below shows several conversions from JSON values + to other types. There a few things to note: (1) Floating-point numbers can + be converted to integers\, (2) A JSON array can be converted to a standard + `std::vector`\, (3) A JSON object can be converted to C++ + associative containers such as `std::unordered_map`.,operator__ValueType} + + @since version 1.0.0 + */ + template < typename ValueType, typename std::enable_if < + not std::is_pointer::value and + not std::is_same>::value and + not std::is_same::value +#ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015 + and not std::is_same>::value +#endif +#if defined(JSON_HAS_CPP_17) + and not std::is_same::value +#endif + , int >::type = 0 > + operator ValueType() const + { + // delegate the call to get<>() const + return get(); + } + + /// @} + + //////////////////// + // element access // + //////////////////// + + /// @name element access + /// Access to the JSON value. + /// @{ + + /*! + @brief access specified array element with bounds checking + + Returns a reference to the element at specified location @a idx, with + bounds checking. + + @param[in] idx index of the element to access + + @return reference to the element at index @a idx + + @throw type_error.304 if the JSON value is not an array; in this case, + calling `at` with an index makes no sense. See example below. + @throw out_of_range.401 if the index @a idx is out of range of the array; + that is, `idx >= size()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 1.0.0 + + @liveexample{The example below shows how array elements can be read and + written using `at()`. It also demonstrates the different exceptions that + can be thrown.,at__size_type} + */ + reference at(size_type idx) + { + // at only works for arrays + if (JSON_LIKELY(is_array())) + { + JSON_TRY + { + return m_value.array->at(idx); + } + JSON_CATCH (std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); + } + } + + /*! + @brief access specified array element with bounds checking + + Returns a const reference to the element at specified location @a idx, + with bounds checking. + + @param[in] idx index of the element to access + + @return const reference to the element at index @a idx + + @throw type_error.304 if the JSON value is not an array; in this case, + calling `at` with an index makes no sense. See example below. + @throw out_of_range.401 if the index @a idx is out of range of the array; + that is, `idx >= size()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 1.0.0 + + @liveexample{The example below shows how array elements can be read using + `at()`. It also demonstrates the different exceptions that can be thrown., + at__size_type_const} + */ + const_reference at(size_type idx) const + { + // at only works for arrays + if (JSON_LIKELY(is_array())) + { + JSON_TRY + { + return m_value.array->at(idx); + } + JSON_CATCH (std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); + } + } + + /*! + @brief access specified object element with bounds checking + + Returns a reference to the element at with specified key @a key, with + bounds checking. + + @param[in] key key of the element to access + + @return reference to the element at key @a key + + @throw type_error.304 if the JSON value is not an object; in this case, + calling `at` with a key makes no sense. See example below. + @throw out_of_range.403 if the key @a key is is not stored in the object; + that is, `find(key) == end()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Logarithmic in the size of the container. + + @sa @ref operator[](const typename object_t::key_type&) for unchecked + access by reference + @sa @ref value() for access by value with a default value + + @since version 1.0.0 + + @liveexample{The example below shows how object elements can be read and + written using `at()`. It also demonstrates the different exceptions that + can be thrown.,at__object_t_key_type} + */ + reference at(const typename object_t::key_type& key) + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + JSON_TRY + { + return m_value.object->at(key); + } + JSON_CATCH (std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(403, "key '" + key + "' not found")); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); + } + } + + /*! + @brief access specified object element with bounds checking + + Returns a const reference to the element at with specified key @a key, + with bounds checking. + + @param[in] key key of the element to access + + @return const reference to the element at key @a key + + @throw type_error.304 if the JSON value is not an object; in this case, + calling `at` with a key makes no sense. See example below. + @throw out_of_range.403 if the key @a key is is not stored in the object; + that is, `find(key) == end()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Logarithmic in the size of the container. + + @sa @ref operator[](const typename object_t::key_type&) for unchecked + access by reference + @sa @ref value() for access by value with a default value + + @since version 1.0.0 + + @liveexample{The example below shows how object elements can be read using + `at()`. It also demonstrates the different exceptions that can be thrown., + at__object_t_key_type_const} + */ + const_reference at(const typename object_t::key_type& key) const + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + JSON_TRY + { + return m_value.object->at(key); + } + JSON_CATCH (std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(403, "key '" + key + "' not found")); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); + } + } + + /*! + @brief access specified array element + + Returns a reference to the element at specified location @a idx. + + @note If @a idx is beyond the range of the array (i.e., `idx >= size()`), + then the array is silently filled up with `null` values to make `idx` a + valid reference to the last stored element. + + @param[in] idx index of the element to access + + @return reference to the element at index @a idx + + @throw type_error.305 if the JSON value is not an array or null; in that + cases, using the [] operator with an index makes no sense. + + @complexity Constant if @a idx is in the range of the array. Otherwise + linear in `idx - size()`. + + @liveexample{The example below shows how array elements can be read and + written using `[]` operator. Note the addition of `null` + values.,operatorarray__size_type} + + @since version 1.0.0 + */ + reference operator[](size_type idx) + { + // implicitly convert null value to an empty array + if (is_null()) + { + m_type = value_t::array; + m_value.array = create(); + assert_invariant(); + } + + // operator[] only works for arrays + if (JSON_LIKELY(is_array())) + { + // fill up array with null values if given idx is outside range + if (idx >= m_value.array->size()) + { + m_value.array->insert(m_value.array->end(), + idx - m_value.array->size() + 1, + basic_json()); + } + + return m_value.array->operator[](idx); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); + } + + /*! + @brief access specified array element + + Returns a const reference to the element at specified location @a idx. + + @param[in] idx index of the element to access + + @return const reference to the element at index @a idx + + @throw type_error.305 if the JSON value is not an array; in that case, + using the [] operator with an index makes no sense. + + @complexity Constant. + + @liveexample{The example below shows how array elements can be read using + the `[]` operator.,operatorarray__size_type_const} + + @since version 1.0.0 + */ + const_reference operator[](size_type idx) const + { + // const operator[] only works for arrays + if (JSON_LIKELY(is_array())) + { + return m_value.array->operator[](idx); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); + } + + /*! + @brief access specified object element + + Returns a reference to the element at with specified key @a key. + + @note If @a key is not found in the object, then it is silently added to + the object and filled with a `null` value to make `key` a valid reference. + In case the value was `null` before, it is converted to an object. + + @param[in] key key of the element to access + + @return reference to the element at key @a key + + @throw type_error.305 if the JSON value is not an object or null; in that + cases, using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read and + written using the `[]` operator.,operatorarray__key_type} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref value() for access by value with a default value + + @since version 1.0.0 + */ + reference operator[](const typename object_t::key_type& key) + { + // implicitly convert null value to an empty object + if (is_null()) + { + m_type = value_t::object; + m_value.object = create(); + assert_invariant(); + } + + // operator[] only works for objects + if (JSON_LIKELY(is_object())) + { + return m_value.object->operator[](key); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); + } + + /*! + @brief read-only access specified object element + + Returns a const reference to the element at with specified key @a key. No + bounds checking is performed. + + @warning If the element with key @a key does not exist, the behavior is + undefined. + + @param[in] key key of the element to access + + @return const reference to the element at key @a key + + @pre The element with key @a key must exist. **This precondition is + enforced with an assertion.** + + @throw type_error.305 if the JSON value is not an object; in that case, + using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read using + the `[]` operator.,operatorarray__key_type_const} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref value() for access by value with a default value + + @since version 1.0.0 + */ + const_reference operator[](const typename object_t::key_type& key) const + { + // const operator[] only works for objects + if (JSON_LIKELY(is_object())) + { + assert(m_value.object->find(key) != m_value.object->end()); + return m_value.object->find(key)->second; + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); + } + + /*! + @brief access specified object element + + Returns a reference to the element at with specified key @a key. + + @note If @a key is not found in the object, then it is silently added to + the object and filled with a `null` value to make `key` a valid reference. + In case the value was `null` before, it is converted to an object. + + @param[in] key key of the element to access + + @return reference to the element at key @a key + + @throw type_error.305 if the JSON value is not an object or null; in that + cases, using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read and + written using the `[]` operator.,operatorarray__key_type} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref value() for access by value with a default value + + @since version 1.1.0 + */ + template + reference operator[](T* key) + { + // implicitly convert null to object + if (is_null()) + { + m_type = value_t::object; + m_value = value_t::object; + assert_invariant(); + } + + // at only works for objects + if (JSON_LIKELY(is_object())) + { + return m_value.object->operator[](key); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); + } + + /*! + @brief read-only access specified object element + + Returns a const reference to the element at with specified key @a key. No + bounds checking is performed. + + @warning If the element with key @a key does not exist, the behavior is + undefined. + + @param[in] key key of the element to access + + @return const reference to the element at key @a key + + @pre The element with key @a key must exist. **This precondition is + enforced with an assertion.** + + @throw type_error.305 if the JSON value is not an object; in that case, + using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read using + the `[]` operator.,operatorarray__key_type_const} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref value() for access by value with a default value + + @since version 1.1.0 + */ + template + const_reference operator[](T* key) const + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + assert(m_value.object->find(key) != m_value.object->end()); + return m_value.object->find(key)->second; + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); + } + + /*! + @brief access specified object element with default value + + Returns either a copy of an object's element at the specified key @a key + or a given default value if no element with key @a key exists. + + The function is basically equivalent to executing + @code {.cpp} + try { + return at(key); + } catch(out_of_range) { + return default_value; + } + @endcode + + @note Unlike @ref at(const typename object_t::key_type&), this function + does not throw if the given key @a key was not found. + + @note Unlike @ref operator[](const typename object_t::key_type& key), this + function does not implicitly add an element to the position defined by @a + key. This function is furthermore also applicable to const objects. + + @param[in] key key of the element to access + @param[in] default_value the value to return if @a key is not found + + @tparam ValueType type compatible to JSON values, for instance `int` for + JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for + JSON arrays. Note the type of the expected value at @a key and the default + value @a default_value must be compatible. + + @return copy of the element at key @a key or @a default_value if @a key + is not found + + @throw type_error.306 if the JSON value is not an object; in that case, + using `value()` with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be queried + with a default value.,basic_json__value} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref operator[](const typename object_t::key_type&) for unchecked + access by reference + + @since version 1.0.0 + */ + template::value, int>::type = 0> + ValueType value(const typename object_t::key_type& key, const ValueType& default_value) const + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + // if key is found, return value and given default value otherwise + const auto it = find(key); + if (it != end()) + { + return *it; + } + + return default_value; + } + + JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()))); + } + + /*! + @brief overload for a default value of type const char* + @copydoc basic_json::value(const typename object_t::key_type&, ValueType) const + */ + string_t value(const typename object_t::key_type& key, const char* default_value) const + { + return value(key, string_t(default_value)); + } + + /*! + @brief access specified object element via JSON Pointer with default value + + Returns either a copy of an object's element at the specified key @a key + or a given default value if no element with key @a key exists. + + The function is basically equivalent to executing + @code {.cpp} + try { + return at(ptr); + } catch(out_of_range) { + return default_value; + } + @endcode + + @note Unlike @ref at(const json_pointer&), this function does not throw + if the given key @a key was not found. + + @param[in] ptr a JSON pointer to the element to access + @param[in] default_value the value to return if @a ptr found no value + + @tparam ValueType type compatible to JSON values, for instance `int` for + JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for + JSON arrays. Note the type of the expected value at @a key and the default + value @a default_value must be compatible. + + @return copy of the element at key @a key or @a default_value if @a key + is not found + + @throw type_error.306 if the JSON value is not an objec; in that case, + using `value()` with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be queried + with a default value.,basic_json__value_ptr} + + @sa @ref operator[](const json_pointer&) for unchecked access by reference + + @since version 2.0.2 + */ + template::value, int>::type = 0> + ValueType value(const json_pointer& ptr, const ValueType& default_value) const + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + // if pointer resolves a value, return it or use default value + JSON_TRY + { + return ptr.get_checked(this); + } + JSON_CATCH (out_of_range&) + { + return default_value; + } + } + + JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()))); + } + + /*! + @brief overload for a default value of type const char* + @copydoc basic_json::value(const json_pointer&, ValueType) const + */ + string_t value(const json_pointer& ptr, const char* default_value) const + { + return value(ptr, string_t(default_value)); + } + + /*! + @brief access the first element + + Returns a reference to the first element in the container. For a JSON + container `c`, the expression `c.front()` is equivalent to `*c.begin()`. + + @return In case of a structured type (array or object), a reference to the + first element is returned. In case of number, string, or boolean values, a + reference to the value is returned. + + @complexity Constant. + + @pre The JSON value must not be `null` (would throw `std::out_of_range`) + or an empty array or object (undefined behavior, **guarded by + assertions**). + @post The JSON value remains unchanged. + + @throw invalid_iterator.214 when called on `null` value + + @liveexample{The following code shows an example for `front()`.,front} + + @sa @ref back() -- access the last element + + @since version 1.0.0 + */ + reference front() + { + return *begin(); + } + + /*! + @copydoc basic_json::front() + */ + const_reference front() const + { + return *cbegin(); + } + + /*! + @brief access the last element + + Returns a reference to the last element in the container. For a JSON + container `c`, the expression `c.back()` is equivalent to + @code {.cpp} + auto tmp = c.end(); + --tmp; + return *tmp; + @endcode + + @return In case of a structured type (array or object), a reference to the + last element is returned. In case of number, string, or boolean values, a + reference to the value is returned. + + @complexity Constant. + + @pre The JSON value must not be `null` (would throw `std::out_of_range`) + or an empty array or object (undefined behavior, **guarded by + assertions**). + @post The JSON value remains unchanged. + + @throw invalid_iterator.214 when called on a `null` value. See example + below. + + @liveexample{The following code shows an example for `back()`.,back} + + @sa @ref front() -- access the first element + + @since version 1.0.0 + */ + reference back() + { + auto tmp = end(); + --tmp; + return *tmp; + } + + /*! + @copydoc basic_json::back() + */ + const_reference back() const + { + auto tmp = cend(); + --tmp; + return *tmp; + } + + /*! + @brief remove element given an iterator + + Removes the element specified by iterator @a pos. The iterator @a pos must + be valid and dereferenceable. Thus the `end()` iterator (which is valid, + but is not dereferenceable) cannot be used as a value for @a pos. + + If called on a primitive type other than `null`, the resulting JSON value + will be `null`. + + @param[in] pos iterator to the element to remove + @return Iterator following the last removed element. If the iterator @a + pos refers to the last element, the `end()` iterator is returned. + + @tparam IteratorType an @ref iterator or @ref const_iterator + + @post Invalidates iterators and references at or after the point of the + erase, including the `end()` iterator. + + @throw type_error.307 if called on a `null` value; example: `"cannot use + erase() with null"` + @throw invalid_iterator.202 if called on an iterator which does not belong + to the current JSON value; example: `"iterator does not fit current + value"` + @throw invalid_iterator.205 if called on a primitive type with invalid + iterator (i.e., any iterator which is not `begin()`); example: `"iterator + out of range"` + + @complexity The complexity depends on the type: + - objects: amortized constant + - arrays: linear in distance between @a pos and the end of the container + - strings: linear in the length of the string + - other types: constant + + @liveexample{The example shows the result of `erase()` for different JSON + types.,erase__IteratorType} + + @sa @ref erase(IteratorType, IteratorType) -- removes the elements in + the given range + @sa @ref erase(const typename object_t::key_type&) -- removes the element + from an object at the given key + @sa @ref erase(const size_type) -- removes the element from an array at + the given index + + @since version 1.0.0 + */ + template::value or + std::is_same::value, int>::type + = 0> + IteratorType erase(IteratorType pos) + { + // make sure iterator fits the current value + if (JSON_UNLIKELY(this != pos.m_object)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + IteratorType result = end(); + + switch (m_type) + { + case value_t::boolean: + case value_t::number_float: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::string: + { + if (JSON_UNLIKELY(not pos.m_it.primitive_iterator.is_begin())) + { + JSON_THROW(invalid_iterator::create(205, "iterator out of range")); + } + + if (is_string()) + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, m_value.string); + std::allocator_traits::deallocate(alloc, m_value.string, 1); + m_value.string = nullptr; + } + + m_type = value_t::null; + assert_invariant(); + break; + } + + case value_t::object: + { + result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator); + break; + } + + case value_t::array: + { + result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator); + break; + } + + default: + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); + } + + return result; + } + + /*! + @brief remove elements given an iterator range + + Removes the element specified by the range `[first; last)`. The iterator + @a first does not need to be dereferenceable if `first == last`: erasing + an empty range is a no-op. + + If called on a primitive type other than `null`, the resulting JSON value + will be `null`. + + @param[in] first iterator to the beginning of the range to remove + @param[in] last iterator past the end of the range to remove + @return Iterator following the last removed element. If the iterator @a + second refers to the last element, the `end()` iterator is returned. + + @tparam IteratorType an @ref iterator or @ref const_iterator + + @post Invalidates iterators and references at or after the point of the + erase, including the `end()` iterator. + + @throw type_error.307 if called on a `null` value; example: `"cannot use + erase() with null"` + @throw invalid_iterator.203 if called on iterators which does not belong + to the current JSON value; example: `"iterators do not fit current value"` + @throw invalid_iterator.204 if called on a primitive type with invalid + iterators (i.e., if `first != begin()` and `last != end()`); example: + `"iterators out of range"` + + @complexity The complexity depends on the type: + - objects: `log(size()) + std::distance(first, last)` + - arrays: linear in the distance between @a first and @a last, plus linear + in the distance between @a last and end of the container + - strings: linear in the length of the string + - other types: constant + + @liveexample{The example shows the result of `erase()` for different JSON + types.,erase__IteratorType_IteratorType} + + @sa @ref erase(IteratorType) -- removes the element at a given position + @sa @ref erase(const typename object_t::key_type&) -- removes the element + from an object at the given key + @sa @ref erase(const size_type) -- removes the element from an array at + the given index + + @since version 1.0.0 + */ + template::value or + std::is_same::value, int>::type + = 0> + IteratorType erase(IteratorType first, IteratorType last) + { + // make sure iterator fits the current value + if (JSON_UNLIKELY(this != first.m_object or this != last.m_object)) + { + JSON_THROW(invalid_iterator::create(203, "iterators do not fit current value")); + } + + IteratorType result = end(); + + switch (m_type) + { + case value_t::boolean: + case value_t::number_float: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::string: + { + if (JSON_LIKELY(not first.m_it.primitive_iterator.is_begin() + or not last.m_it.primitive_iterator.is_end())) + { + JSON_THROW(invalid_iterator::create(204, "iterators out of range")); + } + + if (is_string()) + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, m_value.string); + std::allocator_traits::deallocate(alloc, m_value.string, 1); + m_value.string = nullptr; + } + + m_type = value_t::null; + assert_invariant(); + break; + } + + case value_t::object: + { + result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator, + last.m_it.object_iterator); + break; + } + + case value_t::array: + { + result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator, + last.m_it.array_iterator); + break; + } + + default: + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); + } + + return result; + } + + /*! + @brief remove element from a JSON object given a key + + Removes elements from a JSON object with the key value @a key. + + @param[in] key value of the elements to remove + + @return Number of elements removed. If @a ObjectType is the default + `std::map` type, the return value will always be `0` (@a key was not + found) or `1` (@a key was found). + + @post References and iterators to the erased elements are invalidated. + Other references and iterators are not affected. + + @throw type_error.307 when called on a type other than JSON object; + example: `"cannot use erase() with null"` + + @complexity `log(size()) + count(key)` + + @liveexample{The example shows the effect of `erase()`.,erase__key_type} + + @sa @ref erase(IteratorType) -- removes the element at a given position + @sa @ref erase(IteratorType, IteratorType) -- removes the elements in + the given range + @sa @ref erase(const size_type) -- removes the element from an array at + the given index + + @since version 1.0.0 + */ + size_type erase(const typename object_t::key_type& key) + { + // this erase only works for objects + if (JSON_LIKELY(is_object())) + { + return m_value.object->erase(key); + } + + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); + } + + /*! + @brief remove element from a JSON array given an index + + Removes element from a JSON array at the index @a idx. + + @param[in] idx index of the element to remove + + @throw type_error.307 when called on a type other than JSON object; + example: `"cannot use erase() with null"` + @throw out_of_range.401 when `idx >= size()`; example: `"array index 17 + is out of range"` + + @complexity Linear in distance between @a idx and the end of the container. + + @liveexample{The example shows the effect of `erase()`.,erase__size_type} + + @sa @ref erase(IteratorType) -- removes the element at a given position + @sa @ref erase(IteratorType, IteratorType) -- removes the elements in + the given range + @sa @ref erase(const typename object_t::key_type&) -- removes the element + from an object at the given key + + @since version 1.0.0 + */ + void erase(const size_type idx) + { + // this erase only works for arrays + if (JSON_LIKELY(is_array())) + { + if (JSON_UNLIKELY(idx >= size())) + { + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); + } + + m_value.array->erase(m_value.array->begin() + static_cast(idx)); + } + else + { + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); + } + } + + /// @} + + //////////// + // lookup // + //////////// + + /// @name lookup + /// @{ + + /*! + @brief find an element in a JSON object + + Finds an element in a JSON object with key equivalent to @a key. If the + element is not found or the JSON value is not an object, end() is + returned. + + @note This method always returns @ref end() when executed on a JSON type + that is not an object. + + @param[in] key key value of the element to search for. + + @return Iterator to an element with key equivalent to @a key. If no such + element is found or the JSON value is not an object, past-the-end (see + @ref end()) iterator is returned. + + @complexity Logarithmic in the size of the JSON object. + + @liveexample{The example shows how `find()` is used.,find__key_type} + + @since version 1.0.0 + */ + template + iterator find(KeyT&& key) + { + auto result = end(); + + if (is_object()) + { + result.m_it.object_iterator = m_value.object->find(std::forward(key)); + } + + return result; + } + + /*! + @brief find an element in a JSON object + @copydoc find(KeyT&&) + */ + template + const_iterator find(KeyT&& key) const + { + auto result = cend(); + + if (is_object()) + { + result.m_it.object_iterator = m_value.object->find(std::forward(key)); + } + + return result; + } + + /*! + @brief returns the number of occurrences of a key in a JSON object + + Returns the number of elements with key @a key. If ObjectType is the + default `std::map` type, the return value will always be `0` (@a key was + not found) or `1` (@a key was found). + + @note This method always returns `0` when executed on a JSON type that is + not an object. + + @param[in] key key value of the element to count + + @return Number of elements with key @a key. If the JSON value is not an + object, the return value will be `0`. + + @complexity Logarithmic in the size of the JSON object. + + @liveexample{The example shows how `count()` is used.,count} + + @since version 1.0.0 + */ + template + size_type count(KeyT&& key) const + { + // return 0 for all nonobject types + return is_object() ? m_value.object->count(std::forward(key)) : 0; + } + + /// @} + + /////////////// + // iterators // + /////////////// + + /// @name iterators + /// @{ + + /*! + @brief returns an iterator to the first element + + Returns an iterator to the first element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return iterator to the first element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + + @liveexample{The following code shows an example for `begin()`.,begin} + + @sa @ref cbegin() -- returns a const iterator to the beginning + @sa @ref end() -- returns an iterator to the end + @sa @ref cend() -- returns a const iterator to the end + + @since version 1.0.0 + */ + iterator begin() noexcept + { + iterator result(this); + result.set_begin(); + return result; + } + + /*! + @copydoc basic_json::cbegin() + */ + const_iterator begin() const noexcept + { + return cbegin(); + } + + /*! + @brief returns a const iterator to the first element + + Returns a const iterator to the first element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return const iterator to the first element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast(*this).begin()`. + + @liveexample{The following code shows an example for `cbegin()`.,cbegin} + + @sa @ref begin() -- returns an iterator to the beginning + @sa @ref end() -- returns an iterator to the end + @sa @ref cend() -- returns a const iterator to the end + + @since version 1.0.0 + */ + const_iterator cbegin() const noexcept + { + const_iterator result(this); + result.set_begin(); + return result; + } + + /*! + @brief returns an iterator to one past the last element + + Returns an iterator to one past the last element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return iterator one past the last element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + + @liveexample{The following code shows an example for `end()`.,end} + + @sa @ref cend() -- returns a const iterator to the end + @sa @ref begin() -- returns an iterator to the beginning + @sa @ref cbegin() -- returns a const iterator to the beginning + + @since version 1.0.0 + */ + iterator end() noexcept + { + iterator result(this); + result.set_end(); + return result; + } + + /*! + @copydoc basic_json::cend() + */ + const_iterator end() const noexcept + { + return cend(); + } + + /*! + @brief returns a const iterator to one past the last element + + Returns a const iterator to one past the last element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return const iterator one past the last element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast(*this).end()`. + + @liveexample{The following code shows an example for `cend()`.,cend} + + @sa @ref end() -- returns an iterator to the end + @sa @ref begin() -- returns an iterator to the beginning + @sa @ref cbegin() -- returns a const iterator to the beginning + + @since version 1.0.0 + */ + const_iterator cend() const noexcept + { + const_iterator result(this); + result.set_end(); + return result; + } + + /*! + @brief returns an iterator to the reverse-beginning + + Returns an iterator to the reverse-beginning; that is, the last element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `reverse_iterator(end())`. + + @liveexample{The following code shows an example for `rbegin()`.,rbegin} + + @sa @ref crbegin() -- returns a const reverse iterator to the beginning + @sa @ref rend() -- returns a reverse iterator to the end + @sa @ref crend() -- returns a const reverse iterator to the end + + @since version 1.0.0 + */ + reverse_iterator rbegin() noexcept + { + return reverse_iterator(end()); + } + + /*! + @copydoc basic_json::crbegin() + */ + const_reverse_iterator rbegin() const noexcept + { + return crbegin(); + } + + /*! + @brief returns an iterator to the reverse-end + + Returns an iterator to the reverse-end; that is, one before the first + element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `reverse_iterator(begin())`. + + @liveexample{The following code shows an example for `rend()`.,rend} + + @sa @ref crend() -- returns a const reverse iterator to the end + @sa @ref rbegin() -- returns a reverse iterator to the beginning + @sa @ref crbegin() -- returns a const reverse iterator to the beginning + + @since version 1.0.0 + */ + reverse_iterator rend() noexcept + { + return reverse_iterator(begin()); + } + + /*! + @copydoc basic_json::crend() + */ + const_reverse_iterator rend() const noexcept + { + return crend(); + } + + /*! + @brief returns a const reverse iterator to the last element + + Returns a const iterator to the reverse-beginning; that is, the last + element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast(*this).rbegin()`. + + @liveexample{The following code shows an example for `crbegin()`.,crbegin} + + @sa @ref rbegin() -- returns a reverse iterator to the beginning + @sa @ref rend() -- returns a reverse iterator to the end + @sa @ref crend() -- returns a const reverse iterator to the end + + @since version 1.0.0 + */ + const_reverse_iterator crbegin() const noexcept + { + return const_reverse_iterator(cend()); + } + + /*! + @brief returns a const reverse iterator to one before the first + + Returns a const reverse iterator to the reverse-end; that is, one before + the first element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast(*this).rend()`. + + @liveexample{The following code shows an example for `crend()`.,crend} + + @sa @ref rend() -- returns a reverse iterator to the end + @sa @ref rbegin() -- returns a reverse iterator to the beginning + @sa @ref crbegin() -- returns a const reverse iterator to the beginning + + @since version 1.0.0 + */ + const_reverse_iterator crend() const noexcept + { + return const_reverse_iterator(cbegin()); + } + + public: + /*! + @brief wrapper to access iterator member functions in range-based for + + This function allows to access @ref iterator::key() and @ref + iterator::value() during range-based for loops. In these loops, a + reference to the JSON values is returned, so there is no access to the + underlying iterator. + + For loop without iterator_wrapper: + + @code{cpp} + for (auto it = j_object.begin(); it != j_object.end(); ++it) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + Range-based for loop without iterator proxy: + + @code{cpp} + for (auto it : j_object) + { + // "it" is of type json::reference and has no key() member + std::cout << "value: " << it << '\n'; + } + @endcode + + Range-based for loop with iterator proxy: + + @code{cpp} + for (auto it : json::iterator_wrapper(j_object)) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + @note When iterating over an array, `key()` will return the index of the + element as string (see example). + + @param[in] ref reference to a JSON value + @return iteration proxy object wrapping @a ref with an interface to use in + range-based for loops + + @liveexample{The following code shows how the wrapper is used,iterator_wrapper} + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @note The name of this function is not yet final and may change in the + future. + */ + static iteration_proxy iterator_wrapper(reference ref) + { + return iteration_proxy(ref); + } + + /*! + @copydoc iterator_wrapper(reference) + */ + static iteration_proxy iterator_wrapper(const_reference ref) + { + return iteration_proxy(ref); + } + + /// @} + + ////////////// + // capacity // + ////////////// + + /// @name capacity + /// @{ + + /*! + @brief checks whether the container is empty. + + Checks if a JSON value has no elements (i.e. whether its @ref size is `0`). + + @return The return value depends on the different types and is + defined as follows: + Value type | return value + ----------- | ------------- + null | `true` + boolean | `false` + string | `false` + number | `false` + object | result of function `object_t::empty()` + array | result of function `array_t::empty()` + + @liveexample{The following code uses `empty()` to check if a JSON + object contains any elements.,empty} + + @complexity Constant, as long as @ref array_t and @ref object_t satisfy + the Container concept; that is, their `empty()` functions have constant + complexity. + + @iterators No changes. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @note This function does not return whether a string stored as JSON value + is empty - it returns whether the JSON container itself is empty which is + false in the case of a string. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + - Has the semantics of `begin() == end()`. + + @sa @ref size() -- returns the number of elements + + @since version 1.0.0 + */ + bool empty() const noexcept + { + switch (m_type) + { + case value_t::null: + { + // null values are empty + return true; + } + + case value_t::array: + { + // delegate call to array_t::empty() + return m_value.array->empty(); + } + + case value_t::object: + { + // delegate call to object_t::empty() + return m_value.object->empty(); + } + + default: + { + // all other types are nonempty + return false; + } + } + } + + /*! + @brief returns the number of elements + + Returns the number of elements in a JSON value. + + @return The return value depends on the different types and is + defined as follows: + Value type | return value + ----------- | ------------- + null | `0` + boolean | `1` + string | `1` + number | `1` + object | result of function object_t::size() + array | result of function array_t::size() + + @liveexample{The following code calls `size()` on the different value + types.,size} + + @complexity Constant, as long as @ref array_t and @ref object_t satisfy + the Container concept; that is, their size() functions have constant + complexity. + + @iterators No changes. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @note This function does not return the length of a string stored as JSON + value - it returns the number of elements in the JSON value which is 1 in + the case of a string. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + - Has the semantics of `std::distance(begin(), end())`. + + @sa @ref empty() -- checks whether the container is empty + @sa @ref max_size() -- returns the maximal number of elements + + @since version 1.0.0 + */ + size_type size() const noexcept + { + switch (m_type) + { + case value_t::null: + { + // null values are empty + return 0; + } + + case value_t::array: + { + // delegate call to array_t::size() + return m_value.array->size(); + } + + case value_t::object: + { + // delegate call to object_t::size() + return m_value.object->size(); + } + + default: + { + // all other types have size 1 + return 1; + } + } + } + + /*! + @brief returns the maximum possible number of elements + + Returns the maximum number of elements a JSON value is able to hold due to + system or library implementation limitations, i.e. `std::distance(begin(), + end())` for the JSON value. + + @return The return value depends on the different types and is + defined as follows: + Value type | return value + ----------- | ------------- + null | `0` (same as `size()`) + boolean | `1` (same as `size()`) + string | `1` (same as `size()`) + number | `1` (same as `size()`) + object | result of function `object_t::max_size()` + array | result of function `array_t::max_size()` + + @liveexample{The following code calls `max_size()` on the different value + types. Note the output is implementation specific.,max_size} + + @complexity Constant, as long as @ref array_t and @ref object_t satisfy + the Container concept; that is, their `max_size()` functions have constant + complexity. + + @iterators No changes. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + - Has the semantics of returning `b.size()` where `b` is the largest + possible JSON value. + + @sa @ref size() -- returns the number of elements + + @since version 1.0.0 + */ + size_type max_size() const noexcept + { + switch (m_type) + { + case value_t::array: + { + // delegate call to array_t::max_size() + return m_value.array->max_size(); + } + + case value_t::object: + { + // delegate call to object_t::max_size() + return m_value.object->max_size(); + } + + default: + { + // all other types have max_size() == size() + return size(); + } + } + } + + /// @} + + /////////////// + // modifiers // + /////////////// + + /// @name modifiers + /// @{ + + /*! + @brief clears the contents + + Clears the content of a JSON value and resets it to the default value as + if @ref basic_json(value_t) would have been called with the current value + type from @ref type(): + + Value type | initial value + ----------- | ------------- + null | `null` + boolean | `false` + string | `""` + number | `0` + object | `{}` + array | `[]` + + @post Has the same effect as calling + @code {.cpp} + *this = basic_json(type()); + @endcode + + @liveexample{The example below shows the effect of `clear()` to different + JSON types.,clear} + + @complexity Linear in the size of the JSON value. + + @iterators All iterators, pointers and references related to this container + are invalidated. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @sa @ref basic_json(value_t) -- constructor that creates an object with the + same value than calling `clear()` + + @since version 1.0.0 + */ + void clear() noexcept + { + switch (m_type) + { + case value_t::number_integer: + { + m_value.number_integer = 0; + break; + } + + case value_t::number_unsigned: + { + m_value.number_unsigned = 0; + break; + } + + case value_t::number_float: + { + m_value.number_float = 0.0; + break; + } + + case value_t::boolean: + { + m_value.boolean = false; + break; + } + + case value_t::string: + { + m_value.string->clear(); + break; + } + + case value_t::array: + { + m_value.array->clear(); + break; + } + + case value_t::object: + { + m_value.object->clear(); + break; + } + + default: + break; + } + } + + /*! + @brief add an object to an array + + Appends the given element @a val to the end of the JSON value. If the + function is called on a JSON null value, an empty array is created before + appending @a val. + + @param[in] val the value to add to the JSON array + + @throw type_error.308 when called on a type other than JSON array or + null; example: `"cannot use push_back() with number"` + + @complexity Amortized constant. + + @liveexample{The example shows how `push_back()` and `+=` can be used to + add elements to a JSON array. Note how the `null` value was silently + converted to a JSON array.,push_back} + + @since version 1.0.0 + */ + void push_back(basic_json&& val) + { + // push_back only works for null objects or arrays + if (JSON_UNLIKELY(not(is_null() or is_array()))) + { + JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); + } + + // transform null object into an array + if (is_null()) + { + m_type = value_t::array; + m_value = value_t::array; + assert_invariant(); + } + + // add element to array (move semantics) + m_value.array->push_back(std::move(val)); + // invalidate object + val.m_type = value_t::null; + } + + /*! + @brief add an object to an array + @copydoc push_back(basic_json&&) + */ + reference operator+=(basic_json&& val) + { + push_back(std::move(val)); + return *this; + } + + /*! + @brief add an object to an array + @copydoc push_back(basic_json&&) + */ + void push_back(const basic_json& val) + { + // push_back only works for null objects or arrays + if (JSON_UNLIKELY(not(is_null() or is_array()))) + { + JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); + } + + // transform null object into an array + if (is_null()) + { + m_type = value_t::array; + m_value = value_t::array; + assert_invariant(); + } + + // add element to array + m_value.array->push_back(val); + } + + /*! + @brief add an object to an array + @copydoc push_back(basic_json&&) + */ + reference operator+=(const basic_json& val) + { + push_back(val); + return *this; + } + + /*! + @brief add an object to an object + + Inserts the given element @a val to the JSON object. If the function is + called on a JSON null value, an empty object is created before inserting + @a val. + + @param[in] val the value to add to the JSON object + + @throw type_error.308 when called on a type other than JSON object or + null; example: `"cannot use push_back() with number"` + + @complexity Logarithmic in the size of the container, O(log(`size()`)). + + @liveexample{The example shows how `push_back()` and `+=` can be used to + add elements to a JSON object. Note how the `null` value was silently + converted to a JSON object.,push_back__object_t__value} + + @since version 1.0.0 + */ + void push_back(const typename object_t::value_type& val) + { + // push_back only works for null objects or objects + if (JSON_UNLIKELY(not(is_null() or is_object()))) + { + JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); + } + + // transform null object into an object + if (is_null()) + { + m_type = value_t::object; + m_value = value_t::object; + assert_invariant(); + } + + // add element to array + m_value.object->insert(val); + } + + /*! + @brief add an object to an object + @copydoc push_back(const typename object_t::value_type&) + */ + reference operator+=(const typename object_t::value_type& val) + { + push_back(val); + return *this; + } + + /*! + @brief add an object to an object + + This function allows to use `push_back` with an initializer list. In case + + 1. the current value is an object, + 2. the initializer list @a init contains only two elements, and + 3. the first element of @a init is a string, + + @a init is converted into an object element and added using + @ref push_back(const typename object_t::value_type&). Otherwise, @a init + is converted to a JSON value and added using @ref push_back(basic_json&&). + + @param[in] init an initializer list + + @complexity Linear in the size of the initializer list @a init. + + @note This function is required to resolve an ambiguous overload error, + because pairs like `{"key", "value"}` can be both interpreted as + `object_t::value_type` or `std::initializer_list`, see + https://github.com/nlohmann/json/issues/235 for more information. + + @liveexample{The example shows how initializer lists are treated as + objects when possible.,push_back__initializer_list} + */ + void push_back(initializer_list_t init) + { + if (is_object() and init.size() == 2 and (*init.begin())->is_string()) + { + basic_json&& key = init.begin()->moved_or_copied(); + push_back(typename object_t::value_type( + std::move(key.get_ref()), (init.begin() + 1)->moved_or_copied())); + } + else + { + push_back(basic_json(init)); + } + } + + /*! + @brief add an object to an object + @copydoc push_back(initializer_list_t) + */ + reference operator+=(initializer_list_t init) + { + push_back(init); + return *this; + } + + /*! + @brief add an object to an array + + Creates a JSON value from the passed parameters @a args to the end of the + JSON value. If the function is called on a JSON null value, an empty array + is created before appending the value created from @a args. + + @param[in] args arguments to forward to a constructor of @ref basic_json + @tparam Args compatible types to create a @ref basic_json object + + @throw type_error.311 when called on a type other than JSON array or + null; example: `"cannot use emplace_back() with number"` + + @complexity Amortized constant. + + @liveexample{The example shows how `push_back()` can be used to add + elements to a JSON array. Note how the `null` value was silently converted + to a JSON array.,emplace_back} + + @since version 2.0.8 + */ + template + void emplace_back(Args&& ... args) + { + // emplace_back only works for null objects or arrays + if (JSON_UNLIKELY(not(is_null() or is_array()))) + { + JSON_THROW(type_error::create(311, "cannot use emplace_back() with " + std::string(type_name()))); + } + + // transform null object into an array + if (is_null()) + { + m_type = value_t::array; + m_value = value_t::array; + assert_invariant(); + } + + // add element to array (perfect forwarding) + m_value.array->emplace_back(std::forward(args)...); + } + + /*! + @brief add an object to an object if key does not exist + + Inserts a new element into a JSON object constructed in-place with the + given @a args if there is no element with the key in the container. If the + function is called on a JSON null value, an empty object is created before + appending the value created from @a args. + + @param[in] args arguments to forward to a constructor of @ref basic_json + @tparam Args compatible types to create a @ref basic_json object + + @return a pair consisting of an iterator to the inserted element, or the + already-existing element if no insertion happened, and a bool + denoting whether the insertion took place. + + @throw type_error.311 when called on a type other than JSON object or + null; example: `"cannot use emplace() with number"` + + @complexity Logarithmic in the size of the container, O(log(`size()`)). + + @liveexample{The example shows how `emplace()` can be used to add elements + to a JSON object. Note how the `null` value was silently converted to a + JSON object. Further note how no value is added if there was already one + value stored with the same key.,emplace} + + @since version 2.0.8 + */ + template + std::pair emplace(Args&& ... args) + { + // emplace only works for null objects or arrays + if (JSON_UNLIKELY(not(is_null() or is_object()))) + { + JSON_THROW(type_error::create(311, "cannot use emplace() with " + std::string(type_name()))); + } + + // transform null object into an object + if (is_null()) + { + m_type = value_t::object; + m_value = value_t::object; + assert_invariant(); + } + + // add element to array (perfect forwarding) + auto res = m_value.object->emplace(std::forward(args)...); + // create result iterator and set iterator to the result of emplace + auto it = begin(); + it.m_it.object_iterator = res.first; + + // return pair of iterator and boolean + return {it, res.second}; + } + + /*! + @brief inserts element + + Inserts element @a val before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] val element to insert + @return iterator pointing to the inserted @a val. + + @throw type_error.309 if called on JSON values other than arrays; + example: `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + + @complexity Constant plus linear in the distance between @a pos and end of + the container. + + @liveexample{The example shows how `insert()` is used.,insert} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, const basic_json& val) + { + // insert only works for arrays + if (JSON_LIKELY(is_array())) + { + // check if iterator pos fits to this JSON value + if (JSON_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + // insert to array and return iterator + iterator result(this); + result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, val); + return result; + } + + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + /*! + @brief inserts element + @copydoc insert(const_iterator, const basic_json&) + */ + iterator insert(const_iterator pos, basic_json&& val) + { + return insert(pos, val); + } + + /*! + @brief inserts elements + + Inserts @a cnt copies of @a val before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] cnt number of copies of @a val to insert + @param[in] val element to insert + @return iterator pointing to the first element inserted, or @a pos if + `cnt==0` + + @throw type_error.309 if called on JSON values other than arrays; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + + @complexity Linear in @a cnt plus linear in the distance between @a pos + and end of the container. + + @liveexample{The example shows how `insert()` is used.,insert__count} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, size_type cnt, const basic_json& val) + { + // insert only works for arrays + if (JSON_LIKELY(is_array())) + { + // check if iterator pos fits to this JSON value + if (JSON_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + // insert to array and return iterator + iterator result(this); + result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val); + return result; + } + + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + /*! + @brief inserts elements + + Inserts elements from range `[first, last)` before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] first begin of the range of elements to insert + @param[in] last end of the range of elements to insert + + @throw type_error.309 if called on JSON values other than arrays; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + @throw invalid_iterator.210 if @a first and @a last do not belong to the + same JSON value; example: `"iterators do not fit"` + @throw invalid_iterator.211 if @a first or @a last are iterators into + container for which insert is called; example: `"passed iterators may not + belong to container"` + + @return iterator pointing to the first element inserted, or @a pos if + `first==last` + + @complexity Linear in `std::distance(first, last)` plus linear in the + distance between @a pos and end of the container. + + @liveexample{The example shows how `insert()` is used.,insert__range} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, const_iterator first, const_iterator last) + { + // insert only works for arrays + if (JSON_UNLIKELY(not is_array())) + { + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + // check if iterator pos fits to this JSON value + if (JSON_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + // check if range iterators belong to the same JSON object + if (JSON_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); + } + + if (JSON_UNLIKELY(first.m_object == this)) + { + JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container")); + } + + // insert to array and return iterator + iterator result(this); + result.m_it.array_iterator = m_value.array->insert( + pos.m_it.array_iterator, + first.m_it.array_iterator, + last.m_it.array_iterator); + return result; + } + + /*! + @brief inserts elements + + Inserts elements from initializer list @a ilist before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] ilist initializer list to insert the values from + + @throw type_error.309 if called on JSON values other than arrays; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + + @return iterator pointing to the first element inserted, or @a pos if + `ilist` is empty + + @complexity Linear in `ilist.size()` plus linear in the distance between + @a pos and end of the container. + + @liveexample{The example shows how `insert()` is used.,insert__ilist} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, initializer_list_t ilist) + { + // insert only works for arrays + if (JSON_UNLIKELY(not is_array())) + { + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + // check if iterator pos fits to this JSON value + if (JSON_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + // insert to array and return iterator + iterator result(this); + result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, ilist.begin(), ilist.end()); + return result; + } + + /*! + @brief inserts elements + + Inserts elements from range `[first, last)`. + + @param[in] first begin of the range of elements to insert + @param[in] last end of the range of elements to insert + + @throw type_error.309 if called on JSON values other than objects; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if iterator @a first or @a last does does not + point to an object; example: `"iterators first and last must point to + objects"` + @throw invalid_iterator.210 if @a first and @a last do not belong to the + same JSON value; example: `"iterators do not fit"` + + @complexity Logarithmic: `O(N*log(size() + N))`, where `N` is the number + of elements to insert. + + @liveexample{The example shows how `insert()` is used.,insert__range_object} + + @since version 3.0.0 + */ + void insert(const_iterator first, const_iterator last) + { + // insert only works for objects + if (JSON_UNLIKELY(not is_object())) + { + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + // check if range iterators belong to the same JSON object + if (JSON_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); + } + + // passed iterators must belong to objects + if (JSON_UNLIKELY(not first.m_object->is_object())) + { + JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects")); + } + + m_value.object->insert(first.m_it.object_iterator, last.m_it.object_iterator); + } + + /*! + @brief updates a JSON object from another object, overwriting existing keys + + Inserts all values from JSON object @a j and overwrites existing keys. + + @param[in] j JSON object to read values from + + @throw type_error.312 if called on JSON values other than objects; example: + `"cannot use update() with string"` + + @complexity O(N*log(size() + N)), where N is the number of elements to + insert. + + @liveexample{The example shows how `update()` is used.,update} + + @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update + + @since version 3.0.0 + */ + void update(const_reference j) + { + // implicitly convert null value to an empty object + if (is_null()) + { + m_type = value_t::object; + m_value.object = create(); + assert_invariant(); + } + + if (JSON_UNLIKELY(not is_object())) + { + JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name()))); + } + if (JSON_UNLIKELY(not j.is_object())) + { + JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(j.type_name()))); + } + + for (auto it = j.cbegin(); it != j.cend(); ++it) + { + m_value.object->operator[](it.key()) = it.value(); + } + } + + /*! + @brief updates a JSON object from another object, overwriting existing keys + + Inserts all values from from range `[first, last)` and overwrites existing + keys. + + @param[in] first begin of the range of elements to insert + @param[in] last end of the range of elements to insert + + @throw type_error.312 if called on JSON values other than objects; example: + `"cannot use update() with string"` + @throw invalid_iterator.202 if iterator @a first or @a last does does not + point to an object; example: `"iterators first and last must point to + objects"` + @throw invalid_iterator.210 if @a first and @a last do not belong to the + same JSON value; example: `"iterators do not fit"` + + @complexity O(N*log(size() + N)), where N is the number of elements to + insert. + + @liveexample{The example shows how `update()` is used__range.,update} + + @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update + + @since version 3.0.0 + */ + void update(const_iterator first, const_iterator last) + { + // implicitly convert null value to an empty object + if (is_null()) + { + m_type = value_t::object; + m_value.object = create(); + assert_invariant(); + } + + if (JSON_UNLIKELY(not is_object())) + { + JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name()))); + } + + // check if range iterators belong to the same JSON object + if (JSON_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); + } + + // passed iterators must belong to objects + if (JSON_UNLIKELY(not first.m_object->is_object() + or not first.m_object->is_object())) + { + JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects")); + } + + for (auto it = first; it != last; ++it) + { + m_value.object->operator[](it.key()) = it.value(); + } + } + + /*! + @brief exchanges the values + + Exchanges the contents of the JSON value with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other JSON value to exchange the contents with + + @complexity Constant. + + @liveexample{The example below shows how JSON values can be swapped with + `swap()`.,swap__reference} + + @since version 1.0.0 + */ + void swap(reference other) noexcept ( + std::is_nothrow_move_constructible::value and + std::is_nothrow_move_assignable::value and + std::is_nothrow_move_constructible::value and + std::is_nothrow_move_assignable::value + ) + { + std::swap(m_type, other.m_type); + std::swap(m_value, other.m_value); + assert_invariant(); + } + + /*! + @brief exchanges the values + + Exchanges the contents of a JSON array with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other array to exchange the contents with + + @throw type_error.310 when JSON value is not an array; example: `"cannot + use swap() with string"` + + @complexity Constant. + + @liveexample{The example below shows how arrays can be swapped with + `swap()`.,swap__array_t} + + @since version 1.0.0 + */ + void swap(array_t& other) + { + // swap only works for arrays + if (JSON_LIKELY(is_array())) + { + std::swap(*(m_value.array), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); + } + } + + /*! + @brief exchanges the values + + Exchanges the contents of a JSON object with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other object to exchange the contents with + + @throw type_error.310 when JSON value is not an object; example: + `"cannot use swap() with string"` + + @complexity Constant. + + @liveexample{The example below shows how objects can be swapped with + `swap()`.,swap__object_t} + + @since version 1.0.0 + */ + void swap(object_t& other) + { + // swap only works for objects + if (JSON_LIKELY(is_object())) + { + std::swap(*(m_value.object), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); + } + } + + /*! + @brief exchanges the values + + Exchanges the contents of a JSON string with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other string to exchange the contents with + + @throw type_error.310 when JSON value is not a string; example: `"cannot + use swap() with boolean"` + + @complexity Constant. + + @liveexample{The example below shows how strings can be swapped with + `swap()`.,swap__string_t} + + @since version 1.0.0 + */ + void swap(string_t& other) + { + // swap only works for strings + if (JSON_LIKELY(is_string())) + { + std::swap(*(m_value.string), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); + } + } + + /// @} + + public: + ////////////////////////////////////////// + // lexicographical comparison operators // + ////////////////////////////////////////// + + /// @name lexicographical comparison operators + /// @{ + + /*! + @brief comparison: equal + + Compares two JSON values for equality according to the following rules: + - Two JSON values are equal if (1) they are from the same type and (2) + their stored values are the same according to their respective + `operator==`. + - Integer and floating-point numbers are automatically converted before + comparison. Note than two NaN values are always treated as unequal. + - Two JSON null values are equal. + + @note Floating-point inside JSON values numbers are compared with + `json::number_float_t::operator==` which is `double::operator==` by + default. To compare floating-point while respecting an epsilon, an alternative + [comparison function](https://github.com/mariokonrad/marnav/blob/master/src/marnav/math/floatingpoint.hpp#L34-#L39) + could be used, for instance + @code {.cpp} + template::value, T>::type> + inline bool is_same(T a, T b, T epsilon = std::numeric_limits::epsilon()) noexcept + { + return std::abs(a - b) <= epsilon; + } + @endcode + + @note NaN values never compare equal to themselves or to other NaN values. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether the values @a lhs and @a rhs are equal + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @complexity Linear. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__equal} + + @since version 1.0.0 + */ + friend bool operator==(const_reference lhs, const_reference rhs) noexcept + { + const auto lhs_type = lhs.type(); + const auto rhs_type = rhs.type(); + + if (lhs_type == rhs_type) + { + switch (lhs_type) + { + case value_t::array: + return (*lhs.m_value.array == *rhs.m_value.array); + + case value_t::object: + return (*lhs.m_value.object == *rhs.m_value.object); + + case value_t::null: + return true; + + case value_t::string: + return (*lhs.m_value.string == *rhs.m_value.string); + + case value_t::boolean: + return (lhs.m_value.boolean == rhs.m_value.boolean); + + case value_t::number_integer: + return (lhs.m_value.number_integer == rhs.m_value.number_integer); + + case value_t::number_unsigned: + return (lhs.m_value.number_unsigned == rhs.m_value.number_unsigned); + + case value_t::number_float: + return (lhs.m_value.number_float == rhs.m_value.number_float); + + default: + return false; + } + } + else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float) + { + return (static_cast(lhs.m_value.number_integer) == rhs.m_value.number_float); + } + else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer) + { + return (lhs.m_value.number_float == static_cast(rhs.m_value.number_integer)); + } + else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float) + { + return (static_cast(lhs.m_value.number_unsigned) == rhs.m_value.number_float); + } + else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned) + { + return (lhs.m_value.number_float == static_cast(rhs.m_value.number_unsigned)); + } + else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer) + { + return (static_cast(lhs.m_value.number_unsigned) == rhs.m_value.number_integer); + } + else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned) + { + return (lhs.m_value.number_integer == static_cast(rhs.m_value.number_unsigned)); + } + + return false; + } + + /*! + @brief comparison: equal + @copydoc operator==(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept + { + return (lhs == basic_json(rhs)); + } + + /*! + @brief comparison: equal + @copydoc operator==(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept + { + return (basic_json(lhs) == rhs); + } + + /*! + @brief comparison: not equal + + Compares two JSON values for inequality by calculating `not (lhs == rhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether the values @a lhs and @a rhs are not equal + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__notequal} + + @since version 1.0.0 + */ + friend bool operator!=(const_reference lhs, const_reference rhs) noexcept + { + return not (lhs == rhs); + } + + /*! + @brief comparison: not equal + @copydoc operator!=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept + { + return (lhs != basic_json(rhs)); + } + + /*! + @brief comparison: not equal + @copydoc operator!=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept + { + return (basic_json(lhs) != rhs); + } + + /*! + @brief comparison: less than + + Compares whether one JSON value @a lhs is less than another JSON value @a + rhs according to the following rules: + - If @a lhs and @a rhs have the same type, the values are compared using + the default `<` operator. + - Integer and floating-point numbers are automatically converted before + comparison + - In case @a lhs and @a rhs have different types, the values are ignored + and the order of the types is considered, see + @ref operator<(const value_t, const value_t). + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is less than @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__less} + + @since version 1.0.0 + */ + friend bool operator<(const_reference lhs, const_reference rhs) noexcept + { + const auto lhs_type = lhs.type(); + const auto rhs_type = rhs.type(); + + if (lhs_type == rhs_type) + { + switch (lhs_type) + { + case value_t::array: + return (*lhs.m_value.array) < (*rhs.m_value.array); + + case value_t::object: + return *lhs.m_value.object < *rhs.m_value.object; + + case value_t::null: + return false; + + case value_t::string: + return *lhs.m_value.string < *rhs.m_value.string; + + case value_t::boolean: + return lhs.m_value.boolean < rhs.m_value.boolean; + + case value_t::number_integer: + return lhs.m_value.number_integer < rhs.m_value.number_integer; + + case value_t::number_unsigned: + return lhs.m_value.number_unsigned < rhs.m_value.number_unsigned; + + case value_t::number_float: + return lhs.m_value.number_float < rhs.m_value.number_float; + + default: + return false; + } + } + else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float) + { + return static_cast(lhs.m_value.number_integer) < rhs.m_value.number_float; + } + else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer) + { + return lhs.m_value.number_float < static_cast(rhs.m_value.number_integer); + } + else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float) + { + return static_cast(lhs.m_value.number_unsigned) < rhs.m_value.number_float; + } + else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned) + { + return lhs.m_value.number_float < static_cast(rhs.m_value.number_unsigned); + } + else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned) + { + return lhs.m_value.number_integer < static_cast(rhs.m_value.number_unsigned); + } + else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer) + { + return static_cast(lhs.m_value.number_unsigned) < rhs.m_value.number_integer; + } + + // We only reach this line if we cannot compare values. In that case, + // we compare types. Note we have to call the operator explicitly, + // because MSVC has problems otherwise. + return operator<(lhs_type, rhs_type); + } + + /*! + @brief comparison: less than + @copydoc operator<(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept + { + return (lhs < basic_json(rhs)); + } + + /*! + @brief comparison: less than + @copydoc operator<(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept + { + return (basic_json(lhs) < rhs); + } + + /*! + @brief comparison: less than or equal + + Compares whether one JSON value @a lhs is less than or equal to another + JSON value by calculating `not (rhs < lhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is less than or equal to @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__greater} + + @since version 1.0.0 + */ + friend bool operator<=(const_reference lhs, const_reference rhs) noexcept + { + return not (rhs < lhs); + } + + /*! + @brief comparison: less than or equal + @copydoc operator<=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept + { + return (lhs <= basic_json(rhs)); + } + + /*! + @brief comparison: less than or equal + @copydoc operator<=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept + { + return (basic_json(lhs) <= rhs); + } + + /*! + @brief comparison: greater than + + Compares whether one JSON value @a lhs is greater than another + JSON value by calculating `not (lhs <= rhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is greater than to @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__lessequal} + + @since version 1.0.0 + */ + friend bool operator>(const_reference lhs, const_reference rhs) noexcept + { + return not (lhs <= rhs); + } + + /*! + @brief comparison: greater than + @copydoc operator>(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept + { + return (lhs > basic_json(rhs)); + } + + /*! + @brief comparison: greater than + @copydoc operator>(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept + { + return (basic_json(lhs) > rhs); + } + + /*! + @brief comparison: greater than or equal + + Compares whether one JSON value @a lhs is greater than or equal to another + JSON value by calculating `not (lhs < rhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is greater than or equal to @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__greaterequal} + + @since version 1.0.0 + */ + friend bool operator>=(const_reference lhs, const_reference rhs) noexcept + { + return not (lhs < rhs); + } + + /*! + @brief comparison: greater than or equal + @copydoc operator>=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept + { + return (lhs >= basic_json(rhs)); + } + + /*! + @brief comparison: greater than or equal + @copydoc operator>=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept + { + return (basic_json(lhs) >= rhs); + } + + /// @} + + /////////////////// + // serialization // + /////////////////// + + /// @name serialization + /// @{ + + /*! + @brief serialize to stream + + Serialize the given JSON value @a j to the output stream @a o. The JSON + value will be serialized using the @ref dump member function. + + - The indentation of the output can be controlled with the member variable + `width` of the output stream @a o. For instance, using the manipulator + `std::setw(4)` on @a o sets the indentation level to `4` and the + serialization result is the same as calling `dump(4)`. + + - The indentation character can be controlled with the member variable + `fill` of the output stream @a o. For instance, the manipulator + `std::setfill('\\t')` sets indentation to use a tab character rather than + the default space character. + + @param[in,out] o stream to serialize to + @param[in] j JSON value to serialize + + @return the stream @a o + + @throw type_error.316 if a string stored inside the JSON value is not + UTF-8 encoded + + @complexity Linear. + + @liveexample{The example below shows the serialization with different + parameters to `width` to adjust the indentation level.,operator_serialize} + + @since version 1.0.0; indentation character added in version 3.0.0 + */ + friend std::ostream& operator<<(std::ostream& o, const basic_json& j) + { + // read width member and use it as indentation parameter if nonzero + const bool pretty_print = (o.width() > 0); + const auto indentation = (pretty_print ? o.width() : 0); + + // reset width to 0 for subsequent calls to this stream + o.width(0); + + // do the actual serialization + serializer s(detail::output_adapter(o), o.fill()); + s.dump(j, pretty_print, false, static_cast(indentation)); + return o; + } + + /*! + @brief serialize to stream + @deprecated This stream operator is deprecated and will be removed in a + future version of the library. Please use + @ref operator<<(std::ostream&, const basic_json&) + instead; that is, replace calls like `j >> o;` with `o << j;`. + @since version 1.0.0; deprecated since version 3.0.0 + */ + JSON_DEPRECATED + friend std::ostream& operator>>(const basic_json& j, std::ostream& o) + { + return o << j; + } + + /// @} + + ///////////////////// + // deserialization // + ///////////////////// + + /// @name deserialization + /// @{ + + /*! + @brief deserialize from a compatible input + + This function reads from a compatible input. Examples are: + - an array of 1-byte values + - strings with character/literal type with size of 1 byte + - input streams + - container with contiguous storage of 1-byte values. Compatible container + types include `std::vector`, `std::string`, `std::array`, + `std::valarray`, and `std::initializer_list`. Furthermore, C-style + arrays can be used with `std::begin()`/`std::end()`. User-defined + containers can be used as long as they implement random-access iterators + and a contiguous storage. + + @pre Each element of the container has a size of 1 byte. Violating this + precondition yields undefined behavior. **This precondition is enforced + with a static assertion.** + + @pre The container storage is contiguous. Violating this precondition + yields undefined behavior. **This precondition is enforced with an + assertion.** + @pre Each element of the container has a size of 1 byte. Violating this + precondition yields undefined behavior. **This precondition is enforced + with a static assertion.** + + @warning There is no way to enforce all preconditions at compile-time. If + the function is called with a noncompliant container and with + assertions switched off, the behavior is undefined and will most + likely yield segmentation violation. + + @param[in] i input to read from + @param[in] cb a parser callback function of type @ref parser_callback_t + which is used to control the deserialization by filtering unwanted values + (optional) + + @return result of the deserialization + + @throw parse_error.101 if a parse error occurs; example: `""unexpected end + of input; expected string literal""` + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. The complexity can be higher if the parser callback function + @a cb has a super-linear complexity. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below demonstrates the `parse()` function reading + from an array.,parse__array__parser_callback_t} + + @liveexample{The example below demonstrates the `parse()` function with + and without callback function.,parse__string__parser_callback_t} + + @liveexample{The example below demonstrates the `parse()` function with + and without callback function.,parse__istream__parser_callback_t} + + @liveexample{The example below demonstrates the `parse()` function reading + from a contiguous container.,parse__contiguouscontainer__parser_callback_t} + + @since version 2.0.3 (contiguous containers) + */ + static basic_json parse(detail::input_adapter i, + const parser_callback_t cb = nullptr, + const bool allow_exceptions = true) + { + basic_json result; + parser(i, cb, allow_exceptions).parse(true, result); + return result; + } + + /*! + @copydoc basic_json parse(detail::input_adapter, const parser_callback_t) + */ + static basic_json parse(detail::input_adapter& i, + const parser_callback_t cb = nullptr, + const bool allow_exceptions = true) + { + basic_json result; + parser(i, cb, allow_exceptions).parse(true, result); + return result; + } + + static bool accept(detail::input_adapter i) + { + return parser(i).accept(true); + } + + static bool accept(detail::input_adapter& i) + { + return parser(i).accept(true); + } + + /*! + @brief deserialize from an iterator range with contiguous storage + + This function reads from an iterator range of a container with contiguous + storage of 1-byte values. Compatible container types include + `std::vector`, `std::string`, `std::array`, `std::valarray`, and + `std::initializer_list`. Furthermore, C-style arrays can be used with + `std::begin()`/`std::end()`. User-defined containers can be used as long + as they implement random-access iterators and a contiguous storage. + + @pre The iterator range is contiguous. Violating this precondition yields + undefined behavior. **This precondition is enforced with an assertion.** + @pre Each element in the range has a size of 1 byte. Violating this + precondition yields undefined behavior. **This precondition is enforced + with a static assertion.** + + @warning There is no way to enforce all preconditions at compile-time. If + the function is called with noncompliant iterators and with + assertions switched off, the behavior is undefined and will most + likely yield segmentation violation. + + @tparam IteratorType iterator of container with contiguous storage + @param[in] first begin of the range to parse (included) + @param[in] last end of the range to parse (excluded) + @param[in] cb a parser callback function of type @ref parser_callback_t + which is used to control the deserialization by filtering unwanted values + (optional) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + + @return result of the deserialization + + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. The complexity can be higher if the parser callback function + @a cb has a super-linear complexity. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below demonstrates the `parse()` function reading + from an iterator range.,parse__iteratortype__parser_callback_t} + + @since version 2.0.3 + */ + template::iterator_category>::value, int>::type = 0> + static basic_json parse(IteratorType first, IteratorType last, + const parser_callback_t cb = nullptr, + const bool allow_exceptions = true) + { + basic_json result; + parser(detail::input_adapter(first, last), cb, allow_exceptions).parse(true, result); + return result; + } + + template::iterator_category>::value, int>::type = 0> + static bool accept(IteratorType first, IteratorType last) + { + return parser(detail::input_adapter(first, last)).accept(true); + } + + /*! + @brief deserialize from stream + @deprecated This stream operator is deprecated and will be removed in a + future version of the library. Please use + @ref operator>>(std::istream&, basic_json&) + instead; that is, replace calls like `j << i;` with `i >> j;`. + @since version 1.0.0; deprecated since version 3.0.0 + */ + JSON_DEPRECATED + friend std::istream& operator<<(basic_json& j, std::istream& i) + { + return operator>>(i, j); + } + + /*! + @brief deserialize from stream + + Deserializes an input stream to a JSON value. + + @param[in,out] i input stream to read a serialized JSON value from + @param[in,out] j JSON value to write the deserialized input to + + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below shows how a JSON value is constructed by + reading a serialization from a stream.,operator_deserialize} + + @sa parse(std::istream&, const parser_callback_t) for a variant with a + parser callback function to filter values while parsing + + @since version 1.0.0 + */ + friend std::istream& operator>>(std::istream& i, basic_json& j) + { + parser(detail::input_adapter(i)).parse(false, j); + return i; + } + + /// @} + + /////////////////////////// + // convenience functions // + /////////////////////////// + + /*! + @brief return the type as string + + Returns the type name as string to be used in error messages - usually to + indicate that a function was called on a wrong JSON type. + + @return a string representation of a the @a m_type member: + Value type | return value + ----------- | ------------- + null | `"null"` + boolean | `"boolean"` + string | `"string"` + number | `"number"` (for all number types) + object | `"object"` + array | `"array"` + discarded | `"discarded"` + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @complexity Constant. + + @liveexample{The following code exemplifies `type_name()` for all JSON + types.,type_name} + + @sa @ref type() -- return the type of the JSON value + @sa @ref operator value_t() -- return the type of the JSON value (implicit) + + @since version 1.0.0, public since 2.1.0, `const char*` and `noexcept` + since 3.0.0 + */ + const char* type_name() const noexcept + { + { + switch (m_type) + { + case value_t::null: + return "null"; + case value_t::object: + return "object"; + case value_t::array: + return "array"; + case value_t::string: + return "string"; + case value_t::boolean: + return "boolean"; + case value_t::discarded: + return "discarded"; + default: + return "number"; + } + } + } + + private: + ////////////////////// + // member variables // + ////////////////////// + + /// the type of the current element + value_t m_type = value_t::null; + + /// the value of the current element + json_value m_value = {}; + + ////////////////////////////////////////// + // binary serialization/deserialization // + ////////////////////////////////////////// + + /// @name binary serialization/deserialization support + /// @{ + + public: + /*! + @brief create a CBOR serialization of a given JSON value + + Serializes a given JSON value @a j to a byte vector using the CBOR (Concise + Binary Object Representation) serialization format. CBOR is a binary + serialization format which aims to be more compact than JSON itself, yet + more efficient to parse. + + The library uses the following mapping from JSON values types to + CBOR types according to the CBOR specification (RFC 7049): + + JSON value type | value/range | CBOR type | first byte + --------------- | ------------------------------------------ | ---------------------------------- | --------------- + null | `null` | Null | 0xF6 + boolean | `true` | True | 0xF5 + boolean | `false` | False | 0xF4 + number_integer | -9223372036854775808..-2147483649 | Negative integer (8 bytes follow) | 0x3B + number_integer | -2147483648..-32769 | Negative integer (4 bytes follow) | 0x3A + number_integer | -32768..-129 | Negative integer (2 bytes follow) | 0x39 + number_integer | -128..-25 | Negative integer (1 byte follow) | 0x38 + number_integer | -24..-1 | Negative integer | 0x20..0x37 + number_integer | 0..23 | Integer | 0x00..0x17 + number_integer | 24..255 | Unsigned integer (1 byte follow) | 0x18 + number_integer | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 + number_integer | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A + number_integer | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B + number_unsigned | 0..23 | Integer | 0x00..0x17 + number_unsigned | 24..255 | Unsigned integer (1 byte follow) | 0x18 + number_unsigned | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 + number_unsigned | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A + number_unsigned | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B + number_float | *any value* | Double-Precision Float | 0xFB + string | *length*: 0..23 | UTF-8 string | 0x60..0x77 + string | *length*: 23..255 | UTF-8 string (1 byte follow) | 0x78 + string | *length*: 256..65535 | UTF-8 string (2 bytes follow) | 0x79 + string | *length*: 65536..4294967295 | UTF-8 string (4 bytes follow) | 0x7A + string | *length*: 4294967296..18446744073709551615 | UTF-8 string (8 bytes follow) | 0x7B + array | *size*: 0..23 | array | 0x80..0x97 + array | *size*: 23..255 | array (1 byte follow) | 0x98 + array | *size*: 256..65535 | array (2 bytes follow) | 0x99 + array | *size*: 65536..4294967295 | array (4 bytes follow) | 0x9A + array | *size*: 4294967296..18446744073709551615 | array (8 bytes follow) | 0x9B + object | *size*: 0..23 | map | 0xA0..0xB7 + object | *size*: 23..255 | map (1 byte follow) | 0xB8 + object | *size*: 256..65535 | map (2 bytes follow) | 0xB9 + object | *size*: 65536..4294967295 | map (4 bytes follow) | 0xBA + object | *size*: 4294967296..18446744073709551615 | map (8 bytes follow) | 0xBB + + @note The mapping is **complete** in the sense that any JSON value type + can be converted to a CBOR value. + + @note If NaN or Infinity are stored inside a JSON number, they are + serialized properly. This behavior differs from the @ref dump() + function which serializes NaN or Infinity to `null`. + + @note The following CBOR types are not used in the conversion: + - byte strings (0x40..0x5F) + - UTF-8 strings terminated by "break" (0x7F) + - arrays terminated by "break" (0x9F) + - maps terminated by "break" (0xBF) + - date/time (0xC0..0xC1) + - bignum (0xC2..0xC3) + - decimal fraction (0xC4) + - bigfloat (0xC5) + - tagged items (0xC6..0xD4, 0xD8..0xDB) + - expected conversions (0xD5..0xD7) + - simple values (0xE0..0xF3, 0xF8) + - undefined (0xF7) + - half and single-precision floats (0xF9-0xFA) + - break (0xFF) + + @param[in] j JSON value to serialize + @return MessagePack serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in CBOR format.,to_cbor} + + @sa http://cbor.io + @sa @ref from_cbor(const std::vector&, const size_t) for the + analogous deserialization + @sa @ref to_msgpack(const basic_json&) for the related MessagePack format + + @since version 2.0.9 + */ + static std::vector to_cbor(const basic_json& j) + { + std::vector result; + to_cbor(j, result); + return result; + } + + static void to_cbor(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_cbor(j); + } + + static void to_cbor(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_cbor(j); + } + + /*! + @brief create a MessagePack serialization of a given JSON value + + Serializes a given JSON value @a j to a byte vector using the MessagePack + serialization format. MessagePack is a binary serialization format which + aims to be more compact than JSON itself, yet more efficient to parse. + + The library uses the following mapping from JSON values types to + MessagePack types according to the MessagePack specification: + + JSON value type | value/range | MessagePack type | first byte + --------------- | --------------------------------- | ---------------- | ---------- + null | `null` | nil | 0xC0 + boolean | `true` | true | 0xC3 + boolean | `false` | false | 0xC2 + number_integer | -9223372036854775808..-2147483649 | int64 | 0xD3 + number_integer | -2147483648..-32769 | int32 | 0xD2 + number_integer | -32768..-129 | int16 | 0xD1 + number_integer | -128..-33 | int8 | 0xD0 + number_integer | -32..-1 | negative fixint | 0xE0..0xFF + number_integer | 0..127 | positive fixint | 0x00..0x7F + number_integer | 128..255 | uint 8 | 0xCC + number_integer | 256..65535 | uint 16 | 0xCD + number_integer | 65536..4294967295 | uint 32 | 0xCE + number_integer | 4294967296..18446744073709551615 | uint 64 | 0xCF + number_unsigned | 0..127 | positive fixint | 0x00..0x7F + number_unsigned | 128..255 | uint 8 | 0xCC + number_unsigned | 256..65535 | uint 16 | 0xCD + number_unsigned | 65536..4294967295 | uint 32 | 0xCE + number_unsigned | 4294967296..18446744073709551615 | uint 64 | 0xCF + number_float | *any value* | float 64 | 0xCB + string | *length*: 0..31 | fixstr | 0xA0..0xBF + string | *length*: 32..255 | str 8 | 0xD9 + string | *length*: 256..65535 | str 16 | 0xDA + string | *length*: 65536..4294967295 | str 32 | 0xDB + array | *size*: 0..15 | fixarray | 0x90..0x9F + array | *size*: 16..65535 | array 16 | 0xDC + array | *size*: 65536..4294967295 | array 32 | 0xDD + object | *size*: 0..15 | fix map | 0x80..0x8F + object | *size*: 16..65535 | map 16 | 0xDE + object | *size*: 65536..4294967295 | map 32 | 0xDF + + @note The mapping is **complete** in the sense that any JSON value type + can be converted to a MessagePack value. + + @note The following values can **not** be converted to a MessagePack value: + - strings with more than 4294967295 bytes + - arrays with more than 4294967295 elements + - objects with more than 4294967295 elements + + @note The following MessagePack types are not used in the conversion: + - bin 8 - bin 32 (0xC4..0xC6) + - ext 8 - ext 32 (0xC7..0xC9) + - float 32 (0xCA) + - fixext 1 - fixext 16 (0xD4..0xD8) + + @note Any MessagePack output created @ref to_msgpack can be successfully + parsed by @ref from_msgpack. + + @note If NaN or Infinity are stored inside a JSON number, they are + serialized properly. This behavior differs from the @ref dump() + function which serializes NaN or Infinity to `null`. + + @param[in] j JSON value to serialize + @return MessagePack serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in MessagePack format.,to_msgpack} + + @sa http://msgpack.org + @sa @ref from_msgpack(const std::vector&, const size_t) for the + analogous deserialization + @sa @ref to_cbor(const basic_json& for the related CBOR format + + @since version 2.0.9 + */ + static std::vector to_msgpack(const basic_json& j) + { + std::vector result; + to_msgpack(j, result); + return result; + } + + static void to_msgpack(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_msgpack(j); + } + + static void to_msgpack(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_msgpack(j); + } + + /*! + @brief create a JSON value from an input in CBOR format + + Deserializes a given input @a i to a JSON value using the CBOR (Concise + Binary Object Representation) serialization format. + + The library maps CBOR types to JSON value types as follows: + + CBOR type | JSON value type | first byte + ---------------------- | --------------- | ---------- + Integer | number_unsigned | 0x00..0x17 + Unsigned integer | number_unsigned | 0x18 + Unsigned integer | number_unsigned | 0x19 + Unsigned integer | number_unsigned | 0x1A + Unsigned integer | number_unsigned | 0x1B + Negative integer | number_integer | 0x20..0x37 + Negative integer | number_integer | 0x38 + Negative integer | number_integer | 0x39 + Negative integer | number_integer | 0x3A + Negative integer | number_integer | 0x3B + Negative integer | number_integer | 0x40..0x57 + UTF-8 string | string | 0x60..0x77 + UTF-8 string | string | 0x78 + UTF-8 string | string | 0x79 + UTF-8 string | string | 0x7A + UTF-8 string | string | 0x7B + UTF-8 string | string | 0x7F + array | array | 0x80..0x97 + array | array | 0x98 + array | array | 0x99 + array | array | 0x9A + array | array | 0x9B + array | array | 0x9F + map | object | 0xA0..0xB7 + map | object | 0xB8 + map | object | 0xB9 + map | object | 0xBA + map | object | 0xBB + map | object | 0xBF + False | `false` | 0xF4 + True | `true` | 0xF5 + Nill | `null` | 0xF6 + Half-Precision Float | number_float | 0xF9 + Single-Precision Float | number_float | 0xFA + Double-Precision Float | number_float | 0xFB + + @warning The mapping is **incomplete** in the sense that not all CBOR + types can be converted to a JSON value. The following CBOR types + are not supported and will yield parse errors (parse_error.112): + - byte strings (0x40..0x5F) + - date/time (0xC0..0xC1) + - bignum (0xC2..0xC3) + - decimal fraction (0xC4) + - bigfloat (0xC5) + - tagged items (0xC6..0xD4, 0xD8..0xDB) + - expected conversions (0xD5..0xD7) + - simple values (0xE0..0xF3, 0xF8) + - undefined (0xF7) + + @warning CBOR allows map keys of any type, whereas JSON only allows + strings as keys in object values. Therefore, CBOR maps with keys + other than UTF-8 strings are rejected (parse_error.113). + + @note Any CBOR output created @ref to_cbor can be successfully parsed by + @ref from_cbor. + + @param[in] i an input in CBOR format convertible to an input adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + @return deserialized JSON value + + @throw parse_error.110 if the given input ends prematurely or the end of + file was not reached when @a strict was set to true + @throw parse_error.112 if unsupported features from CBOR were + used in the given input @a v or if the input is not valid CBOR + @throw parse_error.113 if a string was expected as map key, but not found + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in CBOR + format to a JSON value.,from_cbor} + + @sa http://cbor.io + @sa @ref to_cbor(const basic_json&) for the analogous serialization + @sa @ref from_msgpack(detail::input_adapter, const bool) for the + related MessagePack format + + @since version 2.0.9; parameter @a start_index since 2.1.1; changed to + consume input adapters, removed start_index parameter, and added + @a strict parameter since 3.0.0 + */ + static basic_json from_cbor(detail::input_adapter i, + const bool strict = true) + { + return binary_reader(i).parse_cbor(strict); + } + + /*! + @copydoc from_cbor(detail::input_adapter, const bool) + */ + template::value, int> = 0> + static basic_json from_cbor(A1 && a1, A2 && a2, const bool strict = true) + { + return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_cbor(strict); + } + + /*! + @brief create a JSON value from an input in MessagePack format + + Deserializes a given input @a i to a JSON value using the MessagePack + serialization format. + + The library maps MessagePack types to JSON value types as follows: + + MessagePack type | JSON value type | first byte + ---------------- | --------------- | ---------- + positive fixint | number_unsigned | 0x00..0x7F + fixmap | object | 0x80..0x8F + fixarray | array | 0x90..0x9F + fixstr | string | 0xA0..0xBF + nil | `null` | 0xC0 + false | `false` | 0xC2 + true | `true` | 0xC3 + float 32 | number_float | 0xCA + float 64 | number_float | 0xCB + uint 8 | number_unsigned | 0xCC + uint 16 | number_unsigned | 0xCD + uint 32 | number_unsigned | 0xCE + uint 64 | number_unsigned | 0xCF + int 8 | number_integer | 0xD0 + int 16 | number_integer | 0xD1 + int 32 | number_integer | 0xD2 + int 64 | number_integer | 0xD3 + str 8 | string | 0xD9 + str 16 | string | 0xDA + str 32 | string | 0xDB + array 16 | array | 0xDC + array 32 | array | 0xDD + map 16 | object | 0xDE + map 32 | object | 0xDF + negative fixint | number_integer | 0xE0-0xFF + + @warning The mapping is **incomplete** in the sense that not all + MessagePack types can be converted to a JSON value. The following + MessagePack types are not supported and will yield parse errors: + - bin 8 - bin 32 (0xC4..0xC6) + - ext 8 - ext 32 (0xC7..0xC9) + - fixext 1 - fixext 16 (0xD4..0xD8) + + @note Any MessagePack output created @ref to_msgpack can be successfully + parsed by @ref from_msgpack. + + @param[in] i an input in MessagePack format convertible to an input + adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + + @throw parse_error.110 if the given input ends prematurely or the end of + file was not reached when @a strict was set to true + @throw parse_error.112 if unsupported features from MessagePack were + used in the given input @a i or if the input is not valid MessagePack + @throw parse_error.113 if a string was expected as map key, but not found + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in + MessagePack format to a JSON value.,from_msgpack} + + @sa http://msgpack.org + @sa @ref to_msgpack(const basic_json&) for the analogous serialization + @sa @ref from_cbor(detail::input_adapter, const bool) for the related CBOR + format + + @since version 2.0.9; parameter @a start_index since 2.1.1; changed to + consume input adapters, removed start_index parameter, and added + @a strict parameter since 3.0.0 + */ + static basic_json from_msgpack(detail::input_adapter i, + const bool strict = true) + { + return binary_reader(i).parse_msgpack(strict); + } + + /*! + @copydoc from_msgpack(detail::input_adapter, const bool) + */ + template::value, int> = 0> + static basic_json from_msgpack(A1 && a1, A2 && a2, const bool strict = true) + { + return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_msgpack(strict); + } + + /// @} + + ////////////////////////// + // JSON Pointer support // + ////////////////////////// + + /// @name JSON Pointer functions + /// @{ + + /*! + @brief access specified element via JSON Pointer + + Uses a JSON pointer to retrieve a reference to the respective JSON value. + No bound checking is performed. Similar to @ref operator[](const typename + object_t::key_type&), `null` values are created in arrays and objects if + necessary. + + In particular: + - If the JSON pointer points to an object key that does not exist, it + is created an filled with a `null` value before a reference to it + is returned. + - If the JSON pointer points to an array index that does not exist, it + is created an filled with a `null` value before a reference to it + is returned. All indices between the current maximum and the given + index are also filled with `null`. + - The special value `-` is treated as a synonym for the index past the + end. + + @param[in] ptr a JSON pointer + + @return reference to the element pointed to by @a ptr + + @complexity Constant. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved + + @liveexample{The behavior is shown in the example.,operatorjson_pointer} + + @since version 2.0.0 + */ + reference operator[](const json_pointer& ptr) + { + return ptr.get_unchecked(this); + } + + /*! + @brief access specified element via JSON Pointer + + Uses a JSON pointer to retrieve a reference to the respective JSON value. + No bound checking is performed. The function does not change the JSON + value; no `null` values are created. In particular, the the special value + `-` yields an exception. + + @param[in] ptr JSON pointer to the desired element + + @return const reference to the element pointed to by @a ptr + + @complexity Constant. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + + @liveexample{The behavior is shown in the example.,operatorjson_pointer_const} + + @since version 2.0.0 + */ + const_reference operator[](const json_pointer& ptr) const + { + return ptr.get_unchecked(this); + } + + /*! + @brief access specified element via JSON Pointer + + Returns a reference to the element at with specified JSON pointer @a ptr, + with bounds checking. + + @param[in] ptr JSON pointer to the desired element + + @return reference to the element pointed to by @a ptr + + @throw parse_error.106 if an array index in the passed JSON pointer @a ptr + begins with '0'. See example below. + + @throw parse_error.109 if an array index in the passed JSON pointer @a ptr + is not a number. See example below. + + @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr + is out of range. See example below. + + @throw out_of_range.402 if the array index '-' is used in the passed JSON + pointer @a ptr. As `at` provides checked access (and no elements are + implicitly inserted), the index '-' is always invalid. See example below. + + @throw out_of_range.403 if the JSON pointer describes a key of an object + which cannot be found. See example below. + + @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved. + See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 2.0.0 + + @liveexample{The behavior is shown in the example.,at_json_pointer} + */ + reference at(const json_pointer& ptr) + { + return ptr.get_checked(this); + } + + /*! + @brief access specified element via JSON Pointer + + Returns a const reference to the element at with specified JSON pointer @a + ptr, with bounds checking. + + @param[in] ptr JSON pointer to the desired element + + @return reference to the element pointed to by @a ptr + + @throw parse_error.106 if an array index in the passed JSON pointer @a ptr + begins with '0'. See example below. + + @throw parse_error.109 if an array index in the passed JSON pointer @a ptr + is not a number. See example below. + + @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr + is out of range. See example below. + + @throw out_of_range.402 if the array index '-' is used in the passed JSON + pointer @a ptr. As `at` provides checked access (and no elements are + implicitly inserted), the index '-' is always invalid. See example below. + + @throw out_of_range.403 if the JSON pointer describes a key of an object + which cannot be found. See example below. + + @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved. + See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 2.0.0 + + @liveexample{The behavior is shown in the example.,at_json_pointer_const} + */ + const_reference at(const json_pointer& ptr) const + { + return ptr.get_checked(this); + } + + /*! + @brief return flattened JSON value + + The function creates a JSON object whose keys are JSON pointers (see [RFC + 6901](https://tools.ietf.org/html/rfc6901)) and whose values are all + primitive. The original JSON value can be restored using the @ref + unflatten() function. + + @return an object that maps JSON pointers to primitive values + + @note Empty objects and arrays are flattened to `null` and will not be + reconstructed correctly by the @ref unflatten() function. + + @complexity Linear in the size the JSON value. + + @liveexample{The following code shows how a JSON object is flattened to an + object whose keys consist of JSON pointers.,flatten} + + @sa @ref unflatten() for the reverse function + + @since version 2.0.0 + */ + basic_json flatten() const + { + basic_json result(value_t::object); + json_pointer::flatten("", *this, result); + return result; + } + + /*! + @brief unflatten a previously flattened JSON value + + The function restores the arbitrary nesting of a JSON value that has been + flattened before using the @ref flatten() function. The JSON value must + meet certain constraints: + 1. The value must be an object. + 2. The keys must be JSON pointers (see + [RFC 6901](https://tools.ietf.org/html/rfc6901)) + 3. The mapped values must be primitive JSON types. + + @return the original JSON from a flattened version + + @note Empty objects and arrays are flattened by @ref flatten() to `null` + values and can not unflattened to their original type. Apart from + this example, for a JSON value `j`, the following is always true: + `j == j.flatten().unflatten()`. + + @complexity Linear in the size the JSON value. + + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitive + + @liveexample{The following code shows how a flattened JSON object is + unflattened into the original nested JSON object.,unflatten} + + @sa @ref flatten() for the reverse function + + @since version 2.0.0 + */ + basic_json unflatten() const + { + return json_pointer::unflatten(*this); + } + + /// @} + + ////////////////////////// + // JSON Patch functions // + ////////////////////////// + + /// @name JSON Patch functions + /// @{ + + /*! + @brief applies a JSON patch + + [JSON Patch](http://jsonpatch.com) defines a JSON document structure for + expressing a sequence of operations to apply to a JSON) document. With + this function, a JSON Patch is applied to the current JSON value by + executing all operations from the patch. + + @param[in] json_patch JSON patch document + @return patched document + + @note The application of a patch is atomic: Either all operations succeed + and the patched document is returned or an exception is thrown. In + any case, the original value is not changed: the patch is applied + to a copy of the value. + + @throw parse_error.104 if the JSON patch does not consist of an array of + objects + + @throw parse_error.105 if the JSON patch is malformed (e.g., mandatory + attributes are missing); example: `"operation add must have member path"` + + @throw out_of_range.401 if an array index is out of range. + + @throw out_of_range.403 if a JSON pointer inside the patch could not be + resolved successfully in the current JSON value; example: `"key baz not + found"` + + @throw out_of_range.405 if JSON pointer has no parent ("add", "remove", + "move") + + @throw other_error.501 if "test" operation was unsuccessful + + @complexity Linear in the size of the JSON value and the length of the + JSON patch. As usually only a fraction of the JSON value is affected by + the patch, the complexity can usually be neglected. + + @liveexample{The following code shows how a JSON patch is applied to a + value.,patch} + + @sa @ref diff -- create a JSON patch by comparing two JSON values + + @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) + @sa [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901) + + @since version 2.0.0 + */ + basic_json patch(const basic_json& json_patch) const + { + // make a working copy to apply the patch to + basic_json result = *this; + + // the valid JSON Patch operations + enum class patch_operations {add, remove, replace, move, copy, test, invalid}; + + const auto get_op = [](const std::string & op) + { + if (op == "add") + { + return patch_operations::add; + } + if (op == "remove") + { + return patch_operations::remove; + } + if (op == "replace") + { + return patch_operations::replace; + } + if (op == "move") + { + return patch_operations::move; + } + if (op == "copy") + { + return patch_operations::copy; + } + if (op == "test") + { + return patch_operations::test; + } + + return patch_operations::invalid; + }; + + // wrapper for "add" operation; add value at ptr + const auto operation_add = [&result](json_pointer & ptr, basic_json val) + { + // adding to the root of the target document means replacing it + if (ptr.is_root()) + { + result = val; + } + else + { + // make sure the top element of the pointer exists + json_pointer top_pointer = ptr.top(); + if (top_pointer != ptr) + { + result.at(top_pointer); + } + + // get reference to parent of JSON pointer ptr + const auto last_path = ptr.pop_back(); + basic_json& parent = result[ptr]; + + switch (parent.m_type) + { + case value_t::null: + case value_t::object: + { + // use operator[] to add value + parent[last_path] = val; + break; + } + + case value_t::array: + { + if (last_path == "-") + { + // special case: append to back + parent.push_back(val); + } + else + { + const auto idx = json_pointer::array_index(last_path); + if (JSON_UNLIKELY(static_cast(idx) > parent.size())) + { + // avoid undefined behavior + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); + } + else + { + // default case: insert add offset + parent.insert(parent.begin() + static_cast(idx), val); + } + } + break; + } + + default: + { + // if there exists a parent it cannot be primitive + assert(false); // LCOV_EXCL_LINE + } + } + } + }; + + // wrapper for "remove" operation; remove value at ptr + const auto operation_remove = [&result](json_pointer & ptr) + { + // get reference to parent of JSON pointer ptr + const auto last_path = ptr.pop_back(); + basic_json& parent = result.at(ptr); + + // remove child + if (parent.is_object()) + { + // perform range check + auto it = parent.find(last_path); + if (JSON_LIKELY(it != parent.end())) + { + parent.erase(it); + } + else + { + JSON_THROW(out_of_range::create(403, "key '" + last_path + "' not found")); + } + } + else if (parent.is_array()) + { + // note erase performs range check + parent.erase(static_cast(json_pointer::array_index(last_path))); + } + }; + + // type check: top level value must be an array + if (JSON_UNLIKELY(not json_patch.is_array())) + { + JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects")); + } + + // iterate and apply the operations + for (const auto& val : json_patch) + { + // wrapper to get a value for an operation + const auto get_value = [&val](const std::string & op, + const std::string & member, + bool string_type) -> basic_json& + { + // find value + auto it = val.m_value.object->find(member); + + // context-sensitive error message + const auto error_msg = (op == "op") ? "operation" : "operation '" + op + "'"; + + // check if desired value is present + if (JSON_UNLIKELY(it == val.m_value.object->end())) + { + JSON_THROW(parse_error::create(105, 0, error_msg + " must have member '" + member + "'")); + } + + // check if result is of type string + if (JSON_UNLIKELY(string_type and not it->second.is_string())) + { + JSON_THROW(parse_error::create(105, 0, error_msg + " must have string member '" + member + "'")); + } + + // no error: return value + return it->second; + }; + + // type check: every element of the array must be an object + if (JSON_UNLIKELY(not val.is_object())) + { + JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects")); + } + + // collect mandatory members + const std::string op = get_value("op", "op", true); + const std::string path = get_value(op, "path", true); + json_pointer ptr(path); + + switch (get_op(op)) + { + case patch_operations::add: + { + operation_add(ptr, get_value("add", "value", false)); + break; + } + + case patch_operations::remove: + { + operation_remove(ptr); + break; + } + + case patch_operations::replace: + { + // the "path" location must exist - use at() + result.at(ptr) = get_value("replace", "value", false); + break; + } + + case patch_operations::move: + { + const std::string from_path = get_value("move", "from", true); + json_pointer from_ptr(from_path); + + // the "from" location must exist - use at() + basic_json v = result.at(from_ptr); + + // The move operation is functionally identical to a + // "remove" operation on the "from" location, followed + // immediately by an "add" operation at the target + // location with the value that was just removed. + operation_remove(from_ptr); + operation_add(ptr, v); + break; + } + + case patch_operations::copy: + { + const std::string from_path = get_value("copy", "from", true); + const json_pointer from_ptr(from_path); + + // the "from" location must exist - use at() + basic_json v = result.at(from_ptr); + + // The copy is functionally identical to an "add" + // operation at the target location using the value + // specified in the "from" member. + operation_add(ptr, v); + break; + } + + case patch_operations::test: + { + bool success = false; + JSON_TRY + { + // check if "value" matches the one at "path" + // the "path" location must exist - use at() + success = (result.at(ptr) == get_value("test", "value", false)); + } + JSON_CATCH (out_of_range&) + { + // ignore out of range errors: success remains false + } + + // throw an exception if test fails + if (JSON_UNLIKELY(not success)) + { + JSON_THROW(other_error::create(501, "unsuccessful: " + val.dump())); + } + + break; + } + + case patch_operations::invalid: + { + // op must be "add", "remove", "replace", "move", "copy", or + // "test" + JSON_THROW(parse_error::create(105, 0, "operation value '" + op + "' is invalid")); + } + } + } + + return result; + } + + /*! + @brief creates a diff as a JSON patch + + Creates a [JSON Patch](http://jsonpatch.com) so that value @a source can + be changed into the value @a target by calling @ref patch function. + + @invariant For two JSON values @a source and @a target, the following code + yields always `true`: + @code {.cpp} + source.patch(diff(source, target)) == target; + @endcode + + @note Currently, only `remove`, `add`, and `replace` operations are + generated. + + @param[in] source JSON value to compare from + @param[in] target JSON value to compare against + @param[in] path helper value to create JSON pointers + + @return a JSON patch to convert the @a source to @a target + + @complexity Linear in the lengths of @a source and @a target. + + @liveexample{The following code shows how a JSON patch is created as a + diff for two JSON values.,diff} + + @sa @ref patch -- apply a JSON patch + + @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) + + @since version 2.0.0 + */ + static basic_json diff(const basic_json& source, const basic_json& target, + const std::string& path = "") + { + // the patch + basic_json result(value_t::array); + + // if the values are the same, return empty patch + if (source == target) + { + return result; + } + + if (source.type() != target.type()) + { + // different types: replace value + result.push_back( + { + {"op", "replace"}, {"path", path}, {"value", target} + }); + } + else + { + switch (source.type()) + { + case value_t::array: + { + // first pass: traverse common elements + std::size_t i = 0; + while (i < source.size() and i < target.size()) + { + // recursive call to compare array values at index i + auto temp_diff = diff(source[i], target[i], path + "/" + std::to_string(i)); + result.insert(result.end(), temp_diff.begin(), temp_diff.end()); + ++i; + } + + // i now reached the end of at least one array + // in a second pass, traverse the remaining elements + + // remove my remaining elements + const auto end_index = static_cast(result.size()); + while (i < source.size()) + { + // add operations in reverse order to avoid invalid + // indices + result.insert(result.begin() + end_index, object( + { + {"op", "remove"}, + {"path", path + "/" + std::to_string(i)} + })); + ++i; + } + + // add other remaining elements + while (i < target.size()) + { + result.push_back( + { + {"op", "add"}, + {"path", path + "/" + std::to_string(i)}, + {"value", target[i]} + }); + ++i; + } + + break; + } + + case value_t::object: + { + // first pass: traverse this object's elements + for (auto it = source.cbegin(); it != source.cend(); ++it) + { + // escape the key name to be used in a JSON patch + const auto key = json_pointer::escape(it.key()); + + if (target.find(it.key()) != target.end()) + { + // recursive call to compare object values at key it + auto temp_diff = diff(it.value(), target[it.key()], path + "/" + key); + result.insert(result.end(), temp_diff.begin(), temp_diff.end()); + } + else + { + // found a key that is not in o -> remove it + result.push_back(object( + { + {"op", "remove"}, {"path", path + "/" + key} + })); + } + } + + // second pass: traverse other object's elements + for (auto it = target.cbegin(); it != target.cend(); ++it) + { + if (source.find(it.key()) == source.end()) + { + // found a key that is not in this -> add it + const auto key = json_pointer::escape(it.key()); + result.push_back( + { + {"op", "add"}, {"path", path + "/" + key}, + {"value", it.value()} + }); + } + } + + break; + } + + default: + { + // both primitive type: replace value + result.push_back( + { + {"op", "replace"}, {"path", path}, {"value", target} + }); + break; + } + } + } + + return result; + } + + /// @} +}; + +////////////////// +// json_pointer // +////////////////// + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +NLOHMANN_BASIC_JSON_TPL& +json_pointer::get_and_create(NLOHMANN_BASIC_JSON_TPL& j) const +{ + using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; + auto result = &j; + + // in case no reference tokens exist, return a reference to the JSON value + // j which will be overwritten by a primitive value + for (const auto& reference_token : reference_tokens) + { + switch (result->m_type) + { + case detail::value_t::null: + { + if (reference_token == "0") + { + // start a new array if reference token is 0 + result = &result->operator[](0); + } + else + { + // start a new object otherwise + result = &result->operator[](reference_token); + } + break; + } + + case detail::value_t::object: + { + // create an entry in the object + result = &result->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + // create an entry in the array + JSON_TRY + { + result = &result->operator[](static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + /* + The following code is only reached if there exists a reference + token _and_ the current value is primitive. In this case, we have + an error situation, because primitive values may only occur as + single value; that is, with an empty list of reference tokens. + */ + default: + JSON_THROW(detail::type_error::create(313, "invalid value to unflatten")); + } + } + + return *result; +} + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +NLOHMANN_BASIC_JSON_TPL& +json_pointer::get_unchecked(NLOHMANN_BASIC_JSON_TPL* ptr) const +{ + using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; + for (const auto& reference_token : reference_tokens) + { + // convert null values to arrays or objects before continuing + if (ptr->m_type == detail::value_t::null) + { + // check if reference token is a number + const bool nums = + std::all_of(reference_token.begin(), reference_token.end(), + [](const char x) + { + return (x >= '0' and x <= '9'); + }); + + // change value to array for numbers or "-" or to object otherwise + *ptr = (nums or reference_token == "-") + ? detail::value_t::array + : detail::value_t::object; + } + + switch (ptr->m_type) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + if (reference_token == "-") + { + // explicitly treat "-" as index beyond the end + ptr = &ptr->operator[](ptr->m_value.array->size()); + } + else + { + // convert array index to number; unchecked access + JSON_TRY + { + ptr = &ptr->operator[]( + static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; +} + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +NLOHMANN_BASIC_JSON_TPL& +json_pointer::get_checked(NLOHMANN_BASIC_JSON_TPL* ptr) const +{ + using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // note: at performs range check + JSON_TRY + { + ptr = &ptr->at(static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; +} + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +const NLOHMANN_BASIC_JSON_TPL& +json_pointer::get_unchecked(const NLOHMANN_BASIC_JSON_TPL* ptr) const +{ + using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" cannot be used for const access + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // use unchecked array access + JSON_TRY + { + ptr = &ptr->operator[]( + static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; +} + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +const NLOHMANN_BASIC_JSON_TPL& +json_pointer::get_checked(const NLOHMANN_BASIC_JSON_TPL* ptr) const +{ + using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // note: at performs range check + JSON_TRY + { + ptr = &ptr->at(static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; +} + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +void json_pointer::flatten(const std::string& reference_string, + const NLOHMANN_BASIC_JSON_TPL& value, + NLOHMANN_BASIC_JSON_TPL& result) +{ + switch (value.m_type) + { + case detail::value_t::array: + { + if (value.m_value.array->empty()) + { + // flatten empty array as null + result[reference_string] = nullptr; + } + else + { + // iterate array and use index as reference string + for (std::size_t i = 0; i < value.m_value.array->size(); ++i) + { + flatten(reference_string + "/" + std::to_string(i), + value.m_value.array->operator[](i), result); + } + } + break; + } + + case detail::value_t::object: + { + if (value.m_value.object->empty()) + { + // flatten empty object as null + result[reference_string] = nullptr; + } + else + { + // iterate object and use keys as reference string + for (const auto& element : *value.m_value.object) + { + flatten(reference_string + "/" + escape(element.first), element.second, result); + } + } + break; + } + + default: + { + // add primitive value with its reference string + result[reference_string] = value; + break; + } + } +} + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +NLOHMANN_BASIC_JSON_TPL +json_pointer::unflatten(const NLOHMANN_BASIC_JSON_TPL& value) +{ + if (JSON_UNLIKELY(not value.is_object())) + { + JSON_THROW(detail::type_error::create(314, "only objects can be unflattened")); + } + + NLOHMANN_BASIC_JSON_TPL result; + + // iterate the JSON object values + for (const auto& element : *value.m_value.object) + { + if (JSON_UNLIKELY(not element.second.is_primitive())) + { + JSON_THROW(detail::type_error::create(315, "values in object must be primitive")); + } + + // assign value to reference pointed to by JSON pointer; Note that if + // the JSON pointer is "" (i.e., points to the whole value), function + // get_and_create returns a reference to result itself. An assignment + // will then create a primitive value. + json_pointer(element.first).get_and_create(result) = element.second; + } + + return result; +} + +inline bool operator==(json_pointer const& lhs, json_pointer const& rhs) noexcept +{ + return (lhs.reference_tokens == rhs.reference_tokens); +} + +inline bool operator!=(json_pointer const& lhs, json_pointer const& rhs) noexcept +{ + return not (lhs == rhs); +} +} // namespace nlohmann + +/////////////////////// +// nonmember support // +/////////////////////// + +// specialization of std::swap, and std::hash +namespace std +{ +/*! +@brief exchanges the values of two JSON objects + +@since version 1.0.0 +*/ +template<> +inline void swap(nlohmann::json& j1, + nlohmann::json& j2) noexcept( + is_nothrow_move_constructible::value and + is_nothrow_move_assignable::value + ) +{ + j1.swap(j2); +} + +/// hash value for JSON objects +template<> +struct hash +{ + /*! + @brief return a hash value for a JSON object + + @since version 1.0.0 + */ + std::size_t operator()(const nlohmann::json& j) const + { + // a naive hashing via the string representation + const auto& h = hash(); + return h(j.dump()); + } +}; + +/// specialization for std::less +/// @note: do not remove the space after '<', +/// see https://github.com/nlohmann/json/pull/679 +template<> +struct less< ::nlohmann::detail::value_t> +{ + /*! + @brief compare two value_t enum values + @since version 3.0.0 + */ + bool operator()(nlohmann::detail::value_t lhs, + nlohmann::detail::value_t rhs) const noexcept + { + return nlohmann::detail::operator<(lhs, rhs); + } +}; + +} // namespace std + +/*! +@brief user-defined string literal for JSON values + +This operator implements a user-defined string literal for JSON objects. It +can be used by adding `"_json"` to a string literal and returns a JSON object +if no parse error occurred. + +@param[in] s a string representation of a JSON object +@param[in] n the length of string @a s +@return a JSON object + +@since version 1.0.0 +*/ +inline nlohmann::json operator "" _json(const char* s, std::size_t n) +{ + return nlohmann::json::parse(s, s + n); +} + +/*! +@brief user-defined string literal for JSON pointer + +This operator implements a user-defined string literal for JSON Pointers. It +can be used by adding `"_json_pointer"` to a string literal and returns a JSON pointer +object if no parse error occurred. + +@param[in] s a string representation of a JSON Pointer +@param[in] n the length of string @a s +@return a JSON pointer object + +@since version 2.0.0 +*/ +inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n) +{ + return nlohmann::json::json_pointer(std::string(s, n)); +} + + +/*** Start of inlined file: macro_unscope.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP +#define NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP + +// restore GCC/clang diagnostic settings +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #pragma GCC diagnostic pop +#endif +#if defined(__clang__) + #pragma GCC diagnostic pop +#endif + +// clean up +#undef JSON_CATCH +#undef JSON_THROW +#undef JSON_TRY +#undef JSON_LIKELY +#undef JSON_UNLIKELY +#undef JSON_DEPRECATED +#undef JSON_HAS_CPP_14 +#undef JSON_HAS_CPP_17 +#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION +#undef NLOHMANN_BASIC_JSON_TPL +#undef NLOHMANN_JSON_HAS_HELPER + +#endif + +/*** End of inlined file: macro_unscope.hpp ***/ + +#endif + diff --git a/test/Makefile b/test/Makefile index a170acb9..bd8b73f0 100644 --- a/test/Makefile +++ b/test/Makefile @@ -77,7 +77,7 @@ test-%: src/unit-%.o src/unit.o ../src/json.hpp thirdparty/catch/catch.hpp TEST_PATTERN ?= "*" TEST_PREFIX = "" -check: $(TESTCASES) +check: $(OBJECTS) $(TESTCASES) @cd .. ; for testcase in $(TESTCASES); do echo "Executing $$testcase..."; $(TEST_PREFIX)test/$$testcase $(TEST_PATTERN) || exit 1; done From ebf28a26ee3b17448aceb27de6e48a85fc7ed426 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Mon, 8 Jan 2018 20:49:02 +0100 Subject: [PATCH 032/106] :construction: another try --- test/src/unit-ubjson.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index b7daa1a1..d65f5a14 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -89,16 +89,16 @@ TEST_CASE("UBJSON") { std::vector numbers; numbers.push_back((std::numeric_limits::min)()); - numbers.push_back(-1000000000000000000); - numbers.push_back(-100000000000000000); - numbers.push_back(-10000000000000000); - numbers.push_back(-1000000000000000); - numbers.push_back(-100000000000000); - numbers.push_back(-10000000000000); - numbers.push_back(-1000000000000); - numbers.push_back(-100000000000); - numbers.push_back(-10000000000); - numbers.push_back(-2147483649); + numbers.push_back(-1000000000000000000l); + numbers.push_back(-100000000000000000l); + numbers.push_back(-10000000000000000l); + numbers.push_back(-1000000000000000l); + numbers.push_back(-100000000000000l); + numbers.push_back(-10000000000000l); + numbers.push_back(-1000000000000l); + numbers.push_back(-100000000000l); + numbers.push_back(-10000000000l); + numbers.push_back(-2147483649l); for (auto i : numbers) { CAPTURE(i); From 97e0d20ce9223cc12a44ab0da31e72eead9353a5 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Mon, 8 Jan 2018 21:16:20 +0100 Subject: [PATCH 033/106] :construction: debug --- test/src/unit-ubjson.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index d65f5a14..e4c06091 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -99,9 +99,12 @@ TEST_CASE("UBJSON") numbers.push_back(-100000000000l); numbers.push_back(-10000000000l); numbers.push_back(-2147483649l); + size_t index = 0; for (auto i : numbers) { CAPTURE(i); + CAPTURE(index); + ++index; // create JSON value with integer number json j = i; From fb1154c237cdbd21094e5cf526201b466efdc7b2 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Mon, 8 Jan 2018 21:26:41 +0100 Subject: [PATCH 034/106] :construction: debug --- test/src/unit-ubjson.cpp | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index e4c06091..bda8224a 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -89,22 +89,19 @@ TEST_CASE("UBJSON") { std::vector numbers; numbers.push_back((std::numeric_limits::min)()); - numbers.push_back(-1000000000000000000l); - numbers.push_back(-100000000000000000l); - numbers.push_back(-10000000000000000l); - numbers.push_back(-1000000000000000l); - numbers.push_back(-100000000000000l); - numbers.push_back(-10000000000000l); - numbers.push_back(-1000000000000l); - numbers.push_back(-100000000000l); - numbers.push_back(-10000000000l); - numbers.push_back(-2147483649l); - size_t index = 0; + numbers.push_back(-1000000000000000000ll); + numbers.push_back(-100000000000000000ll); + numbers.push_back(-10000000000000000ll); + numbers.push_back(-1000000000000000ll); + numbers.push_back(-100000000000000ll); + numbers.push_back(-10000000000000ll); + numbers.push_back(-1000000000000ll); + numbers.push_back(-100000000000ll); + numbers.push_back(-10000000000ll); + numbers.push_back(-2147483649ll); for (auto i : numbers) { CAPTURE(i); - CAPTURE(index); - ++index; // create JSON value with integer number json j = i; From fd04967676f9224226d304945b51187e94c23253 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Mon, 8 Jan 2018 21:37:51 +0100 Subject: [PATCH 035/106] :bug: fixed copy-paste error --- src/json.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 2aef1594..e7465e29 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -6377,7 +6377,7 @@ class binary_writer oa->write_character(static_cast('I')); // int16 write_number(static_cast(n)); } - else if (-(std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) + else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) { oa->write_character(static_cast('l')); // int32 write_number(static_cast(n)); @@ -6419,7 +6419,7 @@ class binary_writer { return 'I'; } - else if (-(std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) + else if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) { return 'l'; } @@ -6444,7 +6444,7 @@ class binary_writer { return 'I'; } - else if (-(std::numeric_limits::min)() <= j.m_value.number_unsigned and j.m_value.number_unsigned <= (std::numeric_limits::max)()) + else if ((std::numeric_limits::min)() <= j.m_value.number_unsigned and j.m_value.number_unsigned <= (std::numeric_limits::max)()) { return 'l'; } From 0a2920e0fdae64586867dc64666e32e960d9bce0 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 9 Jan 2018 18:30:02 +0100 Subject: [PATCH 036/106] :recycle: reorganized code --- CMakeLists.txt | 30 +- Makefile | 45 +- {src => develop}/adl_serializer.hpp | 0 .../detail/conversions/from_json.hpp | 0 .../detail/conversions/to_json.hpp | 0 {src => develop}/detail/exceptions.hpp | 0 .../detail/iterators/internal_iterator.hpp | 0 .../detail/iterators/iter_impl.hpp | 0 .../detail/iterators/iteration_proxy.hpp | 0 .../iterators/json_reverse_iterator.hpp | 0 .../detail/iterators/primitive_iterator.hpp | 0 {src => develop}/detail/json_ref.hpp | 0 {src => develop}/detail/macro_scope.hpp | 0 {src => develop}/detail/macro_unscope.hpp | 0 {src => develop}/detail/meta.hpp | 0 .../detail/parsing/binary_reader.hpp | 0 .../detail/parsing/binary_writer.hpp | 0 .../detail/parsing/input_adapters.hpp | 0 {src => develop}/detail/parsing/lexer.hpp | 0 .../detail/parsing/output_adapters.hpp | 0 {src => develop}/detail/parsing/parser.hpp | 0 {src => develop}/detail/serializer.hpp | 0 {src => develop}/detail/value_t.hpp | 0 develop/json.hpp | 8024 +++++++ {src => develop}/json_fwd.hpp | 0 single_header/json.hpp | 19067 ---------------- src/json.hpp | 11173 ++++++++- 27 files changed, 19205 insertions(+), 19134 deletions(-) rename {src => develop}/adl_serializer.hpp (100%) rename {src => develop}/detail/conversions/from_json.hpp (100%) rename {src => develop}/detail/conversions/to_json.hpp (100%) rename {src => develop}/detail/exceptions.hpp (100%) rename {src => develop}/detail/iterators/internal_iterator.hpp (100%) rename {src => develop}/detail/iterators/iter_impl.hpp (100%) rename {src => develop}/detail/iterators/iteration_proxy.hpp (100%) rename {src => develop}/detail/iterators/json_reverse_iterator.hpp (100%) rename {src => develop}/detail/iterators/primitive_iterator.hpp (100%) rename {src => develop}/detail/json_ref.hpp (100%) rename {src => develop}/detail/macro_scope.hpp (100%) rename {src => develop}/detail/macro_unscope.hpp (100%) rename {src => develop}/detail/meta.hpp (100%) rename {src => develop}/detail/parsing/binary_reader.hpp (100%) rename {src => develop}/detail/parsing/binary_writer.hpp (100%) rename {src => develop}/detail/parsing/input_adapters.hpp (100%) rename {src => develop}/detail/parsing/lexer.hpp (100%) rename {src => develop}/detail/parsing/output_adapters.hpp (100%) rename {src => develop}/detail/parsing/parser.hpp (100%) rename {src => develop}/detail/serializer.hpp (100%) rename {src => develop}/detail/value_t.hpp (100%) create mode 100644 develop/json.hpp rename {src => develop}/json_fwd.hpp (100%) delete mode 100644 single_header/json.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 9cbe3501..cd513a97 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -68,18 +68,26 @@ if(BUILD_TESTING AND JSON_BuildTests) add_subdirectory(test) endif() -ExternalProject_Add(amalgamate - GIT_REPOSITORY "https://github.com/theodelrieu/Amalgamate" - CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}" -) +## +## AMALGAMATION +## create a single header file +## +option(JSON_Amalgamate "Build and use amalgamation" OFF) -# There is no way to tell amalgamate to force-write the output file even if it already exists... -add_custom_target(single_header ALL rm -f "${CMAKE_SOURCE_DIR}/single_header/json.hpp" - COMMENT "Amalgamating json.hpp..." - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/${NLOHMANN_JSON_SOURCE_DIR} - DEPENDS amalgamate - COMMAND "${CMAKE_BINARY_DIR}/bin/amalgamate" -w '*.hpp' -i . json.hpp "${CMAKE_SOURCE_DIR}/single_header/json.hpp" -) +if(JSON_Amalgamate) + ExternalProject_Add(amalgamate + GIT_REPOSITORY "https://github.com/theodelrieu/Amalgamate" + CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}" + ) + + # There is no way to tell amalgamate to force-write the output file even if it already exists... + add_custom_target(single_header ALL rm -f "${CMAKE_SOURCE_DIR}/${NLOHMANN_JSON_SOURCE_DIR}/json.hpp" + COMMENT "Amalgamating json.hpp..." + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/develop + DEPENDS amalgamate + COMMAND "${CMAKE_BINARY_DIR}/bin/amalgamate" -w '*.hpp' -i . json.hpp "${CMAKE_SOURCE_DIR}/${NLOHMANN_JSON_SOURCE_DIR}/json.hpp" + ) +endif() ## ## INSTALL diff --git a/Makefile b/Makefile index 8165aa9f..adf2b402 100644 --- a/Makefile +++ b/Makefile @@ -1,29 +1,30 @@ .PHONY: pretty clean ChangeLog.md SRCDIR = ./src +DEVDIR = ./develop SRCS = $(SRCDIR)/json.hpp \ - $(SRCDIR)/json_fwd.hpp \ - $(SRCDIR)/detail/macro_scope.hpp \ - $(SRCDIR)/detail/macro_unscope.hpp \ - $(SRCDIR)/detail/meta.hpp \ - $(SRCDIR)/detail/exceptions.hpp \ - $(SRCDIR)/detail/value_t.hpp \ - $(SRCDIR)/detail/conversions/from_json.hpp \ - $(SRCDIR)/detail/conversions/to_json.hpp \ - $(SRCDIR)/detail/parsing/input_adapters.hpp \ - $(SRCDIR)/detail/parsing/lexer.hpp \ - $(SRCDIR)/detail/parsing/parser.hpp \ - $(SRCDIR)/detail/iterators/primitive_iterator.hpp \ - $(SRCDIR)/detail/iterators/internal_iterator.hpp \ - $(SRCDIR)/detail/iterators/iter_impl.hpp \ - $(SRCDIR)/detail/iterators/iteration_proxy.hpp \ - $(SRCDIR)/detail/iterators/json_reverse_iterator.hpp \ - $(SRCDIR)/detail/parsing/output_adapters.hpp \ - $(SRCDIR)/detail/parsing/binary_reader.hpp \ - $(SRCDIR)/detail/parsing/binary_writer.hpp \ - $(SRCDIR)/detail/serializer.hpp \ - $(SRCDIR)/detail/json_ref.hpp \ - $(SRCDIR)/adl_serializer.hpp + $(DEVDIR)/json_fwd.hpp \ + $(DEVDIR)/detail/macro_scope.hpp \ + $(DEVDIR)/detail/macro_unscope.hpp \ + $(DEVDIR)/detail/meta.hpp \ + $(DEVDIR)/detail/exceptions.hpp \ + $(DEVDIR)/detail/value_t.hpp \ + $(DEVDIR)/detail/conversions/from_json.hpp \ + $(DEVDIR)/detail/conversions/to_json.hpp \ + $(DEVDIR)/detail/parsing/input_adapters.hpp \ + $(DEVDIR)/detail/parsing/lexer.hpp \ + $(DEVDIR)/detail/parsing/parser.hpp \ + $(DEVDIR)/detail/iterators/primitive_iterator.hpp \ + $(DEVDIR)/detail/iterators/internal_iterator.hpp \ + $(DEVDIR)/detail/iterators/iter_impl.hpp \ + $(DEVDIR)/detail/iterators/iteration_proxy.hpp \ + $(DEVDIR)/detail/iterators/json_reverse_iterator.hpp \ + $(DEVDIR)/detail/parsing/output_adapters.hpp \ + $(DEVDIR)/detail/parsing/binary_reader.hpp \ + $(DEVDIR)/detail/parsing/binary_writer.hpp \ + $(DEVDIR)/detail/serializer.hpp \ + $(DEVDIR)/detail/json_ref.hpp \ + $(DEVDIR)/adl_serializer.hpp UNAME = $(shell uname) CXX=clang++ diff --git a/src/adl_serializer.hpp b/develop/adl_serializer.hpp similarity index 100% rename from src/adl_serializer.hpp rename to develop/adl_serializer.hpp diff --git a/src/detail/conversions/from_json.hpp b/develop/detail/conversions/from_json.hpp similarity index 100% rename from src/detail/conversions/from_json.hpp rename to develop/detail/conversions/from_json.hpp diff --git a/src/detail/conversions/to_json.hpp b/develop/detail/conversions/to_json.hpp similarity index 100% rename from src/detail/conversions/to_json.hpp rename to develop/detail/conversions/to_json.hpp diff --git a/src/detail/exceptions.hpp b/develop/detail/exceptions.hpp similarity index 100% rename from src/detail/exceptions.hpp rename to develop/detail/exceptions.hpp diff --git a/src/detail/iterators/internal_iterator.hpp b/develop/detail/iterators/internal_iterator.hpp similarity index 100% rename from src/detail/iterators/internal_iterator.hpp rename to develop/detail/iterators/internal_iterator.hpp diff --git a/src/detail/iterators/iter_impl.hpp b/develop/detail/iterators/iter_impl.hpp similarity index 100% rename from src/detail/iterators/iter_impl.hpp rename to develop/detail/iterators/iter_impl.hpp diff --git a/src/detail/iterators/iteration_proxy.hpp b/develop/detail/iterators/iteration_proxy.hpp similarity index 100% rename from src/detail/iterators/iteration_proxy.hpp rename to develop/detail/iterators/iteration_proxy.hpp diff --git a/src/detail/iterators/json_reverse_iterator.hpp b/develop/detail/iterators/json_reverse_iterator.hpp similarity index 100% rename from src/detail/iterators/json_reverse_iterator.hpp rename to develop/detail/iterators/json_reverse_iterator.hpp diff --git a/src/detail/iterators/primitive_iterator.hpp b/develop/detail/iterators/primitive_iterator.hpp similarity index 100% rename from src/detail/iterators/primitive_iterator.hpp rename to develop/detail/iterators/primitive_iterator.hpp diff --git a/src/detail/json_ref.hpp b/develop/detail/json_ref.hpp similarity index 100% rename from src/detail/json_ref.hpp rename to develop/detail/json_ref.hpp diff --git a/src/detail/macro_scope.hpp b/develop/detail/macro_scope.hpp similarity index 100% rename from src/detail/macro_scope.hpp rename to develop/detail/macro_scope.hpp diff --git a/src/detail/macro_unscope.hpp b/develop/detail/macro_unscope.hpp similarity index 100% rename from src/detail/macro_unscope.hpp rename to develop/detail/macro_unscope.hpp diff --git a/src/detail/meta.hpp b/develop/detail/meta.hpp similarity index 100% rename from src/detail/meta.hpp rename to develop/detail/meta.hpp diff --git a/src/detail/parsing/binary_reader.hpp b/develop/detail/parsing/binary_reader.hpp similarity index 100% rename from src/detail/parsing/binary_reader.hpp rename to develop/detail/parsing/binary_reader.hpp diff --git a/src/detail/parsing/binary_writer.hpp b/develop/detail/parsing/binary_writer.hpp similarity index 100% rename from src/detail/parsing/binary_writer.hpp rename to develop/detail/parsing/binary_writer.hpp diff --git a/src/detail/parsing/input_adapters.hpp b/develop/detail/parsing/input_adapters.hpp similarity index 100% rename from src/detail/parsing/input_adapters.hpp rename to develop/detail/parsing/input_adapters.hpp diff --git a/src/detail/parsing/lexer.hpp b/develop/detail/parsing/lexer.hpp similarity index 100% rename from src/detail/parsing/lexer.hpp rename to develop/detail/parsing/lexer.hpp diff --git a/src/detail/parsing/output_adapters.hpp b/develop/detail/parsing/output_adapters.hpp similarity index 100% rename from src/detail/parsing/output_adapters.hpp rename to develop/detail/parsing/output_adapters.hpp diff --git a/src/detail/parsing/parser.hpp b/develop/detail/parsing/parser.hpp similarity index 100% rename from src/detail/parsing/parser.hpp rename to develop/detail/parsing/parser.hpp diff --git a/src/detail/serializer.hpp b/develop/detail/serializer.hpp similarity index 100% rename from src/detail/serializer.hpp rename to develop/detail/serializer.hpp diff --git a/src/detail/value_t.hpp b/develop/detail/value_t.hpp similarity index 100% rename from src/detail/value_t.hpp rename to develop/detail/value_t.hpp diff --git a/develop/json.hpp b/develop/json.hpp new file mode 100644 index 00000000..f4c139e4 --- /dev/null +++ b/develop/json.hpp @@ -0,0 +1,8024 @@ +/* + __ _____ _____ _____ + __| | __| | | | JSON for Modern C++ +| | |__ | | | | | | version 3.0.1 +|_____|_____|_____|_|___| https://github.com/nlohmann/json + +Licensed under the MIT License . +Copyright (c) 2013-2017 Niels Lohmann . + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#ifndef NLOHMANN_JSON_HPP +#define NLOHMANN_JSON_HPP + +#include // all_of, find, for_each +#include // assert +#include // and, not, or +#include // nullptr_t, ptrdiff_t, size_t +#include // hash, less +#include // initializer_list +#include // istream, ostream +#include // iterator_traits, random_access_iterator_tag +#include // accumulate +#include // string, stoi, to_string +#include // declval, forward, move, pair, swap + +#include "json_fwd.hpp" +#include "detail/macro_scope.hpp" +#include "detail/meta.hpp" +#include "detail/exceptions.hpp" +#include "detail/value_t.hpp" +#include "detail/conversions/from_json.hpp" +#include "detail/conversions/to_json.hpp" +#include "detail/parsing/input_adapters.hpp" +#include "detail/parsing/lexer.hpp" +#include "detail/parsing/parser.hpp" +#include "detail/iterators/primitive_iterator.hpp" +#include "detail/iterators/internal_iterator.hpp" +#include "detail/iterators/iter_impl.hpp" +#include "detail/iterators/iteration_proxy.hpp" +#include "detail/iterators/json_reverse_iterator.hpp" +#include "detail/parsing/output_adapters.hpp" +#include "detail/parsing/binary_reader.hpp" +#include "detail/parsing/binary_writer.hpp" +#include "detail/serializer.hpp" +#include "detail/json_ref.hpp" +#include "adl_serializer.hpp" + +/*! +@brief namespace for Niels Lohmann +@see https://github.com/nlohmann +@since version 1.0.0 +*/ +namespace nlohmann +{ +class json_pointer +{ + /// allow basic_json to access private members + NLOHMANN_BASIC_JSON_TPL_DECLARATION + friend class basic_json; + + public: + /*! + @brief create JSON pointer + + Create a JSON pointer according to the syntax described in + [Section 3 of RFC6901](https://tools.ietf.org/html/rfc6901#section-3). + + @param[in] s string representing the JSON pointer; if omitted, the empty + string is assumed which references the whole JSON value + + @throw parse_error.107 if the given JSON pointer @a s is nonempty and + does not begin with a slash (`/`); see example below + + @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s + is not followed by `0` (representing `~`) or `1` (representing `/`); + see example below + + @liveexample{The example shows the construction several valid JSON + pointers as well as the exceptional behavior.,json_pointer} + + @since version 2.0.0 + */ + explicit json_pointer(const std::string& s = "") : reference_tokens(split(s)) {} + + /*! + @brief return a string representation of the JSON pointer + + @invariant For each JSON pointer `ptr`, it holds: + @code {.cpp} + ptr == json_pointer(ptr.to_string()); + @endcode + + @return a string representation of the JSON pointer + + @liveexample{The example shows the result of `to_string`., + json_pointer__to_string} + + @since version 2.0.0 + */ + std::string to_string() const noexcept + { + return std::accumulate(reference_tokens.begin(), reference_tokens.end(), + std::string{}, + [](const std::string & a, const std::string & b) + { + return a + "/" + escape(b); + }); + } + + /// @copydoc to_string() + operator std::string() const + { + return to_string(); + } + + /*! + @param[in] s reference token to be converted into an array index + + @return integer representation of @a s + + @throw out_of_range.404 if string @a s could not be converted to an integer + */ + static int array_index(const std::string& s) + { + size_t processed_chars = 0; + const int res = std::stoi(s, &processed_chars); + + // check if the string was completely read + if (JSON_UNLIKELY(processed_chars != s.size())) + { + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'")); + } + + return res; + } + + private: + /*! + @brief remove and return last reference pointer + @throw out_of_range.405 if JSON pointer has no parent + */ + std::string pop_back() + { + if (JSON_UNLIKELY(is_root())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); + } + + auto last = reference_tokens.back(); + reference_tokens.pop_back(); + return last; + } + + /// return whether pointer points to the root document + bool is_root() const + { + return reference_tokens.empty(); + } + + json_pointer top() const + { + if (JSON_UNLIKELY(is_root())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); + } + + json_pointer result = *this; + result.reference_tokens = {reference_tokens[0]}; + return result; + } + + /*! + @brief create and return a reference to the pointed to value + + @complexity Linear in the number of reference tokens. + + @throw parse_error.109 if array index is not a number + @throw type_error.313 if value cannot be unflattened + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + NLOHMANN_BASIC_JSON_TPL& get_and_create(NLOHMANN_BASIC_JSON_TPL& j) const; + + /*! + @brief return a reference to the pointed to value + + @note This version does not throw if a value is not present, but tries to + create nested values instead. For instance, calling this function + with pointer `"/this/that"` on a null value is equivalent to calling + `operator[]("this").operator[]("that")` on that value, effectively + changing the null value to an object. + + @param[in] ptr a JSON value + + @return reference to the JSON value pointed to by the JSON pointer + + @complexity Linear in the length of the JSON pointer. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + NLOHMANN_BASIC_JSON_TPL& get_unchecked(NLOHMANN_BASIC_JSON_TPL* ptr) const; + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + NLOHMANN_BASIC_JSON_TPL& get_checked(NLOHMANN_BASIC_JSON_TPL* ptr) const; + + /*! + @brief return a const reference to the pointed to value + + @param[in] ptr a JSON value + + @return const reference to the JSON value pointed to by the JSON + pointer + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + const NLOHMANN_BASIC_JSON_TPL& get_unchecked(const NLOHMANN_BASIC_JSON_TPL* ptr) const; + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + const NLOHMANN_BASIC_JSON_TPL& get_checked(const NLOHMANN_BASIC_JSON_TPL* ptr) const; + + /*! + @brief split the string input to reference tokens + + @note This function is only called by the json_pointer constructor. + All exceptions below are documented there. + + @throw parse_error.107 if the pointer is not empty or begins with '/' + @throw parse_error.108 if character '~' is not followed by '0' or '1' + */ + static std::vector split(const std::string& reference_string) + { + std::vector result; + + // special case: empty reference string -> no reference tokens + if (reference_string.empty()) + { + return result; + } + + // check if nonempty reference string begins with slash + if (JSON_UNLIKELY(reference_string[0] != '/')) + { + JSON_THROW(detail::parse_error::create(107, 1, + "JSON pointer must be empty or begin with '/' - was: '" + + reference_string + "'")); + } + + // extract the reference tokens: + // - slash: position of the last read slash (or end of string) + // - start: position after the previous slash + for ( + // search for the first slash after the first character + std::size_t slash = reference_string.find_first_of('/', 1), + // set the beginning of the first reference token + start = 1; + // we can stop if start == string::npos+1 = 0 + start != 0; + // set the beginning of the next reference token + // (will eventually be 0 if slash == std::string::npos) + start = slash + 1, + // find next slash + slash = reference_string.find_first_of('/', start)) + { + // use the text between the beginning of the reference token + // (start) and the last slash (slash). + auto reference_token = reference_string.substr(start, slash - start); + + // check reference tokens are properly escaped + for (std::size_t pos = reference_token.find_first_of('~'); + pos != std::string::npos; + pos = reference_token.find_first_of('~', pos + 1)) + { + assert(reference_token[pos] == '~'); + + // ~ must be followed by 0 or 1 + if (JSON_UNLIKELY(pos == reference_token.size() - 1 or + (reference_token[pos + 1] != '0' and + reference_token[pos + 1] != '1'))) + { + JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'")); + } + } + + // finally, store the reference token + unescape(reference_token); + result.push_back(reference_token); + } + + return result; + } + + /*! + @brief replace all occurrences of a substring by another string + + @param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t + @param[in] f the substring to replace with @a t + @param[in] t the string to replace @a f + + @pre The search string @a f must not be empty. **This precondition is + enforced with an assertion.** + + @since version 2.0.0 + */ + static void replace_substring(std::string& s, const std::string& f, + const std::string& t) + { + assert(not f.empty()); + for (auto pos = s.find(f); // find first occurrence of f + pos != std::string::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find next occurrence of f + {} + } + + /// escape "~"" to "~0" and "/" to "~1" + static std::string escape(std::string s) + { + replace_substring(s, "~", "~0"); + replace_substring(s, "/", "~1"); + return s; + } + + /// unescape "~1" to tilde and "~0" to slash (order is important!) + static void unescape(std::string& s) + { + replace_substring(s, "~1", "/"); + replace_substring(s, "~0", "~"); + } + + /*! + @param[in] reference_string the reference string to the current value + @param[in] value the value to consider + @param[in,out] result the result object to insert values to + + @note Empty objects or arrays are flattened to `null`. + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + static void flatten(const std::string& reference_string, + const NLOHMANN_BASIC_JSON_TPL& value, + NLOHMANN_BASIC_JSON_TPL& result); + + /*! + @param[in] value flattened JSON + + @return unflattened JSON + + @throw parse_error.109 if array index is not a number + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitive + @throw type_error.313 if value cannot be unflattened + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + static NLOHMANN_BASIC_JSON_TPL + unflatten(const NLOHMANN_BASIC_JSON_TPL& value); + + friend bool operator==(json_pointer const& lhs, + json_pointer const& rhs) noexcept; + + friend bool operator!=(json_pointer const& lhs, + json_pointer const& rhs) noexcept; + + /// the reference tokens + std::vector reference_tokens; +}; + +/*! +@brief a class to store JSON values + +@tparam ObjectType type for JSON objects (`std::map` by default; will be used +in @ref object_t) +@tparam ArrayType type for JSON arrays (`std::vector` by default; will be used +in @ref array_t) +@tparam StringType type for JSON strings and object keys (`std::string` by +default; will be used in @ref string_t) +@tparam BooleanType type for JSON booleans (`bool` by default; will be used +in @ref boolean_t) +@tparam NumberIntegerType type for JSON integer numbers (`int64_t` by +default; will be used in @ref number_integer_t) +@tparam NumberUnsignedType type for JSON unsigned integer numbers (@c +`uint64_t` by default; will be used in @ref number_unsigned_t) +@tparam NumberFloatType type for JSON floating-point numbers (`double` by +default; will be used in @ref number_float_t) +@tparam AllocatorType type of the allocator to use (`std::allocator` by +default) +@tparam JSONSerializer the serializer to resolve internal calls to `to_json()` +and `from_json()` (@ref adl_serializer by default) + +@requirement The class satisfies the following concept requirements: +- Basic + - [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible): + JSON values can be default constructed. The result will be a JSON null + value. + - [MoveConstructible](http://en.cppreference.com/w/cpp/concept/MoveConstructible): + A JSON value can be constructed from an rvalue argument. + - [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible): + A JSON value can be copy-constructed from an lvalue expression. + - [MoveAssignable](http://en.cppreference.com/w/cpp/concept/MoveAssignable): + A JSON value van be assigned from an rvalue argument. + - [CopyAssignable](http://en.cppreference.com/w/cpp/concept/CopyAssignable): + A JSON value can be copy-assigned from an lvalue expression. + - [Destructible](http://en.cppreference.com/w/cpp/concept/Destructible): + JSON values can be destructed. +- Layout + - [StandardLayoutType](http://en.cppreference.com/w/cpp/concept/StandardLayoutType): + JSON values have + [standard layout](http://en.cppreference.com/w/cpp/language/data_members#Standard_layout): + All non-static data members are private and standard layout types, the + class has no virtual functions or (virtual) base classes. +- Library-wide + - [EqualityComparable](http://en.cppreference.com/w/cpp/concept/EqualityComparable): + JSON values can be compared with `==`, see @ref + operator==(const_reference,const_reference). + - [LessThanComparable](http://en.cppreference.com/w/cpp/concept/LessThanComparable): + JSON values can be compared with `<`, see @ref + operator<(const_reference,const_reference). + - [Swappable](http://en.cppreference.com/w/cpp/concept/Swappable): + Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of + other compatible types, using unqualified function call @ref swap(). + - [NullablePointer](http://en.cppreference.com/w/cpp/concept/NullablePointer): + JSON values can be compared against `std::nullptr_t` objects which are used + to model the `null` value. +- Container + - [Container](http://en.cppreference.com/w/cpp/concept/Container): + JSON values can be used like STL containers and provide iterator access. + - [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer); + JSON values can be used like STL containers and provide reverse iterator + access. + +@invariant The member variables @a m_value and @a m_type have the following +relationship: +- If `m_type == value_t::object`, then `m_value.object != nullptr`. +- If `m_type == value_t::array`, then `m_value.array != nullptr`. +- If `m_type == value_t::string`, then `m_value.string != nullptr`. +The invariants are checked by member function assert_invariant(). + +@internal +@note ObjectType trick from http://stackoverflow.com/a/9860911 +@endinternal + +@see [RFC 7159: The JavaScript Object Notation (JSON) Data Interchange +Format](http://rfc7159.net/rfc7159) + +@since version 1.0.0 + +@nosubgrouping +*/ +NLOHMANN_BASIC_JSON_TPL_DECLARATION +class basic_json +{ + private: + template friend struct detail::external_constructor; + friend ::nlohmann::json_pointer; + friend ::nlohmann::detail::parser; + friend ::nlohmann::detail::serializer; + template + friend class ::nlohmann::detail::iter_impl; + template + friend class ::nlohmann::detail::binary_writer; + template + friend class ::nlohmann::detail::binary_reader; + + /// workaround type for MSVC + using basic_json_t = NLOHMANN_BASIC_JSON_TPL; + + // convenience aliases for types residing in namespace detail; + using lexer = ::nlohmann::detail::lexer; + using parser = ::nlohmann::detail::parser; + + using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t; + template + using internal_iterator = ::nlohmann::detail::internal_iterator; + template + using iter_impl = ::nlohmann::detail::iter_impl; + template + using iteration_proxy = ::nlohmann::detail::iteration_proxy; + template using json_reverse_iterator = ::nlohmann::detail::json_reverse_iterator; + + template + using output_adapter_t = ::nlohmann::detail::output_adapter_t; + + using binary_reader = ::nlohmann::detail::binary_reader; + template using binary_writer = ::nlohmann::detail::binary_writer; + + using serializer = ::nlohmann::detail::serializer; + + public: + using value_t = detail::value_t; + /// @copydoc nlohmann::json_pointer + using json_pointer = ::nlohmann::json_pointer; + template + using json_serializer = JSONSerializer; + /// helper type for initializer lists of basic_json values + using initializer_list_t = std::initializer_list>; + + //////////////// + // exceptions // + //////////////// + + /// @name exceptions + /// Classes to implement user-defined exceptions. + /// @{ + + /// @copydoc detail::exception + using exception = detail::exception; + /// @copydoc detail::parse_error + using parse_error = detail::parse_error; + /// @copydoc detail::invalid_iterator + using invalid_iterator = detail::invalid_iterator; + /// @copydoc detail::type_error + using type_error = detail::type_error; + /// @copydoc detail::out_of_range + using out_of_range = detail::out_of_range; + /// @copydoc detail::other_error + using other_error = detail::other_error; + + /// @} + + + ///////////////////// + // container types // + ///////////////////// + + /// @name container types + /// The canonic container types to use @ref basic_json like any other STL + /// container. + /// @{ + + /// the type of elements in a basic_json container + using value_type = basic_json; + + /// the type of an element reference + using reference = value_type&; + /// the type of an element const reference + using const_reference = const value_type&; + + /// a type to represent differences between iterators + using difference_type = std::ptrdiff_t; + /// a type to represent container sizes + using size_type = std::size_t; + + /// the allocator type + using allocator_type = AllocatorType; + + /// the type of an element pointer + using pointer = typename std::allocator_traits::pointer; + /// the type of an element const pointer + using const_pointer = typename std::allocator_traits::const_pointer; + + /// an iterator for a basic_json container + using iterator = iter_impl; + /// a const iterator for a basic_json container + using const_iterator = iter_impl; + /// a reverse iterator for a basic_json container + using reverse_iterator = json_reverse_iterator; + /// a const reverse iterator for a basic_json container + using const_reverse_iterator = json_reverse_iterator; + + /// @} + + + /*! + @brief returns the allocator associated with the container + */ + static allocator_type get_allocator() + { + return allocator_type(); + } + + /*! + @brief returns version information on the library + + This function returns a JSON object with information about the library, + including the version number and information on the platform and compiler. + + @return JSON object holding version information + key | description + ----------- | --------------- + `compiler` | Information on the used compiler. It is an object with the following keys: `c++` (the used C++ standard), `family` (the compiler family; possible values are `clang`, `icc`, `gcc`, `ilecpp`, `msvc`, `pgcpp`, `sunpro`, and `unknown`), and `version` (the compiler version). + `copyright` | The copyright line for the library as string. + `name` | The name of the library as string. + `platform` | The used platform as string. Possible values are `win32`, `linux`, `apple`, `unix`, and `unknown`. + `url` | The URL of the project as string. + `version` | The version of the library. It is an object with the following keys: `major`, `minor`, and `patch` as defined by [Semantic Versioning](http://semver.org), and `string` (the version string). + + @liveexample{The following code shows an example output of the `meta()` + function.,meta} + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @complexity Constant. + + @since 2.1.0 + */ + static basic_json meta() + { + basic_json result; + + result["copyright"] = "(C) 2013-2017 Niels Lohmann"; + result["name"] = "JSON for Modern C++"; + result["url"] = "https://github.com/nlohmann/json"; + result["version"] = + { + {"string", "3.0.1"}, {"major", 3}, {"minor", 0}, {"patch", 1} + }; + +#ifdef _WIN32 + result["platform"] = "win32"; +#elif defined __linux__ + result["platform"] = "linux"; +#elif defined __APPLE__ + result["platform"] = "apple"; +#elif defined __unix__ + result["platform"] = "unix"; +#else + result["platform"] = "unknown"; +#endif + +#if defined(__ICC) || defined(__INTEL_COMPILER) + result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}}; +#elif defined(__clang__) + result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}}; +#elif defined(__GNUC__) || defined(__GNUG__) + result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}}; +#elif defined(__HP_cc) || defined(__HP_aCC) + result["compiler"] = "hp" +#elif defined(__IBMCPP__) + result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}}; +#elif defined(_MSC_VER) + result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}}; +#elif defined(__PGI) + result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}}; +#elif defined(__SUNPRO_CC) + result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}}; +#else + result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}}; +#endif + +#ifdef __cplusplus + result["compiler"]["c++"] = std::to_string(__cplusplus); +#else + result["compiler"]["c++"] = "unknown"; +#endif + return result; + } + + + /////////////////////////// + // JSON value data types // + /////////////////////////// + + /// @name JSON value data types + /// The data types to store a JSON value. These types are derived from + /// the template arguments passed to class @ref basic_json. + /// @{ + +#if defined(JSON_HAS_CPP_14) + // Use transparent comparator if possible, combined with perfect forwarding + // on find() and count() calls prevents unnecessary string construction. + using object_comparator_t = std::less<>; +#else + using object_comparator_t = std::less; +#endif + + /*! + @brief a type for an object + + [RFC 7159](http://rfc7159.net/rfc7159) describes JSON objects as follows: + > An object is an unordered collection of zero or more name/value pairs, + > where a name is a string and a value is a string, number, boolean, null, + > object, or array. + + To store objects in C++, a type is defined by the template parameters + described below. + + @tparam ObjectType the container to store objects (e.g., `std::map` or + `std::unordered_map`) + @tparam StringType the type of the keys or names (e.g., `std::string`). + The comparison function `std::less` is used to order elements + inside the container. + @tparam AllocatorType the allocator to use for objects (e.g., + `std::allocator`) + + #### Default type + + With the default values for @a ObjectType (`std::map`), @a StringType + (`std::string`), and @a AllocatorType (`std::allocator`), the default + value for @a object_t is: + + @code {.cpp} + std::map< + std::string, // key_type + basic_json, // value_type + std::less, // key_compare + std::allocator> // allocator_type + > + @endcode + + #### Behavior + + The choice of @a object_t influences the behavior of the JSON class. With + the default type, objects have the following behavior: + + - When all names are unique, objects will be interoperable in the sense + that all software implementations receiving that object will agree on + the name-value mappings. + - When the names within an object are not unique, later stored name/value + pairs overwrite previously stored name/value pairs, leaving the used + names unique. For instance, `{"key": 1}` and `{"key": 2, "key": 1}` will + be treated as equal and both stored as `{"key": 1}`. + - Internally, name/value pairs are stored in lexicographical order of the + names. Objects will also be serialized (see @ref dump) in this order. + For instance, `{"b": 1, "a": 2}` and `{"a": 2, "b": 1}` will be stored + and serialized as `{"a": 2, "b": 1}`. + - When comparing objects, the order of the name/value pairs is irrelevant. + This makes objects interoperable in the sense that they will not be + affected by these differences. For instance, `{"b": 1, "a": 2}` and + `{"a": 2, "b": 1}` will be treated as equal. + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) specifies: + > An implementation may set limits on the maximum depth of nesting. + + In this class, the object's limit of nesting is not explicitly constrained. + However, a maximum depth of nesting may be introduced by the compiler or + runtime environment. A theoretical limit can be queried by calling the + @ref max_size function of a JSON object. + + #### Storage + + Objects are stored as pointers in a @ref basic_json type. That is, for any + access to object values, a pointer of type `object_t*` must be + dereferenced. + + @sa @ref array_t -- type for an array value + + @since version 1.0.0 + + @note The order name/value pairs are added to the object is *not* + preserved by the library. Therefore, iterating an object may return + name/value pairs in a different order than they were originally stored. In + fact, keys will be traversed in alphabetical order as `std::map` with + `std::less` is used by default. Please note this behavior conforms to [RFC + 7159](http://rfc7159.net/rfc7159), because any order implements the + specified "unordered" nature of JSON objects. + */ + using object_t = ObjectType>>; + + /*! + @brief a type for an array + + [RFC 7159](http://rfc7159.net/rfc7159) describes JSON arrays as follows: + > An array is an ordered sequence of zero or more values. + + To store objects in C++, a type is defined by the template parameters + explained below. + + @tparam ArrayType container type to store arrays (e.g., `std::vector` or + `std::list`) + @tparam AllocatorType allocator to use for arrays (e.g., `std::allocator`) + + #### Default type + + With the default values for @a ArrayType (`std::vector`) and @a + AllocatorType (`std::allocator`), the default value for @a array_t is: + + @code {.cpp} + std::vector< + basic_json, // value_type + std::allocator // allocator_type + > + @endcode + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) specifies: + > An implementation may set limits on the maximum depth of nesting. + + In this class, the array's limit of nesting is not explicitly constrained. + However, a maximum depth of nesting may be introduced by the compiler or + runtime environment. A theoretical limit can be queried by calling the + @ref max_size function of a JSON array. + + #### Storage + + Arrays are stored as pointers in a @ref basic_json type. That is, for any + access to array values, a pointer of type `array_t*` must be dereferenced. + + @sa @ref object_t -- type for an object value + + @since version 1.0.0 + */ + using array_t = ArrayType>; + + /*! + @brief a type for a string + + [RFC 7159](http://rfc7159.net/rfc7159) describes JSON strings as follows: + > A string is a sequence of zero or more Unicode characters. + + To store objects in C++, a type is defined by the template parameter + described below. Unicode values are split by the JSON class into + byte-sized characters during deserialization. + + @tparam StringType the container to store strings (e.g., `std::string`). + Note this container is used for keys/names in objects, see @ref object_t. + + #### Default type + + With the default values for @a StringType (`std::string`), the default + value for @a string_t is: + + @code {.cpp} + std::string + @endcode + + #### Encoding + + Strings are stored in UTF-8 encoding. Therefore, functions like + `std::string::size()` or `std::string::length()` return the number of + bytes in the string rather than the number of characters or glyphs. + + #### String comparison + + [RFC 7159](http://rfc7159.net/rfc7159) states: + > Software implementations are typically required to test names of object + > members for equality. Implementations that transform the textual + > representation into sequences of Unicode code units and then perform the + > comparison numerically, code unit by code unit, are interoperable in the + > sense that implementations will agree in all cases on equality or + > inequality of two strings. For example, implementations that compare + > strings with escaped characters unconverted may incorrectly find that + > `"a\\b"` and `"a\u005Cb"` are not equal. + + This implementation is interoperable as it does compare strings code unit + by code unit. + + #### Storage + + String values are stored as pointers in a @ref basic_json type. That is, + for any access to string values, a pointer of type `string_t*` must be + dereferenced. + + @since version 1.0.0 + */ + using string_t = StringType; + + /*! + @brief a type for a boolean + + [RFC 7159](http://rfc7159.net/rfc7159) implicitly describes a boolean as a + type which differentiates the two literals `true` and `false`. + + To store objects in C++, a type is defined by the template parameter @a + BooleanType which chooses the type to use. + + #### Default type + + With the default values for @a BooleanType (`bool`), the default value for + @a boolean_t is: + + @code {.cpp} + bool + @endcode + + #### Storage + + Boolean values are stored directly inside a @ref basic_json type. + + @since version 1.0.0 + */ + using boolean_t = BooleanType; + + /*! + @brief a type for a number (integer) + + [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: + > The representation of numbers is similar to that used in most + > programming languages. A number is represented in base 10 using decimal + > digits. It contains an integer component that may be prefixed with an + > optional minus sign, which may be followed by a fraction part and/or an + > exponent part. Leading zeros are not allowed. (...) Numeric values that + > cannot be represented in the grammar below (such as Infinity and NaN) + > are not permitted. + + This description includes both integer and floating-point numbers. + However, C++ allows more precise storage if it is known whether the number + is a signed integer, an unsigned integer or a floating-point number. + Therefore, three different types, @ref number_integer_t, @ref + number_unsigned_t and @ref number_float_t are used. + + To store integer numbers in C++, a type is defined by the template + parameter @a NumberIntegerType which chooses the type to use. + + #### Default type + + With the default values for @a NumberIntegerType (`int64_t`), the default + value for @a number_integer_t is: + + @code {.cpp} + int64_t + @endcode + + #### Default behavior + + - The restrictions about leading zeros is not enforced in C++. Instead, + leading zeros in integer literals lead to an interpretation as octal + number. Internally, the value will be stored as decimal number. For + instance, the C++ integer literal `010` will be serialized to `8`. + During deserialization, leading zeros yield an error. + - Not-a-number (NaN) values will be serialized to `null`. + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) specifies: + > An implementation may set limits on the range and precision of numbers. + + When the default type is used, the maximal integer number that can be + stored is `9223372036854775807` (INT64_MAX) and the minimal integer number + that can be stored is `-9223372036854775808` (INT64_MIN). Integer numbers + that are out of range will yield over/underflow when used in a + constructor. During deserialization, too large or small integer numbers + will be automatically be stored as @ref number_unsigned_t or @ref + number_float_t. + + [RFC 7159](http://rfc7159.net/rfc7159) further states: + > Note that when such software is used, numbers that are integers and are + > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense + > that implementations will agree exactly on their numeric values. + + As this range is a subrange of the exactly supported range [INT64_MIN, + INT64_MAX], this class's integer type is interoperable. + + #### Storage + + Integer number values are stored directly inside a @ref basic_json type. + + @sa @ref number_float_t -- type for number values (floating-point) + + @sa @ref number_unsigned_t -- type for number values (unsigned integer) + + @since version 1.0.0 + */ + using number_integer_t = NumberIntegerType; + + /*! + @brief a type for a number (unsigned) + + [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: + > The representation of numbers is similar to that used in most + > programming languages. A number is represented in base 10 using decimal + > digits. It contains an integer component that may be prefixed with an + > optional minus sign, which may be followed by a fraction part and/or an + > exponent part. Leading zeros are not allowed. (...) Numeric values that + > cannot be represented in the grammar below (such as Infinity and NaN) + > are not permitted. + + This description includes both integer and floating-point numbers. + However, C++ allows more precise storage if it is known whether the number + is a signed integer, an unsigned integer or a floating-point number. + Therefore, three different types, @ref number_integer_t, @ref + number_unsigned_t and @ref number_float_t are used. + + To store unsigned integer numbers in C++, a type is defined by the + template parameter @a NumberUnsignedType which chooses the type to use. + + #### Default type + + With the default values for @a NumberUnsignedType (`uint64_t`), the + default value for @a number_unsigned_t is: + + @code {.cpp} + uint64_t + @endcode + + #### Default behavior + + - The restrictions about leading zeros is not enforced in C++. Instead, + leading zeros in integer literals lead to an interpretation as octal + number. Internally, the value will be stored as decimal number. For + instance, the C++ integer literal `010` will be serialized to `8`. + During deserialization, leading zeros yield an error. + - Not-a-number (NaN) values will be serialized to `null`. + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) specifies: + > An implementation may set limits on the range and precision of numbers. + + When the default type is used, the maximal integer number that can be + stored is `18446744073709551615` (UINT64_MAX) and the minimal integer + number that can be stored is `0`. Integer numbers that are out of range + will yield over/underflow when used in a constructor. During + deserialization, too large or small integer numbers will be automatically + be stored as @ref number_integer_t or @ref number_float_t. + + [RFC 7159](http://rfc7159.net/rfc7159) further states: + > Note that when such software is used, numbers that are integers and are + > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense + > that implementations will agree exactly on their numeric values. + + As this range is a subrange (when considered in conjunction with the + number_integer_t type) of the exactly supported range [0, UINT64_MAX], + this class's integer type is interoperable. + + #### Storage + + Integer number values are stored directly inside a @ref basic_json type. + + @sa @ref number_float_t -- type for number values (floating-point) + @sa @ref number_integer_t -- type for number values (integer) + + @since version 2.0.0 + */ + using number_unsigned_t = NumberUnsignedType; + + /*! + @brief a type for a number (floating-point) + + [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: + > The representation of numbers is similar to that used in most + > programming languages. A number is represented in base 10 using decimal + > digits. It contains an integer component that may be prefixed with an + > optional minus sign, which may be followed by a fraction part and/or an + > exponent part. Leading zeros are not allowed. (...) Numeric values that + > cannot be represented in the grammar below (such as Infinity and NaN) + > are not permitted. + + This description includes both integer and floating-point numbers. + However, C++ allows more precise storage if it is known whether the number + is a signed integer, an unsigned integer or a floating-point number. + Therefore, three different types, @ref number_integer_t, @ref + number_unsigned_t and @ref number_float_t are used. + + To store floating-point numbers in C++, a type is defined by the template + parameter @a NumberFloatType which chooses the type to use. + + #### Default type + + With the default values for @a NumberFloatType (`double`), the default + value for @a number_float_t is: + + @code {.cpp} + double + @endcode + + #### Default behavior + + - The restrictions about leading zeros is not enforced in C++. Instead, + leading zeros in floating-point literals will be ignored. Internally, + the value will be stored as decimal number. For instance, the C++ + floating-point literal `01.2` will be serialized to `1.2`. During + deserialization, leading zeros yield an error. + - Not-a-number (NaN) values will be serialized to `null`. + + #### Limits + + [RFC 7159](http://rfc7159.net/rfc7159) states: + > This specification allows implementations to set limits on the range and + > precision of numbers accepted. Since software that implements IEEE + > 754-2008 binary64 (double precision) numbers is generally available and + > widely used, good interoperability can be achieved by implementations + > that expect no more precision or range than these provide, in the sense + > that implementations will approximate JSON numbers within the expected + > precision. + + This implementation does exactly follow this approach, as it uses double + precision floating-point numbers. Note values smaller than + `-1.79769313486232e+308` and values greater than `1.79769313486232e+308` + will be stored as NaN internally and be serialized to `null`. + + #### Storage + + Floating-point number values are stored directly inside a @ref basic_json + type. + + @sa @ref number_integer_t -- type for number values (integer) + + @sa @ref number_unsigned_t -- type for number values (unsigned integer) + + @since version 1.0.0 + */ + using number_float_t = NumberFloatType; + + /// @} + + private: + + /// helper for exception-safe object creation + template + static T* create(Args&& ... args) + { + AllocatorType alloc; + using AllocatorTraits = std::allocator_traits>; + + auto deleter = [&](T * object) + { + AllocatorTraits::deallocate(alloc, object, 1); + }; + std::unique_ptr object(AllocatorTraits::allocate(alloc, 1), deleter); + AllocatorTraits::construct(alloc, object.get(), std::forward(args)...); + assert(object != nullptr); + return object.release(); + } + + //////////////////////// + // JSON value storage // + //////////////////////// + + /*! + @brief a JSON value + + The actual storage for a JSON value of the @ref basic_json class. This + union combines the different storage types for the JSON value types + defined in @ref value_t. + + JSON type | value_t type | used type + --------- | --------------- | ------------------------ + object | object | pointer to @ref object_t + array | array | pointer to @ref array_t + string | string | pointer to @ref string_t + boolean | boolean | @ref boolean_t + number | number_integer | @ref number_integer_t + number | number_unsigned | @ref number_unsigned_t + number | number_float | @ref number_float_t + null | null | *no value is stored* + + @note Variable-length types (objects, arrays, and strings) are stored as + pointers. The size of the union should not exceed 64 bits if the default + value types are used. + + @since version 1.0.0 + */ + union json_value + { + /// object (stored with pointer to save storage) + object_t* object; + /// array (stored with pointer to save storage) + array_t* array; + /// string (stored with pointer to save storage) + string_t* string; + /// boolean + boolean_t boolean; + /// number (integer) + number_integer_t number_integer; + /// number (unsigned integer) + number_unsigned_t number_unsigned; + /// number (floating-point) + number_float_t number_float; + + /// default constructor (for null values) + json_value() = default; + /// constructor for booleans + json_value(boolean_t v) noexcept : boolean(v) {} + /// constructor for numbers (integer) + json_value(number_integer_t v) noexcept : number_integer(v) {} + /// constructor for numbers (unsigned) + json_value(number_unsigned_t v) noexcept : number_unsigned(v) {} + /// constructor for numbers (floating-point) + json_value(number_float_t v) noexcept : number_float(v) {} + /// constructor for empty values of a given type + json_value(value_t t) + { + switch (t) + { + case value_t::object: + { + object = create(); + break; + } + + case value_t::array: + { + array = create(); + break; + } + + case value_t::string: + { + string = create(""); + break; + } + + case value_t::boolean: + { + boolean = boolean_t(false); + break; + } + + case value_t::number_integer: + { + number_integer = number_integer_t(0); + break; + } + + case value_t::number_unsigned: + { + number_unsigned = number_unsigned_t(0); + break; + } + + case value_t::number_float: + { + number_float = number_float_t(0.0); + break; + } + + case value_t::null: + { + object = nullptr; // silence warning, see #821 + break; + } + + default: + { + object = nullptr; // silence warning, see #821 + if (JSON_UNLIKELY(t == value_t::null)) + { + JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.0.1")); // LCOV_EXCL_LINE + } + break; + } + } + } + + /// constructor for strings + json_value(const string_t& value) + { + string = create(value); + } + + /// constructor for rvalue strings + json_value(string_t&& value) + { + string = create(std::move(value)); + } + + /// constructor for objects + json_value(const object_t& value) + { + object = create(value); + } + + /// constructor for rvalue objects + json_value(object_t&& value) + { + object = create(std::move(value)); + } + + /// constructor for arrays + json_value(const array_t& value) + { + array = create(value); + } + + /// constructor for rvalue arrays + json_value(array_t&& value) + { + array = create(std::move(value)); + } + + void destroy(value_t t) + { + switch (t) + { + case value_t::object: + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, object); + std::allocator_traits::deallocate(alloc, object, 1); + break; + } + + case value_t::array: + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, array); + std::allocator_traits::deallocate(alloc, array, 1); + break; + } + + case value_t::string: + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, string); + std::allocator_traits::deallocate(alloc, string, 1); + break; + } + + default: + { + break; + } + } + } + }; + + /*! + @brief checks the class invariants + + This function asserts the class invariants. It needs to be called at the + end of every constructor to make sure that created objects respect the + invariant. Furthermore, it has to be called each time the type of a JSON + value is changed, because the invariant expresses a relationship between + @a m_type and @a m_value. + */ + void assert_invariant() const + { + assert(m_type != value_t::object or m_value.object != nullptr); + assert(m_type != value_t::array or m_value.array != nullptr); + assert(m_type != value_t::string or m_value.string != nullptr); + } + + public: + ////////////////////////// + // JSON parser callback // + ////////////////////////// + + /*! + @brief parser event types + + The parser callback distinguishes the following events: + - `object_start`: the parser read `{` and started to process a JSON object + - `key`: the parser read a key of a value in an object + - `object_end`: the parser read `}` and finished processing a JSON object + - `array_start`: the parser read `[` and started to process a JSON array + - `array_end`: the parser read `]` and finished processing a JSON array + - `value`: the parser finished reading a JSON value + + @image html callback_events.png "Example when certain parse events are triggered" + + @sa @ref parser_callback_t for more information and examples + */ + using parse_event_t = typename parser::parse_event_t; + + /*! + @brief per-element parser callback type + + With a parser callback function, the result of parsing a JSON text can be + influenced. When passed to @ref parse, it is called on certain events + (passed as @ref parse_event_t via parameter @a event) with a set recursion + depth @a depth and context JSON value @a parsed. The return value of the + callback function is a boolean indicating whether the element that emitted + the callback shall be kept or not. + + We distinguish six scenarios (determined by the event type) in which the + callback function can be called. The following table describes the values + of the parameters @a depth, @a event, and @a parsed. + + parameter @a event | description | parameter @a depth | parameter @a parsed + ------------------ | ----------- | ------------------ | ------------------- + parse_event_t::object_start | the parser read `{` and started to process a JSON object | depth of the parent of the JSON object | a JSON value with type discarded + parse_event_t::key | the parser read a key of a value in an object | depth of the currently parsed JSON object | a JSON string containing the key + parse_event_t::object_end | the parser read `}` and finished processing a JSON object | depth of the parent of the JSON object | the parsed JSON object + parse_event_t::array_start | the parser read `[` and started to process a JSON array | depth of the parent of the JSON array | a JSON value with type discarded + parse_event_t::array_end | the parser read `]` and finished processing a JSON array | depth of the parent of the JSON array | the parsed JSON array + parse_event_t::value | the parser finished reading a JSON value | depth of the value | the parsed JSON value + + @image html callback_events.png "Example when certain parse events are triggered" + + Discarding a value (i.e., returning `false`) has different effects + depending on the context in which function was called: + + - Discarded values in structured types are skipped. That is, the parser + will behave as if the discarded value was never read. + - In case a value outside a structured type is skipped, it is replaced + with `null`. This case happens if the top-level element is skipped. + + @param[in] depth the depth of the recursion during parsing + + @param[in] event an event of type parse_event_t indicating the context in + the callback function has been called + + @param[in,out] parsed the current intermediate parse result; note that + writing to this value has no effect for parse_event_t::key events + + @return Whether the JSON value which called the function during parsing + should be kept (`true`) or not (`false`). In the latter case, it is either + skipped completely or replaced by an empty discarded object. + + @sa @ref parse for examples + + @since version 1.0.0 + */ + using parser_callback_t = typename parser::parser_callback_t; + + + ////////////////// + // constructors // + ////////////////// + + /// @name constructors and destructors + /// Constructors of class @ref basic_json, copy/move constructor, copy + /// assignment, static functions creating objects, and the destructor. + /// @{ + + /*! + @brief create an empty value with a given type + + Create an empty JSON value with a given type. The value will be default + initialized with an empty value which depends on the type: + + Value type | initial value + ----------- | ------------- + null | `null` + boolean | `false` + string | `""` + number | `0` + object | `{}` + array | `[]` + + @param[in] v the type of the value to create + + @complexity Constant. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows the constructor for different @ref + value_t values,basic_json__value_t} + + @sa @ref clear() -- restores the postcondition of this constructor + + @since version 1.0.0 + */ + basic_json(const value_t v) + : m_type(v), m_value(v) + { + assert_invariant(); + } + + /*! + @brief create a null object + + Create a `null` JSON value. It either takes a null pointer as parameter + (explicitly creating `null`) or no parameter (implicitly creating `null`). + The passed null pointer itself is not read -- it is only used to choose + the right constructor. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this constructor never throws + exceptions. + + @liveexample{The following code shows the constructor with and without a + null pointer parameter.,basic_json__nullptr_t} + + @since version 1.0.0 + */ + basic_json(std::nullptr_t = nullptr) noexcept + : basic_json(value_t::null) + { + assert_invariant(); + } + + /*! + @brief create a JSON value + + This is a "catch all" constructor for all compatible JSON types; that is, + types for which a `to_json()` method exists. The constructor forwards the + parameter @a val to that method (to `json_serializer::to_json` method + with `U = uncvref_t`, to be exact). + + Template type @a CompatibleType includes, but is not limited to, the + following types: + - **arrays**: @ref array_t and all kinds of compatible containers such as + `std::vector`, `std::deque`, `std::list`, `std::forward_list`, + `std::array`, `std::valarray`, `std::set`, `std::unordered_set`, + `std::multiset`, and `std::unordered_multiset` with a `value_type` from + which a @ref basic_json value can be constructed. + - **objects**: @ref object_t and all kinds of compatible associative + containers such as `std::map`, `std::unordered_map`, `std::multimap`, + and `std::unordered_multimap` with a `key_type` compatible to + @ref string_t and a `value_type` from which a @ref basic_json value can + be constructed. + - **strings**: @ref string_t, string literals, and all compatible string + containers can be used. + - **numbers**: @ref number_integer_t, @ref number_unsigned_t, + @ref number_float_t, and all convertible number types such as `int`, + `size_t`, `int64_t`, `float` or `double` can be used. + - **boolean**: @ref boolean_t / `bool` can be used. + + See the examples below. + + @tparam CompatibleType a type such that: + - @a CompatibleType is not derived from `std::istream`, + - @a CompatibleType is not @ref basic_json (to avoid hijacking copy/move + constructors), + - @a CompatibleType is not a @ref basic_json nested type (e.g., + @ref json_pointer, @ref iterator, etc ...) + - @ref @ref json_serializer has a + `to_json(basic_json_t&, CompatibleType&&)` method + + @tparam U = `uncvref_t` + + @param[in] val the value to be forwarded to the respective constructor + + @complexity Usually linear in the size of the passed @a val, also + depending on the implementation of the called `to_json()` + method. + + @exceptionsafety Depends on the called constructor. For types directly + supported by the library (i.e., all types for which no `to_json()` function + was provided), strong guarantee holds: if an exception is thrown, there are + no changes to any JSON value. + + @liveexample{The following code shows the constructor with several + compatible types.,basic_json__CompatibleType} + + @since version 2.1.0 + */ + template, + detail::enable_if_t::value and + not std::is_same::value and + not detail::is_basic_json_nested_type< + basic_json_t, U>::value and + detail::has_to_json::value, + int> = 0> + basic_json(CompatibleType && val) noexcept(noexcept(JSONSerializer::to_json( + std::declval(), std::forward(val)))) + { + JSONSerializer::to_json(*this, std::forward(val)); + assert_invariant(); + } + + /*! + @brief create a container (array or object) from an initializer list + + Creates a JSON value of type array or object from the passed initializer + list @a init. In case @a type_deduction is `true` (default), the type of + the JSON value to be created is deducted from the initializer list @a init + according to the following rules: + + 1. If the list is empty, an empty JSON object value `{}` is created. + 2. If the list consists of pairs whose first element is a string, a JSON + object value is created where the first elements of the pairs are + treated as keys and the second elements are as values. + 3. In all other cases, an array is created. + + The rules aim to create the best fit between a C++ initializer list and + JSON values. The rationale is as follows: + + 1. The empty initializer list is written as `{}` which is exactly an empty + JSON object. + 2. C++ has no way of describing mapped types other than to list a list of + pairs. As JSON requires that keys must be of type string, rule 2 is the + weakest constraint one can pose on initializer lists to interpret them + as an object. + 3. In all other cases, the initializer list could not be interpreted as + JSON object type, so interpreting it as JSON array type is safe. + + With the rules described above, the following JSON values cannot be + expressed by an initializer list: + + - the empty array (`[]`): use @ref array(initializer_list_t) + with an empty initializer list in this case + - arrays whose elements satisfy rule 2: use @ref + array(initializer_list_t) with the same initializer list + in this case + + @note When used without parentheses around an empty initializer list, @ref + basic_json() is called instead of this function, yielding the JSON null + value. + + @param[in] init initializer list with JSON values + + @param[in] type_deduction internal parameter; when set to `true`, the type + of the JSON value is deducted from the initializer list @a init; when set + to `false`, the type provided via @a manual_type is forced. This mode is + used by the functions @ref array(initializer_list_t) and + @ref object(initializer_list_t). + + @param[in] manual_type internal parameter; when @a type_deduction is set + to `false`, the created JSON value will use the provided type (only @ref + value_t::array and @ref value_t::object are valid); when @a type_deduction + is set to `true`, this parameter has no effect + + @throw type_error.301 if @a type_deduction is `false`, @a manual_type is + `value_t::object`, but @a init contains an element which is not a pair + whose first element is a string. In this case, the constructor could not + create an object. If @a type_deduction would have be `true`, an array + would have been created. See @ref object(initializer_list_t) + for an example. + + @complexity Linear in the size of the initializer list @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The example below shows how JSON values are created from + initializer lists.,basic_json__list_init_t} + + @sa @ref array(initializer_list_t) -- create a JSON array + value from an initializer list + @sa @ref object(initializer_list_t) -- create a JSON object + value from an initializer list + + @since version 1.0.0 + */ + basic_json(initializer_list_t init, + bool type_deduction = true, + value_t manual_type = value_t::array) + { + // check if each element is an array with two elements whose first + // element is a string + bool is_an_object = std::all_of(init.begin(), init.end(), + [](const detail::json_ref& element_ref) + { + return (element_ref->is_array() and element_ref->size() == 2 and (*element_ref)[0].is_string()); + }); + + // adjust type if type deduction is not wanted + if (not type_deduction) + { + // if array is wanted, do not create an object though possible + if (manual_type == value_t::array) + { + is_an_object = false; + } + + // if object is wanted but impossible, throw an exception + if (JSON_UNLIKELY(manual_type == value_t::object and not is_an_object)) + { + JSON_THROW(type_error::create(301, "cannot create object from initializer list")); + } + } + + if (is_an_object) + { + // the initializer list is a list of pairs -> create object + m_type = value_t::object; + m_value = value_t::object; + + std::for_each(init.begin(), init.end(), [this](const detail::json_ref& element_ref) + { + auto element = element_ref.moved_or_copied(); + m_value.object->emplace( + std::move(*((*element.m_value.array)[0].m_value.string)), + std::move((*element.m_value.array)[1])); + }); + } + else + { + // the initializer list describes an array -> create array + m_type = value_t::array; + m_value.array = create(init.begin(), init.end()); + } + + assert_invariant(); + } + + /*! + @brief explicitly create an array from an initializer list + + Creates a JSON array value from a given initializer list. That is, given a + list of values `a, b, c`, creates the JSON value `[a, b, c]`. If the + initializer list is empty, the empty array `[]` is created. + + @note This function is only needed to express two edge cases that cannot + be realized with the initializer list constructor (@ref + basic_json(initializer_list_t, bool, value_t)). These cases + are: + 1. creating an array whose elements are all pairs whose first element is a + string -- in this case, the initializer list constructor would create an + object, taking the first elements as keys + 2. creating an empty array -- passing the empty initializer list to the + initializer list constructor yields an empty object + + @param[in] init initializer list with JSON values to create an array from + (optional) + + @return JSON array value + + @complexity Linear in the size of @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows an example for the `array` + function.,array} + + @sa @ref basic_json(initializer_list_t, bool, value_t) -- + create a JSON value from an initializer list + @sa @ref object(initializer_list_t) -- create a JSON object + value from an initializer list + + @since version 1.0.0 + */ + static basic_json array(initializer_list_t init = {}) + { + return basic_json(init, false, value_t::array); + } + + /*! + @brief explicitly create an object from an initializer list + + Creates a JSON object value from a given initializer list. The initializer + lists elements must be pairs, and their first elements must be strings. If + the initializer list is empty, the empty object `{}` is created. + + @note This function is only added for symmetry reasons. In contrast to the + related function @ref array(initializer_list_t), there are + no cases which can only be expressed by this function. That is, any + initializer list @a init can also be passed to the initializer list + constructor @ref basic_json(initializer_list_t, bool, value_t). + + @param[in] init initializer list to create an object from (optional) + + @return JSON object value + + @throw type_error.301 if @a init is not a list of pairs whose first + elements are strings. In this case, no object can be created. When such a + value is passed to @ref basic_json(initializer_list_t, bool, value_t), + an array would have been created from the passed initializer list @a init. + See example below. + + @complexity Linear in the size of @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows an example for the `object` + function.,object} + + @sa @ref basic_json(initializer_list_t, bool, value_t) -- + create a JSON value from an initializer list + @sa @ref array(initializer_list_t) -- create a JSON array + value from an initializer list + + @since version 1.0.0 + */ + static basic_json object(initializer_list_t init = {}) + { + return basic_json(init, false, value_t::object); + } + + /*! + @brief construct an array with count copies of given value + + Constructs a JSON array value by creating @a cnt copies of a passed value. + In case @a cnt is `0`, an empty array is created. + + @param[in] cnt the number of JSON copies of @a val to create + @param[in] val the JSON value to copy + + @post `std::distance(begin(),end()) == cnt` holds. + + @complexity Linear in @a cnt. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows examples for the @ref + basic_json(size_type\, const basic_json&) + constructor.,basic_json__size_type_basic_json} + + @since version 1.0.0 + */ + basic_json(size_type cnt, const basic_json& val) + : m_type(value_t::array) + { + m_value.array = create(cnt, val); + assert_invariant(); + } + + /*! + @brief construct a JSON container given an iterator range + + Constructs the JSON value with the contents of the range `[first, last)`. + The semantics depends on the different types a JSON value can have: + - In case of a null type, invalid_iterator.206 is thrown. + - In case of other primitive types (number, boolean, or string), @a first + must be `begin()` and @a last must be `end()`. In this case, the value is + copied. Otherwise, invalid_iterator.204 is thrown. + - In case of structured types (array, object), the constructor behaves as + similar versions for `std::vector` or `std::map`; that is, a JSON array + or object is constructed from the values in the range. + + @tparam InputIT an input iterator type (@ref iterator or @ref + const_iterator) + + @param[in] first begin of the range to copy from (included) + @param[in] last end of the range to copy from (excluded) + + @pre Iterators @a first and @a last must be initialized. **This + precondition is enforced with an assertion (see warning).** If + assertions are switched off, a violation of this precondition yields + undefined behavior. + + @pre Range `[first, last)` is valid. Usually, this precondition cannot be + checked efficiently. Only certain edge cases are detected; see the + description of the exceptions below. A violation of this precondition + yields undefined behavior. + + @warning A precondition is enforced with a runtime assertion that will + result in calling `std::abort` if this precondition is not met. + Assertions can be disabled by defining `NDEBUG` at compile time. + See http://en.cppreference.com/w/cpp/error/assert for more + information. + + @throw invalid_iterator.201 if iterators @a first and @a last are not + compatible (i.e., do not belong to the same JSON value). In this case, + the range `[first, last)` is undefined. + @throw invalid_iterator.204 if iterators @a first and @a last belong to a + primitive type (number, boolean, or string), but @a first does not point + to the first element any more. In this case, the range `[first, last)` is + undefined. See example code below. + @throw invalid_iterator.206 if iterators @a first and @a last belong to a + null value. In this case, the range `[first, last)` is undefined. + + @complexity Linear in distance between @a first and @a last. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The example below shows several ways to create JSON values by + specifying a subrange with iterators.,basic_json__InputIt_InputIt} + + @since version 1.0.0 + */ + template::value or + std::is_same::value, int>::type = 0> + basic_json(InputIT first, InputIT last) + { + assert(first.m_object != nullptr); + assert(last.m_object != nullptr); + + // make sure iterator fits the current value + if (JSON_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(201, "iterators are not compatible")); + } + + // copy type from first iterator + m_type = first.m_object->m_type; + + // check if iterator range is complete for primitive values + switch (m_type) + { + case value_t::boolean: + case value_t::number_float: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::string: + { + if (JSON_UNLIKELY(not first.m_it.primitive_iterator.is_begin() + or not last.m_it.primitive_iterator.is_end())) + { + JSON_THROW(invalid_iterator::create(204, "iterators out of range")); + } + break; + } + + default: + break; + } + + switch (m_type) + { + case value_t::number_integer: + { + m_value.number_integer = first.m_object->m_value.number_integer; + break; + } + + case value_t::number_unsigned: + { + m_value.number_unsigned = first.m_object->m_value.number_unsigned; + break; + } + + case value_t::number_float: + { + m_value.number_float = first.m_object->m_value.number_float; + break; + } + + case value_t::boolean: + { + m_value.boolean = first.m_object->m_value.boolean; + break; + } + + case value_t::string: + { + m_value = *first.m_object->m_value.string; + break; + } + + case value_t::object: + { + m_value.object = create(first.m_it.object_iterator, + last.m_it.object_iterator); + break; + } + + case value_t::array: + { + m_value.array = create(first.m_it.array_iterator, + last.m_it.array_iterator); + break; + } + + default: + JSON_THROW(invalid_iterator::create(206, "cannot construct with iterators from " + + std::string(first.m_object->type_name()))); + } + + assert_invariant(); + } + + + /////////////////////////////////////// + // other constructors and destructor // + /////////////////////////////////////// + + /// @private + basic_json(const detail::json_ref& ref) + : basic_json(ref.moved_or_copied()) + {} + + /*! + @brief copy constructor + + Creates a copy of a given JSON value. + + @param[in] other the JSON value to copy + + @post `*this == other` + + @complexity Linear in the size of @a other. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is linear. + - As postcondition, it holds: `other == basic_json(other)`. + + @liveexample{The following code shows an example for the copy + constructor.,basic_json__basic_json} + + @since version 1.0.0 + */ + basic_json(const basic_json& other) + : m_type(other.m_type) + { + // check of passed value is valid + other.assert_invariant(); + + switch (m_type) + { + case value_t::object: + { + m_value = *other.m_value.object; + break; + } + + case value_t::array: + { + m_value = *other.m_value.array; + break; + } + + case value_t::string: + { + m_value = *other.m_value.string; + break; + } + + case value_t::boolean: + { + m_value = other.m_value.boolean; + break; + } + + case value_t::number_integer: + { + m_value = other.m_value.number_integer; + break; + } + + case value_t::number_unsigned: + { + m_value = other.m_value.number_unsigned; + break; + } + + case value_t::number_float: + { + m_value = other.m_value.number_float; + break; + } + + default: + break; + } + + assert_invariant(); + } + + /*! + @brief move constructor + + Move constructor. Constructs a JSON value with the contents of the given + value @a other using move semantics. It "steals" the resources from @a + other and leaves it as JSON null value. + + @param[in,out] other value to move to this object + + @post `*this` has the same value as @a other before the call. + @post @a other is a JSON null value. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this constructor never throws + exceptions. + + @requirement This function helps `basic_json` satisfying the + [MoveConstructible](http://en.cppreference.com/w/cpp/concept/MoveConstructible) + requirements. + + @liveexample{The code below shows the move constructor explicitly called + via std::move.,basic_json__moveconstructor} + + @since version 1.0.0 + */ + basic_json(basic_json&& other) noexcept + : m_type(std::move(other.m_type)), + m_value(std::move(other.m_value)) + { + // check that passed value is valid + other.assert_invariant(); + + // invalidate payload + other.m_type = value_t::null; + other.m_value = {}; + + assert_invariant(); + } + + /*! + @brief copy assignment + + Copy assignment operator. Copies a JSON value via the "copy and swap" + strategy: It is expressed in terms of the copy constructor, destructor, + and the `swap()` member function. + + @param[in] other value to copy from + + @complexity Linear. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is linear. + + @liveexample{The code below shows and example for the copy assignment. It + creates a copy of value `a` which is then swapped with `b`. Finally\, the + copy of `a` (which is the null value after the swap) is + destroyed.,basic_json__copyassignment} + + @since version 1.0.0 + */ + reference& operator=(basic_json other) noexcept ( + std::is_nothrow_move_constructible::value and + std::is_nothrow_move_assignable::value and + std::is_nothrow_move_constructible::value and + std::is_nothrow_move_assignable::value + ) + { + // check that passed value is valid + other.assert_invariant(); + + using std::swap; + swap(m_type, other.m_type); + swap(m_value, other.m_value); + + assert_invariant(); + return *this; + } + + /*! + @brief destructor + + Destroys the JSON value and frees all allocated memory. + + @complexity Linear. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is linear. + - All stored elements are destroyed and all memory is freed. + + @since version 1.0.0 + */ + ~basic_json() + { + assert_invariant(); + m_value.destroy(m_type); + } + + /// @} + + public: + /////////////////////// + // object inspection // + /////////////////////// + + /// @name object inspection + /// Functions to inspect the type of a JSON value. + /// @{ + + /*! + @brief serialization + + Serialization function for JSON values. The function tries to mimic + Python's `json.dumps()` function, and currently supports its @a indent + and @a ensure_ascii parameters. + + @param[in] indent If indent is nonnegative, then array elements and object + members will be pretty-printed with that indent level. An indent level of + `0` will only insert newlines. `-1` (the default) selects the most compact + representation. + @param[in] indent_char The character to use for indentation if @a indent is + greater than `0`. The default is ` ` (space). + @param[in] ensure_ascii If @a ensure_ascii is true, all non-ASCII characters + in the output are escaped with `\uXXXX` sequences, and the result consists + of ASCII characters only. + + @return string containing the serialization of the JSON value + + @throw type_error.316 if a string stored inside the JSON value is not + UTF-8 encoded + + @complexity Linear. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @liveexample{The following example shows the effect of different @a indent\, + @a indent_char\, and @a ensure_ascii parameters to the result of the + serialization.,dump} + + @see https://docs.python.org/2/library/json.html#json.dump + + @since version 1.0.0; indentation character @a indent_char, option + @a ensure_ascii and exceptions added in version 3.0.0 + */ + string_t dump(const int indent = -1, const char indent_char = ' ', + const bool ensure_ascii = false) const + { + string_t result; + serializer s(detail::output_adapter(result), indent_char); + + if (indent >= 0) + { + s.dump(*this, true, ensure_ascii, static_cast(indent)); + } + else + { + s.dump(*this, false, ensure_ascii, 0); + } + + return result; + } + + /*! + @brief return the type of the JSON value (explicit) + + Return the type of the JSON value as a value from the @ref value_t + enumeration. + + @return the type of the JSON value + Value type | return value + ------------------------- | ------------------------- + null | value_t::null + boolean | value_t::boolean + string | value_t::string + number (integer) | value_t::number_integer + number (unsigned integer) | value_t::number_unsigned + number (floating-point) | value_t::number_float + object | value_t::object + array | value_t::array + discarded | value_t::discarded + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `type()` for all JSON + types.,type} + + @sa @ref operator value_t() -- return the type of the JSON value (implicit) + @sa @ref type_name() -- return the type as string + + @since version 1.0.0 + */ + constexpr value_t type() const noexcept + { + return m_type; + } + + /*! + @brief return whether type is primitive + + This function returns true if and only if the JSON type is primitive + (string, number, boolean, or null). + + @return `true` if type is primitive (string, number, boolean, or null), + `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_primitive()` for all JSON + types.,is_primitive} + + @sa @ref is_structured() -- returns whether JSON value is structured + @sa @ref is_null() -- returns whether JSON value is `null` + @sa @ref is_string() -- returns whether JSON value is a string + @sa @ref is_boolean() -- returns whether JSON value is a boolean + @sa @ref is_number() -- returns whether JSON value is a number + + @since version 1.0.0 + */ + constexpr bool is_primitive() const noexcept + { + return is_null() or is_string() or is_boolean() or is_number(); + } + + /*! + @brief return whether type is structured + + This function returns true if and only if the JSON type is structured + (array or object). + + @return `true` if type is structured (array or object), `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_structured()` for all JSON + types.,is_structured} + + @sa @ref is_primitive() -- returns whether value is primitive + @sa @ref is_array() -- returns whether value is an array + @sa @ref is_object() -- returns whether value is an object + + @since version 1.0.0 + */ + constexpr bool is_structured() const noexcept + { + return is_array() or is_object(); + } + + /*! + @brief return whether value is null + + This function returns true if and only if the JSON value is null. + + @return `true` if type is null, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_null()` for all JSON + types.,is_null} + + @since version 1.0.0 + */ + constexpr bool is_null() const noexcept + { + return (m_type == value_t::null); + } + + /*! + @brief return whether value is a boolean + + This function returns true if and only if the JSON value is a boolean. + + @return `true` if type is boolean, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_boolean()` for all JSON + types.,is_boolean} + + @since version 1.0.0 + */ + constexpr bool is_boolean() const noexcept + { + return (m_type == value_t::boolean); + } + + /*! + @brief return whether value is a number + + This function returns true if and only if the JSON value is a number. This + includes both integer (signed and unsigned) and floating-point values. + + @return `true` if type is number (regardless whether integer, unsigned + integer or floating-type), `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number()` for all JSON + types.,is_number} + + @sa @ref is_number_integer() -- check if value is an integer or unsigned + integer number + @sa @ref is_number_unsigned() -- check if value is an unsigned integer + number + @sa @ref is_number_float() -- check if value is a floating-point number + + @since version 1.0.0 + */ + constexpr bool is_number() const noexcept + { + return is_number_integer() or is_number_float(); + } + + /*! + @brief return whether value is an integer number + + This function returns true if and only if the JSON value is a signed or + unsigned integer number. This excludes floating-point values. + + @return `true` if type is an integer or unsigned integer number, `false` + otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number_integer()` for all + JSON types.,is_number_integer} + + @sa @ref is_number() -- check if value is a number + @sa @ref is_number_unsigned() -- check if value is an unsigned integer + number + @sa @ref is_number_float() -- check if value is a floating-point number + + @since version 1.0.0 + */ + constexpr bool is_number_integer() const noexcept + { + return (m_type == value_t::number_integer or m_type == value_t::number_unsigned); + } + + /*! + @brief return whether value is an unsigned integer number + + This function returns true if and only if the JSON value is an unsigned + integer number. This excludes floating-point and signed integer values. + + @return `true` if type is an unsigned integer number, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number_unsigned()` for all + JSON types.,is_number_unsigned} + + @sa @ref is_number() -- check if value is a number + @sa @ref is_number_integer() -- check if value is an integer or unsigned + integer number + @sa @ref is_number_float() -- check if value is a floating-point number + + @since version 2.0.0 + */ + constexpr bool is_number_unsigned() const noexcept + { + return (m_type == value_t::number_unsigned); + } + + /*! + @brief return whether value is a floating-point number + + This function returns true if and only if the JSON value is a + floating-point number. This excludes signed and unsigned integer values. + + @return `true` if type is a floating-point number, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number_float()` for all + JSON types.,is_number_float} + + @sa @ref is_number() -- check if value is number + @sa @ref is_number_integer() -- check if value is an integer number + @sa @ref is_number_unsigned() -- check if value is an unsigned integer + number + + @since version 1.0.0 + */ + constexpr bool is_number_float() const noexcept + { + return (m_type == value_t::number_float); + } + + /*! + @brief return whether value is an object + + This function returns true if and only if the JSON value is an object. + + @return `true` if type is object, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_object()` for all JSON + types.,is_object} + + @since version 1.0.0 + */ + constexpr bool is_object() const noexcept + { + return (m_type == value_t::object); + } + + /*! + @brief return whether value is an array + + This function returns true if and only if the JSON value is an array. + + @return `true` if type is array, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_array()` for all JSON + types.,is_array} + + @since version 1.0.0 + */ + constexpr bool is_array() const noexcept + { + return (m_type == value_t::array); + } + + /*! + @brief return whether value is a string + + This function returns true if and only if the JSON value is a string. + + @return `true` if type is string, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_string()` for all JSON + types.,is_string} + + @since version 1.0.0 + */ + constexpr bool is_string() const noexcept + { + return (m_type == value_t::string); + } + + /*! + @brief return whether value is discarded + + This function returns true if and only if the JSON value was discarded + during parsing with a callback function (see @ref parser_callback_t). + + @note This function will always be `false` for JSON values after parsing. + That is, discarded values can only occur during parsing, but will be + removed when inside a structured value or replaced by null in other cases. + + @return `true` if type is discarded, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_discarded()` for all JSON + types.,is_discarded} + + @since version 1.0.0 + */ + constexpr bool is_discarded() const noexcept + { + return (m_type == value_t::discarded); + } + + /*! + @brief return the type of the JSON value (implicit) + + Implicitly return the type of the JSON value as a value from the @ref + value_t enumeration. + + @return the type of the JSON value + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies the @ref value_t operator for + all JSON types.,operator__value_t} + + @sa @ref type() -- return the type of the JSON value (explicit) + @sa @ref type_name() -- return the type as string + + @since version 1.0.0 + */ + constexpr operator value_t() const noexcept + { + return m_type; + } + + /// @} + + private: + ////////////////// + // value access // + ////////////////// + + /// get a boolean (explicit) + boolean_t get_impl(boolean_t* /*unused*/) const + { + if (JSON_LIKELY(is_boolean())) + { + return m_value.boolean; + } + + JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(type_name()))); + } + + /// get a pointer to the value (object) + object_t* get_impl_ptr(object_t* /*unused*/) noexcept + { + return is_object() ? m_value.object : nullptr; + } + + /// get a pointer to the value (object) + constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept + { + return is_object() ? m_value.object : nullptr; + } + + /// get a pointer to the value (array) + array_t* get_impl_ptr(array_t* /*unused*/) noexcept + { + return is_array() ? m_value.array : nullptr; + } + + /// get a pointer to the value (array) + constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept + { + return is_array() ? m_value.array : nullptr; + } + + /// get a pointer to the value (string) + string_t* get_impl_ptr(string_t* /*unused*/) noexcept + { + return is_string() ? m_value.string : nullptr; + } + + /// get a pointer to the value (string) + constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept + { + return is_string() ? m_value.string : nullptr; + } + + /// get a pointer to the value (boolean) + boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept + { + return is_boolean() ? &m_value.boolean : nullptr; + } + + /// get a pointer to the value (boolean) + constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept + { + return is_boolean() ? &m_value.boolean : nullptr; + } + + /// get a pointer to the value (integer number) + number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept + { + return is_number_integer() ? &m_value.number_integer : nullptr; + } + + /// get a pointer to the value (integer number) + constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept + { + return is_number_integer() ? &m_value.number_integer : nullptr; + } + + /// get a pointer to the value (unsigned number) + number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept + { + return is_number_unsigned() ? &m_value.number_unsigned : nullptr; + } + + /// get a pointer to the value (unsigned number) + constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept + { + return is_number_unsigned() ? &m_value.number_unsigned : nullptr; + } + + /// get a pointer to the value (floating-point number) + number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept + { + return is_number_float() ? &m_value.number_float : nullptr; + } + + /// get a pointer to the value (floating-point number) + constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept + { + return is_number_float() ? &m_value.number_float : nullptr; + } + + /*! + @brief helper function to implement get_ref() + + This function helps to implement get_ref() without code duplication for + const and non-const overloads + + @tparam ThisType will be deduced as `basic_json` or `const basic_json` + + @throw type_error.303 if ReferenceType does not match underlying value + type of the current JSON + */ + template + static ReferenceType get_ref_impl(ThisType& obj) + { + // delegate the call to get_ptr<>() + auto ptr = obj.template get_ptr::type>(); + + if (JSON_LIKELY(ptr != nullptr)) + { + return *ptr; + } + + JSON_THROW(type_error::create(303, "incompatible ReferenceType for get_ref, actual type is " + std::string(obj.type_name()))); + } + + public: + /// @name value access + /// Direct access to the stored value of a JSON value. + /// @{ + + /*! + @brief get special-case overload + + This overloads avoids a lot of template boilerplate, it can be seen as the + identity method + + @tparam BasicJsonType == @ref basic_json + + @return a copy of *this + + @complexity Constant. + + @since version 2.1.0 + */ + template::type, basic_json_t>::value, + int> = 0> + basic_json get() const + { + return *this; + } + + /*! + @brief get a value (explicit) + + Explicit type conversion between the JSON value and a compatible value + which is [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible) + and [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). + The value is converted by calling the @ref json_serializer + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + ValueType ret; + JSONSerializer::from_json(*this, ret); + return ret; + @endcode + + This overloads is chosen if: + - @a ValueType is not @ref basic_json, + - @ref json_serializer has a `from_json()` method of the form + `void from_json(const basic_json&, ValueType&)`, and + - @ref json_serializer does not have a `from_json()` method of + the form `ValueType from_json(const basic_json&)` + + @tparam ValueTypeCV the provided value type + @tparam ValueType the returned value type + + @return copy of the JSON value, converted to @a ValueType + + @throw what @ref json_serializer `from_json()` method throws + + @liveexample{The example below shows several conversions from JSON values + to other types. There a few things to note: (1) Floating-point numbers can + be converted to integers\, (2) A JSON array can be converted to a standard + `std::vector`\, (3) A JSON object can be converted to C++ + associative containers such as `std::unordered_map`.,get__ValueType_const} + + @since version 2.1.0 + */ + template, + detail::enable_if_t < + not std::is_same::value and + detail::has_from_json::value and + not detail::has_non_default_from_json::value, + int> = 0> + ValueType get() const noexcept(noexcept( + JSONSerializer::from_json(std::declval(), std::declval()))) + { + // we cannot static_assert on ValueTypeCV being non-const, because + // there is support for get(), which is why we + // still need the uncvref + static_assert(not std::is_reference::value, + "get() cannot be used with reference types, you might want to use get_ref()"); + static_assert(std::is_default_constructible::value, + "types must be DefaultConstructible when used with get()"); + + ValueType ret; + JSONSerializer::from_json(*this, ret); + return ret; + } + + /*! + @brief get a value (explicit); special case + + Explicit type conversion between the JSON value and a compatible value + which is **not** [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible) + and **not** [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). + The value is converted by calling the @ref json_serializer + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + return JSONSerializer::from_json(*this); + @endcode + + This overloads is chosen if: + - @a ValueType is not @ref basic_json and + - @ref json_serializer has a `from_json()` method of the form + `ValueType from_json(const basic_json&)` + + @note If @ref json_serializer has both overloads of + `from_json()`, this one is chosen. + + @tparam ValueTypeCV the provided value type + @tparam ValueType the returned value type + + @return copy of the JSON value, converted to @a ValueType + + @throw what @ref json_serializer `from_json()` method throws + + @since version 2.1.0 + */ + template, + detail::enable_if_t::value and + detail::has_non_default_from_json::value, + int> = 0> + ValueType get() const noexcept(noexcept( + JSONSerializer::from_json(std::declval()))) + { + static_assert(not std::is_reference::value, + "get() cannot be used with reference types, you might want to use get_ref()"); + return JSONSerializer::from_json(*this); + } + + /*! + @brief get a pointer value (explicit) + + Explicit pointer access to the internally stored JSON value. No copies are + made. + + @warning The pointer becomes invalid if the underlying JSON object + changes. + + @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref + object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, + @ref number_unsigned_t, or @ref number_float_t. + + @return pointer to the internally stored JSON value if the requested + pointer type @a PointerType fits to the JSON value; `nullptr` otherwise + + @complexity Constant. + + @liveexample{The example below shows how pointers to internal values of a + JSON value can be requested. Note that no type conversions are made and a + `nullptr` is returned if the value and the requested pointer type does not + match.,get__PointerType} + + @sa @ref get_ptr() for explicit pointer-member access + + @since version 1.0.0 + */ + template::value, int>::type = 0> + PointerType get() noexcept + { + // delegate the call to get_ptr + return get_ptr(); + } + + /*! + @brief get a pointer value (explicit) + @copydoc get() + */ + template::value, int>::type = 0> + constexpr const PointerType get() const noexcept + { + // delegate the call to get_ptr + return get_ptr(); + } + + /*! + @brief get a pointer value (implicit) + + Implicit pointer access to the internally stored JSON value. No copies are + made. + + @warning Writing data to the pointee of the result yields an undefined + state. + + @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref + object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, + @ref number_unsigned_t, or @ref number_float_t. Enforced by a static + assertion. + + @return pointer to the internally stored JSON value if the requested + pointer type @a PointerType fits to the JSON value; `nullptr` otherwise + + @complexity Constant. + + @liveexample{The example below shows how pointers to internal values of a + JSON value can be requested. Note that no type conversions are made and a + `nullptr` is returned if the value and the requested pointer type does not + match.,get_ptr} + + @since version 1.0.0 + */ + template::value, int>::type = 0> + PointerType get_ptr() noexcept + { + // get the type of the PointerType (remove pointer and const) + using pointee_t = typename std::remove_const::type>::type>::type; + // make sure the type matches the allowed types + static_assert( + std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + , "incompatible pointer type"); + + // delegate the call to get_impl_ptr<>() + return get_impl_ptr(static_cast(nullptr)); + } + + /*! + @brief get a pointer value (implicit) + @copydoc get_ptr() + */ + template::value and + std::is_const::type>::value, int>::type = 0> + constexpr const PointerType get_ptr() const noexcept + { + // get the type of the PointerType (remove pointer and const) + using pointee_t = typename std::remove_const::type>::type>::type; + // make sure the type matches the allowed types + static_assert( + std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + or std::is_same::value + , "incompatible pointer type"); + + // delegate the call to get_impl_ptr<>() const + return get_impl_ptr(static_cast(nullptr)); + } + + /*! + @brief get a reference value (implicit) + + Implicit reference access to the internally stored JSON value. No copies + are made. + + @warning Writing data to the referee of the result yields an undefined + state. + + @tparam ReferenceType reference type; must be a reference to @ref array_t, + @ref object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, or + @ref number_float_t. Enforced by static assertion. + + @return reference to the internally stored JSON value if the requested + reference type @a ReferenceType fits to the JSON value; throws + type_error.303 otherwise + + @throw type_error.303 in case passed type @a ReferenceType is incompatible + with the stored JSON value; see example below + + @complexity Constant. + + @liveexample{The example shows several calls to `get_ref()`.,get_ref} + + @since version 1.1.0 + */ + template::value, int>::type = 0> + ReferenceType get_ref() + { + // delegate call to get_ref_impl + return get_ref_impl(*this); + } + + /*! + @brief get a reference value (implicit) + @copydoc get_ref() + */ + template::value and + std::is_const::type>::value, int>::type = 0> + ReferenceType get_ref() const + { + // delegate call to get_ref_impl + return get_ref_impl(*this); + } + + /*! + @brief get a value (implicit) + + Implicit type conversion between the JSON value and a compatible value. + The call is realized by calling @ref get() const. + + @tparam ValueType non-pointer type compatible to the JSON value, for + instance `int` for JSON integer numbers, `bool` for JSON booleans, or + `std::vector` types for JSON arrays. The character type of @ref string_t + as well as an initializer list of this type is excluded to avoid + ambiguities as these types implicitly convert to `std::string`. + + @return copy of the JSON value, converted to type @a ValueType + + @throw type_error.302 in case passed type @a ValueType is incompatible + to the JSON value type (e.g., the JSON value is of type boolean, but a + string is requested); see example below + + @complexity Linear in the size of the JSON value. + + @liveexample{The example below shows several conversions from JSON values + to other types. There a few things to note: (1) Floating-point numbers can + be converted to integers\, (2) A JSON array can be converted to a standard + `std::vector`\, (3) A JSON object can be converted to C++ + associative containers such as `std::unordered_map`.,operator__ValueType} + + @since version 1.0.0 + */ + template < typename ValueType, typename std::enable_if < + not std::is_pointer::value and + not std::is_same>::value and + not std::is_same::value +#ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015 + and not std::is_same>::value +#endif +#if defined(JSON_HAS_CPP_17) + and not std::is_same::value +#endif + , int >::type = 0 > + operator ValueType() const + { + // delegate the call to get<>() const + return get(); + } + + /// @} + + + //////////////////// + // element access // + //////////////////// + + /// @name element access + /// Access to the JSON value. + /// @{ + + /*! + @brief access specified array element with bounds checking + + Returns a reference to the element at specified location @a idx, with + bounds checking. + + @param[in] idx index of the element to access + + @return reference to the element at index @a idx + + @throw type_error.304 if the JSON value is not an array; in this case, + calling `at` with an index makes no sense. See example below. + @throw out_of_range.401 if the index @a idx is out of range of the array; + that is, `idx >= size()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 1.0.0 + + @liveexample{The example below shows how array elements can be read and + written using `at()`. It also demonstrates the different exceptions that + can be thrown.,at__size_type} + */ + reference at(size_type idx) + { + // at only works for arrays + if (JSON_LIKELY(is_array())) + { + JSON_TRY + { + return m_value.array->at(idx); + } + JSON_CATCH (std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); + } + } + + /*! + @brief access specified array element with bounds checking + + Returns a const reference to the element at specified location @a idx, + with bounds checking. + + @param[in] idx index of the element to access + + @return const reference to the element at index @a idx + + @throw type_error.304 if the JSON value is not an array; in this case, + calling `at` with an index makes no sense. See example below. + @throw out_of_range.401 if the index @a idx is out of range of the array; + that is, `idx >= size()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 1.0.0 + + @liveexample{The example below shows how array elements can be read using + `at()`. It also demonstrates the different exceptions that can be thrown., + at__size_type_const} + */ + const_reference at(size_type idx) const + { + // at only works for arrays + if (JSON_LIKELY(is_array())) + { + JSON_TRY + { + return m_value.array->at(idx); + } + JSON_CATCH (std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); + } + } + + /*! + @brief access specified object element with bounds checking + + Returns a reference to the element at with specified key @a key, with + bounds checking. + + @param[in] key key of the element to access + + @return reference to the element at key @a key + + @throw type_error.304 if the JSON value is not an object; in this case, + calling `at` with a key makes no sense. See example below. + @throw out_of_range.403 if the key @a key is is not stored in the object; + that is, `find(key) == end()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Logarithmic in the size of the container. + + @sa @ref operator[](const typename object_t::key_type&) for unchecked + access by reference + @sa @ref value() for access by value with a default value + + @since version 1.0.0 + + @liveexample{The example below shows how object elements can be read and + written using `at()`. It also demonstrates the different exceptions that + can be thrown.,at__object_t_key_type} + */ + reference at(const typename object_t::key_type& key) + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + JSON_TRY + { + return m_value.object->at(key); + } + JSON_CATCH (std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(403, "key '" + key + "' not found")); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); + } + } + + /*! + @brief access specified object element with bounds checking + + Returns a const reference to the element at with specified key @a key, + with bounds checking. + + @param[in] key key of the element to access + + @return const reference to the element at key @a key + + @throw type_error.304 if the JSON value is not an object; in this case, + calling `at` with a key makes no sense. See example below. + @throw out_of_range.403 if the key @a key is is not stored in the object; + that is, `find(key) == end()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Logarithmic in the size of the container. + + @sa @ref operator[](const typename object_t::key_type&) for unchecked + access by reference + @sa @ref value() for access by value with a default value + + @since version 1.0.0 + + @liveexample{The example below shows how object elements can be read using + `at()`. It also demonstrates the different exceptions that can be thrown., + at__object_t_key_type_const} + */ + const_reference at(const typename object_t::key_type& key) const + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + JSON_TRY + { + return m_value.object->at(key); + } + JSON_CATCH (std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(403, "key '" + key + "' not found")); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); + } + } + + /*! + @brief access specified array element + + Returns a reference to the element at specified location @a idx. + + @note If @a idx is beyond the range of the array (i.e., `idx >= size()`), + then the array is silently filled up with `null` values to make `idx` a + valid reference to the last stored element. + + @param[in] idx index of the element to access + + @return reference to the element at index @a idx + + @throw type_error.305 if the JSON value is not an array or null; in that + cases, using the [] operator with an index makes no sense. + + @complexity Constant if @a idx is in the range of the array. Otherwise + linear in `idx - size()`. + + @liveexample{The example below shows how array elements can be read and + written using `[]` operator. Note the addition of `null` + values.,operatorarray__size_type} + + @since version 1.0.0 + */ + reference operator[](size_type idx) + { + // implicitly convert null value to an empty array + if (is_null()) + { + m_type = value_t::array; + m_value.array = create(); + assert_invariant(); + } + + // operator[] only works for arrays + if (JSON_LIKELY(is_array())) + { + // fill up array with null values if given idx is outside range + if (idx >= m_value.array->size()) + { + m_value.array->insert(m_value.array->end(), + idx - m_value.array->size() + 1, + basic_json()); + } + + return m_value.array->operator[](idx); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); + } + + /*! + @brief access specified array element + + Returns a const reference to the element at specified location @a idx. + + @param[in] idx index of the element to access + + @return const reference to the element at index @a idx + + @throw type_error.305 if the JSON value is not an array; in that case, + using the [] operator with an index makes no sense. + + @complexity Constant. + + @liveexample{The example below shows how array elements can be read using + the `[]` operator.,operatorarray__size_type_const} + + @since version 1.0.0 + */ + const_reference operator[](size_type idx) const + { + // const operator[] only works for arrays + if (JSON_LIKELY(is_array())) + { + return m_value.array->operator[](idx); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); + } + + /*! + @brief access specified object element + + Returns a reference to the element at with specified key @a key. + + @note If @a key is not found in the object, then it is silently added to + the object and filled with a `null` value to make `key` a valid reference. + In case the value was `null` before, it is converted to an object. + + @param[in] key key of the element to access + + @return reference to the element at key @a key + + @throw type_error.305 if the JSON value is not an object or null; in that + cases, using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read and + written using the `[]` operator.,operatorarray__key_type} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref value() for access by value with a default value + + @since version 1.0.0 + */ + reference operator[](const typename object_t::key_type& key) + { + // implicitly convert null value to an empty object + if (is_null()) + { + m_type = value_t::object; + m_value.object = create(); + assert_invariant(); + } + + // operator[] only works for objects + if (JSON_LIKELY(is_object())) + { + return m_value.object->operator[](key); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); + } + + /*! + @brief read-only access specified object element + + Returns a const reference to the element at with specified key @a key. No + bounds checking is performed. + + @warning If the element with key @a key does not exist, the behavior is + undefined. + + @param[in] key key of the element to access + + @return const reference to the element at key @a key + + @pre The element with key @a key must exist. **This precondition is + enforced with an assertion.** + + @throw type_error.305 if the JSON value is not an object; in that case, + using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read using + the `[]` operator.,operatorarray__key_type_const} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref value() for access by value with a default value + + @since version 1.0.0 + */ + const_reference operator[](const typename object_t::key_type& key) const + { + // const operator[] only works for objects + if (JSON_LIKELY(is_object())) + { + assert(m_value.object->find(key) != m_value.object->end()); + return m_value.object->find(key)->second; + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); + } + + /*! + @brief access specified object element + + Returns a reference to the element at with specified key @a key. + + @note If @a key is not found in the object, then it is silently added to + the object and filled with a `null` value to make `key` a valid reference. + In case the value was `null` before, it is converted to an object. + + @param[in] key key of the element to access + + @return reference to the element at key @a key + + @throw type_error.305 if the JSON value is not an object or null; in that + cases, using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read and + written using the `[]` operator.,operatorarray__key_type} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref value() for access by value with a default value + + @since version 1.1.0 + */ + template + reference operator[](T* key) + { + // implicitly convert null to object + if (is_null()) + { + m_type = value_t::object; + m_value = value_t::object; + assert_invariant(); + } + + // at only works for objects + if (JSON_LIKELY(is_object())) + { + return m_value.object->operator[](key); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); + } + + /*! + @brief read-only access specified object element + + Returns a const reference to the element at with specified key @a key. No + bounds checking is performed. + + @warning If the element with key @a key does not exist, the behavior is + undefined. + + @param[in] key key of the element to access + + @return const reference to the element at key @a key + + @pre The element with key @a key must exist. **This precondition is + enforced with an assertion.** + + @throw type_error.305 if the JSON value is not an object; in that case, + using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read using + the `[]` operator.,operatorarray__key_type_const} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref value() for access by value with a default value + + @since version 1.1.0 + */ + template + const_reference operator[](T* key) const + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + assert(m_value.object->find(key) != m_value.object->end()); + return m_value.object->find(key)->second; + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); + } + + /*! + @brief access specified object element with default value + + Returns either a copy of an object's element at the specified key @a key + or a given default value if no element with key @a key exists. + + The function is basically equivalent to executing + @code {.cpp} + try { + return at(key); + } catch(out_of_range) { + return default_value; + } + @endcode + + @note Unlike @ref at(const typename object_t::key_type&), this function + does not throw if the given key @a key was not found. + + @note Unlike @ref operator[](const typename object_t::key_type& key), this + function does not implicitly add an element to the position defined by @a + key. This function is furthermore also applicable to const objects. + + @param[in] key key of the element to access + @param[in] default_value the value to return if @a key is not found + + @tparam ValueType type compatible to JSON values, for instance `int` for + JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for + JSON arrays. Note the type of the expected value at @a key and the default + value @a default_value must be compatible. + + @return copy of the element at key @a key or @a default_value if @a key + is not found + + @throw type_error.306 if the JSON value is not an object; in that case, + using `value()` with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be queried + with a default value.,basic_json__value} + + @sa @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa @ref operator[](const typename object_t::key_type&) for unchecked + access by reference + + @since version 1.0.0 + */ + template::value, int>::type = 0> + ValueType value(const typename object_t::key_type& key, const ValueType& default_value) const + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + // if key is found, return value and given default value otherwise + const auto it = find(key); + if (it != end()) + { + return *it; + } + + return default_value; + } + + JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()))); + } + + /*! + @brief overload for a default value of type const char* + @copydoc basic_json::value(const typename object_t::key_type&, ValueType) const + */ + string_t value(const typename object_t::key_type& key, const char* default_value) const + { + return value(key, string_t(default_value)); + } + + /*! + @brief access specified object element via JSON Pointer with default value + + Returns either a copy of an object's element at the specified key @a key + or a given default value if no element with key @a key exists. + + The function is basically equivalent to executing + @code {.cpp} + try { + return at(ptr); + } catch(out_of_range) { + return default_value; + } + @endcode + + @note Unlike @ref at(const json_pointer&), this function does not throw + if the given key @a key was not found. + + @param[in] ptr a JSON pointer to the element to access + @param[in] default_value the value to return if @a ptr found no value + + @tparam ValueType type compatible to JSON values, for instance `int` for + JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for + JSON arrays. Note the type of the expected value at @a key and the default + value @a default_value must be compatible. + + @return copy of the element at key @a key or @a default_value if @a key + is not found + + @throw type_error.306 if the JSON value is not an objec; in that case, + using `value()` with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be queried + with a default value.,basic_json__value_ptr} + + @sa @ref operator[](const json_pointer&) for unchecked access by reference + + @since version 2.0.2 + */ + template::value, int>::type = 0> + ValueType value(const json_pointer& ptr, const ValueType& default_value) const + { + // at only works for objects + if (JSON_LIKELY(is_object())) + { + // if pointer resolves a value, return it or use default value + JSON_TRY + { + return ptr.get_checked(this); + } + JSON_CATCH (out_of_range&) + { + return default_value; + } + } + + JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()))); + } + + /*! + @brief overload for a default value of type const char* + @copydoc basic_json::value(const json_pointer&, ValueType) const + */ + string_t value(const json_pointer& ptr, const char* default_value) const + { + return value(ptr, string_t(default_value)); + } + + /*! + @brief access the first element + + Returns a reference to the first element in the container. For a JSON + container `c`, the expression `c.front()` is equivalent to `*c.begin()`. + + @return In case of a structured type (array or object), a reference to the + first element is returned. In case of number, string, or boolean values, a + reference to the value is returned. + + @complexity Constant. + + @pre The JSON value must not be `null` (would throw `std::out_of_range`) + or an empty array or object (undefined behavior, **guarded by + assertions**). + @post The JSON value remains unchanged. + + @throw invalid_iterator.214 when called on `null` value + + @liveexample{The following code shows an example for `front()`.,front} + + @sa @ref back() -- access the last element + + @since version 1.0.0 + */ + reference front() + { + return *begin(); + } + + /*! + @copydoc basic_json::front() + */ + const_reference front() const + { + return *cbegin(); + } + + /*! + @brief access the last element + + Returns a reference to the last element in the container. For a JSON + container `c`, the expression `c.back()` is equivalent to + @code {.cpp} + auto tmp = c.end(); + --tmp; + return *tmp; + @endcode + + @return In case of a structured type (array or object), a reference to the + last element is returned. In case of number, string, or boolean values, a + reference to the value is returned. + + @complexity Constant. + + @pre The JSON value must not be `null` (would throw `std::out_of_range`) + or an empty array or object (undefined behavior, **guarded by + assertions**). + @post The JSON value remains unchanged. + + @throw invalid_iterator.214 when called on a `null` value. See example + below. + + @liveexample{The following code shows an example for `back()`.,back} + + @sa @ref front() -- access the first element + + @since version 1.0.0 + */ + reference back() + { + auto tmp = end(); + --tmp; + return *tmp; + } + + /*! + @copydoc basic_json::back() + */ + const_reference back() const + { + auto tmp = cend(); + --tmp; + return *tmp; + } + + /*! + @brief remove element given an iterator + + Removes the element specified by iterator @a pos. The iterator @a pos must + be valid and dereferenceable. Thus the `end()` iterator (which is valid, + but is not dereferenceable) cannot be used as a value for @a pos. + + If called on a primitive type other than `null`, the resulting JSON value + will be `null`. + + @param[in] pos iterator to the element to remove + @return Iterator following the last removed element. If the iterator @a + pos refers to the last element, the `end()` iterator is returned. + + @tparam IteratorType an @ref iterator or @ref const_iterator + + @post Invalidates iterators and references at or after the point of the + erase, including the `end()` iterator. + + @throw type_error.307 if called on a `null` value; example: `"cannot use + erase() with null"` + @throw invalid_iterator.202 if called on an iterator which does not belong + to the current JSON value; example: `"iterator does not fit current + value"` + @throw invalid_iterator.205 if called on a primitive type with invalid + iterator (i.e., any iterator which is not `begin()`); example: `"iterator + out of range"` + + @complexity The complexity depends on the type: + - objects: amortized constant + - arrays: linear in distance between @a pos and the end of the container + - strings: linear in the length of the string + - other types: constant + + @liveexample{The example shows the result of `erase()` for different JSON + types.,erase__IteratorType} + + @sa @ref erase(IteratorType, IteratorType) -- removes the elements in + the given range + @sa @ref erase(const typename object_t::key_type&) -- removes the element + from an object at the given key + @sa @ref erase(const size_type) -- removes the element from an array at + the given index + + @since version 1.0.0 + */ + template::value or + std::is_same::value, int>::type + = 0> + IteratorType erase(IteratorType pos) + { + // make sure iterator fits the current value + if (JSON_UNLIKELY(this != pos.m_object)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + IteratorType result = end(); + + switch (m_type) + { + case value_t::boolean: + case value_t::number_float: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::string: + { + if (JSON_UNLIKELY(not pos.m_it.primitive_iterator.is_begin())) + { + JSON_THROW(invalid_iterator::create(205, "iterator out of range")); + } + + if (is_string()) + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, m_value.string); + std::allocator_traits::deallocate(alloc, m_value.string, 1); + m_value.string = nullptr; + } + + m_type = value_t::null; + assert_invariant(); + break; + } + + case value_t::object: + { + result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator); + break; + } + + case value_t::array: + { + result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator); + break; + } + + default: + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); + } + + return result; + } + + /*! + @brief remove elements given an iterator range + + Removes the element specified by the range `[first; last)`. The iterator + @a first does not need to be dereferenceable if `first == last`: erasing + an empty range is a no-op. + + If called on a primitive type other than `null`, the resulting JSON value + will be `null`. + + @param[in] first iterator to the beginning of the range to remove + @param[in] last iterator past the end of the range to remove + @return Iterator following the last removed element. If the iterator @a + second refers to the last element, the `end()` iterator is returned. + + @tparam IteratorType an @ref iterator or @ref const_iterator + + @post Invalidates iterators and references at or after the point of the + erase, including the `end()` iterator. + + @throw type_error.307 if called on a `null` value; example: `"cannot use + erase() with null"` + @throw invalid_iterator.203 if called on iterators which does not belong + to the current JSON value; example: `"iterators do not fit current value"` + @throw invalid_iterator.204 if called on a primitive type with invalid + iterators (i.e., if `first != begin()` and `last != end()`); example: + `"iterators out of range"` + + @complexity The complexity depends on the type: + - objects: `log(size()) + std::distance(first, last)` + - arrays: linear in the distance between @a first and @a last, plus linear + in the distance between @a last and end of the container + - strings: linear in the length of the string + - other types: constant + + @liveexample{The example shows the result of `erase()` for different JSON + types.,erase__IteratorType_IteratorType} + + @sa @ref erase(IteratorType) -- removes the element at a given position + @sa @ref erase(const typename object_t::key_type&) -- removes the element + from an object at the given key + @sa @ref erase(const size_type) -- removes the element from an array at + the given index + + @since version 1.0.0 + */ + template::value or + std::is_same::value, int>::type + = 0> + IteratorType erase(IteratorType first, IteratorType last) + { + // make sure iterator fits the current value + if (JSON_UNLIKELY(this != first.m_object or this != last.m_object)) + { + JSON_THROW(invalid_iterator::create(203, "iterators do not fit current value")); + } + + IteratorType result = end(); + + switch (m_type) + { + case value_t::boolean: + case value_t::number_float: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::string: + { + if (JSON_LIKELY(not first.m_it.primitive_iterator.is_begin() + or not last.m_it.primitive_iterator.is_end())) + { + JSON_THROW(invalid_iterator::create(204, "iterators out of range")); + } + + if (is_string()) + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, m_value.string); + std::allocator_traits::deallocate(alloc, m_value.string, 1); + m_value.string = nullptr; + } + + m_type = value_t::null; + assert_invariant(); + break; + } + + case value_t::object: + { + result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator, + last.m_it.object_iterator); + break; + } + + case value_t::array: + { + result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator, + last.m_it.array_iterator); + break; + } + + default: + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); + } + + return result; + } + + /*! + @brief remove element from a JSON object given a key + + Removes elements from a JSON object with the key value @a key. + + @param[in] key value of the elements to remove + + @return Number of elements removed. If @a ObjectType is the default + `std::map` type, the return value will always be `0` (@a key was not + found) or `1` (@a key was found). + + @post References and iterators to the erased elements are invalidated. + Other references and iterators are not affected. + + @throw type_error.307 when called on a type other than JSON object; + example: `"cannot use erase() with null"` + + @complexity `log(size()) + count(key)` + + @liveexample{The example shows the effect of `erase()`.,erase__key_type} + + @sa @ref erase(IteratorType) -- removes the element at a given position + @sa @ref erase(IteratorType, IteratorType) -- removes the elements in + the given range + @sa @ref erase(const size_type) -- removes the element from an array at + the given index + + @since version 1.0.0 + */ + size_type erase(const typename object_t::key_type& key) + { + // this erase only works for objects + if (JSON_LIKELY(is_object())) + { + return m_value.object->erase(key); + } + + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); + } + + /*! + @brief remove element from a JSON array given an index + + Removes element from a JSON array at the index @a idx. + + @param[in] idx index of the element to remove + + @throw type_error.307 when called on a type other than JSON object; + example: `"cannot use erase() with null"` + @throw out_of_range.401 when `idx >= size()`; example: `"array index 17 + is out of range"` + + @complexity Linear in distance between @a idx and the end of the container. + + @liveexample{The example shows the effect of `erase()`.,erase__size_type} + + @sa @ref erase(IteratorType) -- removes the element at a given position + @sa @ref erase(IteratorType, IteratorType) -- removes the elements in + the given range + @sa @ref erase(const typename object_t::key_type&) -- removes the element + from an object at the given key + + @since version 1.0.0 + */ + void erase(const size_type idx) + { + // this erase only works for arrays + if (JSON_LIKELY(is_array())) + { + if (JSON_UNLIKELY(idx >= size())) + { + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); + } + + m_value.array->erase(m_value.array->begin() + static_cast(idx)); + } + else + { + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); + } + } + + /// @} + + + //////////// + // lookup // + //////////// + + /// @name lookup + /// @{ + + /*! + @brief find an element in a JSON object + + Finds an element in a JSON object with key equivalent to @a key. If the + element is not found or the JSON value is not an object, end() is + returned. + + @note This method always returns @ref end() when executed on a JSON type + that is not an object. + + @param[in] key key value of the element to search for. + + @return Iterator to an element with key equivalent to @a key. If no such + element is found or the JSON value is not an object, past-the-end (see + @ref end()) iterator is returned. + + @complexity Logarithmic in the size of the JSON object. + + @liveexample{The example shows how `find()` is used.,find__key_type} + + @since version 1.0.0 + */ + template + iterator find(KeyT&& key) + { + auto result = end(); + + if (is_object()) + { + result.m_it.object_iterator = m_value.object->find(std::forward(key)); + } + + return result; + } + + /*! + @brief find an element in a JSON object + @copydoc find(KeyT&&) + */ + template + const_iterator find(KeyT&& key) const + { + auto result = cend(); + + if (is_object()) + { + result.m_it.object_iterator = m_value.object->find(std::forward(key)); + } + + return result; + } + + /*! + @brief returns the number of occurrences of a key in a JSON object + + Returns the number of elements with key @a key. If ObjectType is the + default `std::map` type, the return value will always be `0` (@a key was + not found) or `1` (@a key was found). + + @note This method always returns `0` when executed on a JSON type that is + not an object. + + @param[in] key key value of the element to count + + @return Number of elements with key @a key. If the JSON value is not an + object, the return value will be `0`. + + @complexity Logarithmic in the size of the JSON object. + + @liveexample{The example shows how `count()` is used.,count} + + @since version 1.0.0 + */ + template + size_type count(KeyT&& key) const + { + // return 0 for all nonobject types + return is_object() ? m_value.object->count(std::forward(key)) : 0; + } + + /// @} + + + /////////////// + // iterators // + /////////////// + + /// @name iterators + /// @{ + + /*! + @brief returns an iterator to the first element + + Returns an iterator to the first element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return iterator to the first element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + + @liveexample{The following code shows an example for `begin()`.,begin} + + @sa @ref cbegin() -- returns a const iterator to the beginning + @sa @ref end() -- returns an iterator to the end + @sa @ref cend() -- returns a const iterator to the end + + @since version 1.0.0 + */ + iterator begin() noexcept + { + iterator result(this); + result.set_begin(); + return result; + } + + /*! + @copydoc basic_json::cbegin() + */ + const_iterator begin() const noexcept + { + return cbegin(); + } + + /*! + @brief returns a const iterator to the first element + + Returns a const iterator to the first element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return const iterator to the first element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast(*this).begin()`. + + @liveexample{The following code shows an example for `cbegin()`.,cbegin} + + @sa @ref begin() -- returns an iterator to the beginning + @sa @ref end() -- returns an iterator to the end + @sa @ref cend() -- returns a const iterator to the end + + @since version 1.0.0 + */ + const_iterator cbegin() const noexcept + { + const_iterator result(this); + result.set_begin(); + return result; + } + + /*! + @brief returns an iterator to one past the last element + + Returns an iterator to one past the last element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return iterator one past the last element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + + @liveexample{The following code shows an example for `end()`.,end} + + @sa @ref cend() -- returns a const iterator to the end + @sa @ref begin() -- returns an iterator to the beginning + @sa @ref cbegin() -- returns a const iterator to the beginning + + @since version 1.0.0 + */ + iterator end() noexcept + { + iterator result(this); + result.set_end(); + return result; + } + + /*! + @copydoc basic_json::cend() + */ + const_iterator end() const noexcept + { + return cend(); + } + + /*! + @brief returns a const iterator to one past the last element + + Returns a const iterator to one past the last element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return const iterator one past the last element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast(*this).end()`. + + @liveexample{The following code shows an example for `cend()`.,cend} + + @sa @ref end() -- returns an iterator to the end + @sa @ref begin() -- returns an iterator to the beginning + @sa @ref cbegin() -- returns a const iterator to the beginning + + @since version 1.0.0 + */ + const_iterator cend() const noexcept + { + const_iterator result(this); + result.set_end(); + return result; + } + + /*! + @brief returns an iterator to the reverse-beginning + + Returns an iterator to the reverse-beginning; that is, the last element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `reverse_iterator(end())`. + + @liveexample{The following code shows an example for `rbegin()`.,rbegin} + + @sa @ref crbegin() -- returns a const reverse iterator to the beginning + @sa @ref rend() -- returns a reverse iterator to the end + @sa @ref crend() -- returns a const reverse iterator to the end + + @since version 1.0.0 + */ + reverse_iterator rbegin() noexcept + { + return reverse_iterator(end()); + } + + /*! + @copydoc basic_json::crbegin() + */ + const_reverse_iterator rbegin() const noexcept + { + return crbegin(); + } + + /*! + @brief returns an iterator to the reverse-end + + Returns an iterator to the reverse-end; that is, one before the first + element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `reverse_iterator(begin())`. + + @liveexample{The following code shows an example for `rend()`.,rend} + + @sa @ref crend() -- returns a const reverse iterator to the end + @sa @ref rbegin() -- returns a reverse iterator to the beginning + @sa @ref crbegin() -- returns a const reverse iterator to the beginning + + @since version 1.0.0 + */ + reverse_iterator rend() noexcept + { + return reverse_iterator(begin()); + } + + /*! + @copydoc basic_json::crend() + */ + const_reverse_iterator rend() const noexcept + { + return crend(); + } + + /*! + @brief returns a const reverse iterator to the last element + + Returns a const iterator to the reverse-beginning; that is, the last + element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast(*this).rbegin()`. + + @liveexample{The following code shows an example for `crbegin()`.,crbegin} + + @sa @ref rbegin() -- returns a reverse iterator to the beginning + @sa @ref rend() -- returns a reverse iterator to the end + @sa @ref crend() -- returns a const reverse iterator to the end + + @since version 1.0.0 + */ + const_reverse_iterator crbegin() const noexcept + { + return const_reverse_iterator(cend()); + } + + /*! + @brief returns a const reverse iterator to one before the first + + Returns a const reverse iterator to the reverse-end; that is, one before + the first element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast(*this).rend()`. + + @liveexample{The following code shows an example for `crend()`.,crend} + + @sa @ref rend() -- returns a reverse iterator to the end + @sa @ref rbegin() -- returns a reverse iterator to the beginning + @sa @ref crbegin() -- returns a const reverse iterator to the beginning + + @since version 1.0.0 + */ + const_reverse_iterator crend() const noexcept + { + return const_reverse_iterator(cbegin()); + } + + public: + /*! + @brief wrapper to access iterator member functions in range-based for + + This function allows to access @ref iterator::key() and @ref + iterator::value() during range-based for loops. In these loops, a + reference to the JSON values is returned, so there is no access to the + underlying iterator. + + For loop without iterator_wrapper: + + @code{cpp} + for (auto it = j_object.begin(); it != j_object.end(); ++it) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + Range-based for loop without iterator proxy: + + @code{cpp} + for (auto it : j_object) + { + // "it" is of type json::reference and has no key() member + std::cout << "value: " << it << '\n'; + } + @endcode + + Range-based for loop with iterator proxy: + + @code{cpp} + for (auto it : json::iterator_wrapper(j_object)) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + @note When iterating over an array, `key()` will return the index of the + element as string (see example). + + @param[in] ref reference to a JSON value + @return iteration proxy object wrapping @a ref with an interface to use in + range-based for loops + + @liveexample{The following code shows how the wrapper is used,iterator_wrapper} + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @note The name of this function is not yet final and may change in the + future. + */ + static iteration_proxy iterator_wrapper(reference ref) + { + return iteration_proxy(ref); + } + + /*! + @copydoc iterator_wrapper(reference) + */ + static iteration_proxy iterator_wrapper(const_reference ref) + { + return iteration_proxy(ref); + } + + /*! + @brief helper to access iterator member functions in range-based for + + This function allows to access @ref iterator::key() and @ref + iterator::value() during range-based for loops. In these loops, a + reference to the JSON values is returned, so there is no access to the + underlying iterator. + + For loop without `items()` function: + + @code{cpp} + for (auto it = j_object.begin(); it != j_object.end(); ++it) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + Range-based for loop without `items()` function: + + @code{cpp} + for (auto it : j_object) + { + // "it" is of type json::reference and has no key() member + std::cout << "value: " << it << '\n'; + } + @endcode + + Range-based for loop with `items()` function: + + @code{cpp} + for (auto it : j_object.items()) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + @note When iterating over an array, `key()` will return the index of the + element as string (see example). + + @return iteration proxy object wrapping @a ref with an interface to use in + range-based for loops + + @liveexample{The following code shows how the function is used.,items} + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + */ + iteration_proxy items() + { + return iteration_proxy(*this); + } + + /*! + @copydoc items() + */ + iteration_proxy items() const + { + return iteration_proxy(*this); + } + + /// @} + + + ////////////// + // capacity // + ////////////// + + /// @name capacity + /// @{ + + /*! + @brief checks whether the container is empty. + + Checks if a JSON value has no elements (i.e. whether its @ref size is `0`). + + @return The return value depends on the different types and is + defined as follows: + Value type | return value + ----------- | ------------- + null | `true` + boolean | `false` + string | `false` + number | `false` + object | result of function `object_t::empty()` + array | result of function `array_t::empty()` + + @liveexample{The following code uses `empty()` to check if a JSON + object contains any elements.,empty} + + @complexity Constant, as long as @ref array_t and @ref object_t satisfy + the Container concept; that is, their `empty()` functions have constant + complexity. + + @iterators No changes. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @note This function does not return whether a string stored as JSON value + is empty - it returns whether the JSON container itself is empty which is + false in the case of a string. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + - Has the semantics of `begin() == end()`. + + @sa @ref size() -- returns the number of elements + + @since version 1.0.0 + */ + bool empty() const noexcept + { + switch (m_type) + { + case value_t::null: + { + // null values are empty + return true; + } + + case value_t::array: + { + // delegate call to array_t::empty() + return m_value.array->empty(); + } + + case value_t::object: + { + // delegate call to object_t::empty() + return m_value.object->empty(); + } + + default: + { + // all other types are nonempty + return false; + } + } + } + + /*! + @brief returns the number of elements + + Returns the number of elements in a JSON value. + + @return The return value depends on the different types and is + defined as follows: + Value type | return value + ----------- | ------------- + null | `0` + boolean | `1` + string | `1` + number | `1` + object | result of function object_t::size() + array | result of function array_t::size() + + @liveexample{The following code calls `size()` on the different value + types.,size} + + @complexity Constant, as long as @ref array_t and @ref object_t satisfy + the Container concept; that is, their size() functions have constant + complexity. + + @iterators No changes. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @note This function does not return the length of a string stored as JSON + value - it returns the number of elements in the JSON value which is 1 in + the case of a string. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + - Has the semantics of `std::distance(begin(), end())`. + + @sa @ref empty() -- checks whether the container is empty + @sa @ref max_size() -- returns the maximal number of elements + + @since version 1.0.0 + */ + size_type size() const noexcept + { + switch (m_type) + { + case value_t::null: + { + // null values are empty + return 0; + } + + case value_t::array: + { + // delegate call to array_t::size() + return m_value.array->size(); + } + + case value_t::object: + { + // delegate call to object_t::size() + return m_value.object->size(); + } + + default: + { + // all other types have size 1 + return 1; + } + } + } + + /*! + @brief returns the maximum possible number of elements + + Returns the maximum number of elements a JSON value is able to hold due to + system or library implementation limitations, i.e. `std::distance(begin(), + end())` for the JSON value. + + @return The return value depends on the different types and is + defined as follows: + Value type | return value + ----------- | ------------- + null | `0` (same as `size()`) + boolean | `1` (same as `size()`) + string | `1` (same as `size()`) + number | `1` (same as `size()`) + object | result of function `object_t::max_size()` + array | result of function `array_t::max_size()` + + @liveexample{The following code calls `max_size()` on the different value + types. Note the output is implementation specific.,max_size} + + @complexity Constant, as long as @ref array_t and @ref object_t satisfy + the Container concept; that is, their `max_size()` functions have constant + complexity. + + @iterators No changes. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @requirement This function helps `basic_json` satisfying the + [Container](http://en.cppreference.com/w/cpp/concept/Container) + requirements: + - The complexity is constant. + - Has the semantics of returning `b.size()` where `b` is the largest + possible JSON value. + + @sa @ref size() -- returns the number of elements + + @since version 1.0.0 + */ + size_type max_size() const noexcept + { + switch (m_type) + { + case value_t::array: + { + // delegate call to array_t::max_size() + return m_value.array->max_size(); + } + + case value_t::object: + { + // delegate call to object_t::max_size() + return m_value.object->max_size(); + } + + default: + { + // all other types have max_size() == size() + return size(); + } + } + } + + /// @} + + + /////////////// + // modifiers // + /////////////// + + /// @name modifiers + /// @{ + + /*! + @brief clears the contents + + Clears the content of a JSON value and resets it to the default value as + if @ref basic_json(value_t) would have been called with the current value + type from @ref type(): + + Value type | initial value + ----------- | ------------- + null | `null` + boolean | `false` + string | `""` + number | `0` + object | `{}` + array | `[]` + + @post Has the same effect as calling + @code {.cpp} + *this = basic_json(type()); + @endcode + + @liveexample{The example below shows the effect of `clear()` to different + JSON types.,clear} + + @complexity Linear in the size of the JSON value. + + @iterators All iterators, pointers and references related to this container + are invalidated. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @sa @ref basic_json(value_t) -- constructor that creates an object with the + same value than calling `clear()` + + @since version 1.0.0 + */ + void clear() noexcept + { + switch (m_type) + { + case value_t::number_integer: + { + m_value.number_integer = 0; + break; + } + + case value_t::number_unsigned: + { + m_value.number_unsigned = 0; + break; + } + + case value_t::number_float: + { + m_value.number_float = 0.0; + break; + } + + case value_t::boolean: + { + m_value.boolean = false; + break; + } + + case value_t::string: + { + m_value.string->clear(); + break; + } + + case value_t::array: + { + m_value.array->clear(); + break; + } + + case value_t::object: + { + m_value.object->clear(); + break; + } + + default: + break; + } + } + + /*! + @brief add an object to an array + + Appends the given element @a val to the end of the JSON value. If the + function is called on a JSON null value, an empty array is created before + appending @a val. + + @param[in] val the value to add to the JSON array + + @throw type_error.308 when called on a type other than JSON array or + null; example: `"cannot use push_back() with number"` + + @complexity Amortized constant. + + @liveexample{The example shows how `push_back()` and `+=` can be used to + add elements to a JSON array. Note how the `null` value was silently + converted to a JSON array.,push_back} + + @since version 1.0.0 + */ + void push_back(basic_json&& val) + { + // push_back only works for null objects or arrays + if (JSON_UNLIKELY(not(is_null() or is_array()))) + { + JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); + } + + // transform null object into an array + if (is_null()) + { + m_type = value_t::array; + m_value = value_t::array; + assert_invariant(); + } + + // add element to array (move semantics) + m_value.array->push_back(std::move(val)); + // invalidate object + val.m_type = value_t::null; + } + + /*! + @brief add an object to an array + @copydoc push_back(basic_json&&) + */ + reference operator+=(basic_json&& val) + { + push_back(std::move(val)); + return *this; + } + + /*! + @brief add an object to an array + @copydoc push_back(basic_json&&) + */ + void push_back(const basic_json& val) + { + // push_back only works for null objects or arrays + if (JSON_UNLIKELY(not(is_null() or is_array()))) + { + JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); + } + + // transform null object into an array + if (is_null()) + { + m_type = value_t::array; + m_value = value_t::array; + assert_invariant(); + } + + // add element to array + m_value.array->push_back(val); + } + + /*! + @brief add an object to an array + @copydoc push_back(basic_json&&) + */ + reference operator+=(const basic_json& val) + { + push_back(val); + return *this; + } + + /*! + @brief add an object to an object + + Inserts the given element @a val to the JSON object. If the function is + called on a JSON null value, an empty object is created before inserting + @a val. + + @param[in] val the value to add to the JSON object + + @throw type_error.308 when called on a type other than JSON object or + null; example: `"cannot use push_back() with number"` + + @complexity Logarithmic in the size of the container, O(log(`size()`)). + + @liveexample{The example shows how `push_back()` and `+=` can be used to + add elements to a JSON object. Note how the `null` value was silently + converted to a JSON object.,push_back__object_t__value} + + @since version 1.0.0 + */ + void push_back(const typename object_t::value_type& val) + { + // push_back only works for null objects or objects + if (JSON_UNLIKELY(not(is_null() or is_object()))) + { + JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); + } + + // transform null object into an object + if (is_null()) + { + m_type = value_t::object; + m_value = value_t::object; + assert_invariant(); + } + + // add element to array + m_value.object->insert(val); + } + + /*! + @brief add an object to an object + @copydoc push_back(const typename object_t::value_type&) + */ + reference operator+=(const typename object_t::value_type& val) + { + push_back(val); + return *this; + } + + /*! + @brief add an object to an object + + This function allows to use `push_back` with an initializer list. In case + + 1. the current value is an object, + 2. the initializer list @a init contains only two elements, and + 3. the first element of @a init is a string, + + @a init is converted into an object element and added using + @ref push_back(const typename object_t::value_type&). Otherwise, @a init + is converted to a JSON value and added using @ref push_back(basic_json&&). + + @param[in] init an initializer list + + @complexity Linear in the size of the initializer list @a init. + + @note This function is required to resolve an ambiguous overload error, + because pairs like `{"key", "value"}` can be both interpreted as + `object_t::value_type` or `std::initializer_list`, see + https://github.com/nlohmann/json/issues/235 for more information. + + @liveexample{The example shows how initializer lists are treated as + objects when possible.,push_back__initializer_list} + */ + void push_back(initializer_list_t init) + { + if (is_object() and init.size() == 2 and (*init.begin())->is_string()) + { + basic_json&& key = init.begin()->moved_or_copied(); + push_back(typename object_t::value_type( + std::move(key.get_ref()), (init.begin() + 1)->moved_or_copied())); + } + else + { + push_back(basic_json(init)); + } + } + + /*! + @brief add an object to an object + @copydoc push_back(initializer_list_t) + */ + reference operator+=(initializer_list_t init) + { + push_back(init); + return *this; + } + + /*! + @brief add an object to an array + + Creates a JSON value from the passed parameters @a args to the end of the + JSON value. If the function is called on a JSON null value, an empty array + is created before appending the value created from @a args. + + @param[in] args arguments to forward to a constructor of @ref basic_json + @tparam Args compatible types to create a @ref basic_json object + + @throw type_error.311 when called on a type other than JSON array or + null; example: `"cannot use emplace_back() with number"` + + @complexity Amortized constant. + + @liveexample{The example shows how `push_back()` can be used to add + elements to a JSON array. Note how the `null` value was silently converted + to a JSON array.,emplace_back} + + @since version 2.0.8 + */ + template + void emplace_back(Args&& ... args) + { + // emplace_back only works for null objects or arrays + if (JSON_UNLIKELY(not(is_null() or is_array()))) + { + JSON_THROW(type_error::create(311, "cannot use emplace_back() with " + std::string(type_name()))); + } + + // transform null object into an array + if (is_null()) + { + m_type = value_t::array; + m_value = value_t::array; + assert_invariant(); + } + + // add element to array (perfect forwarding) + m_value.array->emplace_back(std::forward(args)...); + } + + /*! + @brief add an object to an object if key does not exist + + Inserts a new element into a JSON object constructed in-place with the + given @a args if there is no element with the key in the container. If the + function is called on a JSON null value, an empty object is created before + appending the value created from @a args. + + @param[in] args arguments to forward to a constructor of @ref basic_json + @tparam Args compatible types to create a @ref basic_json object + + @return a pair consisting of an iterator to the inserted element, or the + already-existing element if no insertion happened, and a bool + denoting whether the insertion took place. + + @throw type_error.311 when called on a type other than JSON object or + null; example: `"cannot use emplace() with number"` + + @complexity Logarithmic in the size of the container, O(log(`size()`)). + + @liveexample{The example shows how `emplace()` can be used to add elements + to a JSON object. Note how the `null` value was silently converted to a + JSON object. Further note how no value is added if there was already one + value stored with the same key.,emplace} + + @since version 2.0.8 + */ + template + std::pair emplace(Args&& ... args) + { + // emplace only works for null objects or arrays + if (JSON_UNLIKELY(not(is_null() or is_object()))) + { + JSON_THROW(type_error::create(311, "cannot use emplace() with " + std::string(type_name()))); + } + + // transform null object into an object + if (is_null()) + { + m_type = value_t::object; + m_value = value_t::object; + assert_invariant(); + } + + // add element to array (perfect forwarding) + auto res = m_value.object->emplace(std::forward(args)...); + // create result iterator and set iterator to the result of emplace + auto it = begin(); + it.m_it.object_iterator = res.first; + + // return pair of iterator and boolean + return {it, res.second}; + } + + /*! + @brief inserts element + + Inserts element @a val before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] val element to insert + @return iterator pointing to the inserted @a val. + + @throw type_error.309 if called on JSON values other than arrays; + example: `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + + @complexity Constant plus linear in the distance between @a pos and end of + the container. + + @liveexample{The example shows how `insert()` is used.,insert} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, const basic_json& val) + { + // insert only works for arrays + if (JSON_LIKELY(is_array())) + { + // check if iterator pos fits to this JSON value + if (JSON_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + // insert to array and return iterator + iterator result(this); + result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, val); + return result; + } + + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + /*! + @brief inserts element + @copydoc insert(const_iterator, const basic_json&) + */ + iterator insert(const_iterator pos, basic_json&& val) + { + return insert(pos, val); + } + + /*! + @brief inserts elements + + Inserts @a cnt copies of @a val before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] cnt number of copies of @a val to insert + @param[in] val element to insert + @return iterator pointing to the first element inserted, or @a pos if + `cnt==0` + + @throw type_error.309 if called on JSON values other than arrays; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + + @complexity Linear in @a cnt plus linear in the distance between @a pos + and end of the container. + + @liveexample{The example shows how `insert()` is used.,insert__count} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, size_type cnt, const basic_json& val) + { + // insert only works for arrays + if (JSON_LIKELY(is_array())) + { + // check if iterator pos fits to this JSON value + if (JSON_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + // insert to array and return iterator + iterator result(this); + result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val); + return result; + } + + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + /*! + @brief inserts elements + + Inserts elements from range `[first, last)` before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] first begin of the range of elements to insert + @param[in] last end of the range of elements to insert + + @throw type_error.309 if called on JSON values other than arrays; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + @throw invalid_iterator.210 if @a first and @a last do not belong to the + same JSON value; example: `"iterators do not fit"` + @throw invalid_iterator.211 if @a first or @a last are iterators into + container for which insert is called; example: `"passed iterators may not + belong to container"` + + @return iterator pointing to the first element inserted, or @a pos if + `first==last` + + @complexity Linear in `std::distance(first, last)` plus linear in the + distance between @a pos and end of the container. + + @liveexample{The example shows how `insert()` is used.,insert__range} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, const_iterator first, const_iterator last) + { + // insert only works for arrays + if (JSON_UNLIKELY(not is_array())) + { + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + // check if iterator pos fits to this JSON value + if (JSON_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + // check if range iterators belong to the same JSON object + if (JSON_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); + } + + if (JSON_UNLIKELY(first.m_object == this)) + { + JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container")); + } + + // insert to array and return iterator + iterator result(this); + result.m_it.array_iterator = m_value.array->insert( + pos.m_it.array_iterator, + first.m_it.array_iterator, + last.m_it.array_iterator); + return result; + } + + /*! + @brief inserts elements + + Inserts elements from initializer list @a ilist before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] ilist initializer list to insert the values from + + @throw type_error.309 if called on JSON values other than arrays; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + + @return iterator pointing to the first element inserted, or @a pos if + `ilist` is empty + + @complexity Linear in `ilist.size()` plus linear in the distance between + @a pos and end of the container. + + @liveexample{The example shows how `insert()` is used.,insert__ilist} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, initializer_list_t ilist) + { + // insert only works for arrays + if (JSON_UNLIKELY(not is_array())) + { + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + // check if iterator pos fits to this JSON value + if (JSON_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); + } + + // insert to array and return iterator + iterator result(this); + result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, ilist.begin(), ilist.end()); + return result; + } + + /*! + @brief inserts elements + + Inserts elements from range `[first, last)`. + + @param[in] first begin of the range of elements to insert + @param[in] last end of the range of elements to insert + + @throw type_error.309 if called on JSON values other than objects; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if iterator @a first or @a last does does not + point to an object; example: `"iterators first and last must point to + objects"` + @throw invalid_iterator.210 if @a first and @a last do not belong to the + same JSON value; example: `"iterators do not fit"` + + @complexity Logarithmic: `O(N*log(size() + N))`, where `N` is the number + of elements to insert. + + @liveexample{The example shows how `insert()` is used.,insert__range_object} + + @since version 3.0.0 + */ + void insert(const_iterator first, const_iterator last) + { + // insert only works for objects + if (JSON_UNLIKELY(not is_object())) + { + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); + } + + // check if range iterators belong to the same JSON object + if (JSON_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); + } + + // passed iterators must belong to objects + if (JSON_UNLIKELY(not first.m_object->is_object())) + { + JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects")); + } + + m_value.object->insert(first.m_it.object_iterator, last.m_it.object_iterator); + } + + /*! + @brief updates a JSON object from another object, overwriting existing keys + + Inserts all values from JSON object @a j and overwrites existing keys. + + @param[in] j JSON object to read values from + + @throw type_error.312 if called on JSON values other than objects; example: + `"cannot use update() with string"` + + @complexity O(N*log(size() + N)), where N is the number of elements to + insert. + + @liveexample{The example shows how `update()` is used.,update} + + @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update + + @since version 3.0.0 + */ + void update(const_reference j) + { + // implicitly convert null value to an empty object + if (is_null()) + { + m_type = value_t::object; + m_value.object = create(); + assert_invariant(); + } + + if (JSON_UNLIKELY(not is_object())) + { + JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name()))); + } + if (JSON_UNLIKELY(not j.is_object())) + { + JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(j.type_name()))); + } + + for (auto it = j.cbegin(); it != j.cend(); ++it) + { + m_value.object->operator[](it.key()) = it.value(); + } + } + + /*! + @brief updates a JSON object from another object, overwriting existing keys + + Inserts all values from from range `[first, last)` and overwrites existing + keys. + + @param[in] first begin of the range of elements to insert + @param[in] last end of the range of elements to insert + + @throw type_error.312 if called on JSON values other than objects; example: + `"cannot use update() with string"` + @throw invalid_iterator.202 if iterator @a first or @a last does does not + point to an object; example: `"iterators first and last must point to + objects"` + @throw invalid_iterator.210 if @a first and @a last do not belong to the + same JSON value; example: `"iterators do not fit"` + + @complexity O(N*log(size() + N)), where N is the number of elements to + insert. + + @liveexample{The example shows how `update()` is used__range.,update} + + @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update + + @since version 3.0.0 + */ + void update(const_iterator first, const_iterator last) + { + // implicitly convert null value to an empty object + if (is_null()) + { + m_type = value_t::object; + m_value.object = create(); + assert_invariant(); + } + + if (JSON_UNLIKELY(not is_object())) + { + JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name()))); + } + + // check if range iterators belong to the same JSON object + if (JSON_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); + } + + // passed iterators must belong to objects + if (JSON_UNLIKELY(not first.m_object->is_object() + or not first.m_object->is_object())) + { + JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects")); + } + + for (auto it = first; it != last; ++it) + { + m_value.object->operator[](it.key()) = it.value(); + } + } + + /*! + @brief exchanges the values + + Exchanges the contents of the JSON value with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other JSON value to exchange the contents with + + @complexity Constant. + + @liveexample{The example below shows how JSON values can be swapped with + `swap()`.,swap__reference} + + @since version 1.0.0 + */ + void swap(reference other) noexcept ( + std::is_nothrow_move_constructible::value and + std::is_nothrow_move_assignable::value and + std::is_nothrow_move_constructible::value and + std::is_nothrow_move_assignable::value + ) + { + std::swap(m_type, other.m_type); + std::swap(m_value, other.m_value); + assert_invariant(); + } + + /*! + @brief exchanges the values + + Exchanges the contents of a JSON array with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other array to exchange the contents with + + @throw type_error.310 when JSON value is not an array; example: `"cannot + use swap() with string"` + + @complexity Constant. + + @liveexample{The example below shows how arrays can be swapped with + `swap()`.,swap__array_t} + + @since version 1.0.0 + */ + void swap(array_t& other) + { + // swap only works for arrays + if (JSON_LIKELY(is_array())) + { + std::swap(*(m_value.array), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); + } + } + + /*! + @brief exchanges the values + + Exchanges the contents of a JSON object with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other object to exchange the contents with + + @throw type_error.310 when JSON value is not an object; example: + `"cannot use swap() with string"` + + @complexity Constant. + + @liveexample{The example below shows how objects can be swapped with + `swap()`.,swap__object_t} + + @since version 1.0.0 + */ + void swap(object_t& other) + { + // swap only works for objects + if (JSON_LIKELY(is_object())) + { + std::swap(*(m_value.object), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); + } + } + + /*! + @brief exchanges the values + + Exchanges the contents of a JSON string with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other string to exchange the contents with + + @throw type_error.310 when JSON value is not a string; example: `"cannot + use swap() with boolean"` + + @complexity Constant. + + @liveexample{The example below shows how strings can be swapped with + `swap()`.,swap__string_t} + + @since version 1.0.0 + */ + void swap(string_t& other) + { + // swap only works for strings + if (JSON_LIKELY(is_string())) + { + std::swap(*(m_value.string), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); + } + } + + /// @} + + public: + ////////////////////////////////////////// + // lexicographical comparison operators // + ////////////////////////////////////////// + + /// @name lexicographical comparison operators + /// @{ + + /*! + @brief comparison: equal + + Compares two JSON values for equality according to the following rules: + - Two JSON values are equal if (1) they are from the same type and (2) + their stored values are the same according to their respective + `operator==`. + - Integer and floating-point numbers are automatically converted before + comparison. Note than two NaN values are always treated as unequal. + - Two JSON null values are equal. + + @note Floating-point inside JSON values numbers are compared with + `json::number_float_t::operator==` which is `double::operator==` by + default. To compare floating-point while respecting an epsilon, an alternative + [comparison function](https://github.com/mariokonrad/marnav/blob/master/src/marnav/math/floatingpoint.hpp#L34-#L39) + could be used, for instance + @code {.cpp} + template::value, T>::type> + inline bool is_same(T a, T b, T epsilon = std::numeric_limits::epsilon()) noexcept + { + return std::abs(a - b) <= epsilon; + } + @endcode + + @note NaN values never compare equal to themselves or to other NaN values. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether the values @a lhs and @a rhs are equal + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @complexity Linear. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__equal} + + @since version 1.0.0 + */ + friend bool operator==(const_reference lhs, const_reference rhs) noexcept + { + const auto lhs_type = lhs.type(); + const auto rhs_type = rhs.type(); + + if (lhs_type == rhs_type) + { + switch (lhs_type) + { + case value_t::array: + return (*lhs.m_value.array == *rhs.m_value.array); + + case value_t::object: + return (*lhs.m_value.object == *rhs.m_value.object); + + case value_t::null: + return true; + + case value_t::string: + return (*lhs.m_value.string == *rhs.m_value.string); + + case value_t::boolean: + return (lhs.m_value.boolean == rhs.m_value.boolean); + + case value_t::number_integer: + return (lhs.m_value.number_integer == rhs.m_value.number_integer); + + case value_t::number_unsigned: + return (lhs.m_value.number_unsigned == rhs.m_value.number_unsigned); + + case value_t::number_float: + return (lhs.m_value.number_float == rhs.m_value.number_float); + + default: + return false; + } + } + else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float) + { + return (static_cast(lhs.m_value.number_integer) == rhs.m_value.number_float); + } + else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer) + { + return (lhs.m_value.number_float == static_cast(rhs.m_value.number_integer)); + } + else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float) + { + return (static_cast(lhs.m_value.number_unsigned) == rhs.m_value.number_float); + } + else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned) + { + return (lhs.m_value.number_float == static_cast(rhs.m_value.number_unsigned)); + } + else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer) + { + return (static_cast(lhs.m_value.number_unsigned) == rhs.m_value.number_integer); + } + else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned) + { + return (lhs.m_value.number_integer == static_cast(rhs.m_value.number_unsigned)); + } + + return false; + } + + /*! + @brief comparison: equal + @copydoc operator==(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept + { + return (lhs == basic_json(rhs)); + } + + /*! + @brief comparison: equal + @copydoc operator==(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept + { + return (basic_json(lhs) == rhs); + } + + /*! + @brief comparison: not equal + + Compares two JSON values for inequality by calculating `not (lhs == rhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether the values @a lhs and @a rhs are not equal + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__notequal} + + @since version 1.0.0 + */ + friend bool operator!=(const_reference lhs, const_reference rhs) noexcept + { + return not (lhs == rhs); + } + + /*! + @brief comparison: not equal + @copydoc operator!=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept + { + return (lhs != basic_json(rhs)); + } + + /*! + @brief comparison: not equal + @copydoc operator!=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept + { + return (basic_json(lhs) != rhs); + } + + /*! + @brief comparison: less than + + Compares whether one JSON value @a lhs is less than another JSON value @a + rhs according to the following rules: + - If @a lhs and @a rhs have the same type, the values are compared using + the default `<` operator. + - Integer and floating-point numbers are automatically converted before + comparison + - In case @a lhs and @a rhs have different types, the values are ignored + and the order of the types is considered, see + @ref operator<(const value_t, const value_t). + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is less than @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__less} + + @since version 1.0.0 + */ + friend bool operator<(const_reference lhs, const_reference rhs) noexcept + { + const auto lhs_type = lhs.type(); + const auto rhs_type = rhs.type(); + + if (lhs_type == rhs_type) + { + switch (lhs_type) + { + case value_t::array: + return (*lhs.m_value.array) < (*rhs.m_value.array); + + case value_t::object: + return *lhs.m_value.object < *rhs.m_value.object; + + case value_t::null: + return false; + + case value_t::string: + return *lhs.m_value.string < *rhs.m_value.string; + + case value_t::boolean: + return lhs.m_value.boolean < rhs.m_value.boolean; + + case value_t::number_integer: + return lhs.m_value.number_integer < rhs.m_value.number_integer; + + case value_t::number_unsigned: + return lhs.m_value.number_unsigned < rhs.m_value.number_unsigned; + + case value_t::number_float: + return lhs.m_value.number_float < rhs.m_value.number_float; + + default: + return false; + } + } + else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float) + { + return static_cast(lhs.m_value.number_integer) < rhs.m_value.number_float; + } + else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer) + { + return lhs.m_value.number_float < static_cast(rhs.m_value.number_integer); + } + else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float) + { + return static_cast(lhs.m_value.number_unsigned) < rhs.m_value.number_float; + } + else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned) + { + return lhs.m_value.number_float < static_cast(rhs.m_value.number_unsigned); + } + else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned) + { + return lhs.m_value.number_integer < static_cast(rhs.m_value.number_unsigned); + } + else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer) + { + return static_cast(lhs.m_value.number_unsigned) < rhs.m_value.number_integer; + } + + // We only reach this line if we cannot compare values. In that case, + // we compare types. Note we have to call the operator explicitly, + // because MSVC has problems otherwise. + return operator<(lhs_type, rhs_type); + } + + /*! + @brief comparison: less than + @copydoc operator<(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept + { + return (lhs < basic_json(rhs)); + } + + /*! + @brief comparison: less than + @copydoc operator<(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept + { + return (basic_json(lhs) < rhs); + } + + /*! + @brief comparison: less than or equal + + Compares whether one JSON value @a lhs is less than or equal to another + JSON value by calculating `not (rhs < lhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is less than or equal to @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__greater} + + @since version 1.0.0 + */ + friend bool operator<=(const_reference lhs, const_reference rhs) noexcept + { + return not (rhs < lhs); + } + + /*! + @brief comparison: less than or equal + @copydoc operator<=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept + { + return (lhs <= basic_json(rhs)); + } + + /*! + @brief comparison: less than or equal + @copydoc operator<=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept + { + return (basic_json(lhs) <= rhs); + } + + /*! + @brief comparison: greater than + + Compares whether one JSON value @a lhs is greater than another + JSON value by calculating `not (lhs <= rhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is greater than to @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__lessequal} + + @since version 1.0.0 + */ + friend bool operator>(const_reference lhs, const_reference rhs) noexcept + { + return not (lhs <= rhs); + } + + /*! + @brief comparison: greater than + @copydoc operator>(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept + { + return (lhs > basic_json(rhs)); + } + + /*! + @brief comparison: greater than + @copydoc operator>(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept + { + return (basic_json(lhs) > rhs); + } + + /*! + @brief comparison: greater than or equal + + Compares whether one JSON value @a lhs is greater than or equal to another + JSON value by calculating `not (lhs < rhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is greater than or equal to @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__greaterequal} + + @since version 1.0.0 + */ + friend bool operator>=(const_reference lhs, const_reference rhs) noexcept + { + return not (lhs < rhs); + } + + /*! + @brief comparison: greater than or equal + @copydoc operator>=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept + { + return (lhs >= basic_json(rhs)); + } + + /*! + @brief comparison: greater than or equal + @copydoc operator>=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept + { + return (basic_json(lhs) >= rhs); + } + + /// @} + + /////////////////// + // serialization // + /////////////////// + + /// @name serialization + /// @{ + + /*! + @brief serialize to stream + + Serialize the given JSON value @a j to the output stream @a o. The JSON + value will be serialized using the @ref dump member function. + + - The indentation of the output can be controlled with the member variable + `width` of the output stream @a o. For instance, using the manipulator + `std::setw(4)` on @a o sets the indentation level to `4` and the + serialization result is the same as calling `dump(4)`. + + - The indentation character can be controlled with the member variable + `fill` of the output stream @a o. For instance, the manipulator + `std::setfill('\\t')` sets indentation to use a tab character rather than + the default space character. + + @param[in,out] o stream to serialize to + @param[in] j JSON value to serialize + + @return the stream @a o + + @throw type_error.316 if a string stored inside the JSON value is not + UTF-8 encoded + + @complexity Linear. + + @liveexample{The example below shows the serialization with different + parameters to `width` to adjust the indentation level.,operator_serialize} + + @since version 1.0.0; indentation character added in version 3.0.0 + */ + friend std::ostream& operator<<(std::ostream& o, const basic_json& j) + { + // read width member and use it as indentation parameter if nonzero + const bool pretty_print = (o.width() > 0); + const auto indentation = (pretty_print ? o.width() : 0); + + // reset width to 0 for subsequent calls to this stream + o.width(0); + + // do the actual serialization + serializer s(detail::output_adapter(o), o.fill()); + s.dump(j, pretty_print, false, static_cast(indentation)); + return o; + } + + /*! + @brief serialize to stream + @deprecated This stream operator is deprecated and will be removed in a + future version of the library. Please use + @ref operator<<(std::ostream&, const basic_json&) + instead; that is, replace calls like `j >> o;` with `o << j;`. + @since version 1.0.0; deprecated since version 3.0.0 + */ + JSON_DEPRECATED + friend std::ostream& operator>>(const basic_json& j, std::ostream& o) + { + return o << j; + } + + /// @} + + + ///////////////////// + // deserialization // + ///////////////////// + + /// @name deserialization + /// @{ + + /*! + @brief deserialize from a compatible input + + This function reads from a compatible input. Examples are: + - an array of 1-byte values + - strings with character/literal type with size of 1 byte + - input streams + - container with contiguous storage of 1-byte values. Compatible container + types include `std::vector`, `std::string`, `std::array`, + `std::valarray`, and `std::initializer_list`. Furthermore, C-style + arrays can be used with `std::begin()`/`std::end()`. User-defined + containers can be used as long as they implement random-access iterators + and a contiguous storage. + + @pre Each element of the container has a size of 1 byte. Violating this + precondition yields undefined behavior. **This precondition is enforced + with a static assertion.** + + @pre The container storage is contiguous. Violating this precondition + yields undefined behavior. **This precondition is enforced with an + assertion.** + @pre Each element of the container has a size of 1 byte. Violating this + precondition yields undefined behavior. **This precondition is enforced + with a static assertion.** + + @warning There is no way to enforce all preconditions at compile-time. If + the function is called with a noncompliant container and with + assertions switched off, the behavior is undefined and will most + likely yield segmentation violation. + + @param[in] i input to read from + @param[in] cb a parser callback function of type @ref parser_callback_t + which is used to control the deserialization by filtering unwanted values + (optional) + + @return result of the deserialization + + @throw parse_error.101 if a parse error occurs; example: `""unexpected end + of input; expected string literal""` + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. The complexity can be higher if the parser callback function + @a cb has a super-linear complexity. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below demonstrates the `parse()` function reading + from an array.,parse__array__parser_callback_t} + + @liveexample{The example below demonstrates the `parse()` function with + and without callback function.,parse__string__parser_callback_t} + + @liveexample{The example below demonstrates the `parse()` function with + and without callback function.,parse__istream__parser_callback_t} + + @liveexample{The example below demonstrates the `parse()` function reading + from a contiguous container.,parse__contiguouscontainer__parser_callback_t} + + @since version 2.0.3 (contiguous containers) + */ + static basic_json parse(detail::input_adapter i, + const parser_callback_t cb = nullptr, + const bool allow_exceptions = true) + { + basic_json result; + parser(i, cb, allow_exceptions).parse(true, result); + return result; + } + + /*! + @copydoc basic_json parse(detail::input_adapter, const parser_callback_t) + */ + static basic_json parse(detail::input_adapter& i, + const parser_callback_t cb = nullptr, + const bool allow_exceptions = true) + { + basic_json result; + parser(i, cb, allow_exceptions).parse(true, result); + return result; + } + + static bool accept(detail::input_adapter i) + { + return parser(i).accept(true); + } + + static bool accept(detail::input_adapter& i) + { + return parser(i).accept(true); + } + + /*! + @brief deserialize from an iterator range with contiguous storage + + This function reads from an iterator range of a container with contiguous + storage of 1-byte values. Compatible container types include + `std::vector`, `std::string`, `std::array`, `std::valarray`, and + `std::initializer_list`. Furthermore, C-style arrays can be used with + `std::begin()`/`std::end()`. User-defined containers can be used as long + as they implement random-access iterators and a contiguous storage. + + @pre The iterator range is contiguous. Violating this precondition yields + undefined behavior. **This precondition is enforced with an assertion.** + @pre Each element in the range has a size of 1 byte. Violating this + precondition yields undefined behavior. **This precondition is enforced + with a static assertion.** + + @warning There is no way to enforce all preconditions at compile-time. If + the function is called with noncompliant iterators and with + assertions switched off, the behavior is undefined and will most + likely yield segmentation violation. + + @tparam IteratorType iterator of container with contiguous storage + @param[in] first begin of the range to parse (included) + @param[in] last end of the range to parse (excluded) + @param[in] cb a parser callback function of type @ref parser_callback_t + which is used to control the deserialization by filtering unwanted values + (optional) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + + @return result of the deserialization + + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. The complexity can be higher if the parser callback function + @a cb has a super-linear complexity. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below demonstrates the `parse()` function reading + from an iterator range.,parse__iteratortype__parser_callback_t} + + @since version 2.0.3 + */ + template::iterator_category>::value, int>::type = 0> + static basic_json parse(IteratorType first, IteratorType last, + const parser_callback_t cb = nullptr, + const bool allow_exceptions = true) + { + basic_json result; + parser(detail::input_adapter(first, last), cb, allow_exceptions).parse(true, result); + return result; + } + + template::iterator_category>::value, int>::type = 0> + static bool accept(IteratorType first, IteratorType last) + { + return parser(detail::input_adapter(first, last)).accept(true); + } + + /*! + @brief deserialize from stream + @deprecated This stream operator is deprecated and will be removed in a + future version of the library. Please use + @ref operator>>(std::istream&, basic_json&) + instead; that is, replace calls like `j << i;` with `i >> j;`. + @since version 1.0.0; deprecated since version 3.0.0 + */ + JSON_DEPRECATED + friend std::istream& operator<<(basic_json& j, std::istream& i) + { + return operator>>(i, j); + } + + /*! + @brief deserialize from stream + + Deserializes an input stream to a JSON value. + + @param[in,out] i input stream to read a serialized JSON value from + @param[in,out] j JSON value to write the deserialized input to + + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below shows how a JSON value is constructed by + reading a serialization from a stream.,operator_deserialize} + + @sa parse(std::istream&, const parser_callback_t) for a variant with a + parser callback function to filter values while parsing + + @since version 1.0.0 + */ + friend std::istream& operator>>(std::istream& i, basic_json& j) + { + parser(detail::input_adapter(i)).parse(false, j); + return i; + } + + /// @} + + /////////////////////////// + // convenience functions // + /////////////////////////// + + /*! + @brief return the type as string + + Returns the type name as string to be used in error messages - usually to + indicate that a function was called on a wrong JSON type. + + @return a string representation of a the @a m_type member: + Value type | return value + ----------- | ------------- + null | `"null"` + boolean | `"boolean"` + string | `"string"` + number | `"number"` (for all number types) + object | `"object"` + array | `"array"` + discarded | `"discarded"` + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @complexity Constant. + + @liveexample{The following code exemplifies `type_name()` for all JSON + types.,type_name} + + @sa @ref type() -- return the type of the JSON value + @sa @ref operator value_t() -- return the type of the JSON value (implicit) + + @since version 1.0.0, public since 2.1.0, `const char*` and `noexcept` + since 3.0.0 + */ + const char* type_name() const noexcept + { + { + switch (m_type) + { + case value_t::null: + return "null"; + case value_t::object: + return "object"; + case value_t::array: + return "array"; + case value_t::string: + return "string"; + case value_t::boolean: + return "boolean"; + case value_t::discarded: + return "discarded"; + default: + return "number"; + } + } + } + + + private: + ////////////////////// + // member variables // + ////////////////////// + + /// the type of the current element + value_t m_type = value_t::null; + + /// the value of the current element + json_value m_value = {}; + + ////////////////////////////////////////// + // binary serialization/deserialization // + ////////////////////////////////////////// + + /// @name binary serialization/deserialization support + /// @{ + + public: + /*! + @brief create a CBOR serialization of a given JSON value + + Serializes a given JSON value @a j to a byte vector using the CBOR (Concise + Binary Object Representation) serialization format. CBOR is a binary + serialization format which aims to be more compact than JSON itself, yet + more efficient to parse. + + The library uses the following mapping from JSON values types to + CBOR types according to the CBOR specification (RFC 7049): + + JSON value type | value/range | CBOR type | first byte + --------------- | ------------------------------------------ | ---------------------------------- | --------------- + null | `null` | Null | 0xF6 + boolean | `true` | True | 0xF5 + boolean | `false` | False | 0xF4 + number_integer | -9223372036854775808..-2147483649 | Negative integer (8 bytes follow) | 0x3B + number_integer | -2147483648..-32769 | Negative integer (4 bytes follow) | 0x3A + number_integer | -32768..-129 | Negative integer (2 bytes follow) | 0x39 + number_integer | -128..-25 | Negative integer (1 byte follow) | 0x38 + number_integer | -24..-1 | Negative integer | 0x20..0x37 + number_integer | 0..23 | Integer | 0x00..0x17 + number_integer | 24..255 | Unsigned integer (1 byte follow) | 0x18 + number_integer | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 + number_integer | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A + number_integer | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B + number_unsigned | 0..23 | Integer | 0x00..0x17 + number_unsigned | 24..255 | Unsigned integer (1 byte follow) | 0x18 + number_unsigned | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 + number_unsigned | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A + number_unsigned | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B + number_float | *any value* | Double-Precision Float | 0xFB + string | *length*: 0..23 | UTF-8 string | 0x60..0x77 + string | *length*: 23..255 | UTF-8 string (1 byte follow) | 0x78 + string | *length*: 256..65535 | UTF-8 string (2 bytes follow) | 0x79 + string | *length*: 65536..4294967295 | UTF-8 string (4 bytes follow) | 0x7A + string | *length*: 4294967296..18446744073709551615 | UTF-8 string (8 bytes follow) | 0x7B + array | *size*: 0..23 | array | 0x80..0x97 + array | *size*: 23..255 | array (1 byte follow) | 0x98 + array | *size*: 256..65535 | array (2 bytes follow) | 0x99 + array | *size*: 65536..4294967295 | array (4 bytes follow) | 0x9A + array | *size*: 4294967296..18446744073709551615 | array (8 bytes follow) | 0x9B + object | *size*: 0..23 | map | 0xA0..0xB7 + object | *size*: 23..255 | map (1 byte follow) | 0xB8 + object | *size*: 256..65535 | map (2 bytes follow) | 0xB9 + object | *size*: 65536..4294967295 | map (4 bytes follow) | 0xBA + object | *size*: 4294967296..18446744073709551615 | map (8 bytes follow) | 0xBB + + @note The mapping is **complete** in the sense that any JSON value type + can be converted to a CBOR value. + + @note If NaN or Infinity are stored inside a JSON number, they are + serialized properly. This behavior differs from the @ref dump() + function which serializes NaN or Infinity to `null`. + + @note The following CBOR types are not used in the conversion: + - byte strings (0x40..0x5F) + - UTF-8 strings terminated by "break" (0x7F) + - arrays terminated by "break" (0x9F) + - maps terminated by "break" (0xBF) + - date/time (0xC0..0xC1) + - bignum (0xC2..0xC3) + - decimal fraction (0xC4) + - bigfloat (0xC5) + - tagged items (0xC6..0xD4, 0xD8..0xDB) + - expected conversions (0xD5..0xD7) + - simple values (0xE0..0xF3, 0xF8) + - undefined (0xF7) + - half and single-precision floats (0xF9-0xFA) + - break (0xFF) + + @param[in] j JSON value to serialize + @return MessagePack serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in CBOR format.,to_cbor} + + @sa http://cbor.io + @sa @ref from_cbor(const std::vector&, const size_t) for the + analogous deserialization + @sa @ref to_msgpack(const basic_json&) for the related MessagePack format + + @since version 2.0.9 + */ + static std::vector to_cbor(const basic_json& j) + { + std::vector result; + to_cbor(j, result); + return result; + } + + static void to_cbor(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_cbor(j); + } + + static void to_cbor(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_cbor(j); + } + + /*! + @brief create a MessagePack serialization of a given JSON value + + Serializes a given JSON value @a j to a byte vector using the MessagePack + serialization format. MessagePack is a binary serialization format which + aims to be more compact than JSON itself, yet more efficient to parse. + + The library uses the following mapping from JSON values types to + MessagePack types according to the MessagePack specification: + + JSON value type | value/range | MessagePack type | first byte + --------------- | --------------------------------- | ---------------- | ---------- + null | `null` | nil | 0xC0 + boolean | `true` | true | 0xC3 + boolean | `false` | false | 0xC2 + number_integer | -9223372036854775808..-2147483649 | int64 | 0xD3 + number_integer | -2147483648..-32769 | int32 | 0xD2 + number_integer | -32768..-129 | int16 | 0xD1 + number_integer | -128..-33 | int8 | 0xD0 + number_integer | -32..-1 | negative fixint | 0xE0..0xFF + number_integer | 0..127 | positive fixint | 0x00..0x7F + number_integer | 128..255 | uint 8 | 0xCC + number_integer | 256..65535 | uint 16 | 0xCD + number_integer | 65536..4294967295 | uint 32 | 0xCE + number_integer | 4294967296..18446744073709551615 | uint 64 | 0xCF + number_unsigned | 0..127 | positive fixint | 0x00..0x7F + number_unsigned | 128..255 | uint 8 | 0xCC + number_unsigned | 256..65535 | uint 16 | 0xCD + number_unsigned | 65536..4294967295 | uint 32 | 0xCE + number_unsigned | 4294967296..18446744073709551615 | uint 64 | 0xCF + number_float | *any value* | float 64 | 0xCB + string | *length*: 0..31 | fixstr | 0xA0..0xBF + string | *length*: 32..255 | str 8 | 0xD9 + string | *length*: 256..65535 | str 16 | 0xDA + string | *length*: 65536..4294967295 | str 32 | 0xDB + array | *size*: 0..15 | fixarray | 0x90..0x9F + array | *size*: 16..65535 | array 16 | 0xDC + array | *size*: 65536..4294967295 | array 32 | 0xDD + object | *size*: 0..15 | fix map | 0x80..0x8F + object | *size*: 16..65535 | map 16 | 0xDE + object | *size*: 65536..4294967295 | map 32 | 0xDF + + @note The mapping is **complete** in the sense that any JSON value type + can be converted to a MessagePack value. + + @note The following values can **not** be converted to a MessagePack value: + - strings with more than 4294967295 bytes + - arrays with more than 4294967295 elements + - objects with more than 4294967295 elements + + @note The following MessagePack types are not used in the conversion: + - bin 8 - bin 32 (0xC4..0xC6) + - ext 8 - ext 32 (0xC7..0xC9) + - float 32 (0xCA) + - fixext 1 - fixext 16 (0xD4..0xD8) + + @note Any MessagePack output created @ref to_msgpack can be successfully + parsed by @ref from_msgpack. + + @note If NaN or Infinity are stored inside a JSON number, they are + serialized properly. This behavior differs from the @ref dump() + function which serializes NaN or Infinity to `null`. + + @param[in] j JSON value to serialize + @return MessagePack serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in MessagePack format.,to_msgpack} + + @sa http://msgpack.org + @sa @ref from_msgpack(const std::vector&, const size_t) for the + analogous deserialization + @sa @ref to_cbor(const basic_json& for the related CBOR format + + @since version 2.0.9 + */ + static std::vector to_msgpack(const basic_json& j) + { + std::vector result; + to_msgpack(j, result); + return result; + } + + static void to_msgpack(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_msgpack(j); + } + + static void to_msgpack(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_msgpack(j); + } + + /*! + @brief create a JSON value from an input in CBOR format + + Deserializes a given input @a i to a JSON value using the CBOR (Concise + Binary Object Representation) serialization format. + + The library maps CBOR types to JSON value types as follows: + + CBOR type | JSON value type | first byte + ---------------------- | --------------- | ---------- + Integer | number_unsigned | 0x00..0x17 + Unsigned integer | number_unsigned | 0x18 + Unsigned integer | number_unsigned | 0x19 + Unsigned integer | number_unsigned | 0x1A + Unsigned integer | number_unsigned | 0x1B + Negative integer | number_integer | 0x20..0x37 + Negative integer | number_integer | 0x38 + Negative integer | number_integer | 0x39 + Negative integer | number_integer | 0x3A + Negative integer | number_integer | 0x3B + Negative integer | number_integer | 0x40..0x57 + UTF-8 string | string | 0x60..0x77 + UTF-8 string | string | 0x78 + UTF-8 string | string | 0x79 + UTF-8 string | string | 0x7A + UTF-8 string | string | 0x7B + UTF-8 string | string | 0x7F + array | array | 0x80..0x97 + array | array | 0x98 + array | array | 0x99 + array | array | 0x9A + array | array | 0x9B + array | array | 0x9F + map | object | 0xA0..0xB7 + map | object | 0xB8 + map | object | 0xB9 + map | object | 0xBA + map | object | 0xBB + map | object | 0xBF + False | `false` | 0xF4 + True | `true` | 0xF5 + Nill | `null` | 0xF6 + Half-Precision Float | number_float | 0xF9 + Single-Precision Float | number_float | 0xFA + Double-Precision Float | number_float | 0xFB + + @warning The mapping is **incomplete** in the sense that not all CBOR + types can be converted to a JSON value. The following CBOR types + are not supported and will yield parse errors (parse_error.112): + - byte strings (0x40..0x5F) + - date/time (0xC0..0xC1) + - bignum (0xC2..0xC3) + - decimal fraction (0xC4) + - bigfloat (0xC5) + - tagged items (0xC6..0xD4, 0xD8..0xDB) + - expected conversions (0xD5..0xD7) + - simple values (0xE0..0xF3, 0xF8) + - undefined (0xF7) + + @warning CBOR allows map keys of any type, whereas JSON only allows + strings as keys in object values. Therefore, CBOR maps with keys + other than UTF-8 strings are rejected (parse_error.113). + + @note Any CBOR output created @ref to_cbor can be successfully parsed by + @ref from_cbor. + + @param[in] i an input in CBOR format convertible to an input adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + @return deserialized JSON value + + @throw parse_error.110 if the given input ends prematurely or the end of + file was not reached when @a strict was set to true + @throw parse_error.112 if unsupported features from CBOR were + used in the given input @a v or if the input is not valid CBOR + @throw parse_error.113 if a string was expected as map key, but not found + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in CBOR + format to a JSON value.,from_cbor} + + @sa http://cbor.io + @sa @ref to_cbor(const basic_json&) for the analogous serialization + @sa @ref from_msgpack(detail::input_adapter, const bool) for the + related MessagePack format + + @since version 2.0.9; parameter @a start_index since 2.1.1; changed to + consume input adapters, removed start_index parameter, and added + @a strict parameter since 3.0.0 + */ + static basic_json from_cbor(detail::input_adapter i, + const bool strict = true) + { + return binary_reader(i).parse_cbor(strict); + } + + /*! + @copydoc from_cbor(detail::input_adapter, const bool) + */ + template::value, int> = 0> + static basic_json from_cbor(A1 && a1, A2 && a2, const bool strict = true) + { + return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_cbor(strict); + } + + /*! + @brief create a JSON value from an input in MessagePack format + + Deserializes a given input @a i to a JSON value using the MessagePack + serialization format. + + The library maps MessagePack types to JSON value types as follows: + + MessagePack type | JSON value type | first byte + ---------------- | --------------- | ---------- + positive fixint | number_unsigned | 0x00..0x7F + fixmap | object | 0x80..0x8F + fixarray | array | 0x90..0x9F + fixstr | string | 0xA0..0xBF + nil | `null` | 0xC0 + false | `false` | 0xC2 + true | `true` | 0xC3 + float 32 | number_float | 0xCA + float 64 | number_float | 0xCB + uint 8 | number_unsigned | 0xCC + uint 16 | number_unsigned | 0xCD + uint 32 | number_unsigned | 0xCE + uint 64 | number_unsigned | 0xCF + int 8 | number_integer | 0xD0 + int 16 | number_integer | 0xD1 + int 32 | number_integer | 0xD2 + int 64 | number_integer | 0xD3 + str 8 | string | 0xD9 + str 16 | string | 0xDA + str 32 | string | 0xDB + array 16 | array | 0xDC + array 32 | array | 0xDD + map 16 | object | 0xDE + map 32 | object | 0xDF + negative fixint | number_integer | 0xE0-0xFF + + @warning The mapping is **incomplete** in the sense that not all + MessagePack types can be converted to a JSON value. The following + MessagePack types are not supported and will yield parse errors: + - bin 8 - bin 32 (0xC4..0xC6) + - ext 8 - ext 32 (0xC7..0xC9) + - fixext 1 - fixext 16 (0xD4..0xD8) + + @note Any MessagePack output created @ref to_msgpack can be successfully + parsed by @ref from_msgpack. + + @param[in] i an input in MessagePack format convertible to an input + adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + + @throw parse_error.110 if the given input ends prematurely or the end of + file was not reached when @a strict was set to true + @throw parse_error.112 if unsupported features from MessagePack were + used in the given input @a i or if the input is not valid MessagePack + @throw parse_error.113 if a string was expected as map key, but not found + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in + MessagePack format to a JSON value.,from_msgpack} + + @sa http://msgpack.org + @sa @ref to_msgpack(const basic_json&) for the analogous serialization + @sa @ref from_cbor(detail::input_adapter, const bool) for the related CBOR + format + + @since version 2.0.9; parameter @a start_index since 2.1.1; changed to + consume input adapters, removed start_index parameter, and added + @a strict parameter since 3.0.0 + */ + static basic_json from_msgpack(detail::input_adapter i, + const bool strict = true) + { + return binary_reader(i).parse_msgpack(strict); + } + + /*! + @copydoc from_msgpack(detail::input_adapter, const bool) + */ + template::value, int> = 0> + static basic_json from_msgpack(A1 && a1, A2 && a2, const bool strict = true) + { + return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_msgpack(strict); + } + + /// @} + + ////////////////////////// + // JSON Pointer support // + ////////////////////////// + + /// @name JSON Pointer functions + /// @{ + + /*! + @brief access specified element via JSON Pointer + + Uses a JSON pointer to retrieve a reference to the respective JSON value. + No bound checking is performed. Similar to @ref operator[](const typename + object_t::key_type&), `null` values are created in arrays and objects if + necessary. + + In particular: + - If the JSON pointer points to an object key that does not exist, it + is created an filled with a `null` value before a reference to it + is returned. + - If the JSON pointer points to an array index that does not exist, it + is created an filled with a `null` value before a reference to it + is returned. All indices between the current maximum and the given + index are also filled with `null`. + - The special value `-` is treated as a synonym for the index past the + end. + + @param[in] ptr a JSON pointer + + @return reference to the element pointed to by @a ptr + + @complexity Constant. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved + + @liveexample{The behavior is shown in the example.,operatorjson_pointer} + + @since version 2.0.0 + */ + reference operator[](const json_pointer& ptr) + { + return ptr.get_unchecked(this); + } + + /*! + @brief access specified element via JSON Pointer + + Uses a JSON pointer to retrieve a reference to the respective JSON value. + No bound checking is performed. The function does not change the JSON + value; no `null` values are created. In particular, the the special value + `-` yields an exception. + + @param[in] ptr JSON pointer to the desired element + + @return const reference to the element pointed to by @a ptr + + @complexity Constant. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + + @liveexample{The behavior is shown in the example.,operatorjson_pointer_const} + + @since version 2.0.0 + */ + const_reference operator[](const json_pointer& ptr) const + { + return ptr.get_unchecked(this); + } + + /*! + @brief access specified element via JSON Pointer + + Returns a reference to the element at with specified JSON pointer @a ptr, + with bounds checking. + + @param[in] ptr JSON pointer to the desired element + + @return reference to the element pointed to by @a ptr + + @throw parse_error.106 if an array index in the passed JSON pointer @a ptr + begins with '0'. See example below. + + @throw parse_error.109 if an array index in the passed JSON pointer @a ptr + is not a number. See example below. + + @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr + is out of range. See example below. + + @throw out_of_range.402 if the array index '-' is used in the passed JSON + pointer @a ptr. As `at` provides checked access (and no elements are + implicitly inserted), the index '-' is always invalid. See example below. + + @throw out_of_range.403 if the JSON pointer describes a key of an object + which cannot be found. See example below. + + @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved. + See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 2.0.0 + + @liveexample{The behavior is shown in the example.,at_json_pointer} + */ + reference at(const json_pointer& ptr) + { + return ptr.get_checked(this); + } + + /*! + @brief access specified element via JSON Pointer + + Returns a const reference to the element at with specified JSON pointer @a + ptr, with bounds checking. + + @param[in] ptr JSON pointer to the desired element + + @return reference to the element pointed to by @a ptr + + @throw parse_error.106 if an array index in the passed JSON pointer @a ptr + begins with '0'. See example below. + + @throw parse_error.109 if an array index in the passed JSON pointer @a ptr + is not a number. See example below. + + @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr + is out of range. See example below. + + @throw out_of_range.402 if the array index '-' is used in the passed JSON + pointer @a ptr. As `at` provides checked access (and no elements are + implicitly inserted), the index '-' is always invalid. See example below. + + @throw out_of_range.403 if the JSON pointer describes a key of an object + which cannot be found. See example below. + + @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved. + See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 2.0.0 + + @liveexample{The behavior is shown in the example.,at_json_pointer_const} + */ + const_reference at(const json_pointer& ptr) const + { + return ptr.get_checked(this); + } + + /*! + @brief return flattened JSON value + + The function creates a JSON object whose keys are JSON pointers (see [RFC + 6901](https://tools.ietf.org/html/rfc6901)) and whose values are all + primitive. The original JSON value can be restored using the @ref + unflatten() function. + + @return an object that maps JSON pointers to primitive values + + @note Empty objects and arrays are flattened to `null` and will not be + reconstructed correctly by the @ref unflatten() function. + + @complexity Linear in the size the JSON value. + + @liveexample{The following code shows how a JSON object is flattened to an + object whose keys consist of JSON pointers.,flatten} + + @sa @ref unflatten() for the reverse function + + @since version 2.0.0 + */ + basic_json flatten() const + { + basic_json result(value_t::object); + json_pointer::flatten("", *this, result); + return result; + } + + /*! + @brief unflatten a previously flattened JSON value + + The function restores the arbitrary nesting of a JSON value that has been + flattened before using the @ref flatten() function. The JSON value must + meet certain constraints: + 1. The value must be an object. + 2. The keys must be JSON pointers (see + [RFC 6901](https://tools.ietf.org/html/rfc6901)) + 3. The mapped values must be primitive JSON types. + + @return the original JSON from a flattened version + + @note Empty objects and arrays are flattened by @ref flatten() to `null` + values and can not unflattened to their original type. Apart from + this example, for a JSON value `j`, the following is always true: + `j == j.flatten().unflatten()`. + + @complexity Linear in the size the JSON value. + + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitive + + @liveexample{The following code shows how a flattened JSON object is + unflattened into the original nested JSON object.,unflatten} + + @sa @ref flatten() for the reverse function + + @since version 2.0.0 + */ + basic_json unflatten() const + { + return json_pointer::unflatten(*this); + } + + /// @} + + ////////////////////////// + // JSON Patch functions // + ////////////////////////// + + /// @name JSON Patch functions + /// @{ + + /*! + @brief applies a JSON patch + + [JSON Patch](http://jsonpatch.com) defines a JSON document structure for + expressing a sequence of operations to apply to a JSON) document. With + this function, a JSON Patch is applied to the current JSON value by + executing all operations from the patch. + + @param[in] json_patch JSON patch document + @return patched document + + @note The application of a patch is atomic: Either all operations succeed + and the patched document is returned or an exception is thrown. In + any case, the original value is not changed: the patch is applied + to a copy of the value. + + @throw parse_error.104 if the JSON patch does not consist of an array of + objects + + @throw parse_error.105 if the JSON patch is malformed (e.g., mandatory + attributes are missing); example: `"operation add must have member path"` + + @throw out_of_range.401 if an array index is out of range. + + @throw out_of_range.403 if a JSON pointer inside the patch could not be + resolved successfully in the current JSON value; example: `"key baz not + found"` + + @throw out_of_range.405 if JSON pointer has no parent ("add", "remove", + "move") + + @throw other_error.501 if "test" operation was unsuccessful + + @complexity Linear in the size of the JSON value and the length of the + JSON patch. As usually only a fraction of the JSON value is affected by + the patch, the complexity can usually be neglected. + + @liveexample{The following code shows how a JSON patch is applied to a + value.,patch} + + @sa @ref diff -- create a JSON patch by comparing two JSON values + + @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) + @sa [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901) + + @since version 2.0.0 + */ + basic_json patch(const basic_json& json_patch) const + { + // make a working copy to apply the patch to + basic_json result = *this; + + // the valid JSON Patch operations + enum class patch_operations {add, remove, replace, move, copy, test, invalid}; + + const auto get_op = [](const std::string & op) + { + if (op == "add") + { + return patch_operations::add; + } + if (op == "remove") + { + return patch_operations::remove; + } + if (op == "replace") + { + return patch_operations::replace; + } + if (op == "move") + { + return patch_operations::move; + } + if (op == "copy") + { + return patch_operations::copy; + } + if (op == "test") + { + return patch_operations::test; + } + + return patch_operations::invalid; + }; + + // wrapper for "add" operation; add value at ptr + const auto operation_add = [&result](json_pointer & ptr, basic_json val) + { + // adding to the root of the target document means replacing it + if (ptr.is_root()) + { + result = val; + } + else + { + // make sure the top element of the pointer exists + json_pointer top_pointer = ptr.top(); + if (top_pointer != ptr) + { + result.at(top_pointer); + } + + // get reference to parent of JSON pointer ptr + const auto last_path = ptr.pop_back(); + basic_json& parent = result[ptr]; + + switch (parent.m_type) + { + case value_t::null: + case value_t::object: + { + // use operator[] to add value + parent[last_path] = val; + break; + } + + case value_t::array: + { + if (last_path == "-") + { + // special case: append to back + parent.push_back(val); + } + else + { + const auto idx = json_pointer::array_index(last_path); + if (JSON_UNLIKELY(static_cast(idx) > parent.size())) + { + // avoid undefined behavior + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); + } + else + { + // default case: insert add offset + parent.insert(parent.begin() + static_cast(idx), val); + } + } + break; + } + + default: + { + // if there exists a parent it cannot be primitive + assert(false); // LCOV_EXCL_LINE + } + } + } + }; + + // wrapper for "remove" operation; remove value at ptr + const auto operation_remove = [&result](json_pointer & ptr) + { + // get reference to parent of JSON pointer ptr + const auto last_path = ptr.pop_back(); + basic_json& parent = result.at(ptr); + + // remove child + if (parent.is_object()) + { + // perform range check + auto it = parent.find(last_path); + if (JSON_LIKELY(it != parent.end())) + { + parent.erase(it); + } + else + { + JSON_THROW(out_of_range::create(403, "key '" + last_path + "' not found")); + } + } + else if (parent.is_array()) + { + // note erase performs range check + parent.erase(static_cast(json_pointer::array_index(last_path))); + } + }; + + // type check: top level value must be an array + if (JSON_UNLIKELY(not json_patch.is_array())) + { + JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects")); + } + + // iterate and apply the operations + for (const auto& val : json_patch) + { + // wrapper to get a value for an operation + const auto get_value = [&val](const std::string & op, + const std::string & member, + bool string_type) -> basic_json& + { + // find value + auto it = val.m_value.object->find(member); + + // context-sensitive error message + const auto error_msg = (op == "op") ? "operation" : "operation '" + op + "'"; + + // check if desired value is present + if (JSON_UNLIKELY(it == val.m_value.object->end())) + { + JSON_THROW(parse_error::create(105, 0, error_msg + " must have member '" + member + "'")); + } + + // check if result is of type string + if (JSON_UNLIKELY(string_type and not it->second.is_string())) + { + JSON_THROW(parse_error::create(105, 0, error_msg + " must have string member '" + member + "'")); + } + + // no error: return value + return it->second; + }; + + // type check: every element of the array must be an object + if (JSON_UNLIKELY(not val.is_object())) + { + JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects")); + } + + // collect mandatory members + const std::string op = get_value("op", "op", true); + const std::string path = get_value(op, "path", true); + json_pointer ptr(path); + + switch (get_op(op)) + { + case patch_operations::add: + { + operation_add(ptr, get_value("add", "value", false)); + break; + } + + case patch_operations::remove: + { + operation_remove(ptr); + break; + } + + case patch_operations::replace: + { + // the "path" location must exist - use at() + result.at(ptr) = get_value("replace", "value", false); + break; + } + + case patch_operations::move: + { + const std::string from_path = get_value("move", "from", true); + json_pointer from_ptr(from_path); + + // the "from" location must exist - use at() + basic_json v = result.at(from_ptr); + + // The move operation is functionally identical to a + // "remove" operation on the "from" location, followed + // immediately by an "add" operation at the target + // location with the value that was just removed. + operation_remove(from_ptr); + operation_add(ptr, v); + break; + } + + case patch_operations::copy: + { + const std::string from_path = get_value("copy", "from", true); + const json_pointer from_ptr(from_path); + + // the "from" location must exist - use at() + basic_json v = result.at(from_ptr); + + // The copy is functionally identical to an "add" + // operation at the target location using the value + // specified in the "from" member. + operation_add(ptr, v); + break; + } + + case patch_operations::test: + { + bool success = false; + JSON_TRY + { + // check if "value" matches the one at "path" + // the "path" location must exist - use at() + success = (result.at(ptr) == get_value("test", "value", false)); + } + JSON_CATCH (out_of_range&) + { + // ignore out of range errors: success remains false + } + + // throw an exception if test fails + if (JSON_UNLIKELY(not success)) + { + JSON_THROW(other_error::create(501, "unsuccessful: " + val.dump())); + } + + break; + } + + case patch_operations::invalid: + { + // op must be "add", "remove", "replace", "move", "copy", or + // "test" + JSON_THROW(parse_error::create(105, 0, "operation value '" + op + "' is invalid")); + } + } + } + + return result; + } + + /*! + @brief creates a diff as a JSON patch + + Creates a [JSON Patch](http://jsonpatch.com) so that value @a source can + be changed into the value @a target by calling @ref patch function. + + @invariant For two JSON values @a source and @a target, the following code + yields always `true`: + @code {.cpp} + source.patch(diff(source, target)) == target; + @endcode + + @note Currently, only `remove`, `add`, and `replace` operations are + generated. + + @param[in] source JSON value to compare from + @param[in] target JSON value to compare against + @param[in] path helper value to create JSON pointers + + @return a JSON patch to convert the @a source to @a target + + @complexity Linear in the lengths of @a source and @a target. + + @liveexample{The following code shows how a JSON patch is created as a + diff for two JSON values.,diff} + + @sa @ref patch -- apply a JSON patch + + @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) + + @since version 2.0.0 + */ + static basic_json diff(const basic_json& source, const basic_json& target, + const std::string& path = "") + { + // the patch + basic_json result(value_t::array); + + // if the values are the same, return empty patch + if (source == target) + { + return result; + } + + if (source.type() != target.type()) + { + // different types: replace value + result.push_back( + { + {"op", "replace"}, {"path", path}, {"value", target} + }); + } + else + { + switch (source.type()) + { + case value_t::array: + { + // first pass: traverse common elements + std::size_t i = 0; + while (i < source.size() and i < target.size()) + { + // recursive call to compare array values at index i + auto temp_diff = diff(source[i], target[i], path + "/" + std::to_string(i)); + result.insert(result.end(), temp_diff.begin(), temp_diff.end()); + ++i; + } + + // i now reached the end of at least one array + // in a second pass, traverse the remaining elements + + // remove my remaining elements + const auto end_index = static_cast(result.size()); + while (i < source.size()) + { + // add operations in reverse order to avoid invalid + // indices + result.insert(result.begin() + end_index, object( + { + {"op", "remove"}, + {"path", path + "/" + std::to_string(i)} + })); + ++i; + } + + // add other remaining elements + while (i < target.size()) + { + result.push_back( + { + {"op", "add"}, + {"path", path + "/" + std::to_string(i)}, + {"value", target[i]} + }); + ++i; + } + + break; + } + + case value_t::object: + { + // first pass: traverse this object's elements + for (auto it = source.cbegin(); it != source.cend(); ++it) + { + // escape the key name to be used in a JSON patch + const auto key = json_pointer::escape(it.key()); + + if (target.find(it.key()) != target.end()) + { + // recursive call to compare object values at key it + auto temp_diff = diff(it.value(), target[it.key()], path + "/" + key); + result.insert(result.end(), temp_diff.begin(), temp_diff.end()); + } + else + { + // found a key that is not in o -> remove it + result.push_back(object( + { + {"op", "remove"}, {"path", path + "/" + key} + })); + } + } + + // second pass: traverse other object's elements + for (auto it = target.cbegin(); it != target.cend(); ++it) + { + if (source.find(it.key()) == source.end()) + { + // found a key that is not in this -> add it + const auto key = json_pointer::escape(it.key()); + result.push_back( + { + {"op", "add"}, {"path", path + "/" + key}, + {"value", it.value()} + }); + } + } + + break; + } + + default: + { + // both primitive type: replace value + result.push_back( + { + {"op", "replace"}, {"path", path}, {"value", target} + }); + break; + } + } + } + + return result; + } + + /// @} +}; + +////////////////// +// json_pointer // +////////////////// + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +NLOHMANN_BASIC_JSON_TPL& +json_pointer::get_and_create(NLOHMANN_BASIC_JSON_TPL& j) const +{ + using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; + auto result = &j; + + // in case no reference tokens exist, return a reference to the JSON value + // j which will be overwritten by a primitive value + for (const auto& reference_token : reference_tokens) + { + switch (result->m_type) + { + case detail::value_t::null: + { + if (reference_token == "0") + { + // start a new array if reference token is 0 + result = &result->operator[](0); + } + else + { + // start a new object otherwise + result = &result->operator[](reference_token); + } + break; + } + + case detail::value_t::object: + { + // create an entry in the object + result = &result->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + // create an entry in the array + JSON_TRY + { + result = &result->operator[](static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + /* + The following code is only reached if there exists a reference + token _and_ the current value is primitive. In this case, we have + an error situation, because primitive values may only occur as + single value; that is, with an empty list of reference tokens. + */ + default: + JSON_THROW(detail::type_error::create(313, "invalid value to unflatten")); + } + } + + return *result; +} + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +NLOHMANN_BASIC_JSON_TPL& +json_pointer::get_unchecked(NLOHMANN_BASIC_JSON_TPL* ptr) const +{ + using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; + for (const auto& reference_token : reference_tokens) + { + // convert null values to arrays or objects before continuing + if (ptr->m_type == detail::value_t::null) + { + // check if reference token is a number + const bool nums = + std::all_of(reference_token.begin(), reference_token.end(), + [](const char x) + { + return (x >= '0' and x <= '9'); + }); + + // change value to array for numbers or "-" or to object otherwise + *ptr = (nums or reference_token == "-") + ? detail::value_t::array + : detail::value_t::object; + } + + switch (ptr->m_type) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + if (reference_token == "-") + { + // explicitly treat "-" as index beyond the end + ptr = &ptr->operator[](ptr->m_value.array->size()); + } + else + { + // convert array index to number; unchecked access + JSON_TRY + { + ptr = &ptr->operator[]( + static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; +} + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +NLOHMANN_BASIC_JSON_TPL& +json_pointer::get_checked(NLOHMANN_BASIC_JSON_TPL* ptr) const +{ + using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // note: at performs range check + JSON_TRY + { + ptr = &ptr->at(static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; +} + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +const NLOHMANN_BASIC_JSON_TPL& +json_pointer::get_unchecked(const NLOHMANN_BASIC_JSON_TPL* ptr) const +{ + using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" cannot be used for const access + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // use unchecked array access + JSON_TRY + { + ptr = &ptr->operator[]( + static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; +} + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +const NLOHMANN_BASIC_JSON_TPL& +json_pointer::get_checked(const NLOHMANN_BASIC_JSON_TPL* ptr) const +{ + using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // note: at performs range check + JSON_TRY + { + ptr = &ptr->at(static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; +} + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +void json_pointer::flatten(const std::string& reference_string, + const NLOHMANN_BASIC_JSON_TPL& value, + NLOHMANN_BASIC_JSON_TPL& result) +{ + switch (value.m_type) + { + case detail::value_t::array: + { + if (value.m_value.array->empty()) + { + // flatten empty array as null + result[reference_string] = nullptr; + } + else + { + // iterate array and use index as reference string + for (std::size_t i = 0; i < value.m_value.array->size(); ++i) + { + flatten(reference_string + "/" + std::to_string(i), + value.m_value.array->operator[](i), result); + } + } + break; + } + + case detail::value_t::object: + { + if (value.m_value.object->empty()) + { + // flatten empty object as null + result[reference_string] = nullptr; + } + else + { + // iterate object and use keys as reference string + for (const auto& element : *value.m_value.object) + { + flatten(reference_string + "/" + escape(element.first), element.second, result); + } + } + break; + } + + default: + { + // add primitive value with its reference string + result[reference_string] = value; + break; + } + } +} + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +NLOHMANN_BASIC_JSON_TPL +json_pointer::unflatten(const NLOHMANN_BASIC_JSON_TPL& value) +{ + if (JSON_UNLIKELY(not value.is_object())) + { + JSON_THROW(detail::type_error::create(314, "only objects can be unflattened")); + } + + NLOHMANN_BASIC_JSON_TPL result; + + // iterate the JSON object values + for (const auto& element : *value.m_value.object) + { + if (JSON_UNLIKELY(not element.second.is_primitive())) + { + JSON_THROW(detail::type_error::create(315, "values in object must be primitive")); + } + + // assign value to reference pointed to by JSON pointer; Note that if + // the JSON pointer is "" (i.e., points to the whole value), function + // get_and_create returns a reference to result itself. An assignment + // will then create a primitive value. + json_pointer(element.first).get_and_create(result) = element.second; + } + + return result; +} + +inline bool operator==(json_pointer const& lhs, json_pointer const& rhs) noexcept +{ + return (lhs.reference_tokens == rhs.reference_tokens); +} + +inline bool operator!=(json_pointer const& lhs, json_pointer const& rhs) noexcept +{ + return not (lhs == rhs); +} +} // namespace nlohmann + +/////////////////////// +// nonmember support // +/////////////////////// + +// specialization of std::swap, and std::hash +namespace std +{ +/*! +@brief exchanges the values of two JSON objects + +@since version 1.0.0 +*/ +template<> +inline void swap(nlohmann::json& j1, + nlohmann::json& j2) noexcept( + is_nothrow_move_constructible::value and + is_nothrow_move_assignable::value + ) +{ + j1.swap(j2); +} + +/// hash value for JSON objects +template<> +struct hash +{ + /*! + @brief return a hash value for a JSON object + + @since version 1.0.0 + */ + std::size_t operator()(const nlohmann::json& j) const + { + // a naive hashing via the string representation + const auto& h = hash(); + return h(j.dump()); + } +}; + +/// specialization for std::less +/// @note: do not remove the space after '<', +/// see https://github.com/nlohmann/json/pull/679 +template<> +struct less< ::nlohmann::detail::value_t> +{ + /*! + @brief compare two value_t enum values + @since version 3.0.0 + */ + bool operator()(nlohmann::detail::value_t lhs, + nlohmann::detail::value_t rhs) const noexcept + { + return nlohmann::detail::operator<(lhs, rhs); + } +}; + +} // namespace std + +/*! +@brief user-defined string literal for JSON values + +This operator implements a user-defined string literal for JSON objects. It +can be used by adding `"_json"` to a string literal and returns a JSON object +if no parse error occurred. + +@param[in] s a string representation of a JSON object +@param[in] n the length of string @a s +@return a JSON object + +@since version 1.0.0 +*/ +inline nlohmann::json operator "" _json(const char* s, std::size_t n) +{ + return nlohmann::json::parse(s, s + n); +} + +/*! +@brief user-defined string literal for JSON pointer + +This operator implements a user-defined string literal for JSON Pointers. It +can be used by adding `"_json_pointer"` to a string literal and returns a JSON pointer +object if no parse error occurred. + +@param[in] s a string representation of a JSON Pointer +@param[in] n the length of string @a s +@return a JSON pointer object + +@since version 2.0.0 +*/ +inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n) +{ + return nlohmann::json::json_pointer(std::string(s, n)); +} + +#include "detail/macro_unscope.hpp" + +#endif diff --git a/src/json_fwd.hpp b/develop/json_fwd.hpp similarity index 100% rename from src/json_fwd.hpp rename to develop/json_fwd.hpp diff --git a/single_header/json.hpp b/single_header/json.hpp deleted file mode 100644 index e6fe5fc1..00000000 --- a/single_header/json.hpp +++ /dev/null @@ -1,19067 +0,0 @@ -/* - __ _____ _____ _____ - __| | __| | | | JSON for Modern C++ -| | |__ | | | | | | version 3.0.0 -|_____|_____|_____|_|___| https://github.com/nlohmann/json - -Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -#ifndef NLOHMANN_JSON_HPP -#define NLOHMANN_JSON_HPP - -#include // all_of, find, for_each -#include // assert -#include // and, not, or -#include // nullptr_t, ptrdiff_t, size_t -#include // hash, less -#include // initializer_list -#include // istream, ostream -#include // iterator_traits, random_access_iterator_tag -#include // accumulate -#include // string, stoi, to_string -#include // declval, forward, move, pair, swap - - -/*** Start of inlined file: json_fwd.hpp ***/ -#ifndef NLOHMANN_JSON_FWD_HPP -#define NLOHMANN_JSON_FWD_HPP - -#include // int64_t, uint64_t -#include // map -#include // allocator -#include // string -#include // vector - -/*! -@brief namespace for Niels Lohmann -@see https://github.com/nlohmann -@since version 1.0.0 -*/ -namespace nlohmann -{ -/*! -@brief default JSONSerializer template argument - -This serializer ignores the template arguments and uses ADL -([argument-dependent lookup](http://en.cppreference.com/w/cpp/language/adl)) -for serialization. -*/ -template -struct adl_serializer; - -template class ObjectType = - std::map, - template class ArrayType = std::vector, - class StringType = std::string, class BooleanType = bool, - class NumberIntegerType = std::int64_t, - class NumberUnsignedType = std::uint64_t, - class NumberFloatType = double, - template class AllocatorType = std::allocator, - template class JSONSerializer = - adl_serializer> -class basic_json; - -/*! -@brief JSON Pointer - -A JSON pointer defines a string syntax for identifying a specific value -within a JSON document. It can be used with functions `at` and -`operator[]`. Furthermore, JSON pointers are the base for JSON patches. - -@sa [RFC 6901](https://tools.ietf.org/html/rfc6901) - -@since version 2.0.0 -*/ -class json_pointer; - -/*! -@brief default JSON class - -This type is the default specialization of the @ref basic_json class which -uses the standard template types. - -@since version 1.0.0 -*/ -using json = basic_json<>; -} - -#endif - -/*** End of inlined file: json_fwd.hpp ***/ - - -/*** Start of inlined file: macro_scope.hpp ***/ -#ifndef NLOHMANN_JSON_MACRO_SCOPE_HPP -#define NLOHMANN_JSON_MACRO_SCOPE_HPP - -#include // not - -// This file contains all internal macro definitions -// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them - -// exclude unsupported compilers -#if defined(__clang__) - #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 - #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" - #endif -#elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) - #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40900 - #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" - #endif -#endif - -// disable float-equal warnings on GCC/clang -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wfloat-equal" -#endif - -// disable documentation warnings on clang -#if defined(__clang__) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wdocumentation" -#endif - -// allow for portable deprecation warnings -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #define JSON_DEPRECATED __attribute__((deprecated)) -#elif defined(_MSC_VER) - #define JSON_DEPRECATED __declspec(deprecated) -#else - #define JSON_DEPRECATED -#endif - -// allow to disable exceptions -#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION) - #define JSON_THROW(exception) throw exception - #define JSON_TRY try - #define JSON_CATCH(exception) catch(exception) -#else - #define JSON_THROW(exception) std::abort() - #define JSON_TRY if(true) - #define JSON_CATCH(exception) if(false) -#endif - -// manual branch prediction -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #define JSON_LIKELY(x) __builtin_expect(!!(x), 1) - #define JSON_UNLIKELY(x) __builtin_expect(!!(x), 0) -#else - #define JSON_LIKELY(x) x - #define JSON_UNLIKELY(x) x -#endif - -// C++ language standard detection -#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 - #define JSON_HAS_CPP_17 - #define JSON_HAS_CPP_14 -#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) - #define JSON_HAS_CPP_14 -#endif - -// Ugly macros to avoid uglier copy-paste when specializing basic_json. They -// may be removed in the future once the class is split. - -#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ - template class ObjectType, \ - template class ArrayType, \ - class StringType, class BooleanType, class NumberIntegerType, \ - class NumberUnsignedType, class NumberFloatType, \ - template class AllocatorType, \ - template class JSONSerializer> - -#define NLOHMANN_BASIC_JSON_TPL \ - basic_json - -/*! -@brief Helper to determine whether there's a key_type for T. - -This helper is used to tell associative containers apart from other containers -such as sequence containers. For instance, `std::map` passes the test as it -contains a `mapped_type`, whereas `std::vector` fails the test. - -@sa http://stackoverflow.com/a/7728728/266378 -@since version 1.0.0, overworked in version 2.0.6 -*/ -#define NLOHMANN_JSON_HAS_HELPER(type) \ - template struct has_##type { \ - private: \ - template \ - static int detect(U &&); \ - static void detect(...); \ - public: \ - static constexpr bool value = \ - std::is_integral()))>::value; \ - } - -#endif - -/*** End of inlined file: macro_scope.hpp ***/ - - -/*** Start of inlined file: meta.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_META_HPP -#define NLOHMANN_JSON_DETAIL_META_HPP - -#include // not -#include // size_t -#include // numeric_limits -#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type -#include // declval - - -/*** Start of inlined file: json_fwd.hpp ***/ -#ifndef NLOHMANN_JSON_FWD_HPP -#define NLOHMANN_JSON_FWD_HPP - -#include // int64_t, uint64_t -#include // map -#include // allocator -#include // string -#include // vector - -/*! -@brief namespace for Niels Lohmann -@see https://github.com/nlohmann -@since version 1.0.0 -*/ -namespace nlohmann -{ -/*! -@brief default JSONSerializer template argument - -This serializer ignores the template arguments and uses ADL -([argument-dependent lookup](http://en.cppreference.com/w/cpp/language/adl)) -for serialization. -*/ -template -struct adl_serializer; - -template class ObjectType = - std::map, - template class ArrayType = std::vector, - class StringType = std::string, class BooleanType = bool, - class NumberIntegerType = std::int64_t, - class NumberUnsignedType = std::uint64_t, - class NumberFloatType = double, - template class AllocatorType = std::allocator, - template class JSONSerializer = - adl_serializer> -class basic_json; - -/*! -@brief JSON Pointer - -A JSON pointer defines a string syntax for identifying a specific value -within a JSON document. It can be used with functions `at` and -`operator[]`. Furthermore, JSON pointers are the base for JSON patches. - -@sa [RFC 6901](https://tools.ietf.org/html/rfc6901) - -@since version 2.0.0 -*/ -class json_pointer; - -/*! -@brief default JSON class - -This type is the default specialization of the @ref basic_json class which -uses the standard template types. - -@since version 1.0.0 -*/ -using json = basic_json<>; -} - -#endif - -/*** End of inlined file: json_fwd.hpp ***/ - - -/*** Start of inlined file: macro_scope.hpp ***/ -#ifndef NLOHMANN_JSON_MACRO_SCOPE_HPP -#define NLOHMANN_JSON_MACRO_SCOPE_HPP - -#include // not - -// This file contains all internal macro definitions -// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them - -// exclude unsupported compilers -#if defined(__clang__) - #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 - #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" - #endif -#elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) - #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40900 - #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" - #endif -#endif - -// disable float-equal warnings on GCC/clang -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wfloat-equal" -#endif - -// disable documentation warnings on clang -#if defined(__clang__) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wdocumentation" -#endif - -// allow for portable deprecation warnings -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #define JSON_DEPRECATED __attribute__((deprecated)) -#elif defined(_MSC_VER) - #define JSON_DEPRECATED __declspec(deprecated) -#else - #define JSON_DEPRECATED -#endif - -// allow to disable exceptions -#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION) - #define JSON_THROW(exception) throw exception - #define JSON_TRY try - #define JSON_CATCH(exception) catch(exception) -#else - #define JSON_THROW(exception) std::abort() - #define JSON_TRY if(true) - #define JSON_CATCH(exception) if(false) -#endif - -// manual branch prediction -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #define JSON_LIKELY(x) __builtin_expect(!!(x), 1) - #define JSON_UNLIKELY(x) __builtin_expect(!!(x), 0) -#else - #define JSON_LIKELY(x) x - #define JSON_UNLIKELY(x) x -#endif - -// C++ language standard detection -#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 - #define JSON_HAS_CPP_17 - #define JSON_HAS_CPP_14 -#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) - #define JSON_HAS_CPP_14 -#endif - -// Ugly macros to avoid uglier copy-paste when specializing basic_json. They -// may be removed in the future once the class is split. - -#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ - template class ObjectType, \ - template class ArrayType, \ - class StringType, class BooleanType, class NumberIntegerType, \ - class NumberUnsignedType, class NumberFloatType, \ - template class AllocatorType, \ - template class JSONSerializer> - -#define NLOHMANN_BASIC_JSON_TPL \ - basic_json - -/*! -@brief Helper to determine whether there's a key_type for T. - -This helper is used to tell associative containers apart from other containers -such as sequence containers. For instance, `std::map` passes the test as it -contains a `mapped_type`, whereas `std::vector` fails the test. - -@sa http://stackoverflow.com/a/7728728/266378 -@since version 1.0.0, overworked in version 2.0.6 -*/ -#define NLOHMANN_JSON_HAS_HELPER(type) \ - template struct has_##type { \ - private: \ - template \ - static int detect(U &&); \ - static void detect(...); \ - public: \ - static constexpr bool value = \ - std::is_integral()))>::value; \ - } - -#endif - -/*** End of inlined file: macro_scope.hpp ***/ - -namespace nlohmann -{ -/*! -@brief detail namespace with internal helper functions - -This namespace collects functions that should not be exposed, -implementations of some @ref basic_json methods, and meta-programming helpers. - -@since version 2.1.0 -*/ -namespace detail -{ -///////////// -// helpers // -///////////// - -template struct is_basic_json : std::false_type {}; - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -struct is_basic_json : std::true_type {}; - -// alias templates to reduce boilerplate -template -using enable_if_t = typename std::enable_if::type; - -template -using uncvref_t = typename std::remove_cv::type>::type; - -// implementation of C++14 index_sequence and affiliates -// source: https://stackoverflow.com/a/32223343 -template -struct index_sequence -{ - using type = index_sequence; - using value_type = std::size_t; - static constexpr std::size_t size() noexcept - { - return sizeof...(Ints); - } -}; - -template -struct merge_and_renumber; - -template -struct merge_and_renumber, index_sequence> - : index_sequence < I1..., (sizeof...(I1) + I2)... > {}; - -template -struct make_index_sequence - : merge_and_renumber < typename make_index_sequence < N / 2 >::type, - typename make_index_sequence < N - N / 2 >::type > {}; - -template<> struct make_index_sequence<0> : index_sequence<> {}; -template<> struct make_index_sequence<1> : index_sequence<0> {}; - -template -using index_sequence_for = make_index_sequence; - -/* -Implementation of two C++17 constructs: conjunction, negation. This is needed -to avoid evaluating all the traits in a condition - -For example: not std::is_same::value and has_value_type::value -will not compile when T = void (on MSVC at least). Whereas -conjunction>, has_value_type>::value will -stop evaluating if negation<...>::value == false - -Please note that those constructs must be used with caution, since symbols can -become very long quickly (which can slow down compilation and cause MSVC -internal compiler errors). Only use it when you have to (see example ahead). -*/ -template struct conjunction : std::true_type {}; -template struct conjunction : B1 {}; -template -struct conjunction : std::conditional, B1>::type {}; - -template struct negation : std::integral_constant {}; - -// dispatch utility (taken from ranges-v3) -template struct priority_tag : priority_tag < N - 1 > {}; -template<> struct priority_tag<0> {}; - -//////////////////////// -// has_/is_ functions // -//////////////////////// - -NLOHMANN_JSON_HAS_HELPER(mapped_type); -NLOHMANN_JSON_HAS_HELPER(key_type); -NLOHMANN_JSON_HAS_HELPER(value_type); -NLOHMANN_JSON_HAS_HELPER(iterator); - -template -struct is_compatible_object_type_impl : std::false_type {}; - -template -struct is_compatible_object_type_impl -{ - static constexpr auto value = - std::is_constructible::value and - std::is_constructible::value; -}; - -template -struct is_compatible_object_type -{ - static auto constexpr value = is_compatible_object_type_impl < - conjunction>, - has_mapped_type, - has_key_type>::value, - typename BasicJsonType::object_t, CompatibleObjectType >::value; -}; - -template -struct is_basic_json_nested_type -{ - static auto constexpr value = std::is_same::value or - std::is_same::value or - std::is_same::value or - std::is_same::value; -}; - -template -struct is_compatible_array_type -{ - static auto constexpr value = - conjunction>, - negation>, - negation>, - negation>, - has_value_type, - has_iterator>::value; -}; - -template -struct is_compatible_integer_type_impl : std::false_type {}; - -template -struct is_compatible_integer_type_impl -{ - // is there an assert somewhere on overflows? - using RealLimits = std::numeric_limits; - using CompatibleLimits = std::numeric_limits; - - static constexpr auto value = - std::is_constructible::value and - CompatibleLimits::is_integer and - RealLimits::is_signed == CompatibleLimits::is_signed; -}; - -template -struct is_compatible_integer_type -{ - static constexpr auto value = - is_compatible_integer_type_impl < - std::is_integral::value and - not std::is_same::value, - RealIntegerType, CompatibleNumberIntegerType > ::value; -}; - -// trait checking if JSONSerializer::from_json(json const&, udt&) exists -template -struct has_from_json -{ - private: - // also check the return type of from_json - template::from_json( - std::declval(), std::declval()))>::value>> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -// This trait checks if JSONSerializer::from_json(json const&) exists -// this overload is used for non-default-constructible user-defined-types -template -struct has_non_default_from_json -{ - private: - template < - typename U, - typename = enable_if_t::from_json(std::declval()))>::value >> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -// This trait checks if BasicJsonType::json_serializer::to_json exists -template -struct has_to_json -{ - private: - template::to_json( - std::declval(), std::declval()))> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -// taken from ranges-v3 -template -struct static_const -{ - static constexpr T value{}; -}; - -template -constexpr T static_const::value; -} -} - -#endif - -/*** End of inlined file: meta.hpp ***/ - - -/*** Start of inlined file: exceptions.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP -#define NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP - -#include // exception -#include // runtime_error -#include // to_string - -namespace nlohmann -{ -namespace detail -{ -//////////////// -// exceptions // -//////////////// - -/*! -@brief general exception of the @ref basic_json class - -This class is an extension of `std::exception` objects with a member @a id for -exception ids. It is used as the base class for all exceptions thrown by the -@ref basic_json class. This class can hence be used as "wildcard" to catch -exceptions. - -Subclasses: -- @ref parse_error for exceptions indicating a parse error -- @ref invalid_iterator for exceptions indicating errors with iterators -- @ref type_error for exceptions indicating executing a member function with - a wrong type -- @ref out_of_range for exceptions indicating access out of the defined range -- @ref other_error for exceptions indicating other library errors - -@internal -@note To have nothrow-copy-constructible exceptions, we internally use - `std::runtime_error` which can cope with arbitrary-length error messages. - Intermediate strings are built with static functions and then passed to - the actual constructor. -@endinternal - -@liveexample{The following code shows how arbitrary library exceptions can be -caught.,exception} - -@since version 3.0.0 -*/ -class exception : public std::exception -{ - public: - /// returns the explanatory string - const char* what() const noexcept override - { - return m.what(); - } - - /// the id of the exception - const int id; - - protected: - exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} - - static std::string name(const std::string& ename, int id_) - { - return "[json.exception." + ename + "." + std::to_string(id_) + "] "; - } - - private: - /// an exception object as storage for error messages - std::runtime_error m; -}; - -/*! -@brief exception indicating a parse error - -This exception is thrown by the library when a parse error occurs. Parse errors -can occur during the deserialization of JSON text, CBOR, MessagePack, as well -as when using JSON Patch. - -Member @a byte holds the byte index of the last read character in the input -file. - -Exceptions have ids 1xx. - -name / id | example message | description ------------------------------- | --------------- | ------------------------- -json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position. -json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point. -json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. -json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects. -json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors. -json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`. -json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character. -json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. -json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number. -json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. -json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. -json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. - -@note For an input with n bytes, 1 is the index of the first character and n+1 - is the index of the terminating null byte or the end of file. This also - holds true when reading a byte vector (CBOR or MessagePack). - -@liveexample{The following code shows how a `parse_error` exception can be -caught.,parse_error} - -@sa @ref exception for the base class of the library exceptions -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class parse_error : public exception -{ - public: - /*! - @brief create a parse error exception - @param[in] id_ the id of the exception - @param[in] byte_ the byte index where the error occurred (or 0 if the - position cannot be determined) - @param[in] what_arg the explanatory string - @return parse_error object - */ - static parse_error create(int id_, std::size_t byte_, const std::string& what_arg) - { - std::string w = exception::name("parse_error", id_) + "parse error" + - (byte_ != 0 ? (" at " + std::to_string(byte_)) : "") + - ": " + what_arg; - return parse_error(id_, byte_, w.c_str()); - } - - /*! - @brief byte index of the parse error - - The byte index of the last read character in the input file. - - @note For an input with n bytes, 1 is the index of the first character and - n+1 is the index of the terminating null byte or the end of file. - This also holds true when reading a byte vector (CBOR or MessagePack). - */ - const std::size_t byte; - - private: - parse_error(int id_, std::size_t byte_, const char* what_arg) - : exception(id_, what_arg), byte(byte_) {} -}; - -/*! -@brief exception indicating errors with iterators - -This exception is thrown if iterators passed to a library function do not match -the expected semantics. - -Exceptions have ids 2xx. - -name / id | example message | description ------------------------------------ | --------------- | ------------------------- -json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. -json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion. -json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from. -json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid. -json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid. -json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range. -json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key. -json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. -json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. -json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. -json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to. -json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container. -json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered. -json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin(). - -@liveexample{The following code shows how an `invalid_iterator` exception can be -caught.,invalid_iterator} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class invalid_iterator : public exception -{ - public: - static invalid_iterator create(int id_, const std::string& what_arg) - { - std::string w = exception::name("invalid_iterator", id_) + what_arg; - return invalid_iterator(id_, w.c_str()); - } - - private: - invalid_iterator(int id_, const char* what_arg) - : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating executing a member function with a wrong type - -This exception is thrown in case of a type error; that is, a library function is -executed on a JSON value whose type does not match the expected semantics. - -Exceptions have ids 3xx. - -name / id | example message | description ------------------------------ | --------------- | ------------------------- -json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead. -json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types. -json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t&. -json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types. -json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types. -json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types. -json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types. -json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types. -json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types. -json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types. -json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types. -json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types. -json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined. -json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers. -json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive. -json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. | - -@liveexample{The following code shows how a `type_error` exception can be -caught.,type_error} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class type_error : public exception -{ - public: - static type_error create(int id_, const std::string& what_arg) - { - std::string w = exception::name("type_error", id_) + what_arg; - return type_error(id_, w.c_str()); - } - - private: - type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating access out of the defined range - -This exception is thrown in case a library function is called on an input -parameter that exceeds the expected range, for instance in case of array -indices or nonexisting object keys. - -Exceptions have ids 4xx. - -name / id | example message | description -------------------------------- | --------------- | ------------------------- -json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1. -json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it. -json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object. -json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. -json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. -json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. - -@liveexample{The following code shows how an `out_of_range` exception can be -caught.,out_of_range} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class out_of_range : public exception -{ - public: - static out_of_range create(int id_, const std::string& what_arg) - { - std::string w = exception::name("out_of_range", id_) + what_arg; - return out_of_range(id_, w.c_str()); - } - - private: - out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating other library errors - -This exception is thrown in case of errors that cannot be classified with the -other exception types. - -Exceptions have ids 5xx. - -name / id | example message | description ------------------------------- | --------------- | ------------------------- -json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed. - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range - -@liveexample{The following code shows how an `other_error` exception can be -caught.,other_error} - -@since version 3.0.0 -*/ -class other_error : public exception -{ - public: - static other_error create(int id_, const std::string& what_arg) - { - std::string w = exception::name("other_error", id_) + what_arg; - return other_error(id_, w.c_str()); - } - - private: - other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; -} -} - -#endif - -/*** End of inlined file: exceptions.hpp ***/ - - -/*** Start of inlined file: value_t.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_VALUE_T_HPP -#define NLOHMANN_JSON_DETAIL_VALUE_T_HPP - -#include // array -#include // and -#include // size_t -#include // uint8_t - -namespace nlohmann -{ -namespace detail -{ -/////////////////////////// -// JSON type enumeration // -/////////////////////////// - -/*! -@brief the JSON type enumeration - -This enumeration collects the different JSON types. It is internally used to -distinguish the stored values, and the functions @ref basic_json::is_null(), -@ref basic_json::is_object(), @ref basic_json::is_array(), -@ref basic_json::is_string(), @ref basic_json::is_boolean(), -@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), -@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), -@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and -@ref basic_json::is_structured() rely on it. - -@note There are three enumeration entries (number_integer, number_unsigned, and -number_float), because the library distinguishes these three types for numbers: -@ref basic_json::number_unsigned_t is used for unsigned integers, -@ref basic_json::number_integer_t is used for signed integers, and -@ref basic_json::number_float_t is used for floating-point numbers or to -approximate integers which do not fit in the limits of their respective type. - -@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON -value with the default value for a given type - -@since version 1.0.0 -*/ -enum class value_t : std::uint8_t -{ - null, ///< null value - object, ///< object (unordered set of name/value pairs) - array, ///< array (ordered collection of values) - string, ///< string value - boolean, ///< boolean value - number_integer, ///< number value (signed integer) - number_unsigned, ///< number value (unsigned integer) - number_float, ///< number value (floating-point) - discarded ///< discarded by the the parser callback function -}; - -/*! -@brief comparison operator for JSON types - -Returns an ordering that is similar to Python: -- order: null < boolean < number < object < array < string -- furthermore, each type is not smaller than itself -- discarded values are not comparable - -@since version 1.0.0 -*/ -inline bool operator<(const value_t lhs, const value_t rhs) noexcept -{ - static constexpr std::array order = {{ - 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, - 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */ - } - }; - - const auto l_index = static_cast(lhs); - const auto r_index = static_cast(rhs); - return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index]; -} -} -} - -#endif - -/*** End of inlined file: value_t.hpp ***/ - - -/*** Start of inlined file: from_json.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP -#define NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP - -#include // transform -#include // array -#include // and, not -#include // forward_list -#include // inserter, front_inserter, end -#include // string -#include // tuple, make_tuple -#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible -#include // pair, declval -#include // valarray - - -/*** Start of inlined file: exceptions.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP -#define NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP - -#include // exception -#include // runtime_error -#include // to_string - -namespace nlohmann -{ -namespace detail -{ -//////////////// -// exceptions // -//////////////// - -/*! -@brief general exception of the @ref basic_json class - -This class is an extension of `std::exception` objects with a member @a id for -exception ids. It is used as the base class for all exceptions thrown by the -@ref basic_json class. This class can hence be used as "wildcard" to catch -exceptions. - -Subclasses: -- @ref parse_error for exceptions indicating a parse error -- @ref invalid_iterator for exceptions indicating errors with iterators -- @ref type_error for exceptions indicating executing a member function with - a wrong type -- @ref out_of_range for exceptions indicating access out of the defined range -- @ref other_error for exceptions indicating other library errors - -@internal -@note To have nothrow-copy-constructible exceptions, we internally use - `std::runtime_error` which can cope with arbitrary-length error messages. - Intermediate strings are built with static functions and then passed to - the actual constructor. -@endinternal - -@liveexample{The following code shows how arbitrary library exceptions can be -caught.,exception} - -@since version 3.0.0 -*/ -class exception : public std::exception -{ - public: - /// returns the explanatory string - const char* what() const noexcept override - { - return m.what(); - } - - /// the id of the exception - const int id; - - protected: - exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} - - static std::string name(const std::string& ename, int id_) - { - return "[json.exception." + ename + "." + std::to_string(id_) + "] "; - } - - private: - /// an exception object as storage for error messages - std::runtime_error m; -}; - -/*! -@brief exception indicating a parse error - -This exception is thrown by the library when a parse error occurs. Parse errors -can occur during the deserialization of JSON text, CBOR, MessagePack, as well -as when using JSON Patch. - -Member @a byte holds the byte index of the last read character in the input -file. - -Exceptions have ids 1xx. - -name / id | example message | description ------------------------------- | --------------- | ------------------------- -json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position. -json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point. -json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. -json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects. -json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors. -json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`. -json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character. -json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. -json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number. -json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. -json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. -json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. - -@note For an input with n bytes, 1 is the index of the first character and n+1 - is the index of the terminating null byte or the end of file. This also - holds true when reading a byte vector (CBOR or MessagePack). - -@liveexample{The following code shows how a `parse_error` exception can be -caught.,parse_error} - -@sa @ref exception for the base class of the library exceptions -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class parse_error : public exception -{ - public: - /*! - @brief create a parse error exception - @param[in] id_ the id of the exception - @param[in] byte_ the byte index where the error occurred (or 0 if the - position cannot be determined) - @param[in] what_arg the explanatory string - @return parse_error object - */ - static parse_error create(int id_, std::size_t byte_, const std::string& what_arg) - { - std::string w = exception::name("parse_error", id_) + "parse error" + - (byte_ != 0 ? (" at " + std::to_string(byte_)) : "") + - ": " + what_arg; - return parse_error(id_, byte_, w.c_str()); - } - - /*! - @brief byte index of the parse error - - The byte index of the last read character in the input file. - - @note For an input with n bytes, 1 is the index of the first character and - n+1 is the index of the terminating null byte or the end of file. - This also holds true when reading a byte vector (CBOR or MessagePack). - */ - const std::size_t byte; - - private: - parse_error(int id_, std::size_t byte_, const char* what_arg) - : exception(id_, what_arg), byte(byte_) {} -}; - -/*! -@brief exception indicating errors with iterators - -This exception is thrown if iterators passed to a library function do not match -the expected semantics. - -Exceptions have ids 2xx. - -name / id | example message | description ------------------------------------ | --------------- | ------------------------- -json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. -json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion. -json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from. -json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid. -json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid. -json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range. -json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key. -json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. -json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. -json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. -json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to. -json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container. -json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered. -json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin(). - -@liveexample{The following code shows how an `invalid_iterator` exception can be -caught.,invalid_iterator} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class invalid_iterator : public exception -{ - public: - static invalid_iterator create(int id_, const std::string& what_arg) - { - std::string w = exception::name("invalid_iterator", id_) + what_arg; - return invalid_iterator(id_, w.c_str()); - } - - private: - invalid_iterator(int id_, const char* what_arg) - : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating executing a member function with a wrong type - -This exception is thrown in case of a type error; that is, a library function is -executed on a JSON value whose type does not match the expected semantics. - -Exceptions have ids 3xx. - -name / id | example message | description ------------------------------ | --------------- | ------------------------- -json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead. -json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types. -json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t&. -json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types. -json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types. -json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types. -json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types. -json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types. -json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types. -json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types. -json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types. -json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types. -json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined. -json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers. -json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive. -json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. | - -@liveexample{The following code shows how a `type_error` exception can be -caught.,type_error} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class type_error : public exception -{ - public: - static type_error create(int id_, const std::string& what_arg) - { - std::string w = exception::name("type_error", id_) + what_arg; - return type_error(id_, w.c_str()); - } - - private: - type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating access out of the defined range - -This exception is thrown in case a library function is called on an input -parameter that exceeds the expected range, for instance in case of array -indices or nonexisting object keys. - -Exceptions have ids 4xx. - -name / id | example message | description -------------------------------- | --------------- | ------------------------- -json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1. -json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it. -json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object. -json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. -json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. -json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. - -@liveexample{The following code shows how an `out_of_range` exception can be -caught.,out_of_range} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class out_of_range : public exception -{ - public: - static out_of_range create(int id_, const std::string& what_arg) - { - std::string w = exception::name("out_of_range", id_) + what_arg; - return out_of_range(id_, w.c_str()); - } - - private: - out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating other library errors - -This exception is thrown in case of errors that cannot be classified with the -other exception types. - -Exceptions have ids 5xx. - -name / id | example message | description ------------------------------- | --------------- | ------------------------- -json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed. - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range - -@liveexample{The following code shows how an `other_error` exception can be -caught.,other_error} - -@since version 3.0.0 -*/ -class other_error : public exception -{ - public: - static other_error create(int id_, const std::string& what_arg) - { - std::string w = exception::name("other_error", id_) + what_arg; - return other_error(id_, w.c_str()); - } - - private: - other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; -} -} - -#endif - -/*** End of inlined file: exceptions.hpp ***/ - - -/*** Start of inlined file: meta.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_META_HPP -#define NLOHMANN_JSON_DETAIL_META_HPP - -#include // not -#include // size_t -#include // numeric_limits -#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type -#include // declval - -namespace nlohmann -{ -/*! -@brief detail namespace with internal helper functions - -This namespace collects functions that should not be exposed, -implementations of some @ref basic_json methods, and meta-programming helpers. - -@since version 2.1.0 -*/ -namespace detail -{ -///////////// -// helpers // -///////////// - -template struct is_basic_json : std::false_type {}; - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -struct is_basic_json : std::true_type {}; - -// alias templates to reduce boilerplate -template -using enable_if_t = typename std::enable_if::type; - -template -using uncvref_t = typename std::remove_cv::type>::type; - -// implementation of C++14 index_sequence and affiliates -// source: https://stackoverflow.com/a/32223343 -template -struct index_sequence -{ - using type = index_sequence; - using value_type = std::size_t; - static constexpr std::size_t size() noexcept - { - return sizeof...(Ints); - } -}; - -template -struct merge_and_renumber; - -template -struct merge_and_renumber, index_sequence> - : index_sequence < I1..., (sizeof...(I1) + I2)... > {}; - -template -struct make_index_sequence - : merge_and_renumber < typename make_index_sequence < N / 2 >::type, - typename make_index_sequence < N - N / 2 >::type > {}; - -template<> struct make_index_sequence<0> : index_sequence<> {}; -template<> struct make_index_sequence<1> : index_sequence<0> {}; - -template -using index_sequence_for = make_index_sequence; - -/* -Implementation of two C++17 constructs: conjunction, negation. This is needed -to avoid evaluating all the traits in a condition - -For example: not std::is_same::value and has_value_type::value -will not compile when T = void (on MSVC at least). Whereas -conjunction>, has_value_type>::value will -stop evaluating if negation<...>::value == false - -Please note that those constructs must be used with caution, since symbols can -become very long quickly (which can slow down compilation and cause MSVC -internal compiler errors). Only use it when you have to (see example ahead). -*/ -template struct conjunction : std::true_type {}; -template struct conjunction : B1 {}; -template -struct conjunction : std::conditional, B1>::type {}; - -template struct negation : std::integral_constant {}; - -// dispatch utility (taken from ranges-v3) -template struct priority_tag : priority_tag < N - 1 > {}; -template<> struct priority_tag<0> {}; - -//////////////////////// -// has_/is_ functions // -//////////////////////// - -NLOHMANN_JSON_HAS_HELPER(mapped_type); -NLOHMANN_JSON_HAS_HELPER(key_type); -NLOHMANN_JSON_HAS_HELPER(value_type); -NLOHMANN_JSON_HAS_HELPER(iterator); - -template -struct is_compatible_object_type_impl : std::false_type {}; - -template -struct is_compatible_object_type_impl -{ - static constexpr auto value = - std::is_constructible::value and - std::is_constructible::value; -}; - -template -struct is_compatible_object_type -{ - static auto constexpr value = is_compatible_object_type_impl < - conjunction>, - has_mapped_type, - has_key_type>::value, - typename BasicJsonType::object_t, CompatibleObjectType >::value; -}; - -template -struct is_basic_json_nested_type -{ - static auto constexpr value = std::is_same::value or - std::is_same::value or - std::is_same::value or - std::is_same::value; -}; - -template -struct is_compatible_array_type -{ - static auto constexpr value = - conjunction>, - negation>, - negation>, - negation>, - has_value_type, - has_iterator>::value; -}; - -template -struct is_compatible_integer_type_impl : std::false_type {}; - -template -struct is_compatible_integer_type_impl -{ - // is there an assert somewhere on overflows? - using RealLimits = std::numeric_limits; - using CompatibleLimits = std::numeric_limits; - - static constexpr auto value = - std::is_constructible::value and - CompatibleLimits::is_integer and - RealLimits::is_signed == CompatibleLimits::is_signed; -}; - -template -struct is_compatible_integer_type -{ - static constexpr auto value = - is_compatible_integer_type_impl < - std::is_integral::value and - not std::is_same::value, - RealIntegerType, CompatibleNumberIntegerType > ::value; -}; - -// trait checking if JSONSerializer::from_json(json const&, udt&) exists -template -struct has_from_json -{ - private: - // also check the return type of from_json - template::from_json( - std::declval(), std::declval()))>::value>> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -// This trait checks if JSONSerializer::from_json(json const&) exists -// this overload is used for non-default-constructible user-defined-types -template -struct has_non_default_from_json -{ - private: - template < - typename U, - typename = enable_if_t::from_json(std::declval()))>::value >> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -// This trait checks if BasicJsonType::json_serializer::to_json exists -template -struct has_to_json -{ - private: - template::to_json( - std::declval(), std::declval()))> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -// taken from ranges-v3 -template -struct static_const -{ - static constexpr T value{}; -}; - -template -constexpr T static_const::value; -} -} - -#endif - -/*** End of inlined file: meta.hpp ***/ - - -/*** Start of inlined file: value_t.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_VALUE_T_HPP -#define NLOHMANN_JSON_DETAIL_VALUE_T_HPP - -#include // array -#include // and -#include // size_t -#include // uint8_t - -namespace nlohmann -{ -namespace detail -{ -/////////////////////////// -// JSON type enumeration // -/////////////////////////// - -/*! -@brief the JSON type enumeration - -This enumeration collects the different JSON types. It is internally used to -distinguish the stored values, and the functions @ref basic_json::is_null(), -@ref basic_json::is_object(), @ref basic_json::is_array(), -@ref basic_json::is_string(), @ref basic_json::is_boolean(), -@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), -@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), -@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and -@ref basic_json::is_structured() rely on it. - -@note There are three enumeration entries (number_integer, number_unsigned, and -number_float), because the library distinguishes these three types for numbers: -@ref basic_json::number_unsigned_t is used for unsigned integers, -@ref basic_json::number_integer_t is used for signed integers, and -@ref basic_json::number_float_t is used for floating-point numbers or to -approximate integers which do not fit in the limits of their respective type. - -@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON -value with the default value for a given type - -@since version 1.0.0 -*/ -enum class value_t : std::uint8_t -{ - null, ///< null value - object, ///< object (unordered set of name/value pairs) - array, ///< array (ordered collection of values) - string, ///< string value - boolean, ///< boolean value - number_integer, ///< number value (signed integer) - number_unsigned, ///< number value (unsigned integer) - number_float, ///< number value (floating-point) - discarded ///< discarded by the the parser callback function -}; - -/*! -@brief comparison operator for JSON types - -Returns an ordering that is similar to Python: -- order: null < boolean < number < object < array < string -- furthermore, each type is not smaller than itself -- discarded values are not comparable - -@since version 1.0.0 -*/ -inline bool operator<(const value_t lhs, const value_t rhs) noexcept -{ - static constexpr std::array order = {{ - 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, - 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */ - } - }; - - const auto l_index = static_cast(lhs); - const auto r_index = static_cast(rhs); - return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index]; -} -} -} - -#endif - -/*** End of inlined file: value_t.hpp ***/ - -namespace nlohmann -{ -namespace detail -{ -// overloads for basic_json template parameters -template::value and - not std::is_same::value, - int> = 0> -void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) -{ - switch (static_cast(j)) - { - case value_t::number_unsigned: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_integer: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_float: - { - val = static_cast(*j.template get_ptr()); - break; - } - - default: - JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); - } -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) -{ - if (JSON_UNLIKELY(not j.is_boolean())) - { - JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name()))); - } - b = *j.template get_ptr(); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) -{ - if (JSON_UNLIKELY(not j.is_string())) - { - JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()))); - } - s = *j.template get_ptr(); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) -{ - get_arithmetic_value(j, val); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) -{ - get_arithmetic_value(j, val); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) -{ - get_arithmetic_value(j, val); -} - -template::value, int> = 0> -void from_json(const BasicJsonType& j, EnumType& e) -{ - typename std::underlying_type::type val; - get_arithmetic_value(j, val); - e = static_cast(val); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) -{ - if (JSON_UNLIKELY(not j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); - } - arr = *j.template get_ptr(); -} - -// forward_list doesn't have an insert method -template::value, int> = 0> -void from_json(const BasicJsonType& j, std::forward_list& l) -{ - if (JSON_UNLIKELY(not j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); - } - std::transform(j.rbegin(), j.rend(), - std::front_inserter(l), [](const BasicJsonType & i) - { - return i.template get(); - }); -} - -// valarray doesn't have an insert method -template::value, int> = 0> -void from_json(const BasicJsonType& j, std::valarray& l) -{ - if (JSON_UNLIKELY(not j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); - } - l.resize(j.size()); - std::copy(j.m_value.array->begin(), j.m_value.array->end(), std::begin(l)); -} - -template -void from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<0> /*unused*/) -{ - using std::end; - - std::transform(j.begin(), j.end(), - std::inserter(arr, end(arr)), [](const BasicJsonType & i) - { - // get() returns *this, this won't call a from_json - // method when value_type is BasicJsonType - return i.template get(); - }); -} - -template -auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<1> /*unused*/) --> decltype( - arr.reserve(std::declval()), - void()) -{ - using std::end; - - arr.reserve(j.size()); - std::transform(j.begin(), j.end(), - std::inserter(arr, end(arr)), [](const BasicJsonType & i) - { - // get() returns *this, this won't call a from_json - // method when value_type is BasicJsonType - return i.template get(); - }); -} - -template -void from_json_array_impl(const BasicJsonType& j, std::array& arr, priority_tag<2> /*unused*/) -{ - for (std::size_t i = 0; i < N; ++i) - { - arr[i] = j.at(i).template get(); - } -} - -template::value and - std::is_convertible::value and - not std::is_same::value, int> = 0> -void from_json(const BasicJsonType& j, CompatibleArrayType& arr) -{ - if (JSON_UNLIKELY(not j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); - } - - from_json_array_impl(j, arr, priority_tag<2> {}); -} - -template::value, int> = 0> -void from_json(const BasicJsonType& j, CompatibleObjectType& obj) -{ - if (JSON_UNLIKELY(not j.is_object())) - { - JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name()))); - } - - auto inner_object = j.template get_ptr(); - using value_type = typename CompatibleObjectType::value_type; - std::transform( - inner_object->begin(), inner_object->end(), - std::inserter(obj, obj.begin()), - [](typename BasicJsonType::object_t::value_type const & p) - { - return value_type(p.first, p.second.template get()); - }); -} - -// overload for arithmetic types, not chosen for basic_json template arguments -// (BooleanType, etc..); note: Is it really necessary to provide explicit -// overloads for boolean_t etc. in case of a custom BooleanType which is not -// an arithmetic type? -template::value and - not std::is_same::value and - not std::is_same::value and - not std::is_same::value and - not std::is_same::value, - int> = 0> -void from_json(const BasicJsonType& j, ArithmeticType& val) -{ - switch (static_cast(j)) - { - case value_t::number_unsigned: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_integer: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_float: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::boolean: - { - val = static_cast(*j.template get_ptr()); - break; - } - - default: - JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); - } -} - -template -void from_json(const BasicJsonType& j, std::pair& p) -{ - p = {j.at(0).template get(), j.at(1).template get()}; -} - -template -void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_sequence) -{ - t = std::make_tuple(j.at(Idx).template get::type>()...); -} - -template -void from_json(const BasicJsonType& j, std::tuple& t) -{ - from_json_tuple_impl(j, t, index_sequence_for {}); -} - -struct from_json_fn -{ - private: - template - auto call(const BasicJsonType& j, T& val, priority_tag<1> /*unused*/) const - noexcept(noexcept(from_json(j, val))) - -> decltype(from_json(j, val), void()) - { - return from_json(j, val); - } - - template - void call(const BasicJsonType& /*unused*/, T& /*unused*/, priority_tag<0> /*unused*/) const noexcept - { - static_assert(sizeof(BasicJsonType) == 0, - "could not find from_json() method in T's namespace"); -#ifdef _MSC_VER - // MSVC does not show a stacktrace for the above assert - using decayed = uncvref_t; - static_assert(sizeof(typename decayed::force_msvc_stacktrace) == 0, - "forcing MSVC stacktrace to show which T we're talking about."); -#endif - } - - public: - template - void operator()(const BasicJsonType& j, T& val) const - noexcept(noexcept(std::declval().call(j, val, priority_tag<1> {}))) - { - return call(j, val, priority_tag<1> {}); - } -}; -} - -/// namespace to hold default `from_json` function -/// to see why this is required: -/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html -namespace -{ -constexpr const auto& from_json = detail::static_const::value; -} -} - -#endif - -/*** End of inlined file: from_json.hpp ***/ - - -/*** Start of inlined file: to_json.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP -#define NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP - -#include // or, and, not -#include // begin, end -#include // tuple, get -#include // is_same, is_constructible, is_floating_point, is_enum, underlying_type -#include // move, forward, declval, pair -#include // valarray -#include // vector - -namespace nlohmann -{ -namespace detail -{ -////////////////// -// constructors // -////////////////// - -template struct external_constructor; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept - { - j.m_type = value_t::boolean; - j.m_value = b; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) - { - j.m_type = value_t::string; - j.m_value = s; - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s) - { - j.m_type = value_t::string; - j.m_value = std::move(s); - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept - { - j.m_type = value_t::number_float; - j.m_value = val; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept - { - j.m_type = value_t::number_unsigned; - j.m_value = val; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept - { - j.m_type = value_t::number_integer; - j.m_value = val; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) - { - j.m_type = value_t::array; - j.m_value = arr; - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr) - { - j.m_type = value_t::array; - j.m_value = std::move(arr); - j.assert_invariant(); - } - - template::value, - int> = 0> - static void construct(BasicJsonType& j, const CompatibleArrayType& arr) - { - using std::begin; - using std::end; - j.m_type = value_t::array; - j.m_value.array = j.template create(begin(arr), end(arr)); - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, const std::vector& arr) - { - j.m_type = value_t::array; - j.m_value = value_t::array; - j.m_value.array->reserve(arr.size()); - for (const bool x : arr) - { - j.m_value.array->push_back(x); - } - j.assert_invariant(); - } - - template::value, int> = 0> - static void construct(BasicJsonType& j, const std::valarray& arr) - { - j.m_type = value_t::array; - j.m_value = value_t::array; - j.m_value.array->resize(arr.size()); - std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin()); - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) - { - j.m_type = value_t::object; - j.m_value = obj; - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj) - { - j.m_type = value_t::object; - j.m_value = std::move(obj); - j.assert_invariant(); - } - - template::value, int> = 0> - static void construct(BasicJsonType& j, const CompatibleObjectType& obj) - { - using std::begin; - using std::end; - - j.m_type = value_t::object; - j.m_value.object = j.template create(begin(obj), end(obj)); - j.assert_invariant(); - } -}; - -///////////// -// to_json // -///////////// - -template::value, int> = 0> -void to_json(BasicJsonType& j, T b) noexcept -{ - external_constructor::construct(j, b); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, const CompatibleString& s) -{ - external_constructor::construct(j, s); -} - -template -void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s) -{ - external_constructor::construct(j, std::move(s)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, FloatType val) noexcept -{ - external_constructor::construct(j, static_cast(val)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept -{ - external_constructor::construct(j, static_cast(val)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept -{ - external_constructor::construct(j, static_cast(val)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, EnumType e) noexcept -{ - using underlying_type = typename std::underlying_type::type; - external_constructor::construct(j, static_cast(e)); -} - -template -void to_json(BasicJsonType& j, const std::vector& e) -{ - external_constructor::construct(j, e); -} - -template::value or - std::is_same::value, - int> = 0> -void to_json(BasicJsonType& j, const CompatibleArrayType& arr) -{ - external_constructor::construct(j, arr); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, std::valarray arr) -{ - external_constructor::construct(j, std::move(arr)); -} - -template -void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr) -{ - external_constructor::construct(j, std::move(arr)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, const CompatibleObjectType& obj) -{ - external_constructor::construct(j, obj); -} - -template -void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj) -{ - external_constructor::construct(j, std::move(obj)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, T (&arr)[N]) -{ - external_constructor::construct(j, arr); -} - -template -void to_json(BasicJsonType& j, const std::pair& p) -{ - j = {p.first, p.second}; -} - -template -void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence) -{ - j = {std::get(t)...}; -} - -template -void to_json(BasicJsonType& j, const std::tuple& t) -{ - to_json_tuple_impl(j, t, index_sequence_for {}); -} - -struct to_json_fn -{ - private: - template - auto call(BasicJsonType& j, T&& val, priority_tag<1> /*unused*/) const noexcept(noexcept(to_json(j, std::forward(val)))) - -> decltype(to_json(j, std::forward(val)), void()) - { - return to_json(j, std::forward(val)); - } - - template - void call(BasicJsonType& /*unused*/, T&& /*unused*/, priority_tag<0> /*unused*/) const noexcept - { - static_assert(sizeof(BasicJsonType) == 0, - "could not find to_json() method in T's namespace"); - -#ifdef _MSC_VER - // MSVC does not show a stacktrace for the above assert - using decayed = uncvref_t; - static_assert(sizeof(typename decayed::force_msvc_stacktrace) == 0, - "forcing MSVC stacktrace to show which T we're talking about."); -#endif - } - - public: - template - void operator()(BasicJsonType& j, T&& val) const - noexcept(noexcept(std::declval().call(j, std::forward(val), priority_tag<1> {}))) - { - return call(j, std::forward(val), priority_tag<1> {}); - } -}; -} - -/// namespace to hold default `to_json` function -namespace -{ -constexpr const auto& to_json = detail::static_const::value; -} -} - -#endif - -/*** End of inlined file: to_json.hpp ***/ - - -/*** Start of inlined file: input_adapters.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP - -#include // min -#include // array -#include // assert -#include // size_t -#include // strlen -#include // streamsize, streamoff, streampos -#include // istream -#include // begin, end, iterator_traits, random_access_iterator_tag, distance, next -#include // shared_ptr, make_shared, addressof -#include // accumulate -#include // string, char_traits -#include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer -#include // pair, declval - -namespace nlohmann -{ -namespace detail -{ -//////////////////// -// input adapters // -//////////////////// - -/*! -@brief abstract input adapter interface - -Produces a stream of std::char_traits::int_type characters from a -std::istream, a buffer, or some other input type. Accepts the return of exactly -one non-EOF character for future input. The int_type characters returned -consist of all valid char values as positive values (typically unsigned char), -plus an EOF value outside that range, specified by the value of the function -std::char_traits::eof(). This value is typically -1, but could be any -arbitrary value which is not a valid char value. -*/ -struct input_adapter_protocol -{ - /// get a character [0,255] or std::char_traits::eof(). - virtual std::char_traits::int_type get_character() = 0; - /// restore the last non-eof() character to input - virtual void unget_character() = 0; - virtual ~input_adapter_protocol() = default; -}; - -/// a type to simplify interfaces -using input_adapter_t = std::shared_ptr; - -/*! -Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at -beginning of input. Does not support changing the underlying std::streambuf -in mid-input. Maintains underlying std::istream and std::streambuf to support -subsequent use of standard std::istream operations to process any input -characters following those used in parsing the JSON input. Clears the -std::istream flags; any input errors (e.g., EOF) will be detected by the first -subsequent call for input from the std::istream. -*/ -class input_stream_adapter : public input_adapter_protocol -{ - public: - ~input_stream_adapter() override - { - // clear stream flags; we use underlying streambuf I/O, do not - // maintain ifstream flags - is.clear(); - } - - explicit input_stream_adapter(std::istream& i) - : is(i), sb(*i.rdbuf()) - { - // skip byte order mark - std::char_traits::int_type c; - if ((c = get_character()) == 0xEF) - { - if ((c = get_character()) == 0xBB) - { - if ((c = get_character()) == 0xBF) - { - return; // Ignore BOM - } - else if (c != std::char_traits::eof()) - { - is.unget(); - } - is.putback('\xBB'); - } - else if (c != std::char_traits::eof()) - { - is.unget(); - } - is.putback('\xEF'); - } - else if (c != std::char_traits::eof()) - { - is.unget(); // no byte order mark; process as usual - } - } - - // delete because of pointer members - input_stream_adapter(const input_stream_adapter&) = delete; - input_stream_adapter& operator=(input_stream_adapter&) = delete; - - // std::istream/std::streambuf use std::char_traits::to_int_type, to - // ensure that std::char_traits::eof() and the character 0xFF do not - // end up as the same value, eg. 0xFFFFFFFF. - std::char_traits::int_type get_character() override - { - return sb.sbumpc(); - } - - void unget_character() override - { - sb.sungetc(); // is.unget() avoided for performance - } - - private: - /// the associated input stream - std::istream& is; - std::streambuf& sb; -}; - -/// input adapter for buffer input -class input_buffer_adapter : public input_adapter_protocol -{ - public: - input_buffer_adapter(const char* b, const std::size_t l) - : cursor(b), limit(b + l), start(b) - { - // skip byte order mark - if (l >= 3 and b[0] == '\xEF' and b[1] == '\xBB' and b[2] == '\xBF') - { - cursor += 3; - } - } - - // delete because of pointer members - input_buffer_adapter(const input_buffer_adapter&) = delete; - input_buffer_adapter& operator=(input_buffer_adapter&) = delete; - - std::char_traits::int_type get_character() noexcept override - { - if (JSON_LIKELY(cursor < limit)) - { - return std::char_traits::to_int_type(*(cursor++)); - } - - return std::char_traits::eof(); - } - - void unget_character() noexcept override - { - if (JSON_LIKELY(cursor > start)) - { - --cursor; - } - } - - private: - /// pointer to the current character - const char* cursor; - /// pointer past the last character - const char* limit; - /// pointer to the first character - const char* start; -}; - -class input_adapter -{ - public: - // native support - - /// input adapter for input stream - input_adapter(std::istream& i) - : ia(std::make_shared(i)) {} - - /// input adapter for input stream - input_adapter(std::istream&& i) - : ia(std::make_shared(i)) {} - - /// input adapter for buffer - template::value and - std::is_integral::type>::value and - sizeof(typename std::remove_pointer::type) == 1, - int>::type = 0> - input_adapter(CharT b, std::size_t l) - : ia(std::make_shared(reinterpret_cast(b), l)) {} - - // derived support - - /// input adapter for string literal - template::value and - std::is_integral::type>::value and - sizeof(typename std::remove_pointer::type) == 1, - int>::type = 0> - input_adapter(CharT b) - : input_adapter(reinterpret_cast(b), - std::strlen(reinterpret_cast(b))) {} - - /// input adapter for iterator range with contiguous storage - template::iterator_category, std::random_access_iterator_tag>::value, - int>::type = 0> - input_adapter(IteratorType first, IteratorType last) - { - // assertion to check that the iterator range is indeed contiguous, - // see http://stackoverflow.com/a/35008842/266378 for more discussion - assert(std::accumulate( - first, last, std::pair(true, 0), - [&first](std::pair res, decltype(*first) val) - { - res.first &= (val == *(std::next(std::addressof(*first), res.second++))); - return res; - }).first); - - // assertion to check that each element is 1 byte long - static_assert( - sizeof(typename std::iterator_traits::value_type) == 1, - "each element in the iterator range must have the size of 1 byte"); - - const auto len = static_cast(std::distance(first, last)); - if (JSON_LIKELY(len > 0)) - { - // there is at least one element: use the address of first - ia = std::make_shared(reinterpret_cast(&(*first)), len); - } - else - { - // the address of first cannot be used: use nullptr - ia = std::make_shared(nullptr, len); - } - } - - /// input adapter for array - template - input_adapter(T (&array)[N]) - : input_adapter(std::begin(array), std::end(array)) {} - - /// input adapter for contiguous container - template::value and - std::is_base_of()))>::iterator_category>::value, - int>::type = 0> - input_adapter(const ContiguousContainer& c) - : input_adapter(std::begin(c), std::end(c)) {} - - operator input_adapter_t() - { - return ia; - } - - private: - /// the actual adapter - input_adapter_t ia = nullptr; -}; -} -} - -#endif - -/*** End of inlined file: input_adapters.hpp ***/ - - -/*** Start of inlined file: lexer.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP - -#include // localeconv -#include // size_t -#include // strtof, strtod, strtold, strtoll, strtoull -#include // initializer_list -#include // hex, uppercase -#include // setw, setfill -#include // stringstream -#include // char_traits, string -#include // vector - - -/*** Start of inlined file: input_adapters.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP - -#include // min -#include // array -#include // assert -#include // size_t -#include // strlen -#include // streamsize, streamoff, streampos -#include // istream -#include // begin, end, iterator_traits, random_access_iterator_tag, distance, next -#include // shared_ptr, make_shared, addressof -#include // accumulate -#include // string, char_traits -#include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer -#include // pair, declval - -namespace nlohmann -{ -namespace detail -{ -//////////////////// -// input adapters // -//////////////////// - -/*! -@brief abstract input adapter interface - -Produces a stream of std::char_traits::int_type characters from a -std::istream, a buffer, or some other input type. Accepts the return of exactly -one non-EOF character for future input. The int_type characters returned -consist of all valid char values as positive values (typically unsigned char), -plus an EOF value outside that range, specified by the value of the function -std::char_traits::eof(). This value is typically -1, but could be any -arbitrary value which is not a valid char value. -*/ -struct input_adapter_protocol -{ - /// get a character [0,255] or std::char_traits::eof(). - virtual std::char_traits::int_type get_character() = 0; - /// restore the last non-eof() character to input - virtual void unget_character() = 0; - virtual ~input_adapter_protocol() = default; -}; - -/// a type to simplify interfaces -using input_adapter_t = std::shared_ptr; - -/*! -Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at -beginning of input. Does not support changing the underlying std::streambuf -in mid-input. Maintains underlying std::istream and std::streambuf to support -subsequent use of standard std::istream operations to process any input -characters following those used in parsing the JSON input. Clears the -std::istream flags; any input errors (e.g., EOF) will be detected by the first -subsequent call for input from the std::istream. -*/ -class input_stream_adapter : public input_adapter_protocol -{ - public: - ~input_stream_adapter() override - { - // clear stream flags; we use underlying streambuf I/O, do not - // maintain ifstream flags - is.clear(); - } - - explicit input_stream_adapter(std::istream& i) - : is(i), sb(*i.rdbuf()) - { - // skip byte order mark - std::char_traits::int_type c; - if ((c = get_character()) == 0xEF) - { - if ((c = get_character()) == 0xBB) - { - if ((c = get_character()) == 0xBF) - { - return; // Ignore BOM - } - else if (c != std::char_traits::eof()) - { - is.unget(); - } - is.putback('\xBB'); - } - else if (c != std::char_traits::eof()) - { - is.unget(); - } - is.putback('\xEF'); - } - else if (c != std::char_traits::eof()) - { - is.unget(); // no byte order mark; process as usual - } - } - - // delete because of pointer members - input_stream_adapter(const input_stream_adapter&) = delete; - input_stream_adapter& operator=(input_stream_adapter&) = delete; - - // std::istream/std::streambuf use std::char_traits::to_int_type, to - // ensure that std::char_traits::eof() and the character 0xFF do not - // end up as the same value, eg. 0xFFFFFFFF. - std::char_traits::int_type get_character() override - { - return sb.sbumpc(); - } - - void unget_character() override - { - sb.sungetc(); // is.unget() avoided for performance - } - - private: - /// the associated input stream - std::istream& is; - std::streambuf& sb; -}; - -/// input adapter for buffer input -class input_buffer_adapter : public input_adapter_protocol -{ - public: - input_buffer_adapter(const char* b, const std::size_t l) - : cursor(b), limit(b + l), start(b) - { - // skip byte order mark - if (l >= 3 and b[0] == '\xEF' and b[1] == '\xBB' and b[2] == '\xBF') - { - cursor += 3; - } - } - - // delete because of pointer members - input_buffer_adapter(const input_buffer_adapter&) = delete; - input_buffer_adapter& operator=(input_buffer_adapter&) = delete; - - std::char_traits::int_type get_character() noexcept override - { - if (JSON_LIKELY(cursor < limit)) - { - return std::char_traits::to_int_type(*(cursor++)); - } - - return std::char_traits::eof(); - } - - void unget_character() noexcept override - { - if (JSON_LIKELY(cursor > start)) - { - --cursor; - } - } - - private: - /// pointer to the current character - const char* cursor; - /// pointer past the last character - const char* limit; - /// pointer to the first character - const char* start; -}; - -class input_adapter -{ - public: - // native support - - /// input adapter for input stream - input_adapter(std::istream& i) - : ia(std::make_shared(i)) {} - - /// input adapter for input stream - input_adapter(std::istream&& i) - : ia(std::make_shared(i)) {} - - /// input adapter for buffer - template::value and - std::is_integral::type>::value and - sizeof(typename std::remove_pointer::type) == 1, - int>::type = 0> - input_adapter(CharT b, std::size_t l) - : ia(std::make_shared(reinterpret_cast(b), l)) {} - - // derived support - - /// input adapter for string literal - template::value and - std::is_integral::type>::value and - sizeof(typename std::remove_pointer::type) == 1, - int>::type = 0> - input_adapter(CharT b) - : input_adapter(reinterpret_cast(b), - std::strlen(reinterpret_cast(b))) {} - - /// input adapter for iterator range with contiguous storage - template::iterator_category, std::random_access_iterator_tag>::value, - int>::type = 0> - input_adapter(IteratorType first, IteratorType last) - { - // assertion to check that the iterator range is indeed contiguous, - // see http://stackoverflow.com/a/35008842/266378 for more discussion - assert(std::accumulate( - first, last, std::pair(true, 0), - [&first](std::pair res, decltype(*first) val) - { - res.first &= (val == *(std::next(std::addressof(*first), res.second++))); - return res; - }).first); - - // assertion to check that each element is 1 byte long - static_assert( - sizeof(typename std::iterator_traits::value_type) == 1, - "each element in the iterator range must have the size of 1 byte"); - - const auto len = static_cast(std::distance(first, last)); - if (JSON_LIKELY(len > 0)) - { - // there is at least one element: use the address of first - ia = std::make_shared(reinterpret_cast(&(*first)), len); - } - else - { - // the address of first cannot be used: use nullptr - ia = std::make_shared(nullptr, len); - } - } - - /// input adapter for array - template - input_adapter(T (&array)[N]) - : input_adapter(std::begin(array), std::end(array)) {} - - /// input adapter for contiguous container - template::value and - std::is_base_of()))>::iterator_category>::value, - int>::type = 0> - input_adapter(const ContiguousContainer& c) - : input_adapter(std::begin(c), std::end(c)) {} - - operator input_adapter_t() - { - return ia; - } - - private: - /// the actual adapter - input_adapter_t ia = nullptr; -}; -} -} - -#endif - -/*** End of inlined file: input_adapters.hpp ***/ - -namespace nlohmann -{ -namespace detail -{ -/////////// -// lexer // -/////////// - -/*! -@brief lexical analysis - -This class organizes the lexical analysis during JSON deserialization. -*/ -template -class lexer -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - - public: - /// token types for the parser - enum class token_type - { - uninitialized, ///< indicating the scanner is uninitialized - literal_true, ///< the `true` literal - literal_false, ///< the `false` literal - literal_null, ///< the `null` literal - value_string, ///< a string -- use get_string() for actual value - value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value - value_integer, ///< a signed integer -- use get_number_integer() for actual value - value_float, ///< an floating point number -- use get_number_float() for actual value - begin_array, ///< the character for array begin `[` - begin_object, ///< the character for object begin `{` - end_array, ///< the character for array end `]` - end_object, ///< the character for object end `}` - name_separator, ///< the name separator `:` - value_separator, ///< the value separator `,` - parse_error, ///< indicating a parse error - end_of_input, ///< indicating the end of the input buffer - literal_or_value ///< a literal or the begin of a value (only for diagnostics) - }; - - /// return name of values of type token_type (only used for errors) - static const char* token_type_name(const token_type t) noexcept - { - switch (t) - { - case token_type::uninitialized: - return ""; - case token_type::literal_true: - return "true literal"; - case token_type::literal_false: - return "false literal"; - case token_type::literal_null: - return "null literal"; - case token_type::value_string: - return "string literal"; - case lexer::token_type::value_unsigned: - case lexer::token_type::value_integer: - case lexer::token_type::value_float: - return "number literal"; - case token_type::begin_array: - return "'['"; - case token_type::begin_object: - return "'{'"; - case token_type::end_array: - return "']'"; - case token_type::end_object: - return "'}'"; - case token_type::name_separator: - return "':'"; - case token_type::value_separator: - return "','"; - case token_type::parse_error: - return ""; - case token_type::end_of_input: - return "end of input"; - case token_type::literal_or_value: - return "'[', '{', or a literal"; - default: // catch non-enum values - return "unknown token"; // LCOV_EXCL_LINE - } - } - - explicit lexer(detail::input_adapter_t adapter) - : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {} - - // delete because of pointer members - lexer(const lexer&) = delete; - lexer& operator=(lexer&) = delete; - - private: - ///////////////////// - // locales - ///////////////////// - - /// return the locale-dependent decimal point - static char get_decimal_point() noexcept - { - const auto loc = localeconv(); - assert(loc != nullptr); - return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); - } - - ///////////////////// - // scan functions - ///////////////////// - - /*! - @brief get codepoint from 4 hex characters following `\u` - - For input "\u c1 c2 c3 c4" the codepoint is: - (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 - = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) - - Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' - must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The - conversion is done by subtracting the offset (0x30, 0x37, and 0x57) - between the ASCII value of the character and the desired integer value. - - @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or - non-hex character) - */ - int get_codepoint() - { - // this function only makes sense after reading `\u` - assert(current == 'u'); - int codepoint = 0; - - const auto factors = { 12, 8, 4, 0 }; - for (const auto factor : factors) - { - get(); - - if (current >= '0' and current <= '9') - { - codepoint += ((current - 0x30) << factor); - } - else if (current >= 'A' and current <= 'F') - { - codepoint += ((current - 0x37) << factor); - } - else if (current >= 'a' and current <= 'f') - { - codepoint += ((current - 0x57) << factor); - } - else - { - return -1; - } - } - - assert(0x0000 <= codepoint and codepoint <= 0xFFFF); - return codepoint; - } - - /*! - @brief check if the next byte(s) are inside a given range - - Adds the current byte and, for each passed range, reads a new byte and - checks if it is inside the range. If a violation was detected, set up an - error message and return false. Otherwise, return true. - - @param[in] ranges list of integers; interpreted as list of pairs of - inclusive lower and upper bound, respectively - - @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, - 1, 2, or 3 pairs. This precondition is enforced by an assertion. - - @return true if and only if no range violation was detected - */ - bool next_byte_in_range(std::initializer_list ranges) - { - assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6); - add(current); - - for (auto range = ranges.begin(); range != ranges.end(); ++range) - { - get(); - if (JSON_LIKELY(*range <= current and current <= *(++range))) - { - add(current); - } - else - { - error_message = "invalid string: ill-formed UTF-8 byte"; - return false; - } - } - - return true; - } - - /*! - @brief scan a string literal - - This function scans a string according to Sect. 7 of RFC 7159. While - scanning, bytes are escaped and copied into buffer yytext. Then the function - returns successfully, yytext is *not* null-terminated (as it may contain \0 - bytes), and yytext.size() is the number of bytes in the string. - - @return token_type::value_string if string could be successfully scanned, - token_type::parse_error otherwise - - @note In case of errors, variable error_message contains a textual - description. - */ - token_type scan_string() - { - // reset yytext (ignore opening quote) - reset(); - - // we entered the function by reading an open quote - assert(current == '\"'); - - while (true) - { - // get next character - switch (get()) - { - // end of file while parsing string - case std::char_traits::eof(): - { - error_message = "invalid string: missing closing quote"; - return token_type::parse_error; - } - - // closing quote - case '\"': - { - return token_type::value_string; - } - - // escapes - case '\\': - { - switch (get()) - { - // quotation mark - case '\"': - add('\"'); - break; - // reverse solidus - case '\\': - add('\\'); - break; - // solidus - case '/': - add('/'); - break; - // backspace - case 'b': - add('\b'); - break; - // form feed - case 'f': - add('\f'); - break; - // line feed - case 'n': - add('\n'); - break; - // carriage return - case 'r': - add('\r'); - break; - // tab - case 't': - add('\t'); - break; - - // unicode escapes - case 'u': - { - const int codepoint1 = get_codepoint(); - int codepoint = codepoint1; // start with codepoint1 - - if (JSON_UNLIKELY(codepoint1 == -1)) - { - error_message = "invalid string: '\\u' must be followed by 4 hex digits"; - return token_type::parse_error; - } - - // check if code point is a high surrogate - if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF) - { - // expect next \uxxxx entry - if (JSON_LIKELY(get() == '\\' and get() == 'u')) - { - const int codepoint2 = get_codepoint(); - - if (JSON_UNLIKELY(codepoint2 == -1)) - { - error_message = "invalid string: '\\u' must be followed by 4 hex digits"; - return token_type::parse_error; - } - - // check if codepoint2 is a low surrogate - if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF)) - { - // overwrite codepoint - codepoint = - // high surrogate occupies the most significant 22 bits - (codepoint1 << 10) - // low surrogate occupies the least significant 15 bits - + codepoint2 - // there is still the 0xD800, 0xDC00 and 0x10000 noise - // in the result so we have to subtract with: - // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 - - 0x35FDC00; - } - else - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; - return token_type::parse_error; - } - } - else - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; - return token_type::parse_error; - } - } - else - { - if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF)) - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; - return token_type::parse_error; - } - } - - // result of the above calculation yields a proper codepoint - assert(0x00 <= codepoint and codepoint <= 0x10FFFF); - - // translate codepoint into bytes - if (codepoint < 0x80) - { - // 1-byte characters: 0xxxxxxx (ASCII) - add(codepoint); - } - else if (codepoint <= 0x7FF) - { - // 2-byte characters: 110xxxxx 10xxxxxx - add(0xC0 | (codepoint >> 6)); - add(0x80 | (codepoint & 0x3F)); - } - else if (codepoint <= 0xFFFF) - { - // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx - add(0xE0 | (codepoint >> 12)); - add(0x80 | ((codepoint >> 6) & 0x3F)); - add(0x80 | (codepoint & 0x3F)); - } - else - { - // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - add(0xF0 | (codepoint >> 18)); - add(0x80 | ((codepoint >> 12) & 0x3F)); - add(0x80 | ((codepoint >> 6) & 0x3F)); - add(0x80 | (codepoint & 0x3F)); - } - - break; - } - - // other characters after escape - default: - error_message = "invalid string: forbidden character after backslash"; - return token_type::parse_error; - } - - break; - } - - // invalid control characters - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - { - error_message = "invalid string: control character must be escaped"; - return token_type::parse_error; - } - - // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) - case 0x20: - case 0x21: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x7F: - { - add(current); - break; - } - - // U+0080..U+07FF: bytes C2..DF 80..BF - case 0xC2: - case 0xC3: - case 0xC4: - case 0xC5: - case 0xC6: - case 0xC7: - case 0xC8: - case 0xC9: - case 0xCA: - case 0xCB: - case 0xCC: - case 0xCD: - case 0xCE: - case 0xCF: - case 0xD0: - case 0xD1: - case 0xD2: - case 0xD3: - case 0xD4: - case 0xD5: - case 0xD6: - case 0xD7: - case 0xD8: - case 0xD9: - case 0xDA: - case 0xDB: - case 0xDC: - case 0xDD: - case 0xDE: - case 0xDF: - { - if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF}))) - { - return token_type::parse_error; - } - break; - } - - // U+0800..U+0FFF: bytes E0 A0..BF 80..BF - case 0xE0: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF - // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF - case 0xE1: - case 0xE2: - case 0xE3: - case 0xE4: - case 0xE5: - case 0xE6: - case 0xE7: - case 0xE8: - case 0xE9: - case 0xEA: - case 0xEB: - case 0xEC: - case 0xEE: - case 0xEF: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+D000..U+D7FF: bytes ED 80..9F 80..BF - case 0xED: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF - case 0xF0: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF - case 0xF1: - case 0xF2: - case 0xF3: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF - case 0xF4: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // remaining bytes (80..C1 and F5..FF) are ill-formed - default: - { - error_message = "invalid string: ill-formed UTF-8 byte"; - return token_type::parse_error; - } - } - } - } - - static void strtof(float& f, const char* str, char** endptr) noexcept - { - f = std::strtof(str, endptr); - } - - static void strtof(double& f, const char* str, char** endptr) noexcept - { - f = std::strtod(str, endptr); - } - - static void strtof(long double& f, const char* str, char** endptr) noexcept - { - f = std::strtold(str, endptr); - } - - /*! - @brief scan a number literal - - This function scans a string according to Sect. 6 of RFC 7159. - - The function is realized with a deterministic finite state machine derived - from the grammar described in RFC 7159. Starting in state "init", the - input is read and used to determined the next state. Only state "done" - accepts the number. State "error" is a trap state to model errors. In the - table below, "anything" means any character but the ones listed before. - - state | 0 | 1-9 | e E | + | - | . | anything - ---------|----------|----------|----------|---------|---------|----------|----------- - init | zero | any1 | [error] | [error] | minus | [error] | [error] - minus | zero | any1 | [error] | [error] | [error] | [error] | [error] - zero | done | done | exponent | done | done | decimal1 | done - any1 | any1 | any1 | exponent | done | done | decimal1 | done - decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error] - decimal2 | decimal2 | decimal2 | exponent | done | done | done | done - exponent | any2 | any2 | [error] | sign | sign | [error] | [error] - sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] - any2 | any2 | any2 | done | done | done | done | done - - The state machine is realized with one label per state (prefixed with - "scan_number_") and `goto` statements between them. The state machine - contains cycles, but any cycle can be left when EOF is read. Therefore, - the function is guaranteed to terminate. - - During scanning, the read bytes are stored in yytext. This string is - then converted to a signed integer, an unsigned integer, or a - floating-point number. - - @return token_type::value_unsigned, token_type::value_integer, or - token_type::value_float if number could be successfully scanned, - token_type::parse_error otherwise - - @note The scanner is independent of the current locale. Internally, the - locale's decimal point is used instead of `.` to work with the - locale-dependent converters. - */ - token_type scan_number() - { - // reset yytext to store the number's bytes - reset(); - - // the type of the parsed number; initially set to unsigned; will be - // changed if minus sign, decimal point or exponent is read - token_type number_type = token_type::value_unsigned; - - // state (init): we just found out we need to scan a number - switch (current) - { - case '-': - { - add(current); - goto scan_number_minus; - } - - case '0': - { - add(current); - goto scan_number_zero; - } - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - default: - { - // all other characters are rejected outside scan_number() - assert(false); // LCOV_EXCL_LINE - } - } - -scan_number_minus: - // state: we just parsed a leading minus sign - number_type = token_type::value_integer; - switch (get()) - { - case '0': - { - add(current); - goto scan_number_zero; - } - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - default: - { - error_message = "invalid number; expected digit after '-'"; - return token_type::parse_error; - } - } - -scan_number_zero: - // state: we just parse a zero (maybe with a leading minus sign) - switch (get()) - { - case '.': - { - add(decimal_point_char); - goto scan_number_decimal1; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_any1: - // state: we just parsed a number 0-9 (maybe with a leading minus sign) - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - case '.': - { - add(decimal_point_char); - goto scan_number_decimal1; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_decimal1: - // state: we just parsed a decimal point - number_type = token_type::value_float; - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_decimal2; - } - - default: - { - error_message = "invalid number; expected digit after '.'"; - return token_type::parse_error; - } - } - -scan_number_decimal2: - // we just parsed at least one number after a decimal point - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_decimal2; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_exponent: - // we just parsed an exponent - number_type = token_type::value_float; - switch (get()) - { - case '+': - case '-': - { - add(current); - goto scan_number_sign; - } - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - { - error_message = - "invalid number; expected '+', '-', or digit after exponent"; - return token_type::parse_error; - } - } - -scan_number_sign: - // we just parsed an exponent sign - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - { - error_message = "invalid number; expected digit after exponent sign"; - return token_type::parse_error; - } - } - -scan_number_any2: - // we just parsed a number after the exponent or exponent sign - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - goto scan_number_done; - } - -scan_number_done: - // unget the character after the number (we only read it to know that - // we are done scanning a number) - unget(); - - char* endptr = nullptr; - errno = 0; - - // try to parse integers first and fall back to floats - if (number_type == token_type::value_unsigned) - { - const auto x = std::strtoull(yytext.data(), &endptr, 10); - - // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); - - if (errno == 0) - { - value_unsigned = static_cast(x); - if (value_unsigned == x) - { - return token_type::value_unsigned; - } - } - } - else if (number_type == token_type::value_integer) - { - const auto x = std::strtoll(yytext.data(), &endptr, 10); - - // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); - - if (errno == 0) - { - value_integer = static_cast(x); - if (value_integer == x) - { - return token_type::value_integer; - } - } - } - - // this code is reached if we parse a floating-point number or if an - // integer conversion above failed - strtof(value_float, yytext.data(), &endptr); - - // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); - - return token_type::value_float; - } - - /*! - @param[in] literal_text the literal text to expect - @param[in] length the length of the passed literal text - @param[in] return_type the token type to return on success - */ - token_type scan_literal(const char* literal_text, const std::size_t length, - token_type return_type) - { - assert(current == literal_text[0]); - for (std::size_t i = 1; i < length; ++i) - { - if (JSON_UNLIKELY(get() != literal_text[i])) - { - error_message = "invalid literal"; - return token_type::parse_error; - } - } - return return_type; - } - - ///////////////////// - // input management - ///////////////////// - - /// reset yytext; current character is beginning of token - void reset() noexcept - { - yytext.clear(); - token_string.clear(); - token_string.push_back(std::char_traits::to_char_type(current)); - } - - /* - @brief get next character from the input - - This function provides the interface to the used input adapter. It does - not throw in case the input reached EOF, but returns a - `std::char_traits::eof()` in that case. Stores the scanned characters - for use in error messages. - - @return character read from the input - */ - std::char_traits::int_type get() - { - ++chars_read; - current = ia->get_character(); - if (JSON_LIKELY(current != std::char_traits::eof())) - { - token_string.push_back(std::char_traits::to_char_type(current)); - } - return current; - } - - /// unget current character (return it again on next get) - void unget() - { - --chars_read; - if (JSON_LIKELY(current != std::char_traits::eof())) - { - ia->unget_character(); - assert(token_string.size() != 0); - token_string.pop_back(); - } - } - - /// add a character to yytext - void add(int c) - { - yytext.push_back(std::char_traits::to_char_type(c)); - } - - public: - ///////////////////// - // value getters - ///////////////////// - - /// return integer value - constexpr number_integer_t get_number_integer() const noexcept - { - return value_integer; - } - - /// return unsigned integer value - constexpr number_unsigned_t get_number_unsigned() const noexcept - { - return value_unsigned; - } - - /// return floating-point value - constexpr number_float_t get_number_float() const noexcept - { - return value_float; - } - - /// return current string value (implicitly resets the token; useful only once) - std::string move_string() - { - return std::move(yytext); - } - - ///////////////////// - // diagnostics - ///////////////////// - - /// return position of last read token - constexpr std::size_t get_position() const noexcept - { - return chars_read; - } - - /// return the last read token (for errors only). Will never contain EOF - /// (an arbitrary value that is not a valid char value, often -1), because - /// 255 may legitimately occur. May contain NUL, which should be escaped. - std::string get_token_string() const - { - // escape control characters - std::string result; - for (const auto c : token_string) - { - if ('\x00' <= c and c <= '\x1F') - { - // escape control characters - std::stringstream ss; - ss << "(c) << ">"; - result += ss.str(); - } - else - { - // add character as is - result.push_back(c); - } - } - - return result; - } - - /// return syntax error message - constexpr const char* get_error_message() const noexcept - { - return error_message; - } - - ///////////////////// - // actual scanner - ///////////////////// - - token_type scan() - { - // read next character and ignore whitespace - do - { - get(); - } - while (current == ' ' or current == '\t' or current == '\n' or current == '\r'); - - switch (current) - { - // structural characters - case '[': - return token_type::begin_array; - case ']': - return token_type::end_array; - case '{': - return token_type::begin_object; - case '}': - return token_type::end_object; - case ':': - return token_type::name_separator; - case ',': - return token_type::value_separator; - - // literals - case 't': - return scan_literal("true", 4, token_type::literal_true); - case 'f': - return scan_literal("false", 5, token_type::literal_false); - case 'n': - return scan_literal("null", 4, token_type::literal_null); - - // string - case '\"': - return scan_string(); - - // number - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - return scan_number(); - - // end of input (the null byte is needed when parsing from - // string literals) - case '\0': - case std::char_traits::eof(): - return token_type::end_of_input; - - // error - default: - error_message = "invalid literal"; - return token_type::parse_error; - } - } - - private: - /// input adapter - detail::input_adapter_t ia = nullptr; - - /// the current character - std::char_traits::int_type current = std::char_traits::eof(); - - /// the number of characters read - std::size_t chars_read = 0; - - /// raw input token string (for error messages) - std::vector token_string {}; - - /// buffer for variable-length tokens (numbers, strings) - std::string yytext {}; - - /// a description of occurred lexer errors - const char* error_message = ""; - - // number values - number_integer_t value_integer = 0; - number_unsigned_t value_unsigned = 0; - number_float_t value_float = 0; - - /// the decimal point - const char decimal_point_char = '.'; -}; -} -} - -#endif - -/*** End of inlined file: lexer.hpp ***/ - - -/*** Start of inlined file: parser.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP - -#include // assert -#include // isfinite -#include // uint8_t -#include // function -#include // string -#include // move - - -/*** Start of inlined file: lexer.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP - -#include // localeconv -#include // size_t -#include // strtof, strtod, strtold, strtoll, strtoull -#include // initializer_list -#include // hex, uppercase -#include // setw, setfill -#include // stringstream -#include // char_traits, string -#include // vector - -namespace nlohmann -{ -namespace detail -{ -/////////// -// lexer // -/////////// - -/*! -@brief lexical analysis - -This class organizes the lexical analysis during JSON deserialization. -*/ -template -class lexer -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - - public: - /// token types for the parser - enum class token_type - { - uninitialized, ///< indicating the scanner is uninitialized - literal_true, ///< the `true` literal - literal_false, ///< the `false` literal - literal_null, ///< the `null` literal - value_string, ///< a string -- use get_string() for actual value - value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value - value_integer, ///< a signed integer -- use get_number_integer() for actual value - value_float, ///< an floating point number -- use get_number_float() for actual value - begin_array, ///< the character for array begin `[` - begin_object, ///< the character for object begin `{` - end_array, ///< the character for array end `]` - end_object, ///< the character for object end `}` - name_separator, ///< the name separator `:` - value_separator, ///< the value separator `,` - parse_error, ///< indicating a parse error - end_of_input, ///< indicating the end of the input buffer - literal_or_value ///< a literal or the begin of a value (only for diagnostics) - }; - - /// return name of values of type token_type (only used for errors) - static const char* token_type_name(const token_type t) noexcept - { - switch (t) - { - case token_type::uninitialized: - return ""; - case token_type::literal_true: - return "true literal"; - case token_type::literal_false: - return "false literal"; - case token_type::literal_null: - return "null literal"; - case token_type::value_string: - return "string literal"; - case lexer::token_type::value_unsigned: - case lexer::token_type::value_integer: - case lexer::token_type::value_float: - return "number literal"; - case token_type::begin_array: - return "'['"; - case token_type::begin_object: - return "'{'"; - case token_type::end_array: - return "']'"; - case token_type::end_object: - return "'}'"; - case token_type::name_separator: - return "':'"; - case token_type::value_separator: - return "','"; - case token_type::parse_error: - return ""; - case token_type::end_of_input: - return "end of input"; - case token_type::literal_or_value: - return "'[', '{', or a literal"; - default: // catch non-enum values - return "unknown token"; // LCOV_EXCL_LINE - } - } - - explicit lexer(detail::input_adapter_t adapter) - : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {} - - // delete because of pointer members - lexer(const lexer&) = delete; - lexer& operator=(lexer&) = delete; - - private: - ///////////////////// - // locales - ///////////////////// - - /// return the locale-dependent decimal point - static char get_decimal_point() noexcept - { - const auto loc = localeconv(); - assert(loc != nullptr); - return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); - } - - ///////////////////// - // scan functions - ///////////////////// - - /*! - @brief get codepoint from 4 hex characters following `\u` - - For input "\u c1 c2 c3 c4" the codepoint is: - (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 - = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) - - Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' - must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The - conversion is done by subtracting the offset (0x30, 0x37, and 0x57) - between the ASCII value of the character and the desired integer value. - - @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or - non-hex character) - */ - int get_codepoint() - { - // this function only makes sense after reading `\u` - assert(current == 'u'); - int codepoint = 0; - - const auto factors = { 12, 8, 4, 0 }; - for (const auto factor : factors) - { - get(); - - if (current >= '0' and current <= '9') - { - codepoint += ((current - 0x30) << factor); - } - else if (current >= 'A' and current <= 'F') - { - codepoint += ((current - 0x37) << factor); - } - else if (current >= 'a' and current <= 'f') - { - codepoint += ((current - 0x57) << factor); - } - else - { - return -1; - } - } - - assert(0x0000 <= codepoint and codepoint <= 0xFFFF); - return codepoint; - } - - /*! - @brief check if the next byte(s) are inside a given range - - Adds the current byte and, for each passed range, reads a new byte and - checks if it is inside the range. If a violation was detected, set up an - error message and return false. Otherwise, return true. - - @param[in] ranges list of integers; interpreted as list of pairs of - inclusive lower and upper bound, respectively - - @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, - 1, 2, or 3 pairs. This precondition is enforced by an assertion. - - @return true if and only if no range violation was detected - */ - bool next_byte_in_range(std::initializer_list ranges) - { - assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6); - add(current); - - for (auto range = ranges.begin(); range != ranges.end(); ++range) - { - get(); - if (JSON_LIKELY(*range <= current and current <= *(++range))) - { - add(current); - } - else - { - error_message = "invalid string: ill-formed UTF-8 byte"; - return false; - } - } - - return true; - } - - /*! - @brief scan a string literal - - This function scans a string according to Sect. 7 of RFC 7159. While - scanning, bytes are escaped and copied into buffer yytext. Then the function - returns successfully, yytext is *not* null-terminated (as it may contain \0 - bytes), and yytext.size() is the number of bytes in the string. - - @return token_type::value_string if string could be successfully scanned, - token_type::parse_error otherwise - - @note In case of errors, variable error_message contains a textual - description. - */ - token_type scan_string() - { - // reset yytext (ignore opening quote) - reset(); - - // we entered the function by reading an open quote - assert(current == '\"'); - - while (true) - { - // get next character - switch (get()) - { - // end of file while parsing string - case std::char_traits::eof(): - { - error_message = "invalid string: missing closing quote"; - return token_type::parse_error; - } - - // closing quote - case '\"': - { - return token_type::value_string; - } - - // escapes - case '\\': - { - switch (get()) - { - // quotation mark - case '\"': - add('\"'); - break; - // reverse solidus - case '\\': - add('\\'); - break; - // solidus - case '/': - add('/'); - break; - // backspace - case 'b': - add('\b'); - break; - // form feed - case 'f': - add('\f'); - break; - // line feed - case 'n': - add('\n'); - break; - // carriage return - case 'r': - add('\r'); - break; - // tab - case 't': - add('\t'); - break; - - // unicode escapes - case 'u': - { - const int codepoint1 = get_codepoint(); - int codepoint = codepoint1; // start with codepoint1 - - if (JSON_UNLIKELY(codepoint1 == -1)) - { - error_message = "invalid string: '\\u' must be followed by 4 hex digits"; - return token_type::parse_error; - } - - // check if code point is a high surrogate - if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF) - { - // expect next \uxxxx entry - if (JSON_LIKELY(get() == '\\' and get() == 'u')) - { - const int codepoint2 = get_codepoint(); - - if (JSON_UNLIKELY(codepoint2 == -1)) - { - error_message = "invalid string: '\\u' must be followed by 4 hex digits"; - return token_type::parse_error; - } - - // check if codepoint2 is a low surrogate - if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF)) - { - // overwrite codepoint - codepoint = - // high surrogate occupies the most significant 22 bits - (codepoint1 << 10) - // low surrogate occupies the least significant 15 bits - + codepoint2 - // there is still the 0xD800, 0xDC00 and 0x10000 noise - // in the result so we have to subtract with: - // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 - - 0x35FDC00; - } - else - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; - return token_type::parse_error; - } - } - else - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; - return token_type::parse_error; - } - } - else - { - if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF)) - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; - return token_type::parse_error; - } - } - - // result of the above calculation yields a proper codepoint - assert(0x00 <= codepoint and codepoint <= 0x10FFFF); - - // translate codepoint into bytes - if (codepoint < 0x80) - { - // 1-byte characters: 0xxxxxxx (ASCII) - add(codepoint); - } - else if (codepoint <= 0x7FF) - { - // 2-byte characters: 110xxxxx 10xxxxxx - add(0xC0 | (codepoint >> 6)); - add(0x80 | (codepoint & 0x3F)); - } - else if (codepoint <= 0xFFFF) - { - // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx - add(0xE0 | (codepoint >> 12)); - add(0x80 | ((codepoint >> 6) & 0x3F)); - add(0x80 | (codepoint & 0x3F)); - } - else - { - // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - add(0xF0 | (codepoint >> 18)); - add(0x80 | ((codepoint >> 12) & 0x3F)); - add(0x80 | ((codepoint >> 6) & 0x3F)); - add(0x80 | (codepoint & 0x3F)); - } - - break; - } - - // other characters after escape - default: - error_message = "invalid string: forbidden character after backslash"; - return token_type::parse_error; - } - - break; - } - - // invalid control characters - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - { - error_message = "invalid string: control character must be escaped"; - return token_type::parse_error; - } - - // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) - case 0x20: - case 0x21: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x7F: - { - add(current); - break; - } - - // U+0080..U+07FF: bytes C2..DF 80..BF - case 0xC2: - case 0xC3: - case 0xC4: - case 0xC5: - case 0xC6: - case 0xC7: - case 0xC8: - case 0xC9: - case 0xCA: - case 0xCB: - case 0xCC: - case 0xCD: - case 0xCE: - case 0xCF: - case 0xD0: - case 0xD1: - case 0xD2: - case 0xD3: - case 0xD4: - case 0xD5: - case 0xD6: - case 0xD7: - case 0xD8: - case 0xD9: - case 0xDA: - case 0xDB: - case 0xDC: - case 0xDD: - case 0xDE: - case 0xDF: - { - if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF}))) - { - return token_type::parse_error; - } - break; - } - - // U+0800..U+0FFF: bytes E0 A0..BF 80..BF - case 0xE0: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF - // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF - case 0xE1: - case 0xE2: - case 0xE3: - case 0xE4: - case 0xE5: - case 0xE6: - case 0xE7: - case 0xE8: - case 0xE9: - case 0xEA: - case 0xEB: - case 0xEC: - case 0xEE: - case 0xEF: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+D000..U+D7FF: bytes ED 80..9F 80..BF - case 0xED: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF - case 0xF0: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF - case 0xF1: - case 0xF2: - case 0xF3: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF - case 0xF4: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // remaining bytes (80..C1 and F5..FF) are ill-formed - default: - { - error_message = "invalid string: ill-formed UTF-8 byte"; - return token_type::parse_error; - } - } - } - } - - static void strtof(float& f, const char* str, char** endptr) noexcept - { - f = std::strtof(str, endptr); - } - - static void strtof(double& f, const char* str, char** endptr) noexcept - { - f = std::strtod(str, endptr); - } - - static void strtof(long double& f, const char* str, char** endptr) noexcept - { - f = std::strtold(str, endptr); - } - - /*! - @brief scan a number literal - - This function scans a string according to Sect. 6 of RFC 7159. - - The function is realized with a deterministic finite state machine derived - from the grammar described in RFC 7159. Starting in state "init", the - input is read and used to determined the next state. Only state "done" - accepts the number. State "error" is a trap state to model errors. In the - table below, "anything" means any character but the ones listed before. - - state | 0 | 1-9 | e E | + | - | . | anything - ---------|----------|----------|----------|---------|---------|----------|----------- - init | zero | any1 | [error] | [error] | minus | [error] | [error] - minus | zero | any1 | [error] | [error] | [error] | [error] | [error] - zero | done | done | exponent | done | done | decimal1 | done - any1 | any1 | any1 | exponent | done | done | decimal1 | done - decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error] - decimal2 | decimal2 | decimal2 | exponent | done | done | done | done - exponent | any2 | any2 | [error] | sign | sign | [error] | [error] - sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] - any2 | any2 | any2 | done | done | done | done | done - - The state machine is realized with one label per state (prefixed with - "scan_number_") and `goto` statements between them. The state machine - contains cycles, but any cycle can be left when EOF is read. Therefore, - the function is guaranteed to terminate. - - During scanning, the read bytes are stored in yytext. This string is - then converted to a signed integer, an unsigned integer, or a - floating-point number. - - @return token_type::value_unsigned, token_type::value_integer, or - token_type::value_float if number could be successfully scanned, - token_type::parse_error otherwise - - @note The scanner is independent of the current locale. Internally, the - locale's decimal point is used instead of `.` to work with the - locale-dependent converters. - */ - token_type scan_number() - { - // reset yytext to store the number's bytes - reset(); - - // the type of the parsed number; initially set to unsigned; will be - // changed if minus sign, decimal point or exponent is read - token_type number_type = token_type::value_unsigned; - - // state (init): we just found out we need to scan a number - switch (current) - { - case '-': - { - add(current); - goto scan_number_minus; - } - - case '0': - { - add(current); - goto scan_number_zero; - } - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - default: - { - // all other characters are rejected outside scan_number() - assert(false); // LCOV_EXCL_LINE - } - } - -scan_number_minus: - // state: we just parsed a leading minus sign - number_type = token_type::value_integer; - switch (get()) - { - case '0': - { - add(current); - goto scan_number_zero; - } - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - default: - { - error_message = "invalid number; expected digit after '-'"; - return token_type::parse_error; - } - } - -scan_number_zero: - // state: we just parse a zero (maybe with a leading minus sign) - switch (get()) - { - case '.': - { - add(decimal_point_char); - goto scan_number_decimal1; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_any1: - // state: we just parsed a number 0-9 (maybe with a leading minus sign) - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - case '.': - { - add(decimal_point_char); - goto scan_number_decimal1; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_decimal1: - // state: we just parsed a decimal point - number_type = token_type::value_float; - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_decimal2; - } - - default: - { - error_message = "invalid number; expected digit after '.'"; - return token_type::parse_error; - } - } - -scan_number_decimal2: - // we just parsed at least one number after a decimal point - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_decimal2; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_exponent: - // we just parsed an exponent - number_type = token_type::value_float; - switch (get()) - { - case '+': - case '-': - { - add(current); - goto scan_number_sign; - } - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - { - error_message = - "invalid number; expected '+', '-', or digit after exponent"; - return token_type::parse_error; - } - } - -scan_number_sign: - // we just parsed an exponent sign - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - { - error_message = "invalid number; expected digit after exponent sign"; - return token_type::parse_error; - } - } - -scan_number_any2: - // we just parsed a number after the exponent or exponent sign - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - goto scan_number_done; - } - -scan_number_done: - // unget the character after the number (we only read it to know that - // we are done scanning a number) - unget(); - - char* endptr = nullptr; - errno = 0; - - // try to parse integers first and fall back to floats - if (number_type == token_type::value_unsigned) - { - const auto x = std::strtoull(yytext.data(), &endptr, 10); - - // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); - - if (errno == 0) - { - value_unsigned = static_cast(x); - if (value_unsigned == x) - { - return token_type::value_unsigned; - } - } - } - else if (number_type == token_type::value_integer) - { - const auto x = std::strtoll(yytext.data(), &endptr, 10); - - // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); - - if (errno == 0) - { - value_integer = static_cast(x); - if (value_integer == x) - { - return token_type::value_integer; - } - } - } - - // this code is reached if we parse a floating-point number or if an - // integer conversion above failed - strtof(value_float, yytext.data(), &endptr); - - // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); - - return token_type::value_float; - } - - /*! - @param[in] literal_text the literal text to expect - @param[in] length the length of the passed literal text - @param[in] return_type the token type to return on success - */ - token_type scan_literal(const char* literal_text, const std::size_t length, - token_type return_type) - { - assert(current == literal_text[0]); - for (std::size_t i = 1; i < length; ++i) - { - if (JSON_UNLIKELY(get() != literal_text[i])) - { - error_message = "invalid literal"; - return token_type::parse_error; - } - } - return return_type; - } - - ///////////////////// - // input management - ///////////////////// - - /// reset yytext; current character is beginning of token - void reset() noexcept - { - yytext.clear(); - token_string.clear(); - token_string.push_back(std::char_traits::to_char_type(current)); - } - - /* - @brief get next character from the input - - This function provides the interface to the used input adapter. It does - not throw in case the input reached EOF, but returns a - `std::char_traits::eof()` in that case. Stores the scanned characters - for use in error messages. - - @return character read from the input - */ - std::char_traits::int_type get() - { - ++chars_read; - current = ia->get_character(); - if (JSON_LIKELY(current != std::char_traits::eof())) - { - token_string.push_back(std::char_traits::to_char_type(current)); - } - return current; - } - - /// unget current character (return it again on next get) - void unget() - { - --chars_read; - if (JSON_LIKELY(current != std::char_traits::eof())) - { - ia->unget_character(); - assert(token_string.size() != 0); - token_string.pop_back(); - } - } - - /// add a character to yytext - void add(int c) - { - yytext.push_back(std::char_traits::to_char_type(c)); - } - - public: - ///////////////////// - // value getters - ///////////////////// - - /// return integer value - constexpr number_integer_t get_number_integer() const noexcept - { - return value_integer; - } - - /// return unsigned integer value - constexpr number_unsigned_t get_number_unsigned() const noexcept - { - return value_unsigned; - } - - /// return floating-point value - constexpr number_float_t get_number_float() const noexcept - { - return value_float; - } - - /// return current string value (implicitly resets the token; useful only once) - std::string move_string() - { - return std::move(yytext); - } - - ///////////////////// - // diagnostics - ///////////////////// - - /// return position of last read token - constexpr std::size_t get_position() const noexcept - { - return chars_read; - } - - /// return the last read token (for errors only). Will never contain EOF - /// (an arbitrary value that is not a valid char value, often -1), because - /// 255 may legitimately occur. May contain NUL, which should be escaped. - std::string get_token_string() const - { - // escape control characters - std::string result; - for (const auto c : token_string) - { - if ('\x00' <= c and c <= '\x1F') - { - // escape control characters - std::stringstream ss; - ss << "(c) << ">"; - result += ss.str(); - } - else - { - // add character as is - result.push_back(c); - } - } - - return result; - } - - /// return syntax error message - constexpr const char* get_error_message() const noexcept - { - return error_message; - } - - ///////////////////// - // actual scanner - ///////////////////// - - token_type scan() - { - // read next character and ignore whitespace - do - { - get(); - } - while (current == ' ' or current == '\t' or current == '\n' or current == '\r'); - - switch (current) - { - // structural characters - case '[': - return token_type::begin_array; - case ']': - return token_type::end_array; - case '{': - return token_type::begin_object; - case '}': - return token_type::end_object; - case ':': - return token_type::name_separator; - case ',': - return token_type::value_separator; - - // literals - case 't': - return scan_literal("true", 4, token_type::literal_true); - case 'f': - return scan_literal("false", 5, token_type::literal_false); - case 'n': - return scan_literal("null", 4, token_type::literal_null); - - // string - case '\"': - return scan_string(); - - // number - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - return scan_number(); - - // end of input (the null byte is needed when parsing from - // string literals) - case '\0': - case std::char_traits::eof(): - return token_type::end_of_input; - - // error - default: - error_message = "invalid literal"; - return token_type::parse_error; - } - } - - private: - /// input adapter - detail::input_adapter_t ia = nullptr; - - /// the current character - std::char_traits::int_type current = std::char_traits::eof(); - - /// the number of characters read - std::size_t chars_read = 0; - - /// raw input token string (for error messages) - std::vector token_string {}; - - /// buffer for variable-length tokens (numbers, strings) - std::string yytext {}; - - /// a description of occurred lexer errors - const char* error_message = ""; - - // number values - number_integer_t value_integer = 0; - number_unsigned_t value_unsigned = 0; - number_float_t value_float = 0; - - /// the decimal point - const char decimal_point_char = '.'; -}; -} -} - -#endif - -/*** End of inlined file: lexer.hpp ***/ - -namespace nlohmann -{ -namespace detail -{ -//////////// -// parser // -//////////// - -/*! -@brief syntax analysis - -This class implements a recursive decent parser. -*/ -template -class parser -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - using lexer_t = lexer; - using token_type = typename lexer_t::token_type; - - public: - enum class parse_event_t : uint8_t - { - /// the parser read `{` and started to process a JSON object - object_start, - /// the parser read `}` and finished processing a JSON object - object_end, - /// the parser read `[` and started to process a JSON array - array_start, - /// the parser read `]` and finished processing a JSON array - array_end, - /// the parser read a key of a value in an object - key, - /// the parser finished reading a JSON value - value - }; - - using parser_callback_t = - std::function; - - /// a parser reading from an input adapter - explicit parser(detail::input_adapter_t adapter, - const parser_callback_t cb = nullptr, - const bool allow_exceptions_ = true) - : callback(cb), m_lexer(adapter), allow_exceptions(allow_exceptions_) - {} - - /*! - @brief public parser interface - - @param[in] strict whether to expect the last token to be EOF - @param[in,out] result parsed JSON value - - @throw parse_error.101 in case of an unexpected token - @throw parse_error.102 if to_unicode fails or surrogate error - @throw parse_error.103 if to_unicode fails - */ - void parse(const bool strict, BasicJsonType& result) - { - // read first token - get_token(); - - parse_internal(true, result); - result.assert_invariant(); - - // in strict mode, input must be completely read - if (strict) - { - get_token(); - expect(token_type::end_of_input); - } - - // in case of an error, return discarded value - if (errored) - { - result = value_t::discarded; - return; - } - - // set top-level value to null if it was discarded by the callback - // function - if (result.is_discarded()) - { - result = nullptr; - } - } - - /*! - @brief public accept interface - - @param[in] strict whether to expect the last token to be EOF - @return whether the input is a proper JSON text - */ - bool accept(const bool strict = true) - { - // read first token - get_token(); - - if (not accept_internal()) - { - return false; - } - - // strict => last token must be EOF - return not strict or (get_token() == token_type::end_of_input); - } - - private: - /*! - @brief the actual parser - @throw parse_error.101 in case of an unexpected token - @throw parse_error.102 if to_unicode fails or surrogate error - @throw parse_error.103 if to_unicode fails - */ - void parse_internal(bool keep, BasicJsonType& result) - { - // never parse after a parse error was detected - assert(not errored); - - // start with a discarded value - if (not result.is_discarded()) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - - switch (last_token) - { - case token_type::begin_object: - { - if (keep) - { - if (callback) - { - keep = callback(depth++, parse_event_t::object_start, result); - } - - if (not callback or keep) - { - // explicitly set result to object to cope with {} - result.m_type = value_t::object; - result.m_value = value_t::object; - } - } - - // read next token - get_token(); - - // closing } -> we are done - if (last_token == token_type::end_object) - { - if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - break; - } - - // parse values - std::string key; - BasicJsonType value; - while (true) - { - // store key - if (not expect(token_type::value_string)) - { - return; - } - key = m_lexer.move_string(); - - bool keep_tag = false; - if (keep) - { - if (callback) - { - BasicJsonType k(key); - keep_tag = callback(depth, parse_event_t::key, k); - } - else - { - keep_tag = true; - } - } - - // parse separator (:) - get_token(); - if (not expect(token_type::name_separator)) - { - return; - } - - // parse and add value - get_token(); - value.m_value.destroy(value.m_type); - value.m_type = value_t::discarded; - parse_internal(keep, value); - - if (JSON_UNLIKELY(errored)) - { - return; - } - - if (keep and keep_tag and not value.is_discarded()) - { - result.m_value.object->emplace(std::move(key), std::move(value)); - } - - // comma -> next value - get_token(); - if (last_token == token_type::value_separator) - { - get_token(); - continue; - } - - // closing } - if (not expect(token_type::end_object)) - { - return; - } - break; - } - - if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - break; - } - - case token_type::begin_array: - { - if (keep) - { - if (callback) - { - keep = callback(depth++, parse_event_t::array_start, result); - } - - if (not callback or keep) - { - // explicitly set result to array to cope with [] - result.m_type = value_t::array; - result.m_value = value_t::array; - } - } - - // read next token - get_token(); - - // closing ] -> we are done - if (last_token == token_type::end_array) - { - if (callback and not callback(--depth, parse_event_t::array_end, result)) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - break; - } - - // parse values - BasicJsonType value; - while (true) - { - // parse value - value.m_value.destroy(value.m_type); - value.m_type = value_t::discarded; - parse_internal(keep, value); - - if (JSON_UNLIKELY(errored)) - { - return; - } - - if (keep and not value.is_discarded()) - { - result.m_value.array->push_back(std::move(value)); - } - - // comma -> next value - get_token(); - if (last_token == token_type::value_separator) - { - get_token(); - continue; - } - - // closing ] - if (not expect(token_type::end_array)) - { - return; - } - break; - } - - if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - break; - } - - case token_type::literal_null: - { - result.m_type = value_t::null; - break; - } - - case token_type::value_string: - { - result.m_type = value_t::string; - result.m_value = m_lexer.move_string(); - break; - } - - case token_type::literal_true: - { - result.m_type = value_t::boolean; - result.m_value = true; - break; - } - - case token_type::literal_false: - { - result.m_type = value_t::boolean; - result.m_value = false; - break; - } - - case token_type::value_unsigned: - { - result.m_type = value_t::number_unsigned; - result.m_value = m_lexer.get_number_unsigned(); - break; - } - - case token_type::value_integer: - { - result.m_type = value_t::number_integer; - result.m_value = m_lexer.get_number_integer(); - break; - } - - case token_type::value_float: - { - result.m_type = value_t::number_float; - result.m_value = m_lexer.get_number_float(); - - // throw in case of infinity or NAN - if (JSON_UNLIKELY(not std::isfinite(result.m_value.number_float))) - { - if (allow_exceptions) - { - JSON_THROW(out_of_range::create(406, "number overflow parsing '" + - m_lexer.get_token_string() + "'")); - } - expect(token_type::uninitialized); - } - break; - } - - case token_type::parse_error: - { - // using "uninitialized" to avoid "expected" message - if (not expect(token_type::uninitialized)) - { - return; - } - break; // LCOV_EXCL_LINE - } - - default: - { - // the last token was unexpected; we expected a value - if (not expect(token_type::literal_or_value)) - { - return; - } - break; // LCOV_EXCL_LINE - } - } - - if (keep and callback and not callback(depth, parse_event_t::value, result)) - { - result.m_type = value_t::discarded; - } - } - - /*! - @brief the actual acceptor - - @invariant 1. The last token is not yet processed. Therefore, the caller - of this function must make sure a token has been read. - 2. When this function returns, the last token is processed. - That is, the last read character was already considered. - - This invariant makes sure that no token needs to be "unput". - */ - bool accept_internal() - { - switch (last_token) - { - case token_type::begin_object: - { - // read next token - get_token(); - - // closing } -> we are done - if (last_token == token_type::end_object) - { - return true; - } - - // parse values - while (true) - { - // parse key - if (last_token != token_type::value_string) - { - return false; - } - - // parse separator (:) - get_token(); - if (last_token != token_type::name_separator) - { - return false; - } - - // parse value - get_token(); - if (not accept_internal()) - { - return false; - } - - // comma -> next value - get_token(); - if (last_token == token_type::value_separator) - { - get_token(); - continue; - } - - // closing } - return (last_token == token_type::end_object); - } - } - - case token_type::begin_array: - { - // read next token - get_token(); - - // closing ] -> we are done - if (last_token == token_type::end_array) - { - return true; - } - - // parse values - while (true) - { - // parse value - if (not accept_internal()) - { - return false; - } - - // comma -> next value - get_token(); - if (last_token == token_type::value_separator) - { - get_token(); - continue; - } - - // closing ] - return (last_token == token_type::end_array); - } - } - - case token_type::value_float: - { - // reject infinity or NAN - return std::isfinite(m_lexer.get_number_float()); - } - - case token_type::literal_false: - case token_type::literal_null: - case token_type::literal_true: - case token_type::value_integer: - case token_type::value_string: - case token_type::value_unsigned: - return true; - - default: // the last token was unexpected - return false; - } - } - - /// get next token from lexer - token_type get_token() - { - return (last_token = m_lexer.scan()); - } - - /*! - @throw parse_error.101 if expected token did not occur - */ - bool expect(token_type t) - { - if (JSON_UNLIKELY(t != last_token)) - { - errored = true; - expected = t; - if (allow_exceptions) - { - throw_exception(); - } - else - { - return false; - } - } - - return true; - } - - [[noreturn]] void throw_exception() const - { - std::string error_msg = "syntax error - "; - if (last_token == token_type::parse_error) - { - error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" + - m_lexer.get_token_string() + "'"; - } - else - { - error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token)); - } - - if (expected != token_type::uninitialized) - { - error_msg += "; expected " + std::string(lexer_t::token_type_name(expected)); - } - - JSON_THROW(parse_error::create(101, m_lexer.get_position(), error_msg)); - } - - private: - /// current level of recursion - int depth = 0; - /// callback function - const parser_callback_t callback = nullptr; - /// the type of the last read token - token_type last_token = token_type::uninitialized; - /// the lexer - lexer_t m_lexer; - /// whether a syntax error occurred - bool errored = false; - /// possible reason for the syntax error - token_type expected = token_type::uninitialized; - /// whether to throw exceptions in case of errors - const bool allow_exceptions = true; -}; -} -} - -#endif - -/*** End of inlined file: parser.hpp ***/ - - -/*** Start of inlined file: primitive_iterator.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP - -#include // not -#include // ptrdiff_t -#include // numeric_limits -#include // ostream - -namespace nlohmann -{ -namespace detail -{ -/* -@brief an iterator for primitive JSON types - -This class models an iterator for primitive JSON types (boolean, number, -string). It's only purpose is to allow the iterator/const_iterator classes -to "iterate" over primitive values. Internally, the iterator is modeled by -a `difference_type` variable. Value begin_value (`0`) models the begin, -end_value (`1`) models past the end. -*/ -class primitive_iterator_t -{ - public: - using difference_type = std::ptrdiff_t; - - constexpr difference_type get_value() const noexcept - { - return m_it; - } - - /// set iterator to a defined beginning - void set_begin() noexcept - { - m_it = begin_value; - } - - /// set iterator to a defined past the end - void set_end() noexcept - { - m_it = end_value; - } - - /// return whether the iterator can be dereferenced - constexpr bool is_begin() const noexcept - { - return m_it == begin_value; - } - - /// return whether the iterator is at end - constexpr bool is_end() const noexcept - { - return m_it == end_value; - } - - friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it == rhs.m_it; - } - - friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it < rhs.m_it; - } - - primitive_iterator_t operator+(difference_type i) - { - auto result = *this; - result += i; - return result; - } - - friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it - rhs.m_it; - } - - friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) - { - return os << it.m_it; - } - - primitive_iterator_t& operator++() - { - ++m_it; - return *this; - } - - primitive_iterator_t const operator++(int) - { - auto result = *this; - m_it++; - return result; - } - - primitive_iterator_t& operator--() - { - --m_it; - return *this; - } - - primitive_iterator_t const operator--(int) - { - auto result = *this; - m_it--; - return result; - } - - primitive_iterator_t& operator+=(difference_type n) - { - m_it += n; - return *this; - } - - primitive_iterator_t& operator-=(difference_type n) - { - m_it -= n; - return *this; - } - - private: - static constexpr difference_type begin_value = 0; - static constexpr difference_type end_value = begin_value + 1; - - /// iterator as signed integer type - difference_type m_it = (std::numeric_limits::min)(); -}; -} -} - -#endif - -/*** End of inlined file: primitive_iterator.hpp ***/ - - -/*** Start of inlined file: internal_iterator.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP - - -/*** Start of inlined file: primitive_iterator.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP - -#include // not -#include // ptrdiff_t -#include // numeric_limits -#include // ostream - -namespace nlohmann -{ -namespace detail -{ -/* -@brief an iterator for primitive JSON types - -This class models an iterator for primitive JSON types (boolean, number, -string). It's only purpose is to allow the iterator/const_iterator classes -to "iterate" over primitive values. Internally, the iterator is modeled by -a `difference_type` variable. Value begin_value (`0`) models the begin, -end_value (`1`) models past the end. -*/ -class primitive_iterator_t -{ - public: - using difference_type = std::ptrdiff_t; - - constexpr difference_type get_value() const noexcept - { - return m_it; - } - - /// set iterator to a defined beginning - void set_begin() noexcept - { - m_it = begin_value; - } - - /// set iterator to a defined past the end - void set_end() noexcept - { - m_it = end_value; - } - - /// return whether the iterator can be dereferenced - constexpr bool is_begin() const noexcept - { - return m_it == begin_value; - } - - /// return whether the iterator is at end - constexpr bool is_end() const noexcept - { - return m_it == end_value; - } - - friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it == rhs.m_it; - } - - friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it < rhs.m_it; - } - - primitive_iterator_t operator+(difference_type i) - { - auto result = *this; - result += i; - return result; - } - - friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it - rhs.m_it; - } - - friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) - { - return os << it.m_it; - } - - primitive_iterator_t& operator++() - { - ++m_it; - return *this; - } - - primitive_iterator_t const operator++(int) - { - auto result = *this; - m_it++; - return result; - } - - primitive_iterator_t& operator--() - { - --m_it; - return *this; - } - - primitive_iterator_t const operator--(int) - { - auto result = *this; - m_it--; - return result; - } - - primitive_iterator_t& operator+=(difference_type n) - { - m_it += n; - return *this; - } - - primitive_iterator_t& operator-=(difference_type n) - { - m_it -= n; - return *this; - } - - private: - static constexpr difference_type begin_value = 0; - static constexpr difference_type end_value = begin_value + 1; - - /// iterator as signed integer type - difference_type m_it = (std::numeric_limits::min)(); -}; -} -} - -#endif - -/*** End of inlined file: primitive_iterator.hpp ***/ - -namespace nlohmann -{ -namespace detail -{ -/*! -@brief an iterator value - -@note This structure could easily be a union, but MSVC currently does not allow -unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. -*/ -template struct internal_iterator -{ - /// iterator for JSON objects - typename BasicJsonType::object_t::iterator object_iterator {}; - /// iterator for JSON arrays - typename BasicJsonType::array_t::iterator array_iterator {}; - /// generic iterator for all other types - primitive_iterator_t primitive_iterator {}; -}; -} -} - -#endif - -/*** End of inlined file: internal_iterator.hpp ***/ - - -/*** Start of inlined file: iter_impl.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP - -#include // not -#include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next -#include // conditional, is_const, remove_const - - -/*** Start of inlined file: internal_iterator.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP - -namespace nlohmann -{ -namespace detail -{ -/*! -@brief an iterator value - -@note This structure could easily be a union, but MSVC currently does not allow -unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. -*/ -template struct internal_iterator -{ - /// iterator for JSON objects - typename BasicJsonType::object_t::iterator object_iterator {}; - /// iterator for JSON arrays - typename BasicJsonType::array_t::iterator array_iterator {}; - /// generic iterator for all other types - primitive_iterator_t primitive_iterator {}; -}; -} -} - -#endif - -/*** End of inlined file: internal_iterator.hpp ***/ - -namespace nlohmann -{ -namespace detail -{ -// forward declare, to be able to friend it later on -template class iteration_proxy; - -/*! -@brief a template for a bidirectional iterator for the @ref basic_json class - -This class implements a both iterators (iterator and const_iterator) for the -@ref basic_json class. - -@note An iterator is called *initialized* when a pointer to a JSON value has - been set (e.g., by a constructor or a copy assignment). If the iterator is - default-constructed, it is *uninitialized* and most methods are undefined. - **The library uses assertions to detect calls on uninitialized iterators.** - -@requirement The class satisfies the following concept requirements: -- -[BidirectionalIterator](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator): - The iterator that can be moved can be moved in both directions (i.e. - incremented and decremented). - -@since version 1.0.0, simplified in version 2.0.9, change to bidirectional - iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593) -*/ -template -class iter_impl -{ - /// allow basic_json to access private members - friend iter_impl::value, typename std::remove_const::type, const BasicJsonType>::type>; - friend BasicJsonType; - friend iteration_proxy; - - using object_t = typename BasicJsonType::object_t; - using array_t = typename BasicJsonType::array_t; - // make sure BasicJsonType is basic_json or const basic_json - static_assert(is_basic_json::type>::value, - "iter_impl only accepts (const) basic_json"); - - public: - - /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. - /// The C++ Standard has never required user-defined iterators to derive from std::iterator. - /// A user-defined iterator should provide publicly accessible typedefs named - /// iterator_category, value_type, difference_type, pointer, and reference. - /// Note that value_type is required to be non-const, even for constant iterators. - using iterator_category = std::bidirectional_iterator_tag; - - /// the type of the values when the iterator is dereferenced - using value_type = typename BasicJsonType::value_type; - /// a type to represent differences between iterators - using difference_type = typename BasicJsonType::difference_type; - /// defines a pointer to the type iterated over (value_type) - using pointer = typename std::conditional::value, - typename BasicJsonType::const_pointer, - typename BasicJsonType::pointer>::type; - /// defines a reference to the type iterated over (value_type) - using reference = - typename std::conditional::value, - typename BasicJsonType::const_reference, - typename BasicJsonType::reference>::type; - - /// default constructor - iter_impl() = default; - - /*! - @brief constructor for a given JSON instance - @param[in] object pointer to a JSON object for this iterator - @pre object != nullptr - @post The iterator is initialized; i.e. `m_object != nullptr`. - */ - explicit iter_impl(pointer object) noexcept : m_object(object) - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - m_it.object_iterator = typename object_t::iterator(); - break; - } - - case value_t::array: - { - m_it.array_iterator = typename array_t::iterator(); - break; - } - - default: - { - m_it.primitive_iterator = primitive_iterator_t(); - break; - } - } - } - - /*! - @note The conventional copy constructor and copy assignment are implicitly - defined. Combined with the following converting constructor and - assignment, they support: (1) copy from iterator to iterator, (2) - copy from const iterator to const iterator, and (3) conversion from - iterator to const iterator. However conversion from const iterator - to iterator is not defined. - */ - - /*! - @brief converting constructor - @param[in] other non-const iterator to copy from - @note It is not checked whether @a other is initialized. - */ - iter_impl(const iter_impl::type>& other) noexcept - : m_object(other.m_object), m_it(other.m_it) {} - - /*! - @brief converting assignment - @param[in,out] other non-const iterator to copy from - @return const/non-const iterator - @note It is not checked whether @a other is initialized. - */ - iter_impl& operator=(const iter_impl::type>& other) noexcept - { - m_object = other.m_object; - m_it = other.m_it; - return *this; - } - - private: - /*! - @brief set the iterator to the first value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_begin() noexcept - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - m_it.object_iterator = m_object->m_value.object->begin(); - break; - } - - case value_t::array: - { - m_it.array_iterator = m_object->m_value.array->begin(); - break; - } - - case value_t::null: - { - // set to end so begin()==end() is true: null is empty - m_it.primitive_iterator.set_end(); - break; - } - - default: - { - m_it.primitive_iterator.set_begin(); - break; - } - } - } - - /*! - @brief set the iterator past the last value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_end() noexcept - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - m_it.object_iterator = m_object->m_value.object->end(); - break; - } - - case value_t::array: - { - m_it.array_iterator = m_object->m_value.array->end(); - break; - } - - default: - { - m_it.primitive_iterator.set_end(); - break; - } - } - } - - public: - /*! - @brief return a reference to the value pointed to by the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator*() const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return m_it.object_iterator->second; - } - - case value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return *m_it.array_iterator; - } - - case value_t::null: - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - - default: - { - if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) - { - return *m_object; - } - - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - } - } - } - - /*! - @brief dereference the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - pointer operator->() const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return &(m_it.object_iterator->second); - } - - case value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return &*m_it.array_iterator; - } - - default: - { - if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) - { - return m_object; - } - - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - } - } - } - - /*! - @brief post-increment (it++) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl const operator++(int) - { - auto result = *this; - ++(*this); - return result; - } - - /*! - @brief pre-increment (++it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator++() - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - std::advance(m_it.object_iterator, 1); - break; - } - - case value_t::array: - { - std::advance(m_it.array_iterator, 1); - break; - } - - default: - { - ++m_it.primitive_iterator; - break; - } - } - - return *this; - } - - /*! - @brief post-decrement (it--) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl const operator--(int) - { - auto result = *this; - --(*this); - return result; - } - - /*! - @brief pre-decrement (--it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator--() - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - std::advance(m_it.object_iterator, -1); - break; - } - - case value_t::array: - { - std::advance(m_it.array_iterator, -1); - break; - } - - default: - { - --m_it.primitive_iterator; - break; - } - } - - return *this; - } - - /*! - @brief comparison: equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator==(const iter_impl& other) const - { - // if objects are not the same, the comparison is undefined - if (JSON_UNLIKELY(m_object != other.m_object)) - { - JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); - } - - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - return (m_it.object_iterator == other.m_it.object_iterator); - - case value_t::array: - return (m_it.array_iterator == other.m_it.array_iterator); - - default: - return (m_it.primitive_iterator == other.m_it.primitive_iterator); - } - } - - /*! - @brief comparison: not equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator!=(const iter_impl& other) const - { - return not operator==(other); - } - - /*! - @brief comparison: smaller - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<(const iter_impl& other) const - { - // if objects are not the same, the comparison is undefined - if (JSON_UNLIKELY(m_object != other.m_object)) - { - JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); - } - - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators")); - - case value_t::array: - return (m_it.array_iterator < other.m_it.array_iterator); - - default: - return (m_it.primitive_iterator < other.m_it.primitive_iterator); - } - } - - /*! - @brief comparison: less than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<=(const iter_impl& other) const - { - return not other.operator < (*this); - } - - /*! - @brief comparison: greater than - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>(const iter_impl& other) const - { - return not operator<=(other); - } - - /*! - @brief comparison: greater than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>=(const iter_impl& other) const - { - return not operator<(other); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator+=(difference_type i) - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); - - case value_t::array: - { - std::advance(m_it.array_iterator, i); - break; - } - - default: - { - m_it.primitive_iterator += i; - break; - } - } - - return *this; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator-=(difference_type i) - { - return operator+=(-i); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator+(difference_type i) const - { - auto result = *this; - result += i; - return result; - } - - /*! - @brief addition of distance and iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - friend iter_impl operator+(difference_type i, const iter_impl& it) - { - auto result = it; - result += i; - return result; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator-(difference_type i) const - { - auto result = *this; - result -= i; - return result; - } - - /*! - @brief return difference - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - difference_type operator-(const iter_impl& other) const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); - - case value_t::array: - return m_it.array_iterator - other.m_it.array_iterator; - - default: - return m_it.primitive_iterator - other.m_it.primitive_iterator; - } - } - - /*! - @brief access to successor - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator[](difference_type n) const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators")); - - case value_t::array: - return *std::next(m_it.array_iterator, n); - - case value_t::null: - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - - default: - { - if (JSON_LIKELY(m_it.primitive_iterator.get_value() == -n)) - { - return *m_object; - } - - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - } - } - } - - /*! - @brief return the key of an object iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - typename object_t::key_type key() const - { - assert(m_object != nullptr); - - if (JSON_LIKELY(m_object->is_object())) - { - return m_it.object_iterator->first; - } - - JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators")); - } - - /*! - @brief return the value of an iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference value() const - { - return operator*(); - } - - private: - /// associated JSON instance - pointer m_object = nullptr; - /// the actual iterator of the associated instance - internal_iterator::type> m_it = {}; -}; -} -} - -#endif - -/*** End of inlined file: iter_impl.hpp ***/ - - -/*** Start of inlined file: iteration_proxy.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP - -#include // size_t -#include // string, to_string - -namespace nlohmann -{ -namespace detail -{ -/// proxy class for the iterator_wrapper functions -template class iteration_proxy -{ - private: - /// helper class for iteration - class iteration_proxy_internal - { - private: - /// the iterator - IteratorType anchor; - /// an index for arrays (used to create key names) - std::size_t array_index = 0; - - public: - explicit iteration_proxy_internal(IteratorType it) noexcept : anchor(it) {} - - /// dereference operator (needed for range-based for) - iteration_proxy_internal& operator*() - { - return *this; - } - - /// increment operator (needed for range-based for) - iteration_proxy_internal& operator++() - { - ++anchor; - ++array_index; - - return *this; - } - - /// inequality operator (needed for range-based for) - bool operator!=(const iteration_proxy_internal& o) const noexcept - { - return anchor != o.anchor; - } - - /// return key of the iterator - std::string key() const - { - assert(anchor.m_object != nullptr); - - switch (anchor.m_object->type()) - { - // use integer array index as key - case value_t::array: - return std::to_string(array_index); - - // use key from the object - case value_t::object: - return anchor.key(); - - // use an empty key for all primitive types - default: - return ""; - } - } - - /// return value of the iterator - typename IteratorType::reference value() const - { - return anchor.value(); - } - }; - - /// the container to iterate - typename IteratorType::reference container; - - public: - /// construct iteration proxy from a container - explicit iteration_proxy(typename IteratorType::reference cont) - : container(cont) {} - - /// return iterator begin (needed for range-based for) - iteration_proxy_internal begin() noexcept - { - return iteration_proxy_internal(container.begin()); - } - - /// return iterator end (needed for range-based for) - iteration_proxy_internal end() noexcept - { - return iteration_proxy_internal(container.end()); - } -}; -} -} - -#endif - -/*** End of inlined file: iteration_proxy.hpp ***/ - - -/*** Start of inlined file: json_reverse_iterator.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP - -#include // ptrdiff_t -#include // reverse_iterator -#include // declval - -namespace nlohmann -{ -namespace detail -{ -////////////////////// -// reverse_iterator // -////////////////////// - -/*! -@brief a template for a reverse iterator class - -@tparam Base the base iterator type to reverse. Valid types are @ref -iterator (to create @ref reverse_iterator) and @ref const_iterator (to -create @ref const_reverse_iterator). - -@requirement The class satisfies the following concept requirements: -- -[BidirectionalIterator](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator): - The iterator that can be moved can be moved in both directions (i.e. - incremented and decremented). -- [OutputIterator](http://en.cppreference.com/w/cpp/concept/OutputIterator): - It is possible to write to the pointed-to element (only if @a Base is - @ref iterator). - -@since version 1.0.0 -*/ -template -class json_reverse_iterator : public std::reverse_iterator -{ - public: - using difference_type = std::ptrdiff_t; - /// shortcut to the reverse iterator adapter - using base_iterator = std::reverse_iterator; - /// the reference type for the pointed-to element - using reference = typename Base::reference; - - /// create reverse iterator from iterator - json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept - : base_iterator(it) {} - - /// create reverse iterator from base class - json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {} - - /// post-increment (it++) - json_reverse_iterator const operator++(int) - { - return static_cast(base_iterator::operator++(1)); - } - - /// pre-increment (++it) - json_reverse_iterator& operator++() - { - return static_cast(base_iterator::operator++()); - } - - /// post-decrement (it--) - json_reverse_iterator const operator--(int) - { - return static_cast(base_iterator::operator--(1)); - } - - /// pre-decrement (--it) - json_reverse_iterator& operator--() - { - return static_cast(base_iterator::operator--()); - } - - /// add to iterator - json_reverse_iterator& operator+=(difference_type i) - { - return static_cast(base_iterator::operator+=(i)); - } - - /// add to iterator - json_reverse_iterator operator+(difference_type i) const - { - return static_cast(base_iterator::operator+(i)); - } - - /// subtract from iterator - json_reverse_iterator operator-(difference_type i) const - { - return static_cast(base_iterator::operator-(i)); - } - - /// return difference - difference_type operator-(const json_reverse_iterator& other) const - { - return base_iterator(*this) - base_iterator(other); - } - - /// access to successor - reference operator[](difference_type n) const - { - return *(this->operator+(n)); - } - - /// return the key of an object iterator - auto key() const -> decltype(std::declval().key()) - { - auto it = --this->base(); - return it.key(); - } - - /// return the value of an iterator - reference value() const - { - auto it = --this->base(); - return it.operator * (); - } -}; -} -} - -#endif - -/*** End of inlined file: json_reverse_iterator.hpp ***/ - - -/*** Start of inlined file: output_adapters.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP - -#include // copy -#include // size_t -#include // streamsize -#include // back_inserter -#include // shared_ptr, make_shared -#include // basic_ostream -#include // basic_string -#include // vector - -namespace nlohmann -{ -namespace detail -{ -/// abstract output adapter interface -template struct output_adapter_protocol -{ - virtual void write_character(CharType c) = 0; - virtual void write_characters(const CharType* s, std::size_t length) = 0; - virtual ~output_adapter_protocol() = default; -}; - -/// a type to simplify interfaces -template -using output_adapter_t = std::shared_ptr>; - -/// output adapter for byte vectors -template -class output_vector_adapter : public output_adapter_protocol -{ - public: - explicit output_vector_adapter(std::vector& vec) : v(vec) {} - - void write_character(CharType c) override - { - v.push_back(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - std::copy(s, s + length, std::back_inserter(v)); - } - - private: - std::vector& v; -}; - -/// output adapter for output streams -template -class output_stream_adapter : public output_adapter_protocol -{ - public: - explicit output_stream_adapter(std::basic_ostream& s) : stream(s) {} - - void write_character(CharType c) override - { - stream.put(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - stream.write(s, static_cast(length)); - } - - private: - std::basic_ostream& stream; -}; - -/// output adapter for basic_string -template -class output_string_adapter : public output_adapter_protocol -{ - public: - explicit output_string_adapter(std::basic_string& s) : str(s) {} - - void write_character(CharType c) override - { - str.push_back(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - str.append(s, length); - } - - private: - std::basic_string& str; -}; - -template -class output_adapter -{ - public: - output_adapter(std::vector& vec) - : oa(std::make_shared>(vec)) {} - - output_adapter(std::basic_ostream& s) - : oa(std::make_shared>(s)) {} - - output_adapter(std::basic_string& s) - : oa(std::make_shared>(s)) {} - - operator output_adapter_t() - { - return oa; - } - - private: - output_adapter_t oa = nullptr; -}; -} -} - -#endif - -/*** End of inlined file: output_adapters.hpp ***/ - - -/*** Start of inlined file: binary_reader.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP - -#include // generate_n -#include // array -#include // assert -#include // ldexp -#include // size_t -#include // uint8_t, uint16_t, uint32_t, uint64_t -#include // memcpy -#include // setw, setfill -#include // hex -#include // back_inserter -#include // numeric_limits -#include // stringstream -#include // char_traits, string -#include // make_pair, move - -namespace nlohmann -{ -namespace detail -{ -/////////////////// -// binary reader // -/////////////////// - -/*! -@brief deserialization of CBOR and MessagePack values -*/ -template -class binary_reader -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - - public: - /*! - @brief create a binary reader - - @param[in] adapter input adapter to read from - */ - explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter)) - { - assert(ia); - } - - /*! - @brief create a JSON value from CBOR input - - @param[in] strict whether to expect the input to be consumed completed - @return JSON value created from CBOR input - - @throw parse_error.110 if input ended unexpectedly or the end of file was - not reached when @a strict was set to true - @throw parse_error.112 if unsupported byte was read - */ - BasicJsonType parse_cbor(const bool strict) - { - const auto res = parse_cbor_internal(); - if (strict) - { - get(); - check_eof(true); - } - return res; - } - - /*! - @brief create a JSON value from MessagePack input - - @param[in] strict whether to expect the input to be consumed completed - @return JSON value created from MessagePack input - - @throw parse_error.110 if input ended unexpectedly or the end of file was - not reached when @a strict was set to true - @throw parse_error.112 if unsupported byte was read - */ - BasicJsonType parse_msgpack(const bool strict) - { - const auto res = parse_msgpack_internal(); - if (strict) - { - get(); - check_eof(true); - } - return res; - } - - /*! - @brief determine system byte order - - @return true if and only if system's byte order is little endian - - @note from http://stackoverflow.com/a/1001328/266378 - */ - static constexpr bool little_endianess(int num = 1) noexcept - { - return (*reinterpret_cast(&num) == 1); - } - - private: - /*! - @param[in] get_char whether a new character should be retrieved from the - input (true, default) or whether the last read - character should be considered instead - */ - BasicJsonType parse_cbor_internal(const bool get_char = true) - { - switch (get_char ? get() : current) - { - // EOF - case std::char_traits::eof(): - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - - // Integer 0x00..0x17 (0..23) - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - return static_cast(current); - - case 0x18: // Unsigned integer (one-byte uint8_t follows) - return get_number(); - - case 0x19: // Unsigned integer (two-byte uint16_t follows) - return get_number(); - - case 0x1A: // Unsigned integer (four-byte uint32_t follows) - return get_number(); - - case 0x1B: // Unsigned integer (eight-byte uint64_t follows) - return get_number(); - - // Negative integer -1-0x00..-1-0x17 (-1..-24) - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - return static_cast(0x20 - 1 - current); - - case 0x38: // Negative integer (one-byte uint8_t follows) - { - // must be uint8_t ! - return static_cast(-1) - get_number(); - } - - case 0x39: // Negative integer -1-n (two-byte uint16_t follows) - { - return static_cast(-1) - get_number(); - } - - case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) - { - return static_cast(-1) - get_number(); - } - - case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) - { - return static_cast(-1) - - static_cast(get_number()); - } - - // UTF-8 string (0x00..0x17 bytes follow) - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: // UTF-8 string (one-byte uint8_t for n follows) - case 0x79: // UTF-8 string (two-byte uint16_t for n follow) - case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) - case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) - case 0x7F: // UTF-8 string (indefinite length) - { - return get_cbor_string(); - } - - // array (0x00..0x17 data items follow) - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - { - return get_cbor_array(current & 0x1F); - } - - case 0x98: // array (one-byte uint8_t for n follows) - { - return get_cbor_array(get_number()); - } - - case 0x99: // array (two-byte uint16_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9A: // array (four-byte uint32_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9B: // array (eight-byte uint64_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9F: // array (indefinite length) - { - BasicJsonType result = value_t::array; - while (get() != 0xFF) - { - result.push_back(parse_cbor_internal(false)); - } - return result; - } - - // map (0x00..0x17 pairs of data items follow) - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - { - return get_cbor_object(current & 0x1F); - } - - case 0xB8: // map (one-byte uint8_t for n follows) - { - return get_cbor_object(get_number()); - } - - case 0xB9: // map (two-byte uint16_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBA: // map (four-byte uint32_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBB: // map (eight-byte uint64_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBF: // map (indefinite length) - { - BasicJsonType result = value_t::object; - while (get() != 0xFF) - { - auto key = get_cbor_string(); - result[key] = parse_cbor_internal(); - } - return result; - } - - case 0xF4: // false - { - return false; - } - - case 0xF5: // true - { - return true; - } - - case 0xF6: // null - { - return value_t::null; - } - - case 0xF9: // Half-Precision Float (two-byte IEEE 754) - { - const int byte1 = get(); - check_eof(); - const int byte2 = get(); - check_eof(); - - // code from RFC 7049, Appendix D, Figure 3: - // As half-precision floating-point numbers were only added - // to IEEE 754 in 2008, today's programming platforms often - // still only have limited support for them. It is very - // easy to include at least decoding support for them even - // without such support. An example of a small decoder for - // half-precision floating-point numbers in the C language - // is shown in Fig. 3. - const int half = (byte1 << 8) + byte2; - const int exp = (half >> 10) & 0x1F; - const int mant = half & 0x3FF; - double val; - if (exp == 0) - { - val = std::ldexp(mant, -24); - } - else if (exp != 31) - { - val = std::ldexp(mant + 1024, exp - 25); - } - else - { - val = (mant == 0) ? std::numeric_limits::infinity() - : std::numeric_limits::quiet_NaN(); - } - return (half & 0x8000) != 0 ? -val : val; - } - - case 0xFA: // Single-Precision Float (four-byte IEEE 754) - { - return get_number(); - } - - case 0xFB: // Double-Precision Float (eight-byte IEEE 754) - { - return get_number(); - } - - default: // anything else (0xFF is handled inside the other types) - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(112, chars_read, "error reading CBOR; last byte: 0x" + ss.str())); - } - } - } - - BasicJsonType parse_msgpack_internal() - { - switch (get()) - { - // EOF - case std::char_traits::eof(): - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - - // positive fixint - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5C: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x7F: - return static_cast(current); - - // fixmap - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - { - return get_msgpack_object(current & 0x0F); - } - - // fixarray - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - case 0x98: - case 0x99: - case 0x9A: - case 0x9B: - case 0x9C: - case 0x9D: - case 0x9E: - case 0x9F: - { - return get_msgpack_array(current & 0x0F); - } - - // fixstr - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - return get_msgpack_string(); - - case 0xC0: // nil - return value_t::null; - - case 0xC2: // false - return false; - - case 0xC3: // true - return true; - - case 0xCA: // float 32 - return get_number(); - - case 0xCB: // float 64 - return get_number(); - - case 0xCC: // uint 8 - return get_number(); - - case 0xCD: // uint 16 - return get_number(); - - case 0xCE: // uint 32 - return get_number(); - - case 0xCF: // uint 64 - return get_number(); - - case 0xD0: // int 8 - return get_number(); - - case 0xD1: // int 16 - return get_number(); - - case 0xD2: // int 32 - return get_number(); - - case 0xD3: // int 64 - return get_number(); - - case 0xD9: // str 8 - case 0xDA: // str 16 - case 0xDB: // str 32 - return get_msgpack_string(); - - case 0xDC: // array 16 - { - return get_msgpack_array(get_number()); - } - - case 0xDD: // array 32 - { - return get_msgpack_array(get_number()); - } - - case 0xDE: // map 16 - { - return get_msgpack_object(get_number()); - } - - case 0xDF: // map 32 - { - return get_msgpack_object(get_number()); - } - - // positive fixint - case 0xE0: - case 0xE1: - case 0xE2: - case 0xE3: - case 0xE4: - case 0xE5: - case 0xE6: - case 0xE7: - case 0xE8: - case 0xE9: - case 0xEA: - case 0xEB: - case 0xEC: - case 0xED: - case 0xEE: - case 0xEF: - case 0xF0: - case 0xF1: - case 0xF2: - case 0xF3: - case 0xF4: - case 0xF5: - case 0xF6: - case 0xF7: - case 0xF8: - case 0xF9: - case 0xFA: - case 0xFB: - case 0xFC: - case 0xFD: - case 0xFE: - case 0xFF: - return static_cast(current); - - default: // anything else - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(112, chars_read, - "error reading MessagePack; last byte: 0x" + ss.str())); - } - } - } - - /*! - @brief get next character from the input - - This function provides the interface to the used input adapter. It does - not throw in case the input reached EOF, but returns a -'ve valued - `std::char_traits::eof()` in that case. - - @return character read from the input - */ - int get() - { - ++chars_read; - return (current = ia->get_character()); - } - - /* - @brief read a number from the input - - @tparam NumberType the type of the number - - @return number of type @a NumberType - - @note This function needs to respect the system's endianess, because - bytes in CBOR and MessagePack are stored in network order (big - endian) and therefore need reordering on little endian systems. - - @throw parse_error.110 if input has less than `sizeof(NumberType)` bytes - */ - template NumberType get_number() - { - // step 1: read input into array with system's byte order - std::array vec; - for (std::size_t i = 0; i < sizeof(NumberType); ++i) - { - get(); - check_eof(); - - // reverse byte order prior to conversion if necessary - if (is_little_endian) - { - vec[sizeof(NumberType) - i - 1] = static_cast(current); - } - else - { - vec[i] = static_cast(current); // LCOV_EXCL_LINE - } - } - - // step 2: convert array into number of type T and return - NumberType result; - std::memcpy(&result, vec.data(), sizeof(NumberType)); - return result; - } - - /*! - @brief create a string by reading characters from the input - - @param[in] len number of bytes to read - - @note We can not reserve @a len bytes for the result, because @a len - may be too large. Usually, @ref check_eof() detects the end of - the input before we run out of string memory. - - @return string created by reading @a len bytes - - @throw parse_error.110 if input has less than @a len bytes - */ - template - std::string get_string(const NumberType len) - { - std::string result; - std::generate_n(std::back_inserter(result), len, [this]() - { - get(); - check_eof(); - return static_cast(current); - }); - return result; - } - - /*! - @brief reads a CBOR string - - This function first reads starting bytes to determine the expected - string length and then copies this number of bytes into a string. - Additionally, CBOR's strings with indefinite lengths are supported. - - @return string - - @throw parse_error.110 if input ended - @throw parse_error.113 if an unexpected byte is read - */ - std::string get_cbor_string() - { - check_eof(); - - switch (current) - { - // UTF-8 string (0x00..0x17 bytes follow) - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - { - return get_string(current & 0x1F); - } - - case 0x78: // UTF-8 string (one-byte uint8_t for n follows) - { - return get_string(get_number()); - } - - case 0x79: // UTF-8 string (two-byte uint16_t for n follow) - { - return get_string(get_number()); - } - - case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) - { - return get_string(get_number()); - } - - case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) - { - return get_string(get_number()); - } - - case 0x7F: // UTF-8 string (indefinite length) - { - std::string result; - while (get() != 0xFF) - { - check_eof(); - result.push_back(static_cast(current)); - } - return result; - } - - default: - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(113, chars_read, "expected a CBOR string; last byte: 0x" + ss.str())); - } - } - } - - template - BasicJsonType get_cbor_array(const NumberType len) - { - BasicJsonType result = value_t::array; - std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() - { - return parse_cbor_internal(); - }); - return result; - } - - template - BasicJsonType get_cbor_object(const NumberType len) - { - BasicJsonType result = value_t::object; - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - len, [this]() - { - get(); - auto key = get_cbor_string(); - auto val = parse_cbor_internal(); - return std::make_pair(std::move(key), std::move(val)); - }); - return result; - } - - /*! - @brief reads a MessagePack string - - This function first reads starting bytes to determine the expected - string length and then copies this number of bytes into a string. - - @return string - - @throw parse_error.110 if input ended - @throw parse_error.113 if an unexpected byte is read - */ - std::string get_msgpack_string() - { - check_eof(); - - switch (current) - { - // fixstr - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - { - return get_string(current & 0x1F); - } - - case 0xD9: // str 8 - { - return get_string(get_number()); - } - - case 0xDA: // str 16 - { - return get_string(get_number()); - } - - case 0xDB: // str 32 - { - return get_string(get_number()); - } - - default: - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(113, chars_read, - "expected a MessagePack string; last byte: 0x" + ss.str())); - } - } - } - - template - BasicJsonType get_msgpack_array(const NumberType len) - { - BasicJsonType result = value_t::array; - std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() - { - return parse_msgpack_internal(); - }); - return result; - } - - template - BasicJsonType get_msgpack_object(const NumberType len) - { - BasicJsonType result = value_t::object; - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - len, [this]() - { - get(); - auto key = get_msgpack_string(); - auto val = parse_msgpack_internal(); - return std::make_pair(std::move(key), std::move(val)); - }); - return result; - } - - /*! - @brief check if input ended - @throw parse_error.110 if input ended - */ - void check_eof(const bool expect_eof = false) const - { - if (expect_eof) - { - if (JSON_UNLIKELY(current != std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); - } - } - else - { - if (JSON_UNLIKELY(current == std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - } - } - } - - private: - /// input adapter - input_adapter_t ia = nullptr; - - /// the current character - int current = std::char_traits::eof(); - - /// the number of characters read - std::size_t chars_read = 0; - - /// whether we can assume little endianess - const bool is_little_endian = little_endianess(); -}; -} -} - -#endif - -/*** End of inlined file: binary_reader.hpp ***/ - - -/*** Start of inlined file: binary_writer.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP - -#include // reverse -#include // array -#include // uint8_t, uint16_t, uint32_t, uint64_t -#include // memcpy -#include // numeric_limits - - -/*** Start of inlined file: binary_reader.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP - -#include // generate_n -#include // array -#include // assert -#include // ldexp -#include // size_t -#include // uint8_t, uint16_t, uint32_t, uint64_t -#include // memcpy -#include // setw, setfill -#include // hex -#include // back_inserter -#include // numeric_limits -#include // stringstream -#include // char_traits, string -#include // make_pair, move - -namespace nlohmann -{ -namespace detail -{ -/////////////////// -// binary reader // -/////////////////// - -/*! -@brief deserialization of CBOR and MessagePack values -*/ -template -class binary_reader -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - - public: - /*! - @brief create a binary reader - - @param[in] adapter input adapter to read from - */ - explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter)) - { - assert(ia); - } - - /*! - @brief create a JSON value from CBOR input - - @param[in] strict whether to expect the input to be consumed completed - @return JSON value created from CBOR input - - @throw parse_error.110 if input ended unexpectedly or the end of file was - not reached when @a strict was set to true - @throw parse_error.112 if unsupported byte was read - */ - BasicJsonType parse_cbor(const bool strict) - { - const auto res = parse_cbor_internal(); - if (strict) - { - get(); - check_eof(true); - } - return res; - } - - /*! - @brief create a JSON value from MessagePack input - - @param[in] strict whether to expect the input to be consumed completed - @return JSON value created from MessagePack input - - @throw parse_error.110 if input ended unexpectedly or the end of file was - not reached when @a strict was set to true - @throw parse_error.112 if unsupported byte was read - */ - BasicJsonType parse_msgpack(const bool strict) - { - const auto res = parse_msgpack_internal(); - if (strict) - { - get(); - check_eof(true); - } - return res; - } - - /*! - @brief determine system byte order - - @return true if and only if system's byte order is little endian - - @note from http://stackoverflow.com/a/1001328/266378 - */ - static constexpr bool little_endianess(int num = 1) noexcept - { - return (*reinterpret_cast(&num) == 1); - } - - private: - /*! - @param[in] get_char whether a new character should be retrieved from the - input (true, default) or whether the last read - character should be considered instead - */ - BasicJsonType parse_cbor_internal(const bool get_char = true) - { - switch (get_char ? get() : current) - { - // EOF - case std::char_traits::eof(): - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - - // Integer 0x00..0x17 (0..23) - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - return static_cast(current); - - case 0x18: // Unsigned integer (one-byte uint8_t follows) - return get_number(); - - case 0x19: // Unsigned integer (two-byte uint16_t follows) - return get_number(); - - case 0x1A: // Unsigned integer (four-byte uint32_t follows) - return get_number(); - - case 0x1B: // Unsigned integer (eight-byte uint64_t follows) - return get_number(); - - // Negative integer -1-0x00..-1-0x17 (-1..-24) - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - return static_cast(0x20 - 1 - current); - - case 0x38: // Negative integer (one-byte uint8_t follows) - { - // must be uint8_t ! - return static_cast(-1) - get_number(); - } - - case 0x39: // Negative integer -1-n (two-byte uint16_t follows) - { - return static_cast(-1) - get_number(); - } - - case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) - { - return static_cast(-1) - get_number(); - } - - case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) - { - return static_cast(-1) - - static_cast(get_number()); - } - - // UTF-8 string (0x00..0x17 bytes follow) - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: // UTF-8 string (one-byte uint8_t for n follows) - case 0x79: // UTF-8 string (two-byte uint16_t for n follow) - case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) - case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) - case 0x7F: // UTF-8 string (indefinite length) - { - return get_cbor_string(); - } - - // array (0x00..0x17 data items follow) - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - { - return get_cbor_array(current & 0x1F); - } - - case 0x98: // array (one-byte uint8_t for n follows) - { - return get_cbor_array(get_number()); - } - - case 0x99: // array (two-byte uint16_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9A: // array (four-byte uint32_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9B: // array (eight-byte uint64_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9F: // array (indefinite length) - { - BasicJsonType result = value_t::array; - while (get() != 0xFF) - { - result.push_back(parse_cbor_internal(false)); - } - return result; - } - - // map (0x00..0x17 pairs of data items follow) - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - { - return get_cbor_object(current & 0x1F); - } - - case 0xB8: // map (one-byte uint8_t for n follows) - { - return get_cbor_object(get_number()); - } - - case 0xB9: // map (two-byte uint16_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBA: // map (four-byte uint32_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBB: // map (eight-byte uint64_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBF: // map (indefinite length) - { - BasicJsonType result = value_t::object; - while (get() != 0xFF) - { - auto key = get_cbor_string(); - result[key] = parse_cbor_internal(); - } - return result; - } - - case 0xF4: // false - { - return false; - } - - case 0xF5: // true - { - return true; - } - - case 0xF6: // null - { - return value_t::null; - } - - case 0xF9: // Half-Precision Float (two-byte IEEE 754) - { - const int byte1 = get(); - check_eof(); - const int byte2 = get(); - check_eof(); - - // code from RFC 7049, Appendix D, Figure 3: - // As half-precision floating-point numbers were only added - // to IEEE 754 in 2008, today's programming platforms often - // still only have limited support for them. It is very - // easy to include at least decoding support for them even - // without such support. An example of a small decoder for - // half-precision floating-point numbers in the C language - // is shown in Fig. 3. - const int half = (byte1 << 8) + byte2; - const int exp = (half >> 10) & 0x1F; - const int mant = half & 0x3FF; - double val; - if (exp == 0) - { - val = std::ldexp(mant, -24); - } - else if (exp != 31) - { - val = std::ldexp(mant + 1024, exp - 25); - } - else - { - val = (mant == 0) ? std::numeric_limits::infinity() - : std::numeric_limits::quiet_NaN(); - } - return (half & 0x8000) != 0 ? -val : val; - } - - case 0xFA: // Single-Precision Float (four-byte IEEE 754) - { - return get_number(); - } - - case 0xFB: // Double-Precision Float (eight-byte IEEE 754) - { - return get_number(); - } - - default: // anything else (0xFF is handled inside the other types) - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(112, chars_read, "error reading CBOR; last byte: 0x" + ss.str())); - } - } - } - - BasicJsonType parse_msgpack_internal() - { - switch (get()) - { - // EOF - case std::char_traits::eof(): - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - - // positive fixint - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5C: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x7F: - return static_cast(current); - - // fixmap - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - { - return get_msgpack_object(current & 0x0F); - } - - // fixarray - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - case 0x98: - case 0x99: - case 0x9A: - case 0x9B: - case 0x9C: - case 0x9D: - case 0x9E: - case 0x9F: - { - return get_msgpack_array(current & 0x0F); - } - - // fixstr - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - return get_msgpack_string(); - - case 0xC0: // nil - return value_t::null; - - case 0xC2: // false - return false; - - case 0xC3: // true - return true; - - case 0xCA: // float 32 - return get_number(); - - case 0xCB: // float 64 - return get_number(); - - case 0xCC: // uint 8 - return get_number(); - - case 0xCD: // uint 16 - return get_number(); - - case 0xCE: // uint 32 - return get_number(); - - case 0xCF: // uint 64 - return get_number(); - - case 0xD0: // int 8 - return get_number(); - - case 0xD1: // int 16 - return get_number(); - - case 0xD2: // int 32 - return get_number(); - - case 0xD3: // int 64 - return get_number(); - - case 0xD9: // str 8 - case 0xDA: // str 16 - case 0xDB: // str 32 - return get_msgpack_string(); - - case 0xDC: // array 16 - { - return get_msgpack_array(get_number()); - } - - case 0xDD: // array 32 - { - return get_msgpack_array(get_number()); - } - - case 0xDE: // map 16 - { - return get_msgpack_object(get_number()); - } - - case 0xDF: // map 32 - { - return get_msgpack_object(get_number()); - } - - // positive fixint - case 0xE0: - case 0xE1: - case 0xE2: - case 0xE3: - case 0xE4: - case 0xE5: - case 0xE6: - case 0xE7: - case 0xE8: - case 0xE9: - case 0xEA: - case 0xEB: - case 0xEC: - case 0xED: - case 0xEE: - case 0xEF: - case 0xF0: - case 0xF1: - case 0xF2: - case 0xF3: - case 0xF4: - case 0xF5: - case 0xF6: - case 0xF7: - case 0xF8: - case 0xF9: - case 0xFA: - case 0xFB: - case 0xFC: - case 0xFD: - case 0xFE: - case 0xFF: - return static_cast(current); - - default: // anything else - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(112, chars_read, - "error reading MessagePack; last byte: 0x" + ss.str())); - } - } - } - - /*! - @brief get next character from the input - - This function provides the interface to the used input adapter. It does - not throw in case the input reached EOF, but returns a -'ve valued - `std::char_traits::eof()` in that case. - - @return character read from the input - */ - int get() - { - ++chars_read; - return (current = ia->get_character()); - } - - /* - @brief read a number from the input - - @tparam NumberType the type of the number - - @return number of type @a NumberType - - @note This function needs to respect the system's endianess, because - bytes in CBOR and MessagePack are stored in network order (big - endian) and therefore need reordering on little endian systems. - - @throw parse_error.110 if input has less than `sizeof(NumberType)` bytes - */ - template NumberType get_number() - { - // step 1: read input into array with system's byte order - std::array vec; - for (std::size_t i = 0; i < sizeof(NumberType); ++i) - { - get(); - check_eof(); - - // reverse byte order prior to conversion if necessary - if (is_little_endian) - { - vec[sizeof(NumberType) - i - 1] = static_cast(current); - } - else - { - vec[i] = static_cast(current); // LCOV_EXCL_LINE - } - } - - // step 2: convert array into number of type T and return - NumberType result; - std::memcpy(&result, vec.data(), sizeof(NumberType)); - return result; - } - - /*! - @brief create a string by reading characters from the input - - @param[in] len number of bytes to read - - @note We can not reserve @a len bytes for the result, because @a len - may be too large. Usually, @ref check_eof() detects the end of - the input before we run out of string memory. - - @return string created by reading @a len bytes - - @throw parse_error.110 if input has less than @a len bytes - */ - template - std::string get_string(const NumberType len) - { - std::string result; - std::generate_n(std::back_inserter(result), len, [this]() - { - get(); - check_eof(); - return static_cast(current); - }); - return result; - } - - /*! - @brief reads a CBOR string - - This function first reads starting bytes to determine the expected - string length and then copies this number of bytes into a string. - Additionally, CBOR's strings with indefinite lengths are supported. - - @return string - - @throw parse_error.110 if input ended - @throw parse_error.113 if an unexpected byte is read - */ - std::string get_cbor_string() - { - check_eof(); - - switch (current) - { - // UTF-8 string (0x00..0x17 bytes follow) - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - { - return get_string(current & 0x1F); - } - - case 0x78: // UTF-8 string (one-byte uint8_t for n follows) - { - return get_string(get_number()); - } - - case 0x79: // UTF-8 string (two-byte uint16_t for n follow) - { - return get_string(get_number()); - } - - case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) - { - return get_string(get_number()); - } - - case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) - { - return get_string(get_number()); - } - - case 0x7F: // UTF-8 string (indefinite length) - { - std::string result; - while (get() != 0xFF) - { - check_eof(); - result.push_back(static_cast(current)); - } - return result; - } - - default: - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(113, chars_read, "expected a CBOR string; last byte: 0x" + ss.str())); - } - } - } - - template - BasicJsonType get_cbor_array(const NumberType len) - { - BasicJsonType result = value_t::array; - std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() - { - return parse_cbor_internal(); - }); - return result; - } - - template - BasicJsonType get_cbor_object(const NumberType len) - { - BasicJsonType result = value_t::object; - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - len, [this]() - { - get(); - auto key = get_cbor_string(); - auto val = parse_cbor_internal(); - return std::make_pair(std::move(key), std::move(val)); - }); - return result; - } - - /*! - @brief reads a MessagePack string - - This function first reads starting bytes to determine the expected - string length and then copies this number of bytes into a string. - - @return string - - @throw parse_error.110 if input ended - @throw parse_error.113 if an unexpected byte is read - */ - std::string get_msgpack_string() - { - check_eof(); - - switch (current) - { - // fixstr - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - { - return get_string(current & 0x1F); - } - - case 0xD9: // str 8 - { - return get_string(get_number()); - } - - case 0xDA: // str 16 - { - return get_string(get_number()); - } - - case 0xDB: // str 32 - { - return get_string(get_number()); - } - - default: - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(113, chars_read, - "expected a MessagePack string; last byte: 0x" + ss.str())); - } - } - } - - template - BasicJsonType get_msgpack_array(const NumberType len) - { - BasicJsonType result = value_t::array; - std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() - { - return parse_msgpack_internal(); - }); - return result; - } - - template - BasicJsonType get_msgpack_object(const NumberType len) - { - BasicJsonType result = value_t::object; - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - len, [this]() - { - get(); - auto key = get_msgpack_string(); - auto val = parse_msgpack_internal(); - return std::make_pair(std::move(key), std::move(val)); - }); - return result; - } - - /*! - @brief check if input ended - @throw parse_error.110 if input ended - */ - void check_eof(const bool expect_eof = false) const - { - if (expect_eof) - { - if (JSON_UNLIKELY(current != std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); - } - } - else - { - if (JSON_UNLIKELY(current == std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - } - } - } - - private: - /// input adapter - input_adapter_t ia = nullptr; - - /// the current character - int current = std::char_traits::eof(); - - /// the number of characters read - std::size_t chars_read = 0; - - /// whether we can assume little endianess - const bool is_little_endian = little_endianess(); -}; -} -} - -#endif - -/*** End of inlined file: binary_reader.hpp ***/ - - -/*** Start of inlined file: output_adapters.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP - -#include // copy -#include // size_t -#include // streamsize -#include // back_inserter -#include // shared_ptr, make_shared -#include // basic_ostream -#include // basic_string -#include // vector - -namespace nlohmann -{ -namespace detail -{ -/// abstract output adapter interface -template struct output_adapter_protocol -{ - virtual void write_character(CharType c) = 0; - virtual void write_characters(const CharType* s, std::size_t length) = 0; - virtual ~output_adapter_protocol() = default; -}; - -/// a type to simplify interfaces -template -using output_adapter_t = std::shared_ptr>; - -/// output adapter for byte vectors -template -class output_vector_adapter : public output_adapter_protocol -{ - public: - explicit output_vector_adapter(std::vector& vec) : v(vec) {} - - void write_character(CharType c) override - { - v.push_back(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - std::copy(s, s + length, std::back_inserter(v)); - } - - private: - std::vector& v; -}; - -/// output adapter for output streams -template -class output_stream_adapter : public output_adapter_protocol -{ - public: - explicit output_stream_adapter(std::basic_ostream& s) : stream(s) {} - - void write_character(CharType c) override - { - stream.put(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - stream.write(s, static_cast(length)); - } - - private: - std::basic_ostream& stream; -}; - -/// output adapter for basic_string -template -class output_string_adapter : public output_adapter_protocol -{ - public: - explicit output_string_adapter(std::basic_string& s) : str(s) {} - - void write_character(CharType c) override - { - str.push_back(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - str.append(s, length); - } - - private: - std::basic_string& str; -}; - -template -class output_adapter -{ - public: - output_adapter(std::vector& vec) - : oa(std::make_shared>(vec)) {} - - output_adapter(std::basic_ostream& s) - : oa(std::make_shared>(s)) {} - - output_adapter(std::basic_string& s) - : oa(std::make_shared>(s)) {} - - operator output_adapter_t() - { - return oa; - } - - private: - output_adapter_t oa = nullptr; -}; -} -} - -#endif - -/*** End of inlined file: output_adapters.hpp ***/ - -namespace nlohmann -{ -namespace detail -{ -/////////////////// -// binary writer // -/////////////////// - -/*! -@brief serialization to CBOR and MessagePack values -*/ -template -class binary_writer -{ - public: - /*! - @brief create a binary writer - - @param[in] adapter output adapter to write to - */ - explicit binary_writer(output_adapter_t adapter) : oa(adapter) - { - assert(oa); - } - - /*! - @brief[in] j JSON value to serialize - */ - void write_cbor(const BasicJsonType& j) - { - switch (j.type()) - { - case value_t::null: - { - oa->write_character(static_cast(0xF6)); - break; - } - - case value_t::boolean: - { - oa->write_character(j.m_value.boolean - ? static_cast(0xF5) - : static_cast(0xF4)); - break; - } - - case value_t::number_integer: - { - if (j.m_value.number_integer >= 0) - { - // CBOR does not differentiate between positive signed - // integers and unsigned integers. Therefore, we used the - // code from the value_t::number_unsigned case here. - if (j.m_value.number_integer <= 0x17) - { - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x18)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x19)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x1A)); - write_number(static_cast(j.m_value.number_integer)); - } - else - { - oa->write_character(static_cast(0x1B)); - write_number(static_cast(j.m_value.number_integer)); - } - } - else - { - // The conversions below encode the sign in the first - // byte, and the value is converted to a positive number. - const auto positive_number = -1 - j.m_value.number_integer; - if (j.m_value.number_integer >= -24) - { - write_number(static_cast(0x20 + positive_number)); - } - else if (positive_number <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x38)); - write_number(static_cast(positive_number)); - } - else if (positive_number <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x39)); - write_number(static_cast(positive_number)); - } - else if (positive_number <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x3A)); - write_number(static_cast(positive_number)); - } - else - { - oa->write_character(static_cast(0x3B)); - write_number(static_cast(positive_number)); - } - } - break; - } - - case value_t::number_unsigned: - { - if (j.m_value.number_unsigned <= 0x17) - { - write_number(static_cast(j.m_value.number_unsigned)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x18)); - write_number(static_cast(j.m_value.number_unsigned)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x19)); - write_number(static_cast(j.m_value.number_unsigned)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x1A)); - write_number(static_cast(j.m_value.number_unsigned)); - } - else - { - oa->write_character(static_cast(0x1B)); - write_number(static_cast(j.m_value.number_unsigned)); - } - break; - } - - case value_t::number_float: // Double-Precision Float - { - oa->write_character(static_cast(0xFB)); - write_number(j.m_value.number_float); - break; - } - - case value_t::string: - { - // step 1: write control byte and the string length - const auto N = j.m_value.string->size(); - if (N <= 0x17) - { - write_number(static_cast(0x60 + N)); - } - else if (N <= 0xFF) - { - oa->write_character(static_cast(0x78)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFF) - { - oa->write_character(static_cast(0x79)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFFFFFF) - { - oa->write_character(static_cast(0x7A)); - write_number(static_cast(N)); - } - // LCOV_EXCL_START - else if (N <= 0xFFFFFFFFFFFFFFFF) - { - oa->write_character(static_cast(0x7B)); - write_number(static_cast(N)); - } - // LCOV_EXCL_STOP - - // step 2: write the string - oa->write_characters( - reinterpret_cast(j.m_value.string->c_str()), - j.m_value.string->size()); - break; - } - - case value_t::array: - { - // step 1: write control byte and the array size - const auto N = j.m_value.array->size(); - if (N <= 0x17) - { - write_number(static_cast(0x80 + N)); - } - else if (N <= 0xFF) - { - oa->write_character(static_cast(0x98)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFF) - { - oa->write_character(static_cast(0x99)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFFFFFF) - { - oa->write_character(static_cast(0x9A)); - write_number(static_cast(N)); - } - // LCOV_EXCL_START - else if (N <= 0xFFFFFFFFFFFFFFFF) - { - oa->write_character(static_cast(0x9B)); - write_number(static_cast(N)); - } - // LCOV_EXCL_STOP - - // step 2: write each element - for (const auto& el : *j.m_value.array) - { - write_cbor(el); - } - break; - } - - case value_t::object: - { - // step 1: write control byte and the object size - const auto N = j.m_value.object->size(); - if (N <= 0x17) - { - write_number(static_cast(0xA0 + N)); - } - else if (N <= 0xFF) - { - oa->write_character(static_cast(0xB8)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFF) - { - oa->write_character(static_cast(0xB9)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFFFFFF) - { - oa->write_character(static_cast(0xBA)); - write_number(static_cast(N)); - } - // LCOV_EXCL_START - else if (N <= 0xFFFFFFFFFFFFFFFF) - { - oa->write_character(static_cast(0xBB)); - write_number(static_cast(N)); - } - // LCOV_EXCL_STOP - - // step 2: write each element - for (const auto& el : *j.m_value.object) - { - write_cbor(el.first); - write_cbor(el.second); - } - break; - } - - default: - break; - } - } - - /*! - @brief[in] j JSON value to serialize - */ - void write_msgpack(const BasicJsonType& j) - { - switch (j.type()) - { - case value_t::null: // nil - { - oa->write_character(static_cast(0xC0)); - break; - } - - case value_t::boolean: // true and false - { - oa->write_character(j.m_value.boolean - ? static_cast(0xC3) - : static_cast(0xC2)); - break; - } - - case value_t::number_integer: - { - if (j.m_value.number_integer >= 0) - { - // MessagePack does not differentiate between positive - // signed integers and unsigned integers. Therefore, we used - // the code from the value_t::number_unsigned case here. - if (j.m_value.number_unsigned < 128) - { - // positive fixnum - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 8 - oa->write_character(static_cast(0xCC)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 16 - oa->write_character(static_cast(0xCD)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 32 - oa->write_character(static_cast(0xCE)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 64 - oa->write_character(static_cast(0xCF)); - write_number(static_cast(j.m_value.number_integer)); - } - } - else - { - if (j.m_value.number_integer >= -32) - { - // negative fixnum - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() and - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 8 - oa->write_character(static_cast(0xD0)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() and - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 16 - oa->write_character(static_cast(0xD1)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() and - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 32 - oa->write_character(static_cast(0xD2)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() and - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 64 - oa->write_character(static_cast(0xD3)); - write_number(static_cast(j.m_value.number_integer)); - } - } - break; - } - - case value_t::number_unsigned: - { - if (j.m_value.number_unsigned < 128) - { - // positive fixnum - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 8 - oa->write_character(static_cast(0xCC)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 16 - oa->write_character(static_cast(0xCD)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 32 - oa->write_character(static_cast(0xCE)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 64 - oa->write_character(static_cast(0xCF)); - write_number(static_cast(j.m_value.number_integer)); - } - break; - } - - case value_t::number_float: // float 64 - { - oa->write_character(static_cast(0xCB)); - write_number(j.m_value.number_float); - break; - } - - case value_t::string: - { - // step 1: write control byte and the string length - const auto N = j.m_value.string->size(); - if (N <= 31) - { - // fixstr - write_number(static_cast(0xA0 | N)); - } - else if (N <= 255) - { - // str 8 - oa->write_character(static_cast(0xD9)); - write_number(static_cast(N)); - } - else if (N <= 65535) - { - // str 16 - oa->write_character(static_cast(0xDA)); - write_number(static_cast(N)); - } - else if (N <= 4294967295) - { - // str 32 - oa->write_character(static_cast(0xDB)); - write_number(static_cast(N)); - } - - // step 2: write the string - oa->write_characters( - reinterpret_cast(j.m_value.string->c_str()), - j.m_value.string->size()); - break; - } - - case value_t::array: - { - // step 1: write control byte and the array size - const auto N = j.m_value.array->size(); - if (N <= 15) - { - // fixarray - write_number(static_cast(0x90 | N)); - } - else if (N <= 0xFFFF) - { - // array 16 - oa->write_character(static_cast(0xDC)); - write_number(static_cast(N)); - } - else if (N <= 0xFFFFFFFF) - { - // array 32 - oa->write_character(static_cast(0xDD)); - write_number(static_cast(N)); - } - - // step 2: write each element - for (const auto& el : *j.m_value.array) - { - write_msgpack(el); - } - break; - } - - case value_t::object: - { - // step 1: write control byte and the object size - const auto N = j.m_value.object->size(); - if (N <= 15) - { - // fixmap - write_number(static_cast(0x80 | (N & 0xF))); - } - else if (N <= 65535) - { - // map 16 - oa->write_character(static_cast(0xDE)); - write_number(static_cast(N)); - } - else if (N <= 4294967295) - { - // map 32 - oa->write_character(static_cast(0xDF)); - write_number(static_cast(N)); - } - - // step 2: write each element - for (const auto& el : *j.m_value.object) - { - write_msgpack(el.first); - write_msgpack(el.second); - } - break; - } - - default: - break; - } - } - - private: - /* - @brief write a number to output input - - @param[in] n number of type @a NumberType - @tparam NumberType the type of the number - - @note This function needs to respect the system's endianess, because bytes - in CBOR and MessagePack are stored in network order (big endian) and - therefore need reordering on little endian systems. - */ - template void write_number(NumberType n) - { - // step 1: write number to array of length NumberType - std::array vec; - std::memcpy(vec.data(), &n, sizeof(NumberType)); - - // step 2: write array to output (with possible reordering) - if (is_little_endian) - { - // reverse byte order prior to conversion if necessary - std::reverse(vec.begin(), vec.end()); - } - - oa->write_characters(vec.data(), sizeof(NumberType)); - } - - private: - /// whether we can assume little endianess - const bool is_little_endian = binary_reader::little_endianess(); - - /// the output - output_adapter_t oa = nullptr; -}; -} -} - -#endif - -/*** End of inlined file: binary_writer.hpp ***/ - - -/*** Start of inlined file: serializer.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_SERIALIZER_HPP -#define NLOHMANN_JSON_DETAIL_SERIALIZER_HPP - -#include // reverse, remove, fill, find, none_of -#include // array -#include // assert -#include // and, or -#include // localeconv, lconv -#include // labs, isfinite, isnan, signbit -#include // size_t, ptrdiff_t -#include // uint8_t -#include // snprintf -#include // next -#include // numeric_limits -#include // string -#include // is_same - -namespace nlohmann -{ -namespace detail -{ -/////////////////// -// serialization // -/////////////////// - -template -class serializer -{ - using string_t = typename BasicJsonType::string_t; - using number_float_t = typename BasicJsonType::number_float_t; - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - public: - /*! - @param[in] s output stream to serialize to - @param[in] ichar indentation character to use - */ - serializer(output_adapter_t s, const char ichar) - : o(std::move(s)), loc(std::localeconv()), - thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep)), - decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point)), - indent_char(ichar), indent_string(512, indent_char) {} - - // delete because of pointer members - serializer(const serializer&) = delete; - serializer& operator=(const serializer&) = delete; - - /*! - @brief internal implementation of the serialization function - - This function is called by the public member function dump and organizes - the serialization internally. The indentation level is propagated as - additional parameter. In case of arrays and objects, the function is - called recursively. - - - strings and object keys are escaped using `escape_string()` - - integer numbers are converted implicitly via `operator<<` - - floating-point numbers are converted to a string using `"%g"` format - - @param[in] val value to serialize - @param[in] pretty_print whether the output shall be pretty-printed - @param[in] indent_step the indent level - @param[in] current_indent the current indent level (only used internally) - */ - void dump(const BasicJsonType& val, const bool pretty_print, - const bool ensure_ascii, - const unsigned int indent_step, - const unsigned int current_indent = 0) - { - switch (val.m_type) - { - case value_t::object: - { - if (val.m_value.object->empty()) - { - o->write_characters("{}", 2); - return; - } - - if (pretty_print) - { - o->write_characters("{\n", 2); - - // variable to hold indentation for recursive calls - const auto new_indent = current_indent + indent_step; - if (JSON_UNLIKELY(indent_string.size() < new_indent)) - { - indent_string.resize(indent_string.size() * 2, ' '); - } - - // first n-1 elements - auto i = val.m_value.object->cbegin(); - for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) - { - o->write_characters(indent_string.c_str(), new_indent); - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\": ", 3); - dump(i->second, true, ensure_ascii, indent_step, new_indent); - o->write_characters(",\n", 2); - } - - // last element - assert(i != val.m_value.object->cend()); - assert(std::next(i) == val.m_value.object->cend()); - o->write_characters(indent_string.c_str(), new_indent); - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\": ", 3); - dump(i->second, true, ensure_ascii, indent_step, new_indent); - - o->write_character('\n'); - o->write_characters(indent_string.c_str(), current_indent); - o->write_character('}'); - } - else - { - o->write_character('{'); - - // first n-1 elements - auto i = val.m_value.object->cbegin(); - for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) - { - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\":", 2); - dump(i->second, false, ensure_ascii, indent_step, current_indent); - o->write_character(','); - } - - // last element - assert(i != val.m_value.object->cend()); - assert(std::next(i) == val.m_value.object->cend()); - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\":", 2); - dump(i->second, false, ensure_ascii, indent_step, current_indent); - - o->write_character('}'); - } - - return; - } - - case value_t::array: - { - if (val.m_value.array->empty()) - { - o->write_characters("[]", 2); - return; - } - - if (pretty_print) - { - o->write_characters("[\n", 2); - - // variable to hold indentation for recursive calls - const auto new_indent = current_indent + indent_step; - if (JSON_UNLIKELY(indent_string.size() < new_indent)) - { - indent_string.resize(indent_string.size() * 2, ' '); - } - - // first n-1 elements - for (auto i = val.m_value.array->cbegin(); - i != val.m_value.array->cend() - 1; ++i) - { - o->write_characters(indent_string.c_str(), new_indent); - dump(*i, true, ensure_ascii, indent_step, new_indent); - o->write_characters(",\n", 2); - } - - // last element - assert(not val.m_value.array->empty()); - o->write_characters(indent_string.c_str(), new_indent); - dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent); - - o->write_character('\n'); - o->write_characters(indent_string.c_str(), current_indent); - o->write_character(']'); - } - else - { - o->write_character('['); - - // first n-1 elements - for (auto i = val.m_value.array->cbegin(); - i != val.m_value.array->cend() - 1; ++i) - { - dump(*i, false, ensure_ascii, indent_step, current_indent); - o->write_character(','); - } - - // last element - assert(not val.m_value.array->empty()); - dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent); - - o->write_character(']'); - } - - return; - } - - case value_t::string: - { - o->write_character('\"'); - dump_escaped(*val.m_value.string, ensure_ascii); - o->write_character('\"'); - return; - } - - case value_t::boolean: - { - if (val.m_value.boolean) - { - o->write_characters("true", 4); - } - else - { - o->write_characters("false", 5); - } - return; - } - - case value_t::number_integer: - { - dump_integer(val.m_value.number_integer); - return; - } - - case value_t::number_unsigned: - { - dump_integer(val.m_value.number_unsigned); - return; - } - - case value_t::number_float: - { - dump_float(val.m_value.number_float); - return; - } - - case value_t::discarded: - { - o->write_characters("", 11); - return; - } - - case value_t::null: - { - o->write_characters("null", 4); - return; - } - } - } - - private: - /*! - @brief returns the number of expected bytes following in UTF-8 string - - @param[in] u the first byte of a UTF-8 string - @return the number of expected bytes following - */ - static constexpr std::size_t bytes_following(const uint8_t u) - { - return ((u <= 127) ? 0 - : ((192 <= u and u <= 223) ? 1 - : ((224 <= u and u <= 239) ? 2 - : ((240 <= u and u <= 247) ? 3 : std::string::npos)))); - } - - /*! - @brief calculates the extra space to escape a JSON string - - @param[in] s the string to escape - @param[in] ensure_ascii whether to escape non-ASCII characters with - \uXXXX sequences - @return the number of characters required to escape string @a s - - @complexity Linear in the length of string @a s. - */ - static std::size_t extra_space(const string_t& s, - const bool ensure_ascii) noexcept - { - std::size_t res = 0; - - for (std::size_t i = 0; i < s.size(); ++i) - { - switch (s[i]) - { - // control characters that can be escaped with a backslash - case '"': - case '\\': - case '\b': - case '\f': - case '\n': - case '\r': - case '\t': - { - // from c (1 byte) to \x (2 bytes) - res += 1; - break; - } - - // control characters that need \uxxxx escaping - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x0B: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - { - // from c (1 byte) to \uxxxx (6 bytes) - res += 5; - break; - } - - default: - { - if (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F)) - { - const auto bytes = bytes_following(static_cast(s[i])); - // invalid characters will be detected by throw_if_invalid_utf8 - assert (bytes != std::string::npos); - - if (bytes == 3) - { - // codepoints that need 4 bytes (i.e., 3 additional - // bytes) in UTF-8 need a surrogate pair when \u - // escaping is used: from 4 bytes to \uxxxx\uxxxx - // (12 bytes) - res += (12 - bytes - 1); - } - else - { - // from x bytes to \uxxxx (6 bytes) - res += (6 - bytes - 1); - } - - // skip the additional bytes - i += bytes; - } - break; - } - } - } - - return res; - } - - static void escape_codepoint(int codepoint, string_t& result, std::size_t& pos) - { - // expecting a proper codepoint - assert(0x00 <= codepoint and codepoint <= 0x10FFFF); - - // the last written character was the backslash before the 'u' - assert(result[pos] == '\\'); - - // write the 'u' - result[++pos] = 'u'; - - // convert a number 0..15 to its hex representation (0..f) - static const std::array hexify = - { - { - '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' - } - }; - - if (codepoint < 0x10000) - { - // codepoints U+0000..U+FFFF can be represented as \uxxxx. - result[++pos] = hexify[(codepoint >> 12) & 0x0F]; - result[++pos] = hexify[(codepoint >> 8) & 0x0F]; - result[++pos] = hexify[(codepoint >> 4) & 0x0F]; - result[++pos] = hexify[codepoint & 0x0F]; - } - else - { - // codepoints U+10000..U+10FFFF need a surrogate pair to be - // represented as \uxxxx\uxxxx. - // http://www.unicode.org/faq/utf_bom.html#utf16-4 - codepoint -= 0x10000; - const int high_surrogate = 0xD800 | ((codepoint >> 10) & 0x3FF); - const int low_surrogate = 0xDC00 | (codepoint & 0x3FF); - result[++pos] = hexify[(high_surrogate >> 12) & 0x0F]; - result[++pos] = hexify[(high_surrogate >> 8) & 0x0F]; - result[++pos] = hexify[(high_surrogate >> 4) & 0x0F]; - result[++pos] = hexify[high_surrogate & 0x0F]; - ++pos; // backslash is already in output - result[++pos] = 'u'; - result[++pos] = hexify[(low_surrogate >> 12) & 0x0F]; - result[++pos] = hexify[(low_surrogate >> 8) & 0x0F]; - result[++pos] = hexify[(low_surrogate >> 4) & 0x0F]; - result[++pos] = hexify[low_surrogate & 0x0F]; - } - - ++pos; - } - - /*! - @brief dump escaped string - - Escape a string by replacing certain special characters by a sequence of an - escape character (backslash) and another character and other control - characters by a sequence of "\u" followed by a four-digit hex - representation. The escaped string is written to output stream @a o. - - @param[in] s the string to escape - @param[in] ensure_ascii whether to escape non-ASCII characters with - \uXXXX sequences - - @complexity Linear in the length of string @a s. - */ - void dump_escaped(const string_t& s, const bool ensure_ascii) const - { - throw_if_invalid_utf8(s); - - const auto space = extra_space(s, ensure_ascii); - if (space == 0) - { - o->write_characters(s.c_str(), s.size()); - return; - } - - // create a result string of necessary size - string_t result(s.size() + space, '\\'); - std::size_t pos = 0; - - for (std::size_t i = 0; i < s.size(); ++i) - { - switch (s[i]) - { - case '"': // quotation mark (0x22) - { - result[pos + 1] = '"'; - pos += 2; - break; - } - - case '\\': // reverse solidus (0x5C) - { - // nothing to change - pos += 2; - break; - } - - case '\b': // backspace (0x08) - { - result[pos + 1] = 'b'; - pos += 2; - break; - } - - case '\f': // formfeed (0x0C) - { - result[pos + 1] = 'f'; - pos += 2; - break; - } - - case '\n': // newline (0x0A) - { - result[pos + 1] = 'n'; - pos += 2; - break; - } - - case '\r': // carriage return (0x0D) - { - result[pos + 1] = 'r'; - pos += 2; - break; - } - - case '\t': // horizontal tab (0x09) - { - result[pos + 1] = 't'; - pos += 2; - break; - } - - default: - { - // escape control characters (0x00..0x1F) or, if - // ensure_ascii parameter is used, non-ASCII characters - if ((0x00 <= s[i] and s[i] <= 0x1F) or - (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F))) - { - const auto bytes = bytes_following(static_cast(s[i])); - // invalid characters will be detected by throw_if_invalid_utf8 - assert (bytes != std::string::npos); - - // check that the additional bytes are present - assert(i + bytes < s.size()); - - // to use \uxxxx escaping, we first need to calculate - // the codepoint from the UTF-8 bytes - int codepoint = 0; - - // bytes is unsigned type: - assert(bytes <= 3); - switch (bytes) - { - case 0: - { - codepoint = s[i] & 0xFF; - break; - } - - case 1: - { - codepoint = ((s[i] & 0x3F) << 6) - + (s[i + 1] & 0x7F); - break; - } - - case 2: - { - codepoint = ((s[i] & 0x1F) << 12) - + ((s[i + 1] & 0x7F) << 6) - + (s[i + 2] & 0x7F); - break; - } - - case 3: - { - codepoint = ((s[i] & 0xF) << 18) - + ((s[i + 1] & 0x7F) << 12) - + ((s[i + 2] & 0x7F) << 6) - + (s[i + 3] & 0x7F); - break; - } - - default: - break; // LCOV_EXCL_LINE - } - - escape_codepoint(codepoint, result, pos); - i += bytes; - } - else - { - // all other characters are added as-is - result[pos++] = s[i]; - } - break; - } - } - } - - assert(pos == result.size()); - o->write_characters(result.c_str(), result.size()); - } - - /*! - @brief dump an integer - - Dump a given integer to output stream @a o. Works internally with - @a number_buffer. - - @param[in] x integer number (signed or unsigned) to dump - @tparam NumberType either @a number_integer_t or @a number_unsigned_t - */ - template::value or - std::is_same::value, - int> = 0> - void dump_integer(NumberType x) - { - // special case for "0" - if (x == 0) - { - o->write_character('0'); - return; - } - - const bool is_negative = (x <= 0) and (x != 0); // see issue #755 - std::size_t i = 0; - - while (x != 0) - { - // spare 1 byte for '\0' - assert(i < number_buffer.size() - 1); - - const auto digit = std::labs(static_cast(x % 10)); - number_buffer[i++] = static_cast('0' + digit); - x /= 10; - } - - if (is_negative) - { - // make sure there is capacity for the '-' - assert(i < number_buffer.size() - 2); - number_buffer[i++] = '-'; - } - - std::reverse(number_buffer.begin(), number_buffer.begin() + i); - o->write_characters(number_buffer.data(), i); - } - - /*! - @brief dump a floating-point number - - Dump a given floating-point number to output stream @a o. Works internally - with @a number_buffer. - - @param[in] x floating-point number to dump - */ - void dump_float(number_float_t x) - { - // NaN / inf - if (not std::isfinite(x) or std::isnan(x)) - { - o->write_characters("null", 4); - return; - } - - // get number of digits for a text -> float -> text round-trip - static constexpr auto d = std::numeric_limits::digits10; - - // the actual conversion - std::ptrdiff_t len = snprintf(number_buffer.data(), number_buffer.size(), "%.*g", d, x); - - // negative value indicates an error - assert(len > 0); - // check if buffer was large enough - assert(static_cast(len) < number_buffer.size()); - - // erase thousands separator - if (thousands_sep != '\0') - { - const auto end = std::remove(number_buffer.begin(), - number_buffer.begin() + len, thousands_sep); - std::fill(end, number_buffer.end(), '\0'); - assert((end - number_buffer.begin()) <= len); - len = (end - number_buffer.begin()); - } - - // convert decimal point to '.' - if (decimal_point != '\0' and decimal_point != '.') - { - const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point); - if (dec_pos != number_buffer.end()) - { - *dec_pos = '.'; - } - } - - o->write_characters(number_buffer.data(), static_cast(len)); - - // determine if need to append ".0" - const bool value_is_int_like = - std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1, - [](char c) - { - return (c == '.' or c == 'e'); - }); - - if (value_is_int_like) - { - o->write_characters(".0", 2); - } - } - - /*! - @brief check whether a string is UTF-8 encoded - - The function checks each byte of a string whether it is UTF-8 encoded. The - result of the check is stored in the @a state parameter. The function must - be called initially with state 0 (accept). State 1 means the string must - be rejected, because the current byte is not allowed. If the string is - completely processed, but the state is non-zero, the string ended - prematurely; that is, the last byte indicated more bytes should have - followed. - - @param[in,out] state the state of the decoding - @param[in] byte next byte to decode - - @note The function has been edited: a std::array is used and the code - point is not calculated. - - @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann - @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ - */ - static void decode(uint8_t& state, const uint8_t byte) - { - static const std::array utf8d = - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF - 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF - 0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF - 0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF - 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2 - 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4 - 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6 - 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8 - } - }; - - const uint8_t type = utf8d[byte]; - state = utf8d[256u + state * 16u + type]; - } - - /*! - @brief throw an exception if a string is not UTF-8 encoded - - @param[in] str UTF-8 string to check - @throw type_error.316 if passed string is not UTF-8 encoded - - @since version 3.0.0 - */ - static void throw_if_invalid_utf8(const std::string& str) - { - // start with state 0 (= accept) - uint8_t state = 0; - - for (size_t i = 0; i < str.size(); ++i) - { - const auto byte = static_cast(str[i]); - decode(state, byte); - if (state == 1) - { - // state 1 means reject - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(byte); - JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + ss.str())); - } - } - - if (state != 0) - { - // we finish reading, but do not accept: string was incomplete - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(static_cast(str.back())); - JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + ss.str())); - } - } - - private: - /// the output of the serializer - output_adapter_t o = nullptr; - - /// a (hopefully) large enough character buffer - std::array number_buffer{{}}; - - /// the locale - const std::lconv* loc = nullptr; - /// the locale's thousand separator character - const char thousands_sep = '\0'; - /// the locale's decimal point character - const char decimal_point = '\0'; - - /// the indentation character - const char indent_char; - - /// the indentation string - string_t indent_string; -}; -} -} - -#endif - -/*** End of inlined file: serializer.hpp ***/ - - -/*** Start of inlined file: json_ref.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_JSON_REF_HPP -#define NLOHMANN_JSON_DETAIL_JSON_REF_HPP - -#include -#include - -namespace nlohmann -{ -namespace detail -{ -template -class json_ref -{ - public: - using value_type = BasicJsonType; - - json_ref(value_type&& value) - : owned_value(std::move(value)), value_ref(&owned_value), is_rvalue(true) - {} - - json_ref(const value_type& value) - : value_ref(const_cast(&value)), is_rvalue(false) - {} - - json_ref(std::initializer_list init) - : owned_value(init), value_ref(&owned_value), is_rvalue(true) - {} - - template - json_ref(Args&& ... args) - : owned_value(std::forward(args)...), value_ref(&owned_value), is_rvalue(true) - {} - - // class should be movable only - json_ref(json_ref&&) = default; - json_ref(const json_ref&) = delete; - json_ref& operator=(const json_ref&) = delete; - - value_type moved_or_copied() const - { - if (is_rvalue) - { - return std::move(*value_ref); - } - return *value_ref; - } - - value_type const& operator*() const - { - return *static_cast(value_ref); - } - - value_type const* operator->() const - { - return static_cast(value_ref); - } - - private: - mutable value_type owned_value = nullptr; - value_type* value_ref = nullptr; - const bool is_rvalue; -}; -} -} - -#endif - -/*** End of inlined file: json_ref.hpp ***/ - - -/*** Start of inlined file: adl_serializer.hpp ***/ -#ifndef NLOHMANN_JSON_ADL_SERIALIZER_HPP -#define NLOHMANN_JSON_ADL_SERIALIZER_HPP - -#include - -namespace nlohmann -{ -template -struct adl_serializer -{ - /*! - @brief convert a JSON value to any value type - - This function is usually called by the `get()` function of the - @ref basic_json class (either explicit or via conversion operators). - - @param[in] j JSON value to read from - @param[in,out] val value to write to - */ - template - static void from_json(BasicJsonType&& j, ValueType& val) noexcept( - noexcept(::nlohmann::from_json(std::forward(j), val))) - { - ::nlohmann::from_json(std::forward(j), val); - } - - /*! - @brief convert any value type to a JSON value - - This function is usually called by the constructors of the @ref basic_json - class. - - @param[in,out] j JSON value to write to - @param[in] val value to read from - */ - template - static void to_json(BasicJsonType& j, ValueType&& val) noexcept( - noexcept(::nlohmann::to_json(j, std::forward(val)))) - { - ::nlohmann::to_json(j, std::forward(val)); - } -}; -} - -#endif - -/*** End of inlined file: adl_serializer.hpp ***/ - -/*! -@brief namespace for Niels Lohmann -@see https://github.com/nlohmann -@since version 1.0.0 -*/ -namespace nlohmann -{ -class json_pointer -{ - /// allow basic_json to access private members - NLOHMANN_BASIC_JSON_TPL_DECLARATION - friend class basic_json; - - public: - /*! - @brief create JSON pointer - - Create a JSON pointer according to the syntax described in - [Section 3 of RFC6901](https://tools.ietf.org/html/rfc6901#section-3). - - @param[in] s string representing the JSON pointer; if omitted, the empty - string is assumed which references the whole JSON value - - @throw parse_error.107 if the given JSON pointer @a s is nonempty and - does not begin with a slash (`/`); see example below - - @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s - is not followed by `0` (representing `~`) or `1` (representing `/`); - see example below - - @liveexample{The example shows the construction several valid JSON - pointers as well as the exceptional behavior.,json_pointer} - - @since version 2.0.0 - */ - explicit json_pointer(const std::string& s = "") : reference_tokens(split(s)) {} - - /*! - @brief return a string representation of the JSON pointer - - @invariant For each JSON pointer `ptr`, it holds: - @code {.cpp} - ptr == json_pointer(ptr.to_string()); - @endcode - - @return a string representation of the JSON pointer - - @liveexample{The example shows the result of `to_string`., - json_pointer__to_string} - - @since version 2.0.0 - */ - std::string to_string() const noexcept - { - return std::accumulate(reference_tokens.begin(), reference_tokens.end(), - std::string{}, - [](const std::string & a, const std::string & b) - { - return a + "/" + escape(b); - }); - } - - /// @copydoc to_string() - operator std::string() const - { - return to_string(); - } - - /*! - @param[in] s reference token to be converted into an array index - - @return integer representation of @a s - - @throw out_of_range.404 if string @a s could not be converted to an integer - */ - static int array_index(const std::string& s) - { - size_t processed_chars = 0; - const int res = std::stoi(s, &processed_chars); - - // check if the string was completely read - if (JSON_UNLIKELY(processed_chars != s.size())) - { - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'")); - } - - return res; - } - - private: - /*! - @brief remove and return last reference pointer - @throw out_of_range.405 if JSON pointer has no parent - */ - std::string pop_back() - { - if (JSON_UNLIKELY(is_root())) - { - JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); - } - - auto last = reference_tokens.back(); - reference_tokens.pop_back(); - return last; - } - - /// return whether pointer points to the root document - bool is_root() const - { - return reference_tokens.empty(); - } - - json_pointer top() const - { - if (JSON_UNLIKELY(is_root())) - { - JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); - } - - json_pointer result = *this; - result.reference_tokens = {reference_tokens[0]}; - return result; - } - - /*! - @brief create and return a reference to the pointed to value - - @complexity Linear in the number of reference tokens. - - @throw parse_error.109 if array index is not a number - @throw type_error.313 if value cannot be unflattened - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - NLOHMANN_BASIC_JSON_TPL& get_and_create(NLOHMANN_BASIC_JSON_TPL& j) const; - - /*! - @brief return a reference to the pointed to value - - @note This version does not throw if a value is not present, but tries to - create nested values instead. For instance, calling this function - with pointer `"/this/that"` on a null value is equivalent to calling - `operator[]("this").operator[]("that")` on that value, effectively - changing the null value to an object. - - @param[in] ptr a JSON value - - @return reference to the JSON value pointed to by the JSON pointer - - @complexity Linear in the length of the JSON pointer. - - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - NLOHMANN_BASIC_JSON_TPL& get_unchecked(NLOHMANN_BASIC_JSON_TPL* ptr) const; - - /*! - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - NLOHMANN_BASIC_JSON_TPL& get_checked(NLOHMANN_BASIC_JSON_TPL* ptr) const; - - /*! - @brief return a const reference to the pointed to value - - @param[in] ptr a JSON value - - @return const reference to the JSON value pointed to by the JSON - pointer - - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - const NLOHMANN_BASIC_JSON_TPL& get_unchecked(const NLOHMANN_BASIC_JSON_TPL* ptr) const; - - /*! - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - const NLOHMANN_BASIC_JSON_TPL& get_checked(const NLOHMANN_BASIC_JSON_TPL* ptr) const; - - /*! - @brief split the string input to reference tokens - - @note This function is only called by the json_pointer constructor. - All exceptions below are documented there. - - @throw parse_error.107 if the pointer is not empty or begins with '/' - @throw parse_error.108 if character '~' is not followed by '0' or '1' - */ - static std::vector split(const std::string& reference_string) - { - std::vector result; - - // special case: empty reference string -> no reference tokens - if (reference_string.empty()) - { - return result; - } - - // check if nonempty reference string begins with slash - if (JSON_UNLIKELY(reference_string[0] != '/')) - { - JSON_THROW(detail::parse_error::create(107, 1, - "JSON pointer must be empty or begin with '/' - was: '" + - reference_string + "'")); - } - - // extract the reference tokens: - // - slash: position of the last read slash (or end of string) - // - start: position after the previous slash - for ( - // search for the first slash after the first character - std::size_t slash = reference_string.find_first_of('/', 1), - // set the beginning of the first reference token - start = 1; - // we can stop if start == string::npos+1 = 0 - start != 0; - // set the beginning of the next reference token - // (will eventually be 0 if slash == std::string::npos) - start = slash + 1, - // find next slash - slash = reference_string.find_first_of('/', start)) - { - // use the text between the beginning of the reference token - // (start) and the last slash (slash). - auto reference_token = reference_string.substr(start, slash - start); - - // check reference tokens are properly escaped - for (std::size_t pos = reference_token.find_first_of('~'); - pos != std::string::npos; - pos = reference_token.find_first_of('~', pos + 1)) - { - assert(reference_token[pos] == '~'); - - // ~ must be followed by 0 or 1 - if (JSON_UNLIKELY(pos == reference_token.size() - 1 or - (reference_token[pos + 1] != '0' and - reference_token[pos + 1] != '1'))) - { - JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'")); - } - } - - // finally, store the reference token - unescape(reference_token); - result.push_back(reference_token); - } - - return result; - } - - /*! - @brief replace all occurrences of a substring by another string - - @param[in,out] s the string to manipulate; changed so that all - occurrences of @a f are replaced with @a t - @param[in] f the substring to replace with @a t - @param[in] t the string to replace @a f - - @pre The search string @a f must not be empty. **This precondition is - enforced with an assertion.** - - @since version 2.0.0 - */ - static void replace_substring(std::string& s, const std::string& f, - const std::string& t) - { - assert(not f.empty()); - for (auto pos = s.find(f); // find first occurrence of f - pos != std::string::npos; // make sure f was found - s.replace(pos, f.size(), t), // replace with t, and - pos = s.find(f, pos + t.size())) // find next occurrence of f - {} - } - - /// escape "~"" to "~0" and "/" to "~1" - static std::string escape(std::string s) - { - replace_substring(s, "~", "~0"); - replace_substring(s, "/", "~1"); - return s; - } - - /// unescape "~1" to tilde and "~0" to slash (order is important!) - static void unescape(std::string& s) - { - replace_substring(s, "~1", "/"); - replace_substring(s, "~0", "~"); - } - - /*! - @param[in] reference_string the reference string to the current value - @param[in] value the value to consider - @param[in,out] result the result object to insert values to - - @note Empty objects or arrays are flattened to `null`. - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - static void flatten(const std::string& reference_string, - const NLOHMANN_BASIC_JSON_TPL& value, - NLOHMANN_BASIC_JSON_TPL& result); - - /*! - @param[in] value flattened JSON - - @return unflattened JSON - - @throw parse_error.109 if array index is not a number - @throw type_error.314 if value is not an object - @throw type_error.315 if object values are not primitive - @throw type_error.313 if value cannot be unflattened - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - static NLOHMANN_BASIC_JSON_TPL - unflatten(const NLOHMANN_BASIC_JSON_TPL& value); - - friend bool operator==(json_pointer const& lhs, - json_pointer const& rhs) noexcept; - - friend bool operator!=(json_pointer const& lhs, - json_pointer const& rhs) noexcept; - - /// the reference tokens - std::vector reference_tokens; -}; - -/*! -@brief a class to store JSON values - -@tparam ObjectType type for JSON objects (`std::map` by default; will be used -in @ref object_t) -@tparam ArrayType type for JSON arrays (`std::vector` by default; will be used -in @ref array_t) -@tparam StringType type for JSON strings and object keys (`std::string` by -default; will be used in @ref string_t) -@tparam BooleanType type for JSON booleans (`bool` by default; will be used -in @ref boolean_t) -@tparam NumberIntegerType type for JSON integer numbers (`int64_t` by -default; will be used in @ref number_integer_t) -@tparam NumberUnsignedType type for JSON unsigned integer numbers (@c -`uint64_t` by default; will be used in @ref number_unsigned_t) -@tparam NumberFloatType type for JSON floating-point numbers (`double` by -default; will be used in @ref number_float_t) -@tparam AllocatorType type of the allocator to use (`std::allocator` by -default) -@tparam JSONSerializer the serializer to resolve internal calls to `to_json()` -and `from_json()` (@ref adl_serializer by default) - -@requirement The class satisfies the following concept requirements: -- Basic - - [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible): - JSON values can be default constructed. The result will be a JSON null - value. - - [MoveConstructible](http://en.cppreference.com/w/cpp/concept/MoveConstructible): - A JSON value can be constructed from an rvalue argument. - - [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible): - A JSON value can be copy-constructed from an lvalue expression. - - [MoveAssignable](http://en.cppreference.com/w/cpp/concept/MoveAssignable): - A JSON value van be assigned from an rvalue argument. - - [CopyAssignable](http://en.cppreference.com/w/cpp/concept/CopyAssignable): - A JSON value can be copy-assigned from an lvalue expression. - - [Destructible](http://en.cppreference.com/w/cpp/concept/Destructible): - JSON values can be destructed. -- Layout - - [StandardLayoutType](http://en.cppreference.com/w/cpp/concept/StandardLayoutType): - JSON values have - [standard layout](http://en.cppreference.com/w/cpp/language/data_members#Standard_layout): - All non-static data members are private and standard layout types, the - class has no virtual functions or (virtual) base classes. -- Library-wide - - [EqualityComparable](http://en.cppreference.com/w/cpp/concept/EqualityComparable): - JSON values can be compared with `==`, see @ref - operator==(const_reference,const_reference). - - [LessThanComparable](http://en.cppreference.com/w/cpp/concept/LessThanComparable): - JSON values can be compared with `<`, see @ref - operator<(const_reference,const_reference). - - [Swappable](http://en.cppreference.com/w/cpp/concept/Swappable): - Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of - other compatible types, using unqualified function call @ref swap(). - - [NullablePointer](http://en.cppreference.com/w/cpp/concept/NullablePointer): - JSON values can be compared against `std::nullptr_t` objects which are used - to model the `null` value. -- Container - - [Container](http://en.cppreference.com/w/cpp/concept/Container): - JSON values can be used like STL containers and provide iterator access. - - [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer); - JSON values can be used like STL containers and provide reverse iterator - access. - -@invariant The member variables @a m_value and @a m_type have the following -relationship: -- If `m_type == value_t::object`, then `m_value.object != nullptr`. -- If `m_type == value_t::array`, then `m_value.array != nullptr`. -- If `m_type == value_t::string`, then `m_value.string != nullptr`. -The invariants are checked by member function assert_invariant(). - -@internal -@note ObjectType trick from http://stackoverflow.com/a/9860911 -@endinternal - -@see [RFC 7159: The JavaScript Object Notation (JSON) Data Interchange -Format](http://rfc7159.net/rfc7159) - -@since version 1.0.0 - -@nosubgrouping -*/ -NLOHMANN_BASIC_JSON_TPL_DECLARATION -class basic_json -{ - private: - template friend struct detail::external_constructor; - friend ::nlohmann::json_pointer; - friend ::nlohmann::detail::parser; - friend ::nlohmann::detail::serializer; - template - friend class ::nlohmann::detail::iter_impl; - template - friend class ::nlohmann::detail::binary_writer; - template - friend class ::nlohmann::detail::binary_reader; - - /// workaround type for MSVC - using basic_json_t = NLOHMANN_BASIC_JSON_TPL; - - // convenience aliases for types residing in namespace detail; - using lexer = ::nlohmann::detail::lexer; - using parser = ::nlohmann::detail::parser; - - using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t; - template - using internal_iterator = ::nlohmann::detail::internal_iterator; - template - using iter_impl = ::nlohmann::detail::iter_impl; - template - using iteration_proxy = ::nlohmann::detail::iteration_proxy; - template using json_reverse_iterator = ::nlohmann::detail::json_reverse_iterator; - - template - using output_adapter_t = ::nlohmann::detail::output_adapter_t; - - using binary_reader = ::nlohmann::detail::binary_reader; - template using binary_writer = ::nlohmann::detail::binary_writer; - - using serializer = ::nlohmann::detail::serializer; - - public: - using value_t = detail::value_t; - /// @copydoc nlohmann::json_pointer - using json_pointer = ::nlohmann::json_pointer; - template - using json_serializer = JSONSerializer; - /// helper type for initializer lists of basic_json values - using initializer_list_t = std::initializer_list>; - - //////////////// - // exceptions // - //////////////// - - /// @name exceptions - /// Classes to implement user-defined exceptions. - /// @{ - - /// @copydoc detail::exception - using exception = detail::exception; - /// @copydoc detail::parse_error - using parse_error = detail::parse_error; - /// @copydoc detail::invalid_iterator - using invalid_iterator = detail::invalid_iterator; - /// @copydoc detail::type_error - using type_error = detail::type_error; - /// @copydoc detail::out_of_range - using out_of_range = detail::out_of_range; - /// @copydoc detail::other_error - using other_error = detail::other_error; - - /// @} - - ///////////////////// - // container types // - ///////////////////// - - /// @name container types - /// The canonic container types to use @ref basic_json like any other STL - /// container. - /// @{ - - /// the type of elements in a basic_json container - using value_type = basic_json; - - /// the type of an element reference - using reference = value_type&; - /// the type of an element const reference - using const_reference = const value_type&; - - /// a type to represent differences between iterators - using difference_type = std::ptrdiff_t; - /// a type to represent container sizes - using size_type = std::size_t; - - /// the allocator type - using allocator_type = AllocatorType; - - /// the type of an element pointer - using pointer = typename std::allocator_traits::pointer; - /// the type of an element const pointer - using const_pointer = typename std::allocator_traits::const_pointer; - - /// an iterator for a basic_json container - using iterator = iter_impl; - /// a const iterator for a basic_json container - using const_iterator = iter_impl; - /// a reverse iterator for a basic_json container - using reverse_iterator = json_reverse_iterator; - /// a const reverse iterator for a basic_json container - using const_reverse_iterator = json_reverse_iterator; - - /// @} - - /*! - @brief returns the allocator associated with the container - */ - static allocator_type get_allocator() - { - return allocator_type(); - } - - /*! - @brief returns version information on the library - - This function returns a JSON object with information about the library, - including the version number and information on the platform and compiler. - - @return JSON object holding version information - key | description - ----------- | --------------- - `compiler` | Information on the used compiler. It is an object with the following keys: `c++` (the used C++ standard), `family` (the compiler family; possible values are `clang`, `icc`, `gcc`, `ilecpp`, `msvc`, `pgcpp`, `sunpro`, and `unknown`), and `version` (the compiler version). - `copyright` | The copyright line for the library as string. - `name` | The name of the library as string. - `platform` | The used platform as string. Possible values are `win32`, `linux`, `apple`, `unix`, and `unknown`. - `url` | The URL of the project as string. - `version` | The version of the library. It is an object with the following keys: `major`, `minor`, and `patch` as defined by [Semantic Versioning](http://semver.org), and `string` (the version string). - - @liveexample{The following code shows an example output of the `meta()` - function.,meta} - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @complexity Constant. - - @since 2.1.0 - */ - static basic_json meta() - { - basic_json result; - - result["copyright"] = "(C) 2013-2017 Niels Lohmann"; - result["name"] = "JSON for Modern C++"; - result["url"] = "https://github.com/nlohmann/json"; - result["version"] = - { - {"string", "3.0.0"}, {"major", 3}, {"minor", 0}, {"patch", 0} - }; - -#ifdef _WIN32 - result["platform"] = "win32"; -#elif defined __linux__ - result["platform"] = "linux"; -#elif defined __APPLE__ - result["platform"] = "apple"; -#elif defined __unix__ - result["platform"] = "unix"; -#else - result["platform"] = "unknown"; -#endif - -#if defined(__ICC) || defined(__INTEL_COMPILER) - result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}}; -#elif defined(__clang__) - result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}}; -#elif defined(__GNUC__) || defined(__GNUG__) - result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}}; -#elif defined(__HP_cc) || defined(__HP_aCC) - result["compiler"] = "hp" -#elif defined(__IBMCPP__) - result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}}; -#elif defined(_MSC_VER) - result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}}; -#elif defined(__PGI) - result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}}; -#elif defined(__SUNPRO_CC) - result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}}; -#else - result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}}; -#endif - -#ifdef __cplusplus - result["compiler"]["c++"] = std::to_string(__cplusplus); -#else - result["compiler"]["c++"] = "unknown"; -#endif - return result; - } - - /////////////////////////// - // JSON value data types // - /////////////////////////// - - /// @name JSON value data types - /// The data types to store a JSON value. These types are derived from - /// the template arguments passed to class @ref basic_json. - /// @{ - -#if defined(JSON_HAS_CPP_14) - // Use transparent comparator if possible, combined with perfect forwarding - // on find() and count() calls prevents unnecessary string construction. - using object_comparator_t = std::less<>; -#else - using object_comparator_t = std::less; -#endif - - /*! - @brief a type for an object - - [RFC 7159](http://rfc7159.net/rfc7159) describes JSON objects as follows: - > An object is an unordered collection of zero or more name/value pairs, - > where a name is a string and a value is a string, number, boolean, null, - > object, or array. - - To store objects in C++, a type is defined by the template parameters - described below. - - @tparam ObjectType the container to store objects (e.g., `std::map` or - `std::unordered_map`) - @tparam StringType the type of the keys or names (e.g., `std::string`). - The comparison function `std::less` is used to order elements - inside the container. - @tparam AllocatorType the allocator to use for objects (e.g., - `std::allocator`) - - #### Default type - - With the default values for @a ObjectType (`std::map`), @a StringType - (`std::string`), and @a AllocatorType (`std::allocator`), the default - value for @a object_t is: - - @code {.cpp} - std::map< - std::string, // key_type - basic_json, // value_type - std::less, // key_compare - std::allocator> // allocator_type - > - @endcode - - #### Behavior - - The choice of @a object_t influences the behavior of the JSON class. With - the default type, objects have the following behavior: - - - When all names are unique, objects will be interoperable in the sense - that all software implementations receiving that object will agree on - the name-value mappings. - - When the names within an object are not unique, later stored name/value - pairs overwrite previously stored name/value pairs, leaving the used - names unique. For instance, `{"key": 1}` and `{"key": 2, "key": 1}` will - be treated as equal and both stored as `{"key": 1}`. - - Internally, name/value pairs are stored in lexicographical order of the - names. Objects will also be serialized (see @ref dump) in this order. - For instance, `{"b": 1, "a": 2}` and `{"a": 2, "b": 1}` will be stored - and serialized as `{"a": 2, "b": 1}`. - - When comparing objects, the order of the name/value pairs is irrelevant. - This makes objects interoperable in the sense that they will not be - affected by these differences. For instance, `{"b": 1, "a": 2}` and - `{"a": 2, "b": 1}` will be treated as equal. - - #### Limits - - [RFC 7159](http://rfc7159.net/rfc7159) specifies: - > An implementation may set limits on the maximum depth of nesting. - - In this class, the object's limit of nesting is not explicitly constrained. - However, a maximum depth of nesting may be introduced by the compiler or - runtime environment. A theoretical limit can be queried by calling the - @ref max_size function of a JSON object. - - #### Storage - - Objects are stored as pointers in a @ref basic_json type. That is, for any - access to object values, a pointer of type `object_t*` must be - dereferenced. - - @sa @ref array_t -- type for an array value - - @since version 1.0.0 - - @note The order name/value pairs are added to the object is *not* - preserved by the library. Therefore, iterating an object may return - name/value pairs in a different order than they were originally stored. In - fact, keys will be traversed in alphabetical order as `std::map` with - `std::less` is used by default. Please note this behavior conforms to [RFC - 7159](http://rfc7159.net/rfc7159), because any order implements the - specified "unordered" nature of JSON objects. - */ - using object_t = ObjectType>>; - - /*! - @brief a type for an array - - [RFC 7159](http://rfc7159.net/rfc7159) describes JSON arrays as follows: - > An array is an ordered sequence of zero or more values. - - To store objects in C++, a type is defined by the template parameters - explained below. - - @tparam ArrayType container type to store arrays (e.g., `std::vector` or - `std::list`) - @tparam AllocatorType allocator to use for arrays (e.g., `std::allocator`) - - #### Default type - - With the default values for @a ArrayType (`std::vector`) and @a - AllocatorType (`std::allocator`), the default value for @a array_t is: - - @code {.cpp} - std::vector< - basic_json, // value_type - std::allocator // allocator_type - > - @endcode - - #### Limits - - [RFC 7159](http://rfc7159.net/rfc7159) specifies: - > An implementation may set limits on the maximum depth of nesting. - - In this class, the array's limit of nesting is not explicitly constrained. - However, a maximum depth of nesting may be introduced by the compiler or - runtime environment. A theoretical limit can be queried by calling the - @ref max_size function of a JSON array. - - #### Storage - - Arrays are stored as pointers in a @ref basic_json type. That is, for any - access to array values, a pointer of type `array_t*` must be dereferenced. - - @sa @ref object_t -- type for an object value - - @since version 1.0.0 - */ - using array_t = ArrayType>; - - /*! - @brief a type for a string - - [RFC 7159](http://rfc7159.net/rfc7159) describes JSON strings as follows: - > A string is a sequence of zero or more Unicode characters. - - To store objects in C++, a type is defined by the template parameter - described below. Unicode values are split by the JSON class into - byte-sized characters during deserialization. - - @tparam StringType the container to store strings (e.g., `std::string`). - Note this container is used for keys/names in objects, see @ref object_t. - - #### Default type - - With the default values for @a StringType (`std::string`), the default - value for @a string_t is: - - @code {.cpp} - std::string - @endcode - - #### Encoding - - Strings are stored in UTF-8 encoding. Therefore, functions like - `std::string::size()` or `std::string::length()` return the number of - bytes in the string rather than the number of characters or glyphs. - - #### String comparison - - [RFC 7159](http://rfc7159.net/rfc7159) states: - > Software implementations are typically required to test names of object - > members for equality. Implementations that transform the textual - > representation into sequences of Unicode code units and then perform the - > comparison numerically, code unit by code unit, are interoperable in the - > sense that implementations will agree in all cases on equality or - > inequality of two strings. For example, implementations that compare - > strings with escaped characters unconverted may incorrectly find that - > `"a\\b"` and `"a\u005Cb"` are not equal. - - This implementation is interoperable as it does compare strings code unit - by code unit. - - #### Storage - - String values are stored as pointers in a @ref basic_json type. That is, - for any access to string values, a pointer of type `string_t*` must be - dereferenced. - - @since version 1.0.0 - */ - using string_t = StringType; - - /*! - @brief a type for a boolean - - [RFC 7159](http://rfc7159.net/rfc7159) implicitly describes a boolean as a - type which differentiates the two literals `true` and `false`. - - To store objects in C++, a type is defined by the template parameter @a - BooleanType which chooses the type to use. - - #### Default type - - With the default values for @a BooleanType (`bool`), the default value for - @a boolean_t is: - - @code {.cpp} - bool - @endcode - - #### Storage - - Boolean values are stored directly inside a @ref basic_json type. - - @since version 1.0.0 - */ - using boolean_t = BooleanType; - - /*! - @brief a type for a number (integer) - - [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: - > The representation of numbers is similar to that used in most - > programming languages. A number is represented in base 10 using decimal - > digits. It contains an integer component that may be prefixed with an - > optional minus sign, which may be followed by a fraction part and/or an - > exponent part. Leading zeros are not allowed. (...) Numeric values that - > cannot be represented in the grammar below (such as Infinity and NaN) - > are not permitted. - - This description includes both integer and floating-point numbers. - However, C++ allows more precise storage if it is known whether the number - is a signed integer, an unsigned integer or a floating-point number. - Therefore, three different types, @ref number_integer_t, @ref - number_unsigned_t and @ref number_float_t are used. - - To store integer numbers in C++, a type is defined by the template - parameter @a NumberIntegerType which chooses the type to use. - - #### Default type - - With the default values for @a NumberIntegerType (`int64_t`), the default - value for @a number_integer_t is: - - @code {.cpp} - int64_t - @endcode - - #### Default behavior - - - The restrictions about leading zeros is not enforced in C++. Instead, - leading zeros in integer literals lead to an interpretation as octal - number. Internally, the value will be stored as decimal number. For - instance, the C++ integer literal `010` will be serialized to `8`. - During deserialization, leading zeros yield an error. - - Not-a-number (NaN) values will be serialized to `null`. - - #### Limits - - [RFC 7159](http://rfc7159.net/rfc7159) specifies: - > An implementation may set limits on the range and precision of numbers. - - When the default type is used, the maximal integer number that can be - stored is `9223372036854775807` (INT64_MAX) and the minimal integer number - that can be stored is `-9223372036854775808` (INT64_MIN). Integer numbers - that are out of range will yield over/underflow when used in a - constructor. During deserialization, too large or small integer numbers - will be automatically be stored as @ref number_unsigned_t or @ref - number_float_t. - - [RFC 7159](http://rfc7159.net/rfc7159) further states: - > Note that when such software is used, numbers that are integers and are - > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense - > that implementations will agree exactly on their numeric values. - - As this range is a subrange of the exactly supported range [INT64_MIN, - INT64_MAX], this class's integer type is interoperable. - - #### Storage - - Integer number values are stored directly inside a @ref basic_json type. - - @sa @ref number_float_t -- type for number values (floating-point) - - @sa @ref number_unsigned_t -- type for number values (unsigned integer) - - @since version 1.0.0 - */ - using number_integer_t = NumberIntegerType; - - /*! - @brief a type for a number (unsigned) - - [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: - > The representation of numbers is similar to that used in most - > programming languages. A number is represented in base 10 using decimal - > digits. It contains an integer component that may be prefixed with an - > optional minus sign, which may be followed by a fraction part and/or an - > exponent part. Leading zeros are not allowed. (...) Numeric values that - > cannot be represented in the grammar below (such as Infinity and NaN) - > are not permitted. - - This description includes both integer and floating-point numbers. - However, C++ allows more precise storage if it is known whether the number - is a signed integer, an unsigned integer or a floating-point number. - Therefore, three different types, @ref number_integer_t, @ref - number_unsigned_t and @ref number_float_t are used. - - To store unsigned integer numbers in C++, a type is defined by the - template parameter @a NumberUnsignedType which chooses the type to use. - - #### Default type - - With the default values for @a NumberUnsignedType (`uint64_t`), the - default value for @a number_unsigned_t is: - - @code {.cpp} - uint64_t - @endcode - - #### Default behavior - - - The restrictions about leading zeros is not enforced in C++. Instead, - leading zeros in integer literals lead to an interpretation as octal - number. Internally, the value will be stored as decimal number. For - instance, the C++ integer literal `010` will be serialized to `8`. - During deserialization, leading zeros yield an error. - - Not-a-number (NaN) values will be serialized to `null`. - - #### Limits - - [RFC 7159](http://rfc7159.net/rfc7159) specifies: - > An implementation may set limits on the range and precision of numbers. - - When the default type is used, the maximal integer number that can be - stored is `18446744073709551615` (UINT64_MAX) and the minimal integer - number that can be stored is `0`. Integer numbers that are out of range - will yield over/underflow when used in a constructor. During - deserialization, too large or small integer numbers will be automatically - be stored as @ref number_integer_t or @ref number_float_t. - - [RFC 7159](http://rfc7159.net/rfc7159) further states: - > Note that when such software is used, numbers that are integers and are - > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense - > that implementations will agree exactly on their numeric values. - - As this range is a subrange (when considered in conjunction with the - number_integer_t type) of the exactly supported range [0, UINT64_MAX], - this class's integer type is interoperable. - - #### Storage - - Integer number values are stored directly inside a @ref basic_json type. - - @sa @ref number_float_t -- type for number values (floating-point) - @sa @ref number_integer_t -- type for number values (integer) - - @since version 2.0.0 - */ - using number_unsigned_t = NumberUnsignedType; - - /*! - @brief a type for a number (floating-point) - - [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: - > The representation of numbers is similar to that used in most - > programming languages. A number is represented in base 10 using decimal - > digits. It contains an integer component that may be prefixed with an - > optional minus sign, which may be followed by a fraction part and/or an - > exponent part. Leading zeros are not allowed. (...) Numeric values that - > cannot be represented in the grammar below (such as Infinity and NaN) - > are not permitted. - - This description includes both integer and floating-point numbers. - However, C++ allows more precise storage if it is known whether the number - is a signed integer, an unsigned integer or a floating-point number. - Therefore, three different types, @ref number_integer_t, @ref - number_unsigned_t and @ref number_float_t are used. - - To store floating-point numbers in C++, a type is defined by the template - parameter @a NumberFloatType which chooses the type to use. - - #### Default type - - With the default values for @a NumberFloatType (`double`), the default - value for @a number_float_t is: - - @code {.cpp} - double - @endcode - - #### Default behavior - - - The restrictions about leading zeros is not enforced in C++. Instead, - leading zeros in floating-point literals will be ignored. Internally, - the value will be stored as decimal number. For instance, the C++ - floating-point literal `01.2` will be serialized to `1.2`. During - deserialization, leading zeros yield an error. - - Not-a-number (NaN) values will be serialized to `null`. - - #### Limits - - [RFC 7159](http://rfc7159.net/rfc7159) states: - > This specification allows implementations to set limits on the range and - > precision of numbers accepted. Since software that implements IEEE - > 754-2008 binary64 (double precision) numbers is generally available and - > widely used, good interoperability can be achieved by implementations - > that expect no more precision or range than these provide, in the sense - > that implementations will approximate JSON numbers within the expected - > precision. - - This implementation does exactly follow this approach, as it uses double - precision floating-point numbers. Note values smaller than - `-1.79769313486232e+308` and values greater than `1.79769313486232e+308` - will be stored as NaN internally and be serialized to `null`. - - #### Storage - - Floating-point number values are stored directly inside a @ref basic_json - type. - - @sa @ref number_integer_t -- type for number values (integer) - - @sa @ref number_unsigned_t -- type for number values (unsigned integer) - - @since version 1.0.0 - */ - using number_float_t = NumberFloatType; - - /// @} - - private: - - /// helper for exception-safe object creation - template - static T* create(Args&& ... args) - { - AllocatorType alloc; - using AllocatorTraits = std::allocator_traits>; - - auto deleter = [&](T * object) - { - AllocatorTraits::deallocate(alloc, object, 1); - }; - std::unique_ptr object(AllocatorTraits::allocate(alloc, 1), deleter); - AllocatorTraits::construct(alloc, object.get(), std::forward(args)...); - assert(object != nullptr); - return object.release(); - } - - //////////////////////// - // JSON value storage // - //////////////////////// - - /*! - @brief a JSON value - - The actual storage for a JSON value of the @ref basic_json class. This - union combines the different storage types for the JSON value types - defined in @ref value_t. - - JSON type | value_t type | used type - --------- | --------------- | ------------------------ - object | object | pointer to @ref object_t - array | array | pointer to @ref array_t - string | string | pointer to @ref string_t - boolean | boolean | @ref boolean_t - number | number_integer | @ref number_integer_t - number | number_unsigned | @ref number_unsigned_t - number | number_float | @ref number_float_t - null | null | *no value is stored* - - @note Variable-length types (objects, arrays, and strings) are stored as - pointers. The size of the union should not exceed 64 bits if the default - value types are used. - - @since version 1.0.0 - */ - union json_value - { - /// object (stored with pointer to save storage) - object_t* object; - /// array (stored with pointer to save storage) - array_t* array; - /// string (stored with pointer to save storage) - string_t* string; - /// boolean - boolean_t boolean; - /// number (integer) - number_integer_t number_integer; - /// number (unsigned integer) - number_unsigned_t number_unsigned; - /// number (floating-point) - number_float_t number_float; - - /// default constructor (for null values) - json_value() = default; - /// constructor for booleans - json_value(boolean_t v) noexcept : boolean(v) {} - /// constructor for numbers (integer) - json_value(number_integer_t v) noexcept : number_integer(v) {} - /// constructor for numbers (unsigned) - json_value(number_unsigned_t v) noexcept : number_unsigned(v) {} - /// constructor for numbers (floating-point) - json_value(number_float_t v) noexcept : number_float(v) {} - /// constructor for empty values of a given type - json_value(value_t t) - { - switch (t) - { - case value_t::object: - { - object = create(); - break; - } - - case value_t::array: - { - array = create(); - break; - } - - case value_t::string: - { - string = create(""); - break; - } - - case value_t::boolean: - { - boolean = boolean_t(false); - break; - } - - case value_t::number_integer: - { - number_integer = number_integer_t(0); - break; - } - - case value_t::number_unsigned: - { - number_unsigned = number_unsigned_t(0); - break; - } - - case value_t::number_float: - { - number_float = number_float_t(0.0); - break; - } - - case value_t::null: - { - object = nullptr; // silence warning, see #821 - break; - } - - default: - { - object = nullptr; // silence warning, see #821 - if (JSON_UNLIKELY(t == value_t::null)) - { - JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.0.0")); // LCOV_EXCL_LINE - } - break; - } - } - } - - /// constructor for strings - json_value(const string_t& value) - { - string = create(value); - } - - /// constructor for rvalue strings - json_value(string_t&& value) - { - string = create(std::move(value)); - } - - /// constructor for objects - json_value(const object_t& value) - { - object = create(value); - } - - /// constructor for rvalue objects - json_value(object_t&& value) - { - object = create(std::move(value)); - } - - /// constructor for arrays - json_value(const array_t& value) - { - array = create(value); - } - - /// constructor for rvalue arrays - json_value(array_t&& value) - { - array = create(std::move(value)); - } - - void destroy(value_t t) - { - switch (t) - { - case value_t::object: - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, object); - std::allocator_traits::deallocate(alloc, object, 1); - break; - } - - case value_t::array: - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, array); - std::allocator_traits::deallocate(alloc, array, 1); - break; - } - - case value_t::string: - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, string); - std::allocator_traits::deallocate(alloc, string, 1); - break; - } - - default: - { - break; - } - } - } - }; - - /*! - @brief checks the class invariants - - This function asserts the class invariants. It needs to be called at the - end of every constructor to make sure that created objects respect the - invariant. Furthermore, it has to be called each time the type of a JSON - value is changed, because the invariant expresses a relationship between - @a m_type and @a m_value. - */ - void assert_invariant() const - { - assert(m_type != value_t::object or m_value.object != nullptr); - assert(m_type != value_t::array or m_value.array != nullptr); - assert(m_type != value_t::string or m_value.string != nullptr); - } - - public: - ////////////////////////// - // JSON parser callback // - ////////////////////////// - - /*! - @brief parser event types - - The parser callback distinguishes the following events: - - `object_start`: the parser read `{` and started to process a JSON object - - `key`: the parser read a key of a value in an object - - `object_end`: the parser read `}` and finished processing a JSON object - - `array_start`: the parser read `[` and started to process a JSON array - - `array_end`: the parser read `]` and finished processing a JSON array - - `value`: the parser finished reading a JSON value - - @image html callback_events.png "Example when certain parse events are triggered" - - @sa @ref parser_callback_t for more information and examples - */ - using parse_event_t = typename parser::parse_event_t; - - /*! - @brief per-element parser callback type - - With a parser callback function, the result of parsing a JSON text can be - influenced. When passed to @ref parse, it is called on certain events - (passed as @ref parse_event_t via parameter @a event) with a set recursion - depth @a depth and context JSON value @a parsed. The return value of the - callback function is a boolean indicating whether the element that emitted - the callback shall be kept or not. - - We distinguish six scenarios (determined by the event type) in which the - callback function can be called. The following table describes the values - of the parameters @a depth, @a event, and @a parsed. - - parameter @a event | description | parameter @a depth | parameter @a parsed - ------------------ | ----------- | ------------------ | ------------------- - parse_event_t::object_start | the parser read `{` and started to process a JSON object | depth of the parent of the JSON object | a JSON value with type discarded - parse_event_t::key | the parser read a key of a value in an object | depth of the currently parsed JSON object | a JSON string containing the key - parse_event_t::object_end | the parser read `}` and finished processing a JSON object | depth of the parent of the JSON object | the parsed JSON object - parse_event_t::array_start | the parser read `[` and started to process a JSON array | depth of the parent of the JSON array | a JSON value with type discarded - parse_event_t::array_end | the parser read `]` and finished processing a JSON array | depth of the parent of the JSON array | the parsed JSON array - parse_event_t::value | the parser finished reading a JSON value | depth of the value | the parsed JSON value - - @image html callback_events.png "Example when certain parse events are triggered" - - Discarding a value (i.e., returning `false`) has different effects - depending on the context in which function was called: - - - Discarded values in structured types are skipped. That is, the parser - will behave as if the discarded value was never read. - - In case a value outside a structured type is skipped, it is replaced - with `null`. This case happens if the top-level element is skipped. - - @param[in] depth the depth of the recursion during parsing - - @param[in] event an event of type parse_event_t indicating the context in - the callback function has been called - - @param[in,out] parsed the current intermediate parse result; note that - writing to this value has no effect for parse_event_t::key events - - @return Whether the JSON value which called the function during parsing - should be kept (`true`) or not (`false`). In the latter case, it is either - skipped completely or replaced by an empty discarded object. - - @sa @ref parse for examples - - @since version 1.0.0 - */ - using parser_callback_t = typename parser::parser_callback_t; - - ////////////////// - // constructors // - ////////////////// - - /// @name constructors and destructors - /// Constructors of class @ref basic_json, copy/move constructor, copy - /// assignment, static functions creating objects, and the destructor. - /// @{ - - /*! - @brief create an empty value with a given type - - Create an empty JSON value with a given type. The value will be default - initialized with an empty value which depends on the type: - - Value type | initial value - ----------- | ------------- - null | `null` - boolean | `false` - string | `""` - number | `0` - object | `{}` - array | `[]` - - @param[in] v the type of the value to create - - @complexity Constant. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @liveexample{The following code shows the constructor for different @ref - value_t values,basic_json__value_t} - - @sa @ref clear() -- restores the postcondition of this constructor - - @since version 1.0.0 - */ - basic_json(const value_t v) - : m_type(v), m_value(v) - { - assert_invariant(); - } - - /*! - @brief create a null object - - Create a `null` JSON value. It either takes a null pointer as parameter - (explicitly creating `null`) or no parameter (implicitly creating `null`). - The passed null pointer itself is not read -- it is only used to choose - the right constructor. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this constructor never throws - exceptions. - - @liveexample{The following code shows the constructor with and without a - null pointer parameter.,basic_json__nullptr_t} - - @since version 1.0.0 - */ - basic_json(std::nullptr_t = nullptr) noexcept - : basic_json(value_t::null) - { - assert_invariant(); - } - - /*! - @brief create a JSON value - - This is a "catch all" constructor for all compatible JSON types; that is, - types for which a `to_json()` method exists. The constructor forwards the - parameter @a val to that method (to `json_serializer::to_json` method - with `U = uncvref_t`, to be exact). - - Template type @a CompatibleType includes, but is not limited to, the - following types: - - **arrays**: @ref array_t and all kinds of compatible containers such as - `std::vector`, `std::deque`, `std::list`, `std::forward_list`, - `std::array`, `std::valarray`, `std::set`, `std::unordered_set`, - `std::multiset`, and `std::unordered_multiset` with a `value_type` from - which a @ref basic_json value can be constructed. - - **objects**: @ref object_t and all kinds of compatible associative - containers such as `std::map`, `std::unordered_map`, `std::multimap`, - and `std::unordered_multimap` with a `key_type` compatible to - @ref string_t and a `value_type` from which a @ref basic_json value can - be constructed. - - **strings**: @ref string_t, string literals, and all compatible string - containers can be used. - - **numbers**: @ref number_integer_t, @ref number_unsigned_t, - @ref number_float_t, and all convertible number types such as `int`, - `size_t`, `int64_t`, `float` or `double` can be used. - - **boolean**: @ref boolean_t / `bool` can be used. - - See the examples below. - - @tparam CompatibleType a type such that: - - @a CompatibleType is not derived from `std::istream`, - - @a CompatibleType is not @ref basic_json (to avoid hijacking copy/move - constructors), - - @a CompatibleType is not a @ref basic_json nested type (e.g., - @ref json_pointer, @ref iterator, etc ...) - - @ref @ref json_serializer has a - `to_json(basic_json_t&, CompatibleType&&)` method - - @tparam U = `uncvref_t` - - @param[in] val the value to be forwarded to the respective constructor - - @complexity Usually linear in the size of the passed @a val, also - depending on the implementation of the called `to_json()` - method. - - @exceptionsafety Depends on the called constructor. For types directly - supported by the library (i.e., all types for which no `to_json()` function - was provided), strong guarantee holds: if an exception is thrown, there are - no changes to any JSON value. - - @liveexample{The following code shows the constructor with several - compatible types.,basic_json__CompatibleType} - - @since version 2.1.0 - */ - template, - detail::enable_if_t::value and - not std::is_same::value and - not detail::is_basic_json_nested_type< - basic_json_t, U>::value and - detail::has_to_json::value, - int> = 0> - basic_json(CompatibleType && val) noexcept(noexcept(JSONSerializer::to_json( - std::declval(), std::forward(val)))) - { - JSONSerializer::to_json(*this, std::forward(val)); - assert_invariant(); - } - - /*! - @brief create a container (array or object) from an initializer list - - Creates a JSON value of type array or object from the passed initializer - list @a init. In case @a type_deduction is `true` (default), the type of - the JSON value to be created is deducted from the initializer list @a init - according to the following rules: - - 1. If the list is empty, an empty JSON object value `{}` is created. - 2. If the list consists of pairs whose first element is a string, a JSON - object value is created where the first elements of the pairs are - treated as keys and the second elements are as values. - 3. In all other cases, an array is created. - - The rules aim to create the best fit between a C++ initializer list and - JSON values. The rationale is as follows: - - 1. The empty initializer list is written as `{}` which is exactly an empty - JSON object. - 2. C++ has no way of describing mapped types other than to list a list of - pairs. As JSON requires that keys must be of type string, rule 2 is the - weakest constraint one can pose on initializer lists to interpret them - as an object. - 3. In all other cases, the initializer list could not be interpreted as - JSON object type, so interpreting it as JSON array type is safe. - - With the rules described above, the following JSON values cannot be - expressed by an initializer list: - - - the empty array (`[]`): use @ref array(initializer_list_t) - with an empty initializer list in this case - - arrays whose elements satisfy rule 2: use @ref - array(initializer_list_t) with the same initializer list - in this case - - @note When used without parentheses around an empty initializer list, @ref - basic_json() is called instead of this function, yielding the JSON null - value. - - @param[in] init initializer list with JSON values - - @param[in] type_deduction internal parameter; when set to `true`, the type - of the JSON value is deducted from the initializer list @a init; when set - to `false`, the type provided via @a manual_type is forced. This mode is - used by the functions @ref array(initializer_list_t) and - @ref object(initializer_list_t). - - @param[in] manual_type internal parameter; when @a type_deduction is set - to `false`, the created JSON value will use the provided type (only @ref - value_t::array and @ref value_t::object are valid); when @a type_deduction - is set to `true`, this parameter has no effect - - @throw type_error.301 if @a type_deduction is `false`, @a manual_type is - `value_t::object`, but @a init contains an element which is not a pair - whose first element is a string. In this case, the constructor could not - create an object. If @a type_deduction would have be `true`, an array - would have been created. See @ref object(initializer_list_t) - for an example. - - @complexity Linear in the size of the initializer list @a init. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @liveexample{The example below shows how JSON values are created from - initializer lists.,basic_json__list_init_t} - - @sa @ref array(initializer_list_t) -- create a JSON array - value from an initializer list - @sa @ref object(initializer_list_t) -- create a JSON object - value from an initializer list - - @since version 1.0.0 - */ - basic_json(initializer_list_t init, - bool type_deduction = true, - value_t manual_type = value_t::array) - { - // check if each element is an array with two elements whose first - // element is a string - bool is_an_object = std::all_of(init.begin(), init.end(), - [](const detail::json_ref& element_ref) - { - return (element_ref->is_array() and element_ref->size() == 2 and (*element_ref)[0].is_string()); - }); - - // adjust type if type deduction is not wanted - if (not type_deduction) - { - // if array is wanted, do not create an object though possible - if (manual_type == value_t::array) - { - is_an_object = false; - } - - // if object is wanted but impossible, throw an exception - if (JSON_UNLIKELY(manual_type == value_t::object and not is_an_object)) - { - JSON_THROW(type_error::create(301, "cannot create object from initializer list")); - } - } - - if (is_an_object) - { - // the initializer list is a list of pairs -> create object - m_type = value_t::object; - m_value = value_t::object; - - std::for_each(init.begin(), init.end(), [this](const detail::json_ref& element_ref) - { - auto element = element_ref.moved_or_copied(); - m_value.object->emplace( - std::move(*((*element.m_value.array)[0].m_value.string)), - std::move((*element.m_value.array)[1])); - }); - } - else - { - // the initializer list describes an array -> create array - m_type = value_t::array; - m_value.array = create(init.begin(), init.end()); - } - - assert_invariant(); - } - - /*! - @brief explicitly create an array from an initializer list - - Creates a JSON array value from a given initializer list. That is, given a - list of values `a, b, c`, creates the JSON value `[a, b, c]`. If the - initializer list is empty, the empty array `[]` is created. - - @note This function is only needed to express two edge cases that cannot - be realized with the initializer list constructor (@ref - basic_json(initializer_list_t, bool, value_t)). These cases - are: - 1. creating an array whose elements are all pairs whose first element is a - string -- in this case, the initializer list constructor would create an - object, taking the first elements as keys - 2. creating an empty array -- passing the empty initializer list to the - initializer list constructor yields an empty object - - @param[in] init initializer list with JSON values to create an array from - (optional) - - @return JSON array value - - @complexity Linear in the size of @a init. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @liveexample{The following code shows an example for the `array` - function.,array} - - @sa @ref basic_json(initializer_list_t, bool, value_t) -- - create a JSON value from an initializer list - @sa @ref object(initializer_list_t) -- create a JSON object - value from an initializer list - - @since version 1.0.0 - */ - static basic_json array(initializer_list_t init = {}) - { - return basic_json(init, false, value_t::array); - } - - /*! - @brief explicitly create an object from an initializer list - - Creates a JSON object value from a given initializer list. The initializer - lists elements must be pairs, and their first elements must be strings. If - the initializer list is empty, the empty object `{}` is created. - - @note This function is only added for symmetry reasons. In contrast to the - related function @ref array(initializer_list_t), there are - no cases which can only be expressed by this function. That is, any - initializer list @a init can also be passed to the initializer list - constructor @ref basic_json(initializer_list_t, bool, value_t). - - @param[in] init initializer list to create an object from (optional) - - @return JSON object value - - @throw type_error.301 if @a init is not a list of pairs whose first - elements are strings. In this case, no object can be created. When such a - value is passed to @ref basic_json(initializer_list_t, bool, value_t), - an array would have been created from the passed initializer list @a init. - See example below. - - @complexity Linear in the size of @a init. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @liveexample{The following code shows an example for the `object` - function.,object} - - @sa @ref basic_json(initializer_list_t, bool, value_t) -- - create a JSON value from an initializer list - @sa @ref array(initializer_list_t) -- create a JSON array - value from an initializer list - - @since version 1.0.0 - */ - static basic_json object(initializer_list_t init = {}) - { - return basic_json(init, false, value_t::object); - } - - /*! - @brief construct an array with count copies of given value - - Constructs a JSON array value by creating @a cnt copies of a passed value. - In case @a cnt is `0`, an empty array is created. - - @param[in] cnt the number of JSON copies of @a val to create - @param[in] val the JSON value to copy - - @post `std::distance(begin(),end()) == cnt` holds. - - @complexity Linear in @a cnt. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @liveexample{The following code shows examples for the @ref - basic_json(size_type\, const basic_json&) - constructor.,basic_json__size_type_basic_json} - - @since version 1.0.0 - */ - basic_json(size_type cnt, const basic_json& val) - : m_type(value_t::array) - { - m_value.array = create(cnt, val); - assert_invariant(); - } - - /*! - @brief construct a JSON container given an iterator range - - Constructs the JSON value with the contents of the range `[first, last)`. - The semantics depends on the different types a JSON value can have: - - In case of a null type, invalid_iterator.206 is thrown. - - In case of other primitive types (number, boolean, or string), @a first - must be `begin()` and @a last must be `end()`. In this case, the value is - copied. Otherwise, invalid_iterator.204 is thrown. - - In case of structured types (array, object), the constructor behaves as - similar versions for `std::vector` or `std::map`; that is, a JSON array - or object is constructed from the values in the range. - - @tparam InputIT an input iterator type (@ref iterator or @ref - const_iterator) - - @param[in] first begin of the range to copy from (included) - @param[in] last end of the range to copy from (excluded) - - @pre Iterators @a first and @a last must be initialized. **This - precondition is enforced with an assertion (see warning).** If - assertions are switched off, a violation of this precondition yields - undefined behavior. - - @pre Range `[first, last)` is valid. Usually, this precondition cannot be - checked efficiently. Only certain edge cases are detected; see the - description of the exceptions below. A violation of this precondition - yields undefined behavior. - - @warning A precondition is enforced with a runtime assertion that will - result in calling `std::abort` if this precondition is not met. - Assertions can be disabled by defining `NDEBUG` at compile time. - See http://en.cppreference.com/w/cpp/error/assert for more - information. - - @throw invalid_iterator.201 if iterators @a first and @a last are not - compatible (i.e., do not belong to the same JSON value). In this case, - the range `[first, last)` is undefined. - @throw invalid_iterator.204 if iterators @a first and @a last belong to a - primitive type (number, boolean, or string), but @a first does not point - to the first element any more. In this case, the range `[first, last)` is - undefined. See example code below. - @throw invalid_iterator.206 if iterators @a first and @a last belong to a - null value. In this case, the range `[first, last)` is undefined. - - @complexity Linear in distance between @a first and @a last. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @liveexample{The example below shows several ways to create JSON values by - specifying a subrange with iterators.,basic_json__InputIt_InputIt} - - @since version 1.0.0 - */ - template::value or - std::is_same::value, int>::type = 0> - basic_json(InputIT first, InputIT last) - { - assert(first.m_object != nullptr); - assert(last.m_object != nullptr); - - // make sure iterator fits the current value - if (JSON_UNLIKELY(first.m_object != last.m_object)) - { - JSON_THROW(invalid_iterator::create(201, "iterators are not compatible")); - } - - // copy type from first iterator - m_type = first.m_object->m_type; - - // check if iterator range is complete for primitive values - switch (m_type) - { - case value_t::boolean: - case value_t::number_float: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::string: - { - if (JSON_UNLIKELY(not first.m_it.primitive_iterator.is_begin() - or not last.m_it.primitive_iterator.is_end())) - { - JSON_THROW(invalid_iterator::create(204, "iterators out of range")); - } - break; - } - - default: - break; - } - - switch (m_type) - { - case value_t::number_integer: - { - m_value.number_integer = first.m_object->m_value.number_integer; - break; - } - - case value_t::number_unsigned: - { - m_value.number_unsigned = first.m_object->m_value.number_unsigned; - break; - } - - case value_t::number_float: - { - m_value.number_float = first.m_object->m_value.number_float; - break; - } - - case value_t::boolean: - { - m_value.boolean = first.m_object->m_value.boolean; - break; - } - - case value_t::string: - { - m_value = *first.m_object->m_value.string; - break; - } - - case value_t::object: - { - m_value.object = create(first.m_it.object_iterator, - last.m_it.object_iterator); - break; - } - - case value_t::array: - { - m_value.array = create(first.m_it.array_iterator, - last.m_it.array_iterator); - break; - } - - default: - JSON_THROW(invalid_iterator::create(206, "cannot construct with iterators from " + - std::string(first.m_object->type_name()))); - } - - assert_invariant(); - } - - /////////////////////////////////////// - // other constructors and destructor // - /////////////////////////////////////// - - /// @private - basic_json(const detail::json_ref& ref) - : basic_json(ref.moved_or_copied()) - {} - - /*! - @brief copy constructor - - Creates a copy of a given JSON value. - - @param[in] other the JSON value to copy - - @post `*this == other` - - @complexity Linear in the size of @a other. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is linear. - - As postcondition, it holds: `other == basic_json(other)`. - - @liveexample{The following code shows an example for the copy - constructor.,basic_json__basic_json} - - @since version 1.0.0 - */ - basic_json(const basic_json& other) - : m_type(other.m_type) - { - // check of passed value is valid - other.assert_invariant(); - - switch (m_type) - { - case value_t::object: - { - m_value = *other.m_value.object; - break; - } - - case value_t::array: - { - m_value = *other.m_value.array; - break; - } - - case value_t::string: - { - m_value = *other.m_value.string; - break; - } - - case value_t::boolean: - { - m_value = other.m_value.boolean; - break; - } - - case value_t::number_integer: - { - m_value = other.m_value.number_integer; - break; - } - - case value_t::number_unsigned: - { - m_value = other.m_value.number_unsigned; - break; - } - - case value_t::number_float: - { - m_value = other.m_value.number_float; - break; - } - - default: - break; - } - - assert_invariant(); - } - - /*! - @brief move constructor - - Move constructor. Constructs a JSON value with the contents of the given - value @a other using move semantics. It "steals" the resources from @a - other and leaves it as JSON null value. - - @param[in,out] other value to move to this object - - @post `*this` has the same value as @a other before the call. - @post @a other is a JSON null value. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this constructor never throws - exceptions. - - @requirement This function helps `basic_json` satisfying the - [MoveConstructible](http://en.cppreference.com/w/cpp/concept/MoveConstructible) - requirements. - - @liveexample{The code below shows the move constructor explicitly called - via std::move.,basic_json__moveconstructor} - - @since version 1.0.0 - */ - basic_json(basic_json&& other) noexcept - : m_type(std::move(other.m_type)), - m_value(std::move(other.m_value)) - { - // check that passed value is valid - other.assert_invariant(); - - // invalidate payload - other.m_type = value_t::null; - other.m_value = {}; - - assert_invariant(); - } - - /*! - @brief copy assignment - - Copy assignment operator. Copies a JSON value via the "copy and swap" - strategy: It is expressed in terms of the copy constructor, destructor, - and the `swap()` member function. - - @param[in] other value to copy from - - @complexity Linear. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is linear. - - @liveexample{The code below shows and example for the copy assignment. It - creates a copy of value `a` which is then swapped with `b`. Finally\, the - copy of `a` (which is the null value after the swap) is - destroyed.,basic_json__copyassignment} - - @since version 1.0.0 - */ - reference& operator=(basic_json other) noexcept ( - std::is_nothrow_move_constructible::value and - std::is_nothrow_move_assignable::value and - std::is_nothrow_move_constructible::value and - std::is_nothrow_move_assignable::value - ) - { - // check that passed value is valid - other.assert_invariant(); - - using std::swap; - swap(m_type, other.m_type); - swap(m_value, other.m_value); - - assert_invariant(); - return *this; - } - - /*! - @brief destructor - - Destroys the JSON value and frees all allocated memory. - - @complexity Linear. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is linear. - - All stored elements are destroyed and all memory is freed. - - @since version 1.0.0 - */ - ~basic_json() - { - assert_invariant(); - m_value.destroy(m_type); - } - - /// @} - - public: - /////////////////////// - // object inspection // - /////////////////////// - - /// @name object inspection - /// Functions to inspect the type of a JSON value. - /// @{ - - /*! - @brief serialization - - Serialization function for JSON values. The function tries to mimic - Python's `json.dumps()` function, and currently supports its @a indent - and @a ensure_ascii parameters. - - @param[in] indent If indent is nonnegative, then array elements and object - members will be pretty-printed with that indent level. An indent level of - `0` will only insert newlines. `-1` (the default) selects the most compact - representation. - @param[in] indent_char The character to use for indentation if @a indent is - greater than `0`. The default is ` ` (space). - @param[in] ensure_ascii If @a ensure_ascii is true, all non-ASCII characters - in the output are escaped with `\uXXXX` sequences, and the result consists - of ASCII characters only. - - @return string containing the serialization of the JSON value - - @throw type_error.316 if a string stored inside the JSON value is not - UTF-8 encoded - - @complexity Linear. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @liveexample{The following example shows the effect of different @a indent\, - @a indent_char\, and @a ensure_ascii parameters to the result of the - serialization.,dump} - - @see https://docs.python.org/2/library/json.html#json.dump - - @since version 1.0.0; indentation character @a indent_char, option - @a ensure_ascii and exceptions added in version 3.0.0 - */ - string_t dump(const int indent = -1, const char indent_char = ' ', - const bool ensure_ascii = false) const - { - string_t result; - serializer s(detail::output_adapter(result), indent_char); - - if (indent >= 0) - { - s.dump(*this, true, ensure_ascii, static_cast(indent)); - } - else - { - s.dump(*this, false, ensure_ascii, 0); - } - - return result; - } - - /*! - @brief return the type of the JSON value (explicit) - - Return the type of the JSON value as a value from the @ref value_t - enumeration. - - @return the type of the JSON value - Value type | return value - ------------------------- | ------------------------- - null | value_t::null - boolean | value_t::boolean - string | value_t::string - number (integer) | value_t::number_integer - number (unsigned integer) | value_t::number_unsigned - number (floating-point) | value_t::number_float - object | value_t::object - array | value_t::array - discarded | value_t::discarded - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `type()` for all JSON - types.,type} - - @sa @ref operator value_t() -- return the type of the JSON value (implicit) - @sa @ref type_name() -- return the type as string - - @since version 1.0.0 - */ - constexpr value_t type() const noexcept - { - return m_type; - } - - /*! - @brief return whether type is primitive - - This function returns true if and only if the JSON type is primitive - (string, number, boolean, or null). - - @return `true` if type is primitive (string, number, boolean, or null), - `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_primitive()` for all JSON - types.,is_primitive} - - @sa @ref is_structured() -- returns whether JSON value is structured - @sa @ref is_null() -- returns whether JSON value is `null` - @sa @ref is_string() -- returns whether JSON value is a string - @sa @ref is_boolean() -- returns whether JSON value is a boolean - @sa @ref is_number() -- returns whether JSON value is a number - - @since version 1.0.0 - */ - constexpr bool is_primitive() const noexcept - { - return is_null() or is_string() or is_boolean() or is_number(); - } - - /*! - @brief return whether type is structured - - This function returns true if and only if the JSON type is structured - (array or object). - - @return `true` if type is structured (array or object), `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_structured()` for all JSON - types.,is_structured} - - @sa @ref is_primitive() -- returns whether value is primitive - @sa @ref is_array() -- returns whether value is an array - @sa @ref is_object() -- returns whether value is an object - - @since version 1.0.0 - */ - constexpr bool is_structured() const noexcept - { - return is_array() or is_object(); - } - - /*! - @brief return whether value is null - - This function returns true if and only if the JSON value is null. - - @return `true` if type is null, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_null()` for all JSON - types.,is_null} - - @since version 1.0.0 - */ - constexpr bool is_null() const noexcept - { - return (m_type == value_t::null); - } - - /*! - @brief return whether value is a boolean - - This function returns true if and only if the JSON value is a boolean. - - @return `true` if type is boolean, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_boolean()` for all JSON - types.,is_boolean} - - @since version 1.0.0 - */ - constexpr bool is_boolean() const noexcept - { - return (m_type == value_t::boolean); - } - - /*! - @brief return whether value is a number - - This function returns true if and only if the JSON value is a number. This - includes both integer (signed and unsigned) and floating-point values. - - @return `true` if type is number (regardless whether integer, unsigned - integer or floating-type), `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_number()` for all JSON - types.,is_number} - - @sa @ref is_number_integer() -- check if value is an integer or unsigned - integer number - @sa @ref is_number_unsigned() -- check if value is an unsigned integer - number - @sa @ref is_number_float() -- check if value is a floating-point number - - @since version 1.0.0 - */ - constexpr bool is_number() const noexcept - { - return is_number_integer() or is_number_float(); - } - - /*! - @brief return whether value is an integer number - - This function returns true if and only if the JSON value is a signed or - unsigned integer number. This excludes floating-point values. - - @return `true` if type is an integer or unsigned integer number, `false` - otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_number_integer()` for all - JSON types.,is_number_integer} - - @sa @ref is_number() -- check if value is a number - @sa @ref is_number_unsigned() -- check if value is an unsigned integer - number - @sa @ref is_number_float() -- check if value is a floating-point number - - @since version 1.0.0 - */ - constexpr bool is_number_integer() const noexcept - { - return (m_type == value_t::number_integer or m_type == value_t::number_unsigned); - } - - /*! - @brief return whether value is an unsigned integer number - - This function returns true if and only if the JSON value is an unsigned - integer number. This excludes floating-point and signed integer values. - - @return `true` if type is an unsigned integer number, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_number_unsigned()` for all - JSON types.,is_number_unsigned} - - @sa @ref is_number() -- check if value is a number - @sa @ref is_number_integer() -- check if value is an integer or unsigned - integer number - @sa @ref is_number_float() -- check if value is a floating-point number - - @since version 2.0.0 - */ - constexpr bool is_number_unsigned() const noexcept - { - return (m_type == value_t::number_unsigned); - } - - /*! - @brief return whether value is a floating-point number - - This function returns true if and only if the JSON value is a - floating-point number. This excludes signed and unsigned integer values. - - @return `true` if type is a floating-point number, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_number_float()` for all - JSON types.,is_number_float} - - @sa @ref is_number() -- check if value is number - @sa @ref is_number_integer() -- check if value is an integer number - @sa @ref is_number_unsigned() -- check if value is an unsigned integer - number - - @since version 1.0.0 - */ - constexpr bool is_number_float() const noexcept - { - return (m_type == value_t::number_float); - } - - /*! - @brief return whether value is an object - - This function returns true if and only if the JSON value is an object. - - @return `true` if type is object, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_object()` for all JSON - types.,is_object} - - @since version 1.0.0 - */ - constexpr bool is_object() const noexcept - { - return (m_type == value_t::object); - } - - /*! - @brief return whether value is an array - - This function returns true if and only if the JSON value is an array. - - @return `true` if type is array, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_array()` for all JSON - types.,is_array} - - @since version 1.0.0 - */ - constexpr bool is_array() const noexcept - { - return (m_type == value_t::array); - } - - /*! - @brief return whether value is a string - - This function returns true if and only if the JSON value is a string. - - @return `true` if type is string, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_string()` for all JSON - types.,is_string} - - @since version 1.0.0 - */ - constexpr bool is_string() const noexcept - { - return (m_type == value_t::string); - } - - /*! - @brief return whether value is discarded - - This function returns true if and only if the JSON value was discarded - during parsing with a callback function (see @ref parser_callback_t). - - @note This function will always be `false` for JSON values after parsing. - That is, discarded values can only occur during parsing, but will be - removed when inside a structured value or replaced by null in other cases. - - @return `true` if type is discarded, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_discarded()` for all JSON - types.,is_discarded} - - @since version 1.0.0 - */ - constexpr bool is_discarded() const noexcept - { - return (m_type == value_t::discarded); - } - - /*! - @brief return the type of the JSON value (implicit) - - Implicitly return the type of the JSON value as a value from the @ref - value_t enumeration. - - @return the type of the JSON value - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies the @ref value_t operator for - all JSON types.,operator__value_t} - - @sa @ref type() -- return the type of the JSON value (explicit) - @sa @ref type_name() -- return the type as string - - @since version 1.0.0 - */ - constexpr operator value_t() const noexcept - { - return m_type; - } - - /// @} - - private: - ////////////////// - // value access // - ////////////////// - - /// get a boolean (explicit) - boolean_t get_impl(boolean_t* /*unused*/) const - { - if (JSON_LIKELY(is_boolean())) - { - return m_value.boolean; - } - - JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(type_name()))); - } - - /// get a pointer to the value (object) - object_t* get_impl_ptr(object_t* /*unused*/) noexcept - { - return is_object() ? m_value.object : nullptr; - } - - /// get a pointer to the value (object) - constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept - { - return is_object() ? m_value.object : nullptr; - } - - /// get a pointer to the value (array) - array_t* get_impl_ptr(array_t* /*unused*/) noexcept - { - return is_array() ? m_value.array : nullptr; - } - - /// get a pointer to the value (array) - constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept - { - return is_array() ? m_value.array : nullptr; - } - - /// get a pointer to the value (string) - string_t* get_impl_ptr(string_t* /*unused*/) noexcept - { - return is_string() ? m_value.string : nullptr; - } - - /// get a pointer to the value (string) - constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept - { - return is_string() ? m_value.string : nullptr; - } - - /// get a pointer to the value (boolean) - boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept - { - return is_boolean() ? &m_value.boolean : nullptr; - } - - /// get a pointer to the value (boolean) - constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept - { - return is_boolean() ? &m_value.boolean : nullptr; - } - - /// get a pointer to the value (integer number) - number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept - { - return is_number_integer() ? &m_value.number_integer : nullptr; - } - - /// get a pointer to the value (integer number) - constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept - { - return is_number_integer() ? &m_value.number_integer : nullptr; - } - - /// get a pointer to the value (unsigned number) - number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept - { - return is_number_unsigned() ? &m_value.number_unsigned : nullptr; - } - - /// get a pointer to the value (unsigned number) - constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept - { - return is_number_unsigned() ? &m_value.number_unsigned : nullptr; - } - - /// get a pointer to the value (floating-point number) - number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept - { - return is_number_float() ? &m_value.number_float : nullptr; - } - - /// get a pointer to the value (floating-point number) - constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept - { - return is_number_float() ? &m_value.number_float : nullptr; - } - - /*! - @brief helper function to implement get_ref() - - This function helps to implement get_ref() without code duplication for - const and non-const overloads - - @tparam ThisType will be deduced as `basic_json` or `const basic_json` - - @throw type_error.303 if ReferenceType does not match underlying value - type of the current JSON - */ - template - static ReferenceType get_ref_impl(ThisType& obj) - { - // delegate the call to get_ptr<>() - auto ptr = obj.template get_ptr::type>(); - - if (JSON_LIKELY(ptr != nullptr)) - { - return *ptr; - } - - JSON_THROW(type_error::create(303, "incompatible ReferenceType for get_ref, actual type is " + std::string(obj.type_name()))); - } - - public: - /// @name value access - /// Direct access to the stored value of a JSON value. - /// @{ - - /*! - @brief get special-case overload - - This overloads avoids a lot of template boilerplate, it can be seen as the - identity method - - @tparam BasicJsonType == @ref basic_json - - @return a copy of *this - - @complexity Constant. - - @since version 2.1.0 - */ - template::type, basic_json_t>::value, - int> = 0> - basic_json get() const - { - return *this; - } - - /*! - @brief get a value (explicit) - - Explicit type conversion between the JSON value and a compatible value - which is [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible) - and [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). - The value is converted by calling the @ref json_serializer - `from_json()` method. - - The function is equivalent to executing - @code {.cpp} - ValueType ret; - JSONSerializer::from_json(*this, ret); - return ret; - @endcode - - This overloads is chosen if: - - @a ValueType is not @ref basic_json, - - @ref json_serializer has a `from_json()` method of the form - `void from_json(const basic_json&, ValueType&)`, and - - @ref json_serializer does not have a `from_json()` method of - the form `ValueType from_json(const basic_json&)` - - @tparam ValueTypeCV the provided value type - @tparam ValueType the returned value type - - @return copy of the JSON value, converted to @a ValueType - - @throw what @ref json_serializer `from_json()` method throws - - @liveexample{The example below shows several conversions from JSON values - to other types. There a few things to note: (1) Floating-point numbers can - be converted to integers\, (2) A JSON array can be converted to a standard - `std::vector`\, (3) A JSON object can be converted to C++ - associative containers such as `std::unordered_map`.,get__ValueType_const} - - @since version 2.1.0 - */ - template, - detail::enable_if_t < - not std::is_same::value and - detail::has_from_json::value and - not detail::has_non_default_from_json::value, - int> = 0> - ValueType get() const noexcept(noexcept( - JSONSerializer::from_json(std::declval(), std::declval()))) - { - // we cannot static_assert on ValueTypeCV being non-const, because - // there is support for get(), which is why we - // still need the uncvref - static_assert(not std::is_reference::value, - "get() cannot be used with reference types, you might want to use get_ref()"); - static_assert(std::is_default_constructible::value, - "types must be DefaultConstructible when used with get()"); - - ValueType ret; - JSONSerializer::from_json(*this, ret); - return ret; - } - - /*! - @brief get a value (explicit); special case - - Explicit type conversion between the JSON value and a compatible value - which is **not** [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible) - and **not** [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). - The value is converted by calling the @ref json_serializer - `from_json()` method. - - The function is equivalent to executing - @code {.cpp} - return JSONSerializer::from_json(*this); - @endcode - - This overloads is chosen if: - - @a ValueType is not @ref basic_json and - - @ref json_serializer has a `from_json()` method of the form - `ValueType from_json(const basic_json&)` - - @note If @ref json_serializer has both overloads of - `from_json()`, this one is chosen. - - @tparam ValueTypeCV the provided value type - @tparam ValueType the returned value type - - @return copy of the JSON value, converted to @a ValueType - - @throw what @ref json_serializer `from_json()` method throws - - @since version 2.1.0 - */ - template, - detail::enable_if_t::value and - detail::has_non_default_from_json::value, - int> = 0> - ValueType get() const noexcept(noexcept( - JSONSerializer::from_json(std::declval()))) - { - static_assert(not std::is_reference::value, - "get() cannot be used with reference types, you might want to use get_ref()"); - return JSONSerializer::from_json(*this); - } - - /*! - @brief get a pointer value (explicit) - - Explicit pointer access to the internally stored JSON value. No copies are - made. - - @warning The pointer becomes invalid if the underlying JSON object - changes. - - @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref - object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, - @ref number_unsigned_t, or @ref number_float_t. - - @return pointer to the internally stored JSON value if the requested - pointer type @a PointerType fits to the JSON value; `nullptr` otherwise - - @complexity Constant. - - @liveexample{The example below shows how pointers to internal values of a - JSON value can be requested. Note that no type conversions are made and a - `nullptr` is returned if the value and the requested pointer type does not - match.,get__PointerType} - - @sa @ref get_ptr() for explicit pointer-member access - - @since version 1.0.0 - */ - template::value, int>::type = 0> - PointerType get() noexcept - { - // delegate the call to get_ptr - return get_ptr(); - } - - /*! - @brief get a pointer value (explicit) - @copydoc get() - */ - template::value, int>::type = 0> - constexpr const PointerType get() const noexcept - { - // delegate the call to get_ptr - return get_ptr(); - } - - /*! - @brief get a pointer value (implicit) - - Implicit pointer access to the internally stored JSON value. No copies are - made. - - @warning Writing data to the pointee of the result yields an undefined - state. - - @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref - object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, - @ref number_unsigned_t, or @ref number_float_t. Enforced by a static - assertion. - - @return pointer to the internally stored JSON value if the requested - pointer type @a PointerType fits to the JSON value; `nullptr` otherwise - - @complexity Constant. - - @liveexample{The example below shows how pointers to internal values of a - JSON value can be requested. Note that no type conversions are made and a - `nullptr` is returned if the value and the requested pointer type does not - match.,get_ptr} - - @since version 1.0.0 - */ - template::value, int>::type = 0> - PointerType get_ptr() noexcept - { - // get the type of the PointerType (remove pointer and const) - using pointee_t = typename std::remove_const::type>::type>::type; - // make sure the type matches the allowed types - static_assert( - std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - , "incompatible pointer type"); - - // delegate the call to get_impl_ptr<>() - return get_impl_ptr(static_cast(nullptr)); - } - - /*! - @brief get a pointer value (implicit) - @copydoc get_ptr() - */ - template::value and - std::is_const::type>::value, int>::type = 0> - constexpr const PointerType get_ptr() const noexcept - { - // get the type of the PointerType (remove pointer and const) - using pointee_t = typename std::remove_const::type>::type>::type; - // make sure the type matches the allowed types - static_assert( - std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - , "incompatible pointer type"); - - // delegate the call to get_impl_ptr<>() const - return get_impl_ptr(static_cast(nullptr)); - } - - /*! - @brief get a reference value (implicit) - - Implicit reference access to the internally stored JSON value. No copies - are made. - - @warning Writing data to the referee of the result yields an undefined - state. - - @tparam ReferenceType reference type; must be a reference to @ref array_t, - @ref object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, or - @ref number_float_t. Enforced by static assertion. - - @return reference to the internally stored JSON value if the requested - reference type @a ReferenceType fits to the JSON value; throws - type_error.303 otherwise - - @throw type_error.303 in case passed type @a ReferenceType is incompatible - with the stored JSON value; see example below - - @complexity Constant. - - @liveexample{The example shows several calls to `get_ref()`.,get_ref} - - @since version 1.1.0 - */ - template::value, int>::type = 0> - ReferenceType get_ref() - { - // delegate call to get_ref_impl - return get_ref_impl(*this); - } - - /*! - @brief get a reference value (implicit) - @copydoc get_ref() - */ - template::value and - std::is_const::type>::value, int>::type = 0> - ReferenceType get_ref() const - { - // delegate call to get_ref_impl - return get_ref_impl(*this); - } - - /*! - @brief get a value (implicit) - - Implicit type conversion between the JSON value and a compatible value. - The call is realized by calling @ref get() const. - - @tparam ValueType non-pointer type compatible to the JSON value, for - instance `int` for JSON integer numbers, `bool` for JSON booleans, or - `std::vector` types for JSON arrays. The character type of @ref string_t - as well as an initializer list of this type is excluded to avoid - ambiguities as these types implicitly convert to `std::string`. - - @return copy of the JSON value, converted to type @a ValueType - - @throw type_error.302 in case passed type @a ValueType is incompatible - to the JSON value type (e.g., the JSON value is of type boolean, but a - string is requested); see example below - - @complexity Linear in the size of the JSON value. - - @liveexample{The example below shows several conversions from JSON values - to other types. There a few things to note: (1) Floating-point numbers can - be converted to integers\, (2) A JSON array can be converted to a standard - `std::vector`\, (3) A JSON object can be converted to C++ - associative containers such as `std::unordered_map`.,operator__ValueType} - - @since version 1.0.0 - */ - template < typename ValueType, typename std::enable_if < - not std::is_pointer::value and - not std::is_same>::value and - not std::is_same::value -#ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015 - and not std::is_same>::value -#endif -#if defined(JSON_HAS_CPP_17) - and not std::is_same::value -#endif - , int >::type = 0 > - operator ValueType() const - { - // delegate the call to get<>() const - return get(); - } - - /// @} - - //////////////////// - // element access // - //////////////////// - - /// @name element access - /// Access to the JSON value. - /// @{ - - /*! - @brief access specified array element with bounds checking - - Returns a reference to the element at specified location @a idx, with - bounds checking. - - @param[in] idx index of the element to access - - @return reference to the element at index @a idx - - @throw type_error.304 if the JSON value is not an array; in this case, - calling `at` with an index makes no sense. See example below. - @throw out_of_range.401 if the index @a idx is out of range of the array; - that is, `idx >= size()`. See example below. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Constant. - - @since version 1.0.0 - - @liveexample{The example below shows how array elements can be read and - written using `at()`. It also demonstrates the different exceptions that - can be thrown.,at__size_type} - */ - reference at(size_type idx) - { - // at only works for arrays - if (JSON_LIKELY(is_array())) - { - JSON_TRY - { - return m_value.array->at(idx); - } - JSON_CATCH (std::out_of_range&) - { - // create better exception explanation - JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); - } - } - else - { - JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); - } - } - - /*! - @brief access specified array element with bounds checking - - Returns a const reference to the element at specified location @a idx, - with bounds checking. - - @param[in] idx index of the element to access - - @return const reference to the element at index @a idx - - @throw type_error.304 if the JSON value is not an array; in this case, - calling `at` with an index makes no sense. See example below. - @throw out_of_range.401 if the index @a idx is out of range of the array; - that is, `idx >= size()`. See example below. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Constant. - - @since version 1.0.0 - - @liveexample{The example below shows how array elements can be read using - `at()`. It also demonstrates the different exceptions that can be thrown., - at__size_type_const} - */ - const_reference at(size_type idx) const - { - // at only works for arrays - if (JSON_LIKELY(is_array())) - { - JSON_TRY - { - return m_value.array->at(idx); - } - JSON_CATCH (std::out_of_range&) - { - // create better exception explanation - JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); - } - } - else - { - JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); - } - } - - /*! - @brief access specified object element with bounds checking - - Returns a reference to the element at with specified key @a key, with - bounds checking. - - @param[in] key key of the element to access - - @return reference to the element at key @a key - - @throw type_error.304 if the JSON value is not an object; in this case, - calling `at` with a key makes no sense. See example below. - @throw out_of_range.403 if the key @a key is is not stored in the object; - that is, `find(key) == end()`. See example below. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Logarithmic in the size of the container. - - @sa @ref operator[](const typename object_t::key_type&) for unchecked - access by reference - @sa @ref value() for access by value with a default value - - @since version 1.0.0 - - @liveexample{The example below shows how object elements can be read and - written using `at()`. It also demonstrates the different exceptions that - can be thrown.,at__object_t_key_type} - */ - reference at(const typename object_t::key_type& key) - { - // at only works for objects - if (JSON_LIKELY(is_object())) - { - JSON_TRY - { - return m_value.object->at(key); - } - JSON_CATCH (std::out_of_range&) - { - // create better exception explanation - JSON_THROW(out_of_range::create(403, "key '" + key + "' not found")); - } - } - else - { - JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); - } - } - - /*! - @brief access specified object element with bounds checking - - Returns a const reference to the element at with specified key @a key, - with bounds checking. - - @param[in] key key of the element to access - - @return const reference to the element at key @a key - - @throw type_error.304 if the JSON value is not an object; in this case, - calling `at` with a key makes no sense. See example below. - @throw out_of_range.403 if the key @a key is is not stored in the object; - that is, `find(key) == end()`. See example below. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Logarithmic in the size of the container. - - @sa @ref operator[](const typename object_t::key_type&) for unchecked - access by reference - @sa @ref value() for access by value with a default value - - @since version 1.0.0 - - @liveexample{The example below shows how object elements can be read using - `at()`. It also demonstrates the different exceptions that can be thrown., - at__object_t_key_type_const} - */ - const_reference at(const typename object_t::key_type& key) const - { - // at only works for objects - if (JSON_LIKELY(is_object())) - { - JSON_TRY - { - return m_value.object->at(key); - } - JSON_CATCH (std::out_of_range&) - { - // create better exception explanation - JSON_THROW(out_of_range::create(403, "key '" + key + "' not found")); - } - } - else - { - JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); - } - } - - /*! - @brief access specified array element - - Returns a reference to the element at specified location @a idx. - - @note If @a idx is beyond the range of the array (i.e., `idx >= size()`), - then the array is silently filled up with `null` values to make `idx` a - valid reference to the last stored element. - - @param[in] idx index of the element to access - - @return reference to the element at index @a idx - - @throw type_error.305 if the JSON value is not an array or null; in that - cases, using the [] operator with an index makes no sense. - - @complexity Constant if @a idx is in the range of the array. Otherwise - linear in `idx - size()`. - - @liveexample{The example below shows how array elements can be read and - written using `[]` operator. Note the addition of `null` - values.,operatorarray__size_type} - - @since version 1.0.0 - */ - reference operator[](size_type idx) - { - // implicitly convert null value to an empty array - if (is_null()) - { - m_type = value_t::array; - m_value.array = create(); - assert_invariant(); - } - - // operator[] only works for arrays - if (JSON_LIKELY(is_array())) - { - // fill up array with null values if given idx is outside range - if (idx >= m_value.array->size()) - { - m_value.array->insert(m_value.array->end(), - idx - m_value.array->size() + 1, - basic_json()); - } - - return m_value.array->operator[](idx); - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); - } - - /*! - @brief access specified array element - - Returns a const reference to the element at specified location @a idx. - - @param[in] idx index of the element to access - - @return const reference to the element at index @a idx - - @throw type_error.305 if the JSON value is not an array; in that case, - using the [] operator with an index makes no sense. - - @complexity Constant. - - @liveexample{The example below shows how array elements can be read using - the `[]` operator.,operatorarray__size_type_const} - - @since version 1.0.0 - */ - const_reference operator[](size_type idx) const - { - // const operator[] only works for arrays - if (JSON_LIKELY(is_array())) - { - return m_value.array->operator[](idx); - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); - } - - /*! - @brief access specified object element - - Returns a reference to the element at with specified key @a key. - - @note If @a key is not found in the object, then it is silently added to - the object and filled with a `null` value to make `key` a valid reference. - In case the value was `null` before, it is converted to an object. - - @param[in] key key of the element to access - - @return reference to the element at key @a key - - @throw type_error.305 if the JSON value is not an object or null; in that - cases, using the [] operator with a key makes no sense. - - @complexity Logarithmic in the size of the container. - - @liveexample{The example below shows how object elements can be read and - written using the `[]` operator.,operatorarray__key_type} - - @sa @ref at(const typename object_t::key_type&) for access by reference - with range checking - @sa @ref value() for access by value with a default value - - @since version 1.0.0 - */ - reference operator[](const typename object_t::key_type& key) - { - // implicitly convert null value to an empty object - if (is_null()) - { - m_type = value_t::object; - m_value.object = create(); - assert_invariant(); - } - - // operator[] only works for objects - if (JSON_LIKELY(is_object())) - { - return m_value.object->operator[](key); - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); - } - - /*! - @brief read-only access specified object element - - Returns a const reference to the element at with specified key @a key. No - bounds checking is performed. - - @warning If the element with key @a key does not exist, the behavior is - undefined. - - @param[in] key key of the element to access - - @return const reference to the element at key @a key - - @pre The element with key @a key must exist. **This precondition is - enforced with an assertion.** - - @throw type_error.305 if the JSON value is not an object; in that case, - using the [] operator with a key makes no sense. - - @complexity Logarithmic in the size of the container. - - @liveexample{The example below shows how object elements can be read using - the `[]` operator.,operatorarray__key_type_const} - - @sa @ref at(const typename object_t::key_type&) for access by reference - with range checking - @sa @ref value() for access by value with a default value - - @since version 1.0.0 - */ - const_reference operator[](const typename object_t::key_type& key) const - { - // const operator[] only works for objects - if (JSON_LIKELY(is_object())) - { - assert(m_value.object->find(key) != m_value.object->end()); - return m_value.object->find(key)->second; - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); - } - - /*! - @brief access specified object element - - Returns a reference to the element at with specified key @a key. - - @note If @a key is not found in the object, then it is silently added to - the object and filled with a `null` value to make `key` a valid reference. - In case the value was `null` before, it is converted to an object. - - @param[in] key key of the element to access - - @return reference to the element at key @a key - - @throw type_error.305 if the JSON value is not an object or null; in that - cases, using the [] operator with a key makes no sense. - - @complexity Logarithmic in the size of the container. - - @liveexample{The example below shows how object elements can be read and - written using the `[]` operator.,operatorarray__key_type} - - @sa @ref at(const typename object_t::key_type&) for access by reference - with range checking - @sa @ref value() for access by value with a default value - - @since version 1.1.0 - */ - template - reference operator[](T* key) - { - // implicitly convert null to object - if (is_null()) - { - m_type = value_t::object; - m_value = value_t::object; - assert_invariant(); - } - - // at only works for objects - if (JSON_LIKELY(is_object())) - { - return m_value.object->operator[](key); - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); - } - - /*! - @brief read-only access specified object element - - Returns a const reference to the element at with specified key @a key. No - bounds checking is performed. - - @warning If the element with key @a key does not exist, the behavior is - undefined. - - @param[in] key key of the element to access - - @return const reference to the element at key @a key - - @pre The element with key @a key must exist. **This precondition is - enforced with an assertion.** - - @throw type_error.305 if the JSON value is not an object; in that case, - using the [] operator with a key makes no sense. - - @complexity Logarithmic in the size of the container. - - @liveexample{The example below shows how object elements can be read using - the `[]` operator.,operatorarray__key_type_const} - - @sa @ref at(const typename object_t::key_type&) for access by reference - with range checking - @sa @ref value() for access by value with a default value - - @since version 1.1.0 - */ - template - const_reference operator[](T* key) const - { - // at only works for objects - if (JSON_LIKELY(is_object())) - { - assert(m_value.object->find(key) != m_value.object->end()); - return m_value.object->find(key)->second; - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); - } - - /*! - @brief access specified object element with default value - - Returns either a copy of an object's element at the specified key @a key - or a given default value if no element with key @a key exists. - - The function is basically equivalent to executing - @code {.cpp} - try { - return at(key); - } catch(out_of_range) { - return default_value; - } - @endcode - - @note Unlike @ref at(const typename object_t::key_type&), this function - does not throw if the given key @a key was not found. - - @note Unlike @ref operator[](const typename object_t::key_type& key), this - function does not implicitly add an element to the position defined by @a - key. This function is furthermore also applicable to const objects. - - @param[in] key key of the element to access - @param[in] default_value the value to return if @a key is not found - - @tparam ValueType type compatible to JSON values, for instance `int` for - JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for - JSON arrays. Note the type of the expected value at @a key and the default - value @a default_value must be compatible. - - @return copy of the element at key @a key or @a default_value if @a key - is not found - - @throw type_error.306 if the JSON value is not an object; in that case, - using `value()` with a key makes no sense. - - @complexity Logarithmic in the size of the container. - - @liveexample{The example below shows how object elements can be queried - with a default value.,basic_json__value} - - @sa @ref at(const typename object_t::key_type&) for access by reference - with range checking - @sa @ref operator[](const typename object_t::key_type&) for unchecked - access by reference - - @since version 1.0.0 - */ - template::value, int>::type = 0> - ValueType value(const typename object_t::key_type& key, const ValueType& default_value) const - { - // at only works for objects - if (JSON_LIKELY(is_object())) - { - // if key is found, return value and given default value otherwise - const auto it = find(key); - if (it != end()) - { - return *it; - } - - return default_value; - } - - JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()))); - } - - /*! - @brief overload for a default value of type const char* - @copydoc basic_json::value(const typename object_t::key_type&, ValueType) const - */ - string_t value(const typename object_t::key_type& key, const char* default_value) const - { - return value(key, string_t(default_value)); - } - - /*! - @brief access specified object element via JSON Pointer with default value - - Returns either a copy of an object's element at the specified key @a key - or a given default value if no element with key @a key exists. - - The function is basically equivalent to executing - @code {.cpp} - try { - return at(ptr); - } catch(out_of_range) { - return default_value; - } - @endcode - - @note Unlike @ref at(const json_pointer&), this function does not throw - if the given key @a key was not found. - - @param[in] ptr a JSON pointer to the element to access - @param[in] default_value the value to return if @a ptr found no value - - @tparam ValueType type compatible to JSON values, for instance `int` for - JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for - JSON arrays. Note the type of the expected value at @a key and the default - value @a default_value must be compatible. - - @return copy of the element at key @a key or @a default_value if @a key - is not found - - @throw type_error.306 if the JSON value is not an objec; in that case, - using `value()` with a key makes no sense. - - @complexity Logarithmic in the size of the container. - - @liveexample{The example below shows how object elements can be queried - with a default value.,basic_json__value_ptr} - - @sa @ref operator[](const json_pointer&) for unchecked access by reference - - @since version 2.0.2 - */ - template::value, int>::type = 0> - ValueType value(const json_pointer& ptr, const ValueType& default_value) const - { - // at only works for objects - if (JSON_LIKELY(is_object())) - { - // if pointer resolves a value, return it or use default value - JSON_TRY - { - return ptr.get_checked(this); - } - JSON_CATCH (out_of_range&) - { - return default_value; - } - } - - JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()))); - } - - /*! - @brief overload for a default value of type const char* - @copydoc basic_json::value(const json_pointer&, ValueType) const - */ - string_t value(const json_pointer& ptr, const char* default_value) const - { - return value(ptr, string_t(default_value)); - } - - /*! - @brief access the first element - - Returns a reference to the first element in the container. For a JSON - container `c`, the expression `c.front()` is equivalent to `*c.begin()`. - - @return In case of a structured type (array or object), a reference to the - first element is returned. In case of number, string, or boolean values, a - reference to the value is returned. - - @complexity Constant. - - @pre The JSON value must not be `null` (would throw `std::out_of_range`) - or an empty array or object (undefined behavior, **guarded by - assertions**). - @post The JSON value remains unchanged. - - @throw invalid_iterator.214 when called on `null` value - - @liveexample{The following code shows an example for `front()`.,front} - - @sa @ref back() -- access the last element - - @since version 1.0.0 - */ - reference front() - { - return *begin(); - } - - /*! - @copydoc basic_json::front() - */ - const_reference front() const - { - return *cbegin(); - } - - /*! - @brief access the last element - - Returns a reference to the last element in the container. For a JSON - container `c`, the expression `c.back()` is equivalent to - @code {.cpp} - auto tmp = c.end(); - --tmp; - return *tmp; - @endcode - - @return In case of a structured type (array or object), a reference to the - last element is returned. In case of number, string, or boolean values, a - reference to the value is returned. - - @complexity Constant. - - @pre The JSON value must not be `null` (would throw `std::out_of_range`) - or an empty array or object (undefined behavior, **guarded by - assertions**). - @post The JSON value remains unchanged. - - @throw invalid_iterator.214 when called on a `null` value. See example - below. - - @liveexample{The following code shows an example for `back()`.,back} - - @sa @ref front() -- access the first element - - @since version 1.0.0 - */ - reference back() - { - auto tmp = end(); - --tmp; - return *tmp; - } - - /*! - @copydoc basic_json::back() - */ - const_reference back() const - { - auto tmp = cend(); - --tmp; - return *tmp; - } - - /*! - @brief remove element given an iterator - - Removes the element specified by iterator @a pos. The iterator @a pos must - be valid and dereferenceable. Thus the `end()` iterator (which is valid, - but is not dereferenceable) cannot be used as a value for @a pos. - - If called on a primitive type other than `null`, the resulting JSON value - will be `null`. - - @param[in] pos iterator to the element to remove - @return Iterator following the last removed element. If the iterator @a - pos refers to the last element, the `end()` iterator is returned. - - @tparam IteratorType an @ref iterator or @ref const_iterator - - @post Invalidates iterators and references at or after the point of the - erase, including the `end()` iterator. - - @throw type_error.307 if called on a `null` value; example: `"cannot use - erase() with null"` - @throw invalid_iterator.202 if called on an iterator which does not belong - to the current JSON value; example: `"iterator does not fit current - value"` - @throw invalid_iterator.205 if called on a primitive type with invalid - iterator (i.e., any iterator which is not `begin()`); example: `"iterator - out of range"` - - @complexity The complexity depends on the type: - - objects: amortized constant - - arrays: linear in distance between @a pos and the end of the container - - strings: linear in the length of the string - - other types: constant - - @liveexample{The example shows the result of `erase()` for different JSON - types.,erase__IteratorType} - - @sa @ref erase(IteratorType, IteratorType) -- removes the elements in - the given range - @sa @ref erase(const typename object_t::key_type&) -- removes the element - from an object at the given key - @sa @ref erase(const size_type) -- removes the element from an array at - the given index - - @since version 1.0.0 - */ - template::value or - std::is_same::value, int>::type - = 0> - IteratorType erase(IteratorType pos) - { - // make sure iterator fits the current value - if (JSON_UNLIKELY(this != pos.m_object)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); - } - - IteratorType result = end(); - - switch (m_type) - { - case value_t::boolean: - case value_t::number_float: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::string: - { - if (JSON_UNLIKELY(not pos.m_it.primitive_iterator.is_begin())) - { - JSON_THROW(invalid_iterator::create(205, "iterator out of range")); - } - - if (is_string()) - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, m_value.string); - std::allocator_traits::deallocate(alloc, m_value.string, 1); - m_value.string = nullptr; - } - - m_type = value_t::null; - assert_invariant(); - break; - } - - case value_t::object: - { - result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator); - break; - } - - case value_t::array: - { - result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator); - break; - } - - default: - JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); - } - - return result; - } - - /*! - @brief remove elements given an iterator range - - Removes the element specified by the range `[first; last)`. The iterator - @a first does not need to be dereferenceable if `first == last`: erasing - an empty range is a no-op. - - If called on a primitive type other than `null`, the resulting JSON value - will be `null`. - - @param[in] first iterator to the beginning of the range to remove - @param[in] last iterator past the end of the range to remove - @return Iterator following the last removed element. If the iterator @a - second refers to the last element, the `end()` iterator is returned. - - @tparam IteratorType an @ref iterator or @ref const_iterator - - @post Invalidates iterators and references at or after the point of the - erase, including the `end()` iterator. - - @throw type_error.307 if called on a `null` value; example: `"cannot use - erase() with null"` - @throw invalid_iterator.203 if called on iterators which does not belong - to the current JSON value; example: `"iterators do not fit current value"` - @throw invalid_iterator.204 if called on a primitive type with invalid - iterators (i.e., if `first != begin()` and `last != end()`); example: - `"iterators out of range"` - - @complexity The complexity depends on the type: - - objects: `log(size()) + std::distance(first, last)` - - arrays: linear in the distance between @a first and @a last, plus linear - in the distance between @a last and end of the container - - strings: linear in the length of the string - - other types: constant - - @liveexample{The example shows the result of `erase()` for different JSON - types.,erase__IteratorType_IteratorType} - - @sa @ref erase(IteratorType) -- removes the element at a given position - @sa @ref erase(const typename object_t::key_type&) -- removes the element - from an object at the given key - @sa @ref erase(const size_type) -- removes the element from an array at - the given index - - @since version 1.0.0 - */ - template::value or - std::is_same::value, int>::type - = 0> - IteratorType erase(IteratorType first, IteratorType last) - { - // make sure iterator fits the current value - if (JSON_UNLIKELY(this != first.m_object or this != last.m_object)) - { - JSON_THROW(invalid_iterator::create(203, "iterators do not fit current value")); - } - - IteratorType result = end(); - - switch (m_type) - { - case value_t::boolean: - case value_t::number_float: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::string: - { - if (JSON_LIKELY(not first.m_it.primitive_iterator.is_begin() - or not last.m_it.primitive_iterator.is_end())) - { - JSON_THROW(invalid_iterator::create(204, "iterators out of range")); - } - - if (is_string()) - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, m_value.string); - std::allocator_traits::deallocate(alloc, m_value.string, 1); - m_value.string = nullptr; - } - - m_type = value_t::null; - assert_invariant(); - break; - } - - case value_t::object: - { - result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator, - last.m_it.object_iterator); - break; - } - - case value_t::array: - { - result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator, - last.m_it.array_iterator); - break; - } - - default: - JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); - } - - return result; - } - - /*! - @brief remove element from a JSON object given a key - - Removes elements from a JSON object with the key value @a key. - - @param[in] key value of the elements to remove - - @return Number of elements removed. If @a ObjectType is the default - `std::map` type, the return value will always be `0` (@a key was not - found) or `1` (@a key was found). - - @post References and iterators to the erased elements are invalidated. - Other references and iterators are not affected. - - @throw type_error.307 when called on a type other than JSON object; - example: `"cannot use erase() with null"` - - @complexity `log(size()) + count(key)` - - @liveexample{The example shows the effect of `erase()`.,erase__key_type} - - @sa @ref erase(IteratorType) -- removes the element at a given position - @sa @ref erase(IteratorType, IteratorType) -- removes the elements in - the given range - @sa @ref erase(const size_type) -- removes the element from an array at - the given index - - @since version 1.0.0 - */ - size_type erase(const typename object_t::key_type& key) - { - // this erase only works for objects - if (JSON_LIKELY(is_object())) - { - return m_value.object->erase(key); - } - - JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); - } - - /*! - @brief remove element from a JSON array given an index - - Removes element from a JSON array at the index @a idx. - - @param[in] idx index of the element to remove - - @throw type_error.307 when called on a type other than JSON object; - example: `"cannot use erase() with null"` - @throw out_of_range.401 when `idx >= size()`; example: `"array index 17 - is out of range"` - - @complexity Linear in distance between @a idx and the end of the container. - - @liveexample{The example shows the effect of `erase()`.,erase__size_type} - - @sa @ref erase(IteratorType) -- removes the element at a given position - @sa @ref erase(IteratorType, IteratorType) -- removes the elements in - the given range - @sa @ref erase(const typename object_t::key_type&) -- removes the element - from an object at the given key - - @since version 1.0.0 - */ - void erase(const size_type idx) - { - // this erase only works for arrays - if (JSON_LIKELY(is_array())) - { - if (JSON_UNLIKELY(idx >= size())) - { - JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); - } - - m_value.array->erase(m_value.array->begin() + static_cast(idx)); - } - else - { - JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); - } - } - - /// @} - - //////////// - // lookup // - //////////// - - /// @name lookup - /// @{ - - /*! - @brief find an element in a JSON object - - Finds an element in a JSON object with key equivalent to @a key. If the - element is not found or the JSON value is not an object, end() is - returned. - - @note This method always returns @ref end() when executed on a JSON type - that is not an object. - - @param[in] key key value of the element to search for. - - @return Iterator to an element with key equivalent to @a key. If no such - element is found or the JSON value is not an object, past-the-end (see - @ref end()) iterator is returned. - - @complexity Logarithmic in the size of the JSON object. - - @liveexample{The example shows how `find()` is used.,find__key_type} - - @since version 1.0.0 - */ - template - iterator find(KeyT&& key) - { - auto result = end(); - - if (is_object()) - { - result.m_it.object_iterator = m_value.object->find(std::forward(key)); - } - - return result; - } - - /*! - @brief find an element in a JSON object - @copydoc find(KeyT&&) - */ - template - const_iterator find(KeyT&& key) const - { - auto result = cend(); - - if (is_object()) - { - result.m_it.object_iterator = m_value.object->find(std::forward(key)); - } - - return result; - } - - /*! - @brief returns the number of occurrences of a key in a JSON object - - Returns the number of elements with key @a key. If ObjectType is the - default `std::map` type, the return value will always be `0` (@a key was - not found) or `1` (@a key was found). - - @note This method always returns `0` when executed on a JSON type that is - not an object. - - @param[in] key key value of the element to count - - @return Number of elements with key @a key. If the JSON value is not an - object, the return value will be `0`. - - @complexity Logarithmic in the size of the JSON object. - - @liveexample{The example shows how `count()` is used.,count} - - @since version 1.0.0 - */ - template - size_type count(KeyT&& key) const - { - // return 0 for all nonobject types - return is_object() ? m_value.object->count(std::forward(key)) : 0; - } - - /// @} - - /////////////// - // iterators // - /////////////// - - /// @name iterators - /// @{ - - /*! - @brief returns an iterator to the first element - - Returns an iterator to the first element. - - @image html range-begin-end.svg "Illustration from cppreference.com" - - @return iterator to the first element - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - @liveexample{The following code shows an example for `begin()`.,begin} - - @sa @ref cbegin() -- returns a const iterator to the beginning - @sa @ref end() -- returns an iterator to the end - @sa @ref cend() -- returns a const iterator to the end - - @since version 1.0.0 - */ - iterator begin() noexcept - { - iterator result(this); - result.set_begin(); - return result; - } - - /*! - @copydoc basic_json::cbegin() - */ - const_iterator begin() const noexcept - { - return cbegin(); - } - - /*! - @brief returns a const iterator to the first element - - Returns a const iterator to the first element. - - @image html range-begin-end.svg "Illustration from cppreference.com" - - @return const iterator to the first element - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - Has the semantics of `const_cast(*this).begin()`. - - @liveexample{The following code shows an example for `cbegin()`.,cbegin} - - @sa @ref begin() -- returns an iterator to the beginning - @sa @ref end() -- returns an iterator to the end - @sa @ref cend() -- returns a const iterator to the end - - @since version 1.0.0 - */ - const_iterator cbegin() const noexcept - { - const_iterator result(this); - result.set_begin(); - return result; - } - - /*! - @brief returns an iterator to one past the last element - - Returns an iterator to one past the last element. - - @image html range-begin-end.svg "Illustration from cppreference.com" - - @return iterator one past the last element - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - @liveexample{The following code shows an example for `end()`.,end} - - @sa @ref cend() -- returns a const iterator to the end - @sa @ref begin() -- returns an iterator to the beginning - @sa @ref cbegin() -- returns a const iterator to the beginning - - @since version 1.0.0 - */ - iterator end() noexcept - { - iterator result(this); - result.set_end(); - return result; - } - - /*! - @copydoc basic_json::cend() - */ - const_iterator end() const noexcept - { - return cend(); - } - - /*! - @brief returns a const iterator to one past the last element - - Returns a const iterator to one past the last element. - - @image html range-begin-end.svg "Illustration from cppreference.com" - - @return const iterator one past the last element - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - Has the semantics of `const_cast(*this).end()`. - - @liveexample{The following code shows an example for `cend()`.,cend} - - @sa @ref end() -- returns an iterator to the end - @sa @ref begin() -- returns an iterator to the beginning - @sa @ref cbegin() -- returns a const iterator to the beginning - - @since version 1.0.0 - */ - const_iterator cend() const noexcept - { - const_iterator result(this); - result.set_end(); - return result; - } - - /*! - @brief returns an iterator to the reverse-beginning - - Returns an iterator to the reverse-beginning; that is, the last element. - - @image html range-rbegin-rend.svg "Illustration from cppreference.com" - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) - requirements: - - The complexity is constant. - - Has the semantics of `reverse_iterator(end())`. - - @liveexample{The following code shows an example for `rbegin()`.,rbegin} - - @sa @ref crbegin() -- returns a const reverse iterator to the beginning - @sa @ref rend() -- returns a reverse iterator to the end - @sa @ref crend() -- returns a const reverse iterator to the end - - @since version 1.0.0 - */ - reverse_iterator rbegin() noexcept - { - return reverse_iterator(end()); - } - - /*! - @copydoc basic_json::crbegin() - */ - const_reverse_iterator rbegin() const noexcept - { - return crbegin(); - } - - /*! - @brief returns an iterator to the reverse-end - - Returns an iterator to the reverse-end; that is, one before the first - element. - - @image html range-rbegin-rend.svg "Illustration from cppreference.com" - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) - requirements: - - The complexity is constant. - - Has the semantics of `reverse_iterator(begin())`. - - @liveexample{The following code shows an example for `rend()`.,rend} - - @sa @ref crend() -- returns a const reverse iterator to the end - @sa @ref rbegin() -- returns a reverse iterator to the beginning - @sa @ref crbegin() -- returns a const reverse iterator to the beginning - - @since version 1.0.0 - */ - reverse_iterator rend() noexcept - { - return reverse_iterator(begin()); - } - - /*! - @copydoc basic_json::crend() - */ - const_reverse_iterator rend() const noexcept - { - return crend(); - } - - /*! - @brief returns a const reverse iterator to the last element - - Returns a const iterator to the reverse-beginning; that is, the last - element. - - @image html range-rbegin-rend.svg "Illustration from cppreference.com" - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) - requirements: - - The complexity is constant. - - Has the semantics of `const_cast(*this).rbegin()`. - - @liveexample{The following code shows an example for `crbegin()`.,crbegin} - - @sa @ref rbegin() -- returns a reverse iterator to the beginning - @sa @ref rend() -- returns a reverse iterator to the end - @sa @ref crend() -- returns a const reverse iterator to the end - - @since version 1.0.0 - */ - const_reverse_iterator crbegin() const noexcept - { - return const_reverse_iterator(cend()); - } - - /*! - @brief returns a const reverse iterator to one before the first - - Returns a const reverse iterator to the reverse-end; that is, one before - the first element. - - @image html range-rbegin-rend.svg "Illustration from cppreference.com" - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) - requirements: - - The complexity is constant. - - Has the semantics of `const_cast(*this).rend()`. - - @liveexample{The following code shows an example for `crend()`.,crend} - - @sa @ref rend() -- returns a reverse iterator to the end - @sa @ref rbegin() -- returns a reverse iterator to the beginning - @sa @ref crbegin() -- returns a const reverse iterator to the beginning - - @since version 1.0.0 - */ - const_reverse_iterator crend() const noexcept - { - return const_reverse_iterator(cbegin()); - } - - public: - /*! - @brief wrapper to access iterator member functions in range-based for - - This function allows to access @ref iterator::key() and @ref - iterator::value() during range-based for loops. In these loops, a - reference to the JSON values is returned, so there is no access to the - underlying iterator. - - For loop without iterator_wrapper: - - @code{cpp} - for (auto it = j_object.begin(); it != j_object.end(); ++it) - { - std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; - } - @endcode - - Range-based for loop without iterator proxy: - - @code{cpp} - for (auto it : j_object) - { - // "it" is of type json::reference and has no key() member - std::cout << "value: " << it << '\n'; - } - @endcode - - Range-based for loop with iterator proxy: - - @code{cpp} - for (auto it : json::iterator_wrapper(j_object)) - { - std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; - } - @endcode - - @note When iterating over an array, `key()` will return the index of the - element as string (see example). - - @param[in] ref reference to a JSON value - @return iteration proxy object wrapping @a ref with an interface to use in - range-based for loops - - @liveexample{The following code shows how the wrapper is used,iterator_wrapper} - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Constant. - - @note The name of this function is not yet final and may change in the - future. - */ - static iteration_proxy iterator_wrapper(reference ref) - { - return iteration_proxy(ref); - } - - /*! - @copydoc iterator_wrapper(reference) - */ - static iteration_proxy iterator_wrapper(const_reference ref) - { - return iteration_proxy(ref); - } - - /// @} - - ////////////// - // capacity // - ////////////// - - /// @name capacity - /// @{ - - /*! - @brief checks whether the container is empty. - - Checks if a JSON value has no elements (i.e. whether its @ref size is `0`). - - @return The return value depends on the different types and is - defined as follows: - Value type | return value - ----------- | ------------- - null | `true` - boolean | `false` - string | `false` - number | `false` - object | result of function `object_t::empty()` - array | result of function `array_t::empty()` - - @liveexample{The following code uses `empty()` to check if a JSON - object contains any elements.,empty} - - @complexity Constant, as long as @ref array_t and @ref object_t satisfy - the Container concept; that is, their `empty()` functions have constant - complexity. - - @iterators No changes. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @note This function does not return whether a string stored as JSON value - is empty - it returns whether the JSON container itself is empty which is - false in the case of a string. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - Has the semantics of `begin() == end()`. - - @sa @ref size() -- returns the number of elements - - @since version 1.0.0 - */ - bool empty() const noexcept - { - switch (m_type) - { - case value_t::null: - { - // null values are empty - return true; - } - - case value_t::array: - { - // delegate call to array_t::empty() - return m_value.array->empty(); - } - - case value_t::object: - { - // delegate call to object_t::empty() - return m_value.object->empty(); - } - - default: - { - // all other types are nonempty - return false; - } - } - } - - /*! - @brief returns the number of elements - - Returns the number of elements in a JSON value. - - @return The return value depends on the different types and is - defined as follows: - Value type | return value - ----------- | ------------- - null | `0` - boolean | `1` - string | `1` - number | `1` - object | result of function object_t::size() - array | result of function array_t::size() - - @liveexample{The following code calls `size()` on the different value - types.,size} - - @complexity Constant, as long as @ref array_t and @ref object_t satisfy - the Container concept; that is, their size() functions have constant - complexity. - - @iterators No changes. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @note This function does not return the length of a string stored as JSON - value - it returns the number of elements in the JSON value which is 1 in - the case of a string. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - Has the semantics of `std::distance(begin(), end())`. - - @sa @ref empty() -- checks whether the container is empty - @sa @ref max_size() -- returns the maximal number of elements - - @since version 1.0.0 - */ - size_type size() const noexcept - { - switch (m_type) - { - case value_t::null: - { - // null values are empty - return 0; - } - - case value_t::array: - { - // delegate call to array_t::size() - return m_value.array->size(); - } - - case value_t::object: - { - // delegate call to object_t::size() - return m_value.object->size(); - } - - default: - { - // all other types have size 1 - return 1; - } - } - } - - /*! - @brief returns the maximum possible number of elements - - Returns the maximum number of elements a JSON value is able to hold due to - system or library implementation limitations, i.e. `std::distance(begin(), - end())` for the JSON value. - - @return The return value depends on the different types and is - defined as follows: - Value type | return value - ----------- | ------------- - null | `0` (same as `size()`) - boolean | `1` (same as `size()`) - string | `1` (same as `size()`) - number | `1` (same as `size()`) - object | result of function `object_t::max_size()` - array | result of function `array_t::max_size()` - - @liveexample{The following code calls `max_size()` on the different value - types. Note the output is implementation specific.,max_size} - - @complexity Constant, as long as @ref array_t and @ref object_t satisfy - the Container concept; that is, their `max_size()` functions have constant - complexity. - - @iterators No changes. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - Has the semantics of returning `b.size()` where `b` is the largest - possible JSON value. - - @sa @ref size() -- returns the number of elements - - @since version 1.0.0 - */ - size_type max_size() const noexcept - { - switch (m_type) - { - case value_t::array: - { - // delegate call to array_t::max_size() - return m_value.array->max_size(); - } - - case value_t::object: - { - // delegate call to object_t::max_size() - return m_value.object->max_size(); - } - - default: - { - // all other types have max_size() == size() - return size(); - } - } - } - - /// @} - - /////////////// - // modifiers // - /////////////// - - /// @name modifiers - /// @{ - - /*! - @brief clears the contents - - Clears the content of a JSON value and resets it to the default value as - if @ref basic_json(value_t) would have been called with the current value - type from @ref type(): - - Value type | initial value - ----------- | ------------- - null | `null` - boolean | `false` - string | `""` - number | `0` - object | `{}` - array | `[]` - - @post Has the same effect as calling - @code {.cpp} - *this = basic_json(type()); - @endcode - - @liveexample{The example below shows the effect of `clear()` to different - JSON types.,clear} - - @complexity Linear in the size of the JSON value. - - @iterators All iterators, pointers and references related to this container - are invalidated. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @sa @ref basic_json(value_t) -- constructor that creates an object with the - same value than calling `clear()` - - @since version 1.0.0 - */ - void clear() noexcept - { - switch (m_type) - { - case value_t::number_integer: - { - m_value.number_integer = 0; - break; - } - - case value_t::number_unsigned: - { - m_value.number_unsigned = 0; - break; - } - - case value_t::number_float: - { - m_value.number_float = 0.0; - break; - } - - case value_t::boolean: - { - m_value.boolean = false; - break; - } - - case value_t::string: - { - m_value.string->clear(); - break; - } - - case value_t::array: - { - m_value.array->clear(); - break; - } - - case value_t::object: - { - m_value.object->clear(); - break; - } - - default: - break; - } - } - - /*! - @brief add an object to an array - - Appends the given element @a val to the end of the JSON value. If the - function is called on a JSON null value, an empty array is created before - appending @a val. - - @param[in] val the value to add to the JSON array - - @throw type_error.308 when called on a type other than JSON array or - null; example: `"cannot use push_back() with number"` - - @complexity Amortized constant. - - @liveexample{The example shows how `push_back()` and `+=` can be used to - add elements to a JSON array. Note how the `null` value was silently - converted to a JSON array.,push_back} - - @since version 1.0.0 - */ - void push_back(basic_json&& val) - { - // push_back only works for null objects or arrays - if (JSON_UNLIKELY(not(is_null() or is_array()))) - { - JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); - } - - // transform null object into an array - if (is_null()) - { - m_type = value_t::array; - m_value = value_t::array; - assert_invariant(); - } - - // add element to array (move semantics) - m_value.array->push_back(std::move(val)); - // invalidate object - val.m_type = value_t::null; - } - - /*! - @brief add an object to an array - @copydoc push_back(basic_json&&) - */ - reference operator+=(basic_json&& val) - { - push_back(std::move(val)); - return *this; - } - - /*! - @brief add an object to an array - @copydoc push_back(basic_json&&) - */ - void push_back(const basic_json& val) - { - // push_back only works for null objects or arrays - if (JSON_UNLIKELY(not(is_null() or is_array()))) - { - JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); - } - - // transform null object into an array - if (is_null()) - { - m_type = value_t::array; - m_value = value_t::array; - assert_invariant(); - } - - // add element to array - m_value.array->push_back(val); - } - - /*! - @brief add an object to an array - @copydoc push_back(basic_json&&) - */ - reference operator+=(const basic_json& val) - { - push_back(val); - return *this; - } - - /*! - @brief add an object to an object - - Inserts the given element @a val to the JSON object. If the function is - called on a JSON null value, an empty object is created before inserting - @a val. - - @param[in] val the value to add to the JSON object - - @throw type_error.308 when called on a type other than JSON object or - null; example: `"cannot use push_back() with number"` - - @complexity Logarithmic in the size of the container, O(log(`size()`)). - - @liveexample{The example shows how `push_back()` and `+=` can be used to - add elements to a JSON object. Note how the `null` value was silently - converted to a JSON object.,push_back__object_t__value} - - @since version 1.0.0 - */ - void push_back(const typename object_t::value_type& val) - { - // push_back only works for null objects or objects - if (JSON_UNLIKELY(not(is_null() or is_object()))) - { - JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); - } - - // transform null object into an object - if (is_null()) - { - m_type = value_t::object; - m_value = value_t::object; - assert_invariant(); - } - - // add element to array - m_value.object->insert(val); - } - - /*! - @brief add an object to an object - @copydoc push_back(const typename object_t::value_type&) - */ - reference operator+=(const typename object_t::value_type& val) - { - push_back(val); - return *this; - } - - /*! - @brief add an object to an object - - This function allows to use `push_back` with an initializer list. In case - - 1. the current value is an object, - 2. the initializer list @a init contains only two elements, and - 3. the first element of @a init is a string, - - @a init is converted into an object element and added using - @ref push_back(const typename object_t::value_type&). Otherwise, @a init - is converted to a JSON value and added using @ref push_back(basic_json&&). - - @param[in] init an initializer list - - @complexity Linear in the size of the initializer list @a init. - - @note This function is required to resolve an ambiguous overload error, - because pairs like `{"key", "value"}` can be both interpreted as - `object_t::value_type` or `std::initializer_list`, see - https://github.com/nlohmann/json/issues/235 for more information. - - @liveexample{The example shows how initializer lists are treated as - objects when possible.,push_back__initializer_list} - */ - void push_back(initializer_list_t init) - { - if (is_object() and init.size() == 2 and (*init.begin())->is_string()) - { - basic_json&& key = init.begin()->moved_or_copied(); - push_back(typename object_t::value_type( - std::move(key.get_ref()), (init.begin() + 1)->moved_or_copied())); - } - else - { - push_back(basic_json(init)); - } - } - - /*! - @brief add an object to an object - @copydoc push_back(initializer_list_t) - */ - reference operator+=(initializer_list_t init) - { - push_back(init); - return *this; - } - - /*! - @brief add an object to an array - - Creates a JSON value from the passed parameters @a args to the end of the - JSON value. If the function is called on a JSON null value, an empty array - is created before appending the value created from @a args. - - @param[in] args arguments to forward to a constructor of @ref basic_json - @tparam Args compatible types to create a @ref basic_json object - - @throw type_error.311 when called on a type other than JSON array or - null; example: `"cannot use emplace_back() with number"` - - @complexity Amortized constant. - - @liveexample{The example shows how `push_back()` can be used to add - elements to a JSON array. Note how the `null` value was silently converted - to a JSON array.,emplace_back} - - @since version 2.0.8 - */ - template - void emplace_back(Args&& ... args) - { - // emplace_back only works for null objects or arrays - if (JSON_UNLIKELY(not(is_null() or is_array()))) - { - JSON_THROW(type_error::create(311, "cannot use emplace_back() with " + std::string(type_name()))); - } - - // transform null object into an array - if (is_null()) - { - m_type = value_t::array; - m_value = value_t::array; - assert_invariant(); - } - - // add element to array (perfect forwarding) - m_value.array->emplace_back(std::forward(args)...); - } - - /*! - @brief add an object to an object if key does not exist - - Inserts a new element into a JSON object constructed in-place with the - given @a args if there is no element with the key in the container. If the - function is called on a JSON null value, an empty object is created before - appending the value created from @a args. - - @param[in] args arguments to forward to a constructor of @ref basic_json - @tparam Args compatible types to create a @ref basic_json object - - @return a pair consisting of an iterator to the inserted element, or the - already-existing element if no insertion happened, and a bool - denoting whether the insertion took place. - - @throw type_error.311 when called on a type other than JSON object or - null; example: `"cannot use emplace() with number"` - - @complexity Logarithmic in the size of the container, O(log(`size()`)). - - @liveexample{The example shows how `emplace()` can be used to add elements - to a JSON object. Note how the `null` value was silently converted to a - JSON object. Further note how no value is added if there was already one - value stored with the same key.,emplace} - - @since version 2.0.8 - */ - template - std::pair emplace(Args&& ... args) - { - // emplace only works for null objects or arrays - if (JSON_UNLIKELY(not(is_null() or is_object()))) - { - JSON_THROW(type_error::create(311, "cannot use emplace() with " + std::string(type_name()))); - } - - // transform null object into an object - if (is_null()) - { - m_type = value_t::object; - m_value = value_t::object; - assert_invariant(); - } - - // add element to array (perfect forwarding) - auto res = m_value.object->emplace(std::forward(args)...); - // create result iterator and set iterator to the result of emplace - auto it = begin(); - it.m_it.object_iterator = res.first; - - // return pair of iterator and boolean - return {it, res.second}; - } - - /*! - @brief inserts element - - Inserts element @a val before iterator @a pos. - - @param[in] pos iterator before which the content will be inserted; may be - the end() iterator - @param[in] val element to insert - @return iterator pointing to the inserted @a val. - - @throw type_error.309 if called on JSON values other than arrays; - example: `"cannot use insert() with string"` - @throw invalid_iterator.202 if @a pos is not an iterator of *this; - example: `"iterator does not fit current value"` - - @complexity Constant plus linear in the distance between @a pos and end of - the container. - - @liveexample{The example shows how `insert()` is used.,insert} - - @since version 1.0.0 - */ - iterator insert(const_iterator pos, const basic_json& val) - { - // insert only works for arrays - if (JSON_LIKELY(is_array())) - { - // check if iterator pos fits to this JSON value - if (JSON_UNLIKELY(pos.m_object != this)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); - } - - // insert to array and return iterator - iterator result(this); - result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, val); - return result; - } - - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); - } - - /*! - @brief inserts element - @copydoc insert(const_iterator, const basic_json&) - */ - iterator insert(const_iterator pos, basic_json&& val) - { - return insert(pos, val); - } - - /*! - @brief inserts elements - - Inserts @a cnt copies of @a val before iterator @a pos. - - @param[in] pos iterator before which the content will be inserted; may be - the end() iterator - @param[in] cnt number of copies of @a val to insert - @param[in] val element to insert - @return iterator pointing to the first element inserted, or @a pos if - `cnt==0` - - @throw type_error.309 if called on JSON values other than arrays; example: - `"cannot use insert() with string"` - @throw invalid_iterator.202 if @a pos is not an iterator of *this; - example: `"iterator does not fit current value"` - - @complexity Linear in @a cnt plus linear in the distance between @a pos - and end of the container. - - @liveexample{The example shows how `insert()` is used.,insert__count} - - @since version 1.0.0 - */ - iterator insert(const_iterator pos, size_type cnt, const basic_json& val) - { - // insert only works for arrays - if (JSON_LIKELY(is_array())) - { - // check if iterator pos fits to this JSON value - if (JSON_UNLIKELY(pos.m_object != this)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); - } - - // insert to array and return iterator - iterator result(this); - result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val); - return result; - } - - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); - } - - /*! - @brief inserts elements - - Inserts elements from range `[first, last)` before iterator @a pos. - - @param[in] pos iterator before which the content will be inserted; may be - the end() iterator - @param[in] first begin of the range of elements to insert - @param[in] last end of the range of elements to insert - - @throw type_error.309 if called on JSON values other than arrays; example: - `"cannot use insert() with string"` - @throw invalid_iterator.202 if @a pos is not an iterator of *this; - example: `"iterator does not fit current value"` - @throw invalid_iterator.210 if @a first and @a last do not belong to the - same JSON value; example: `"iterators do not fit"` - @throw invalid_iterator.211 if @a first or @a last are iterators into - container for which insert is called; example: `"passed iterators may not - belong to container"` - - @return iterator pointing to the first element inserted, or @a pos if - `first==last` - - @complexity Linear in `std::distance(first, last)` plus linear in the - distance between @a pos and end of the container. - - @liveexample{The example shows how `insert()` is used.,insert__range} - - @since version 1.0.0 - */ - iterator insert(const_iterator pos, const_iterator first, const_iterator last) - { - // insert only works for arrays - if (JSON_UNLIKELY(not is_array())) - { - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); - } - - // check if iterator pos fits to this JSON value - if (JSON_UNLIKELY(pos.m_object != this)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); - } - - // check if range iterators belong to the same JSON object - if (JSON_UNLIKELY(first.m_object != last.m_object)) - { - JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); - } - - if (JSON_UNLIKELY(first.m_object == this)) - { - JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container")); - } - - // insert to array and return iterator - iterator result(this); - result.m_it.array_iterator = m_value.array->insert( - pos.m_it.array_iterator, - first.m_it.array_iterator, - last.m_it.array_iterator); - return result; - } - - /*! - @brief inserts elements - - Inserts elements from initializer list @a ilist before iterator @a pos. - - @param[in] pos iterator before which the content will be inserted; may be - the end() iterator - @param[in] ilist initializer list to insert the values from - - @throw type_error.309 if called on JSON values other than arrays; example: - `"cannot use insert() with string"` - @throw invalid_iterator.202 if @a pos is not an iterator of *this; - example: `"iterator does not fit current value"` - - @return iterator pointing to the first element inserted, or @a pos if - `ilist` is empty - - @complexity Linear in `ilist.size()` plus linear in the distance between - @a pos and end of the container. - - @liveexample{The example shows how `insert()` is used.,insert__ilist} - - @since version 1.0.0 - */ - iterator insert(const_iterator pos, initializer_list_t ilist) - { - // insert only works for arrays - if (JSON_UNLIKELY(not is_array())) - { - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); - } - - // check if iterator pos fits to this JSON value - if (JSON_UNLIKELY(pos.m_object != this)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); - } - - // insert to array and return iterator - iterator result(this); - result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, ilist.begin(), ilist.end()); - return result; - } - - /*! - @brief inserts elements - - Inserts elements from range `[first, last)`. - - @param[in] first begin of the range of elements to insert - @param[in] last end of the range of elements to insert - - @throw type_error.309 if called on JSON values other than objects; example: - `"cannot use insert() with string"` - @throw invalid_iterator.202 if iterator @a first or @a last does does not - point to an object; example: `"iterators first and last must point to - objects"` - @throw invalid_iterator.210 if @a first and @a last do not belong to the - same JSON value; example: `"iterators do not fit"` - - @complexity Logarithmic: `O(N*log(size() + N))`, where `N` is the number - of elements to insert. - - @liveexample{The example shows how `insert()` is used.,insert__range_object} - - @since version 3.0.0 - */ - void insert(const_iterator first, const_iterator last) - { - // insert only works for objects - if (JSON_UNLIKELY(not is_object())) - { - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); - } - - // check if range iterators belong to the same JSON object - if (JSON_UNLIKELY(first.m_object != last.m_object)) - { - JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); - } - - // passed iterators must belong to objects - if (JSON_UNLIKELY(not first.m_object->is_object())) - { - JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects")); - } - - m_value.object->insert(first.m_it.object_iterator, last.m_it.object_iterator); - } - - /*! - @brief updates a JSON object from another object, overwriting existing keys - - Inserts all values from JSON object @a j and overwrites existing keys. - - @param[in] j JSON object to read values from - - @throw type_error.312 if called on JSON values other than objects; example: - `"cannot use update() with string"` - - @complexity O(N*log(size() + N)), where N is the number of elements to - insert. - - @liveexample{The example shows how `update()` is used.,update} - - @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update - - @since version 3.0.0 - */ - void update(const_reference j) - { - // implicitly convert null value to an empty object - if (is_null()) - { - m_type = value_t::object; - m_value.object = create(); - assert_invariant(); - } - - if (JSON_UNLIKELY(not is_object())) - { - JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name()))); - } - if (JSON_UNLIKELY(not j.is_object())) - { - JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(j.type_name()))); - } - - for (auto it = j.cbegin(); it != j.cend(); ++it) - { - m_value.object->operator[](it.key()) = it.value(); - } - } - - /*! - @brief updates a JSON object from another object, overwriting existing keys - - Inserts all values from from range `[first, last)` and overwrites existing - keys. - - @param[in] first begin of the range of elements to insert - @param[in] last end of the range of elements to insert - - @throw type_error.312 if called on JSON values other than objects; example: - `"cannot use update() with string"` - @throw invalid_iterator.202 if iterator @a first or @a last does does not - point to an object; example: `"iterators first and last must point to - objects"` - @throw invalid_iterator.210 if @a first and @a last do not belong to the - same JSON value; example: `"iterators do not fit"` - - @complexity O(N*log(size() + N)), where N is the number of elements to - insert. - - @liveexample{The example shows how `update()` is used__range.,update} - - @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update - - @since version 3.0.0 - */ - void update(const_iterator first, const_iterator last) - { - // implicitly convert null value to an empty object - if (is_null()) - { - m_type = value_t::object; - m_value.object = create(); - assert_invariant(); - } - - if (JSON_UNLIKELY(not is_object())) - { - JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name()))); - } - - // check if range iterators belong to the same JSON object - if (JSON_UNLIKELY(first.m_object != last.m_object)) - { - JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); - } - - // passed iterators must belong to objects - if (JSON_UNLIKELY(not first.m_object->is_object() - or not first.m_object->is_object())) - { - JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects")); - } - - for (auto it = first; it != last; ++it) - { - m_value.object->operator[](it.key()) = it.value(); - } - } - - /*! - @brief exchanges the values - - Exchanges the contents of the JSON value with those of @a other. Does not - invoke any move, copy, or swap operations on individual elements. All - iterators and references remain valid. The past-the-end iterator is - invalidated. - - @param[in,out] other JSON value to exchange the contents with - - @complexity Constant. - - @liveexample{The example below shows how JSON values can be swapped with - `swap()`.,swap__reference} - - @since version 1.0.0 - */ - void swap(reference other) noexcept ( - std::is_nothrow_move_constructible::value and - std::is_nothrow_move_assignable::value and - std::is_nothrow_move_constructible::value and - std::is_nothrow_move_assignable::value - ) - { - std::swap(m_type, other.m_type); - std::swap(m_value, other.m_value); - assert_invariant(); - } - - /*! - @brief exchanges the values - - Exchanges the contents of a JSON array with those of @a other. Does not - invoke any move, copy, or swap operations on individual elements. All - iterators and references remain valid. The past-the-end iterator is - invalidated. - - @param[in,out] other array to exchange the contents with - - @throw type_error.310 when JSON value is not an array; example: `"cannot - use swap() with string"` - - @complexity Constant. - - @liveexample{The example below shows how arrays can be swapped with - `swap()`.,swap__array_t} - - @since version 1.0.0 - */ - void swap(array_t& other) - { - // swap only works for arrays - if (JSON_LIKELY(is_array())) - { - std::swap(*(m_value.array), other); - } - else - { - JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); - } - } - - /*! - @brief exchanges the values - - Exchanges the contents of a JSON object with those of @a other. Does not - invoke any move, copy, or swap operations on individual elements. All - iterators and references remain valid. The past-the-end iterator is - invalidated. - - @param[in,out] other object to exchange the contents with - - @throw type_error.310 when JSON value is not an object; example: - `"cannot use swap() with string"` - - @complexity Constant. - - @liveexample{The example below shows how objects can be swapped with - `swap()`.,swap__object_t} - - @since version 1.0.0 - */ - void swap(object_t& other) - { - // swap only works for objects - if (JSON_LIKELY(is_object())) - { - std::swap(*(m_value.object), other); - } - else - { - JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); - } - } - - /*! - @brief exchanges the values - - Exchanges the contents of a JSON string with those of @a other. Does not - invoke any move, copy, or swap operations on individual elements. All - iterators and references remain valid. The past-the-end iterator is - invalidated. - - @param[in,out] other string to exchange the contents with - - @throw type_error.310 when JSON value is not a string; example: `"cannot - use swap() with boolean"` - - @complexity Constant. - - @liveexample{The example below shows how strings can be swapped with - `swap()`.,swap__string_t} - - @since version 1.0.0 - */ - void swap(string_t& other) - { - // swap only works for strings - if (JSON_LIKELY(is_string())) - { - std::swap(*(m_value.string), other); - } - else - { - JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); - } - } - - /// @} - - public: - ////////////////////////////////////////// - // lexicographical comparison operators // - ////////////////////////////////////////// - - /// @name lexicographical comparison operators - /// @{ - - /*! - @brief comparison: equal - - Compares two JSON values for equality according to the following rules: - - Two JSON values are equal if (1) they are from the same type and (2) - their stored values are the same according to their respective - `operator==`. - - Integer and floating-point numbers are automatically converted before - comparison. Note than two NaN values are always treated as unequal. - - Two JSON null values are equal. - - @note Floating-point inside JSON values numbers are compared with - `json::number_float_t::operator==` which is `double::operator==` by - default. To compare floating-point while respecting an epsilon, an alternative - [comparison function](https://github.com/mariokonrad/marnav/blob/master/src/marnav/math/floatingpoint.hpp#L34-#L39) - could be used, for instance - @code {.cpp} - template::value, T>::type> - inline bool is_same(T a, T b, T epsilon = std::numeric_limits::epsilon()) noexcept - { - return std::abs(a - b) <= epsilon; - } - @endcode - - @note NaN values never compare equal to themselves or to other NaN values. - - @param[in] lhs first JSON value to consider - @param[in] rhs second JSON value to consider - @return whether the values @a lhs and @a rhs are equal - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @complexity Linear. - - @liveexample{The example demonstrates comparing several JSON - types.,operator__equal} - - @since version 1.0.0 - */ - friend bool operator==(const_reference lhs, const_reference rhs) noexcept - { - const auto lhs_type = lhs.type(); - const auto rhs_type = rhs.type(); - - if (lhs_type == rhs_type) - { - switch (lhs_type) - { - case value_t::array: - return (*lhs.m_value.array == *rhs.m_value.array); - - case value_t::object: - return (*lhs.m_value.object == *rhs.m_value.object); - - case value_t::null: - return true; - - case value_t::string: - return (*lhs.m_value.string == *rhs.m_value.string); - - case value_t::boolean: - return (lhs.m_value.boolean == rhs.m_value.boolean); - - case value_t::number_integer: - return (lhs.m_value.number_integer == rhs.m_value.number_integer); - - case value_t::number_unsigned: - return (lhs.m_value.number_unsigned == rhs.m_value.number_unsigned); - - case value_t::number_float: - return (lhs.m_value.number_float == rhs.m_value.number_float); - - default: - return false; - } - } - else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float) - { - return (static_cast(lhs.m_value.number_integer) == rhs.m_value.number_float); - } - else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer) - { - return (lhs.m_value.number_float == static_cast(rhs.m_value.number_integer)); - } - else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float) - { - return (static_cast(lhs.m_value.number_unsigned) == rhs.m_value.number_float); - } - else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned) - { - return (lhs.m_value.number_float == static_cast(rhs.m_value.number_unsigned)); - } - else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer) - { - return (static_cast(lhs.m_value.number_unsigned) == rhs.m_value.number_integer); - } - else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned) - { - return (lhs.m_value.number_integer == static_cast(rhs.m_value.number_unsigned)); - } - - return false; - } - - /*! - @brief comparison: equal - @copydoc operator==(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept - { - return (lhs == basic_json(rhs)); - } - - /*! - @brief comparison: equal - @copydoc operator==(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept - { - return (basic_json(lhs) == rhs); - } - - /*! - @brief comparison: not equal - - Compares two JSON values for inequality by calculating `not (lhs == rhs)`. - - @param[in] lhs first JSON value to consider - @param[in] rhs second JSON value to consider - @return whether the values @a lhs and @a rhs are not equal - - @complexity Linear. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @liveexample{The example demonstrates comparing several JSON - types.,operator__notequal} - - @since version 1.0.0 - */ - friend bool operator!=(const_reference lhs, const_reference rhs) noexcept - { - return not (lhs == rhs); - } - - /*! - @brief comparison: not equal - @copydoc operator!=(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept - { - return (lhs != basic_json(rhs)); - } - - /*! - @brief comparison: not equal - @copydoc operator!=(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept - { - return (basic_json(lhs) != rhs); - } - - /*! - @brief comparison: less than - - Compares whether one JSON value @a lhs is less than another JSON value @a - rhs according to the following rules: - - If @a lhs and @a rhs have the same type, the values are compared using - the default `<` operator. - - Integer and floating-point numbers are automatically converted before - comparison - - In case @a lhs and @a rhs have different types, the values are ignored - and the order of the types is considered, see - @ref operator<(const value_t, const value_t). - - @param[in] lhs first JSON value to consider - @param[in] rhs second JSON value to consider - @return whether @a lhs is less than @a rhs - - @complexity Linear. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @liveexample{The example demonstrates comparing several JSON - types.,operator__less} - - @since version 1.0.0 - */ - friend bool operator<(const_reference lhs, const_reference rhs) noexcept - { - const auto lhs_type = lhs.type(); - const auto rhs_type = rhs.type(); - - if (lhs_type == rhs_type) - { - switch (lhs_type) - { - case value_t::array: - return (*lhs.m_value.array) < (*rhs.m_value.array); - - case value_t::object: - return *lhs.m_value.object < *rhs.m_value.object; - - case value_t::null: - return false; - - case value_t::string: - return *lhs.m_value.string < *rhs.m_value.string; - - case value_t::boolean: - return lhs.m_value.boolean < rhs.m_value.boolean; - - case value_t::number_integer: - return lhs.m_value.number_integer < rhs.m_value.number_integer; - - case value_t::number_unsigned: - return lhs.m_value.number_unsigned < rhs.m_value.number_unsigned; - - case value_t::number_float: - return lhs.m_value.number_float < rhs.m_value.number_float; - - default: - return false; - } - } - else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float) - { - return static_cast(lhs.m_value.number_integer) < rhs.m_value.number_float; - } - else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer) - { - return lhs.m_value.number_float < static_cast(rhs.m_value.number_integer); - } - else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float) - { - return static_cast(lhs.m_value.number_unsigned) < rhs.m_value.number_float; - } - else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned) - { - return lhs.m_value.number_float < static_cast(rhs.m_value.number_unsigned); - } - else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned) - { - return lhs.m_value.number_integer < static_cast(rhs.m_value.number_unsigned); - } - else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer) - { - return static_cast(lhs.m_value.number_unsigned) < rhs.m_value.number_integer; - } - - // We only reach this line if we cannot compare values. In that case, - // we compare types. Note we have to call the operator explicitly, - // because MSVC has problems otherwise. - return operator<(lhs_type, rhs_type); - } - - /*! - @brief comparison: less than - @copydoc operator<(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept - { - return (lhs < basic_json(rhs)); - } - - /*! - @brief comparison: less than - @copydoc operator<(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept - { - return (basic_json(lhs) < rhs); - } - - /*! - @brief comparison: less than or equal - - Compares whether one JSON value @a lhs is less than or equal to another - JSON value by calculating `not (rhs < lhs)`. - - @param[in] lhs first JSON value to consider - @param[in] rhs second JSON value to consider - @return whether @a lhs is less than or equal to @a rhs - - @complexity Linear. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @liveexample{The example demonstrates comparing several JSON - types.,operator__greater} - - @since version 1.0.0 - */ - friend bool operator<=(const_reference lhs, const_reference rhs) noexcept - { - return not (rhs < lhs); - } - - /*! - @brief comparison: less than or equal - @copydoc operator<=(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept - { - return (lhs <= basic_json(rhs)); - } - - /*! - @brief comparison: less than or equal - @copydoc operator<=(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept - { - return (basic_json(lhs) <= rhs); - } - - /*! - @brief comparison: greater than - - Compares whether one JSON value @a lhs is greater than another - JSON value by calculating `not (lhs <= rhs)`. - - @param[in] lhs first JSON value to consider - @param[in] rhs second JSON value to consider - @return whether @a lhs is greater than to @a rhs - - @complexity Linear. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @liveexample{The example demonstrates comparing several JSON - types.,operator__lessequal} - - @since version 1.0.0 - */ - friend bool operator>(const_reference lhs, const_reference rhs) noexcept - { - return not (lhs <= rhs); - } - - /*! - @brief comparison: greater than - @copydoc operator>(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept - { - return (lhs > basic_json(rhs)); - } - - /*! - @brief comparison: greater than - @copydoc operator>(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept - { - return (basic_json(lhs) > rhs); - } - - /*! - @brief comparison: greater than or equal - - Compares whether one JSON value @a lhs is greater than or equal to another - JSON value by calculating `not (lhs < rhs)`. - - @param[in] lhs first JSON value to consider - @param[in] rhs second JSON value to consider - @return whether @a lhs is greater than or equal to @a rhs - - @complexity Linear. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @liveexample{The example demonstrates comparing several JSON - types.,operator__greaterequal} - - @since version 1.0.0 - */ - friend bool operator>=(const_reference lhs, const_reference rhs) noexcept - { - return not (lhs < rhs); - } - - /*! - @brief comparison: greater than or equal - @copydoc operator>=(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept - { - return (lhs >= basic_json(rhs)); - } - - /*! - @brief comparison: greater than or equal - @copydoc operator>=(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept - { - return (basic_json(lhs) >= rhs); - } - - /// @} - - /////////////////// - // serialization // - /////////////////// - - /// @name serialization - /// @{ - - /*! - @brief serialize to stream - - Serialize the given JSON value @a j to the output stream @a o. The JSON - value will be serialized using the @ref dump member function. - - - The indentation of the output can be controlled with the member variable - `width` of the output stream @a o. For instance, using the manipulator - `std::setw(4)` on @a o sets the indentation level to `4` and the - serialization result is the same as calling `dump(4)`. - - - The indentation character can be controlled with the member variable - `fill` of the output stream @a o. For instance, the manipulator - `std::setfill('\\t')` sets indentation to use a tab character rather than - the default space character. - - @param[in,out] o stream to serialize to - @param[in] j JSON value to serialize - - @return the stream @a o - - @throw type_error.316 if a string stored inside the JSON value is not - UTF-8 encoded - - @complexity Linear. - - @liveexample{The example below shows the serialization with different - parameters to `width` to adjust the indentation level.,operator_serialize} - - @since version 1.0.0; indentation character added in version 3.0.0 - */ - friend std::ostream& operator<<(std::ostream& o, const basic_json& j) - { - // read width member and use it as indentation parameter if nonzero - const bool pretty_print = (o.width() > 0); - const auto indentation = (pretty_print ? o.width() : 0); - - // reset width to 0 for subsequent calls to this stream - o.width(0); - - // do the actual serialization - serializer s(detail::output_adapter(o), o.fill()); - s.dump(j, pretty_print, false, static_cast(indentation)); - return o; - } - - /*! - @brief serialize to stream - @deprecated This stream operator is deprecated and will be removed in a - future version of the library. Please use - @ref operator<<(std::ostream&, const basic_json&) - instead; that is, replace calls like `j >> o;` with `o << j;`. - @since version 1.0.0; deprecated since version 3.0.0 - */ - JSON_DEPRECATED - friend std::ostream& operator>>(const basic_json& j, std::ostream& o) - { - return o << j; - } - - /// @} - - ///////////////////// - // deserialization // - ///////////////////// - - /// @name deserialization - /// @{ - - /*! - @brief deserialize from a compatible input - - This function reads from a compatible input. Examples are: - - an array of 1-byte values - - strings with character/literal type with size of 1 byte - - input streams - - container with contiguous storage of 1-byte values. Compatible container - types include `std::vector`, `std::string`, `std::array`, - `std::valarray`, and `std::initializer_list`. Furthermore, C-style - arrays can be used with `std::begin()`/`std::end()`. User-defined - containers can be used as long as they implement random-access iterators - and a contiguous storage. - - @pre Each element of the container has a size of 1 byte. Violating this - precondition yields undefined behavior. **This precondition is enforced - with a static assertion.** - - @pre The container storage is contiguous. Violating this precondition - yields undefined behavior. **This precondition is enforced with an - assertion.** - @pre Each element of the container has a size of 1 byte. Violating this - precondition yields undefined behavior. **This precondition is enforced - with a static assertion.** - - @warning There is no way to enforce all preconditions at compile-time. If - the function is called with a noncompliant container and with - assertions switched off, the behavior is undefined and will most - likely yield segmentation violation. - - @param[in] i input to read from - @param[in] cb a parser callback function of type @ref parser_callback_t - which is used to control the deserialization by filtering unwanted values - (optional) - - @return result of the deserialization - - @throw parse_error.101 if a parse error occurs; example: `""unexpected end - of input; expected string literal""` - @throw parse_error.102 if to_unicode fails or surrogate error - @throw parse_error.103 if to_unicode fails - - @complexity Linear in the length of the input. The parser is a predictive - LL(1) parser. The complexity can be higher if the parser callback function - @a cb has a super-linear complexity. - - @note A UTF-8 byte order mark is silently ignored. - - @liveexample{The example below demonstrates the `parse()` function reading - from an array.,parse__array__parser_callback_t} - - @liveexample{The example below demonstrates the `parse()` function with - and without callback function.,parse__string__parser_callback_t} - - @liveexample{The example below demonstrates the `parse()` function with - and without callback function.,parse__istream__parser_callback_t} - - @liveexample{The example below demonstrates the `parse()` function reading - from a contiguous container.,parse__contiguouscontainer__parser_callback_t} - - @since version 2.0.3 (contiguous containers) - */ - static basic_json parse(detail::input_adapter i, - const parser_callback_t cb = nullptr, - const bool allow_exceptions = true) - { - basic_json result; - parser(i, cb, allow_exceptions).parse(true, result); - return result; - } - - /*! - @copydoc basic_json parse(detail::input_adapter, const parser_callback_t) - */ - static basic_json parse(detail::input_adapter& i, - const parser_callback_t cb = nullptr, - const bool allow_exceptions = true) - { - basic_json result; - parser(i, cb, allow_exceptions).parse(true, result); - return result; - } - - static bool accept(detail::input_adapter i) - { - return parser(i).accept(true); - } - - static bool accept(detail::input_adapter& i) - { - return parser(i).accept(true); - } - - /*! - @brief deserialize from an iterator range with contiguous storage - - This function reads from an iterator range of a container with contiguous - storage of 1-byte values. Compatible container types include - `std::vector`, `std::string`, `std::array`, `std::valarray`, and - `std::initializer_list`. Furthermore, C-style arrays can be used with - `std::begin()`/`std::end()`. User-defined containers can be used as long - as they implement random-access iterators and a contiguous storage. - - @pre The iterator range is contiguous. Violating this precondition yields - undefined behavior. **This precondition is enforced with an assertion.** - @pre Each element in the range has a size of 1 byte. Violating this - precondition yields undefined behavior. **This precondition is enforced - with a static assertion.** - - @warning There is no way to enforce all preconditions at compile-time. If - the function is called with noncompliant iterators and with - assertions switched off, the behavior is undefined and will most - likely yield segmentation violation. - - @tparam IteratorType iterator of container with contiguous storage - @param[in] first begin of the range to parse (included) - @param[in] last end of the range to parse (excluded) - @param[in] cb a parser callback function of type @ref parser_callback_t - which is used to control the deserialization by filtering unwanted values - (optional) - @param[in] allow_exceptions whether to throw exceptions in case of a - parse error (optional, true by default) - - @return result of the deserialization - - @throw parse_error.101 in case of an unexpected token - @throw parse_error.102 if to_unicode fails or surrogate error - @throw parse_error.103 if to_unicode fails - - @complexity Linear in the length of the input. The parser is a predictive - LL(1) parser. The complexity can be higher if the parser callback function - @a cb has a super-linear complexity. - - @note A UTF-8 byte order mark is silently ignored. - - @liveexample{The example below demonstrates the `parse()` function reading - from an iterator range.,parse__iteratortype__parser_callback_t} - - @since version 2.0.3 - */ - template::iterator_category>::value, int>::type = 0> - static basic_json parse(IteratorType first, IteratorType last, - const parser_callback_t cb = nullptr, - const bool allow_exceptions = true) - { - basic_json result; - parser(detail::input_adapter(first, last), cb, allow_exceptions).parse(true, result); - return result; - } - - template::iterator_category>::value, int>::type = 0> - static bool accept(IteratorType first, IteratorType last) - { - return parser(detail::input_adapter(first, last)).accept(true); - } - - /*! - @brief deserialize from stream - @deprecated This stream operator is deprecated and will be removed in a - future version of the library. Please use - @ref operator>>(std::istream&, basic_json&) - instead; that is, replace calls like `j << i;` with `i >> j;`. - @since version 1.0.0; deprecated since version 3.0.0 - */ - JSON_DEPRECATED - friend std::istream& operator<<(basic_json& j, std::istream& i) - { - return operator>>(i, j); - } - - /*! - @brief deserialize from stream - - Deserializes an input stream to a JSON value. - - @param[in,out] i input stream to read a serialized JSON value from - @param[in,out] j JSON value to write the deserialized input to - - @throw parse_error.101 in case of an unexpected token - @throw parse_error.102 if to_unicode fails or surrogate error - @throw parse_error.103 if to_unicode fails - - @complexity Linear in the length of the input. The parser is a predictive - LL(1) parser. - - @note A UTF-8 byte order mark is silently ignored. - - @liveexample{The example below shows how a JSON value is constructed by - reading a serialization from a stream.,operator_deserialize} - - @sa parse(std::istream&, const parser_callback_t) for a variant with a - parser callback function to filter values while parsing - - @since version 1.0.0 - */ - friend std::istream& operator>>(std::istream& i, basic_json& j) - { - parser(detail::input_adapter(i)).parse(false, j); - return i; - } - - /// @} - - /////////////////////////// - // convenience functions // - /////////////////////////// - - /*! - @brief return the type as string - - Returns the type name as string to be used in error messages - usually to - indicate that a function was called on a wrong JSON type. - - @return a string representation of a the @a m_type member: - Value type | return value - ----------- | ------------- - null | `"null"` - boolean | `"boolean"` - string | `"string"` - number | `"number"` (for all number types) - object | `"object"` - array | `"array"` - discarded | `"discarded"` - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @complexity Constant. - - @liveexample{The following code exemplifies `type_name()` for all JSON - types.,type_name} - - @sa @ref type() -- return the type of the JSON value - @sa @ref operator value_t() -- return the type of the JSON value (implicit) - - @since version 1.0.0, public since 2.1.0, `const char*` and `noexcept` - since 3.0.0 - */ - const char* type_name() const noexcept - { - { - switch (m_type) - { - case value_t::null: - return "null"; - case value_t::object: - return "object"; - case value_t::array: - return "array"; - case value_t::string: - return "string"; - case value_t::boolean: - return "boolean"; - case value_t::discarded: - return "discarded"; - default: - return "number"; - } - } - } - - private: - ////////////////////// - // member variables // - ////////////////////// - - /// the type of the current element - value_t m_type = value_t::null; - - /// the value of the current element - json_value m_value = {}; - - ////////////////////////////////////////// - // binary serialization/deserialization // - ////////////////////////////////////////// - - /// @name binary serialization/deserialization support - /// @{ - - public: - /*! - @brief create a CBOR serialization of a given JSON value - - Serializes a given JSON value @a j to a byte vector using the CBOR (Concise - Binary Object Representation) serialization format. CBOR is a binary - serialization format which aims to be more compact than JSON itself, yet - more efficient to parse. - - The library uses the following mapping from JSON values types to - CBOR types according to the CBOR specification (RFC 7049): - - JSON value type | value/range | CBOR type | first byte - --------------- | ------------------------------------------ | ---------------------------------- | --------------- - null | `null` | Null | 0xF6 - boolean | `true` | True | 0xF5 - boolean | `false` | False | 0xF4 - number_integer | -9223372036854775808..-2147483649 | Negative integer (8 bytes follow) | 0x3B - number_integer | -2147483648..-32769 | Negative integer (4 bytes follow) | 0x3A - number_integer | -32768..-129 | Negative integer (2 bytes follow) | 0x39 - number_integer | -128..-25 | Negative integer (1 byte follow) | 0x38 - number_integer | -24..-1 | Negative integer | 0x20..0x37 - number_integer | 0..23 | Integer | 0x00..0x17 - number_integer | 24..255 | Unsigned integer (1 byte follow) | 0x18 - number_integer | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 - number_integer | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A - number_integer | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B - number_unsigned | 0..23 | Integer | 0x00..0x17 - number_unsigned | 24..255 | Unsigned integer (1 byte follow) | 0x18 - number_unsigned | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 - number_unsigned | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A - number_unsigned | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B - number_float | *any value* | Double-Precision Float | 0xFB - string | *length*: 0..23 | UTF-8 string | 0x60..0x77 - string | *length*: 23..255 | UTF-8 string (1 byte follow) | 0x78 - string | *length*: 256..65535 | UTF-8 string (2 bytes follow) | 0x79 - string | *length*: 65536..4294967295 | UTF-8 string (4 bytes follow) | 0x7A - string | *length*: 4294967296..18446744073709551615 | UTF-8 string (8 bytes follow) | 0x7B - array | *size*: 0..23 | array | 0x80..0x97 - array | *size*: 23..255 | array (1 byte follow) | 0x98 - array | *size*: 256..65535 | array (2 bytes follow) | 0x99 - array | *size*: 65536..4294967295 | array (4 bytes follow) | 0x9A - array | *size*: 4294967296..18446744073709551615 | array (8 bytes follow) | 0x9B - object | *size*: 0..23 | map | 0xA0..0xB7 - object | *size*: 23..255 | map (1 byte follow) | 0xB8 - object | *size*: 256..65535 | map (2 bytes follow) | 0xB9 - object | *size*: 65536..4294967295 | map (4 bytes follow) | 0xBA - object | *size*: 4294967296..18446744073709551615 | map (8 bytes follow) | 0xBB - - @note The mapping is **complete** in the sense that any JSON value type - can be converted to a CBOR value. - - @note If NaN or Infinity are stored inside a JSON number, they are - serialized properly. This behavior differs from the @ref dump() - function which serializes NaN or Infinity to `null`. - - @note The following CBOR types are not used in the conversion: - - byte strings (0x40..0x5F) - - UTF-8 strings terminated by "break" (0x7F) - - arrays terminated by "break" (0x9F) - - maps terminated by "break" (0xBF) - - date/time (0xC0..0xC1) - - bignum (0xC2..0xC3) - - decimal fraction (0xC4) - - bigfloat (0xC5) - - tagged items (0xC6..0xD4, 0xD8..0xDB) - - expected conversions (0xD5..0xD7) - - simple values (0xE0..0xF3, 0xF8) - - undefined (0xF7) - - half and single-precision floats (0xF9-0xFA) - - break (0xFF) - - @param[in] j JSON value to serialize - @return MessagePack serialization as byte vector - - @complexity Linear in the size of the JSON value @a j. - - @liveexample{The example shows the serialization of a JSON value to a byte - vector in CBOR format.,to_cbor} - - @sa http://cbor.io - @sa @ref from_cbor(const std::vector&, const size_t) for the - analogous deserialization - @sa @ref to_msgpack(const basic_json&) for the related MessagePack format - - @since version 2.0.9 - */ - static std::vector to_cbor(const basic_json& j) - { - std::vector result; - to_cbor(j, result); - return result; - } - - static void to_cbor(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_cbor(j); - } - - static void to_cbor(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_cbor(j); - } - - /*! - @brief create a MessagePack serialization of a given JSON value - - Serializes a given JSON value @a j to a byte vector using the MessagePack - serialization format. MessagePack is a binary serialization format which - aims to be more compact than JSON itself, yet more efficient to parse. - - The library uses the following mapping from JSON values types to - MessagePack types according to the MessagePack specification: - - JSON value type | value/range | MessagePack type | first byte - --------------- | --------------------------------- | ---------------- | ---------- - null | `null` | nil | 0xC0 - boolean | `true` | true | 0xC3 - boolean | `false` | false | 0xC2 - number_integer | -9223372036854775808..-2147483649 | int64 | 0xD3 - number_integer | -2147483648..-32769 | int32 | 0xD2 - number_integer | -32768..-129 | int16 | 0xD1 - number_integer | -128..-33 | int8 | 0xD0 - number_integer | -32..-1 | negative fixint | 0xE0..0xFF - number_integer | 0..127 | positive fixint | 0x00..0x7F - number_integer | 128..255 | uint 8 | 0xCC - number_integer | 256..65535 | uint 16 | 0xCD - number_integer | 65536..4294967295 | uint 32 | 0xCE - number_integer | 4294967296..18446744073709551615 | uint 64 | 0xCF - number_unsigned | 0..127 | positive fixint | 0x00..0x7F - number_unsigned | 128..255 | uint 8 | 0xCC - number_unsigned | 256..65535 | uint 16 | 0xCD - number_unsigned | 65536..4294967295 | uint 32 | 0xCE - number_unsigned | 4294967296..18446744073709551615 | uint 64 | 0xCF - number_float | *any value* | float 64 | 0xCB - string | *length*: 0..31 | fixstr | 0xA0..0xBF - string | *length*: 32..255 | str 8 | 0xD9 - string | *length*: 256..65535 | str 16 | 0xDA - string | *length*: 65536..4294967295 | str 32 | 0xDB - array | *size*: 0..15 | fixarray | 0x90..0x9F - array | *size*: 16..65535 | array 16 | 0xDC - array | *size*: 65536..4294967295 | array 32 | 0xDD - object | *size*: 0..15 | fix map | 0x80..0x8F - object | *size*: 16..65535 | map 16 | 0xDE - object | *size*: 65536..4294967295 | map 32 | 0xDF - - @note The mapping is **complete** in the sense that any JSON value type - can be converted to a MessagePack value. - - @note The following values can **not** be converted to a MessagePack value: - - strings with more than 4294967295 bytes - - arrays with more than 4294967295 elements - - objects with more than 4294967295 elements - - @note The following MessagePack types are not used in the conversion: - - bin 8 - bin 32 (0xC4..0xC6) - - ext 8 - ext 32 (0xC7..0xC9) - - float 32 (0xCA) - - fixext 1 - fixext 16 (0xD4..0xD8) - - @note Any MessagePack output created @ref to_msgpack can be successfully - parsed by @ref from_msgpack. - - @note If NaN or Infinity are stored inside a JSON number, they are - serialized properly. This behavior differs from the @ref dump() - function which serializes NaN or Infinity to `null`. - - @param[in] j JSON value to serialize - @return MessagePack serialization as byte vector - - @complexity Linear in the size of the JSON value @a j. - - @liveexample{The example shows the serialization of a JSON value to a byte - vector in MessagePack format.,to_msgpack} - - @sa http://msgpack.org - @sa @ref from_msgpack(const std::vector&, const size_t) for the - analogous deserialization - @sa @ref to_cbor(const basic_json& for the related CBOR format - - @since version 2.0.9 - */ - static std::vector to_msgpack(const basic_json& j) - { - std::vector result; - to_msgpack(j, result); - return result; - } - - static void to_msgpack(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_msgpack(j); - } - - static void to_msgpack(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_msgpack(j); - } - - /*! - @brief create a JSON value from an input in CBOR format - - Deserializes a given input @a i to a JSON value using the CBOR (Concise - Binary Object Representation) serialization format. - - The library maps CBOR types to JSON value types as follows: - - CBOR type | JSON value type | first byte - ---------------------- | --------------- | ---------- - Integer | number_unsigned | 0x00..0x17 - Unsigned integer | number_unsigned | 0x18 - Unsigned integer | number_unsigned | 0x19 - Unsigned integer | number_unsigned | 0x1A - Unsigned integer | number_unsigned | 0x1B - Negative integer | number_integer | 0x20..0x37 - Negative integer | number_integer | 0x38 - Negative integer | number_integer | 0x39 - Negative integer | number_integer | 0x3A - Negative integer | number_integer | 0x3B - Negative integer | number_integer | 0x40..0x57 - UTF-8 string | string | 0x60..0x77 - UTF-8 string | string | 0x78 - UTF-8 string | string | 0x79 - UTF-8 string | string | 0x7A - UTF-8 string | string | 0x7B - UTF-8 string | string | 0x7F - array | array | 0x80..0x97 - array | array | 0x98 - array | array | 0x99 - array | array | 0x9A - array | array | 0x9B - array | array | 0x9F - map | object | 0xA0..0xB7 - map | object | 0xB8 - map | object | 0xB9 - map | object | 0xBA - map | object | 0xBB - map | object | 0xBF - False | `false` | 0xF4 - True | `true` | 0xF5 - Nill | `null` | 0xF6 - Half-Precision Float | number_float | 0xF9 - Single-Precision Float | number_float | 0xFA - Double-Precision Float | number_float | 0xFB - - @warning The mapping is **incomplete** in the sense that not all CBOR - types can be converted to a JSON value. The following CBOR types - are not supported and will yield parse errors (parse_error.112): - - byte strings (0x40..0x5F) - - date/time (0xC0..0xC1) - - bignum (0xC2..0xC3) - - decimal fraction (0xC4) - - bigfloat (0xC5) - - tagged items (0xC6..0xD4, 0xD8..0xDB) - - expected conversions (0xD5..0xD7) - - simple values (0xE0..0xF3, 0xF8) - - undefined (0xF7) - - @warning CBOR allows map keys of any type, whereas JSON only allows - strings as keys in object values. Therefore, CBOR maps with keys - other than UTF-8 strings are rejected (parse_error.113). - - @note Any CBOR output created @ref to_cbor can be successfully parsed by - @ref from_cbor. - - @param[in] i an input in CBOR format convertible to an input adapter - @param[in] strict whether to expect the input to be consumed until EOF - (true by default) - @return deserialized JSON value - - @throw parse_error.110 if the given input ends prematurely or the end of - file was not reached when @a strict was set to true - @throw parse_error.112 if unsupported features from CBOR were - used in the given input @a v or if the input is not valid CBOR - @throw parse_error.113 if a string was expected as map key, but not found - - @complexity Linear in the size of the input @a i. - - @liveexample{The example shows the deserialization of a byte vector in CBOR - format to a JSON value.,from_cbor} - - @sa http://cbor.io - @sa @ref to_cbor(const basic_json&) for the analogous serialization - @sa @ref from_msgpack(detail::input_adapter, const bool) for the - related MessagePack format - - @since version 2.0.9; parameter @a start_index since 2.1.1; changed to - consume input adapters, removed start_index parameter, and added - @a strict parameter since 3.0.0 - */ - static basic_json from_cbor(detail::input_adapter i, - const bool strict = true) - { - return binary_reader(i).parse_cbor(strict); - } - - /*! - @copydoc from_cbor(detail::input_adapter, const bool) - */ - template::value, int> = 0> - static basic_json from_cbor(A1 && a1, A2 && a2, const bool strict = true) - { - return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_cbor(strict); - } - - /*! - @brief create a JSON value from an input in MessagePack format - - Deserializes a given input @a i to a JSON value using the MessagePack - serialization format. - - The library maps MessagePack types to JSON value types as follows: - - MessagePack type | JSON value type | first byte - ---------------- | --------------- | ---------- - positive fixint | number_unsigned | 0x00..0x7F - fixmap | object | 0x80..0x8F - fixarray | array | 0x90..0x9F - fixstr | string | 0xA0..0xBF - nil | `null` | 0xC0 - false | `false` | 0xC2 - true | `true` | 0xC3 - float 32 | number_float | 0xCA - float 64 | number_float | 0xCB - uint 8 | number_unsigned | 0xCC - uint 16 | number_unsigned | 0xCD - uint 32 | number_unsigned | 0xCE - uint 64 | number_unsigned | 0xCF - int 8 | number_integer | 0xD0 - int 16 | number_integer | 0xD1 - int 32 | number_integer | 0xD2 - int 64 | number_integer | 0xD3 - str 8 | string | 0xD9 - str 16 | string | 0xDA - str 32 | string | 0xDB - array 16 | array | 0xDC - array 32 | array | 0xDD - map 16 | object | 0xDE - map 32 | object | 0xDF - negative fixint | number_integer | 0xE0-0xFF - - @warning The mapping is **incomplete** in the sense that not all - MessagePack types can be converted to a JSON value. The following - MessagePack types are not supported and will yield parse errors: - - bin 8 - bin 32 (0xC4..0xC6) - - ext 8 - ext 32 (0xC7..0xC9) - - fixext 1 - fixext 16 (0xD4..0xD8) - - @note Any MessagePack output created @ref to_msgpack can be successfully - parsed by @ref from_msgpack. - - @param[in] i an input in MessagePack format convertible to an input - adapter - @param[in] strict whether to expect the input to be consumed until EOF - (true by default) - - @throw parse_error.110 if the given input ends prematurely or the end of - file was not reached when @a strict was set to true - @throw parse_error.112 if unsupported features from MessagePack were - used in the given input @a i or if the input is not valid MessagePack - @throw parse_error.113 if a string was expected as map key, but not found - - @complexity Linear in the size of the input @a i. - - @liveexample{The example shows the deserialization of a byte vector in - MessagePack format to a JSON value.,from_msgpack} - - @sa http://msgpack.org - @sa @ref to_msgpack(const basic_json&) for the analogous serialization - @sa @ref from_cbor(detail::input_adapter, const bool) for the related CBOR - format - - @since version 2.0.9; parameter @a start_index since 2.1.1; changed to - consume input adapters, removed start_index parameter, and added - @a strict parameter since 3.0.0 - */ - static basic_json from_msgpack(detail::input_adapter i, - const bool strict = true) - { - return binary_reader(i).parse_msgpack(strict); - } - - /*! - @copydoc from_msgpack(detail::input_adapter, const bool) - */ - template::value, int> = 0> - static basic_json from_msgpack(A1 && a1, A2 && a2, const bool strict = true) - { - return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_msgpack(strict); - } - - /// @} - - ////////////////////////// - // JSON Pointer support // - ////////////////////////// - - /// @name JSON Pointer functions - /// @{ - - /*! - @brief access specified element via JSON Pointer - - Uses a JSON pointer to retrieve a reference to the respective JSON value. - No bound checking is performed. Similar to @ref operator[](const typename - object_t::key_type&), `null` values are created in arrays and objects if - necessary. - - In particular: - - If the JSON pointer points to an object key that does not exist, it - is created an filled with a `null` value before a reference to it - is returned. - - If the JSON pointer points to an array index that does not exist, it - is created an filled with a `null` value before a reference to it - is returned. All indices between the current maximum and the given - index are also filled with `null`. - - The special value `-` is treated as a synonym for the index past the - end. - - @param[in] ptr a JSON pointer - - @return reference to the element pointed to by @a ptr - - @complexity Constant. - - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.404 if the JSON pointer can not be resolved - - @liveexample{The behavior is shown in the example.,operatorjson_pointer} - - @since version 2.0.0 - */ - reference operator[](const json_pointer& ptr) - { - return ptr.get_unchecked(this); - } - - /*! - @brief access specified element via JSON Pointer - - Uses a JSON pointer to retrieve a reference to the respective JSON value. - No bound checking is performed. The function does not change the JSON - value; no `null` values are created. In particular, the the special value - `-` yields an exception. - - @param[in] ptr JSON pointer to the desired element - - @return const reference to the element pointed to by @a ptr - - @complexity Constant. - - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - - @liveexample{The behavior is shown in the example.,operatorjson_pointer_const} - - @since version 2.0.0 - */ - const_reference operator[](const json_pointer& ptr) const - { - return ptr.get_unchecked(this); - } - - /*! - @brief access specified element via JSON Pointer - - Returns a reference to the element at with specified JSON pointer @a ptr, - with bounds checking. - - @param[in] ptr JSON pointer to the desired element - - @return reference to the element pointed to by @a ptr - - @throw parse_error.106 if an array index in the passed JSON pointer @a ptr - begins with '0'. See example below. - - @throw parse_error.109 if an array index in the passed JSON pointer @a ptr - is not a number. See example below. - - @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr - is out of range. See example below. - - @throw out_of_range.402 if the array index '-' is used in the passed JSON - pointer @a ptr. As `at` provides checked access (and no elements are - implicitly inserted), the index '-' is always invalid. See example below. - - @throw out_of_range.403 if the JSON pointer describes a key of an object - which cannot be found. See example below. - - @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved. - See example below. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Constant. - - @since version 2.0.0 - - @liveexample{The behavior is shown in the example.,at_json_pointer} - */ - reference at(const json_pointer& ptr) - { - return ptr.get_checked(this); - } - - /*! - @brief access specified element via JSON Pointer - - Returns a const reference to the element at with specified JSON pointer @a - ptr, with bounds checking. - - @param[in] ptr JSON pointer to the desired element - - @return reference to the element pointed to by @a ptr - - @throw parse_error.106 if an array index in the passed JSON pointer @a ptr - begins with '0'. See example below. - - @throw parse_error.109 if an array index in the passed JSON pointer @a ptr - is not a number. See example below. - - @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr - is out of range. See example below. - - @throw out_of_range.402 if the array index '-' is used in the passed JSON - pointer @a ptr. As `at` provides checked access (and no elements are - implicitly inserted), the index '-' is always invalid. See example below. - - @throw out_of_range.403 if the JSON pointer describes a key of an object - which cannot be found. See example below. - - @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved. - See example below. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Constant. - - @since version 2.0.0 - - @liveexample{The behavior is shown in the example.,at_json_pointer_const} - */ - const_reference at(const json_pointer& ptr) const - { - return ptr.get_checked(this); - } - - /*! - @brief return flattened JSON value - - The function creates a JSON object whose keys are JSON pointers (see [RFC - 6901](https://tools.ietf.org/html/rfc6901)) and whose values are all - primitive. The original JSON value can be restored using the @ref - unflatten() function. - - @return an object that maps JSON pointers to primitive values - - @note Empty objects and arrays are flattened to `null` and will not be - reconstructed correctly by the @ref unflatten() function. - - @complexity Linear in the size the JSON value. - - @liveexample{The following code shows how a JSON object is flattened to an - object whose keys consist of JSON pointers.,flatten} - - @sa @ref unflatten() for the reverse function - - @since version 2.0.0 - */ - basic_json flatten() const - { - basic_json result(value_t::object); - json_pointer::flatten("", *this, result); - return result; - } - - /*! - @brief unflatten a previously flattened JSON value - - The function restores the arbitrary nesting of a JSON value that has been - flattened before using the @ref flatten() function. The JSON value must - meet certain constraints: - 1. The value must be an object. - 2. The keys must be JSON pointers (see - [RFC 6901](https://tools.ietf.org/html/rfc6901)) - 3. The mapped values must be primitive JSON types. - - @return the original JSON from a flattened version - - @note Empty objects and arrays are flattened by @ref flatten() to `null` - values and can not unflattened to their original type. Apart from - this example, for a JSON value `j`, the following is always true: - `j == j.flatten().unflatten()`. - - @complexity Linear in the size the JSON value. - - @throw type_error.314 if value is not an object - @throw type_error.315 if object values are not primitive - - @liveexample{The following code shows how a flattened JSON object is - unflattened into the original nested JSON object.,unflatten} - - @sa @ref flatten() for the reverse function - - @since version 2.0.0 - */ - basic_json unflatten() const - { - return json_pointer::unflatten(*this); - } - - /// @} - - ////////////////////////// - // JSON Patch functions // - ////////////////////////// - - /// @name JSON Patch functions - /// @{ - - /*! - @brief applies a JSON patch - - [JSON Patch](http://jsonpatch.com) defines a JSON document structure for - expressing a sequence of operations to apply to a JSON) document. With - this function, a JSON Patch is applied to the current JSON value by - executing all operations from the patch. - - @param[in] json_patch JSON patch document - @return patched document - - @note The application of a patch is atomic: Either all operations succeed - and the patched document is returned or an exception is thrown. In - any case, the original value is not changed: the patch is applied - to a copy of the value. - - @throw parse_error.104 if the JSON patch does not consist of an array of - objects - - @throw parse_error.105 if the JSON patch is malformed (e.g., mandatory - attributes are missing); example: `"operation add must have member path"` - - @throw out_of_range.401 if an array index is out of range. - - @throw out_of_range.403 if a JSON pointer inside the patch could not be - resolved successfully in the current JSON value; example: `"key baz not - found"` - - @throw out_of_range.405 if JSON pointer has no parent ("add", "remove", - "move") - - @throw other_error.501 if "test" operation was unsuccessful - - @complexity Linear in the size of the JSON value and the length of the - JSON patch. As usually only a fraction of the JSON value is affected by - the patch, the complexity can usually be neglected. - - @liveexample{The following code shows how a JSON patch is applied to a - value.,patch} - - @sa @ref diff -- create a JSON patch by comparing two JSON values - - @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) - @sa [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901) - - @since version 2.0.0 - */ - basic_json patch(const basic_json& json_patch) const - { - // make a working copy to apply the patch to - basic_json result = *this; - - // the valid JSON Patch operations - enum class patch_operations {add, remove, replace, move, copy, test, invalid}; - - const auto get_op = [](const std::string & op) - { - if (op == "add") - { - return patch_operations::add; - } - if (op == "remove") - { - return patch_operations::remove; - } - if (op == "replace") - { - return patch_operations::replace; - } - if (op == "move") - { - return patch_operations::move; - } - if (op == "copy") - { - return patch_operations::copy; - } - if (op == "test") - { - return patch_operations::test; - } - - return patch_operations::invalid; - }; - - // wrapper for "add" operation; add value at ptr - const auto operation_add = [&result](json_pointer & ptr, basic_json val) - { - // adding to the root of the target document means replacing it - if (ptr.is_root()) - { - result = val; - } - else - { - // make sure the top element of the pointer exists - json_pointer top_pointer = ptr.top(); - if (top_pointer != ptr) - { - result.at(top_pointer); - } - - // get reference to parent of JSON pointer ptr - const auto last_path = ptr.pop_back(); - basic_json& parent = result[ptr]; - - switch (parent.m_type) - { - case value_t::null: - case value_t::object: - { - // use operator[] to add value - parent[last_path] = val; - break; - } - - case value_t::array: - { - if (last_path == "-") - { - // special case: append to back - parent.push_back(val); - } - else - { - const auto idx = json_pointer::array_index(last_path); - if (JSON_UNLIKELY(static_cast(idx) > parent.size())) - { - // avoid undefined behavior - JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); - } - else - { - // default case: insert add offset - parent.insert(parent.begin() + static_cast(idx), val); - } - } - break; - } - - default: - { - // if there exists a parent it cannot be primitive - assert(false); // LCOV_EXCL_LINE - } - } - } - }; - - // wrapper for "remove" operation; remove value at ptr - const auto operation_remove = [&result](json_pointer & ptr) - { - // get reference to parent of JSON pointer ptr - const auto last_path = ptr.pop_back(); - basic_json& parent = result.at(ptr); - - // remove child - if (parent.is_object()) - { - // perform range check - auto it = parent.find(last_path); - if (JSON_LIKELY(it != parent.end())) - { - parent.erase(it); - } - else - { - JSON_THROW(out_of_range::create(403, "key '" + last_path + "' not found")); - } - } - else if (parent.is_array()) - { - // note erase performs range check - parent.erase(static_cast(json_pointer::array_index(last_path))); - } - }; - - // type check: top level value must be an array - if (JSON_UNLIKELY(not json_patch.is_array())) - { - JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects")); - } - - // iterate and apply the operations - for (const auto& val : json_patch) - { - // wrapper to get a value for an operation - const auto get_value = [&val](const std::string & op, - const std::string & member, - bool string_type) -> basic_json& - { - // find value - auto it = val.m_value.object->find(member); - - // context-sensitive error message - const auto error_msg = (op == "op") ? "operation" : "operation '" + op + "'"; - - // check if desired value is present - if (JSON_UNLIKELY(it == val.m_value.object->end())) - { - JSON_THROW(parse_error::create(105, 0, error_msg + " must have member '" + member + "'")); - } - - // check if result is of type string - if (JSON_UNLIKELY(string_type and not it->second.is_string())) - { - JSON_THROW(parse_error::create(105, 0, error_msg + " must have string member '" + member + "'")); - } - - // no error: return value - return it->second; - }; - - // type check: every element of the array must be an object - if (JSON_UNLIKELY(not val.is_object())) - { - JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects")); - } - - // collect mandatory members - const std::string op = get_value("op", "op", true); - const std::string path = get_value(op, "path", true); - json_pointer ptr(path); - - switch (get_op(op)) - { - case patch_operations::add: - { - operation_add(ptr, get_value("add", "value", false)); - break; - } - - case patch_operations::remove: - { - operation_remove(ptr); - break; - } - - case patch_operations::replace: - { - // the "path" location must exist - use at() - result.at(ptr) = get_value("replace", "value", false); - break; - } - - case patch_operations::move: - { - const std::string from_path = get_value("move", "from", true); - json_pointer from_ptr(from_path); - - // the "from" location must exist - use at() - basic_json v = result.at(from_ptr); - - // The move operation is functionally identical to a - // "remove" operation on the "from" location, followed - // immediately by an "add" operation at the target - // location with the value that was just removed. - operation_remove(from_ptr); - operation_add(ptr, v); - break; - } - - case patch_operations::copy: - { - const std::string from_path = get_value("copy", "from", true); - const json_pointer from_ptr(from_path); - - // the "from" location must exist - use at() - basic_json v = result.at(from_ptr); - - // The copy is functionally identical to an "add" - // operation at the target location using the value - // specified in the "from" member. - operation_add(ptr, v); - break; - } - - case patch_operations::test: - { - bool success = false; - JSON_TRY - { - // check if "value" matches the one at "path" - // the "path" location must exist - use at() - success = (result.at(ptr) == get_value("test", "value", false)); - } - JSON_CATCH (out_of_range&) - { - // ignore out of range errors: success remains false - } - - // throw an exception if test fails - if (JSON_UNLIKELY(not success)) - { - JSON_THROW(other_error::create(501, "unsuccessful: " + val.dump())); - } - - break; - } - - case patch_operations::invalid: - { - // op must be "add", "remove", "replace", "move", "copy", or - // "test" - JSON_THROW(parse_error::create(105, 0, "operation value '" + op + "' is invalid")); - } - } - } - - return result; - } - - /*! - @brief creates a diff as a JSON patch - - Creates a [JSON Patch](http://jsonpatch.com) so that value @a source can - be changed into the value @a target by calling @ref patch function. - - @invariant For two JSON values @a source and @a target, the following code - yields always `true`: - @code {.cpp} - source.patch(diff(source, target)) == target; - @endcode - - @note Currently, only `remove`, `add`, and `replace` operations are - generated. - - @param[in] source JSON value to compare from - @param[in] target JSON value to compare against - @param[in] path helper value to create JSON pointers - - @return a JSON patch to convert the @a source to @a target - - @complexity Linear in the lengths of @a source and @a target. - - @liveexample{The following code shows how a JSON patch is created as a - diff for two JSON values.,diff} - - @sa @ref patch -- apply a JSON patch - - @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) - - @since version 2.0.0 - */ - static basic_json diff(const basic_json& source, const basic_json& target, - const std::string& path = "") - { - // the patch - basic_json result(value_t::array); - - // if the values are the same, return empty patch - if (source == target) - { - return result; - } - - if (source.type() != target.type()) - { - // different types: replace value - result.push_back( - { - {"op", "replace"}, {"path", path}, {"value", target} - }); - } - else - { - switch (source.type()) - { - case value_t::array: - { - // first pass: traverse common elements - std::size_t i = 0; - while (i < source.size() and i < target.size()) - { - // recursive call to compare array values at index i - auto temp_diff = diff(source[i], target[i], path + "/" + std::to_string(i)); - result.insert(result.end(), temp_diff.begin(), temp_diff.end()); - ++i; - } - - // i now reached the end of at least one array - // in a second pass, traverse the remaining elements - - // remove my remaining elements - const auto end_index = static_cast(result.size()); - while (i < source.size()) - { - // add operations in reverse order to avoid invalid - // indices - result.insert(result.begin() + end_index, object( - { - {"op", "remove"}, - {"path", path + "/" + std::to_string(i)} - })); - ++i; - } - - // add other remaining elements - while (i < target.size()) - { - result.push_back( - { - {"op", "add"}, - {"path", path + "/" + std::to_string(i)}, - {"value", target[i]} - }); - ++i; - } - - break; - } - - case value_t::object: - { - // first pass: traverse this object's elements - for (auto it = source.cbegin(); it != source.cend(); ++it) - { - // escape the key name to be used in a JSON patch - const auto key = json_pointer::escape(it.key()); - - if (target.find(it.key()) != target.end()) - { - // recursive call to compare object values at key it - auto temp_diff = diff(it.value(), target[it.key()], path + "/" + key); - result.insert(result.end(), temp_diff.begin(), temp_diff.end()); - } - else - { - // found a key that is not in o -> remove it - result.push_back(object( - { - {"op", "remove"}, {"path", path + "/" + key} - })); - } - } - - // second pass: traverse other object's elements - for (auto it = target.cbegin(); it != target.cend(); ++it) - { - if (source.find(it.key()) == source.end()) - { - // found a key that is not in this -> add it - const auto key = json_pointer::escape(it.key()); - result.push_back( - { - {"op", "add"}, {"path", path + "/" + key}, - {"value", it.value()} - }); - } - } - - break; - } - - default: - { - // both primitive type: replace value - result.push_back( - { - {"op", "replace"}, {"path", path}, {"value", target} - }); - break; - } - } - } - - return result; - } - - /// @} -}; - -////////////////// -// json_pointer // -////////////////// - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_and_create(NLOHMANN_BASIC_JSON_TPL& j) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - auto result = &j; - - // in case no reference tokens exist, return a reference to the JSON value - // j which will be overwritten by a primitive value - for (const auto& reference_token : reference_tokens) - { - switch (result->m_type) - { - case detail::value_t::null: - { - if (reference_token == "0") - { - // start a new array if reference token is 0 - result = &result->operator[](0); - } - else - { - // start a new object otherwise - result = &result->operator[](reference_token); - } - break; - } - - case detail::value_t::object: - { - // create an entry in the object - result = &result->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - // create an entry in the array - JSON_TRY - { - result = &result->operator[](static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - /* - The following code is only reached if there exists a reference - token _and_ the current value is primitive. In this case, we have - an error situation, because primitive values may only occur as - single value; that is, with an empty list of reference tokens. - */ - default: - JSON_THROW(detail::type_error::create(313, "invalid value to unflatten")); - } - } - - return *result; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_unchecked(NLOHMANN_BASIC_JSON_TPL* ptr) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - for (const auto& reference_token : reference_tokens) - { - // convert null values to arrays or objects before continuing - if (ptr->m_type == detail::value_t::null) - { - // check if reference token is a number - const bool nums = - std::all_of(reference_token.begin(), reference_token.end(), - [](const char x) - { - return (x >= '0' and x <= '9'); - }); - - // change value to array for numbers or "-" or to object otherwise - *ptr = (nums or reference_token == "-") - ? detail::value_t::array - : detail::value_t::object; - } - - switch (ptr->m_type) - { - case detail::value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - if (reference_token == "-") - { - // explicitly treat "-" as index beyond the end - ptr = &ptr->operator[](ptr->m_value.array->size()); - } - else - { - // convert array index to number; unchecked access - JSON_TRY - { - ptr = &ptr->operator[]( - static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_checked(NLOHMANN_BASIC_JSON_TPL* ptr) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case detail::value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_UNLIKELY(reference_token == "-")) - { - // "-" always fails the range check - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range")); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - // note: at performs range check - JSON_TRY - { - ptr = &ptr->at(static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -const NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_unchecked(const NLOHMANN_BASIC_JSON_TPL* ptr) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case detail::value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_UNLIKELY(reference_token == "-")) - { - // "-" cannot be used for const access - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range")); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - // use unchecked array access - JSON_TRY - { - ptr = &ptr->operator[]( - static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -const NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_checked(const NLOHMANN_BASIC_JSON_TPL* ptr) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case detail::value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_UNLIKELY(reference_token == "-")) - { - // "-" always fails the range check - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range")); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - // note: at performs range check - JSON_TRY - { - ptr = &ptr->at(static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -void json_pointer::flatten(const std::string& reference_string, - const NLOHMANN_BASIC_JSON_TPL& value, - NLOHMANN_BASIC_JSON_TPL& result) -{ - switch (value.m_type) - { - case detail::value_t::array: - { - if (value.m_value.array->empty()) - { - // flatten empty array as null - result[reference_string] = nullptr; - } - else - { - // iterate array and use index as reference string - for (std::size_t i = 0; i < value.m_value.array->size(); ++i) - { - flatten(reference_string + "/" + std::to_string(i), - value.m_value.array->operator[](i), result); - } - } - break; - } - - case detail::value_t::object: - { - if (value.m_value.object->empty()) - { - // flatten empty object as null - result[reference_string] = nullptr; - } - else - { - // iterate object and use keys as reference string - for (const auto& element : *value.m_value.object) - { - flatten(reference_string + "/" + escape(element.first), element.second, result); - } - } - break; - } - - default: - { - // add primitive value with its reference string - result[reference_string] = value; - break; - } - } -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -NLOHMANN_BASIC_JSON_TPL -json_pointer::unflatten(const NLOHMANN_BASIC_JSON_TPL& value) -{ - if (JSON_UNLIKELY(not value.is_object())) - { - JSON_THROW(detail::type_error::create(314, "only objects can be unflattened")); - } - - NLOHMANN_BASIC_JSON_TPL result; - - // iterate the JSON object values - for (const auto& element : *value.m_value.object) - { - if (JSON_UNLIKELY(not element.second.is_primitive())) - { - JSON_THROW(detail::type_error::create(315, "values in object must be primitive")); - } - - // assign value to reference pointed to by JSON pointer; Note that if - // the JSON pointer is "" (i.e., points to the whole value), function - // get_and_create returns a reference to result itself. An assignment - // will then create a primitive value. - json_pointer(element.first).get_and_create(result) = element.second; - } - - return result; -} - -inline bool operator==(json_pointer const& lhs, json_pointer const& rhs) noexcept -{ - return (lhs.reference_tokens == rhs.reference_tokens); -} - -inline bool operator!=(json_pointer const& lhs, json_pointer const& rhs) noexcept -{ - return not (lhs == rhs); -} -} // namespace nlohmann - -/////////////////////// -// nonmember support // -/////////////////////// - -// specialization of std::swap, and std::hash -namespace std -{ -/*! -@brief exchanges the values of two JSON objects - -@since version 1.0.0 -*/ -template<> -inline void swap(nlohmann::json& j1, - nlohmann::json& j2) noexcept( - is_nothrow_move_constructible::value and - is_nothrow_move_assignable::value - ) -{ - j1.swap(j2); -} - -/// hash value for JSON objects -template<> -struct hash -{ - /*! - @brief return a hash value for a JSON object - - @since version 1.0.0 - */ - std::size_t operator()(const nlohmann::json& j) const - { - // a naive hashing via the string representation - const auto& h = hash(); - return h(j.dump()); - } -}; - -/// specialization for std::less -/// @note: do not remove the space after '<', -/// see https://github.com/nlohmann/json/pull/679 -template<> -struct less< ::nlohmann::detail::value_t> -{ - /*! - @brief compare two value_t enum values - @since version 3.0.0 - */ - bool operator()(nlohmann::detail::value_t lhs, - nlohmann::detail::value_t rhs) const noexcept - { - return nlohmann::detail::operator<(lhs, rhs); - } -}; - -} // namespace std - -/*! -@brief user-defined string literal for JSON values - -This operator implements a user-defined string literal for JSON objects. It -can be used by adding `"_json"` to a string literal and returns a JSON object -if no parse error occurred. - -@param[in] s a string representation of a JSON object -@param[in] n the length of string @a s -@return a JSON object - -@since version 1.0.0 -*/ -inline nlohmann::json operator "" _json(const char* s, std::size_t n) -{ - return nlohmann::json::parse(s, s + n); -} - -/*! -@brief user-defined string literal for JSON pointer - -This operator implements a user-defined string literal for JSON Pointers. It -can be used by adding `"_json_pointer"` to a string literal and returns a JSON pointer -object if no parse error occurred. - -@param[in] s a string representation of a JSON Pointer -@param[in] n the length of string @a s -@return a JSON pointer object - -@since version 2.0.0 -*/ -inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n) -{ - return nlohmann::json::json_pointer(std::string(s, n)); -} - - -/*** Start of inlined file: macro_unscope.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP -#define NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP - -// restore GCC/clang diagnostic settings -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #pragma GCC diagnostic pop -#endif -#if defined(__clang__) - #pragma GCC diagnostic pop -#endif - -// clean up -#undef JSON_CATCH -#undef JSON_THROW -#undef JSON_TRY -#undef JSON_LIKELY -#undef JSON_UNLIKELY -#undef JSON_DEPRECATED -#undef JSON_HAS_CPP_14 -#undef JSON_HAS_CPP_17 -#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION -#undef NLOHMANN_BASIC_JSON_TPL -#undef NLOHMANN_JSON_HAS_HELPER - -#endif - -/*** End of inlined file: macro_unscope.hpp ***/ - -#endif - diff --git a/src/json.hpp b/src/json.hpp index f4c139e4..00b10675 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -41,27 +41,11115 @@ SOFTWARE. #include // string, stoi, to_string #include // declval, forward, move, pair, swap -#include "json_fwd.hpp" -#include "detail/macro_scope.hpp" -#include "detail/meta.hpp" -#include "detail/exceptions.hpp" -#include "detail/value_t.hpp" -#include "detail/conversions/from_json.hpp" -#include "detail/conversions/to_json.hpp" -#include "detail/parsing/input_adapters.hpp" -#include "detail/parsing/lexer.hpp" -#include "detail/parsing/parser.hpp" -#include "detail/iterators/primitive_iterator.hpp" -#include "detail/iterators/internal_iterator.hpp" -#include "detail/iterators/iter_impl.hpp" -#include "detail/iterators/iteration_proxy.hpp" -#include "detail/iterators/json_reverse_iterator.hpp" -#include "detail/parsing/output_adapters.hpp" -#include "detail/parsing/binary_reader.hpp" -#include "detail/parsing/binary_writer.hpp" -#include "detail/serializer.hpp" -#include "detail/json_ref.hpp" -#include "adl_serializer.hpp" + +/*** Start of inlined file: json_fwd.hpp ***/ +#ifndef NLOHMANN_JSON_FWD_HPP +#define NLOHMANN_JSON_FWD_HPP + +#include // int64_t, uint64_t +#include // map +#include // allocator +#include // string +#include // vector + +/*! +@brief namespace for Niels Lohmann +@see https://github.com/nlohmann +@since version 1.0.0 +*/ +namespace nlohmann +{ +/*! +@brief default JSONSerializer template argument + +This serializer ignores the template arguments and uses ADL +([argument-dependent lookup](http://en.cppreference.com/w/cpp/language/adl)) +for serialization. +*/ +template +struct adl_serializer; + +template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer> +class basic_json; + +/*! +@brief JSON Pointer + +A JSON pointer defines a string syntax for identifying a specific value +within a JSON document. It can be used with functions `at` and +`operator[]`. Furthermore, JSON pointers are the base for JSON patches. + +@sa [RFC 6901](https://tools.ietf.org/html/rfc6901) + +@since version 2.0.0 +*/ +class json_pointer; + +/*! +@brief default JSON class + +This type is the default specialization of the @ref basic_json class which +uses the standard template types. + +@since version 1.0.0 +*/ +using json = basic_json<>; +} + +#endif + +/*** End of inlined file: json_fwd.hpp ***/ + + +/*** Start of inlined file: macro_scope.hpp ***/ +#ifndef NLOHMANN_JSON_MACRO_SCOPE_HPP +#define NLOHMANN_JSON_MACRO_SCOPE_HPP + +#include // not + +// This file contains all internal macro definitions +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// exclude unsupported compilers +#if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif +#elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40900 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif +#endif + +// disable float-equal warnings on GCC/clang +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wfloat-equal" +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdocumentation" +#endif + +// allow for portable deprecation warnings +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define JSON_DEPRECATED __attribute__((deprecated)) +#elif defined(_MSC_VER) + #define JSON_DEPRECATED __declspec(deprecated) +#else + #define JSON_DEPRECATED +#endif + +// allow to disable exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) +#else + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) +#endif + +// manual branch prediction +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define JSON_LIKELY(x) __builtin_expect(!!(x), 1) + #define JSON_UNLIKELY(x) __builtin_expect(!!(x), 0) +#else + #define JSON_LIKELY(x) x + #define JSON_UNLIKELY(x) x +#endif + +// C++ language standard detection +#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 +#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 +#endif + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +/*! +@brief Helper to determine whether there's a key_type for T. + +This helper is used to tell associative containers apart from other containers +such as sequence containers. For instance, `std::map` passes the test as it +contains a `mapped_type`, whereas `std::vector` fails the test. + +@sa http://stackoverflow.com/a/7728728/266378 +@since version 1.0.0, overworked in version 2.0.6 +*/ +#define NLOHMANN_JSON_HAS_HELPER(type) \ + template struct has_##type { \ + private: \ + template \ + static int detect(U &&); \ + static void detect(...); \ + public: \ + static constexpr bool value = \ + std::is_integral()))>::value; \ + } + +#endif + +/*** End of inlined file: macro_scope.hpp ***/ + + +/*** Start of inlined file: meta.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_META_HPP +#define NLOHMANN_JSON_DETAIL_META_HPP + +#include // not +#include // size_t +#include // numeric_limits +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // declval + + +/*** Start of inlined file: json_fwd.hpp ***/ +#ifndef NLOHMANN_JSON_FWD_HPP +#define NLOHMANN_JSON_FWD_HPP + +#include // int64_t, uint64_t +#include // map +#include // allocator +#include // string +#include // vector + +/*! +@brief namespace for Niels Lohmann +@see https://github.com/nlohmann +@since version 1.0.0 +*/ +namespace nlohmann +{ +/*! +@brief default JSONSerializer template argument + +This serializer ignores the template arguments and uses ADL +([argument-dependent lookup](http://en.cppreference.com/w/cpp/language/adl)) +for serialization. +*/ +template +struct adl_serializer; + +template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer> +class basic_json; + +/*! +@brief JSON Pointer + +A JSON pointer defines a string syntax for identifying a specific value +within a JSON document. It can be used with functions `at` and +`operator[]`. Furthermore, JSON pointers are the base for JSON patches. + +@sa [RFC 6901](https://tools.ietf.org/html/rfc6901) + +@since version 2.0.0 +*/ +class json_pointer; + +/*! +@brief default JSON class + +This type is the default specialization of the @ref basic_json class which +uses the standard template types. + +@since version 1.0.0 +*/ +using json = basic_json<>; +} + +#endif + +/*** End of inlined file: json_fwd.hpp ***/ + + +/*** Start of inlined file: macro_scope.hpp ***/ +#ifndef NLOHMANN_JSON_MACRO_SCOPE_HPP +#define NLOHMANN_JSON_MACRO_SCOPE_HPP + +#include // not + +// This file contains all internal macro definitions +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// exclude unsupported compilers +#if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif +#elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40900 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif +#endif + +// disable float-equal warnings on GCC/clang +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wfloat-equal" +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdocumentation" +#endif + +// allow for portable deprecation warnings +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define JSON_DEPRECATED __attribute__((deprecated)) +#elif defined(_MSC_VER) + #define JSON_DEPRECATED __declspec(deprecated) +#else + #define JSON_DEPRECATED +#endif + +// allow to disable exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) +#else + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) +#endif + +// manual branch prediction +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #define JSON_LIKELY(x) __builtin_expect(!!(x), 1) + #define JSON_UNLIKELY(x) __builtin_expect(!!(x), 0) +#else + #define JSON_LIKELY(x) x + #define JSON_UNLIKELY(x) x +#endif + +// C++ language standard detection +#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 +#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 +#endif + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +/*! +@brief Helper to determine whether there's a key_type for T. + +This helper is used to tell associative containers apart from other containers +such as sequence containers. For instance, `std::map` passes the test as it +contains a `mapped_type`, whereas `std::vector` fails the test. + +@sa http://stackoverflow.com/a/7728728/266378 +@since version 1.0.0, overworked in version 2.0.6 +*/ +#define NLOHMANN_JSON_HAS_HELPER(type) \ + template struct has_##type { \ + private: \ + template \ + static int detect(U &&); \ + static void detect(...); \ + public: \ + static constexpr bool value = \ + std::is_integral()))>::value; \ + } + +#endif + +/*** End of inlined file: macro_scope.hpp ***/ + +namespace nlohmann +{ +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ +///////////// +// helpers // +///////////// + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +template +using uncvref_t = typename std::remove_cv::type>::type; + +// implementation of C++14 index_sequence and affiliates +// source: https://stackoverflow.com/a/32223343 +template +struct index_sequence +{ + using type = index_sequence; + using value_type = std::size_t; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +template +struct merge_and_renumber; + +template +struct merge_and_renumber, index_sequence> + : index_sequence < I1..., (sizeof...(I1) + I2)... > {}; + +template +struct make_index_sequence + : merge_and_renumber < typename make_index_sequence < N / 2 >::type, + typename make_index_sequence < N - N / 2 >::type > {}; + +template<> struct make_index_sequence<0> : index_sequence<> {}; +template<> struct make_index_sequence<1> : index_sequence<0> {}; + +template +using index_sequence_for = make_index_sequence; + +/* +Implementation of two C++17 constructs: conjunction, negation. This is needed +to avoid evaluating all the traits in a condition + +For example: not std::is_same::value and has_value_type::value +will not compile when T = void (on MSVC at least). Whereas +conjunction>, has_value_type>::value will +stop evaluating if negation<...>::value == false + +Please note that those constructs must be used with caution, since symbols can +become very long quickly (which can slow down compilation and cause MSVC +internal compiler errors). Only use it when you have to (see example ahead). +*/ +template struct conjunction : std::true_type {}; +template struct conjunction : B1 {}; +template +struct conjunction : std::conditional, B1>::type {}; + +template struct negation : std::integral_constant {}; + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +//////////////////////// +// has_/is_ functions // +//////////////////////// + +NLOHMANN_JSON_HAS_HELPER(mapped_type); +NLOHMANN_JSON_HAS_HELPER(key_type); +NLOHMANN_JSON_HAS_HELPER(value_type); +NLOHMANN_JSON_HAS_HELPER(iterator); + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl +{ + static constexpr auto value = + std::is_constructible::value and + std::is_constructible::value; +}; + +template +struct is_compatible_object_type +{ + static auto constexpr value = is_compatible_object_type_impl < + conjunction>, + has_mapped_type, + has_key_type>::value, + typename BasicJsonType::object_t, CompatibleObjectType >::value; +}; + +template +struct is_basic_json_nested_type +{ + static auto constexpr value = std::is_same::value or + std::is_same::value or + std::is_same::value or + std::is_same::value; +}; + +template +struct is_compatible_array_type +{ + static auto constexpr value = + conjunction>, + negation>, + negation>, + negation>, + has_value_type, + has_iterator>::value; +}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + std::is_constructible::value and + CompatibleLimits::is_integer and + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type +{ + static constexpr auto value = + is_compatible_integer_type_impl < + std::is_integral::value and + not std::is_same::value, + RealIntegerType, CompatibleNumberIntegerType > ::value; +}; + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json +{ + private: + // also check the return type of from_json + template::from_json( + std::declval(), std::declval()))>::value>> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json +{ + private: + template < + typename U, + typename = enable_if_t::from_json(std::declval()))>::value >> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +template +struct has_to_json +{ + private: + template::to_json( + std::declval(), std::declval()))> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// taken from ranges-v3 +template +struct static_const +{ + static constexpr T value{}; +}; + +template +constexpr T static_const::value; +} +} + +#endif + +/*** End of inlined file: meta.hpp ***/ + + +/*** Start of inlined file: exceptions.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP +#define NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP + +#include // exception +#include // runtime_error +#include // to_string + +namespace nlohmann +{ +namespace detail +{ +//////////////// +// exceptions // +//////////////// + +/*! +@brief general exception of the @ref basic_json class + +This class is an extension of `std::exception` objects with a member @a id for +exception ids. It is used as the base class for all exceptions thrown by the +@ref basic_json class. This class can hence be used as "wildcard" to catch +exceptions. + +Subclasses: +- @ref parse_error for exceptions indicating a parse error +- @ref invalid_iterator for exceptions indicating errors with iterators +- @ref type_error for exceptions indicating executing a member function with + a wrong type +- @ref out_of_range for exceptions indicating access out of the defined range +- @ref other_error for exceptions indicating other library errors + +@internal +@note To have nothrow-copy-constructible exceptions, we internally use + `std::runtime_error` which can cope with arbitrary-length error messages. + Intermediate strings are built with static functions and then passed to + the actual constructor. +@endinternal + +@liveexample{The following code shows how arbitrary library exceptions can be +caught.,exception} + +@since version 3.0.0 +*/ +class exception : public std::exception +{ + public: + /// returns the explanatory string + const char* what() const noexcept override + { + return m.what(); + } + + /// the id of the exception + const int id; + + protected: + exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} + + static std::string name(const std::string& ename, int id_) + { + return "[json.exception." + ename + "." + std::to_string(id_) + "] "; + } + + private: + /// an exception object as storage for error messages + std::runtime_error m; +}; + +/*! +@brief exception indicating a parse error + +This exception is thrown by the library when a parse error occurs. Parse errors +can occur during the deserialization of JSON text, CBOR, MessagePack, as well +as when using JSON Patch. + +Member @a byte holds the byte index of the last read character in the input +file. + +Exceptions have ids 1xx. + +name / id | example message | description +------------------------------ | --------------- | ------------------------- +json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position. +json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point. +json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. +json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects. +json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors. +json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`. +json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character. +json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. +json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number. +json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. +json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. +json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. + +@note For an input with n bytes, 1 is the index of the first character and n+1 + is the index of the terminating null byte or the end of file. This also + holds true when reading a byte vector (CBOR or MessagePack). + +@liveexample{The following code shows how a `parse_error` exception can be +caught.,parse_error} + +@sa @ref exception for the base class of the library exceptions +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class parse_error : public exception +{ + public: + /*! + @brief create a parse error exception + @param[in] id_ the id of the exception + @param[in] byte_ the byte index where the error occurred (or 0 if the + position cannot be determined) + @param[in] what_arg the explanatory string + @return parse_error object + */ + static parse_error create(int id_, std::size_t byte_, const std::string& what_arg) + { + std::string w = exception::name("parse_error", id_) + "parse error" + + (byte_ != 0 ? (" at " + std::to_string(byte_)) : "") + + ": " + what_arg; + return parse_error(id_, byte_, w.c_str()); + } + + /*! + @brief byte index of the parse error + + The byte index of the last read character in the input file. + + @note For an input with n bytes, 1 is the index of the first character and + n+1 is the index of the terminating null byte or the end of file. + This also holds true when reading a byte vector (CBOR or MessagePack). + */ + const std::size_t byte; + + private: + parse_error(int id_, std::size_t byte_, const char* what_arg) + : exception(id_, what_arg), byte(byte_) {} +}; + +/*! +@brief exception indicating errors with iterators + +This exception is thrown if iterators passed to a library function do not match +the expected semantics. + +Exceptions have ids 2xx. + +name / id | example message | description +----------------------------------- | --------------- | ------------------------- +json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. +json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion. +json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from. +json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid. +json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid. +json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range. +json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key. +json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. +json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. +json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. +json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to. +json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container. +json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered. +json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin(). + +@liveexample{The following code shows how an `invalid_iterator` exception can be +caught.,invalid_iterator} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class invalid_iterator : public exception +{ + public: + static invalid_iterator create(int id_, const std::string& what_arg) + { + std::string w = exception::name("invalid_iterator", id_) + what_arg; + return invalid_iterator(id_, w.c_str()); + } + + private: + invalid_iterator(int id_, const char* what_arg) + : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating executing a member function with a wrong type + +This exception is thrown in case of a type error; that is, a library function is +executed on a JSON value whose type does not match the expected semantics. + +Exceptions have ids 3xx. + +name / id | example message | description +----------------------------- | --------------- | ------------------------- +json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead. +json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types. +json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t&. +json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types. +json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types. +json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types. +json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types. +json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types. +json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types. +json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types. +json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types. +json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types. +json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined. +json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers. +json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive. +json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. | + +@liveexample{The following code shows how a `type_error` exception can be +caught.,type_error} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class type_error : public exception +{ + public: + static type_error create(int id_, const std::string& what_arg) + { + std::string w = exception::name("type_error", id_) + what_arg; + return type_error(id_, w.c_str()); + } + + private: + type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating access out of the defined range + +This exception is thrown in case a library function is called on an input +parameter that exceeds the expected range, for instance in case of array +indices or nonexisting object keys. + +Exceptions have ids 4xx. + +name / id | example message | description +------------------------------- | --------------- | ------------------------- +json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1. +json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it. +json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object. +json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. +json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. +json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. + +@liveexample{The following code shows how an `out_of_range` exception can be +caught.,out_of_range} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class out_of_range : public exception +{ + public: + static out_of_range create(int id_, const std::string& what_arg) + { + std::string w = exception::name("out_of_range", id_) + what_arg; + return out_of_range(id_, w.c_str()); + } + + private: + out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating other library errors + +This exception is thrown in case of errors that cannot be classified with the +other exception types. + +Exceptions have ids 5xx. + +name / id | example message | description +------------------------------ | --------------- | ------------------------- +json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed. + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range + +@liveexample{The following code shows how an `other_error` exception can be +caught.,other_error} + +@since version 3.0.0 +*/ +class other_error : public exception +{ + public: + static other_error create(int id_, const std::string& what_arg) + { + std::string w = exception::name("other_error", id_) + what_arg; + return other_error(id_, w.c_str()); + } + + private: + other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; +} +} + +#endif + +/*** End of inlined file: exceptions.hpp ***/ + + +/*** Start of inlined file: value_t.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_VALUE_T_HPP +#define NLOHMANN_JSON_DETAIL_VALUE_T_HPP + +#include // array +#include // and +#include // size_t +#include // uint8_t + +namespace nlohmann +{ +namespace detail +{ +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : std::uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + discarded ///< discarded by the the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string +- furthermore, each type is not smaller than itself +- discarded values are not comparable + +@since version 1.0.0 +*/ +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + static constexpr std::array order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); + return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index]; +} +} +} + +#endif + +/*** End of inlined file: value_t.hpp ***/ + + +/*** Start of inlined file: from_json.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP +#define NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP + +#include // transform +#include // array +#include // and, not +#include // forward_list +#include // inserter, front_inserter, end +#include // string +#include // tuple, make_tuple +#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include // pair, declval +#include // valarray + + +/*** Start of inlined file: exceptions.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP +#define NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP + +#include // exception +#include // runtime_error +#include // to_string + +namespace nlohmann +{ +namespace detail +{ +//////////////// +// exceptions // +//////////////// + +/*! +@brief general exception of the @ref basic_json class + +This class is an extension of `std::exception` objects with a member @a id for +exception ids. It is used as the base class for all exceptions thrown by the +@ref basic_json class. This class can hence be used as "wildcard" to catch +exceptions. + +Subclasses: +- @ref parse_error for exceptions indicating a parse error +- @ref invalid_iterator for exceptions indicating errors with iterators +- @ref type_error for exceptions indicating executing a member function with + a wrong type +- @ref out_of_range for exceptions indicating access out of the defined range +- @ref other_error for exceptions indicating other library errors + +@internal +@note To have nothrow-copy-constructible exceptions, we internally use + `std::runtime_error` which can cope with arbitrary-length error messages. + Intermediate strings are built with static functions and then passed to + the actual constructor. +@endinternal + +@liveexample{The following code shows how arbitrary library exceptions can be +caught.,exception} + +@since version 3.0.0 +*/ +class exception : public std::exception +{ + public: + /// returns the explanatory string + const char* what() const noexcept override + { + return m.what(); + } + + /// the id of the exception + const int id; + + protected: + exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} + + static std::string name(const std::string& ename, int id_) + { + return "[json.exception." + ename + "." + std::to_string(id_) + "] "; + } + + private: + /// an exception object as storage for error messages + std::runtime_error m; +}; + +/*! +@brief exception indicating a parse error + +This exception is thrown by the library when a parse error occurs. Parse errors +can occur during the deserialization of JSON text, CBOR, MessagePack, as well +as when using JSON Patch. + +Member @a byte holds the byte index of the last read character in the input +file. + +Exceptions have ids 1xx. + +name / id | example message | description +------------------------------ | --------------- | ------------------------- +json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position. +json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point. +json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. +json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects. +json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors. +json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`. +json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character. +json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. +json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number. +json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. +json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. +json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. + +@note For an input with n bytes, 1 is the index of the first character and n+1 + is the index of the terminating null byte or the end of file. This also + holds true when reading a byte vector (CBOR or MessagePack). + +@liveexample{The following code shows how a `parse_error` exception can be +caught.,parse_error} + +@sa @ref exception for the base class of the library exceptions +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class parse_error : public exception +{ + public: + /*! + @brief create a parse error exception + @param[in] id_ the id of the exception + @param[in] byte_ the byte index where the error occurred (or 0 if the + position cannot be determined) + @param[in] what_arg the explanatory string + @return parse_error object + */ + static parse_error create(int id_, std::size_t byte_, const std::string& what_arg) + { + std::string w = exception::name("parse_error", id_) + "parse error" + + (byte_ != 0 ? (" at " + std::to_string(byte_)) : "") + + ": " + what_arg; + return parse_error(id_, byte_, w.c_str()); + } + + /*! + @brief byte index of the parse error + + The byte index of the last read character in the input file. + + @note For an input with n bytes, 1 is the index of the first character and + n+1 is the index of the terminating null byte or the end of file. + This also holds true when reading a byte vector (CBOR or MessagePack). + */ + const std::size_t byte; + + private: + parse_error(int id_, std::size_t byte_, const char* what_arg) + : exception(id_, what_arg), byte(byte_) {} +}; + +/*! +@brief exception indicating errors with iterators + +This exception is thrown if iterators passed to a library function do not match +the expected semantics. + +Exceptions have ids 2xx. + +name / id | example message | description +----------------------------------- | --------------- | ------------------------- +json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. +json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion. +json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from. +json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid. +json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid. +json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range. +json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key. +json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. +json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. +json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. +json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to. +json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container. +json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered. +json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin(). + +@liveexample{The following code shows how an `invalid_iterator` exception can be +caught.,invalid_iterator} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class invalid_iterator : public exception +{ + public: + static invalid_iterator create(int id_, const std::string& what_arg) + { + std::string w = exception::name("invalid_iterator", id_) + what_arg; + return invalid_iterator(id_, w.c_str()); + } + + private: + invalid_iterator(int id_, const char* what_arg) + : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating executing a member function with a wrong type + +This exception is thrown in case of a type error; that is, a library function is +executed on a JSON value whose type does not match the expected semantics. + +Exceptions have ids 3xx. + +name / id | example message | description +----------------------------- | --------------- | ------------------------- +json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead. +json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types. +json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t&. +json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types. +json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types. +json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types. +json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types. +json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types. +json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types. +json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types. +json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types. +json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types. +json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined. +json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers. +json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive. +json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. | + +@liveexample{The following code shows how a `type_error` exception can be +caught.,type_error} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref out_of_range for exceptions indicating access out of the defined range +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class type_error : public exception +{ + public: + static type_error create(int id_, const std::string& what_arg) + { + std::string w = exception::name("type_error", id_) + what_arg; + return type_error(id_, w.c_str()); + } + + private: + type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating access out of the defined range + +This exception is thrown in case a library function is called on an input +parameter that exceeds the expected range, for instance in case of array +indices or nonexisting object keys. + +Exceptions have ids 4xx. + +name / id | example message | description +------------------------------- | --------------- | ------------------------- +json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1. +json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it. +json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object. +json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. +json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. +json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. + +@liveexample{The following code shows how an `out_of_range` exception can be +caught.,out_of_range} + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref other_error for exceptions indicating other library errors + +@since version 3.0.0 +*/ +class out_of_range : public exception +{ + public: + static out_of_range create(int id_, const std::string& what_arg) + { + std::string w = exception::name("out_of_range", id_) + what_arg; + return out_of_range(id_, w.c_str()); + } + + private: + out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/*! +@brief exception indicating other library errors + +This exception is thrown in case of errors that cannot be classified with the +other exception types. + +Exceptions have ids 5xx. + +name / id | example message | description +------------------------------ | --------------- | ------------------------- +json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed. + +@sa @ref exception for the base class of the library exceptions +@sa @ref parse_error for exceptions indicating a parse error +@sa @ref invalid_iterator for exceptions indicating errors with iterators +@sa @ref type_error for exceptions indicating executing a member function with + a wrong type +@sa @ref out_of_range for exceptions indicating access out of the defined range + +@liveexample{The following code shows how an `other_error` exception can be +caught.,other_error} + +@since version 3.0.0 +*/ +class other_error : public exception +{ + public: + static other_error create(int id_, const std::string& what_arg) + { + std::string w = exception::name("other_error", id_) + what_arg; + return other_error(id_, w.c_str()); + } + + private: + other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; +} +} + +#endif + +/*** End of inlined file: exceptions.hpp ***/ + + +/*** Start of inlined file: meta.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_META_HPP +#define NLOHMANN_JSON_DETAIL_META_HPP + +#include // not +#include // size_t +#include // numeric_limits +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // declval + +namespace nlohmann +{ +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ +///////////// +// helpers // +///////////// + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +template +using uncvref_t = typename std::remove_cv::type>::type; + +// implementation of C++14 index_sequence and affiliates +// source: https://stackoverflow.com/a/32223343 +template +struct index_sequence +{ + using type = index_sequence; + using value_type = std::size_t; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +template +struct merge_and_renumber; + +template +struct merge_and_renumber, index_sequence> + : index_sequence < I1..., (sizeof...(I1) + I2)... > {}; + +template +struct make_index_sequence + : merge_and_renumber < typename make_index_sequence < N / 2 >::type, + typename make_index_sequence < N - N / 2 >::type > {}; + +template<> struct make_index_sequence<0> : index_sequence<> {}; +template<> struct make_index_sequence<1> : index_sequence<0> {}; + +template +using index_sequence_for = make_index_sequence; + +/* +Implementation of two C++17 constructs: conjunction, negation. This is needed +to avoid evaluating all the traits in a condition + +For example: not std::is_same::value and has_value_type::value +will not compile when T = void (on MSVC at least). Whereas +conjunction>, has_value_type>::value will +stop evaluating if negation<...>::value == false + +Please note that those constructs must be used with caution, since symbols can +become very long quickly (which can slow down compilation and cause MSVC +internal compiler errors). Only use it when you have to (see example ahead). +*/ +template struct conjunction : std::true_type {}; +template struct conjunction : B1 {}; +template +struct conjunction : std::conditional, B1>::type {}; + +template struct negation : std::integral_constant {}; + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +//////////////////////// +// has_/is_ functions // +//////////////////////// + +NLOHMANN_JSON_HAS_HELPER(mapped_type); +NLOHMANN_JSON_HAS_HELPER(key_type); +NLOHMANN_JSON_HAS_HELPER(value_type); +NLOHMANN_JSON_HAS_HELPER(iterator); + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl +{ + static constexpr auto value = + std::is_constructible::value and + std::is_constructible::value; +}; + +template +struct is_compatible_object_type +{ + static auto constexpr value = is_compatible_object_type_impl < + conjunction>, + has_mapped_type, + has_key_type>::value, + typename BasicJsonType::object_t, CompatibleObjectType >::value; +}; + +template +struct is_basic_json_nested_type +{ + static auto constexpr value = std::is_same::value or + std::is_same::value or + std::is_same::value or + std::is_same::value; +}; + +template +struct is_compatible_array_type +{ + static auto constexpr value = + conjunction>, + negation>, + negation>, + negation>, + has_value_type, + has_iterator>::value; +}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + std::is_constructible::value and + CompatibleLimits::is_integer and + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type +{ + static constexpr auto value = + is_compatible_integer_type_impl < + std::is_integral::value and + not std::is_same::value, + RealIntegerType, CompatibleNumberIntegerType > ::value; +}; + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json +{ + private: + // also check the return type of from_json + template::from_json( + std::declval(), std::declval()))>::value>> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json +{ + private: + template < + typename U, + typename = enable_if_t::from_json(std::declval()))>::value >> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +template +struct has_to_json +{ + private: + template::to_json( + std::declval(), std::declval()))> + static int detect(U&&); + static void detect(...); + + public: + static constexpr bool value = std::is_integral>()))>::value; +}; + +// taken from ranges-v3 +template +struct static_const +{ + static constexpr T value{}; +}; + +template +constexpr T static_const::value; +} +} + +#endif + +/*** End of inlined file: meta.hpp ***/ + + +/*** Start of inlined file: value_t.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_VALUE_T_HPP +#define NLOHMANN_JSON_DETAIL_VALUE_T_HPP + +#include // array +#include // and +#include // size_t +#include // uint8_t + +namespace nlohmann +{ +namespace detail +{ +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : std::uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + discarded ///< discarded by the the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string +- furthermore, each type is not smaller than itself +- discarded values are not comparable + +@since version 1.0.0 +*/ +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + static constexpr std::array order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); + return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index]; +} +} +} + +#endif + +/*** End of inlined file: value_t.hpp ***/ + +namespace nlohmann +{ +namespace detail +{ +// overloads for basic_json template parameters +template::value and + not std::is_same::value, + int> = 0> +void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) +{ + switch (static_cast(j)) + { + case value_t::number_unsigned: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_integer: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_float: + { + val = static_cast(*j.template get_ptr()); + break; + } + + default: + JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); + } +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) +{ + if (JSON_UNLIKELY(not j.is_boolean())) + { + JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name()))); + } + b = *j.template get_ptr(); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) +{ + if (JSON_UNLIKELY(not j.is_string())) + { + JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()))); + } + s = *j.template get_ptr(); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) +{ + get_arithmetic_value(j, val); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) +{ + get_arithmetic_value(j, val); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) +{ + get_arithmetic_value(j, val); +} + +template::value, int> = 0> +void from_json(const BasicJsonType& j, EnumType& e) +{ + typename std::underlying_type::type val; + get_arithmetic_value(j, val); + e = static_cast(val); +} + +template +void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + arr = *j.template get_ptr(); +} + +// forward_list doesn't have an insert method +template::value, int> = 0> +void from_json(const BasicJsonType& j, std::forward_list& l) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + std::transform(j.rbegin(), j.rend(), + std::front_inserter(l), [](const BasicJsonType & i) + { + return i.template get(); + }); +} + +// valarray doesn't have an insert method +template::value, int> = 0> +void from_json(const BasicJsonType& j, std::valarray& l) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + l.resize(j.size()); + std::copy(j.m_value.array->begin(), j.m_value.array->end(), std::begin(l)); +} + +template +void from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<0> /*unused*/) +{ + using std::end; + + std::transform(j.begin(), j.end(), + std::inserter(arr, end(arr)), [](const BasicJsonType & i) + { + // get() returns *this, this won't call a from_json + // method when value_type is BasicJsonType + return i.template get(); + }); +} + +template +auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<1> /*unused*/) +-> decltype( + arr.reserve(std::declval()), + void()) +{ + using std::end; + + arr.reserve(j.size()); + std::transform(j.begin(), j.end(), + std::inserter(arr, end(arr)), [](const BasicJsonType & i) + { + // get() returns *this, this won't call a from_json + // method when value_type is BasicJsonType + return i.template get(); + }); +} + +template +void from_json_array_impl(const BasicJsonType& j, std::array& arr, priority_tag<2> /*unused*/) +{ + for (std::size_t i = 0; i < N; ++i) + { + arr[i] = j.at(i).template get(); + } +} + +template::value and + std::is_convertible::value and + not std::is_same::value, int> = 0> +void from_json(const BasicJsonType& j, CompatibleArrayType& arr) +{ + if (JSON_UNLIKELY(not j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); + } + + from_json_array_impl(j, arr, priority_tag<2> {}); +} + +template::value, int> = 0> +void from_json(const BasicJsonType& j, CompatibleObjectType& obj) +{ + if (JSON_UNLIKELY(not j.is_object())) + { + JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name()))); + } + + auto inner_object = j.template get_ptr(); + using value_type = typename CompatibleObjectType::value_type; + std::transform( + inner_object->begin(), inner_object->end(), + std::inserter(obj, obj.begin()), + [](typename BasicJsonType::object_t::value_type const & p) + { + return value_type(p.first, p.second.template get()); + }); +} + +// overload for arithmetic types, not chosen for basic_json template arguments +// (BooleanType, etc..); note: Is it really necessary to provide explicit +// overloads for boolean_t etc. in case of a custom BooleanType which is not +// an arithmetic type? +template::value and + not std::is_same::value and + not std::is_same::value and + not std::is_same::value and + not std::is_same::value, + int> = 0> +void from_json(const BasicJsonType& j, ArithmeticType& val) +{ + switch (static_cast(j)) + { + case value_t::number_unsigned: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_integer: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_float: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::boolean: + { + val = static_cast(*j.template get_ptr()); + break; + } + + default: + JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); + } +} + +template +void from_json(const BasicJsonType& j, std::pair& p) +{ + p = {j.at(0).template get(), j.at(1).template get()}; +} + +template +void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_sequence) +{ + t = std::make_tuple(j.at(Idx).template get::type>()...); +} + +template +void from_json(const BasicJsonType& j, std::tuple& t) +{ + from_json_tuple_impl(j, t, index_sequence_for {}); +} + +struct from_json_fn +{ + private: + template + auto call(const BasicJsonType& j, T& val, priority_tag<1> /*unused*/) const + noexcept(noexcept(from_json(j, val))) + -> decltype(from_json(j, val), void()) + { + return from_json(j, val); + } + + template + void call(const BasicJsonType& /*unused*/, T& /*unused*/, priority_tag<0> /*unused*/) const noexcept + { + static_assert(sizeof(BasicJsonType) == 0, + "could not find from_json() method in T's namespace"); +#ifdef _MSC_VER + // MSVC does not show a stacktrace for the above assert + using decayed = uncvref_t; + static_assert(sizeof(typename decayed::force_msvc_stacktrace) == 0, + "forcing MSVC stacktrace to show which T we're talking about."); +#endif + } + + public: + template + void operator()(const BasicJsonType& j, T& val) const + noexcept(noexcept(std::declval().call(j, val, priority_tag<1> {}))) + { + return call(j, val, priority_tag<1> {}); + } +}; +} + +/// namespace to hold default `from_json` function +/// to see why this is required: +/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html +namespace +{ +constexpr const auto& from_json = detail::static_const::value; +} +} + +#endif + +/*** End of inlined file: from_json.hpp ***/ + + +/*** Start of inlined file: to_json.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP +#define NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP + +#include // or, and, not +#include // begin, end +#include // tuple, get +#include // is_same, is_constructible, is_floating_point, is_enum, underlying_type +#include // move, forward, declval, pair +#include // valarray +#include // vector + +namespace nlohmann +{ +namespace detail +{ +////////////////// +// constructors // +////////////////// + +template struct external_constructor; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept + { + j.m_type = value_t::boolean; + j.m_value = b; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) + { + j.m_type = value_t::string; + j.m_value = s; + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s) + { + j.m_type = value_t::string; + j.m_value = std::move(s); + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept + { + j.m_type = value_t::number_float; + j.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept + { + j.m_type = value_t::number_unsigned; + j.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept + { + j.m_type = value_t::number_integer; + j.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) + { + j.m_type = value_t::array; + j.m_value = arr; + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr) + { + j.m_type = value_t::array; + j.m_value = std::move(arr); + j.assert_invariant(); + } + + template::value, + int> = 0> + static void construct(BasicJsonType& j, const CompatibleArrayType& arr) + { + using std::begin; + using std::end; + j.m_type = value_t::array; + j.m_value.array = j.template create(begin(arr), end(arr)); + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, const std::vector& arr) + { + j.m_type = value_t::array; + j.m_value = value_t::array; + j.m_value.array->reserve(arr.size()); + for (const bool x : arr) + { + j.m_value.array->push_back(x); + } + j.assert_invariant(); + } + + template::value, int> = 0> + static void construct(BasicJsonType& j, const std::valarray& arr) + { + j.m_type = value_t::array; + j.m_value = value_t::array; + j.m_value.array->resize(arr.size()); + std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin()); + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) + { + j.m_type = value_t::object; + j.m_value = obj; + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj) + { + j.m_type = value_t::object; + j.m_value = std::move(obj); + j.assert_invariant(); + } + + template::value, int> = 0> + static void construct(BasicJsonType& j, const CompatibleObjectType& obj) + { + using std::begin; + using std::end; + + j.m_type = value_t::object; + j.m_value.object = j.template create(begin(obj), end(obj)); + j.assert_invariant(); + } +}; + +///////////// +// to_json // +///////////// + +template::value, int> = 0> +void to_json(BasicJsonType& j, T b) noexcept +{ + external_constructor::construct(j, b); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, const CompatibleString& s) +{ + external_constructor::construct(j, s); +} + +template +void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s) +{ + external_constructor::construct(j, std::move(s)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, FloatType val) noexcept +{ + external_constructor::construct(j, static_cast(val)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept +{ + external_constructor::construct(j, static_cast(val)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept +{ + external_constructor::construct(j, static_cast(val)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, EnumType e) noexcept +{ + using underlying_type = typename std::underlying_type::type; + external_constructor::construct(j, static_cast(e)); +} + +template +void to_json(BasicJsonType& j, const std::vector& e) +{ + external_constructor::construct(j, e); +} + +template::value or + std::is_same::value, + int> = 0> +void to_json(BasicJsonType& j, const CompatibleArrayType& arr) +{ + external_constructor::construct(j, arr); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, std::valarray arr) +{ + external_constructor::construct(j, std::move(arr)); +} + +template +void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr) +{ + external_constructor::construct(j, std::move(arr)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, const CompatibleObjectType& obj) +{ + external_constructor::construct(j, obj); +} + +template +void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj) +{ + external_constructor::construct(j, std::move(obj)); +} + +template::value, int> = 0> +void to_json(BasicJsonType& j, T (&arr)[N]) +{ + external_constructor::construct(j, arr); +} + +template +void to_json(BasicJsonType& j, const std::pair& p) +{ + j = {p.first, p.second}; +} + +template +void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence) +{ + j = {std::get(t)...}; +} + +template +void to_json(BasicJsonType& j, const std::tuple& t) +{ + to_json_tuple_impl(j, t, index_sequence_for {}); +} + +struct to_json_fn +{ + private: + template + auto call(BasicJsonType& j, T&& val, priority_tag<1> /*unused*/) const noexcept(noexcept(to_json(j, std::forward(val)))) + -> decltype(to_json(j, std::forward(val)), void()) + { + return to_json(j, std::forward(val)); + } + + template + void call(BasicJsonType& /*unused*/, T&& /*unused*/, priority_tag<0> /*unused*/) const noexcept + { + static_assert(sizeof(BasicJsonType) == 0, + "could not find to_json() method in T's namespace"); + +#ifdef _MSC_VER + // MSVC does not show a stacktrace for the above assert + using decayed = uncvref_t; + static_assert(sizeof(typename decayed::force_msvc_stacktrace) == 0, + "forcing MSVC stacktrace to show which T we're talking about."); +#endif + } + + public: + template + void operator()(BasicJsonType& j, T&& val) const + noexcept(noexcept(std::declval().call(j, std::forward(val), priority_tag<1> {}))) + { + return call(j, std::forward(val), priority_tag<1> {}); + } +}; +} + +/// namespace to hold default `to_json` function +namespace +{ +constexpr const auto& to_json = detail::static_const::value; +} +} + +#endif + +/*** End of inlined file: to_json.hpp ***/ + + +/*** Start of inlined file: input_adapters.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP + +#include // min +#include // array +#include // assert +#include // size_t +#include // strlen +#include // streamsize, streamoff, streampos +#include // istream +#include // begin, end, iterator_traits, random_access_iterator_tag, distance, next +#include // shared_ptr, make_shared, addressof +#include // accumulate +#include // string, char_traits +#include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer +#include // pair, declval + +namespace nlohmann +{ +namespace detail +{ +//////////////////// +// input adapters // +//////////////////// + +/*! +@brief abstract input adapter interface + +Produces a stream of std::char_traits::int_type characters from a +std::istream, a buffer, or some other input type. Accepts the return of exactly +one non-EOF character for future input. The int_type characters returned +consist of all valid char values as positive values (typically unsigned char), +plus an EOF value outside that range, specified by the value of the function +std::char_traits::eof(). This value is typically -1, but could be any +arbitrary value which is not a valid char value. +*/ +struct input_adapter_protocol +{ + /// get a character [0,255] or std::char_traits::eof(). + virtual std::char_traits::int_type get_character() = 0; + /// restore the last non-eof() character to input + virtual void unget_character() = 0; + virtual ~input_adapter_protocol() = default; +}; + +/// a type to simplify interfaces +using input_adapter_t = std::shared_ptr; + +/*! +Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at +beginning of input. Does not support changing the underlying std::streambuf +in mid-input. Maintains underlying std::istream and std::streambuf to support +subsequent use of standard std::istream operations to process any input +characters following those used in parsing the JSON input. Clears the +std::istream flags; any input errors (e.g., EOF) will be detected by the first +subsequent call for input from the std::istream. +*/ +class input_stream_adapter : public input_adapter_protocol +{ + public: + ~input_stream_adapter() override + { + // clear stream flags; we use underlying streambuf I/O, do not + // maintain ifstream flags + is.clear(); + } + + explicit input_stream_adapter(std::istream& i) + : is(i), sb(*i.rdbuf()) + { + // skip byte order mark + std::char_traits::int_type c; + if ((c = get_character()) == 0xEF) + { + if ((c = get_character()) == 0xBB) + { + if ((c = get_character()) == 0xBF) + { + return; // Ignore BOM + } + else if (c != std::char_traits::eof()) + { + is.unget(); + } + is.putback('\xBB'); + } + else if (c != std::char_traits::eof()) + { + is.unget(); + } + is.putback('\xEF'); + } + else if (c != std::char_traits::eof()) + { + is.unget(); // no byte order mark; process as usual + } + } + + // delete because of pointer members + input_stream_adapter(const input_stream_adapter&) = delete; + input_stream_adapter& operator=(input_stream_adapter&) = delete; + + // std::istream/std::streambuf use std::char_traits::to_int_type, to + // ensure that std::char_traits::eof() and the character 0xFF do not + // end up as the same value, eg. 0xFFFFFFFF. + std::char_traits::int_type get_character() override + { + return sb.sbumpc(); + } + + void unget_character() override + { + sb.sungetc(); // is.unget() avoided for performance + } + + private: + /// the associated input stream + std::istream& is; + std::streambuf& sb; +}; + +/// input adapter for buffer input +class input_buffer_adapter : public input_adapter_protocol +{ + public: + input_buffer_adapter(const char* b, const std::size_t l) + : cursor(b), limit(b + l), start(b) + { + // skip byte order mark + if (l >= 3 and b[0] == '\xEF' and b[1] == '\xBB' and b[2] == '\xBF') + { + cursor += 3; + } + } + + // delete because of pointer members + input_buffer_adapter(const input_buffer_adapter&) = delete; + input_buffer_adapter& operator=(input_buffer_adapter&) = delete; + + std::char_traits::int_type get_character() noexcept override + { + if (JSON_LIKELY(cursor < limit)) + { + return std::char_traits::to_int_type(*(cursor++)); + } + + return std::char_traits::eof(); + } + + void unget_character() noexcept override + { + if (JSON_LIKELY(cursor > start)) + { + --cursor; + } + } + + private: + /// pointer to the current character + const char* cursor; + /// pointer past the last character + const char* limit; + /// pointer to the first character + const char* start; +}; + +class input_adapter +{ + public: + // native support + + /// input adapter for input stream + input_adapter(std::istream& i) + : ia(std::make_shared(i)) {} + + /// input adapter for input stream + input_adapter(std::istream&& i) + : ia(std::make_shared(i)) {} + + /// input adapter for buffer + template::value and + std::is_integral::type>::value and + sizeof(typename std::remove_pointer::type) == 1, + int>::type = 0> + input_adapter(CharT b, std::size_t l) + : ia(std::make_shared(reinterpret_cast(b), l)) {} + + // derived support + + /// input adapter for string literal + template::value and + std::is_integral::type>::value and + sizeof(typename std::remove_pointer::type) == 1, + int>::type = 0> + input_adapter(CharT b) + : input_adapter(reinterpret_cast(b), + std::strlen(reinterpret_cast(b))) {} + + /// input adapter for iterator range with contiguous storage + template::iterator_category, std::random_access_iterator_tag>::value, + int>::type = 0> + input_adapter(IteratorType first, IteratorType last) + { + // assertion to check that the iterator range is indeed contiguous, + // see http://stackoverflow.com/a/35008842/266378 for more discussion + assert(std::accumulate( + first, last, std::pair(true, 0), + [&first](std::pair res, decltype(*first) val) + { + res.first &= (val == *(std::next(std::addressof(*first), res.second++))); + return res; + }).first); + + // assertion to check that each element is 1 byte long + static_assert( + sizeof(typename std::iterator_traits::value_type) == 1, + "each element in the iterator range must have the size of 1 byte"); + + const auto len = static_cast(std::distance(first, last)); + if (JSON_LIKELY(len > 0)) + { + // there is at least one element: use the address of first + ia = std::make_shared(reinterpret_cast(&(*first)), len); + } + else + { + // the address of first cannot be used: use nullptr + ia = std::make_shared(nullptr, len); + } + } + + /// input adapter for array + template + input_adapter(T (&array)[N]) + : input_adapter(std::begin(array), std::end(array)) {} + + /// input adapter for contiguous container + template::value and + std::is_base_of()))>::iterator_category>::value, + int>::type = 0> + input_adapter(const ContiguousContainer& c) + : input_adapter(std::begin(c), std::end(c)) {} + + operator input_adapter_t() + { + return ia; + } + + private: + /// the actual adapter + input_adapter_t ia = nullptr; +}; +} +} + +#endif + +/*** End of inlined file: input_adapters.hpp ***/ + + +/*** Start of inlined file: lexer.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP + +#include // localeconv +#include // size_t +#include // strtof, strtod, strtold, strtoll, strtoull +#include // initializer_list +#include // hex, uppercase +#include // setw, setfill +#include // stringstream +#include // char_traits, string +#include // vector + + +/*** Start of inlined file: input_adapters.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP + +#include // min +#include // array +#include // assert +#include // size_t +#include // strlen +#include // streamsize, streamoff, streampos +#include // istream +#include // begin, end, iterator_traits, random_access_iterator_tag, distance, next +#include // shared_ptr, make_shared, addressof +#include // accumulate +#include // string, char_traits +#include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer +#include // pair, declval + +namespace nlohmann +{ +namespace detail +{ +//////////////////// +// input adapters // +//////////////////// + +/*! +@brief abstract input adapter interface + +Produces a stream of std::char_traits::int_type characters from a +std::istream, a buffer, or some other input type. Accepts the return of exactly +one non-EOF character for future input. The int_type characters returned +consist of all valid char values as positive values (typically unsigned char), +plus an EOF value outside that range, specified by the value of the function +std::char_traits::eof(). This value is typically -1, but could be any +arbitrary value which is not a valid char value. +*/ +struct input_adapter_protocol +{ + /// get a character [0,255] or std::char_traits::eof(). + virtual std::char_traits::int_type get_character() = 0; + /// restore the last non-eof() character to input + virtual void unget_character() = 0; + virtual ~input_adapter_protocol() = default; +}; + +/// a type to simplify interfaces +using input_adapter_t = std::shared_ptr; + +/*! +Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at +beginning of input. Does not support changing the underlying std::streambuf +in mid-input. Maintains underlying std::istream and std::streambuf to support +subsequent use of standard std::istream operations to process any input +characters following those used in parsing the JSON input. Clears the +std::istream flags; any input errors (e.g., EOF) will be detected by the first +subsequent call for input from the std::istream. +*/ +class input_stream_adapter : public input_adapter_protocol +{ + public: + ~input_stream_adapter() override + { + // clear stream flags; we use underlying streambuf I/O, do not + // maintain ifstream flags + is.clear(); + } + + explicit input_stream_adapter(std::istream& i) + : is(i), sb(*i.rdbuf()) + { + // skip byte order mark + std::char_traits::int_type c; + if ((c = get_character()) == 0xEF) + { + if ((c = get_character()) == 0xBB) + { + if ((c = get_character()) == 0xBF) + { + return; // Ignore BOM + } + else if (c != std::char_traits::eof()) + { + is.unget(); + } + is.putback('\xBB'); + } + else if (c != std::char_traits::eof()) + { + is.unget(); + } + is.putback('\xEF'); + } + else if (c != std::char_traits::eof()) + { + is.unget(); // no byte order mark; process as usual + } + } + + // delete because of pointer members + input_stream_adapter(const input_stream_adapter&) = delete; + input_stream_adapter& operator=(input_stream_adapter&) = delete; + + // std::istream/std::streambuf use std::char_traits::to_int_type, to + // ensure that std::char_traits::eof() and the character 0xFF do not + // end up as the same value, eg. 0xFFFFFFFF. + std::char_traits::int_type get_character() override + { + return sb.sbumpc(); + } + + void unget_character() override + { + sb.sungetc(); // is.unget() avoided for performance + } + + private: + /// the associated input stream + std::istream& is; + std::streambuf& sb; +}; + +/// input adapter for buffer input +class input_buffer_adapter : public input_adapter_protocol +{ + public: + input_buffer_adapter(const char* b, const std::size_t l) + : cursor(b), limit(b + l), start(b) + { + // skip byte order mark + if (l >= 3 and b[0] == '\xEF' and b[1] == '\xBB' and b[2] == '\xBF') + { + cursor += 3; + } + } + + // delete because of pointer members + input_buffer_adapter(const input_buffer_adapter&) = delete; + input_buffer_adapter& operator=(input_buffer_adapter&) = delete; + + std::char_traits::int_type get_character() noexcept override + { + if (JSON_LIKELY(cursor < limit)) + { + return std::char_traits::to_int_type(*(cursor++)); + } + + return std::char_traits::eof(); + } + + void unget_character() noexcept override + { + if (JSON_LIKELY(cursor > start)) + { + --cursor; + } + } + + private: + /// pointer to the current character + const char* cursor; + /// pointer past the last character + const char* limit; + /// pointer to the first character + const char* start; +}; + +class input_adapter +{ + public: + // native support + + /// input adapter for input stream + input_adapter(std::istream& i) + : ia(std::make_shared(i)) {} + + /// input adapter for input stream + input_adapter(std::istream&& i) + : ia(std::make_shared(i)) {} + + /// input adapter for buffer + template::value and + std::is_integral::type>::value and + sizeof(typename std::remove_pointer::type) == 1, + int>::type = 0> + input_adapter(CharT b, std::size_t l) + : ia(std::make_shared(reinterpret_cast(b), l)) {} + + // derived support + + /// input adapter for string literal + template::value and + std::is_integral::type>::value and + sizeof(typename std::remove_pointer::type) == 1, + int>::type = 0> + input_adapter(CharT b) + : input_adapter(reinterpret_cast(b), + std::strlen(reinterpret_cast(b))) {} + + /// input adapter for iterator range with contiguous storage + template::iterator_category, std::random_access_iterator_tag>::value, + int>::type = 0> + input_adapter(IteratorType first, IteratorType last) + { + // assertion to check that the iterator range is indeed contiguous, + // see http://stackoverflow.com/a/35008842/266378 for more discussion + assert(std::accumulate( + first, last, std::pair(true, 0), + [&first](std::pair res, decltype(*first) val) + { + res.first &= (val == *(std::next(std::addressof(*first), res.second++))); + return res; + }).first); + + // assertion to check that each element is 1 byte long + static_assert( + sizeof(typename std::iterator_traits::value_type) == 1, + "each element in the iterator range must have the size of 1 byte"); + + const auto len = static_cast(std::distance(first, last)); + if (JSON_LIKELY(len > 0)) + { + // there is at least one element: use the address of first + ia = std::make_shared(reinterpret_cast(&(*first)), len); + } + else + { + // the address of first cannot be used: use nullptr + ia = std::make_shared(nullptr, len); + } + } + + /// input adapter for array + template + input_adapter(T (&array)[N]) + : input_adapter(std::begin(array), std::end(array)) {} + + /// input adapter for contiguous container + template::value and + std::is_base_of()))>::iterator_category>::value, + int>::type = 0> + input_adapter(const ContiguousContainer& c) + : input_adapter(std::begin(c), std::end(c)) {} + + operator input_adapter_t() + { + return ia; + } + + private: + /// the actual adapter + input_adapter_t ia = nullptr; +}; +} +} + +#endif + +/*** End of inlined file: input_adapters.hpp ***/ + +namespace nlohmann +{ +namespace detail +{ +/////////// +// lexer // +/////////// + +/*! +@brief lexical analysis + +This class organizes the lexical analysis during JSON deserialization. +*/ +template +class lexer +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + + public: + /// token types for the parser + enum class token_type + { + uninitialized, ///< indicating the scanner is uninitialized + literal_true, ///< the `true` literal + literal_false, ///< the `false` literal + literal_null, ///< the `null` literal + value_string, ///< a string -- use get_string() for actual value + value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value + value_integer, ///< a signed integer -- use get_number_integer() for actual value + value_float, ///< an floating point number -- use get_number_float() for actual value + begin_array, ///< the character for array begin `[` + begin_object, ///< the character for object begin `{` + end_array, ///< the character for array end `]` + end_object, ///< the character for object end `}` + name_separator, ///< the name separator `:` + value_separator, ///< the value separator `,` + parse_error, ///< indicating a parse error + end_of_input, ///< indicating the end of the input buffer + literal_or_value ///< a literal or the begin of a value (only for diagnostics) + }; + + /// return name of values of type token_type (only used for errors) + static const char* token_type_name(const token_type t) noexcept + { + switch (t) + { + case token_type::uninitialized: + return ""; + case token_type::literal_true: + return "true literal"; + case token_type::literal_false: + return "false literal"; + case token_type::literal_null: + return "null literal"; + case token_type::value_string: + return "string literal"; + case lexer::token_type::value_unsigned: + case lexer::token_type::value_integer: + case lexer::token_type::value_float: + return "number literal"; + case token_type::begin_array: + return "'['"; + case token_type::begin_object: + return "'{'"; + case token_type::end_array: + return "']'"; + case token_type::end_object: + return "'}'"; + case token_type::name_separator: + return "':'"; + case token_type::value_separator: + return "','"; + case token_type::parse_error: + return ""; + case token_type::end_of_input: + return "end of input"; + case token_type::literal_or_value: + return "'[', '{', or a literal"; + default: // catch non-enum values + return "unknown token"; // LCOV_EXCL_LINE + } + } + + explicit lexer(detail::input_adapter_t adapter) + : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {} + + // delete because of pointer members + lexer(const lexer&) = delete; + lexer& operator=(lexer&) = delete; + + private: + ///////////////////// + // locales + ///////////////////// + + /// return the locale-dependent decimal point + static char get_decimal_point() noexcept + { + const auto loc = localeconv(); + assert(loc != nullptr); + return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); + } + + ///////////////////// + // scan functions + ///////////////////// + + /*! + @brief get codepoint from 4 hex characters following `\u` + + For input "\u c1 c2 c3 c4" the codepoint is: + (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 + = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) + + Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' + must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The + conversion is done by subtracting the offset (0x30, 0x37, and 0x57) + between the ASCII value of the character and the desired integer value. + + @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or + non-hex character) + */ + int get_codepoint() + { + // this function only makes sense after reading `\u` + assert(current == 'u'); + int codepoint = 0; + + const auto factors = { 12, 8, 4, 0 }; + for (const auto factor : factors) + { + get(); + + if (current >= '0' and current <= '9') + { + codepoint += ((current - 0x30) << factor); + } + else if (current >= 'A' and current <= 'F') + { + codepoint += ((current - 0x37) << factor); + } + else if (current >= 'a' and current <= 'f') + { + codepoint += ((current - 0x57) << factor); + } + else + { + return -1; + } + } + + assert(0x0000 <= codepoint and codepoint <= 0xFFFF); + return codepoint; + } + + /*! + @brief check if the next byte(s) are inside a given range + + Adds the current byte and, for each passed range, reads a new byte and + checks if it is inside the range. If a violation was detected, set up an + error message and return false. Otherwise, return true. + + @param[in] ranges list of integers; interpreted as list of pairs of + inclusive lower and upper bound, respectively + + @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, + 1, 2, or 3 pairs. This precondition is enforced by an assertion. + + @return true if and only if no range violation was detected + */ + bool next_byte_in_range(std::initializer_list ranges) + { + assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6); + add(current); + + for (auto range = ranges.begin(); range != ranges.end(); ++range) + { + get(); + if (JSON_LIKELY(*range <= current and current <= *(++range))) + { + add(current); + } + else + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return false; + } + } + + return true; + } + + /*! + @brief scan a string literal + + This function scans a string according to Sect. 7 of RFC 7159. While + scanning, bytes are escaped and copied into buffer yytext. Then the function + returns successfully, yytext is *not* null-terminated (as it may contain \0 + bytes), and yytext.size() is the number of bytes in the string. + + @return token_type::value_string if string could be successfully scanned, + token_type::parse_error otherwise + + @note In case of errors, variable error_message contains a textual + description. + */ + token_type scan_string() + { + // reset yytext (ignore opening quote) + reset(); + + // we entered the function by reading an open quote + assert(current == '\"'); + + while (true) + { + // get next character + switch (get()) + { + // end of file while parsing string + case std::char_traits::eof(): + { + error_message = "invalid string: missing closing quote"; + return token_type::parse_error; + } + + // closing quote + case '\"': + { + return token_type::value_string; + } + + // escapes + case '\\': + { + switch (get()) + { + // quotation mark + case '\"': + add('\"'); + break; + // reverse solidus + case '\\': + add('\\'); + break; + // solidus + case '/': + add('/'); + break; + // backspace + case 'b': + add('\b'); + break; + // form feed + case 'f': + add('\f'); + break; + // line feed + case 'n': + add('\n'); + break; + // carriage return + case 'r': + add('\r'); + break; + // tab + case 't': + add('\t'); + break; + + // unicode escapes + case 'u': + { + const int codepoint1 = get_codepoint(); + int codepoint = codepoint1; // start with codepoint1 + + if (JSON_UNLIKELY(codepoint1 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if code point is a high surrogate + if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF) + { + // expect next \uxxxx entry + if (JSON_LIKELY(get() == '\\' and get() == 'u')) + { + const int codepoint2 = get_codepoint(); + + if (JSON_UNLIKELY(codepoint2 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if codepoint2 is a low surrogate + if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF)) + { + // overwrite codepoint + codepoint = + // high surrogate occupies the most significant 22 bits + (codepoint1 << 10) + // low surrogate occupies the least significant 15 bits + + codepoint2 + // there is still the 0xD800, 0xDC00 and 0x10000 noise + // in the result so we have to subtract with: + // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 + - 0x35FDC00; + } + else + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF)) + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; + return token_type::parse_error; + } + } + + // result of the above calculation yields a proper codepoint + assert(0x00 <= codepoint and codepoint <= 0x10FFFF); + + // translate codepoint into bytes + if (codepoint < 0x80) + { + // 1-byte characters: 0xxxxxxx (ASCII) + add(codepoint); + } + else if (codepoint <= 0x7FF) + { + // 2-byte characters: 110xxxxx 10xxxxxx + add(0xC0 | (codepoint >> 6)); + add(0x80 | (codepoint & 0x3F)); + } + else if (codepoint <= 0xFFFF) + { + // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx + add(0xE0 | (codepoint >> 12)); + add(0x80 | ((codepoint >> 6) & 0x3F)); + add(0x80 | (codepoint & 0x3F)); + } + else + { + // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + add(0xF0 | (codepoint >> 18)); + add(0x80 | ((codepoint >> 12) & 0x3F)); + add(0x80 | ((codepoint >> 6) & 0x3F)); + add(0x80 | (codepoint & 0x3F)); + } + + break; + } + + // other characters after escape + default: + error_message = "invalid string: forbidden character after backslash"; + return token_type::parse_error; + } + + break; + } + + // invalid control characters + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + { + error_message = "invalid string: control character must be escaped"; + return token_type::parse_error; + } + + // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) + case 0x20: + case 0x21: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + { + add(current); + break; + } + + // U+0080..U+07FF: bytes C2..DF 80..BF + case 0xC2: + case 0xC3: + case 0xC4: + case 0xC5: + case 0xC6: + case 0xC7: + case 0xC8: + case 0xC9: + case 0xCA: + case 0xCB: + case 0xCC: + case 0xCD: + case 0xCE: + case 0xCF: + case 0xD0: + case 0xD1: + case 0xD2: + case 0xD3: + case 0xD4: + case 0xD5: + case 0xD6: + case 0xD7: + case 0xD8: + case 0xD9: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: + { + if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF}))) + { + return token_type::parse_error; + } + break; + } + + // U+0800..U+0FFF: bytes E0 A0..BF 80..BF + case 0xE0: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF + // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xEE: + case 0xEF: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+D000..U+D7FF: bytes ED 80..9F 80..BF + case 0xED: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF + case 0xF0: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF + case 0xF1: + case 0xF2: + case 0xF3: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF + case 0xF4: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // remaining bytes (80..C1 and F5..FF) are ill-formed + default: + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return token_type::parse_error; + } + } + } + } + + static void strtof(float& f, const char* str, char** endptr) noexcept + { + f = std::strtof(str, endptr); + } + + static void strtof(double& f, const char* str, char** endptr) noexcept + { + f = std::strtod(str, endptr); + } + + static void strtof(long double& f, const char* str, char** endptr) noexcept + { + f = std::strtold(str, endptr); + } + + /*! + @brief scan a number literal + + This function scans a string according to Sect. 6 of RFC 7159. + + The function is realized with a deterministic finite state machine derived + from the grammar described in RFC 7159. Starting in state "init", the + input is read and used to determined the next state. Only state "done" + accepts the number. State "error" is a trap state to model errors. In the + table below, "anything" means any character but the ones listed before. + + state | 0 | 1-9 | e E | + | - | . | anything + ---------|----------|----------|----------|---------|---------|----------|----------- + init | zero | any1 | [error] | [error] | minus | [error] | [error] + minus | zero | any1 | [error] | [error] | [error] | [error] | [error] + zero | done | done | exponent | done | done | decimal1 | done + any1 | any1 | any1 | exponent | done | done | decimal1 | done + decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error] + decimal2 | decimal2 | decimal2 | exponent | done | done | done | done + exponent | any2 | any2 | [error] | sign | sign | [error] | [error] + sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] + any2 | any2 | any2 | done | done | done | done | done + + The state machine is realized with one label per state (prefixed with + "scan_number_") and `goto` statements between them. The state machine + contains cycles, but any cycle can be left when EOF is read. Therefore, + the function is guaranteed to terminate. + + During scanning, the read bytes are stored in yytext. This string is + then converted to a signed integer, an unsigned integer, or a + floating-point number. + + @return token_type::value_unsigned, token_type::value_integer, or + token_type::value_float if number could be successfully scanned, + token_type::parse_error otherwise + + @note The scanner is independent of the current locale. Internally, the + locale's decimal point is used instead of `.` to work with the + locale-dependent converters. + */ + token_type scan_number() + { + // reset yytext to store the number's bytes + reset(); + + // the type of the parsed number; initially set to unsigned; will be + // changed if minus sign, decimal point or exponent is read + token_type number_type = token_type::value_unsigned; + + // state (init): we just found out we need to scan a number + switch (current) + { + case '-': + { + add(current); + goto scan_number_minus; + } + + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + default: + { + // all other characters are rejected outside scan_number() + assert(false); // LCOV_EXCL_LINE + } + } + +scan_number_minus: + // state: we just parsed a leading minus sign + number_type = token_type::value_integer; + switch (get()) + { + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + default: + { + error_message = "invalid number; expected digit after '-'"; + return token_type::parse_error; + } + } + +scan_number_zero: + // state: we just parse a zero (maybe with a leading minus sign) + switch (get()) + { + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_any1: + // state: we just parsed a number 0-9 (maybe with a leading minus sign) + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_decimal1: + // state: we just parsed a decimal point + number_type = token_type::value_float; + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + default: + { + error_message = "invalid number; expected digit after '.'"; + return token_type::parse_error; + } + } + +scan_number_decimal2: + // we just parsed at least one number after a decimal point + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_exponent: + // we just parsed an exponent + number_type = token_type::value_float; + switch (get()) + { + case '+': + case '-': + { + add(current); + goto scan_number_sign; + } + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = + "invalid number; expected '+', '-', or digit after exponent"; + return token_type::parse_error; + } + } + +scan_number_sign: + // we just parsed an exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = "invalid number; expected digit after exponent sign"; + return token_type::parse_error; + } + } + +scan_number_any2: + // we just parsed a number after the exponent or exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + goto scan_number_done; + } + +scan_number_done: + // unget the character after the number (we only read it to know that + // we are done scanning a number) + unget(); + + char* endptr = nullptr; + errno = 0; + + // try to parse integers first and fall back to floats + if (number_type == token_type::value_unsigned) + { + const auto x = std::strtoull(yytext.data(), &endptr, 10); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + if (errno == 0) + { + value_unsigned = static_cast(x); + if (value_unsigned == x) + { + return token_type::value_unsigned; + } + } + } + else if (number_type == token_type::value_integer) + { + const auto x = std::strtoll(yytext.data(), &endptr, 10); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + if (errno == 0) + { + value_integer = static_cast(x); + if (value_integer == x) + { + return token_type::value_integer; + } + } + } + + // this code is reached if we parse a floating-point number or if an + // integer conversion above failed + strtof(value_float, yytext.data(), &endptr); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + return token_type::value_float; + } + + /*! + @param[in] literal_text the literal text to expect + @param[in] length the length of the passed literal text + @param[in] return_type the token type to return on success + */ + token_type scan_literal(const char* literal_text, const std::size_t length, + token_type return_type) + { + assert(current == literal_text[0]); + for (std::size_t i = 1; i < length; ++i) + { + if (JSON_UNLIKELY(get() != literal_text[i])) + { + error_message = "invalid literal"; + return token_type::parse_error; + } + } + return return_type; + } + + ///////////////////// + // input management + ///////////////////// + + /// reset yytext; current character is beginning of token + void reset() noexcept + { + yytext.clear(); + token_string.clear(); + token_string.push_back(std::char_traits::to_char_type(current)); + } + + /* + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a + `std::char_traits::eof()` in that case. Stores the scanned characters + for use in error messages. + + @return character read from the input + */ + std::char_traits::int_type get() + { + ++chars_read; + current = ia->get_character(); + if (JSON_LIKELY(current != std::char_traits::eof())) + { + token_string.push_back(std::char_traits::to_char_type(current)); + } + return current; + } + + /// unget current character (return it again on next get) + void unget() + { + --chars_read; + if (JSON_LIKELY(current != std::char_traits::eof())) + { + ia->unget_character(); + assert(token_string.size() != 0); + token_string.pop_back(); + } + } + + /// add a character to yytext + void add(int c) + { + yytext.push_back(std::char_traits::to_char_type(c)); + } + + public: + ///////////////////// + // value getters + ///////////////////// + + /// return integer value + constexpr number_integer_t get_number_integer() const noexcept + { + return value_integer; + } + + /// return unsigned integer value + constexpr number_unsigned_t get_number_unsigned() const noexcept + { + return value_unsigned; + } + + /// return floating-point value + constexpr number_float_t get_number_float() const noexcept + { + return value_float; + } + + /// return current string value (implicitly resets the token; useful only once) + std::string move_string() + { + return std::move(yytext); + } + + ///////////////////// + // diagnostics + ///////////////////// + + /// return position of last read token + constexpr std::size_t get_position() const noexcept + { + return chars_read; + } + + /// return the last read token (for errors only). Will never contain EOF + /// (an arbitrary value that is not a valid char value, often -1), because + /// 255 may legitimately occur. May contain NUL, which should be escaped. + std::string get_token_string() const + { + // escape control characters + std::string result; + for (const auto c : token_string) + { + if ('\x00' <= c and c <= '\x1F') + { + // escape control characters + std::stringstream ss; + ss << "(c) << ">"; + result += ss.str(); + } + else + { + // add character as is + result.push_back(c); + } + } + + return result; + } + + /// return syntax error message + constexpr const char* get_error_message() const noexcept + { + return error_message; + } + + ///////////////////// + // actual scanner + ///////////////////// + + token_type scan() + { + // read next character and ignore whitespace + do + { + get(); + } + while (current == ' ' or current == '\t' or current == '\n' or current == '\r'); + + switch (current) + { + // structural characters + case '[': + return token_type::begin_array; + case ']': + return token_type::end_array; + case '{': + return token_type::begin_object; + case '}': + return token_type::end_object; + case ':': + return token_type::name_separator; + case ',': + return token_type::value_separator; + + // literals + case 't': + return scan_literal("true", 4, token_type::literal_true); + case 'f': + return scan_literal("false", 5, token_type::literal_false); + case 'n': + return scan_literal("null", 4, token_type::literal_null); + + // string + case '\"': + return scan_string(); + + // number + case '-': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return scan_number(); + + // end of input (the null byte is needed when parsing from + // string literals) + case '\0': + case std::char_traits::eof(): + return token_type::end_of_input; + + // error + default: + error_message = "invalid literal"; + return token_type::parse_error; + } + } + + private: + /// input adapter + detail::input_adapter_t ia = nullptr; + + /// the current character + std::char_traits::int_type current = std::char_traits::eof(); + + /// the number of characters read + std::size_t chars_read = 0; + + /// raw input token string (for error messages) + std::vector token_string {}; + + /// buffer for variable-length tokens (numbers, strings) + std::string yytext {}; + + /// a description of occurred lexer errors + const char* error_message = ""; + + // number values + number_integer_t value_integer = 0; + number_unsigned_t value_unsigned = 0; + number_float_t value_float = 0; + + /// the decimal point + const char decimal_point_char = '.'; +}; +} +} + +#endif + +/*** End of inlined file: lexer.hpp ***/ + + +/*** Start of inlined file: parser.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP + +#include // assert +#include // isfinite +#include // uint8_t +#include // function +#include // string +#include // move + + +/*** Start of inlined file: lexer.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP + +#include // localeconv +#include // size_t +#include // strtof, strtod, strtold, strtoll, strtoull +#include // initializer_list +#include // hex, uppercase +#include // setw, setfill +#include // stringstream +#include // char_traits, string +#include // vector + +namespace nlohmann +{ +namespace detail +{ +/////////// +// lexer // +/////////// + +/*! +@brief lexical analysis + +This class organizes the lexical analysis during JSON deserialization. +*/ +template +class lexer +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + + public: + /// token types for the parser + enum class token_type + { + uninitialized, ///< indicating the scanner is uninitialized + literal_true, ///< the `true` literal + literal_false, ///< the `false` literal + literal_null, ///< the `null` literal + value_string, ///< a string -- use get_string() for actual value + value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value + value_integer, ///< a signed integer -- use get_number_integer() for actual value + value_float, ///< an floating point number -- use get_number_float() for actual value + begin_array, ///< the character for array begin `[` + begin_object, ///< the character for object begin `{` + end_array, ///< the character for array end `]` + end_object, ///< the character for object end `}` + name_separator, ///< the name separator `:` + value_separator, ///< the value separator `,` + parse_error, ///< indicating a parse error + end_of_input, ///< indicating the end of the input buffer + literal_or_value ///< a literal or the begin of a value (only for diagnostics) + }; + + /// return name of values of type token_type (only used for errors) + static const char* token_type_name(const token_type t) noexcept + { + switch (t) + { + case token_type::uninitialized: + return ""; + case token_type::literal_true: + return "true literal"; + case token_type::literal_false: + return "false literal"; + case token_type::literal_null: + return "null literal"; + case token_type::value_string: + return "string literal"; + case lexer::token_type::value_unsigned: + case lexer::token_type::value_integer: + case lexer::token_type::value_float: + return "number literal"; + case token_type::begin_array: + return "'['"; + case token_type::begin_object: + return "'{'"; + case token_type::end_array: + return "']'"; + case token_type::end_object: + return "'}'"; + case token_type::name_separator: + return "':'"; + case token_type::value_separator: + return "','"; + case token_type::parse_error: + return ""; + case token_type::end_of_input: + return "end of input"; + case token_type::literal_or_value: + return "'[', '{', or a literal"; + default: // catch non-enum values + return "unknown token"; // LCOV_EXCL_LINE + } + } + + explicit lexer(detail::input_adapter_t adapter) + : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {} + + // delete because of pointer members + lexer(const lexer&) = delete; + lexer& operator=(lexer&) = delete; + + private: + ///////////////////// + // locales + ///////////////////// + + /// return the locale-dependent decimal point + static char get_decimal_point() noexcept + { + const auto loc = localeconv(); + assert(loc != nullptr); + return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); + } + + ///////////////////// + // scan functions + ///////////////////// + + /*! + @brief get codepoint from 4 hex characters following `\u` + + For input "\u c1 c2 c3 c4" the codepoint is: + (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 + = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) + + Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' + must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The + conversion is done by subtracting the offset (0x30, 0x37, and 0x57) + between the ASCII value of the character and the desired integer value. + + @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or + non-hex character) + */ + int get_codepoint() + { + // this function only makes sense after reading `\u` + assert(current == 'u'); + int codepoint = 0; + + const auto factors = { 12, 8, 4, 0 }; + for (const auto factor : factors) + { + get(); + + if (current >= '0' and current <= '9') + { + codepoint += ((current - 0x30) << factor); + } + else if (current >= 'A' and current <= 'F') + { + codepoint += ((current - 0x37) << factor); + } + else if (current >= 'a' and current <= 'f') + { + codepoint += ((current - 0x57) << factor); + } + else + { + return -1; + } + } + + assert(0x0000 <= codepoint and codepoint <= 0xFFFF); + return codepoint; + } + + /*! + @brief check if the next byte(s) are inside a given range + + Adds the current byte and, for each passed range, reads a new byte and + checks if it is inside the range. If a violation was detected, set up an + error message and return false. Otherwise, return true. + + @param[in] ranges list of integers; interpreted as list of pairs of + inclusive lower and upper bound, respectively + + @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, + 1, 2, or 3 pairs. This precondition is enforced by an assertion. + + @return true if and only if no range violation was detected + */ + bool next_byte_in_range(std::initializer_list ranges) + { + assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6); + add(current); + + for (auto range = ranges.begin(); range != ranges.end(); ++range) + { + get(); + if (JSON_LIKELY(*range <= current and current <= *(++range))) + { + add(current); + } + else + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return false; + } + } + + return true; + } + + /*! + @brief scan a string literal + + This function scans a string according to Sect. 7 of RFC 7159. While + scanning, bytes are escaped and copied into buffer yytext. Then the function + returns successfully, yytext is *not* null-terminated (as it may contain \0 + bytes), and yytext.size() is the number of bytes in the string. + + @return token_type::value_string if string could be successfully scanned, + token_type::parse_error otherwise + + @note In case of errors, variable error_message contains a textual + description. + */ + token_type scan_string() + { + // reset yytext (ignore opening quote) + reset(); + + // we entered the function by reading an open quote + assert(current == '\"'); + + while (true) + { + // get next character + switch (get()) + { + // end of file while parsing string + case std::char_traits::eof(): + { + error_message = "invalid string: missing closing quote"; + return token_type::parse_error; + } + + // closing quote + case '\"': + { + return token_type::value_string; + } + + // escapes + case '\\': + { + switch (get()) + { + // quotation mark + case '\"': + add('\"'); + break; + // reverse solidus + case '\\': + add('\\'); + break; + // solidus + case '/': + add('/'); + break; + // backspace + case 'b': + add('\b'); + break; + // form feed + case 'f': + add('\f'); + break; + // line feed + case 'n': + add('\n'); + break; + // carriage return + case 'r': + add('\r'); + break; + // tab + case 't': + add('\t'); + break; + + // unicode escapes + case 'u': + { + const int codepoint1 = get_codepoint(); + int codepoint = codepoint1; // start with codepoint1 + + if (JSON_UNLIKELY(codepoint1 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if code point is a high surrogate + if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF) + { + // expect next \uxxxx entry + if (JSON_LIKELY(get() == '\\' and get() == 'u')) + { + const int codepoint2 = get_codepoint(); + + if (JSON_UNLIKELY(codepoint2 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if codepoint2 is a low surrogate + if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF)) + { + // overwrite codepoint + codepoint = + // high surrogate occupies the most significant 22 bits + (codepoint1 << 10) + // low surrogate occupies the least significant 15 bits + + codepoint2 + // there is still the 0xD800, 0xDC00 and 0x10000 noise + // in the result so we have to subtract with: + // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 + - 0x35FDC00; + } + else + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF)) + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; + return token_type::parse_error; + } + } + + // result of the above calculation yields a proper codepoint + assert(0x00 <= codepoint and codepoint <= 0x10FFFF); + + // translate codepoint into bytes + if (codepoint < 0x80) + { + // 1-byte characters: 0xxxxxxx (ASCII) + add(codepoint); + } + else if (codepoint <= 0x7FF) + { + // 2-byte characters: 110xxxxx 10xxxxxx + add(0xC0 | (codepoint >> 6)); + add(0x80 | (codepoint & 0x3F)); + } + else if (codepoint <= 0xFFFF) + { + // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx + add(0xE0 | (codepoint >> 12)); + add(0x80 | ((codepoint >> 6) & 0x3F)); + add(0x80 | (codepoint & 0x3F)); + } + else + { + // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + add(0xF0 | (codepoint >> 18)); + add(0x80 | ((codepoint >> 12) & 0x3F)); + add(0x80 | ((codepoint >> 6) & 0x3F)); + add(0x80 | (codepoint & 0x3F)); + } + + break; + } + + // other characters after escape + default: + error_message = "invalid string: forbidden character after backslash"; + return token_type::parse_error; + } + + break; + } + + // invalid control characters + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + { + error_message = "invalid string: control character must be escaped"; + return token_type::parse_error; + } + + // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) + case 0x20: + case 0x21: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + { + add(current); + break; + } + + // U+0080..U+07FF: bytes C2..DF 80..BF + case 0xC2: + case 0xC3: + case 0xC4: + case 0xC5: + case 0xC6: + case 0xC7: + case 0xC8: + case 0xC9: + case 0xCA: + case 0xCB: + case 0xCC: + case 0xCD: + case 0xCE: + case 0xCF: + case 0xD0: + case 0xD1: + case 0xD2: + case 0xD3: + case 0xD4: + case 0xD5: + case 0xD6: + case 0xD7: + case 0xD8: + case 0xD9: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: + { + if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF}))) + { + return token_type::parse_error; + } + break; + } + + // U+0800..U+0FFF: bytes E0 A0..BF 80..BF + case 0xE0: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF + // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xEE: + case 0xEF: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+D000..U+D7FF: bytes ED 80..9F 80..BF + case 0xED: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF + case 0xF0: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF + case 0xF1: + case 0xF2: + case 0xF3: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF + case 0xF4: + { + if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // remaining bytes (80..C1 and F5..FF) are ill-formed + default: + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return token_type::parse_error; + } + } + } + } + + static void strtof(float& f, const char* str, char** endptr) noexcept + { + f = std::strtof(str, endptr); + } + + static void strtof(double& f, const char* str, char** endptr) noexcept + { + f = std::strtod(str, endptr); + } + + static void strtof(long double& f, const char* str, char** endptr) noexcept + { + f = std::strtold(str, endptr); + } + + /*! + @brief scan a number literal + + This function scans a string according to Sect. 6 of RFC 7159. + + The function is realized with a deterministic finite state machine derived + from the grammar described in RFC 7159. Starting in state "init", the + input is read and used to determined the next state. Only state "done" + accepts the number. State "error" is a trap state to model errors. In the + table below, "anything" means any character but the ones listed before. + + state | 0 | 1-9 | e E | + | - | . | anything + ---------|----------|----------|----------|---------|---------|----------|----------- + init | zero | any1 | [error] | [error] | minus | [error] | [error] + minus | zero | any1 | [error] | [error] | [error] | [error] | [error] + zero | done | done | exponent | done | done | decimal1 | done + any1 | any1 | any1 | exponent | done | done | decimal1 | done + decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error] + decimal2 | decimal2 | decimal2 | exponent | done | done | done | done + exponent | any2 | any2 | [error] | sign | sign | [error] | [error] + sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] + any2 | any2 | any2 | done | done | done | done | done + + The state machine is realized with one label per state (prefixed with + "scan_number_") and `goto` statements between them. The state machine + contains cycles, but any cycle can be left when EOF is read. Therefore, + the function is guaranteed to terminate. + + During scanning, the read bytes are stored in yytext. This string is + then converted to a signed integer, an unsigned integer, or a + floating-point number. + + @return token_type::value_unsigned, token_type::value_integer, or + token_type::value_float if number could be successfully scanned, + token_type::parse_error otherwise + + @note The scanner is independent of the current locale. Internally, the + locale's decimal point is used instead of `.` to work with the + locale-dependent converters. + */ + token_type scan_number() + { + // reset yytext to store the number's bytes + reset(); + + // the type of the parsed number; initially set to unsigned; will be + // changed if minus sign, decimal point or exponent is read + token_type number_type = token_type::value_unsigned; + + // state (init): we just found out we need to scan a number + switch (current) + { + case '-': + { + add(current); + goto scan_number_minus; + } + + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + default: + { + // all other characters are rejected outside scan_number() + assert(false); // LCOV_EXCL_LINE + } + } + +scan_number_minus: + // state: we just parsed a leading minus sign + number_type = token_type::value_integer; + switch (get()) + { + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + default: + { + error_message = "invalid number; expected digit after '-'"; + return token_type::parse_error; + } + } + +scan_number_zero: + // state: we just parse a zero (maybe with a leading minus sign) + switch (get()) + { + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_any1: + // state: we just parsed a number 0-9 (maybe with a leading minus sign) + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_decimal1: + // state: we just parsed a decimal point + number_type = token_type::value_float; + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + default: + { + error_message = "invalid number; expected digit after '.'"; + return token_type::parse_error; + } + } + +scan_number_decimal2: + // we just parsed at least one number after a decimal point + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_exponent: + // we just parsed an exponent + number_type = token_type::value_float; + switch (get()) + { + case '+': + case '-': + { + add(current); + goto scan_number_sign; + } + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = + "invalid number; expected '+', '-', or digit after exponent"; + return token_type::parse_error; + } + } + +scan_number_sign: + // we just parsed an exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = "invalid number; expected digit after exponent sign"; + return token_type::parse_error; + } + } + +scan_number_any2: + // we just parsed a number after the exponent or exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + goto scan_number_done; + } + +scan_number_done: + // unget the character after the number (we only read it to know that + // we are done scanning a number) + unget(); + + char* endptr = nullptr; + errno = 0; + + // try to parse integers first and fall back to floats + if (number_type == token_type::value_unsigned) + { + const auto x = std::strtoull(yytext.data(), &endptr, 10); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + if (errno == 0) + { + value_unsigned = static_cast(x); + if (value_unsigned == x) + { + return token_type::value_unsigned; + } + } + } + else if (number_type == token_type::value_integer) + { + const auto x = std::strtoll(yytext.data(), &endptr, 10); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + if (errno == 0) + { + value_integer = static_cast(x); + if (value_integer == x) + { + return token_type::value_integer; + } + } + } + + // this code is reached if we parse a floating-point number or if an + // integer conversion above failed + strtof(value_float, yytext.data(), &endptr); + + // we checked the number format before + assert(endptr == yytext.data() + yytext.size()); + + return token_type::value_float; + } + + /*! + @param[in] literal_text the literal text to expect + @param[in] length the length of the passed literal text + @param[in] return_type the token type to return on success + */ + token_type scan_literal(const char* literal_text, const std::size_t length, + token_type return_type) + { + assert(current == literal_text[0]); + for (std::size_t i = 1; i < length; ++i) + { + if (JSON_UNLIKELY(get() != literal_text[i])) + { + error_message = "invalid literal"; + return token_type::parse_error; + } + } + return return_type; + } + + ///////////////////// + // input management + ///////////////////// + + /// reset yytext; current character is beginning of token + void reset() noexcept + { + yytext.clear(); + token_string.clear(); + token_string.push_back(std::char_traits::to_char_type(current)); + } + + /* + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a + `std::char_traits::eof()` in that case. Stores the scanned characters + for use in error messages. + + @return character read from the input + */ + std::char_traits::int_type get() + { + ++chars_read; + current = ia->get_character(); + if (JSON_LIKELY(current != std::char_traits::eof())) + { + token_string.push_back(std::char_traits::to_char_type(current)); + } + return current; + } + + /// unget current character (return it again on next get) + void unget() + { + --chars_read; + if (JSON_LIKELY(current != std::char_traits::eof())) + { + ia->unget_character(); + assert(token_string.size() != 0); + token_string.pop_back(); + } + } + + /// add a character to yytext + void add(int c) + { + yytext.push_back(std::char_traits::to_char_type(c)); + } + + public: + ///////////////////// + // value getters + ///////////////////// + + /// return integer value + constexpr number_integer_t get_number_integer() const noexcept + { + return value_integer; + } + + /// return unsigned integer value + constexpr number_unsigned_t get_number_unsigned() const noexcept + { + return value_unsigned; + } + + /// return floating-point value + constexpr number_float_t get_number_float() const noexcept + { + return value_float; + } + + /// return current string value (implicitly resets the token; useful only once) + std::string move_string() + { + return std::move(yytext); + } + + ///////////////////// + // diagnostics + ///////////////////// + + /// return position of last read token + constexpr std::size_t get_position() const noexcept + { + return chars_read; + } + + /// return the last read token (for errors only). Will never contain EOF + /// (an arbitrary value that is not a valid char value, often -1), because + /// 255 may legitimately occur. May contain NUL, which should be escaped. + std::string get_token_string() const + { + // escape control characters + std::string result; + for (const auto c : token_string) + { + if ('\x00' <= c and c <= '\x1F') + { + // escape control characters + std::stringstream ss; + ss << "(c) << ">"; + result += ss.str(); + } + else + { + // add character as is + result.push_back(c); + } + } + + return result; + } + + /// return syntax error message + constexpr const char* get_error_message() const noexcept + { + return error_message; + } + + ///////////////////// + // actual scanner + ///////////////////// + + token_type scan() + { + // read next character and ignore whitespace + do + { + get(); + } + while (current == ' ' or current == '\t' or current == '\n' or current == '\r'); + + switch (current) + { + // structural characters + case '[': + return token_type::begin_array; + case ']': + return token_type::end_array; + case '{': + return token_type::begin_object; + case '}': + return token_type::end_object; + case ':': + return token_type::name_separator; + case ',': + return token_type::value_separator; + + // literals + case 't': + return scan_literal("true", 4, token_type::literal_true); + case 'f': + return scan_literal("false", 5, token_type::literal_false); + case 'n': + return scan_literal("null", 4, token_type::literal_null); + + // string + case '\"': + return scan_string(); + + // number + case '-': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return scan_number(); + + // end of input (the null byte is needed when parsing from + // string literals) + case '\0': + case std::char_traits::eof(): + return token_type::end_of_input; + + // error + default: + error_message = "invalid literal"; + return token_type::parse_error; + } + } + + private: + /// input adapter + detail::input_adapter_t ia = nullptr; + + /// the current character + std::char_traits::int_type current = std::char_traits::eof(); + + /// the number of characters read + std::size_t chars_read = 0; + + /// raw input token string (for error messages) + std::vector token_string {}; + + /// buffer for variable-length tokens (numbers, strings) + std::string yytext {}; + + /// a description of occurred lexer errors + const char* error_message = ""; + + // number values + number_integer_t value_integer = 0; + number_unsigned_t value_unsigned = 0; + number_float_t value_float = 0; + + /// the decimal point + const char decimal_point_char = '.'; +}; +} +} + +#endif + +/*** End of inlined file: lexer.hpp ***/ + +namespace nlohmann +{ +namespace detail +{ +//////////// +// parser // +//////////// + +/*! +@brief syntax analysis + +This class implements a recursive decent parser. +*/ +template +class parser +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using lexer_t = lexer; + using token_type = typename lexer_t::token_type; + + public: + enum class parse_event_t : uint8_t + { + /// the parser read `{` and started to process a JSON object + object_start, + /// the parser read `}` and finished processing a JSON object + object_end, + /// the parser read `[` and started to process a JSON array + array_start, + /// the parser read `]` and finished processing a JSON array + array_end, + /// the parser read a key of a value in an object + key, + /// the parser finished reading a JSON value + value + }; + + using parser_callback_t = + std::function; + + /// a parser reading from an input adapter + explicit parser(detail::input_adapter_t adapter, + const parser_callback_t cb = nullptr, + const bool allow_exceptions_ = true) + : callback(cb), m_lexer(adapter), allow_exceptions(allow_exceptions_) + {} + + /*! + @brief public parser interface + + @param[in] strict whether to expect the last token to be EOF + @param[in,out] result parsed JSON value + + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ + void parse(const bool strict, BasicJsonType& result) + { + // read first token + get_token(); + + parse_internal(true, result); + result.assert_invariant(); + + // in strict mode, input must be completely read + if (strict) + { + get_token(); + expect(token_type::end_of_input); + } + + // in case of an error, return discarded value + if (errored) + { + result = value_t::discarded; + return; + } + + // set top-level value to null if it was discarded by the callback + // function + if (result.is_discarded()) + { + result = nullptr; + } + } + + /*! + @brief public accept interface + + @param[in] strict whether to expect the last token to be EOF + @return whether the input is a proper JSON text + */ + bool accept(const bool strict = true) + { + // read first token + get_token(); + + if (not accept_internal()) + { + return false; + } + + // strict => last token must be EOF + return not strict or (get_token() == token_type::end_of_input); + } + + private: + /*! + @brief the actual parser + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ + void parse_internal(bool keep, BasicJsonType& result) + { + // never parse after a parse error was detected + assert(not errored); + + // start with a discarded value + if (not result.is_discarded()) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + + switch (last_token) + { + case token_type::begin_object: + { + if (keep) + { + if (callback) + { + keep = callback(depth++, parse_event_t::object_start, result); + } + + if (not callback or keep) + { + // explicitly set result to object to cope with {} + result.m_type = value_t::object; + result.m_value = value_t::object; + } + } + + // read next token + get_token(); + + // closing } -> we are done + if (last_token == token_type::end_object) + { + if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + break; + } + + // parse values + std::string key; + BasicJsonType value; + while (true) + { + // store key + if (not expect(token_type::value_string)) + { + return; + } + key = m_lexer.move_string(); + + bool keep_tag = false; + if (keep) + { + if (callback) + { + BasicJsonType k(key); + keep_tag = callback(depth, parse_event_t::key, k); + } + else + { + keep_tag = true; + } + } + + // parse separator (:) + get_token(); + if (not expect(token_type::name_separator)) + { + return; + } + + // parse and add value + get_token(); + value.m_value.destroy(value.m_type); + value.m_type = value_t::discarded; + parse_internal(keep, value); + + if (JSON_UNLIKELY(errored)) + { + return; + } + + if (keep and keep_tag and not value.is_discarded()) + { + result.m_value.object->emplace(std::move(key), std::move(value)); + } + + // comma -> next value + get_token(); + if (last_token == token_type::value_separator) + { + get_token(); + continue; + } + + // closing } + if (not expect(token_type::end_object)) + { + return; + } + break; + } + + if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + break; + } + + case token_type::begin_array: + { + if (keep) + { + if (callback) + { + keep = callback(depth++, parse_event_t::array_start, result); + } + + if (not callback or keep) + { + // explicitly set result to array to cope with [] + result.m_type = value_t::array; + result.m_value = value_t::array; + } + } + + // read next token + get_token(); + + // closing ] -> we are done + if (last_token == token_type::end_array) + { + if (callback and not callback(--depth, parse_event_t::array_end, result)) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + break; + } + + // parse values + BasicJsonType value; + while (true) + { + // parse value + value.m_value.destroy(value.m_type); + value.m_type = value_t::discarded; + parse_internal(keep, value); + + if (JSON_UNLIKELY(errored)) + { + return; + } + + if (keep and not value.is_discarded()) + { + result.m_value.array->push_back(std::move(value)); + } + + // comma -> next value + get_token(); + if (last_token == token_type::value_separator) + { + get_token(); + continue; + } + + // closing ] + if (not expect(token_type::end_array)) + { + return; + } + break; + } + + if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) + { + result.m_value.destroy(result.m_type); + result.m_type = value_t::discarded; + } + break; + } + + case token_type::literal_null: + { + result.m_type = value_t::null; + break; + } + + case token_type::value_string: + { + result.m_type = value_t::string; + result.m_value = m_lexer.move_string(); + break; + } + + case token_type::literal_true: + { + result.m_type = value_t::boolean; + result.m_value = true; + break; + } + + case token_type::literal_false: + { + result.m_type = value_t::boolean; + result.m_value = false; + break; + } + + case token_type::value_unsigned: + { + result.m_type = value_t::number_unsigned; + result.m_value = m_lexer.get_number_unsigned(); + break; + } + + case token_type::value_integer: + { + result.m_type = value_t::number_integer; + result.m_value = m_lexer.get_number_integer(); + break; + } + + case token_type::value_float: + { + result.m_type = value_t::number_float; + result.m_value = m_lexer.get_number_float(); + + // throw in case of infinity or NAN + if (JSON_UNLIKELY(not std::isfinite(result.m_value.number_float))) + { + if (allow_exceptions) + { + JSON_THROW(out_of_range::create(406, "number overflow parsing '" + + m_lexer.get_token_string() + "'")); + } + expect(token_type::uninitialized); + } + break; + } + + case token_type::parse_error: + { + // using "uninitialized" to avoid "expected" message + if (not expect(token_type::uninitialized)) + { + return; + } + break; // LCOV_EXCL_LINE + } + + default: + { + // the last token was unexpected; we expected a value + if (not expect(token_type::literal_or_value)) + { + return; + } + break; // LCOV_EXCL_LINE + } + } + + if (keep and callback and not callback(depth, parse_event_t::value, result)) + { + result.m_type = value_t::discarded; + } + } + + /*! + @brief the actual acceptor + + @invariant 1. The last token is not yet processed. Therefore, the caller + of this function must make sure a token has been read. + 2. When this function returns, the last token is processed. + That is, the last read character was already considered. + + This invariant makes sure that no token needs to be "unput". + */ + bool accept_internal() + { + switch (last_token) + { + case token_type::begin_object: + { + // read next token + get_token(); + + // closing } -> we are done + if (last_token == token_type::end_object) + { + return true; + } + + // parse values + while (true) + { + // parse key + if (last_token != token_type::value_string) + { + return false; + } + + // parse separator (:) + get_token(); + if (last_token != token_type::name_separator) + { + return false; + } + + // parse value + get_token(); + if (not accept_internal()) + { + return false; + } + + // comma -> next value + get_token(); + if (last_token == token_type::value_separator) + { + get_token(); + continue; + } + + // closing } + return (last_token == token_type::end_object); + } + } + + case token_type::begin_array: + { + // read next token + get_token(); + + // closing ] -> we are done + if (last_token == token_type::end_array) + { + return true; + } + + // parse values + while (true) + { + // parse value + if (not accept_internal()) + { + return false; + } + + // comma -> next value + get_token(); + if (last_token == token_type::value_separator) + { + get_token(); + continue; + } + + // closing ] + return (last_token == token_type::end_array); + } + } + + case token_type::value_float: + { + // reject infinity or NAN + return std::isfinite(m_lexer.get_number_float()); + } + + case token_type::literal_false: + case token_type::literal_null: + case token_type::literal_true: + case token_type::value_integer: + case token_type::value_string: + case token_type::value_unsigned: + return true; + + default: // the last token was unexpected + return false; + } + } + + /// get next token from lexer + token_type get_token() + { + return (last_token = m_lexer.scan()); + } + + /*! + @throw parse_error.101 if expected token did not occur + */ + bool expect(token_type t) + { + if (JSON_UNLIKELY(t != last_token)) + { + errored = true; + expected = t; + if (allow_exceptions) + { + throw_exception(); + } + else + { + return false; + } + } + + return true; + } + + [[noreturn]] void throw_exception() const + { + std::string error_msg = "syntax error - "; + if (last_token == token_type::parse_error) + { + error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" + + m_lexer.get_token_string() + "'"; + } + else + { + error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token)); + } + + if (expected != token_type::uninitialized) + { + error_msg += "; expected " + std::string(lexer_t::token_type_name(expected)); + } + + JSON_THROW(parse_error::create(101, m_lexer.get_position(), error_msg)); + } + + private: + /// current level of recursion + int depth = 0; + /// callback function + const parser_callback_t callback = nullptr; + /// the type of the last read token + token_type last_token = token_type::uninitialized; + /// the lexer + lexer_t m_lexer; + /// whether a syntax error occurred + bool errored = false; + /// possible reason for the syntax error + token_type expected = token_type::uninitialized; + /// whether to throw exceptions in case of errors + const bool allow_exceptions = true; +}; +} +} + +#endif + +/*** End of inlined file: parser.hpp ***/ + + +/*** Start of inlined file: primitive_iterator.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP + +#include // not +#include // ptrdiff_t +#include // numeric_limits +#include // ostream + +namespace nlohmann +{ +namespace detail +{ +/* +@brief an iterator for primitive JSON types + +This class models an iterator for primitive JSON types (boolean, number, +string). It's only purpose is to allow the iterator/const_iterator classes +to "iterate" over primitive values. Internally, the iterator is modeled by +a `difference_type` variable. Value begin_value (`0`) models the begin, +end_value (`1`) models past the end. +*/ +class primitive_iterator_t +{ + public: + using difference_type = std::ptrdiff_t; + + constexpr difference_type get_value() const noexcept + { + return m_it; + } + + /// set iterator to a defined beginning + void set_begin() noexcept + { + m_it = begin_value; + } + + /// set iterator to a defined past the end + void set_end() noexcept + { + m_it = end_value; + } + + /// return whether the iterator can be dereferenced + constexpr bool is_begin() const noexcept + { + return m_it == begin_value; + } + + /// return whether the iterator is at end + constexpr bool is_end() const noexcept + { + return m_it == end_value; + } + + friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it == rhs.m_it; + } + + friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it < rhs.m_it; + } + + primitive_iterator_t operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it - rhs.m_it; + } + + friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) + { + return os << it.m_it; + } + + primitive_iterator_t& operator++() + { + ++m_it; + return *this; + } + + primitive_iterator_t const operator++(int) + { + auto result = *this; + m_it++; + return result; + } + + primitive_iterator_t& operator--() + { + --m_it; + return *this; + } + + primitive_iterator_t const operator--(int) + { + auto result = *this; + m_it--; + return result; + } + + primitive_iterator_t& operator+=(difference_type n) + { + m_it += n; + return *this; + } + + primitive_iterator_t& operator-=(difference_type n) + { + m_it -= n; + return *this; + } + + private: + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; + + /// iterator as signed integer type + difference_type m_it = (std::numeric_limits::min)(); +}; +} +} + +#endif + +/*** End of inlined file: primitive_iterator.hpp ***/ + + +/*** Start of inlined file: internal_iterator.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP + + +/*** Start of inlined file: primitive_iterator.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP + +#include // not +#include // ptrdiff_t +#include // numeric_limits +#include // ostream + +namespace nlohmann +{ +namespace detail +{ +/* +@brief an iterator for primitive JSON types + +This class models an iterator for primitive JSON types (boolean, number, +string). It's only purpose is to allow the iterator/const_iterator classes +to "iterate" over primitive values. Internally, the iterator is modeled by +a `difference_type` variable. Value begin_value (`0`) models the begin, +end_value (`1`) models past the end. +*/ +class primitive_iterator_t +{ + public: + using difference_type = std::ptrdiff_t; + + constexpr difference_type get_value() const noexcept + { + return m_it; + } + + /// set iterator to a defined beginning + void set_begin() noexcept + { + m_it = begin_value; + } + + /// set iterator to a defined past the end + void set_end() noexcept + { + m_it = end_value; + } + + /// return whether the iterator can be dereferenced + constexpr bool is_begin() const noexcept + { + return m_it == begin_value; + } + + /// return whether the iterator is at end + constexpr bool is_end() const noexcept + { + return m_it == end_value; + } + + friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it == rhs.m_it; + } + + friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it < rhs.m_it; + } + + primitive_iterator_t operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it - rhs.m_it; + } + + friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) + { + return os << it.m_it; + } + + primitive_iterator_t& operator++() + { + ++m_it; + return *this; + } + + primitive_iterator_t const operator++(int) + { + auto result = *this; + m_it++; + return result; + } + + primitive_iterator_t& operator--() + { + --m_it; + return *this; + } + + primitive_iterator_t const operator--(int) + { + auto result = *this; + m_it--; + return result; + } + + primitive_iterator_t& operator+=(difference_type n) + { + m_it += n; + return *this; + } + + primitive_iterator_t& operator-=(difference_type n) + { + m_it -= n; + return *this; + } + + private: + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; + + /// iterator as signed integer type + difference_type m_it = (std::numeric_limits::min)(); +}; +} +} + +#endif + +/*** End of inlined file: primitive_iterator.hpp ***/ + +namespace nlohmann +{ +namespace detail +{ +/*! +@brief an iterator value + +@note This structure could easily be a union, but MSVC currently does not allow +unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. +*/ +template struct internal_iterator +{ + /// iterator for JSON objects + typename BasicJsonType::object_t::iterator object_iterator {}; + /// iterator for JSON arrays + typename BasicJsonType::array_t::iterator array_iterator {}; + /// generic iterator for all other types + primitive_iterator_t primitive_iterator {}; +}; +} +} + +#endif + +/*** End of inlined file: internal_iterator.hpp ***/ + + +/*** Start of inlined file: iter_impl.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP + +#include // not +#include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next +#include // conditional, is_const, remove_const + + +/*** Start of inlined file: internal_iterator.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP + +namespace nlohmann +{ +namespace detail +{ +/*! +@brief an iterator value + +@note This structure could easily be a union, but MSVC currently does not allow +unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. +*/ +template struct internal_iterator +{ + /// iterator for JSON objects + typename BasicJsonType::object_t::iterator object_iterator {}; + /// iterator for JSON arrays + typename BasicJsonType::array_t::iterator array_iterator {}; + /// generic iterator for all other types + primitive_iterator_t primitive_iterator {}; +}; +} +} + +#endif + +/*** End of inlined file: internal_iterator.hpp ***/ + +namespace nlohmann +{ +namespace detail +{ +// forward declare, to be able to friend it later on +template class iteration_proxy; + +/*! +@brief a template for a bidirectional iterator for the @ref basic_json class + +This class implements a both iterators (iterator and const_iterator) for the +@ref basic_json class. + +@note An iterator is called *initialized* when a pointer to a JSON value has + been set (e.g., by a constructor or a copy assignment). If the iterator is + default-constructed, it is *uninitialized* and most methods are undefined. + **The library uses assertions to detect calls on uninitialized iterators.** + +@requirement The class satisfies the following concept requirements: +- +[BidirectionalIterator](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator): + The iterator that can be moved can be moved in both directions (i.e. + incremented and decremented). + +@since version 1.0.0, simplified in version 2.0.9, change to bidirectional + iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593) +*/ +template +class iter_impl +{ + /// allow basic_json to access private members + friend iter_impl::value, typename std::remove_const::type, const BasicJsonType>::type>; + friend BasicJsonType; + friend iteration_proxy; + + using object_t = typename BasicJsonType::object_t; + using array_t = typename BasicJsonType::array_t; + // make sure BasicJsonType is basic_json or const basic_json + static_assert(is_basic_json::type>::value, + "iter_impl only accepts (const) basic_json"); + + public: + + /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. + /// The C++ Standard has never required user-defined iterators to derive from std::iterator. + /// A user-defined iterator should provide publicly accessible typedefs named + /// iterator_category, value_type, difference_type, pointer, and reference. + /// Note that value_type is required to be non-const, even for constant iterators. + using iterator_category = std::bidirectional_iterator_tag; + + /// the type of the values when the iterator is dereferenced + using value_type = typename BasicJsonType::value_type; + /// a type to represent differences between iterators + using difference_type = typename BasicJsonType::difference_type; + /// defines a pointer to the type iterated over (value_type) + using pointer = typename std::conditional::value, + typename BasicJsonType::const_pointer, + typename BasicJsonType::pointer>::type; + /// defines a reference to the type iterated over (value_type) + using reference = + typename std::conditional::value, + typename BasicJsonType::const_reference, + typename BasicJsonType::reference>::type; + + /// default constructor + iter_impl() = default; + + /*! + @brief constructor for a given JSON instance + @param[in] object pointer to a JSON object for this iterator + @pre object != nullptr + @post The iterator is initialized; i.e. `m_object != nullptr`. + */ + explicit iter_impl(pointer object) noexcept : m_object(object) + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = typename object_t::iterator(); + break; + } + + case value_t::array: + { + m_it.array_iterator = typename array_t::iterator(); + break; + } + + default: + { + m_it.primitive_iterator = primitive_iterator_t(); + break; + } + } + } + + /*! + @note The conventional copy constructor and copy assignment are implicitly + defined. Combined with the following converting constructor and + assignment, they support: (1) copy from iterator to iterator, (2) + copy from const iterator to const iterator, and (3) conversion from + iterator to const iterator. However conversion from const iterator + to iterator is not defined. + */ + + /*! + @brief converting constructor + @param[in] other non-const iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl(const iter_impl::type>& other) noexcept + : m_object(other.m_object), m_it(other.m_it) {} + + /*! + @brief converting assignment + @param[in,out] other non-const iterator to copy from + @return const/non-const iterator + @note It is not checked whether @a other is initialized. + */ + iter_impl& operator=(const iter_impl::type>& other) noexcept + { + m_object = other.m_object; + m_it = other.m_it; + return *this; + } + + private: + /*! + @brief set the iterator to the first value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_begin() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = m_object->m_value.object->begin(); + break; + } + + case value_t::array: + { + m_it.array_iterator = m_object->m_value.array->begin(); + break; + } + + case value_t::null: + { + // set to end so begin()==end() is true: null is empty + m_it.primitive_iterator.set_end(); + break; + } + + default: + { + m_it.primitive_iterator.set_begin(); + break; + } + } + } + + /*! + @brief set the iterator past the last value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_end() noexcept + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = m_object->m_value.object->end(); + break; + } + + case value_t::array: + { + m_it.array_iterator = m_object->m_value.array->end(); + break; + } + + default: + { + m_it.primitive_iterator.set_end(); + break; + } + } + } + + public: + /*! + @brief return a reference to the value pointed to by the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator*() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return m_it.object_iterator->second; + } + + case value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return *m_it.array_iterator; + } + + case value_t::null: + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + + default: + { + if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) + { + return *m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + } + } + } + + /*! + @brief dereference the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + pointer operator->() const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + assert(m_it.object_iterator != m_object->m_value.object->end()); + return &(m_it.object_iterator->second); + } + + case value_t::array: + { + assert(m_it.array_iterator != m_object->m_value.array->end()); + return &*m_it.array_iterator; + } + + default: + { + if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) + { + return m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + } + } + } + + /*! + @brief post-increment (it++) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl const operator++(int) + { + auto result = *this; + ++(*this); + return result; + } + + /*! + @brief pre-increment (++it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator++() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + std::advance(m_it.object_iterator, 1); + break; + } + + case value_t::array: + { + std::advance(m_it.array_iterator, 1); + break; + } + + default: + { + ++m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief post-decrement (it--) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl const operator--(int) + { + auto result = *this; + --(*this); + return result; + } + + /*! + @brief pre-decrement (--it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator--() + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + std::advance(m_it.object_iterator, -1); + break; + } + + case value_t::array: + { + std::advance(m_it.array_iterator, -1); + break; + } + + default: + { + --m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief comparison: equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator==(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (JSON_UNLIKELY(m_object != other.m_object)) + { + JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); + } + + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + return (m_it.object_iterator == other.m_it.object_iterator); + + case value_t::array: + return (m_it.array_iterator == other.m_it.array_iterator); + + default: + return (m_it.primitive_iterator == other.m_it.primitive_iterator); + } + } + + /*! + @brief comparison: not equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator!=(const iter_impl& other) const + { + return not operator==(other); + } + + /*! + @brief comparison: smaller + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (JSON_UNLIKELY(m_object != other.m_object)) + { + JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); + } + + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators")); + + case value_t::array: + return (m_it.array_iterator < other.m_it.array_iterator); + + default: + return (m_it.primitive_iterator < other.m_it.primitive_iterator); + } + } + + /*! + @brief comparison: less than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<=(const iter_impl& other) const + { + return not other.operator < (*this); + } + + /*! + @brief comparison: greater than + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>(const iter_impl& other) const + { + return not operator<=(other); + } + + /*! + @brief comparison: greater than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>=(const iter_impl& other) const + { + return not operator<(other); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator+=(difference_type i) + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); + + case value_t::array: + { + std::advance(m_it.array_iterator, i); + break; + } + + default: + { + m_it.primitive_iterator += i; + break; + } + } + + return *this; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator-=(difference_type i) + { + return operator+=(-i); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator+(difference_type i) const + { + auto result = *this; + result += i; + return result; + } + + /*! + @brief addition of distance and iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + friend iter_impl operator+(difference_type i, const iter_impl& it) + { + auto result = it; + result += i; + return result; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator-(difference_type i) const + { + auto result = *this; + result -= i; + return result; + } + + /*! + @brief return difference + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + difference_type operator-(const iter_impl& other) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); + + case value_t::array: + return m_it.array_iterator - other.m_it.array_iterator; + + default: + return m_it.primitive_iterator - other.m_it.primitive_iterator; + } + } + + /*! + @brief access to successor + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator[](difference_type n) const + { + assert(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators")); + + case value_t::array: + return *std::next(m_it.array_iterator, n); + + case value_t::null: + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + + default: + { + if (JSON_LIKELY(m_it.primitive_iterator.get_value() == -n)) + { + return *m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value")); + } + } + } + + /*! + @brief return the key of an object iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + typename object_t::key_type key() const + { + assert(m_object != nullptr); + + if (JSON_LIKELY(m_object->is_object())) + { + return m_it.object_iterator->first; + } + + JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators")); + } + + /*! + @brief return the value of an iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference value() const + { + return operator*(); + } + + private: + /// associated JSON instance + pointer m_object = nullptr; + /// the actual iterator of the associated instance + internal_iterator::type> m_it = {}; +}; +} +} + +#endif + +/*** End of inlined file: iter_impl.hpp ***/ + + +/*** Start of inlined file: iteration_proxy.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP + +#include // size_t +#include // string, to_string + +namespace nlohmann +{ +namespace detail +{ +/// proxy class for the iterator_wrapper functions +template class iteration_proxy +{ + private: + /// helper class for iteration + class iteration_proxy_internal + { + private: + /// the iterator + IteratorType anchor; + /// an index for arrays (used to create key names) + std::size_t array_index = 0; + + public: + explicit iteration_proxy_internal(IteratorType it) noexcept : anchor(it) {} + + /// dereference operator (needed for range-based for) + iteration_proxy_internal& operator*() + { + return *this; + } + + /// increment operator (needed for range-based for) + iteration_proxy_internal& operator++() + { + ++anchor; + ++array_index; + + return *this; + } + + /// inequality operator (needed for range-based for) + bool operator!=(const iteration_proxy_internal& o) const noexcept + { + return anchor != o.anchor; + } + + /// return key of the iterator + std::string key() const + { + assert(anchor.m_object != nullptr); + + switch (anchor.m_object->type()) + { + // use integer array index as key + case value_t::array: + return std::to_string(array_index); + + // use key from the object + case value_t::object: + return anchor.key(); + + // use an empty key for all primitive types + default: + return ""; + } + } + + /// return value of the iterator + typename IteratorType::reference value() const + { + return anchor.value(); + } + }; + + /// the container to iterate + typename IteratorType::reference container; + + public: + /// construct iteration proxy from a container + explicit iteration_proxy(typename IteratorType::reference cont) + : container(cont) {} + + /// return iterator begin (needed for range-based for) + iteration_proxy_internal begin() noexcept + { + return iteration_proxy_internal(container.begin()); + } + + /// return iterator end (needed for range-based for) + iteration_proxy_internal end() noexcept + { + return iteration_proxy_internal(container.end()); + } +}; +} +} + +#endif + +/*** End of inlined file: iteration_proxy.hpp ***/ + + +/*** Start of inlined file: json_reverse_iterator.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP +#define NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP + +#include // ptrdiff_t +#include // reverse_iterator +#include // declval + +namespace nlohmann +{ +namespace detail +{ +////////////////////// +// reverse_iterator // +////////////////////// + +/*! +@brief a template for a reverse iterator class + +@tparam Base the base iterator type to reverse. Valid types are @ref +iterator (to create @ref reverse_iterator) and @ref const_iterator (to +create @ref const_reverse_iterator). + +@requirement The class satisfies the following concept requirements: +- +[BidirectionalIterator](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator): + The iterator that can be moved can be moved in both directions (i.e. + incremented and decremented). +- [OutputIterator](http://en.cppreference.com/w/cpp/concept/OutputIterator): + It is possible to write to the pointed-to element (only if @a Base is + @ref iterator). + +@since version 1.0.0 +*/ +template +class json_reverse_iterator : public std::reverse_iterator +{ + public: + using difference_type = std::ptrdiff_t; + /// shortcut to the reverse iterator adapter + using base_iterator = std::reverse_iterator; + /// the reference type for the pointed-to element + using reference = typename Base::reference; + + /// create reverse iterator from iterator + json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept + : base_iterator(it) {} + + /// create reverse iterator from base class + json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {} + + /// post-increment (it++) + json_reverse_iterator const operator++(int) + { + return static_cast(base_iterator::operator++(1)); + } + + /// pre-increment (++it) + json_reverse_iterator& operator++() + { + return static_cast(base_iterator::operator++()); + } + + /// post-decrement (it--) + json_reverse_iterator const operator--(int) + { + return static_cast(base_iterator::operator--(1)); + } + + /// pre-decrement (--it) + json_reverse_iterator& operator--() + { + return static_cast(base_iterator::operator--()); + } + + /// add to iterator + json_reverse_iterator& operator+=(difference_type i) + { + return static_cast(base_iterator::operator+=(i)); + } + + /// add to iterator + json_reverse_iterator operator+(difference_type i) const + { + return static_cast(base_iterator::operator+(i)); + } + + /// subtract from iterator + json_reverse_iterator operator-(difference_type i) const + { + return static_cast(base_iterator::operator-(i)); + } + + /// return difference + difference_type operator-(const json_reverse_iterator& other) const + { + return base_iterator(*this) - base_iterator(other); + } + + /// access to successor + reference operator[](difference_type n) const + { + return *(this->operator+(n)); + } + + /// return the key of an object iterator + auto key() const -> decltype(std::declval().key()) + { + auto it = --this->base(); + return it.key(); + } + + /// return the value of an iterator + reference value() const + { + auto it = --this->base(); + return it.operator * (); + } +}; +} +} + +#endif + +/*** End of inlined file: json_reverse_iterator.hpp ***/ + + +/*** Start of inlined file: output_adapters.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP + +#include // copy +#include // size_t +#include // streamsize +#include // back_inserter +#include // shared_ptr, make_shared +#include // basic_ostream +#include // basic_string +#include // vector + +namespace nlohmann +{ +namespace detail +{ +/// abstract output adapter interface +template struct output_adapter_protocol +{ + virtual void write_character(CharType c) = 0; + virtual void write_characters(const CharType* s, std::size_t length) = 0; + virtual ~output_adapter_protocol() = default; +}; + +/// a type to simplify interfaces +template +using output_adapter_t = std::shared_ptr>; + +/// output adapter for byte vectors +template +class output_vector_adapter : public output_adapter_protocol +{ + public: + explicit output_vector_adapter(std::vector& vec) : v(vec) {} + + void write_character(CharType c) override + { + v.push_back(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + std::copy(s, s + length, std::back_inserter(v)); + } + + private: + std::vector& v; +}; + +/// output adapter for output streams +template +class output_stream_adapter : public output_adapter_protocol +{ + public: + explicit output_stream_adapter(std::basic_ostream& s) : stream(s) {} + + void write_character(CharType c) override + { + stream.put(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + stream.write(s, static_cast(length)); + } + + private: + std::basic_ostream& stream; +}; + +/// output adapter for basic_string +template +class output_string_adapter : public output_adapter_protocol +{ + public: + explicit output_string_adapter(std::basic_string& s) : str(s) {} + + void write_character(CharType c) override + { + str.push_back(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + str.append(s, length); + } + + private: + std::basic_string& str; +}; + +template +class output_adapter +{ + public: + output_adapter(std::vector& vec) + : oa(std::make_shared>(vec)) {} + + output_adapter(std::basic_ostream& s) + : oa(std::make_shared>(s)) {} + + output_adapter(std::basic_string& s) + : oa(std::make_shared>(s)) {} + + operator output_adapter_t() + { + return oa; + } + + private: + output_adapter_t oa = nullptr; +}; +} +} + +#endif + +/*** End of inlined file: output_adapters.hpp ***/ + + +/*** Start of inlined file: binary_reader.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP + +#include // generate_n +#include // array +#include // assert +#include // ldexp +#include // size_t +#include // uint8_t, uint16_t, uint32_t, uint64_t +#include // memcpy +#include // setw, setfill +#include // hex +#include // back_inserter +#include // numeric_limits +#include // stringstream +#include // char_traits, string +#include // make_pair, move + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// binary reader // +/////////////////// + +/*! +@brief deserialization of CBOR and MessagePack values +*/ +template +class binary_reader +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + + public: + /*! + @brief create a binary reader + + @param[in] adapter input adapter to read from + */ + explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter)) + { + assert(ia); + } + + /*! + @brief create a JSON value from CBOR input + + @param[in] strict whether to expect the input to be consumed completed + @return JSON value created from CBOR input + + @throw parse_error.110 if input ended unexpectedly or the end of file was + not reached when @a strict was set to true + @throw parse_error.112 if unsupported byte was read + */ + BasicJsonType parse_cbor(const bool strict) + { + const auto res = parse_cbor_internal(); + if (strict) + { + get(); + check_eof(true); + } + return res; + } + + /*! + @brief create a JSON value from MessagePack input + + @param[in] strict whether to expect the input to be consumed completed + @return JSON value created from MessagePack input + + @throw parse_error.110 if input ended unexpectedly or the end of file was + not reached when @a strict was set to true + @throw parse_error.112 if unsupported byte was read + */ + BasicJsonType parse_msgpack(const bool strict) + { + const auto res = parse_msgpack_internal(); + if (strict) + { + get(); + check_eof(true); + } + return res; + } + + /*! + @brief determine system byte order + + @return true if and only if system's byte order is little endian + + @note from http://stackoverflow.com/a/1001328/266378 + */ + static constexpr bool little_endianess(int num = 1) noexcept + { + return (*reinterpret_cast(&num) == 1); + } + + private: + /*! + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + */ + BasicJsonType parse_cbor_internal(const bool get_char = true) + { + switch (get_char ? get() : current) + { + // EOF + case std::char_traits::eof(): + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + + // Integer 0x00..0x17 (0..23) + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + return static_cast(current); + + case 0x18: // Unsigned integer (one-byte uint8_t follows) + return get_number(); + + case 0x19: // Unsigned integer (two-byte uint16_t follows) + return get_number(); + + case 0x1A: // Unsigned integer (four-byte uint32_t follows) + return get_number(); + + case 0x1B: // Unsigned integer (eight-byte uint64_t follows) + return get_number(); + + // Negative integer -1-0x00..-1-0x17 (-1..-24) + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + return static_cast(0x20 - 1 - current); + + case 0x38: // Negative integer (one-byte uint8_t follows) + { + // must be uint8_t ! + return static_cast(-1) - get_number(); + } + + case 0x39: // Negative integer -1-n (two-byte uint16_t follows) + { + return static_cast(-1) - get_number(); + } + + case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) + { + return static_cast(-1) - get_number(); + } + + case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) + { + return static_cast(-1) - + static_cast(get_number()); + } + + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + case 0x7F: // UTF-8 string (indefinite length) + { + return get_cbor_string(); + } + + // array (0x00..0x17 data items follow) + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + { + return get_cbor_array(current & 0x1F); + } + + case 0x98: // array (one-byte uint8_t for n follows) + { + return get_cbor_array(get_number()); + } + + case 0x99: // array (two-byte uint16_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9A: // array (four-byte uint32_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9B: // array (eight-byte uint64_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9F: // array (indefinite length) + { + BasicJsonType result = value_t::array; + while (get() != 0xFF) + { + result.push_back(parse_cbor_internal(false)); + } + return result; + } + + // map (0x00..0x17 pairs of data items follow) + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + { + return get_cbor_object(current & 0x1F); + } + + case 0xB8: // map (one-byte uint8_t for n follows) + { + return get_cbor_object(get_number()); + } + + case 0xB9: // map (two-byte uint16_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBA: // map (four-byte uint32_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBB: // map (eight-byte uint64_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBF: // map (indefinite length) + { + BasicJsonType result = value_t::object; + while (get() != 0xFF) + { + auto key = get_cbor_string(); + result[key] = parse_cbor_internal(); + } + return result; + } + + case 0xF4: // false + { + return false; + } + + case 0xF5: // true + { + return true; + } + + case 0xF6: // null + { + return value_t::null; + } + + case 0xF9: // Half-Precision Float (two-byte IEEE 754) + { + const int byte1 = get(); + check_eof(); + const int byte2 = get(); + check_eof(); + + // code from RFC 7049, Appendix D, Figure 3: + // As half-precision floating-point numbers were only added + // to IEEE 754 in 2008, today's programming platforms often + // still only have limited support for them. It is very + // easy to include at least decoding support for them even + // without such support. An example of a small decoder for + // half-precision floating-point numbers in the C language + // is shown in Fig. 3. + const int half = (byte1 << 8) + byte2; + const int exp = (half >> 10) & 0x1F; + const int mant = half & 0x3FF; + double val; + if (exp == 0) + { + val = std::ldexp(mant, -24); + } + else if (exp != 31) + { + val = std::ldexp(mant + 1024, exp - 25); + } + else + { + val = (mant == 0) ? std::numeric_limits::infinity() + : std::numeric_limits::quiet_NaN(); + } + return (half & 0x8000) != 0 ? -val : val; + } + + case 0xFA: // Single-Precision Float (four-byte IEEE 754) + { + return get_number(); + } + + case 0xFB: // Double-Precision Float (eight-byte IEEE 754) + { + return get_number(); + } + + default: // anything else (0xFF is handled inside the other types) + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, "error reading CBOR; last byte: 0x" + ss.str())); + } + } + } + + BasicJsonType parse_msgpack_internal() + { + switch (get()) + { + // EOF + case std::char_traits::eof(): + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + + // positive fixint + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5C: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + return static_cast(current); + + // fixmap + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + { + return get_msgpack_object(current & 0x0F); + } + + // fixarray + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + case 0x98: + case 0x99: + case 0x9A: + case 0x9B: + case 0x9C: + case 0x9D: + case 0x9E: + case 0x9F: + { + return get_msgpack_array(current & 0x0F); + } + + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + return get_msgpack_string(); + + case 0xC0: // nil + return value_t::null; + + case 0xC2: // false + return false; + + case 0xC3: // true + return true; + + case 0xCA: // float 32 + return get_number(); + + case 0xCB: // float 64 + return get_number(); + + case 0xCC: // uint 8 + return get_number(); + + case 0xCD: // uint 16 + return get_number(); + + case 0xCE: // uint 32 + return get_number(); + + case 0xCF: // uint 64 + return get_number(); + + case 0xD0: // int 8 + return get_number(); + + case 0xD1: // int 16 + return get_number(); + + case 0xD2: // int 32 + return get_number(); + + case 0xD3: // int 64 + return get_number(); + + case 0xD9: // str 8 + case 0xDA: // str 16 + case 0xDB: // str 32 + return get_msgpack_string(); + + case 0xDC: // array 16 + { + return get_msgpack_array(get_number()); + } + + case 0xDD: // array 32 + { + return get_msgpack_array(get_number()); + } + + case 0xDE: // map 16 + { + return get_msgpack_object(get_number()); + } + + case 0xDF: // map 32 + { + return get_msgpack_object(get_number()); + } + + // positive fixint + case 0xE0: + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xED: + case 0xEE: + case 0xEF: + case 0xF0: + case 0xF1: + case 0xF2: + case 0xF3: + case 0xF4: + case 0xF5: + case 0xF6: + case 0xF7: + case 0xF8: + case 0xF9: + case 0xFA: + case 0xFB: + case 0xFC: + case 0xFD: + case 0xFE: + case 0xFF: + return static_cast(current); + + default: // anything else + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, + "error reading MessagePack; last byte: 0x" + ss.str())); + } + } + } + + /*! + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a -'ve valued + `std::char_traits::eof()` in that case. + + @return character read from the input + */ + int get() + { + ++chars_read; + return (current = ia->get_character()); + } + + /* + @brief read a number from the input + + @tparam NumberType the type of the number + + @return number of type @a NumberType + + @note This function needs to respect the system's endianess, because + bytes in CBOR and MessagePack are stored in network order (big + endian) and therefore need reordering on little endian systems. + + @throw parse_error.110 if input has less than `sizeof(NumberType)` bytes + */ + template NumberType get_number() + { + // step 1: read input into array with system's byte order + std::array vec; + for (std::size_t i = 0; i < sizeof(NumberType); ++i) + { + get(); + check_eof(); + + // reverse byte order prior to conversion if necessary + if (is_little_endian) + { + vec[sizeof(NumberType) - i - 1] = static_cast(current); + } + else + { + vec[i] = static_cast(current); // LCOV_EXCL_LINE + } + } + + // step 2: convert array into number of type T and return + NumberType result; + std::memcpy(&result, vec.data(), sizeof(NumberType)); + return result; + } + + /*! + @brief create a string by reading characters from the input + + @param[in] len number of bytes to read + + @note We can not reserve @a len bytes for the result, because @a len + may be too large. Usually, @ref check_eof() detects the end of + the input before we run out of string memory. + + @return string created by reading @a len bytes + + @throw parse_error.110 if input has less than @a len bytes + */ + template + std::string get_string(const NumberType len) + { + std::string result; + std::generate_n(std::back_inserter(result), len, [this]() + { + get(); + check_eof(); + return static_cast(current); + }); + return result; + } + + /*! + @brief reads a CBOR string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + Additionally, CBOR's strings with indefinite lengths are supported. + + @return string + + @throw parse_error.110 if input ended + @throw parse_error.113 if an unexpected byte is read + */ + std::string get_cbor_string() + { + check_eof(); + + switch (current) + { + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + { + return get_string(current & 0x1F); + } + + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + { + return get_string(get_number()); + } + + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + { + return get_string(get_number()); + } + + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + { + return get_string(get_number()); + } + + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + { + return get_string(get_number()); + } + + case 0x7F: // UTF-8 string (indefinite length) + { + std::string result; + while (get() != 0xFF) + { + check_eof(); + result.push_back(static_cast(current)); + } + return result; + } + + default: + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, "expected a CBOR string; last byte: 0x" + ss.str())); + } + } + } + + template + BasicJsonType get_cbor_array(const NumberType len) + { + BasicJsonType result = value_t::array; + std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() + { + return parse_cbor_internal(); + }); + return result; + } + + template + BasicJsonType get_cbor_object(const NumberType len) + { + BasicJsonType result = value_t::object; + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + len, [this]() + { + get(); + auto key = get_cbor_string(); + auto val = parse_cbor_internal(); + return std::make_pair(std::move(key), std::move(val)); + }); + return result; + } + + /*! + @brief reads a MessagePack string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + + @return string + + @throw parse_error.110 if input ended + @throw parse_error.113 if an unexpected byte is read + */ + std::string get_msgpack_string() + { + check_eof(); + + switch (current) + { + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + { + return get_string(current & 0x1F); + } + + case 0xD9: // str 8 + { + return get_string(get_number()); + } + + case 0xDA: // str 16 + { + return get_string(get_number()); + } + + case 0xDB: // str 32 + { + return get_string(get_number()); + } + + default: + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, + "expected a MessagePack string; last byte: 0x" + ss.str())); + } + } + } + + template + BasicJsonType get_msgpack_array(const NumberType len) + { + BasicJsonType result = value_t::array; + std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() + { + return parse_msgpack_internal(); + }); + return result; + } + + template + BasicJsonType get_msgpack_object(const NumberType len) + { + BasicJsonType result = value_t::object; + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + len, [this]() + { + get(); + auto key = get_msgpack_string(); + auto val = parse_msgpack_internal(); + return std::make_pair(std::move(key), std::move(val)); + }); + return result; + } + + /*! + @brief check if input ended + @throw parse_error.110 if input ended + */ + void check_eof(const bool expect_eof = false) const + { + if (expect_eof) + { + if (JSON_UNLIKELY(current != std::char_traits::eof())) + { + JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); + } + } + else + { + if (JSON_UNLIKELY(current == std::char_traits::eof())) + { + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + } + } + } + + private: + /// input adapter + input_adapter_t ia = nullptr; + + /// the current character + int current = std::char_traits::eof(); + + /// the number of characters read + std::size_t chars_read = 0; + + /// whether we can assume little endianess + const bool is_little_endian = little_endianess(); +}; +} +} + +#endif + +/*** End of inlined file: binary_reader.hpp ***/ + + +/*** Start of inlined file: binary_writer.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP + +#include // reverse +#include // array +#include // uint8_t, uint16_t, uint32_t, uint64_t +#include // memcpy +#include // numeric_limits + + +/*** Start of inlined file: binary_reader.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP + +#include // generate_n +#include // array +#include // assert +#include // ldexp +#include // size_t +#include // uint8_t, uint16_t, uint32_t, uint64_t +#include // memcpy +#include // setw, setfill +#include // hex +#include // back_inserter +#include // numeric_limits +#include // stringstream +#include // char_traits, string +#include // make_pair, move + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// binary reader // +/////////////////// + +/*! +@brief deserialization of CBOR and MessagePack values +*/ +template +class binary_reader +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + + public: + /*! + @brief create a binary reader + + @param[in] adapter input adapter to read from + */ + explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter)) + { + assert(ia); + } + + /*! + @brief create a JSON value from CBOR input + + @param[in] strict whether to expect the input to be consumed completed + @return JSON value created from CBOR input + + @throw parse_error.110 if input ended unexpectedly or the end of file was + not reached when @a strict was set to true + @throw parse_error.112 if unsupported byte was read + */ + BasicJsonType parse_cbor(const bool strict) + { + const auto res = parse_cbor_internal(); + if (strict) + { + get(); + check_eof(true); + } + return res; + } + + /*! + @brief create a JSON value from MessagePack input + + @param[in] strict whether to expect the input to be consumed completed + @return JSON value created from MessagePack input + + @throw parse_error.110 if input ended unexpectedly or the end of file was + not reached when @a strict was set to true + @throw parse_error.112 if unsupported byte was read + */ + BasicJsonType parse_msgpack(const bool strict) + { + const auto res = parse_msgpack_internal(); + if (strict) + { + get(); + check_eof(true); + } + return res; + } + + /*! + @brief determine system byte order + + @return true if and only if system's byte order is little endian + + @note from http://stackoverflow.com/a/1001328/266378 + */ + static constexpr bool little_endianess(int num = 1) noexcept + { + return (*reinterpret_cast(&num) == 1); + } + + private: + /*! + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + */ + BasicJsonType parse_cbor_internal(const bool get_char = true) + { + switch (get_char ? get() : current) + { + // EOF + case std::char_traits::eof(): + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + + // Integer 0x00..0x17 (0..23) + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + return static_cast(current); + + case 0x18: // Unsigned integer (one-byte uint8_t follows) + return get_number(); + + case 0x19: // Unsigned integer (two-byte uint16_t follows) + return get_number(); + + case 0x1A: // Unsigned integer (four-byte uint32_t follows) + return get_number(); + + case 0x1B: // Unsigned integer (eight-byte uint64_t follows) + return get_number(); + + // Negative integer -1-0x00..-1-0x17 (-1..-24) + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + return static_cast(0x20 - 1 - current); + + case 0x38: // Negative integer (one-byte uint8_t follows) + { + // must be uint8_t ! + return static_cast(-1) - get_number(); + } + + case 0x39: // Negative integer -1-n (two-byte uint16_t follows) + { + return static_cast(-1) - get_number(); + } + + case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) + { + return static_cast(-1) - get_number(); + } + + case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) + { + return static_cast(-1) - + static_cast(get_number()); + } + + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + case 0x7F: // UTF-8 string (indefinite length) + { + return get_cbor_string(); + } + + // array (0x00..0x17 data items follow) + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + { + return get_cbor_array(current & 0x1F); + } + + case 0x98: // array (one-byte uint8_t for n follows) + { + return get_cbor_array(get_number()); + } + + case 0x99: // array (two-byte uint16_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9A: // array (four-byte uint32_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9B: // array (eight-byte uint64_t for n follow) + { + return get_cbor_array(get_number()); + } + + case 0x9F: // array (indefinite length) + { + BasicJsonType result = value_t::array; + while (get() != 0xFF) + { + result.push_back(parse_cbor_internal(false)); + } + return result; + } + + // map (0x00..0x17 pairs of data items follow) + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + { + return get_cbor_object(current & 0x1F); + } + + case 0xB8: // map (one-byte uint8_t for n follows) + { + return get_cbor_object(get_number()); + } + + case 0xB9: // map (two-byte uint16_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBA: // map (four-byte uint32_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBB: // map (eight-byte uint64_t for n follow) + { + return get_cbor_object(get_number()); + } + + case 0xBF: // map (indefinite length) + { + BasicJsonType result = value_t::object; + while (get() != 0xFF) + { + auto key = get_cbor_string(); + result[key] = parse_cbor_internal(); + } + return result; + } + + case 0xF4: // false + { + return false; + } + + case 0xF5: // true + { + return true; + } + + case 0xF6: // null + { + return value_t::null; + } + + case 0xF9: // Half-Precision Float (two-byte IEEE 754) + { + const int byte1 = get(); + check_eof(); + const int byte2 = get(); + check_eof(); + + // code from RFC 7049, Appendix D, Figure 3: + // As half-precision floating-point numbers were only added + // to IEEE 754 in 2008, today's programming platforms often + // still only have limited support for them. It is very + // easy to include at least decoding support for them even + // without such support. An example of a small decoder for + // half-precision floating-point numbers in the C language + // is shown in Fig. 3. + const int half = (byte1 << 8) + byte2; + const int exp = (half >> 10) & 0x1F; + const int mant = half & 0x3FF; + double val; + if (exp == 0) + { + val = std::ldexp(mant, -24); + } + else if (exp != 31) + { + val = std::ldexp(mant + 1024, exp - 25); + } + else + { + val = (mant == 0) ? std::numeric_limits::infinity() + : std::numeric_limits::quiet_NaN(); + } + return (half & 0x8000) != 0 ? -val : val; + } + + case 0xFA: // Single-Precision Float (four-byte IEEE 754) + { + return get_number(); + } + + case 0xFB: // Double-Precision Float (eight-byte IEEE 754) + { + return get_number(); + } + + default: // anything else (0xFF is handled inside the other types) + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, "error reading CBOR; last byte: 0x" + ss.str())); + } + } + } + + BasicJsonType parse_msgpack_internal() + { + switch (get()) + { + // EOF + case std::char_traits::eof(): + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + + // positive fixint + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5C: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + return static_cast(current); + + // fixmap + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + { + return get_msgpack_object(current & 0x0F); + } + + // fixarray + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + case 0x98: + case 0x99: + case 0x9A: + case 0x9B: + case 0x9C: + case 0x9D: + case 0x9E: + case 0x9F: + { + return get_msgpack_array(current & 0x0F); + } + + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + return get_msgpack_string(); + + case 0xC0: // nil + return value_t::null; + + case 0xC2: // false + return false; + + case 0xC3: // true + return true; + + case 0xCA: // float 32 + return get_number(); + + case 0xCB: // float 64 + return get_number(); + + case 0xCC: // uint 8 + return get_number(); + + case 0xCD: // uint 16 + return get_number(); + + case 0xCE: // uint 32 + return get_number(); + + case 0xCF: // uint 64 + return get_number(); + + case 0xD0: // int 8 + return get_number(); + + case 0xD1: // int 16 + return get_number(); + + case 0xD2: // int 32 + return get_number(); + + case 0xD3: // int 64 + return get_number(); + + case 0xD9: // str 8 + case 0xDA: // str 16 + case 0xDB: // str 32 + return get_msgpack_string(); + + case 0xDC: // array 16 + { + return get_msgpack_array(get_number()); + } + + case 0xDD: // array 32 + { + return get_msgpack_array(get_number()); + } + + case 0xDE: // map 16 + { + return get_msgpack_object(get_number()); + } + + case 0xDF: // map 32 + { + return get_msgpack_object(get_number()); + } + + // positive fixint + case 0xE0: + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xED: + case 0xEE: + case 0xEF: + case 0xF0: + case 0xF1: + case 0xF2: + case 0xF3: + case 0xF4: + case 0xF5: + case 0xF6: + case 0xF7: + case 0xF8: + case 0xF9: + case 0xFA: + case 0xFB: + case 0xFC: + case 0xFD: + case 0xFE: + case 0xFF: + return static_cast(current); + + default: // anything else + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, + "error reading MessagePack; last byte: 0x" + ss.str())); + } + } + } + + /*! + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a -'ve valued + `std::char_traits::eof()` in that case. + + @return character read from the input + */ + int get() + { + ++chars_read; + return (current = ia->get_character()); + } + + /* + @brief read a number from the input + + @tparam NumberType the type of the number + + @return number of type @a NumberType + + @note This function needs to respect the system's endianess, because + bytes in CBOR and MessagePack are stored in network order (big + endian) and therefore need reordering on little endian systems. + + @throw parse_error.110 if input has less than `sizeof(NumberType)` bytes + */ + template NumberType get_number() + { + // step 1: read input into array with system's byte order + std::array vec; + for (std::size_t i = 0; i < sizeof(NumberType); ++i) + { + get(); + check_eof(); + + // reverse byte order prior to conversion if necessary + if (is_little_endian) + { + vec[sizeof(NumberType) - i - 1] = static_cast(current); + } + else + { + vec[i] = static_cast(current); // LCOV_EXCL_LINE + } + } + + // step 2: convert array into number of type T and return + NumberType result; + std::memcpy(&result, vec.data(), sizeof(NumberType)); + return result; + } + + /*! + @brief create a string by reading characters from the input + + @param[in] len number of bytes to read + + @note We can not reserve @a len bytes for the result, because @a len + may be too large. Usually, @ref check_eof() detects the end of + the input before we run out of string memory. + + @return string created by reading @a len bytes + + @throw parse_error.110 if input has less than @a len bytes + */ + template + std::string get_string(const NumberType len) + { + std::string result; + std::generate_n(std::back_inserter(result), len, [this]() + { + get(); + check_eof(); + return static_cast(current); + }); + return result; + } + + /*! + @brief reads a CBOR string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + Additionally, CBOR's strings with indefinite lengths are supported. + + @return string + + @throw parse_error.110 if input ended + @throw parse_error.113 if an unexpected byte is read + */ + std::string get_cbor_string() + { + check_eof(); + + switch (current) + { + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + { + return get_string(current & 0x1F); + } + + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + { + return get_string(get_number()); + } + + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + { + return get_string(get_number()); + } + + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + { + return get_string(get_number()); + } + + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + { + return get_string(get_number()); + } + + case 0x7F: // UTF-8 string (indefinite length) + { + std::string result; + while (get() != 0xFF) + { + check_eof(); + result.push_back(static_cast(current)); + } + return result; + } + + default: + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, "expected a CBOR string; last byte: 0x" + ss.str())); + } + } + } + + template + BasicJsonType get_cbor_array(const NumberType len) + { + BasicJsonType result = value_t::array; + std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() + { + return parse_cbor_internal(); + }); + return result; + } + + template + BasicJsonType get_cbor_object(const NumberType len) + { + BasicJsonType result = value_t::object; + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + len, [this]() + { + get(); + auto key = get_cbor_string(); + auto val = parse_cbor_internal(); + return std::make_pair(std::move(key), std::move(val)); + }); + return result; + } + + /*! + @brief reads a MessagePack string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + + @return string + + @throw parse_error.110 if input ended + @throw parse_error.113 if an unexpected byte is read + */ + std::string get_msgpack_string() + { + check_eof(); + + switch (current) + { + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + { + return get_string(current & 0x1F); + } + + case 0xD9: // str 8 + { + return get_string(get_number()); + } + + case 0xDA: // str 16 + { + return get_string(get_number()); + } + + case 0xDB: // str 32 + { + return get_string(get_number()); + } + + default: + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, + "expected a MessagePack string; last byte: 0x" + ss.str())); + } + } + } + + template + BasicJsonType get_msgpack_array(const NumberType len) + { + BasicJsonType result = value_t::array; + std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() + { + return parse_msgpack_internal(); + }); + return result; + } + + template + BasicJsonType get_msgpack_object(const NumberType len) + { + BasicJsonType result = value_t::object; + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + len, [this]() + { + get(); + auto key = get_msgpack_string(); + auto val = parse_msgpack_internal(); + return std::make_pair(std::move(key), std::move(val)); + }); + return result; + } + + /*! + @brief check if input ended + @throw parse_error.110 if input ended + */ + void check_eof(const bool expect_eof = false) const + { + if (expect_eof) + { + if (JSON_UNLIKELY(current != std::char_traits::eof())) + { + JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); + } + } + else + { + if (JSON_UNLIKELY(current == std::char_traits::eof())) + { + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + } + } + } + + private: + /// input adapter + input_adapter_t ia = nullptr; + + /// the current character + int current = std::char_traits::eof(); + + /// the number of characters read + std::size_t chars_read = 0; + + /// whether we can assume little endianess + const bool is_little_endian = little_endianess(); +}; +} +} + +#endif + +/*** End of inlined file: binary_reader.hpp ***/ + + +/*** Start of inlined file: output_adapters.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP +#define NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP + +#include // copy +#include // size_t +#include // streamsize +#include // back_inserter +#include // shared_ptr, make_shared +#include // basic_ostream +#include // basic_string +#include // vector + +namespace nlohmann +{ +namespace detail +{ +/// abstract output adapter interface +template struct output_adapter_protocol +{ + virtual void write_character(CharType c) = 0; + virtual void write_characters(const CharType* s, std::size_t length) = 0; + virtual ~output_adapter_protocol() = default; +}; + +/// a type to simplify interfaces +template +using output_adapter_t = std::shared_ptr>; + +/// output adapter for byte vectors +template +class output_vector_adapter : public output_adapter_protocol +{ + public: + explicit output_vector_adapter(std::vector& vec) : v(vec) {} + + void write_character(CharType c) override + { + v.push_back(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + std::copy(s, s + length, std::back_inserter(v)); + } + + private: + std::vector& v; +}; + +/// output adapter for output streams +template +class output_stream_adapter : public output_adapter_protocol +{ + public: + explicit output_stream_adapter(std::basic_ostream& s) : stream(s) {} + + void write_character(CharType c) override + { + stream.put(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + stream.write(s, static_cast(length)); + } + + private: + std::basic_ostream& stream; +}; + +/// output adapter for basic_string +template +class output_string_adapter : public output_adapter_protocol +{ + public: + explicit output_string_adapter(std::basic_string& s) : str(s) {} + + void write_character(CharType c) override + { + str.push_back(c); + } + + void write_characters(const CharType* s, std::size_t length) override + { + str.append(s, length); + } + + private: + std::basic_string& str; +}; + +template +class output_adapter +{ + public: + output_adapter(std::vector& vec) + : oa(std::make_shared>(vec)) {} + + output_adapter(std::basic_ostream& s) + : oa(std::make_shared>(s)) {} + + output_adapter(std::basic_string& s) + : oa(std::make_shared>(s)) {} + + operator output_adapter_t() + { + return oa; + } + + private: + output_adapter_t oa = nullptr; +}; +} +} + +#endif + +/*** End of inlined file: output_adapters.hpp ***/ + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// binary writer // +/////////////////// + +/*! +@brief serialization to CBOR and MessagePack values +*/ +template +class binary_writer +{ + public: + /*! + @brief create a binary writer + + @param[in] adapter output adapter to write to + */ + explicit binary_writer(output_adapter_t adapter) : oa(adapter) + { + assert(oa); + } + + /*! + @brief[in] j JSON value to serialize + */ + void write_cbor(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::null: + { + oa->write_character(static_cast(0xF6)); + break; + } + + case value_t::boolean: + { + oa->write_character(j.m_value.boolean + ? static_cast(0xF5) + : static_cast(0xF4)); + break; + } + + case value_t::number_integer: + { + if (j.m_value.number_integer >= 0) + { + // CBOR does not differentiate between positive signed + // integers and unsigned integers. Therefore, we used the + // code from the value_t::number_unsigned case here. + if (j.m_value.number_integer <= 0x17) + { + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x18)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x19)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x1A)); + write_number(static_cast(j.m_value.number_integer)); + } + else + { + oa->write_character(static_cast(0x1B)); + write_number(static_cast(j.m_value.number_integer)); + } + } + else + { + // The conversions below encode the sign in the first + // byte, and the value is converted to a positive number. + const auto positive_number = -1 - j.m_value.number_integer; + if (j.m_value.number_integer >= -24) + { + write_number(static_cast(0x20 + positive_number)); + } + else if (positive_number <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x38)); + write_number(static_cast(positive_number)); + } + else if (positive_number <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x39)); + write_number(static_cast(positive_number)); + } + else if (positive_number <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x3A)); + write_number(static_cast(positive_number)); + } + else + { + oa->write_character(static_cast(0x3B)); + write_number(static_cast(positive_number)); + } + } + break; + } + + case value_t::number_unsigned: + { + if (j.m_value.number_unsigned <= 0x17) + { + write_number(static_cast(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x18)); + write_number(static_cast(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x19)); + write_number(static_cast(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + oa->write_character(static_cast(0x1A)); + write_number(static_cast(j.m_value.number_unsigned)); + } + else + { + oa->write_character(static_cast(0x1B)); + write_number(static_cast(j.m_value.number_unsigned)); + } + break; + } + + case value_t::number_float: // Double-Precision Float + { + oa->write_character(static_cast(0xFB)); + write_number(j.m_value.number_float); + break; + } + + case value_t::string: + { + // step 1: write control byte and the string length + const auto N = j.m_value.string->size(); + if (N <= 0x17) + { + write_number(static_cast(0x60 + N)); + } + else if (N <= 0xFF) + { + oa->write_character(static_cast(0x78)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFF) + { + oa->write_character(static_cast(0x79)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFFFFFF) + { + oa->write_character(static_cast(0x7A)); + write_number(static_cast(N)); + } + // LCOV_EXCL_START + else if (N <= 0xFFFFFFFFFFFFFFFF) + { + oa->write_character(static_cast(0x7B)); + write_number(static_cast(N)); + } + // LCOV_EXCL_STOP + + // step 2: write the string + oa->write_characters( + reinterpret_cast(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + // step 1: write control byte and the array size + const auto N = j.m_value.array->size(); + if (N <= 0x17) + { + write_number(static_cast(0x80 + N)); + } + else if (N <= 0xFF) + { + oa->write_character(static_cast(0x98)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFF) + { + oa->write_character(static_cast(0x99)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFFFFFF) + { + oa->write_character(static_cast(0x9A)); + write_number(static_cast(N)); + } + // LCOV_EXCL_START + else if (N <= 0xFFFFFFFFFFFFFFFF) + { + oa->write_character(static_cast(0x9B)); + write_number(static_cast(N)); + } + // LCOV_EXCL_STOP + + // step 2: write each element + for (const auto& el : *j.m_value.array) + { + write_cbor(el); + } + break; + } + + case value_t::object: + { + // step 1: write control byte and the object size + const auto N = j.m_value.object->size(); + if (N <= 0x17) + { + write_number(static_cast(0xA0 + N)); + } + else if (N <= 0xFF) + { + oa->write_character(static_cast(0xB8)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFF) + { + oa->write_character(static_cast(0xB9)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFFFFFF) + { + oa->write_character(static_cast(0xBA)); + write_number(static_cast(N)); + } + // LCOV_EXCL_START + else if (N <= 0xFFFFFFFFFFFFFFFF) + { + oa->write_character(static_cast(0xBB)); + write_number(static_cast(N)); + } + // LCOV_EXCL_STOP + + // step 2: write each element + for (const auto& el : *j.m_value.object) + { + write_cbor(el.first); + write_cbor(el.second); + } + break; + } + + default: + break; + } + } + + /*! + @brief[in] j JSON value to serialize + */ + void write_msgpack(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::null: // nil + { + oa->write_character(static_cast(0xC0)); + break; + } + + case value_t::boolean: // true and false + { + oa->write_character(j.m_value.boolean + ? static_cast(0xC3) + : static_cast(0xC2)); + break; + } + + case value_t::number_integer: + { + if (j.m_value.number_integer >= 0) + { + // MessagePack does not differentiate between positive + // signed integers and unsigned integers. Therefore, we used + // the code from the value_t::number_unsigned case here. + if (j.m_value.number_unsigned < 128) + { + // positive fixnum + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 8 + oa->write_character(static_cast(0xCC)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 16 + oa->write_character(static_cast(0xCD)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 32 + oa->write_character(static_cast(0xCE)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 64 + oa->write_character(static_cast(0xCF)); + write_number(static_cast(j.m_value.number_integer)); + } + } + else + { + if (j.m_value.number_integer >= -32) + { + // negative fixnum + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() and + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 8 + oa->write_character(static_cast(0xD0)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() and + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 16 + oa->write_character(static_cast(0xD1)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() and + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 32 + oa->write_character(static_cast(0xD2)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() and + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 64 + oa->write_character(static_cast(0xD3)); + write_number(static_cast(j.m_value.number_integer)); + } + } + break; + } + + case value_t::number_unsigned: + { + if (j.m_value.number_unsigned < 128) + { + // positive fixnum + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 8 + oa->write_character(static_cast(0xCC)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 16 + oa->write_character(static_cast(0xCD)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 32 + oa->write_character(static_cast(0xCE)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 64 + oa->write_character(static_cast(0xCF)); + write_number(static_cast(j.m_value.number_integer)); + } + break; + } + + case value_t::number_float: // float 64 + { + oa->write_character(static_cast(0xCB)); + write_number(j.m_value.number_float); + break; + } + + case value_t::string: + { + // step 1: write control byte and the string length + const auto N = j.m_value.string->size(); + if (N <= 31) + { + // fixstr + write_number(static_cast(0xA0 | N)); + } + else if (N <= 255) + { + // str 8 + oa->write_character(static_cast(0xD9)); + write_number(static_cast(N)); + } + else if (N <= 65535) + { + // str 16 + oa->write_character(static_cast(0xDA)); + write_number(static_cast(N)); + } + else if (N <= 4294967295) + { + // str 32 + oa->write_character(static_cast(0xDB)); + write_number(static_cast(N)); + } + + // step 2: write the string + oa->write_characters( + reinterpret_cast(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + // step 1: write control byte and the array size + const auto N = j.m_value.array->size(); + if (N <= 15) + { + // fixarray + write_number(static_cast(0x90 | N)); + } + else if (N <= 0xFFFF) + { + // array 16 + oa->write_character(static_cast(0xDC)); + write_number(static_cast(N)); + } + else if (N <= 0xFFFFFFFF) + { + // array 32 + oa->write_character(static_cast(0xDD)); + write_number(static_cast(N)); + } + + // step 2: write each element + for (const auto& el : *j.m_value.array) + { + write_msgpack(el); + } + break; + } + + case value_t::object: + { + // step 1: write control byte and the object size + const auto N = j.m_value.object->size(); + if (N <= 15) + { + // fixmap + write_number(static_cast(0x80 | (N & 0xF))); + } + else if (N <= 65535) + { + // map 16 + oa->write_character(static_cast(0xDE)); + write_number(static_cast(N)); + } + else if (N <= 4294967295) + { + // map 32 + oa->write_character(static_cast(0xDF)); + write_number(static_cast(N)); + } + + // step 2: write each element + for (const auto& el : *j.m_value.object) + { + write_msgpack(el.first); + write_msgpack(el.second); + } + break; + } + + default: + break; + } + } + + private: + /* + @brief write a number to output input + + @param[in] n number of type @a NumberType + @tparam NumberType the type of the number + + @note This function needs to respect the system's endianess, because bytes + in CBOR and MessagePack are stored in network order (big endian) and + therefore need reordering on little endian systems. + */ + template void write_number(NumberType n) + { + // step 1: write number to array of length NumberType + std::array vec; + std::memcpy(vec.data(), &n, sizeof(NumberType)); + + // step 2: write array to output (with possible reordering) + if (is_little_endian) + { + // reverse byte order prior to conversion if necessary + std::reverse(vec.begin(), vec.end()); + } + + oa->write_characters(vec.data(), sizeof(NumberType)); + } + + private: + /// whether we can assume little endianess + const bool is_little_endian = binary_reader::little_endianess(); + + /// the output + output_adapter_t oa = nullptr; +}; +} +} + +#endif + +/*** End of inlined file: binary_writer.hpp ***/ + + +/*** Start of inlined file: serializer.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_SERIALIZER_HPP +#define NLOHMANN_JSON_DETAIL_SERIALIZER_HPP + +#include // reverse, remove, fill, find, none_of +#include // array +#include // assert +#include // and, or +#include // localeconv, lconv +#include // labs, isfinite, isnan, signbit +#include // size_t, ptrdiff_t +#include // uint8_t +#include // snprintf +#include // next +#include // numeric_limits +#include // string +#include // is_same + +namespace nlohmann +{ +namespace detail +{ +/////////////////// +// serialization // +/////////////////// + +template +class serializer +{ + using string_t = typename BasicJsonType::string_t; + using number_float_t = typename BasicJsonType::number_float_t; + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + public: + /*! + @param[in] s output stream to serialize to + @param[in] ichar indentation character to use + */ + serializer(output_adapter_t s, const char ichar) + : o(std::move(s)), loc(std::localeconv()), + thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep)), + decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point)), + indent_char(ichar), indent_string(512, indent_char) {} + + // delete because of pointer members + serializer(const serializer&) = delete; + serializer& operator=(const serializer&) = delete; + + /*! + @brief internal implementation of the serialization function + + This function is called by the public member function dump and organizes + the serialization internally. The indentation level is propagated as + additional parameter. In case of arrays and objects, the function is + called recursively. + + - strings and object keys are escaped using `escape_string()` + - integer numbers are converted implicitly via `operator<<` + - floating-point numbers are converted to a string using `"%g"` format + + @param[in] val value to serialize + @param[in] pretty_print whether the output shall be pretty-printed + @param[in] indent_step the indent level + @param[in] current_indent the current indent level (only used internally) + */ + void dump(const BasicJsonType& val, const bool pretty_print, + const bool ensure_ascii, + const unsigned int indent_step, + const unsigned int current_indent = 0) + { + switch (val.m_type) + { + case value_t::object: + { + if (val.m_value.object->empty()) + { + o->write_characters("{}", 2); + return; + } + + if (pretty_print) + { + o->write_characters("{\n", 2); + + // variable to hold indentation for recursive calls + const auto new_indent = current_indent + indent_step; + if (JSON_UNLIKELY(indent_string.size() < new_indent)) + { + indent_string.resize(indent_string.size() * 2, ' '); + } + + // first n-1 elements + auto i = val.m_value.object->cbegin(); + for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) + { + o->write_characters(indent_string.c_str(), new_indent); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\": ", 3); + dump(i->second, true, ensure_ascii, indent_step, new_indent); + o->write_characters(",\n", 2); + } + + // last element + assert(i != val.m_value.object->cend()); + assert(std::next(i) == val.m_value.object->cend()); + o->write_characters(indent_string.c_str(), new_indent); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\": ", 3); + dump(i->second, true, ensure_ascii, indent_step, new_indent); + + o->write_character('\n'); + o->write_characters(indent_string.c_str(), current_indent); + o->write_character('}'); + } + else + { + o->write_character('{'); + + // first n-1 elements + auto i = val.m_value.object->cbegin(); + for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) + { + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\":", 2); + dump(i->second, false, ensure_ascii, indent_step, current_indent); + o->write_character(','); + } + + // last element + assert(i != val.m_value.object->cend()); + assert(std::next(i) == val.m_value.object->cend()); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\":", 2); + dump(i->second, false, ensure_ascii, indent_step, current_indent); + + o->write_character('}'); + } + + return; + } + + case value_t::array: + { + if (val.m_value.array->empty()) + { + o->write_characters("[]", 2); + return; + } + + if (pretty_print) + { + o->write_characters("[\n", 2); + + // variable to hold indentation for recursive calls + const auto new_indent = current_indent + indent_step; + if (JSON_UNLIKELY(indent_string.size() < new_indent)) + { + indent_string.resize(indent_string.size() * 2, ' '); + } + + // first n-1 elements + for (auto i = val.m_value.array->cbegin(); + i != val.m_value.array->cend() - 1; ++i) + { + o->write_characters(indent_string.c_str(), new_indent); + dump(*i, true, ensure_ascii, indent_step, new_indent); + o->write_characters(",\n", 2); + } + + // last element + assert(not val.m_value.array->empty()); + o->write_characters(indent_string.c_str(), new_indent); + dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent); + + o->write_character('\n'); + o->write_characters(indent_string.c_str(), current_indent); + o->write_character(']'); + } + else + { + o->write_character('['); + + // first n-1 elements + for (auto i = val.m_value.array->cbegin(); + i != val.m_value.array->cend() - 1; ++i) + { + dump(*i, false, ensure_ascii, indent_step, current_indent); + o->write_character(','); + } + + // last element + assert(not val.m_value.array->empty()); + dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent); + + o->write_character(']'); + } + + return; + } + + case value_t::string: + { + o->write_character('\"'); + dump_escaped(*val.m_value.string, ensure_ascii); + o->write_character('\"'); + return; + } + + case value_t::boolean: + { + if (val.m_value.boolean) + { + o->write_characters("true", 4); + } + else + { + o->write_characters("false", 5); + } + return; + } + + case value_t::number_integer: + { + dump_integer(val.m_value.number_integer); + return; + } + + case value_t::number_unsigned: + { + dump_integer(val.m_value.number_unsigned); + return; + } + + case value_t::number_float: + { + dump_float(val.m_value.number_float); + return; + } + + case value_t::discarded: + { + o->write_characters("", 11); + return; + } + + case value_t::null: + { + o->write_characters("null", 4); + return; + } + } + } + + private: + /*! + @brief returns the number of expected bytes following in UTF-8 string + + @param[in] u the first byte of a UTF-8 string + @return the number of expected bytes following + */ + static constexpr std::size_t bytes_following(const uint8_t u) + { + return ((u <= 127) ? 0 + : ((192 <= u and u <= 223) ? 1 + : ((224 <= u and u <= 239) ? 2 + : ((240 <= u and u <= 247) ? 3 : std::string::npos)))); + } + + /*! + @brief calculates the extra space to escape a JSON string + + @param[in] s the string to escape + @param[in] ensure_ascii whether to escape non-ASCII characters with + \uXXXX sequences + @return the number of characters required to escape string @a s + + @complexity Linear in the length of string @a s. + */ + static std::size_t extra_space(const string_t& s, + const bool ensure_ascii) noexcept + { + std::size_t res = 0; + + for (std::size_t i = 0; i < s.size(); ++i) + { + switch (s[i]) + { + // control characters that can be escaped with a backslash + case '"': + case '\\': + case '\b': + case '\f': + case '\n': + case '\r': + case '\t': + { + // from c (1 byte) to \x (2 bytes) + res += 1; + break; + } + + // control characters that need \uxxxx escaping + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x0B: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + { + // from c (1 byte) to \uxxxx (6 bytes) + res += 5; + break; + } + + default: + { + if (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F)) + { + const auto bytes = bytes_following(static_cast(s[i])); + // invalid characters will be detected by throw_if_invalid_utf8 + assert (bytes != std::string::npos); + + if (bytes == 3) + { + // codepoints that need 4 bytes (i.e., 3 additional + // bytes) in UTF-8 need a surrogate pair when \u + // escaping is used: from 4 bytes to \uxxxx\uxxxx + // (12 bytes) + res += (12 - bytes - 1); + } + else + { + // from x bytes to \uxxxx (6 bytes) + res += (6 - bytes - 1); + } + + // skip the additional bytes + i += bytes; + } + break; + } + } + } + + return res; + } + + static void escape_codepoint(int codepoint, string_t& result, std::size_t& pos) + { + // expecting a proper codepoint + assert(0x00 <= codepoint and codepoint <= 0x10FFFF); + + // the last written character was the backslash before the 'u' + assert(result[pos] == '\\'); + + // write the 'u' + result[++pos] = 'u'; + + // convert a number 0..15 to its hex representation (0..f) + static const std::array hexify = + { + { + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' + } + }; + + if (codepoint < 0x10000) + { + // codepoints U+0000..U+FFFF can be represented as \uxxxx. + result[++pos] = hexify[(codepoint >> 12) & 0x0F]; + result[++pos] = hexify[(codepoint >> 8) & 0x0F]; + result[++pos] = hexify[(codepoint >> 4) & 0x0F]; + result[++pos] = hexify[codepoint & 0x0F]; + } + else + { + // codepoints U+10000..U+10FFFF need a surrogate pair to be + // represented as \uxxxx\uxxxx. + // http://www.unicode.org/faq/utf_bom.html#utf16-4 + codepoint -= 0x10000; + const int high_surrogate = 0xD800 | ((codepoint >> 10) & 0x3FF); + const int low_surrogate = 0xDC00 | (codepoint & 0x3FF); + result[++pos] = hexify[(high_surrogate >> 12) & 0x0F]; + result[++pos] = hexify[(high_surrogate >> 8) & 0x0F]; + result[++pos] = hexify[(high_surrogate >> 4) & 0x0F]; + result[++pos] = hexify[high_surrogate & 0x0F]; + ++pos; // backslash is already in output + result[++pos] = 'u'; + result[++pos] = hexify[(low_surrogate >> 12) & 0x0F]; + result[++pos] = hexify[(low_surrogate >> 8) & 0x0F]; + result[++pos] = hexify[(low_surrogate >> 4) & 0x0F]; + result[++pos] = hexify[low_surrogate & 0x0F]; + } + + ++pos; + } + + /*! + @brief dump escaped string + + Escape a string by replacing certain special characters by a sequence of an + escape character (backslash) and another character and other control + characters by a sequence of "\u" followed by a four-digit hex + representation. The escaped string is written to output stream @a o. + + @param[in] s the string to escape + @param[in] ensure_ascii whether to escape non-ASCII characters with + \uXXXX sequences + + @complexity Linear in the length of string @a s. + */ + void dump_escaped(const string_t& s, const bool ensure_ascii) const + { + throw_if_invalid_utf8(s); + + const auto space = extra_space(s, ensure_ascii); + if (space == 0) + { + o->write_characters(s.c_str(), s.size()); + return; + } + + // create a result string of necessary size + string_t result(s.size() + space, '\\'); + std::size_t pos = 0; + + for (std::size_t i = 0; i < s.size(); ++i) + { + switch (s[i]) + { + case '"': // quotation mark (0x22) + { + result[pos + 1] = '"'; + pos += 2; + break; + } + + case '\\': // reverse solidus (0x5C) + { + // nothing to change + pos += 2; + break; + } + + case '\b': // backspace (0x08) + { + result[pos + 1] = 'b'; + pos += 2; + break; + } + + case '\f': // formfeed (0x0C) + { + result[pos + 1] = 'f'; + pos += 2; + break; + } + + case '\n': // newline (0x0A) + { + result[pos + 1] = 'n'; + pos += 2; + break; + } + + case '\r': // carriage return (0x0D) + { + result[pos + 1] = 'r'; + pos += 2; + break; + } + + case '\t': // horizontal tab (0x09) + { + result[pos + 1] = 't'; + pos += 2; + break; + } + + default: + { + // escape control characters (0x00..0x1F) or, if + // ensure_ascii parameter is used, non-ASCII characters + if ((0x00 <= s[i] and s[i] <= 0x1F) or + (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F))) + { + const auto bytes = bytes_following(static_cast(s[i])); + // invalid characters will be detected by throw_if_invalid_utf8 + assert (bytes != std::string::npos); + + // check that the additional bytes are present + assert(i + bytes < s.size()); + + // to use \uxxxx escaping, we first need to calculate + // the codepoint from the UTF-8 bytes + int codepoint = 0; + + // bytes is unsigned type: + assert(bytes <= 3); + switch (bytes) + { + case 0: + { + codepoint = s[i] & 0xFF; + break; + } + + case 1: + { + codepoint = ((s[i] & 0x3F) << 6) + + (s[i + 1] & 0x7F); + break; + } + + case 2: + { + codepoint = ((s[i] & 0x1F) << 12) + + ((s[i + 1] & 0x7F) << 6) + + (s[i + 2] & 0x7F); + break; + } + + case 3: + { + codepoint = ((s[i] & 0xF) << 18) + + ((s[i + 1] & 0x7F) << 12) + + ((s[i + 2] & 0x7F) << 6) + + (s[i + 3] & 0x7F); + break; + } + + default: + break; // LCOV_EXCL_LINE + } + + escape_codepoint(codepoint, result, pos); + i += bytes; + } + else + { + // all other characters are added as-is + result[pos++] = s[i]; + } + break; + } + } + } + + assert(pos == result.size()); + o->write_characters(result.c_str(), result.size()); + } + + /*! + @brief dump an integer + + Dump a given integer to output stream @a o. Works internally with + @a number_buffer. + + @param[in] x integer number (signed or unsigned) to dump + @tparam NumberType either @a number_integer_t or @a number_unsigned_t + */ + template::value or + std::is_same::value, + int> = 0> + void dump_integer(NumberType x) + { + // special case for "0" + if (x == 0) + { + o->write_character('0'); + return; + } + + const bool is_negative = (x <= 0) and (x != 0); // see issue #755 + std::size_t i = 0; + + while (x != 0) + { + // spare 1 byte for '\0' + assert(i < number_buffer.size() - 1); + + const auto digit = std::labs(static_cast(x % 10)); + number_buffer[i++] = static_cast('0' + digit); + x /= 10; + } + + if (is_negative) + { + // make sure there is capacity for the '-' + assert(i < number_buffer.size() - 2); + number_buffer[i++] = '-'; + } + + std::reverse(number_buffer.begin(), number_buffer.begin() + i); + o->write_characters(number_buffer.data(), i); + } + + /*! + @brief dump a floating-point number + + Dump a given floating-point number to output stream @a o. Works internally + with @a number_buffer. + + @param[in] x floating-point number to dump + */ + void dump_float(number_float_t x) + { + // NaN / inf + if (not std::isfinite(x) or std::isnan(x)) + { + o->write_characters("null", 4); + return; + } + + // get number of digits for a text -> float -> text round-trip + static constexpr auto d = std::numeric_limits::digits10; + + // the actual conversion + std::ptrdiff_t len = snprintf(number_buffer.data(), number_buffer.size(), "%.*g", d, x); + + // negative value indicates an error + assert(len > 0); + // check if buffer was large enough + assert(static_cast(len) < number_buffer.size()); + + // erase thousands separator + if (thousands_sep != '\0') + { + const auto end = std::remove(number_buffer.begin(), + number_buffer.begin() + len, thousands_sep); + std::fill(end, number_buffer.end(), '\0'); + assert((end - number_buffer.begin()) <= len); + len = (end - number_buffer.begin()); + } + + // convert decimal point to '.' + if (decimal_point != '\0' and decimal_point != '.') + { + const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point); + if (dec_pos != number_buffer.end()) + { + *dec_pos = '.'; + } + } + + o->write_characters(number_buffer.data(), static_cast(len)); + + // determine if need to append ".0" + const bool value_is_int_like = + std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1, + [](char c) + { + return (c == '.' or c == 'e'); + }); + + if (value_is_int_like) + { + o->write_characters(".0", 2); + } + } + + /*! + @brief check whether a string is UTF-8 encoded + + The function checks each byte of a string whether it is UTF-8 encoded. The + result of the check is stored in the @a state parameter. The function must + be called initially with state 0 (accept). State 1 means the string must + be rejected, because the current byte is not allowed. If the string is + completely processed, but the state is non-zero, the string ended + prematurely; that is, the last byte indicated more bytes should have + followed. + + @param[in,out] state the state of the decoding + @param[in] byte next byte to decode + + @note The function has been edited: a std::array is used and the code + point is not calculated. + + @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann + @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ + */ + static void decode(uint8_t& state, const uint8_t byte) + { + static const std::array utf8d = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF + 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF + 0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF + 0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF + 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2 + 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4 + 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6 + 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8 + } + }; + + const uint8_t type = utf8d[byte]; + state = utf8d[256u + state * 16u + type]; + } + + /*! + @brief throw an exception if a string is not UTF-8 encoded + + @param[in] str UTF-8 string to check + @throw type_error.316 if passed string is not UTF-8 encoded + + @since version 3.0.0 + */ + static void throw_if_invalid_utf8(const std::string& str) + { + // start with state 0 (= accept) + uint8_t state = 0; + + for (size_t i = 0; i < str.size(); ++i) + { + const auto byte = static_cast(str[i]); + decode(state, byte); + if (state == 1) + { + // state 1 means reject + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(byte); + JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + ss.str())); + } + } + + if (state != 0) + { + // we finish reading, but do not accept: string was incomplete + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(static_cast(str.back())); + JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + ss.str())); + } + } + + private: + /// the output of the serializer + output_adapter_t o = nullptr; + + /// a (hopefully) large enough character buffer + std::array number_buffer{{}}; + + /// the locale + const std::lconv* loc = nullptr; + /// the locale's thousand separator character + const char thousands_sep = '\0'; + /// the locale's decimal point character + const char decimal_point = '\0'; + + /// the indentation character + const char indent_char; + + /// the indentation string + string_t indent_string; +}; +} +} + +#endif + +/*** End of inlined file: serializer.hpp ***/ + + +/*** Start of inlined file: json_ref.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_JSON_REF_HPP +#define NLOHMANN_JSON_DETAIL_JSON_REF_HPP + +#include +#include + +namespace nlohmann +{ +namespace detail +{ +template +class json_ref +{ + public: + using value_type = BasicJsonType; + + json_ref(value_type&& value) + : owned_value(std::move(value)), value_ref(&owned_value), is_rvalue(true) + {} + + json_ref(const value_type& value) + : value_ref(const_cast(&value)), is_rvalue(false) + {} + + json_ref(std::initializer_list init) + : owned_value(init), value_ref(&owned_value), is_rvalue(true) + {} + + template + json_ref(Args&& ... args) + : owned_value(std::forward(args)...), value_ref(&owned_value), is_rvalue(true) + {} + + // class should be movable only + json_ref(json_ref&&) = default; + json_ref(const json_ref&) = delete; + json_ref& operator=(const json_ref&) = delete; + + value_type moved_or_copied() const + { + if (is_rvalue) + { + return std::move(*value_ref); + } + return *value_ref; + } + + value_type const& operator*() const + { + return *static_cast(value_ref); + } + + value_type const* operator->() const + { + return static_cast(value_ref); + } + + private: + mutable value_type owned_value = nullptr; + value_type* value_ref = nullptr; + const bool is_rvalue; +}; +} +} + +#endif + +/*** End of inlined file: json_ref.hpp ***/ + + +/*** Start of inlined file: adl_serializer.hpp ***/ +#ifndef NLOHMANN_JSON_ADL_SERIALIZER_HPP +#define NLOHMANN_JSON_ADL_SERIALIZER_HPP + +#include + +namespace nlohmann +{ +template +struct adl_serializer +{ + /*! + @brief convert a JSON value to any value type + + This function is usually called by the `get()` function of the + @ref basic_json class (either explicit or via conversion operators). + + @param[in] j JSON value to read from + @param[in,out] val value to write to + */ + template + static void from_json(BasicJsonType&& j, ValueType& val) noexcept( + noexcept(::nlohmann::from_json(std::forward(j), val))) + { + ::nlohmann::from_json(std::forward(j), val); + } + + /*! + @brief convert any value type to a JSON value + + This function is usually called by the constructors of the @ref basic_json + class. + + @param[in,out] j JSON value to write to + @param[in] val value to read from + */ + template + static void to_json(BasicJsonType& j, ValueType&& val) noexcept( + noexcept(::nlohmann::to_json(j, std::forward(val)))) + { + ::nlohmann::to_json(j, std::forward(val)); + } +}; +} + +#endif + +/*** End of inlined file: adl_serializer.hpp ***/ /*! @brief namespace for Niels Lohmann @@ -552,7 +11640,6 @@ class basic_json /// @} - ///////////////////// // container types // ///////////////////// @@ -594,7 +11681,6 @@ class basic_json /// @} - /*! @brief returns the allocator associated with the container */ @@ -681,7 +11767,6 @@ class basic_json return result; } - /////////////////////////// // JSON value data types // /////////////////////////// @@ -1426,7 +12511,6 @@ class basic_json */ using parser_callback_t = typename parser::parser_callback_t; - ////////////////// // constructors // ////////////////// @@ -1952,7 +13036,6 @@ class basic_json assert_invariant(); } - /////////////////////////////////////// // other constructors and destructor // /////////////////////////////////////// @@ -3060,7 +14143,6 @@ class basic_json /// @} - //////////////////// // element access // //////////////////// @@ -4056,7 +15138,6 @@ class basic_json /// @} - //////////// // lookup // //////////// @@ -4146,7 +15227,6 @@ class basic_json /// @} - /////////////// // iterators // /////////////// @@ -4558,7 +15638,6 @@ class basic_json /// @} - ////////////// // capacity // ////////////// @@ -4775,7 +15854,6 @@ class basic_json /// @} - /////////////// // modifiers // /////////////// @@ -6138,7 +17216,6 @@ class basic_json /// @} - ///////////////////// // deserialization // ///////////////////// @@ -6412,7 +17489,6 @@ class basic_json } } - private: ////////////////////// // member variables // @@ -8019,6 +19095,35 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std return nlohmann::json::json_pointer(std::string(s, n)); } -#include "detail/macro_unscope.hpp" + +/*** Start of inlined file: macro_unscope.hpp ***/ +#ifndef NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP + #define NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP + + // restore GCC/clang diagnostic settings + #if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #pragma GCC diagnostic pop + #endif + #if defined(__clang__) + #pragma GCC diagnostic pop + #endif + + // clean up + #undef JSON_CATCH + #undef JSON_THROW + #undef JSON_TRY + #undef JSON_LIKELY + #undef JSON_UNLIKELY + #undef JSON_DEPRECATED + #undef JSON_HAS_CPP_14 + #undef JSON_HAS_CPP_17 + #undef NLOHMANN_BASIC_JSON_TPL_DECLARATION + #undef NLOHMANN_BASIC_JSON_TPL + #undef NLOHMANN_JSON_HAS_HELPER #endif + +/*** End of inlined file: macro_unscope.hpp ***/ + +#endif + From ce53537ba25f249fba0a905aff96a3e718fed922 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 9 Jan 2018 23:15:06 +0100 Subject: [PATCH 037/106] :heavy_minus_sign: :heavy_plus_sign: replaces amalgamation tool The tool used before created a lot of duplicates inside the generated amalgamation. The new tool is a single Python file which seems to do the same job. --- CMakeLists.txt | 21 - Makefile | 57 +- src/json.hpp | 3918 ++---------------------------------------------- 3 files changed, 123 insertions(+), 3873 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cd513a97..b2acb73f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -68,27 +68,6 @@ if(BUILD_TESTING AND JSON_BuildTests) add_subdirectory(test) endif() -## -## AMALGAMATION -## create a single header file -## -option(JSON_Amalgamate "Build and use amalgamation" OFF) - -if(JSON_Amalgamate) - ExternalProject_Add(amalgamate - GIT_REPOSITORY "https://github.com/theodelrieu/Amalgamate" - CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}" - ) - - # There is no way to tell amalgamate to force-write the output file even if it already exists... - add_custom_target(single_header ALL rm -f "${CMAKE_SOURCE_DIR}/${NLOHMANN_JSON_SOURCE_DIR}/json.hpp" - COMMENT "Amalgamating json.hpp..." - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/develop - DEPENDS amalgamate - COMMAND "${CMAKE_BINARY_DIR}/bin/amalgamate" -w '*.hpp' -i . json.hpp "${CMAKE_SOURCE_DIR}/${NLOHMANN_JSON_SOURCE_DIR}/json.hpp" - ) -endif() - ## ## INSTALL ## install header files, generate and install cmake config files for find_package() diff --git a/Makefile b/Makefile index adf2b402..0029f849 100644 --- a/Makefile +++ b/Makefile @@ -1,30 +1,28 @@ .PHONY: pretty clean ChangeLog.md -SRCDIR = ./src -DEVDIR = ./develop -SRCS = $(SRCDIR)/json.hpp \ - $(DEVDIR)/json_fwd.hpp \ - $(DEVDIR)/detail/macro_scope.hpp \ - $(DEVDIR)/detail/macro_unscope.hpp \ - $(DEVDIR)/detail/meta.hpp \ - $(DEVDIR)/detail/exceptions.hpp \ - $(DEVDIR)/detail/value_t.hpp \ - $(DEVDIR)/detail/conversions/from_json.hpp \ - $(DEVDIR)/detail/conversions/to_json.hpp \ - $(DEVDIR)/detail/parsing/input_adapters.hpp \ - $(DEVDIR)/detail/parsing/lexer.hpp \ - $(DEVDIR)/detail/parsing/parser.hpp \ - $(DEVDIR)/detail/iterators/primitive_iterator.hpp \ - $(DEVDIR)/detail/iterators/internal_iterator.hpp \ - $(DEVDIR)/detail/iterators/iter_impl.hpp \ - $(DEVDIR)/detail/iterators/iteration_proxy.hpp \ - $(DEVDIR)/detail/iterators/json_reverse_iterator.hpp \ - $(DEVDIR)/detail/parsing/output_adapters.hpp \ - $(DEVDIR)/detail/parsing/binary_reader.hpp \ - $(DEVDIR)/detail/parsing/binary_writer.hpp \ - $(DEVDIR)/detail/serializer.hpp \ - $(DEVDIR)/detail/json_ref.hpp \ - $(DEVDIR)/adl_serializer.hpp +SRCS = develop/json.hpp \ + develop/json_fwd.hpp \ + develop/detail/macro_scope.hpp \ + develop/detail/macro_unscope.hpp \ + develop/detail/meta.hpp \ + develop/detail/exceptions.hpp \ + develop/detail/value_t.hpp \ + develop/detail/conversions/from_json.hpp \ + develop/detail/conversions/to_json.hpp \ + develop/detail/parsing/input_adapters.hpp \ + develop/detail/parsing/lexer.hpp \ + develop/detail/parsing/parser.hpp \ + develop/detail/iterators/primitive_iterator.hpp \ + develop/detail/iterators/internal_iterator.hpp \ + develop/detail/iterators/iter_impl.hpp \ + develop/detail/iterators/iteration_proxy.hpp \ + develop/detail/iterators/json_reverse_iterator.hpp \ + develop/detail/parsing/output_adapters.hpp \ + develop/detail/parsing/binary_reader.hpp \ + develop/detail/parsing/binary_writer.hpp \ + develop/detail/serializer.hpp \ + develop/detail/json_ref.hpp \ + develop/adl_serializer.hpp UNAME = $(shell uname) CXX=clang++ @@ -247,9 +245,16 @@ pretty: --indent-col1-comments --pad-oper --pad-header --align-pointer=type \ --align-reference=type --add-brackets --convert-tabs --close-templates \ --lineend=linux --preserve-date --suffix=none --formatted \ - $(SRCS) test/src/*.cpp \ + $(SRCS) src/json.hpp test/src/*.cpp \ benchmarks/src/benchmarks.cpp doc/examples/*.cpp +# create single header file +amalgamate: src/json.hpp + +src/json.hpp: $(SRCS) + develop/amalgamate/amalgamate.py -c develop/amalgamate/config.json -s develop --verbose=yes + $(MAKE) pretty + ########################################################################## # changelog diff --git a/src/json.hpp b/src/json.hpp index 00b10675..cc43f5b5 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -41,8 +41,7 @@ SOFTWARE. #include // string, stoi, to_string #include // declval, forward, move, pair, swap - -/*** Start of inlined file: json_fwd.hpp ***/ +// #include "json_fwd.hpp" #ifndef NLOHMANN_JSON_FWD_HPP #define NLOHMANN_JSON_FWD_HPP @@ -107,10 +106,7 @@ using json = basic_json<>; #endif -/*** End of inlined file: json_fwd.hpp ***/ - - -/*** Start of inlined file: macro_scope.hpp ***/ +// #include "detail/macro_scope.hpp" #ifndef NLOHMANN_JSON_MACRO_SCOPE_HPP #define NLOHMANN_JSON_MACRO_SCOPE_HPP @@ -218,10 +214,7 @@ contains a `mapped_type`, whereas `std::vector` fails the test. #endif -/*** End of inlined file: macro_scope.hpp ***/ - - -/*** Start of inlined file: meta.hpp ***/ +// #include "detail/meta.hpp" #ifndef NLOHMANN_JSON_DETAIL_META_HPP #define NLOHMANN_JSON_DETAIL_META_HPP @@ -231,184 +224,10 @@ contains a `mapped_type`, whereas `std::vector` fails the test. #include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type #include // declval +// #include "json_fwd.hpp" -/*** Start of inlined file: json_fwd.hpp ***/ -#ifndef NLOHMANN_JSON_FWD_HPP -#define NLOHMANN_JSON_FWD_HPP +// #include "detail/macro_scope.hpp" -#include // int64_t, uint64_t -#include // map -#include // allocator -#include // string -#include // vector - -/*! -@brief namespace for Niels Lohmann -@see https://github.com/nlohmann -@since version 1.0.0 -*/ -namespace nlohmann -{ -/*! -@brief default JSONSerializer template argument - -This serializer ignores the template arguments and uses ADL -([argument-dependent lookup](http://en.cppreference.com/w/cpp/language/adl)) -for serialization. -*/ -template -struct adl_serializer; - -template class ObjectType = - std::map, - template class ArrayType = std::vector, - class StringType = std::string, class BooleanType = bool, - class NumberIntegerType = std::int64_t, - class NumberUnsignedType = std::uint64_t, - class NumberFloatType = double, - template class AllocatorType = std::allocator, - template class JSONSerializer = - adl_serializer> -class basic_json; - -/*! -@brief JSON Pointer - -A JSON pointer defines a string syntax for identifying a specific value -within a JSON document. It can be used with functions `at` and -`operator[]`. Furthermore, JSON pointers are the base for JSON patches. - -@sa [RFC 6901](https://tools.ietf.org/html/rfc6901) - -@since version 2.0.0 -*/ -class json_pointer; - -/*! -@brief default JSON class - -This type is the default specialization of the @ref basic_json class which -uses the standard template types. - -@since version 1.0.0 -*/ -using json = basic_json<>; -} - -#endif - -/*** End of inlined file: json_fwd.hpp ***/ - - -/*** Start of inlined file: macro_scope.hpp ***/ -#ifndef NLOHMANN_JSON_MACRO_SCOPE_HPP -#define NLOHMANN_JSON_MACRO_SCOPE_HPP - -#include // not - -// This file contains all internal macro definitions -// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them - -// exclude unsupported compilers -#if defined(__clang__) - #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 - #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" - #endif -#elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) - #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40900 - #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" - #endif -#endif - -// disable float-equal warnings on GCC/clang -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wfloat-equal" -#endif - -// disable documentation warnings on clang -#if defined(__clang__) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wdocumentation" -#endif - -// allow for portable deprecation warnings -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #define JSON_DEPRECATED __attribute__((deprecated)) -#elif defined(_MSC_VER) - #define JSON_DEPRECATED __declspec(deprecated) -#else - #define JSON_DEPRECATED -#endif - -// allow to disable exceptions -#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION) - #define JSON_THROW(exception) throw exception - #define JSON_TRY try - #define JSON_CATCH(exception) catch(exception) -#else - #define JSON_THROW(exception) std::abort() - #define JSON_TRY if(true) - #define JSON_CATCH(exception) if(false) -#endif - -// manual branch prediction -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #define JSON_LIKELY(x) __builtin_expect(!!(x), 1) - #define JSON_UNLIKELY(x) __builtin_expect(!!(x), 0) -#else - #define JSON_LIKELY(x) x - #define JSON_UNLIKELY(x) x -#endif - -// C++ language standard detection -#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 - #define JSON_HAS_CPP_17 - #define JSON_HAS_CPP_14 -#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) - #define JSON_HAS_CPP_14 -#endif - -// Ugly macros to avoid uglier copy-paste when specializing basic_json. They -// may be removed in the future once the class is split. - -#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ - template class ObjectType, \ - template class ArrayType, \ - class StringType, class BooleanType, class NumberIntegerType, \ - class NumberUnsignedType, class NumberFloatType, \ - template class AllocatorType, \ - template class JSONSerializer> - -#define NLOHMANN_BASIC_JSON_TPL \ - basic_json - -/*! -@brief Helper to determine whether there's a key_type for T. - -This helper is used to tell associative containers apart from other containers -such as sequence containers. For instance, `std::map` passes the test as it -contains a `mapped_type`, whereas `std::vector` fails the test. - -@sa http://stackoverflow.com/a/7728728/266378 -@since version 1.0.0, overworked in version 2.0.6 -*/ -#define NLOHMANN_JSON_HAS_HELPER(type) \ - template struct has_##type { \ - private: \ - template \ - static int detect(U &&); \ - static void detect(...); \ - public: \ - static constexpr bool value = \ - std::is_integral()))>::value; \ - } - -#endif - -/*** End of inlined file: macro_scope.hpp ***/ namespace nlohmann { @@ -572,6 +391,7 @@ struct is_compatible_integer_type RealIntegerType, CompatibleNumberIntegerType > ::value; }; + // trait checking if JSONSerializer::from_json(json const&, udt&) exists template struct has_from_json @@ -635,10 +455,7 @@ constexpr T static_const::value; #endif -/*** End of inlined file: meta.hpp ***/ - - -/*** Start of inlined file: exceptions.hpp ***/ +// #include "detail/exceptions.hpp" #ifndef NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP #define NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP @@ -971,10 +788,7 @@ class other_error : public exception #endif -/*** End of inlined file: exceptions.hpp ***/ - - -/*** Start of inlined file: value_t.hpp ***/ +// #include "detail/value_t.hpp" #ifndef NLOHMANN_JSON_DETAIL_VALUE_T_HPP #define NLOHMANN_JSON_DETAIL_VALUE_T_HPP @@ -1055,10 +869,7 @@ inline bool operator<(const value_t lhs, const value_t rhs) noexcept #endif -/*** End of inlined file: value_t.hpp ***/ - - -/*** Start of inlined file: from_json.hpp ***/ +// #include "detail/conversions/from_json.hpp" #ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP #define NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP @@ -1073,663 +884,14 @@ inline bool operator<(const value_t lhs, const value_t rhs) noexcept #include // pair, declval #include // valarray +// #include "detail/exceptions.hpp" -/*** Start of inlined file: exceptions.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP -#define NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP +// #include "detail/macro_scope.hpp" -#include // exception -#include // runtime_error -#include // to_string +// #include "detail/meta.hpp" -namespace nlohmann -{ -namespace detail -{ -//////////////// -// exceptions // -//////////////// +// #include "detail/value_t.hpp" -/*! -@brief general exception of the @ref basic_json class - -This class is an extension of `std::exception` objects with a member @a id for -exception ids. It is used as the base class for all exceptions thrown by the -@ref basic_json class. This class can hence be used as "wildcard" to catch -exceptions. - -Subclasses: -- @ref parse_error for exceptions indicating a parse error -- @ref invalid_iterator for exceptions indicating errors with iterators -- @ref type_error for exceptions indicating executing a member function with - a wrong type -- @ref out_of_range for exceptions indicating access out of the defined range -- @ref other_error for exceptions indicating other library errors - -@internal -@note To have nothrow-copy-constructible exceptions, we internally use - `std::runtime_error` which can cope with arbitrary-length error messages. - Intermediate strings are built with static functions and then passed to - the actual constructor. -@endinternal - -@liveexample{The following code shows how arbitrary library exceptions can be -caught.,exception} - -@since version 3.0.0 -*/ -class exception : public std::exception -{ - public: - /// returns the explanatory string - const char* what() const noexcept override - { - return m.what(); - } - - /// the id of the exception - const int id; - - protected: - exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} - - static std::string name(const std::string& ename, int id_) - { - return "[json.exception." + ename + "." + std::to_string(id_) + "] "; - } - - private: - /// an exception object as storage for error messages - std::runtime_error m; -}; - -/*! -@brief exception indicating a parse error - -This exception is thrown by the library when a parse error occurs. Parse errors -can occur during the deserialization of JSON text, CBOR, MessagePack, as well -as when using JSON Patch. - -Member @a byte holds the byte index of the last read character in the input -file. - -Exceptions have ids 1xx. - -name / id | example message | description ------------------------------- | --------------- | ------------------------- -json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position. -json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point. -json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. -json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects. -json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors. -json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`. -json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character. -json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. -json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number. -json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. -json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. -json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. - -@note For an input with n bytes, 1 is the index of the first character and n+1 - is the index of the terminating null byte or the end of file. This also - holds true when reading a byte vector (CBOR or MessagePack). - -@liveexample{The following code shows how a `parse_error` exception can be -caught.,parse_error} - -@sa @ref exception for the base class of the library exceptions -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class parse_error : public exception -{ - public: - /*! - @brief create a parse error exception - @param[in] id_ the id of the exception - @param[in] byte_ the byte index where the error occurred (or 0 if the - position cannot be determined) - @param[in] what_arg the explanatory string - @return parse_error object - */ - static parse_error create(int id_, std::size_t byte_, const std::string& what_arg) - { - std::string w = exception::name("parse_error", id_) + "parse error" + - (byte_ != 0 ? (" at " + std::to_string(byte_)) : "") + - ": " + what_arg; - return parse_error(id_, byte_, w.c_str()); - } - - /*! - @brief byte index of the parse error - - The byte index of the last read character in the input file. - - @note For an input with n bytes, 1 is the index of the first character and - n+1 is the index of the terminating null byte or the end of file. - This also holds true when reading a byte vector (CBOR or MessagePack). - */ - const std::size_t byte; - - private: - parse_error(int id_, std::size_t byte_, const char* what_arg) - : exception(id_, what_arg), byte(byte_) {} -}; - -/*! -@brief exception indicating errors with iterators - -This exception is thrown if iterators passed to a library function do not match -the expected semantics. - -Exceptions have ids 2xx. - -name / id | example message | description ------------------------------------ | --------------- | ------------------------- -json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. -json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion. -json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from. -json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid. -json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid. -json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range. -json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key. -json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. -json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. -json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. -json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to. -json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container. -json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered. -json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin(). - -@liveexample{The following code shows how an `invalid_iterator` exception can be -caught.,invalid_iterator} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class invalid_iterator : public exception -{ - public: - static invalid_iterator create(int id_, const std::string& what_arg) - { - std::string w = exception::name("invalid_iterator", id_) + what_arg; - return invalid_iterator(id_, w.c_str()); - } - - private: - invalid_iterator(int id_, const char* what_arg) - : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating executing a member function with a wrong type - -This exception is thrown in case of a type error; that is, a library function is -executed on a JSON value whose type does not match the expected semantics. - -Exceptions have ids 3xx. - -name / id | example message | description ------------------------------ | --------------- | ------------------------- -json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead. -json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types. -json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t&. -json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types. -json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types. -json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types. -json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types. -json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types. -json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types. -json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types. -json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types. -json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types. -json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined. -json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers. -json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive. -json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. | - -@liveexample{The following code shows how a `type_error` exception can be -caught.,type_error} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class type_error : public exception -{ - public: - static type_error create(int id_, const std::string& what_arg) - { - std::string w = exception::name("type_error", id_) + what_arg; - return type_error(id_, w.c_str()); - } - - private: - type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating access out of the defined range - -This exception is thrown in case a library function is called on an input -parameter that exceeds the expected range, for instance in case of array -indices or nonexisting object keys. - -Exceptions have ids 4xx. - -name / id | example message | description -------------------------------- | --------------- | ------------------------- -json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1. -json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it. -json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object. -json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. -json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. -json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. - -@liveexample{The following code shows how an `out_of_range` exception can be -caught.,out_of_range} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class out_of_range : public exception -{ - public: - static out_of_range create(int id_, const std::string& what_arg) - { - std::string w = exception::name("out_of_range", id_) + what_arg; - return out_of_range(id_, w.c_str()); - } - - private: - out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating other library errors - -This exception is thrown in case of errors that cannot be classified with the -other exception types. - -Exceptions have ids 5xx. - -name / id | example message | description ------------------------------- | --------------- | ------------------------- -json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed. - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range - -@liveexample{The following code shows how an `other_error` exception can be -caught.,other_error} - -@since version 3.0.0 -*/ -class other_error : public exception -{ - public: - static other_error create(int id_, const std::string& what_arg) - { - std::string w = exception::name("other_error", id_) + what_arg; - return other_error(id_, w.c_str()); - } - - private: - other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; -} -} - -#endif - -/*** End of inlined file: exceptions.hpp ***/ - - -/*** Start of inlined file: meta.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_META_HPP -#define NLOHMANN_JSON_DETAIL_META_HPP - -#include // not -#include // size_t -#include // numeric_limits -#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type -#include // declval - -namespace nlohmann -{ -/*! -@brief detail namespace with internal helper functions - -This namespace collects functions that should not be exposed, -implementations of some @ref basic_json methods, and meta-programming helpers. - -@since version 2.1.0 -*/ -namespace detail -{ -///////////// -// helpers // -///////////// - -template struct is_basic_json : std::false_type {}; - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -struct is_basic_json : std::true_type {}; - -// alias templates to reduce boilerplate -template -using enable_if_t = typename std::enable_if::type; - -template -using uncvref_t = typename std::remove_cv::type>::type; - -// implementation of C++14 index_sequence and affiliates -// source: https://stackoverflow.com/a/32223343 -template -struct index_sequence -{ - using type = index_sequence; - using value_type = std::size_t; - static constexpr std::size_t size() noexcept - { - return sizeof...(Ints); - } -}; - -template -struct merge_and_renumber; - -template -struct merge_and_renumber, index_sequence> - : index_sequence < I1..., (sizeof...(I1) + I2)... > {}; - -template -struct make_index_sequence - : merge_and_renumber < typename make_index_sequence < N / 2 >::type, - typename make_index_sequence < N - N / 2 >::type > {}; - -template<> struct make_index_sequence<0> : index_sequence<> {}; -template<> struct make_index_sequence<1> : index_sequence<0> {}; - -template -using index_sequence_for = make_index_sequence; - -/* -Implementation of two C++17 constructs: conjunction, negation. This is needed -to avoid evaluating all the traits in a condition - -For example: not std::is_same::value and has_value_type::value -will not compile when T = void (on MSVC at least). Whereas -conjunction>, has_value_type>::value will -stop evaluating if negation<...>::value == false - -Please note that those constructs must be used with caution, since symbols can -become very long quickly (which can slow down compilation and cause MSVC -internal compiler errors). Only use it when you have to (see example ahead). -*/ -template struct conjunction : std::true_type {}; -template struct conjunction : B1 {}; -template -struct conjunction : std::conditional, B1>::type {}; - -template struct negation : std::integral_constant {}; - -// dispatch utility (taken from ranges-v3) -template struct priority_tag : priority_tag < N - 1 > {}; -template<> struct priority_tag<0> {}; - -//////////////////////// -// has_/is_ functions // -//////////////////////// - -NLOHMANN_JSON_HAS_HELPER(mapped_type); -NLOHMANN_JSON_HAS_HELPER(key_type); -NLOHMANN_JSON_HAS_HELPER(value_type); -NLOHMANN_JSON_HAS_HELPER(iterator); - -template -struct is_compatible_object_type_impl : std::false_type {}; - -template -struct is_compatible_object_type_impl -{ - static constexpr auto value = - std::is_constructible::value and - std::is_constructible::value; -}; - -template -struct is_compatible_object_type -{ - static auto constexpr value = is_compatible_object_type_impl < - conjunction>, - has_mapped_type, - has_key_type>::value, - typename BasicJsonType::object_t, CompatibleObjectType >::value; -}; - -template -struct is_basic_json_nested_type -{ - static auto constexpr value = std::is_same::value or - std::is_same::value or - std::is_same::value or - std::is_same::value; -}; - -template -struct is_compatible_array_type -{ - static auto constexpr value = - conjunction>, - negation>, - negation>, - negation>, - has_value_type, - has_iterator>::value; -}; - -template -struct is_compatible_integer_type_impl : std::false_type {}; - -template -struct is_compatible_integer_type_impl -{ - // is there an assert somewhere on overflows? - using RealLimits = std::numeric_limits; - using CompatibleLimits = std::numeric_limits; - - static constexpr auto value = - std::is_constructible::value and - CompatibleLimits::is_integer and - RealLimits::is_signed == CompatibleLimits::is_signed; -}; - -template -struct is_compatible_integer_type -{ - static constexpr auto value = - is_compatible_integer_type_impl < - std::is_integral::value and - not std::is_same::value, - RealIntegerType, CompatibleNumberIntegerType > ::value; -}; - -// trait checking if JSONSerializer::from_json(json const&, udt&) exists -template -struct has_from_json -{ - private: - // also check the return type of from_json - template::from_json( - std::declval(), std::declval()))>::value>> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -// This trait checks if JSONSerializer::from_json(json const&) exists -// this overload is used for non-default-constructible user-defined-types -template -struct has_non_default_from_json -{ - private: - template < - typename U, - typename = enable_if_t::from_json(std::declval()))>::value >> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -// This trait checks if BasicJsonType::json_serializer::to_json exists -template -struct has_to_json -{ - private: - template::to_json( - std::declval(), std::declval()))> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -// taken from ranges-v3 -template -struct static_const -{ - static constexpr T value{}; -}; - -template -constexpr T static_const::value; -} -} - -#endif - -/*** End of inlined file: meta.hpp ***/ - - -/*** Start of inlined file: value_t.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_VALUE_T_HPP -#define NLOHMANN_JSON_DETAIL_VALUE_T_HPP - -#include // array -#include // and -#include // size_t -#include // uint8_t - -namespace nlohmann -{ -namespace detail -{ -/////////////////////////// -// JSON type enumeration // -/////////////////////////// - -/*! -@brief the JSON type enumeration - -This enumeration collects the different JSON types. It is internally used to -distinguish the stored values, and the functions @ref basic_json::is_null(), -@ref basic_json::is_object(), @ref basic_json::is_array(), -@ref basic_json::is_string(), @ref basic_json::is_boolean(), -@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), -@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), -@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and -@ref basic_json::is_structured() rely on it. - -@note There are three enumeration entries (number_integer, number_unsigned, and -number_float), because the library distinguishes these three types for numbers: -@ref basic_json::number_unsigned_t is used for unsigned integers, -@ref basic_json::number_integer_t is used for signed integers, and -@ref basic_json::number_float_t is used for floating-point numbers or to -approximate integers which do not fit in the limits of their respective type. - -@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON -value with the default value for a given type - -@since version 1.0.0 -*/ -enum class value_t : std::uint8_t -{ - null, ///< null value - object, ///< object (unordered set of name/value pairs) - array, ///< array (ordered collection of values) - string, ///< string value - boolean, ///< boolean value - number_integer, ///< number value (signed integer) - number_unsigned, ///< number value (unsigned integer) - number_float, ///< number value (floating-point) - discarded ///< discarded by the the parser callback function -}; - -/*! -@brief comparison operator for JSON types - -Returns an ordering that is similar to Python: -- order: null < boolean < number < object < array < string -- furthermore, each type is not smaller than itself -- discarded values are not comparable - -@since version 1.0.0 -*/ -inline bool operator<(const value_t lhs, const value_t rhs) noexcept -{ - static constexpr std::array order = {{ - 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, - 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */ - } - }; - - const auto l_index = static_cast(lhs); - const auto r_index = static_cast(rhs); - return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index]; -} -} -} - -#endif - -/*** End of inlined file: value_t.hpp ***/ namespace nlohmann { @@ -2031,10 +1193,7 @@ constexpr const auto& from_json = detail::static_const::va #endif -/*** End of inlined file: from_json.hpp ***/ - - -/*** Start of inlined file: to_json.hpp ***/ +// #include "detail/conversions/to_json.hpp" #ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP #define NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP @@ -2046,6 +1205,11 @@ constexpr const auto& from_json = detail::static_const::va #include // valarray #include // vector +// #include "detail/meta.hpp" + +// #include "detail/value_t.hpp" + + namespace nlohmann { namespace detail @@ -2374,10 +1538,7 @@ constexpr const auto& to_json = detail::static_const::value; #endif -/*** End of inlined file: to_json.hpp ***/ - - -/*** Start of inlined file: input_adapters.hpp ***/ +// #include "detail/parsing/input_adapters.hpp" #ifndef NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP #define NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP @@ -2395,6 +1556,9 @@ constexpr const auto& to_json = detail::static_const::value; #include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer #include // pair, declval +// #include "detail/macro_scope.hpp" + + namespace nlohmann { namespace detail @@ -2642,10 +1806,7 @@ class input_adapter #endif -/*** End of inlined file: input_adapters.hpp ***/ - - -/*** Start of inlined file: lexer.hpp ***/ +// #include "detail/parsing/lexer.hpp" #ifndef NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP #define NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP @@ -2659,273 +1820,10 @@ class input_adapter #include // char_traits, string #include // vector +// #include "detail/macro_scope.hpp" -/*** Start of inlined file: input_adapters.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP +// #include "detail/parsing/input_adapters.hpp" -#include // min -#include // array -#include // assert -#include // size_t -#include // strlen -#include // streamsize, streamoff, streampos -#include // istream -#include // begin, end, iterator_traits, random_access_iterator_tag, distance, next -#include // shared_ptr, make_shared, addressof -#include // accumulate -#include // string, char_traits -#include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer -#include // pair, declval - -namespace nlohmann -{ -namespace detail -{ -//////////////////// -// input adapters // -//////////////////// - -/*! -@brief abstract input adapter interface - -Produces a stream of std::char_traits::int_type characters from a -std::istream, a buffer, or some other input type. Accepts the return of exactly -one non-EOF character for future input. The int_type characters returned -consist of all valid char values as positive values (typically unsigned char), -plus an EOF value outside that range, specified by the value of the function -std::char_traits::eof(). This value is typically -1, but could be any -arbitrary value which is not a valid char value. -*/ -struct input_adapter_protocol -{ - /// get a character [0,255] or std::char_traits::eof(). - virtual std::char_traits::int_type get_character() = 0; - /// restore the last non-eof() character to input - virtual void unget_character() = 0; - virtual ~input_adapter_protocol() = default; -}; - -/// a type to simplify interfaces -using input_adapter_t = std::shared_ptr; - -/*! -Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at -beginning of input. Does not support changing the underlying std::streambuf -in mid-input. Maintains underlying std::istream and std::streambuf to support -subsequent use of standard std::istream operations to process any input -characters following those used in parsing the JSON input. Clears the -std::istream flags; any input errors (e.g., EOF) will be detected by the first -subsequent call for input from the std::istream. -*/ -class input_stream_adapter : public input_adapter_protocol -{ - public: - ~input_stream_adapter() override - { - // clear stream flags; we use underlying streambuf I/O, do not - // maintain ifstream flags - is.clear(); - } - - explicit input_stream_adapter(std::istream& i) - : is(i), sb(*i.rdbuf()) - { - // skip byte order mark - std::char_traits::int_type c; - if ((c = get_character()) == 0xEF) - { - if ((c = get_character()) == 0xBB) - { - if ((c = get_character()) == 0xBF) - { - return; // Ignore BOM - } - else if (c != std::char_traits::eof()) - { - is.unget(); - } - is.putback('\xBB'); - } - else if (c != std::char_traits::eof()) - { - is.unget(); - } - is.putback('\xEF'); - } - else if (c != std::char_traits::eof()) - { - is.unget(); // no byte order mark; process as usual - } - } - - // delete because of pointer members - input_stream_adapter(const input_stream_adapter&) = delete; - input_stream_adapter& operator=(input_stream_adapter&) = delete; - - // std::istream/std::streambuf use std::char_traits::to_int_type, to - // ensure that std::char_traits::eof() and the character 0xFF do not - // end up as the same value, eg. 0xFFFFFFFF. - std::char_traits::int_type get_character() override - { - return sb.sbumpc(); - } - - void unget_character() override - { - sb.sungetc(); // is.unget() avoided for performance - } - - private: - /// the associated input stream - std::istream& is; - std::streambuf& sb; -}; - -/// input adapter for buffer input -class input_buffer_adapter : public input_adapter_protocol -{ - public: - input_buffer_adapter(const char* b, const std::size_t l) - : cursor(b), limit(b + l), start(b) - { - // skip byte order mark - if (l >= 3 and b[0] == '\xEF' and b[1] == '\xBB' and b[2] == '\xBF') - { - cursor += 3; - } - } - - // delete because of pointer members - input_buffer_adapter(const input_buffer_adapter&) = delete; - input_buffer_adapter& operator=(input_buffer_adapter&) = delete; - - std::char_traits::int_type get_character() noexcept override - { - if (JSON_LIKELY(cursor < limit)) - { - return std::char_traits::to_int_type(*(cursor++)); - } - - return std::char_traits::eof(); - } - - void unget_character() noexcept override - { - if (JSON_LIKELY(cursor > start)) - { - --cursor; - } - } - - private: - /// pointer to the current character - const char* cursor; - /// pointer past the last character - const char* limit; - /// pointer to the first character - const char* start; -}; - -class input_adapter -{ - public: - // native support - - /// input adapter for input stream - input_adapter(std::istream& i) - : ia(std::make_shared(i)) {} - - /// input adapter for input stream - input_adapter(std::istream&& i) - : ia(std::make_shared(i)) {} - - /// input adapter for buffer - template::value and - std::is_integral::type>::value and - sizeof(typename std::remove_pointer::type) == 1, - int>::type = 0> - input_adapter(CharT b, std::size_t l) - : ia(std::make_shared(reinterpret_cast(b), l)) {} - - // derived support - - /// input adapter for string literal - template::value and - std::is_integral::type>::value and - sizeof(typename std::remove_pointer::type) == 1, - int>::type = 0> - input_adapter(CharT b) - : input_adapter(reinterpret_cast(b), - std::strlen(reinterpret_cast(b))) {} - - /// input adapter for iterator range with contiguous storage - template::iterator_category, std::random_access_iterator_tag>::value, - int>::type = 0> - input_adapter(IteratorType first, IteratorType last) - { - // assertion to check that the iterator range is indeed contiguous, - // see http://stackoverflow.com/a/35008842/266378 for more discussion - assert(std::accumulate( - first, last, std::pair(true, 0), - [&first](std::pair res, decltype(*first) val) - { - res.first &= (val == *(std::next(std::addressof(*first), res.second++))); - return res; - }).first); - - // assertion to check that each element is 1 byte long - static_assert( - sizeof(typename std::iterator_traits::value_type) == 1, - "each element in the iterator range must have the size of 1 byte"); - - const auto len = static_cast(std::distance(first, last)); - if (JSON_LIKELY(len > 0)) - { - // there is at least one element: use the address of first - ia = std::make_shared(reinterpret_cast(&(*first)), len); - } - else - { - // the address of first cannot be used: use nullptr - ia = std::make_shared(nullptr, len); - } - } - - /// input adapter for array - template - input_adapter(T (&array)[N]) - : input_adapter(std::begin(array), std::end(array)) {} - - /// input adapter for contiguous container - template::value and - std::is_base_of()))>::iterator_category>::value, - int>::type = 0> - input_adapter(const ContiguousContainer& c) - : input_adapter(std::begin(c), std::end(c)) {} - - operator input_adapter_t() - { - return ia; - } - - private: - /// the actual adapter - input_adapter_t ia = nullptr; -}; -} -} - -#endif - -/*** End of inlined file: input_adapters.hpp ***/ namespace nlohmann { @@ -4191,10 +3089,7 @@ scan_number_done: #endif -/*** End of inlined file: lexer.hpp ***/ - - -/*** Start of inlined file: parser.hpp ***/ +// #include "detail/parsing/parser.hpp" #ifndef NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP #define NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP @@ -4205,1286 +3100,16 @@ scan_number_done: #include // string #include // move +// #include "detail/exceptions.hpp" -/*** Start of inlined file: lexer.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP +// #include "detail/macro_scope.hpp" -#include // localeconv -#include // size_t -#include // strtof, strtod, strtold, strtoll, strtoull -#include // initializer_list -#include // hex, uppercase -#include // setw, setfill -#include // stringstream -#include // char_traits, string -#include // vector +// #include "detail/parsing/input_adapters.hpp" -namespace nlohmann -{ -namespace detail -{ -/////////// -// lexer // -/////////// +// #include "detail/parsing/lexer.hpp" -/*! -@brief lexical analysis +// #include "detail/value_t.hpp" -This class organizes the lexical analysis during JSON deserialization. -*/ -template -class lexer -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - - public: - /// token types for the parser - enum class token_type - { - uninitialized, ///< indicating the scanner is uninitialized - literal_true, ///< the `true` literal - literal_false, ///< the `false` literal - literal_null, ///< the `null` literal - value_string, ///< a string -- use get_string() for actual value - value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value - value_integer, ///< a signed integer -- use get_number_integer() for actual value - value_float, ///< an floating point number -- use get_number_float() for actual value - begin_array, ///< the character for array begin `[` - begin_object, ///< the character for object begin `{` - end_array, ///< the character for array end `]` - end_object, ///< the character for object end `}` - name_separator, ///< the name separator `:` - value_separator, ///< the value separator `,` - parse_error, ///< indicating a parse error - end_of_input, ///< indicating the end of the input buffer - literal_or_value ///< a literal or the begin of a value (only for diagnostics) - }; - - /// return name of values of type token_type (only used for errors) - static const char* token_type_name(const token_type t) noexcept - { - switch (t) - { - case token_type::uninitialized: - return ""; - case token_type::literal_true: - return "true literal"; - case token_type::literal_false: - return "false literal"; - case token_type::literal_null: - return "null literal"; - case token_type::value_string: - return "string literal"; - case lexer::token_type::value_unsigned: - case lexer::token_type::value_integer: - case lexer::token_type::value_float: - return "number literal"; - case token_type::begin_array: - return "'['"; - case token_type::begin_object: - return "'{'"; - case token_type::end_array: - return "']'"; - case token_type::end_object: - return "'}'"; - case token_type::name_separator: - return "':'"; - case token_type::value_separator: - return "','"; - case token_type::parse_error: - return ""; - case token_type::end_of_input: - return "end of input"; - case token_type::literal_or_value: - return "'[', '{', or a literal"; - default: // catch non-enum values - return "unknown token"; // LCOV_EXCL_LINE - } - } - - explicit lexer(detail::input_adapter_t adapter) - : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {} - - // delete because of pointer members - lexer(const lexer&) = delete; - lexer& operator=(lexer&) = delete; - - private: - ///////////////////// - // locales - ///////////////////// - - /// return the locale-dependent decimal point - static char get_decimal_point() noexcept - { - const auto loc = localeconv(); - assert(loc != nullptr); - return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); - } - - ///////////////////// - // scan functions - ///////////////////// - - /*! - @brief get codepoint from 4 hex characters following `\u` - - For input "\u c1 c2 c3 c4" the codepoint is: - (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 - = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) - - Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' - must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The - conversion is done by subtracting the offset (0x30, 0x37, and 0x57) - between the ASCII value of the character and the desired integer value. - - @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or - non-hex character) - */ - int get_codepoint() - { - // this function only makes sense after reading `\u` - assert(current == 'u'); - int codepoint = 0; - - const auto factors = { 12, 8, 4, 0 }; - for (const auto factor : factors) - { - get(); - - if (current >= '0' and current <= '9') - { - codepoint += ((current - 0x30) << factor); - } - else if (current >= 'A' and current <= 'F') - { - codepoint += ((current - 0x37) << factor); - } - else if (current >= 'a' and current <= 'f') - { - codepoint += ((current - 0x57) << factor); - } - else - { - return -1; - } - } - - assert(0x0000 <= codepoint and codepoint <= 0xFFFF); - return codepoint; - } - - /*! - @brief check if the next byte(s) are inside a given range - - Adds the current byte and, for each passed range, reads a new byte and - checks if it is inside the range. If a violation was detected, set up an - error message and return false. Otherwise, return true. - - @param[in] ranges list of integers; interpreted as list of pairs of - inclusive lower and upper bound, respectively - - @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, - 1, 2, or 3 pairs. This precondition is enforced by an assertion. - - @return true if and only if no range violation was detected - */ - bool next_byte_in_range(std::initializer_list ranges) - { - assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6); - add(current); - - for (auto range = ranges.begin(); range != ranges.end(); ++range) - { - get(); - if (JSON_LIKELY(*range <= current and current <= *(++range))) - { - add(current); - } - else - { - error_message = "invalid string: ill-formed UTF-8 byte"; - return false; - } - } - - return true; - } - - /*! - @brief scan a string literal - - This function scans a string according to Sect. 7 of RFC 7159. While - scanning, bytes are escaped and copied into buffer yytext. Then the function - returns successfully, yytext is *not* null-terminated (as it may contain \0 - bytes), and yytext.size() is the number of bytes in the string. - - @return token_type::value_string if string could be successfully scanned, - token_type::parse_error otherwise - - @note In case of errors, variable error_message contains a textual - description. - */ - token_type scan_string() - { - // reset yytext (ignore opening quote) - reset(); - - // we entered the function by reading an open quote - assert(current == '\"'); - - while (true) - { - // get next character - switch (get()) - { - // end of file while parsing string - case std::char_traits::eof(): - { - error_message = "invalid string: missing closing quote"; - return token_type::parse_error; - } - - // closing quote - case '\"': - { - return token_type::value_string; - } - - // escapes - case '\\': - { - switch (get()) - { - // quotation mark - case '\"': - add('\"'); - break; - // reverse solidus - case '\\': - add('\\'); - break; - // solidus - case '/': - add('/'); - break; - // backspace - case 'b': - add('\b'); - break; - // form feed - case 'f': - add('\f'); - break; - // line feed - case 'n': - add('\n'); - break; - // carriage return - case 'r': - add('\r'); - break; - // tab - case 't': - add('\t'); - break; - - // unicode escapes - case 'u': - { - const int codepoint1 = get_codepoint(); - int codepoint = codepoint1; // start with codepoint1 - - if (JSON_UNLIKELY(codepoint1 == -1)) - { - error_message = "invalid string: '\\u' must be followed by 4 hex digits"; - return token_type::parse_error; - } - - // check if code point is a high surrogate - if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF) - { - // expect next \uxxxx entry - if (JSON_LIKELY(get() == '\\' and get() == 'u')) - { - const int codepoint2 = get_codepoint(); - - if (JSON_UNLIKELY(codepoint2 == -1)) - { - error_message = "invalid string: '\\u' must be followed by 4 hex digits"; - return token_type::parse_error; - } - - // check if codepoint2 is a low surrogate - if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF)) - { - // overwrite codepoint - codepoint = - // high surrogate occupies the most significant 22 bits - (codepoint1 << 10) - // low surrogate occupies the least significant 15 bits - + codepoint2 - // there is still the 0xD800, 0xDC00 and 0x10000 noise - // in the result so we have to subtract with: - // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 - - 0x35FDC00; - } - else - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; - return token_type::parse_error; - } - } - else - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; - return token_type::parse_error; - } - } - else - { - if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF)) - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; - return token_type::parse_error; - } - } - - // result of the above calculation yields a proper codepoint - assert(0x00 <= codepoint and codepoint <= 0x10FFFF); - - // translate codepoint into bytes - if (codepoint < 0x80) - { - // 1-byte characters: 0xxxxxxx (ASCII) - add(codepoint); - } - else if (codepoint <= 0x7FF) - { - // 2-byte characters: 110xxxxx 10xxxxxx - add(0xC0 | (codepoint >> 6)); - add(0x80 | (codepoint & 0x3F)); - } - else if (codepoint <= 0xFFFF) - { - // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx - add(0xE0 | (codepoint >> 12)); - add(0x80 | ((codepoint >> 6) & 0x3F)); - add(0x80 | (codepoint & 0x3F)); - } - else - { - // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - add(0xF0 | (codepoint >> 18)); - add(0x80 | ((codepoint >> 12) & 0x3F)); - add(0x80 | ((codepoint >> 6) & 0x3F)); - add(0x80 | (codepoint & 0x3F)); - } - - break; - } - - // other characters after escape - default: - error_message = "invalid string: forbidden character after backslash"; - return token_type::parse_error; - } - - break; - } - - // invalid control characters - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - { - error_message = "invalid string: control character must be escaped"; - return token_type::parse_error; - } - - // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) - case 0x20: - case 0x21: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x7F: - { - add(current); - break; - } - - // U+0080..U+07FF: bytes C2..DF 80..BF - case 0xC2: - case 0xC3: - case 0xC4: - case 0xC5: - case 0xC6: - case 0xC7: - case 0xC8: - case 0xC9: - case 0xCA: - case 0xCB: - case 0xCC: - case 0xCD: - case 0xCE: - case 0xCF: - case 0xD0: - case 0xD1: - case 0xD2: - case 0xD3: - case 0xD4: - case 0xD5: - case 0xD6: - case 0xD7: - case 0xD8: - case 0xD9: - case 0xDA: - case 0xDB: - case 0xDC: - case 0xDD: - case 0xDE: - case 0xDF: - { - if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF}))) - { - return token_type::parse_error; - } - break; - } - - // U+0800..U+0FFF: bytes E0 A0..BF 80..BF - case 0xE0: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF - // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF - case 0xE1: - case 0xE2: - case 0xE3: - case 0xE4: - case 0xE5: - case 0xE6: - case 0xE7: - case 0xE8: - case 0xE9: - case 0xEA: - case 0xEB: - case 0xEC: - case 0xEE: - case 0xEF: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+D000..U+D7FF: bytes ED 80..9F 80..BF - case 0xED: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF - case 0xF0: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF - case 0xF1: - case 0xF2: - case 0xF3: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF - case 0xF4: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // remaining bytes (80..C1 and F5..FF) are ill-formed - default: - { - error_message = "invalid string: ill-formed UTF-8 byte"; - return token_type::parse_error; - } - } - } - } - - static void strtof(float& f, const char* str, char** endptr) noexcept - { - f = std::strtof(str, endptr); - } - - static void strtof(double& f, const char* str, char** endptr) noexcept - { - f = std::strtod(str, endptr); - } - - static void strtof(long double& f, const char* str, char** endptr) noexcept - { - f = std::strtold(str, endptr); - } - - /*! - @brief scan a number literal - - This function scans a string according to Sect. 6 of RFC 7159. - - The function is realized with a deterministic finite state machine derived - from the grammar described in RFC 7159. Starting in state "init", the - input is read and used to determined the next state. Only state "done" - accepts the number. State "error" is a trap state to model errors. In the - table below, "anything" means any character but the ones listed before. - - state | 0 | 1-9 | e E | + | - | . | anything - ---------|----------|----------|----------|---------|---------|----------|----------- - init | zero | any1 | [error] | [error] | minus | [error] | [error] - minus | zero | any1 | [error] | [error] | [error] | [error] | [error] - zero | done | done | exponent | done | done | decimal1 | done - any1 | any1 | any1 | exponent | done | done | decimal1 | done - decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error] - decimal2 | decimal2 | decimal2 | exponent | done | done | done | done - exponent | any2 | any2 | [error] | sign | sign | [error] | [error] - sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] - any2 | any2 | any2 | done | done | done | done | done - - The state machine is realized with one label per state (prefixed with - "scan_number_") and `goto` statements between them. The state machine - contains cycles, but any cycle can be left when EOF is read. Therefore, - the function is guaranteed to terminate. - - During scanning, the read bytes are stored in yytext. This string is - then converted to a signed integer, an unsigned integer, or a - floating-point number. - - @return token_type::value_unsigned, token_type::value_integer, or - token_type::value_float if number could be successfully scanned, - token_type::parse_error otherwise - - @note The scanner is independent of the current locale. Internally, the - locale's decimal point is used instead of `.` to work with the - locale-dependent converters. - */ - token_type scan_number() - { - // reset yytext to store the number's bytes - reset(); - - // the type of the parsed number; initially set to unsigned; will be - // changed if minus sign, decimal point or exponent is read - token_type number_type = token_type::value_unsigned; - - // state (init): we just found out we need to scan a number - switch (current) - { - case '-': - { - add(current); - goto scan_number_minus; - } - - case '0': - { - add(current); - goto scan_number_zero; - } - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - default: - { - // all other characters are rejected outside scan_number() - assert(false); // LCOV_EXCL_LINE - } - } - -scan_number_minus: - // state: we just parsed a leading minus sign - number_type = token_type::value_integer; - switch (get()) - { - case '0': - { - add(current); - goto scan_number_zero; - } - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - default: - { - error_message = "invalid number; expected digit after '-'"; - return token_type::parse_error; - } - } - -scan_number_zero: - // state: we just parse a zero (maybe with a leading minus sign) - switch (get()) - { - case '.': - { - add(decimal_point_char); - goto scan_number_decimal1; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_any1: - // state: we just parsed a number 0-9 (maybe with a leading minus sign) - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - case '.': - { - add(decimal_point_char); - goto scan_number_decimal1; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_decimal1: - // state: we just parsed a decimal point - number_type = token_type::value_float; - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_decimal2; - } - - default: - { - error_message = "invalid number; expected digit after '.'"; - return token_type::parse_error; - } - } - -scan_number_decimal2: - // we just parsed at least one number after a decimal point - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_decimal2; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_exponent: - // we just parsed an exponent - number_type = token_type::value_float; - switch (get()) - { - case '+': - case '-': - { - add(current); - goto scan_number_sign; - } - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - { - error_message = - "invalid number; expected '+', '-', or digit after exponent"; - return token_type::parse_error; - } - } - -scan_number_sign: - // we just parsed an exponent sign - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - { - error_message = "invalid number; expected digit after exponent sign"; - return token_type::parse_error; - } - } - -scan_number_any2: - // we just parsed a number after the exponent or exponent sign - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - goto scan_number_done; - } - -scan_number_done: - // unget the character after the number (we only read it to know that - // we are done scanning a number) - unget(); - - char* endptr = nullptr; - errno = 0; - - // try to parse integers first and fall back to floats - if (number_type == token_type::value_unsigned) - { - const auto x = std::strtoull(yytext.data(), &endptr, 10); - - // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); - - if (errno == 0) - { - value_unsigned = static_cast(x); - if (value_unsigned == x) - { - return token_type::value_unsigned; - } - } - } - else if (number_type == token_type::value_integer) - { - const auto x = std::strtoll(yytext.data(), &endptr, 10); - - // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); - - if (errno == 0) - { - value_integer = static_cast(x); - if (value_integer == x) - { - return token_type::value_integer; - } - } - } - - // this code is reached if we parse a floating-point number or if an - // integer conversion above failed - strtof(value_float, yytext.data(), &endptr); - - // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); - - return token_type::value_float; - } - - /*! - @param[in] literal_text the literal text to expect - @param[in] length the length of the passed literal text - @param[in] return_type the token type to return on success - */ - token_type scan_literal(const char* literal_text, const std::size_t length, - token_type return_type) - { - assert(current == literal_text[0]); - for (std::size_t i = 1; i < length; ++i) - { - if (JSON_UNLIKELY(get() != literal_text[i])) - { - error_message = "invalid literal"; - return token_type::parse_error; - } - } - return return_type; - } - - ///////////////////// - // input management - ///////////////////// - - /// reset yytext; current character is beginning of token - void reset() noexcept - { - yytext.clear(); - token_string.clear(); - token_string.push_back(std::char_traits::to_char_type(current)); - } - - /* - @brief get next character from the input - - This function provides the interface to the used input adapter. It does - not throw in case the input reached EOF, but returns a - `std::char_traits::eof()` in that case. Stores the scanned characters - for use in error messages. - - @return character read from the input - */ - std::char_traits::int_type get() - { - ++chars_read; - current = ia->get_character(); - if (JSON_LIKELY(current != std::char_traits::eof())) - { - token_string.push_back(std::char_traits::to_char_type(current)); - } - return current; - } - - /// unget current character (return it again on next get) - void unget() - { - --chars_read; - if (JSON_LIKELY(current != std::char_traits::eof())) - { - ia->unget_character(); - assert(token_string.size() != 0); - token_string.pop_back(); - } - } - - /// add a character to yytext - void add(int c) - { - yytext.push_back(std::char_traits::to_char_type(c)); - } - - public: - ///////////////////// - // value getters - ///////////////////// - - /// return integer value - constexpr number_integer_t get_number_integer() const noexcept - { - return value_integer; - } - - /// return unsigned integer value - constexpr number_unsigned_t get_number_unsigned() const noexcept - { - return value_unsigned; - } - - /// return floating-point value - constexpr number_float_t get_number_float() const noexcept - { - return value_float; - } - - /// return current string value (implicitly resets the token; useful only once) - std::string move_string() - { - return std::move(yytext); - } - - ///////////////////// - // diagnostics - ///////////////////// - - /// return position of last read token - constexpr std::size_t get_position() const noexcept - { - return chars_read; - } - - /// return the last read token (for errors only). Will never contain EOF - /// (an arbitrary value that is not a valid char value, often -1), because - /// 255 may legitimately occur. May contain NUL, which should be escaped. - std::string get_token_string() const - { - // escape control characters - std::string result; - for (const auto c : token_string) - { - if ('\x00' <= c and c <= '\x1F') - { - // escape control characters - std::stringstream ss; - ss << "(c) << ">"; - result += ss.str(); - } - else - { - // add character as is - result.push_back(c); - } - } - - return result; - } - - /// return syntax error message - constexpr const char* get_error_message() const noexcept - { - return error_message; - } - - ///////////////////// - // actual scanner - ///////////////////// - - token_type scan() - { - // read next character and ignore whitespace - do - { - get(); - } - while (current == ' ' or current == '\t' or current == '\n' or current == '\r'); - - switch (current) - { - // structural characters - case '[': - return token_type::begin_array; - case ']': - return token_type::end_array; - case '{': - return token_type::begin_object; - case '}': - return token_type::end_object; - case ':': - return token_type::name_separator; - case ',': - return token_type::value_separator; - - // literals - case 't': - return scan_literal("true", 4, token_type::literal_true); - case 'f': - return scan_literal("false", 5, token_type::literal_false); - case 'n': - return scan_literal("null", 4, token_type::literal_null); - - // string - case '\"': - return scan_string(); - - // number - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - return scan_number(); - - // end of input (the null byte is needed when parsing from - // string literals) - case '\0': - case std::char_traits::eof(): - return token_type::end_of_input; - - // error - default: - error_message = "invalid literal"; - return token_type::parse_error; - } - } - - private: - /// input adapter - detail::input_adapter_t ia = nullptr; - - /// the current character - std::char_traits::int_type current = std::char_traits::eof(); - - /// the number of characters read - std::size_t chars_read = 0; - - /// raw input token string (for error messages) - std::vector token_string {}; - - /// buffer for variable-length tokens (numbers, strings) - std::string yytext {}; - - /// a description of occurred lexer errors - const char* error_message = ""; - - // number values - number_integer_t value_integer = 0; - number_unsigned_t value_unsigned = 0; - number_float_t value_float = 0; - - /// the decimal point - const char decimal_point_char = '.'; -}; -} -} - -#endif - -/*** End of inlined file: lexer.hpp ***/ namespace nlohmann { @@ -6063,10 +3688,7 @@ class parser #endif -/*** End of inlined file: parser.hpp ***/ - - -/*** Start of inlined file: primitive_iterator.hpp ***/ +// #include "detail/iterators/primitive_iterator.hpp" #ifndef NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP #define NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP @@ -6199,148 +3821,12 @@ class primitive_iterator_t #endif -/*** End of inlined file: primitive_iterator.hpp ***/ - - -/*** Start of inlined file: internal_iterator.hpp ***/ +// #include "detail/iterators/internal_iterator.hpp" #ifndef NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP #define NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP +// #include "detail/iterators/primitive_iterator.hpp" -/*** Start of inlined file: primitive_iterator.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP - -#include // not -#include // ptrdiff_t -#include // numeric_limits -#include // ostream - -namespace nlohmann -{ -namespace detail -{ -/* -@brief an iterator for primitive JSON types - -This class models an iterator for primitive JSON types (boolean, number, -string). It's only purpose is to allow the iterator/const_iterator classes -to "iterate" over primitive values. Internally, the iterator is modeled by -a `difference_type` variable. Value begin_value (`0`) models the begin, -end_value (`1`) models past the end. -*/ -class primitive_iterator_t -{ - public: - using difference_type = std::ptrdiff_t; - - constexpr difference_type get_value() const noexcept - { - return m_it; - } - - /// set iterator to a defined beginning - void set_begin() noexcept - { - m_it = begin_value; - } - - /// set iterator to a defined past the end - void set_end() noexcept - { - m_it = end_value; - } - - /// return whether the iterator can be dereferenced - constexpr bool is_begin() const noexcept - { - return m_it == begin_value; - } - - /// return whether the iterator is at end - constexpr bool is_end() const noexcept - { - return m_it == end_value; - } - - friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it == rhs.m_it; - } - - friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it < rhs.m_it; - } - - primitive_iterator_t operator+(difference_type i) - { - auto result = *this; - result += i; - return result; - } - - friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it - rhs.m_it; - } - - friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) - { - return os << it.m_it; - } - - primitive_iterator_t& operator++() - { - ++m_it; - return *this; - } - - primitive_iterator_t const operator++(int) - { - auto result = *this; - m_it++; - return result; - } - - primitive_iterator_t& operator--() - { - --m_it; - return *this; - } - - primitive_iterator_t const operator--(int) - { - auto result = *this; - m_it--; - return result; - } - - primitive_iterator_t& operator+=(difference_type n) - { - m_it += n; - return *this; - } - - primitive_iterator_t& operator-=(difference_type n) - { - m_it -= n; - return *this; - } - - private: - static constexpr difference_type begin_value = 0; - static constexpr difference_type end_value = begin_value + 1; - - /// iterator as signed integer type - difference_type m_it = (std::numeric_limits::min)(); -}; -} -} - -#endif - -/*** End of inlined file: primitive_iterator.hpp ***/ namespace nlohmann { @@ -6366,10 +3852,7 @@ template struct internal_iterator #endif -/*** End of inlined file: internal_iterator.hpp ***/ - - -/*** Start of inlined file: iter_impl.hpp ***/ +// #include "detail/iterators/iter_impl.hpp" #ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP #define NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP @@ -6377,36 +3860,18 @@ template struct internal_iterator #include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next #include // conditional, is_const, remove_const +// #include "detail/exceptions.hpp" -/*** Start of inlined file: internal_iterator.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP +// #include "detail/iterators/internal_iterator.hpp" -namespace nlohmann -{ -namespace detail -{ -/*! -@brief an iterator value +// #include "detail/iterators/primitive_iterator.hpp" -@note This structure could easily be a union, but MSVC currently does not allow -unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. -*/ -template struct internal_iterator -{ - /// iterator for JSON objects - typename BasicJsonType::object_t::iterator object_iterator {}; - /// iterator for JSON arrays - typename BasicJsonType::array_t::iterator array_iterator {}; - /// generic iterator for all other types - primitive_iterator_t primitive_iterator {}; -}; -} -} +// #include "detail/macro_scope.hpp" -#endif +// #include "detail/meta.hpp" + +// #include "detail/value_t.hpp" -/*** End of inlined file: internal_iterator.hpp ***/ namespace nlohmann { @@ -7012,16 +4477,16 @@ class iter_impl #endif -/*** End of inlined file: iter_impl.hpp ***/ - - -/*** Start of inlined file: iteration_proxy.hpp ***/ +// #include "detail/iterators/iteration_proxy.hpp" #ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP #define NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP #include // size_t #include // string, to_string +// #include "detail/value_t.hpp" + + namespace nlohmann { namespace detail @@ -7116,10 +4581,7 @@ template class iteration_proxy #endif -/*** End of inlined file: iteration_proxy.hpp ***/ - - -/*** Start of inlined file: json_reverse_iterator.hpp ***/ +// #include "detail/iterators/json_reverse_iterator.hpp" #ifndef NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP #define NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP @@ -7243,10 +4705,7 @@ class json_reverse_iterator : public std::reverse_iterator #endif -/*** End of inlined file: json_reverse_iterator.hpp ***/ - - -/*** Start of inlined file: output_adapters.hpp ***/ +// #include "detail/parsing/output_adapters.hpp" #ifndef NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP #define NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP @@ -7364,10 +4823,7 @@ class output_adapter #endif -/*** End of inlined file: output_adapters.hpp ***/ - - -/*** Start of inlined file: binary_reader.hpp ***/ +// #include "detail/parsing/binary_reader.hpp" #ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP #define NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP @@ -7386,6 +4842,15 @@ class output_adapter #include // char_traits, string #include // make_pair, move +// #include "detail/exceptions.hpp" + +// #include "detail/macro_scope.hpp" + +// #include "detail/parsing/input_adapters.hpp" + +// #include "detail/value_t.hpp" + + namespace nlohmann { namespace detail @@ -8457,10 +5922,7 @@ class binary_reader #endif -/*** End of inlined file: binary_reader.hpp ***/ - - -/*** Start of inlined file: binary_writer.hpp ***/ +// #include "detail/parsing/binary_writer.hpp" #ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP #define NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP @@ -8470,1219 +5932,10 @@ class binary_reader #include // memcpy #include // numeric_limits +// #include "detail/parsing/binary_reader.hpp" -/*** Start of inlined file: binary_reader.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP +// #include "detail/parsing/output_adapters.hpp" -#include // generate_n -#include // array -#include // assert -#include // ldexp -#include // size_t -#include // uint8_t, uint16_t, uint32_t, uint64_t -#include // memcpy -#include // setw, setfill -#include // hex -#include // back_inserter -#include // numeric_limits -#include // stringstream -#include // char_traits, string -#include // make_pair, move - -namespace nlohmann -{ -namespace detail -{ -/////////////////// -// binary reader // -/////////////////// - -/*! -@brief deserialization of CBOR and MessagePack values -*/ -template -class binary_reader -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - - public: - /*! - @brief create a binary reader - - @param[in] adapter input adapter to read from - */ - explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter)) - { - assert(ia); - } - - /*! - @brief create a JSON value from CBOR input - - @param[in] strict whether to expect the input to be consumed completed - @return JSON value created from CBOR input - - @throw parse_error.110 if input ended unexpectedly or the end of file was - not reached when @a strict was set to true - @throw parse_error.112 if unsupported byte was read - */ - BasicJsonType parse_cbor(const bool strict) - { - const auto res = parse_cbor_internal(); - if (strict) - { - get(); - check_eof(true); - } - return res; - } - - /*! - @brief create a JSON value from MessagePack input - - @param[in] strict whether to expect the input to be consumed completed - @return JSON value created from MessagePack input - - @throw parse_error.110 if input ended unexpectedly or the end of file was - not reached when @a strict was set to true - @throw parse_error.112 if unsupported byte was read - */ - BasicJsonType parse_msgpack(const bool strict) - { - const auto res = parse_msgpack_internal(); - if (strict) - { - get(); - check_eof(true); - } - return res; - } - - /*! - @brief determine system byte order - - @return true if and only if system's byte order is little endian - - @note from http://stackoverflow.com/a/1001328/266378 - */ - static constexpr bool little_endianess(int num = 1) noexcept - { - return (*reinterpret_cast(&num) == 1); - } - - private: - /*! - @param[in] get_char whether a new character should be retrieved from the - input (true, default) or whether the last read - character should be considered instead - */ - BasicJsonType parse_cbor_internal(const bool get_char = true) - { - switch (get_char ? get() : current) - { - // EOF - case std::char_traits::eof(): - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - - // Integer 0x00..0x17 (0..23) - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - return static_cast(current); - - case 0x18: // Unsigned integer (one-byte uint8_t follows) - return get_number(); - - case 0x19: // Unsigned integer (two-byte uint16_t follows) - return get_number(); - - case 0x1A: // Unsigned integer (four-byte uint32_t follows) - return get_number(); - - case 0x1B: // Unsigned integer (eight-byte uint64_t follows) - return get_number(); - - // Negative integer -1-0x00..-1-0x17 (-1..-24) - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - return static_cast(0x20 - 1 - current); - - case 0x38: // Negative integer (one-byte uint8_t follows) - { - // must be uint8_t ! - return static_cast(-1) - get_number(); - } - - case 0x39: // Negative integer -1-n (two-byte uint16_t follows) - { - return static_cast(-1) - get_number(); - } - - case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) - { - return static_cast(-1) - get_number(); - } - - case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) - { - return static_cast(-1) - - static_cast(get_number()); - } - - // UTF-8 string (0x00..0x17 bytes follow) - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: // UTF-8 string (one-byte uint8_t for n follows) - case 0x79: // UTF-8 string (two-byte uint16_t for n follow) - case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) - case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) - case 0x7F: // UTF-8 string (indefinite length) - { - return get_cbor_string(); - } - - // array (0x00..0x17 data items follow) - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - { - return get_cbor_array(current & 0x1F); - } - - case 0x98: // array (one-byte uint8_t for n follows) - { - return get_cbor_array(get_number()); - } - - case 0x99: // array (two-byte uint16_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9A: // array (four-byte uint32_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9B: // array (eight-byte uint64_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9F: // array (indefinite length) - { - BasicJsonType result = value_t::array; - while (get() != 0xFF) - { - result.push_back(parse_cbor_internal(false)); - } - return result; - } - - // map (0x00..0x17 pairs of data items follow) - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - { - return get_cbor_object(current & 0x1F); - } - - case 0xB8: // map (one-byte uint8_t for n follows) - { - return get_cbor_object(get_number()); - } - - case 0xB9: // map (two-byte uint16_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBA: // map (four-byte uint32_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBB: // map (eight-byte uint64_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBF: // map (indefinite length) - { - BasicJsonType result = value_t::object; - while (get() != 0xFF) - { - auto key = get_cbor_string(); - result[key] = parse_cbor_internal(); - } - return result; - } - - case 0xF4: // false - { - return false; - } - - case 0xF5: // true - { - return true; - } - - case 0xF6: // null - { - return value_t::null; - } - - case 0xF9: // Half-Precision Float (two-byte IEEE 754) - { - const int byte1 = get(); - check_eof(); - const int byte2 = get(); - check_eof(); - - // code from RFC 7049, Appendix D, Figure 3: - // As half-precision floating-point numbers were only added - // to IEEE 754 in 2008, today's programming platforms often - // still only have limited support for them. It is very - // easy to include at least decoding support for them even - // without such support. An example of a small decoder for - // half-precision floating-point numbers in the C language - // is shown in Fig. 3. - const int half = (byte1 << 8) + byte2; - const int exp = (half >> 10) & 0x1F; - const int mant = half & 0x3FF; - double val; - if (exp == 0) - { - val = std::ldexp(mant, -24); - } - else if (exp != 31) - { - val = std::ldexp(mant + 1024, exp - 25); - } - else - { - val = (mant == 0) ? std::numeric_limits::infinity() - : std::numeric_limits::quiet_NaN(); - } - return (half & 0x8000) != 0 ? -val : val; - } - - case 0xFA: // Single-Precision Float (four-byte IEEE 754) - { - return get_number(); - } - - case 0xFB: // Double-Precision Float (eight-byte IEEE 754) - { - return get_number(); - } - - default: // anything else (0xFF is handled inside the other types) - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(112, chars_read, "error reading CBOR; last byte: 0x" + ss.str())); - } - } - } - - BasicJsonType parse_msgpack_internal() - { - switch (get()) - { - // EOF - case std::char_traits::eof(): - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - - // positive fixint - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5C: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x7F: - return static_cast(current); - - // fixmap - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - { - return get_msgpack_object(current & 0x0F); - } - - // fixarray - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - case 0x98: - case 0x99: - case 0x9A: - case 0x9B: - case 0x9C: - case 0x9D: - case 0x9E: - case 0x9F: - { - return get_msgpack_array(current & 0x0F); - } - - // fixstr - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - return get_msgpack_string(); - - case 0xC0: // nil - return value_t::null; - - case 0xC2: // false - return false; - - case 0xC3: // true - return true; - - case 0xCA: // float 32 - return get_number(); - - case 0xCB: // float 64 - return get_number(); - - case 0xCC: // uint 8 - return get_number(); - - case 0xCD: // uint 16 - return get_number(); - - case 0xCE: // uint 32 - return get_number(); - - case 0xCF: // uint 64 - return get_number(); - - case 0xD0: // int 8 - return get_number(); - - case 0xD1: // int 16 - return get_number(); - - case 0xD2: // int 32 - return get_number(); - - case 0xD3: // int 64 - return get_number(); - - case 0xD9: // str 8 - case 0xDA: // str 16 - case 0xDB: // str 32 - return get_msgpack_string(); - - case 0xDC: // array 16 - { - return get_msgpack_array(get_number()); - } - - case 0xDD: // array 32 - { - return get_msgpack_array(get_number()); - } - - case 0xDE: // map 16 - { - return get_msgpack_object(get_number()); - } - - case 0xDF: // map 32 - { - return get_msgpack_object(get_number()); - } - - // positive fixint - case 0xE0: - case 0xE1: - case 0xE2: - case 0xE3: - case 0xE4: - case 0xE5: - case 0xE6: - case 0xE7: - case 0xE8: - case 0xE9: - case 0xEA: - case 0xEB: - case 0xEC: - case 0xED: - case 0xEE: - case 0xEF: - case 0xF0: - case 0xF1: - case 0xF2: - case 0xF3: - case 0xF4: - case 0xF5: - case 0xF6: - case 0xF7: - case 0xF8: - case 0xF9: - case 0xFA: - case 0xFB: - case 0xFC: - case 0xFD: - case 0xFE: - case 0xFF: - return static_cast(current); - - default: // anything else - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(112, chars_read, - "error reading MessagePack; last byte: 0x" + ss.str())); - } - } - } - - /*! - @brief get next character from the input - - This function provides the interface to the used input adapter. It does - not throw in case the input reached EOF, but returns a -'ve valued - `std::char_traits::eof()` in that case. - - @return character read from the input - */ - int get() - { - ++chars_read; - return (current = ia->get_character()); - } - - /* - @brief read a number from the input - - @tparam NumberType the type of the number - - @return number of type @a NumberType - - @note This function needs to respect the system's endianess, because - bytes in CBOR and MessagePack are stored in network order (big - endian) and therefore need reordering on little endian systems. - - @throw parse_error.110 if input has less than `sizeof(NumberType)` bytes - */ - template NumberType get_number() - { - // step 1: read input into array with system's byte order - std::array vec; - for (std::size_t i = 0; i < sizeof(NumberType); ++i) - { - get(); - check_eof(); - - // reverse byte order prior to conversion if necessary - if (is_little_endian) - { - vec[sizeof(NumberType) - i - 1] = static_cast(current); - } - else - { - vec[i] = static_cast(current); // LCOV_EXCL_LINE - } - } - - // step 2: convert array into number of type T and return - NumberType result; - std::memcpy(&result, vec.data(), sizeof(NumberType)); - return result; - } - - /*! - @brief create a string by reading characters from the input - - @param[in] len number of bytes to read - - @note We can not reserve @a len bytes for the result, because @a len - may be too large. Usually, @ref check_eof() detects the end of - the input before we run out of string memory. - - @return string created by reading @a len bytes - - @throw parse_error.110 if input has less than @a len bytes - */ - template - std::string get_string(const NumberType len) - { - std::string result; - std::generate_n(std::back_inserter(result), len, [this]() - { - get(); - check_eof(); - return static_cast(current); - }); - return result; - } - - /*! - @brief reads a CBOR string - - This function first reads starting bytes to determine the expected - string length and then copies this number of bytes into a string. - Additionally, CBOR's strings with indefinite lengths are supported. - - @return string - - @throw parse_error.110 if input ended - @throw parse_error.113 if an unexpected byte is read - */ - std::string get_cbor_string() - { - check_eof(); - - switch (current) - { - // UTF-8 string (0x00..0x17 bytes follow) - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - { - return get_string(current & 0x1F); - } - - case 0x78: // UTF-8 string (one-byte uint8_t for n follows) - { - return get_string(get_number()); - } - - case 0x79: // UTF-8 string (two-byte uint16_t for n follow) - { - return get_string(get_number()); - } - - case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) - { - return get_string(get_number()); - } - - case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) - { - return get_string(get_number()); - } - - case 0x7F: // UTF-8 string (indefinite length) - { - std::string result; - while (get() != 0xFF) - { - check_eof(); - result.push_back(static_cast(current)); - } - return result; - } - - default: - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(113, chars_read, "expected a CBOR string; last byte: 0x" + ss.str())); - } - } - } - - template - BasicJsonType get_cbor_array(const NumberType len) - { - BasicJsonType result = value_t::array; - std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() - { - return parse_cbor_internal(); - }); - return result; - } - - template - BasicJsonType get_cbor_object(const NumberType len) - { - BasicJsonType result = value_t::object; - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - len, [this]() - { - get(); - auto key = get_cbor_string(); - auto val = parse_cbor_internal(); - return std::make_pair(std::move(key), std::move(val)); - }); - return result; - } - - /*! - @brief reads a MessagePack string - - This function first reads starting bytes to determine the expected - string length and then copies this number of bytes into a string. - - @return string - - @throw parse_error.110 if input ended - @throw parse_error.113 if an unexpected byte is read - */ - std::string get_msgpack_string() - { - check_eof(); - - switch (current) - { - // fixstr - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - { - return get_string(current & 0x1F); - } - - case 0xD9: // str 8 - { - return get_string(get_number()); - } - - case 0xDA: // str 16 - { - return get_string(get_number()); - } - - case 0xDB: // str 32 - { - return get_string(get_number()); - } - - default: - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(113, chars_read, - "expected a MessagePack string; last byte: 0x" + ss.str())); - } - } - } - - template - BasicJsonType get_msgpack_array(const NumberType len) - { - BasicJsonType result = value_t::array; - std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() - { - return parse_msgpack_internal(); - }); - return result; - } - - template - BasicJsonType get_msgpack_object(const NumberType len) - { - BasicJsonType result = value_t::object; - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - len, [this]() - { - get(); - auto key = get_msgpack_string(); - auto val = parse_msgpack_internal(); - return std::make_pair(std::move(key), std::move(val)); - }); - return result; - } - - /*! - @brief check if input ended - @throw parse_error.110 if input ended - */ - void check_eof(const bool expect_eof = false) const - { - if (expect_eof) - { - if (JSON_UNLIKELY(current != std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); - } - } - else - { - if (JSON_UNLIKELY(current == std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - } - } - } - - private: - /// input adapter - input_adapter_t ia = nullptr; - - /// the current character - int current = std::char_traits::eof(); - - /// the number of characters read - std::size_t chars_read = 0; - - /// whether we can assume little endianess - const bool is_little_endian = little_endianess(); -}; -} -} - -#endif - -/*** End of inlined file: binary_reader.hpp ***/ - - -/*** Start of inlined file: output_adapters.hpp ***/ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP - -#include // copy -#include // size_t -#include // streamsize -#include // back_inserter -#include // shared_ptr, make_shared -#include // basic_ostream -#include // basic_string -#include // vector - -namespace nlohmann -{ -namespace detail -{ -/// abstract output adapter interface -template struct output_adapter_protocol -{ - virtual void write_character(CharType c) = 0; - virtual void write_characters(const CharType* s, std::size_t length) = 0; - virtual ~output_adapter_protocol() = default; -}; - -/// a type to simplify interfaces -template -using output_adapter_t = std::shared_ptr>; - -/// output adapter for byte vectors -template -class output_vector_adapter : public output_adapter_protocol -{ - public: - explicit output_vector_adapter(std::vector& vec) : v(vec) {} - - void write_character(CharType c) override - { - v.push_back(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - std::copy(s, s + length, std::back_inserter(v)); - } - - private: - std::vector& v; -}; - -/// output adapter for output streams -template -class output_stream_adapter : public output_adapter_protocol -{ - public: - explicit output_stream_adapter(std::basic_ostream& s) : stream(s) {} - - void write_character(CharType c) override - { - stream.put(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - stream.write(s, static_cast(length)); - } - - private: - std::basic_ostream& stream; -}; - -/// output adapter for basic_string -template -class output_string_adapter : public output_adapter_protocol -{ - public: - explicit output_string_adapter(std::basic_string& s) : str(s) {} - - void write_character(CharType c) override - { - str.push_back(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - str.append(s, length); - } - - private: - std::basic_string& str; -}; - -template -class output_adapter -{ - public: - output_adapter(std::vector& vec) - : oa(std::make_shared>(vec)) {} - - output_adapter(std::basic_ostream& s) - : oa(std::make_shared>(s)) {} - - output_adapter(std::basic_string& s) - : oa(std::make_shared>(s)) {} - - operator output_adapter_t() - { - return oa; - } - - private: - output_adapter_t oa = nullptr; -}; -} -} - -#endif - -/*** End of inlined file: output_adapters.hpp ***/ namespace nlohmann { @@ -10231,10 +6484,7 @@ class binary_writer #endif -/*** End of inlined file: binary_writer.hpp ***/ - - -/*** Start of inlined file: serializer.hpp ***/ +// #include "detail/serializer.hpp" #ifndef NLOHMANN_JSON_DETAIL_SERIALIZER_HPP #define NLOHMANN_JSON_DETAIL_SERIALIZER_HPP @@ -10252,6 +6502,15 @@ class binary_writer #include // string #include // is_same +// #include "detail/macro_scope.hpp" + +// #include "detail/meta.hpp" + +// #include "detail/parsing/output_adapters.hpp" + +// #include "detail/value_t.hpp" + + namespace nlohmann { namespace detail @@ -11028,10 +7287,7 @@ class serializer #endif -/*** End of inlined file: serializer.hpp ***/ - - -/*** Start of inlined file: json_ref.hpp ***/ +// #include "detail/json_ref.hpp" #ifndef NLOHMANN_JSON_DETAIL_JSON_REF_HPP #define NLOHMANN_JSON_DETAIL_JSON_REF_HPP @@ -11099,15 +7355,17 @@ class json_ref #endif -/*** End of inlined file: json_ref.hpp ***/ - - -/*** Start of inlined file: adl_serializer.hpp ***/ +// #include "adl_serializer.hpp" #ifndef NLOHMANN_JSON_ADL_SERIALIZER_HPP #define NLOHMANN_JSON_ADL_SERIALIZER_HPP #include +// #include "detail/conversions/from_json.hpp" + +// #include "detail/conversions/to_json.hpp" + + namespace nlohmann { template @@ -11149,7 +7407,6 @@ struct adl_serializer #endif -/*** End of inlined file: adl_serializer.hpp ***/ /*! @brief namespace for Niels Lohmann @@ -11640,6 +7897,7 @@ class basic_json /// @} + ///////////////////// // container types // ///////////////////// @@ -11681,6 +7939,7 @@ class basic_json /// @} + /*! @brief returns the allocator associated with the container */ @@ -11767,6 +8026,7 @@ class basic_json return result; } + /////////////////////////// // JSON value data types // /////////////////////////// @@ -12511,6 +8771,7 @@ class basic_json */ using parser_callback_t = typename parser::parser_callback_t; + ////////////////// // constructors // ////////////////// @@ -13036,6 +9297,7 @@ class basic_json assert_invariant(); } + /////////////////////////////////////// // other constructors and destructor // /////////////////////////////////////// @@ -14143,6 +10405,7 @@ class basic_json /// @} + //////////////////// // element access // //////////////////// @@ -15138,6 +11401,7 @@ class basic_json /// @} + //////////// // lookup // //////////// @@ -15227,6 +11491,7 @@ class basic_json /// @} + /////////////// // iterators // /////////////// @@ -15638,6 +11903,7 @@ class basic_json /// @} + ////////////// // capacity // ////////////// @@ -15854,6 +12120,7 @@ class basic_json /// @} + /////////////// // modifiers // /////////////// @@ -17216,6 +13483,7 @@ class basic_json /// @} + ///////////////////// // deserialization // ///////////////////// @@ -17489,6 +13757,7 @@ class basic_json } } + private: ////////////////////// // member variables // @@ -19095,8 +15364,7 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std return nlohmann::json::json_pointer(std::string(s, n)); } - -/*** Start of inlined file: macro_unscope.hpp ***/ +// #include "detail/macro_unscope.hpp" #ifndef NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP #define NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP @@ -19123,7 +15391,5 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std #endif -/*** End of inlined file: macro_unscope.hpp ***/ #endif - From 85173f56279eb55161415fa0eae4276059dee876 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 10 Jan 2018 10:18:31 +0100 Subject: [PATCH 038/106] :hammer: some clean up --- develop/adl_serializer.hpp | 5 +- develop/detail/conversions/from_json.hpp | 5 +- develop/detail/conversions/to_json.hpp | 5 +- .../detail/iterators/internal_iterator.hpp | 5 +- develop/detail/iterators/iter_impl.hpp | 5 +- develop/detail/iterators/iteration_proxy.hpp | 5 +- .../iterators/json_reverse_iterator.hpp | 5 +- .../detail/iterators/primitive_iterator.hpp | 5 +- develop/detail/json_ref.hpp | 5 +- develop/detail/macro_scope.hpp | 5 +- develop/detail/macro_unscope.hpp | 5 +- develop/detail/meta.hpp | 5 +- develop/detail/parsing/binary_reader.hpp | 5 +- develop/detail/parsing/binary_writer.hpp | 5 +- develop/detail/parsing/input_adapters.hpp | 5 +- develop/detail/parsing/lexer.hpp | 5 +- develop/detail/parsing/output_adapters.hpp | 5 +- develop/detail/parsing/parser.hpp | 5 +- develop/detail/serializer.hpp | 5 +- develop/detail/value_t.hpp | 5 +- src/json.hpp | 136 +++++------------- 21 files changed, 58 insertions(+), 178 deletions(-) diff --git a/develop/adl_serializer.hpp b/develop/adl_serializer.hpp index c2ad371c..cae95637 100644 --- a/develop/adl_serializer.hpp +++ b/develop/adl_serializer.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_ADL_SERIALIZER_HPP -#define NLOHMANN_JSON_ADL_SERIALIZER_HPP +#pragma once #include @@ -44,5 +43,3 @@ struct adl_serializer } }; } - -#endif diff --git a/develop/detail/conversions/from_json.hpp b/develop/detail/conversions/from_json.hpp index 55925464..ba89e540 100644 --- a/develop/detail/conversions/from_json.hpp +++ b/develop/detail/conversions/from_json.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP -#define NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP +#pragma once #include // transform #include // array @@ -314,5 +313,3 @@ namespace constexpr const auto& from_json = detail::static_const::value; } } - -#endif diff --git a/develop/detail/conversions/to_json.hpp b/develop/detail/conversions/to_json.hpp index 0153b13d..2df7b0b8 100644 --- a/develop/detail/conversions/to_json.hpp +++ b/develop/detail/conversions/to_json.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP -#define NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP +#pragma once #include // or, and, not #include // begin, end @@ -337,5 +336,3 @@ namespace constexpr const auto& to_json = detail::static_const::value; } } - -#endif diff --git a/develop/detail/iterators/internal_iterator.hpp b/develop/detail/iterators/internal_iterator.hpp index 25763355..b65b33d3 100644 --- a/develop/detail/iterators/internal_iterator.hpp +++ b/develop/detail/iterators/internal_iterator.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP +#pragma once #include "detail/iterators/primitive_iterator.hpp" @@ -24,5 +23,3 @@ template struct internal_iterator }; } } - -#endif diff --git a/develop/detail/iterators/iter_impl.hpp b/develop/detail/iterators/iter_impl.hpp index e11412c6..4d939476 100644 --- a/develop/detail/iterators/iter_impl.hpp +++ b/develop/detail/iterators/iter_impl.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP +#pragma once #include // not #include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next @@ -613,5 +612,3 @@ class iter_impl }; } } - -#endif diff --git a/develop/detail/iterators/iteration_proxy.hpp b/develop/detail/iterators/iteration_proxy.hpp index e4ce84e4..296101c8 100644 --- a/develop/detail/iterators/iteration_proxy.hpp +++ b/develop/detail/iterators/iteration_proxy.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP +#pragma once #include // size_t #include // string, to_string @@ -97,5 +96,3 @@ template class iteration_proxy }; } } - -#endif diff --git a/develop/detail/iterators/json_reverse_iterator.hpp b/develop/detail/iterators/json_reverse_iterator.hpp index b0f4effe..06448191 100644 --- a/develop/detail/iterators/json_reverse_iterator.hpp +++ b/develop/detail/iterators/json_reverse_iterator.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP +#pragma once #include // ptrdiff_t #include // reverse_iterator @@ -118,5 +117,3 @@ class json_reverse_iterator : public std::reverse_iterator }; } } - -#endif diff --git a/develop/detail/iterators/primitive_iterator.hpp b/develop/detail/iterators/primitive_iterator.hpp index c5cd4031..fd2a00cb 100644 --- a/develop/detail/iterators/primitive_iterator.hpp +++ b/develop/detail/iterators/primitive_iterator.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP +#pragma once #include // not #include // ptrdiff_t @@ -127,5 +126,3 @@ class primitive_iterator_t }; } } - -#endif diff --git a/develop/detail/json_ref.hpp b/develop/detail/json_ref.hpp index ec120c02..8285be22 100644 --- a/develop/detail/json_ref.hpp +++ b/develop/detail/json_ref.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_JSON_REF_HPP -#define NLOHMANN_JSON_DETAIL_JSON_REF_HPP +#pragma once #include #include @@ -62,5 +61,3 @@ class json_ref }; } } - -#endif diff --git a/develop/detail/macro_scope.hpp b/develop/detail/macro_scope.hpp index f20cc667..f8936025 100644 --- a/develop/detail/macro_scope.hpp +++ b/develop/detail/macro_scope.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_MACRO_SCOPE_HPP -#define NLOHMANN_JSON_MACRO_SCOPE_HPP +#pragma once #include // not @@ -102,5 +101,3 @@ contains a `mapped_type`, whereas `std::vector` fails the test. static constexpr bool value = \ std::is_integral()))>::value; \ } - -#endif diff --git a/develop/detail/macro_unscope.hpp b/develop/detail/macro_unscope.hpp index 9b8cf7b9..99a0abdf 100644 --- a/develop/detail/macro_unscope.hpp +++ b/develop/detail/macro_unscope.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP -#define NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP +#pragma once // restore GCC/clang diagnostic settings #if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) @@ -21,5 +20,3 @@ #undef NLOHMANN_BASIC_JSON_TPL_DECLARATION #undef NLOHMANN_BASIC_JSON_TPL #undef NLOHMANN_JSON_HAS_HELPER - -#endif diff --git a/develop/detail/meta.hpp b/develop/detail/meta.hpp index 35705183..bea42a07 100644 --- a/develop/detail/meta.hpp +++ b/develop/detail/meta.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_META_HPP -#define NLOHMANN_JSON_DETAIL_META_HPP +#pragma once #include // not #include // size_t @@ -233,5 +232,3 @@ template constexpr T static_const::value; } } - -#endif diff --git a/develop/detail/parsing/binary_reader.hpp b/develop/detail/parsing/binary_reader.hpp index a1195393..bacf3d46 100644 --- a/develop/detail/parsing/binary_reader.hpp +++ b/develop/detail/parsing/binary_reader.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP +#pragma once #include // generate_n #include // array @@ -1089,5 +1088,3 @@ class binary_reader }; } } - -#endif diff --git a/develop/detail/parsing/binary_writer.hpp b/develop/detail/parsing/binary_writer.hpp index 59583b9c..68034fc7 100644 --- a/develop/detail/parsing/binary_writer.hpp +++ b/develop/detail/parsing/binary_writer.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP +#pragma once #include // reverse #include // array @@ -554,5 +553,3 @@ class binary_writer }; } } - -#endif diff --git a/develop/detail/parsing/input_adapters.hpp b/develop/detail/parsing/input_adapters.hpp index 7d4f2dee..abbf5d29 100644 --- a/develop/detail/parsing/input_adapters.hpp +++ b/develop/detail/parsing/input_adapters.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP +#pragma once #include // min #include // array @@ -261,5 +260,3 @@ class input_adapter }; } } - -#endif diff --git a/develop/detail/parsing/lexer.hpp b/develop/detail/parsing/lexer.hpp index f50b0521..de222a6c 100644 --- a/develop/detail/parsing/lexer.hpp +++ b/develop/detail/parsing/lexer.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP +#pragma once #include // localeconv #include // size_t @@ -1275,5 +1274,3 @@ scan_number_done: }; } } - -#endif diff --git a/develop/detail/parsing/output_adapters.hpp b/develop/detail/parsing/output_adapters.hpp index 71099038..fe9e1b36 100644 --- a/develop/detail/parsing/output_adapters.hpp +++ b/develop/detail/parsing/output_adapters.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP +#pragma once #include // copy #include // size_t @@ -112,5 +111,3 @@ class output_adapter }; } } - -#endif diff --git a/develop/detail/parsing/parser.hpp b/develop/detail/parsing/parser.hpp index 52a9c4fe..b0322204 100644 --- a/develop/detail/parsing/parser.hpp +++ b/develop/detail/parsing/parser.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP +#pragma once #include // assert #include // isfinite @@ -588,5 +587,3 @@ class parser }; } } - -#endif diff --git a/develop/detail/serializer.hpp b/develop/detail/serializer.hpp index 0d3303d9..b5f2b06a 100644 --- a/develop/detail/serializer.hpp +++ b/develop/detail/serializer.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_SERIALIZER_HPP -#define NLOHMANN_JSON_DETAIL_SERIALIZER_HPP +#pragma once #include // reverse, remove, fill, find, none_of #include // array @@ -793,5 +792,3 @@ class serializer }; } } - -#endif diff --git a/develop/detail/value_t.hpp b/develop/detail/value_t.hpp index b96f294b..326367c4 100644 --- a/develop/detail/value_t.hpp +++ b/develop/detail/value_t.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_VALUE_T_HPP -#define NLOHMANN_JSON_DETAIL_VALUE_T_HPP +#pragma once #include // array #include // and @@ -75,5 +74,3 @@ inline bool operator<(const value_t lhs, const value_t rhs) noexcept } } } - -#endif diff --git a/src/json.hpp b/src/json.hpp index cc43f5b5..a80cc36a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -107,8 +107,7 @@ using json = basic_json<>; #endif // #include "detail/macro_scope.hpp" -#ifndef NLOHMANN_JSON_MACRO_SCOPE_HPP -#define NLOHMANN_JSON_MACRO_SCOPE_HPP + #include // not @@ -212,11 +211,8 @@ contains a `mapped_type`, whereas `std::vector` fails the test. std::is_integral()))>::value; \ } -#endif - // #include "detail/meta.hpp" -#ifndef NLOHMANN_JSON_DETAIL_META_HPP -#define NLOHMANN_JSON_DETAIL_META_HPP + #include // not #include // size_t @@ -453,8 +449,6 @@ constexpr T static_const::value; } } -#endif - // #include "detail/exceptions.hpp" #ifndef NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP #define NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP @@ -789,8 +783,7 @@ class other_error : public exception #endif // #include "detail/value_t.hpp" -#ifndef NLOHMANN_JSON_DETAIL_VALUE_T_HPP -#define NLOHMANN_JSON_DETAIL_VALUE_T_HPP + #include // array #include // and @@ -867,11 +860,8 @@ inline bool operator<(const value_t lhs, const value_t rhs) noexcept } } -#endif - // #include "detail/conversions/from_json.hpp" -#ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP -#define NLOHMANN_JSON_DETAIL_CONVERSIONS_FROM_JSON_HPP + #include // transform #include // array @@ -1191,11 +1181,8 @@ constexpr const auto& from_json = detail::static_const::va } } -#endif - // #include "detail/conversions/to_json.hpp" -#ifndef NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP -#define NLOHMANN_JSON_DETAIL_CONVERSIONS_TO_JSON_HPP + #include // or, and, not #include // begin, end @@ -1536,11 +1523,8 @@ constexpr const auto& to_json = detail::static_const::value; } } -#endif - // #include "detail/parsing/input_adapters.hpp" -#ifndef NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_INPUT_ADAPTERS_HPP + #include // min #include // array @@ -1804,11 +1788,8 @@ class input_adapter } } -#endif - // #include "detail/parsing/lexer.hpp" -#ifndef NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_LEXER_HPP + #include // localeconv #include // size_t @@ -3087,11 +3068,8 @@ scan_number_done: } } -#endif - // #include "detail/parsing/parser.hpp" -#ifndef NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_PARSER_HPP + #include // assert #include // isfinite @@ -3686,11 +3664,8 @@ class parser } } -#endif - // #include "detail/iterators/primitive_iterator.hpp" -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_PRIMITIVE_ITERATOR_HPP + #include // not #include // ptrdiff_t @@ -3819,11 +3794,8 @@ class primitive_iterator_t } } -#endif - // #include "detail/iterators/internal_iterator.hpp" -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_INTERNAL_ITERATOR_HPP + // #include "detail/iterators/primitive_iterator.hpp" @@ -3850,11 +3822,8 @@ template struct internal_iterator } } -#endif - // #include "detail/iterators/iter_impl.hpp" -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_ITER_IMPL_HPP + #include // not #include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next @@ -4475,11 +4444,8 @@ class iter_impl } } -#endif - // #include "detail/iterators/iteration_proxy.hpp" -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_ITERATION_PROXY_HPP + #include // size_t #include // string, to_string @@ -4579,11 +4545,8 @@ template class iteration_proxy } } -#endif - // #include "detail/iterators/json_reverse_iterator.hpp" -#ifndef NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP -#define NLOHMANN_JSON_DETAIL_ITERATORS_JSON_REVERSE_ITERATOR_HPP + #include // ptrdiff_t #include // reverse_iterator @@ -4703,11 +4666,8 @@ class json_reverse_iterator : public std::reverse_iterator } } -#endif - // #include "detail/parsing/output_adapters.hpp" -#ifndef NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_OUTPUT_ADAPTERS_HPP + #include // copy #include // size_t @@ -4821,11 +4781,8 @@ class output_adapter } } -#endif - // #include "detail/parsing/binary_reader.hpp" -#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_READER_HPP + #include // generate_n #include // array @@ -5920,11 +5877,8 @@ class binary_reader } } -#endif - // #include "detail/parsing/binary_writer.hpp" -#ifndef NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP -#define NLOHMANN_JSON_DETAIL_PARSING_BINARY_WRITER_HPP + #include // reverse #include // array @@ -6482,11 +6436,8 @@ class binary_writer } } -#endif - // #include "detail/serializer.hpp" -#ifndef NLOHMANN_JSON_DETAIL_SERIALIZER_HPP -#define NLOHMANN_JSON_DETAIL_SERIALIZER_HPP + #include // reverse, remove, fill, find, none_of #include // array @@ -7285,11 +7236,8 @@ class serializer } } -#endif - // #include "detail/json_ref.hpp" -#ifndef NLOHMANN_JSON_DETAIL_JSON_REF_HPP -#define NLOHMANN_JSON_DETAIL_JSON_REF_HPP + #include #include @@ -7353,11 +7301,8 @@ class json_ref } } -#endif - // #include "adl_serializer.hpp" -#ifndef NLOHMANN_JSON_ADL_SERIALIZER_HPP -#define NLOHMANN_JSON_ADL_SERIALIZER_HPP + #include @@ -7405,8 +7350,6 @@ struct adl_serializer }; } -#endif - /*! @brief namespace for Niels Lohmann @@ -15365,31 +15308,28 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std } // #include "detail/macro_unscope.hpp" -#ifndef NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP - #define NLOHMANN_JSON_DETAIL_MACRO_UNSCOPE_HPP - // restore GCC/clang diagnostic settings - #if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #pragma GCC diagnostic pop - #endif - #if defined(__clang__) - #pragma GCC diagnostic pop - #endif - - // clean up - #undef JSON_CATCH - #undef JSON_THROW - #undef JSON_TRY - #undef JSON_LIKELY - #undef JSON_UNLIKELY - #undef JSON_DEPRECATED - #undef JSON_HAS_CPP_14 - #undef JSON_HAS_CPP_17 - #undef NLOHMANN_BASIC_JSON_TPL_DECLARATION - #undef NLOHMANN_BASIC_JSON_TPL - #undef NLOHMANN_JSON_HAS_HELPER +// restore GCC/clang diagnostic settings +#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) + #pragma GCC diagnostic pop #endif +#if defined(__clang__) + #pragma GCC diagnostic pop +#endif + +// clean up +#undef JSON_CATCH +#undef JSON_THROW +#undef JSON_TRY +#undef JSON_LIKELY +#undef JSON_UNLIKELY +#undef JSON_DEPRECATED +#undef JSON_HAS_CPP_14 +#undef JSON_HAS_CPP_17 +#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION +#undef NLOHMANN_BASIC_JSON_TPL +#undef NLOHMANN_JSON_HAS_HELPER #endif From 965a70e38d666520bdbcbf3aafb01312ba7bc833 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 10 Jan 2018 11:22:19 +0100 Subject: [PATCH 039/106] :hammer: optimized output format --- src/json.hpp | 148 +++++++++++++++++++++++++++++++-------- test/src/unit-ubjson.cpp | 14 ++-- 2 files changed, 125 insertions(+), 37 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index e7465e29..9dc0b24a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -6189,48 +6189,61 @@ class binary_writer } /*! - @brief[in] j JSON value to serialize + @param[in] j JSON value to serialize + @param[in] use_count whether to use '#' prefixes (optimized format) + @param[in] use_type whether to use '$' prefixes (optimized format) + @param[in] add_prefix whether prefixes need to be used for this value */ - void write_ubjson(const BasicJsonType& j, const bool use_count = false) + void write_ubjson(const BasicJsonType& j, + const bool use_count = false, + const bool use_type = false, + const bool add_prefix = true) { switch (j.type()) { case value_t::null: { - oa->write_character(static_cast('Z')); + if (add_prefix) + { + oa->write_character(static_cast('Z')); + } break; } case value_t::boolean: { - oa->write_character(j.m_value.boolean - ? static_cast('T') - : static_cast('F')); + if (add_prefix) + oa->write_character(j.m_value.boolean + ? static_cast('T') + : static_cast('F')); break; } case value_t::number_integer: { - write_number_with_ubjson_prefix(j.m_value.number_integer); + write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix); break; } case value_t::number_unsigned: { - write_number_with_ubjson_prefix(j.m_value.number_unsigned); + write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix); break; } case value_t::number_float: { - write_number_with_ubjson_prefix(j.m_value.number_float); + write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix); break; } case value_t::string: { - oa->write_character(static_cast('S')); - write_number_with_ubjson_prefix(j.m_value.string->size()); + if (add_prefix) + { + oa->write_character(static_cast('S')); + } + write_number_with_ubjson_prefix(j.m_value.string->size(), true); oa->write_characters( reinterpret_cast(j.m_value.string->c_str()), j.m_value.string->size()); @@ -6239,17 +6252,38 @@ class binary_writer case value_t::array: { - oa->write_character(static_cast('[')); + if (add_prefix) + { + oa->write_character(static_cast('[')); + } + + bool prefix_required = true; + if (use_type and not j.m_value.array->empty()) + { + const char first_prefix = ubjson_prefix(j.front()); + const bool same_prefix = std::all_of(j.begin() + 1, j.end(), + [this, first_prefix](const BasicJsonType & v) + { + return ubjson_prefix(v) == first_prefix; + }); + + if (same_prefix) + { + prefix_required = false; + oa->write_character(static_cast('$')); + oa->write_character(static_cast(first_prefix)); + } + } if (use_count) { oa->write_character(static_cast('#')); - write_number_with_ubjson_prefix(j.m_value.array->size()); + write_number_with_ubjson_prefix(j.m_value.array->size(), true); } for (const auto& el : *j.m_value.array) { - write_ubjson(el, use_count); + write_ubjson(el, use_count, use_type, prefix_required); } if (not use_count) @@ -6262,21 +6296,42 @@ class binary_writer case value_t::object: { - oa->write_character(static_cast('{')); + if (add_prefix) + { + oa->write_character(static_cast('{')); + } + + bool prefix_required = true; + if (use_type and not j.m_value.object->empty()) + { + const char first_prefix = ubjson_prefix(j.front()); + const bool same_prefix = std::all_of(j.begin(), j.end(), + [this, first_prefix](const BasicJsonType & v) + { + return ubjson_prefix(v) == first_prefix; + }); + + if (same_prefix) + { + prefix_required = false; + oa->write_character(static_cast('$')); + oa->write_character(static_cast(first_prefix)); + } + } if (use_count) { oa->write_character(static_cast('#')); - write_number_with_ubjson_prefix(j.m_value.object->size()); + write_number_with_ubjson_prefix(j.m_value.object->size(), true); } for (const auto& el : *j.m_value.object) { - write_number_with_ubjson_prefix(el.first.size()); + write_number_with_ubjson_prefix(el.first.size(), true); oa->write_characters( reinterpret_cast(el.first.c_str()), el.first.size()); - write_ubjson(el.second, use_count); + write_ubjson(el.second, use_count, use_type, prefix_required); } if (not use_count) @@ -6320,38 +6375,56 @@ class binary_writer } template - void write_number_with_ubjson_prefix(const NumberType n) + void write_number_with_ubjson_prefix(const NumberType n, const bool add_prefix) { if (std::is_floating_point::value) { - oa->write_character(static_cast('D')); // float64 + if (add_prefix) + { + oa->write_character(static_cast('D')); // float64 + } write_number(n); } else if (std::is_unsigned::value) { if (n <= (std::numeric_limits::max)()) { - oa->write_character(static_cast('i')); // uint8 + if (add_prefix) + { + oa->write_character(static_cast('i')); // uint8 + } write_number(static_cast(n)); } else if (n <= (std::numeric_limits::max)()) { - oa->write_character(static_cast('U')); // uint8 + if (add_prefix) + { + oa->write_character(static_cast('U')); // uint8 + } write_number(static_cast(n)); } else if (n <= (std::numeric_limits::max)()) { - oa->write_character(static_cast('I')); // int16 + if (add_prefix) + { + oa->write_character(static_cast('I')); // int16 + } write_number(static_cast(n)); } else if (n <= (std::numeric_limits::max)()) { - oa->write_character(static_cast('l')); // int32 + if (add_prefix) + { + oa->write_character(static_cast('l')); // int32 + } write_number(static_cast(n)); } else if (n <= (std::numeric_limits::max)()) { - oa->write_character(static_cast('L')); // int64 + if (add_prefix) + { + oa->write_character(static_cast('L')); // int64 + } write_number(static_cast(n)); } else @@ -6364,27 +6437,42 @@ class binary_writer { if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) { - oa->write_character(static_cast('i')); // int8 + if (add_prefix) + { + oa->write_character(static_cast('i')); // int8 + } write_number(static_cast(n)); } else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) { - oa->write_character(static_cast('U')); // uint8 + if (add_prefix) + { + oa->write_character(static_cast('U')); // uint8 + } write_number(static_cast(n)); } else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) { - oa->write_character(static_cast('I')); // int16 + if (add_prefix) + { + oa->write_character(static_cast('I')); // int16 + } write_number(static_cast(n)); } else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) { - oa->write_character(static_cast('l')); // int32 + if (add_prefix) + { + oa->write_character(static_cast('l')); // int32 + } write_number(static_cast(n)); } else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) { - oa->write_character(static_cast('L')); // int64 + if (add_prefix) + { + oa->write_character(static_cast('L')); // int64 + } write_number(static_cast(n)); } else diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index bda8224a..43c461cc 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -129,13 +129,13 @@ TEST_CASE("UBJSON") // check individual bytes CHECK(result[0] == 'L'); int64_t restored = (static_cast(result[1]) << 070) + - (static_cast(result[2]) << 060) + - (static_cast(result[3]) << 050) + - (static_cast(result[4]) << 040) + - (static_cast(result[5]) << 030) + - (static_cast(result[6]) << 020) + - (static_cast(result[7]) << 010) + - static_cast(result[8]); + (static_cast(result[2]) << 060) + + (static_cast(result[3]) << 050) + + (static_cast(result[4]) << 040) + + (static_cast(result[5]) << 030) + + (static_cast(result[6]) << 020) + + (static_cast(result[7]) << 010) + + static_cast(result[8]); CHECK(restored == i); // roundtrip From 31bfabc4c0868e7d2bf4a97cdafdeb9b966c4fab Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 10 Jan 2018 16:14:43 +0100 Subject: [PATCH 040/106] :hammer: optimized input format --- src/json.hpp | 210 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 149 insertions(+), 61 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 9dc0b24a..9b27d3d9 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -5223,59 +5223,7 @@ class binary_reader */ BasicJsonType parse_ubjson_internal(const bool get_char = true) { - switch (get_char ? get() : current) - { - case std::char_traits::eof(): // EOF - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - - case 'T': // true - return true; - case 'F': // false - return false; - - case 'Z': // null - return nullptr; - - case 'N': // no-op - return parse_ubjson_internal(); // read next byte - - case 'U': - return get_number(); - case 'i': - return get_number(); - case 'I': - return get_number(); - case 'l': - return get_number(); - case 'L': - return get_number(); - case 'd': - return get_number(); - case 'D': - return get_number(); - - case 'C': // char - { - get(); - check_eof(); - return std::string(1, static_cast(current)); - } - - case 'S': // string - return get_ubjson_string(); - - case '[': // array - return get_ubjson_array(); - - case '{': // object - return get_ubjson_object(); - - default: // anything else - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(112, chars_read, - "error reading UBJSON; last byte: 0x" + ss.str())); - } + return get_ubjson_value(get_char ? get_ignore_noop() : current); } /*! @@ -5293,6 +5241,20 @@ class binary_reader return (current = ia->get_character()); } + /*! + @return character read from the input after ignoring all 'N' entries + */ + int get_ignore_noop() + { + do + { + get(); + } + while (current == 'N'); + + return current; + } + /* @brief read a number from the input @@ -5622,18 +5584,124 @@ class binary_reader } } + std::pair get_ubjson_size_type() + { + std::size_t sz = std::string::npos; + int tc = 0; + + get_ignore_noop(); + + switch (current) + { + case '$': + { + get_ignore_noop(); + check_eof(); + tc = current; + + get_ignore_noop(); + if (current != '#') + { + assert(false); + } + sz = parse_ubjson_internal(); + break; + } + + case '#': + { + sz = parse_ubjson_internal(); + break; + } + + default: + break; + } + + return std::make_pair(sz, tc); + + } + + BasicJsonType get_ubjson_value(const int prefix) + { + switch (prefix) + { + case std::char_traits::eof(): // EOF + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + + case 'T': // true + return true; + case 'F': // false + return false; + + case 'Z': // null + return nullptr; + + case 'U': + return get_number(); + case 'i': + return get_number(); + case 'I': + return get_number(); + case 'l': + return get_number(); + case 'L': + return get_number(); + case 'd': + return get_number(); + case 'D': + return get_number(); + + case 'C': // char + { + get(); + check_eof(); + return std::string(1, static_cast(current)); + } + + case 'S': // string + return get_ubjson_string(); + + case '[': // array + return get_ubjson_array(); + + case '{': // object + return get_ubjson_object(); + + default: // anything else + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, + "error reading UBJSON; last byte: 0x" + ss.str())); + } + } + BasicJsonType get_ubjson_array() { BasicJsonType result = value_t::array; + const auto size_and_type = get_ubjson_size_type(); - while (get() != ']') + if (size_and_type.first != std::string::npos) { - // skip no-op - if (current == 'N') + for (std::size_t i = 0; i < size_and_type.first; ++i) { - continue; + if (size_and_type.second != 0) + { + result.push_back(get_ubjson_value(size_and_type.second)); + } + else + { + result.push_back(parse_ubjson_internal()); + } + } + } + else + { + while (current != ']') + { + result.push_back(parse_ubjson_internal(false)); + get_ignore_noop(); } - result.push_back(parse_ubjson_internal(false)); } return result; @@ -5642,11 +5710,31 @@ class binary_reader BasicJsonType get_ubjson_object() { BasicJsonType result = value_t::object; + const auto size_and_type = get_ubjson_size_type(); - while (get() != '}') + if (size_and_type.first != std::string::npos) { - auto key = get_ubjson_string(false); - result[std::move(key)] = parse_ubjson_internal(); + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + auto key = get_ubjson_string(); + if (size_and_type.second != 0) + { + result[std::move(key)] = get_ubjson_value(size_and_type.second); + } + else + { + result[std::move(key)] = parse_ubjson_internal(); + } + } + } + else + { + while (current != '}') + { + auto key = get_ubjson_string(false); + result[std::move(key)] = parse_ubjson_internal(); + get_ignore_noop(); + } } return result; From 3a7585e7385efe26ff4346936c731269fe8c4221 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 10 Jan 2018 22:47:07 +0100 Subject: [PATCH 041/106] :white_check_mark: added more tests --- src/json.hpp | 144 ++++--- test/src/unit-ubjson.cpp | 864 +++++++++++++++++++++++++++------------ 2 files changed, 691 insertions(+), 317 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 9b27d3d9..5f872e52 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -4549,7 +4549,7 @@ class binary_reader const auto res = parse_ubjson_internal(); if (strict) { - get(); + get_ignore_noop(); check_eof(true); } return res; @@ -5591,35 +5591,25 @@ class binary_reader get_ignore_noop(); - switch (current) + if (current == '$') { - case '$': + get(); // must not ignore 'N', because 'N' maybe the type + check_eof(); + tc = current; + + get_ignore_noop(); + if (current != '#') { - get_ignore_noop(); - check_eof(); - tc = current; - - get_ignore_noop(); - if (current != '#') - { - assert(false); - } - sz = parse_ubjson_internal(); - break; + assert(false); } - - case '#': - { - sz = parse_ubjson_internal(); - break; - } - - default: - break; + sz = parse_ubjson_internal(); + } + else if (current == '#') + { + sz = parse_ubjson_internal(); } return std::make_pair(sz, tc); - } BasicJsonType get_ubjson_value(const int prefix) @@ -5656,6 +5646,7 @@ class binary_reader { get(); check_eof(); + assert(0 <= current and current <= 127); return std::string(1, static_cast(current)); } @@ -5683,16 +5674,22 @@ class binary_reader if (size_and_type.first != std::string::npos) { - for (std::size_t i = 0; i < size_and_type.first; ++i) + if (size_and_type.second != 0) { - if (size_and_type.second != 0) + if (size_and_type.second != 'N') + std::generate_n(std::back_inserter(*result.m_value.array), + size_and_type.first, [this, size_and_type]() { - result.push_back(get_ubjson_value(size_and_type.second)); - } - else + return get_ubjson_value(size_and_type.second); + }); + } + else + { + std::generate_n(std::back_inserter(*result.m_value.array), + size_and_type.first, [this]() { - result.push_back(parse_ubjson_internal()); - } + return parse_ubjson_internal(); + }); } } else @@ -5714,17 +5711,28 @@ class binary_reader if (size_and_type.first != std::string::npos) { - for (std::size_t i = 0; i < size_and_type.first; ++i) + if (size_and_type.second != 0) { - auto key = get_ubjson_string(); - if (size_and_type.second != 0) + if (size_and_type.second != 'N') + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + size_and_type.first, [this, size_and_type]() { - result[std::move(key)] = get_ubjson_value(size_and_type.second); - } - else + auto key = get_ubjson_string(); + auto val = get_ubjson_value(size_and_type.second); + return std::make_pair(std::move(key), std::move(val)); + }); + } + else + { + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + size_and_type.first, [this]() { - result[std::move(key)] = parse_ubjson_internal(); - } + auto key = get_ubjson_string(); + auto val = parse_ubjson_internal(); + return std::make_pair(std::move(key), std::move(val)); + }); } } else @@ -6282,10 +6290,8 @@ class binary_writer @param[in] use_type whether to use '$' prefixes (optimized format) @param[in] add_prefix whether prefixes need to be used for this value */ - void write_ubjson(const BasicJsonType& j, - const bool use_count = false, - const bool use_type = false, - const bool add_prefix = true) + void write_ubjson(const BasicJsonType& j, const bool use_count, + const bool use_type, const bool add_prefix = true) { switch (j.type()) { @@ -6348,6 +6354,7 @@ class binary_writer bool prefix_required = true; if (use_type and not j.m_value.array->empty()) { + assert(use_count); const char first_prefix = ubjson_prefix(j.front()); const bool same_prefix = std::all_of(j.begin() + 1, j.end(), [this, first_prefix](const BasicJsonType & v) @@ -6392,6 +6399,7 @@ class binary_writer bool prefix_required = true; if (use_type and not j.m_value.object->empty()) { + assert(use_count); const char first_prefix = ubjson_prefix(j.front()); const bool same_prefix = std::all_of(j.begin(), j.end(), [this, first_prefix](const BasicJsonType & v) @@ -6463,13 +6471,14 @@ class binary_writer } template - void write_number_with_ubjson_prefix(const NumberType n, const bool add_prefix) + void write_number_with_ubjson_prefix(const NumberType n, + const bool add_prefix) { if (std::is_floating_point::value) { if (add_prefix) { - oa->write_character(static_cast('D')); // float64 + oa->write_character(static_cast('D')); // float64 } write_number(n); } @@ -6479,7 +6488,7 @@ class binary_writer { if (add_prefix) { - oa->write_character(static_cast('i')); // uint8 + oa->write_character(static_cast('i')); // uint8 } write_number(static_cast(n)); } @@ -6487,7 +6496,7 @@ class binary_writer { if (add_prefix) { - oa->write_character(static_cast('U')); // uint8 + oa->write_character(static_cast('U')); // uint8 } write_number(static_cast(n)); } @@ -6495,7 +6504,7 @@ class binary_writer { if (add_prefix) { - oa->write_character(static_cast('I')); // int16 + oa->write_character(static_cast('I')); // int16 } write_number(static_cast(n)); } @@ -6503,7 +6512,7 @@ class binary_writer { if (add_prefix) { - oa->write_character(static_cast('l')); // int32 + oa->write_character(static_cast('l')); // int32 } write_number(static_cast(n)); } @@ -6511,7 +6520,7 @@ class binary_writer { if (add_prefix) { - oa->write_character(static_cast('L')); // int64 + oa->write_character(static_cast('L')); // int64 } write_number(static_cast(n)); } @@ -6527,7 +6536,7 @@ class binary_writer { if (add_prefix) { - oa->write_character(static_cast('i')); // int8 + oa->write_character(static_cast('i')); // int8 } write_number(static_cast(n)); } @@ -6535,7 +6544,7 @@ class binary_writer { if (add_prefix) { - oa->write_character(static_cast('U')); // uint8 + oa->write_character(static_cast('U')); // uint8 } write_number(static_cast(n)); } @@ -6543,7 +6552,7 @@ class binary_writer { if (add_prefix) { - oa->write_character(static_cast('I')); // int16 + oa->write_character(static_cast('I')); // int16 } write_number(static_cast(n)); } @@ -6551,7 +6560,7 @@ class binary_writer { if (add_prefix) { - oa->write_character(static_cast('l')); // int32 + oa->write_character(static_cast('l')); // int32 } write_number(static_cast(n)); } @@ -6559,7 +6568,7 @@ class binary_writer { if (add_prefix) { - oa->write_character(static_cast('L')); // int64 + oa->write_character(static_cast('L')); // int64 } write_number(static_cast(n)); } @@ -6608,23 +6617,23 @@ class binary_writer case value_t::number_unsigned: { - if ((std::numeric_limits::min)() <= j.m_value.number_unsigned and j.m_value.number_unsigned <= (std::numeric_limits::max)()) + if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) { return 'i'; } - else if ((std::numeric_limits::min)() <= j.m_value.number_unsigned and j.m_value.number_unsigned <= (std::numeric_limits::max)()) + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) { return 'U'; } - else if ((std::numeric_limits::min)() <= j.m_value.number_unsigned and j.m_value.number_unsigned <= (std::numeric_limits::max)()) + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) { return 'I'; } - else if ((std::numeric_limits::min)() <= j.m_value.number_unsigned and j.m_value.number_unsigned <= (std::numeric_limits::max)()) + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) { return 'l'; } - else if ((std::numeric_limits::min)() <= j.m_value.number_unsigned and j.m_value.number_unsigned <= (std::numeric_limits::max)()) + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) { return 'L'; } @@ -14103,21 +14112,24 @@ class basic_json binary_writer(o).write_msgpack(j); } - static std::vector to_ubjson(const basic_json& j) + static std::vector to_ubjson(const basic_json& j, + const bool use_size = false, const bool use_type = false) { std::vector result; - to_ubjson(j, result); + to_ubjson(j, result, use_size, use_type); return result; } - static void to_ubjson(const basic_json& j, detail::output_adapter o) + static void to_ubjson(const basic_json& j, detail::output_adapter o, + const bool use_size = false, const bool use_type = false) { - binary_writer(o).write_ubjson(j); + binary_writer(o).write_ubjson(j, use_size, use_type); } - static void to_ubjson(const basic_json& j, detail::output_adapter o) + static void to_ubjson(const basic_json& j, detail::output_adapter o, + const bool use_size = false, const bool use_type = false) { - binary_writer(o).write_ubjson(j); + binary_writer(o).write_ubjson(j, use_size, use_type); } /*! diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index 43c461cc..38912761 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -811,72 +811,234 @@ TEST_CASE("UBJSON") { SECTION("empty") { - json j = json::array(); - std::vector expected = {'[', ']'}; - const auto result = json::to_ubjson(j); - CHECK(result == expected); + SECTION("size=false type=false") + { + json j = json::array(); + std::vector expected = {'[', ']'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); - // roundtrip - CHECK(json::from_ubjson(result) == j); + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=false") + { + json j = json::array(); + std::vector expected = {'[', '#', 'i', 0}; + const auto result = json::to_ubjson(j, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=true") + { + json j = json::array(); + std::vector expected = {'[', '#', 'i', 0}; + const auto result = json::to_ubjson(j, true, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } } SECTION("[null]") { - json j = {nullptr}; - std::vector expected = {'[', 'Z', ']'}; - const auto result = json::to_ubjson(j); - CHECK(result == expected); + SECTION("size=false type=false") + { + json j = {nullptr}; + std::vector expected = {'[', 'Z', ']'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); - // roundtrip - CHECK(json::from_ubjson(result) == j); + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=false") + { + json j = {nullptr}; + std::vector expected = {'[', '#', 'i', 1, 'Z'}; + const auto result = json::to_ubjson(j, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=true") + { + json j = {nullptr}; + std::vector expected = {'[', '$', 'Z', '#', 'i', 1}; + const auto result = json::to_ubjson(j, true, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } } SECTION("[1,2,3,4,5]") { - json j = json::parse("[1,2,3,4,5]"); - std::vector expected = {'[', 'i', 1, 'i', 2, 'i', 3, 'i', 4, 'i', 5, ']'}; - const auto result = json::to_ubjson(j); - CHECK(result == expected); + SECTION("size=false type=false") + { + json j = json::parse("[1,2,3,4,5]"); + std::vector expected = {'[', 'i', 1, 'i', 2, 'i', 3, 'i', 4, 'i', 5, ']'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); - // roundtrip - CHECK(json::from_ubjson(result) == j); + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=false") + { + json j = json::parse("[1,2,3,4,5]"); + std::vector expected = {'[', '#', 'i', 5, 'i', 1, 'i', 2, 'i', 3, 'i', 4, 'i', 5}; + const auto result = json::to_ubjson(j, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=true") + { + json j = json::parse("[1,2,3,4,5]"); + std::vector expected = {'[', '$', 'i', '#', 'i', 5, 1, 2, 3, 4, 5}; + const auto result = json::to_ubjson(j, true, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } } SECTION("[[[[]]]]") { - json j = json::parse("[[[[]]]]"); - std::vector expected = {'[', '[', '[', '[', ']', ']', ']', ']'}; - const auto result = json::to_ubjson(j); - CHECK(result == expected); + SECTION("size=false type=false") + { + json j = json::parse("[[[[]]]]"); + std::vector expected = {'[', '[', '[', '[', ']', ']', ']', ']'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); - // roundtrip - CHECK(json::from_ubjson(result) == j); + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=false") + { + json j = json::parse("[[[[]]]]"); + std::vector expected = {'[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 1, '[', '#', 'i', 0}; + const auto result = json::to_ubjson(j, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=true") + { + json j = json::parse("[[[[]]]]"); + std::vector expected = {'[', '$', '[', '#', 'i', 1, '$', '[', '#', 'i', 1, '$', '[', '#', 'i', 1, '#', 'i', 0}; + const auto result = json::to_ubjson(j, true, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } } SECTION("array with uint16_t elements") { - json j(257, nullptr); - std::vector expected(j.size() + 2, 'Z'); // all null - expected[0] = '['; // opening array - expected[258] = ']'; // closing array - const auto result = json::to_ubjson(j); - CHECK(result == expected); + SECTION("size=false type=false") + { + json j(257, nullptr); + std::vector expected(j.size() + 2, 'Z'); // all null + expected[0] = '['; // opening array + expected[258] = ']'; // closing array + const auto result = json::to_ubjson(j); + CHECK(result == expected); - // roundtrip - CHECK(json::from_ubjson(result) == j); + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=false") + { + json j(257, nullptr); + std::vector expected(j.size() + 5, 'Z'); // all null + expected[0] = '['; // opening array + expected[1] = '#'; // array size + expected[2] = 'I'; // int16 + expected[3] = 0x01; // 0x0101, first byte + expected[4] = 0x01; // 0x0101, second byte + const auto result = json::to_ubjson(j, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=true") + { + json j(257, nullptr); + std::vector expected = {'[', '$', 'Z', '#', 'I', 0x01, 0x01}; + const auto result = json::to_ubjson(j, true, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } } SECTION("array with uint32_t elements") { - json j(65793, nullptr); - std::vector expected(j.size() + 2, 'Z'); // all null - expected[0] = '['; // opening array - expected[65794] = ']'; // closing array - const auto result = json::to_ubjson(j); - CHECK(result == expected); + SECTION("size=false type=false") + { + json j(65793, nullptr); + std::vector expected(j.size() + 2, 'Z'); // all null + expected[0] = '['; // opening array + expected[65794] = ']'; // closing array + const auto result = json::to_ubjson(j); + CHECK(result == expected); - // roundtrip - CHECK(json::from_ubjson(result) == j); + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=false") + { + json j(65793, nullptr); + std::vector expected(j.size() + 7, 'Z'); // all null + expected[0] = '['; // opening array + expected[1] = '#'; // array size + expected[2] = 'l'; // int32 + expected[3] = 0x00; // 0x00010101, first byte + expected[4] = 0x01; // 0x00010101, second byte + expected[5] = 0x01; // 0x00010101, third byte + expected[6] = 0x01; // 0x00010101, fourth byte + const auto result = json::to_ubjson(j, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=true") + { + json j(65793, nullptr); + std::vector expected = {'[', '$', 'Z', '#', 'l', 0x00, 0x01, 0x01, 0x01}; + const auto result = json::to_ubjson(j, true, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } } } @@ -884,38 +1046,119 @@ TEST_CASE("UBJSON") { SECTION("empty") { - json j = json::object(); - std::vector expected = {'{', '}'}; - const auto result = json::to_ubjson(j); - CHECK(result == expected); + SECTION("size=false type=false") + { + json j = json::object(); + std::vector expected = {'{', '}'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); - // roundtrip - CHECK(json::from_ubjson(result) == j); + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=false") + { + json j = json::object(); + std::vector expected = {'{', '#', 'i', 0}; + const auto result = json::to_ubjson(j, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=true") + { + json j = json::object(); + std::vector expected = {'{', '#', 'i', 0}; + const auto result = json::to_ubjson(j, true, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } } SECTION("{\"\":null}") { - json j = {{"", nullptr}}; - std::vector expected = {'{', 'i', 0, 'Z', '}'}; - const auto result = json::to_ubjson(j); - CHECK(result == expected); + SECTION("size=false type=false") + { + json j = {{"", nullptr}}; + std::vector expected = {'{', 'i', 0, 'Z', '}'}; + const auto result = json::to_ubjson(j); + CHECK(result == expected); - // roundtrip - CHECK(json::from_ubjson(result) == j); + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=false") + { + json j = {{"", nullptr}}; + std::vector expected = {'{', '#', 'i', 1, 'i', 0, 'Z'}; + const auto result = json::to_ubjson(j, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=true") + { + json j = {{"", nullptr}}; + std::vector expected = {'{', '$', 'Z', '#', 'i', 1, 'i', 0}; + const auto result = json::to_ubjson(j, true, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } } SECTION("{\"a\": {\"b\": {\"c\": {}}}}") { - json j = json::parse("{\"a\": {\"b\": {\"c\": {}}}}"); - std::vector expected = + SECTION("size=false type=false") { - '{', 'i', 1, 'a', '{', 'i', 1, 'b', '{', 'i', 1, 'c', '{', '}', '}', '}', '}' - }; - const auto result = json::to_ubjson(j); - CHECK(result == expected); + json j = json::parse("{\"a\": {\"b\": {\"c\": {}}}}"); + std::vector expected = + { + '{', 'i', 1, 'a', '{', 'i', 1, 'b', '{', 'i', 1, 'c', '{', '}', '}', '}', '}' + }; + const auto result = json::to_ubjson(j); + CHECK(result == expected); - // roundtrip - CHECK(json::from_ubjson(result) == j); + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=false") + { + json j = json::parse("{\"a\": {\"b\": {\"c\": {}}}}"); + std::vector expected = + { + '{', '#', 'i', 1, 'i', 1, 'a', '{', '#', 'i', 1, 'i', 1, 'b', '{', '#', 'i', 1, 'i', 1, 'c', '{', '#', 'i', 0 + }; + const auto result = json::to_ubjson(j, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } + + SECTION("size=true type=true") + { + json j = json::parse("{\"a\": {\"b\": {\"c\": {}}}}"); + std::vector expected = + { + '{', '$', '{', '#', 'i', 1, 'i', 1, 'a', '$', '{', '#', 'i', 1, 'i', 1, 'b', '$', '{', '#', 'i', 1, 'i', 1, 'c', '#', 'i', 0 + }; + const auto result = json::to_ubjson(j, true, true); + CHECK(result == expected); + + // roundtrip + CHECK(json::from_ubjson(result) == j); + } } } } @@ -1285,8 +1528,317 @@ TEST_CASE("CBOR roundtrips", "[hide]") } } +TEST_CASE("Universal Binary JSON Specification Examples 1") +{ + SECTION("Null Value") + { + json j = {{"passcode", nullptr}}; + std::vector v = {'{', 'i', 8, 'p', 'a', 's', 's', 'c', 'o', 'd', 'e', 'Z', '}'}; + CHECK(json::to_ubjson(j) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("No-Op Value") + { + json j = {"foo", "bar", "baz"}; + std::vector v = {'[', 'S', 'i', 3, 'f', 'o', 'o', + 'S', 'i', 3, 'b', 'a', 'r', + 'S', 'i', 3, 'b', 'a', 'z', ']' + }; + std::vector v2 = {'[', 'S', 'i', 3, 'f', 'o', 'o', 'N', + 'S', 'i', 3, 'b', 'a', 'r', 'N', 'N', 'N', + 'S', 'i', 3, 'b', 'a', 'z', 'N', 'N', ']' + }; + CHECK(json::to_ubjson(j) == v); + CHECK(json::from_ubjson(v) == j); + CHECK(json::from_ubjson(v2) == j); + } + + SECTION("Boolean Types") + { + json j = {{"authorized", true}, {"verified", false}}; + std::vector v = {'{', 'i', 10, 'a', 'u', 't', 'h', 'o', 'r', 'i', 'z', 'e', 'd', 'T', + 'i', 8, 'v', 'e', 'r', 'i', 'f', 'i', 'e', 'd', 'F', '}' + }; + CHECK(json::to_ubjson(j) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("Numeric Types") + { + json j = + { + {"int8", 16}, + {"uint8", 255}, + {"int16", 32767}, + {"int32", 2147483647}, + {"int64", 9223372036854775807}, + {"float64", 113243.7863123} + }; + std::vector v = {'{', + 'i', 7, 'f', 'l', 'o', 'a', 't', '6', '4', 'D', 0x40, 0xfb, 0xa5, 0xbc, 0x94, 0xbc, 0x34, 0xcf, + 'i', 5, 'i', 'n', 't', '1', '6', 'I', 0x7f, 0xff, + 'i', 5, 'i', 'n', 't', '3', '2', 'l', 0x7f, 0xff, 0xff, 0xff, + 'i', 5, 'i', 'n', 't', '6', '4', 'L', 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 'i', 4, 'i', 'n', 't', '8', 'i', 16, + 'i', 5, 'u', 'i', 'n', 't', '8', 'U', 0xff, + '}' + }; + CHECK(json::to_ubjson(j) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("Char Type") + { + json j = {{"rolecode", "a"}, {"delim", ";"}}; + std::vector v = {'{', 'i', 5, 'd', 'e', 'l', 'i', 'm', 'C', ';', 'i', 8, 'r', 'o', 'l', 'e', 'c', 'o', 'd', 'e', 'C', 'a', '}'}; + //CHECK(json::to_ubjson(j) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("String Type") + { + SECTION("English") + { + json j = "hello"; + std::vector v = {'S', 'i', 5, 'h', 'e', 'l', 'l', 'o'}; + CHECK(json::to_ubjson(j) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("Russian") + { + json j = "привет"; + std::vector v = {'S', 'i', 12, 0xD0, 0xBF, 0xD1, 0x80, 0xD0, 0xB8, 0xD0, 0xB2, 0xD0, 0xB5, 0xD1, 0x82}; + CHECK(json::to_ubjson(j) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("Russian") + { + json j = "مرحبا"; + std::vector v = {'S', 'i', 10, 0xD9, 0x85, 0xD8, 0xB1, 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xA7}; + CHECK(json::to_ubjson(j) == v); + CHECK(json::from_ubjson(v) == j); + } + } + + SECTION("Array Type") + { + SECTION("size=false type=false") + { + // note the float has been replaced by a double + json j = {nullptr, true, false, 4782345193, 153.132, "ham"}; + std::vector v = {'[', 'Z', 'T', 'F', 'L', 0x00, 0x00, 0x00, 0x01, 0x1D, 0x0C, 0xCB, 0xE9, 'D', 0x40, 0x63, 0x24, 0x39, 0x58, 0x10, 0x62, 0x4e, 'S', 'i', 3, 'h', 'a', 'm', ']'}; + CHECK(json::to_ubjson(j) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("size=true type=false") + { + // note the float has been replaced by a double + json j = {nullptr, true, false, 4782345193, 153.132, "ham"}; + std::vector v = {'[', '#', 'i', 6, 'Z', 'T', 'F', 'L', 0x00, 0x00, 0x00, 0x01, 0x1D, 0x0C, 0xCB, 0xE9, 'D', 0x40, 0x63, 0x24, 0x39, 0x58, 0x10, 0x62, 0x4e, 'S', 'i', 3, 'h', 'a', 'm'}; + CHECK(json::to_ubjson(j, true) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("size=true type=true") + { + // note the float has been replaced by a double + json j = {nullptr, true, false, 4782345193, 153.132, "ham"}; + std::vector v = {'[', '#', 'i', 6, 'Z', 'T', 'F', 'L', 0x00, 0x00, 0x00, 0x01, 0x1D, 0x0C, 0xCB, 0xE9, 'D', 0x40, 0x63, 0x24, 0x39, 0x58, 0x10, 0x62, 0x4e, 'S', 'i', 3, 'h', 'a', 'm'}; + CHECK(json::to_ubjson(j, true, true) == v); + CHECK(json::from_ubjson(v) == j); + } + } + + SECTION("Object Type") + { + SECTION("size=false type=false") + { + json j = + { + { + "post", { + {"id", 1137}, + {"author", "rkalla"}, + {"timestamp", 1364482090592}, + {"body", "I totally agree!"} + } + } + }; + std::vector v = {'{', 'i', 4, 'p', 'o', 's', 't', '{', + 'i', 6, 'a', 'u', 't', 'h', 'o', 'r', 'S', 'i', 6, 'r', 'k', 'a', 'l', 'l', 'a', + 'i', 4, 'b', 'o', 'd', 'y', 'S', 'i', 16, 'I', ' ', 't', 'o', 't', 'a', 'l', 'l', 'y', ' ', 'a', 'g', 'r', 'e', 'e', '!', + 'i', 2, 'i', 'd', 'I', 0x04, 0x71, + 'i', 9, 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'L', 0x00, 0x00, 0x01, 0x3D, 0xB1, 0x78, 0x66, 0x60, + '}', '}' + }; + CHECK(json::to_ubjson(j) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("size=true type=false") + { + json j = + { + { + "post", { + {"id", 1137}, + {"author", "rkalla"}, + {"timestamp", 1364482090592}, + {"body", "I totally agree!"} + } + } + }; + std::vector v = {'{', '#', 'i', 1, 'i', 4, 'p', 'o', 's', 't', '{', '#', 'i', 4, + 'i', 6, 'a', 'u', 't', 'h', 'o', 'r', 'S', 'i', 6, 'r', 'k', 'a', 'l', 'l', 'a', + 'i', 4, 'b', 'o', 'd', 'y', 'S', 'i', 16, 'I', ' ', 't', 'o', 't', 'a', 'l', 'l', 'y', ' ', 'a', 'g', 'r', 'e', 'e', '!', + 'i', 2, 'i', 'd', 'I', 0x04, 0x71, + 'i', 9, 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'L', 0x00, 0x00, 0x01, 0x3D, 0xB1, 0x78, 0x66, 0x60 + }; + CHECK(json::to_ubjson(j, true) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("size=true type=true") + { + json j = + { + { + "post", { + {"id", 1137}, + {"author", "rkalla"}, + {"timestamp", 1364482090592}, + {"body", "I totally agree!"} + } + } + }; + std::vector v = {'{', '$', '{', '#', 'i', 1, 'i', 4, 'p', 'o', 's', 't', '#', 'i', 4, + 'i', 6, 'a', 'u', 't', 'h', 'o', 'r', 'S', 'i', 6, 'r', 'k', 'a', 'l', 'l', 'a', + 'i', 4, 'b', 'o', 'd', 'y', 'S', 'i', 16, 'I', ' ', 't', 'o', 't', 'a', 'l', 'l', 'y', ' ', 'a', 'g', 'r', 'e', 'e', '!', + 'i', 2, 'i', 'd', 'I', 0x04, 0x71, + 'i', 9, 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'L', 0x00, 0x00, 0x01, 0x3D, 0xB1, 0x78, 0x66, 0x60 + }; + CHECK(json::to_ubjson(j, true, true) == v); + CHECK(json::from_ubjson(v) == j); + } + } + + SECTION("Optimized Format") + { + SECTION("Array Example") + { + SECTION("No Optimization") + { + // note the floats have been replaced by doubles + json j = {29.97, 31.13, 67.0, 2.113, 23.888}; + std::vector v = {'[', + 'D', 0x40, 0x3d, 0xf8, 0x51, 0xeb, 0x85, 0x1e, 0xb8, + 'D', 0x40, 0x3f, 0x21, 0x47, 0xae, 0x14, 0x7a, 0xe1, + 'D', 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 'D', 0x40, 0x00, 0xe7, 0x6c, 0x8b, 0x43, 0x95, 0x81, + 'D', 0x40, 0x37, 0xe3, 0x53, 0xf7, 0xce, 0xd9, 0x17, + ']' + }; + CHECK(json::to_ubjson(j) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("Optimized with count") + { + // note the floats have been replaced by doubles + json j = {29.97, 31.13, 67.0, 2.113, 23.888}; + std::vector v = {'[', '#', 'i', 5, + 'D', 0x40, 0x3d, 0xf8, 0x51, 0xeb, 0x85, 0x1e, 0xb8, + 'D', 0x40, 0x3f, 0x21, 0x47, 0xae, 0x14, 0x7a, 0xe1, + 'D', 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 'D', 0x40, 0x00, 0xe7, 0x6c, 0x8b, 0x43, 0x95, 0x81, + 'D', 0x40, 0x37, 0xe3, 0x53, 0xf7, 0xce, 0xd9, 0x17 + }; + CHECK(json::to_ubjson(j, true) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("Optimized with type & count") + { + // note the floats have been replaced by doubles + json j = {29.97, 31.13, 67.0, 2.113, 23.888}; + std::vector v = {'[', '$', 'D', '#', 'i', 5, + 0x40, 0x3d, 0xf8, 0x51, 0xeb, 0x85, 0x1e, 0xb8, + 0x40, 0x3f, 0x21, 0x47, 0xae, 0x14, 0x7a, 0xe1, + 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0xe7, 0x6c, 0x8b, 0x43, 0x95, 0x81, + 0x40, 0x37, 0xe3, 0x53, 0xf7, 0xce, 0xd9, 0x17 + }; + CHECK(json::to_ubjson(j, true, true) == v); + CHECK(json::from_ubjson(v) == j); + } + } + + SECTION("Object Example") + { + SECTION("No Optimization") + { + // note the floats have been replaced by doubles + json j = { {"lat", 29.976}, {"long", 31.131}, {"alt", 67.0} }; + std::vector v = {'{', + 'i', 3, 'a', 'l', 't', 'D', 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 'i', 3, 'l', 'a', 't', 'D', 0x40, 0x3d, 0xf9, 0xdb, 0x22, 0xd0, 0xe5, 0x60, + 'i', 4, 'l', 'o', 'n', 'g', 'D', 0x40, 0x3f, 0x21, 0x89, 0x37, 0x4b, 0xc6, 0xa8, + '}' + }; + CHECK(json::to_ubjson(j) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("Optimized with count") + { + // note the floats have been replaced by doubles + json j = { {"lat", 29.976}, {"long", 31.131}, {"alt", 67.0} }; + std::vector v = {'{', '#', 'i', 3, + 'i', 3, 'a', 'l', 't', 'D', 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 'i', 3, 'l', 'a', 't', 'D', 0x40, 0x3d, 0xf9, 0xdb, 0x22, 0xd0, 0xe5, 0x60, + 'i', 4, 'l', 'o', 'n', 'g', 'D', 0x40, 0x3f, 0x21, 0x89, 0x37, 0x4b, 0xc6, 0xa8 + }; + CHECK(json::to_ubjson(j, true) == v); + CHECK(json::from_ubjson(v) == j); + } + + SECTION("Optimized with type & count") + { + // note the floats have been replaced by doubles + json j = { {"lat", 29.976}, {"long", 31.131}, {"alt", 67.0} }; + std::vector v = {'{', '$', 'D', '#', 'i', 3, + 'i', 3, 'a', 'l', 't', 0x40, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 'i', 3, 'l', 'a', 't', 0x40, 0x3d, 0xf9, 0xdb, 0x22, 0xd0, 0xe5, 0x60, + 'i', 4, 'l', 'o', 'n', 'g', 0x40, 0x3f, 0x21, 0x89, 0x37, 0x4b, 0xc6, 0xa8 + }; + CHECK(json::to_ubjson(j, true, true) == v); + CHECK(json::from_ubjson(v) == j); + } + } + + SECTION("Special Cases (Null, No-Op and Boolean)") + { + SECTION("Array") + { + std::vector v = {'[', '$', 'N', '#', 'I', 0x02, 0x00}; + CHECK(json::from_ubjson(v) == json::array()); + } + + SECTION("Object") + { + std::vector v = {'{', '$', 'Z', '#', 'i', 3, 'i', 4, 'n', 'a', 'm', 'e', 'i', 8, 'p', 'a', 's', 's', 'w', 'o', 'r', 'd', 'i', 5, 'e', 'm', 'a', 'i', 'l'}; + CHECK(json::from_ubjson(v) == json({ {"name", nullptr}, {"password", nullptr}, {"email", nullptr} })); + } + } + } +} + /* -TEST_CASE("Universal Binary JSON Specification Examples") +TEST_CASE("Universal Binary JSON Specification Examples 2") { for (std::string prefix : { @@ -1397,193 +1949,3 @@ TEST_CASE("all first bytes", "[!throws]") } } */ - -/* -TEST_CASE("examples from RFC 7049 Appendix A") -{ - SECTION("numbers") - { - CHECK(json::to_cbor(json::parse("0")) == std::vector({0x00})); - CHECK(json::parse("0") == json::from_cbor(std::vector({0x00}))); - - CHECK(json::to_cbor(json::parse("1")) == std::vector({0x01})); - CHECK(json::parse("1") == json::from_cbor(std::vector({0x01}))); - - CHECK(json::to_cbor(json::parse("10")) == std::vector({0x0a})); - CHECK(json::parse("10") == json::from_cbor(std::vector({0x0a}))); - - CHECK(json::to_cbor(json::parse("23")) == std::vector({0x17})); - CHECK(json::parse("23") == json::from_cbor(std::vector({0x17}))); - - CHECK(json::to_cbor(json::parse("24")) == std::vector({0x18, 0x18})); - CHECK(json::parse("24") == json::from_cbor(std::vector({0x18, 0x18}))); - - CHECK(json::to_cbor(json::parse("25")) == std::vector({0x18, 0x19})); - CHECK(json::parse("25") == json::from_cbor(std::vector({0x18, 0x19}))); - - CHECK(json::to_cbor(json::parse("100")) == std::vector({0x18, 0x64})); - CHECK(json::parse("100") == json::from_cbor(std::vector({0x18, 0x64}))); - - CHECK(json::to_cbor(json::parse("1000")) == std::vector({0x19, 0x03, 0xe8})); - CHECK(json::parse("1000") == json::from_cbor(std::vector({0x19, 0x03, 0xe8}))); - - CHECK(json::to_cbor(json::parse("1000000")) == std::vector({0x1a, 0x00, 0x0f, 0x42, 0x40})); - CHECK(json::parse("1000000") == json::from_cbor(std::vector({0x1a, 0x00, 0x0f, 0x42, 0x40}))); - - CHECK(json::to_cbor(json::parse("1000000000000")) == std::vector({0x1b, 0x00, 0x00, 0x00, 0xe8, 0xd4, 0xa5, 0x10, 0x00})); - CHECK(json::parse("1000000000000") == json::from_cbor(std::vector({0x1b, 0x00, 0x00, 0x00, 0xe8, 0xd4, 0xa5, 0x10, 0x00}))); - - CHECK(json::to_cbor(json::parse("18446744073709551615")) == std::vector({0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff})); - CHECK(json::parse("18446744073709551615") == json::from_cbor(std::vector({0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}))); - - // positive bignum is not supported - //CHECK(json::to_cbor(json::parse("18446744073709551616")) == std::vector({0xc2, 0x49, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); - //CHECK(json::parse("18446744073709551616") == json::from_cbor(std::vector({0xc2, 0x49, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}))); - - //CHECK(json::to_cbor(json::parse("-18446744073709551616")) == std::vector({0x3b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff})); - //CHECK(json::parse("-18446744073709551616") == json::from_cbor(std::vector({0x3b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}))); - - // negative bignum is not supported - //CHECK(json::to_cbor(json::parse("-18446744073709551617")) == std::vector({0xc3, 0x49, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})); - //CHECK(json::parse("-18446744073709551617") == json::from_cbor(std::vector({0xc3, 0x49, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}))); - - CHECK(json::to_cbor(json::parse("-1")) == std::vector({0x20})); - CHECK(json::parse("-1") == json::from_cbor(std::vector({0x20}))); - - CHECK(json::to_cbor(json::parse("-10")) == std::vector({0x29})); - CHECK(json::parse("-10") == json::from_cbor(std::vector({0x29}))); - - CHECK(json::to_cbor(json::parse("-100")) == std::vector({0x38, 0x63})); - CHECK(json::parse("-100") == json::from_cbor(std::vector({0x38, 0x63}))); - - CHECK(json::to_cbor(json::parse("-1000")) == std::vector({0x39, 0x03, 0xe7})); - CHECK(json::parse("-1000") == json::from_cbor(std::vector({0x39, 0x03, 0xe7}))); - - // half-precision float - //CHECK(json::to_cbor(json::parse("0.0")) == std::vector({0xf9, 0x00, 0x00})); - CHECK(json::parse("0.0") == json::from_cbor(std::vector({0xf9, 0x00, 0x00}))); - - // half-precision float - //CHECK(json::to_cbor(json::parse("-0.0")) == std::vector({0xf9, 0x80, 0x00})); - CHECK(json::parse("-0.0") == json::from_cbor(std::vector({0xf9, 0x80, 0x00}))); - - // half-precision float - //CHECK(json::to_cbor(json::parse("1.0")) == std::vector({0xf9, 0x3c, 0x00})); - CHECK(json::parse("1.0") == json::from_cbor(std::vector({0xf9, 0x3c, 0x00}))); - - CHECK(json::to_cbor(json::parse("1.1")) == std::vector({0xfb, 0x3f, 0xf1, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a})); - CHECK(json::parse("1.1") == json::from_cbor(std::vector({0xfb, 0x3f, 0xf1, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a}))); - - // half-precision float - //CHECK(json::to_cbor(json::parse("1.5")) == std::vector({0xf9, 0x3e, 0x00})); - CHECK(json::parse("1.5") == json::from_cbor(std::vector({0xf9, 0x3e, 0x00}))); - - // half-precision float - //CHECK(json::to_cbor(json::parse("65504.0")) == std::vector({0xf9, 0x7b, 0xff})); - CHECK(json::parse("65504.0") == json::from_cbor(std::vector({0xf9, 0x7b, 0xff}))); - - //CHECK(json::to_cbor(json::parse("100000.0")) == std::vector({0xfa, 0x47, 0xc3, 0x50, 0x00})); - CHECK(json::parse("100000.0") == json::from_cbor(std::vector({0xfa, 0x47, 0xc3, 0x50, 0x00}))); - - //CHECK(json::to_cbor(json::parse("3.4028234663852886e+38")) == std::vector({0xfa, 0x7f, 0x7f, 0xff, 0xff})); - CHECK(json::parse("3.4028234663852886e+38") == json::from_cbor(std::vector({0xfa, 0x7f, 0x7f, 0xff, 0xff}))); - - CHECK(json::to_cbor(json::parse("1.0e+300")) == std::vector({0xfb, 0x7e, 0x37, 0xe4, 0x3c, 0x88, 0x00, 0x75, 0x9c})); - CHECK(json::parse("1.0e+300") == json::from_cbor(std::vector({0xfb, 0x7e, 0x37, 0xe4, 0x3c, 0x88, 0x00, 0x75, 0x9c}))); - - // half-precision float - //CHECK(json::to_cbor(json::parse("5.960464477539063e-8")) == std::vector({0xf9, 0x00, 0x01})); - CHECK(json::parse("-4.0") == json::from_cbor(std::vector({0xf9, 0xc4, 0x00}))); - - // half-precision float - //CHECK(json::to_cbor(json::parse("0.00006103515625")) == std::vector({0xf9, 0x04, 0x00})); - CHECK(json::parse("-4.0") == json::from_cbor(std::vector({0xf9, 0xc4, 0x00}))); - - // half-precision float - //CHECK(json::to_cbor(json::parse("-4.0")) == std::vector({0xf9, 0xc4, 0x00})); - CHECK(json::parse("-4.0") == json::from_cbor(std::vector({0xf9, 0xc4, 0x00}))); - - CHECK(json::to_cbor(json::parse("-4.1")) == std::vector({0xfb, 0xc0, 0x10, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66})); - CHECK(json::parse("-4.1") == json::from_cbor(std::vector({0xfb, 0xc0, 0x10, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66}))); - } - - SECTION("simple values") - { - CHECK(json::to_cbor(json::parse("false")) == std::vector({0xf4})); - CHECK(json::parse("false") == json::from_cbor(std::vector({0xf4}))); - - CHECK(json::to_cbor(json::parse("true")) == std::vector({0xf5})); - CHECK(json::parse("true") == json::from_cbor(std::vector({0xf5}))); - - CHECK(json::to_cbor(json::parse("true")) == std::vector({0xf5})); - CHECK(json::parse("true") == json::from_cbor(std::vector({0xf5}))); - } - - SECTION("strings") - { - CHECK(json::to_cbor(json::parse("\"\"")) == std::vector({0x60})); - CHECK(json::parse("\"\"") == json::from_cbor(std::vector({0x60}))); - - CHECK(json::to_cbor(json::parse("\"a\"")) == std::vector({0x61, 0x61})); - CHECK(json::parse("\"a\"") == json::from_cbor(std::vector({0x61, 0x61}))); - - CHECK(json::to_cbor(json::parse("\"IETF\"")) == std::vector({0x64, 0x49, 0x45, 0x54, 0x46})); - CHECK(json::parse("\"IETF\"") == json::from_cbor(std::vector({0x64, 0x49, 0x45, 0x54, 0x46}))); - - CHECK(json::to_cbor(json::parse("\"\\u00fc\"")) == std::vector({0x62, 0xc3, 0xbc})); - CHECK(json::parse("\"\\u00fc\"") == json::from_cbor(std::vector({0x62, 0xc3, 0xbc}))); - - CHECK(json::to_cbor(json::parse("\"\\u6c34\"")) == std::vector({0x63, 0xe6, 0xb0, 0xb4})); - CHECK(json::parse("\"\\u6c34\"") == json::from_cbor(std::vector({0x63, 0xe6, 0xb0, 0xb4}))); - - CHECK(json::to_cbor(json::parse("\"\\ud800\\udd51\"")) == std::vector({0x64, 0xf0, 0x90, 0x85, 0x91})); - CHECK(json::parse("\"\\ud800\\udd51\"") == json::from_cbor(std::vector({0x64, 0xf0, 0x90, 0x85, 0x91}))); - - // indefinite length strings - CHECK(json::parse("\"streaming\"") == json::from_cbor(std::vector({0x7f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0xff}))); - } - - SECTION("arrays") - { - CHECK(json::to_cbor(json::parse("[]")) == std::vector({0x80})); - CHECK(json::parse("[]") == json::from_cbor(std::vector({0x80}))); - - CHECK(json::to_cbor(json::parse("[1, 2, 3]")) == std::vector({0x83, 0x01, 0x02, 0x03})); - CHECK(json::parse("[1, 2, 3]") == json::from_cbor(std::vector({0x83, 0x01, 0x02, 0x03}))); - - CHECK(json::to_cbor(json::parse("[1, [2, 3], [4, 5]]")) == std::vector({0x83, 0x01, 0x82, 0x02, 0x03, 0x82, 0x04, 0x05})); - CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({0x83, 0x01, 0x82, 0x02, 0x03, 0x82, 0x04, 0x05}))); - - CHECK(json::to_cbor(json::parse("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]")) == std::vector({0x98, 0x19, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x18, 0x18, 0x19})); - CHECK(json::parse("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]") == json::from_cbor(std::vector({0x98, 0x19, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x18, 0x18, 0x19}))); - - // indefinite length arrays - CHECK(json::parse("[]") == json::from_cbor(std::vector({0x9f, 0xff}))); - CHECK(json::parse("[1, [2, 3], [4, 5]] ") == json::from_cbor(std::vector({0x9f, 0x01, 0x82, 0x02, 0x03, 0x9f, 0x04, 0x05, 0xff, 0xff}))); - CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({0x9f, 0x01, 0x82, 0x02, 0x03, 0x82, 0x04, 0x05, 0xff}))); - CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({0x83, 0x01, 0x82, 0x02, 0x03, 0x9f, 0x04, 0x05, 0xff}))); - CHECK(json::parse("[1, [2, 3], [4, 5]]") == json::from_cbor(std::vector({0x83, 0x01, 0x9f, 0x02, 0x03, 0xff, 0x82, 0x04, 0x05}))); - CHECK(json::parse("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]") == json::from_cbor(std::vector({0x9f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x18, 0x18, 0x19, 0xff}))); - } - - SECTION("objects") - { - CHECK(json::to_cbor(json::parse("{}")) == std::vector({0xa0})); - CHECK(json::parse("{}") == json::from_cbor(std::vector({0xa0}))); - - CHECK(json::to_cbor(json::parse("{\"a\": 1, \"b\": [2, 3]}")) == std::vector({0xa2, 0x61, 0x61, 0x01, 0x61, 0x62, 0x82, 0x02, 0x03})); - CHECK(json::parse("{\"a\": 1, \"b\": [2, 3]}") == json::from_cbor(std::vector({0xa2, 0x61, 0x61, 0x01, 0x61, 0x62, 0x82, 0x02, 0x03}))); - - CHECK(json::to_cbor(json::parse("[\"a\", {\"b\": \"c\"}]")) == std::vector({0x82, 0x61, 0x61, 0xa1, 0x61, 0x62, 0x61, 0x63})); - CHECK(json::parse("[\"a\", {\"b\": \"c\"}]") == json::from_cbor(std::vector({0x82, 0x61, 0x61, 0xa1, 0x61, 0x62, 0x61, 0x63}))); - - CHECK(json::to_cbor(json::parse("{\"a\": \"A\", \"b\": \"B\", \"c\": \"C\", \"d\": \"D\", \"e\": \"E\"}")) == std::vector({0xa5, 0x61, 0x61, 0x61, 0x41, 0x61, 0x62, 0x61, 0x42, 0x61, 0x63, 0x61, 0x43, 0x61, 0x64, 0x61, 0x44, 0x61, 0x65, 0x61, 0x45})); - CHECK(json::parse("{\"a\": \"A\", \"b\": \"B\", \"c\": \"C\", \"d\": \"D\", \"e\": \"E\"}") == json::from_cbor(std::vector({0xa5, 0x61, 0x61, 0x61, 0x41, 0x61, 0x62, 0x61, 0x42, 0x61, 0x63, 0x61, 0x43, 0x61, 0x64, 0x61, 0x44, 0x61, 0x65, 0x61, 0x45}))); - - // indefinite length objects - CHECK(json::parse("{\"a\": 1, \"b\": [2, 3]}") == json::from_cbor(std::vector({0xbf, 0x61, 0x61, 0x01, 0x61, 0x62, 0x9f, 0x02, 0x03, 0xff, 0xff}))); - CHECK(json::parse("[\"a\", {\"b\": \"c\"}]") == json::from_cbor(std::vector({0x82, 0x61, 0x61, 0xbf, 0x61, 0x62, 0x61, 0x63, 0xff}))); - CHECK(json::parse("{\"Fun\": true, \"Amt\": -2}") == json::from_cbor(std::vector({0xbf, 0x63, 0x46, 0x75, 0x6e, 0xf5, 0x63, 0x41, 0x6d, 0x74, 0x21, 0xff}))); - } -} -*/ From 10bad9381daffa6cedf2a4d14feabe11c961edc2 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 10 Jan 2018 23:13:48 +0100 Subject: [PATCH 042/106] :construction: added size benchmark for binary formats --- benchmarks/Makefile | 5 ++++- benchmarks/src/formats.cpp | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 benchmarks/src/formats.cpp diff --git a/benchmarks/Makefile b/benchmarks/Makefile index ef2de8a3..463a1fbb 100644 --- a/benchmarks/Makefile +++ b/benchmarks/Makefile @@ -17,5 +17,8 @@ json_benchmarks_simple: src/benchmarks_simple.cpp ../src/json.hpp number_jsons: (test -e files/numbers/floats.json -a -e files/numbers/signed_ints.json -a -e files/numbers/unsigned_ints.json) || (cd files/numbers ; python generate.py) +json_formats: src/formats.cpp ../src/json.hpp number_jsons + $(CXX) -std=c++11 $(CXXFLAGS) -DNDEBUG -O3 -flto -I../src $(<) $(LDFLAGS) -o $@ + clean: - rm -f json_benchmarks json_benchmarks_simple files/numbers/*.json + rm -f json_benchmarks json_benchmarks_simple json_formats files/numbers/*.json diff --git a/benchmarks/src/formats.cpp b/benchmarks/src/formats.cpp new file mode 100644 index 00000000..6070e1b3 --- /dev/null +++ b/benchmarks/src/formats.cpp @@ -0,0 +1,35 @@ +#include +#include +#include + +using json = nlohmann::json; + +int main() +{ + std::vector files = { + "files/jeopardy/jeopardy.json", + "files/nativejson-benchmark/canada.json", + "files/nativejson-benchmark/citm_catalog.json", + "files/nativejson-benchmark/twitter.json", + "files/numbers/floats.json", + "files/numbers/signed_ints.json", + "files/numbers/unsigned_ints.json" + }; + + for (const auto& file: files) + { + std::ifstream f(file); + json j = json::parse(f); + auto v_cbor = json::to_cbor(j); + auto v_msgpack = json::to_msgpack(j); + auto v_ubjson = json::to_ubjson(j, true, true); + + double baseline = j.dump().size(); + + std::cout << file << ", JSON: " << j.dump(2).size() << " " << j.dump(2).size()/baseline << std::endl; + std::cout << file << ", JSON (minified): " << j.dump().size() << std::endl; + std::cout << file << ", CBOR: " << v_cbor.size() << " " << v_cbor.size()/baseline << std::endl; + std::cout << file << ", MessagePack: " << v_msgpack.size() << " " << v_msgpack.size()/baseline << std::endl; + std::cout << file << ", UBJSON (optimized): " << v_ubjson.size() << " " << v_ubjson.size()/baseline << std::endl; + } +} From 241eea0c0e64f87a4b5a84ee19f1cde8623dae7f Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Fri, 12 Jan 2018 09:23:33 +0100 Subject: [PATCH 043/106] :memo: documentation --- src/json.hpp | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 5f872e52..097a580e 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -5543,8 +5543,9 @@ class binary_reader /*! @brief reads a UBJSON string - This function first reads starting bytes to determine the expected - string length and then copies this number of bytes into a string. + This function is either called after reading the 'S' byte explicitly + indicating a string, or in case of an object key where the 'S' byte can be + left out. @param[in] get_char whether a new character should be retrieved from the input (true, default) or whether the last read @@ -5559,7 +5560,7 @@ class binary_reader { if (get_char) { - get(); + get(); // TODO: may we ignore N here? } check_eof(); @@ -5584,6 +5585,14 @@ class binary_reader } } + /*! + @brief determine the type and size for a container + + In the optimized UBJSON format, a type and a size can be provided to allow + for a more compact representation. + + @return pair of the size and the type + */ std::pair get_ubjson_size_type() { std::size_t sz = std::string::npos; @@ -5593,14 +5602,16 @@ class binary_reader if (current == '$') { - get(); // must not ignore 'N', because 'N' maybe the type + tc = get(); // must not ignore 'N', because 'N' maybe the type check_eof(); - tc = current; get_ignore_noop(); if (current != '#') { - assert(false); + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, + "expected '#' after UBJSON type information; last byte: 0x" + ss.str())); } sz = parse_ubjson_internal(); } @@ -5646,7 +5657,13 @@ class binary_reader { get(); check_eof(); - assert(0 <= current and current <= 127); + if (JSON_UNLIKELY(not(0 <= current and current <= 127))) + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, + "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + ss.str())); + } return std::string(1, static_cast(current)); } From f4a55f26b0867fab39b6fc7eca13b9ee6fb35702 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sat, 13 Jan 2018 10:59:49 +0100 Subject: [PATCH 044/106] :heavy_plus_sign: added amalgamate Python script --- .gitignore | 2 - develop/amalgamate/LICENSE.md | 27 +++ develop/amalgamate/README.md | 66 +++++++ develop/amalgamate/amalgamate.py | 295 +++++++++++++++++++++++++++++++ develop/amalgamate/config.json | 8 + 5 files changed, 396 insertions(+), 2 deletions(-) create mode 100644 develop/amalgamate/LICENSE.md create mode 100644 develop/amalgamate/README.md create mode 100755 develop/amalgamate/amalgamate.py create mode 100644 develop/amalgamate/config.json diff --git a/.gitignore b/.gitignore index bfd2e6ee..92ea2903 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,4 @@ benchmarks/files/numbers/*.json cmake-build-debug test/test-* -amalgamate -single_include third_party/Amalgamate diff --git a/develop/amalgamate/LICENSE.md b/develop/amalgamate/LICENSE.md new file mode 100644 index 00000000..7fe9cf08 --- /dev/null +++ b/develop/amalgamate/LICENSE.md @@ -0,0 +1,27 @@ +amalgamate.py - Amalgamate C source and header files +Copyright (c) 2012, Erik Edlund + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Erik Edlund, nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/develop/amalgamate/README.md b/develop/amalgamate/README.md new file mode 100644 index 00000000..975ca0bd --- /dev/null +++ b/develop/amalgamate/README.md @@ -0,0 +1,66 @@ + +# amalgamate.py - Amalgamate C source and header files + +Origin: https://bitbucket.org/erikedlund/amalgamate + +Mirror: https://github.com/edlund/amalgamate + +`amalgamate.py` aims to make it easy to use SQLite-style C source and header +amalgamation in projects. + +For more information, please refer to: http://sqlite.org/amalgamation.html + +## Here be dragons + +`amalgamate.py` is quite dumb, it only knows the bare minimum about C code +required in order to be able to handle trivial include directives. It can +produce weird results for unexpected code. + +Things to be aware of: + +`amalgamate.py` will not handle complex include directives correctly: + + #define HEADER_PATH "path/to/header.h" + #include HEADER_PATH + +In the above example, `path/to/header.h` will not be included in the +amalgamation (HEADER_PATH is never expanded). + +`amalgamate.py` makes the assumption that each source and header file which +is not empty will end in a new-line character, which is not immediately +preceded by a backslash character (see 5.1.1.2p1.2 of ISO C99). + +`amalgamate.py` should be usable with C++ code, but raw string literals from +C++11 will definitely cause problems: + + R"delimiter(Terrible raw \ data " #include )delimiter" + R"delimiter(Terrible raw \ data " escaping)delimiter" + +In the examples above, `amalgamate.py` will stop parsing the raw string literal +when it encounters the first quotation mark, which will produce unexpected +results. + +## Installing amalgamate.py + +Python v.2.7.0 or higher is required. + +`amalgamate.py` can be tested and installed using the following commands: + + ./test.sh && sudo -k cp ./amalgamate.py /usr/local/bin/ + +## Using amalgamate.py + + amalgamate.py [-v] -c path/to/config.json -s path/to/source/dir \ + [-p path/to/prologue.(c|h)] + + * The `-c, --config` option should specify the path to a JSON config file which + lists the source files, include paths and where to write the resulting + amalgamation. Have a look at `test/source.c.json` and `test/include.h.json` + to see two examples. + + * The `-s, --source` option should specify the path to the source directory. + This is useful for supporting separate source and build directories. + + * The `-p, --prologue` option should specify the path to a file which will be + added to the beginning of the amalgamation. It is optional. + diff --git a/develop/amalgamate/amalgamate.py b/develop/amalgamate/amalgamate.py new file mode 100755 index 00000000..b03069fd --- /dev/null +++ b/develop/amalgamate/amalgamate.py @@ -0,0 +1,295 @@ +#!/usr/bin/env python + +# amalgamate.py - Amalgamate C source and header files. +# Copyright (c) 2012, Erik Edlund +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# * Neither the name of Erik Edlund, nor the names of its contributors may +# be used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + +import argparse +import datetime +import json +import os +import re +import sys + +class Amalgamation(object): + + # Prepends self.source_path to file_path if needed. + def actual_path(self, file_path): + if not os.path.isabs(file_path): + file_path = os.path.join(self.source_path, file_path) + return file_path + + # Search included file_path in self.include_paths and + # in source_dir if specified. + def find_included_file(self, file_path, source_dir): + search_dirs = self.include_paths[:] + if source_dir: + search_dirs.insert(0, source_dir) + + for search_dir in search_dirs: + search_path = os.path.join(search_dir, file_path) + if os.path.isfile(self.actual_path(search_path)): + return search_path + return None + + def __init__(self, args): + with open(args.config, 'r') as f: + config = json.loads(f.read()) + for key in config: + setattr(self, key, config[key]) + + self.verbose = args.verbose == "yes" + self.prologue = args.prologue + self.source_path = args.source_path + self.included_files = [] + + # Generate the amalgamation and write it to the target file. + def generate(self): + amalgamation = "" + + if self.prologue: + with open(self.prologue, 'r') as f: + amalgamation += datetime.datetime.now().strftime(f.read()) + + if self.verbose: + print("Config:") + print(" target = {0}".format(self.target)) + print(" working_dir = {0}".format(os.getcwd())) + print(" include_paths = {0}".format(self.include_paths)) + print("Creating amalgamation:") + for file_path in self.sources: + # Do not check the include paths while processing the source + # list, all given source paths must be correct. + actual_path = self.actual_path(file_path) + print(" - processing \"{0}\"".format(file_path)) + t = TranslationUnit(file_path, self, True) + amalgamation += t.content + + with open(self.target, 'w') as f: + f.write(amalgamation) + + print("...done!\n") + if self.verbose: + print("Files processed: {0}".format(self.sources)) + print("Files included: {0}".format(self.included_files)) + print("") + +class TranslationUnit(object): + + # // C++ comment. + cpp_comment_pattern = re.compile(r"//.*?\n") + + # /* C comment. */ + c_comment_pattern = re.compile(r"/\*.*?\*/", re.S) + + # "complex \"stri\\\ng\" value". + string_pattern = re.compile("[^']" r'".*?(?<=[^\\])"', re.S) + + # Handle simple include directives. Support for advanced + # directives where macros and defines needs to expanded is + # not a concern right now. + include_pattern = re.compile( + r'#\s*include\s+(<|")(?P.*?)("|>)', re.S) + + # #pragma once + pragma_once_pattern = re.compile(r'#\s*pragma\s+once', re.S) + + # Search for pattern in self.content, add the match to + # contexts if found and update the index accordingly. + def _search_content(self, index, pattern, contexts): + match = pattern.search(self.content, index) + if match: + contexts.append(match) + return match.end() + return index + 2 + + # Return all the skippable contexts, i.e., comments and strings + def _find_skippable_contexts(self): + # Find contexts in the content in which a found include + # directive should not be processed. + skippable_contexts = [] + + # Walk through the content char by char, and try to grab + # skippable contexts using regular expressions when found. + i = 1 + content_len = len(self.content) + while i < content_len: + j = i - 1 + current = self.content[i] + previous = self.content[j] + + if current == '"': + # String value. + i = self._search_content(j, self.string_pattern, + skippable_contexts) + elif current == '*' and previous == '/': + # C style comment. + i = self._search_content(j, self.c_comment_pattern, + skippable_contexts) + elif current == '/' and previous == '/': + # C++ style comment. + i = self._search_content(j, self.cpp_comment_pattern, + skippable_contexts) + else: + # Skip to the next char. + i += 1 + + return skippable_contexts + + # Returns True if the match is within list of other matches + def _is_within(self, match, matches): + for m in matches: + if match.start() > m.start() and \ + match.end() < m.end(): + return True + return False + + # Removes pragma once from content + def _process_pragma_once(self): + content_len = len(self.content) + if content_len < len("#include "): + return 0 + + # Find contexts in the content in which a found include + # directive should not be processed. + skippable_contexts = self._find_skippable_contexts() + + pragmas = [] + pragma_once_match = self.pragma_once_pattern.search(self.content) + while pragma_once_match: + if not self._is_within(pragma_once_match, skippable_contexts): + pragmas.append(pragma_once_match) + + pragma_once_match = self.pragma_once_pattern.search(self.content, + pragma_once_match.end()) + + # Handle all collected pragma once directives. + prev_end = 0 + tmp_content = '' + for pragma_match in pragmas: + tmp_content += self.content[prev_end:pragma_match.start()] + prev_end = pragma_match.end() + tmp_content += self.content[prev_end:] + self.content = tmp_content + + # Include all trivial #include directives into self.content. + def _process_includes(self): + content_len = len(self.content) + if content_len < len("#include "): + return 0 + + # Find contexts in the content in which a found include + # directive should not be processed. + skippable_contexts = self._find_skippable_contexts() + + # Search for include directives in the content, collect those + # which should be included into the content. + includes = [] + include_match = self.include_pattern.search(self.content) + while include_match: + if not self._is_within(include_match, skippable_contexts): + include_path = include_match.group("path") + search_same_dir = include_match.group(1) == '"' + found_included_path = self.amalgamation.find_included_file( + include_path, self.file_dir if search_same_dir else None) + if found_included_path: + includes.append((include_match, found_included_path)) + + include_match = self.include_pattern.search(self.content, + include_match.end()) + + # Handle all collected include directives. + prev_end = 0 + tmp_content = '' + for include in includes: + include_match, found_included_path = include + tmp_content += self.content[prev_end:include_match.start()] + tmp_content += "// {0}\n".format(include_match.group(0)) + if not found_included_path in self.amalgamation.included_files: + t = TranslationUnit(found_included_path, self.amalgamation, False) + tmp_content += t.content + prev_end = include_match.end() + tmp_content += self.content[prev_end:] + self.content = tmp_content + + return len(includes) + + # Make all content processing + def _process(self): + if not self.is_root: + self._process_pragma_once() + self._process_includes() + + def __init__(self, file_path, amalgamation, is_root): + self.file_path = file_path + self.file_dir = os.path.dirname(file_path) + self.amalgamation = amalgamation + self.is_root = is_root + + self.amalgamation.included_files.append(self.file_path) + + actual_path = self.amalgamation.actual_path(file_path) + if not os.path.isfile(actual_path): + raise IOError("File not found: \"{0}\"".format(file_path)) + with open(actual_path, 'r') as f: + self.content = f.read() + self._process() + +def main(): + description = "Amalgamate C source and header files." + usage = " ".join([ + "amalgamate.py", + "[-v]", + "-c path/to/config.json", + "-s path/to/source/dir", + "[-p path/to/prologue.(c|h)]" + ]) + argsparser = argparse.ArgumentParser( + description=description, usage=usage) + + argsparser.add_argument("-v", "--verbose", dest="verbose", + choices=["yes", "no"], metavar="", help="be verbose") + + argsparser.add_argument("-c", "--config", dest="config", + required=True, metavar="", help="path to a JSON config file") + + argsparser.add_argument("-s", "--source", dest="source_path", + required=True, metavar="", help="source code path") + + argsparser.add_argument("-p", "--prologue", dest="prologue", + required=False, metavar="", help="path to a C prologue file") + + amalgamation = Amalgamation(argsparser.parse_args()) + amalgamation.generate() + +if __name__ == "__main__": + main() + diff --git a/develop/amalgamate/config.json b/develop/amalgamate/config.json new file mode 100644 index 00000000..ce937e65 --- /dev/null +++ b/develop/amalgamate/config.json @@ -0,0 +1,8 @@ +{ + "project": "JSON for Modern C++", + "target": "src/json.hpp", + "sources": [ + "json.hpp" + ], + "include_paths": ["."] +} From a66b2d20c654515e22ce3dffcddb533f0740c75e Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sat, 13 Jan 2018 11:15:23 +0100 Subject: [PATCH 045/106] :rotating_light: removed linter warnings for Python code --- develop/amalgamate/CHANGES.md | 10 + develop/amalgamate/amalgamate.py | 494 ++++++++++++++++--------------- 2 files changed, 259 insertions(+), 245 deletions(-) create mode 100644 develop/amalgamate/CHANGES.md diff --git a/develop/amalgamate/CHANGES.md b/develop/amalgamate/CHANGES.md new file mode 100644 index 00000000..728b9331 --- /dev/null +++ b/develop/amalgamate/CHANGES.md @@ -0,0 +1,10 @@ +The following changes have been made to the code with respect to : + +- Resolved inspection results from PyCharm: + - replaced tabs with spaces + - added encoding annotation + - reindented file to remove trailing whitespaces + - unused import `sys` + - membership check + - made function from `_is_within` + - removed unused variable `actual_path` diff --git a/develop/amalgamate/amalgamate.py b/develop/amalgamate/amalgamate.py index b03069fd..f01b43b7 100755 --- a/develop/amalgamate/amalgamate.py +++ b/develop/amalgamate/amalgamate.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# coding=utf-8 # amalgamate.py - Amalgamate C source and header files. # Copyright (c) 2012, Erik Edlund @@ -37,259 +38,262 @@ import datetime import json import os import re -import sys + class Amalgamation(object): - - # Prepends self.source_path to file_path if needed. - def actual_path(self, file_path): - if not os.path.isabs(file_path): - file_path = os.path.join(self.source_path, file_path) - return file_path - - # Search included file_path in self.include_paths and - # in source_dir if specified. - def find_included_file(self, file_path, source_dir): - search_dirs = self.include_paths[:] - if source_dir: - search_dirs.insert(0, source_dir) - for search_dir in search_dirs: - search_path = os.path.join(search_dir, file_path) - if os.path.isfile(self.actual_path(search_path)): - return search_path - return None - - def __init__(self, args): - with open(args.config, 'r') as f: - config = json.loads(f.read()) - for key in config: - setattr(self, key, config[key]) - - self.verbose = args.verbose == "yes" - self.prologue = args.prologue - self.source_path = args.source_path - self.included_files = [] - - # Generate the amalgamation and write it to the target file. - def generate(self): - amalgamation = "" - - if self.prologue: - with open(self.prologue, 'r') as f: - amalgamation += datetime.datetime.now().strftime(f.read()) - - if self.verbose: - print("Config:") - print(" target = {0}".format(self.target)) - print(" working_dir = {0}".format(os.getcwd())) - print(" include_paths = {0}".format(self.include_paths)) - print("Creating amalgamation:") - for file_path in self.sources: - # Do not check the include paths while processing the source - # list, all given source paths must be correct. - actual_path = self.actual_path(file_path) - print(" - processing \"{0}\"".format(file_path)) - t = TranslationUnit(file_path, self, True) - amalgamation += t.content - - with open(self.target, 'w') as f: - f.write(amalgamation) - - print("...done!\n") - if self.verbose: - print("Files processed: {0}".format(self.sources)) - print("Files included: {0}".format(self.included_files)) - print("") + # Prepends self.source_path to file_path if needed. + def actual_path(self, file_path): + if not os.path.isabs(file_path): + file_path = os.path.join(self.source_path, file_path) + return file_path + + # Search included file_path in self.include_paths and + # in source_dir if specified. + def find_included_file(self, file_path, source_dir): + search_dirs = self.include_paths[:] + if source_dir: + search_dirs.insert(0, source_dir) + + for search_dir in search_dirs: + search_path = os.path.join(search_dir, file_path) + if os.path.isfile(self.actual_path(search_path)): + return search_path + return None + + def __init__(self, args): + with open(args.config, 'r') as f: + config = json.loads(f.read()) + for key in config: + setattr(self, key, config[key]) + + self.verbose = args.verbose == "yes" + self.prologue = args.prologue + self.source_path = args.source_path + self.included_files = [] + + # Generate the amalgamation and write it to the target file. + def generate(self): + amalgamation = "" + + if self.prologue: + with open(self.prologue, 'r') as f: + amalgamation += datetime.datetime.now().strftime(f.read()) + + if self.verbose: + print("Config:") + print(" target = {0}".format(self.target)) + print(" working_dir = {0}".format(os.getcwd())) + print(" include_paths = {0}".format(self.include_paths)) + print("Creating amalgamation:") + for file_path in self.sources: + # Do not check the include paths while processing the source + # list, all given source paths must be correct. + # actual_path = self.actual_path(file_path) + print(" - processing \"{0}\"".format(file_path)) + t = TranslationUnit(file_path, self, True) + amalgamation += t.content + + with open(self.target, 'w') as f: + f.write(amalgamation) + + print("...done!\n") + if self.verbose: + print("Files processed: {0}".format(self.sources)) + print("Files included: {0}".format(self.included_files)) + print("") + + +def _is_within(match, matches): + for m in matches: + if match.start() > m.start() and \ + match.end() < m.end(): + return True + return False + class TranslationUnit(object): - - # // C++ comment. - cpp_comment_pattern = re.compile(r"//.*?\n") - - # /* C comment. */ - c_comment_pattern = re.compile(r"/\*.*?\*/", re.S) - - # "complex \"stri\\\ng\" value". - string_pattern = re.compile("[^']" r'".*?(?<=[^\\])"', re.S) - - # Handle simple include directives. Support for advanced - # directives where macros and defines needs to expanded is - # not a concern right now. - include_pattern = re.compile( - r'#\s*include\s+(<|")(?P.*?)("|>)', re.S) + # // C++ comment. + cpp_comment_pattern = re.compile(r"//.*?\n") - # #pragma once - pragma_once_pattern = re.compile(r'#\s*pragma\s+once', re.S) - - # Search for pattern in self.content, add the match to - # contexts if found and update the index accordingly. - def _search_content(self, index, pattern, contexts): - match = pattern.search(self.content, index) - if match: - contexts.append(match) - return match.end() - return index + 2 - - # Return all the skippable contexts, i.e., comments and strings - def _find_skippable_contexts(self): - # Find contexts in the content in which a found include - # directive should not be processed. - skippable_contexts = [] - - # Walk through the content char by char, and try to grab - # skippable contexts using regular expressions when found. - i = 1 - content_len = len(self.content) - while i < content_len: - j = i - 1 - current = self.content[i] - previous = self.content[j] - - if current == '"': - # String value. - i = self._search_content(j, self.string_pattern, - skippable_contexts) - elif current == '*' and previous == '/': - # C style comment. - i = self._search_content(j, self.c_comment_pattern, - skippable_contexts) - elif current == '/' and previous == '/': - # C++ style comment. - i = self._search_content(j, self.cpp_comment_pattern, - skippable_contexts) - else: - # Skip to the next char. - i += 1 - - return skippable_contexts - - # Returns True if the match is within list of other matches - def _is_within(self, match, matches): - for m in matches: - if match.start() > m.start() and \ - match.end() < m.end(): - return True - return False - - # Removes pragma once from content - def _process_pragma_once(self): - content_len = len(self.content) - if content_len < len("#include "): - return 0 - - # Find contexts in the content in which a found include - # directive should not be processed. - skippable_contexts = self._find_skippable_contexts() + # /* C comment. */ + c_comment_pattern = re.compile(r"/\*.*?\*/", re.S) + + # "complex \"stri\\\ng\" value". + string_pattern = re.compile("[^']" r'".*?(?<=[^\\])"', re.S) + + # Handle simple include directives. Support for advanced + # directives where macros and defines needs to expanded is + # not a concern right now. + include_pattern = re.compile( + r'#\s*include\s+(<|")(?P.*?)("|>)', re.S) + + # #pragma once + pragma_once_pattern = re.compile(r'#\s*pragma\s+once', re.S) + + # Search for pattern in self.content, add the match to + # contexts if found and update the index accordingly. + def _search_content(self, index, pattern, contexts): + match = pattern.search(self.content, index) + if match: + contexts.append(match) + return match.end() + return index + 2 + + # Return all the skippable contexts, i.e., comments and strings + def _find_skippable_contexts(self): + # Find contexts in the content in which a found include + # directive should not be processed. + skippable_contexts = [] + + # Walk through the content char by char, and try to grab + # skippable contexts using regular expressions when found. + i = 1 + content_len = len(self.content) + while i < content_len: + j = i - 1 + current = self.content[i] + previous = self.content[j] + + if current == '"': + # String value. + i = self._search_content(j, self.string_pattern, + skippable_contexts) + elif current == '*' and previous == '/': + # C style comment. + i = self._search_content(j, self.c_comment_pattern, + skippable_contexts) + elif current == '/' and previous == '/': + # C++ style comment. + i = self._search_content(j, self.cpp_comment_pattern, + skippable_contexts) + else: + # Skip to the next char. + i += 1 + + return skippable_contexts + + # Returns True if the match is within list of other matches + + # Removes pragma once from content + def _process_pragma_once(self): + content_len = len(self.content) + if content_len < len("#include "): + return 0 + + # Find contexts in the content in which a found include + # directive should not be processed. + skippable_contexts = self._find_skippable_contexts() + + pragmas = [] + pragma_once_match = self.pragma_once_pattern.search(self.content) + while pragma_once_match: + if not _is_within(pragma_once_match, skippable_contexts): + pragmas.append(pragma_once_match) + + pragma_once_match = self.pragma_once_pattern.search(self.content, + pragma_once_match.end()) + + # Handle all collected pragma once directives. + prev_end = 0 + tmp_content = '' + for pragma_match in pragmas: + tmp_content += self.content[prev_end:pragma_match.start()] + prev_end = pragma_match.end() + tmp_content += self.content[prev_end:] + self.content = tmp_content + + # Include all trivial #include directives into self.content. + def _process_includes(self): + content_len = len(self.content) + if content_len < len("#include "): + return 0 + + # Find contexts in the content in which a found include + # directive should not be processed. + skippable_contexts = self._find_skippable_contexts() + + # Search for include directives in the content, collect those + # which should be included into the content. + includes = [] + include_match = self.include_pattern.search(self.content) + while include_match: + if not _is_within(include_match, skippable_contexts): + include_path = include_match.group("path") + search_same_dir = include_match.group(1) == '"' + found_included_path = self.amalgamation.find_included_file( + include_path, self.file_dir if search_same_dir else None) + if found_included_path: + includes.append((include_match, found_included_path)) + + include_match = self.include_pattern.search(self.content, + include_match.end()) + + # Handle all collected include directives. + prev_end = 0 + tmp_content = '' + for include in includes: + include_match, found_included_path = include + tmp_content += self.content[prev_end:include_match.start()] + tmp_content += "// {0}\n".format(include_match.group(0)) + if found_included_path not in self.amalgamation.included_files: + t = TranslationUnit(found_included_path, self.amalgamation, False) + tmp_content += t.content + prev_end = include_match.end() + tmp_content += self.content[prev_end:] + self.content = tmp_content + + return len(includes) + + # Make all content processing + def _process(self): + if not self.is_root: + self._process_pragma_once() + self._process_includes() + + def __init__(self, file_path, amalgamation, is_root): + self.file_path = file_path + self.file_dir = os.path.dirname(file_path) + self.amalgamation = amalgamation + self.is_root = is_root + + self.amalgamation.included_files.append(self.file_path) + + actual_path = self.amalgamation.actual_path(file_path) + if not os.path.isfile(actual_path): + raise IOError("File not found: \"{0}\"".format(file_path)) + with open(actual_path, 'r') as f: + self.content = f.read() + self._process() - pragmas = [] - pragma_once_match = self.pragma_once_pattern.search(self.content) - while pragma_once_match: - if not self._is_within(pragma_once_match, skippable_contexts): - pragmas.append(pragma_once_match) - - pragma_once_match = self.pragma_once_pattern.search(self.content, - pragma_once_match.end()) - - # Handle all collected pragma once directives. - prev_end = 0 - tmp_content = '' - for pragma_match in pragmas: - tmp_content += self.content[prev_end:pragma_match.start()] - prev_end = pragma_match.end() - tmp_content += self.content[prev_end:] - self.content = tmp_content - - # Include all trivial #include directives into self.content. - def _process_includes(self): - content_len = len(self.content) - if content_len < len("#include "): - return 0 - - # Find contexts in the content in which a found include - # directive should not be processed. - skippable_contexts = self._find_skippable_contexts() - - # Search for include directives in the content, collect those - # which should be included into the content. - includes = [] - include_match = self.include_pattern.search(self.content) - while include_match: - if not self._is_within(include_match, skippable_contexts): - include_path = include_match.group("path") - search_same_dir = include_match.group(1) == '"' - found_included_path = self.amalgamation.find_included_file( - include_path, self.file_dir if search_same_dir else None) - if found_included_path: - includes.append((include_match, found_included_path)) - - include_match = self.include_pattern.search(self.content, - include_match.end()) - - # Handle all collected include directives. - prev_end = 0 - tmp_content = '' - for include in includes: - include_match, found_included_path = include - tmp_content += self.content[prev_end:include_match.start()] - tmp_content += "// {0}\n".format(include_match.group(0)) - if not found_included_path in self.amalgamation.included_files: - t = TranslationUnit(found_included_path, self.amalgamation, False) - tmp_content += t.content - prev_end = include_match.end() - tmp_content += self.content[prev_end:] - self.content = tmp_content - - return len(includes) - - # Make all content processing - def _process(self): - if not self.is_root: - self._process_pragma_once() - self._process_includes() - - def __init__(self, file_path, amalgamation, is_root): - self.file_path = file_path - self.file_dir = os.path.dirname(file_path) - self.amalgamation = amalgamation - self.is_root = is_root - - self.amalgamation.included_files.append(self.file_path) - - actual_path = self.amalgamation.actual_path(file_path) - if not os.path.isfile(actual_path): - raise IOError("File not found: \"{0}\"".format(file_path)) - with open(actual_path, 'r') as f: - self.content = f.read() - self._process() def main(): - description = "Amalgamate C source and header files." - usage = " ".join([ - "amalgamate.py", - "[-v]", - "-c path/to/config.json", - "-s path/to/source/dir", - "[-p path/to/prologue.(c|h)]" - ]) - argsparser = argparse.ArgumentParser( - description=description, usage=usage) - - argsparser.add_argument("-v", "--verbose", dest="verbose", - choices=["yes", "no"], metavar="", help="be verbose") - - argsparser.add_argument("-c", "--config", dest="config", - required=True, metavar="", help="path to a JSON config file") - - argsparser.add_argument("-s", "--source", dest="source_path", - required=True, metavar="", help="source code path") - - argsparser.add_argument("-p", "--prologue", dest="prologue", - required=False, metavar="", help="path to a C prologue file") - - amalgamation = Amalgamation(argsparser.parse_args()) - amalgamation.generate() + description = "Amalgamate C source and header files." + usage = " ".join([ + "amalgamate.py", + "[-v]", + "-c path/to/config.json", + "-s path/to/source/dir", + "[-p path/to/prologue.(c|h)]" + ]) + argsparser = argparse.ArgumentParser( + description=description, usage=usage) + + argsparser.add_argument("-v", "--verbose", dest="verbose", + choices=["yes", "no"], metavar="", help="be verbose") + + argsparser.add_argument("-c", "--config", dest="config", + required=True, metavar="", help="path to a JSON config file") + + argsparser.add_argument("-s", "--source", dest="source_path", + required=True, metavar="", help="source code path") + + argsparser.add_argument("-p", "--prologue", dest="prologue", + required=False, metavar="", help="path to a C prologue file") + + amalgamation = Amalgamation(argsparser.parse_args()) + amalgamation.generate() + if __name__ == "__main__": - main() - + main() From 922b56e49293806f28b8d922f4c79945e57ba816 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Sat, 13 Jan 2018 12:27:33 +0100 Subject: [PATCH 046/106] cmake: add back trailing slash to NLOHMANN_JSON_SOURCE_DIR --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b2acb73f..8f3d9f4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ option(JSON_BuildTests "Build the unit tests when BUILD_TESTING is enabled." ON) ## CONFIGURATION ## set(NLOHMANN_JSON_TARGET_NAME ${PROJECT_NAME}) -set(NLOHMANN_JSON_SOURCE_DIR "src") +set(NLOHMANN_JSON_SOURCE_DIR "src/") set(NLOHMANN_JSON_CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}") set(NLOHMANN_JSON_INCLUDE_INSTALL_DIR "include") set(NLOHMANN_JSON_HEADER_INSTALL_DIR "${NLOHMANN_JSON_INCLUDE_INSTALL_DIR}/nlohmann") From 84bffd5d3602010b9200b25ad09457e8bbd4cbd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Sat, 13 Jan 2018 13:05:42 +0100 Subject: [PATCH 047/106] move amalgamate tool to third_party folder --- .gitignore | 1 - Makefile | 2 +- {develop => third_party}/amalgamate/CHANGES.md | 0 {develop => third_party}/amalgamate/LICENSE.md | 0 {develop => third_party}/amalgamate/README.md | 0 {develop => third_party}/amalgamate/amalgamate.py | 0 {develop => third_party}/amalgamate/config.json | 0 7 files changed, 1 insertion(+), 2 deletions(-) rename {develop => third_party}/amalgamate/CHANGES.md (100%) rename {develop => third_party}/amalgamate/LICENSE.md (100%) rename {develop => third_party}/amalgamate/README.md (100%) rename {develop => third_party}/amalgamate/amalgamate.py (100%) mode change 100755 => 100644 rename {develop => third_party}/amalgamate/config.json (100%) diff --git a/.gitignore b/.gitignore index 92ea2903..8157f1a9 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,3 @@ benchmarks/files/numbers/*.json cmake-build-debug test/test-* -third_party/Amalgamate diff --git a/Makefile b/Makefile index 0029f849..8bfdb193 100644 --- a/Makefile +++ b/Makefile @@ -252,7 +252,7 @@ pretty: amalgamate: src/json.hpp src/json.hpp: $(SRCS) - develop/amalgamate/amalgamate.py -c develop/amalgamate/config.json -s develop --verbose=yes + third_party/amalgamate/amalgamate.py -c third_party/amalgamate/config.json -s develop --verbose=yes $(MAKE) pretty diff --git a/develop/amalgamate/CHANGES.md b/third_party/amalgamate/CHANGES.md similarity index 100% rename from develop/amalgamate/CHANGES.md rename to third_party/amalgamate/CHANGES.md diff --git a/develop/amalgamate/LICENSE.md b/third_party/amalgamate/LICENSE.md similarity index 100% rename from develop/amalgamate/LICENSE.md rename to third_party/amalgamate/LICENSE.md diff --git a/develop/amalgamate/README.md b/third_party/amalgamate/README.md similarity index 100% rename from develop/amalgamate/README.md rename to third_party/amalgamate/README.md diff --git a/develop/amalgamate/amalgamate.py b/third_party/amalgamate/amalgamate.py old mode 100755 new mode 100644 similarity index 100% rename from develop/amalgamate/amalgamate.py rename to third_party/amalgamate/amalgamate.py diff --git a/develop/amalgamate/config.json b/third_party/amalgamate/config.json similarity index 100% rename from develop/amalgamate/config.json rename to third_party/amalgamate/config.json From 5775084ffce3007224c76f53953ebca331aefb40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Sat, 13 Jan 2018 13:07:03 +0100 Subject: [PATCH 048/106] cmake: add option to use/install the non-amalgamated version --- CMakeLists.txt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f3d9f4d..7e427020 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,12 +16,12 @@ include(ExternalProject) ## OPTIONS ## option(JSON_BuildTests "Build the unit tests when BUILD_TESTING is enabled." ON) +option(JSON_MultipleHeaders "Use non-amalgamated version of the library." OFF) ## ## CONFIGURATION ## set(NLOHMANN_JSON_TARGET_NAME ${PROJECT_NAME}) -set(NLOHMANN_JSON_SOURCE_DIR "src/") set(NLOHMANN_JSON_CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}") set(NLOHMANN_JSON_INCLUDE_INSTALL_DIR "include") set(NLOHMANN_JSON_HEADER_INSTALL_DIR "${NLOHMANN_JSON_INCLUDE_INSTALL_DIR}/nlohmann") @@ -31,6 +31,12 @@ set(NLOHMANN_JSON_CMAKE_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}/cmake_c set(NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE "${NLOHMANN_JSON_CMAKE_CONFIG_DIR}/${PROJECT_NAME}ConfigVersion.cmake") set(NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE "${NLOHMANN_JSON_CMAKE_CONFIG_DIR}/${PROJECT_NAME}Config.cmake") +if (JSON_MultipleHeaders) + set(NLOHMANN_JSON_SOURCE_DIR "develop/") +else() + set(NLOHMANN_JSON_SOURCE_DIR "src/") +endif() + ## ## TARGET ## create target and add include path @@ -40,7 +46,7 @@ add_library(${NLOHMANN_JSON_TARGET_NAME} INTERFACE) target_include_directories( ${NLOHMANN_JSON_TARGET_NAME} INTERFACE - $ + $ $ ) From 420dcf1f25db25d6a7799118a2b481fea83dfae0 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 14 Jan 2018 10:10:23 +0100 Subject: [PATCH 049/106] :construction: added check whether code is amalgamated --- Makefile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Makefile b/Makefile index 0029f849..eb179156 100644 --- a/Makefile +++ b/Makefile @@ -29,8 +29,10 @@ CXX=clang++ # main target all: + @echo "amalgamate - amalgamate file src/json.hpp from the develop sources" @echo "ChangeLog.md - generate ChangeLog file" @echo "check - compile and execute test suite" + @echo "check-amalagamation - check whether sources have been amalgamated" @echo "check-fast - compile and execute test suite (skip long-running tests)" @echo "clean - remove built files" @echo "coverage - create coverage information with lcov" @@ -255,6 +257,13 @@ src/json.hpp: $(SRCS) develop/amalgamate/amalgamate.py -c develop/amalgamate/config.json -s develop --verbose=yes $(MAKE) pretty +# check if src/json.hpp has been amalgamated from the develop sources +check-amalagamation: + @mv src/json.hpp src/json.hpp~ + @$(MAKE) amalgamate + @diff src/json.hpp src/json.hpp~ || (echo "===================================================================\n Amalgamation required! Please read the contribution guidelines\n in file .github/CONTRIBUTING.md.\n===================================================================" ; mv src/json.hpp~ src/json.hpp ; false) + @mv src/json.hpp~ src/json.hpp + ########################################################################## # changelog From c772c01a48b36740fdaa7d3b4e62bdf72ec320f9 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 14 Jan 2018 10:27:30 +0100 Subject: [PATCH 050/106] :recycle: refactored code to split headers --- develop/detail/parsing/binary_reader.hpp | 270 ++++++++++++++++ develop/detail/parsing/binary_writer.hpp | 386 +++++++++++++++++++++-- develop/json.hpp | 33 ++ src/json.hpp | 2 +- 4 files changed, 671 insertions(+), 20 deletions(-) diff --git a/develop/detail/parsing/binary_reader.hpp b/develop/detail/parsing/binary_reader.hpp index bacf3d46..1ba961c9 100644 --- a/develop/detail/parsing/binary_reader.hpp +++ b/develop/detail/parsing/binary_reader.hpp @@ -90,6 +90,27 @@ class binary_reader return res; } + /*! + @brief create a JSON value from UBJSON input + + @param[in] strict whether to expect the input to be consumed completed + @return JSON value created from UBJSON input + + @throw parse_error.110 if input ended unexpectedly or the end of file was + not reached when @a strict was set to true + @throw parse_error.112 if unsupported byte was read + */ + BasicJsonType parse_ubjson(const bool strict) + { + const auto res = parse_ubjson_internal(); + if (strict) + { + get_ignore_noop(); + check_eof(true); + } + return res; + } + /*! @brief determine system byte order @@ -751,6 +772,16 @@ class binary_reader } } + /*! + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + */ + BasicJsonType parse_ubjson_internal(const bool get_char = true) + { + return get_ubjson_value(get_char ? get_ignore_noop() : current); + } + /*! @brief get next character from the input @@ -766,6 +797,20 @@ class binary_reader return (current = ia->get_character()); } + /*! + @return character read from the input after ignoring all 'N' entries + */ + int get_ignore_noop() + { + do + { + get(); + } + while (current == 'N'); + + return current; + } + /* @brief read a number from the input @@ -1051,6 +1096,231 @@ class binary_reader return result; } + /*! + @brief reads a UBJSON string + + This function is either called after reading the 'S' byte explicitly + indicating a string, or in case of an object key where the 'S' byte can be + left out. + + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + + @return string + + @throw parse_error.110 if input ended + @throw parse_error.113 if an unexpected byte is read + */ + std::string get_ubjson_string(const bool get_char = true) + { + if (get_char) + { + get(); // TODO: may we ignore N here? + } + + check_eof(); + + switch (current) + { + case 'U': + return get_string(get_number()); + case 'i': + return get_string(get_number()); + case 'I': + return get_string(get_number()); + case 'l': + return get_string(get_number()); + case 'L': + return get_string(get_number()); + default: + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, + "expected a UBJSON string; last byte: 0x" + ss.str())); + } + } + + /*! + @brief determine the type and size for a container + + In the optimized UBJSON format, a type and a size can be provided to allow + for a more compact representation. + + @return pair of the size and the type + */ + std::pair get_ubjson_size_type() + { + std::size_t sz = std::string::npos; + int tc = 0; + + get_ignore_noop(); + + if (current == '$') + { + tc = get(); // must not ignore 'N', because 'N' maybe the type + check_eof(); + + get_ignore_noop(); + if (current != '#') + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, + "expected '#' after UBJSON type information; last byte: 0x" + ss.str())); + } + sz = parse_ubjson_internal(); + } + else if (current == '#') + { + sz = parse_ubjson_internal(); + } + + return std::make_pair(sz, tc); + } + + BasicJsonType get_ubjson_value(const int prefix) + { + switch (prefix) + { + case std::char_traits::eof(): // EOF + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); + + case 'T': // true + return true; + case 'F': // false + return false; + + case 'Z': // null + return nullptr; + + case 'U': + return get_number(); + case 'i': + return get_number(); + case 'I': + return get_number(); + case 'l': + return get_number(); + case 'L': + return get_number(); + case 'd': + return get_number(); + case 'D': + return get_number(); + + case 'C': // char + { + get(); + check_eof(); + if (JSON_UNLIKELY(not(0 <= current and current <= 127))) + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(113, chars_read, + "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + ss.str())); + } + return std::string(1, static_cast(current)); + } + + case 'S': // string + return get_ubjson_string(); + + case '[': // array + return get_ubjson_array(); + + case '{': // object + return get_ubjson_object(); + + default: // anything else + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; + JSON_THROW(parse_error::create(112, chars_read, + "error reading UBJSON; last byte: 0x" + ss.str())); + } + } + + BasicJsonType get_ubjson_array() + { + BasicJsonType result = value_t::array; + const auto size_and_type = get_ubjson_size_type(); + + if (size_and_type.first != std::string::npos) + { + if (size_and_type.second != 0) + { + if (size_and_type.second != 'N') + std::generate_n(std::back_inserter(*result.m_value.array), + size_and_type.first, [this, size_and_type]() + { + return get_ubjson_value(size_and_type.second); + }); + } + else + { + std::generate_n(std::back_inserter(*result.m_value.array), + size_and_type.first, [this]() + { + return parse_ubjson_internal(); + }); + } + } + else + { + while (current != ']') + { + result.push_back(parse_ubjson_internal(false)); + get_ignore_noop(); + } + } + + return result; + } + + BasicJsonType get_ubjson_object() + { + BasicJsonType result = value_t::object; + const auto size_and_type = get_ubjson_size_type(); + + if (size_and_type.first != std::string::npos) + { + if (size_and_type.second != 0) + { + if (size_and_type.second != 'N') + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + size_and_type.first, [this, size_and_type]() + { + auto key = get_ubjson_string(); + auto val = get_ubjson_value(size_and_type.second); + return std::make_pair(std::move(key), std::move(val)); + }); + } + else + { + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + size_and_type.first, [this]() + { + auto key = get_ubjson_string(); + auto val = parse_ubjson_internal(); + return std::make_pair(std::move(key), std::move(val)); + }); + } + } + else + { + while (current != '}') + { + auto key = get_ubjson_string(false); + result[std::move(key)] = parse_ubjson_internal(); + get_ignore_noop(); + } + } + + return result; + } + /*! @brief check if input ended @throw parse_error.110 if input ended diff --git a/develop/detail/parsing/binary_writer.hpp b/develop/detail/parsing/binary_writer.hpp index 68034fc7..a7722d2b 100644 --- a/develop/detail/parsing/binary_writer.hpp +++ b/develop/detail/parsing/binary_writer.hpp @@ -164,23 +164,23 @@ class binary_writer { write_number(static_cast(0x60 + N)); } - else if (N <= 0xFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x78)); write_number(static_cast(N)); } - else if (N <= 0xFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x79)); write_number(static_cast(N)); } - else if (N <= 0xFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x7A)); write_number(static_cast(N)); } // LCOV_EXCL_START - else if (N <= 0xFFFFFFFFFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x7B)); write_number(static_cast(N)); @@ -202,23 +202,23 @@ class binary_writer { write_number(static_cast(0x80 + N)); } - else if (N <= 0xFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x98)); write_number(static_cast(N)); } - else if (N <= 0xFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x99)); write_number(static_cast(N)); } - else if (N <= 0xFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x9A)); write_number(static_cast(N)); } // LCOV_EXCL_START - else if (N <= 0xFFFFFFFFFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0x9B)); write_number(static_cast(N)); @@ -241,23 +241,23 @@ class binary_writer { write_number(static_cast(0xA0 + N)); } - else if (N <= 0xFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0xB8)); write_number(static_cast(N)); } - else if (N <= 0xFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0xB9)); write_number(static_cast(N)); } - else if (N <= 0xFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0xBA)); write_number(static_cast(N)); } // LCOV_EXCL_START - else if (N <= 0xFFFFFFFFFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0xBB)); write_number(static_cast(N)); @@ -425,19 +425,19 @@ class binary_writer // fixstr write_number(static_cast(0xA0 | N)); } - else if (N <= 255) + else if (N <= (std::numeric_limits::max)()) { // str 8 oa->write_character(static_cast(0xD9)); write_number(static_cast(N)); } - else if (N <= 65535) + else if (N <= (std::numeric_limits::max)()) { // str 16 oa->write_character(static_cast(0xDA)); write_number(static_cast(N)); } - else if (N <= 4294967295) + else if (N <= (std::numeric_limits::max)()) { // str 32 oa->write_character(static_cast(0xDB)); @@ -460,13 +460,13 @@ class binary_writer // fixarray write_number(static_cast(0x90 | N)); } - else if (N <= 0xFFFF) + else if (N <= (std::numeric_limits::max)()) { // array 16 oa->write_character(static_cast(0xDC)); write_number(static_cast(N)); } - else if (N <= 0xFFFFFFFF) + else if (N <= (std::numeric_limits::max)()) { // array 32 oa->write_character(static_cast(0xDD)); @@ -490,13 +490,13 @@ class binary_writer // fixmap write_number(static_cast(0x80 | (N & 0xF))); } - else if (N <= 65535) + else if (N <= (std::numeric_limits::max)()) { // map 16 oa->write_character(static_cast(0xDE)); write_number(static_cast(N)); } - else if (N <= 4294967295) + else if (N <= (std::numeric_limits::max)()) { // map 32 oa->write_character(static_cast(0xDF)); @@ -517,6 +517,165 @@ class binary_writer } } + /*! + @param[in] j JSON value to serialize + @param[in] use_count whether to use '#' prefixes (optimized format) + @param[in] use_type whether to use '$' prefixes (optimized format) + @param[in] add_prefix whether prefixes need to be used for this value + */ + void write_ubjson(const BasicJsonType& j, const bool use_count, + const bool use_type, const bool add_prefix = true) + { + switch (j.type()) + { + case value_t::null: + { + if (add_prefix) + { + oa->write_character(static_cast('Z')); + } + break; + } + + case value_t::boolean: + { + if (add_prefix) + oa->write_character(j.m_value.boolean + ? static_cast('T') + : static_cast('F')); + break; + } + + case value_t::number_integer: + { + write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix); + break; + } + + case value_t::number_unsigned: + { + write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix); + break; + } + + case value_t::number_float: + { + write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix); + break; + } + + case value_t::string: + { + if (add_prefix) + { + oa->write_character(static_cast('S')); + } + write_number_with_ubjson_prefix(j.m_value.string->size(), true); + oa->write_characters( + reinterpret_cast(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + if (add_prefix) + { + oa->write_character(static_cast('[')); + } + + bool prefix_required = true; + if (use_type and not j.m_value.array->empty()) + { + assert(use_count); + const char first_prefix = ubjson_prefix(j.front()); + const bool same_prefix = std::all_of(j.begin() + 1, j.end(), + [this, first_prefix](const BasicJsonType & v) + { + return ubjson_prefix(v) == first_prefix; + }); + + if (same_prefix) + { + prefix_required = false; + oa->write_character(static_cast('$')); + oa->write_character(static_cast(first_prefix)); + } + } + + if (use_count) + { + oa->write_character(static_cast('#')); + write_number_with_ubjson_prefix(j.m_value.array->size(), true); + } + + for (const auto& el : *j.m_value.array) + { + write_ubjson(el, use_count, use_type, prefix_required); + } + + if (not use_count) + { + oa->write_character(static_cast(']')); + } + + break; + } + + case value_t::object: + { + if (add_prefix) + { + oa->write_character(static_cast('{')); + } + + bool prefix_required = true; + if (use_type and not j.m_value.object->empty()) + { + assert(use_count); + const char first_prefix = ubjson_prefix(j.front()); + const bool same_prefix = std::all_of(j.begin(), j.end(), + [this, first_prefix](const BasicJsonType & v) + { + return ubjson_prefix(v) == first_prefix; + }); + + if (same_prefix) + { + prefix_required = false; + oa->write_character(static_cast('$')); + oa->write_character(static_cast(first_prefix)); + } + } + + if (use_count) + { + oa->write_character(static_cast('#')); + write_number_with_ubjson_prefix(j.m_value.object->size(), true); + } + + for (const auto& el : *j.m_value.object) + { + write_number_with_ubjson_prefix(el.first.size(), true); + oa->write_characters( + reinterpret_cast(el.first.c_str()), + el.first.size()); + write_ubjson(el.second, use_count, use_type, prefix_required); + } + + if (not use_count) + { + oa->write_character(static_cast('}')); + } + + break; + } + + default: + break; + } + } + private: /* @brief write a number to output input @@ -544,6 +703,195 @@ class binary_writer oa->write_characters(vec.data(), sizeof(NumberType)); } + template + void write_number_with_ubjson_prefix(const NumberType n, + const bool add_prefix) + { + if (std::is_floating_point::value) + { + if (add_prefix) + { + oa->write_character(static_cast('D')); // float64 + } + write_number(n); + } + else if (std::is_unsigned::value) + { + if (n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(static_cast('i')); // uint8 + } + write_number(static_cast(n)); + } + else if (n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(static_cast('U')); // uint8 + } + write_number(static_cast(n)); + } + else if (n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(static_cast('I')); // int16 + } + write_number(static_cast(n)); + } + else if (n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(static_cast('l')); // int32 + } + write_number(static_cast(n)); + } + else if (n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(static_cast('L')); // int64 + } + write_number(static_cast(n)); + } + else + { + // TODO: replace by exception + assert(false); + } + } + else + { + if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(static_cast('i')); // int8 + } + write_number(static_cast(n)); + } + else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(static_cast('U')); // uint8 + } + write_number(static_cast(n)); + } + else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(static_cast('I')); // int16 + } + write_number(static_cast(n)); + } + else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(static_cast('l')); // int32 + } + write_number(static_cast(n)); + } + else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(static_cast('L')); // int64 + } + write_number(static_cast(n)); + } + else + { + // TODO: replace by exception + assert(false); + } + } + } + + char ubjson_prefix(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::null: + return 'Z'; + + case value_t::boolean: + return j.m_value.boolean ? 'T' : 'F'; + + case value_t::number_integer: + { + if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'i'; + } + else if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'U'; + } + else if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'I'; + } + else if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'l'; + } + else if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'L'; + } + break; + } + + case value_t::number_unsigned: + { + if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + return 'i'; + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + return 'U'; + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + return 'I'; + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + return 'l'; + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + return 'L'; + } + break; + } + + case value_t::number_float: + return 'D'; + + case value_t::string: + return 'S'; + + case value_t::array: + return '['; + + case value_t::object: + return '{'; + + default: + break; + } + + return '\0'; + } + private: /// whether we can assume little endianess const bool is_little_endian = binary_reader::little_endianess(); diff --git a/develop/json.hpp b/develop/json.hpp index f4c139e4..6982a3f4 100644 --- a/develop/json.hpp +++ b/develop/json.hpp @@ -6630,6 +6630,26 @@ class basic_json binary_writer(o).write_msgpack(j); } + static std::vector to_ubjson(const basic_json& j, + const bool use_size = false, const bool use_type = false) + { + std::vector result; + to_ubjson(j, result, use_size, use_type); + return result; + } + + static void to_ubjson(const basic_json& j, detail::output_adapter o, + const bool use_size = false, const bool use_type = false) + { + binary_writer(o).write_ubjson(j, use_size, use_type); + } + + static void to_ubjson(const basic_json& j, detail::output_adapter o, + const bool use_size = false, const bool use_type = false) + { + binary_writer(o).write_ubjson(j, use_size, use_type); + } + /*! @brief create a JSON value from an input in CBOR format @@ -6824,6 +6844,19 @@ class basic_json return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_msgpack(strict); } + static basic_json from_ubjson(detail::input_adapter i, + const bool strict = true) + { + return binary_reader(i).parse_ubjson(strict); + } + + template::value, int> = 0> + static basic_json from_ubjson(A1 && a1, A2 && a2, const bool strict = true) + { + return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_ubjson(strict); + } + /// @} ////////////////////////// diff --git a/src/json.hpp b/src/json.hpp index 09253359..09da4d16 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -6409,7 +6409,7 @@ class binary_writer write_number(static_cast(N)); } // LCOV_EXCL_START - else if (N <= (std::numeric_limits::max)()) + else if (N <= (std::numeric_limits::max)()) { oa->write_character(static_cast(0xBB)); write_number(static_cast(N)); From 541b46132d0078e0ce64e736a2cce70ef65e2db1 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 14 Jan 2018 10:34:43 +0100 Subject: [PATCH 051/106] :recycle: adjusted code to split headers --- develop/json.hpp | 78 ++++++++++++++++++++++++++++++++++++++++++++++++ src/json.hpp | 1 - 2 files changed, 78 insertions(+), 1 deletion(-) diff --git a/develop/json.hpp b/develop/json.hpp index f4c139e4..77888236 100644 --- a/develop/json.hpp +++ b/develop/json.hpp @@ -7397,6 +7397,7 @@ class basic_json diff for two JSON values.,diff} @sa @ref patch -- apply a JSON patch + @sa @ref merge_patch -- apply a JSON Merge Patch @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) @@ -7528,6 +7529,83 @@ class basic_json } /// @} + + //////////////////////////////// + // JSON Merge Patch functions // + //////////////////////////////// + + /// @name JSON Merge Patch functions + /// @{ + + /*! + @brief applies a JSON Merge Patch + + The merge patch format is primarily intended for use with the HTTP PATCH + method as a means of describing a set of modifications to a target + resource's content. This function applies a merge patch to the current + JSON value. + + The function implements the following algorithm from Section 2 of + [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396): + + ``` + define MergePatch(Target, Patch): + if Patch is an Object: + if Target is not an Object: + Target = {} // Ignore the contents and set it to an empty Object + for each Name/Value pair in Patch: + if Value is null: + if Name exists in Target: + remove the Name/Value pair from Target + else: + Target[Name] = MergePatch(Target[Name], Value) + return Target + else: + return Patch + ``` + + Thereby, `Target` is the current object; that is, the patch is applied to + the current value. + + @param[in] patch the patch to apply + + @complexity Linear in the lengths of @a patch. + + @liveexample{The following code shows how a JSON Merge Patch is applied to + a JSON document.,merge_patch} + + @sa @ref patch -- apply a JSON patch + @sa [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396) + + @since version 3.0.0 + */ + void merge_patch(const basic_json& patch) + { + if (patch.is_object()) + { + if (not is_object()) + { + *this = object(); + } + for (auto it = patch.begin(); it != patch.end(); ++it) + { + if (it.value().is_null()) + { + erase(it.key()); + } + else + { + operator[](it.key()).merge_patch(it.value()); + } + } + } + else + { + *this = patch; + } + } + + /// @} }; ////////////////// diff --git a/src/json.hpp b/src/json.hpp index 86398099..2abea0fd 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -14894,7 +14894,6 @@ class basic_json } /// @} - }; ////////////////// From fea5f3792be47b5db65fe473f22f3acdf36b7914 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 14 Jan 2018 10:41:59 +0100 Subject: [PATCH 052/106] :memo: it's 2018 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d64bbe1d..73545722 100644 --- a/README.md +++ b/README.md @@ -737,7 +737,7 @@ json j_from_msgpack = json::from_msgpack(v_msgpack); ## Supported compilers -Though it's 2017 already, the support for C++11 is still a bit sparse. Currently, the following compilers are known to work: +Though it's 2018 already, the support for C++11 is still a bit sparse. Currently, the following compilers are known to work: - GCC 4.9 - 7.2 (and possibly later) - Clang 3.4 - 5.0 (and possibly later) @@ -795,7 +795,7 @@ The following compilers are currently used in continuous integration at [Travis] The class is licensed under the [MIT License](http://opensource.org/licenses/MIT): -Copyright © 2013-2017 [Niels Lohmann](http://nlohmann.me) +Copyright © 2013-2018 [Niels Lohmann](http://nlohmann.me) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: From 411c16cbb290259fa23b493e7f7dcdc67e182ea3 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 14 Jan 2018 13:08:28 +0100 Subject: [PATCH 053/106] :memo: overworked documentation wrt. amalgamation #906 --- .github/CONTRIBUTING.md | 8 +++++--- .github/PULL_REQUEST_TEMPLATE.md | 3 +++ .travis.yml | 5 +++++ Makefile | 4 ++-- README.md | 23 +++++++++++++++-------- 5 files changed, 30 insertions(+), 13 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 538ed522..85ff9b50 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -8,7 +8,7 @@ To make it as easy as possible for you to contribute and for me to keep an overv ## Private reports -Usually, all issues are tracked publicly on [Github](https://github.com/nlohmann/json/issues). If you want to make a private report (e.g., for a vulnerability or to attach an example that is not meant to be publisheed), please send an email to . +Usually, all issues are tracked publicly on [GitHub](https://github.com/nlohmann/json/issues). If you want to make a private report (e.g., for a vulnerability or to attach an example that is not meant to be published), please send an email to . ## Prerequisites @@ -26,9 +26,11 @@ Please stick to the [issue template](https://github.com/nlohmann/json/blob/devel ## Files to change -There are currently two files which need to be edited: +:exclamation: Before you make any changes, note the single-header file [`src/json.hpp`](https://github.com/nlohmann/json/blob/develop/src/json.hpp) is **generated** from the source files in the [`develop` directory](https://github.com/nlohmann/json/tree/develop/develop). Please **do not** edit file `src/json.hpp` directly, but change the `develop` sources and regenerate file `src/json.hpp` by executing `make amalgamate`. -1. [`src/json.hpp`](https://github.com/nlohmann/json/blob/master/src/json.hpp) +To make changes, you need to edit the following files: + +1. [`develop/*`](https://github.com/nlohmann/json/tree/develop/develop) - These files are the sources of the library. Before testing or creating a pull request, execute `make amalgamate` to regenerate `src/json.hpp`. 2. [`test/src/unit-*.cpp`](https://github.com/nlohmann/json/tree/develop/test/src) - These files contain the [Catch](https://github.com/philsquared/Catch) unit tests which currently cover [100 %](https://coveralls.io/github/nlohmann/json) of the library's code. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 993b9001..5863d0b5 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -4,9 +4,12 @@ ## Pull request checklist +Read the [Contribution Guidelines](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md) for detailed information. + - [ ] Changes are described in the pull request, or an [existing issue is referenced](https://github.com/nlohmann/json/issues). - [ ] The test suite [compiles and runs](https://github.com/nlohmann/json/blob/develop/README.md#execute-unit-tests) without error. - [ ] [Code coverage](https://coveralls.io/github/nlohmann/json) is 100%. Test cases can be added by editing the [test suite](https://github.com/nlohmann/json/tree/develop/test/src). +- [ ] The source code is amalgamated; that is, after making changes to the sources in the `develop` directory, run `make amalgamate` to create the single-header file `src/json.hpp`. The whole process is described [here](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md#files-to-change). ## Please don't diff --git a/.travis.yml b/.travis.yml index 6391c088..0f7e9b21 100644 --- a/.travis.yml +++ b/.travis.yml @@ -278,6 +278,11 @@ script: - ctest -C Release -V -j - cd .. + # check if header was correctly amalgamated + - if [ `which python` ]; then + make check-amalgamation ; + fi + # check if homebrew works (only checks develop branch) - if [ `which brew` ]; then brew update ; diff --git a/Makefile b/Makefile index eb179156..6756182e 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,7 @@ all: @echo "amalgamate - amalgamate file src/json.hpp from the develop sources" @echo "ChangeLog.md - generate ChangeLog file" @echo "check - compile and execute test suite" - @echo "check-amalagamation - check whether sources have been amalgamated" + @echo "check-amalgamation - check whether sources have been amalgamated" @echo "check-fast - compile and execute test suite (skip long-running tests)" @echo "clean - remove built files" @echo "coverage - create coverage information with lcov" @@ -258,7 +258,7 @@ src/json.hpp: $(SRCS) $(MAKE) pretty # check if src/json.hpp has been amalgamated from the develop sources -check-amalagamation: +check-amalgamation: @mv src/json.hpp src/json.hpp~ @$(MAKE) amalgamate @diff src/json.hpp src/json.hpp~ || (echo "===================================================================\n Amalgamation required! Please read the contribution guidelines\n in file .github/CONTRIBUTING.md.\n===================================================================" ; mv src/json.hpp~ src/json.hpp ; false) diff --git a/README.md b/README.md index 73545722..d5935755 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ [![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/Op57X0V7fTf2tdwl) [![Documentation](https://img.shields.io/badge/docs-doxygen-blue.svg)](http://nlohmann.github.io/json) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/nlohmann/json/master/LICENSE.MIT) -[![Github Releases](https://img.shields.io/github/release/nlohmann/json.svg)](https://github.com/nlohmann/json/releases) -[![Github Issues](https://img.shields.io/github/issues/nlohmann/json.svg)](http://github.com/nlohmann/json/issues) +[![GitHub Releases](https://img.shields.io/github/release/nlohmann/json.svg)](https://github.com/nlohmann/json/releases) +[![GitHub Issues](https://img.shields.io/github/issues/nlohmann/json.svg)](http://github.com/nlohmann/json/issues) [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/nlohmann/json.svg)](http://isitmaintained.com/project/nlohmann/json "Average time to resolve an issue") [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/289/badge)](https://bestpractices.coreinfrastructure.org/projects/289) @@ -65,14 +65,20 @@ using json = nlohmann::json; to the files you want to use JSON objects. That's it. Do not forget to set the necessary switches to enable C++11 (e.g., `-std=c++11` for GCC and Clang). +You can further use file [`develop/json_fwd.hpp`](https://github.com/nlohmann/json/blob/develop/develop/json_fwd.hpp) for forward-declarations. + +### Package Managers + :beer: If you are using OS X and [Homebrew](http://brew.sh), just type `brew tap nlohmann/json` and `brew install nlohmann_json` and you're set. If you want the bleeding edge rather than the latest release, use `brew install nlohmann_json --HEAD`. -If you are using the [Meson Build System](http://mesonbuild.com), then you can wrap this repo as a subproject. +If you are using the [Meson Build System](http://mesonbuild.com), then you can wrap this repository as a subproject. If you are using [Conan](https://www.conan.io/) to manage your dependencies, merely add `jsonformoderncpp/x.y.z@vthiery/stable` to your `conanfile.py`'s requires, where `x.y.z` is the release version you want to use. Please file issues [here](https://github.com/vthiery/conan-jsonformoderncpp/issues) if you experience problems with the packages. If you are using [hunter](https://github.com/ruslo/hunter/) on your project for external dependencies, then you can use the [nlohmann_json package](https://docs.hunter.sh/en/latest/packages/pkg/nlohmann_json.html). Please see the hunter project for any issues regarding the packaging. +If you are using [Buckaroo](https://buckaroo.pm), you can install this library's module with `buckaroo install nlohmann/json`. Please file issues [here](https://github.com/LoopPerfect/buckaroo-recipes/issues/new?title=nlohmann/nlohmann/json). + If you are using [vcpkg](https://github.com/Microsoft/vcpkg/) on your project for external dependencies, then you can use the [nlohmann-json package](https://github.com/Microsoft/vcpkg/tree/master/ports/nlohmann-json). Please see the vcpkg project for any issues regarding the packaging. @@ -809,7 +815,7 @@ The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed und ## Contact -If you have questions regarding the library, I would like to invite you to [open an issue at Github](https://github.com/nlohmann/json/issues/new). Please describe your request, problem, or question as detailed as possible, and also mention the version of the library you are using as well as the version of your compiler and operating system. Opening an issue at Github allows other users and contributors to this library to collaborate. For instance, I have little experience with MSVC, and most issues in this regard have been solved by a growing community. If you have a look at the [closed issues](https://github.com/nlohmann/json/issues?q=is%3Aissue+is%3Aclosed), you will see that we react quite timely in most cases. +If you have questions regarding the library, I would like to invite you to [open an issue at GitHub](https://github.com/nlohmann/json/issues/new). Please describe your request, problem, or question as detailed as possible, and also mention the version of the library you are using as well as the version of your compiler and operating system. Opening an issue at GitHub allows other users and contributors to this library to collaborate. For instance, I have little experience with MSVC, and most issues in this regard have been solved by a growing community. If you have a look at the [closed issues](https://github.com/nlohmann/json/issues?q=is%3Aissue+is%3Aclosed), you will see that we react quite timely in most cases. Only if your request would contain confidential information, please [send me an email](mailto:mail@nlohmann.me). For encrypted messages, please use [this key](https://keybase.io/nlohmann/pgp_keys.asc). @@ -847,7 +853,7 @@ I deeply appreciate the help of the following people. - [Corbin Hughes](https://github.com/nibroc) fixed some typos in the contribution guidelines. - [twelsby](https://github.com/twelsby) fixed the array subscript operator, an issue that failed the MSVC build, and floating-point parsing/dumping. He further added support for unsigned integer numbers and implemented better roundtrip support for parsed numbers. - [Volker Diels-Grabsch](https://github.com/vog) fixed a link in the README file. -- [msm-](https://github.com/msm-) added support for american fuzzy lop. +- [msm-](https://github.com/msm-) added support for American Fuzzy Lop. - [Annihil](https://github.com/Annihil) fixed an example in the README file. - [Themercee](https://github.com/Themercee) noted a wrong URL in the README file. - [Lv Zheng](https://github.com/lv-zheng) fixed a namespace issue with `int64_t` and `uint64_t`. @@ -893,7 +899,7 @@ I deeply appreciate the help of the following people. - [Vincent Thiery](https://github.com/vthiery) maintains a package for the Conan package manager. - [Steffen](https://github.com/koemeet) fixed a potential issue with MSVC and `std::min`. - [Mike Tzou](https://github.com/Chocobo1) fixed some typos. -- [amrcode](https://github.com/amrcode) noted a missleading documentation about comparison of floats. +- [amrcode](https://github.com/amrcode) noted a misleading documentation about comparison of floats. - [Oleg Endo](https://github.com/olegendo) reduced the memory consumption by replacing `` with ``. - [dan-42](https://github.com/dan-42) cleaned up the CMake files to simplify including/reusing of the library. - [Nikita Ofitserov](https://github.com/himikof) allowed for moving values from initializer lists. @@ -910,7 +916,7 @@ I deeply appreciate the help of the following people. - [Nate Vargas](https://github.com/eld00d) added a Doxygen tag file. - [pvleuven](https://github.com/pvleuven) helped fixing a warning in ICC. - [Pavel](https://github.com/crea7or) helped fixing some warnings in MSVC. -- [Jamie Seward](https://github.com/jseward) avoided unneccessary string copies in `find()` and `count()`. +- [Jamie Seward](https://github.com/jseward) avoided unnecessary string copies in `find()` and `count()`. - [Mitja](https://github.com/Itja) fixed some typos. - [Jorrit Wronski](https://github.com/jowr) updated the Hunter package links. - [Matthias Möller](https://github.com/TinyTinni) added a `.natvis` for the MSVC debug view. @@ -925,6 +931,7 @@ Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I The library itself contains of a single header file licensed under the MIT license. However, it is built, tested, documented, and whatnot using a lot of third-party tools and services. Thanks a lot! +- [**amalgamate.py - Amalgamate C source and header files**](https://github.com/edlund/amalgamate) to create a single header file - [**American fuzzy lop**](http://lcamtuf.coredump.cx/afl/) for fuzz testing - [**AppVeyor**](https://www.appveyor.com) for [continuous integration](https://ci.appveyor.com/project/nlohmann/json) on Windows - [**Artistic Style**](http://astyle.sourceforge.net) for automatic source code identation @@ -939,7 +946,7 @@ The library itself contains of a single header file licensed under the MIT licen - [**cxxopts**](https://github.com/jarro2783/cxxopts) to let benchpress parse command-line parameters - [**Doxygen**](http://www.stack.nl/~dimitri/doxygen/) to generate [documentation](https://nlohmann.github.io/json/) - [**git-update-ghpages**](https://github.com/rstacruz/git-update-ghpages) to upload the documentation to gh-pages -- [**Github Changelog Generator**](https://github.com/skywinder/github-changelog-generator) to generate the [ChangeLog](https://github.com/nlohmann/json/blob/develop/ChangeLog.md) +- [**GitHub Changelog Generator**](https://github.com/skywinder/github-changelog-generator) to generate the [ChangeLog](https://github.com/nlohmann/json/blob/develop/ChangeLog.md) - [**libFuzzer**](http://llvm.org/docs/LibFuzzer.html) to implement fuzz testing for OSS-Fuzz - [**OSS-Fuzz**](https://github.com/google/oss-fuzz) for continuous fuzz testing of the library - [**Probot**](https://probot.github.io) for automating maintainer tasks such as closing stale issues, requesting missing information, or detecting toxic comments. From f85f4967feb06173d52460ddc596b6f91b53e7b3 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 14 Jan 2018 17:22:06 +0100 Subject: [PATCH 054/106] :white_check_mark: improved test coverage --- .travis.yml | 5 - develop/detail/exceptions.hpp | 1 + develop/detail/parsing/binary_reader.hpp | 9 +- develop/detail/parsing/binary_writer.hpp | 8 +- src/json.hpp | 18 +- test/src/unit-ubjson.cpp | 409 ++++++++++++++++------- 6 files changed, 298 insertions(+), 152 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0f7e9b21..6391c088 100644 --- a/.travis.yml +++ b/.travis.yml @@ -278,11 +278,6 @@ script: - ctest -C Release -V -j - cd .. - # check if header was correctly amalgamated - - if [ `which python` ]; then - make check-amalgamation ; - fi - # check if homebrew works (only checks develop branch) - if [ `which brew` ]; then brew update ; diff --git a/develop/detail/exceptions.hpp b/develop/detail/exceptions.hpp index 8eee702a..f9d89dad 100644 --- a/develop/detail/exceptions.hpp +++ b/develop/detail/exceptions.hpp @@ -263,6 +263,7 @@ json.exception.out_of_range.403 | key 'foo' not found | The provided key was not json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. +json.exception.out_of_range.407 | number overflow serializing '9223372036854775808' | UBJSON only supports integers numbers up to 9223372036854775807. | @liveexample{The following code shows how an `out_of_range` exception can be caught.,out_of_range} diff --git a/develop/detail/parsing/binary_reader.hpp b/develop/detail/parsing/binary_reader.hpp index 1ba961c9..174528c5 100644 --- a/develop/detail/parsing/binary_reader.hpp +++ b/develop/detail/parsing/binary_reader.hpp @@ -1213,7 +1213,7 @@ class binary_reader { get(); check_eof(); - if (JSON_UNLIKELY(not(0 <= current and current <= 127))) + if (JSON_UNLIKELY(current > 127)) { std::stringstream ss; ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; @@ -1286,10 +1286,9 @@ class binary_reader { if (size_and_type.second != 0) { - if (size_and_type.second != 'N') - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - size_and_type.first, [this, size_and_type]() + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + size_and_type.first, [this, size_and_type]() { auto key = get_ubjson_string(); auto val = get_ubjson_value(size_and_type.second); diff --git a/develop/detail/parsing/binary_writer.hpp b/develop/detail/parsing/binary_writer.hpp index a7722d2b..1d2cf601 100644 --- a/develop/detail/parsing/binary_writer.hpp +++ b/develop/detail/parsing/binary_writer.hpp @@ -759,8 +759,7 @@ class binary_writer } else { - // TODO: replace by exception - assert(false); + JSON_THROW(out_of_range::create(407, "number overflow serializing " + std::to_string(n))); } } else @@ -805,11 +804,12 @@ class binary_writer } write_number(static_cast(n)); } + // LCOV_EXCL_START else { - // TODO: replace by exception - assert(false); + JSON_THROW(out_of_range::create(407, "number overflow serializing " + std::to_string(n))); } + // LCOV_EXCL_STOP } } diff --git a/src/json.hpp b/src/json.hpp index 09da4d16..9644eed6 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -715,6 +715,7 @@ json.exception.out_of_range.403 | key 'foo' not found | The provided key was not json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. +json.exception.out_of_range.407 | number overflow serializing '9223372036854775808' | UBJSON only supports integers numbers up to 9223372036854775807. | @liveexample{The following code shows how an `out_of_range` exception can be caught.,out_of_range} @@ -6001,7 +6002,7 @@ class binary_reader { get(); check_eof(); - if (JSON_UNLIKELY(not(0 <= current and current <= 127))) + if (JSON_UNLIKELY(current > 127)) { std::stringstream ss; ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; @@ -6074,10 +6075,9 @@ class binary_reader { if (size_and_type.second != 0) { - if (size_and_type.second != 'N') - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - size_and_type.first, [this, size_and_type]() + std::generate_n(std::inserter(*result.m_value.object, + result.m_value.object->end()), + size_and_type.first, [this, size_and_type]() { auto key = get_ubjson_string(); auto val = get_ubjson_value(size_and_type.second); @@ -6911,8 +6911,7 @@ class binary_writer } else { - // TODO: replace by exception - assert(false); + JSON_THROW(out_of_range::create(407, "number overflow serializing " + std::to_string(n))); } } else @@ -6957,11 +6956,12 @@ class binary_writer } write_number(static_cast(n)); } + // LCOV_EXCL_START else { - // TODO: replace by exception - assert(false); + JSON_THROW(out_of_range::create(407, "number overflow serializing " + std::to_string(n))); } + // LCOV_EXCL_STOP } } diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index 38912761..d7b7cde1 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -1172,96 +1172,291 @@ TEST_CASE("UBJSON") "[json.exception.parse_error.110] parse error at 1: unexpected end of input"); } - SECTION("too short byte vector") - { - } - - SECTION("unsupported bytes") - { - SECTION("concrete examples") - { - CHECK_THROWS_AS(json::from_cbor(std::vector({0x1c})), json::parse_error&); - CHECK_THROWS_WITH(json::from_cbor(std::vector({0x1c})), - "[json.exception.parse_error.112] parse error at 1: error reading CBOR; last byte: 0x1C"); - CHECK_THROWS_AS(json::from_cbor(std::vector({0xf8})), json::parse_error&); - CHECK_THROWS_WITH(json::from_cbor(std::vector({0xf8})), - "[json.exception.parse_error.112] parse error at 1: error reading CBOR; last byte: 0xF8"); - } - - SECTION("all unsupported bytes") - { - for (auto byte : - { - // ? - 0x1c, 0x1d, 0x1e, 0x1f, - // ? - 0x3c, 0x3d, 0x3e, 0x3f, - // byte strings - 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, - // byte strings - 0x58, 0x59, 0x5a, 0x5b, - // ? - 0x5c, 0x5d, 0x5e, - // byte string - 0x5f, - // ? - 0x7c, 0x7d, 0x7e, - // ? - 0x9c, 0x9d, 0x9e, - // ? - 0xbc, 0xbd, 0xbe, - // date/time - 0xc0, 0xc1, - // bignum - 0xc2, 0xc3, - // fraction - 0xc4, - // bigfloat - 0xc5, - // tagged item - 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, - // expected conversion - 0xd5, 0xd6, 0xd7, - // more tagged items - 0xd8, 0xd9, 0xda, 0xdb, - // ? - 0xdc, 0xdd, 0xde, 0xdf, - // (simple value) - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, - // undefined - 0xf7, - // simple value - 0xf8 - }) - { - CHECK_THROWS_AS(json::from_cbor(std::vector({static_cast(byte)})), json::parse_error&); - } - } - } - - SECTION("invalid string in map") - { - CHECK_THROWS_AS(json::from_cbor(std::vector({0xa1, 0xff, 0x01})), json::parse_error&); - CHECK_THROWS_WITH(json::from_cbor(std::vector({0xa1, 0xff, 0x01})), - "[json.exception.parse_error.113] parse error at 2: expected a CBOR string; last byte: 0xFF"); - } - SECTION("strict mode") { - std::vector vec = {0xf6, 0xf6}; + std::vector vec = {'Z', 'Z'}; SECTION("non-strict mode") { - const auto result = json::from_cbor(vec, false); + const auto result = json::from_ubjson(vec, false); CHECK(result == json()); } SECTION("strict mode") { - CHECK_THROWS_AS(json::from_cbor(vec), json::parse_error&); - CHECK_THROWS_WITH(json::from_cbor(vec), + CHECK_THROWS_AS(json::from_ubjson(vec), json::parse_error&); + CHECK_THROWS_WITH(json::from_ubjson(vec), "[json.exception.parse_error.110] parse error at 2: expected end of input"); } } + + SECTION("number out of range") + { + // larger than max int64 + json j = 9223372036854775808llu; + CHECK_THROWS_AS(json::to_ubjson(j), json::out_of_range); + CHECK_THROWS_WITH(json::to_ubjson(j), "[json.exception.out_of_range.407] number overflow serializing 9223372036854775808"); + } + } + + SECTION("parsing values") + { + SECTION("strings") + { + // create a single-character string for all number types + std::vector s_i = {'S', 'i', 1, 'a'}; + std::vector s_U = {'S', 'U', 1, 'a'}; + std::vector s_I = {'S', 'I', 0, 1, 'a'}; + std::vector s_l = {'S', 'l', 0, 0, 0, 1, 'a'}; + std::vector s_L = {'S', 'L', 0, 0, 0, 0, 0, 0, 0, 1, 'a'}; + + // check if string is parsed correctly to "a" + CHECK(json::from_ubjson(s_i) == "a"); + CHECK(json::from_ubjson(s_U) == "a"); + CHECK(json::from_ubjson(s_I) == "a"); + CHECK(json::from_ubjson(s_l) == "a"); + CHECK(json::from_ubjson(s_L) == "a"); + + // roundtrip: output should be optimized + CHECK(json::to_ubjson(json::from_ubjson(s_i)) == s_i); + CHECK(json::to_ubjson(json::from_ubjson(s_U)) == s_i); + CHECK(json::to_ubjson(json::from_ubjson(s_I)) == s_i); + CHECK(json::to_ubjson(json::from_ubjson(s_l)) == s_i); + CHECK(json::to_ubjson(json::from_ubjson(s_L)) == s_i); + } + + SECTION("number") + { + SECTION("float") + { + // float32 + std::vector v_d = {'d', 0x40, 0x49, 0x0f, 0xd0}; + CHECK(json::from_ubjson(v_d) == 3.14159f); + + // float64 + std::vector v_D = {'D', 0x40, 0x09, 0x21, 0xf9, 0xf0, 0x1b, 0x86, 0x6e}; + CHECK(json::from_ubjson(v_D) == 3.14159); + + // float32 is serialized as float64 as the library does not support float32 + CHECK(json::to_ubjson(json::from_ubjson(v_d)) == json::to_ubjson(3.14159f)); + } + } + + SECTION("array") + { + SECTION("optimized version (length only)") + { + // create vector with two elements of the same type + std::vector v_T = {'[', '#', 'i', 2, 'T', 'T'}; + std::vector v_F = {'[', '#', 'i', 2, 'F', 'F'}; + std::vector v_Z = {'[', '#', 'i', 2, 'Z', 'Z'}; + std::vector v_i = {'[', '#', 'i', 2, 'i', 0x7F, 'i', 0x7F}; + std::vector v_U = {'[', '#', 'i', 2, 'U', 0xFF, 'U', 0xFF}; + std::vector v_I = {'[', '#', 'i', 2, 'I', 0x7F, 0xFF, 'I', 0x7F, 0xFF}; + std::vector v_l = {'[', '#', 'i', 2, 'l', 0x7F, 0xFF, 0xFF, 0xFF, 'l', 0x7F, 0xFF, 0xFF, 0xFF}; + std::vector v_L = {'[', '#', 'i', 2, 'L', 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 'L', 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + std::vector v_D = {'[', '#', 'i', 2, 'D', 0x40, 0x09, 0x21, 0xfb, 0x4d, 0x12, 0xd8, 0x4a, 'D', 0x40, 0x09, 0x21, 0xfb, 0x4d, 0x12, 0xd8, 0x4a}; + std::vector v_S = {'[', '#', 'i', 2, 'S', 'i', 1, 'a', 'S', 'i', 1, 'a'}; + std::vector v_C = {'[', '#', 'i', 2, 'C', 'a', 'C', 'a'}; + + // check if vector is parsed correctly + CHECK(json::from_ubjson(v_T) == json({true, true})); + CHECK(json::from_ubjson(v_F) == json({false, false})); + CHECK(json::from_ubjson(v_Z) == json({nullptr, nullptr})); + CHECK(json::from_ubjson(v_i) == json({127, 127})); + CHECK(json::from_ubjson(v_U) == json({255, 255})); + CHECK(json::from_ubjson(v_I) == json({32767, 32767})); + CHECK(json::from_ubjson(v_l) == json({2147483647, 2147483647})); + CHECK(json::from_ubjson(v_L) == json({9223372036854775807, 9223372036854775807})); + CHECK(json::from_ubjson(v_D) == json({3.1415926, 3.1415926})); + CHECK(json::from_ubjson(v_S) == json({"a", "a"})); + CHECK(json::from_ubjson(v_C) == json({"a", "a"})); + + // roundtrip: output should be optimized + CHECK(json::to_ubjson(json::from_ubjson(v_T), true) == v_T); + CHECK(json::to_ubjson(json::from_ubjson(v_F), true) == v_F); + CHECK(json::to_ubjson(json::from_ubjson(v_Z), true) == v_Z); + CHECK(json::to_ubjson(json::from_ubjson(v_i), true) == v_i); + CHECK(json::to_ubjson(json::from_ubjson(v_U), true) == v_U); + CHECK(json::to_ubjson(json::from_ubjson(v_I), true) == v_I); + CHECK(json::to_ubjson(json::from_ubjson(v_l), true) == v_l); + CHECK(json::to_ubjson(json::from_ubjson(v_L), true) == v_L); + CHECK(json::to_ubjson(json::from_ubjson(v_D), true) == v_D); + CHECK(json::to_ubjson(json::from_ubjson(v_S), true) == v_S); + CHECK(json::to_ubjson(json::from_ubjson(v_C), true) == v_S); // char is serialized to string + } + + SECTION("optimized version (type and length)") + { + // create vector with two elements of the same type + std::vector v_N = {'[', '$', 'N', '#', 'i', 2}; + std::vector v_T = {'[', '$', 'T', '#', 'i', 2}; + std::vector v_F = {'[', '$', 'F', '#', 'i', 2}; + std::vector v_Z = {'[', '$', 'Z', '#', 'i', 2}; + std::vector v_i = {'[', '$', 'i', '#', 'i', 2, 0x7F, 0x7F}; + std::vector v_U = {'[', '$', 'U', '#', 'i', 2, 0xFF, 0xFF}; + std::vector v_I = {'[', '$', 'I', '#', 'i', 2, 0x7F, 0xFF, 0x7F, 0xFF}; + std::vector v_l = {'[', '$', 'l', '#', 'i', 2, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF}; + std::vector v_L = {'[', '$', 'L', '#', 'i', 2, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + std::vector v_D = {'[', '$', 'D', '#', 'i', 2, 0x40, 0x09, 0x21, 0xfb, 0x4d, 0x12, 0xd8, 0x4a, 0x40, 0x09, 0x21, 0xfb, 0x4d, 0x12, 0xd8, 0x4a}; + std::vector v_S = {'[', '$', 'S', '#', 'i', 2, 'i', 1, 'a', 'i', 1, 'a'}; + std::vector v_C = {'[', '$', 'C', '#', 'i', 2, 'a', 'a'}; + + // check if vector is parsed correctly + CHECK(json::from_ubjson(v_N) == json::array()); + CHECK(json::from_ubjson(v_T) == json({true, true})); + CHECK(json::from_ubjson(v_F) == json({false, false})); + CHECK(json::from_ubjson(v_Z) == json({nullptr, nullptr})); + CHECK(json::from_ubjson(v_i) == json({127, 127})); + CHECK(json::from_ubjson(v_U) == json({255, 255})); + CHECK(json::from_ubjson(v_I) == json({32767, 32767})); + CHECK(json::from_ubjson(v_l) == json({2147483647, 2147483647})); + CHECK(json::from_ubjson(v_L) == json({9223372036854775807, 9223372036854775807})); + CHECK(json::from_ubjson(v_D) == json({3.1415926, 3.1415926})); + CHECK(json::from_ubjson(v_S) == json({"a", "a"})); + CHECK(json::from_ubjson(v_C) == json({"a", "a"})); + + // roundtrip: output should be optimized + std::vector v_empty = {'[', '#', 'i', 0}; + CHECK(json::to_ubjson(json::from_ubjson(v_N), true, true) == v_empty); + CHECK(json::to_ubjson(json::from_ubjson(v_T), true, true) == v_T); + CHECK(json::to_ubjson(json::from_ubjson(v_F), true, true) == v_F); + CHECK(json::to_ubjson(json::from_ubjson(v_Z), true, true) == v_Z); + CHECK(json::to_ubjson(json::from_ubjson(v_i), true, true) == v_i); + CHECK(json::to_ubjson(json::from_ubjson(v_U), true, true) == v_U); + CHECK(json::to_ubjson(json::from_ubjson(v_I), true, true) == v_I); + CHECK(json::to_ubjson(json::from_ubjson(v_l), true, true) == v_l); + CHECK(json::to_ubjson(json::from_ubjson(v_L), true, true) == v_L); + CHECK(json::to_ubjson(json::from_ubjson(v_D), true, true) == v_D); + CHECK(json::to_ubjson(json::from_ubjson(v_S), true, true) == v_S); + CHECK(json::to_ubjson(json::from_ubjson(v_C), true, true) == v_S); // char is serialized to string + } + } + } + + SECTION("parse errors") + { + SECTION("char") + { + SECTION("eof after C byte") + { + std::vector v = {'C'}; + CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error); + CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.110] parse error at 2: unexpected end of input"); + } + + SECTION("byte out of range") + { + std::vector v = {'C', 130}; + CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error); + CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.113] parse error at 2: byte after 'C' must be in range 0x00..0x7F; last byte: 0x82"); + } + } + + SECTION("strings") + { + SECTION("eof after S byte") + { + std::vector v = {'S'}; + CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error); + CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.110] parse error at 2: unexpected end of input"); + } + + SECTION("invalid byte") + { + std::vector v = {'S', '1', 'a'}; + CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error); + CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.113] parse error at 2: expected a UBJSON string; last byte: 0x31"); + } + } + + SECTION("array") + { + SECTION("optimized array: no size following type") + { + std::vector v = {'[', '$', 'i', 2}; + CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error); + CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.112] parse error at 4: expected '#' after UBJSON type information; last byte: 0x02"); + } + } + } + + SECTION("writing optimized values") + { + SECTION("integer") + { + SECTION("array of i") + { + json j = {1, 2}; + std::vector expected = {'[', '$', 'i', '#', 'i', 2, 1, 2}; + CHECK(json::to_ubjson(j, true, true) == expected); + } + + SECTION("array of U") + { + json j = {200, 201}; + std::vector expected = {'[', '$', 'U', '#', 'i', 2, 0xC8, 0xC9}; + CHECK(json::to_ubjson(j, true, true) == expected); + } + + SECTION("array of I") + { + json j = {30000, 30001}; + std::vector expected = {'[', '$', 'I', '#', 'i', 2, 0x75, 0x30, 0x75, 0x31}; + CHECK(json::to_ubjson(j, true, true) == expected); + } + + SECTION("array of l") + { + json j = {70000, 70001}; + std::vector expected = {'[', '$', 'l', '#', 'i', 2, 0x00, 0x01, 0x11, 0x70, 0x00, 0x01, 0x11, 0x71}; + CHECK(json::to_ubjson(j, true, true) == expected); + } + + SECTION("array of L") + { + json j = {5000000000, 5000000001}; + std::vector expected = {'[', '$', 'L', '#', 'i', 2, 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x01}; + CHECK(json::to_ubjson(j, true, true) == expected); + } + } + + SECTION("unsigned integer") + { + SECTION("array of i") + { + json j = {1u, 2u}; + std::vector expected = {'[', '$', 'i', '#', 'i', 2, 1, 2}; + CHECK(json::to_ubjson(j, true, true) == expected); + } + + SECTION("array of U") + { + json j = {200u, 201u}; + std::vector expected = {'[', '$', 'U', '#', 'i', 2, 0xC8, 0xC9}; + CHECK(json::to_ubjson(j, true, true) == expected); + } + + SECTION("array of I") + { + json j = {30000u, 30001u}; + std::vector expected = {'[', '$', 'I', '#', 'i', 2, 0x75, 0x30, 0x75, 0x31}; + CHECK(json::to_ubjson(j, true, true) == expected); + } + + SECTION("array of l") + { + json j = {70000u, 70001u}; + std::vector expected = {'[', '$', 'l', '#', 'i', 2, 0x00, 0x01, 0x11, 0x70, 0x00, 0x01, 0x11, 0x71}; + CHECK(json::to_ubjson(j, true, true) == expected); + } + + SECTION("array of L") + { + json j = {5000000000u, 5000000001u}; + std::vector expected = {'[', '$', 'L', '#', 'i', 2, 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x01}; + CHECK(json::to_ubjson(j, true, true) == expected); + } + } } } @@ -1871,73 +2066,29 @@ TEST_CASE("Universal Binary JSON Specification Examples 2") */ -/* TEST_CASE("all first bytes", "[!throws]") { // these bytes will fail immediately with exception parse_error.112 - std::set unsupported = + std::set supported = { - //// types not supported by this library - - // byte strings - 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, - 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, - // byte strings - 0x58, 0x59, 0x5a, 0x5b, 0x5f, - // date/time - 0xc0, 0xc1, - // bignum - 0xc2, 0xc3, - // decimal fracion - 0xc4, - // bigfloat - 0xc5, - // tagged item - 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, - 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd8, - 0xd9, 0xda, 0xdb, - // expected conversion - 0xd5, 0xd6, 0xd7, - // simple value - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xef, 0xf0, - 0xf1, 0xf2, 0xf3, - 0xf8, - // undefined - 0xf7, - - //// bytes not specified by CBOR - - 0x1c, 0x1d, 0x1e, 0x1f, - 0x3c, 0x3d, 0x3e, 0x3f, - 0x5c, 0x5d, 0x5e, - 0x7c, 0x7d, 0x7e, - 0x9c, 0x9d, 0x9e, - 0xbc, 0xbd, 0xbe, - 0xdc, 0xdd, 0xde, 0xdf, - 0xee, - 0xfc, 0xfe, 0xfd, - - /// break cannot be the first byte - - 0xff + 'T', 'F', 'Z', 'U', 'i', 'I', 'l', 'L', 'd', 'D', 'C', 'S', '[', '{', 'N' }; for (auto i = 0; i < 256; ++i) { const auto byte = static_cast(i); + CAPTURE(byte); try { - json::from_cbor(std::vector(1, byte)); + json::from_ubjson(std::vector(1, byte)); } catch (const json::parse_error& e) { // check that parse_error.112 is only thrown if the - // first byte is in the unsupported set + // first byte is not in the supported set CAPTURE(e.what()); - if (std::find(unsupported.begin(), unsupported.end(), byte) != unsupported.end()) + if (std::find(supported.begin(), supported.end(), byte) == supported.end()) { CHECK(e.id == 112); } @@ -1948,4 +2099,4 @@ TEST_CASE("all first bytes", "[!throws]") } } } -*/ + From 06cddd371b4aac94dd87aad5fb91f31ce9f2ea06 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 14 Jan 2018 17:22:42 +0100 Subject: [PATCH 055/106] :hammer: removed failing amalgamation test --- .travis.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0f7e9b21..6391c088 100644 --- a/.travis.yml +++ b/.travis.yml @@ -278,11 +278,6 @@ script: - ctest -C Release -V -j - cd .. - # check if header was correctly amalgamated - - if [ `which python` ]; then - make check-amalgamation ; - fi - # check if homebrew works (only checks develop branch) - if [ `which brew` ]; then brew update ; From 9d6b3731b9a15996e8cee7462d997691063b9939 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 14 Jan 2018 20:07:38 +0100 Subject: [PATCH 056/106] :white_check_mark: improved test coverage --- Makefile | 2 +- develop/detail/parsing/binary_writer.hpp | 23 ++++++++++------- src/json.hpp | 23 ++++++++++------- test/src/unit-ubjson.cpp | 33 ++++++++++++++++++------ 4 files changed, 54 insertions(+), 27 deletions(-) diff --git a/Makefile b/Makefile index 6756182e..d4b3336f 100644 --- a/Makefile +++ b/Makefile @@ -79,7 +79,7 @@ coverage: mkdir build_coverage cd build_coverage ; CXX=g++-5 cmake .. -GNinja -DJSON_Coverage=ON cd build_coverage ; ninja - cd build_coverage ; ctest + cd build_coverage ; ctest -j10 cd build_coverage ; ninja lcov_html open build_coverage/test/html/index.html diff --git a/develop/detail/parsing/binary_writer.hpp b/develop/detail/parsing/binary_writer.hpp index 1d2cf601..7bf894f6 100644 --- a/develop/detail/parsing/binary_writer.hpp +++ b/develop/detail/parsing/binary_writer.hpp @@ -813,7 +813,16 @@ class binary_writer } } - char ubjson_prefix(const BasicJsonType& j) + /*! + @brief determine the type prefix of container values + + @note This function does not need to be 100% accurate when it comes to + integer limits. In case a number exceeds the limits of int64_t, + this will be detected by a later call to function + write_number_with_ubjson_prefix. Therefore, we return 'L' for any + value that does not fit the previous limits. + */ + char ubjson_prefix(const BasicJsonType& j) const noexcept { switch (j.type()) { @@ -841,11 +850,10 @@ class binary_writer { return 'l'; } - else if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) + else // no check and assume int64_t (see note above) { return 'L'; } - break; } case value_t::number_unsigned: @@ -866,11 +874,10 @@ class binary_writer { return 'l'; } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + else // no check and assume int64_t (see note above) { return 'L'; } - break; } case value_t::number_float: @@ -885,11 +892,9 @@ class binary_writer case value_t::object: return '{'; - default: - break; + default: // discarded values + return 'N'; } - - return '\0'; } private: diff --git a/src/json.hpp b/src/json.hpp index 9644eed6..731feb95 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -6965,7 +6965,16 @@ class binary_writer } } - char ubjson_prefix(const BasicJsonType& j) + /*! + @brief determine the type prefix of container values + + @note This function does not need to be 100% accurate when it comes to + integer limits. In case a number exceeds the limits of int64_t, + this will be detected by a later call to function + write_number_with_ubjson_prefix. Therefore, we return 'L' for any + value that does not fit the previous limits. + */ + char ubjson_prefix(const BasicJsonType& j) const noexcept { switch (j.type()) { @@ -6993,11 +7002,10 @@ class binary_writer { return 'l'; } - else if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) + else // no check and assume int64_t (see note above) { return 'L'; } - break; } case value_t::number_unsigned: @@ -7018,11 +7026,10 @@ class binary_writer { return 'l'; } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + else // no check and assume int64_t (see note above) { return 'L'; } - break; } case value_t::number_float: @@ -7037,11 +7044,9 @@ class binary_writer case value_t::object: return '{'; - default: - break; + default: // discarded values + return 'N'; } - - return '\0'; } private: diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index d7b7cde1..20c846cb 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -1386,8 +1386,8 @@ TEST_CASE("UBJSON") { SECTION("array of i") { - json j = {1, 2}; - std::vector expected = {'[', '$', 'i', '#', 'i', 2, 1, 2}; + json j = {1, -1}; + std::vector expected = {'[', '$', 'i', '#', 'i', 2, 1, 0xff}; CHECK(json::to_ubjson(j, true, true) == expected); } @@ -1400,22 +1400,22 @@ TEST_CASE("UBJSON") SECTION("array of I") { - json j = {30000, 30001}; - std::vector expected = {'[', '$', 'I', '#', 'i', 2, 0x75, 0x30, 0x75, 0x31}; + json j = {30000, -30000}; + std::vector expected = {'[', '$', 'I', '#', 'i', 2, 0x75, 0x30, 0x8a, 0xd0}; CHECK(json::to_ubjson(j, true, true) == expected); } SECTION("array of l") { - json j = {70000, 70001}; - std::vector expected = {'[', '$', 'l', '#', 'i', 2, 0x00, 0x01, 0x11, 0x70, 0x00, 0x01, 0x11, 0x71}; + json j = {70000, -70000}; + std::vector expected = {'[', '$', 'l', '#', 'i', 2, 0x00, 0x01, 0x11, 0x70, 0xFF, 0xFE, 0xEE, 0x90}; CHECK(json::to_ubjson(j, true, true) == expected); } SECTION("array of L") { - json j = {5000000000, 5000000001}; - std::vector expected = {'[', '$', 'L', '#', 'i', 2, 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x01}; + json j = {5000000000, -5000000000}; + std::vector expected = {'[', '$', 'L', '#', 'i', 2, 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0xD5, 0xFA, 0x0E, 0x00}; CHECK(json::to_ubjson(j, true, true) == expected); } } @@ -1426,37 +1426,54 @@ TEST_CASE("UBJSON") { json j = {1u, 2u}; std::vector expected = {'[', '$', 'i', '#', 'i', 2, 1, 2}; + std::vector expected_size = {'[', '#', 'i', 2, 'i', 1, 'i', 2}; CHECK(json::to_ubjson(j, true, true) == expected); + CHECK(json::to_ubjson(j, true) == expected_size); } SECTION("array of U") { json j = {200u, 201u}; std::vector expected = {'[', '$', 'U', '#', 'i', 2, 0xC8, 0xC9}; + std::vector expected_size = {'[', '#', 'i', 2, 'U', 0xC8, 'U', 0xC9}; CHECK(json::to_ubjson(j, true, true) == expected); + CHECK(json::to_ubjson(j, true) == expected_size); } SECTION("array of I") { json j = {30000u, 30001u}; std::vector expected = {'[', '$', 'I', '#', 'i', 2, 0x75, 0x30, 0x75, 0x31}; + std::vector expected_size = {'[', '#', 'i', 2, 'I', 0x75, 0x30, 'I', 0x75, 0x31}; CHECK(json::to_ubjson(j, true, true) == expected); + CHECK(json::to_ubjson(j, true) == expected_size); } SECTION("array of l") { json j = {70000u, 70001u}; std::vector expected = {'[', '$', 'l', '#', 'i', 2, 0x00, 0x01, 0x11, 0x70, 0x00, 0x01, 0x11, 0x71}; + std::vector expected_size = {'[', '#', 'i', 2, 'l', 0x00, 0x01, 0x11, 0x70, 'l', 0x00, 0x01, 0x11, 0x71}; CHECK(json::to_ubjson(j, true, true) == expected); + CHECK(json::to_ubjson(j, true) == expected_size); } SECTION("array of L") { json j = {5000000000u, 5000000001u}; std::vector expected = {'[', '$', 'L', '#', 'i', 2, 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x01}; + std::vector expected_size = {'[', '#', 'i', 2, 'L', 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x00, 'L', 0x00, 0x00, 0x00, 0x01, 0x2A, 0x05, 0xF2, 0x01}; CHECK(json::to_ubjson(j, true, true) == expected); + CHECK(json::to_ubjson(j, true) == expected_size); } } + + SECTION("discarded") + { + json j = {json::value_t::discarded, json::value_t::discarded}; + std::vector expected = {'[', '$', 'N', '#', 'i', 2}; + CHECK(json::to_ubjson(j, true, true) == expected); + } } } From 3ac674562fc171336dce863fbc57462f2dc30842 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 14 Jan 2018 22:26:20 +0100 Subject: [PATCH 057/106] :hammer: clean up --- Makefile | 2 +- third_party/amalgamate/amalgamate.py | 0 2 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 third_party/amalgamate/amalgamate.py diff --git a/Makefile b/Makefile index 7f745249..4713b5f9 100644 --- a/Makefile +++ b/Makefile @@ -79,7 +79,7 @@ coverage: mkdir build_coverage cd build_coverage ; CXX=g++-5 cmake .. -GNinja -DJSON_Coverage=ON cd build_coverage ; ninja - cd build_coverage ; ctest + cd build_coverage ; ctest -j10 cd build_coverage ; ninja lcov_html open build_coverage/test/html/index.html diff --git a/third_party/amalgamate/amalgamate.py b/third_party/amalgamate/amalgamate.py old mode 100644 new mode 100755 From 92f729506380e5023e02d5f0243e5e0a965ba006 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Mon, 15 Jan 2018 13:21:33 +0100 Subject: [PATCH 058/106] :hammer: cleanup --- .../CouchDB4k.formatted.json | 275 -------------- .../universal-binary-json-java/CouchDB4k.ubj | Bin 2724 -> 0 bytes test/data/universal-binary-json-java/LICENSE | 202 ---------- .../MediaContent.formatted.json | 34 -- .../MediaContent.ubj | Bin 442 -> 0 bytes test/data/universal-binary-json-java/README | 357 ------------------ .../TwitterTimeline.formatted.json | 80 ---- .../TwitterTimeline.ubj | Bin 1792 -> 0 bytes test/data/universal-binary-json-java/url.txt | 1 - test/src/unit-ubjson.cpp | 80 ++-- 10 files changed, 34 insertions(+), 995 deletions(-) delete mode 100644 test/data/universal-binary-json-java/CouchDB4k.formatted.json delete mode 100644 test/data/universal-binary-json-java/CouchDB4k.ubj delete mode 100644 test/data/universal-binary-json-java/LICENSE delete mode 100644 test/data/universal-binary-json-java/MediaContent.formatted.json delete mode 100644 test/data/universal-binary-json-java/MediaContent.ubj delete mode 100644 test/data/universal-binary-json-java/README delete mode 100644 test/data/universal-binary-json-java/TwitterTimeline.formatted.json delete mode 100644 test/data/universal-binary-json-java/TwitterTimeline.ubj delete mode 100644 test/data/universal-binary-json-java/url.txt diff --git a/test/data/universal-binary-json-java/CouchDB4k.formatted.json b/test/data/universal-binary-json-java/CouchDB4k.formatted.json deleted file mode 100644 index d12387da..00000000 --- a/test/data/universal-binary-json-java/CouchDB4k.formatted.json +++ /dev/null @@ -1,275 +0,0 @@ -{ - "data3":"ColreUHAtuYoUOx1N4ZloouQt2o6ugnUT6eYtS10gu7niM8i0vEiNufpk1RlMQXaHXlIwQBDsMFDFUQcFeg2vW5eD259Xm", - "data4":"zCxriJhL726WNNTdJJzurgSA8vKT6rHA0cFCb9koZcLUMXg4rmoXVPqIHWYaCV0ovl2t6xm7I1Hm36jXpLlXEb8fRfbwBeTW2V0OAsVqYH8eAT", - "data0":"9EVqHm5ARqcEB5jq2D14U2bCJPyBY0JWDr1Tjh8gTB0sWUNjqYiWDxFzlx6S", - "data7":"Bi1ujcgEvfADfBeyZudE7nwxc3Ik8qpYjsJIfKmwOMEbV2L3Bi0x2tcRpGuf4fiyvIbypDvJN1PPdQtfQW1Gv6zccXHwwZwKzUq6", - "data5":{ - "integers":[ - 756509, - 116117, - 776378, - 275045, - 703447, - 50156, - 685803, - 147958, - 941747, - 905651, - 57367, - 530248, - 312888, - 740951, - 988947, - 450154 - ], - "float1":76.572, - "float2":83.5299, - "nested1":{ - "integers":[ - 756509, - 116117, - 776378, - 275045, - 703447, - 50156, - 685803, - 147958, - 941747, - 905651, - 57367, - 530248, - 312888, - 740951, - 988947, - 450154 - ], - "floats":[ - 43121609.5543, - 99454976.3019, - 32945584.756, - 18122905.9212, - 45893183.44, - 63052200.6225, - 69032152.6897, - 3748217.6946, - 75449850.474, - 37111527.415, - 84852536.859, - 32906366.487, - 27027600.417, - 63874310.5614, - 39440408.51, - 97176857.1716, - 97438252.1171, - 49728043.5056, - 40818570.245, - 41415831.8949, - 24796297.4251, - 2819085.3449, - 84263963.4848, - 74503228.6878, - 67925677.403, - 4758851.9417, - 75227407.9214, - 76946667.8403, - 72518275.9469, - 94167085.9588, - 75883067.8321, - 27389831.6101, - 57987075.5053, - 1298995.2674, - 14590614.6939, - 45292214.2242, - 3332166.364, - 53784167.729, - 25193846.1867, - 81456965.477, - 68532032.39, - 73820009.7952, - 57736110.5717, - 37304166.7363, - 20054244.864, - 29746392.7397, - 86467624.6, - 45192685.8793, - 44008816.5186, - 1861872.8736, - 14595859.467, - 87795257.6703, - 57768720.8303, - 18290154.3126, - 45893183.44, - 63052200.6225, - 69032152.6897, - 3748217.6946, - 75449850.474, - 37111527.415, - 84852536.859, - 32906366.487, - 27027600.417, - 63874310.5614, - 39440408.51, - 97176857.1716, - 97438252.1171, - 49728043.5056, - 40818570.245, - 41415831.8949, - 24796297.4251, - 2819085.3449, - 84263963.4848, - 74503228.6878, - 67925677.403, - 4758851.9417, - 75227407.9214, - 76946667.8403, - 72518275.9469, - 94167085.9588, - 75883067.8321, - 27389831.6101, - 57987075.5053, - 1298995.2674, - 80858801.2712, - 98262252.4656, - 51612877.944, - 33397812.7835, - 36089655.3049, - 50164685.8153, - 16852105.5192, - 61171929.752, - 86376339.7175, - 73009014.5521, - 7397302.331, - 34345128.9589, - 98343269.4418, - 95039116.9058, - 44833102.5752, - 51052997.8873, - 22719195.6783, - 64883244.8699 - ] - }, - "nested2":{ - "integers":[ - 756509, - 116117, - 776378, - 275045, - 703447, - 50156, - 685803, - 147958, - 941747, - 905651, - 57367, - 530248, - 312888, - 740951, - 988947, - 450154 - ], - "float1":76.572, - "float2":83.5299 - } - }, - "strings":[ - "edx5XzRkPVeEW2MBQzQMcUSuMI4FntjhlJ9VGhQaBHKPEazAaT", - "2fQUbzRUax4A", - "jURcBZ0vrJcmf2roZUMzZJQoTsKZDIdj7KhO7itskKvM80jBU9", - "8jKLmo3N2zYdKyTyfTczfr2x6bPaarorlnTNJ7r8lIkiZyBvrP", - "jbUeAVOdBSPzYmYhH0sabUHUH39O5e", - "I8yAQKZsyZhMfpzWjArQU9pQ6PfU6b14q2eWvQjtCUdgAUxFjg", - "97N8ZmGcxRZO4ZabzRRcY4KVHqxJwQ8qY", - "0DtY1aWXmUfJENt9rYW9", - "DtpBUEppPwMnWexi8eIIxlXRO3GUpPgeNFG9ONpWJYvk8xBkVj", - "YsX8V2xOrTw6LhNIMMhO4F4VXFyXUXFr66L3sTkLWgFA9NZuBV", - "fKYYthv8iFvaYoFoYZyB", - "zGuLsPXoJqMbO4PcePteZfDMYFXdWtvNF8WvaplXypsd6" - ], - "data1":"9EVqHm5ARqcEB5jq21v2g0jVcG9CXB0Abk7uAF4NHYyTzeF3TnHhpZBECD14U2bCJPyBY0JWDr1Tjh8gTB0sWUNjqYiWDxFzlx6S", - "integers":[ - 756509, - 116117, - 776378, - 275045, - 703447, - 50156, - 685803, - 147958, - 941747, - 905651, - 57367, - 530248, - 312888, - 740951, - 988947, - 450154 - ], - "more_nested":{ - "integers":[ - 756509, - 116117, - 776378, - 275045, - 703447, - 50156, - 685803, - 147958, - 941747, - 905651, - 57367, - 530248, - 312888, - 740951, - 988947, - 450154 - ], - "float1":76.572, - "float2":83.5299, - "nested1":{ - "integers":[ - 756509, - 116117, - 776378, - 275045, - 703447, - 50156, - 685803, - 147958, - 941747, - 905651, - 57367, - 530248, - 312888, - 740951, - 988947, - 450154 - ] - }, - "nested2":{ - "strings":[ - "2fQUbzRUax4A", - "jURcBZ0vrJcmf2roZUMzZJQoTsKZDIdj7KhO7itskKvM80jBU9", - "8jKLmo3N2zYdKyTyfTczfr2x6bPaarorlnTNJ7r8lIkiZyBvrP", - "jbUeAVOdBSPzYmYhH0sabUHUH39O5e", - "I8yAQKZsyZhMfpzWjArQU9pQ6PfU6b14q2eWvQjtCUdgAUxFjg", - "97N8ZmGcxRZO4ZabzRRcY4KVHqxJwQ8qY", - "0DtY1aWXmUfJENt9rYW9", - "DtpBUEppPwMnWexi8eIIxlXRO3GUpPgeNFG9ONpWJYvk8xBkVj", - "YsX8V2xOrTw6LhNIMMhO4F4VXFyXUXFr66L3sTkLWgFA9NZuBV", - "fKYYthv8iFvaYoFoYZyB", - "zGuLsPXoJqMbO4PcePteZfDMYFXdWtvNF8WvaplXypsd6" - ], - "integers":[ - 756509, - 116117, - 776378, - 57367, - 530248, - 312888, - 740951, - 988947, - 450154 - ] - } - } -} \ No newline at end of file diff --git a/test/data/universal-binary-json-java/CouchDB4k.ubj b/test/data/universal-binary-json-java/CouchDB4k.ubj deleted file mode 100644 index 75a6465bc74dcbec4c856640935b331b9e6fa0c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2724 zcmeHJS;!kz6i!{Lty(JHh+svO#X1O!TnIw~ClDU(~ zB#OA;LVr|(3b3oHj|lF=@NgTQFk$2_N-_F^*|#C;+nlR=Tsaf3YR z8za;=DlN)uc&#bpsyflk)@a-un;hlR>cOyCd`YR&9CL#Ox-oVt%z{5A%DI9@v=)W> zj4`uC~Evb8So>47Ly)jgRdPBe(5_*j~$Lj$1yR&#ZXu&Q#j_0-rgGaQV#YUGMRk%qs^{ zDgJ`b96^7_XVz?aiqD+zcDiIfUe9NaUC*V;uT!a+tn--@*PqO1R(|B;m0mxvqZ}|h z&i?Swh5+V~6KnXGp^GCIa={UQ!v(PI0XqBYuK~UEWCp|^ti2#^ElYqdI_Y*mqZ@rd z*FSa|2=LmcfNuM2H=q-?y#VNe_dZRP*IW+bo&pC5Kgs|)C0YsSdGn!kd7lMz>66QV zPJ4PkpwoXm2gH{ytblO-+66%OKX*N#TQ}Sc=-OM~1!3F8sdU>_X93#&%DsTLDs@0l z-IKby{lzMXZ+-tNpv{F9z~8rRCx}}fybI9zuRj5TXrBs5+L)fbOzr}7_vX(5UH8mq zfNpv7OF)}0I{;{n^Z|%FG9ieceBB51@PQjrTlY#p=kD7C{Ql}qslR7W2J}euMryI; zRS=iAe)})Y9PKQ<3ussGK0xLDc@TfvvjNbm$MyiaeA71|UbDRdsB4jFmb=rxT)yHf z5ccgJ06Oxh^HQ@rE&%j&@y$$~L&^y*Ewq7xFM%oWMemL?KkV26?4=?kT1wWHV!C)O+WoVHbbJmD!?Yu?c8 zq(EcB*BTCEW#dqA1|AUxmL|{kE+%+tMk}I)XI4k@MswY#Lq#i%6teDVWGhz~6RsXBezd4To7NK6Z{ssdMVYb& zRVQg!wSr}*Ni`g^AU3&iB1{!(Y~ppj^m4>>T zbSanTlfKcY<*VAL-gafSTB^w-T`=Pwl`y@gj|meSRFg<*p*kf|N9HA|Q!B8Aroqk( z&0s^4M0u?CkltqLl59rWti&s>{Z<8L)wwz6QQvUY#IZHv(ZSwQ7aB&1p!HK`1g|8k2p)3E=tp9nkSn-#l_Yfx$DJLCs7_P_t554~w^nRUZ MR{dt4`J-XwXD4K^8UO$Q diff --git a/test/data/universal-binary-json-java/LICENSE b/test/data/universal-binary-json-java/LICENSE deleted file mode 100644 index d6456956..00000000 --- a/test/data/universal-binary-json-java/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/test/data/universal-binary-json-java/MediaContent.formatted.json b/test/data/universal-binary-json-java/MediaContent.formatted.json deleted file mode 100644 index fe547871..00000000 --- a/test/data/universal-binary-json-java/MediaContent.formatted.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "Media":{ - "uri":"http://javaone.com/keynote.mpg", - "title":"Javaone Keynote", - "width":640, - "height":480, - "format":"video/mpg4", - "duration":18000000, - "size":58982400, - "bitrate":262144, - "persons":[ - "Bill Gates", - "Steve Jobs" - ], - "player":"JAVA", - "copyright":null - }, - "Images":[ - { - "uri":"http://javaone.com/keynote_large.jpg", - "title":"Javaone Keynote", - "width":1024, - "height":768, - "size":"LARGE" - }, - { - "uri":"http://javaone.com/keynote_small.jpg", - "title":"Javaone Keynote", - "width":320, - "height":240, - "size":"SMALL" - } - ] -} \ No newline at end of file diff --git a/test/data/universal-binary-json-java/MediaContent.ubj b/test/data/universal-binary-json-java/MediaContent.ubj deleted file mode 100644 index 616531ce4938f44ec1dfac12194504e76cea6ca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcma)%Jx;?w5QW#jfGLnT0CGWXH&j#@2}L$elSmXaXcG_ihPBt)w=ptR3J$}uI08pt zBMT`FQp%?{Gv9p5MKGsIaCHuEs|BtaWBS`P-SB~{j*_)%(>EGBWhiO;8i5f;5-y6V zj~}NF!MmtTlQZV-5H=+0#@OI|BYai5pB1*@2+PrtcAy*<$u^3<@om@;H=pcYtC)f2id=E6ZO%@s+y( diff --git a/test/data/universal-binary-json-java/README b/test/data/universal-binary-json-java/README deleted file mode 100644 index b4fc4059..00000000 --- a/test/data/universal-binary-json-java/README +++ /dev/null @@ -1,357 +0,0 @@ -Universal Binary JSON Java Library -http://ubjson.org - - -About this project... ---------------------- -This code base is actively under development and implements the latest -specification of Universal Binary JSON (Draft 8). - -I/O is handled through the following core classes: - - * UBJOutputStream - * UBJInputStream - * UBJInputStreamParser - -Additionally, if you are working with Java's NIO and need byte[]-based -results, you can wrap any of the above I/O classes around one of the highly -optimized custom byte[]-stream impls: - - * ByteArrayInputStream (optimized for reuse, not from JDK) - * ByteArrayOutputStream (optimized for reuse, not from JDK) - -If you are working with NIO and want maximum performance by using (and reusing) -direct ByteBuffers along with the UBJSON stream impls, take a look at the: - - * ByteBufferInputStream - * ByteBufferOutputStream - -classes. You can wrap any ByteBuffer source or destination with this stream type, -then wrap that stream type with a UBJSON stream impl and utilize the full -potential of Java's NIO with Universal Binary JSON without giving yourself an -ulcer. - -This allows you to re-use the streams over and over again in a pool of reusable -streams for high-performance I/O with no object creation and garbage collection -overhead; a perfect match for high frequency NIO-based communication. - -All of the core I/O classes have been stable for a while, with tweaks to make the -performance tighter and the error messages more informative over the last few -months. - -More Java-convenient reflection-based I/O classes are available in the -org.ubjson.io.reflect package, but they are under active development. - -There are other efforts (like utilities) in other sub portions of the source -tree. This project intends to eventually contain a multitude of UBJSON -abstraction layers, I/O methods and utilities. - - -Changelog ---------- -02-10-12 - * Added ByteBuffer input and output stream impls as compliments to the - re-usable byte[] stream impls. - - Provides a fast translation layer between standard Java stream-IO and the - new Buffer-based I/O in NIO (including transparent support for using - ultra-fast direct ByteBuffers). - - * Optimized some of the read/write methods by removing unnecessary bounds - checks that are done by subsequent Input or Output stream impls themselves. - -02-09-12 - * Fixed bug with readHugeAsBigInteger returning an invalid value and not - treating the underlying bytes as a string-encoded value. - - * Removed implicit buffer.flip() at the end of StreamDecoder; there is no - way to know what the caller had planned for the buffer before reading all - the data back out. Also the flip was in the wrong place and in the case of - an empty decode request (length=0) the flip would not have been performed, - providing the caller with a "full" buffer of nothing. - - * Rewrote all readHugeXXX method impls; now huge's can be read in as a - simple Number (BigInteger or BigDecimal) as well as raw bytes and even - decoded chars. Additionally the methods can even accept and use existing - buffers to write into to allow for tighter optimizations. - - * Rewrote all readStringXXX methods using the same optimizations and - flexibility that readHuge methods now use. - -02-07-12 - More Memory and CPU optimizations across all the I/O impls. - - * StreamDecoder was rewritten to no longer create a ByteBuffer on every - invocation and instead re-use the same one to decode from on every single call. - - * StreamDecoder now requires the call to pass in a CharBuffer instance to hold - the result of the decode operation. This avoids the creation of a CharBuffer - and allows for large-scale optimization by re-using existing buffers between - calls. - - * StreamEncoder was rewritten to no longer create a ByteBuffer on every - invocation either and now re-uses the same single instance over and over - again. - - * UBJOutputStream writeHuge and writeString series of methods were all - rewritten to accept a CharBuffer in the rawest form (no longer char[]) to stop - hiding the fact that the underlying encode operation required one. - - This gives the caller an opportunity to cache and re-use CharBuffers over - and over again if they can; otherwise this just pushes the CharBuffer.wrap() - call up to the caller instead of hiding it secretly in the method impl under - the guise of accepting a raw char[] (that it couldn't use directly). - - For callers that can re-use buffers, this will lead to big performance gains - now that were previously impossible. - - * UBJInputStream added readHuge and readString methods that accept an existing - CharBuffer argument to make use of the optimizations made in the Stream encoder - and decoder impls. - -01-15-12 - Huge performance boost for deserialization! - - StreamDecoder previously used separate read and write buffers for decoding - bytes to chars including the resulting char[] that was returned to the caller. - This design required at least 1 full array copy before returning a result in - the best case and 2x full array copies before returning the result in the - worst case. - - The rewrite removed the need for a write buffer entire as well as ALL array - copies; in the best OR worse case they never occur anymore. - - Raw performance boost of roughly 25% in all UBJ I/O classes as a result. - -12-01-11 through 01-24-12 - A large amount of work has continued on the core I/O classes (stream impls) - to help make them not only faster and more robust, but also more helpful. - When errors are encountered in the streams, they are reported along with the - stream positions. This is critical for debugging problems with corrupt - formats. - - Also provided ByteArray I/O stream classes that have the potential to provide - HUGE performance boosts for high frequency systems. - - Both these classes (ByteArrayInputStream and ByteArrayOutputStream) are - reusable and when wrapped by a UBJInputStream or UBJOutputStream, the top - level UBJ streams implicitly become reusable as well. - - Reusing the streams not only saves on object creation/GC cleanup but also - allows the caller to re-use the temporary byte[] used to translate to and - from the UBJ format, avoiding object churn entirely! - - This optimized design was chosen to be intentionally performant when combined - with NIO implementations as the ByteBuffer's can be used to wrap() existing - outbound buffers (avoiding the most expensive part of a buffer) or use - array() to get access to the underlying buffer that needs to be written to - the stream. - - In the case of direct ByteBuffers, there is no additional overhead added - because the calls to get or put are required anyway to pull or push the - values from the native memory location. - - This approach allows the fastest implementation of Universal Binary JSON - I/O possible in the JVM whether you are using the standard IO (stream) - classes or the NIO (ByteBuffer) classes in the JDK. - - Some ancillary work on UBJ-based command line utilities (viewers, converters, - etc.) has begun as well. - -11-28-11 - * Fixed UBJInputStreamParser implementation; nextType correctly implements - logic to skip existing element (if called back to back) as well as validate - the marker type it encounters before returning it to the caller. - - * Modified IObjectReader contract; a Parser implementation is required to - make traversing the UBJ stream possible without knowing what type of element - is next. - -11-27-11 - * Streamlined ByteArrayOutputStream implementation to ensure the capacity - of the underlying byte[] is never grown unless absolutely necessary. - - * Rewrote class Javadoc for ByteArrayOutputStream to include a code snippet - on how to use it. - -11-26-11 - * Fixed major bug in how 16, 32 and 64-bit integers are re-assembled when - read back from binary representations. - - * Added a numeric test to specifically catch this error if it ever pops up - again. - - * Optimized reading and writing of numeric values in Input and Output - stream implementations. - - * Optimized ObjectWriter implementation by streamlining the numeric read/write - logic and removing the sub-optimal force-compression of on-disk storage. - - * Fixed ObjectWriter to match exactly with the output written by - UBJOutputStream. - - * Normalized all testing between I/O classes so they use the same classes - to ensure parity. - -11-10-11 - * DRAFT 8 Spec Support Added. - - * Added support for the END marker (readEnd) to the InputStreams which is - required for proper unbounded-container support. - - * Added support for the END marker (writeEnd) to UBJOutputStream. - - UBJInputStreamParser must be used for properly support unbounded-containers - because you never know when the 'E' will be encountered marking the end; - so the caller needs to pay attention to the type marker that nextType() - returns and respond accordingly. - - * Added readHugeAsBytes to InputStream implementations, allowing the bytes - used to represent a HUGE to be read in their raw form with no decoding. - - This can save on processing as BigInteger and BigDecimal do their own decoding - of byte[] directly. - - * Added readHugeAsChars to InputStream implementations, allowing a HUGE - value to be read in as a raw char[] without trying to decode it to a - BigInteger or BigDecimal. - - * Added writeHuge(char[]) to support writing out HUGE values directly from - their raw char[] form without trying to decode from a BigInteger or - BigDecimal. - - * readArrayLength and readObjectLenght were modified to return -1 when an - unbounded container length is encountered (255). - - * Fixed UBJInputStreamParser.nextType to correctly skip past any NOOP - markers found in the underlying stream before returning a valid next type. - - * Normalized all reading of "next byte" to the singular - UBJInputStream.nextMarker method -- correctly skips over NOOP until end of - stream OR until the next valid marker byte, then returns it. - - * Modified readNull behavior to have no return type. It is already designed - to throw an exception when 'NULL' isn't found, no need for the additional - return type. - - * Began work on a simple abstract representation of the UBJ data types as - objects that can be assembled into maps and lists and written/read easily - using the IO package. - - This is intended to be a higher level of abstraction than the IO streams, - but lower level (and faster) than the reflection-based work that inspects - user-provided classes. - - * Refactored StreamDecoder and StreamEncoder into the core IO package, - because they are part of core IO. - - * Refactored StreamParser into the io.parser package to more clearly denote - its relationship to the core IO classes. It is a slightly higher level - abstraction ontop of the core IO, having it along side the core IO classes - while .reflect was a subpackage was confusing and suggested that - StreamParser was somehow intended as a swapable replacement for - UBJInputStream which is not how it is intended to be used. - - * Refactored org.ubjson.reflect to org.ubjson.io.reflect to more correctly - communicate the relationship -- the reflection-based classes are built on - the core IO classes and are just a higher abstraction to interact with UBJSON - with. - - * Renamed IDataType to IMarkerType to follow the naming convention for the - marker bytes set forth by the spec doc. - - -10-14-11 - * ObjectWriter rewritten and works correctly. Tested with the example test - data and wrote out the compressed and uncompressed formats files correctly - from their original object representation. - - * Added support for reading and writing huge values as BigInteger as well - as BigDecimal. - - * Added automatic numeric storage compression support to ObjectWriter - based - on the numeric value (regardless of type) the value will be stored as the - smallest possible representation in the UBJ format if requested. - - * Added mapping support for BigDecimal, BigInteger, AtomicInteger and - AtomicLong to ObjectWriter. - - * Added readNull and readBoolean to the UBJInputStream and - UBJInputStreamParser implementations to make the API feel complete and feel - more natural to use. - -10-10-11 - * com.ubjson.io AND com.ubjson.io.charset are finalized against the - Draft 8 specification. - - * The lowest level UBJInput/OuputStream classes were tightened up to run as - fast as possible showing an 800ns-per-op improvement in speed. - - * Profiled core UBJInput/OuputStream classes using HPROF for a few million - iterations and found no memory leaks and no performance traps; everything at - that low level is as tight as it can be. - - * Stream-parsing facilities were moved out of the overloaded UBJInputStream - class and into their own subclass called UBJInputStreamParser which operates - exactly like a pull-parsing scenario (calling nextType then switching on the - value and pulling the appropriate value out of the stream). - - * More example testing/benchmarking data checked into /test/java/com/ubjson/data - - Will begin reworking the Reflection based Object mapping in the - org.ubjson.reflect package now that the core IO classes are finalized. - - * Removed all old scratch test files from the org.ubjson package, this was - confusing. - -09-27-11 - * Initial check-in of core IO classes to read/write spec. - - -Status ------- -Using the standard UBJInputStream, UBJInputStreamParser and UBJOutputStream -implementations to manually read/write UBJ objects is stable and tuned for -optimal performance. - -Automatic mapping of objects to/from UBJ format via the reflection-based -implementation is not tuned yet. Writing is implemented, but not tuned for -optimal performance and reading still has to be written. - - * org.ubjson.io - STABLE - * org.ubjson.io.parser - STABLE - * org.ubjson.io.reflect - ALPHA - * org.ubjson.model - BETA - - -License -------- -This library is released under the Apache 2 License. See LICENSE. - - -Description ------------ -This project represents (the official?) Java implementations of the -Universal Binary JSON specification: http://ubjson.org - - -Example -------- -Comming soon... - - -Performance ------------ -Comming soon... - - -Reference ---------- -Universal Binary JSON Specification - http://ubjson.org -JSON Specification - http://json.org - - -Contact -------- -If you have questions, comments or bug reports for this software please contact -us at: software@thebuzzmedia.com \ No newline at end of file diff --git a/test/data/universal-binary-json-java/TwitterTimeline.formatted.json b/test/data/universal-binary-json-java/TwitterTimeline.formatted.json deleted file mode 100644 index f56dd9b2..00000000 --- a/test/data/universal-binary-json-java/TwitterTimeline.formatted.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "id_str":"121769183821312000", - "retweet_count":0, - "in_reply_to_screen_name":null, - "in_reply_to_user_id":null, - "truncated":false, - "retweeted":false, - "possibly_sensitive":false, - "in_reply_to_status_id_str":null, - "entities":{ - "urls":[ - { - "url":"http:\/\/t.co\/wtioKkFS", - "display_url":"dlvr.it\/pWQy2", - "indices":[ - 33, - 53 - ], - "expanded_url":"http:\/\/dlvr.it\/pWQy2" - } - ], - "hashtags":[ - - ], - "user_mentions":[ - - ] - }, - "geo":null, - "place":null, - "coordinates":null, - "created_at":"Thu Oct 06 02:10:10 +0000 2011", - "in_reply_to_user_id_str":null, - "user":{ - "id_str":"77029015", - "profile_link_color":"009999", - "protected":false, - "url":"http:\/\/www.techday.co.nz\/", - "screen_name":"techdaynz", - "statuses_count":5144, - "profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1479058408\/techday_48_normal.jpg", - "name":"TechDay", - "default_profile_image":false, - "default_profile":false, - "profile_background_color":"131516", - "lang":"en", - "profile_background_tile":false, - "utc_offset":43200, - "description":"", - "is_translator":false, - "show_all_inline_media":false, - "contributors_enabled":false, - "profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/75893948\/Techday_Background.jpg", - "created_at":"Thu Sep 24 20:02:01 +0000 2009", - "profile_sidebar_fill_color":"efefef", - "follow_request_sent":false, - "friends_count":3215, - "followers_count":3149, - "time_zone":"Auckland", - "favourites_count":0, - "profile_sidebar_border_color":"eeeeee", - "profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1479058408\/techday_48_normal.jpg", - "following":false, - "geo_enabled":false, - "notifications":false, - "profile_use_background_image":true, - "listed_count":151, - "verified":false, - "profile_text_color":"333333", - "location":"Ponsonby, Auckland, NZ", - "id":77029015, - "profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/75893948\/Techday_Background.jpg" - }, - "contributors":null, - "source":"\u003Ca href=\"http:\/\/dlvr.it\" rel=\"nofollow\"\u003Edlvr.it\u003C\/a\u003E", - "in_reply_to_status_id":null, - "favorited":false, - "id":121769183821312000, - "text":"Apple CEO's message to employees http:\/\/t.co\/wtioKkFS" -} \ No newline at end of file diff --git a/test/data/universal-binary-json-java/TwitterTimeline.ubj b/test/data/universal-binary-json-java/TwitterTimeline.ubj deleted file mode 100644 index 19702d4bb147d330ce7bfbc9d819e065c83cafad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1792 zcmai#-)|d55XVDeQYWz~v94=c8hA&jM8tr6*PZEWcWGk<-lbe6kmM^C zPB#~p#~jC&kC5+RH9z9S?Mf^6U~dGvj~`Rem}nfuTAM^DIyv_7kU%*Gj9dKbVw`#B zvGx2@&u^RsK7GCKh_~-G{2N>)swUkos=9B6gKbdC(aH)mkhxpkd zs+jN*V8}CR*@mAG?`}O0@!`T^z~jr2A=M@e7^LZTaEc|#)d+VFo%WI_>tU=v6L5AitG${I1q$O;)K zK9ElNwOax&0W!xA@jSngs8QSoa_xBeN{l+~Zm-#Ebt4Cj^2uH-3FJusC&0ImdW{w- z?u<0(2TK9^J^W&^K@b%JoUUn*C&ovI70NP(^uENJZ9VEGCR zd6@UbqLMAVbB#Bz()), json::parse_error&); - CHECK_THROWS_WITH(json::from_ubjson(std::vector()), - "[json.exception.parse_error.110] parse error at 1: unexpected end of input"); - } - SECTION("strict mode") { std::vector vec = {'Z', 'Z'}; @@ -1335,6 +1328,13 @@ TEST_CASE("UBJSON") SECTION("parse errors") { + SECTION("empty byte vector") + { + CHECK_THROWS_AS(json::from_ubjson(std::vector()), json::parse_error&); + CHECK_THROWS_WITH(json::from_ubjson(std::vector()), + "[json.exception.parse_error.110] parse error at 1: unexpected end of input"); + } + SECTION("char") { SECTION("eof after C byte") @@ -1477,8 +1477,9 @@ TEST_CASE("UBJSON") } } +/* // use this testcase outside [hide] to run it with Valgrind -TEST_CASE("single CBOR roundtrip") +TEST_CASE("single UBJSON roundtrip") { SECTION("sample.json") { @@ -1489,11 +1490,11 @@ TEST_CASE("single CBOR roundtrip") json j1 = json::parse(f_json); // parse MessagePack file - std::ifstream f_cbor(filename + ".cbor", std::ios::binary); - std::vector packed((std::istreambuf_iterator(f_cbor)), + std::ifstream f_ubjson(filename + ".ubj", std::ios::binary); + std::vector packed((std::istreambuf_iterator(f_ubjson)), std::istreambuf_iterator()); json j2; - CHECK_NOTHROW(j2 = json::from_cbor(packed)); + CHECK_NOTHROW(j2 = json::from_ubjson(packed)); // compare parsed JSON values CHECK(j1 == j2); @@ -1503,29 +1504,31 @@ TEST_CASE("single CBOR roundtrip") SECTION("std::ostringstream") { std::ostringstream ss; - json::to_cbor(j1, ss); - json j3 = json::from_cbor(ss.str()); + json::to_ubjson(j1, ss); + json j3 = json::from_ubjson(ss.str()); CHECK(j1 == j3); } SECTION("std::string") { std::string s; - json::to_cbor(j1, s); - json j3 = json::from_cbor(s); + json::to_ubjson(j1, s); + json j3 = json::from_ubjson(s); CHECK(j1 == j3); } } // check with different start index - packed.insert(packed.begin(), 5, 0xff); - CHECK(j1 == json::from_cbor(packed.begin() + 5, packed.end())); + // packed.insert(packed.begin(), 5, 0xff); + // CHECK(j1 == json::from_ubjson(packed.begin() + 5, packed.end())); } } +*/ -TEST_CASE("CBOR roundtrips", "[hide]") +/* +TEST_CASE("UBJSON roundtrips", "[hide]") { - SECTION("input from flynn") + SECTION("input from py-ubjson") { for (std::string filename : { @@ -1684,13 +1687,13 @@ TEST_CASE("CBOR roundtrips", "[hide]") SECTION("std::vector") { - // parse CBOR file - std::ifstream f_cbor(filename + ".cbor", std::ios::binary); + // parse UBJSON file + std::ifstream f_ubjson(filename + ".ubj", std::ios::binary); std::vector packed( - (std::istreambuf_iterator(f_cbor)), + (std::istreambuf_iterator(f_ubjson)), std::istreambuf_iterator()); json j2; - CHECK_NOTHROW(j2 = json::from_cbor(packed)); + CHECK_NOTHROW(j2 = json::from_ubjson(packed)); // compare parsed JSON values CHECK(j1 == j2); @@ -1698,10 +1701,10 @@ TEST_CASE("CBOR roundtrips", "[hide]") SECTION("std::ifstream") { - // parse CBOR file - std::ifstream f_cbor(filename + ".cbor", std::ios::binary); + // parse UBJSON file + std::ifstream f_ubjson(filename + ".ubj", std::ios::binary); json j2; - CHECK_NOTHROW(j2 = json::from_cbor(f_cbor)); + CHECK_NOTHROW(j2 = json::from_ubjson(f_ubjson)); // compare parsed JSON values CHECK(j1 == j2); @@ -1709,36 +1712,21 @@ TEST_CASE("CBOR roundtrips", "[hide]") SECTION("uint8_t* and size") { - // parse CBOR file - std::ifstream f_cbor(filename + ".cbor", std::ios::binary); + // parse UBJSON file + std::ifstream f_ubjson(filename + ".ubj", std::ios::binary); std::vector packed( - (std::istreambuf_iterator(f_cbor)), + (std::istreambuf_iterator(f_ubjson)), std::istreambuf_iterator()); json j2; - CHECK_NOTHROW(j2 = json::from_cbor({packed.data(), packed.size()})); + CHECK_NOTHROW(j2 = json::from_ubjson({packed.data(), packed.size()})); // compare parsed JSON values CHECK(j1 == j2); } - - SECTION("output to output adapters") - { - // parse CBOR file - std::ifstream f_cbor(filename + ".cbor", std::ios::binary); - std::vector packed( - (std::istreambuf_iterator(f_cbor)), - std::istreambuf_iterator()); - - SECTION("std::vector") - { - std::vector vec; - json::to_cbor(j1, vec); - CHECK(vec == packed); - } - } } } } +*/ TEST_CASE("Universal Binary JSON Specification Examples 1") { From 3ae82d91a20e0ad89b99f3b1c62fbe8c524a45fd Mon Sep 17 00:00:00 2001 From: abolz Date: Mon, 15 Jan 2018 20:38:47 +0100 Subject: [PATCH 059/106] Tests: Floating-point formatting uses lower case 'e' --- test/data/json_roundtrip/roundtrip30.json | 2 +- test/data/json_roundtrip/roundtrip31.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/data/json_roundtrip/roundtrip30.json b/test/data/json_roundtrip/roundtrip30.json index fd357651..e9a26643 100644 --- a/test/data/json_roundtrip/roundtrip30.json +++ b/test/data/json_roundtrip/roundtrip30.json @@ -1 +1 @@ -[1.2345E-30] \ No newline at end of file +[1.2345e-30] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip31.json b/test/data/json_roundtrip/roundtrip31.json index 1428d144..d6f34011 100644 --- a/test/data/json_roundtrip/roundtrip31.json +++ b/test/data/json_roundtrip/roundtrip31.json @@ -1 +1 @@ -[1.2345E+30] \ No newline at end of file +[1.2345e+30] \ No newline at end of file From 107c21a488c1d7bd48f07784a1f617c68a323baf Mon Sep 17 00:00:00 2001 From: abolz Date: Mon, 15 Jan 2018 20:39:00 +0100 Subject: [PATCH 060/106] Tests: Exponents are formatted with a leading '+' sign --- test/data/json_roundtrip/roundtrip27.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/data/json_roundtrip/roundtrip27.json b/test/data/json_roundtrip/roundtrip27.json index 17ce5211..672438c5 100644 --- a/test/data/json_roundtrip/roundtrip27.json +++ b/test/data/json_roundtrip/roundtrip27.json @@ -1 +1 @@ -[1.7976931348623157e308] \ No newline at end of file +[1.7976931348623157e+308] \ No newline at end of file From 6e2e466c27cdb159610d777e1e1f93c9b54aa311 Mon Sep 17 00:00:00 2001 From: abolz Date: Mon, 15 Jan 2018 20:39:16 +0100 Subject: [PATCH 061/106] Tests: Don't rely on the format used for floating-point formatting --- test/src/unit-regression.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index a119ed72..79edab3f 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -785,7 +785,7 @@ TEST_CASE("regression tests") { json j = json::parse("166020696663385964490"); CHECK(j.is_number_float()); - CHECK(j.dump() == "1.66020696663386e+20"); + CHECK(j.get() == static_cast(166020696663385964490.0)); } SECTION("issue #405 - Heap-buffer-overflow (OSS-Fuzz issue 342)") From 68a973673885f03ab28b3aac805af5b3bdd3f863 Mon Sep 17 00:00:00 2001 From: abolz Date: Mon, 15 Jan 2018 20:40:57 +0100 Subject: [PATCH 062/106] Tests: Re-enable some round-trip tests --- test/src/unit-testsuites.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp index aad2b1d8..f88bc9d0 100644 --- a/test/src/unit-testsuites.cpp +++ b/test/src/unit-testsuites.cpp @@ -307,15 +307,15 @@ TEST_CASE("compliance tests from nativejson-benchmark") "test/data/json_roundtrip/roundtrip21.json", "test/data/json_roundtrip/roundtrip22.json", "test/data/json_roundtrip/roundtrip23.json", - //"test/data/json_roundtrip/roundtrip24.json", // roundtrip error - //"test/data/json_roundtrip/roundtrip25.json", // roundtrip error - //"test/data/json_roundtrip/roundtrip26.json", // roundtrip error - //"test/data/json_roundtrip/roundtrip27.json", // roundtrip error - //"test/data/json_roundtrip/roundtrip28.json", // roundtrip error + "test/data/json_roundtrip/roundtrip24.json", + "test/data/json_roundtrip/roundtrip25.json", + "test/data/json_roundtrip/roundtrip26.json", + "test/data/json_roundtrip/roundtrip27.json", + //"test/data/json_roundtrip/roundtrip28.json", // incompatible with roundtrip24 "test/data/json_roundtrip/roundtrip29.json", - //"test/data/json_roundtrip/roundtrip30.json", // roundtrip error - //"test/data/json_roundtrip/roundtrip31.json", // roundtrip error - "test/data/json_roundtrip/roundtrip32.json" + "test/data/json_roundtrip/roundtrip30.json", + "test/data/json_roundtrip/roundtrip31.json" + //"test/data/json_roundtrip/roundtrip32.json" // same as roundtrip31 }) { CAPTURE(filename); From 0695ac4001ca8e7dec68f785ffbe45b289a03105 Mon Sep 17 00:00:00 2001 From: abolz Date: Mon, 15 Jan 2018 20:41:20 +0100 Subject: [PATCH 063/106] Add tests for #360 --- test/src/unit-regression.cpp | 58 ++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 79edab3f..cb19ca7e 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -593,6 +593,64 @@ TEST_CASE("regression tests") "[json.exception.out_of_range.406] number overflow parsing '22e2222'"); } + SECTION("issue #360 - Loss of precision when serializing ") + { + auto check_roundtrip = [](double number) + { + CAPTURE(number); + + json j = number; + CHECK(j.is_number_float()); + + std::stringstream ss; + ss << j; + + CHECK_NOTHROW(ss >> j); + CHECK(j.is_number_float()); + CHECK(j.get() == number); + }; + + check_roundtrip(100000000000.1236); + check_roundtrip(std::numeric_limits::max()); + + // Some more numbers which fail to roundtrip when serialized with digits10 significand digits (instead of max_digits10) + check_roundtrip(1.541888611948064e-17); + check_roundtrip(5.418771028591015e-16); + check_roundtrip(9.398685592608595e-15); + check_roundtrip(8.826843952762347e-14); + check_roundtrip(8.143291313475335e-13); + check_roundtrip(4.851328172762508e-12); + check_roundtrip(6.677850998084358e-11); + check_roundtrip(3.995398518174525e-10); + check_roundtrip(1.960452605645124e-9); + check_roundtrip(3.551812586302883e-8); + check_roundtrip(2.947988411689261e-7); + check_roundtrip(8.210166748056192e-6); + check_roundtrip(6.104889704266753e-5); + check_roundtrip(0.0008629954631330876); + check_roundtrip(0.004936993881051611); + check_roundtrip(0.08309725102608073); + check_roundtrip(0.5210494268499783); + check_roundtrip(6.382927930939767); + check_roundtrip(59.94947245358671); + check_roundtrip(361.0838651266122); + check_roundtrip(4678.354596181877); + check_roundtrip(61412.17658956043); + check_roundtrip(725696.0799057782); + check_roundtrip(2811732.583399828); + check_roundtrip(30178351.07533605); + check_roundtrip(689684880.3235844); + check_roundtrip(5714887673.555147); + check_roundtrip(84652038821.18808); + check_roundtrip(156510583431.7721); + check_roundtrip(5938450569021.732); + check_roundtrip(83623297654460.33); + check_roundtrip(701466573254773.6); + check_roundtrip(1369013370304513); + check_roundtrip(96963648023094720); + check_roundtrip(3.478237409280108e+17); + } + SECTION("issue #366 - json::parse on failed stream gets stuck") { std::ifstream f("file_not_found.json"); From 332f35203398b0274677a0705398b8b0c37974ae Mon Sep 17 00:00:00 2001 From: abolz Date: Mon, 15 Jan 2018 20:45:51 +0100 Subject: [PATCH 064/106] Add an implementation of the Grisu2 algorithm for binary to decimal floating-point conversion This is an attempt to fix #360. The algorithm produces decimal representations which are guaranteed to roundtrip and in ~99.8% actually produces the shortest possible representation. So this is a nice compromise between using a precision of digits10 and max_digits10. Note 1: The implementation only works for IEEE single/double precision numbers. So the old implementation is kept for compatibility with non-IEEE implementations and 'long double'. Note 2: If number_float_t is 'float', not all serialized numbers can be recovered using strtod (strtof works, though). (There is exactly one such number and the result is off by 1 ulp.) This can be avoided by changing the implementation (the fix is trivial), but then the resulting decimal numbers are not exactly short. --- README.md | 4 + develop/detail/conversions/to_chars.hpp | 1027 +++++++++++++++++++++++ 2 files changed, 1031 insertions(+) create mode 100644 develop/detail/conversions/to_chars.hpp diff --git a/README.md b/README.md index d5935755..82f0ba02 100644 --- a/README.md +++ b/README.md @@ -813,6 +813,10 @@ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR I The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed under the [MIT License](http://opensource.org/licenses/MIT) (see above). Copyright © 2008-2009 [Björn Hoehrmann](http://bjoern.hoehrmann.de/) +* * * + +The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the [MIT License](http://opensource.org/licenses/MIT) (see above). Copyright © 2009 [Florian Loitsch](http://florian.loitsch.com/) + ## Contact If you have questions regarding the library, I would like to invite you to [open an issue at GitHub](https://github.com/nlohmann/json/issues/new). Please describe your request, problem, or question as detailed as possible, and also mention the version of the library you are using as well as the version of your compiler and operating system. Opening an issue at GitHub allows other users and contributors to this library to collaborate. For instance, I have little experience with MSVC, and most issues in this regard have been solved by a growing community. If you have a look at the [closed issues](https://github.com/nlohmann/json/issues?q=is%3Aissue+is%3Aclosed), you will see that we react quite timely in most cases. diff --git a/develop/detail/conversions/to_chars.hpp b/develop/detail/conversions/to_chars.hpp new file mode 100644 index 00000000..d5e9feb0 --- /dev/null +++ b/develop/detail/conversions/to_chars.hpp @@ -0,0 +1,1027 @@ +#pragma once + +#include // assert +#include // or, and, not +#include // signbit, isfinite +#include // intN_t, uintN_t +#include // memcpy, memmove + +namespace nlohmann +{ +namespace detail +{ + +// Implements the Grisu2 algorithm for binary to decimal floating-point conversion. +// +// This implementation is a slightly modified version of the reference implementation which may be +// obtained from http://florian.loitsch.com/publications (bench.tar.gz). +// +// The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch. +// +// For a detailed description of the algorithm see: +// +// [1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with Integers", +// Proceedings of the ACM SIGPLAN 2010 Conference on Programming Language Design and Implementation, PLDI 2010 +// [2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", +// Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language Design and Implementation, PLDI 1996 +namespace dtoa_impl +{ + +template +Target reinterpret_bits(Source source) +{ + static_assert(sizeof(Target) == sizeof(Source), "size mismatch"); + + Target target; + std::memcpy(&target, &source, sizeof(Source)); + return target; +} + +struct diyfp // f * 2^e +{ + static constexpr int kPrecision = 64; // = q + + uint64_t f; + int e; + + constexpr diyfp() : f(0), e(0) {} + constexpr diyfp(uint64_t f_, int e_) : f(f_), e(e_) {} + + // Returns x - y. + // PRE: x.e == y.e and x.f >= y.f + static diyfp sub(diyfp x, diyfp y); + + // Returns x * y. + // The result is rounded. (Only the upper q bits are returned.) + static diyfp mul(diyfp x, diyfp y); + + // Normalize x such that the significand is >= 2^(q-1). + // PRE: x.f != 0 + static diyfp normalize(diyfp x); + + // Normalize x such that the result has the exponent E. + // PRE: e >= x.e and the upper e - x.e bits of x.f must be zero. + static diyfp normalize_to(diyfp x, int e); +}; + +inline diyfp diyfp::sub(diyfp x, diyfp y) +{ + assert(x.e == y.e); + assert(x.f >= y.f); + + return diyfp(x.f - y.f, x.e); +} + +inline diyfp diyfp::mul(diyfp x, diyfp y) +{ + static_assert(kPrecision == 64, "internal error"); + + // Computes: + // f = round((x.f * y.f) / 2^q) + // e = x.e + y.e + q + + // Emulate the 64-bit * 64-bit multiplication: + // + // p = u * v + // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi) + // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi ) + // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 ) + // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 ) + // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3) + // = (p0_lo ) + 2^32 (Q ) + 2^64 (H ) + // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H ) + // + // (Since Q might be larger than 2^32 - 1) + // + // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H) + // + // (Q_hi + H does not overflow a 64-bit int) + // + // = p_lo + 2^64 p_hi + + const uint64_t u_lo = x.f & 0xFFFFFFFF; + const uint64_t u_hi = x.f >> 32; + const uint64_t v_lo = y.f & 0xFFFFFFFF; + const uint64_t v_hi = y.f >> 32; + + const uint64_t p0 = u_lo * v_lo; + const uint64_t p1 = u_lo * v_hi; + const uint64_t p2 = u_hi * v_lo; + const uint64_t p3 = u_hi * v_hi; + + const uint64_t p0_hi = p0 >> 32; + const uint64_t p1_lo = p1 & 0xFFFFFFFF; + const uint64_t p1_hi = p1 >> 32; + const uint64_t p2_lo = p2 & 0xFFFFFFFF; + const uint64_t p2_hi = p2 >> 32; + + uint64_t Q = p0_hi + p1_lo + p2_lo; + + // The full product might now be computed as + // + // p_hi = p3 + p2_hi + p1_hi + (Q >> 32) + // p_lo = p0_lo + (Q << 32) + // + // But in this particular case here, the full p_lo is not required. + // Effectively we only need to add the highest bit in p_lo to p_hi (and + // Q_hi + 1 does not overflow). + + Q += uint64_t{1} << (64 - 32 - 1); // round, ties up + + const uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32); + + return diyfp(h, x.e + y.e + 64); +} + +inline diyfp diyfp::normalize(diyfp x) +{ + assert(x.f != 0); + + while ((x.f >> 63) == 0) + { + x.f <<= 1; + x.e--; + } + + return x; +} + +inline diyfp diyfp::normalize_to(diyfp x, int target_exponent) +{ + const int delta = x.e - target_exponent; + + assert(delta >= 0); + assert(((x.f << delta) >> delta) == x.f); + + return diyfp(x.f << delta, target_exponent); +} + +struct boundaries +{ + diyfp w; + diyfp minus; + diyfp plus; +}; + +// Compute the (normalized) diyfp representing the input number 'value' and its boundaries. +// PRE: value must be finite and positive +template +boundaries compute_boundaries(FloatType value) +{ + assert(std::isfinite(value)); + assert(value > 0); + + // Convert the IEEE representation into a diyfp. + // + // If v is denormal: + // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1)) + // If v is normalized: + // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1)) + + static_assert(std::numeric_limits::is_iec559, + "internal error: dtoa_short requires an IEEE-754 floating-point implementation"); + + constexpr int kPrecision = std::numeric_limits::digits; // = p (includes the hidden bit) + constexpr int kBias = std::numeric_limits::max_exponent - 1 + (kPrecision - 1); + constexpr int kMinExp = 1 - kBias; + constexpr uint64_t kHiddenBit = uint64_t{1} << (kPrecision - 1); // = 2^(p-1) + + using bits_type = typename std::conditional< kPrecision == 24, uint32_t, uint64_t >::type; + + const uint64_t bits = reinterpret_bits(value); + const uint64_t E = bits >> (kPrecision - 1); + const uint64_t F = bits & (kHiddenBit - 1); + + const bool is_denormal = (E == 0); + + const diyfp v + = is_denormal + ? diyfp(F, 1 - kBias) + : diyfp(F + kHiddenBit, static_cast(E) - kBias); + + // Compute the boundaries m- and m+ of the floating-point value + // v = f * 2^e. + // + // Determine v- and v+, the floating-point predecessor and successor if v, + // respectively. + // + // v- = v - 2^e if f != 2^(p-1) or e == e_min (A) + // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B) + // + // v+ = v + 2^e + // + // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_ + // between m- and m+ round to v, regardless of how the input rounding + // algorithm breaks ties. + // + // ---+-------------+-------------+-------------+-------------+--- (A) + // v- m- v m+ v+ + // + // -----------------+------+------+-------------+-------------+--- (B) + // v- m- v m+ v+ + + const bool lower_boundary_is_closer = (F == 0 and E > 1); + + const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1); + const diyfp m_minus + = lower_boundary_is_closer + ? diyfp(4 * v.f - 1, v.e - 2) // (B) + : diyfp(2 * v.f - 1, v.e - 1); // (A) + + // Determine the normalized w+ = m+. + const diyfp w_plus = diyfp::normalize(m_plus); + + // Determine w- = m- such that e_(w-) = e_(w+). + const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e); + + return {diyfp::normalize(v), w_minus, w_plus}; +} + +// Given normalized diyfp w, Grisu needs to find a (normalized) cached +// power-of-ten c, such that the exponent of the product c * w = f * 2^e lies +// within a certain range [alpha, gamma] (Definition 3.2 from [1]) +// +// alpha <= e = e_c + e_w + q <= gamma +// +// or +// +// f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q +// <= f_c * f_w * 2^gamma +// +// Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies +// +// 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma +// +// or +// +// 2^(q - 2 + alpha) <= c * w < 2^(q + gamma) +// +// The choice of (alpha,gamma) determines the size of the table and the form of +// the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well +// in practice: +// +// The idea is to cut the number c * w = f * 2^e into two parts, which can be +// processed independently: An integral part p1, and a fractional part p2: +// +// f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e +// = (f div 2^-e) + (f mod 2^-e) * 2^e +// = p1 + p2 * 2^e +// +// The conversion of p1 into decimal form requires a series of divisions and +// modulos by (a power of) 10. These operations are faster for 32-bit than for +// 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be +// achieved by choosing +// +// -e >= 32 or e <= -32 := gamma +// +// In order to convert the fractional part +// +// p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ... +// +// into decimal form, the fraction is repeatedly multiplied by 10 and the digits +// d[-i] are extracted in order: +// +// (10 * p2) div 2^-e = d[-1] +// (10 * p2) mod 2^-e = d[-2] / 10^1 + ... +// +// The multiplication by 10 must not overflow. It is sufficient to choose +// +// 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64. +// +// Since p2 = f mod 2^-e < 2^-e, +// +// -e <= 60 or e >= -60 := alpha + +constexpr int kAlpha = -60; +constexpr int kGamma = -32; + +struct cached_power // c = f * 2^e ~= 10^k +{ + uint64_t f; + int e; + int k; +}; + +// For a normalized diyfp w = f * 2^e, this function returns a (normalized) +// cached power-of-ten c = f_c * 2^e_c, such that the exponent of the product +// w * c satisfies (Definition 3.2 from [1]) +// +// alpha <= e_c + e + q <= gamma. +// +inline cached_power get_cached_power_for_binary_exponent(int e) +{ + // Now + // + // alpha <= e_c + e + q <= gamma (1) + // ==> f_c * 2^alpha <= c * 2^e * 2^q + // + // and since the c's are normalized, 2^(q-1) <= f_c, + // + // ==> 2^(q - 1 + alpha) <= c * 2^(e + q) + // ==> 2^(alpha - e - 1) <= c + // + // If c were an exakt power of ten, i.e. c = 10^k, one may determine k as + // + // k = ceil( log_10( 2^(alpha - e - 1) ) ) + // = ceil( (alpha - e - 1) * log_10(2) ) + // + // From the paper: + // "In theory the result of the procedure could be wrong since c is rounded, + // and the computation itself is approximated [...]. In practice, however, + // this simple function is sufficient." + // + // For IEEE double precision floating-point numbers converted into + // normalized diyfp's w = f * 2^e, with q = 64, + // + // e >= -1022 (min IEEE exponent) + // -52 (p - 1) + // -52 (p - 1, possibly normalize denormal IEEE numbers) + // -11 (normalize the diyfp) + // = -1137 + // + // and + // + // e <= +1023 (max IEEE exponent) + // -52 (p - 1) + // -11 (normalize the diyfp) + // = 960 + // + // This binary exponent range [-1137,960] results in a decimal exponent + // range [-307,324]. One does not need to store a cached power for each + // k in this range. For each such k it suffices to find a cached power + // such that the exponent of the product lies in [alpha,gamma]. + // This implies that the difference of the decimal exponents of adjacent + // table entries must be less than or equal to + // + // floor( (gamma - alpha) * log_10(2) ) = 8. + // + // (A smaller distance gamma-alpha would require a larger table.) + + // NB: + // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34. + + constexpr int kCachedPowersSize = 79; + constexpr int kCachedPowersMinDecExp = -300; + constexpr int kCachedPowersDecStep = 8; + + static constexpr cached_power kCachedPowers[] = + { + { 0xAB70FE17C79AC6CA, -1060, -300 }, + { 0xFF77B1FCBEBCDC4F, -1034, -292 }, + { 0xBE5691EF416BD60C, -1007, -284 }, + { 0x8DD01FAD907FFC3C, -980, -276 }, + { 0xD3515C2831559A83, -954, -268 }, + { 0x9D71AC8FADA6C9B5, -927, -260 }, + { 0xEA9C227723EE8BCB, -901, -252 }, + { 0xAECC49914078536D, -874, -244 }, + { 0x823C12795DB6CE57, -847, -236 }, + { 0xC21094364DFB5637, -821, -228 }, + { 0x9096EA6F3848984F, -794, -220 }, + { 0xD77485CB25823AC7, -768, -212 }, + { 0xA086CFCD97BF97F4, -741, -204 }, + { 0xEF340A98172AACE5, -715, -196 }, + { 0xB23867FB2A35B28E, -688, -188 }, + { 0x84C8D4DFD2C63F3B, -661, -180 }, + { 0xC5DD44271AD3CDBA, -635, -172 }, + { 0x936B9FCEBB25C996, -608, -164 }, + { 0xDBAC6C247D62A584, -582, -156 }, + { 0xA3AB66580D5FDAF6, -555, -148 }, + { 0xF3E2F893DEC3F126, -529, -140 }, + { 0xB5B5ADA8AAFF80B8, -502, -132 }, + { 0x87625F056C7C4A8B, -475, -124 }, + { 0xC9BCFF6034C13053, -449, -116 }, + { 0x964E858C91BA2655, -422, -108 }, + { 0xDFF9772470297EBD, -396, -100 }, + { 0xA6DFBD9FB8E5B88F, -369, -92 }, + { 0xF8A95FCF88747D94, -343, -84 }, + { 0xB94470938FA89BCF, -316, -76 }, + { 0x8A08F0F8BF0F156B, -289, -68 }, + { 0xCDB02555653131B6, -263, -60 }, + { 0x993FE2C6D07B7FAC, -236, -52 }, + { 0xE45C10C42A2B3B06, -210, -44 }, + { 0xAA242499697392D3, -183, -36 }, + { 0xFD87B5F28300CA0E, -157, -28 }, + { 0xBCE5086492111AEB, -130, -20 }, + { 0x8CBCCC096F5088CC, -103, -12 }, + { 0xD1B71758E219652C, -77, -4 }, + { 0x9C40000000000000, -50, 4 }, + { 0xE8D4A51000000000, -24, 12 }, + { 0xAD78EBC5AC620000, 3, 20 }, + { 0x813F3978F8940984, 30, 28 }, + { 0xC097CE7BC90715B3, 56, 36 }, + { 0x8F7E32CE7BEA5C70, 83, 44 }, + { 0xD5D238A4ABE98068, 109, 52 }, + { 0x9F4F2726179A2245, 136, 60 }, + { 0xED63A231D4C4FB27, 162, 68 }, + { 0xB0DE65388CC8ADA8, 189, 76 }, + { 0x83C7088E1AAB65DB, 216, 84 }, + { 0xC45D1DF942711D9A, 242, 92 }, + { 0x924D692CA61BE758, 269, 100 }, + { 0xDA01EE641A708DEA, 295, 108 }, + { 0xA26DA3999AEF774A, 322, 116 }, + { 0xF209787BB47D6B85, 348, 124 }, + { 0xB454E4A179DD1877, 375, 132 }, + { 0x865B86925B9BC5C2, 402, 140 }, + { 0xC83553C5C8965D3D, 428, 148 }, + { 0x952AB45CFA97A0B3, 455, 156 }, + { 0xDE469FBD99A05FE3, 481, 164 }, + { 0xA59BC234DB398C25, 508, 172 }, + { 0xF6C69A72A3989F5C, 534, 180 }, + { 0xB7DCBF5354E9BECE, 561, 188 }, + { 0x88FCF317F22241E2, 588, 196 }, + { 0xCC20CE9BD35C78A5, 614, 204 }, + { 0x98165AF37B2153DF, 641, 212 }, + { 0xE2A0B5DC971F303A, 667, 220 }, + { 0xA8D9D1535CE3B396, 694, 228 }, + { 0xFB9B7CD9A4A7443C, 720, 236 }, + { 0xBB764C4CA7A44410, 747, 244 }, + { 0x8BAB8EEFB6409C1A, 774, 252 }, + { 0xD01FEF10A657842C, 800, 260 }, + { 0x9B10A4E5E9913129, 827, 268 }, + { 0xE7109BFBA19C0C9D, 853, 276 }, + { 0xAC2820D9623BF429, 880, 284 }, + { 0x80444B5E7AA7CF85, 907, 292 }, + { 0xBF21E44003ACDD2D, 933, 300 }, + { 0x8E679C2F5E44FF8F, 960, 308 }, + { 0xD433179D9C8CB841, 986, 316 }, + { 0x9E19DB92B4E31BA9, 1013, 324 }, + }; + + // This computation gives exactly the same results for k as + // k = ceil((kAlpha - e - 1) * 0.30102999566398114) + // for |e| <= 1500, but doesn't require floating-point operations. + // NB: log_10(2) ~= 78913 / 2^18 + assert(e >= -1500); + assert(e <= 1500); + const int f = kAlpha - e - 1; + const int k = (f * 78913) / (1 << 18) + (f > 0); + + const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep; + assert(index >= 0); + assert(index < kCachedPowersSize); + static_cast(kCachedPowersSize); // Fix warning. + + const cached_power cached = kCachedPowers[index]; + assert(kAlpha <= cached.e + e + 64); + assert(kGamma >= cached.e + e + 64); + + return cached; +} + +// For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k. +// For n == 0, returns 1 and sets pow10 := 1. +inline int find_largest_pow10(uint32_t n, uint32_t& pow10) +{ + if (n >= 1000000000) { pow10 = 1000000000; return 10; } + if (n >= 100000000) { pow10 = 100000000; return 9; } + if (n >= 10000000) { pow10 = 10000000; return 8; } + if (n >= 1000000) { pow10 = 1000000; return 7; } + if (n >= 100000) { pow10 = 100000; return 6; } + if (n >= 10000) { pow10 = 10000; return 5; } + if (n >= 1000) { pow10 = 1000; return 4; } + if (n >= 100) { pow10 = 100; return 3; } + if (n >= 10) { pow10 = 10; return 2; } + + pow10 = 1; return 1; +} + +inline void grisu2_round(char* buf, int len, uint64_t dist, uint64_t delta, uint64_t rest, uint64_t ten_k) +{ + assert(len >= 1); + assert(dist <= delta); + assert(rest <= delta); + assert(ten_k > 0); + + // <--------------------------- delta ----> + // <---- dist ---------> + // --------------[------------------+-------------------]-------------- + // M- w M+ + // + // ten_k + // <------> + // <---- rest ----> + // --------------[------------------+----+--------------]-------------- + // w V + // = buf * 10^k + // + // ten_k represents a unit-in-the-last-place in the decimal representation + // stored in buf. + // Decrement buf by ten_k while this takes buf closer to w. + + // The tests are written in this order to avoid overflow in unsigned + // integer arithmetic. + + while (rest < dist + and delta - rest >= ten_k + and (rest + ten_k < dist or dist - rest > rest + ten_k - dist)) + { + assert(buf[len - 1] != '0'); + buf[len - 1]--; + rest += ten_k; + } +} + +// Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+. +// M- and M+ must be normalized and share the same exponent -60 <= e <= -32. +inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus) +{ + static_assert(kAlpha >= -60, "internal error"); + static_assert(kGamma <= -32, "internal error"); + + // Generates the digits (and the exponent) of a decimal floating-point + // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's + // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma. + // + // <--------------------------- delta ----> + // <---- dist ---------> + // --------------[------------------+-------------------]-------------- + // M- w M+ + // + // Grisu2 generates the digits of M+ from left to right and stops as soon as + // V is in [M-,M+]. + + assert(M_plus.e >= kAlpha); + assert(M_plus.e <= kGamma); + + uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e) + uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e) + + // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0): + // + // M+ = f * 2^e + // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e + // = ((p1 ) * 2^-e + (p2 )) * 2^e + // = p1 + p2 * 2^e + + const diyfp one(uint64_t{1} << -M_plus.e, M_plus.e); + + uint32_t p1 = static_cast(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.) + uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e + + // 1) + // + // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0] + + assert(p1 > 0); + + uint32_t pow10; + const int k = find_largest_pow10(p1, pow10); + + // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1) + // + // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1)) + // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1)) + // + // M+ = p1 + p2 * 2^e + // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e + // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e + // = d[k-1] * 10^(k-1) + ( rest) * 2^e + // + // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0) + // + // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0] + // + // but stop as soon as + // + // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e + + int n = k; + while (n > 0) + { + // Invariants: + // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k) + // pow10 = 10^(n-1) <= p1 < 10^n + // + const uint32_t d = p1 / pow10; // d = p1 div 10^(n-1) + const uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1) + // + // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e + // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e) + // + assert(d <= 9); + buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d + // + // M+ = buffer * 10^(n-1) + (r + p2 * 2^e) + // + p1 = r; + n--; + // + // M+ = buffer * 10^n + (p1 + p2 * 2^e) + // pow10 = 10^n + // + + // Now check if enough digits have been generated. + // Compute + // + // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e + // + // Note: + // Since rest and delta share the same exponent e, it suffices to + // compare the significands. + const uint64_t rest = (uint64_t{p1} << -one.e) + p2; + if (rest <= delta) + { + // V = buffer * 10^n, with M- <= V <= M+. + + decimal_exponent += n; + + // We may now just stop. But instead look if the buffer could be + // decremented to bring V closer to w. + // + // pow10 = 10^n is now 1 ulp in the decimal representation V. + // The rounding procedure works with diyfp's with an implicit + // exponent of e. + // + // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e + // + const uint64_t ten_n = uint64_t{pow10} << -one.e; + grisu2_round(buffer, length, dist, delta, rest, ten_n); + + return; + } + + pow10 /= 10; + // + // pow10 = 10^(n-1) <= p1 < 10^n + // Invariants restored. + } + + // 2) + // + // The digits of the integral part have been generated: + // + // M+ = d[k-1]...d[1]d[0] + p2 * 2^e + // = buffer + p2 * 2^e + // + // Now generate the digits of the fractional part p2 * 2^e. + // + // Note: + // No decimal point is generated: the exponent is adjusted instead. + // + // p2 actually represents the fraction + // + // p2 * 2^e + // = p2 / 2^-e + // = d[-1] / 10^1 + d[-2] / 10^2 + ... + // + // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...) + // + // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m + // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...) + // + // using + // + // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e) + // = ( d) * 2^-e + ( r) + // + // or + // 10^m * p2 * 2^e = d + r * 2^e + // + // i.e. + // + // M+ = buffer + p2 * 2^e + // = buffer + 10^-m * (d + r * 2^e) + // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e + // + // and stop as soon as 10^-m * r * 2^e <= delta * 2^e + + assert(p2 > delta); + + int m = 0; + for (;;) + { + // Invariant: + // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e + // = buffer * 10^-m + 10^-m * (p2 ) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e + // + assert(p2 <= UINT64_MAX / 10); + p2 *= 10; + const uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e + const uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e + // + // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e)) + // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e + // + assert(d <= 9); + buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d + // + // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e + // + p2 = r; + m++; + // + // M+ = buffer * 10^-m + 10^-m * p2 * 2^e + // Invariant restored. + + // Check if enough digits have been generated. + // + // 10^-m * p2 * 2^e <= delta * 2^e + // p2 * 2^e <= 10^m * delta * 2^e + // p2 <= 10^m * delta + delta *= 10; + dist *= 10; + if (p2 <= delta) + { + break; + } + } + + // V = buffer * 10^-m, with M- <= V <= M+. + + decimal_exponent -= m; + + // 1 ulp in the decimal representation is now 10^-m. + // Since delta and dist are now scaled by 10^m, we need to do the + // same with ulp in order to keep the units in sync. + // + // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e + // + const uint64_t ten_m = one.f; + grisu2_round(buffer, length, dist, delta, p2, ten_m); + + // By construction this algorithm generates the shortest possible decimal + // number (Loitsch, Theorem 6.2) which rounds back to w. + // For an input number of precision p, at least + // + // N = 1 + ceil(p * log_10(2)) + // + // decimal digits are sufficient to identify all binary floating-point + // numbers (Matula, "In-and-Out conversions"). + // This implies that the algorithm does not produce more than N decimal + // digits. + // + // N = 17 for p = 53 (IEEE double precision) + // N = 9 for p = 24 (IEEE single precision) +} + +// v = buf * 10^decimal_exponent +// len is the length of the buffer (number of decimal digits) +// The buffer must be large enough, i.e. >= max_digits10. +inline void grisu2(char* buf, int& len, int& decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus) +{ + assert(m_plus.e == m_minus.e); + assert(m_plus.e == v.e); + + // --------(-----------------------+-----------------------)-------- (A) + // m- v m+ + // + // --------------------(-----------+-----------------------)-------- (B) + // m- v m+ + // + // First scale v (and m- and m+) such that the exponent is in the range + // [alpha, gamma]. + + const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e); + + const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k + + // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma] + const diyfp w = diyfp::mul(v, c_minus_k); + const diyfp w_minus = diyfp::mul(m_minus, c_minus_k); + const diyfp w_plus = diyfp::mul(m_plus, c_minus_k); + + // ----(---+---)---------------(---+---)---------------(---+---)---- + // w- w w+ + // = c*m- = c*v = c*m+ + // + // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and + // w+ are now off by a small amount. + // In fact: + // + // w - v * 10^k < 1 ulp + // + // To account for this inaccuracy, add resp. subtract 1 ulp. + // + // --------+---[---------------(---+---)---------------]---+-------- + // w- M- w M+ w+ + // + // Now any number in [M-, M+] (bounds included) will round to w when input, + // regardless of how the input rounding algorithm breaks ties. + // + // And digit_gen generates the shortest possible such number in [M-, M+]. + // Note that this does not mean that Grisu2 always generates the shortest + // possible number in the interval (m-, m+). + const diyfp M_minus(w_minus.f + 1, w_minus.e); + const diyfp M_plus (w_plus.f - 1, w_plus.e ); + + decimal_exponent = -cached.k; // = -(-k) = k + + grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus); +} + +// v = buf * 10^decimal_exponent +// len is the length of the buffer (number of decimal digits) +// The buffer must be large enough, i.e. >= max_digits10. +template +void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value) +{ + static_assert(diyfp::kPrecision >= std::numeric_limits::digits + 3, + "internal error: not enough precision"); + + assert(std::isfinite(value)); + assert(value > 0); + + // If the neighbors (and boundaries) of 'value' are always computed for double-precision + // numbers, all float's can be recovered using strtod (and strtof). However, the resulting + // decimal representations are not exactly "short". + // + // The documentation for 'std::to_chars' (http://en.cppreference.com/w/cpp/utility/to_chars) + // says "value is converted to a string as if by std::sprintf in the default ("C") locale" + // and since sprintf promotes float's to double's, I think this is exactly what 'std::to_chars' + // does. + // On the other hand, the documentation for 'std::to_chars' requires that "parsing the + // representation using the corresponding std::from_chars function recovers value exactly". That + // indicates that single precision floating-point numbers should be recovered using + // 'std::strtof'. + // + // NB: If the neighbors are computed for single-precision numbers, there is a single float + // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision + // value is off by 1 ulp. +#if 0 + const boundaries w = compute_boundaries(static_cast(value)); +#else + const boundaries w = compute_boundaries(value); +#endif + + grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus); +} + +// Appends a decimal representation of e to buf. +// Returns a pointer to the element following the exponent. +// PRE: -1000 < e < 1000 +inline char* append_exponent(char* buf, int e) +{ + assert(e > -1000); + assert(e < 1000); + + if (e < 0) + { + e = -e; + *buf++ = '-'; + } + else + { + *buf++ = '+'; + } + + uint32_t k = static_cast(e); + if (k < 10) + { + // Always print at least two digits in the exponent. + // This is for compatibility with printf("%g"). + *buf++ = '0'; + *buf++ = static_cast('0' + k); + } + else if (k < 100) + { + *buf++ = static_cast('0' + k / 10); + k %= 10; + *buf++ = static_cast('0' + k); + } + else + { + *buf++ = static_cast('0' + k / 100); + k %= 100; + *buf++ = static_cast('0' + k / 10); + k %= 10; + *buf++ = static_cast('0' + k); + } + + return buf; +} + +// Prettify v = buf * 10^decimal_exponent +// If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point notation. +// Otherwise it will be printed in exponential notation. +// PRE: min_exp < 0 +// PRE: max_exp > 0 +inline char* format_buffer(char* buf, int len, int decimal_exponent, int min_exp, int max_exp) +{ + assert(min_exp < 0); + assert(max_exp > 0); + + const int k = len; + const int n = len + decimal_exponent; + + // v = buf * 10^(n-k) + // k is the length of the buffer (number of decimal digits) + // n is the position of the decimal point relative to the start of the buffer. + + if (k <= n and n <= max_exp) + { + // digits[000] + // len <= max_exp + 2 + + std::memset(buf + k, '0', static_cast(n - k)); + // Make it look like a floating-point number (#362, #378) + buf[n + 0] = '.'; + buf[n + 1] = '0'; + return buf + (n + 2); + } + + if (0 < n and n <= max_exp) + { + // dig.its + // len <= max_digits10 + 1 + + assert(k > n); + + std::memmove(buf + (n + 1), buf + n, static_cast(k - n)); + buf[n] = '.'; + return buf + (k + 1); + } + + if (min_exp < n and n <= 0) + { + // 0.[000]digits + // len <= 2 + (-min_exp - 1) + max_digits10 + + std::memmove(buf + (2 + -n), buf, static_cast(k)); + buf[0] = '0'; + buf[1] = '.'; + std::memset(buf + 2, '0', static_cast(-n)); + return buf + (2 + (-n) + k); + } + + if (k == 1) + { + // dE+123 + // len <= 1 + 5 + + buf += 1; + } + else + { + // d.igitsE+123 + // len <= max_digits10 + 1 + 5 + + std::memmove(buf + 2, buf + 1, static_cast(k - 1)); + buf[1] = '.'; + buf += 1 + k; + } + + *buf++ = 'e'; + return append_exponent(buf, n - 1); +} + +} // namespace dtoa_impl + +// Generates a decimal representation of the floating-point number value in [first, last). +// +// The format of the resulting decimal representation is similar to printf's %g format. +// Returns an iterator pointing past-the-end of the decimal representation. +// +// Note: The input number must be finite, i.e. NaN's and Inf's are not supported. +// Note: The buffer must be large enough. +// Note: The result is NOT null-terminated. +template +char* to_chars(char* first, char* last, FloatType value) +{ + static_cast(last); // maybe unused - fix warning + assert(std::isfinite(value)); + + // Use signbit(value) instead of (value < 0) since signbit works for -0. + if (std::signbit(value)) + { + value = -value; + *first++ = '-'; + } + + if (value == 0) // +-0 + { + *first++ = '0'; + // Make it look like a floating-point number (#362, #378) + *first++ = '.'; + *first++ = '0'; + return first; + } + + assert(last - first >= std::numeric_limits::max_digits10); + + // Compute v = buffer * 10^decimal_exponent. + // The decimal digits are stored in the buffer, which needs to be interpreted + // as an unsigned decimal integer. + // len is the length of the buffer, i.e. the number of decimal digits. + int len = 0; + int decimal_exponent = 0; + dtoa_impl::grisu2(first, len, decimal_exponent, value); + + assert(len <= std::numeric_limits::max_digits10); + + // Format the buffer like printf("%.*g", prec, value) + constexpr int kMinExp = -4; + // Use digits10 here to increase compatibility with version 2. + constexpr int kMaxExp = std::numeric_limits::digits10; + + assert(last - first >= kMaxExp + 2); + assert(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits::max_digits10); + assert(last - first >= std::numeric_limits::max_digits10 + 6); + + return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp); +} + +} // namespace detail +} // namespace nlohmann From 9f7c2c04c84982403db4b75998e346a5d2afdbca Mon Sep 17 00:00:00 2001 From: abolz Date: Mon, 15 Jan 2018 20:58:02 +0100 Subject: [PATCH 065/106] Use the Grisu2 algorithm for formatting 'float's and 'double's --- develop/detail/serializer.hpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/develop/detail/serializer.hpp b/develop/detail/serializer.hpp index b5f2b06a..59b9a606 100644 --- a/develop/detail/serializer.hpp +++ b/develop/detail/serializer.hpp @@ -14,6 +14,7 @@ #include // string #include // is_same +#include "detail/conversions/to_chars.hpp" #include "detail/macro_scope.hpp" #include "detail/meta.hpp" #include "detail/parsing/output_adapters.hpp" @@ -636,12 +637,34 @@ class serializer void dump_float(number_float_t x) { // NaN / inf - if (not std::isfinite(x) or std::isnan(x)) + if (not std::isfinite(x)) { o->write_characters("null", 4); return; } + // If number_float_t is an IEEE-754 single or double precision number, + // use the Grisu2 algorithm to produce short numbers which are guaranteed + // to round-trip, using strtof and strtod, resp. + // + // NB: The test below works if == . + static constexpr bool is_ieee_single_or_double + = (std::numeric_limits::is_iec559 and std::numeric_limits::digits == 24 and std::numeric_limits::max_exponent == 128) or + (std::numeric_limits::is_iec559 and std::numeric_limits::digits == 53 and std::numeric_limits::max_exponent == 1024); + + dump_float(x, std::integral_constant()); + } + + void dump_float(number_float_t x, std::true_type /*is_ieee_single_or_double*/) + { + char* begin = number_buffer.data(); + char* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x); + + o->write_characters(begin, static_cast(end - begin)); + } + + void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/) + { // get number of digits for a text -> float -> text round-trip static constexpr auto d = std::numeric_limits::digits10; From 787204f076b5ffd5c0b75e1e70d984d0ae32b7a2 Mon Sep 17 00:00:00 2001 From: abolz Date: Mon, 15 Jan 2018 21:13:17 +0100 Subject: [PATCH 066/106] Add unit-tests for detail::to_chars --- test/src/unit-to_chars.cpp | 469 +++++++++++++++++++++++++++++++++++++ 1 file changed, 469 insertions(+) create mode 100644 test/src/unit-to_chars.cpp diff --git a/test/src/unit-to_chars.cpp b/test/src/unit-to_chars.cpp new file mode 100644 index 00000000..c9b326d9 --- /dev/null +++ b/test/src/unit-to_chars.cpp @@ -0,0 +1,469 @@ +/* + __ _____ _____ _____ + __| | __| | | | JSON for Modern C++ (test suite) +| | |__ | | | | | | version 3.0.1 +|_____|_____|_____|_|___| https://github.com/nlohmann/json + +Licensed under the MIT License . +Copyright (c) 2013-2017 Niels Lohmann . + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +// XXX: +// Only compile these tests if 'float' and 'double' are IEEE-754 single- and +// double-precision numbers, resp. + +#include "catch.hpp" + +#include "json.hpp" +using nlohmann::detail::dtoa_impl::reinterpret_bits; + +static float make_float(uint32_t sign_bit, uint32_t biased_exponent, uint32_t significand) +{ + assert(sign_bit == 0 || sign_bit == 1); + assert(biased_exponent <= 0xFF); + assert(significand <= 0x007FFFFF); + + uint32_t bits = 0; + + bits |= sign_bit << 31; + bits |= biased_exponent << 23; + bits |= significand; + + return reinterpret_bits(bits); +} + +// ldexp -- convert f * 2^e to IEEE single precision +static float make_float(uint64_t f, int e) +{ + constexpr uint64_t kHiddenBit = 0x00800000; + constexpr uint64_t kSignificandMask = 0x007FFFFF; + constexpr int kPhysicalSignificandSize = 23; // Excludes the hidden bit. + constexpr int kExponentBias = 0x7F + kPhysicalSignificandSize; + constexpr int kDenormalExponent = 1 - kExponentBias; + constexpr int kMaxExponent = 0xFF - kExponentBias; + + while (f > kHiddenBit + kSignificandMask) { + f >>= 1; + e++; + } + if (e >= kMaxExponent) { + return std::numeric_limits::infinity(); + } + if (e < kDenormalExponent) { + return 0.0; + } + while (e > kDenormalExponent && (f & kHiddenBit) == 0) { + f <<= 1; + e--; + } + + uint64_t biased_exponent; + if (e == kDenormalExponent && (f & kHiddenBit) == 0) + biased_exponent = 0; + else + biased_exponent = static_cast(e + kExponentBias); + + uint64_t bits = (f & kSignificandMask) | (biased_exponent << kPhysicalSignificandSize); + return reinterpret_bits(static_cast(bits)); +} + +static double make_double(uint64_t sign_bit, uint64_t biased_exponent, uint64_t significand) +{ + assert(sign_bit == 0 || sign_bit == 1); + assert(biased_exponent <= 0x7FF); + assert(significand <= 0x000FFFFFFFFFFFFF); + + uint64_t bits = 0; + + bits |= sign_bit << 63; + bits |= biased_exponent << 52; + bits |= significand; + + return reinterpret_bits(bits); +} + +// ldexp -- convert f * 2^e to IEEE double precision +static double make_double(uint64_t f, int e) +{ + constexpr uint64_t kHiddenBit = 0x0010000000000000; + constexpr uint64_t kSignificandMask = 0x000FFFFFFFFFFFFF; + constexpr int kPhysicalSignificandSize = 52; // Excludes the hidden bit. + constexpr int kExponentBias = 0x3FF + kPhysicalSignificandSize; + constexpr int kDenormalExponent = 1 - kExponentBias; + constexpr int kMaxExponent = 0x7FF - kExponentBias; + + while (f > kHiddenBit + kSignificandMask) { + f >>= 1; + e++; + } + if (e >= kMaxExponent) { + return std::numeric_limits::infinity(); + } + if (e < kDenormalExponent) { + return 0.0; + } + while (e > kDenormalExponent && (f & kHiddenBit) == 0) { + f <<= 1; + e--; + } + + uint64_t biased_exponent; + if (e == kDenormalExponent && (f & kHiddenBit) == 0) + biased_exponent = 0; + else + biased_exponent = static_cast(e + kExponentBias); + + uint64_t bits = (f & kSignificandMask) | (biased_exponent << kPhysicalSignificandSize); + return reinterpret_bits(bits); +} + +TEST_CASE("digit gen") +{ + SECTION("single precision") + { + auto check_float = [](float number, const std::string& digits, int expected_exponent) + { + CAPTURE(number); + CAPTURE(digits); + CAPTURE(expected_exponent); + + char buf[32]; + int len = 0; + int exponent = 0; + nlohmann::detail::dtoa_impl::grisu2(buf, len, exponent, number); + + CHECK(digits == std::string(buf, buf + len)); + CHECK(expected_exponent == exponent); + }; + + check_float(make_float(0, 0, 0x00000001), "1", -45); // min denormal + check_float(make_float(0, 0, 0x007FFFFF), "11754942", -45); // max denormal + check_float(make_float(0, 1, 0x00000000), "11754944", -45); // min normal + check_float(make_float(0, 1, 0x00000001), "11754945", -45); + check_float(make_float(0, 1, 0x007FFFFF), "23509886", -45); + check_float(make_float(0, 2, 0x00000000), "23509887", -45); + check_float(make_float(0, 2, 0x00000001), "2350989", -44); + check_float(make_float(0, 24, 0x00000000), "98607613", -39); // fail if no special case in normalized boundaries + check_float(make_float(0, 30, 0x00000000), "63108872", -37); // fail if no special case in normalized boundaries + check_float(make_float(0, 31, 0x00000000), "12621775", -36); // fail if no special case in normalized boundaries + check_float(make_float(0, 57, 0x00000000), "84703295", -29); // fail if no special case in normalized boundaries + check_float(make_float(0, 254, 0x007FFFFE), "34028233", 31); + check_float(make_float(0, 254, 0x007FFFFF), "34028235", 31); // max normal + + // V. Paxson and W. Kahan, "A Program for Testing IEEE Binary-Decimal Conversion", manuscript, May 1991, + // ftp://ftp.ee.lbl.gov/testbase-report.ps.Z (report) + // ftp://ftp.ee.lbl.gov/testbase.tar.Z (program) + + // Table 16: Stress Inputs for Converting 24-bit Binary to Decimal, < 1/2 ULP + check_float(make_float(12676506, -102), "25", -25); + check_float(make_float(12676506, -103), "125", -26); + check_float(make_float(15445013, 86), "1195", 30); + check_float(make_float(13734123, -138), "39415", -39); + check_float(make_float(12428269, -130), "913085", -38); + check_float(make_float(15334037, -146), "1719005", -43); + check_float(make_float(11518287, -41), "52379105", -13); + check_float(make_float(12584953, -145), "2821644", -43); + check_float(make_float(15961084, -125), "37524328", -38); + check_float(make_float(14915817, -146), "16721209", -44); + check_float(make_float(10845484, -102), "21388946", -31); + check_float(make_float(16431059, -61), "7125836", -18); + + // Table 17: Stress Inputs for Converting 24-bit Binary to Decimal, > 1/2 ULP + check_float(make_float(16093626, 69), "95", 26); + check_float(make_float( 9983778, 25), "335", 12); + check_float(make_float(12745034, 104), "2585", 35); + check_float(make_float(12706553, 72), "60005", 24); + check_float(make_float(11005028, 45), "387205", 15); + check_float(make_float(15059547, 71), "3555835", 22); + check_float(make_float(16015691, -99), "25268305", -30); + check_float(make_float( 8667859, 56), "6245851", 17); + check_float(make_float(14855922, -82), "30721327", -25); + check_float(make_float(14855922, -83), "15360663", -25); + check_float(make_float(10144164, -110), "781478", -32); + check_float(make_float(13248074, 95), "52481028", 28); + } + + SECTION("double precision") + { + auto check_double = [](double number, const std::string& digits, int expected_exponent) + { + CAPTURE(number); + CAPTURE(digits); + CAPTURE(expected_exponent); + + char buf[32]; + int len = 0; + int exponent = 0; + nlohmann::detail::dtoa_impl::grisu2(buf, len, exponent, number); + + CHECK(digits == std::string(buf, buf + len)); + CHECK(expected_exponent == exponent); + }; + + check_double(make_double(0, 0, 0x0000000000000001), "5", -324); // min denormal + check_double(make_double(0, 0, 0x000FFFFFFFFFFFFF), "2225073858507201", -323); // max denormal + check_double(make_double(0, 1, 0x0000000000000000), "22250738585072014", -324); // min normal + check_double(make_double(0, 1, 0x0000000000000001), "2225073858507202", -323); + check_double(make_double(0, 1, 0x000FFFFFFFFFFFFF), "44501477170144023", -324); + check_double(make_double(0, 2, 0x0000000000000000), "4450147717014403", -323); + check_double(make_double(0, 2, 0x0000000000000001), "4450147717014404", -323); + check_double(make_double(0, 4, 0x0000000000000000), "17800590868057611", -323); // fail if no special case in normalized boundaries + check_double(make_double(0, 5, 0x0000000000000000), "35601181736115222", -323); // fail if no special case in normalized boundaries + check_double(make_double(0, 6, 0x0000000000000000), "7120236347223045", -322); // fail if no special case in normalized boundaries + check_double(make_double(0, 10, 0x0000000000000000), "11392378155556871", -321); // fail if no special case in normalized boundaries + check_double(make_double(0, 2046, 0x000FFFFFFFFFFFFE), "17976931348623155", 292); + check_double(make_double(0, 2046, 0x000FFFFFFFFFFFFF), "17976931348623157", 292); // max normal + + // Test different paths in DigitGen + check_double( 10000, "1", 4); + check_double( 1200000, "12", 5); + check_double(4.9406564584124654e-324, "5", -324); // exit integral loop + check_double(2.2250738585072009e-308, "2225073858507201", -323); // exit fractional loop + check_double( 1.82877982605164e-99, "182877982605164", -113); + check_double( 1.1505466208671903e-09, "11505466208671903", -25); + check_double( 5.5645893133766722e+20, "5564589313376672", 5); + check_double( 53.034830388866226, "53034830388866226", -15); + check_double( 0.0021066531670178605, "21066531670178605", -19); + + // V. Paxson and W. Kahan, "A Program for Testing IEEE Binary-Decimal Conversion", manuscript, May 1991, + // ftp://ftp.ee.lbl.gov/testbase-report.ps.Z (report) + // ftp://ftp.ee.lbl.gov/testbase.tar.Z (program) + + // Table 3: Stress Inputs for Converting 53-bit Binary to Decimal, < 1/2 ULP + check_double(make_double(8511030020275656, -342) /* 9.5e-088 */, "95", -89); + check_double(make_double(5201988407066741, -824) /* 4.65e-233 */, "465", -235); + check_double(make_double(6406892948269899, +237) /* 1.415e+087 */, "1415", 84); + check_double(make_double(8431154198732492, +72) /* 3.9815e+037 */, "39815", 33); + check_double(make_double(6475049196144587, +99) /* 4.10405e+045 */, "410405", 40); + check_double(make_double(8274307542972842, +726) /* 2.920845e+234 */, "2920845", 228); + check_double(make_double(5381065484265332, -456) /* 2.8919465e-122 */, "28919465", -129); + check_double(make_double(6761728585499734, -1057) /* 4.37877185e-303 */, "437877185", -311); + check_double(make_double(7976538478610756, +376) /* 1.227701635e+129 */, "1227701635", 120); + check_double(make_double(5982403858958067, +377) /* 1.8415524525e+129 */, "18415524525", 119); + check_double(make_double(5536995190630837, +93) /* 5.48357443505e+043 */, "548357443505", 32); + check_double(make_double(7225450889282194, +710) /* 3.891901811465e+229 */, "3891901811465", 217); + check_double(make_double(7225450889282194, +709) /* 1.9459509057325e+229 */, "19459509057325", 216); + check_double(make_double(8703372741147379, +117) /* 1.44609583816055e+051 */, "144609583816055", 37); + check_double(make_double(8944262675275217, -1001) /* 4.173677474585315e-286 */, "4173677474585315", -301); + check_double(make_double(7459803696087692, -707) /* 1.1079507728788885e-197 */, "11079507728788885", -213); + check_double(make_double(6080469016670379, -381) /* 1.234550136632744e-099 */, "1234550136632744", -114); + check_double(make_double(8385515147034757, +721) /* 9.2503171196036502e+232 */, "925031711960365", 218); + check_double(make_double(7514216811389786, -828) /* 4.1980471502848898e-234 */, "419804715028489", -248); + check_double(make_double(8397297803260511, -345) /* 1.1716315319786511e-088 */, "11716315319786511", -104); + check_double(make_double(6733459239310543, +202) /* 4.3281007284461249e+076 */, "4328100728446125", 61); + check_double(make_double(8091450587292794, -473) /* 3.3177101181600311e-127 */, "3317710118160031", -142); + + // Table 4: Stress Inputs for Converting 53-bit Binary to Decimal, > 1/2 ULP + check_double(make_double(6567258882077402, +952) /* 2.5e+302 */, "25", 301); + check_double(make_double(6712731423444934, +535) /* 7.55e+176 */, "755", 174); + check_double(make_double(6712731423444934, +534) /* 3.775e+176 */, "3775", 173); + check_double(make_double(5298405411573037, -957) /* 4.3495e-273 */, "43495", -277); + check_double(make_double(5137311167659507, -144) /* 2.30365e-028 */, "230365", -33); + check_double(make_double(6722280709661868, +363) /* 1.263005e+125 */, "1263005", 119); + check_double(make_double(5344436398034927, -169) /* 7.1422105e-036 */, "71422105", -43); + check_double(make_double(8369123604277281, -853) /* 1.39345735e-241 */, "139345735", -249); + check_double(make_double(8995822108487663, -780) /* 1.414634485e-219 */, "1414634485", -228); + check_double(make_double(8942832835564782, -383) /* 4.5392779195e-100 */, "45392779195", -110); + check_double(make_double(8942832835564782, -384) /* 2.26963895975e-100 */, "226963895975", -111); + check_double(make_double(8942832835564782, -385) /* 1.134819479875e-100 */, "1134819479875", -112); + check_double(make_double(6965949469487146, -249) /* 7.7003665618895e-060 */, "77003665618895", -73); + check_double(make_double(6965949469487146, -250) /* 3.85018328094475e-060 */, "385018328094475", -74); + check_double(make_double(6965949469487146, -251) /* 1.925091640472375e-060 */, "1925091640472375", -75); + check_double(make_double(7487252720986826, +548) /* 6.8985865317742005e+180 */, "68985865317742005", 164); + check_double(make_double(5592117679628511, +164) /* 1.3076622631878654e+065 */, "13076622631878654", 49); + check_double(make_double(8887055249355788, +665) /* 1.3605202075612124e+216 */, "13605202075612124", 200); + check_double(make_double(6994187472632449, +690) /* 3.5928102174759597e+223 */, "35928102174759597", 207); + check_double(make_double(8797576579012143, +588) /* 8.9125197712484552e+192 */, "8912519771248455", 177); + check_double(make_double(7363326733505337, +272) /* 5.5876975736230114e+097 */, "55876975736230114", 81); + check_double(make_double(8549497411294502, -448) /* 1.1762578307285404e-119 */, "11762578307285404", -135); + + // Table 20: Stress Inputs for Converting 56-bit Binary to Decimal, < 1/2 ULP + check_double(make_double(50883641005312716, -172) /* 8.4999999999999993e-036 */, "8499999999999999", -51); + check_double(make_double(38162730753984537, -170) /* 2.5499999999999999e-035 */, "255", -37); + check_double(make_double(50832789069151999, -101) /* 2.0049999999999997e-014 */, "20049999999999997", -30); + check_double(make_double(51822367833714164, -109) /* 7.9844999999999994e-017 */, "7984499999999999", -32); + check_double(make_double(66840152193508133, -172) /* 1.1165499999999999e-035 */, "11165499999999999", -51); + check_double(make_double(55111239245584393, -138) /* 1.581615e-025 */, "1581615", -31); + check_double(make_double(71704866733321482, -112) /* 1.3809855e-017 */, "13809855", -24); + check_double(make_double(67160949328233173, -142) /* 1.2046404499999999e-026 */, "12046404499999999", -42); + check_double(make_double(53237141308040189, -152) /* 9.3251405449999991e-030 */, "9325140544999999", -45); + check_double(make_double(62785329394975786, -112) /* 1.2092014595e-017 */, "12092014595", -27); + check_double(make_double(48367680154689523, -77) /* 3.2007045838499998e-007 */, "320070458385", -18); + check_double(make_double(42552223180606797, -102) /* 8.391946324354999e-015 */, "8391946324354999", -30); + check_double(make_double(63626356173011241, -112) /* 1.2253990460585e-017 */, "12253990460585", -30); + check_double(make_double(43566388595783643, -99) /* 6.8735641489760495e-014 */, "687356414897605", -28); + check_double(make_double(54512669636675272, -159) /* 7.459816430480385e-032 */, "7459816430480385", -47); + check_double(make_double(52306490527514614, -167) /* 2.7960588398142552e-034 */, "2796058839814255", -49); + check_double(make_double(52306490527514614, -168) /* 1.3980294199071276e-034 */, "13980294199071276", -50); + check_double(make_double(41024721590449423, -89) /* 6.6279012373057359e-011 */, "6627901237305736", -26); + check_double(make_double(37664020415894738, -132) /* 6.9177880043968072e-024 */, "6917788004396807", -39); + check_double(make_double(37549883692866294, -93) /* 3.7915693108349708e-012 */, "3791569310834971", -27); + check_double(make_double(69124110374399839, -104) /* 3.4080817676591365e-015 */, "34080817676591365", -31); + check_double(make_double(69124110374399839, -105) /* 1.7040408838295683e-015 */, "17040408838295683", -31); + + // Table 21: Stress Inputs for Converting 56-bit Binary to Decimal, > 1/2 ULP + check_double(make_double(49517601571415211, -94) /* 2.4999999999999998e-012 */, "25", -13); + check_double(make_double(49517601571415211, -95) /* 1.2499999999999999e-012 */, "125", -14); + check_double(make_double(54390733528642804, -133) /* 4.9949999999999996e-024 */, "49949999999999996", -40); // shortest: 4995e-27 + check_double(make_double(71805402319113924, -157) /* 3.9304999999999998e-031 */, "39304999999999998", -47); // shortest: 39305e-35 + check_double(make_double(40435277969631694, -179) /* 5.2770499999999992e-038 */, "5277049999999999", -53); + check_double(make_double(57241991568619049, -165) /* 1.223955e-033 */, "1223955", -39); + check_double(make_double(65224162876242886, +58) /* 1.8799584999999998e+034 */, "18799584999999998", 18); + check_double(make_double(70173376848895368, -138) /* 2.01387715e-025 */, "201387715", -33); + check_double(make_double(37072848117383207, -99) /* 5.8490641049999989e-014 */, "5849064104999999", -29); + check_double(make_double(56845051585389697, -176) /* 5.9349003054999999e-037 */, "59349003055", -47); + check_double(make_double(54791673366936431, -145) /* 1.2284718039499998e-027 */, "12284718039499998", -43); + check_double(make_double(66800318669106231, -169) /* 8.9270767180849991e-035 */, "8927076718084999", -50); + check_double(make_double(66800318669106231, -170) /* 4.4635383590424995e-035 */, "44635383590424995", -51); + check_double(make_double(66574323440112438, -119) /* 1.0016990862549499e-019 */, "10016990862549499", -35); + check_double(make_double(65645179969330963, -173) /* 5.4829412628024647e-036 */, "5482941262802465", -51); + check_double(make_double(61847254334681076, -109) /* 9.5290783281036439e-017 */, "9529078328103644", -32); + check_double(make_double(39990712921393606, -145) /* 8.9662279366405553e-028 */, "8966227936640555", -43); + check_double(make_double(59292318184400283, -149) /* 8.3086234418058538e-029 */, "8308623441805854", -44); + check_double(make_double(69116558615326153, -143) /* 6.1985873566126555e-027 */, "61985873566126555", -43); + check_double(make_double(69116558615326153, -144) /* 3.0992936783063277e-027 */, "30992936783063277", -43); + check_double(make_double(39462549494468513, -152) /* 6.9123512506176015e-030 */, "6912351250617602", -45); + check_double(make_double(39462549494468513, -153) /* 3.4561756253088008e-030 */, "3456175625308801", -45); + } +} + +TEST_CASE("formatting") +{ + SECTION("single precision") + { + auto check_float = [](float number, const std::string& expected) + { + char buf[32]; + char* end = nlohmann::detail::to_chars(buf, buf + 32, number); + std::string actual(buf, end); + + CHECK(actual == expected); + }; + // %.9g + check_float( -1.2345e-22f, "-1.2345e-22" ); // -1.23450004e-22 + check_float( -1.2345e-21f, "-1.2345e-21" ); // -1.23450002e-21 + check_float( -1.2345e-20f, "-1.2345e-20" ); // -1.23450002e-20 + check_float( -1.2345e-19f, "-1.2345e-19" ); // -1.23449999e-19 + check_float( -1.2345e-18f, "-1.2345e-18" ); // -1.23449996e-18 + check_float( -1.2345e-17f, "-1.2345e-17" ); // -1.23449998e-17 + check_float( -1.2345e-16f, "-1.2345e-16" ); // -1.23449996e-16 + check_float( -1.2345e-15f, "-1.2345e-15" ); // -1.23450002e-15 + check_float( -1.2345e-14f, "-1.2345e-14" ); // -1.23450004e-14 + check_float( -1.2345e-13f, "-1.2345e-13" ); // -1.23449997e-13 + check_float( -1.2345e-12f, "-1.2345e-12" ); // -1.23450002e-12 + check_float( -1.2345e-11f, "-1.2345e-11" ); // -1.2345e-11 + check_float( -1.2345e-10f, "-1.2345e-10" ); // -1.2345e-10 + check_float( -1.2345e-9f, "-1.2345e-09" ); // -1.23449995e-09 + check_float( -1.2345e-8f, "-1.2345e-08" ); // -1.23449997e-08 + check_float( -1.2345e-7f, "-1.2345e-07" ); // -1.23449993e-07 + check_float( -1.2345e-6f, "-1.2345e-06" ); // -1.23450002e-06 + check_float( -1.2345e-5f, "-1.2345e-05" ); // -1.2345e-05 + check_float( -1.2345e-4f, "-0.00012345" ); // -0.000123449994 + check_float( -1.2345e-3f, "-0.0012345" ); // -0.00123449997 + check_float( -1.2345e-2f, "-0.012345" ); // -0.0123450002 + check_float( -1.2345e-1f, "-0.12345" ); // -0.123450004 + check_float( -0.0f, "-0.0" ); // -0 + check_float( 0.0f, "0.0" ); // 0 + check_float( 1.2345e+0f, "1.2345" ); // 1.23450005 + check_float( 1.2345e+1f, "12.345" ); // 12.3450003 + check_float( 1.2345e+2f, "123.45" ); // 123.449997 + check_float( 1.2345e+3f, "1234.5" ); // 1234.5 + check_float( 1.2345e+4f, "12345.0" ); // 12345 + check_float( 1.2345e+5f, "123450.0" ); // 123450 + check_float( 1.2345e+6f, "1.2345e+06" ); // 1234500 + check_float( 1.2345e+7f, "1.2345e+07" ); // 12345000 + check_float( 1.2345e+8f, "1.2345e+08" ); // 123450000 + check_float( 1.2345e+9f, "1.2345e+09" ); // 1.23449997e+09 + check_float( 1.2345e+10f, "1.2345e+10" ); // 1.23449999e+10 + check_float( 1.2345e+11f, "1.2345e+11" ); // 1.23449999e+11 + check_float( 1.2345e+12f, "1.2345e+12" ); // 1.23450006e+12 + check_float( 1.2345e+13f, "1.2345e+13" ); // 1.23449995e+13 + check_float( 1.2345e+14f, "1.2345e+14" ); // 1.23450002e+14 + check_float( 1.2345e+15f, "1.2345e+15" ); // 1.23450003e+15 + check_float( 1.2345e+16f, "1.2345e+16" ); // 1.23449998e+16 + check_float( 1.2345e+17f, "1.2345e+17" ); // 1.23449996e+17 + check_float( 1.2345e+18f, "1.2345e+18" ); // 1.23450004e+18 + check_float( 1.2345e+19f, "1.2345e+19" ); // 1.23449999e+19 + check_float( 1.2345e+20f, "1.2345e+20" ); // 1.23449999e+20 + check_float( 1.2345e+21f, "1.2345e+21" ); // 1.23449999e+21 + check_float( 1.2345e+22f, "1.2345e+22" ); // 1.23450005e+22 + } + + SECTION("double precision") + { + auto check_double = [](double number, const std::string& expected) + { + char buf[32]; + char* end = nlohmann::detail::to_chars(buf, buf + 32, number); + std::string actual(buf, end); + + CHECK(actual == expected); + }; + // dtoa %.15g %.17g shortest + check_double( -1.2345e-22, "-1.2345e-22" ); // -1.2345e-22 -1.2345000000000001e-22 -1.2345e-22 + check_double( -1.2345e-21, "-1.2345e-21" ); // -1.2345e-21 -1.2345000000000001e-21 -1.2345e-21 + check_double( -1.2345e-20, "-1.2345e-20" ); // -1.2345e-20 -1.2345e-20 -1.2345e-20 + check_double( -1.2345e-19, "-1.2345e-19" ); // -1.2345e-19 -1.2345000000000001e-19 -1.2345e-19 + check_double( -1.2345e-18, "-1.2345e-18" ); // -1.2345e-18 -1.2345000000000001e-18 -1.2345e-18 + check_double( -1.2345e-17, "-1.2345e-17" ); // -1.2345e-17 -1.2345e-17 -1.2345e-17 + check_double( -1.2345e-16, "-1.2345e-16" ); // -1.2345e-16 -1.2344999999999999e-16 -1.2345e-16 + check_double( -1.2345e-15, "-1.2345e-15" ); // -1.2345e-15 -1.2345e-15 -1.2345e-15 + check_double( -1.2345e-14, "-1.2345e-14" ); // -1.2345e-14 -1.2345e-14 -1.2345e-14 + check_double( -1.2345e-13, "-1.2345e-13" ); // -1.2345e-13 -1.2344999999999999e-13 -1.2345e-13 + check_double( -1.2345e-12, "-1.2345e-12" ); // -1.2345e-12 -1.2345e-12 -1.2345e-12 + check_double( -1.2345e-11, "-1.2345e-11" ); // -1.2345e-11 -1.2345e-11 -1.2345e-11 + check_double( -1.2345e-10, "-1.2345e-10" ); // -1.2345e-10 -1.2345e-10 -1.2345e-10 + check_double( -1.2345e-9, "-1.2345e-09" ); // -1.2345e-09 -1.2345e-09 -1.2345e-9 + check_double( -1.2345e-8, "-1.2345e-08" ); // -1.2345e-08 -1.2345000000000001e-08 -1.2345e-8 + check_double( -1.2345e-7, "-1.2345e-07" ); // -1.2345e-07 -1.2345000000000001e-07 -1.2345e-7 + check_double( -1.2345e-6, "-1.2345e-06" ); // -1.2345e-06 -1.2345e-06 -1.2345e-6 + check_double( -1.2345e-5, "-1.2345e-05" ); // -1.2345e-05 -1.2345e-05 -1.2345e-5 + check_double( -1.2345e-4, "-0.00012345" ); // -0.00012345 -0.00012344999999999999 -0.00012345 + check_double( -1.2345e-3, "-0.0012345" ); // -0.0012345 -0.0012344999999999999 -0.0012345 + check_double( -1.2345e-2, "-0.012345" ); // -0.012345 -0.012345 -0.012345 + check_double( -1.2345e-1, "-0.12345" ); // -0.12345 -0.12345 -0.12345 + check_double( -0.0, "-0.0" ); // -0 -0 -0 + check_double( 0.0, "0.0" ); // 0 0 0 + check_double( 1.2345e+0, "1.2345" ); // 1.2345 1.2344999999999999 1.2345 + check_double( 1.2345e+1, "12.345" ); // 12.345 12.345000000000001 12.345 + check_double( 1.2345e+2, "123.45" ); // 123.45 123.45 123.45 + check_double( 1.2345e+3, "1234.5" ); // 1234.5 1234.5 1234.5 + check_double( 1.2345e+4, "12345.0" ); // 12345 12345 12345 + check_double( 1.2345e+5, "123450.0" ); // 123450 123450 123450 + check_double( 1.2345e+6, "1234500.0" ); // 1234500 1234500 1234500 + check_double( 1.2345e+7, "12345000.0" ); // 12345000 12345000 12345000 + check_double( 1.2345e+8, "123450000.0" ); // 123450000 123450000 123450000 + check_double( 1.2345e+9, "1234500000.0" ); // 1234500000 1234500000 1234500000 + check_double( 1.2345e+10, "12345000000.0" ); // 12345000000 12345000000 12345000000 + check_double( 1.2345e+11, "123450000000.0" ); // 123450000000 123450000000 123450000000 + check_double( 1.2345e+12, "1234500000000.0" ); // 1234500000000 1234500000000 1234500000000 + check_double( 1.2345e+13, "12345000000000.0" ); // 12345000000000 12345000000000 12345000000000 + check_double( 1.2345e+14, "123450000000000.0" ); // 123450000000000 123450000000000 123450000000000 + check_double( 1.2345e+15, "1.2345e+15" ); // 1.2345e+15 1234500000000000 1.2345e15 + check_double( 1.2345e+16, "1.2345e+16" ); // 1.2345e+16 12345000000000000 1.2345e16 + check_double( 1.2345e+17, "1.2345e+17" ); // 1.2345e+17 1.2345e+17 1.2345e17 + check_double( 1.2345e+18, "1.2345e+18" ); // 1.2345e+18 1.2345e+18 1.2345e18 + check_double( 1.2345e+19, "1.2345e+19" ); // 1.2345e+19 1.2345e+19 1.2345e19 + check_double( 1.2345e+20, "1.2345e+20" ); // 1.2345e+20 1.2345e+20 1.2345e20 + check_double( 1.2345e+21, "1.2344999999999999e+21" ); // 1.2345e+21 1.2344999999999999e+21 1.2345e21 + check_double( 1.2345e+22, "1.2345e+22" ); // 1.2345e+22 1.2345e+22 1.2345e22 + } +} From 810f81bbd9263777ed75693aa2161c88940fa7ee Mon Sep 17 00:00:00 2001 From: abolz Date: Mon, 15 Jan 2018 21:24:59 +0100 Subject: [PATCH 067/106] Regenerate src/json.hpp --- src/json.hpp | 1053 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1052 insertions(+), 1 deletion(-) diff --git a/src/json.hpp b/src/json.hpp index a80cc36a..e1d09f22 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -6453,6 +6453,1035 @@ class binary_writer #include // string #include // is_same +// #include "detail/conversions/to_chars.hpp" + + +#include // assert +#include // or, and, not +#include // signbit, isfinite +#include // intN_t, uintN_t +#include // memcpy, memmove + +namespace nlohmann +{ +namespace detail +{ + +// Implements the Grisu2 algorithm for binary to decimal floating-point conversion. +// +// This implementation is a slightly modified version of the reference implementation which may be +// obtained from http://florian.loitsch.com/publications (bench.tar.gz). +// +// The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch. +// +// For a detailed description of the algorithm see: +// +// [1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with Integers", +// Proceedings of the ACM SIGPLAN 2010 Conference on Programming Language Design and Implementation, PLDI 2010 +// [2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", +// Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language Design and Implementation, PLDI 1996 +namespace dtoa_impl +{ + +template +Target reinterpret_bits(Source source) +{ + static_assert(sizeof(Target) == sizeof(Source), "size mismatch"); + + Target target; + std::memcpy(&target, &source, sizeof(Source)); + return target; +} + +struct diyfp // f * 2^e +{ + static constexpr int kPrecision = 64; // = q + + uint64_t f; + int e; + + constexpr diyfp() : f(0), e(0) {} + constexpr diyfp(uint64_t f_, int e_) : f(f_), e(e_) {} + + // Returns x - y. + // PRE: x.e == y.e and x.f >= y.f + static diyfp sub(diyfp x, diyfp y); + + // Returns x * y. + // The result is rounded. (Only the upper q bits are returned.) + static diyfp mul(diyfp x, diyfp y); + + // Normalize x such that the significand is >= 2^(q-1). + // PRE: x.f != 0 + static diyfp normalize(diyfp x); + + // Normalize x such that the result has the exponent E. + // PRE: e >= x.e and the upper e - x.e bits of x.f must be zero. + static diyfp normalize_to(diyfp x, int e); +}; + +inline diyfp diyfp::sub(diyfp x, diyfp y) +{ + assert(x.e == y.e); + assert(x.f >= y.f); + + return diyfp(x.f - y.f, x.e); +} + +inline diyfp diyfp::mul(diyfp x, diyfp y) +{ + static_assert(kPrecision == 64, "internal error"); + + // Computes: + // f = round((x.f * y.f) / 2^q) + // e = x.e + y.e + q + + // Emulate the 64-bit * 64-bit multiplication: + // + // p = u * v + // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi) + // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi ) + // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 ) + // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 ) + // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3) + // = (p0_lo ) + 2^32 (Q ) + 2^64 (H ) + // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H ) + // + // (Since Q might be larger than 2^32 - 1) + // + // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H) + // + // (Q_hi + H does not overflow a 64-bit int) + // + // = p_lo + 2^64 p_hi + + const uint64_t u_lo = x.f & 0xFFFFFFFF; + const uint64_t u_hi = x.f >> 32; + const uint64_t v_lo = y.f & 0xFFFFFFFF; + const uint64_t v_hi = y.f >> 32; + + const uint64_t p0 = u_lo * v_lo; + const uint64_t p1 = u_lo * v_hi; + const uint64_t p2 = u_hi * v_lo; + const uint64_t p3 = u_hi * v_hi; + + const uint64_t p0_hi = p0 >> 32; + const uint64_t p1_lo = p1 & 0xFFFFFFFF; + const uint64_t p1_hi = p1 >> 32; + const uint64_t p2_lo = p2 & 0xFFFFFFFF; + const uint64_t p2_hi = p2 >> 32; + + uint64_t Q = p0_hi + p1_lo + p2_lo; + + // The full product might now be computed as + // + // p_hi = p3 + p2_hi + p1_hi + (Q >> 32) + // p_lo = p0_lo + (Q << 32) + // + // But in this particular case here, the full p_lo is not required. + // Effectively we only need to add the highest bit in p_lo to p_hi (and + // Q_hi + 1 does not overflow). + + Q += uint64_t{1} << (64 - 32 - 1); // round, ties up + + const uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32); + + return diyfp(h, x.e + y.e + 64); +} + +inline diyfp diyfp::normalize(diyfp x) +{ + assert(x.f != 0); + + while ((x.f >> 63) == 0) + { + x.f <<= 1; + x.e--; + } + + return x; +} + +inline diyfp diyfp::normalize_to(diyfp x, int target_exponent) +{ + const int delta = x.e - target_exponent; + + assert(delta >= 0); + assert(((x.f << delta) >> delta) == x.f); + + return diyfp(x.f << delta, target_exponent); +} + +struct boundaries +{ + diyfp w; + diyfp minus; + diyfp plus; +}; + +// Compute the (normalized) diyfp representing the input number 'value' and its boundaries. +// PRE: value must be finite and positive +template +boundaries compute_boundaries(FloatType value) +{ + assert(std::isfinite(value)); + assert(value > 0); + + // Convert the IEEE representation into a diyfp. + // + // If v is denormal: + // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1)) + // If v is normalized: + // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1)) + + static_assert(std::numeric_limits::is_iec559, + "internal error: dtoa_short requires an IEEE-754 floating-point implementation"); + + constexpr int kPrecision = std::numeric_limits::digits; // = p (includes the hidden bit) + constexpr int kBias = std::numeric_limits::max_exponent - 1 + (kPrecision - 1); + constexpr int kMinExp = 1 - kBias; + constexpr uint64_t kHiddenBit = uint64_t{1} << (kPrecision - 1); // = 2^(p-1) + + using bits_type = typename std::conditional< kPrecision == 24, uint32_t, uint64_t >::type; + + const uint64_t bits = reinterpret_bits(value); + const uint64_t E = bits >> (kPrecision - 1); + const uint64_t F = bits & (kHiddenBit - 1); + + const bool is_denormal = (E == 0); + + const diyfp v + = is_denormal + ? diyfp(F, 1 - kBias) + : diyfp(F + kHiddenBit, static_cast(E) - kBias); + + // Compute the boundaries m- and m+ of the floating-point value + // v = f * 2^e. + // + // Determine v- and v+, the floating-point predecessor and successor if v, + // respectively. + // + // v- = v - 2^e if f != 2^(p-1) or e == e_min (A) + // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B) + // + // v+ = v + 2^e + // + // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_ + // between m- and m+ round to v, regardless of how the input rounding + // algorithm breaks ties. + // + // ---+-------------+-------------+-------------+-------------+--- (A) + // v- m- v m+ v+ + // + // -----------------+------+------+-------------+-------------+--- (B) + // v- m- v m+ v+ + + const bool lower_boundary_is_closer = (F == 0 and E > 1); + + const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1); + const diyfp m_minus + = lower_boundary_is_closer + ? diyfp(4 * v.f - 1, v.e - 2) // (B) + : diyfp(2 * v.f - 1, v.e - 1); // (A) + + // Determine the normalized w+ = m+. + const diyfp w_plus = diyfp::normalize(m_plus); + + // Determine w- = m- such that e_(w-) = e_(w+). + const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e); + + return {diyfp::normalize(v), w_minus, w_plus}; +} + +// Given normalized diyfp w, Grisu needs to find a (normalized) cached +// power-of-ten c, such that the exponent of the product c * w = f * 2^e lies +// within a certain range [alpha, gamma] (Definition 3.2 from [1]) +// +// alpha <= e = e_c + e_w + q <= gamma +// +// or +// +// f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q +// <= f_c * f_w * 2^gamma +// +// Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies +// +// 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma +// +// or +// +// 2^(q - 2 + alpha) <= c * w < 2^(q + gamma) +// +// The choice of (alpha,gamma) determines the size of the table and the form of +// the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well +// in practice: +// +// The idea is to cut the number c * w = f * 2^e into two parts, which can be +// processed independently: An integral part p1, and a fractional part p2: +// +// f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e +// = (f div 2^-e) + (f mod 2^-e) * 2^e +// = p1 + p2 * 2^e +// +// The conversion of p1 into decimal form requires a series of divisions and +// modulos by (a power of) 10. These operations are faster for 32-bit than for +// 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be +// achieved by choosing +// +// -e >= 32 or e <= -32 := gamma +// +// In order to convert the fractional part +// +// p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ... +// +// into decimal form, the fraction is repeatedly multiplied by 10 and the digits +// d[-i] are extracted in order: +// +// (10 * p2) div 2^-e = d[-1] +// (10 * p2) mod 2^-e = d[-2] / 10^1 + ... +// +// The multiplication by 10 must not overflow. It is sufficient to choose +// +// 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64. +// +// Since p2 = f mod 2^-e < 2^-e, +// +// -e <= 60 or e >= -60 := alpha + +constexpr int kAlpha = -60; +constexpr int kGamma = -32; + +struct cached_power // c = f * 2^e ~= 10^k +{ + uint64_t f; + int e; + int k; +}; + +// For a normalized diyfp w = f * 2^e, this function returns a (normalized) +// cached power-of-ten c = f_c * 2^e_c, such that the exponent of the product +// w * c satisfies (Definition 3.2 from [1]) +// +// alpha <= e_c + e + q <= gamma. +// +inline cached_power get_cached_power_for_binary_exponent(int e) +{ + // Now + // + // alpha <= e_c + e + q <= gamma (1) + // ==> f_c * 2^alpha <= c * 2^e * 2^q + // + // and since the c's are normalized, 2^(q-1) <= f_c, + // + // ==> 2^(q - 1 + alpha) <= c * 2^(e + q) + // ==> 2^(alpha - e - 1) <= c + // + // If c were an exakt power of ten, i.e. c = 10^k, one may determine k as + // + // k = ceil( log_10( 2^(alpha - e - 1) ) ) + // = ceil( (alpha - e - 1) * log_10(2) ) + // + // From the paper: + // "In theory the result of the procedure could be wrong since c is rounded, + // and the computation itself is approximated [...]. In practice, however, + // this simple function is sufficient." + // + // For IEEE double precision floating-point numbers converted into + // normalized diyfp's w = f * 2^e, with q = 64, + // + // e >= -1022 (min IEEE exponent) + // -52 (p - 1) + // -52 (p - 1, possibly normalize denormal IEEE numbers) + // -11 (normalize the diyfp) + // = -1137 + // + // and + // + // e <= +1023 (max IEEE exponent) + // -52 (p - 1) + // -11 (normalize the diyfp) + // = 960 + // + // This binary exponent range [-1137,960] results in a decimal exponent + // range [-307,324]. One does not need to store a cached power for each + // k in this range. For each such k it suffices to find a cached power + // such that the exponent of the product lies in [alpha,gamma]. + // This implies that the difference of the decimal exponents of adjacent + // table entries must be less than or equal to + // + // floor( (gamma - alpha) * log_10(2) ) = 8. + // + // (A smaller distance gamma-alpha would require a larger table.) + + // NB: + // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34. + + constexpr int kCachedPowersSize = 79; + constexpr int kCachedPowersMinDecExp = -300; + constexpr int kCachedPowersDecStep = 8; + + static constexpr cached_power kCachedPowers[] = + { + { 0xAB70FE17C79AC6CA, -1060, -300 }, + { 0xFF77B1FCBEBCDC4F, -1034, -292 }, + { 0xBE5691EF416BD60C, -1007, -284 }, + { 0x8DD01FAD907FFC3C, -980, -276 }, + { 0xD3515C2831559A83, -954, -268 }, + { 0x9D71AC8FADA6C9B5, -927, -260 }, + { 0xEA9C227723EE8BCB, -901, -252 }, + { 0xAECC49914078536D, -874, -244 }, + { 0x823C12795DB6CE57, -847, -236 }, + { 0xC21094364DFB5637, -821, -228 }, + { 0x9096EA6F3848984F, -794, -220 }, + { 0xD77485CB25823AC7, -768, -212 }, + { 0xA086CFCD97BF97F4, -741, -204 }, + { 0xEF340A98172AACE5, -715, -196 }, + { 0xB23867FB2A35B28E, -688, -188 }, + { 0x84C8D4DFD2C63F3B, -661, -180 }, + { 0xC5DD44271AD3CDBA, -635, -172 }, + { 0x936B9FCEBB25C996, -608, -164 }, + { 0xDBAC6C247D62A584, -582, -156 }, + { 0xA3AB66580D5FDAF6, -555, -148 }, + { 0xF3E2F893DEC3F126, -529, -140 }, + { 0xB5B5ADA8AAFF80B8, -502, -132 }, + { 0x87625F056C7C4A8B, -475, -124 }, + { 0xC9BCFF6034C13053, -449, -116 }, + { 0x964E858C91BA2655, -422, -108 }, + { 0xDFF9772470297EBD, -396, -100 }, + { 0xA6DFBD9FB8E5B88F, -369, -92 }, + { 0xF8A95FCF88747D94, -343, -84 }, + { 0xB94470938FA89BCF, -316, -76 }, + { 0x8A08F0F8BF0F156B, -289, -68 }, + { 0xCDB02555653131B6, -263, -60 }, + { 0x993FE2C6D07B7FAC, -236, -52 }, + { 0xE45C10C42A2B3B06, -210, -44 }, + { 0xAA242499697392D3, -183, -36 }, + { 0xFD87B5F28300CA0E, -157, -28 }, + { 0xBCE5086492111AEB, -130, -20 }, + { 0x8CBCCC096F5088CC, -103, -12 }, + { 0xD1B71758E219652C, -77, -4 }, + { 0x9C40000000000000, -50, 4 }, + { 0xE8D4A51000000000, -24, 12 }, + { 0xAD78EBC5AC620000, 3, 20 }, + { 0x813F3978F8940984, 30, 28 }, + { 0xC097CE7BC90715B3, 56, 36 }, + { 0x8F7E32CE7BEA5C70, 83, 44 }, + { 0xD5D238A4ABE98068, 109, 52 }, + { 0x9F4F2726179A2245, 136, 60 }, + { 0xED63A231D4C4FB27, 162, 68 }, + { 0xB0DE65388CC8ADA8, 189, 76 }, + { 0x83C7088E1AAB65DB, 216, 84 }, + { 0xC45D1DF942711D9A, 242, 92 }, + { 0x924D692CA61BE758, 269, 100 }, + { 0xDA01EE641A708DEA, 295, 108 }, + { 0xA26DA3999AEF774A, 322, 116 }, + { 0xF209787BB47D6B85, 348, 124 }, + { 0xB454E4A179DD1877, 375, 132 }, + { 0x865B86925B9BC5C2, 402, 140 }, + { 0xC83553C5C8965D3D, 428, 148 }, + { 0x952AB45CFA97A0B3, 455, 156 }, + { 0xDE469FBD99A05FE3, 481, 164 }, + { 0xA59BC234DB398C25, 508, 172 }, + { 0xF6C69A72A3989F5C, 534, 180 }, + { 0xB7DCBF5354E9BECE, 561, 188 }, + { 0x88FCF317F22241E2, 588, 196 }, + { 0xCC20CE9BD35C78A5, 614, 204 }, + { 0x98165AF37B2153DF, 641, 212 }, + { 0xE2A0B5DC971F303A, 667, 220 }, + { 0xA8D9D1535CE3B396, 694, 228 }, + { 0xFB9B7CD9A4A7443C, 720, 236 }, + { 0xBB764C4CA7A44410, 747, 244 }, + { 0x8BAB8EEFB6409C1A, 774, 252 }, + { 0xD01FEF10A657842C, 800, 260 }, + { 0x9B10A4E5E9913129, 827, 268 }, + { 0xE7109BFBA19C0C9D, 853, 276 }, + { 0xAC2820D9623BF429, 880, 284 }, + { 0x80444B5E7AA7CF85, 907, 292 }, + { 0xBF21E44003ACDD2D, 933, 300 }, + { 0x8E679C2F5E44FF8F, 960, 308 }, + { 0xD433179D9C8CB841, 986, 316 }, + { 0x9E19DB92B4E31BA9, 1013, 324 }, + }; + + // This computation gives exactly the same results for k as + // k = ceil((kAlpha - e - 1) * 0.30102999566398114) + // for |e| <= 1500, but doesn't require floating-point operations. + // NB: log_10(2) ~= 78913 / 2^18 + assert(e >= -1500); + assert(e <= 1500); + const int f = kAlpha - e - 1; + const int k = (f * 78913) / (1 << 18) + (f > 0); + + const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep; + assert(index >= 0); + assert(index < kCachedPowersSize); + static_cast(kCachedPowersSize); // Fix warning. + + const cached_power cached = kCachedPowers[index]; + assert(kAlpha <= cached.e + e + 64); + assert(kGamma >= cached.e + e + 64); + + return cached; +} + +// For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k. +// For n == 0, returns 1 and sets pow10 := 1. +inline int find_largest_pow10(uint32_t n, uint32_t& pow10) +{ + if (n >= 1000000000) { pow10 = 1000000000; return 10; } + if (n >= 100000000) { pow10 = 100000000; return 9; } + if (n >= 10000000) { pow10 = 10000000; return 8; } + if (n >= 1000000) { pow10 = 1000000; return 7; } + if (n >= 100000) { pow10 = 100000; return 6; } + if (n >= 10000) { pow10 = 10000; return 5; } + if (n >= 1000) { pow10 = 1000; return 4; } + if (n >= 100) { pow10 = 100; return 3; } + if (n >= 10) { pow10 = 10; return 2; } + + pow10 = 1; return 1; +} + +inline void grisu2_round(char* buf, int len, uint64_t dist, uint64_t delta, uint64_t rest, uint64_t ten_k) +{ + assert(len >= 1); + assert(dist <= delta); + assert(rest <= delta); + assert(ten_k > 0); + + // <--------------------------- delta ----> + // <---- dist ---------> + // --------------[------------------+-------------------]-------------- + // M- w M+ + // + // ten_k + // <------> + // <---- rest ----> + // --------------[------------------+----+--------------]-------------- + // w V + // = buf * 10^k + // + // ten_k represents a unit-in-the-last-place in the decimal representation + // stored in buf. + // Decrement buf by ten_k while this takes buf closer to w. + + // The tests are written in this order to avoid overflow in unsigned + // integer arithmetic. + + while (rest < dist + and delta - rest >= ten_k + and (rest + ten_k < dist or dist - rest > rest + ten_k - dist)) + { + assert(buf[len - 1] != '0'); + buf[len - 1]--; + rest += ten_k; + } +} + +// Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+. +// M- and M+ must be normalized and share the same exponent -60 <= e <= -32. +inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus) +{ + static_assert(kAlpha >= -60, "internal error"); + static_assert(kGamma <= -32, "internal error"); + + // Generates the digits (and the exponent) of a decimal floating-point + // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's + // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma. + // + // <--------------------------- delta ----> + // <---- dist ---------> + // --------------[------------------+-------------------]-------------- + // M- w M+ + // + // Grisu2 generates the digits of M+ from left to right and stops as soon as + // V is in [M-,M+]. + + assert(M_plus.e >= kAlpha); + assert(M_plus.e <= kGamma); + + uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e) + uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e) + + // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0): + // + // M+ = f * 2^e + // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e + // = ((p1 ) * 2^-e + (p2 )) * 2^e + // = p1 + p2 * 2^e + + const diyfp one(uint64_t{1} << -M_plus.e, M_plus.e); + + uint32_t p1 = static_cast(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.) + uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e + + // 1) + // + // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0] + + assert(p1 > 0); + + uint32_t pow10; + const int k = find_largest_pow10(p1, pow10); + + // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1) + // + // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1)) + // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1)) + // + // M+ = p1 + p2 * 2^e + // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e + // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e + // = d[k-1] * 10^(k-1) + ( rest) * 2^e + // + // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0) + // + // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0] + // + // but stop as soon as + // + // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e + + int n = k; + while (n > 0) + { + // Invariants: + // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k) + // pow10 = 10^(n-1) <= p1 < 10^n + // + const uint32_t d = p1 / pow10; // d = p1 div 10^(n-1) + const uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1) + // + // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e + // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e) + // + assert(d <= 9); + buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d + // + // M+ = buffer * 10^(n-1) + (r + p2 * 2^e) + // + p1 = r; + n--; + // + // M+ = buffer * 10^n + (p1 + p2 * 2^e) + // pow10 = 10^n + // + + // Now check if enough digits have been generated. + // Compute + // + // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e + // + // Note: + // Since rest and delta share the same exponent e, it suffices to + // compare the significands. + const uint64_t rest = (uint64_t{p1} << -one.e) + p2; + if (rest <= delta) + { + // V = buffer * 10^n, with M- <= V <= M+. + + decimal_exponent += n; + + // We may now just stop. But instead look if the buffer could be + // decremented to bring V closer to w. + // + // pow10 = 10^n is now 1 ulp in the decimal representation V. + // The rounding procedure works with diyfp's with an implicit + // exponent of e. + // + // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e + // + const uint64_t ten_n = uint64_t{pow10} << -one.e; + grisu2_round(buffer, length, dist, delta, rest, ten_n); + + return; + } + + pow10 /= 10; + // + // pow10 = 10^(n-1) <= p1 < 10^n + // Invariants restored. + } + + // 2) + // + // The digits of the integral part have been generated: + // + // M+ = d[k-1]...d[1]d[0] + p2 * 2^e + // = buffer + p2 * 2^e + // + // Now generate the digits of the fractional part p2 * 2^e. + // + // Note: + // No decimal point is generated: the exponent is adjusted instead. + // + // p2 actually represents the fraction + // + // p2 * 2^e + // = p2 / 2^-e + // = d[-1] / 10^1 + d[-2] / 10^2 + ... + // + // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...) + // + // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m + // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...) + // + // using + // + // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e) + // = ( d) * 2^-e + ( r) + // + // or + // 10^m * p2 * 2^e = d + r * 2^e + // + // i.e. + // + // M+ = buffer + p2 * 2^e + // = buffer + 10^-m * (d + r * 2^e) + // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e + // + // and stop as soon as 10^-m * r * 2^e <= delta * 2^e + + assert(p2 > delta); + + int m = 0; + for (;;) + { + // Invariant: + // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e + // = buffer * 10^-m + 10^-m * (p2 ) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e + // + assert(p2 <= UINT64_MAX / 10); + p2 *= 10; + const uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e + const uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e + // + // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e)) + // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e + // + assert(d <= 9); + buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d + // + // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e + // + p2 = r; + m++; + // + // M+ = buffer * 10^-m + 10^-m * p2 * 2^e + // Invariant restored. + + // Check if enough digits have been generated. + // + // 10^-m * p2 * 2^e <= delta * 2^e + // p2 * 2^e <= 10^m * delta * 2^e + // p2 <= 10^m * delta + delta *= 10; + dist *= 10; + if (p2 <= delta) + { + break; + } + } + + // V = buffer * 10^-m, with M- <= V <= M+. + + decimal_exponent -= m; + + // 1 ulp in the decimal representation is now 10^-m. + // Since delta and dist are now scaled by 10^m, we need to do the + // same with ulp in order to keep the units in sync. + // + // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e + // + const uint64_t ten_m = one.f; + grisu2_round(buffer, length, dist, delta, p2, ten_m); + + // By construction this algorithm generates the shortest possible decimal + // number (Loitsch, Theorem 6.2) which rounds back to w. + // For an input number of precision p, at least + // + // N = 1 + ceil(p * log_10(2)) + // + // decimal digits are sufficient to identify all binary floating-point + // numbers (Matula, "In-and-Out conversions"). + // This implies that the algorithm does not produce more than N decimal + // digits. + // + // N = 17 for p = 53 (IEEE double precision) + // N = 9 for p = 24 (IEEE single precision) +} + +// v = buf * 10^decimal_exponent +// len is the length of the buffer (number of decimal digits) +// The buffer must be large enough, i.e. >= max_digits10. +inline void grisu2(char* buf, int& len, int& decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus) +{ + assert(m_plus.e == m_minus.e); + assert(m_plus.e == v.e); + + // --------(-----------------------+-----------------------)-------- (A) + // m- v m+ + // + // --------------------(-----------+-----------------------)-------- (B) + // m- v m+ + // + // First scale v (and m- and m+) such that the exponent is in the range + // [alpha, gamma]. + + const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e); + + const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k + + // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma] + const diyfp w = diyfp::mul(v, c_minus_k); + const diyfp w_minus = diyfp::mul(m_minus, c_minus_k); + const diyfp w_plus = diyfp::mul(m_plus, c_minus_k); + + // ----(---+---)---------------(---+---)---------------(---+---)---- + // w- w w+ + // = c*m- = c*v = c*m+ + // + // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and + // w+ are now off by a small amount. + // In fact: + // + // w - v * 10^k < 1 ulp + // + // To account for this inaccuracy, add resp. subtract 1 ulp. + // + // --------+---[---------------(---+---)---------------]---+-------- + // w- M- w M+ w+ + // + // Now any number in [M-, M+] (bounds included) will round to w when input, + // regardless of how the input rounding algorithm breaks ties. + // + // And digit_gen generates the shortest possible such number in [M-, M+]. + // Note that this does not mean that Grisu2 always generates the shortest + // possible number in the interval (m-, m+). + const diyfp M_minus(w_minus.f + 1, w_minus.e); + const diyfp M_plus (w_plus.f - 1, w_plus.e ); + + decimal_exponent = -cached.k; // = -(-k) = k + + grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus); +} + +// v = buf * 10^decimal_exponent +// len is the length of the buffer (number of decimal digits) +// The buffer must be large enough, i.e. >= max_digits10. +template +void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value) +{ + static_assert(diyfp::kPrecision >= std::numeric_limits::digits + 3, + "internal error: not enough precision"); + + assert(std::isfinite(value)); + assert(value > 0); + + // If the neighbors (and boundaries) of 'value' are always computed for double-precision + // numbers, all float's can be recovered using strtod (and strtof). However, the resulting + // decimal representations are not exactly "short". + // + // The documentation for 'std::to_chars' (http://en.cppreference.com/w/cpp/utility/to_chars) + // says "value is converted to a string as if by std::sprintf in the default ("C") locale" + // and since sprintf promotes float's to double's, I think this is exactly what 'std::to_chars' + // does. + // On the other hand, the documentation for 'std::to_chars' requires that "parsing the + // representation using the corresponding std::from_chars function recovers value exactly". That + // indicates that single precision floating-point numbers should be recovered using + // 'std::strtof'. + // + // NB: If the neighbors are computed for single-precision numbers, there is a single float + // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision + // value is off by 1 ulp. +#if 0 + const boundaries w = compute_boundaries(static_cast(value)); +#else + const boundaries w = compute_boundaries(value); +#endif + + grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus); +} + +// Appends a decimal representation of e to buf. +// Returns a pointer to the element following the exponent. +// PRE: -1000 < e < 1000 +inline char* append_exponent(char* buf, int e) +{ + assert(e > -1000); + assert(e < 1000); + + if (e < 0) + { + e = -e; + *buf++ = '-'; + } + else + { + *buf++ = '+'; + } + + uint32_t k = static_cast(e); + if (k < 10) + { + // Always print at least two digits in the exponent. + // This is for compatibility with printf("%g"). + *buf++ = '0'; + *buf++ = static_cast('0' + k); + } + else if (k < 100) + { + *buf++ = static_cast('0' + k / 10); + k %= 10; + *buf++ = static_cast('0' + k); + } + else + { + *buf++ = static_cast('0' + k / 100); + k %= 100; + *buf++ = static_cast('0' + k / 10); + k %= 10; + *buf++ = static_cast('0' + k); + } + + return buf; +} + +// Prettify v = buf * 10^decimal_exponent +// If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point notation. +// Otherwise it will be printed in exponential notation. +// PRE: min_exp < 0 +// PRE: max_exp > 0 +inline char* format_buffer(char* buf, int len, int decimal_exponent, int min_exp, int max_exp) +{ + assert(min_exp < 0); + assert(max_exp > 0); + + const int k = len; + const int n = len + decimal_exponent; + + // v = buf * 10^(n-k) + // k is the length of the buffer (number of decimal digits) + // n is the position of the decimal point relative to the start of the buffer. + + if (k <= n and n <= max_exp) + { + // digits[000] + // len <= max_exp + 2 + + std::memset(buf + k, '0', static_cast(n - k)); + // Make it look like a floating-point number (#362, #378) + buf[n + 0] = '.'; + buf[n + 1] = '0'; + return buf + (n + 2); + } + + if (0 < n and n <= max_exp) + { + // dig.its + // len <= max_digits10 + 1 + + assert(k > n); + + std::memmove(buf + (n + 1), buf + n, static_cast(k - n)); + buf[n] = '.'; + return buf + (k + 1); + } + + if (min_exp < n and n <= 0) + { + // 0.[000]digits + // len <= 2 + (-min_exp - 1) + max_digits10 + + std::memmove(buf + (2 + -n), buf, static_cast(k)); + buf[0] = '0'; + buf[1] = '.'; + std::memset(buf + 2, '0', static_cast(-n)); + return buf + (2 + (-n) + k); + } + + if (k == 1) + { + // dE+123 + // len <= 1 + 5 + + buf += 1; + } + else + { + // d.igitsE+123 + // len <= max_digits10 + 1 + 5 + + std::memmove(buf + 2, buf + 1, static_cast(k - 1)); + buf[1] = '.'; + buf += 1 + k; + } + + *buf++ = 'e'; + return append_exponent(buf, n - 1); +} + +} // namespace dtoa_impl + +// Generates a decimal representation of the floating-point number value in [first, last). +// +// The format of the resulting decimal representation is similar to printf's %g format. +// Returns an iterator pointing past-the-end of the decimal representation. +// +// Note: The input number must be finite, i.e. NaN's and Inf's are not supported. +// Note: The buffer must be large enough. +// Note: The result is NOT null-terminated. +template +char* to_chars(char* first, char* last, FloatType value) +{ + static_cast(last); // maybe unused - fix warning + assert(std::isfinite(value)); + + // Use signbit(value) instead of (value < 0) since signbit works for -0. + if (std::signbit(value)) + { + value = -value; + *first++ = '-'; + } + + if (value == 0) // +-0 + { + *first++ = '0'; + // Make it look like a floating-point number (#362, #378) + *first++ = '.'; + *first++ = '0'; + return first; + } + + assert(last - first >= std::numeric_limits::max_digits10); + + // Compute v = buffer * 10^decimal_exponent. + // The decimal digits are stored in the buffer, which needs to be interpreted + // as an unsigned decimal integer. + // len is the length of the buffer, i.e. the number of decimal digits. + int len = 0; + int decimal_exponent = 0; + dtoa_impl::grisu2(first, len, decimal_exponent, value); + + assert(len <= std::numeric_limits::max_digits10); + + // Format the buffer like printf("%.*g", prec, value) + constexpr int kMinExp = -4; + // Use digits10 here to increase compatibility with version 2. + constexpr int kMaxExp = std::numeric_limits::digits10; + + assert(last - first >= kMaxExp + 2); + assert(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits::max_digits10); + assert(last - first >= std::numeric_limits::max_digits10 + 6); + + return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp); +} + +} // namespace detail +} // namespace nlohmann + // #include "detail/macro_scope.hpp" // #include "detail/meta.hpp" @@ -7079,12 +8108,34 @@ class serializer void dump_float(number_float_t x) { // NaN / inf - if (not std::isfinite(x) or std::isnan(x)) + if (not std::isfinite(x)) { o->write_characters("null", 4); return; } + // If number_float_t is an IEEE-754 single or double precision number, + // use the Grisu2 algorithm to produce short numbers which are guaranteed + // to round-trip, using strtof and strtod, resp. + // + // NB: The test below works if == . + static constexpr bool is_ieee_single_or_double + = (std::numeric_limits::is_iec559 and std::numeric_limits::digits == 24 and std::numeric_limits::max_exponent == 128) or + (std::numeric_limits::is_iec559 and std::numeric_limits::digits == 53 and std::numeric_limits::max_exponent == 1024); + + dump_float(x, std::integral_constant()); + } + + void dump_float(number_float_t x, std::true_type /*is_ieee_single_or_double*/) + { + char* begin = number_buffer.data(); + char* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x); + + o->write_characters(begin, static_cast(end - begin)); + } + + void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/) + { // get number of digits for a text -> float -> text round-trip static constexpr auto d = std::numeric_limits::digits10; From 9b9919d4608f13153c36f83bf24055a2fad6be83 Mon Sep 17 00:00:00 2001 From: abolz Date: Mon, 15 Jan 2018 21:26:03 +0100 Subject: [PATCH 068/106] Use max_digits10 in dump_float for float->text->float round-trip --- develop/detail/serializer.hpp | 4 ++-- src/json.hpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/develop/detail/serializer.hpp b/develop/detail/serializer.hpp index 59b9a606..76958435 100644 --- a/develop/detail/serializer.hpp +++ b/develop/detail/serializer.hpp @@ -665,8 +665,8 @@ class serializer void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/) { - // get number of digits for a text -> float -> text round-trip - static constexpr auto d = std::numeric_limits::digits10; + // get number of digits for a float -> text -> float round-trip + static constexpr auto d = std::numeric_limits::max_digits10; // the actual conversion std::ptrdiff_t len = snprintf(number_buffer.data(), number_buffer.size(), "%.*g", d, x); diff --git a/src/json.hpp b/src/json.hpp index e1d09f22..d01ec000 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -8136,8 +8136,8 @@ class serializer void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/) { - // get number of digits for a text -> float -> text round-trip - static constexpr auto d = std::numeric_limits::digits10; + // get number of digits for a float -> text -> float round-trip + static constexpr auto d = std::numeric_limits::max_digits10; // the actual conversion std::ptrdiff_t len = snprintf(number_buffer.data(), number_buffer.size(), "%.*g", d, x); From b182308eff76fa95dd28613241cad7541c24f7ac Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 16 Jan 2018 20:40:24 +0100 Subject: [PATCH 069/106] :hammer: cleanup --- develop/detail/exceptions.hpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/develop/detail/exceptions.hpp b/develop/detail/exceptions.hpp index 8eee702a..26c4d6f9 100644 --- a/develop/detail/exceptions.hpp +++ b/develop/detail/exceptions.hpp @@ -1,5 +1,4 @@ -#ifndef NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP -#define NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP +#pragma once #include // exception #include // runtime_error @@ -327,5 +326,3 @@ class other_error : public exception }; } } - -#endif From afe4571309f16b7115d87bed47bd15a9e5fd44e7 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 16 Jan 2018 20:41:04 +0100 Subject: [PATCH 070/106] :hammer: cleanup + some noexcept --- develop/detail/iterators/iteration_proxy.hpp | 2 +- .../detail/iterators/primitive_iterator.hpp | 38 ++++++++----------- develop/detail/macro_scope.hpp | 4 +- develop/json.hpp | 19 ++++++---- 4 files changed, 28 insertions(+), 35 deletions(-) diff --git a/develop/detail/iterators/iteration_proxy.hpp b/develop/detail/iterators/iteration_proxy.hpp index 296101c8..08b32caf 100644 --- a/develop/detail/iterators/iteration_proxy.hpp +++ b/develop/detail/iterators/iteration_proxy.hpp @@ -79,7 +79,7 @@ template class iteration_proxy public: /// construct iteration proxy from a container - explicit iteration_proxy(typename IteratorType::reference cont) + explicit iteration_proxy(typename IteratorType::reference cont) noexcept : container(cont) {} /// return iterator begin (needed for range-based for) diff --git a/develop/detail/iterators/primitive_iterator.hpp b/develop/detail/iterators/primitive_iterator.hpp index fd2a00cb..db0b1e7c 100644 --- a/develop/detail/iterators/primitive_iterator.hpp +++ b/develop/detail/iterators/primitive_iterator.hpp @@ -1,9 +1,7 @@ #pragma once -#include // not #include // ptrdiff_t #include // numeric_limits -#include // ostream namespace nlohmann { @@ -20,9 +18,15 @@ end_value (`1`) models past the end. */ class primitive_iterator_t { - public: + private: using difference_type = std::ptrdiff_t; + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; + /// iterator as signed integer type + difference_type m_it = (std::numeric_limits::min)(); + + public: constexpr difference_type get_value() const noexcept { return m_it; @@ -62,10 +66,10 @@ class primitive_iterator_t return lhs.m_it < rhs.m_it; } - primitive_iterator_t operator+(difference_type i) + primitive_iterator_t operator+(difference_type n) noexcept { auto result = *this; - result += i; + result += n; return result; } @@ -74,55 +78,43 @@ class primitive_iterator_t return lhs.m_it - rhs.m_it; } - friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) - { - return os << it.m_it; - } - - primitive_iterator_t& operator++() + primitive_iterator_t& operator++() noexcept { ++m_it; return *this; } - primitive_iterator_t const operator++(int) + primitive_iterator_t const operator++(int) noexcept { auto result = *this; m_it++; return result; } - primitive_iterator_t& operator--() + primitive_iterator_t& operator--() noexcept { --m_it; return *this; } - primitive_iterator_t const operator--(int) + primitive_iterator_t const operator--(int) noexcept { auto result = *this; m_it--; return result; } - primitive_iterator_t& operator+=(difference_type n) + primitive_iterator_t& operator+=(difference_type n) noexcept { m_it += n; return *this; } - primitive_iterator_t& operator-=(difference_type n) + primitive_iterator_t& operator-=(difference_type n) noexcept { m_it -= n; return *this; } - - private: - static constexpr difference_type begin_value = 0; - static constexpr difference_type end_value = begin_value + 1; - - /// iterator as signed integer type - difference_type m_it = (std::numeric_limits::min)(); }; } } diff --git a/develop/detail/macro_scope.hpp b/develop/detail/macro_scope.hpp index f8936025..8316c077 100644 --- a/develop/detail/macro_scope.hpp +++ b/develop/detail/macro_scope.hpp @@ -1,7 +1,5 @@ #pragma once -#include // not - // This file contains all internal macro definitions // You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them @@ -38,7 +36,7 @@ #endif // allow to disable exceptions -#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION) +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) #define JSON_THROW(exception) throw exception #define JSON_TRY try #define JSON_CATCH(exception) catch(exception) diff --git a/develop/json.hpp b/develop/json.hpp index f4c139e4..320900e3 100644 --- a/develop/json.hpp +++ b/develop/json.hpp @@ -1301,7 +1301,7 @@ class basic_json array = create(std::move(value)); } - void destroy(value_t t) + void destroy(value_t t) noexcept { switch (t) { @@ -1346,7 +1346,7 @@ class basic_json value is changed, because the invariant expresses a relationship between @a m_type and @a m_value. */ - void assert_invariant() const + void assert_invariant() const noexcept { assert(m_type != value_t::object or m_value.object != nullptr); assert(m_type != value_t::array or m_value.array != nullptr); @@ -2140,7 +2140,7 @@ class basic_json @since version 1.0.0 */ - ~basic_json() + ~basic_json() noexcept { assert_invariant(); m_value.destroy(m_type); @@ -4481,7 +4481,7 @@ class basic_json @note The name of this function is not yet final and may change in the future. */ - static iteration_proxy iterator_wrapper(reference ref) + static iteration_proxy iterator_wrapper(reference ref) noexcept { return iteration_proxy(ref); } @@ -4489,7 +4489,7 @@ class basic_json /*! @copydoc iterator_wrapper(reference) */ - static iteration_proxy iterator_wrapper(const_reference ref) + static iteration_proxy iterator_wrapper(const_reference ref) noexcept { return iteration_proxy(ref); } @@ -4531,7 +4531,8 @@ class basic_json @endcode @note When iterating over an array, `key()` will return the index of the - element as string (see example). + element as string (see example). For primitive types (e.g., numbers), + `key()` returns an empty string. @return iteration proxy object wrapping @a ref with an interface to use in range-based for loops @@ -4542,8 +4543,10 @@ class basic_json changes in the JSON value. @complexity Constant. + + @since version 3.x.x. */ - iteration_proxy items() + iteration_proxy items() noexcept { return iteration_proxy(*this); } @@ -4551,7 +4554,7 @@ class basic_json /*! @copydoc items() */ - iteration_proxy items() const + iteration_proxy items() const noexcept { return iteration_proxy(*this); } From 7456f1d87b2e6e2a62272d884dd09136c52b9447 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 16 Jan 2018 20:42:00 +0100 Subject: [PATCH 071/106] :recycle: re-used existing UTF-8 decoder to simplfy string serialization --- develop/detail/serializer.hpp | 465 +++++++++-------------------- src/json.hpp | 533 +++++++++++----------------------- 2 files changed, 307 insertions(+), 691 deletions(-) diff --git a/develop/detail/serializer.hpp b/develop/detail/serializer.hpp index b5f2b06a..91ce4987 100644 --- a/develop/detail/serializer.hpp +++ b/develop/detail/serializer.hpp @@ -34,6 +34,9 @@ class serializer using number_float_t = typename BasicJsonType::number_float_t; using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + static constexpr uint8_t UTF8_ACCEPT = 0; + static constexpr uint8_t UTF8_REJECT = 1; + public: /*! @param[in] s output stream to serialize to @@ -43,7 +46,8 @@ class serializer : o(std::move(s)), loc(std::localeconv()), thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep)), decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point)), - indent_char(ichar), indent_string(512, indent_char) {} + indent_char(ichar), indent_string(512, indent_char) + {} // delete because of pointer members serializer(const serializer&) = delete; @@ -259,171 +263,6 @@ class serializer } private: - /*! - @brief returns the number of expected bytes following in UTF-8 string - - @param[in] u the first byte of a UTF-8 string - @return the number of expected bytes following - */ - static constexpr std::size_t bytes_following(const uint8_t u) - { - return ((u <= 127) ? 0 - : ((192 <= u and u <= 223) ? 1 - : ((224 <= u and u <= 239) ? 2 - : ((240 <= u and u <= 247) ? 3 : std::string::npos)))); - } - - /*! - @brief calculates the extra space to escape a JSON string - - @param[in] s the string to escape - @param[in] ensure_ascii whether to escape non-ASCII characters with - \uXXXX sequences - @return the number of characters required to escape string @a s - - @complexity Linear in the length of string @a s. - */ - static std::size_t extra_space(const string_t& s, - const bool ensure_ascii) noexcept - { - std::size_t res = 0; - - for (std::size_t i = 0; i < s.size(); ++i) - { - switch (s[i]) - { - // control characters that can be escaped with a backslash - case '"': - case '\\': - case '\b': - case '\f': - case '\n': - case '\r': - case '\t': - { - // from c (1 byte) to \x (2 bytes) - res += 1; - break; - } - - // control characters that need \uxxxx escaping - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x0B: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - { - // from c (1 byte) to \uxxxx (6 bytes) - res += 5; - break; - } - - default: - { - if (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F)) - { - const auto bytes = bytes_following(static_cast(s[i])); - // invalid characters will be detected by throw_if_invalid_utf8 - assert (bytes != std::string::npos); - - if (bytes == 3) - { - // codepoints that need 4 bytes (i.e., 3 additional - // bytes) in UTF-8 need a surrogate pair when \u - // escaping is used: from 4 bytes to \uxxxx\uxxxx - // (12 bytes) - res += (12 - bytes - 1); - } - else - { - // from x bytes to \uxxxx (6 bytes) - res += (6 - bytes - 1); - } - - // skip the additional bytes - i += bytes; - } - break; - } - } - } - - return res; - } - - static void escape_codepoint(int codepoint, string_t& result, std::size_t& pos) - { - // expecting a proper codepoint - assert(0x00 <= codepoint and codepoint <= 0x10FFFF); - - // the last written character was the backslash before the 'u' - assert(result[pos] == '\\'); - - // write the 'u' - result[++pos] = 'u'; - - // convert a number 0..15 to its hex representation (0..f) - static const std::array hexify = - { - { - '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' - } - }; - - if (codepoint < 0x10000) - { - // codepoints U+0000..U+FFFF can be represented as \uxxxx. - result[++pos] = hexify[(codepoint >> 12) & 0x0F]; - result[++pos] = hexify[(codepoint >> 8) & 0x0F]; - result[++pos] = hexify[(codepoint >> 4) & 0x0F]; - result[++pos] = hexify[codepoint & 0x0F]; - } - else - { - // codepoints U+10000..U+10FFFF need a surrogate pair to be - // represented as \uxxxx\uxxxx. - // http://www.unicode.org/faq/utf_bom.html#utf16-4 - codepoint -= 0x10000; - const int high_surrogate = 0xD800 | ((codepoint >> 10) & 0x3FF); - const int low_surrogate = 0xDC00 | (codepoint & 0x3FF); - result[++pos] = hexify[(high_surrogate >> 12) & 0x0F]; - result[++pos] = hexify[(high_surrogate >> 8) & 0x0F]; - result[++pos] = hexify[(high_surrogate >> 4) & 0x0F]; - result[++pos] = hexify[high_surrogate & 0x0F]; - ++pos; // backslash is already in output - result[++pos] = 'u'; - result[++pos] = hexify[(low_surrogate >> 12) & 0x0F]; - result[++pos] = hexify[(low_surrogate >> 8) & 0x0F]; - result[++pos] = hexify[(low_surrogate >> 4) & 0x0F]; - result[++pos] = hexify[low_surrogate & 0x0F]; - } - - ++pos; - } - /*! @brief dump escaped string @@ -438,145 +277,145 @@ class serializer @complexity Linear in the length of string @a s. */ - void dump_escaped(const string_t& s, const bool ensure_ascii) const + void dump_escaped(const string_t& s, const bool ensure_ascii) { - throw_if_invalid_utf8(s); - - const auto space = extra_space(s, ensure_ascii); - if (space == 0) - { - o->write_characters(s.c_str(), s.size()); - return; - } - - // create a result string of necessary size - string_t result(s.size() + space, '\\'); - std::size_t pos = 0; + uint32_t codepoint; + uint8_t state = UTF8_ACCEPT; + std::size_t bytes = 0; // number of bytes written to string_buffer for (std::size_t i = 0; i < s.size(); ++i) { - switch (s[i]) + const auto byte = static_cast(s[i]); + + switch (decode(state, codepoint, byte)) { - case '"': // quotation mark (0x22) + case UTF8_ACCEPT: // decode found a new code point { - result[pos + 1] = '"'; - pos += 2; - break; - } - - case '\\': // reverse solidus (0x5C) - { - // nothing to change - pos += 2; - break; - } - - case '\b': // backspace (0x08) - { - result[pos + 1] = 'b'; - pos += 2; - break; - } - - case '\f': // formfeed (0x0C) - { - result[pos + 1] = 'f'; - pos += 2; - break; - } - - case '\n': // newline (0x0A) - { - result[pos + 1] = 'n'; - pos += 2; - break; - } - - case '\r': // carriage return (0x0D) - { - result[pos + 1] = 'r'; - pos += 2; - break; - } - - case '\t': // horizontal tab (0x09) - { - result[pos + 1] = 't'; - pos += 2; - break; - } - - default: - { - // escape control characters (0x00..0x1F) or, if - // ensure_ascii parameter is used, non-ASCII characters - if ((0x00 <= s[i] and s[i] <= 0x1F) or - (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F))) + switch (codepoint) { - const auto bytes = bytes_following(static_cast(s[i])); - // invalid characters will be detected by throw_if_invalid_utf8 - assert (bytes != std::string::npos); - - // check that the additional bytes are present - assert(i + bytes < s.size()); - - // to use \uxxxx escaping, we first need to calculate - // the codepoint from the UTF-8 bytes - int codepoint = 0; - - // bytes is unsigned type: - assert(bytes <= 3); - switch (bytes) + case 0x08: // backspace { - case 0: - { - codepoint = s[i] & 0xFF; - break; - } - - case 1: - { - codepoint = ((s[i] & 0x3F) << 6) - + (s[i + 1] & 0x7F); - break; - } - - case 2: - { - codepoint = ((s[i] & 0x1F) << 12) - + ((s[i + 1] & 0x7F) << 6) - + (s[i + 2] & 0x7F); - break; - } - - case 3: - { - codepoint = ((s[i] & 0xF) << 18) - + ((s[i + 1] & 0x7F) << 12) - + ((s[i + 2] & 0x7F) << 6) - + (s[i + 3] & 0x7F); - break; - } - - default: - break; // LCOV_EXCL_LINE + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'b'; + break; } - escape_codepoint(codepoint, result, pos); - i += bytes; + case 0x09: // horizontal tab + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 't'; + break; + } + + case 0x0A: // newline + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'n'; + break; + } + + case 0x0C: // formfeed + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'f'; + break; + } + + case 0x0D: // carriage return + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'r'; + break; + } + + case 0x22: // quotation mark + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = '\"'; + break; + } + + case 0x5C: // reverse solidus + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = '\\'; + break; + } + + default: + { + // escape control characters (0x00..0x1F) or, if + // ensure_ascii parameter is used, non-ASCII characters + if ((codepoint <= 0x1F) or (ensure_ascii and (codepoint >= 0x7F))) + { + if (codepoint <= 0xFFFF) + { + std::snprintf(string_buffer.data() + bytes, 7, "\\u%04x", codepoint); + bytes += 6; + } + else + { + std::snprintf(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x", + (0xD7C0 + (codepoint >> 10)), + (0xDC00 + (codepoint & 0x3FF))); + bytes += 12; + } + } + else + { + // copy byte to buffer (all previous bytes + // been copied have in default case above) + string_buffer[bytes++] = s[i]; + } + break; + } } - else + + // write buffer and reset index; there must be 13 bytes + // left, as this is the maximal number of bytes to be + // written ("\uxxxx\uxxxx\0") for one code point + if (string_buffer.size() - bytes < 13) { - // all other characters are added as-is - result[pos++] = s[i]; + o->write_characters(string_buffer.data(), bytes); + bytes = 0; + } + break; + } + + case UTF8_REJECT: // decode found invalid UTF-8 byte + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(byte); + JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + ss.str())); + } + + default: // decode found yet incomplete multi-byte code point + { + if (not ensure_ascii) + { + // code point will not be escaped - copy byte to buffer + string_buffer[bytes++] = s[i]; } break; } } } - assert(pos == result.size()); - o->write_characters(result.c_str(), result.size()); + if (JSON_LIKELY(state == UTF8_ACCEPT)) + { + // write buffer + if (bytes > 0) + { + o->write_characters(string_buffer.data(), bytes); + } + } + else + { + // we finish reading, but do not accept: string was incomplete + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(static_cast(s.back())); + JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + ss.str())); + } } /*! @@ -701,15 +540,16 @@ class serializer followed. @param[in,out] state the state of the decoding + @param[in,out] codep codepoint (valid only if resulting state is UTF8_ACCEPT) @param[in] byte next byte to decode + @return new state - @note The function has been edited: a std::array is used and the code - point is not calculated. + @note The function has been edited: a std::array is used. @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ */ - static void decode(uint8_t& state, const uint8_t byte) + static uint8_t decode(uint8_t& state, uint32_t& codep, const uint8_t byte) noexcept { static const std::array utf8d = { @@ -732,42 +572,13 @@ class serializer }; const uint8_t type = utf8d[byte]; + + codep = (state != UTF8_ACCEPT) + ? (byte & 0x3fu) | (codep << 6) + : (0xff >> type) & (byte); + state = utf8d[256u + state * 16u + type]; - } - - /*! - @brief throw an exception if a string is not UTF-8 encoded - - @param[in] str UTF-8 string to check - @throw type_error.316 if passed string is not UTF-8 encoded - - @since version 3.0.0 - */ - static void throw_if_invalid_utf8(const std::string& str) - { - // start with state 0 (= accept) - uint8_t state = 0; - - for (size_t i = 0; i < str.size(); ++i) - { - const auto byte = static_cast(str[i]); - decode(state, byte); - if (state == 1) - { - // state 1 means reject - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(byte); - JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + ss.str())); - } - } - - if (state != 0) - { - // we finish reading, but do not accept: string was incomplete - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(static_cast(str.back())); - JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + ss.str())); - } + return state; } private: @@ -784,9 +595,11 @@ class serializer /// the locale's decimal point character const char decimal_point = '\0'; + /// string buffer + std::array string_buffer{{}}; + /// the indentation character const char indent_char; - /// the indentation string string_t indent_string; }; diff --git a/src/json.hpp b/src/json.hpp index a80cc36a..7ce9aa57 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -109,8 +109,6 @@ using json = basic_json<>; // #include "detail/macro_scope.hpp" -#include // not - // This file contains all internal macro definitions // You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them @@ -147,7 +145,7 @@ using json = basic_json<>; #endif // allow to disable exceptions -#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && not defined(JSON_NOEXCEPTION) +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) #define JSON_THROW(exception) throw exception #define JSON_TRY try #define JSON_CATCH(exception) catch(exception) @@ -450,8 +448,7 @@ constexpr T static_const::value; } // #include "detail/exceptions.hpp" -#ifndef NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP -#define NLOHMANN_JSON_DETAIL_EXCEPTIONS_HPP + #include // exception #include // runtime_error @@ -780,8 +777,6 @@ class other_error : public exception } } -#endif - // #include "detail/value_t.hpp" @@ -3667,10 +3662,8 @@ class parser // #include "detail/iterators/primitive_iterator.hpp" -#include // not #include // ptrdiff_t #include // numeric_limits -#include // ostream namespace nlohmann { @@ -3687,9 +3680,15 @@ end_value (`1`) models past the end. */ class primitive_iterator_t { - public: + private: using difference_type = std::ptrdiff_t; + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; + /// iterator as signed integer type + difference_type m_it = (std::numeric_limits::min)(); + + public: constexpr difference_type get_value() const noexcept { return m_it; @@ -3729,10 +3728,10 @@ class primitive_iterator_t return lhs.m_it < rhs.m_it; } - primitive_iterator_t operator+(difference_type i) + primitive_iterator_t operator+(difference_type n) noexcept { auto result = *this; - result += i; + result += n; return result; } @@ -3741,55 +3740,43 @@ class primitive_iterator_t return lhs.m_it - rhs.m_it; } - friend std::ostream& operator<<(std::ostream& os, primitive_iterator_t it) - { - return os << it.m_it; - } - - primitive_iterator_t& operator++() + primitive_iterator_t& operator++() noexcept { ++m_it; return *this; } - primitive_iterator_t const operator++(int) + primitive_iterator_t const operator++(int) noexcept { auto result = *this; m_it++; return result; } - primitive_iterator_t& operator--() + primitive_iterator_t& operator--() noexcept { --m_it; return *this; } - primitive_iterator_t const operator--(int) + primitive_iterator_t const operator--(int) noexcept { auto result = *this; m_it--; return result; } - primitive_iterator_t& operator+=(difference_type n) + primitive_iterator_t& operator+=(difference_type n) noexcept { m_it += n; return *this; } - primitive_iterator_t& operator-=(difference_type n) + primitive_iterator_t& operator-=(difference_type n) noexcept { m_it -= n; return *this; } - - private: - static constexpr difference_type begin_value = 0; - static constexpr difference_type end_value = begin_value + 1; - - /// iterator as signed integer type - difference_type m_it = (std::numeric_limits::min)(); }; } } @@ -4527,7 +4514,7 @@ template class iteration_proxy public: /// construct iteration proxy from a container - explicit iteration_proxy(typename IteratorType::reference cont) + explicit iteration_proxy(typename IteratorType::reference cont) noexcept : container(cont) {} /// return iterator begin (needed for range-based for) @@ -6477,6 +6464,9 @@ class serializer using number_float_t = typename BasicJsonType::number_float_t; using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + static constexpr uint8_t UTF8_ACCEPT = 0; + static constexpr uint8_t UTF8_REJECT = 1; + public: /*! @param[in] s output stream to serialize to @@ -6486,7 +6476,8 @@ class serializer : o(std::move(s)), loc(std::localeconv()), thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep)), decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point)), - indent_char(ichar), indent_string(512, indent_char) {} + indent_char(ichar), indent_string(512, indent_char) + {} // delete because of pointer members serializer(const serializer&) = delete; @@ -6702,171 +6693,6 @@ class serializer } private: - /*! - @brief returns the number of expected bytes following in UTF-8 string - - @param[in] u the first byte of a UTF-8 string - @return the number of expected bytes following - */ - static constexpr std::size_t bytes_following(const uint8_t u) - { - return ((u <= 127) ? 0 - : ((192 <= u and u <= 223) ? 1 - : ((224 <= u and u <= 239) ? 2 - : ((240 <= u and u <= 247) ? 3 : std::string::npos)))); - } - - /*! - @brief calculates the extra space to escape a JSON string - - @param[in] s the string to escape - @param[in] ensure_ascii whether to escape non-ASCII characters with - \uXXXX sequences - @return the number of characters required to escape string @a s - - @complexity Linear in the length of string @a s. - */ - static std::size_t extra_space(const string_t& s, - const bool ensure_ascii) noexcept - { - std::size_t res = 0; - - for (std::size_t i = 0; i < s.size(); ++i) - { - switch (s[i]) - { - // control characters that can be escaped with a backslash - case '"': - case '\\': - case '\b': - case '\f': - case '\n': - case '\r': - case '\t': - { - // from c (1 byte) to \x (2 bytes) - res += 1; - break; - } - - // control characters that need \uxxxx escaping - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x0B: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - { - // from c (1 byte) to \uxxxx (6 bytes) - res += 5; - break; - } - - default: - { - if (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F)) - { - const auto bytes = bytes_following(static_cast(s[i])); - // invalid characters will be detected by throw_if_invalid_utf8 - assert (bytes != std::string::npos); - - if (bytes == 3) - { - // codepoints that need 4 bytes (i.e., 3 additional - // bytes) in UTF-8 need a surrogate pair when \u - // escaping is used: from 4 bytes to \uxxxx\uxxxx - // (12 bytes) - res += (12 - bytes - 1); - } - else - { - // from x bytes to \uxxxx (6 bytes) - res += (6 - bytes - 1); - } - - // skip the additional bytes - i += bytes; - } - break; - } - } - } - - return res; - } - - static void escape_codepoint(int codepoint, string_t& result, std::size_t& pos) - { - // expecting a proper codepoint - assert(0x00 <= codepoint and codepoint <= 0x10FFFF); - - // the last written character was the backslash before the 'u' - assert(result[pos] == '\\'); - - // write the 'u' - result[++pos] = 'u'; - - // convert a number 0..15 to its hex representation (0..f) - static const std::array hexify = - { - { - '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' - } - }; - - if (codepoint < 0x10000) - { - // codepoints U+0000..U+FFFF can be represented as \uxxxx. - result[++pos] = hexify[(codepoint >> 12) & 0x0F]; - result[++pos] = hexify[(codepoint >> 8) & 0x0F]; - result[++pos] = hexify[(codepoint >> 4) & 0x0F]; - result[++pos] = hexify[codepoint & 0x0F]; - } - else - { - // codepoints U+10000..U+10FFFF need a surrogate pair to be - // represented as \uxxxx\uxxxx. - // http://www.unicode.org/faq/utf_bom.html#utf16-4 - codepoint -= 0x10000; - const int high_surrogate = 0xD800 | ((codepoint >> 10) & 0x3FF); - const int low_surrogate = 0xDC00 | (codepoint & 0x3FF); - result[++pos] = hexify[(high_surrogate >> 12) & 0x0F]; - result[++pos] = hexify[(high_surrogate >> 8) & 0x0F]; - result[++pos] = hexify[(high_surrogate >> 4) & 0x0F]; - result[++pos] = hexify[high_surrogate & 0x0F]; - ++pos; // backslash is already in output - result[++pos] = 'u'; - result[++pos] = hexify[(low_surrogate >> 12) & 0x0F]; - result[++pos] = hexify[(low_surrogate >> 8) & 0x0F]; - result[++pos] = hexify[(low_surrogate >> 4) & 0x0F]; - result[++pos] = hexify[low_surrogate & 0x0F]; - } - - ++pos; - } - /*! @brief dump escaped string @@ -6881,145 +6707,145 @@ class serializer @complexity Linear in the length of string @a s. */ - void dump_escaped(const string_t& s, const bool ensure_ascii) const + void dump_escaped(const string_t& s, const bool ensure_ascii) { - throw_if_invalid_utf8(s); - - const auto space = extra_space(s, ensure_ascii); - if (space == 0) - { - o->write_characters(s.c_str(), s.size()); - return; - } - - // create a result string of necessary size - string_t result(s.size() + space, '\\'); - std::size_t pos = 0; + uint32_t codepoint; + uint8_t state = UTF8_ACCEPT; + std::size_t bytes = 0; // number of bytes written to string_buffer for (std::size_t i = 0; i < s.size(); ++i) { - switch (s[i]) + const auto byte = static_cast(s[i]); + + switch (decode(state, codepoint, byte)) { - case '"': // quotation mark (0x22) + case UTF8_ACCEPT: // decode found a new code point { - result[pos + 1] = '"'; - pos += 2; - break; - } - - case '\\': // reverse solidus (0x5C) - { - // nothing to change - pos += 2; - break; - } - - case '\b': // backspace (0x08) - { - result[pos + 1] = 'b'; - pos += 2; - break; - } - - case '\f': // formfeed (0x0C) - { - result[pos + 1] = 'f'; - pos += 2; - break; - } - - case '\n': // newline (0x0A) - { - result[pos + 1] = 'n'; - pos += 2; - break; - } - - case '\r': // carriage return (0x0D) - { - result[pos + 1] = 'r'; - pos += 2; - break; - } - - case '\t': // horizontal tab (0x09) - { - result[pos + 1] = 't'; - pos += 2; - break; - } - - default: - { - // escape control characters (0x00..0x1F) or, if - // ensure_ascii parameter is used, non-ASCII characters - if ((0x00 <= s[i] and s[i] <= 0x1F) or - (ensure_ascii and (s[i] & 0x80 or s[i] == 0x7F))) + switch (codepoint) { - const auto bytes = bytes_following(static_cast(s[i])); - // invalid characters will be detected by throw_if_invalid_utf8 - assert (bytes != std::string::npos); - - // check that the additional bytes are present - assert(i + bytes < s.size()); - - // to use \uxxxx escaping, we first need to calculate - // the codepoint from the UTF-8 bytes - int codepoint = 0; - - // bytes is unsigned type: - assert(bytes <= 3); - switch (bytes) + case 0x08: // backspace { - case 0: - { - codepoint = s[i] & 0xFF; - break; - } - - case 1: - { - codepoint = ((s[i] & 0x3F) << 6) - + (s[i + 1] & 0x7F); - break; - } - - case 2: - { - codepoint = ((s[i] & 0x1F) << 12) - + ((s[i + 1] & 0x7F) << 6) - + (s[i + 2] & 0x7F); - break; - } - - case 3: - { - codepoint = ((s[i] & 0xF) << 18) - + ((s[i + 1] & 0x7F) << 12) - + ((s[i + 2] & 0x7F) << 6) - + (s[i + 3] & 0x7F); - break; - } - - default: - break; // LCOV_EXCL_LINE + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'b'; + break; } - escape_codepoint(codepoint, result, pos); - i += bytes; + case 0x09: // horizontal tab + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 't'; + break; + } + + case 0x0A: // newline + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'n'; + break; + } + + case 0x0C: // formfeed + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'f'; + break; + } + + case 0x0D: // carriage return + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'r'; + break; + } + + case 0x22: // quotation mark + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = '\"'; + break; + } + + case 0x5C: // reverse solidus + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = '\\'; + break; + } + + default: + { + // escape control characters (0x00..0x1F) or, if + // ensure_ascii parameter is used, non-ASCII characters + if ((codepoint <= 0x1F) or (ensure_ascii and (codepoint >= 0x7F))) + { + if (codepoint <= 0xFFFF) + { + std::snprintf(string_buffer.data() + bytes, 7, "\\u%04x", codepoint); + bytes += 6; + } + else + { + std::snprintf(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x", + (0xD7C0 + (codepoint >> 10)), + (0xDC00 + (codepoint & 0x3FF))); + bytes += 12; + } + } + else + { + // copy byte to buffer (all previous bytes + // been copied have in default case above) + string_buffer[bytes++] = s[i]; + } + break; + } } - else + + // write buffer and reset index; there must be 13 bytes + // left, as this is the maximal number of bytes to be + // written ("\uxxxx\uxxxx\0") for one code point + if (string_buffer.size() - bytes < 13) { - // all other characters are added as-is - result[pos++] = s[i]; + o->write_characters(string_buffer.data(), bytes); + bytes = 0; + } + break; + } + + case UTF8_REJECT: // decode found invalid UTF-8 byte + { + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(byte); + JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + ss.str())); + } + + default: // decode found yet incomplete multi-byte code point + { + if (not ensure_ascii) + { + // code point will not be escaped - copy byte to buffer + string_buffer[bytes++] = s[i]; } break; } } } - assert(pos == result.size()); - o->write_characters(result.c_str(), result.size()); + if (JSON_LIKELY(state == UTF8_ACCEPT)) + { + // write buffer + if (bytes > 0) + { + o->write_characters(string_buffer.data(), bytes); + } + } + else + { + // we finish reading, but do not accept: string was incomplete + std::stringstream ss; + ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(static_cast(s.back())); + JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + ss.str())); + } } /*! @@ -7144,15 +6970,16 @@ class serializer followed. @param[in,out] state the state of the decoding + @param[in,out] codep codepoint (valid only if resulting state is UTF8_ACCEPT) @param[in] byte next byte to decode + @return new state - @note The function has been edited: a std::array is used and the code - point is not calculated. + @note The function has been edited: a std::array is used. @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ */ - static void decode(uint8_t& state, const uint8_t byte) + static uint8_t decode(uint8_t& state, uint32_t& codep, const uint8_t byte) noexcept { static const std::array utf8d = { @@ -7175,42 +7002,13 @@ class serializer }; const uint8_t type = utf8d[byte]; + + codep = (state != UTF8_ACCEPT) + ? (byte & 0x3fu) | (codep << 6) + : (0xff >> type) & (byte); + state = utf8d[256u + state * 16u + type]; - } - - /*! - @brief throw an exception if a string is not UTF-8 encoded - - @param[in] str UTF-8 string to check - @throw type_error.316 if passed string is not UTF-8 encoded - - @since version 3.0.0 - */ - static void throw_if_invalid_utf8(const std::string& str) - { - // start with state 0 (= accept) - uint8_t state = 0; - - for (size_t i = 0; i < str.size(); ++i) - { - const auto byte = static_cast(str[i]); - decode(state, byte); - if (state == 1) - { - // state 1 means reject - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(byte); - JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + ss.str())); - } - } - - if (state != 0) - { - // we finish reading, but do not accept: string was incomplete - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(static_cast(str.back())); - JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + ss.str())); - } + return state; } private: @@ -7227,9 +7025,11 @@ class serializer /// the locale's decimal point character const char decimal_point = '\0'; + /// string buffer + std::array string_buffer{{}}; + /// the indentation character const char indent_char; - /// the indentation string string_t indent_string; }; @@ -8589,7 +8389,7 @@ class basic_json array = create(std::move(value)); } - void destroy(value_t t) + void destroy(value_t t) noexcept { switch (t) { @@ -8634,7 +8434,7 @@ class basic_json value is changed, because the invariant expresses a relationship between @a m_type and @a m_value. */ - void assert_invariant() const + void assert_invariant() const noexcept { assert(m_type != value_t::object or m_value.object != nullptr); assert(m_type != value_t::array or m_value.array != nullptr); @@ -9428,7 +9228,7 @@ class basic_json @since version 1.0.0 */ - ~basic_json() + ~basic_json() noexcept { assert_invariant(); m_value.destroy(m_type); @@ -11769,7 +11569,7 @@ class basic_json @note The name of this function is not yet final and may change in the future. */ - static iteration_proxy iterator_wrapper(reference ref) + static iteration_proxy iterator_wrapper(reference ref) noexcept { return iteration_proxy(ref); } @@ -11777,7 +11577,7 @@ class basic_json /*! @copydoc iterator_wrapper(reference) */ - static iteration_proxy iterator_wrapper(const_reference ref) + static iteration_proxy iterator_wrapper(const_reference ref) noexcept { return iteration_proxy(ref); } @@ -11819,7 +11619,8 @@ class basic_json @endcode @note When iterating over an array, `key()` will return the index of the - element as string (see example). + element as string (see example). For primitive types (e.g., numbers), + `key()` returns an empty string. @return iteration proxy object wrapping @a ref with an interface to use in range-based for loops @@ -11830,8 +11631,10 @@ class basic_json changes in the JSON value. @complexity Constant. + + @since version 3.x.x. */ - iteration_proxy items() + iteration_proxy items() noexcept { return iteration_proxy(*this); } @@ -11839,7 +11642,7 @@ class basic_json /*! @copydoc items() */ - iteration_proxy items() const + iteration_proxy items() const noexcept { return iteration_proxy(*this); } From dcee778c1e72c9b08bea2b7b099d7e5c78393409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Wed, 17 Jan 2018 12:17:38 +0100 Subject: [PATCH 072/106] fix sfinae on basic_json UDT constructor Avoid compiler errors when performing SFINAE checks on basic_json and incomplete types. --- develop/detail/meta.hpp | 26 ++++++++++++++++++++++++- develop/json.hpp | 16 +++++++--------- src/json.hpp | 42 +++++++++++++++++++++++++++++++---------- test/src/unit-udt.cpp | 19 +++++++++++++++++++ 4 files changed, 83 insertions(+), 20 deletions(-) diff --git a/develop/detail/meta.hpp b/develop/detail/meta.hpp index bea42a07..585b8d44 100644 --- a/develop/detail/meta.hpp +++ b/develop/detail/meta.hpp @@ -96,6 +96,14 @@ template<> struct priority_tag<0> {}; // has_/is_ functions // //////////////////////// +// source: https://stackoverflow.com/a/37193089/4116453 + +template +struct is_complete_type : std::false_type {}; + +template +struct is_complete_type : std::true_type {}; + NLOHMANN_JSON_HAS_HELPER(mapped_type); NLOHMANN_JSON_HAS_HELPER(key_type); NLOHMANN_JSON_HAS_HELPER(value_type); @@ -171,7 +179,6 @@ struct is_compatible_integer_type RealIntegerType, CompatibleNumberIntegerType > ::value; }; - // trait checking if JSONSerializer::from_json(json const&, udt&) exists template struct has_from_json @@ -221,6 +228,23 @@ struct has_to_json std::declval>()))>::value; }; +template +struct is_compatible_complete_type +{ + static constexpr bool value = + not std::is_base_of::value and + not std::is_same::value and + not is_basic_json_nested_type::value and + has_to_json::value; +}; + +template +struct is_compatible_type + : conjunction, + is_compatible_complete_type> +{ +}; + // taken from ranges-v3 template struct static_const diff --git a/develop/json.hpp b/develop/json.hpp index f4c139e4..26a2b111 100644 --- a/develop/json.hpp +++ b/develop/json.hpp @@ -1551,15 +1551,13 @@ class basic_json @since version 2.1.0 */ - template, - detail::enable_if_t::value and - not std::is_same::value and - not detail::is_basic_json_nested_type< - basic_json_t, U>::value and - detail::has_to_json::value, - int> = 0> - basic_json(CompatibleType && val) noexcept(noexcept(JSONSerializer::to_json( - std::declval(), std::forward(val)))) + template , + detail::enable_if_t< + detail::is_compatible_type::value, int> = 0> + basic_json(CompatibleType && val) noexcept(noexcept( + JSONSerializer::to_json(std::declval(), + std::forward(val)))) { JSONSerializer::to_json(*this, std::forward(val)); assert_invariant(); diff --git a/src/json.hpp b/src/json.hpp index a80cc36a..d95ae8db 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -312,6 +312,14 @@ template<> struct priority_tag<0> {}; // has_/is_ functions // //////////////////////// +// source: https://stackoverflow.com/a/37193089/4116453 + +template +struct is_complete_type : std::false_type {}; + +template +struct is_complete_type : std::true_type {}; + NLOHMANN_JSON_HAS_HELPER(mapped_type); NLOHMANN_JSON_HAS_HELPER(key_type); NLOHMANN_JSON_HAS_HELPER(value_type); @@ -387,7 +395,6 @@ struct is_compatible_integer_type RealIntegerType, CompatibleNumberIntegerType > ::value; }; - // trait checking if JSONSerializer::from_json(json const&, udt&) exists template struct has_from_json @@ -437,6 +444,23 @@ struct has_to_json std::declval>()))>::value; }; +template +struct is_compatible_complete_type +{ + static constexpr bool value = + not std::is_base_of::value and + not std::is_same::value and + not is_basic_json_nested_type::value and + has_to_json::value; +}; + +template +struct is_compatible_type + : conjunction, + is_compatible_complete_type> +{ +}; + // taken from ranges-v3 template struct static_const @@ -8839,15 +8863,13 @@ class basic_json @since version 2.1.0 */ - template, - detail::enable_if_t::value and - not std::is_same::value and - not detail::is_basic_json_nested_type< - basic_json_t, U>::value and - detail::has_to_json::value, - int> = 0> - basic_json(CompatibleType && val) noexcept(noexcept(JSONSerializer::to_json( - std::declval(), std::forward(val)))) + template , + detail::enable_if_t< + detail::is_compatible_type::value, int> = 0> + basic_json(CompatibleType && val) noexcept(noexcept( + JSONSerializer::to_json(std::declval(), + std::forward(val)))) { JSONSerializer::to_json(*this, std::forward(val)); assert_invariant(); diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 4fd6f7ec..a4adc3be 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -692,3 +692,22 @@ TEST_CASE("custom serializer that does adl by default", "[udt]") CHECK(me == j.get()); CHECK(me == cj.get()); } + +namespace +{ +struct incomplete; + +// std::is_constructible is broken on macOS' libc++ +// use the cppreference implementation + +template +struct is_constructible_patched : std::false_type {}; + +template +struct is_constructible_patched())))> : std::true_type {}; +} + +TEST_CASE("an incomplete type does not trigger a compiler error in non-evaluated context", "[udt]") +{ + static_assert(not is_constructible_patched::value, ""); +} From a8f711a2f18e8fae0efcd05aff5b673dca5fa0b4 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Thu, 18 Jan 2018 21:57:21 +0100 Subject: [PATCH 073/106] :heavy_plus_sign: using Google Benchmark #921 --- README.md | 3 +- benchmarks/CMakeLists.txt | 26 + benchmarks/Makefile | 21 - benchmarks/README.md | 3 - .../{files => data}/jeopardy/jeopardy.json | 0 .../nativejson-benchmark/canada.json | 0 .../nativejson-benchmark/citm_catalog.json | 0 .../nativejson-benchmark/twitter.json | 0 benchmarks/files/numbers/generate.py | 25 - benchmarks/src/benchmarks.cpp | 214 ++- benchmarks/src/benchmarks_simple.cpp | 158 -- benchmarks/thirdparty/benchpress/LICENSE | 21 - .../thirdparty/benchpress/benchpress.hpp | 401 ----- benchmarks/thirdparty/cxxopts/LICENSE | 19 - benchmarks/thirdparty/cxxopts/cxxopts.hpp | 1312 ----------------- develop/json.hpp | 2 +- src/json.hpp | 2 +- test/src/unit-inspection.cpp | 4 +- 18 files changed, 125 insertions(+), 2086 deletions(-) create mode 100644 benchmarks/CMakeLists.txt delete mode 100644 benchmarks/Makefile delete mode 100644 benchmarks/README.md rename benchmarks/{files => data}/jeopardy/jeopardy.json (100%) rename benchmarks/{files => data}/nativejson-benchmark/canada.json (100%) rename benchmarks/{files => data}/nativejson-benchmark/citm_catalog.json (100%) rename benchmarks/{files => data}/nativejson-benchmark/twitter.json (100%) delete mode 100755 benchmarks/files/numbers/generate.py delete mode 100644 benchmarks/src/benchmarks_simple.cpp delete mode 100644 benchmarks/thirdparty/benchpress/LICENSE delete mode 100644 benchmarks/thirdparty/benchpress/benchpress.hpp delete mode 100644 benchmarks/thirdparty/cxxopts/LICENSE delete mode 100644 benchmarks/thirdparty/cxxopts/cxxopts.hpp diff --git a/README.md b/README.md index d5935755..e4c71481 100644 --- a/README.md +++ b/README.md @@ -935,7 +935,6 @@ The library itself contains of a single header file licensed under the MIT licen - [**American fuzzy lop**](http://lcamtuf.coredump.cx/afl/) for fuzz testing - [**AppVeyor**](https://www.appveyor.com) for [continuous integration](https://ci.appveyor.com/project/nlohmann/json) on Windows - [**Artistic Style**](http://astyle.sourceforge.net) for automatic source code identation -- [**benchpress**](https://github.com/sbs-ableton/benchpress) to benchmark the code - [**Catch**](https://github.com/philsquared/Catch) for the unit tests - [**Clang**](http://clang.llvm.org) for compilation with code sanitizers - [**Cmake**](https://cmake.org) for build automation @@ -943,10 +942,10 @@ The library itself contains of a single header file licensed under the MIT licen - [**Coveralls**](https://coveralls.io) to measure [code coverage](https://coveralls.io/github/nlohmann/json) - [**Coverity Scan**](https://scan.coverity.com) for [static analysis](https://scan.coverity.com/projects/nlohmann-json) - [**cppcheck**](http://cppcheck.sourceforge.net) for static analysis -- [**cxxopts**](https://github.com/jarro2783/cxxopts) to let benchpress parse command-line parameters - [**Doxygen**](http://www.stack.nl/~dimitri/doxygen/) to generate [documentation](https://nlohmann.github.io/json/) - [**git-update-ghpages**](https://github.com/rstacruz/git-update-ghpages) to upload the documentation to gh-pages - [**GitHub Changelog Generator**](https://github.com/skywinder/github-changelog-generator) to generate the [ChangeLog](https://github.com/nlohmann/json/blob/develop/ChangeLog.md) +- [**Google Benchmark**]https://github.com/google/benchmark) to implement the benchmarks - [**libFuzzer**](http://llvm.org/docs/LibFuzzer.html) to implement fuzz testing for OSS-Fuzz - [**OSS-Fuzz**](https://github.com/google/oss-fuzz) for continuous fuzz testing of the library - [**Probot**](https://probot.github.io) for automating maintainer tasks such as closing stale issues, requesting missing information, or detecting toxic comments. diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt new file mode 100644 index 00000000..f614978e --- /dev/null +++ b/benchmarks/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.0) +project(JSON_Benchmarks LANGUAGES CXX) + +# set compiler flags +if((CMAKE_CXX_COMPILER_ID MATCHES GNU) OR (CMAKE_CXX_COMPILER_ID MATCHES Clang)) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -flto -DNDEBUG -O3") +endif() + +# configure Google Benchmarks +set(BENCHMARK_ENABLE_TESTING OFF CACHE INTERNAL "" FORCE) +add_subdirectory(thirdparty/benchmark) + +# header directories +include_directories(thirdparty) +include_directories(${CMAKE_SOURCE_DIR}/src) + +# copy test files to build folder +file(COPY ${CMAKE_SOURCE_DIR}/data DESTINATION .) +file(COPY ${CMAKE_SOURCE_DIR}/../test/data/regression/floats.json + ${CMAKE_SOURCE_DIR}/../test/data/regression/unsigned_ints.json + ${CMAKE_SOURCE_DIR}/../test/data/regression/signed_ints.json + DESTINATION data/numbers) + +# benchmark binary +add_executable(json_benchmarks src/benchmarks.cpp) +target_link_libraries(json_benchmarks benchmark ${CMAKE_THREAD_LIBS_INIT}) diff --git a/benchmarks/Makefile b/benchmarks/Makefile deleted file mode 100644 index ef2de8a3..00000000 --- a/benchmarks/Makefile +++ /dev/null @@ -1,21 +0,0 @@ - -# -# Build/run json.hpp benchmarks, eg. CXX=g++-7 make -# -# The existing json_benchmarks did not allow optimization under some compilers -# -all: json_benchmarks json_benchmarks_simple number_jsons - bash -c 'time ./json_benchmarks' - bash -c 'time ./json_benchmarks_simple' - -json_benchmarks: src/benchmarks.cpp ../src/json.hpp - $(CXX) -std=c++11 -pthread $(CXXFLAGS) -DNDEBUG -O3 -flto -I thirdparty/benchpress -I thirdparty/cxxopts -I../src src/benchmarks.cpp $(LDFLAGS) -o $@ - -json_benchmarks_simple: src/benchmarks_simple.cpp ../src/json.hpp - $(CXX) -std=c++11 $(CXXFLAGS) -DNDEBUG -O3 -flto -I../src $(<) $(LDFLAGS) -o $@ - -number_jsons: - (test -e files/numbers/floats.json -a -e files/numbers/signed_ints.json -a -e files/numbers/unsigned_ints.json) || (cd files/numbers ; python generate.py) - -clean: - rm -f json_benchmarks json_benchmarks_simple files/numbers/*.json diff --git a/benchmarks/README.md b/benchmarks/README.md deleted file mode 100644 index 1d3582b4..00000000 --- a/benchmarks/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Bechmarks - -Run `make` to compile and run a small set of benchmarks. diff --git a/benchmarks/files/jeopardy/jeopardy.json b/benchmarks/data/jeopardy/jeopardy.json similarity index 100% rename from benchmarks/files/jeopardy/jeopardy.json rename to benchmarks/data/jeopardy/jeopardy.json diff --git a/benchmarks/files/nativejson-benchmark/canada.json b/benchmarks/data/nativejson-benchmark/canada.json similarity index 100% rename from benchmarks/files/nativejson-benchmark/canada.json rename to benchmarks/data/nativejson-benchmark/canada.json diff --git a/benchmarks/files/nativejson-benchmark/citm_catalog.json b/benchmarks/data/nativejson-benchmark/citm_catalog.json similarity index 100% rename from benchmarks/files/nativejson-benchmark/citm_catalog.json rename to benchmarks/data/nativejson-benchmark/citm_catalog.json diff --git a/benchmarks/files/nativejson-benchmark/twitter.json b/benchmarks/data/nativejson-benchmark/twitter.json similarity index 100% rename from benchmarks/files/nativejson-benchmark/twitter.json rename to benchmarks/data/nativejson-benchmark/twitter.json diff --git a/benchmarks/files/numbers/generate.py b/benchmarks/files/numbers/generate.py deleted file mode 100755 index 714ee3a1..00000000 --- a/benchmarks/files/numbers/generate.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python - -import json -import random -import sys - -random.seed(0) - -# floats -result_floats = [] -for x in range(0, 1000000): - result_floats.append(random.uniform(-100000000.0, 100000000.0)) -json.dump(result_floats, open("floats.json", "w"), indent=2) - -# unsigned integers -result_uints = [] -for x in range(0, 1000000): - result_uints.append(random.randint(0, 18446744073709551615)) -json.dump(result_uints, open("unsigned_ints.json", "w"), indent=2) - -# signed integers -result_sints = [] -for x in range(0, 1000000): - result_sints.append(random.randint(-9223372036854775808, 9223372036854775807)) -json.dump(result_sints, open("signed_ints.json", "w"), indent=2) diff --git a/benchmarks/src/benchmarks.cpp b/benchmarks/src/benchmarks.cpp index a76c3783..6dd470d3 100644 --- a/benchmarks/src/benchmarks.cpp +++ b/benchmarks/src/benchmarks.cpp @@ -1,132 +1,106 @@ -#define BENCHPRESS_CONFIG_MAIN - +#include "benchmark/benchmark.h" +#include "json.hpp" #include -#include -#include -#include -#include -#include using json = nlohmann::json; -struct StartUp +////////////////////////////////////////////////////////////////////////////// +// parse JSON from file +////////////////////////////////////////////////////////////////////////////// + +static void ParseFile(benchmark::State& state, const char* filename) { - StartUp() + while (state.KeepRunning()) { -#ifndef __llvm__ - // pin thread to a single CPU - cpu_set_t cpuset; - pthread_t thread; - thread = pthread_self(); - CPU_ZERO(&cpuset); - CPU_SET(std::thread::hardware_concurrency() - 1, &cpuset); - pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset); -#endif + state.PauseTiming(); + auto* f = new std::ifstream(filename); + auto* j = new json(); + state.ResumeTiming(); + + *j = json::parse(*f); + + state.PauseTiming(); + delete f; + delete j; + state.ResumeTiming(); } -}; -StartUp startup; -enum class EMode { input, output_no_indent, output_with_indent }; - -static void bench(benchpress::context& ctx, - const std::string& in_path, - const EMode mode) -{ - // using string streams for benchmarking to factor-out cold-cache disk - // access. -#if defined( FROMFILE ) - std::ifstream istr; - { - istr.open( in_path, std::ifstream::in ); - - // read the stream once - json j; - istr >> j; - // clear flags and rewind - istr.clear(); - istr.seekg(0); - } -#else - std::stringstream istr; - { - // read file into string stream - std::ifstream input_file(in_path); - istr << input_file.rdbuf(); - input_file.close(); - - // read the stream once - json j; - istr >> j; - // clear flags and rewind - istr.clear(); - istr.seekg(0); - } -#endif - - switch (mode) - { - // benchmarking input - case EMode::input: - { - ctx.reset_timer(); - - for (size_t i = 0; i < ctx.num_iterations(); ++i) - { - // clear flags and rewind - istr.clear(); - istr.seekg(0); - json j; - istr >> j; - } - - break; - } - - // benchmarking output - case EMode::output_no_indent: - case EMode::output_with_indent: - { - // create JSON value from input - json j; - istr >> j; - std::stringstream ostr; - - ctx.reset_timer(); - for (size_t i = 0; i < ctx.num_iterations(); ++i) - { - if (mode == EMode::output_no_indent) - { - ostr << j; - } - else - { - ostr << std::setw(4) << j; - } - - // reset data - ostr.str(std::string()); - } - - break; - } - } + std::ifstream file(filename, std::ios::binary | std::ios::ate); + state.SetBytesProcessed(state.iterations() * file.tellg()); } +BENCHMARK_CAPTURE(ParseFile, jeopardy, "data/jeopardy/jeopardy.json"); +BENCHMARK_CAPTURE(ParseFile, canada, "data/nativejson-benchmark/canada.json"); +BENCHMARK_CAPTURE(ParseFile, citm_catalog, "data/nativejson-benchmark/citm_catalog.json"); +BENCHMARK_CAPTURE(ParseFile, twitter, "data/nativejson-benchmark/twitter.json"); +BENCHMARK_CAPTURE(ParseFile, floats, "data/numbers/floats.json"); +BENCHMARK_CAPTURE(ParseFile, signed_ints, "data/numbers/signed_ints.json"); +BENCHMARK_CAPTURE(ParseFile, unsigned_ints, "data/numbers/unsigned_ints.json"); -#define BENCHMARK_I(mode, title, in_path) \ - BENCHMARK((title), [](benchpress::context* ctx) \ - { \ - bench(*ctx, (in_path), (mode)); \ - }) -BENCHMARK_I(EMode::input, "parse jeopardy.json", "files/jeopardy/jeopardy.json"); -BENCHMARK_I(EMode::input, "parse canada.json", "files/nativejson-benchmark/canada.json"); -BENCHMARK_I(EMode::input, "parse citm_catalog.json", "files/nativejson-benchmark/citm_catalog.json"); -BENCHMARK_I(EMode::input, "parse twitter.json", "files/nativejson-benchmark/twitter.json"); -BENCHMARK_I(EMode::input, "parse numbers/floats.json", "files/numbers/floats.json"); -BENCHMARK_I(EMode::input, "parse numbers/signed_ints.json", "files/numbers/signed_ints.json"); -BENCHMARK_I(EMode::input, "parse numbers/unsigned_ints.json", "files/numbers/unsigned_ints.json"); +////////////////////////////////////////////////////////////////////////////// +// parse JSON from string +////////////////////////////////////////////////////////////////////////////// -BENCHMARK_I(EMode::output_no_indent, "dump jeopardy.json", "files/jeopardy/jeopardy.json"); -BENCHMARK_I(EMode::output_with_indent, "dump jeopardy.json with indent", "files/jeopardy/jeopardy.json"); -BENCHMARK_I(EMode::output_no_indent, "dump numbers/floats.json", "files/numbers/floats.json"); -BENCHMARK_I(EMode::output_no_indent, "dump numbers/signed_ints.json", "files/numbers/signed_ints.json"); +static void ParseString(benchmark::State& state, const char* filename) +{ + std::ifstream f(filename); + std::string str((std::istreambuf_iterator(f)), std::istreambuf_iterator()); + + while (state.KeepRunning()) + { + state.PauseTiming(); + auto* j = new json(); + state.ResumeTiming(); + + *j = json::parse(str); + + state.PauseTiming(); + delete j; + state.ResumeTiming(); + } + + state.SetBytesProcessed(state.iterations() * str.size()); +} +BENCHMARK_CAPTURE(ParseString, jeopardy, "data/jeopardy/jeopardy.json"); +BENCHMARK_CAPTURE(ParseString, canada, "data/nativejson-benchmark/canada.json"); +BENCHMARK_CAPTURE(ParseString, citm_catalog, "data/nativejson-benchmark/citm_catalog.json"); +BENCHMARK_CAPTURE(ParseString, twitter, "data/nativejson-benchmark/twitter.json"); +BENCHMARK_CAPTURE(ParseString, floats, "data/numbers/floats.json"); +BENCHMARK_CAPTURE(ParseString, signed_ints, "data/numbers/signed_ints.json"); +BENCHMARK_CAPTURE(ParseString, unsigned_ints, "data/numbers/unsigned_ints.json"); + + +////////////////////////////////////////////////////////////////////////////// +// serialize JSON +////////////////////////////////////////////////////////////////////////////// + +static void Dump(benchmark::State& state, const char* filename, int indent) +{ + std::ifstream f(filename); + std::string str((std::istreambuf_iterator(f)), std::istreambuf_iterator()); + json j = json::parse(str); + + while (state.KeepRunning()) + { + j.dump(indent); + } + + state.SetBytesProcessed(state.iterations() * j.dump(indent).size()); +} +BENCHMARK_CAPTURE(Dump, jeopardy / -, "data/jeopardy/jeopardy.json", -1); +BENCHMARK_CAPTURE(Dump, jeopardy / 4, "data/jeopardy/jeopardy.json", 4); +BENCHMARK_CAPTURE(Dump, canada / -, "data/nativejson-benchmark/canada.json", -1); +BENCHMARK_CAPTURE(Dump, canada / 4, "data/nativejson-benchmark/canada.json", 4); +BENCHMARK_CAPTURE(Dump, citm_catalog / -, "data/nativejson-benchmark/citm_catalog.json", -1); +BENCHMARK_CAPTURE(Dump, citm_catalog / 4, "data/nativejson-benchmark/citm_catalog.json", 4); +BENCHMARK_CAPTURE(Dump, twitter / -, "data/nativejson-benchmark/twitter.json", -1); +BENCHMARK_CAPTURE(Dump, twitter / 4, "data/nativejson-benchmark/twitter.json", 4); +BENCHMARK_CAPTURE(Dump, floats / -, "data/numbers/floats.json", -1); +BENCHMARK_CAPTURE(Dump, floats / 4, "data/numbers/floats.json", 4); +BENCHMARK_CAPTURE(Dump, signed_ints / -, "data/numbers/signed_ints.json", -1); +BENCHMARK_CAPTURE(Dump, signed_ints / 4, "data/numbers/signed_ints.json", 4); +BENCHMARK_CAPTURE(Dump, unsigned_ints / -, "data/numbers/unsigned_ints.json", -1); +BENCHMARK_CAPTURE(Dump, unsigned_ints / 4, "data/numbers/unsigned_ints.json", 4); + + +BENCHMARK_MAIN(); diff --git a/benchmarks/src/benchmarks_simple.cpp b/benchmarks/src/benchmarks_simple.cpp deleted file mode 100644 index 4fad680a..00000000 --- a/benchmarks/src/benchmarks_simple.cpp +++ /dev/null @@ -1,158 +0,0 @@ -// -// benchmarks_simple.cpp -- a less complex version of benchmarks.cpp, that better reflects actual performance -// -// For some reason, the complexity of benchmarks.cpp doesn't allow -// the compiler to optimize code using json.hpp effectively. The -// exact same tests, with the use of benchpress and cxxopts produces -// much faster code, at least under g++. -// -#include -#include -#include -#include -#include - -#include - -using json = nlohmann::json; - -enum class EMode { input, output, indent }; - -static double bench(const EMode mode, size_t iters, const std::string& in_path ) -{ - // using string streams for benchmarking to factor-out cold-cache disk - // access. Define FROMFILE to use file I/O instead. -#if defined( FROMFILE ) - std::ifstream istr; - { - istr.open( in_path, std::ifstream::in ); - - // read the stream once - json j; - istr >> j; - // clear flags and rewind - istr.clear(); - istr.seekg(0); - } -#else - std::stringstream istr; - { - // read file into string stream - std::ifstream input_file(in_path); - istr << input_file.rdbuf(); - input_file.close(); - - // read the stream once - json j; - istr >> j; - // clear flags and rewind - istr.clear(); - istr.seekg(0); - } -#endif - double tps = 0; - switch (mode) - { - // benchmarking input - case EMode::input: - { - auto start = std::chrono::system_clock::now(); - for (size_t i = 0; i < iters; ++i) - { - // clear flags and rewind - istr.clear(); - istr.seekg(0); - json j; - istr >> j; - } - auto ended = std::chrono::system_clock::now(); - tps = 1.0 / std::chrono::duration( ended - start ).count(); - break; - } - - // benchmarking output - case EMode::output: - case EMode::indent: - { - // create JSON value from input - json j; - istr >> j; - std::stringstream ostr; - - auto start = std::chrono::system_clock::now(); - for (size_t i = 0; i < iters; ++i) - { - if (mode == EMode::indent) - { - ostr << j; - } - else - { - ostr << std::setw(4) << j; - } - - // reset data - ostr.str(std::string()); - } - auto ended = std::chrono::system_clock::now(); - tps = 1.0 / std::chrono::duration( ended - start ).count(); - - break; - } - } - return tps; -} - -template -struct average { - T _sum { 0 }; - size_t _count { 0 }; - T operator+=( const T &val_ ) { _sum += val_; +_count++; return val_; } - operator T() { return _sum / _count; } -}; - -// Execute each test approximately enough times to get near 1 -// transaction per second, and compute the average; a single aggregate -// number that gives a performance metric representing both parsing -// and output. - -int main( int, char ** ) -{ - std::list> tests { - { "parse jeopardy.json", EMode::input, 2, "files/jeopardy/jeopardy.json" }, - { "parse canada.json", EMode::input, 30, "files/nativejson-benchmark/canada.json" }, - { "parse citm_catalog.json", EMode::input, 120, "files/nativejson-benchmark/citm_catalog.json" }, - { "parse twitter.json", EMode::input, 225, "files/nativejson-benchmark/twitter.json" }, - { "parse floats.json", EMode::input, 5, "files/numbers/floats.json" }, - { "parse signed_ints.json", EMode::input, 6, "files/numbers/signed_ints.json" }, - { "parse unsigned_ints.json", EMode::input, 6, "files/numbers/unsigned_ints.json" }, - { "dump jeopardy.json", EMode::output, 5, "files/jeopardy/jeopardy.json" }, - { "dump jeopardy.json w/ind.", EMode::indent, 5, "files/jeopardy/jeopardy.json" }, - { "dump floats.json", EMode::output, 2, "files/numbers/floats.json" }, - { "dump signed_ints.json", EMode::output, 20, "files/numbers/signed_ints.json" }, - }; - - average avg; - for ( auto t : tests ) { - std::string name, path; - EMode mode; - size_t iters; - std::tie(name, mode, iters, path) = t; - auto tps = bench( mode, iters, path ); - avg += tps; - std::cout - << std::left - << std::setw( 30 ) << name - << std::right - << " x " << std::setw( 3 ) << iters - << std::left - << " == " << std::setw( 10 ) << tps - << std::right - << " TPS, " << std::setw( 8 ) << std::round( tps * 1e6 / iters ) - << " ms/op" - << std::endl; - } - std::cout << std::setw( 40 ) << "" << std::string( 10, '-' ) << std::endl; - std::cout << std::setw( 40 ) << "" << std::setw( 10 ) << std::left << avg << " TPS Average" << std::endl; - return 0; -} diff --git a/benchmarks/thirdparty/benchpress/LICENSE b/benchmarks/thirdparty/benchpress/LICENSE deleted file mode 100644 index 282efc46..00000000 --- a/benchmarks/thirdparty/benchpress/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Christopher Gilbert - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/benchmarks/thirdparty/benchpress/benchpress.hpp b/benchmarks/thirdparty/benchpress/benchpress.hpp deleted file mode 100644 index d68e4aff..00000000 --- a/benchmarks/thirdparty/benchpress/benchpress.hpp +++ /dev/null @@ -1,401 +0,0 @@ -/* -* Copyright (C) 2015 Christopher Gilbert. -* -* Permission is hereby granted, free of charge, to any person obtaining a copy -* of this software and associated documentation files (the "Software"), to deal -* in the Software without restriction, including without limitation the rights -* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -* copies of the Software, and to permit persons to whom the Software is -* furnished to do so, subject to the following conditions: -* -* The above copyright notice and this permission notice shall be included in all -* copies or substantial portions of the Software. -* -* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -* SOFTWARE. -*/ -#ifndef BENCHPRESS_HPP -#define BENCHPRESS_HPP - -#include // max, min -#include // atomic_intmax_t -#include // high_resolution_timer, duration -#include // function -#include // setw -#include // cout -#include // regex, regex_match -#include // stringstream -#include // string -#include // thread -#include // vector - -namespace benchpress { - -/* - * The options class encapsulates all options for running benchmarks. - * - * When including benchpress, a main function can be emitted which includes a command-line parser for building an - * options object. However from time-to-time it may be necessary for the developer to have to build their own main - * stub and construct the options object manually. - * - * options opts; - * opts - * .bench(".*") - * .benchtime(1) - * .cpu(4); - */ -class options { - std::string d_bench; - size_t d_benchtime; - size_t d_cpu; -public: - options() - : d_bench(".*") - , d_benchtime(1) - , d_cpu(std::thread::hardware_concurrency()) - {} - options& bench(const std::string& bench) { - d_bench = bench; - return *this; - } - options& benchtime(size_t benchtime) { - d_benchtime = benchtime; - return *this; - } - options& cpu(size_t cpu) { - d_cpu = cpu; - return *this; - } - std::string get_bench() const { - return d_bench; - } - size_t get_benchtime() const { - return d_benchtime; - } - size_t get_cpu() const { - return d_cpu; - } -}; - -class context; - -/* - * The benchmark_info class is used to store a function name / pointer pair. - * - * benchmark_info bi("example", [](benchpress::context* b) { - * // benchmark function - * }); - */ -class benchmark_info { - std::string d_name; - std::function d_func; - -public: - benchmark_info(std::string name, std::function func) - : d_name(name) - , d_func(func) - {} - - std::string get_name() const { return d_name; } - std::function get_func() const { return d_func; } -}; - -/* - * The registration class is responsible for providing a single global point of reference for registering - * benchmark functions. - * - * registration::get_ptr()->register_benchmark(info); - */ -class registration { - static registration* d_this; - std::vector d_benchmarks; - -public: - static registration* get_ptr() { - if (nullptr == d_this) { - d_this = new registration(); - } - return d_this; - } - - void register_benchmark(benchmark_info& info) { - d_benchmarks.push_back(info); - } - - std::vector get_benchmarks() { return d_benchmarks; } -}; - -/* - * The auto_register class is a helper used to register benchmarks. - */ -class auto_register { -public: - auto_register(const std::string& name, std::function func) { - benchmark_info info(name, func); - registration::get_ptr()->register_benchmark(info); - } -}; - -#define CONCAT(x, y) x ## y -#define CONCAT2(x, y) CONCAT(x, y) - -// The BENCHMARK macro is a helper for creating benchmark functions and automatically registering them with the -// registration class. -#define BENCHMARK(x, f) benchpress::auto_register CONCAT2(register_, __LINE__)((x), (f)); - -// This macro will prevent the compiler from removing a redundant code path which has no side-effects. -#define DISABLE_REDUNDANT_CODE_OPT() { asm(""); } - -/* - * The result class is responsible for producing a printable string representation of a benchmark run. - */ -class result { - size_t d_num_iterations; - std::chrono::nanoseconds d_duration; - size_t d_num_bytes; - -public: - result(size_t num_iterations, std::chrono::nanoseconds duration, size_t num_bytes) - : d_num_iterations(num_iterations) - , d_duration(duration) - , d_num_bytes(num_bytes) - {} - - size_t get_ns_per_op() const { - if (d_num_iterations <= 0) { - return 0; - } - return d_duration.count() / d_num_iterations; - } - - double get_mb_per_s() const { - if (d_num_iterations <= 0 || d_duration.count() <= 0 || d_num_bytes <= 0) { - return 0; - } - return ((double(d_num_bytes) * double(d_num_iterations) / double(1e6)) / - double(std::chrono::duration_cast(d_duration).count())); - } - - std::string to_string() const { - std::stringstream tmp; - tmp << std::setw(12) << std::right << d_num_iterations; - size_t npo = get_ns_per_op(); - tmp << std::setw(12) << std::right << npo << std::setw(0) << " ns/op"; - double mbs = get_mb_per_s(); - if (mbs > 0.0) { - tmp << std::setw(12) << std::right << mbs << std::setw(0) << " MB/s"; - } - return std::string(tmp.str()); - } -}; - -/* - * The parallel_context class is responsible for providing a thread-safe context for parallel benchmark code. - */ -class parallel_context { - std::atomic_intmax_t d_num_iterations; -public: - parallel_context(size_t num_iterations) - : d_num_iterations(num_iterations) - {} - - bool next() { - return (d_num_iterations.fetch_sub(1) > 0); - } -}; - -/* - * The context class is responsible for providing an interface for capturing benchmark metrics to benchmark functions. - */ -class context { - bool d_timer_on; - std::chrono::high_resolution_clock::time_point d_start; - std::chrono::nanoseconds d_duration; - std::chrono::seconds d_benchtime; - size_t d_num_iterations; - size_t d_num_threads; - size_t d_num_bytes; - benchmark_info d_benchmark; - -public: - context(const benchmark_info& info, const options& opts) - : d_timer_on(false) - , d_start() - , d_duration() - , d_benchtime(std::chrono::seconds(opts.get_benchtime())) - , d_num_iterations(1) - , d_num_threads(opts.get_cpu()) - , d_num_bytes(0) - , d_benchmark(info) - {} - - size_t num_iterations() const { return d_num_iterations; } - - void set_num_threads(size_t n) { d_num_threads = n; } - size_t num_threads() const { return d_num_threads; } - - void start_timer() { - if (!d_timer_on) { - d_start = std::chrono::high_resolution_clock::now(); - d_timer_on = true; - } - } - void stop_timer() { - if (d_timer_on) { - d_duration += std::chrono::high_resolution_clock::now() - d_start; - d_timer_on = false; - } - } - void reset_timer() { - if (d_timer_on) { - d_start = std::chrono::high_resolution_clock::now(); - } - d_duration = std::chrono::nanoseconds::zero(); - } - - void set_bytes(int64_t bytes) { d_num_bytes = bytes; } - - size_t get_ns_per_op() { - if (d_num_iterations <= 0) { - return 0; - } - return d_duration.count() / d_num_iterations; - } - - void run_n(size_t n) { - d_num_iterations = n; - reset_timer(); - start_timer(); - d_benchmark.get_func()(this); - stop_timer(); - } - - void run_parallel(std::function f) { - parallel_context pc(d_num_iterations); - std::vector threads; - for (size_t i = 0; i < d_num_threads; ++i) { - threads.push_back(std::thread([&pc,&f]() -> void { - f(&pc); - })); - } - for(auto& thread : threads){ - thread.join(); - } - } - - result run() { - size_t n = 1; - run_n(n); - while (d_duration < d_benchtime && n < 1e9) { - size_t last = n; - if (get_ns_per_op() == 0) { - n = 1e9; - } else { - n = d_duration.count() / get_ns_per_op(); - } - n = std::max(std::min(n+n/2, 100*last), last+1); - n = round_up(n); - run_n(n); - } - return result(n, d_duration, d_num_bytes); - } - -private: - template - T round_down_10(T n) { - int tens = 0; - while (n > 10) { - n /= 10; - tens++; - } - int result = 1; - for (int i = 0; i < tens; ++i) { - result *= 10; - } - return result; - } - - template - T round_up(T n) { - T base = round_down_10(n); - if (n < (2 * base)) { - return 2 * base; - } - if (n < (5 * base)) { - return 5 * base; - } - return 10 * base; - } -}; - -/* - * The run_benchmarks function will run the registered benchmarks. - */ -void run_benchmarks(const options& opts) { - std::regex match_r(opts.get_bench()); - auto benchmarks = registration::get_ptr()->get_benchmarks(); - for (auto& info : benchmarks) { - if (std::regex_match(info.get_name(), match_r)) { - context c(info, opts); - auto r = c.run(); - std::cout << std::setw(35) << std::left << info.get_name() << r.to_string() << std::endl; - } - } -} - -} // namespace benchpress - -/* - * If BENCHPRESS_CONFIG_MAIN is defined when the file is included then a main function will be emitted which provides a - * command-line parser and then executes run_benchmarks. - */ -#ifdef BENCHPRESS_CONFIG_MAIN -#include "cxxopts.hpp" -benchpress::registration* benchpress::registration::d_this; -int main(int argc, char** argv) { - std::chrono::high_resolution_clock::time_point bp_start = std::chrono::high_resolution_clock::now(); - benchpress::options bench_opts; - try { - cxxopts::Options cmd_opts(argv[0], " - command line options"); - cmd_opts.add_options() - ("bench", "run benchmarks matching the regular expression", cxxopts::value() - ->default_value(".*")) - ("benchtime", "run enough iterations of each benchmark to take t seconds", cxxopts::value() - ->default_value("1")) - ("cpu", "specify the number of threads to use for parallel benchmarks", cxxopts::value() - ->default_value(std::to_string(std::thread::hardware_concurrency()))) - ("help", "print help") - ; - cmd_opts.parse(argc, argv); - if (cmd_opts.count("help")) { - std::cout << cmd_opts.help({""}) << std::endl; - exit(0); - } - if (cmd_opts.count("bench")) { - bench_opts.bench(cmd_opts["bench"].as()); - } - if (cmd_opts.count("benchtime")) { - bench_opts.benchtime(cmd_opts["benchtime"].as()); - } - if (cmd_opts.count("cpu")) { - bench_opts.cpu(cmd_opts["cpu"].as()); - } - } catch (const cxxopts::OptionException& e) { - std::cout << "error parsing options: " << e.what() << std::endl; - exit(1); - } - benchpress::run_benchmarks(bench_opts); - float duration = std::chrono::duration_cast( - std::chrono::high_resolution_clock::now() - bp_start - ).count() / 1000.f; - std::cout << argv[0] << " " << duration << "s" << std::endl; - return 0; -} -#endif - -#endif // BENCHPRESS_HPP \ No newline at end of file diff --git a/benchmarks/thirdparty/cxxopts/LICENSE b/benchmarks/thirdparty/cxxopts/LICENSE deleted file mode 100644 index 324a2035..00000000 --- a/benchmarks/thirdparty/cxxopts/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2014 Jarryd Beck - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/benchmarks/thirdparty/cxxopts/cxxopts.hpp b/benchmarks/thirdparty/cxxopts/cxxopts.hpp deleted file mode 100644 index 94dd31ca..00000000 --- a/benchmarks/thirdparty/cxxopts/cxxopts.hpp +++ /dev/null @@ -1,1312 +0,0 @@ -/* - -Copyright (c) 2014 Jarryd Beck - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -*/ - -#ifndef CXX_OPTS_HPP -#define CXX_OPTS_HPP - -#if defined(__GNUC__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wnon-virtual-dtor" -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -//when we ask cxxopts to use Unicode, help strings are processed using ICU, -//which results in the correct lengths being computed for strings when they -//are formatted for the help output -//it is necessary to make sure that can be found by the -//compiler, and that icu-uc is linked in to the binary. - -#ifdef CXXOPTS_USE_UNICODE -#include - -namespace cxxopts -{ - typedef icu::UnicodeString String; - - inline - String - toLocalString(std::string s) - { - return icu::UnicodeString::fromUTF8(s); - } - - class UnicodeStringIterator : public - std::iterator - { - public: - - UnicodeStringIterator(const icu::UnicodeString* s, int32_t pos) - : s(s) - , i(pos) - { - } - - value_type - operator*() const - { - return s->char32At(i); - } - - bool - operator==(const UnicodeStringIterator& rhs) const - { - return s == rhs.s && i == rhs.i; - } - - bool - operator!=(const UnicodeStringIterator& rhs) const - { - return !(*this == rhs); - } - - UnicodeStringIterator& - operator++() - { - ++i; - return *this; - } - - UnicodeStringIterator - operator+(int32_t v) - { - return UnicodeStringIterator(s, i + v); - } - - private: - const icu::UnicodeString* s; - int32_t i; - }; - - inline - String& - stringAppend(String&s, String a) - { - return s.append(std::move(a)); - } - - inline - String& - stringAppend(String& s, int n, UChar32 c) - { - for (int i = 0; i != n; ++i) - { - s.append(c); - } - - return s; - } - - template - String& - stringAppend(String& s, Iterator begin, Iterator end) - { - while (begin != end) - { - s.append(*begin); - ++begin; - } - - return s; - } - - inline - size_t - stringLength(const String& s) - { - return s.length(); - } - - inline - std::string - toUTF8String(const String& s) - { - std::string result; - s.toUTF8String(result); - - return result; - } -} - -namespace std -{ - cxxopts::UnicodeStringIterator - begin(const icu::UnicodeString& s) - { - return cxxopts::UnicodeStringIterator(&s, 0); - } - - cxxopts::UnicodeStringIterator - end(const icu::UnicodeString& s) - { - return cxxopts::UnicodeStringIterator(&s, s.length()); - } -} - -//ifdef CXXOPTS_USE_UNICODE -#else - -namespace cxxopts -{ - typedef std::string String; - - template - T - toLocalString(T&& t) - { - return t; - } - - inline - size_t - stringLength(const String& s) - { - return s.length(); - } - - inline - String& - stringAppend(String&s, String a) - { - return s.append(std::move(a)); - } - - inline - String& - stringAppend(String& s, size_t n, char c) - { - return s.append(n, c); - } - - template - String& - stringAppend(String& s, Iterator begin, Iterator end) - { - return s.append(begin, end); - } - - template - std::string - toUTF8String(T&& t) - { - return std::forward(t); - } - -} - -//ifdef CXXOPTS_USE_UNICODE -#endif - -namespace cxxopts -{ - class Value : public std::enable_shared_from_this - { - public: - - virtual void - parse(const std::string& text) const = 0; - - virtual void - parse() const = 0; - - virtual bool - has_arg() const = 0; - - virtual bool - has_default() const = 0; - - virtual bool - has_implicit() const = 0; - - virtual std::string - get_default_value() const = 0; - - virtual std::string - get_implicit_value() const = 0; - - virtual std::shared_ptr - default_value(const std::string& value) = 0; - - virtual std::shared_ptr - implicit_value(const std::string& value) = 0; - }; - - class OptionException : public std::exception - { - public: - OptionException(const std::string& message) - : m_message(message) - { - } - - virtual const char* - what() const noexcept - { - return m_message.c_str(); - } - - private: - std::string m_message; - }; - - class OptionSpecException : public OptionException - { - public: - - OptionSpecException(const std::string& message) - : OptionException(message) - { - } - }; - - class OptionParseException : public OptionException - { - public: - OptionParseException(const std::string& message) - : OptionException(message) - { - } - }; - - class option_exists_error : public OptionSpecException - { - public: - option_exists_error(const std::string& option) - : OptionSpecException(u8"Option ‘" + option + u8"’ already exists") - { - } - }; - - class invalid_option_format_error : public OptionSpecException - { - public: - invalid_option_format_error(const std::string& format) - : OptionSpecException(u8"Invalid option format ‘" + format + u8"’") - { - } - }; - - class option_not_exists_exception : public OptionParseException - { - public: - option_not_exists_exception(const std::string& option) - : OptionParseException(u8"Option ‘" + option + u8"’ does not exist") - { - } - }; - - class missing_argument_exception : public OptionParseException - { - public: - missing_argument_exception(const std::string& option) - : OptionParseException(u8"Option ‘" + option + u8"’ is missing an argument") - { - } - }; - - class option_requires_argument_exception : public OptionParseException - { - public: - option_requires_argument_exception(const std::string& option) - : OptionParseException(u8"Option ‘" + option + u8"’ requires an argument") - { - } - }; - - class option_not_has_argument_exception : public OptionParseException - { - public: - option_not_has_argument_exception - ( - const std::string& option, - const std::string& arg - ) - : OptionParseException( - u8"Option ‘" + option + u8"’ does not take an argument, but argument‘" - + arg + "’ given") - { - } - }; - - class option_not_present_exception : public OptionParseException - { - public: - option_not_present_exception(const std::string& option) - : OptionParseException(u8"Option ‘" + option + u8"’ not present") - { - } - }; - - class argument_incorrect_type : public OptionParseException - { - public: - argument_incorrect_type - ( - const std::string& arg - ) - : OptionParseException( - u8"Argument ‘" + arg + u8"’ failed to parse" - ) - { - } - }; - - namespace values - { - template - void - parse_value(const std::string& text, T& value) - { - std::istringstream is(text); - if (!(is >> value)) - { - std::cerr << "cannot parse empty value" << std::endl; - throw argument_incorrect_type(text); - } - - if (is.rdbuf()->in_avail() != 0) - { - throw argument_incorrect_type(text); - } - } - - template - void - parse_value(const std::string& text, std::vector& value) - { - T v; - parse_value(text, v); - value.push_back(v); - } - - inline - void - parse_value(const std::string& /*text*/, bool& value) - { - //TODO recognise on, off, yes, no, enable, disable - //so that we can write --long=yes explicitly - value = true; - } - - inline - void - parse_value(const std::string& text, std::string& value) - { - value = text; - } - - template - struct value_has_arg - { - static constexpr bool value = true; - }; - - template <> - struct value_has_arg - { - static constexpr bool value = false; - }; - - template - class standard_value : public Value - { - public: - standard_value() - : m_result(std::make_shared()) - , m_store(m_result.get()) - { - } - - standard_value(T* t) - : m_store(t) - { - } - - void - parse(const std::string& text) const - { - if (m_implicit && text.empty()) - { - parse_value(m_implicit_value, *m_store); - } - else - { - parse_value(text, *m_store); - } - } - - void - parse() const - { - parse_value(m_default_value, *m_store); - } - - bool - has_arg() const - { - return value_has_arg::value; - } - - bool - has_default() const - { - return m_default; - } - - bool - has_implicit() const - { - return m_implicit; - } - - virtual std::shared_ptr - default_value(const std::string& value){ - m_default = true; - m_default_value = value; - return shared_from_this(); - } - - virtual std::shared_ptr - implicit_value(const std::string& value){ - m_implicit = true; - m_implicit_value = value; - return shared_from_this(); - } - - std::string - get_default_value() const - { - return m_default_value; - } - - std::string - get_implicit_value() const - { - return m_implicit_value; - } - - const T& - get() const - { - if (m_store == nullptr) - { - return *m_result; - } - else - { - return *m_store; - } - } - - protected: - std::shared_ptr m_result; - T* m_store; - bool m_default = false; - std::string m_default_value; - bool m_implicit = false; - std::string m_implicit_value; - }; - } - - template - std::shared_ptr - value() - { - return std::make_shared>(); - } - - template - std::shared_ptr - value(T& t) - { - return std::make_shared>(&t); - } - - class OptionAdder; - - class OptionDetails - { - public: - OptionDetails - ( - const String& description, - std::shared_ptr value - ) - : m_desc(description) - , m_value(value) - , m_count(0) - { - } - - const String& - description() const - { - return m_desc; - } - - bool - has_arg() const - { - return m_value->has_arg(); - } - - void - parse(const std::string& text) - { - m_value->parse(text); - ++m_count; - } - - void - parse_default() - { - m_value->parse(); - ++m_count; - } - - int - count() const - { - return m_count; - } - - const Value& value() const { - return *m_value; - } - - template - const T& - as() const - { -#ifdef CXXOPTS_NO_RTTI - return static_cast&>(*m_value).get(); -#else - return dynamic_cast&>(*m_value).get(); -#endif - } - - private: - String m_desc; - std::shared_ptr m_value; - int m_count; - }; - - struct HelpOptionDetails - { - std::string s; - std::string l; - String desc; - bool has_arg; - bool has_default; - std::string default_value; - bool has_implicit; - std::string implicit_value; - std::string arg_help; - }; - - struct HelpGroupDetails - { - std::string name; - std::string description; - std::vector options; - }; - - class Options - { - public: - - Options(std::string program, std::string help_string = "") - : m_program(std::move(program)) - , m_help_string(toLocalString(std::move(help_string))) - { - } - - inline - void - parse(int& argc, char**& argv); - - inline - OptionAdder - add_options(std::string group = ""); - - inline - void - add_option - ( - const std::string& group, - const std::string& s, - const std::string& l, - std::string desc, - std::shared_ptr value, - std::string arg_help - ); - - int - count(const std::string& o) const - { - auto iter = m_options.find(o); - if (iter == m_options.end()) - { - return 0; - } - - return iter->second->count(); - } - - const OptionDetails& - operator[](const std::string& option) const - { - auto iter = m_options.find(option); - - if (iter == m_options.end()) - { - throw option_not_present_exception(option); - } - - return *iter->second; - } - - //parse positional arguments into the given option - inline - void - parse_positional(std::string option); - - inline - std::string - help(const std::vector& groups = {""}) const; - - inline - const std::vector - groups() const; - - inline - const HelpGroupDetails& - group_help(const std::string& group) const; - - private: - - inline - void - add_one_option - ( - const std::string& option, - std::shared_ptr details - ); - - inline - bool - consume_positional(std::string a); - - inline - void - add_to_option(const std::string& option, const std::string& arg); - - inline - void - parse_option - ( - std::shared_ptr value, - const std::string& name, - const std::string& arg = "" - ); - - inline - void - checked_parse_arg - ( - int argc, - char* argv[], - int& current, - std::shared_ptr value, - const std::string& name - ); - - inline - String - help_one_group(const std::string& group) const; - - std::string m_program; - String m_help_string; - - std::map> m_options; - std::string m_positional; - - //mapping from groups to help options - std::map m_help; - }; - - class OptionAdder - { - public: - - OptionAdder(Options& options, std::string group) - : m_options(options), m_group(std::move(group)) - { - } - - inline - OptionAdder& - operator() - ( - const std::string& opts, - const std::string& desc, - std::shared_ptr value - = ::cxxopts::value(), - std::string arg_help = "" - ); - - private: - Options& m_options; - std::string m_group; - }; - -} - -namespace cxxopts -{ - - namespace - { - - constexpr int OPTION_LONGEST = 30; - constexpr int OPTION_DESC_GAP = 2; - - std::basic_regex option_matcher - ("--([[:alnum:]][-_[:alnum:]]+)(=(.*))?|-([a-zA-Z]+)"); - - std::basic_regex option_specifier - ("(([a-zA-Z]),)?([a-zA-Z0-9][-_a-zA-Z0-9]+)"); - - String - format_option - ( - const HelpOptionDetails& o - ) - { - auto& s = o.s; - auto& l = o.l; - - String result = " "; - - if (s.size() > 0) - { - result += "-" + toLocalString(s) + ","; - } - else - { - result += " "; - } - - if (l.size() > 0) - { - result += " --" + toLocalString(l); - } - - if (o.has_arg) - { - auto arg = o.arg_help.size() > 0 ? toLocalString(o.arg_help) : "arg"; - - if (o.has_implicit) - { - result += " [=" + arg + "(=" + toLocalString(o.implicit_value) + ")]"; - } - else - { - result += " " + arg; - } - } - - return result; - } - - String - format_description - ( - const HelpOptionDetails& o, - size_t start, - size_t width - ) - { - auto desc = o.desc; - - if (o.has_default) - { - desc += toLocalString(" (default:" + o.default_value + ")"); - } - - String result; - - auto current = std::begin(desc); - auto startLine = current; - auto lastSpace = current; - - auto size = size_t{}; - - while (current != std::end(desc)) - { - if (*current == ' ') - { - lastSpace = current; - } - - if (size > width) - { - if (lastSpace == startLine) - { - stringAppend(result, startLine, current + 1); - stringAppend(result, "\n"); - stringAppend(result, start, ' '); - startLine = current + 1; - lastSpace = startLine; - } - else - { - stringAppend(result, startLine, lastSpace); - stringAppend(result, "\n"); - stringAppend(result, start, ' '); - startLine = lastSpace + 1; - } - size = 0; - } - else - { - ++size; - } - - ++current; - } - - //append whatever is left - stringAppend(result, startLine, current); - - return result; - } - } - -OptionAdder -Options::add_options(std::string group) -{ - return OptionAdder(*this, std::move(group)); -} - -OptionAdder& -OptionAdder::operator() -( - const std::string& opts, - const std::string& desc, - std::shared_ptr value, - std::string arg_help -) -{ - std::match_results result; - std::regex_match(opts.c_str(), result, option_specifier); - - if (result.empty()) - { - throw invalid_option_format_error(opts); - } - - const auto& s = result[2]; - const auto& l = result[3]; - - m_options.add_option(m_group, s.str(), l.str(), desc, value, - std::move(arg_help)); - - return *this; -} - -void -Options::parse_option -( - std::shared_ptr value, - const std::string& /*name*/, - const std::string& arg -) -{ - value->parse(arg); -} - -void -Options::checked_parse_arg -( - int argc, - char* argv[], - int& current, - std::shared_ptr value, - const std::string& name -) -{ - if (current + 1 >= argc) - { - if (value->value().has_implicit()) - { - parse_option(value, name, ""); - } - else - { - throw missing_argument_exception(name); - } - } - else - { - if (argv[current + 1][0] == '-' && value->value().has_implicit()) - { - parse_option(value, name, ""); - } - else - { - parse_option(value, name, argv[current + 1]); - ++current; - } - } -} - -void -Options::add_to_option(const std::string& option, const std::string& arg) -{ - auto iter = m_options.find(option); - - if (iter == m_options.end()) - { - throw option_not_exists_exception(option); - } - - parse_option(iter->second, option, arg); -} - -bool -Options::consume_positional(std::string a) -{ - if (m_positional.size() > 0) - { - add_to_option(m_positional, a); - return true; - } - else - { - return false; - } -} - -void -Options::parse_positional(std::string option) -{ - m_positional = std::move(option); -} - -void -Options::parse(int& argc, char**& argv) -{ - int current = 1; - - int nextKeep = 1; - - while (current != argc) - { - std::match_results result; - std::regex_match(argv[current], result, option_matcher); - - if (result.empty()) - { - //not a flag - - //if true is returned here then it was consumed, otherwise it is - //ignored - if (consume_positional(argv[current])) - { - } - else - { - argv[nextKeep] = argv[current]; - ++nextKeep; - } - //if we return from here then it was parsed successfully, so continue - } - else - { - //short or long option? - if (result[4].length() != 0) - { - const std::string& s = result[4]; - - for (std::size_t i = 0; i != s.size(); ++i) - { - std::string name(1, s[i]); - auto iter = m_options.find(name); - - if (iter == m_options.end()) - { - throw option_not_exists_exception(name); - } - - auto value = iter->second; - - //if no argument then just add it - if (!value->has_arg()) - { - parse_option(value, name); - } - else - { - //it must be the last argument - if (i + 1 == s.size()) - { - checked_parse_arg(argc, argv, current, value, name); - } - else if (value->value().has_implicit()) - { - parse_option(value, name, ""); - } - else - { - //error - throw option_requires_argument_exception(name); - } - } - } - } - else if (result[1].length() != 0) - { - const std::string& name = result[1]; - - auto iter = m_options.find(name); - - if (iter == m_options.end()) - { - throw option_not_exists_exception(name); - } - - auto opt = iter->second; - - //equals provided for long option? - if (result[3].length() != 0) - { - //parse the option given - - //but if it doesn't take an argument, this is an error - if (!opt->has_arg()) - { - throw option_not_has_argument_exception(name, result[3]); - } - - parse_option(opt, name, result[3]); - } - else - { - if (opt->has_arg()) - { - //parse the next argument - checked_parse_arg(argc, argv, current, opt, name); - } - else - { - //parse with empty argument - parse_option(opt, name); - } - } - } - - } - - ++current; - } - - for (auto& opt : m_options) - { - auto& detail = opt.second; - auto& value = detail->value(); - - if(!detail->count() && value.has_default()){ - detail->parse_default(); - } - } - - argc = nextKeep; -} - -void -Options::add_option -( - const std::string& group, - const std::string& s, - const std::string& l, - std::string desc, - std::shared_ptr value, - std::string arg_help -) -{ - auto stringDesc = toLocalString(std::move(desc)); - auto option = std::make_shared(stringDesc, value); - - if (s.size() > 0) - { - add_one_option(s, option); - } - - if (l.size() > 0) - { - add_one_option(l, option); - } - - //add the help details - auto& options = m_help[group]; - - options.options.emplace_back(HelpOptionDetails{s, l, stringDesc, - value->has_arg(), - value->has_default(), value->get_default_value(), - value->has_implicit(), value->get_implicit_value(), - std::move(arg_help)}); -} - -void -Options::add_one_option -( - const std::string& option, - std::shared_ptr details -) -{ - auto in = m_options.emplace(option, details); - - if (!in.second) - { - throw option_exists_error(option); - } -} - -String -Options::help_one_group(const std::string& g) const -{ - typedef std::vector> OptionHelp; - - auto group = m_help.find(g); - if (group == m_help.end()) - { - return ""; - } - - OptionHelp format; - - size_t longest = 0; - - String result; - - if (!g.empty()) - { - result += toLocalString(" " + g + " options:\n\n"); - } - - for (const auto& o : group->second.options) - { - auto s = format_option(o); - longest = std::max(longest, stringLength(s)); - format.push_back(std::make_pair(s, String())); - } - - longest = std::min(longest, static_cast(OPTION_LONGEST)); - - //widest allowed description - auto allowed = size_t{76} - longest - OPTION_DESC_GAP; - - auto fiter = format.begin(); - for (const auto& o : group->second.options) - { - auto d = format_description(o, longest + OPTION_DESC_GAP, allowed); - - result += fiter->first; - if (stringLength(fiter->first) > longest) - { - result += "\n"; - result += toLocalString(std::string(longest + OPTION_DESC_GAP, ' ')); - } - else - { - result += toLocalString(std::string(longest + OPTION_DESC_GAP - - stringLength(fiter->first), - ' ')); - } - result += d; - result += "\n"; - - ++fiter; - } - - return result; -} - -std::string -Options::help(const std::vector& groups) const -{ - String result = "Usage:\n " + toLocalString(m_program) + " [OPTION...]" - + m_help_string + "\n\n"; - - for (std::size_t i = 0; i < groups.size(); ++i) - { - result += help_one_group(groups[i]); - if (i < groups.size() - 1) - { - result += "\n"; - } - } - - return toUTF8String(result); -} - -const std::vector -Options::groups() const -{ - std::vector g; - - std::transform( - m_help.begin(), - m_help.end(), - std::back_inserter(g), - [] (const std::map::value_type& pair) - { - return pair.first; - } - ); - - return g; -} - -const HelpGroupDetails& -Options::group_help(const std::string& group) const -{ - return m_help.at(group); -} - -} - -#if defined(__GNU__) -#pragma GCC diagnostic pop -#endif - -#endif //CXX_OPTS_HPP \ No newline at end of file diff --git a/develop/json.hpp b/develop/json.hpp index 77888236..b2bb49c8 100644 --- a/develop/json.hpp +++ b/develop/json.hpp @@ -7247,7 +7247,7 @@ class basic_json // wrapper to get a value for an operation const auto get_value = [&val](const std::string & op, const std::string & member, - bool string_type) -> basic_json& + bool string_type) -> basic_json & { // find value auto it = val.m_value.object->find(member); diff --git a/src/json.hpp b/src/json.hpp index 2abea0fd..dafc1082 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -14535,7 +14535,7 @@ class basic_json // wrapper to get a value for an operation const auto get_value = [&val](const std::string & op, const std::string & member, - bool string_type) -> basic_json& + bool string_type) -> basic_json & { // find value auto it = val.m_value.object->find(member); diff --git a/test/src/unit-inspection.cpp b/test/src/unit-inspection.cpp index 0043a9ec..21f637aa 100644 --- a/test/src/unit-inspection.cpp +++ b/test/src/unit-inspection.cpp @@ -316,8 +316,8 @@ TEST_CASE("object inspection") SECTION("round trips") { for (const auto& s : - {"3.141592653589793", "1000000000000000010E5" - }) + {"3.141592653589793", "1000000000000000010E5" + }) { json j1 = json::parse(s); std::string s1 = j1.dump(); From b406e3704be9a185f1e27e35981ff6d5668dcdc3 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Thu, 18 Jan 2018 22:00:32 +0100 Subject: [PATCH 074/106] :heavy_plus_sign: using Google Benchmark #921 --- benchmarks/thirdparty/benchmark/AUTHORS | 43 + .../thirdparty/benchmark/CMakeLists.txt | 213 +++ benchmarks/thirdparty/benchmark/CONTRIBUTORS | 62 + benchmarks/thirdparty/benchmark/LICENSE | 202 +++ benchmarks/thirdparty/benchmark/README.md | 935 +++++++++++ .../benchmark/cmake/AddCXXCompilerFlag.cmake | 64 + .../benchmark/cmake/CXXFeatureCheck.cmake | 62 + .../benchmark/cmake/Config.cmake.in | 1 + .../benchmark/cmake/GetGitVersion.cmake | 51 + .../benchmark/cmake/HandleGTest.cmake | 79 + .../benchmark/cmake/Modules/FindLLVMAr.cmake | 16 + .../benchmark/cmake/Modules/FindLLVMNm.cmake | 16 + .../cmake/Modules/FindLLVMRanLib.cmake | 15 + .../benchmark/cmake/benchmark.pc.in | 11 + .../benchmark/cmake/gnu_posix_regex.cpp | 12 + .../benchmark/cmake/llvm-toolchain.cmake | 8 + .../benchmark/cmake/posix_regex.cpp | 14 + .../thirdparty/benchmark/cmake/std_regex.cpp | 10 + .../benchmark/cmake/steady_clock.cpp | 7 + .../cmake/thread_safety_attributes.cpp | 4 + .../benchmark/include/benchmark/benchmark.h | 1389 +++++++++++++++++ .../thirdparty/benchmark/src/CMakeLists.txt | 87 ++ .../thirdparty/benchmark/src/arraysize.h | 33 + .../thirdparty/benchmark/src/benchmark.cc | 714 +++++++++ .../benchmark/src/benchmark_api_internal.h | 47 + .../benchmark/src/benchmark_register.cc | 476 ++++++ benchmarks/thirdparty/benchmark/src/check.h | 79 + .../thirdparty/benchmark/src/colorprint.cc | 188 +++ .../thirdparty/benchmark/src/colorprint.h | 33 + .../benchmark/src/commandlineflags.cc | 218 +++ .../benchmark/src/commandlineflags.h | 79 + .../thirdparty/benchmark/src/complexity.cc | 220 +++ .../thirdparty/benchmark/src/complexity.h | 55 + .../benchmark/src/console_reporter.cc | 182 +++ .../thirdparty/benchmark/src/counter.cc | 68 + benchmarks/thirdparty/benchmark/src/counter.h | 26 + .../thirdparty/benchmark/src/csv_reporter.cc | 149 ++ .../thirdparty/benchmark/src/cycleclock.h | 172 ++ .../benchmark/src/internal_macros.h | 82 + .../thirdparty/benchmark/src/json_reporter.cc | 201 +++ benchmarks/thirdparty/benchmark/src/log.h | 73 + benchmarks/thirdparty/benchmark/src/mutex.h | 155 ++ benchmarks/thirdparty/benchmark/src/re.h | 140 ++ .../thirdparty/benchmark/src/reporter.cc | 81 + benchmarks/thirdparty/benchmark/src/sleep.cc | 51 + benchmarks/thirdparty/benchmark/src/sleep.h | 15 + .../thirdparty/benchmark/src/statistics.cc | 175 +++ .../thirdparty/benchmark/src/statistics.h | 37 + .../thirdparty/benchmark/src/string_util.cc | 172 ++ .../thirdparty/benchmark/src/string_util.h | 40 + .../thirdparty/benchmark/src/sysinfo.cc | 517 ++++++ benchmarks/thirdparty/benchmark/src/timers.cc | 212 +++ benchmarks/thirdparty/benchmark/src/timers.h | 48 + 53 files changed, 8039 insertions(+) create mode 100644 benchmarks/thirdparty/benchmark/AUTHORS create mode 100644 benchmarks/thirdparty/benchmark/CMakeLists.txt create mode 100644 benchmarks/thirdparty/benchmark/CONTRIBUTORS create mode 100644 benchmarks/thirdparty/benchmark/LICENSE create mode 100644 benchmarks/thirdparty/benchmark/README.md create mode 100644 benchmarks/thirdparty/benchmark/cmake/AddCXXCompilerFlag.cmake create mode 100644 benchmarks/thirdparty/benchmark/cmake/CXXFeatureCheck.cmake create mode 100644 benchmarks/thirdparty/benchmark/cmake/Config.cmake.in create mode 100644 benchmarks/thirdparty/benchmark/cmake/GetGitVersion.cmake create mode 100644 benchmarks/thirdparty/benchmark/cmake/HandleGTest.cmake create mode 100644 benchmarks/thirdparty/benchmark/cmake/Modules/FindLLVMAr.cmake create mode 100644 benchmarks/thirdparty/benchmark/cmake/Modules/FindLLVMNm.cmake create mode 100644 benchmarks/thirdparty/benchmark/cmake/Modules/FindLLVMRanLib.cmake create mode 100644 benchmarks/thirdparty/benchmark/cmake/benchmark.pc.in create mode 100644 benchmarks/thirdparty/benchmark/cmake/gnu_posix_regex.cpp create mode 100644 benchmarks/thirdparty/benchmark/cmake/llvm-toolchain.cmake create mode 100644 benchmarks/thirdparty/benchmark/cmake/posix_regex.cpp create mode 100644 benchmarks/thirdparty/benchmark/cmake/std_regex.cpp create mode 100644 benchmarks/thirdparty/benchmark/cmake/steady_clock.cpp create mode 100644 benchmarks/thirdparty/benchmark/cmake/thread_safety_attributes.cpp create mode 100644 benchmarks/thirdparty/benchmark/include/benchmark/benchmark.h create mode 100644 benchmarks/thirdparty/benchmark/src/CMakeLists.txt create mode 100644 benchmarks/thirdparty/benchmark/src/arraysize.h create mode 100644 benchmarks/thirdparty/benchmark/src/benchmark.cc create mode 100644 benchmarks/thirdparty/benchmark/src/benchmark_api_internal.h create mode 100644 benchmarks/thirdparty/benchmark/src/benchmark_register.cc create mode 100644 benchmarks/thirdparty/benchmark/src/check.h create mode 100644 benchmarks/thirdparty/benchmark/src/colorprint.cc create mode 100644 benchmarks/thirdparty/benchmark/src/colorprint.h create mode 100644 benchmarks/thirdparty/benchmark/src/commandlineflags.cc create mode 100644 benchmarks/thirdparty/benchmark/src/commandlineflags.h create mode 100644 benchmarks/thirdparty/benchmark/src/complexity.cc create mode 100644 benchmarks/thirdparty/benchmark/src/complexity.h create mode 100644 benchmarks/thirdparty/benchmark/src/console_reporter.cc create mode 100644 benchmarks/thirdparty/benchmark/src/counter.cc create mode 100644 benchmarks/thirdparty/benchmark/src/counter.h create mode 100644 benchmarks/thirdparty/benchmark/src/csv_reporter.cc create mode 100644 benchmarks/thirdparty/benchmark/src/cycleclock.h create mode 100644 benchmarks/thirdparty/benchmark/src/internal_macros.h create mode 100644 benchmarks/thirdparty/benchmark/src/json_reporter.cc create mode 100644 benchmarks/thirdparty/benchmark/src/log.h create mode 100644 benchmarks/thirdparty/benchmark/src/mutex.h create mode 100644 benchmarks/thirdparty/benchmark/src/re.h create mode 100644 benchmarks/thirdparty/benchmark/src/reporter.cc create mode 100644 benchmarks/thirdparty/benchmark/src/sleep.cc create mode 100644 benchmarks/thirdparty/benchmark/src/sleep.h create mode 100644 benchmarks/thirdparty/benchmark/src/statistics.cc create mode 100644 benchmarks/thirdparty/benchmark/src/statistics.h create mode 100644 benchmarks/thirdparty/benchmark/src/string_util.cc create mode 100644 benchmarks/thirdparty/benchmark/src/string_util.h create mode 100644 benchmarks/thirdparty/benchmark/src/sysinfo.cc create mode 100644 benchmarks/thirdparty/benchmark/src/timers.cc create mode 100644 benchmarks/thirdparty/benchmark/src/timers.h diff --git a/benchmarks/thirdparty/benchmark/AUTHORS b/benchmarks/thirdparty/benchmark/AUTHORS new file mode 100644 index 00000000..4e4c4ed4 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/AUTHORS @@ -0,0 +1,43 @@ +# This is the official list of benchmark authors for copyright purposes. +# This file is distinct from the CONTRIBUTORS files. +# See the latter for an explanation. +# +# Names should be added to this file as: +# Name or Organization +# The email address is not required for organizations. +# +# Please keep the list sorted. + +Albert Pretorius +Arne Beer +Carto +Christopher Seymour +David Coeurjolly +Dirac Research +Dominik Czarnota +Eric Fiselier +Eugene Zhuk +Evgeny Safronov +Felix Homann +Google Inc. +International Business Machines Corporation +Ismael Jimenez Martinez +Jern-Kuan Leong +JianXiong Zhou +Joao Paulo Magalhaes +Jussi Knuuttila +Kaito Udagawa +Kishan Kumar +Lei Xu +Matt Clarkson +Maxim Vafin +Nick Hutchinson +Oleksandr Sochka +Paul Redmond +Radoslav Yovchev +Roman Lebedev +Shuo Chen +Steinar H. Gunderson +Yixuan Qiu +Yusuke Suzuki +Zbigniew Skowron diff --git a/benchmarks/thirdparty/benchmark/CMakeLists.txt b/benchmarks/thirdparty/benchmark/CMakeLists.txt new file mode 100644 index 00000000..aa082676 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/CMakeLists.txt @@ -0,0 +1,213 @@ +cmake_minimum_required (VERSION 2.8.12) + +project (benchmark) + +foreach(p + CMP0054 # CMake 3.1 + CMP0056 # export EXE_LINKER_FLAGS to try_run + CMP0057 # Support no if() IN_LIST operator + ) + if(POLICY ${p}) + cmake_policy(SET ${p} NEW) + endif() +endforeach() + +option(BENCHMARK_ENABLE_TESTING "Enable testing of the benchmark library." ON) +option(BENCHMARK_ENABLE_EXCEPTIONS "Enable the use of exceptions in the benchmark library." ON) +option(BENCHMARK_ENABLE_LTO "Enable link time optimisation of the benchmark library." OFF) +option(BENCHMARK_USE_LIBCXX "Build and test using libc++ as the standard library." OFF) +option(BENCHMARK_BUILD_32_BITS "Build a 32 bit version of the library." OFF) +option(BENCHMARK_ENABLE_INSTALL "Enable installation of benchmark. (Projects embedding benchmark may want to turn this OFF.)" ON) + +# Allow unmet dependencies to be met using CMake's ExternalProject mechanics, which +# may require downloading the source code. +option(BENCHMARK_DOWNLOAD_DEPENDENCIES "Allow the downloading and in-tree building of unmet dependencies" OFF) + +# This option can be used to disable building and running unit tests which depend on gtest +# in cases where it is not possible to build or find a valid version of gtest. +option(BENCHMARK_ENABLE_GTEST_TESTS "Enable building the unit tests which depend on gtest" ON) + +# Make sure we can import out CMake functions +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +# Read the git tags to determine the project version +include(GetGitVersion) +get_git_version(GIT_VERSION) + +# Tell the user what versions we are using +string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" VERSION ${GIT_VERSION}) +message("-- Version: ${VERSION}") + +# The version of the libraries +set(GENERIC_LIB_VERSION ${VERSION}) +string(SUBSTRING ${VERSION} 0 1 GENERIC_LIB_SOVERSION) + +# Import our CMake modules +include(CheckCXXCompilerFlag) +include(AddCXXCompilerFlag) +include(CXXFeatureCheck) + +if (BENCHMARK_BUILD_32_BITS) + add_required_cxx_compiler_flag(-m32) +endif() + +if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + # Turn compiler warnings up to 11 + string(REGEX REPLACE "[-/]W[1-4]" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") + add_definitions(-D_CRT_SECURE_NO_WARNINGS) + + if (NOT BENCHMARK_ENABLE_EXCEPTIONS) + add_cxx_compiler_flag(-EHs-) + add_cxx_compiler_flag(-EHa-) + endif() + # Link time optimisation + if (BENCHMARK_ENABLE_LTO) + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL") + set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG") + set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG") + + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /GL") + string(REGEX REPLACE "[-/]INCREMENTAL" "/INCREMENTAL:NO" CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO}") + set(CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO} /LTCG") + string(REGEX REPLACE "[-/]INCREMENTAL" "/INCREMENTAL:NO" CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}") + set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} /LTCG") + string(REGEX REPLACE "[-/]INCREMENTAL" "/INCREMENTAL:NO" CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}") + set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /LTCG") + + set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /GL") + set(CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL "${CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL} /LTCG") + set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "${CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL} /LTCG") + set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} /LTCG") + endif() +else() + # Try and enable C++11. Don't use C++14 because it doesn't work in some + # configurations. + add_cxx_compiler_flag(-std=c++11) + if (NOT HAVE_CXX_FLAG_STD_CXX11) + add_cxx_compiler_flag(-std=c++0x) + endif() + + # Turn compiler warnings up to 11 + add_cxx_compiler_flag(-Wall) + + add_cxx_compiler_flag(-Wextra) + add_cxx_compiler_flag(-Wshadow) + add_cxx_compiler_flag(-Werror RELEASE) + add_cxx_compiler_flag(-Werror RELWITHDEBINFO) + add_cxx_compiler_flag(-Werror MINSIZEREL) + add_cxx_compiler_flag(-pedantic) + add_cxx_compiler_flag(-pedantic-errors) + add_cxx_compiler_flag(-Wshorten-64-to-32) + add_cxx_compiler_flag(-Wfloat-equal) + add_cxx_compiler_flag(-fstrict-aliasing) + if (NOT BENCHMARK_ENABLE_EXCEPTIONS) + add_cxx_compiler_flag(-fno-exceptions) + endif() + + if (HAVE_CXX_FLAG_FSTRICT_ALIASING) + if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel") #ICC17u2: Many false positives for Wstrict-aliasing + add_cxx_compiler_flag(-Wstrict-aliasing) + endif() + endif() + # ICC17u2: overloaded virtual function "benchmark::Fixture::SetUp" is only partially overridden + # (because of deprecated overload) + add_cxx_compiler_flag(-wd654) + add_cxx_compiler_flag(-Wthread-safety) + if (HAVE_CXX_FLAG_WTHREAD_SAFETY) + cxx_feature_check(THREAD_SAFETY_ATTRIBUTES) + endif() + + # On most UNIX like platforms g++ and clang++ define _GNU_SOURCE as a + # predefined macro, which turns on all of the wonderful libc extensions. + # However g++ doesn't do this in Cygwin so we have to define it ourselfs + # since we depend on GNU/POSIX/BSD extensions. + if (CYGWIN) + add_definitions(-D_GNU_SOURCE=1) + endif() + + # Link time optimisation + if (BENCHMARK_ENABLE_LTO) + add_cxx_compiler_flag(-flto) + if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") + find_program(GCC_AR gcc-ar) + if (GCC_AR) + set(CMAKE_AR ${GCC_AR}) + endif() + find_program(GCC_RANLIB gcc-ranlib) + if (GCC_RANLIB) + set(CMAKE_RANLIB ${GCC_RANLIB}) + endif() + elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") + include(llvm-toolchain) + endif() + endif() + + # Coverage build type + set(BENCHMARK_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_DEBUG}" + CACHE STRING "Flags used by the C++ compiler during coverage builds." + FORCE) + set(BENCHMARK_EXE_LINKER_FLAGS_COVERAGE "${CMAKE_EXE_LINKER_FLAGS_DEBUG}" + CACHE STRING "Flags used for linking binaries during coverage builds." + FORCE) + set(BENCHMARK_SHARED_LINKER_FLAGS_COVERAGE "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}" + CACHE STRING "Flags used by the shared libraries linker during coverage builds." + FORCE) + mark_as_advanced( + BENCHMARK_CXX_FLAGS_COVERAGE + BENCHMARK_EXE_LINKER_FLAGS_COVERAGE + BENCHMARK_SHARED_LINKER_FLAGS_COVERAGE) + set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING + "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel Coverage.") + add_cxx_compiler_flag(--coverage COVERAGE) +endif() + +if (BENCHMARK_USE_LIBCXX) + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + add_cxx_compiler_flag(-stdlib=libc++) + elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") + add_cxx_compiler_flag(-nostdinc++) + message("libc++ header path must be manually specified using CMAKE_CXX_FLAGS") + # Adding -nodefaultlibs directly to CMAKE__LINKER_FLAGS will break + # configuration checks such as 'find_package(Threads)' + list(APPEND BENCHMARK_CXX_LINKER_FLAGS -nodefaultlibs) + # -lc++ cannot be added directly to CMAKE__LINKER_FLAGS because + # linker flags appear before all linker inputs and -lc++ must appear after. + list(APPEND BENCHMARK_CXX_LIBRARIES c++) + else() + message(FATAL "-DBENCHMARK_USE_LIBCXX:BOOL=ON is not supported for compiler") + endif() +endif(BENCHMARK_USE_LIBCXX) + +# C++ feature checks +# Determine the correct regular expression engine to use +cxx_feature_check(STD_REGEX) +cxx_feature_check(GNU_POSIX_REGEX) +cxx_feature_check(POSIX_REGEX) +if(NOT HAVE_STD_REGEX AND NOT HAVE_GNU_POSIX_REGEX AND NOT HAVE_POSIX_REGEX) + message(FATAL_ERROR "Failed to determine the source files for the regular expression backend") +endif() +if (NOT BENCHMARK_ENABLE_EXCEPTIONS AND HAVE_STD_REGEX + AND NOT HAVE_GNU_POSIX_REGEX AND NOT HAVE_POSIX_REGEX) + message(WARNING "Using std::regex with exceptions disabled is not fully supported") +endif() +cxx_feature_check(STEADY_CLOCK) +# Ensure we have pthreads +find_package(Threads REQUIRED) + +# Set up directories +include_directories(${PROJECT_SOURCE_DIR}/include) + +# Build the targets +add_subdirectory(src) + +if (BENCHMARK_ENABLE_TESTING) + enable_testing() + if (BENCHMARK_ENABLE_GTEST_TESTS) + include(HandleGTest) + endif() + add_subdirectory(test) +endif() diff --git a/benchmarks/thirdparty/benchmark/CONTRIBUTORS b/benchmarks/thirdparty/benchmark/CONTRIBUTORS new file mode 100644 index 00000000..c59134b9 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/CONTRIBUTORS @@ -0,0 +1,62 @@ +# People who have agreed to one of the CLAs and can contribute patches. +# The AUTHORS file lists the copyright holders; this file +# lists people. For example, Google employees are listed here +# but not in AUTHORS, because Google holds the copyright. +# +# Names should be added to this file only after verifying that +# the individual or the individual's organization has agreed to +# the appropriate Contributor License Agreement, found here: +# +# https://developers.google.com/open-source/cla/individual +# https://developers.google.com/open-source/cla/corporate +# +# The agreement for individuals can be filled out on the web. +# +# When adding J Random Contributor's name to this file, +# either J's name or J's organization's name should be +# added to the AUTHORS file, depending on whether the +# individual or corporate CLA was used. +# +# Names should be added to this file as: +# Name +# +# Please keep the list sorted. + +Albert Pretorius +Arne Beer +Billy Robert O'Neal III +Chris Kennelly +Christopher Seymour +David Coeurjolly +Dominic Hamon +Dominik Czarnota +Eric Fiselier +Eugene Zhuk +Evgeny Safronov +Felix Homann +Ismael Jimenez Martinez +Jern-Kuan Leong +JianXiong Zhou +Joao Paulo Magalhaes +Jussi Knuuttila +Kai Wolf +Kishan Kumar +Kaito Udagawa +Lei Xu +Matt Clarkson +Maxim Vafin +Nick Hutchinson +Oleksandr Sochka +Pascal Leroy +Paul Redmond +Pierre Phaneuf +Radoslav Yovchev +Raul Marin +Ray Glover +Roman Lebedev +Shuo Chen +Tobias Ulvgård +Tom Madams +Yixuan Qiu +Yusuke Suzuki +Zbigniew Skowron diff --git a/benchmarks/thirdparty/benchmark/LICENSE b/benchmarks/thirdparty/benchmark/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/benchmarks/thirdparty/benchmark/README.md b/benchmarks/thirdparty/benchmark/README.md new file mode 100644 index 00000000..6bd81e70 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/README.md @@ -0,0 +1,935 @@ +# benchmark +[![Build Status](https://travis-ci.org/google/benchmark.svg?branch=master)](https://travis-ci.org/google/benchmark) +[![Build status](https://ci.appveyor.com/api/projects/status/u0qsyp7t1tk7cpxs/branch/master?svg=true)](https://ci.appveyor.com/project/google/benchmark/branch/master) +[![Coverage Status](https://coveralls.io/repos/google/benchmark/badge.svg)](https://coveralls.io/r/google/benchmark) +[![slackin](https://slackin-iqtfqnpzxd.now.sh/badge.svg)](https://slackin-iqtfqnpzxd.now.sh/) + +A library to support the benchmarking of functions, similar to unit-tests. + +Discussion group: https://groups.google.com/d/forum/benchmark-discuss + +IRC channel: https://freenode.net #googlebenchmark + +[Known issues and common problems](#known-issues) + +[Additional Tooling Documentation](docs/tools.md) + + +## Building + +The basic steps for configuring and building the library look like this: + +```bash +$ git clone https://github.com/google/benchmark.git +# Benchmark requires GTest as a dependency. Add the source tree as a subdirectory. +$ git clone https://github.com/google/googletest.git benchmark/googletest +$ mkdir build && cd build +$ cmake -G [options] ../benchmark +# Assuming a makefile generator was used +$ make +``` + +Note that Google Benchmark requires GTest to build and run the tests. This +dependency can be provided three ways: + +* Checkout the GTest sources into `benchmark/googletest`. +* Otherwise, if `-DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON` is specified during + configuration, the library will automatically download and build any required + dependencies. +* Otherwise, if nothing is done, CMake will use `find_package(GTest REQUIRED)` + to resolve the required GTest dependency. + +If you do not wish to build and run the tests, add `-DBENCHMARK_ENABLE_GTEST_TESTS=OFF` +to `CMAKE_ARGS`. + + +## Installation Guide + +For Ubuntu and Debian Based System + +First make sure you have git and cmake installed (If not please install it) + +``` +sudo apt-get install git +sudo apt-get install cmake +``` + +Now, let's clone the repository and build it + +``` +git clone https://github.com/google/benchmark.git +cd benchmark +mkdir build +cd build +cmake .. -DCMAKE_BUILD_TYPE=RELEASE +make +``` + +We need to install the library globally now + +``` +sudo make install +``` + +Now you have google/benchmark installed in your machine +Note: Don't forget to link to pthread library while building + +## Stable and Experimental Library Versions + +The main branch contains the latest stable version of the benchmarking library; +the API of which can be considered largely stable, with source breaking changes +being made only upon the release of a new major version. + +Newer, experimental, features are implemented and tested on the +[`v2` branch](https://github.com/google/benchmark/tree/v2). Users who wish +to use, test, and provide feedback on the new features are encouraged to try +this branch. However, this branch provides no stability guarantees and reserves +the right to change and break the API at any time. + + +## Example usage +### Basic usage +Define a function that executes the code to be measured. + +```c++ +#include + +static void BM_StringCreation(benchmark::State& state) { + for (auto _ : state) + std::string empty_string; +} +// Register the function as a benchmark +BENCHMARK(BM_StringCreation); + +// Define another benchmark +static void BM_StringCopy(benchmark::State& state) { + std::string x = "hello"; + for (auto _ : state) + std::string copy(x); +} +BENCHMARK(BM_StringCopy); + +BENCHMARK_MAIN(); +``` + +Don't forget to inform your linker to add benchmark library e.g. through `-lbenchmark` compilation flag. + +The benchmark library will reporting the timing for the code within the `for(...)` loop. + +### Passing arguments +Sometimes a family of benchmarks can be implemented with just one routine that +takes an extra argument to specify which one of the family of benchmarks to +run. For example, the following code defines a family of benchmarks for +measuring the speed of `memcpy()` calls of different lengths: + +```c++ +static void BM_memcpy(benchmark::State& state) { + char* src = new char[state.range(0)]; + char* dst = new char[state.range(0)]; + memset(src, 'x', state.range(0)); + for (auto _ : state) + memcpy(dst, src, state.range(0)); + state.SetBytesProcessed(int64_t(state.iterations()) * + int64_t(state.range(0))); + delete[] src; + delete[] dst; +} +BENCHMARK(BM_memcpy)->Arg(8)->Arg(64)->Arg(512)->Arg(1<<10)->Arg(8<<10); +``` + +The preceding code is quite repetitive, and can be replaced with the following +short-hand. The following invocation will pick a few appropriate arguments in +the specified range and will generate a benchmark for each such argument. + +```c++ +BENCHMARK(BM_memcpy)->Range(8, 8<<10); +``` + +By default the arguments in the range are generated in multiples of eight and +the command above selects [ 8, 64, 512, 4k, 8k ]. In the following code the +range multiplier is changed to multiples of two. + +```c++ +BENCHMARK(BM_memcpy)->RangeMultiplier(2)->Range(8, 8<<10); +``` +Now arguments generated are [ 8, 16, 32, 64, 128, 256, 512, 1024, 2k, 4k, 8k ]. + +You might have a benchmark that depends on two or more inputs. For example, the +following code defines a family of benchmarks for measuring the speed of set +insertion. + +```c++ +static void BM_SetInsert(benchmark::State& state) { + std::set data; + for (auto _ : state) { + state.PauseTiming(); + data = ConstructRandomSet(state.range(0)); + state.ResumeTiming(); + for (int j = 0; j < state.range(1); ++j) + data.insert(RandomNumber()); + } +} +BENCHMARK(BM_SetInsert) + ->Args({1<<10, 128}) + ->Args({2<<10, 128}) + ->Args({4<<10, 128}) + ->Args({8<<10, 128}) + ->Args({1<<10, 512}) + ->Args({2<<10, 512}) + ->Args({4<<10, 512}) + ->Args({8<<10, 512}); +``` + +The preceding code is quite repetitive, and can be replaced with the following +short-hand. The following macro will pick a few appropriate arguments in the +product of the two specified ranges and will generate a benchmark for each such +pair. + +```c++ +BENCHMARK(BM_SetInsert)->Ranges({{1<<10, 8<<10}, {128, 512}}); +``` + +For more complex patterns of inputs, passing a custom function to `Apply` allows +programmatic specification of an arbitrary set of arguments on which to run the +benchmark. The following example enumerates a dense range on one parameter, +and a sparse range on the second. + +```c++ +static void CustomArguments(benchmark::internal::Benchmark* b) { + for (int i = 0; i <= 10; ++i) + for (int j = 32; j <= 1024*1024; j *= 8) + b->Args({i, j}); +} +BENCHMARK(BM_SetInsert)->Apply(CustomArguments); +``` + +### Calculate asymptotic complexity (Big O) +Asymptotic complexity might be calculated for a family of benchmarks. The +following code will calculate the coefficient for the high-order term in the +running time and the normalized root-mean square error of string comparison. + +```c++ +static void BM_StringCompare(benchmark::State& state) { + std::string s1(state.range(0), '-'); + std::string s2(state.range(0), '-'); + for (auto _ : state) { + benchmark::DoNotOptimize(s1.compare(s2)); + } + state.SetComplexityN(state.range(0)); +} +BENCHMARK(BM_StringCompare) + ->RangeMultiplier(2)->Range(1<<10, 1<<18)->Complexity(benchmark::oN); +``` + +As shown in the following invocation, asymptotic complexity might also be +calculated automatically. + +```c++ +BENCHMARK(BM_StringCompare) + ->RangeMultiplier(2)->Range(1<<10, 1<<18)->Complexity(); +``` + +The following code will specify asymptotic complexity with a lambda function, +that might be used to customize high-order term calculation. + +```c++ +BENCHMARK(BM_StringCompare)->RangeMultiplier(2) + ->Range(1<<10, 1<<18)->Complexity([](int n)->double{return n; }); +``` + +### Templated benchmarks +Templated benchmarks work the same way: This example produces and consumes +messages of size `sizeof(v)` `range_x` times. It also outputs throughput in the +absence of multiprogramming. + +```c++ +template int BM_Sequential(benchmark::State& state) { + Q q; + typename Q::value_type v; + for (auto _ : state) { + for (int i = state.range(0); i--; ) + q.push(v); + for (int e = state.range(0); e--; ) + q.Wait(&v); + } + // actually messages, not bytes: + state.SetBytesProcessed( + static_cast(state.iterations())*state.range(0)); +} +BENCHMARK_TEMPLATE(BM_Sequential, WaitQueue)->Range(1<<0, 1<<10); +``` + +Three macros are provided for adding benchmark templates. + +```c++ +#ifdef BENCHMARK_HAS_CXX11 +#define BENCHMARK_TEMPLATE(func, ...) // Takes any number of parameters. +#else // C++ < C++11 +#define BENCHMARK_TEMPLATE(func, arg1) +#endif +#define BENCHMARK_TEMPLATE1(func, arg1) +#define BENCHMARK_TEMPLATE2(func, arg1, arg2) +``` + +### A Faster KeepRunning loop + +In C++11 mode, a ranged-based for loop should be used in preference to +the `KeepRunning` loop for running the benchmarks. For example: + +```c++ +static void BM_Fast(benchmark::State &state) { + for (auto _ : state) { + FastOperation(); + } +} +BENCHMARK(BM_Fast); +``` + +The reason the ranged-for loop is faster than using `KeepRunning`, is +because `KeepRunning` requires a memory load and store of the iteration count +ever iteration, whereas the ranged-for variant is able to keep the iteration count +in a register. + +For example, an empty inner loop of using the ranged-based for method looks like: + +```asm +# Loop Init + mov rbx, qword ptr [r14 + 104] + call benchmark::State::StartKeepRunning() + test rbx, rbx + je .LoopEnd +.LoopHeader: # =>This Inner Loop Header: Depth=1 + add rbx, -1 + jne .LoopHeader +.LoopEnd: +``` + +Compared to an empty `KeepRunning` loop, which looks like: + +```asm +.LoopHeader: # in Loop: Header=BB0_3 Depth=1 + cmp byte ptr [rbx], 1 + jne .LoopInit +.LoopBody: # =>This Inner Loop Header: Depth=1 + mov rax, qword ptr [rbx + 8] + lea rcx, [rax + 1] + mov qword ptr [rbx + 8], rcx + cmp rax, qword ptr [rbx + 104] + jb .LoopHeader + jmp .LoopEnd +.LoopInit: + mov rdi, rbx + call benchmark::State::StartKeepRunning() + jmp .LoopBody +.LoopEnd: +``` + +Unless C++03 compatibility is required, the ranged-for variant of writing +the benchmark loop should be preferred. + +## Passing arbitrary arguments to a benchmark +In C++11 it is possible to define a benchmark that takes an arbitrary number +of extra arguments. The `BENCHMARK_CAPTURE(func, test_case_name, ...args)` +macro creates a benchmark that invokes `func` with the `benchmark::State` as +the first argument followed by the specified `args...`. +The `test_case_name` is appended to the name of the benchmark and +should describe the values passed. + +```c++ +template +void BM_takes_args(benchmark::State& state, ExtraArgs&&... extra_args) { + [...] +} +// Registers a benchmark named "BM_takes_args/int_string_test" that passes +// the specified values to `extra_args`. +BENCHMARK_CAPTURE(BM_takes_args, int_string_test, 42, std::string("abc")); +``` +Note that elements of `...args` may refer to global variables. Users should +avoid modifying global state inside of a benchmark. + +## Using RegisterBenchmark(name, fn, args...) + +The `RegisterBenchmark(name, func, args...)` function provides an alternative +way to create and register benchmarks. +`RegisterBenchmark(name, func, args...)` creates, registers, and returns a +pointer to a new benchmark with the specified `name` that invokes +`func(st, args...)` where `st` is a `benchmark::State` object. + +Unlike the `BENCHMARK` registration macros, which can only be used at the global +scope, the `RegisterBenchmark` can be called anywhere. This allows for +benchmark tests to be registered programmatically. + +Additionally `RegisterBenchmark` allows any callable object to be registered +as a benchmark. Including capturing lambdas and function objects. + +For Example: +```c++ +auto BM_test = [](benchmark::State& st, auto Inputs) { /* ... */ }; + +int main(int argc, char** argv) { + for (auto& test_input : { /* ... */ }) + benchmark::RegisterBenchmark(test_input.name(), BM_test, test_input); + benchmark::Initialize(&argc, argv); + benchmark::RunSpecifiedBenchmarks(); +} +``` + +### Multithreaded benchmarks +In a multithreaded test (benchmark invoked by multiple threads simultaneously), +it is guaranteed that none of the threads will start until all have reached +the start of the benchmark loop, and all will have finished before any thread +exits the benchmark loop. (This behavior is also provided by the `KeepRunning()` +API) As such, any global setup or teardown can be wrapped in a check against the thread +index: + +```c++ +static void BM_MultiThreaded(benchmark::State& state) { + if (state.thread_index == 0) { + // Setup code here. + } + for (auto _ : state) { + // Run the test as normal. + } + if (state.thread_index == 0) { + // Teardown code here. + } +} +BENCHMARK(BM_MultiThreaded)->Threads(2); +``` + +If the benchmarked code itself uses threads and you want to compare it to +single-threaded code, you may want to use real-time ("wallclock") measurements +for latency comparisons: + +```c++ +BENCHMARK(BM_test)->Range(8, 8<<10)->UseRealTime(); +``` + +Without `UseRealTime`, CPU time is used by default. + + +## Manual timing +For benchmarking something for which neither CPU time nor real-time are +correct or accurate enough, completely manual timing is supported using +the `UseManualTime` function. + +When `UseManualTime` is used, the benchmarked code must call +`SetIterationTime` once per iteration of the benchmark loop to +report the manually measured time. + +An example use case for this is benchmarking GPU execution (e.g. OpenCL +or CUDA kernels, OpenGL or Vulkan or Direct3D draw calls), which cannot +be accurately measured using CPU time or real-time. Instead, they can be +measured accurately using a dedicated API, and these measurement results +can be reported back with `SetIterationTime`. + +```c++ +static void BM_ManualTiming(benchmark::State& state) { + int microseconds = state.range(0); + std::chrono::duration sleep_duration { + static_cast(microseconds) + }; + + for (auto _ : state) { + auto start = std::chrono::high_resolution_clock::now(); + // Simulate some useful workload with a sleep + std::this_thread::sleep_for(sleep_duration); + auto end = std::chrono::high_resolution_clock::now(); + + auto elapsed_seconds = + std::chrono::duration_cast>( + end - start); + + state.SetIterationTime(elapsed_seconds.count()); + } +} +BENCHMARK(BM_ManualTiming)->Range(1, 1<<17)->UseManualTime(); +``` + +### Preventing optimisation +To prevent a value or expression from being optimized away by the compiler +the `benchmark::DoNotOptimize(...)` and `benchmark::ClobberMemory()` +functions can be used. + +```c++ +static void BM_test(benchmark::State& state) { + for (auto _ : state) { + int x = 0; + for (int i=0; i < 64; ++i) { + benchmark::DoNotOptimize(x += i); + } + } +} +``` + +`DoNotOptimize()` forces the *result* of `` to be stored in either +memory or a register. For GNU based compilers it acts as read/write barrier +for global memory. More specifically it forces the compiler to flush pending +writes to memory and reload any other values as necessary. + +Note that `DoNotOptimize()` does not prevent optimizations on `` +in any way. `` may even be removed entirely when the result is already +known. For example: + +```c++ + /* Example 1: `` is removed entirely. */ + int foo(int x) { return x + 42; } + while (...) DoNotOptimize(foo(0)); // Optimized to DoNotOptimize(42); + + /* Example 2: Result of '' is only reused */ + int bar(int) __attribute__((const)); + while (...) DoNotOptimize(bar(0)); // Optimized to: + // int __result__ = bar(0); + // while (...) DoNotOptimize(__result__); +``` + +The second tool for preventing optimizations is `ClobberMemory()`. In essence +`ClobberMemory()` forces the compiler to perform all pending writes to global +memory. Memory managed by block scope objects must be "escaped" using +`DoNotOptimize(...)` before it can be clobbered. In the below example +`ClobberMemory()` prevents the call to `v.push_back(42)` from being optimized +away. + +```c++ +static void BM_vector_push_back(benchmark::State& state) { + for (auto _ : state) { + std::vector v; + v.reserve(1); + benchmark::DoNotOptimize(v.data()); // Allow v.data() to be clobbered. + v.push_back(42); + benchmark::ClobberMemory(); // Force 42 to be written to memory. + } +} +``` + +Note that `ClobberMemory()` is only available for GNU or MSVC based compilers. + +### Set time unit manually +If a benchmark runs a few milliseconds it may be hard to visually compare the +measured times, since the output data is given in nanoseconds per default. In +order to manually set the time unit, you can specify it manually: + +```c++ +BENCHMARK(BM_test)->Unit(benchmark::kMillisecond); +``` + +## Controlling number of iterations +In all cases, the number of iterations for which the benchmark is run is +governed by the amount of time the benchmark takes. Concretely, the number of +iterations is at least one, not more than 1e9, until CPU time is greater than +the minimum time, or the wallclock time is 5x minimum time. The minimum time is +set as a flag `--benchmark_min_time` or per benchmark by calling `MinTime` on +the registered benchmark object. + +## Reporting the mean, median and standard deviation by repeated benchmarks +By default each benchmark is run once and that single result is reported. +However benchmarks are often noisy and a single result may not be representative +of the overall behavior. For this reason it's possible to repeatedly rerun the +benchmark. + +The number of runs of each benchmark is specified globally by the +`--benchmark_repetitions` flag or on a per benchmark basis by calling +`Repetitions` on the registered benchmark object. When a benchmark is run more +than once the mean, median and standard deviation of the runs will be reported. + +Additionally the `--benchmark_report_aggregates_only={true|false}` flag or +`ReportAggregatesOnly(bool)` function can be used to change how repeated tests +are reported. By default the result of each repeated run is reported. When this +option is `true` only the mean, median and standard deviation of the runs is reported. +Calling `ReportAggregatesOnly(bool)` on a registered benchmark object overrides +the value of the flag for that benchmark. + +## User-defined statistics for repeated benchmarks +While having mean, median and standard deviation is nice, this may not be +enough for everyone. For example you may want to know what is the largest +observation, e.g. because you have some real-time constraints. This is easy. +The following code will specify a custom statistic to be calculated, defined +by a lambda function. + +```c++ +void BM_spin_empty(benchmark::State& state) { + for (auto _ : state) { + for (int x = 0; x < state.range(0); ++x) { + benchmark::DoNotOptimize(x); + } + } +} + +BENCHMARK(BM_spin_empty) + ->ComputeStatistics("max", [](const std::vector& v) -> double { + return *(std::max_element(std::begin(v), std::end(v))); + }) + ->Arg(512); +``` + +## Fixtures +Fixture tests are created by +first defining a type that derives from `::benchmark::Fixture` and then +creating/registering the tests using the following macros: + +* `BENCHMARK_F(ClassName, Method)` +* `BENCHMARK_DEFINE_F(ClassName, Method)` +* `BENCHMARK_REGISTER_F(ClassName, Method)` + +For Example: + +```c++ +class MyFixture : public benchmark::Fixture {}; + +BENCHMARK_F(MyFixture, FooTest)(benchmark::State& st) { + for (auto _ : st) { + ... + } +} + +BENCHMARK_DEFINE_F(MyFixture, BarTest)(benchmark::State& st) { + for (auto _ : st) { + ... + } +} +/* BarTest is NOT registered */ +BENCHMARK_REGISTER_F(MyFixture, BarTest)->Threads(2); +/* BarTest is now registered */ +``` + +### Templated fixtures +Also you can create templated fixture by using the following macros: + +* `BENCHMARK_TEMPLATE_F(ClassName, Method, ...)` +* `BENCHMARK_TEMPLATE_DEFINE_F(ClassName, Method, ...)` + +For example: +```c++ +template +class MyFixture : public benchmark::Fixture {}; + +BENCHMARK_TEMPLATE_F(MyFixture, IntTest, int)(benchmark::State& st) { + for (auto _ : st) { + ... + } +} + +BENCHMARK_TEMPLATE_DEFINE_F(MyFixture, DoubleTest, double)(benchmark::State& st) { + for (auto _ : st) { + ... + } +} + +BENCHMARK_REGISTER_F(MyFixture, DoubleTest)->Threads(2); +``` + +## User-defined counters + +You can add your own counters with user-defined names. The example below +will add columns "Foo", "Bar" and "Baz" in its output: + +```c++ +static void UserCountersExample1(benchmark::State& state) { + double numFoos = 0, numBars = 0, numBazs = 0; + for (auto _ : state) { + // ... count Foo,Bar,Baz events + } + state.counters["Foo"] = numFoos; + state.counters["Bar"] = numBars; + state.counters["Baz"] = numBazs; +} +``` + +The `state.counters` object is a `std::map` with `std::string` keys +and `Counter` values. The latter is a `double`-like class, via an implicit +conversion to `double&`. Thus you can use all of the standard arithmetic +assignment operators (`=,+=,-=,*=,/=`) to change the value of each counter. + +In multithreaded benchmarks, each counter is set on the calling thread only. +When the benchmark finishes, the counters from each thread will be summed; +the resulting sum is the value which will be shown for the benchmark. + +The `Counter` constructor accepts two parameters: the value as a `double` +and a bit flag which allows you to show counters as rates and/or as +per-thread averages: + +```c++ + // sets a simple counter + state.counters["Foo"] = numFoos; + + // Set the counter as a rate. It will be presented divided + // by the duration of the benchmark. + state.counters["FooRate"] = Counter(numFoos, benchmark::Counter::kIsRate); + + // Set the counter as a thread-average quantity. It will + // be presented divided by the number of threads. + state.counters["FooAvg"] = Counter(numFoos, benchmark::Counter::kAvgThreads); + + // There's also a combined flag: + state.counters["FooAvgRate"] = Counter(numFoos,benchmark::Counter::kAvgThreadsRate); +``` + +When you're compiling in C++11 mode or later you can use `insert()` with +`std::initializer_list`: + +```c++ + // With C++11, this can be done: + state.counters.insert({{"Foo", numFoos}, {"Bar", numBars}, {"Baz", numBazs}}); + // ... instead of: + state.counters["Foo"] = numFoos; + state.counters["Bar"] = numBars; + state.counters["Baz"] = numBazs; +``` + +### Counter reporting + +When using the console reporter, by default, user counters are are printed at +the end after the table, the same way as ``bytes_processed`` and +``items_processed``. This is best for cases in which there are few counters, +or where there are only a couple of lines per benchmark. Here's an example of +the default output: + +``` +------------------------------------------------------------------------------ +Benchmark Time CPU Iterations UserCounters... +------------------------------------------------------------------------------ +BM_UserCounter/threads:8 2248 ns 10277 ns 68808 Bar=16 Bat=40 Baz=24 Foo=8 +BM_UserCounter/threads:1 9797 ns 9788 ns 71523 Bar=2 Bat=5 Baz=3 Foo=1024m +BM_UserCounter/threads:2 4924 ns 9842 ns 71036 Bar=4 Bat=10 Baz=6 Foo=2 +BM_UserCounter/threads:4 2589 ns 10284 ns 68012 Bar=8 Bat=20 Baz=12 Foo=4 +BM_UserCounter/threads:8 2212 ns 10287 ns 68040 Bar=16 Bat=40 Baz=24 Foo=8 +BM_UserCounter/threads:16 1782 ns 10278 ns 68144 Bar=32 Bat=80 Baz=48 Foo=16 +BM_UserCounter/threads:32 1291 ns 10296 ns 68256 Bar=64 Bat=160 Baz=96 Foo=32 +BM_UserCounter/threads:4 2615 ns 10307 ns 68040 Bar=8 Bat=20 Baz=12 Foo=4 +BM_Factorial 26 ns 26 ns 26608979 40320 +BM_Factorial/real_time 26 ns 26 ns 26587936 40320 +BM_CalculatePiRange/1 16 ns 16 ns 45704255 0 +BM_CalculatePiRange/8 73 ns 73 ns 9520927 3.28374 +BM_CalculatePiRange/64 609 ns 609 ns 1140647 3.15746 +BM_CalculatePiRange/512 4900 ns 4901 ns 142696 3.14355 +``` + +If this doesn't suit you, you can print each counter as a table column by +passing the flag `--benchmark_counters_tabular=true` to the benchmark +application. This is best for cases in which there are a lot of counters, or +a lot of lines per individual benchmark. Note that this will trigger a +reprinting of the table header any time the counter set changes between +individual benchmarks. Here's an example of corresponding output when +`--benchmark_counters_tabular=true` is passed: + +``` +--------------------------------------------------------------------------------------- +Benchmark Time CPU Iterations Bar Bat Baz Foo +--------------------------------------------------------------------------------------- +BM_UserCounter/threads:8 2198 ns 9953 ns 70688 16 40 24 8 +BM_UserCounter/threads:1 9504 ns 9504 ns 73787 2 5 3 1 +BM_UserCounter/threads:2 4775 ns 9550 ns 72606 4 10 6 2 +BM_UserCounter/threads:4 2508 ns 9951 ns 70332 8 20 12 4 +BM_UserCounter/threads:8 2055 ns 9933 ns 70344 16 40 24 8 +BM_UserCounter/threads:16 1610 ns 9946 ns 70720 32 80 48 16 +BM_UserCounter/threads:32 1192 ns 9948 ns 70496 64 160 96 32 +BM_UserCounter/threads:4 2506 ns 9949 ns 70332 8 20 12 4 +-------------------------------------------------------------- +Benchmark Time CPU Iterations +-------------------------------------------------------------- +BM_Factorial 26 ns 26 ns 26392245 40320 +BM_Factorial/real_time 26 ns 26 ns 26494107 40320 +BM_CalculatePiRange/1 15 ns 15 ns 45571597 0 +BM_CalculatePiRange/8 74 ns 74 ns 9450212 3.28374 +BM_CalculatePiRange/64 595 ns 595 ns 1173901 3.15746 +BM_CalculatePiRange/512 4752 ns 4752 ns 147380 3.14355 +BM_CalculatePiRange/4k 37970 ns 37972 ns 18453 3.14184 +BM_CalculatePiRange/32k 303733 ns 303744 ns 2305 3.14162 +BM_CalculatePiRange/256k 2434095 ns 2434186 ns 288 3.1416 +BM_CalculatePiRange/1024k 9721140 ns 9721413 ns 71 3.14159 +BM_CalculatePi/threads:8 2255 ns 9943 ns 70936 +``` +Note above the additional header printed when the benchmark changes from +``BM_UserCounter`` to ``BM_Factorial``. This is because ``BM_Factorial`` does +not have the same counter set as ``BM_UserCounter``. + +## Exiting Benchmarks in Error + +When errors caused by external influences, such as file I/O and network +communication, occur within a benchmark the +`State::SkipWithError(const char* msg)` function can be used to skip that run +of benchmark and report the error. Note that only future iterations of the +`KeepRunning()` are skipped. For the ranged-for version of the benchmark loop +Users must explicitly exit the loop, otherwise all iterations will be performed. +Users may explicitly return to exit the benchmark immediately. + +The `SkipWithError(...)` function may be used at any point within the benchmark, +including before and after the benchmark loop. + +For example: + +```c++ +static void BM_test(benchmark::State& state) { + auto resource = GetResource(); + if (!resource.good()) { + state.SkipWithError("Resource is not good!"); + // KeepRunning() loop will not be entered. + } + for (state.KeepRunning()) { + auto data = resource.read_data(); + if (!resource.good()) { + state.SkipWithError("Failed to read data!"); + break; // Needed to skip the rest of the iteration. + } + do_stuff(data); + } +} + +static void BM_test_ranged_fo(benchmark::State & state) { + state.SkipWithError("test will not be entered"); + for (auto _ : state) { + state.SkipWithError("Failed!"); + break; // REQUIRED to prevent all further iterations. + } +} +``` + +## Running a subset of the benchmarks + +The `--benchmark_filter=` option can be used to only run the benchmarks +which match the specified ``. For example: + +```bash +$ ./run_benchmarks.x --benchmark_filter=BM_memcpy/32 +Run on (1 X 2300 MHz CPU ) +2016-06-25 19:34:24 +Benchmark Time CPU Iterations +---------------------------------------------------- +BM_memcpy/32 11 ns 11 ns 79545455 +BM_memcpy/32k 2181 ns 2185 ns 324074 +BM_memcpy/32 12 ns 12 ns 54687500 +BM_memcpy/32k 1834 ns 1837 ns 357143 +``` + + +## Output Formats +The library supports multiple output formats. Use the +`--benchmark_format=` flag to set the format type. `console` +is the default format. + +The Console format is intended to be a human readable format. By default +the format generates color output. Context is output on stderr and the +tabular data on stdout. Example tabular output looks like: +``` +Benchmark Time(ns) CPU(ns) Iterations +---------------------------------------------------------------------- +BM_SetInsert/1024/1 28928 29349 23853 133.097kB/s 33.2742k items/s +BM_SetInsert/1024/8 32065 32913 21375 949.487kB/s 237.372k items/s +BM_SetInsert/1024/10 33157 33648 21431 1.13369MB/s 290.225k items/s +``` + +The JSON format outputs human readable json split into two top level attributes. +The `context` attribute contains information about the run in general, including +information about the CPU and the date. +The `benchmarks` attribute contains a list of ever benchmark run. Example json +output looks like: +```json +{ + "context": { + "date": "2015/03/17-18:40:25", + "num_cpus": 40, + "mhz_per_cpu": 2801, + "cpu_scaling_enabled": false, + "build_type": "debug" + }, + "benchmarks": [ + { + "name": "BM_SetInsert/1024/1", + "iterations": 94877, + "real_time": 29275, + "cpu_time": 29836, + "bytes_per_second": 134066, + "items_per_second": 33516 + }, + { + "name": "BM_SetInsert/1024/8", + "iterations": 21609, + "real_time": 32317, + "cpu_time": 32429, + "bytes_per_second": 986770, + "items_per_second": 246693 + }, + { + "name": "BM_SetInsert/1024/10", + "iterations": 21393, + "real_time": 32724, + "cpu_time": 33355, + "bytes_per_second": 1199226, + "items_per_second": 299807 + } + ] +} +``` + +The CSV format outputs comma-separated values. The `context` is output on stderr +and the CSV itself on stdout. Example CSV output looks like: +``` +name,iterations,real_time,cpu_time,bytes_per_second,items_per_second,label +"BM_SetInsert/1024/1",65465,17890.7,8407.45,475768,118942, +"BM_SetInsert/1024/8",116606,18810.1,9766.64,3.27646e+06,819115, +"BM_SetInsert/1024/10",106365,17238.4,8421.53,4.74973e+06,1.18743e+06, +``` + +## Output Files +The library supports writing the output of the benchmark to a file specified +by `--benchmark_out=`. The format of the output can be specified +using `--benchmark_out_format={json|console|csv}`. Specifying +`--benchmark_out` does not suppress the console output. + +## Debug vs Release +By default, benchmark builds as a debug library. You will see a warning in the output when this is the case. To build it as a release library instead, use: + +``` +cmake -DCMAKE_BUILD_TYPE=Release +``` + +To enable link-time optimisation, use + +``` +cmake -DCMAKE_BUILD_TYPE=Release -DBENCHMARK_ENABLE_LTO=true +``` + +If you are using gcc, you might need to set `GCC_AR` and `GCC_RANLIB` cmake cache variables, if autodetection fails. +If you are using clang, you may need to set `LLVMAR_EXECUTABLE`, `LLVMNM_EXECUTABLE` and `LLVMRANLIB_EXECUTABLE` cmake cache variables. + +## Linking against the library +When using gcc, it is necessary to link against pthread to avoid runtime exceptions. +This is due to how gcc implements std::thread. +See [issue #67](https://github.com/google/benchmark/issues/67) for more details. + +## Compiler Support + +Google Benchmark uses C++11 when building the library. As such we require +a modern C++ toolchain, both compiler and standard library. + +The following minimum versions are strongly recommended build the library: + +* GCC 4.8 +* Clang 3.4 +* Visual Studio 2013 +* Intel 2015 Update 1 + +Anything older *may* work. + +Note: Using the library and its headers in C++03 is supported. C++11 is only +required to build the library. + +## Disable CPU frequency scaling +If you see this error: +``` +***WARNING*** CPU scaling is enabled, the benchmark real time measurements may be noisy and will incur extra overhead. +``` +you might want to disable the CPU frequency scaling while running the benchmark: +```bash +sudo cpupower frequency-set --governor performance +./mybench +sudo cpupower frequency-set --governor powersave +``` + +# Known Issues + +### Windows + +* Users must manually link `shlwapi.lib`. Failure to do so may result +in unresolved symbols. + diff --git a/benchmarks/thirdparty/benchmark/cmake/AddCXXCompilerFlag.cmake b/benchmarks/thirdparty/benchmark/cmake/AddCXXCompilerFlag.cmake new file mode 100644 index 00000000..17d5f3dc --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/AddCXXCompilerFlag.cmake @@ -0,0 +1,64 @@ +# - Adds a compiler flag if it is supported by the compiler +# +# This function checks that the supplied compiler flag is supported and then +# adds it to the corresponding compiler flags +# +# add_cxx_compiler_flag( []) +# +# - Example +# +# include(AddCXXCompilerFlag) +# add_cxx_compiler_flag(-Wall) +# add_cxx_compiler_flag(-no-strict-aliasing RELEASE) +# Requires CMake 2.6+ + +if(__add_cxx_compiler_flag) + return() +endif() +set(__add_cxx_compiler_flag INCLUDED) + +include(CheckCXXCompilerFlag) + +function(mangle_compiler_flag FLAG OUTPUT) + string(TOUPPER "HAVE_CXX_FLAG_${FLAG}" SANITIZED_FLAG) + string(REPLACE "+" "X" SANITIZED_FLAG ${SANITIZED_FLAG}) + string(REGEX REPLACE "[^A-Za-z_0-9]" "_" SANITIZED_FLAG ${SANITIZED_FLAG}) + string(REGEX REPLACE "_+" "_" SANITIZED_FLAG ${SANITIZED_FLAG}) + set(${OUTPUT} "${SANITIZED_FLAG}" PARENT_SCOPE) +endfunction(mangle_compiler_flag) + +function(add_cxx_compiler_flag FLAG) + mangle_compiler_flag("${FLAG}" MANGLED_FLAG) + set(OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${FLAG}") + check_cxx_compiler_flag("${FLAG}" ${MANGLED_FLAG}) + set(CMAKE_REQUIRED_FLAGS "${OLD_CMAKE_REQUIRED_FLAGS}") + if(${MANGLED_FLAG}) + set(VARIANT ${ARGV1}) + if(ARGV1) + string(TOUPPER "_${VARIANT}" VARIANT) + endif() + set(CMAKE_CXX_FLAGS${VARIANT} "${CMAKE_CXX_FLAGS${VARIANT}} ${BENCHMARK_CXX_FLAGS${VARIANT}} ${FLAG}" PARENT_SCOPE) + endif() +endfunction() + +function(add_required_cxx_compiler_flag FLAG) + mangle_compiler_flag("${FLAG}" MANGLED_FLAG) + set(OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${FLAG}") + check_cxx_compiler_flag("${FLAG}" ${MANGLED_FLAG}) + set(CMAKE_REQUIRED_FLAGS "${OLD_CMAKE_REQUIRED_FLAGS}") + if(${MANGLED_FLAG}) + set(VARIANT ${ARGV1}) + if(ARGV1) + string(TOUPPER "_${VARIANT}" VARIANT) + endif() + set(CMAKE_CXX_FLAGS${VARIANT} "${CMAKE_CXX_FLAGS${VARIANT}} ${FLAG}" PARENT_SCOPE) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAG}" PARENT_SCOPE) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FLAG}" PARENT_SCOPE) + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${FLAG}" PARENT_SCOPE) + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${FLAG}" PARENT_SCOPE) + else() + message(FATAL_ERROR "Required flag '${FLAG}' is not supported by the compiler") + endif() +endfunction() diff --git a/benchmarks/thirdparty/benchmark/cmake/CXXFeatureCheck.cmake b/benchmarks/thirdparty/benchmark/cmake/CXXFeatureCheck.cmake new file mode 100644 index 00000000..b2a82171 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/CXXFeatureCheck.cmake @@ -0,0 +1,62 @@ +# - Compile and run code to check for C++ features +# +# This functions compiles a source file under the `cmake` folder +# and adds the corresponding `HAVE_[FILENAME]` flag to the CMake +# environment +# +# cxx_feature_check( []) +# +# - Example +# +# include(CXXFeatureCheck) +# cxx_feature_check(STD_REGEX) +# Requires CMake 2.8.12+ + +if(__cxx_feature_check) + return() +endif() +set(__cxx_feature_check INCLUDED) + +function(cxx_feature_check FILE) + string(TOLOWER ${FILE} FILE) + string(TOUPPER ${FILE} VAR) + string(TOUPPER "HAVE_${VAR}" FEATURE) + if (DEFINED HAVE_${VAR}) + set(HAVE_${VAR} 1 PARENT_SCOPE) + add_definitions(-DHAVE_${VAR}) + return() + endif() + + message("-- Performing Test ${FEATURE}") + if(CMAKE_CROSSCOMPILING) + try_compile(COMPILE_${FEATURE} + ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${FILE}.cpp + CMAKE_FLAGS ${BENCHMARK_CXX_LINKER_FLAGS} + LINK_LIBRARIES ${BENCHMARK_CXX_LIBRARIES}) + if(COMPILE_${FEATURE}) + message(WARNING + "If you see build failures due to cross compilation, try setting HAVE_${VAR} to 0") + set(RUN_${FEATURE} 0) + else() + set(RUN_${FEATURE} 1) + endif() + else() + message("-- Performing Test ${FEATURE}") + try_run(RUN_${FEATURE} COMPILE_${FEATURE} + ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${FILE}.cpp + CMAKE_FLAGS ${BENCHMARK_CXX_LINKER_FLAGS} + LINK_LIBRARIES ${BENCHMARK_CXX_LIBRARIES}) + endif() + + if(RUN_${FEATURE} EQUAL 0) + message("-- Performing Test ${FEATURE} -- success") + set(HAVE_${VAR} 1 PARENT_SCOPE) + add_definitions(-DHAVE_${VAR}) + else() + if(NOT COMPILE_${FEATURE}) + message("-- Performing Test ${FEATURE} -- failed to compile") + else() + message("-- Performing Test ${FEATURE} -- compiled but failed to run") + endif() + endif() +endfunction() diff --git a/benchmarks/thirdparty/benchmark/cmake/Config.cmake.in b/benchmarks/thirdparty/benchmark/cmake/Config.cmake.in new file mode 100644 index 00000000..6e9256ee --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/Config.cmake.in @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake") diff --git a/benchmarks/thirdparty/benchmark/cmake/GetGitVersion.cmake b/benchmarks/thirdparty/benchmark/cmake/GetGitVersion.cmake new file mode 100644 index 00000000..8dd94800 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/GetGitVersion.cmake @@ -0,0 +1,51 @@ +# - Returns a version string from Git tags +# +# This function inspects the annotated git tags for the project and returns a string +# into a CMake variable +# +# get_git_version() +# +# - Example +# +# include(GetGitVersion) +# get_git_version(GIT_VERSION) +# +# Requires CMake 2.8.11+ +find_package(Git) + +if(__get_git_version) + return() +endif() +set(__get_git_version INCLUDED) + +function(get_git_version var) + if(GIT_EXECUTABLE) + execute_process(COMMAND ${GIT_EXECUTABLE} describe --match "v[0-9]*.[0-9]*.[0-9]*" --abbrev=8 + RESULT_VARIABLE status + OUTPUT_VARIABLE GIT_VERSION + ERROR_QUIET) + if(${status}) + set(GIT_VERSION "v0.0.0") + else() + string(STRIP ${GIT_VERSION} GIT_VERSION) + string(REGEX REPLACE "-[0-9]+-g" "-" GIT_VERSION ${GIT_VERSION}) + endif() + + # Work out if the repository is dirty + execute_process(COMMAND ${GIT_EXECUTABLE} update-index -q --refresh + OUTPUT_QUIET + ERROR_QUIET) + execute_process(COMMAND ${GIT_EXECUTABLE} diff-index --name-only HEAD -- + OUTPUT_VARIABLE GIT_DIFF_INDEX + ERROR_QUIET) + string(COMPARE NOTEQUAL "${GIT_DIFF_INDEX}" "" GIT_DIRTY) + if (${GIT_DIRTY}) + set(GIT_VERSION "${GIT_VERSION}-dirty") + endif() + else() + set(GIT_VERSION "v0.0.0") + endif() + + message("-- git Version: ${GIT_VERSION}") + set(${var} ${GIT_VERSION} PARENT_SCOPE) +endfunction() diff --git a/benchmarks/thirdparty/benchmark/cmake/HandleGTest.cmake b/benchmarks/thirdparty/benchmark/cmake/HandleGTest.cmake new file mode 100644 index 00000000..77ffc4c5 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/HandleGTest.cmake @@ -0,0 +1,79 @@ + +macro(split_list listname) + string(REPLACE ";" " " ${listname} "${${listname}}") +endmacro() + +macro(build_external_gtest) + include(ExternalProject) + set(GTEST_FLAGS "") + if (BENCHMARK_USE_LIBCXX) + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + list(APPEND GTEST_FLAGS -stdlib=libc++) + else() + message(WARNING "Unsupported compiler (${CMAKE_CXX_COMPILER}) when using libc++") + endif() + endif() + if (BENCHMARK_BUILD_32_BITS) + list(APPEND GTEST_FLAGS -m32) + endif() + if (NOT "${CMAKE_CXX_FLAGS}" STREQUAL "") + list(APPEND GTEST_FLAGS ${CMAKE_CXX_FLAGS}) + endif() + string(TOUPPER "${CMAKE_BUILD_TYPE}" GTEST_BUILD_TYPE) + if ("${GTEST_BUILD_TYPE}" STREQUAL "COVERAGE") + set(GTEST_BUILD_TYPE "DEBUG") + endif() + split_list(GTEST_FLAGS) + ExternalProject_Add(googletest + EXCLUDE_FROM_ALL ON + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG master + PREFIX "${CMAKE_BINARY_DIR}/googletest" + INSTALL_DIR "${CMAKE_BINARY_DIR}/googletest" + CMAKE_CACHE_ARGS + -DCMAKE_BUILD_TYPE:STRING=${GTEST_BUILD_TYPE} + -DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER} + -DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER} + -DCMAKE_INSTALL_PREFIX:PATH= + -DCMAKE_CXX_FLAGS:STRING=${GTEST_FLAGS} + -Dgtest_force_shared_crt:BOOL=ON + ) + + ExternalProject_Get_Property(googletest install_dir) + + add_library(gtest UNKNOWN IMPORTED) + add_library(gtest_main UNKNOWN IMPORTED) + + set(LIB_SUFFIX "${CMAKE_STATIC_LIBRARY_SUFFIX}") + set(LIB_PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}") + + if("${GTEST_BUILD_TYPE}" STREQUAL "DEBUG") + set(LIB_SUFFIX "d${CMAKE_STATIC_LIBRARY_SUFFIX}") + endif() + file(MAKE_DIRECTORY ${install_dir}/include) + set_target_properties(gtest PROPERTIES + IMPORTED_LOCATION ${install_dir}/lib/${LIB_PREFIX}gtest${LIB_SUFFIX} + INTERFACE_INCLUDE_DIRECTORIES ${install_dir}/include + ) + set_target_properties(gtest_main PROPERTIES + IMPORTED_LOCATION ${install_dir}/lib/${LIB_PREFIX}gtest_main${LIB_SUFFIX} + INTERFACE_INCLUDE_DIRECTORIES ${install_dir}/include + ) + add_dependencies(gtest googletest) + add_dependencies(gtest_main googletest) + set(GTEST_BOTH_LIBRARIES gtest gtest_main) + #set(GTEST_INCLUDE_DIRS ${install_dir}/include) +endmacro(build_external_gtest) + +if (BENCHMARK_ENABLE_GTEST_TESTS) + if (IS_DIRECTORY ${CMAKE_SOURCE_DIR}/googletest) + set(INSTALL_GTEST OFF CACHE INTERNAL "") + set(INSTALL_GMOCK OFF CACHE INTERNAL "") + add_subdirectory(${CMAKE_SOURCE_DIR}/googletest) + set(GTEST_BOTH_LIBRARIES gtest gtest_main) + elseif(BENCHMARK_DOWNLOAD_DEPENDENCIES) + build_external_gtest() + else() + find_package(GTest REQUIRED) + endif() +endif() diff --git a/benchmarks/thirdparty/benchmark/cmake/Modules/FindLLVMAr.cmake b/benchmarks/thirdparty/benchmark/cmake/Modules/FindLLVMAr.cmake new file mode 100644 index 00000000..23469813 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/Modules/FindLLVMAr.cmake @@ -0,0 +1,16 @@ +include(FeatureSummary) + +find_program(LLVMAR_EXECUTABLE + NAMES llvm-ar + DOC "The llvm-ar executable" + ) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LLVMAr + DEFAULT_MSG + LLVMAR_EXECUTABLE) + +SET_PACKAGE_PROPERTIES(LLVMAr PROPERTIES + URL https://llvm.org/docs/CommandGuide/llvm-ar.html + DESCRIPTION "create, modify, and extract from archives" +) diff --git a/benchmarks/thirdparty/benchmark/cmake/Modules/FindLLVMNm.cmake b/benchmarks/thirdparty/benchmark/cmake/Modules/FindLLVMNm.cmake new file mode 100644 index 00000000..e56430a0 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/Modules/FindLLVMNm.cmake @@ -0,0 +1,16 @@ +include(FeatureSummary) + +find_program(LLVMNM_EXECUTABLE + NAMES llvm-nm + DOC "The llvm-nm executable" + ) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LLVMNm + DEFAULT_MSG + LLVMNM_EXECUTABLE) + +SET_PACKAGE_PROPERTIES(LLVMNm PROPERTIES + URL https://llvm.org/docs/CommandGuide/llvm-nm.html + DESCRIPTION "list LLVM bitcode and object file’s symbol table" +) diff --git a/benchmarks/thirdparty/benchmark/cmake/Modules/FindLLVMRanLib.cmake b/benchmarks/thirdparty/benchmark/cmake/Modules/FindLLVMRanLib.cmake new file mode 100644 index 00000000..7b53e1a7 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/Modules/FindLLVMRanLib.cmake @@ -0,0 +1,15 @@ +include(FeatureSummary) + +find_program(LLVMRANLIB_EXECUTABLE + NAMES llvm-ranlib + DOC "The llvm-ranlib executable" + ) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LLVMRanLib + DEFAULT_MSG + LLVMRANLIB_EXECUTABLE) + +SET_PACKAGE_PROPERTIES(LLVMRanLib PROPERTIES + DESCRIPTION "generate index for LLVM archive" +) diff --git a/benchmarks/thirdparty/benchmark/cmake/benchmark.pc.in b/benchmarks/thirdparty/benchmark/cmake/benchmark.pc.in new file mode 100644 index 00000000..1e84bff6 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/benchmark.pc.in @@ -0,0 +1,11 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: @PROJECT_NAME@ +Description: Google microbenchmark framework +Version: @VERSION@ + +Libs: -L${libdir} -lbenchmark +Cflags: -I${includedir} diff --git a/benchmarks/thirdparty/benchmark/cmake/gnu_posix_regex.cpp b/benchmarks/thirdparty/benchmark/cmake/gnu_posix_regex.cpp new file mode 100644 index 00000000..b5b91cda --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/gnu_posix_regex.cpp @@ -0,0 +1,12 @@ +#include +#include +int main() { + std::string str = "test0159"; + regex_t re; + int ec = regcomp(&re, "^[a-z]+[0-9]+$", REG_EXTENDED | REG_NOSUB); + if (ec != 0) { + return ec; + } + return regexec(&re, str.c_str(), 0, nullptr, 0) ? -1 : 0; +} + diff --git a/benchmarks/thirdparty/benchmark/cmake/llvm-toolchain.cmake b/benchmarks/thirdparty/benchmark/cmake/llvm-toolchain.cmake new file mode 100644 index 00000000..fc119e52 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/llvm-toolchain.cmake @@ -0,0 +1,8 @@ +find_package(LLVMAr REQUIRED) +set(CMAKE_AR "${LLVMAR_EXECUTABLE}" CACHE FILEPATH "" FORCE) + +find_package(LLVMNm REQUIRED) +set(CMAKE_NM "${LLVMNM_EXECUTABLE}" CACHE FILEPATH "" FORCE) + +find_package(LLVMRanLib REQUIRED) +set(CMAKE_RANLIB "${LLVMRANLIB_EXECUTABLE}" CACHE FILEPATH "" FORCE) diff --git a/benchmarks/thirdparty/benchmark/cmake/posix_regex.cpp b/benchmarks/thirdparty/benchmark/cmake/posix_regex.cpp new file mode 100644 index 00000000..466dc625 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/posix_regex.cpp @@ -0,0 +1,14 @@ +#include +#include +int main() { + std::string str = "test0159"; + regex_t re; + int ec = regcomp(&re, "^[a-z]+[0-9]+$", REG_EXTENDED | REG_NOSUB); + if (ec != 0) { + return ec; + } + int ret = regexec(&re, str.c_str(), 0, nullptr, 0) ? -1 : 0; + regfree(&re); + return ret; +} + diff --git a/benchmarks/thirdparty/benchmark/cmake/std_regex.cpp b/benchmarks/thirdparty/benchmark/cmake/std_regex.cpp new file mode 100644 index 00000000..696f2a26 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/std_regex.cpp @@ -0,0 +1,10 @@ +#include +#include +int main() { + const std::string str = "test0159"; + std::regex re; + re = std::regex("^[a-z]+[0-9]+$", + std::regex_constants::extended | std::regex_constants::nosubs); + return std::regex_search(str, re) ? 0 : -1; +} + diff --git a/benchmarks/thirdparty/benchmark/cmake/steady_clock.cpp b/benchmarks/thirdparty/benchmark/cmake/steady_clock.cpp new file mode 100644 index 00000000..66d50d17 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/steady_clock.cpp @@ -0,0 +1,7 @@ +#include + +int main() { + typedef std::chrono::steady_clock Clock; + Clock::time_point tp = Clock::now(); + ((void)tp); +} diff --git a/benchmarks/thirdparty/benchmark/cmake/thread_safety_attributes.cpp b/benchmarks/thirdparty/benchmark/cmake/thread_safety_attributes.cpp new file mode 100644 index 00000000..46161bab --- /dev/null +++ b/benchmarks/thirdparty/benchmark/cmake/thread_safety_attributes.cpp @@ -0,0 +1,4 @@ +#define HAVE_THREAD_SAFETY_ATTRIBUTES +#include "../src/mutex.h" + +int main() {} diff --git a/benchmarks/thirdparty/benchmark/include/benchmark/benchmark.h b/benchmarks/thirdparty/benchmark/include/benchmark/benchmark.h new file mode 100644 index 00000000..340cbc1e --- /dev/null +++ b/benchmarks/thirdparty/benchmark/include/benchmark/benchmark.h @@ -0,0 +1,1389 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Support for registering benchmarks for functions. + +/* Example usage: +// Define a function that executes the code to be measured a +// specified number of times: +static void BM_StringCreation(benchmark::State& state) { + for (auto _ : state) + std::string empty_string; +} + +// Register the function as a benchmark +BENCHMARK(BM_StringCreation); + +// Define another benchmark +static void BM_StringCopy(benchmark::State& state) { + std::string x = "hello"; + for (auto _ : state) + std::string copy(x); +} +BENCHMARK(BM_StringCopy); + +// Augment the main() program to invoke benchmarks if specified +// via the --benchmarks command line flag. E.g., +// my_unittest --benchmark_filter=all +// my_unittest --benchmark_filter=BM_StringCreation +// my_unittest --benchmark_filter=String +// my_unittest --benchmark_filter='Copy|Creation' +int main(int argc, char** argv) { + benchmark::Initialize(&argc, argv); + benchmark::RunSpecifiedBenchmarks(); + return 0; +} + +// Sometimes a family of microbenchmarks can be implemented with +// just one routine that takes an extra argument to specify which +// one of the family of benchmarks to run. For example, the following +// code defines a family of microbenchmarks for measuring the speed +// of memcpy() calls of different lengths: + +static void BM_memcpy(benchmark::State& state) { + char* src = new char[state.range(0)]; char* dst = new char[state.range(0)]; + memset(src, 'x', state.range(0)); + for (auto _ : state) + memcpy(dst, src, state.range(0)); + state.SetBytesProcessed(int64_t(state.iterations()) * + int64_t(state.range(0))); + delete[] src; delete[] dst; +} +BENCHMARK(BM_memcpy)->Arg(8)->Arg(64)->Arg(512)->Arg(1<<10)->Arg(8<<10); + +// The preceding code is quite repetitive, and can be replaced with the +// following short-hand. The following invocation will pick a few +// appropriate arguments in the specified range and will generate a +// microbenchmark for each such argument. +BENCHMARK(BM_memcpy)->Range(8, 8<<10); + +// You might have a microbenchmark that depends on two inputs. For +// example, the following code defines a family of microbenchmarks for +// measuring the speed of set insertion. +static void BM_SetInsert(benchmark::State& state) { + set data; + for (auto _ : state) { + state.PauseTiming(); + data = ConstructRandomSet(state.range(0)); + state.ResumeTiming(); + for (int j = 0; j < state.range(1); ++j) + data.insert(RandomNumber()); + } +} +BENCHMARK(BM_SetInsert) + ->Args({1<<10, 128}) + ->Args({2<<10, 128}) + ->Args({4<<10, 128}) + ->Args({8<<10, 128}) + ->Args({1<<10, 512}) + ->Args({2<<10, 512}) + ->Args({4<<10, 512}) + ->Args({8<<10, 512}); + +// The preceding code is quite repetitive, and can be replaced with +// the following short-hand. The following macro will pick a few +// appropriate arguments in the product of the two specified ranges +// and will generate a microbenchmark for each such pair. +BENCHMARK(BM_SetInsert)->Ranges({{1<<10, 8<<10}, {128, 512}}); + +// For more complex patterns of inputs, passing a custom function +// to Apply allows programmatic specification of an +// arbitrary set of arguments to run the microbenchmark on. +// The following example enumerates a dense range on +// one parameter, and a sparse range on the second. +static void CustomArguments(benchmark::internal::Benchmark* b) { + for (int i = 0; i <= 10; ++i) + for (int j = 32; j <= 1024*1024; j *= 8) + b->Args({i, j}); +} +BENCHMARK(BM_SetInsert)->Apply(CustomArguments); + +// Templated microbenchmarks work the same way: +// Produce then consume 'size' messages 'iters' times +// Measures throughput in the absence of multiprogramming. +template int BM_Sequential(benchmark::State& state) { + Q q; + typename Q::value_type v; + for (auto _ : state) { + for (int i = state.range(0); i--; ) + q.push(v); + for (int e = state.range(0); e--; ) + q.Wait(&v); + } + // actually messages, not bytes: + state.SetBytesProcessed( + static_cast(state.iterations())*state.range(0)); +} +BENCHMARK_TEMPLATE(BM_Sequential, WaitQueue)->Range(1<<0, 1<<10); + +Use `Benchmark::MinTime(double t)` to set the minimum time used to run the +benchmark. This option overrides the `benchmark_min_time` flag. + +void BM_test(benchmark::State& state) { + ... body ... +} +BENCHMARK(BM_test)->MinTime(2.0); // Run for at least 2 seconds. + +In a multithreaded test, it is guaranteed that none of the threads will start +until all have reached the loop start, and all will have finished before any +thread exits the loop body. As such, any global setup or teardown you want to +do can be wrapped in a check against the thread index: + +static void BM_MultiThreaded(benchmark::State& state) { + if (state.thread_index == 0) { + // Setup code here. + } + for (auto _ : state) { + // Run the test as normal. + } + if (state.thread_index == 0) { + // Teardown code here. + } +} +BENCHMARK(BM_MultiThreaded)->Threads(4); + + +If a benchmark runs a few milliseconds it may be hard to visually compare the +measured times, since the output data is given in nanoseconds per default. In +order to manually set the time unit, you can specify it manually: + +BENCHMARK(BM_test)->Unit(benchmark::kMillisecond); +*/ + +#ifndef BENCHMARK_BENCHMARK_H_ +#define BENCHMARK_BENCHMARK_H_ + + +// The _MSVC_LANG check should detect Visual Studio 2015 Update 3 and newer. +#if __cplusplus >= 201103L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201103L) +#define BENCHMARK_HAS_CXX11 +#endif + +#include + +#include +#include +#include +#include +#include +#include +#include + +#if defined(BENCHMARK_HAS_CXX11) +#include +#include +#include +#endif + +#if defined(_MSC_VER) +#include // for _ReadWriteBarrier +#endif + +#ifndef BENCHMARK_HAS_CXX11 +#define BENCHMARK_DISALLOW_COPY_AND_ASSIGN(TypeName) \ + TypeName(const TypeName&); \ + TypeName& operator=(const TypeName&) +#else +#define BENCHMARK_DISALLOW_COPY_AND_ASSIGN(TypeName) \ + TypeName(const TypeName&) = delete; \ + TypeName& operator=(const TypeName&) = delete +#endif + +#if defined(__GNUC__) +#define BENCHMARK_UNUSED __attribute__((unused)) +#define BENCHMARK_ALWAYS_INLINE __attribute__((always_inline)) +#define BENCHMARK_NOEXCEPT noexcept +#define BENCHMARK_NOEXCEPT_OP(x) noexcept(x) +#elif defined(_MSC_VER) && !defined(__clang__) +#define BENCHMARK_UNUSED +#define BENCHMARK_ALWAYS_INLINE __forceinline +#if _MSC_VER >= 1900 +#define BENCHMARK_NOEXCEPT noexcept +#define BENCHMARK_NOEXCEPT_OP(x) noexcept(x) +#else +#define BENCHMARK_NOEXCEPT +#define BENCHMARK_NOEXCEPT_OP(x) +#endif +#define __func__ __FUNCTION__ +#else +#define BENCHMARK_UNUSED +#define BENCHMARK_ALWAYS_INLINE +#define BENCHMARK_NOEXCEPT +#define BENCHMARK_NOEXCEPT_OP(x) +#endif + +#define BENCHMARK_INTERNAL_TOSTRING2(x) #x +#define BENCHMARK_INTERNAL_TOSTRING(x) BENCHMARK_INTERNAL_TOSTRING2(x) + +#if defined(__GNUC__) +#define BENCHMARK_BUILTIN_EXPECT(x, y) __builtin_expect(x, y) +#define BENCHMARK_DEPRECATED_MSG(msg) __attribute__((deprecated(msg))) +#else +#define BENCHMARK_BUILTIN_EXPECT(x, y) x +#define BENCHMARK_DEPRECATED_MSG(msg) +#define BENCHMARK_WARNING_MSG(msg) __pragma(message(__FILE__ "(" BENCHMARK_INTERNAL_TOSTRING(__LINE__) ") : warning note: " msg)) +#endif + +#if defined(__GNUC__) && !defined(__clang__) +#define BENCHMARK_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) +#endif + +namespace benchmark { +class BenchmarkReporter; + +void Initialize(int* argc, char** argv); + +// Report to stdout all arguments in 'argv' as unrecognized except the first. +// Returns true there is at least on unrecognized argument (i.e. 'argc' > 1). +bool ReportUnrecognizedArguments(int argc, char** argv); + +// Generate a list of benchmarks matching the specified --benchmark_filter flag +// and if --benchmark_list_tests is specified return after printing the name +// of each matching benchmark. Otherwise run each matching benchmark and +// report the results. +// +// The second and third overload use the specified 'console_reporter' and +// 'file_reporter' respectively. 'file_reporter' will write to the file +// specified +// by '--benchmark_output'. If '--benchmark_output' is not given the +// 'file_reporter' is ignored. +// +// RETURNS: The number of matching benchmarks. +size_t RunSpecifiedBenchmarks(); +size_t RunSpecifiedBenchmarks(BenchmarkReporter* console_reporter); +size_t RunSpecifiedBenchmarks(BenchmarkReporter* console_reporter, + BenchmarkReporter* file_reporter); + +// If this routine is called, peak memory allocation past this point in the +// benchmark is reported at the end of the benchmark report line. (It is +// computed by running the benchmark once with a single iteration and a memory +// tracer.) +// TODO(dominic) +// void MemoryUsage(); + +namespace internal { +class Benchmark; +class BenchmarkImp; +class BenchmarkFamilies; + +void UseCharPointer(char const volatile*); + +// Take ownership of the pointer and register the benchmark. Return the +// registered benchmark. +Benchmark* RegisterBenchmarkInternal(Benchmark*); + +// Ensure that the standard streams are properly initialized in every TU. +int InitializeStreams(); +BENCHMARK_UNUSED static int stream_init_anchor = InitializeStreams(); + +} // namespace internal + + +#if (!defined(__GNUC__) && !defined(__clang__)) || defined(__pnacl__) || \ + defined(EMSCRIPTN) +# define BENCHMARK_HAS_NO_INLINE_ASSEMBLY +#endif + + +// The DoNotOptimize(...) function can be used to prevent a value or +// expression from being optimized away by the compiler. This function is +// intended to add little to no overhead. +// See: https://youtu.be/nXaxk27zwlk?t=2441 +#ifndef BENCHMARK_HAS_NO_INLINE_ASSEMBLY +template +inline BENCHMARK_ALWAYS_INLINE void DoNotOptimize(Tp const& value) { + // Clang doesn't like the 'X' constraint on `value` and certain GCC versions + // don't like the 'g' constraint. Attempt to placate them both. +#if defined(__clang__) + asm volatile("" : : "g"(value) : "memory"); +#else + asm volatile("" : : "i,r,m"(value) : "memory"); +#endif +} +// Force the compiler to flush pending writes to global memory. Acts as an +// effective read/write barrier +inline BENCHMARK_ALWAYS_INLINE void ClobberMemory() { + asm volatile("" : : : "memory"); +} +#elif defined(_MSC_VER) +template +inline BENCHMARK_ALWAYS_INLINE void DoNotOptimize(Tp const& value) { + internal::UseCharPointer(&reinterpret_cast(value)); + _ReadWriteBarrier(); +} + +inline BENCHMARK_ALWAYS_INLINE void ClobberMemory() { + _ReadWriteBarrier(); +} +#else +template +inline BENCHMARK_ALWAYS_INLINE void DoNotOptimize(Tp const& value) { + internal::UseCharPointer(&reinterpret_cast(value)); +} +// FIXME Add ClobberMemory() for non-gnu and non-msvc compilers +#endif + + + +// This class is used for user-defined counters. +class Counter { +public: + + enum Flags { + kDefaults = 0, + // Mark the counter as a rate. It will be presented divided + // by the duration of the benchmark. + kIsRate = 1, + // Mark the counter as a thread-average quantity. It will be + // presented divided by the number of threads. + kAvgThreads = 2, + // Mark the counter as a thread-average rate. See above. + kAvgThreadsRate = kIsRate|kAvgThreads + }; + + double value; + Flags flags; + + BENCHMARK_ALWAYS_INLINE + Counter(double v = 0., Flags f = kDefaults) : value(v), flags(f) {} + + BENCHMARK_ALWAYS_INLINE operator double const& () const { return value; } + BENCHMARK_ALWAYS_INLINE operator double & () { return value; } + +}; + +// This is the container for the user-defined counters. +typedef std::map UserCounters; + + +// TimeUnit is passed to a benchmark in order to specify the order of magnitude +// for the measured time. +enum TimeUnit { kNanosecond, kMicrosecond, kMillisecond }; + +// BigO is passed to a benchmark in order to specify the asymptotic +// computational +// complexity for the benchmark. In case oAuto is selected, complexity will be +// calculated automatically to the best fit. +enum BigO { oNone, o1, oN, oNSquared, oNCubed, oLogN, oNLogN, oAuto, oLambda }; + +// BigOFunc is passed to a benchmark in order to specify the asymptotic +// computational complexity for the benchmark. +typedef double(BigOFunc)(int); + +// StatisticsFunc is passed to a benchmark in order to compute some descriptive +// statistics over all the measurements of some type +typedef double(StatisticsFunc)(const std::vector&); + +struct Statistics { + std::string name_; + StatisticsFunc* compute_; + + Statistics(std::string name, StatisticsFunc* compute) + : name_(name), compute_(compute) {} +}; + +namespace internal { +class ThreadTimer; +class ThreadManager; + +enum ReportMode +#if defined(BENCHMARK_HAS_CXX11) + : unsigned +#else +#endif + { + RM_Unspecified, // The mode has not been manually specified + RM_Default, // The mode is user-specified as default. + RM_ReportAggregatesOnly +}; +} // namespace internal + +// State is passed to a running Benchmark and contains state for the +// benchmark to use. +class State { + public: + struct StateIterator; + friend struct StateIterator; + + // Returns iterators used to run each iteration of a benchmark using a + // C++11 ranged-based for loop. These functions should not be called directly. + // + // REQUIRES: The benchmark has not started running yet. Neither begin nor end + // have been called previously. + // + // NOTE: KeepRunning may not be used after calling either of these functions. + BENCHMARK_ALWAYS_INLINE StateIterator begin(); + BENCHMARK_ALWAYS_INLINE StateIterator end(); + + // Returns true if the benchmark should continue through another iteration. + // NOTE: A benchmark may not return from the test until KeepRunning() has + // returned false. + bool KeepRunning() { + if (BENCHMARK_BUILTIN_EXPECT(!started_, false)) { + StartKeepRunning(); + } + bool const res = (--total_iterations_ != 0); + if (BENCHMARK_BUILTIN_EXPECT(!res, false)) { + FinishKeepRunning(); + } + return res; + } + + // REQUIRES: timer is running and 'SkipWithError(...)' has not been called + // by the current thread. + // Stop the benchmark timer. If not called, the timer will be + // automatically stopped after the last iteration of the benchmark loop. + // + // For threaded benchmarks the PauseTiming() function only pauses the timing + // for the current thread. + // + // NOTE: The "real time" measurement is per-thread. If different threads + // report different measurements the largest one is reported. + // + // NOTE: PauseTiming()/ResumeTiming() are relatively + // heavyweight, and so their use should generally be avoided + // within each benchmark iteration, if possible. + void PauseTiming(); + + // REQUIRES: timer is not running and 'SkipWithError(...)' has not been called + // by the current thread. + // Start the benchmark timer. The timer is NOT running on entrance to the + // benchmark function. It begins running after control flow enters the + // benchmark loop. + // + // NOTE: PauseTiming()/ResumeTiming() are relatively + // heavyweight, and so their use should generally be avoided + // within each benchmark iteration, if possible. + void ResumeTiming(); + + // REQUIRES: 'SkipWithError(...)' has not been called previously by the + // current thread. + // Report the benchmark as resulting in an error with the specified 'msg'. + // After this call the user may explicitly 'return' from the benchmark. + // + // If the ranged-for style of benchmark loop is used, the user must explicitly + // break from the loop, otherwise all future iterations will be run. + // If the 'KeepRunning()' loop is used the current thread will automatically + // exit the loop at the end of the current iteration. + // + // For threaded benchmarks only the current thread stops executing and future + // calls to `KeepRunning()` will block until all threads have completed + // the `KeepRunning()` loop. If multiple threads report an error only the + // first error message is used. + // + // NOTE: Calling 'SkipWithError(...)' does not cause the benchmark to exit + // the current scope immediately. If the function is called from within + // the 'KeepRunning()' loop the current iteration will finish. It is the users + // responsibility to exit the scope as needed. + void SkipWithError(const char* msg); + + // REQUIRES: called exactly once per iteration of the benchmarking loop. + // Set the manually measured time for this benchmark iteration, which + // is used instead of automatically measured time if UseManualTime() was + // specified. + // + // For threaded benchmarks the final value will be set to the largest + // reported values. + void SetIterationTime(double seconds); + + // Set the number of bytes processed by the current benchmark + // execution. This routine is typically called once at the end of a + // throughput oriented benchmark. If this routine is called with a + // value > 0, the report is printed in MB/sec instead of nanoseconds + // per iteration. + // + // REQUIRES: a benchmark has exited its benchmarking loop. + BENCHMARK_ALWAYS_INLINE + void SetBytesProcessed(size_t bytes) { bytes_processed_ = bytes; } + + BENCHMARK_ALWAYS_INLINE + size_t bytes_processed() const { return bytes_processed_; } + + // If this routine is called with complexity_n > 0 and complexity report is + // requested for the + // family benchmark, then current benchmark will be part of the computation + // and complexity_n will + // represent the length of N. + BENCHMARK_ALWAYS_INLINE + void SetComplexityN(int complexity_n) { complexity_n_ = complexity_n; } + + BENCHMARK_ALWAYS_INLINE + int complexity_length_n() { return complexity_n_; } + + // If this routine is called with items > 0, then an items/s + // label is printed on the benchmark report line for the currently + // executing benchmark. It is typically called at the end of a processing + // benchmark where a processing items/second output is desired. + // + // REQUIRES: a benchmark has exited its benchmarking loop. + BENCHMARK_ALWAYS_INLINE + void SetItemsProcessed(size_t items) { items_processed_ = items; } + + BENCHMARK_ALWAYS_INLINE + size_t items_processed() const { return items_processed_; } + + // If this routine is called, the specified label is printed at the + // end of the benchmark report line for the currently executing + // benchmark. Example: + // static void BM_Compress(benchmark::State& state) { + // ... + // double compress = input_size / output_size; + // state.SetLabel(StringPrintf("compress:%.1f%%", 100.0*compression)); + // } + // Produces output that looks like: + // BM_Compress 50 50 14115038 compress:27.3% + // + // REQUIRES: a benchmark has exited its benchmarking loop. + void SetLabel(const char* label); + + void BENCHMARK_ALWAYS_INLINE SetLabel(const std::string& str) { + this->SetLabel(str.c_str()); + } + + // Range arguments for this run. CHECKs if the argument has been set. + BENCHMARK_ALWAYS_INLINE + int range(std::size_t pos = 0) const { + assert(range_.size() > pos); + return range_[pos]; + } + + BENCHMARK_DEPRECATED_MSG("use 'range(0)' instead") + int range_x() const { return range(0); } + + BENCHMARK_DEPRECATED_MSG("use 'range(1)' instead") + int range_y() const { return range(1); } + + BENCHMARK_ALWAYS_INLINE + size_t iterations() const { return (max_iterations - total_iterations_) + 1; } + + private: + bool started_; + bool finished_; + size_t total_iterations_; + + std::vector range_; + + size_t bytes_processed_; + size_t items_processed_; + + int complexity_n_; + + bool error_occurred_; + + public: + // Container for user-defined counters. + UserCounters counters; + // Index of the executing thread. Values from [0, threads). + const int thread_index; + // Number of threads concurrently executing the benchmark. + const int threads; + const size_t max_iterations; + + // TODO(EricWF) make me private + State(size_t max_iters, const std::vector& ranges, int thread_i, + int n_threads, internal::ThreadTimer* timer, + internal::ThreadManager* manager); + + private: + void StartKeepRunning(); + void FinishKeepRunning(); + internal::ThreadTimer* timer_; + internal::ThreadManager* manager_; + BENCHMARK_DISALLOW_COPY_AND_ASSIGN(State); +}; + +struct State::StateIterator { + struct BENCHMARK_UNUSED Value {}; + typedef std::forward_iterator_tag iterator_category; + typedef Value value_type; + typedef Value reference; + typedef Value pointer; + + private: + friend class State; + BENCHMARK_ALWAYS_INLINE + StateIterator() : cached_(0), parent_() {} + + BENCHMARK_ALWAYS_INLINE + explicit StateIterator(State* st) + : cached_(st->error_occurred_ ? 0 : st->max_iterations), parent_(st) {} + + public: + BENCHMARK_ALWAYS_INLINE + Value operator*() const { return Value(); } + + BENCHMARK_ALWAYS_INLINE + StateIterator& operator++() { + assert(cached_ > 0); + --cached_; + return *this; + } + + BENCHMARK_ALWAYS_INLINE + bool operator!=(StateIterator const&) const { + if (BENCHMARK_BUILTIN_EXPECT(cached_ != 0, true)) return true; + parent_->FinishKeepRunning(); + return false; + } + + private: + size_t cached_; + State* const parent_; +}; + +inline BENCHMARK_ALWAYS_INLINE State::StateIterator State::begin() { + return StateIterator(this); +} +inline BENCHMARK_ALWAYS_INLINE State::StateIterator State::end() { + StartKeepRunning(); + return StateIterator(); +} + +namespace internal { + +typedef void(Function)(State&); + +// ------------------------------------------------------ +// Benchmark registration object. The BENCHMARK() macro expands +// into an internal::Benchmark* object. Various methods can +// be called on this object to change the properties of the benchmark. +// Each method returns "this" so that multiple method calls can +// chained into one expression. +class Benchmark { + public: + virtual ~Benchmark(); + + // Note: the following methods all return "this" so that multiple + // method calls can be chained together in one expression. + + // Run this benchmark once with "x" as the extra argument passed + // to the function. + // REQUIRES: The function passed to the constructor must accept an arg1. + Benchmark* Arg(int x); + + // Run this benchmark with the given time unit for the generated output report + Benchmark* Unit(TimeUnit unit); + + // Run this benchmark once for a number of values picked from the + // range [start..limit]. (start and limit are always picked.) + // REQUIRES: The function passed to the constructor must accept an arg1. + Benchmark* Range(int start, int limit); + + // Run this benchmark once for all values in the range [start..limit] with + // specific step + // REQUIRES: The function passed to the constructor must accept an arg1. + Benchmark* DenseRange(int start, int limit, int step = 1); + + // Run this benchmark once with "args" as the extra arguments passed + // to the function. + // REQUIRES: The function passed to the constructor must accept arg1, arg2 ... + Benchmark* Args(const std::vector& args); + + // Equivalent to Args({x, y}) + // NOTE: This is a legacy C++03 interface provided for compatibility only. + // New code should use 'Args'. + Benchmark* ArgPair(int x, int y) { + std::vector args; + args.push_back(x); + args.push_back(y); + return Args(args); + } + + // Run this benchmark once for a number of values picked from the + // ranges [start..limit]. (starts and limits are always picked.) + // REQUIRES: The function passed to the constructor must accept arg1, arg2 ... + Benchmark* Ranges(const std::vector >& ranges); + + // Equivalent to ArgNames({name}) + Benchmark* ArgName(const std::string& name); + + // Set the argument names to display in the benchmark name. If not called, + // only argument values will be shown. + Benchmark* ArgNames(const std::vector& names); + + // Equivalent to Ranges({{lo1, hi1}, {lo2, hi2}}). + // NOTE: This is a legacy C++03 interface provided for compatibility only. + // New code should use 'Ranges'. + Benchmark* RangePair(int lo1, int hi1, int lo2, int hi2) { + std::vector > ranges; + ranges.push_back(std::make_pair(lo1, hi1)); + ranges.push_back(std::make_pair(lo2, hi2)); + return Ranges(ranges); + } + + // Pass this benchmark object to *func, which can customize + // the benchmark by calling various methods like Arg, Args, + // Threads, etc. + Benchmark* Apply(void (*func)(Benchmark* benchmark)); + + // Set the range multiplier for non-dense range. If not called, the range + // multiplier kRangeMultiplier will be used. + Benchmark* RangeMultiplier(int multiplier); + + // Set the minimum amount of time to use when running this benchmark. This + // option overrides the `benchmark_min_time` flag. + // REQUIRES: `t > 0` and `Iterations` has not been called on this benchmark. + Benchmark* MinTime(double t); + + // Specify the amount of iterations that should be run by this benchmark. + // REQUIRES: 'n > 0' and `MinTime` has not been called on this benchmark. + // + // NOTE: This function should only be used when *exact* iteration control is + // needed and never to control or limit how long a benchmark runs, where + // `--benchmark_min_time=N` or `MinTime(...)` should be used instead. + Benchmark* Iterations(size_t n); + + // Specify the amount of times to repeat this benchmark. This option overrides + // the `benchmark_repetitions` flag. + // REQUIRES: `n > 0` + Benchmark* Repetitions(int n); + + // Specify if each repetition of the benchmark should be reported separately + // or if only the final statistics should be reported. If the benchmark + // is not repeated then the single result is always reported. + Benchmark* ReportAggregatesOnly(bool value = true); + + // If a particular benchmark is I/O bound, runs multiple threads internally or + // if for some reason CPU timings are not representative, call this method. If + // called, the elapsed time will be used to control how many iterations are + // run, and in the printing of items/second or MB/seconds values. If not + // called, the cpu time used by the benchmark will be used. + Benchmark* UseRealTime(); + + // If a benchmark must measure time manually (e.g. if GPU execution time is + // being + // measured), call this method. If called, each benchmark iteration should + // call + // SetIterationTime(seconds) to report the measured time, which will be used + // to control how many iterations are run, and in the printing of items/second + // or MB/second values. + Benchmark* UseManualTime(); + + // Set the asymptotic computational complexity for the benchmark. If called + // the asymptotic computational complexity will be shown on the output. + Benchmark* Complexity(BigO complexity = benchmark::oAuto); + + // Set the asymptotic computational complexity for the benchmark. If called + // the asymptotic computational complexity will be shown on the output. + Benchmark* Complexity(BigOFunc* complexity); + + // Add this statistics to be computed over all the values of benchmark run + Benchmark* ComputeStatistics(std::string name, StatisticsFunc* statistics); + + // Support for running multiple copies of the same benchmark concurrently + // in multiple threads. This may be useful when measuring the scaling + // of some piece of code. + + // Run one instance of this benchmark concurrently in t threads. + Benchmark* Threads(int t); + + // Pick a set of values T from [min_threads,max_threads]. + // min_threads and max_threads are always included in T. Run this + // benchmark once for each value in T. The benchmark run for a + // particular value t consists of t threads running the benchmark + // function concurrently. For example, consider: + // BENCHMARK(Foo)->ThreadRange(1,16); + // This will run the following benchmarks: + // Foo in 1 thread + // Foo in 2 threads + // Foo in 4 threads + // Foo in 8 threads + // Foo in 16 threads + Benchmark* ThreadRange(int min_threads, int max_threads); + + // For each value n in the range, run this benchmark once using n threads. + // min_threads and max_threads are always included in the range. + // stride specifies the increment. E.g. DenseThreadRange(1, 8, 3) starts + // a benchmark with 1, 4, 7 and 8 threads. + Benchmark* DenseThreadRange(int min_threads, int max_threads, int stride = 1); + + // Equivalent to ThreadRange(NumCPUs(), NumCPUs()) + Benchmark* ThreadPerCpu(); + + virtual void Run(State& state) = 0; + + // Used inside the benchmark implementation + struct Instance; + + protected: + explicit Benchmark(const char* name); + Benchmark(Benchmark const&); + void SetName(const char* name); + + int ArgsCnt() const; + + static void AddRange(std::vector* dst, int lo, int hi, int mult); + + private: + friend class BenchmarkFamilies; + + std::string name_; + ReportMode report_mode_; + std::vector arg_names_; // Args for all benchmark runs + std::vector > args_; // Args for all benchmark runs + TimeUnit time_unit_; + int range_multiplier_; + double min_time_; + size_t iterations_; + int repetitions_; + bool use_real_time_; + bool use_manual_time_; + BigO complexity_; + BigOFunc* complexity_lambda_; + std::vector statistics_; + std::vector thread_counts_; + + Benchmark& operator=(Benchmark const&); +}; + +} // namespace internal + +// Create and register a benchmark with the specified 'name' that invokes +// the specified functor 'fn'. +// +// RETURNS: A pointer to the registered benchmark. +internal::Benchmark* RegisterBenchmark(const char* name, + internal::Function* fn); + +#if defined(BENCHMARK_HAS_CXX11) +template +internal::Benchmark* RegisterBenchmark(const char* name, Lambda&& fn); +#endif + +// Remove all registered benchmarks. All pointers to previously registered +// benchmarks are invalidated. +void ClearRegisteredBenchmarks(); + +namespace internal { +// The class used to hold all Benchmarks created from static function. +// (ie those created using the BENCHMARK(...) macros. +class FunctionBenchmark : public Benchmark { + public: + FunctionBenchmark(const char* name, Function* func) + : Benchmark(name), func_(func) {} + + virtual void Run(State& st); + + private: + Function* func_; +}; + +#ifdef BENCHMARK_HAS_CXX11 +template +class LambdaBenchmark : public Benchmark { + public: + virtual void Run(State& st) { lambda_(st); } + + private: + template + LambdaBenchmark(const char* name, OLambda&& lam) + : Benchmark(name), lambda_(std::forward(lam)) {} + + LambdaBenchmark(LambdaBenchmark const&) = delete; + + private: + template + friend Benchmark* ::benchmark::RegisterBenchmark(const char*, Lam&&); + + Lambda lambda_; +}; +#endif + +} // namespace internal + +inline internal::Benchmark* RegisterBenchmark(const char* name, + internal::Function* fn) { + return internal::RegisterBenchmarkInternal( + ::new internal::FunctionBenchmark(name, fn)); +} + +#ifdef BENCHMARK_HAS_CXX11 +template +internal::Benchmark* RegisterBenchmark(const char* name, Lambda&& fn) { + using BenchType = + internal::LambdaBenchmark::type>; + return internal::RegisterBenchmarkInternal( + ::new BenchType(name, std::forward(fn))); +} +#endif + +#if defined(BENCHMARK_HAS_CXX11) && \ + (!defined(BENCHMARK_GCC_VERSION) || BENCHMARK_GCC_VERSION >= 409) +template +internal::Benchmark* RegisterBenchmark(const char* name, Lambda&& fn, + Args&&... args) { + return benchmark::RegisterBenchmark( + name, [=](benchmark::State& st) { fn(st, args...); }); +} +#else +#define BENCHMARK_HAS_NO_VARIADIC_REGISTER_BENCHMARK +#endif + +// The base class for all fixture tests. +class Fixture : public internal::Benchmark { + public: + Fixture() : internal::Benchmark("") {} + + virtual void Run(State& st) { + this->SetUp(st); + this->BenchmarkCase(st); + this->TearDown(st); + } + + // These will be deprecated ... + virtual void SetUp(const State&) {} + virtual void TearDown(const State&) {} + // ... In favor of these. + virtual void SetUp(State& st) { SetUp(const_cast(st)); } + virtual void TearDown(State& st) { TearDown(const_cast(st)); } + + protected: + virtual void BenchmarkCase(State&) = 0; +}; + +} // namespace benchmark + +// ------------------------------------------------------ +// Macro to register benchmarks + +// Check that __COUNTER__ is defined and that __COUNTER__ increases by 1 +// every time it is expanded. X + 1 == X + 0 is used in case X is defined to be +// empty. If X is empty the expression becomes (+1 == +0). +#if defined(__COUNTER__) && (__COUNTER__ + 1 == __COUNTER__ + 0) +#define BENCHMARK_PRIVATE_UNIQUE_ID __COUNTER__ +#else +#define BENCHMARK_PRIVATE_UNIQUE_ID __LINE__ +#endif + +// Helpers for generating unique variable names +#define BENCHMARK_PRIVATE_NAME(n) \ + BENCHMARK_PRIVATE_CONCAT(_benchmark_, BENCHMARK_PRIVATE_UNIQUE_ID, n) +#define BENCHMARK_PRIVATE_CONCAT(a, b, c) BENCHMARK_PRIVATE_CONCAT2(a, b, c) +#define BENCHMARK_PRIVATE_CONCAT2(a, b, c) a##b##c + +#define BENCHMARK_PRIVATE_DECLARE(n) \ + static ::benchmark::internal::Benchmark* BENCHMARK_PRIVATE_NAME(n) \ + BENCHMARK_UNUSED + +#define BENCHMARK(n) \ + BENCHMARK_PRIVATE_DECLARE(n) = \ + (::benchmark::internal::RegisterBenchmarkInternal( \ + new ::benchmark::internal::FunctionBenchmark(#n, n))) + +// Old-style macros +#define BENCHMARK_WITH_ARG(n, a) BENCHMARK(n)->Arg((a)) +#define BENCHMARK_WITH_ARG2(n, a1, a2) BENCHMARK(n)->Args({(a1), (a2)}) +#define BENCHMARK_WITH_UNIT(n, t) BENCHMARK(n)->Unit((t)) +#define BENCHMARK_RANGE(n, lo, hi) BENCHMARK(n)->Range((lo), (hi)) +#define BENCHMARK_RANGE2(n, l1, h1, l2, h2) \ + BENCHMARK(n)->RangePair({{(l1), (h1)}, {(l2), (h2)}}) + +#ifdef BENCHMARK_HAS_CXX11 + +// Register a benchmark which invokes the function specified by `func` +// with the additional arguments specified by `...`. +// +// For example: +// +// template ` +// void BM_takes_args(benchmark::State& state, ExtraArgs&&... extra_args) { +// [...] +//} +// /* Registers a benchmark named "BM_takes_args/int_string_test` */ +// BENCHMARK_CAPTURE(BM_takes_args, int_string_test, 42, std::string("abc")); +#define BENCHMARK_CAPTURE(func, test_case_name, ...) \ + BENCHMARK_PRIVATE_DECLARE(func) = \ + (::benchmark::internal::RegisterBenchmarkInternal( \ + new ::benchmark::internal::FunctionBenchmark( \ + #func "/" #test_case_name, \ + [](::benchmark::State& st) { func(st, __VA_ARGS__); }))) + +#endif // BENCHMARK_HAS_CXX11 + +// This will register a benchmark for a templatized function. For example: +// +// template +// void BM_Foo(int iters); +// +// BENCHMARK_TEMPLATE(BM_Foo, 1); +// +// will register BM_Foo<1> as a benchmark. +#define BENCHMARK_TEMPLATE1(n, a) \ + BENCHMARK_PRIVATE_DECLARE(n) = \ + (::benchmark::internal::RegisterBenchmarkInternal( \ + new ::benchmark::internal::FunctionBenchmark(#n "<" #a ">", n))) + +#define BENCHMARK_TEMPLATE2(n, a, b) \ + BENCHMARK_PRIVATE_DECLARE(n) = \ + (::benchmark::internal::RegisterBenchmarkInternal( \ + new ::benchmark::internal::FunctionBenchmark(#n "<" #a "," #b ">", \ + n))) + +#ifdef BENCHMARK_HAS_CXX11 +#define BENCHMARK_TEMPLATE(n, ...) \ + BENCHMARK_PRIVATE_DECLARE(n) = \ + (::benchmark::internal::RegisterBenchmarkInternal( \ + new ::benchmark::internal::FunctionBenchmark( \ + #n "<" #__VA_ARGS__ ">", n<__VA_ARGS__>))) +#else +#define BENCHMARK_TEMPLATE(n, a) BENCHMARK_TEMPLATE1(n, a) +#endif + +#define BENCHMARK_PRIVATE_DECLARE_F(BaseClass, Method) \ + class BaseClass##_##Method##_Benchmark : public BaseClass { \ + public: \ + BaseClass##_##Method##_Benchmark() : BaseClass() { \ + this->SetName(#BaseClass "/" #Method); \ + } \ + \ + protected: \ + virtual void BenchmarkCase(::benchmark::State&); \ + }; + +#define BENCHMARK_TEMPLATE1_PRIVATE_DECLARE_F(BaseClass, Method, a) \ + class BaseClass##_##Method##_Benchmark : public BaseClass { \ + public: \ + BaseClass##_##Method##_Benchmark() : BaseClass() { \ + this->SetName(#BaseClass"<" #a ">/" #Method); \ + } \ + \ + protected: \ + virtual void BenchmarkCase(::benchmark::State&); \ + }; + +#define BENCHMARK_TEMPLATE2_PRIVATE_DECLARE_F(BaseClass, Method, a, b) \ + class BaseClass##_##Method##_Benchmark : public BaseClass { \ + public: \ + BaseClass##_##Method##_Benchmark() : BaseClass() { \ + this->SetName(#BaseClass"<" #a "," #b ">/" #Method); \ + } \ + \ + protected: \ + virtual void BenchmarkCase(::benchmark::State&); \ + }; + +#ifdef BENCHMARK_HAS_CXX11 +#define BENCHMARK_TEMPLATE_PRIVATE_DECLARE_F(BaseClass, Method, ...) \ + class BaseClass##_##Method##_Benchmark : public BaseClass<__VA_ARGS__> { \ + public: \ + BaseClass##_##Method##_Benchmark() : BaseClass<__VA_ARGS__>() { \ + this->SetName(#BaseClass"<" #__VA_ARGS__ ">/" #Method); \ + } \ + \ + protected: \ + virtual void BenchmarkCase(::benchmark::State&); \ + }; +#else +#define BENCHMARK_TEMPLATE_PRIVATE_DECLARE_F(n, a) BENCHMARK_TEMPLATE1_PRIVATE_DECLARE_F(n, a) +#endif + +#define BENCHMARK_DEFINE_F(BaseClass, Method) \ + BENCHMARK_PRIVATE_DECLARE_F(BaseClass, Method) \ + void BaseClass##_##Method##_Benchmark::BenchmarkCase + +#define BENCHMARK_TEMPLATE1_DEFINE_F(BaseClass, Method, a) \ + BENCHMARK_TEMPLATE1_PRIVATE_DECLARE_F(BaseClass, Method, a) \ + void BaseClass##_##Method##_Benchmark::BenchmarkCase + +#define BENCHMARK_TEMPLATE2_DEFINE_F(BaseClass, Method, a, b) \ + BENCHMARK_TEMPLATE2_PRIVATE_DECLARE_F(BaseClass, Method, a, b) \ + void BaseClass##_##Method##_Benchmark::BenchmarkCase + +#ifdef BENCHMARK_HAS_CXX11 +#define BENCHMARK_TEMPLATE_DEFINE_F(BaseClass, Method, ...) \ + BENCHMARK_TEMPLATE_PRIVATE_DECLARE_F(BaseClass, Method, __VA_ARGS__) \ + void BaseClass##_##Method##_Benchmark::BenchmarkCase +#else +#define BENCHMARK_TEMPLATE_DEFINE_F(BaseClass, Method, a) BENCHMARK_TEMPLATE1_DEFINE_F(BaseClass, Method, a) +#endif + +#define BENCHMARK_REGISTER_F(BaseClass, Method) \ + BENCHMARK_PRIVATE_REGISTER_F(BaseClass##_##Method##_Benchmark) + +#define BENCHMARK_PRIVATE_REGISTER_F(TestName) \ + BENCHMARK_PRIVATE_DECLARE(TestName) = \ + (::benchmark::internal::RegisterBenchmarkInternal(new TestName())) + +// This macro will define and register a benchmark within a fixture class. +#define BENCHMARK_F(BaseClass, Method) \ + BENCHMARK_PRIVATE_DECLARE_F(BaseClass, Method) \ + BENCHMARK_REGISTER_F(BaseClass, Method); \ + void BaseClass##_##Method##_Benchmark::BenchmarkCase + +#define BENCHMARK_TEMPLATE1_F(BaseClass, Method, a) \ + BENCHMARK_TEMPLATE1_PRIVATE_DECLARE_F(BaseClass, Method, a) \ + BENCHMARK_REGISTER_F(BaseClass, Method); \ + void BaseClass##_##Method##_Benchmark::BenchmarkCase + +#define BENCHMARK_TEMPLATE2_F(BaseClass, Method, a, b) \ + BENCHMARK_TEMPLATE2_PRIVATE_DECLARE_F(BaseClass, Method, a, b) \ + BENCHMARK_REGISTER_F(BaseClass, Method); \ + void BaseClass##_##Method##_Benchmark::BenchmarkCase + +#ifdef BENCHMARK_HAS_CXX11 +#define BENCHMARK_TEMPLATE_F(BaseClass, Method, ...) \ + BENCHMARK_TEMPLATE_PRIVATE_DECLARE_F(BaseClass, Method, __VA_ARGS__) \ + BENCHMARK_REGISTER_F(BaseClass, Method); \ + void BaseClass##_##Method##_Benchmark::BenchmarkCase +#else +#define BENCHMARK_TEMPLATE_F(BaseClass, Method, a) BENCHMARK_TEMPLATE1_F(BaseClass, Method, a) +#endif + +// Helper macro to create a main routine in a test that runs the benchmarks +#define BENCHMARK_MAIN() \ + int main(int argc, char** argv) { \ + ::benchmark::Initialize(&argc, argv); \ + if (::benchmark::ReportUnrecognizedArguments(argc, argv)) return 1; \ + ::benchmark::RunSpecifiedBenchmarks(); \ + } \ + int main(int, char**) + + +// ------------------------------------------------------ +// Benchmark Reporters + +namespace benchmark { + +struct CPUInfo { + struct CacheInfo { + std::string type; + int level; + int size; + int num_sharing; + }; + + int num_cpus; + double cycles_per_second; + std::vector caches; + bool scaling_enabled; + + static const CPUInfo& Get(); + + private: + CPUInfo(); + BENCHMARK_DISALLOW_COPY_AND_ASSIGN(CPUInfo); +}; + +// Interface for custom benchmark result printers. +// By default, benchmark reports are printed to stdout. However an application +// can control the destination of the reports by calling +// RunSpecifiedBenchmarks and passing it a custom reporter object. +// The reporter object must implement the following interface. +class BenchmarkReporter { + public: + struct Context { + CPUInfo const& cpu_info; + // The number of chars in the longest benchmark name. + size_t name_field_width; + + Context(); + }; + + struct Run { + Run() + : error_occurred(false), + iterations(1), + time_unit(kNanosecond), + real_accumulated_time(0), + cpu_accumulated_time(0), + bytes_per_second(0), + items_per_second(0), + max_heapbytes_used(0), + complexity(oNone), + complexity_lambda(), + complexity_n(0), + report_big_o(false), + report_rms(false), + counters() {} + + std::string benchmark_name; + std::string report_label; // Empty if not set by benchmark. + bool error_occurred; + std::string error_message; + + int64_t iterations; + TimeUnit time_unit; + double real_accumulated_time; + double cpu_accumulated_time; + + // Return a value representing the real time per iteration in the unit + // specified by 'time_unit'. + // NOTE: If 'iterations' is zero the returned value represents the + // accumulated time. + double GetAdjustedRealTime() const; + + // Return a value representing the cpu time per iteration in the unit + // specified by 'time_unit'. + // NOTE: If 'iterations' is zero the returned value represents the + // accumulated time. + double GetAdjustedCPUTime() const; + + // Zero if not set by benchmark. + double bytes_per_second; + double items_per_second; + + // This is set to 0.0 if memory tracing is not enabled. + double max_heapbytes_used; + + // Keep track of arguments to compute asymptotic complexity + BigO complexity; + BigOFunc* complexity_lambda; + int complexity_n; + + // what statistics to compute from the measurements + const std::vector* statistics; + + // Inform print function whether the current run is a complexity report + bool report_big_o; + bool report_rms; + + UserCounters counters; + }; + + // Construct a BenchmarkReporter with the output stream set to 'std::cout' + // and the error stream set to 'std::cerr' + BenchmarkReporter(); + + // Called once for every suite of benchmarks run. + // The parameter "context" contains information that the + // reporter may wish to use when generating its report, for example the + // platform under which the benchmarks are running. The benchmark run is + // never started if this function returns false, allowing the reporter + // to skip runs based on the context information. + virtual bool ReportContext(const Context& context) = 0; + + // Called once for each group of benchmark runs, gives information about + // cpu-time and heap memory usage during the benchmark run. If the group + // of runs contained more than two entries then 'report' contains additional + // elements representing the mean and standard deviation of those runs. + // Additionally if this group of runs was the last in a family of benchmarks + // 'reports' contains additional entries representing the asymptotic + // complexity and RMS of that benchmark family. + virtual void ReportRuns(const std::vector& report) = 0; + + // Called once and only once after ever group of benchmarks is run and + // reported. + virtual void Finalize() {} + + // REQUIRES: The object referenced by 'out' is valid for the lifetime + // of the reporter. + void SetOutputStream(std::ostream* out) { + assert(out); + output_stream_ = out; + } + + // REQUIRES: The object referenced by 'err' is valid for the lifetime + // of the reporter. + void SetErrorStream(std::ostream* err) { + assert(err); + error_stream_ = err; + } + + std::ostream& GetOutputStream() const { return *output_stream_; } + + std::ostream& GetErrorStream() const { return *error_stream_; } + + virtual ~BenchmarkReporter(); + + // Write a human readable string to 'out' representing the specified + // 'context'. + // REQUIRES: 'out' is non-null. + static void PrintBasicContext(std::ostream* out, Context const& context); + + private: + std::ostream* output_stream_; + std::ostream* error_stream_; +}; + +// Simple reporter that outputs benchmark data to the console. This is the +// default reporter used by RunSpecifiedBenchmarks(). +class ConsoleReporter : public BenchmarkReporter { +public: + enum OutputOptions { + OO_None = 0, + OO_Color = 1, + OO_Tabular = 2, + OO_ColorTabular = OO_Color|OO_Tabular, + OO_Defaults = OO_ColorTabular + }; + explicit ConsoleReporter(OutputOptions opts_ = OO_Defaults) + : output_options_(opts_), name_field_width_(0), + prev_counters_(), printed_header_(false) {} + + virtual bool ReportContext(const Context& context); + virtual void ReportRuns(const std::vector& reports); + + protected: + virtual void PrintRunData(const Run& report); + virtual void PrintHeader(const Run& report); + + OutputOptions output_options_; + size_t name_field_width_; + UserCounters prev_counters_; + bool printed_header_; +}; + +class JSONReporter : public BenchmarkReporter { + public: + JSONReporter() : first_report_(true) {} + virtual bool ReportContext(const Context& context); + virtual void ReportRuns(const std::vector& reports); + virtual void Finalize(); + + private: + void PrintRunData(const Run& report); + + bool first_report_; +}; + +class CSVReporter : public BenchmarkReporter { + public: + CSVReporter() : printed_header_(false) {} + virtual bool ReportContext(const Context& context); + virtual void ReportRuns(const std::vector& reports); + + private: + void PrintRunData(const Run& report); + + bool printed_header_; + std::set< std::string > user_counter_names_; +}; + +inline const char* GetTimeUnitString(TimeUnit unit) { + switch (unit) { + case kMillisecond: + return "ms"; + case kMicrosecond: + return "us"; + case kNanosecond: + default: + return "ns"; + } +} + +inline double GetTimeUnitMultiplier(TimeUnit unit) { + switch (unit) { + case kMillisecond: + return 1e3; + case kMicrosecond: + return 1e6; + case kNanosecond: + default: + return 1e9; + } +} + +} // namespace benchmark + +#endif // BENCHMARK_BENCHMARK_H_ diff --git a/benchmarks/thirdparty/benchmark/src/CMakeLists.txt b/benchmarks/thirdparty/benchmark/src/CMakeLists.txt new file mode 100644 index 00000000..e22620a7 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/CMakeLists.txt @@ -0,0 +1,87 @@ +# Allow the source files to find headers in src/ +include_directories(${PROJECT_SOURCE_DIR}/src) + +if (DEFINED BENCHMARK_CXX_LINKER_FLAGS) + list(APPEND CMAKE_SHARED_LINKER_FLAGS ${BENCHMARK_CXX_LINKER_FLAGS}) + list(APPEND CMAKE_MODULE_LINKER_FLAGS ${BENCHMARK_CXX_LINKER_FLAGS}) +endif() + +file(GLOB + SOURCE_FILES + *.cc + ${PROJECT_SOURCE_DIR}/include/benchmark/*.h + ${CMAKE_CURRENT_SOURCE_DIR}/*.h) + +add_library(benchmark ${SOURCE_FILES}) +set_target_properties(benchmark PROPERTIES + OUTPUT_NAME "benchmark" + VERSION ${GENERIC_LIB_VERSION} + SOVERSION ${GENERIC_LIB_SOVERSION} +) +target_include_directories(benchmark PUBLIC + $ + ) + +# Link threads. +target_link_libraries(benchmark ${BENCHMARK_CXX_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) +find_library(LIBRT rt) +if(LIBRT) + target_link_libraries(benchmark ${LIBRT}) +endif() + +# We need extra libraries on Windows +if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + target_link_libraries(benchmark Shlwapi) +endif() + +set(include_install_dir "include") +set(lib_install_dir "lib/") +set(bin_install_dir "bin/") +set(config_install_dir "lib/cmake/${PROJECT_NAME}") +set(pkgconfig_install_dir "lib/pkgconfig") + +set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") + +set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake") +set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") +set(pkg_config "${generated_dir}/${PROJECT_NAME}.pc") +set(targets_export_name "${PROJECT_NAME}Targets") + +set(namespace "${PROJECT_NAME}::") + +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "${version_config}" VERSION ${GIT_VERSION} COMPATIBILITY SameMajorVersion +) + +configure_file("${PROJECT_SOURCE_DIR}/cmake/Config.cmake.in" "${project_config}" @ONLY) +configure_file("${PROJECT_SOURCE_DIR}/cmake/benchmark.pc.in" "${pkg_config}" @ONLY) + +if (BENCHMARK_ENABLE_INSTALL) + # Install target (will install the library to specified CMAKE_INSTALL_PREFIX variable) + install( + TARGETS benchmark + EXPORT ${targets_export_name} + ARCHIVE DESTINATION ${lib_install_dir} + LIBRARY DESTINATION ${lib_install_dir} + RUNTIME DESTINATION ${bin_install_dir} + INCLUDES DESTINATION ${include_install_dir}) + + install( + DIRECTORY "${PROJECT_SOURCE_DIR}/include/benchmark" + DESTINATION ${include_install_dir} + FILES_MATCHING PATTERN "*.*h") + + install( + FILES "${project_config}" "${version_config}" + DESTINATION "${config_install_dir}") + + install( + FILES "${pkg_config}" + DESTINATION "${pkgconfig_install_dir}") + + install( + EXPORT "${targets_export_name}" + NAMESPACE "${namespace}" + DESTINATION "${config_install_dir}") +endif() diff --git a/benchmarks/thirdparty/benchmark/src/arraysize.h b/benchmarks/thirdparty/benchmark/src/arraysize.h new file mode 100644 index 00000000..51a50f2d --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/arraysize.h @@ -0,0 +1,33 @@ +#ifndef BENCHMARK_ARRAYSIZE_H_ +#define BENCHMARK_ARRAYSIZE_H_ + +#include "internal_macros.h" + +namespace benchmark { +namespace internal { +// The arraysize(arr) macro returns the # of elements in an array arr. +// The expression is a compile-time constant, and therefore can be +// used in defining new arrays, for example. If you use arraysize on +// a pointer by mistake, you will get a compile-time error. +// + +// This template function declaration is used in defining arraysize. +// Note that the function doesn't need an implementation, as we only +// use its type. +template +char (&ArraySizeHelper(T (&array)[N]))[N]; + +// That gcc wants both of these prototypes seems mysterious. VC, for +// its part, can't decide which to use (another mystery). Matching of +// template overloads: the final frontier. +#ifndef COMPILER_MSVC +template +char (&ArraySizeHelper(const T (&array)[N]))[N]; +#endif + +#define arraysize(array) (sizeof(::benchmark::internal::ArraySizeHelper(array))) + +} // end namespace internal +} // end namespace benchmark + +#endif // BENCHMARK_ARRAYSIZE_H_ diff --git a/benchmarks/thirdparty/benchmark/src/benchmark.cc b/benchmarks/thirdparty/benchmark/src/benchmark.cc new file mode 100644 index 00000000..1a7d2182 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/benchmark.cc @@ -0,0 +1,714 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "benchmark/benchmark.h" +#include "benchmark_api_internal.h" +#include "internal_macros.h" + +#ifndef BENCHMARK_OS_WINDOWS +#include +#include +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "check.h" +#include "colorprint.h" +#include "commandlineflags.h" +#include "complexity.h" +#include "counter.h" +#include "internal_macros.h" +#include "log.h" +#include "mutex.h" +#include "re.h" +#include "statistics.h" +#include "string_util.h" +#include "timers.h" + +DEFINE_bool(benchmark_list_tests, false, + "Print a list of benchmarks. This option overrides all other " + "options."); + +DEFINE_string(benchmark_filter, ".", + "A regular expression that specifies the set of benchmarks " + "to execute. If this flag is empty, no benchmarks are run. " + "If this flag is the string \"all\", all benchmarks linked " + "into the process are run."); + +DEFINE_double(benchmark_min_time, 0.5, + "Minimum number of seconds we should run benchmark before " + "results are considered significant. For cpu-time based " + "tests, this is the lower bound on the total cpu time " + "used by all threads that make up the test. For real-time " + "based tests, this is the lower bound on the elapsed time " + "of the benchmark execution, regardless of number of " + "threads."); + +DEFINE_int32(benchmark_repetitions, 1, + "The number of runs of each benchmark. If greater than 1, the " + "mean and standard deviation of the runs will be reported."); + +DEFINE_bool(benchmark_report_aggregates_only, false, + "Report the result of each benchmark repetitions. When 'true' is " + "specified only the mean, standard deviation, and other statistics " + "are reported for repeated benchmarks."); + +DEFINE_string(benchmark_format, "console", + "The format to use for console output. Valid values are " + "'console', 'json', or 'csv'."); + +DEFINE_string(benchmark_out_format, "json", + "The format to use for file output. Valid values are " + "'console', 'json', or 'csv'."); + +DEFINE_string(benchmark_out, "", "The file to write additonal output to"); + +DEFINE_string(benchmark_color, "auto", + "Whether to use colors in the output. Valid values: " + "'true'/'yes'/1, 'false'/'no'/0, and 'auto'. 'auto' means to use " + "colors if the output is being sent to a terminal and the TERM " + "environment variable is set to a terminal type that supports " + "colors."); + +DEFINE_bool(benchmark_counters_tabular, false, + "Whether to use tabular format when printing user counters to " + "the console. Valid values: 'true'/'yes'/1, 'false'/'no'/0." + "Defaults to false."); + +DEFINE_int32(v, 0, "The level of verbose logging to output"); + +namespace benchmark { + +namespace { +static const size_t kMaxIterations = 1000000000; +} // end namespace + +namespace internal { + +void UseCharPointer(char const volatile*) {} + +class ThreadManager { + public: + ThreadManager(int num_threads) + : alive_threads_(num_threads), start_stop_barrier_(num_threads) {} + + Mutex& GetBenchmarkMutex() const RETURN_CAPABILITY(benchmark_mutex_) { + return benchmark_mutex_; + } + + bool StartStopBarrier() EXCLUDES(end_cond_mutex_) { + return start_stop_barrier_.wait(); + } + + void NotifyThreadComplete() EXCLUDES(end_cond_mutex_) { + start_stop_barrier_.removeThread(); + if (--alive_threads_ == 0) { + MutexLock lock(end_cond_mutex_); + end_condition_.notify_all(); + } + } + + void WaitForAllThreads() EXCLUDES(end_cond_mutex_) { + MutexLock lock(end_cond_mutex_); + end_condition_.wait(lock.native_handle(), + [this]() { return alive_threads_ == 0; }); + } + + public: + struct Result { + double real_time_used = 0; + double cpu_time_used = 0; + double manual_time_used = 0; + int64_t bytes_processed = 0; + int64_t items_processed = 0; + int complexity_n = 0; + std::string report_label_; + std::string error_message_; + bool has_error_ = false; + UserCounters counters; + }; + GUARDED_BY(GetBenchmarkMutex()) Result results; + + private: + mutable Mutex benchmark_mutex_; + std::atomic alive_threads_; + Barrier start_stop_barrier_; + Mutex end_cond_mutex_; + Condition end_condition_; +}; + +// Timer management class +class ThreadTimer { + public: + ThreadTimer() = default; + + // Called by each thread + void StartTimer() { + running_ = true; + start_real_time_ = ChronoClockNow(); + start_cpu_time_ = ThreadCPUUsage(); + } + + // Called by each thread + void StopTimer() { + CHECK(running_); + running_ = false; + real_time_used_ += ChronoClockNow() - start_real_time_; + // Floating point error can result in the subtraction producing a negative + // time. Guard against that. + cpu_time_used_ += std::max(ThreadCPUUsage() - start_cpu_time_, 0); + } + + // Called by each thread + void SetIterationTime(double seconds) { manual_time_used_ += seconds; } + + bool running() const { return running_; } + + // REQUIRES: timer is not running + double real_time_used() { + CHECK(!running_); + return real_time_used_; + } + + // REQUIRES: timer is not running + double cpu_time_used() { + CHECK(!running_); + return cpu_time_used_; + } + + // REQUIRES: timer is not running + double manual_time_used() { + CHECK(!running_); + return manual_time_used_; + } + + private: + bool running_ = false; // Is the timer running + double start_real_time_ = 0; // If running_ + double start_cpu_time_ = 0; // If running_ + + // Accumulated time so far (does not contain current slice if running_) + double real_time_used_ = 0; + double cpu_time_used_ = 0; + // Manually set iteration time. User sets this with SetIterationTime(seconds). + double manual_time_used_ = 0; +}; + +namespace { + +BenchmarkReporter::Run CreateRunReport( + const benchmark::internal::Benchmark::Instance& b, + const internal::ThreadManager::Result& results, size_t iters, + double seconds) { + // Create report about this benchmark run. + BenchmarkReporter::Run report; + + report.benchmark_name = b.name; + report.error_occurred = results.has_error_; + report.error_message = results.error_message_; + report.report_label = results.report_label_; + // Report the total iterations across all threads. + report.iterations = static_cast(iters) * b.threads; + report.time_unit = b.time_unit; + + if (!report.error_occurred) { + double bytes_per_second = 0; + if (results.bytes_processed > 0 && seconds > 0.0) { + bytes_per_second = (results.bytes_processed / seconds); + } + double items_per_second = 0; + if (results.items_processed > 0 && seconds > 0.0) { + items_per_second = (results.items_processed / seconds); + } + + if (b.use_manual_time) { + report.real_accumulated_time = results.manual_time_used; + } else { + report.real_accumulated_time = results.real_time_used; + } + report.cpu_accumulated_time = results.cpu_time_used; + report.bytes_per_second = bytes_per_second; + report.items_per_second = items_per_second; + report.complexity_n = results.complexity_n; + report.complexity = b.complexity; + report.complexity_lambda = b.complexity_lambda; + report.statistics = b.statistics; + report.counters = results.counters; + internal::Finish(&report.counters, seconds, b.threads); + } + return report; +} + +// Execute one thread of benchmark b for the specified number of iterations. +// Adds the stats collected for the thread into *total. +void RunInThread(const benchmark::internal::Benchmark::Instance* b, + size_t iters, int thread_id, + internal::ThreadManager* manager) { + internal::ThreadTimer timer; + State st(iters, b->arg, thread_id, b->threads, &timer, manager); + b->benchmark->Run(st); + CHECK(st.iterations() == st.max_iterations) + << "Benchmark returned before State::KeepRunning() returned false!"; + { + MutexLock l(manager->GetBenchmarkMutex()); + internal::ThreadManager::Result& results = manager->results; + results.cpu_time_used += timer.cpu_time_used(); + results.real_time_used += timer.real_time_used(); + results.manual_time_used += timer.manual_time_used(); + results.bytes_processed += st.bytes_processed(); + results.items_processed += st.items_processed(); + results.complexity_n += st.complexity_length_n(); + internal::Increment(&results.counters, st.counters); + } + manager->NotifyThreadComplete(); +} + +std::vector RunBenchmark( + const benchmark::internal::Benchmark::Instance& b, + std::vector* complexity_reports) { + std::vector reports; // return value + + const bool has_explicit_iteration_count = b.iterations != 0; + size_t iters = has_explicit_iteration_count ? b.iterations : 1; + std::unique_ptr manager; + std::vector pool(b.threads - 1); + const int repeats = + b.repetitions != 0 ? b.repetitions : FLAGS_benchmark_repetitions; + const bool report_aggregates_only = + repeats != 1 && + (b.report_mode == internal::RM_Unspecified + ? FLAGS_benchmark_report_aggregates_only + : b.report_mode == internal::RM_ReportAggregatesOnly); + for (int repetition_num = 0; repetition_num < repeats; repetition_num++) { + for (;;) { + // Try benchmark + VLOG(2) << "Running " << b.name << " for " << iters << "\n"; + + manager.reset(new internal::ThreadManager(b.threads)); + for (std::size_t ti = 0; ti < pool.size(); ++ti) { + pool[ti] = std::thread(&RunInThread, &b, iters, + static_cast(ti + 1), manager.get()); + } + RunInThread(&b, iters, 0, manager.get()); + manager->WaitForAllThreads(); + for (std::thread& thread : pool) thread.join(); + internal::ThreadManager::Result results; + { + MutexLock l(manager->GetBenchmarkMutex()); + results = manager->results; + } + manager.reset(); + // Adjust real/manual time stats since they were reported per thread. + results.real_time_used /= b.threads; + results.manual_time_used /= b.threads; + + VLOG(2) << "Ran in " << results.cpu_time_used << "/" + << results.real_time_used << "\n"; + + // Base decisions off of real time if requested by this benchmark. + double seconds = results.cpu_time_used; + if (b.use_manual_time) { + seconds = results.manual_time_used; + } else if (b.use_real_time) { + seconds = results.real_time_used; + } + + const double min_time = + !IsZero(b.min_time) ? b.min_time : FLAGS_benchmark_min_time; + + // Determine if this run should be reported; Either it has + // run for a sufficient amount of time or because an error was reported. + const bool should_report = repetition_num > 0 + || has_explicit_iteration_count // An exact iteration count was requested + || results.has_error_ + || iters >= kMaxIterations + || seconds >= min_time // the elapsed time is large enough + // CPU time is specified but the elapsed real time greatly exceeds the + // minimum time. Note that user provided timers are except from this + // sanity check. + || ((results.real_time_used >= 5 * min_time) && !b.use_manual_time); + + if (should_report) { + BenchmarkReporter::Run report = + CreateRunReport(b, results, iters, seconds); + if (!report.error_occurred && b.complexity != oNone) + complexity_reports->push_back(report); + reports.push_back(report); + break; + } + + // See how much iterations should be increased by + // Note: Avoid division by zero with max(seconds, 1ns). + double multiplier = min_time * 1.4 / std::max(seconds, 1e-9); + // If our last run was at least 10% of FLAGS_benchmark_min_time then we + // use the multiplier directly. Otherwise we use at most 10 times + // expansion. + // NOTE: When the last run was at least 10% of the min time the max + // expansion should be 14x. + bool is_significant = (seconds / min_time) > 0.1; + multiplier = is_significant ? multiplier : std::min(10.0, multiplier); + if (multiplier <= 1.0) multiplier = 2.0; + double next_iters = std::max(multiplier * iters, iters + 1.0); + if (next_iters > kMaxIterations) { + next_iters = kMaxIterations; + } + VLOG(3) << "Next iters: " << next_iters << ", " << multiplier << "\n"; + iters = static_cast(next_iters + 0.5); + } + } + // Calculate additional statistics + auto stat_reports = ComputeStats(reports); + if ((b.complexity != oNone) && b.last_benchmark_instance) { + auto additional_run_stats = ComputeBigO(*complexity_reports); + stat_reports.insert(stat_reports.end(), additional_run_stats.begin(), + additional_run_stats.end()); + complexity_reports->clear(); + } + + if (report_aggregates_only) reports.clear(); + reports.insert(reports.end(), stat_reports.begin(), stat_reports.end()); + return reports; +} + +} // namespace +} // namespace internal + +State::State(size_t max_iters, const std::vector& ranges, int thread_i, + int n_threads, internal::ThreadTimer* timer, + internal::ThreadManager* manager) + : started_(false), + finished_(false), + total_iterations_(max_iters + 1), + range_(ranges), + bytes_processed_(0), + items_processed_(0), + complexity_n_(0), + error_occurred_(false), + counters(), + thread_index(thread_i), + threads(n_threads), + max_iterations(max_iters), + timer_(timer), + manager_(manager) { + CHECK(max_iterations != 0) << "At least one iteration must be run"; + CHECK(total_iterations_ != 0) << "max iterations wrapped around"; + CHECK_LT(thread_index, threads) << "thread_index must be less than threads"; +} + +void State::PauseTiming() { + // Add in time accumulated so far + CHECK(started_ && !finished_ && !error_occurred_); + timer_->StopTimer(); +} + +void State::ResumeTiming() { + CHECK(started_ && !finished_ && !error_occurred_); + timer_->StartTimer(); +} + +void State::SkipWithError(const char* msg) { + CHECK(msg); + error_occurred_ = true; + { + MutexLock l(manager_->GetBenchmarkMutex()); + if (manager_->results.has_error_ == false) { + manager_->results.error_message_ = msg; + manager_->results.has_error_ = true; + } + } + total_iterations_ = 1; + if (timer_->running()) timer_->StopTimer(); +} + +void State::SetIterationTime(double seconds) { + timer_->SetIterationTime(seconds); +} + +void State::SetLabel(const char* label) { + MutexLock l(manager_->GetBenchmarkMutex()); + manager_->results.report_label_ = label; +} + +void State::StartKeepRunning() { + CHECK(!started_ && !finished_); + started_ = true; + manager_->StartStopBarrier(); + if (!error_occurred_) ResumeTiming(); +} + +void State::FinishKeepRunning() { + CHECK(started_ && (!finished_ || error_occurred_)); + if (!error_occurred_) { + PauseTiming(); + } + // Total iterations has now wrapped around zero. Fix this. + total_iterations_ = 1; + finished_ = true; + manager_->StartStopBarrier(); +} + +namespace internal { +namespace { + +void RunBenchmarks(const std::vector& benchmarks, + BenchmarkReporter* console_reporter, + BenchmarkReporter* file_reporter) { + // Note the file_reporter can be null. + CHECK(console_reporter != nullptr); + + // Determine the width of the name field using a minimum width of 10. + bool has_repetitions = FLAGS_benchmark_repetitions > 1; + size_t name_field_width = 10; + size_t stat_field_width = 0; + for (const Benchmark::Instance& benchmark : benchmarks) { + name_field_width = + std::max(name_field_width, benchmark.name.size()); + has_repetitions |= benchmark.repetitions > 1; + + for(const auto& Stat : *benchmark.statistics) + stat_field_width = std::max(stat_field_width, Stat.name_.size()); + } + if (has_repetitions) name_field_width += 1 + stat_field_width; + + // Print header here + BenchmarkReporter::Context context; + context.name_field_width = name_field_width; + + // Keep track of runing times of all instances of current benchmark + std::vector complexity_reports; + + // We flush streams after invoking reporter methods that write to them. This + // ensures users get timely updates even when streams are not line-buffered. + auto flushStreams = [](BenchmarkReporter* reporter) { + if (!reporter) return; + std::flush(reporter->GetOutputStream()); + std::flush(reporter->GetErrorStream()); + }; + + if (console_reporter->ReportContext(context) && + (!file_reporter || file_reporter->ReportContext(context))) { + flushStreams(console_reporter); + flushStreams(file_reporter); + for (const auto& benchmark : benchmarks) { + std::vector reports = + RunBenchmark(benchmark, &complexity_reports); + console_reporter->ReportRuns(reports); + if (file_reporter) file_reporter->ReportRuns(reports); + flushStreams(console_reporter); + flushStreams(file_reporter); + } + } + console_reporter->Finalize(); + if (file_reporter) file_reporter->Finalize(); + flushStreams(console_reporter); + flushStreams(file_reporter); +} + +std::unique_ptr CreateReporter( + std::string const& name, ConsoleReporter::OutputOptions output_opts) { + typedef std::unique_ptr PtrType; + if (name == "console") { + return PtrType(new ConsoleReporter(output_opts)); + } else if (name == "json") { + return PtrType(new JSONReporter); + } else if (name == "csv") { + return PtrType(new CSVReporter); + } else { + std::cerr << "Unexpected format: '" << name << "'\n"; + std::exit(1); + } +} + +} // end namespace + +bool IsZero(double n) { + return std::abs(n) < std::numeric_limits::epsilon(); +} + +ConsoleReporter::OutputOptions GetOutputOptions(bool force_no_color) { + int output_opts = ConsoleReporter::OO_Defaults; + if ((FLAGS_benchmark_color == "auto" && IsColorTerminal()) || + IsTruthyFlagValue(FLAGS_benchmark_color)) { + output_opts |= ConsoleReporter::OO_Color; + } else { + output_opts &= ~ConsoleReporter::OO_Color; + } + if(force_no_color) { + output_opts &= ~ConsoleReporter::OO_Color; + } + if(FLAGS_benchmark_counters_tabular) { + output_opts |= ConsoleReporter::OO_Tabular; + } else { + output_opts &= ~ConsoleReporter::OO_Tabular; + } + return static_cast< ConsoleReporter::OutputOptions >(output_opts); +} + +} // end namespace internal + +size_t RunSpecifiedBenchmarks() { + return RunSpecifiedBenchmarks(nullptr, nullptr); +} + +size_t RunSpecifiedBenchmarks(BenchmarkReporter* console_reporter) { + return RunSpecifiedBenchmarks(console_reporter, nullptr); +} + +size_t RunSpecifiedBenchmarks(BenchmarkReporter* console_reporter, + BenchmarkReporter* file_reporter) { + std::string spec = FLAGS_benchmark_filter; + if (spec.empty() || spec == "all") + spec = "."; // Regexp that matches all benchmarks + + // Setup the reporters + std::ofstream output_file; + std::unique_ptr default_console_reporter; + std::unique_ptr default_file_reporter; + if (!console_reporter) { + default_console_reporter = internal::CreateReporter( + FLAGS_benchmark_format, internal::GetOutputOptions()); + console_reporter = default_console_reporter.get(); + } + auto& Out = console_reporter->GetOutputStream(); + auto& Err = console_reporter->GetErrorStream(); + + std::string const& fname = FLAGS_benchmark_out; + if (fname.empty() && file_reporter) { + Err << "A custom file reporter was provided but " + "--benchmark_out= was not specified." + << std::endl; + std::exit(1); + } + if (!fname.empty()) { + output_file.open(fname); + if (!output_file.is_open()) { + Err << "invalid file name: '" << fname << std::endl; + std::exit(1); + } + if (!file_reporter) { + default_file_reporter = internal::CreateReporter( + FLAGS_benchmark_out_format, ConsoleReporter::OO_None); + file_reporter = default_file_reporter.get(); + } + file_reporter->SetOutputStream(&output_file); + file_reporter->SetErrorStream(&output_file); + } + + std::vector benchmarks; + if (!FindBenchmarksInternal(spec, &benchmarks, &Err)) return 0; + + if (benchmarks.empty()) { + Err << "Failed to match any benchmarks against regex: " << spec << "\n"; + return 0; + } + + if (FLAGS_benchmark_list_tests) { + for (auto const& benchmark : benchmarks) Out << benchmark.name << "\n"; + } else { + internal::RunBenchmarks(benchmarks, console_reporter, file_reporter); + } + + return benchmarks.size(); +} + +namespace internal { + +void PrintUsageAndExit() { + fprintf(stdout, + "benchmark" + " [--benchmark_list_tests={true|false}]\n" + " [--benchmark_filter=]\n" + " [--benchmark_min_time=]\n" + " [--benchmark_repetitions=]\n" + " [--benchmark_report_aggregates_only={true|false}\n" + " [--benchmark_format=]\n" + " [--benchmark_out=]\n" + " [--benchmark_out_format=]\n" + " [--benchmark_color={auto|true|false}]\n" + " [--benchmark_counters_tabular={true|false}]\n" + " [--v=]\n"); + exit(0); +} + +void ParseCommandLineFlags(int* argc, char** argv) { + using namespace benchmark; + for (int i = 1; i < *argc; ++i) { + if (ParseBoolFlag(argv[i], "benchmark_list_tests", + &FLAGS_benchmark_list_tests) || + ParseStringFlag(argv[i], "benchmark_filter", &FLAGS_benchmark_filter) || + ParseDoubleFlag(argv[i], "benchmark_min_time", + &FLAGS_benchmark_min_time) || + ParseInt32Flag(argv[i], "benchmark_repetitions", + &FLAGS_benchmark_repetitions) || + ParseBoolFlag(argv[i], "benchmark_report_aggregates_only", + &FLAGS_benchmark_report_aggregates_only) || + ParseStringFlag(argv[i], "benchmark_format", &FLAGS_benchmark_format) || + ParseStringFlag(argv[i], "benchmark_out", &FLAGS_benchmark_out) || + ParseStringFlag(argv[i], "benchmark_out_format", + &FLAGS_benchmark_out_format) || + ParseStringFlag(argv[i], "benchmark_color", &FLAGS_benchmark_color) || + // "color_print" is the deprecated name for "benchmark_color". + // TODO: Remove this. + ParseStringFlag(argv[i], "color_print", &FLAGS_benchmark_color) || + ParseBoolFlag(argv[i], "benchmark_counters_tabular", + &FLAGS_benchmark_counters_tabular) || + ParseInt32Flag(argv[i], "v", &FLAGS_v)) { + for (int j = i; j != *argc - 1; ++j) argv[j] = argv[j + 1]; + + --(*argc); + --i; + } else if (IsFlag(argv[i], "help")) { + PrintUsageAndExit(); + } + } + for (auto const* flag : + {&FLAGS_benchmark_format, &FLAGS_benchmark_out_format}) + if (*flag != "console" && *flag != "json" && *flag != "csv") { + PrintUsageAndExit(); + } + if (FLAGS_benchmark_color.empty()) { + PrintUsageAndExit(); + } +} + +int InitializeStreams() { + static std::ios_base::Init init; + return 0; +} + +} // end namespace internal + +void Initialize(int* argc, char** argv) { + internal::ParseCommandLineFlags(argc, argv); + internal::LogLevel() = FLAGS_v; +} + +bool ReportUnrecognizedArguments(int argc, char** argv) { + for (int i = 1; i < argc; ++i) { + fprintf(stderr, "%s: error: unrecognized command-line flag: %s\n", argv[0], argv[i]); + } + return argc > 1; +} + +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/benchmark_api_internal.h b/benchmarks/thirdparty/benchmark/src/benchmark_api_internal.h new file mode 100644 index 00000000..d481dc52 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/benchmark_api_internal.h @@ -0,0 +1,47 @@ +#ifndef BENCHMARK_API_INTERNAL_H +#define BENCHMARK_API_INTERNAL_H + +#include "benchmark/benchmark.h" + +#include +#include +#include +#include +#include + +namespace benchmark { +namespace internal { + +// Information kept per benchmark we may want to run +struct Benchmark::Instance { + std::string name; + Benchmark* benchmark; + ReportMode report_mode; + std::vector arg; + TimeUnit time_unit; + int range_multiplier; + bool use_real_time; + bool use_manual_time; + BigO complexity; + BigOFunc* complexity_lambda; + UserCounters counters; + const std::vector* statistics; + bool last_benchmark_instance; + int repetitions; + double min_time; + size_t iterations; + int threads; // Number of concurrent threads to us +}; + +bool FindBenchmarksInternal(const std::string& re, + std::vector* benchmarks, + std::ostream* Err); + +bool IsZero(double n); + +ConsoleReporter::OutputOptions GetOutputOptions(bool force_no_color = false); + +} // end namespace internal +} // end namespace benchmark + +#endif // BENCHMARK_API_INTERNAL_H diff --git a/benchmarks/thirdparty/benchmark/src/benchmark_register.cc b/benchmarks/thirdparty/benchmark/src/benchmark_register.cc new file mode 100644 index 00000000..d5746a36 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/benchmark_register.cc @@ -0,0 +1,476 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "benchmark/benchmark.h" +#include "benchmark_api_internal.h" +#include "internal_macros.h" + +#ifndef BENCHMARK_OS_WINDOWS +#include +#include +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "check.h" +#include "commandlineflags.h" +#include "complexity.h" +#include "statistics.h" +#include "log.h" +#include "mutex.h" +#include "re.h" +#include "string_util.h" +#include "timers.h" + +namespace benchmark { + +namespace { +// For non-dense Range, intermediate values are powers of kRangeMultiplier. +static const int kRangeMultiplier = 8; +// The size of a benchmark family determines is the number of inputs to repeat +// the benchmark on. If this is "large" then warn the user during configuration. +static const size_t kMaxFamilySize = 100; +} // end namespace + +namespace internal { + +//=============================================================================// +// BenchmarkFamilies +//=============================================================================// + +// Class for managing registered benchmarks. Note that each registered +// benchmark identifies a family of related benchmarks to run. +class BenchmarkFamilies { + public: + static BenchmarkFamilies* GetInstance(); + + // Registers a benchmark family and returns the index assigned to it. + size_t AddBenchmark(std::unique_ptr family); + + // Clear all registered benchmark families. + void ClearBenchmarks(); + + // Extract the list of benchmark instances that match the specified + // regular expression. + bool FindBenchmarks(const std::string& re, + std::vector* benchmarks, + std::ostream* Err); + + private: + BenchmarkFamilies() {} + + std::vector> families_; + Mutex mutex_; +}; + +BenchmarkFamilies* BenchmarkFamilies::GetInstance() { + static BenchmarkFamilies instance; + return &instance; +} + +size_t BenchmarkFamilies::AddBenchmark(std::unique_ptr family) { + MutexLock l(mutex_); + size_t index = families_.size(); + families_.push_back(std::move(family)); + return index; +} + +void BenchmarkFamilies::ClearBenchmarks() { + MutexLock l(mutex_); + families_.clear(); + families_.shrink_to_fit(); +} + +bool BenchmarkFamilies::FindBenchmarks( + const std::string& spec, std::vector* benchmarks, + std::ostream* ErrStream) { + CHECK(ErrStream); + auto& Err = *ErrStream; + // Make regular expression out of command-line flag + std::string error_msg; + Regex re; + if (!re.Init(spec, &error_msg)) { + Err << "Could not compile benchmark re: " << error_msg << std::endl; + return false; + } + + // Special list of thread counts to use when none are specified + const std::vector one_thread = {1}; + + MutexLock l(mutex_); + for (std::unique_ptr& family : families_) { + // Family was deleted or benchmark doesn't match + if (!family) continue; + + if (family->ArgsCnt() == -1) { + family->Args({}); + } + const std::vector* thread_counts = + (family->thread_counts_.empty() + ? &one_thread + : &static_cast&>(family->thread_counts_)); + const size_t family_size = family->args_.size() * thread_counts->size(); + // The benchmark will be run at least 'family_size' different inputs. + // If 'family_size' is very large warn the user. + if (family_size > kMaxFamilySize) { + Err << "The number of inputs is very large. " << family->name_ + << " will be repeated at least " << family_size << " times.\n"; + } + // reserve in the special case the regex ".", since we know the final + // family size. + if (spec == ".") benchmarks->reserve(family_size); + + for (auto const& args : family->args_) { + for (int num_threads : *thread_counts) { + Benchmark::Instance instance; + instance.name = family->name_; + instance.benchmark = family.get(); + instance.report_mode = family->report_mode_; + instance.arg = args; + instance.time_unit = family->time_unit_; + instance.range_multiplier = family->range_multiplier_; + instance.min_time = family->min_time_; + instance.iterations = family->iterations_; + instance.repetitions = family->repetitions_; + instance.use_real_time = family->use_real_time_; + instance.use_manual_time = family->use_manual_time_; + instance.complexity = family->complexity_; + instance.complexity_lambda = family->complexity_lambda_; + instance.statistics = &family->statistics_; + instance.threads = num_threads; + + // Add arguments to instance name + size_t arg_i = 0; + for (auto const& arg : args) { + instance.name += "/"; + + if (arg_i < family->arg_names_.size()) { + const auto& arg_name = family->arg_names_[arg_i]; + if (!arg_name.empty()) { + instance.name += + StringPrintF("%s:", family->arg_names_[arg_i].c_str()); + } + } + + instance.name += StringPrintF("%d", arg); + ++arg_i; + } + + if (!IsZero(family->min_time_)) + instance.name += StringPrintF("/min_time:%0.3f", family->min_time_); + if (family->iterations_ != 0) + instance.name += StringPrintF("/iterations:%d", family->iterations_); + if (family->repetitions_ != 0) + instance.name += StringPrintF("/repeats:%d", family->repetitions_); + + if (family->use_manual_time_) { + instance.name += "/manual_time"; + } else if (family->use_real_time_) { + instance.name += "/real_time"; + } + + // Add the number of threads used to the name + if (!family->thread_counts_.empty()) { + instance.name += StringPrintF("/threads:%d", instance.threads); + } + + if (re.Match(instance.name)) { + instance.last_benchmark_instance = (&args == &family->args_.back()); + benchmarks->push_back(std::move(instance)); + } + } + } + } + return true; +} + +Benchmark* RegisterBenchmarkInternal(Benchmark* bench) { + std::unique_ptr bench_ptr(bench); + BenchmarkFamilies* families = BenchmarkFamilies::GetInstance(); + families->AddBenchmark(std::move(bench_ptr)); + return bench; +} + +// FIXME: This function is a hack so that benchmark.cc can access +// `BenchmarkFamilies` +bool FindBenchmarksInternal(const std::string& re, + std::vector* benchmarks, + std::ostream* Err) { + return BenchmarkFamilies::GetInstance()->FindBenchmarks(re, benchmarks, Err); +} + +//=============================================================================// +// Benchmark +//=============================================================================// + +Benchmark::Benchmark(const char* name) + : name_(name), + report_mode_(RM_Unspecified), + time_unit_(kNanosecond), + range_multiplier_(kRangeMultiplier), + min_time_(0), + iterations_(0), + repetitions_(0), + use_real_time_(false), + use_manual_time_(false), + complexity_(oNone), + complexity_lambda_(nullptr) { + ComputeStatistics("mean", StatisticsMean); + ComputeStatistics("median", StatisticsMedian); + ComputeStatistics("stddev", StatisticsStdDev); +} + +Benchmark::~Benchmark() {} + +void Benchmark::AddRange(std::vector* dst, int lo, int hi, int mult) { + CHECK_GE(lo, 0); + CHECK_GE(hi, lo); + CHECK_GE(mult, 2); + + // Add "lo" + dst->push_back(lo); + + static const int kint32max = std::numeric_limits::max(); + + // Now space out the benchmarks in multiples of "mult" + for (int32_t i = 1; i < kint32max / mult; i *= mult) { + if (i >= hi) break; + if (i > lo) { + dst->push_back(i); + } + } + // Add "hi" (if different from "lo") + if (hi != lo) { + dst->push_back(hi); + } +} + +Benchmark* Benchmark::Arg(int x) { + CHECK(ArgsCnt() == -1 || ArgsCnt() == 1); + args_.push_back({x}); + return this; +} + +Benchmark* Benchmark::Unit(TimeUnit unit) { + time_unit_ = unit; + return this; +} + +Benchmark* Benchmark::Range(int start, int limit) { + CHECK(ArgsCnt() == -1 || ArgsCnt() == 1); + std::vector arglist; + AddRange(&arglist, start, limit, range_multiplier_); + + for (int i : arglist) { + args_.push_back({i}); + } + return this; +} + +Benchmark* Benchmark::Ranges(const std::vector>& ranges) { + CHECK(ArgsCnt() == -1 || ArgsCnt() == static_cast(ranges.size())); + std::vector> arglists(ranges.size()); + std::size_t total = 1; + for (std::size_t i = 0; i < ranges.size(); i++) { + AddRange(&arglists[i], ranges[i].first, ranges[i].second, + range_multiplier_); + total *= arglists[i].size(); + } + + std::vector ctr(arglists.size(), 0); + + for (std::size_t i = 0; i < total; i++) { + std::vector tmp; + tmp.reserve(arglists.size()); + + for (std::size_t j = 0; j < arglists.size(); j++) { + tmp.push_back(arglists[j].at(ctr[j])); + } + + args_.push_back(std::move(tmp)); + + for (std::size_t j = 0; j < arglists.size(); j++) { + if (ctr[j] + 1 < arglists[j].size()) { + ++ctr[j]; + break; + } + ctr[j] = 0; + } + } + return this; +} + +Benchmark* Benchmark::ArgName(const std::string& name) { + CHECK(ArgsCnt() == -1 || ArgsCnt() == 1); + arg_names_ = {name}; + return this; +} + +Benchmark* Benchmark::ArgNames(const std::vector& names) { + CHECK(ArgsCnt() == -1 || ArgsCnt() == static_cast(names.size())); + arg_names_ = names; + return this; +} + +Benchmark* Benchmark::DenseRange(int start, int limit, int step) { + CHECK(ArgsCnt() == -1 || ArgsCnt() == 1); + CHECK_GE(start, 0); + CHECK_LE(start, limit); + for (int arg = start; arg <= limit; arg += step) { + args_.push_back({arg}); + } + return this; +} + +Benchmark* Benchmark::Args(const std::vector& args) { + CHECK(ArgsCnt() == -1 || ArgsCnt() == static_cast(args.size())); + args_.push_back(args); + return this; +} + +Benchmark* Benchmark::Apply(void (*custom_arguments)(Benchmark* benchmark)) { + custom_arguments(this); + return this; +} + +Benchmark* Benchmark::RangeMultiplier(int multiplier) { + CHECK(multiplier > 1); + range_multiplier_ = multiplier; + return this; +} + + +Benchmark* Benchmark::MinTime(double t) { + CHECK(t > 0.0); + CHECK(iterations_ == 0); + min_time_ = t; + return this; +} + + +Benchmark* Benchmark::Iterations(size_t n) { + CHECK(n > 0); + CHECK(IsZero(min_time_)); + iterations_ = n; + return this; +} + +Benchmark* Benchmark::Repetitions(int n) { + CHECK(n > 0); + repetitions_ = n; + return this; +} + +Benchmark* Benchmark::ReportAggregatesOnly(bool value) { + report_mode_ = value ? RM_ReportAggregatesOnly : RM_Default; + return this; +} + +Benchmark* Benchmark::UseRealTime() { + CHECK(!use_manual_time_) + << "Cannot set UseRealTime and UseManualTime simultaneously."; + use_real_time_ = true; + return this; +} + +Benchmark* Benchmark::UseManualTime() { + CHECK(!use_real_time_) + << "Cannot set UseRealTime and UseManualTime simultaneously."; + use_manual_time_ = true; + return this; +} + +Benchmark* Benchmark::Complexity(BigO complexity) { + complexity_ = complexity; + return this; +} + +Benchmark* Benchmark::Complexity(BigOFunc* complexity) { + complexity_lambda_ = complexity; + complexity_ = oLambda; + return this; +} + +Benchmark* Benchmark::ComputeStatistics(std::string name, + StatisticsFunc* statistics) { + statistics_.emplace_back(name, statistics); + return this; +} + +Benchmark* Benchmark::Threads(int t) { + CHECK_GT(t, 0); + thread_counts_.push_back(t); + return this; +} + +Benchmark* Benchmark::ThreadRange(int min_threads, int max_threads) { + CHECK_GT(min_threads, 0); + CHECK_GE(max_threads, min_threads); + + AddRange(&thread_counts_, min_threads, max_threads, 2); + return this; +} + +Benchmark* Benchmark::DenseThreadRange(int min_threads, int max_threads, + int stride) { + CHECK_GT(min_threads, 0); + CHECK_GE(max_threads, min_threads); + CHECK_GE(stride, 1); + + for (auto i = min_threads; i < max_threads; i += stride) { + thread_counts_.push_back(i); + } + thread_counts_.push_back(max_threads); + return this; +} + +Benchmark* Benchmark::ThreadPerCpu() { + thread_counts_.push_back(CPUInfo::Get().num_cpus); + return this; +} + +void Benchmark::SetName(const char* name) { name_ = name; } + +int Benchmark::ArgsCnt() const { + if (args_.empty()) { + if (arg_names_.empty()) return -1; + return static_cast(arg_names_.size()); + } + return static_cast(args_.front().size()); +} + +//=============================================================================// +// FunctionBenchmark +//=============================================================================// + +void FunctionBenchmark::Run(State& st) { func_(st); } + +} // end namespace internal + +void ClearRegisteredBenchmarks() { + internal::BenchmarkFamilies::GetInstance()->ClearBenchmarks(); +} + +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/check.h b/benchmarks/thirdparty/benchmark/src/check.h new file mode 100644 index 00000000..73bead2f --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/check.h @@ -0,0 +1,79 @@ +#ifndef CHECK_H_ +#define CHECK_H_ + +#include +#include +#include + +#include "internal_macros.h" +#include "log.h" + +namespace benchmark { +namespace internal { + +typedef void(AbortHandlerT)(); + +inline AbortHandlerT*& GetAbortHandler() { + static AbortHandlerT* handler = &std::abort; + return handler; +} + +BENCHMARK_NORETURN inline void CallAbortHandler() { + GetAbortHandler()(); + std::abort(); // fallback to enforce noreturn +} + +// CheckHandler is the class constructed by failing CHECK macros. CheckHandler +// will log information about the failures and abort when it is destructed. +class CheckHandler { + public: + CheckHandler(const char* check, const char* file, const char* func, int line) + : log_(GetErrorLogInstance()) { + log_ << file << ":" << line << ": " << func << ": Check `" << check + << "' failed. "; + } + + LogType& GetLog() { return log_; } + + BENCHMARK_NORETURN ~CheckHandler() BENCHMARK_NOEXCEPT_OP(false) { + log_ << std::endl; + CallAbortHandler(); + } + + CheckHandler& operator=(const CheckHandler&) = delete; + CheckHandler(const CheckHandler&) = delete; + CheckHandler() = delete; + + private: + LogType& log_; +}; + +} // end namespace internal +} // end namespace benchmark + +// The CHECK macro returns a std::ostream object that can have extra information +// written to it. +#ifndef NDEBUG +#define CHECK(b) \ + (b ? ::benchmark::internal::GetNullLogInstance() \ + : ::benchmark::internal::CheckHandler(#b, __FILE__, __func__, __LINE__) \ + .GetLog()) +#else +#define CHECK(b) ::benchmark::internal::GetNullLogInstance() +#endif + +#define CHECK_EQ(a, b) CHECK((a) == (b)) +#define CHECK_NE(a, b) CHECK((a) != (b)) +#define CHECK_GE(a, b) CHECK((a) >= (b)) +#define CHECK_LE(a, b) CHECK((a) <= (b)) +#define CHECK_GT(a, b) CHECK((a) > (b)) +#define CHECK_LT(a, b) CHECK((a) < (b)) + +#define CHECK_FLOAT_EQ(a, b, eps) CHECK(std::fabs((a) - (b)) < (eps)) +#define CHECK_FLOAT_NE(a, b, eps) CHECK(std::fabs((a) - (b)) >= (eps)) +#define CHECK_FLOAT_GE(a, b, eps) CHECK((a) - (b) > -(eps)) +#define CHECK_FLOAT_LE(a, b, eps) CHECK((b) - (a) > -(eps)) +#define CHECK_FLOAT_GT(a, b, eps) CHECK((a) - (b) > (eps)) +#define CHECK_FLOAT_LT(a, b, eps) CHECK((b) - (a) > (eps)) + +#endif // CHECK_H_ diff --git a/benchmarks/thirdparty/benchmark/src/colorprint.cc b/benchmarks/thirdparty/benchmark/src/colorprint.cc new file mode 100644 index 00000000..2dec4a8b --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/colorprint.cc @@ -0,0 +1,188 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "colorprint.h" + +#include +#include +#include +#include +#include +#include + +#include "check.h" +#include "internal_macros.h" + +#ifdef BENCHMARK_OS_WINDOWS +#include +#include +#else +#include +#endif // BENCHMARK_OS_WINDOWS + +namespace benchmark { +namespace { +#ifdef BENCHMARK_OS_WINDOWS +typedef WORD PlatformColorCode; +#else +typedef const char* PlatformColorCode; +#endif + +PlatformColorCode GetPlatformColorCode(LogColor color) { +#ifdef BENCHMARK_OS_WINDOWS + switch (color) { + case COLOR_RED: + return FOREGROUND_RED; + case COLOR_GREEN: + return FOREGROUND_GREEN; + case COLOR_YELLOW: + return FOREGROUND_RED | FOREGROUND_GREEN; + case COLOR_BLUE: + return FOREGROUND_BLUE; + case COLOR_MAGENTA: + return FOREGROUND_BLUE | FOREGROUND_RED; + case COLOR_CYAN: + return FOREGROUND_BLUE | FOREGROUND_GREEN; + case COLOR_WHITE: // fall through to default + default: + return 0; + } +#else + switch (color) { + case COLOR_RED: + return "1"; + case COLOR_GREEN: + return "2"; + case COLOR_YELLOW: + return "3"; + case COLOR_BLUE: + return "4"; + case COLOR_MAGENTA: + return "5"; + case COLOR_CYAN: + return "6"; + case COLOR_WHITE: + return "7"; + default: + return nullptr; + }; +#endif +} + +} // end namespace + +std::string FormatString(const char* msg, va_list args) { + // we might need a second shot at this, so pre-emptivly make a copy + va_list args_cp; + va_copy(args_cp, args); + + std::size_t size = 256; + char local_buff[256]; + auto ret = vsnprintf(local_buff, size, msg, args_cp); + + va_end(args_cp); + + // currently there is no error handling for failure, so this is hack. + CHECK(ret >= 0); + + if (ret == 0) // handle empty expansion + return {}; + else if (static_cast(ret) < size) + return local_buff; + else { + // we did not provide a long enough buffer on our first attempt. + size = (size_t)ret + 1; // + 1 for the null byte + std::unique_ptr buff(new char[size]); + ret = vsnprintf(buff.get(), size, msg, args); + CHECK(ret > 0 && ((size_t)ret) < size); + return buff.get(); + } +} + +std::string FormatString(const char* msg, ...) { + va_list args; + va_start(args, msg); + auto tmp = FormatString(msg, args); + va_end(args); + return tmp; +} + +void ColorPrintf(std::ostream& out, LogColor color, const char* fmt, ...) { + va_list args; + va_start(args, fmt); + ColorPrintf(out, color, fmt, args); + va_end(args); +} + +void ColorPrintf(std::ostream& out, LogColor color, const char* fmt, + va_list args) { +#ifdef BENCHMARK_OS_WINDOWS + ((void)out); // suppress unused warning + + const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE); + + // Gets the current text color. + CONSOLE_SCREEN_BUFFER_INFO buffer_info; + GetConsoleScreenBufferInfo(stdout_handle, &buffer_info); + const WORD old_color_attrs = buffer_info.wAttributes; + + // We need to flush the stream buffers into the console before each + // SetConsoleTextAttribute call lest it affect the text that is already + // printed but has not yet reached the console. + fflush(stdout); + SetConsoleTextAttribute(stdout_handle, + GetPlatformColorCode(color) | FOREGROUND_INTENSITY); + vprintf(fmt, args); + + fflush(stdout); + // Restores the text color. + SetConsoleTextAttribute(stdout_handle, old_color_attrs); +#else + const char* color_code = GetPlatformColorCode(color); + if (color_code) out << FormatString("\033[0;3%sm", color_code); + out << FormatString(fmt, args) << "\033[m"; +#endif +} + +bool IsColorTerminal() { +#if BENCHMARK_OS_WINDOWS + // On Windows the TERM variable is usually not set, but the + // console there does support colors. + return 0 != _isatty(_fileno(stdout)); +#else + // On non-Windows platforms, we rely on the TERM variable. This list of + // supported TERM values is copied from Google Test: + // . + const char* const SUPPORTED_TERM_VALUES[] = { + "xterm", "xterm-color", "xterm-256color", + "screen", "screen-256color", "tmux", + "tmux-256color", "rxvt-unicode", "rxvt-unicode-256color", + "linux", "cygwin", + }; + + const char* const term = getenv("TERM"); + + bool term_supports_color = false; + for (const char* candidate : SUPPORTED_TERM_VALUES) { + if (term && 0 == strcmp(term, candidate)) { + term_supports_color = true; + break; + } + } + + return 0 != isatty(fileno(stdout)) && term_supports_color; +#endif // BENCHMARK_OS_WINDOWS +} + +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/colorprint.h b/benchmarks/thirdparty/benchmark/src/colorprint.h new file mode 100644 index 00000000..9f6fab9b --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/colorprint.h @@ -0,0 +1,33 @@ +#ifndef BENCHMARK_COLORPRINT_H_ +#define BENCHMARK_COLORPRINT_H_ + +#include +#include +#include + +namespace benchmark { +enum LogColor { + COLOR_DEFAULT, + COLOR_RED, + COLOR_GREEN, + COLOR_YELLOW, + COLOR_BLUE, + COLOR_MAGENTA, + COLOR_CYAN, + COLOR_WHITE +}; + +std::string FormatString(const char* msg, va_list args); +std::string FormatString(const char* msg, ...); + +void ColorPrintf(std::ostream& out, LogColor color, const char* fmt, + va_list args); +void ColorPrintf(std::ostream& out, LogColor color, const char* fmt, ...); + +// Returns true if stdout appears to be a terminal that supports colored +// output, false otherwise. +bool IsColorTerminal(); + +} // end namespace benchmark + +#endif // BENCHMARK_COLORPRINT_H_ diff --git a/benchmarks/thirdparty/benchmark/src/commandlineflags.cc b/benchmarks/thirdparty/benchmark/src/commandlineflags.cc new file mode 100644 index 00000000..2fc92517 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/commandlineflags.cc @@ -0,0 +1,218 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "commandlineflags.h" + +#include +#include +#include +#include +#include + +namespace benchmark { +// Parses 'str' for a 32-bit signed integer. If successful, writes +// the result to *value and returns true; otherwise leaves *value +// unchanged and returns false. +bool ParseInt32(const std::string& src_text, const char* str, int32_t* value) { + // Parses the environment variable as a decimal integer. + char* end = nullptr; + const long long_value = strtol(str, &end, 10); // NOLINT + + // Has strtol() consumed all characters in the string? + if (*end != '\0') { + // No - an invalid character was encountered. + std::cerr << src_text << " is expected to be a 32-bit integer, " + << "but actually has value \"" << str << "\".\n"; + return false; + } + + // Is the parsed value in the range of an Int32? + const int32_t result = static_cast(long_value); + if (long_value == std::numeric_limits::max() || + long_value == std::numeric_limits::min() || + // The parsed value overflows as a long. (strtol() returns + // LONG_MAX or LONG_MIN when the input overflows.) + result != long_value + // The parsed value overflows as an Int32. + ) { + std::cerr << src_text << " is expected to be a 32-bit integer, " + << "but actually has value \"" << str << "\", " + << "which overflows.\n"; + return false; + } + + *value = result; + return true; +} + +// Parses 'str' for a double. If successful, writes the result to *value and +// returns true; otherwise leaves *value unchanged and returns false. +bool ParseDouble(const std::string& src_text, const char* str, double* value) { + // Parses the environment variable as a decimal integer. + char* end = nullptr; + const double double_value = strtod(str, &end); // NOLINT + + // Has strtol() consumed all characters in the string? + if (*end != '\0') { + // No - an invalid character was encountered. + std::cerr << src_text << " is expected to be a double, " + << "but actually has value \"" << str << "\".\n"; + return false; + } + + *value = double_value; + return true; +} + +// Returns the name of the environment variable corresponding to the +// given flag. For example, FlagToEnvVar("foo") will return +// "BENCHMARK_FOO" in the open-source version. +static std::string FlagToEnvVar(const char* flag) { + const std::string flag_str(flag); + + std::string env_var; + for (size_t i = 0; i != flag_str.length(); ++i) + env_var += static_cast(::toupper(flag_str.c_str()[i])); + + return "BENCHMARK_" + env_var; +} + +// Reads and returns the Boolean environment variable corresponding to +// the given flag; if it's not set, returns default_value. +// +// The value is considered true iff it's not "0". +bool BoolFromEnv(const char* flag, bool default_value) { + const std::string env_var = FlagToEnvVar(flag); + const char* const string_value = getenv(env_var.c_str()); + return string_value == nullptr ? default_value + : strcmp(string_value, "0") != 0; +} + +// Reads and returns a 32-bit integer stored in the environment +// variable corresponding to the given flag; if it isn't set or +// doesn't represent a valid 32-bit integer, returns default_value. +int32_t Int32FromEnv(const char* flag, int32_t default_value) { + const std::string env_var = FlagToEnvVar(flag); + const char* const string_value = getenv(env_var.c_str()); + if (string_value == nullptr) { + // The environment variable is not set. + return default_value; + } + + int32_t result = default_value; + if (!ParseInt32(std::string("Environment variable ") + env_var, string_value, + &result)) { + std::cout << "The default value " << default_value << " is used.\n"; + return default_value; + } + + return result; +} + +// Reads and returns the string environment variable corresponding to +// the given flag; if it's not set, returns default_value. +const char* StringFromEnv(const char* flag, const char* default_value) { + const std::string env_var = FlagToEnvVar(flag); + const char* const value = getenv(env_var.c_str()); + return value == nullptr ? default_value : value; +} + +// Parses a string as a command line flag. The string should have +// the format "--flag=value". When def_optional is true, the "=value" +// part can be omitted. +// +// Returns the value of the flag, or nullptr if the parsing failed. +const char* ParseFlagValue(const char* str, const char* flag, + bool def_optional) { + // str and flag must not be nullptr. + if (str == nullptr || flag == nullptr) return nullptr; + + // The flag must start with "--". + const std::string flag_str = std::string("--") + std::string(flag); + const size_t flag_len = flag_str.length(); + if (strncmp(str, flag_str.c_str(), flag_len) != 0) return nullptr; + + // Skips the flag name. + const char* flag_end = str + flag_len; + + // When def_optional is true, it's OK to not have a "=value" part. + if (def_optional && (flag_end[0] == '\0')) return flag_end; + + // If def_optional is true and there are more characters after the + // flag name, or if def_optional is false, there must be a '=' after + // the flag name. + if (flag_end[0] != '=') return nullptr; + + // Returns the string after "=". + return flag_end + 1; +} + +bool ParseBoolFlag(const char* str, const char* flag, bool* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, true); + + // Aborts if the parsing failed. + if (value_str == nullptr) return false; + + // Converts the string value to a bool. + *value = IsTruthyFlagValue(value_str); + return true; +} + +bool ParseInt32Flag(const char* str, const char* flag, int32_t* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, false); + + // Aborts if the parsing failed. + if (value_str == nullptr) return false; + + // Sets *value to the value of the flag. + return ParseInt32(std::string("The value of flag --") + flag, value_str, + value); +} + +bool ParseDoubleFlag(const char* str, const char* flag, double* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, false); + + // Aborts if the parsing failed. + if (value_str == nullptr) return false; + + // Sets *value to the value of the flag. + return ParseDouble(std::string("The value of flag --") + flag, value_str, + value); +} + +bool ParseStringFlag(const char* str, const char* flag, std::string* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, false); + + // Aborts if the parsing failed. + if (value_str == nullptr) return false; + + *value = value_str; + return true; +} + +bool IsFlag(const char* str, const char* flag) { + return (ParseFlagValue(str, flag, true) != nullptr); +} + +bool IsTruthyFlagValue(const std::string& value) { + if (value.empty()) return true; + char ch = value[0]; + return isalnum(ch) && + !(ch == '0' || ch == 'f' || ch == 'F' || ch == 'n' || ch == 'N'); +} +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/commandlineflags.h b/benchmarks/thirdparty/benchmark/src/commandlineflags.h new file mode 100644 index 00000000..945c9a9f --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/commandlineflags.h @@ -0,0 +1,79 @@ +#ifndef BENCHMARK_COMMANDLINEFLAGS_H_ +#define BENCHMARK_COMMANDLINEFLAGS_H_ + +#include +#include + +// Macro for referencing flags. +#define FLAG(name) FLAGS_##name + +// Macros for declaring flags. +#define DECLARE_bool(name) extern bool FLAG(name) +#define DECLARE_int32(name) extern int32_t FLAG(name) +#define DECLARE_int64(name) extern int64_t FLAG(name) +#define DECLARE_double(name) extern double FLAG(name) +#define DECLARE_string(name) extern std::string FLAG(name) + +// Macros for defining flags. +#define DEFINE_bool(name, default_val, doc) bool FLAG(name) = (default_val) +#define DEFINE_int32(name, default_val, doc) int32_t FLAG(name) = (default_val) +#define DEFINE_int64(name, default_val, doc) int64_t FLAG(name) = (default_val) +#define DEFINE_double(name, default_val, doc) double FLAG(name) = (default_val) +#define DEFINE_string(name, default_val, doc) \ + std::string FLAG(name) = (default_val) + +namespace benchmark { +// Parses 'str' for a 32-bit signed integer. If successful, writes the result +// to *value and returns true; otherwise leaves *value unchanged and returns +// false. +bool ParseInt32(const std::string& src_text, const char* str, int32_t* value); + +// Parses a bool/Int32/string from the environment variable +// corresponding to the given Google Test flag. +bool BoolFromEnv(const char* flag, bool default_val); +int32_t Int32FromEnv(const char* flag, int32_t default_val); +double DoubleFromEnv(const char* flag, double default_val); +const char* StringFromEnv(const char* flag, const char* default_val); + +// Parses a string for a bool flag, in the form of either +// "--flag=value" or "--flag". +// +// In the former case, the value is taken as true if it passes IsTruthyValue(). +// +// In the latter case, the value is taken as true. +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseBoolFlag(const char* str, const char* flag, bool* value); + +// Parses a string for an Int32 flag, in the form of +// "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseInt32Flag(const char* str, const char* flag, int32_t* value); + +// Parses a string for a Double flag, in the form of +// "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseDoubleFlag(const char* str, const char* flag, double* value); + +// Parses a string for a string flag, in the form of +// "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseStringFlag(const char* str, const char* flag, std::string* value); + +// Returns true if the string matches the flag. +bool IsFlag(const char* str, const char* flag); + +// Returns true unless value starts with one of: '0', 'f', 'F', 'n' or 'N', or +// some non-alphanumeric character. As a special case, also returns true if +// value is the empty string. +bool IsTruthyFlagValue(const std::string& value); +} // end namespace benchmark + +#endif // BENCHMARK_COMMANDLINEFLAGS_H_ diff --git a/benchmarks/thirdparty/benchmark/src/complexity.cc b/benchmarks/thirdparty/benchmark/src/complexity.cc new file mode 100644 index 00000000..88832698 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/complexity.cc @@ -0,0 +1,220 @@ +// Copyright 2016 Ismael Jimenez Martinez. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Source project : https://github.com/ismaelJimenez/cpp.leastsq +// Adapted to be used with google benchmark + +#include "benchmark/benchmark.h" + +#include +#include +#include "check.h" +#include "complexity.h" + +namespace benchmark { + +// Internal function to calculate the different scalability forms +BigOFunc* FittingCurve(BigO complexity) { + switch (complexity) { + case oN: + return [](int n) -> double { return n; }; + case oNSquared: + return [](int n) -> double { return std::pow(n, 2); }; + case oNCubed: + return [](int n) -> double { return std::pow(n, 3); }; + case oLogN: + return [](int n) { return log2(n); }; + case oNLogN: + return [](int n) { return n * log2(n); }; + case o1: + default: + return [](int) { return 1.0; }; + } +} + +// Function to return an string for the calculated complexity +std::string GetBigOString(BigO complexity) { + switch (complexity) { + case oN: + return "N"; + case oNSquared: + return "N^2"; + case oNCubed: + return "N^3"; + case oLogN: + return "lgN"; + case oNLogN: + return "NlgN"; + case o1: + return "(1)"; + default: + return "f(N)"; + } +} + +// Find the coefficient for the high-order term in the running time, by +// minimizing the sum of squares of relative error, for the fitting curve +// given by the lambda expresion. +// - n : Vector containing the size of the benchmark tests. +// - time : Vector containing the times for the benchmark tests. +// - fitting_curve : lambda expresion (e.g. [](int n) {return n; };). + +// For a deeper explanation on the algorithm logic, look the README file at +// http://github.com/ismaelJimenez/Minimal-Cpp-Least-Squared-Fit + +LeastSq MinimalLeastSq(const std::vector& n, + const std::vector& time, + BigOFunc* fitting_curve) { + double sigma_gn = 0.0; + double sigma_gn_squared = 0.0; + double sigma_time = 0.0; + double sigma_time_gn = 0.0; + + // Calculate least square fitting parameter + for (size_t i = 0; i < n.size(); ++i) { + double gn_i = fitting_curve(n[i]); + sigma_gn += gn_i; + sigma_gn_squared += gn_i * gn_i; + sigma_time += time[i]; + sigma_time_gn += time[i] * gn_i; + } + + LeastSq result; + result.complexity = oLambda; + + // Calculate complexity. + result.coef = sigma_time_gn / sigma_gn_squared; + + // Calculate RMS + double rms = 0.0; + for (size_t i = 0; i < n.size(); ++i) { + double fit = result.coef * fitting_curve(n[i]); + rms += pow((time[i] - fit), 2); + } + + // Normalized RMS by the mean of the observed values + double mean = sigma_time / n.size(); + result.rms = sqrt(rms / n.size()) / mean; + + return result; +} + +// Find the coefficient for the high-order term in the running time, by +// minimizing the sum of squares of relative error. +// - n : Vector containing the size of the benchmark tests. +// - time : Vector containing the times for the benchmark tests. +// - complexity : If different than oAuto, the fitting curve will stick to +// this one. If it is oAuto, it will be calculated the best +// fitting curve. +LeastSq MinimalLeastSq(const std::vector& n, + const std::vector& time, const BigO complexity) { + CHECK_EQ(n.size(), time.size()); + CHECK_GE(n.size(), 2); // Do not compute fitting curve is less than two + // benchmark runs are given + CHECK_NE(complexity, oNone); + + LeastSq best_fit; + + if (complexity == oAuto) { + std::vector fit_curves = {oLogN, oN, oNLogN, oNSquared, oNCubed}; + + // Take o1 as default best fitting curve + best_fit = MinimalLeastSq(n, time, FittingCurve(o1)); + best_fit.complexity = o1; + + // Compute all possible fitting curves and stick to the best one + for (const auto& fit : fit_curves) { + LeastSq current_fit = MinimalLeastSq(n, time, FittingCurve(fit)); + if (current_fit.rms < best_fit.rms) { + best_fit = current_fit; + best_fit.complexity = fit; + } + } + } else { + best_fit = MinimalLeastSq(n, time, FittingCurve(complexity)); + best_fit.complexity = complexity; + } + + return best_fit; +} + +std::vector ComputeBigO( + const std::vector& reports) { + typedef BenchmarkReporter::Run Run; + std::vector results; + + if (reports.size() < 2) return results; + + // Accumulators. + std::vector n; + std::vector real_time; + std::vector cpu_time; + + // Populate the accumulators. + for (const Run& run : reports) { + CHECK_GT(run.complexity_n, 0) << "Did you forget to call SetComplexityN?"; + n.push_back(run.complexity_n); + real_time.push_back(run.real_accumulated_time / run.iterations); + cpu_time.push_back(run.cpu_accumulated_time / run.iterations); + } + + LeastSq result_cpu; + LeastSq result_real; + + if (reports[0].complexity == oLambda) { + result_cpu = MinimalLeastSq(n, cpu_time, reports[0].complexity_lambda); + result_real = MinimalLeastSq(n, real_time, reports[0].complexity_lambda); + } else { + result_cpu = MinimalLeastSq(n, cpu_time, reports[0].complexity); + result_real = MinimalLeastSq(n, real_time, result_cpu.complexity); + } + std::string benchmark_name = + reports[0].benchmark_name.substr(0, reports[0].benchmark_name.find('/')); + + // Get the data from the accumulator to BenchmarkReporter::Run's. + Run big_o; + big_o.benchmark_name = benchmark_name + "_BigO"; + big_o.iterations = 0; + big_o.real_accumulated_time = result_real.coef; + big_o.cpu_accumulated_time = result_cpu.coef; + big_o.report_big_o = true; + big_o.complexity = result_cpu.complexity; + + // All the time results are reported after being multiplied by the + // time unit multiplier. But since RMS is a relative quantity it + // should not be multiplied at all. So, here, we _divide_ it by the + // multiplier so that when it is multiplied later the result is the + // correct one. + double multiplier = GetTimeUnitMultiplier(reports[0].time_unit); + + // Only add label to mean/stddev if it is same for all runs + Run rms; + big_o.report_label = reports[0].report_label; + rms.benchmark_name = benchmark_name + "_RMS"; + rms.report_label = big_o.report_label; + rms.iterations = 0; + rms.real_accumulated_time = result_real.rms / multiplier; + rms.cpu_accumulated_time = result_cpu.rms / multiplier; + rms.report_rms = true; + rms.complexity = result_cpu.complexity; + // don't forget to keep the time unit, or we won't be able to + // recover the correct value. + rms.time_unit = reports[0].time_unit; + + results.push_back(big_o); + results.push_back(rms); + return results; +} + +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/complexity.h b/benchmarks/thirdparty/benchmark/src/complexity.h new file mode 100644 index 00000000..df29b48d --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/complexity.h @@ -0,0 +1,55 @@ +// Copyright 2016 Ismael Jimenez Martinez. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Source project : https://github.com/ismaelJimenez/cpp.leastsq +// Adapted to be used with google benchmark + +#ifndef COMPLEXITY_H_ +#define COMPLEXITY_H_ + +#include +#include + +#include "benchmark/benchmark.h" + +namespace benchmark { + +// Return a vector containing the bigO and RMS information for the specified +// list of reports. If 'reports.size() < 2' an empty vector is returned. +std::vector ComputeBigO( + const std::vector& reports); + +// This data structure will contain the result returned by MinimalLeastSq +// - coef : Estimated coeficient for the high-order term as +// interpolated from data. +// - rms : Normalized Root Mean Squared Error. +// - complexity : Scalability form (e.g. oN, oNLogN). In case a scalability +// form has been provided to MinimalLeastSq this will return +// the same value. In case BigO::oAuto has been selected, this +// parameter will return the best fitting curve detected. + +struct LeastSq { + LeastSq() : coef(0.0), rms(0.0), complexity(oNone) {} + + double coef; + double rms; + BigO complexity; +}; + +// Function to return an string for the calculated complexity +std::string GetBigOString(BigO complexity); + +} // end namespace benchmark + +#endif // COMPLEXITY_H_ diff --git a/benchmarks/thirdparty/benchmark/src/console_reporter.cc b/benchmarks/thirdparty/benchmark/src/console_reporter.cc new file mode 100644 index 00000000..48920ca7 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/console_reporter.cc @@ -0,0 +1,182 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "benchmark/benchmark.h" +#include "complexity.h" +#include "counter.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "check.h" +#include "colorprint.h" +#include "commandlineflags.h" +#include "internal_macros.h" +#include "string_util.h" +#include "timers.h" + +namespace benchmark { + +bool ConsoleReporter::ReportContext(const Context& context) { + name_field_width_ = context.name_field_width; + printed_header_ = false; + prev_counters_.clear(); + + PrintBasicContext(&GetErrorStream(), context); + +#ifdef BENCHMARK_OS_WINDOWS + if ((output_options_ & OO_Color) && &std::cout != &GetOutputStream()) { + GetErrorStream() + << "Color printing is only supported for stdout on windows." + " Disabling color printing\n"; + output_options_ = static_cast< OutputOptions >(output_options_ & ~OO_Color); + } +#endif + + return true; +} + +void ConsoleReporter::PrintHeader(const Run& run) { + std::string str = FormatString("%-*s %13s %13s %10s", static_cast(name_field_width_), + "Benchmark", "Time", "CPU", "Iterations"); + if(!run.counters.empty()) { + if(output_options_ & OO_Tabular) { + for(auto const& c : run.counters) { + str += FormatString(" %10s", c.first.c_str()); + } + } else { + str += " UserCounters..."; + } + } + str += "\n"; + std::string line = std::string(str.length(), '-'); + GetOutputStream() << line << "\n" << str << line << "\n"; +} + +void ConsoleReporter::ReportRuns(const std::vector& reports) { + for (const auto& run : reports) { + // print the header: + // --- if none was printed yet + bool print_header = !printed_header_; + // --- or if the format is tabular and this run + // has different fields from the prev header + print_header |= (output_options_ & OO_Tabular) && + (!internal::SameNames(run.counters, prev_counters_)); + if (print_header) { + printed_header_ = true; + prev_counters_ = run.counters; + PrintHeader(run); + } + // As an alternative to printing the headers like this, we could sort + // the benchmarks by header and then print. But this would require + // waiting for the full results before printing, or printing twice. + PrintRunData(run); + } +} + +static void IgnoreColorPrint(std::ostream& out, LogColor, const char* fmt, + ...) { + va_list args; + va_start(args, fmt); + out << FormatString(fmt, args); + va_end(args); +} + +void ConsoleReporter::PrintRunData(const Run& result) { + typedef void(PrinterFn)(std::ostream&, LogColor, const char*, ...); + auto& Out = GetOutputStream(); + PrinterFn* printer = (output_options_ & OO_Color) ? + (PrinterFn*)ColorPrintf : IgnoreColorPrint; + auto name_color = + (result.report_big_o || result.report_rms) ? COLOR_BLUE : COLOR_GREEN; + printer(Out, name_color, "%-*s ", name_field_width_, + result.benchmark_name.c_str()); + + if (result.error_occurred) { + printer(Out, COLOR_RED, "ERROR OCCURRED: \'%s\'", + result.error_message.c_str()); + printer(Out, COLOR_DEFAULT, "\n"); + return; + } + // Format bytes per second + std::string rate; + if (result.bytes_per_second > 0) { + rate = StrCat(" ", HumanReadableNumber(result.bytes_per_second), "B/s"); + } + + // Format items per second + std::string items; + if (result.items_per_second > 0) { + items = + StrCat(" ", HumanReadableNumber(result.items_per_second), " items/s"); + } + + const double real_time = result.GetAdjustedRealTime(); + const double cpu_time = result.GetAdjustedCPUTime(); + + if (result.report_big_o) { + std::string big_o = GetBigOString(result.complexity); + printer(Out, COLOR_YELLOW, "%10.2f %s %10.2f %s ", real_time, big_o.c_str(), + cpu_time, big_o.c_str()); + } else if (result.report_rms) { + printer(Out, COLOR_YELLOW, "%10.0f %% %10.0f %% ", real_time * 100, + cpu_time * 100); + } else { + const char* timeLabel = GetTimeUnitString(result.time_unit); + printer(Out, COLOR_YELLOW, "%10.0f %s %10.0f %s ", real_time, timeLabel, + cpu_time, timeLabel); + } + + if (!result.report_big_o && !result.report_rms) { + printer(Out, COLOR_CYAN, "%10lld", result.iterations); + } + + for (auto& c : result.counters) { + const std::size_t cNameLen = std::max(std::string::size_type(10), + c.first.length()); + auto const& s = HumanReadableNumber(c.second.value, 1000); + if (output_options_ & OO_Tabular) { + if (c.second.flags & Counter::kIsRate) { + printer(Out, COLOR_DEFAULT, " %*s/s", cNameLen - 2, s.c_str()); + } else { + printer(Out, COLOR_DEFAULT, " %*s", cNameLen, s.c_str()); + } + } else { + const char* unit = (c.second.flags & Counter::kIsRate) ? "/s" : ""; + printer(Out, COLOR_DEFAULT, " %s=%s%s", c.first.c_str(), s.c_str(), + unit); + } + } + + if (!rate.empty()) { + printer(Out, COLOR_DEFAULT, " %*s", 13, rate.c_str()); + } + + if (!items.empty()) { + printer(Out, COLOR_DEFAULT, " %*s", 18, items.c_str()); + } + + if (!result.report_label.empty()) { + printer(Out, COLOR_DEFAULT, " %s", result.report_label.c_str()); + } + + printer(Out, COLOR_DEFAULT, "\n"); +} + +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/counter.cc b/benchmarks/thirdparty/benchmark/src/counter.cc new file mode 100644 index 00000000..ed1aa044 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/counter.cc @@ -0,0 +1,68 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "counter.h" + +namespace benchmark { +namespace internal { + +double Finish(Counter const& c, double cpu_time, double num_threads) { + double v = c.value; + if (c.flags & Counter::kIsRate) { + v /= cpu_time; + } + if (c.flags & Counter::kAvgThreads) { + v /= num_threads; + } + return v; +} + +void Finish(UserCounters *l, double cpu_time, double num_threads) { + for (auto &c : *l) { + c.second.value = Finish(c.second, cpu_time, num_threads); + } +} + +void Increment(UserCounters *l, UserCounters const& r) { + // add counters present in both or just in *l + for (auto &c : *l) { + auto it = r.find(c.first); + if (it != r.end()) { + c.second.value = c.second + it->second; + } + } + // add counters present in r, but not in *l + for (auto const &tc : r) { + auto it = l->find(tc.first); + if (it == l->end()) { + (*l)[tc.first] = tc.second; + } + } +} + +bool SameNames(UserCounters const& l, UserCounters const& r) { + if (&l == &r) return true; + if (l.size() != r.size()) { + return false; + } + for (auto const& c : l) { + if (r.find(c.first) == r.end()) { + return false; + } + } + return true; +} + +} // end namespace internal +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/counter.h b/benchmarks/thirdparty/benchmark/src/counter.h new file mode 100644 index 00000000..dd6865a3 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/counter.h @@ -0,0 +1,26 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "benchmark/benchmark.h" + +namespace benchmark { + +// these counter-related functions are hidden to reduce API surface. +namespace internal { +void Finish(UserCounters *l, double time, double num_threads); +void Increment(UserCounters *l, UserCounters const& r); +bool SameNames(UserCounters const& l, UserCounters const& r); +} // end namespace internal + +} //end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/csv_reporter.cc b/benchmarks/thirdparty/benchmark/src/csv_reporter.cc new file mode 100644 index 00000000..35510645 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/csv_reporter.cc @@ -0,0 +1,149 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "benchmark/benchmark.h" +#include "complexity.h" + +#include +#include +#include +#include +#include +#include + +#include "string_util.h" +#include "timers.h" +#include "check.h" + +// File format reference: http://edoceo.com/utilitas/csv-file-format. + +namespace benchmark { + +namespace { +std::vector elements = { + "name", "iterations", "real_time", "cpu_time", + "time_unit", "bytes_per_second", "items_per_second", "label", + "error_occurred", "error_message"}; +} // namespace + +bool CSVReporter::ReportContext(const Context& context) { + PrintBasicContext(&GetErrorStream(), context); + return true; +} + +void CSVReporter::ReportRuns(const std::vector & reports) { + std::ostream& Out = GetOutputStream(); + + if (!printed_header_) { + // save the names of all the user counters + for (const auto& run : reports) { + for (const auto& cnt : run.counters) { + user_counter_names_.insert(cnt.first); + } + } + + // print the header + for (auto B = elements.begin(); B != elements.end();) { + Out << *B++; + if (B != elements.end()) Out << ","; + } + for (auto B = user_counter_names_.begin(); B != user_counter_names_.end();) { + Out << ",\"" << *B++ << "\""; + } + Out << "\n"; + + printed_header_ = true; + } else { + // check that all the current counters are saved in the name set + for (const auto& run : reports) { + for (const auto& cnt : run.counters) { + CHECK(user_counter_names_.find(cnt.first) != user_counter_names_.end()) + << "All counters must be present in each run. " + << "Counter named \"" << cnt.first + << "\" was not in a run after being added to the header"; + } + } + } + + // print results for each run + for (const auto& run : reports) { + PrintRunData(run); + } + +} + +void CSVReporter::PrintRunData(const Run & run) { + std::ostream& Out = GetOutputStream(); + + // Field with embedded double-quote characters must be doubled and the field + // delimited with double-quotes. + std::string name = run.benchmark_name; + ReplaceAll(&name, "\"", "\"\""); + Out << '"' << name << "\","; + if (run.error_occurred) { + Out << std::string(elements.size() - 3, ','); + Out << "true,"; + std::string msg = run.error_message; + ReplaceAll(&msg, "\"", "\"\""); + Out << '"' << msg << "\"\n"; + return; + } + + // Do not print iteration on bigO and RMS report + if (!run.report_big_o && !run.report_rms) { + Out << run.iterations; + } + Out << ","; + + Out << run.GetAdjustedRealTime() << ","; + Out << run.GetAdjustedCPUTime() << ","; + + // Do not print timeLabel on bigO and RMS report + if (run.report_big_o) { + Out << GetBigOString(run.complexity); + } else if (!run.report_rms) { + Out << GetTimeUnitString(run.time_unit); + } + Out << ","; + + if (run.bytes_per_second > 0.0) { + Out << run.bytes_per_second; + } + Out << ","; + if (run.items_per_second > 0.0) { + Out << run.items_per_second; + } + Out << ","; + if (!run.report_label.empty()) { + // Field with embedded double-quote characters must be doubled and the field + // delimited with double-quotes. + std::string label = run.report_label; + ReplaceAll(&label, "\"", "\"\""); + Out << "\"" << label << "\""; + } + Out << ",,"; // for error_occurred and error_message + + // Print user counters + for (const auto &ucn : user_counter_names_) { + auto it = run.counters.find(ucn); + if(it == run.counters.end()) { + Out << ","; + } else { + Out << "," << it->second; + } + } + Out << '\n'; +} + +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/cycleclock.h b/benchmarks/thirdparty/benchmark/src/cycleclock.h new file mode 100644 index 00000000..4251fe4c --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/cycleclock.h @@ -0,0 +1,172 @@ +// ---------------------------------------------------------------------- +// CycleClock +// A CycleClock tells you the current time in Cycles. The "time" +// is actually time since power-on. This is like time() but doesn't +// involve a system call and is much more precise. +// +// NOTE: Not all cpu/platform/kernel combinations guarantee that this +// clock increments at a constant rate or is synchronized across all logical +// cpus in a system. +// +// If you need the above guarantees, please consider using a different +// API. There are efforts to provide an interface which provides a millisecond +// granularity and implemented as a memory read. A memory read is generally +// cheaper than the CycleClock for many architectures. +// +// Also, in some out of order CPU implementations, the CycleClock is not +// serializing. So if you're trying to count at cycles granularity, your +// data might be inaccurate due to out of order instruction execution. +// ---------------------------------------------------------------------- + +#ifndef BENCHMARK_CYCLECLOCK_H_ +#define BENCHMARK_CYCLECLOCK_H_ + +#include + +#include "benchmark/benchmark.h" +#include "internal_macros.h" + +#if defined(BENCHMARK_OS_MACOSX) +#include +#endif +// For MSVC, we want to use '_asm rdtsc' when possible (since it works +// with even ancient MSVC compilers), and when not possible the +// __rdtsc intrinsic, declared in . Unfortunately, in some +// environments, and have conflicting +// declarations of some other intrinsics, breaking compilation. +// Therefore, we simply declare __rdtsc ourselves. See also +// http://connect.microsoft.com/VisualStudio/feedback/details/262047 +#if defined(COMPILER_MSVC) && !defined(_M_IX86) +extern "C" uint64_t __rdtsc(); +#pragma intrinsic(__rdtsc) +#endif + +#ifndef BENCHMARK_OS_WINDOWS +#include +#include +#endif + +#ifdef BENCHMARK_OS_EMSCRIPTEN +#include +#endif + +namespace benchmark { +// NOTE: only i386 and x86_64 have been well tested. +// PPC, sparc, alpha, and ia64 are based on +// http://peter.kuscsik.com/wordpress/?p=14 +// with modifications by m3b. See also +// https://setisvn.ssl.berkeley.edu/svn/lib/fftw-3.0.1/kernel/cycle.h +namespace cycleclock { +// This should return the number of cycles since power-on. Thread-safe. +inline BENCHMARK_ALWAYS_INLINE int64_t Now() { +#if defined(BENCHMARK_OS_MACOSX) + // this goes at the top because we need ALL Macs, regardless of + // architecture, to return the number of "mach time units" that + // have passed since startup. See sysinfo.cc where + // InitializeSystemInfo() sets the supposed cpu clock frequency of + // macs to the number of mach time units per second, not actual + // CPU clock frequency (which can change in the face of CPU + // frequency scaling). Also note that when the Mac sleeps, this + // counter pauses; it does not continue counting, nor does it + // reset to zero. + return mach_absolute_time(); +#elif defined(BENCHMARK_OS_EMSCRIPTEN) + // this goes above x86-specific code because old versions of Emscripten + // define __x86_64__, although they have nothing to do with it. + return static_cast(emscripten_get_now() * 1e+6); +#elif defined(__i386__) + int64_t ret; + __asm__ volatile("rdtsc" : "=A"(ret)); + return ret; +#elif defined(__x86_64__) || defined(__amd64__) + uint64_t low, high; + __asm__ volatile("rdtsc" : "=a"(low), "=d"(high)); + return (high << 32) | low; +#elif defined(__powerpc__) || defined(__ppc__) + // This returns a time-base, which is not always precisely a cycle-count. + int64_t tbl, tbu0, tbu1; + asm("mftbu %0" : "=r"(tbu0)); + asm("mftb %0" : "=r"(tbl)); + asm("mftbu %0" : "=r"(tbu1)); + tbl &= -static_cast(tbu0 == tbu1); + // high 32 bits in tbu1; low 32 bits in tbl (tbu0 is garbage) + return (tbu1 << 32) | tbl; +#elif defined(__sparc__) + int64_t tick; + asm(".byte 0x83, 0x41, 0x00, 0x00"); + asm("mov %%g1, %0" : "=r"(tick)); + return tick; +#elif defined(__ia64__) + int64_t itc; + asm("mov %0 = ar.itc" : "=r"(itc)); + return itc; +#elif defined(COMPILER_MSVC) && defined(_M_IX86) + // Older MSVC compilers (like 7.x) don't seem to support the + // __rdtsc intrinsic properly, so I prefer to use _asm instead + // when I know it will work. Otherwise, I'll use __rdtsc and hope + // the code is being compiled with a non-ancient compiler. + _asm rdtsc +#elif defined(COMPILER_MSVC) + return __rdtsc(); +#elif defined(BENCHMARK_OS_NACL) + // Native Client validator on x86/x86-64 allows RDTSC instructions, + // and this case is handled above. Native Client validator on ARM + // rejects MRC instructions (used in the ARM-specific sequence below), + // so we handle it here. Portable Native Client compiles to + // architecture-agnostic bytecode, which doesn't provide any + // cycle counter access mnemonics. + + // Native Client does not provide any API to access cycle counter. + // Use clock_gettime(CLOCK_MONOTONIC, ...) instead of gettimeofday + // because is provides nanosecond resolution (which is noticable at + // least for PNaCl modules running on x86 Mac & Linux). + // Initialize to always return 0 if clock_gettime fails. + struct timespec ts = { 0, 0 }; + clock_gettime(CLOCK_MONOTONIC, &ts); + return static_cast(ts.tv_sec) * 1000000000 + ts.tv_nsec; +#elif defined(__aarch64__) + // System timer of ARMv8 runs at a different frequency than the CPU's. + // The frequency is fixed, typically in the range 1-50MHz. It can be + // read at CNTFRQ special register. We assume the OS has set up + // the virtual timer properly. + int64_t virtual_timer_value; + asm volatile("mrs %0, cntvct_el0" : "=r"(virtual_timer_value)); + return virtual_timer_value; +#elif defined(__ARM_ARCH) + // V6 is the earliest arch that has a standard cyclecount + // Native Client validator doesn't allow MRC instructions. +#if (__ARM_ARCH >= 6) + uint32_t pmccntr; + uint32_t pmuseren; + uint32_t pmcntenset; + // Read the user mode perf monitor counter access permissions. + asm volatile("mrc p15, 0, %0, c9, c14, 0" : "=r"(pmuseren)); + if (pmuseren & 1) { // Allows reading perfmon counters for user mode code. + asm volatile("mrc p15, 0, %0, c9, c12, 1" : "=r"(pmcntenset)); + if (pmcntenset & 0x80000000ul) { // Is it counting? + asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r"(pmccntr)); + // The counter is set up to count every 64th cycle + return static_cast(pmccntr) * 64; // Should optimize to << 6 + } + } +#endif + struct timeval tv; + gettimeofday(&tv, nullptr); + return static_cast(tv.tv_sec) * 1000000 + tv.tv_usec; +#elif defined(__mips__) + // mips apparently only allows rdtsc for superusers, so we fall + // back to gettimeofday. It's possible clock_gettime would be better. + struct timeval tv; + gettimeofday(&tv, nullptr); + return static_cast(tv.tv_sec) * 1000000 + tv.tv_usec; +#else +// The soft failover to a generic implementation is automatic only for ARM. +// For other platforms the developer is expected to make an attempt to create +// a fast implementation and use generic version if nothing better is available. +#error You need to define CycleTimer for your OS and CPU +#endif +} +} // end namespace cycleclock +} // end namespace benchmark + +#endif // BENCHMARK_CYCLECLOCK_H_ diff --git a/benchmarks/thirdparty/benchmark/src/internal_macros.h b/benchmarks/thirdparty/benchmark/src/internal_macros.h new file mode 100644 index 00000000..c34f5716 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/internal_macros.h @@ -0,0 +1,82 @@ +#ifndef BENCHMARK_INTERNAL_MACROS_H_ +#define BENCHMARK_INTERNAL_MACROS_H_ + +#include "benchmark/benchmark.h" + +#ifndef __has_feature +#define __has_feature(x) 0 +#endif +#ifndef __has_builtin +#define __has_builtin(x) 0 +#endif + +#if defined(__clang__) + #if !defined(COMPILER_CLANG) + #define COMPILER_CLANG + #endif +#elif defined(_MSC_VER) + #if !defined(COMPILER_MSVC) + #define COMPILER_MSVC + #endif +#elif defined(__GNUC__) + #if !defined(COMPILER_GCC) + #define COMPILER_GCC + #endif +#endif + +#if __has_feature(cxx_attributes) + #define BENCHMARK_NORETURN [[noreturn]] +#elif defined(__GNUC__) + #define BENCHMARK_NORETURN __attribute__((noreturn)) +#elif defined(COMPILER_MSVC) + #define BENCHMARK_NORETURN __declspec(noreturn) +#else + #define BENCHMARK_NORETURN +#endif + +#if defined(__CYGWIN__) + #define BENCHMARK_OS_CYGWIN 1 +#elif defined(_WIN32) + #define BENCHMARK_OS_WINDOWS 1 +#elif defined(__APPLE__) + #include "TargetConditionals.h" + #if defined(TARGET_OS_MAC) + #define BENCHMARK_OS_MACOSX 1 + #if defined(TARGET_OS_IPHONE) + #define BENCHMARK_OS_IOS 1 + #endif + #endif +#elif defined(__FreeBSD__) + #define BENCHMARK_OS_FREEBSD 1 +#elif defined(__NetBSD__) + #define BENCHMARK_OS_NETBSD 1 +#elif defined(__linux__) + #define BENCHMARK_OS_LINUX 1 +#elif defined(__native_client__) + #define BENCHMARK_OS_NACL 1 +#elif defined(EMSCRIPTEN) + #define BENCHMARK_OS_EMSCRIPTEN 1 +#elif defined(__rtems__) + #define BENCHMARK_OS_RTEMS 1 +#endif + +#if !__has_feature(cxx_exceptions) && !defined(__cpp_exceptions) \ + && !defined(__EXCEPTIONS) + #define BENCHMARK_HAS_NO_EXCEPTIONS +#endif + +#if defined(COMPILER_CLANG) || defined(COMPILER_GCC) + #define BENCHMARK_MAYBE_UNUSED __attribute__((unused)) +#else + #define BENCHMARK_MAYBE_UNUSED +#endif + +#if defined(COMPILER_GCC) || __has_builtin(__builtin_unreachable) + #define BENCHMARK_UNREACHABLE() __builtin_unreachable() +#elif defined(COMPILER_MSVC) + #define BENCHMARK_UNREACHABLE() __assume(false) +#else + #define BENCHMARK_UNREACHABLE() ((void)0) +#endif + +#endif // BENCHMARK_INTERNAL_MACROS_H_ diff --git a/benchmarks/thirdparty/benchmark/src/json_reporter.cc b/benchmarks/thirdparty/benchmark/src/json_reporter.cc new file mode 100644 index 00000000..b5ae302a --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/json_reporter.cc @@ -0,0 +1,201 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "benchmark/benchmark.h" +#include "complexity.h" + +#include +#include +#include +#include +#include +#include +#include // for setprecision +#include + +#include "string_util.h" +#include "timers.h" + +namespace benchmark { + +namespace { + +std::string FormatKV(std::string const& key, std::string const& value) { + return StringPrintF("\"%s\": \"%s\"", key.c_str(), value.c_str()); +} + +std::string FormatKV(std::string const& key, const char* value) { + return StringPrintF("\"%s\": \"%s\"", key.c_str(), value); +} + +std::string FormatKV(std::string const& key, bool value) { + return StringPrintF("\"%s\": %s", key.c_str(), value ? "true" : "false"); +} + +std::string FormatKV(std::string const& key, int64_t value) { + std::stringstream ss; + ss << '"' << key << "\": " << value; + return ss.str(); +} + +std::string FormatKV(std::string const& key, double value) { + std::stringstream ss; + ss << '"' << key << "\": "; + + const auto max_digits10 = std::numeric_limits::max_digits10; + const auto max_fractional_digits10 = max_digits10 - 1; + + ss << std::scientific << std::setprecision(max_fractional_digits10) << value; + return ss.str(); +} + +int64_t RoundDouble(double v) { return static_cast(v + 0.5); } + +} // end namespace + +bool JSONReporter::ReportContext(const Context& context) { + std::ostream& out = GetOutputStream(); + + out << "{\n"; + std::string inner_indent(2, ' '); + + // Open context block and print context information. + out << inner_indent << "\"context\": {\n"; + std::string indent(4, ' '); + + std::string walltime_value = LocalDateTimeString(); + out << indent << FormatKV("date", walltime_value) << ",\n"; + + CPUInfo const& info = context.cpu_info; + out << indent << FormatKV("num_cpus", static_cast(info.num_cpus)) + << ",\n"; + out << indent + << FormatKV("mhz_per_cpu", + RoundDouble(info.cycles_per_second / 1000000.0)) + << ",\n"; + out << indent << FormatKV("cpu_scaling_enabled", info.scaling_enabled) + << ",\n"; + + out << indent << "\"caches\": [\n"; + indent = std::string(6, ' '); + std::string cache_indent(8, ' '); + for (size_t i = 0; i < info.caches.size(); ++i) { + auto& CI = info.caches[i]; + out << indent << "{\n"; + out << cache_indent << FormatKV("type", CI.type) << ",\n"; + out << cache_indent << FormatKV("level", static_cast(CI.level)) + << ",\n"; + out << cache_indent + << FormatKV("size", static_cast(CI.size) * 1000u) << ",\n"; + out << cache_indent + << FormatKV("num_sharing", static_cast(CI.num_sharing)) + << "\n"; + out << indent << "}"; + if (i != info.caches.size() - 1) out << ","; + out << "\n"; + } + indent = std::string(4, ' '); + out << indent << "],\n"; + +#if defined(NDEBUG) + const char build_type[] = "release"; +#else + const char build_type[] = "debug"; +#endif + out << indent << FormatKV("library_build_type", build_type) << "\n"; + // Close context block and open the list of benchmarks. + out << inner_indent << "},\n"; + out << inner_indent << "\"benchmarks\": [\n"; + return true; +} + +void JSONReporter::ReportRuns(std::vector const& reports) { + if (reports.empty()) { + return; + } + std::string indent(4, ' '); + std::ostream& out = GetOutputStream(); + if (!first_report_) { + out << ",\n"; + } + first_report_ = false; + + for (auto it = reports.begin(); it != reports.end(); ++it) { + out << indent << "{\n"; + PrintRunData(*it); + out << indent << '}'; + auto it_cp = it; + if (++it_cp != reports.end()) { + out << ",\n"; + } + } +} + +void JSONReporter::Finalize() { + // Close the list of benchmarks and the top level object. + GetOutputStream() << "\n ]\n}\n"; +} + +void JSONReporter::PrintRunData(Run const& run) { + std::string indent(6, ' '); + std::ostream& out = GetOutputStream(); + out << indent << FormatKV("name", run.benchmark_name) << ",\n"; + if (run.error_occurred) { + out << indent << FormatKV("error_occurred", run.error_occurred) << ",\n"; + out << indent << FormatKV("error_message", run.error_message) << ",\n"; + } + if (!run.report_big_o && !run.report_rms) { + out << indent << FormatKV("iterations", run.iterations) << ",\n"; + out << indent + << FormatKV("real_time", run.GetAdjustedRealTime()) + << ",\n"; + out << indent + << FormatKV("cpu_time", run.GetAdjustedCPUTime()); + out << ",\n" + << indent << FormatKV("time_unit", GetTimeUnitString(run.time_unit)); + } else if (run.report_big_o) { + out << indent + << FormatKV("cpu_coefficient", run.GetAdjustedCPUTime()) + << ",\n"; + out << indent + << FormatKV("real_coefficient", run.GetAdjustedRealTime()) + << ",\n"; + out << indent << FormatKV("big_o", GetBigOString(run.complexity)) << ",\n"; + out << indent << FormatKV("time_unit", GetTimeUnitString(run.time_unit)); + } else if (run.report_rms) { + out << indent + << FormatKV("rms", run.GetAdjustedCPUTime()); + } + if (run.bytes_per_second > 0.0) { + out << ",\n" + << indent + << FormatKV("bytes_per_second", run.bytes_per_second); + } + if (run.items_per_second > 0.0) { + out << ",\n" + << indent + << FormatKV("items_per_second", run.items_per_second); + } + for(auto &c : run.counters) { + out << ",\n" + << indent + << FormatKV(c.first, c.second); + } + if (!run.report_label.empty()) { + out << ",\n" << indent << FormatKV("label", run.report_label); + } + out << '\n'; +} + +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/log.h b/benchmarks/thirdparty/benchmark/src/log.h new file mode 100644 index 00000000..d06e1031 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/log.h @@ -0,0 +1,73 @@ +#ifndef BENCHMARK_LOG_H_ +#define BENCHMARK_LOG_H_ + +#include +#include + +#include "benchmark/benchmark.h" + +namespace benchmark { +namespace internal { + +typedef std::basic_ostream&(EndLType)(std::basic_ostream&); + +class LogType { + friend LogType& GetNullLogInstance(); + friend LogType& GetErrorLogInstance(); + + // FIXME: Add locking to output. + template + friend LogType& operator<<(LogType&, Tp const&); + friend LogType& operator<<(LogType&, EndLType*); + + private: + LogType(std::ostream* out) : out_(out) {} + std::ostream* out_; + BENCHMARK_DISALLOW_COPY_AND_ASSIGN(LogType); +}; + +template +LogType& operator<<(LogType& log, Tp const& value) { + if (log.out_) { + *log.out_ << value; + } + return log; +} + +inline LogType& operator<<(LogType& log, EndLType* m) { + if (log.out_) { + *log.out_ << m; + } + return log; +} + +inline int& LogLevel() { + static int log_level = 0; + return log_level; +} + +inline LogType& GetNullLogInstance() { + static LogType log(nullptr); + return log; +} + +inline LogType& GetErrorLogInstance() { + static LogType log(&std::clog); + return log; +} + +inline LogType& GetLogInstanceForLevel(int level) { + if (level <= LogLevel()) { + return GetErrorLogInstance(); + } + return GetNullLogInstance(); +} + +} // end namespace internal +} // end namespace benchmark + +#define VLOG(x) \ + (::benchmark::internal::GetLogInstanceForLevel(x) << "-- LOG(" << x << "):" \ + " ") + +#endif diff --git a/benchmarks/thirdparty/benchmark/src/mutex.h b/benchmarks/thirdparty/benchmark/src/mutex.h new file mode 100644 index 00000000..5f461d05 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/mutex.h @@ -0,0 +1,155 @@ +#ifndef BENCHMARK_MUTEX_H_ +#define BENCHMARK_MUTEX_H_ + +#include +#include + +#include "check.h" + +// Enable thread safety attributes only with clang. +// The attributes can be safely erased when compiling with other compilers. +#if defined(HAVE_THREAD_SAFETY_ATTRIBUTES) +#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x)) +#else +#define THREAD_ANNOTATION_ATTRIBUTE__(x) // no-op +#endif + +#define CAPABILITY(x) THREAD_ANNOTATION_ATTRIBUTE__(capability(x)) + +#define SCOPED_CAPABILITY THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable) + +#define GUARDED_BY(x) THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x)) + +#define PT_GUARDED_BY(x) THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x)) + +#define ACQUIRED_BEFORE(...) \ + THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(__VA_ARGS__)) + +#define ACQUIRED_AFTER(...) \ + THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(__VA_ARGS__)) + +#define REQUIRES(...) \ + THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__)) + +#define REQUIRES_SHARED(...) \ + THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(__VA_ARGS__)) + +#define ACQUIRE(...) \ + THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(__VA_ARGS__)) + +#define ACQUIRE_SHARED(...) \ + THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(__VA_ARGS__)) + +#define RELEASE(...) \ + THREAD_ANNOTATION_ATTRIBUTE__(release_capability(__VA_ARGS__)) + +#define RELEASE_SHARED(...) \ + THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(__VA_ARGS__)) + +#define TRY_ACQUIRE(...) \ + THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(__VA_ARGS__)) + +#define TRY_ACQUIRE_SHARED(...) \ + THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(__VA_ARGS__)) + +#define EXCLUDES(...) THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(__VA_ARGS__)) + +#define ASSERT_CAPABILITY(x) THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x)) + +#define ASSERT_SHARED_CAPABILITY(x) \ + THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x)) + +#define RETURN_CAPABILITY(x) THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x)) + +#define NO_THREAD_SAFETY_ANALYSIS \ + THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis) + +namespace benchmark { + +typedef std::condition_variable Condition; + +// NOTE: Wrappers for std::mutex and std::unique_lock are provided so that +// we can annotate them with thread safety attributes and use the +// -Wthread-safety warning with clang. The standard library types cannot be +// used directly because they do not provided the required annotations. +class CAPABILITY("mutex") Mutex { + public: + Mutex() {} + + void lock() ACQUIRE() { mut_.lock(); } + void unlock() RELEASE() { mut_.unlock(); } + std::mutex& native_handle() { return mut_; } + + private: + std::mutex mut_; +}; + +class SCOPED_CAPABILITY MutexLock { + typedef std::unique_lock MutexLockImp; + + public: + MutexLock(Mutex& m) ACQUIRE(m) : ml_(m.native_handle()) {} + ~MutexLock() RELEASE() {} + MutexLockImp& native_handle() { return ml_; } + + private: + MutexLockImp ml_; +}; + +class Barrier { + public: + Barrier(int num_threads) : running_threads_(num_threads) {} + + // Called by each thread + bool wait() EXCLUDES(lock_) { + bool last_thread = false; + { + MutexLock ml(lock_); + last_thread = createBarrier(ml); + } + if (last_thread) phase_condition_.notify_all(); + return last_thread; + } + + void removeThread() EXCLUDES(lock_) { + MutexLock ml(lock_); + --running_threads_; + if (entered_ != 0) phase_condition_.notify_all(); + } + + private: + Mutex lock_; + Condition phase_condition_; + int running_threads_; + + // State for barrier management + int phase_number_ = 0; + int entered_ = 0; // Number of threads that have entered this barrier + + // Enter the barrier and wait until all other threads have also + // entered the barrier. Returns iff this is the last thread to + // enter the barrier. + bool createBarrier(MutexLock& ml) REQUIRES(lock_) { + CHECK_LT(entered_, running_threads_); + entered_++; + if (entered_ < running_threads_) { + // Wait for all threads to enter + int phase_number_cp = phase_number_; + auto cb = [this, phase_number_cp]() { + return this->phase_number_ > phase_number_cp || + entered_ == running_threads_; // A thread has aborted in error + }; + phase_condition_.wait(ml.native_handle(), cb); + if (phase_number_ > phase_number_cp) return false; + // else (running_threads_ == entered_) and we are the last thread. + } + // Last thread has reached the barrier + phase_number_++; + entered_ = 0; + return true; + } +}; + +} // end namespace benchmark + +#endif // BENCHMARK_MUTEX_H_ diff --git a/benchmarks/thirdparty/benchmark/src/re.h b/benchmarks/thirdparty/benchmark/src/re.h new file mode 100644 index 00000000..01e97365 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/re.h @@ -0,0 +1,140 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef BENCHMARK_RE_H_ +#define BENCHMARK_RE_H_ + +#include "internal_macros.h" + +// Prefer C regex libraries when compiling w/o exceptions so that we can +// correctly report errors. +#if defined(BENCHMARK_HAS_NO_EXCEPTIONS) && defined(HAVE_STD_REGEX) && \ + (defined(HAVE_GNU_POSIX_REGEX) || defined(HAVE_POSIX_REGEX)) +#undef HAVE_STD_REGEX +#endif + +#if defined(HAVE_STD_REGEX) +#include +#elif defined(HAVE_GNU_POSIX_REGEX) +#include +#elif defined(HAVE_POSIX_REGEX) +#include +#else +#error No regular expression backend was found! +#endif +#include + +#include "check.h" + +namespace benchmark { + +// A wrapper around the POSIX regular expression API that provides automatic +// cleanup +class Regex { + public: + Regex() : init_(false) {} + + ~Regex(); + + // Compile a regular expression matcher from spec. Returns true on success. + // + // On failure (and if error is not nullptr), error is populated with a human + // readable error message if an error occurs. + bool Init(const std::string& spec, std::string* error); + + // Returns whether str matches the compiled regular expression. + bool Match(const std::string& str); + + private: + bool init_; +// Underlying regular expression object +#if defined(HAVE_STD_REGEX) + std::regex re_; +#elif defined(HAVE_POSIX_REGEX) || defined(HAVE_GNU_POSIX_REGEX) + regex_t re_; +#else +#error No regular expression backend implementation available +#endif +}; + +#if defined(HAVE_STD_REGEX) + +inline bool Regex::Init(const std::string& spec, std::string* error) { +#ifdef BENCHMARK_HAS_NO_EXCEPTIONS + ((void)error); // suppress unused warning +#else + try { +#endif + re_ = std::regex(spec, std::regex_constants::extended); + init_ = true; +#ifndef BENCHMARK_HAS_NO_EXCEPTIONS + } catch (const std::regex_error& e) { + if (error) { + *error = e.what(); + } + } +#endif + return init_; +} + +inline Regex::~Regex() {} + +inline bool Regex::Match(const std::string& str) { + if (!init_) { + return false; + } + return std::regex_search(str, re_); +} + +#else +inline bool Regex::Init(const std::string& spec, std::string* error) { + int ec = regcomp(&re_, spec.c_str(), REG_EXTENDED | REG_NOSUB); + if (ec != 0) { + if (error) { + size_t needed = regerror(ec, &re_, nullptr, 0); + char* errbuf = new char[needed]; + regerror(ec, &re_, errbuf, needed); + + // regerror returns the number of bytes necessary to null terminate + // the string, so we move that when assigning to error. + CHECK_NE(needed, 0); + error->assign(errbuf, needed - 1); + + delete[] errbuf; + } + + return false; + } + + init_ = true; + return true; +} + +inline Regex::~Regex() { + if (init_) { + regfree(&re_); + } +} + +inline bool Regex::Match(const std::string& str) { + if (!init_) { + return false; + } + return regexec(&re_, str.c_str(), 0, nullptr, 0) == 0; +} +#endif + +} // end namespace benchmark + +#endif // BENCHMARK_RE_H_ diff --git a/benchmarks/thirdparty/benchmark/src/reporter.cc b/benchmarks/thirdparty/benchmark/src/reporter.cc new file mode 100644 index 00000000..5d2fa05a --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/reporter.cc @@ -0,0 +1,81 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "benchmark/benchmark.h" +#include "timers.h" + +#include + +#include +#include +#include + +#include "check.h" + +namespace benchmark { + +BenchmarkReporter::BenchmarkReporter() + : output_stream_(&std::cout), error_stream_(&std::cerr) {} + +BenchmarkReporter::~BenchmarkReporter() {} + +void BenchmarkReporter::PrintBasicContext(std::ostream *out, + Context const &context) { + CHECK(out) << "cannot be null"; + auto &Out = *out; + + Out << LocalDateTimeString() << "\n"; + + const CPUInfo &info = context.cpu_info; + Out << "Run on (" << info.num_cpus << " X " + << (info.cycles_per_second / 1000000.0) << " MHz CPU " + << ((info.num_cpus > 1) ? "s" : "") << ")\n"; + if (info.caches.size() != 0) { + Out << "CPU Caches:\n"; + for (auto &CInfo : info.caches) { + Out << " L" << CInfo.level << " " << CInfo.type << " " + << (CInfo.size / 1000) << "K"; + if (CInfo.num_sharing != 0) + Out << " (x" << (info.num_cpus / CInfo.num_sharing) << ")"; + Out << "\n"; + } + } + + if (info.scaling_enabled) { + Out << "***WARNING*** CPU scaling is enabled, the benchmark " + "real time measurements may be noisy and will incur extra " + "overhead.\n"; + } + +#ifndef NDEBUG + Out << "***WARNING*** Library was built as DEBUG. Timings may be " + "affected.\n"; +#endif +} + +BenchmarkReporter::Context::Context() : cpu_info(CPUInfo::Get()) {} + +double BenchmarkReporter::Run::GetAdjustedRealTime() const { + double new_time = real_accumulated_time * GetTimeUnitMultiplier(time_unit); + if (iterations != 0) new_time /= static_cast(iterations); + return new_time; +} + +double BenchmarkReporter::Run::GetAdjustedCPUTime() const { + double new_time = cpu_accumulated_time * GetTimeUnitMultiplier(time_unit); + if (iterations != 0) new_time /= static_cast(iterations); + return new_time; +} + +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/sleep.cc b/benchmarks/thirdparty/benchmark/src/sleep.cc new file mode 100644 index 00000000..54aa04a4 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/sleep.cc @@ -0,0 +1,51 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "sleep.h" + +#include +#include +#include + +#include "internal_macros.h" + +#ifdef BENCHMARK_OS_WINDOWS +#include +#endif + +namespace benchmark { +#ifdef BENCHMARK_OS_WINDOWS +// Window's Sleep takes milliseconds argument. +void SleepForMilliseconds(int milliseconds) { Sleep(milliseconds); } +void SleepForSeconds(double seconds) { + SleepForMilliseconds(static_cast(kNumMillisPerSecond * seconds)); +} +#else // BENCHMARK_OS_WINDOWS +void SleepForMicroseconds(int microseconds) { + struct timespec sleep_time; + sleep_time.tv_sec = microseconds / kNumMicrosPerSecond; + sleep_time.tv_nsec = (microseconds % kNumMicrosPerSecond) * kNumNanosPerMicro; + while (nanosleep(&sleep_time, &sleep_time) != 0 && errno == EINTR) + ; // Ignore signals and wait for the full interval to elapse. +} + +void SleepForMilliseconds(int milliseconds) { + SleepForMicroseconds(milliseconds * kNumMicrosPerMilli); +} + +void SleepForSeconds(double seconds) { + SleepForMicroseconds(static_cast(seconds * kNumMicrosPerSecond)); +} +#endif // BENCHMARK_OS_WINDOWS +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/sleep.h b/benchmarks/thirdparty/benchmark/src/sleep.h new file mode 100644 index 00000000..f98551af --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/sleep.h @@ -0,0 +1,15 @@ +#ifndef BENCHMARK_SLEEP_H_ +#define BENCHMARK_SLEEP_H_ + +namespace benchmark { +const int kNumMillisPerSecond = 1000; +const int kNumMicrosPerMilli = 1000; +const int kNumMicrosPerSecond = kNumMillisPerSecond * 1000; +const int kNumNanosPerMicro = 1000; +const int kNumNanosPerSecond = kNumNanosPerMicro * kNumMicrosPerSecond; + +void SleepForMilliseconds(int milliseconds); +void SleepForSeconds(double seconds); +} // end namespace benchmark + +#endif // BENCHMARK_SLEEP_H_ diff --git a/benchmarks/thirdparty/benchmark/src/statistics.cc b/benchmarks/thirdparty/benchmark/src/statistics.cc new file mode 100644 index 00000000..5932ad43 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/statistics.cc @@ -0,0 +1,175 @@ +// Copyright 2016 Ismael Jimenez Martinez. All rights reserved. +// Copyright 2017 Roman Lebedev. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "benchmark/benchmark.h" + +#include +#include +#include +#include +#include +#include "check.h" +#include "statistics.h" + +namespace benchmark { + +auto StatisticsSum = [](const std::vector& v) { + return std::accumulate(v.begin(), v.end(), 0.0); +}; + +double StatisticsMean(const std::vector& v) { + if (v.size() == 0) return 0.0; + return StatisticsSum(v) * (1.0 / v.size()); +} + +double StatisticsMedian(const std::vector& v) { + if (v.size() < 3) return StatisticsMean(v); + std::vector partial; + // we need roundDown(count/2)+1 slots + partial.resize(1 + (v.size() / 2)); + std::partial_sort_copy(v.begin(), v.end(), partial.begin(), partial.end()); + // did we have odd number of samples? + // if yes, then the last element of partially-sorted vector is the median + // it no, then the average of the last two elements is the median + if(v.size() % 2 == 1) + return partial.back(); + return (partial[partial.size() - 2] + partial[partial.size() - 1]) / 2.0; +} + +// Return the sum of the squares of this sample set +auto SumSquares = [](const std::vector& v) { + return std::inner_product(v.begin(), v.end(), v.begin(), 0.0); +}; + +auto Sqr = [](const double dat) { return dat * dat; }; +auto Sqrt = [](const double dat) { + // Avoid NaN due to imprecision in the calculations + if (dat < 0.0) return 0.0; + return std::sqrt(dat); +}; + +double StatisticsStdDev(const std::vector& v) { + const auto mean = StatisticsMean(v); + if (v.size() == 0) return mean; + + // Sample standard deviation is undefined for n = 1 + if (v.size() == 1) + return 0.0; + + const double avg_squares = SumSquares(v) * (1.0 / v.size()); + return Sqrt(v.size() / (v.size() - 1.0) * (avg_squares - Sqr(mean))); +} + +std::vector ComputeStats( + const std::vector& reports) { + typedef BenchmarkReporter::Run Run; + std::vector results; + + auto error_count = + std::count_if(reports.begin(), reports.end(), + [](Run const& run) { return run.error_occurred; }); + + if (reports.size() - error_count < 2) { + // We don't report aggregated data if there was a single run. + return results; + } + + // Accumulators. + std::vector real_accumulated_time_stat; + std::vector cpu_accumulated_time_stat; + std::vector bytes_per_second_stat; + std::vector items_per_second_stat; + + real_accumulated_time_stat.reserve(reports.size()); + cpu_accumulated_time_stat.reserve(reports.size()); + bytes_per_second_stat.reserve(reports.size()); + items_per_second_stat.reserve(reports.size()); + + // All repetitions should be run with the same number of iterations so we + // can take this information from the first benchmark. + int64_t const run_iterations = reports.front().iterations; + // create stats for user counters + struct CounterStat { + Counter c; + std::vector s; + }; + std::map< std::string, CounterStat > counter_stats; + for(Run const& r : reports) { + for(auto const& cnt : r.counters) { + auto it = counter_stats.find(cnt.first); + if(it == counter_stats.end()) { + counter_stats.insert({cnt.first, {cnt.second, std::vector{}}}); + it = counter_stats.find(cnt.first); + it->second.s.reserve(reports.size()); + } else { + CHECK_EQ(counter_stats[cnt.first].c.flags, cnt.second.flags); + } + } + } + + // Populate the accumulators. + for (Run const& run : reports) { + CHECK_EQ(reports[0].benchmark_name, run.benchmark_name); + CHECK_EQ(run_iterations, run.iterations); + if (run.error_occurred) continue; + real_accumulated_time_stat.emplace_back(run.real_accumulated_time); + cpu_accumulated_time_stat.emplace_back(run.cpu_accumulated_time); + items_per_second_stat.emplace_back(run.items_per_second); + bytes_per_second_stat.emplace_back(run.bytes_per_second); + // user counters + for(auto const& cnt : run.counters) { + auto it = counter_stats.find(cnt.first); + CHECK_NE(it, counter_stats.end()); + it->second.s.emplace_back(cnt.second); + } + } + + // Only add label if it is same for all runs + std::string report_label = reports[0].report_label; + for (std::size_t i = 1; i < reports.size(); i++) { + if (reports[i].report_label != report_label) { + report_label = ""; + break; + } + } + + for(const auto& Stat : *reports[0].statistics) { + // Get the data from the accumulator to BenchmarkReporter::Run's. + Run data; + data.benchmark_name = reports[0].benchmark_name + "_" + Stat.name_; + data.report_label = report_label; + data.iterations = run_iterations; + + data.real_accumulated_time = Stat.compute_(real_accumulated_time_stat); + data.cpu_accumulated_time = Stat.compute_(cpu_accumulated_time_stat); + data.bytes_per_second = Stat.compute_(bytes_per_second_stat); + data.items_per_second = Stat.compute_(items_per_second_stat); + + data.time_unit = reports[0].time_unit; + + // user counters + for(auto const& kv : counter_stats) { + const auto uc_stat = Stat.compute_(kv.second.s); + auto c = Counter(uc_stat, counter_stats[kv.first].c.flags); + data.counters[kv.first] = c; + } + + results.push_back(data); + } + + return results; +} + +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/statistics.h b/benchmarks/thirdparty/benchmark/src/statistics.h new file mode 100644 index 00000000..7eccc855 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/statistics.h @@ -0,0 +1,37 @@ +// Copyright 2016 Ismael Jimenez Martinez. All rights reserved. +// Copyright 2017 Roman Lebedev. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef STATISTICS_H_ +#define STATISTICS_H_ + +#include + +#include "benchmark/benchmark.h" + +namespace benchmark { + +// Return a vector containing the mean, median and standard devation information +// (and any user-specified info) for the specified list of reports. If 'reports' +// contains less than two non-errored runs an empty vector is returned +std::vector ComputeStats( + const std::vector& reports); + +double StatisticsMean(const std::vector& v); +double StatisticsMedian(const std::vector& v); +double StatisticsStdDev(const std::vector& v); + +} // end namespace benchmark + +#endif // STATISTICS_H_ diff --git a/benchmarks/thirdparty/benchmark/src/string_util.cc b/benchmarks/thirdparty/benchmark/src/string_util.cc new file mode 100644 index 00000000..29edb2a4 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/string_util.cc @@ -0,0 +1,172 @@ +#include "string_util.h" + +#include +#include +#include +#include +#include +#include + +#include "arraysize.h" + +namespace benchmark { +namespace { + +// kilo, Mega, Giga, Tera, Peta, Exa, Zetta, Yotta. +const char kBigSIUnits[] = "kMGTPEZY"; +// Kibi, Mebi, Gibi, Tebi, Pebi, Exbi, Zebi, Yobi. +const char kBigIECUnits[] = "KMGTPEZY"; +// milli, micro, nano, pico, femto, atto, zepto, yocto. +const char kSmallSIUnits[] = "munpfazy"; + +// We require that all three arrays have the same size. +static_assert(arraysize(kBigSIUnits) == arraysize(kBigIECUnits), + "SI and IEC unit arrays must be the same size"); +static_assert(arraysize(kSmallSIUnits) == arraysize(kBigSIUnits), + "Small SI and Big SI unit arrays must be the same size"); + +static const int64_t kUnitsSize = arraysize(kBigSIUnits); + +void ToExponentAndMantissa(double val, double thresh, int precision, + double one_k, std::string* mantissa, + int64_t* exponent) { + std::stringstream mantissa_stream; + + if (val < 0) { + mantissa_stream << "-"; + val = -val; + } + + // Adjust threshold so that it never excludes things which can't be rendered + // in 'precision' digits. + const double adjusted_threshold = + std::max(thresh, 1.0 / std::pow(10.0, precision)); + const double big_threshold = adjusted_threshold * one_k; + const double small_threshold = adjusted_threshold; + // Values in ]simple_threshold,small_threshold[ will be printed as-is + const double simple_threshold = 0.01; + + if (val > big_threshold) { + // Positive powers + double scaled = val; + for (size_t i = 0; i < arraysize(kBigSIUnits); ++i) { + scaled /= one_k; + if (scaled <= big_threshold) { + mantissa_stream << scaled; + *exponent = i + 1; + *mantissa = mantissa_stream.str(); + return; + } + } + mantissa_stream << val; + *exponent = 0; + } else if (val < small_threshold) { + // Negative powers + if (val < simple_threshold) { + double scaled = val; + for (size_t i = 0; i < arraysize(kSmallSIUnits); ++i) { + scaled *= one_k; + if (scaled >= small_threshold) { + mantissa_stream << scaled; + *exponent = -static_cast(i + 1); + *mantissa = mantissa_stream.str(); + return; + } + } + } + mantissa_stream << val; + *exponent = 0; + } else { + mantissa_stream << val; + *exponent = 0; + } + *mantissa = mantissa_stream.str(); +} + +std::string ExponentToPrefix(int64_t exponent, bool iec) { + if (exponent == 0) return ""; + + const int64_t index = (exponent > 0 ? exponent - 1 : -exponent - 1); + if (index >= kUnitsSize) return ""; + + const char* array = + (exponent > 0 ? (iec ? kBigIECUnits : kBigSIUnits) : kSmallSIUnits); + if (iec) + return array[index] + std::string("i"); + else + return std::string(1, array[index]); +} + +std::string ToBinaryStringFullySpecified(double value, double threshold, + int precision, double one_k = 1024.0) { + std::string mantissa; + int64_t exponent; + ToExponentAndMantissa(value, threshold, precision, one_k, &mantissa, + &exponent); + return mantissa + ExponentToPrefix(exponent, false); +} + +} // end namespace + +void AppendHumanReadable(int n, std::string* str) { + std::stringstream ss; + // Round down to the nearest SI prefix. + ss << ToBinaryStringFullySpecified(n, 1.0, 0); + *str += ss.str(); +} + +std::string HumanReadableNumber(double n, double one_k) { + // 1.1 means that figures up to 1.1k should be shown with the next unit down; + // this softens edge effects. + // 1 means that we should show one decimal place of precision. + return ToBinaryStringFullySpecified(n, 1.1, 1, one_k); +} + +std::string StringPrintFImp(const char* msg, va_list args) { + // we might need a second shot at this, so pre-emptivly make a copy + va_list args_cp; + va_copy(args_cp, args); + + // TODO(ericwf): use std::array for first attempt to avoid one memory + // allocation guess what the size might be + std::array local_buff; + std::size_t size = local_buff.size(); + // 2015-10-08: vsnprintf is used instead of snd::vsnprintf due to a limitation + // in the android-ndk + auto ret = vsnprintf(local_buff.data(), size, msg, args_cp); + + va_end(args_cp); + + // handle empty expansion + if (ret == 0) return std::string{}; + if (static_cast(ret) < size) + return std::string(local_buff.data()); + + // we did not provide a long enough buffer on our first attempt. + // add 1 to size to account for null-byte in size cast to prevent overflow + size = static_cast(ret) + 1; + auto buff_ptr = std::unique_ptr(new char[size]); + // 2015-10-08: vsnprintf is used instead of snd::vsnprintf due to a limitation + // in the android-ndk + ret = vsnprintf(buff_ptr.get(), size, msg, args); + return std::string(buff_ptr.get()); +} + +std::string StringPrintF(const char* format, ...) { + va_list args; + va_start(args, format); + std::string tmp = StringPrintFImp(format, args); + va_end(args); + return tmp; +} + +void ReplaceAll(std::string* str, const std::string& from, + const std::string& to) { + std::size_t start = 0; + while ((start = str->find(from, start)) != std::string::npos) { + str->replace(start, from.length(), to); + start += to.length(); + } +} + +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/string_util.h b/benchmarks/thirdparty/benchmark/src/string_util.h new file mode 100644 index 00000000..c3d53bfd --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/string_util.h @@ -0,0 +1,40 @@ +#ifndef BENCHMARK_STRING_UTIL_H_ +#define BENCHMARK_STRING_UTIL_H_ + +#include +#include +#include +#include "internal_macros.h" + +namespace benchmark { + +void AppendHumanReadable(int n, std::string* str); + +std::string HumanReadableNumber(double n, double one_k = 1024.0); + +std::string StringPrintF(const char* format, ...); + +inline std::ostream& StringCatImp(std::ostream& out) BENCHMARK_NOEXCEPT { + return out; +} + +template +inline std::ostream& StringCatImp(std::ostream& out, First&& f, + Rest&&... rest) { + out << std::forward(f); + return StringCatImp(out, std::forward(rest)...); +} + +template +inline std::string StrCat(Args&&... args) { + std::ostringstream ss; + StringCatImp(ss, std::forward(args)...); + return ss.str(); +} + +void ReplaceAll(std::string* str, const std::string& from, + const std::string& to); + +} // end namespace benchmark + +#endif // BENCHMARK_STRING_UTIL_H_ diff --git a/benchmarks/thirdparty/benchmark/src/sysinfo.cc b/benchmarks/thirdparty/benchmark/src/sysinfo.cc new file mode 100644 index 00000000..2520ad5a --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/sysinfo.cc @@ -0,0 +1,517 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "internal_macros.h" + +#ifdef BENCHMARK_OS_WINDOWS +#include +#include +#include +#else +#include +#include +#include +#include // this header must be included before 'sys/sysctl.h' to avoid compilation error on FreeBSD +#include +#if defined BENCHMARK_OS_FREEBSD || defined BENCHMARK_OS_MACOSX || \ + defined BENCHMARK_OS_NETBSD +#define BENCHMARK_HAS_SYSCTL +#include +#endif +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "check.h" +#include "cycleclock.h" +#include "internal_macros.h" +#include "log.h" +#include "sleep.h" +#include "string_util.h" + +namespace benchmark { +namespace { + +void PrintImp(std::ostream& out) { out << std::endl; } + +template +void PrintImp(std::ostream& out, First&& f, Rest&&... rest) { + out << std::forward(f); + PrintImp(out, std::forward(rest)...); +} + +template +BENCHMARK_NORETURN void PrintErrorAndDie(Args&&... args) { + PrintImp(std::cerr, std::forward(args)...); + std::exit(EXIT_FAILURE); +} + +#ifdef BENCHMARK_HAS_SYSCTL + +/// ValueUnion - A type used to correctly alias the byte-for-byte output of +/// `sysctl` with the result type it's to be interpreted as. +struct ValueUnion { + union DataT { + uint32_t uint32_value; + uint64_t uint64_value; + // For correct aliasing of union members from bytes. + char bytes[8]; + }; + using DataPtr = std::unique_ptr; + + // The size of the data union member + its trailing array size. + size_t Size; + DataPtr Buff; + + public: + ValueUnion() : Size(0), Buff(nullptr, &std::free) {} + + explicit ValueUnion(size_t BuffSize) + : Size(sizeof(DataT) + BuffSize), + Buff(::new (std::malloc(Size)) DataT(), &std::free) {} + + ValueUnion(ValueUnion&& other) = default; + + explicit operator bool() const { return bool(Buff); } + + char* data() const { return Buff->bytes; } + + std::string GetAsString() const { return std::string(data()); } + + int64_t GetAsInteger() const { + if (Size == sizeof(Buff->uint32_value)) + return static_cast(Buff->uint32_value); + else if (Size == sizeof(Buff->uint64_value)) + return static_cast(Buff->uint64_value); + BENCHMARK_UNREACHABLE(); + } + + uint64_t GetAsUnsigned() const { + if (Size == sizeof(Buff->uint32_value)) + return Buff->uint32_value; + else if (Size == sizeof(Buff->uint64_value)) + return Buff->uint64_value; + BENCHMARK_UNREACHABLE(); + } + + template + std::array GetAsArray() { + const int ArrSize = sizeof(T) * N; + CHECK_LE(ArrSize, Size); + std::array Arr; + std::memcpy(Arr.data(), data(), ArrSize); + return Arr; + } +}; + +ValueUnion GetSysctlImp(std::string const& Name) { + size_t CurBuffSize = 0; + if (sysctlbyname(Name.c_str(), nullptr, &CurBuffSize, nullptr, 0) == -1) + return ValueUnion(); + + ValueUnion buff(CurBuffSize); + if (sysctlbyname(Name.c_str(), buff.data(), &buff.Size, nullptr, 0) == 0) + return buff; + return ValueUnion(); +} + +BENCHMARK_MAYBE_UNUSED +bool GetSysctl(std::string const& Name, std::string* Out) { + Out->clear(); + auto Buff = GetSysctlImp(Name); + if (!Buff) return false; + Out->assign(Buff.data()); + return true; +} + +template ::value>::type> +bool GetSysctl(std::string const& Name, Tp* Out) { + *Out = 0; + auto Buff = GetSysctlImp(Name); + if (!Buff) return false; + *Out = static_cast(Buff.GetAsUnsigned()); + return true; +} + +template +bool GetSysctl(std::string const& Name, std::array* Out) { + auto Buff = GetSysctlImp(Name); + if (!Buff) return false; + *Out = Buff.GetAsArray(); + return true; +} +#endif + +template +bool ReadFromFile(std::string const& fname, ArgT* arg) { + *arg = ArgT(); + std::ifstream f(fname.c_str()); + if (!f.is_open()) return false; + f >> *arg; + return f.good(); +} + +bool CpuScalingEnabled(int num_cpus) { + // We don't have a valid CPU count, so don't even bother. + if (num_cpus <= 0) return false; +#ifndef BENCHMARK_OS_WINDOWS + // On Linux, the CPUfreq subsystem exposes CPU information as files on the + // local file system. If reading the exported files fails, then we may not be + // running on Linux, so we silently ignore all the read errors. + std::string res; + for (int cpu = 0; cpu < num_cpus; ++cpu) { + std::string governor_file = + StrCat("/sys/devices/system/cpu/cpu", cpu, "/cpufreq/scaling_governor"); + if (ReadFromFile(governor_file, &res) && res != "performance") return true; + } +#endif + return false; +} + +int CountSetBitsInCPUMap(std::string Val) { + auto CountBits = [](std::string Part) { + using CPUMask = std::bitset; + Part = "0x" + Part; + CPUMask Mask(std::stoul(Part, nullptr, 16)); + return static_cast(Mask.count()); + }; + size_t Pos; + int total = 0; + while ((Pos = Val.find(',')) != std::string::npos) { + total += CountBits(Val.substr(0, Pos)); + Val = Val.substr(Pos + 1); + } + if (!Val.empty()) { + total += CountBits(Val); + } + return total; +} + +BENCHMARK_MAYBE_UNUSED +std::vector GetCacheSizesFromKVFS() { + std::vector res; + std::string dir = "/sys/devices/system/cpu/cpu0/cache/"; + int Idx = 0; + while (true) { + CPUInfo::CacheInfo info; + std::string FPath = StrCat(dir, "index", Idx++, "/"); + std::ifstream f(StrCat(FPath, "size").c_str()); + if (!f.is_open()) break; + std::string suffix; + f >> info.size; + if (f.fail()) + PrintErrorAndDie("Failed while reading file '", FPath, "size'"); + if (f.good()) { + f >> suffix; + if (f.bad()) + PrintErrorAndDie( + "Invalid cache size format: failed to read size suffix"); + else if (f && suffix != "K") + PrintErrorAndDie("Invalid cache size format: Expected bytes ", suffix); + else if (suffix == "K") + info.size *= 1000; + } + if (!ReadFromFile(StrCat(FPath, "type"), &info.type)) + PrintErrorAndDie("Failed to read from file ", FPath, "type"); + if (!ReadFromFile(StrCat(FPath, "level"), &info.level)) + PrintErrorAndDie("Failed to read from file ", FPath, "level"); + std::string map_str; + if (!ReadFromFile(StrCat(FPath, "shared_cpu_map"), &map_str)) + PrintErrorAndDie("Failed to read from file ", FPath, "shared_cpu_map"); + info.num_sharing = CountSetBitsInCPUMap(map_str); + res.push_back(info); + } + + return res; +} + +#ifdef BENCHMARK_OS_MACOSX +std::vector GetCacheSizesMacOSX() { + std::vector res; + std::array CacheCounts{{0, 0, 0, 0}}; + GetSysctl("hw.cacheconfig", &CacheCounts); + + struct { + std::string name; + std::string type; + int level; + size_t num_sharing; + } Cases[] = {{"hw.l1dcachesize", "Data", 1, CacheCounts[1]}, + {"hw.l1icachesize", "Instruction", 1, CacheCounts[1]}, + {"hw.l2cachesize", "Unified", 2, CacheCounts[2]}, + {"hw.l3cachesize", "Unified", 3, CacheCounts[3]}}; + for (auto& C : Cases) { + int val; + if (!GetSysctl(C.name, &val)) continue; + CPUInfo::CacheInfo info; + info.type = C.type; + info.level = C.level; + info.size = val; + info.num_sharing = static_cast(C.num_sharing); + res.push_back(std::move(info)); + } + return res; +} +#elif defined(BENCHMARK_OS_WINDOWS) +std::vector GetCacheSizesWindows() { + std::vector res; + DWORD buffer_size = 0; + using PInfo = SYSTEM_LOGICAL_PROCESSOR_INFORMATION; + using CInfo = CACHE_DESCRIPTOR; + + using UPtr = std::unique_ptr; + GetLogicalProcessorInformation(nullptr, &buffer_size); + UPtr buff((PInfo*)malloc(buffer_size), &std::free); + if (!GetLogicalProcessorInformation(buff.get(), &buffer_size)) + PrintErrorAndDie("Failed during call to GetLogicalProcessorInformation: ", + GetLastError()); + + PInfo* it = buff.get(); + PInfo* end = buff.get() + (buffer_size / sizeof(PInfo)); + + for (; it != end; ++it) { + if (it->Relationship != RelationCache) continue; + using BitSet = std::bitset; + BitSet B(it->ProcessorMask); + // To prevent duplicates, only consider caches where CPU 0 is specified + if (!B.test(0)) continue; + CInfo* Cache = &it->Cache; + CPUInfo::CacheInfo C; + C.num_sharing = B.count(); + C.level = Cache->Level; + C.size = Cache->Size; + switch (Cache->Type) { + case CacheUnified: + C.type = "Unified"; + break; + case CacheInstruction: + C.type = "Instruction"; + break; + case CacheData: + C.type = "Data"; + break; + case CacheTrace: + C.type = "Trace"; + break; + default: + C.type = "Unknown"; + break; + } + res.push_back(C); + } + return res; +} +#endif + +std::vector GetCacheSizes() { +#ifdef BENCHMARK_OS_MACOSX + return GetCacheSizesMacOSX(); +#elif defined(BENCHMARK_OS_WINDOWS) + return GetCacheSizesWindows(); +#else + return GetCacheSizesFromKVFS(); +#endif +} + +int GetNumCPUs() { +#ifdef BENCHMARK_HAS_SYSCTL + int NumCPU = -1; + if (GetSysctl("hw.ncpu", &NumCPU)) return NumCPU; + fprintf(stderr, "Err: %s\n", strerror(errno)); + std::exit(EXIT_FAILURE); +#elif defined(BENCHMARK_OS_WINDOWS) + SYSTEM_INFO sysinfo; + // Use memset as opposed to = {} to avoid GCC missing initializer false + // positives. + std::memset(&sysinfo, 0, sizeof(SYSTEM_INFO)); + GetSystemInfo(&sysinfo); + return sysinfo.dwNumberOfProcessors; // number of logical + // processors in the current + // group +#else + int NumCPUs = 0; + int MaxID = -1; + std::ifstream f("/proc/cpuinfo"); + if (!f.is_open()) { + std::cerr << "failed to open /proc/cpuinfo\n"; + return -1; + } + const std::string Key = "processor"; + std::string ln; + while (std::getline(f, ln)) { + if (ln.empty()) continue; + size_t SplitIdx = ln.find(':'); + std::string value; + if (SplitIdx != std::string::npos) value = ln.substr(SplitIdx + 1); + if (ln.size() >= Key.size() && ln.compare(0, Key.size(), Key) == 0) { + NumCPUs++; + if (!value.empty()) { + int CurID = std::stoi(value); + MaxID = std::max(CurID, MaxID); + } + } + } + if (f.bad()) { + std::cerr << "Failure reading /proc/cpuinfo\n"; + return -1; + } + if (!f.eof()) { + std::cerr << "Failed to read to end of /proc/cpuinfo\n"; + return -1; + } + f.close(); + + if ((MaxID + 1) != NumCPUs) { + fprintf(stderr, + "CPU ID assignments in /proc/cpuinfo seem messed up." + " This is usually caused by a bad BIOS.\n"); + } + return NumCPUs; +#endif + BENCHMARK_UNREACHABLE(); +} + +double GetCPUCyclesPerSecond() { +#if defined BENCHMARK_OS_LINUX || defined BENCHMARK_OS_CYGWIN + long freq; + + // If the kernel is exporting the tsc frequency use that. There are issues + // where cpuinfo_max_freq cannot be relied on because the BIOS may be + // exporintg an invalid p-state (on x86) or p-states may be used to put the + // processor in a new mode (turbo mode). Essentially, those frequencies + // cannot always be relied upon. The same reasons apply to /proc/cpuinfo as + // well. + if (ReadFromFile("/sys/devices/system/cpu/cpu0/tsc_freq_khz", &freq) + // If CPU scaling is in effect, we want to use the *maximum* frequency, + // not whatever CPU speed some random processor happens to be using now. + || ReadFromFile("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq", + &freq)) { + // The value is in kHz (as the file name suggests). For example, on a + // 2GHz warpstation, the file contains the value "2000000". + return freq * 1000.0; + } + + const double error_value = -1; + double bogo_clock = error_value; + + std::ifstream f("/proc/cpuinfo"); + if (!f.is_open()) { + std::cerr << "failed to open /proc/cpuinfo\n"; + return error_value; + } + + auto startsWithKey = [](std::string const& Value, std::string const& Key) { + if (Key.size() > Value.size()) return false; + auto Cmp = [&](char X, char Y) { + return std::tolower(X) == std::tolower(Y); + }; + return std::equal(Key.begin(), Key.end(), Value.begin(), Cmp); + }; + + std::string ln; + while (std::getline(f, ln)) { + if (ln.empty()) continue; + size_t SplitIdx = ln.find(':'); + std::string value; + if (SplitIdx != std::string::npos) value = ln.substr(SplitIdx + 1); + // When parsing the "cpu MHz" and "bogomips" (fallback) entries, we only + // accept postive values. Some environments (virtual machines) report zero, + // which would cause infinite looping in WallTime_Init. + if (startsWithKey(ln, "cpu MHz")) { + if (!value.empty()) { + double cycles_per_second = std::stod(value) * 1000000.0; + if (cycles_per_second > 0) return cycles_per_second; + } + } else if (startsWithKey(ln, "bogomips")) { + if (!value.empty()) { + bogo_clock = std::stod(value) * 1000000.0; + if (bogo_clock < 0.0) bogo_clock = error_value; + } + } + } + if (f.bad()) { + std::cerr << "Failure reading /proc/cpuinfo\n"; + return error_value; + } + if (!f.eof()) { + std::cerr << "Failed to read to end of /proc/cpuinfo\n"; + return error_value; + } + f.close(); + // If we found the bogomips clock, but nothing better, we'll use it (but + // we're not happy about it); otherwise, fallback to the rough estimation + // below. + if (bogo_clock >= 0.0) return bogo_clock; + +#elif defined BENCHMARK_HAS_SYSCTL + constexpr auto* FreqStr = +#if defined(BENCHMARK_OS_FREEBSD) || defined(BENCHMARK_OS_NETBSD) + "machdep.tsc_freq"; +#else + "hw.cpufrequency"; +#endif + unsigned long long hz = 0; + if (GetSysctl(FreqStr, &hz)) return hz; + + fprintf(stderr, "Unable to determine clock rate from sysctl: %s: %s\n", + FreqStr, strerror(errno)); + +#elif defined BENCHMARK_OS_WINDOWS + // In NT, read MHz from the registry. If we fail to do so or we're in win9x + // then make a crude estimate. + DWORD data, data_size = sizeof(data); + if (IsWindowsXPOrGreater() && + SUCCEEDED( + SHGetValueA(HKEY_LOCAL_MACHINE, + "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", + "~MHz", nullptr, &data, &data_size))) + return static_cast((int64_t)data * + (int64_t)(1000 * 1000)); // was mhz +#endif + // If we've fallen through, attempt to roughly estimate the CPU clock rate. + const int estimate_time_ms = 1000; + const auto start_ticks = cycleclock::Now(); + SleepForMilliseconds(estimate_time_ms); + return static_cast(cycleclock::Now() - start_ticks); +} + +} // end namespace + +const CPUInfo& CPUInfo::Get() { + static const CPUInfo* info = new CPUInfo(); + return *info; +} + +CPUInfo::CPUInfo() + : num_cpus(GetNumCPUs()), + cycles_per_second(GetCPUCyclesPerSecond()), + caches(GetCacheSizes()), + scaling_enabled(CpuScalingEnabled(num_cpus)) {} + +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/timers.cc b/benchmarks/thirdparty/benchmark/src/timers.cc new file mode 100644 index 00000000..817272d0 --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/timers.cc @@ -0,0 +1,212 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "timers.h" +#include "internal_macros.h" + +#ifdef BENCHMARK_OS_WINDOWS +#include +#include +#include +#else +#include +#include +#include +#include // this header must be included before 'sys/sysctl.h' to avoid compilation error on FreeBSD +#include +#if defined BENCHMARK_OS_FREEBSD || defined BENCHMARK_OS_MACOSX +#include +#endif +#if defined(BENCHMARK_OS_MACOSX) +#include +#include +#include +#endif +#endif + +#ifdef BENCHMARK_OS_EMSCRIPTEN +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "check.h" +#include "log.h" +#include "sleep.h" +#include "string_util.h" + +namespace benchmark { + +// Suppress unused warnings on helper functions. +#if defined(__GNUC__) +#pragma GCC diagnostic ignored "-Wunused-function" +#endif + +namespace { +#if defined(BENCHMARK_OS_WINDOWS) +double MakeTime(FILETIME const& kernel_time, FILETIME const& user_time) { + ULARGE_INTEGER kernel; + ULARGE_INTEGER user; + kernel.HighPart = kernel_time.dwHighDateTime; + kernel.LowPart = kernel_time.dwLowDateTime; + user.HighPart = user_time.dwHighDateTime; + user.LowPart = user_time.dwLowDateTime; + return (static_cast(kernel.QuadPart) + + static_cast(user.QuadPart)) * + 1e-7; +} +#else +double MakeTime(struct rusage const& ru) { + return (static_cast(ru.ru_utime.tv_sec) + + static_cast(ru.ru_utime.tv_usec) * 1e-6 + + static_cast(ru.ru_stime.tv_sec) + + static_cast(ru.ru_stime.tv_usec) * 1e-6); +} +#endif +#if defined(BENCHMARK_OS_MACOSX) +double MakeTime(thread_basic_info_data_t const& info) { + return (static_cast(info.user_time.seconds) + + static_cast(info.user_time.microseconds) * 1e-6 + + static_cast(info.system_time.seconds) + + static_cast(info.system_time.microseconds) * 1e-6); +} +#endif +#if defined(CLOCK_PROCESS_CPUTIME_ID) || defined(CLOCK_THREAD_CPUTIME_ID) +double MakeTime(struct timespec const& ts) { + return ts.tv_sec + (static_cast(ts.tv_nsec) * 1e-9); +} +#endif + +BENCHMARK_NORETURN static void DiagnoseAndExit(const char* msg) { + std::cerr << "ERROR: " << msg << std::endl; + std::exit(EXIT_FAILURE); +} + +} // end namespace + +double ProcessCPUUsage() { +#if defined(BENCHMARK_OS_WINDOWS) + HANDLE proc = GetCurrentProcess(); + FILETIME creation_time; + FILETIME exit_time; + FILETIME kernel_time; + FILETIME user_time; + if (GetProcessTimes(proc, &creation_time, &exit_time, &kernel_time, + &user_time)) + return MakeTime(kernel_time, user_time); + DiagnoseAndExit("GetProccessTimes() failed"); +#elif defined(BENCHMARK_OS_EMSCRIPTEN) + // clock_gettime(CLOCK_PROCESS_CPUTIME_ID, ...) returns 0 on Emscripten. + // Use Emscripten-specific API. Reported CPU time would be exactly the + // same as total time, but this is ok because there aren't long-latency + // syncronous system calls in Emscripten. + return emscripten_get_now() * 1e-3; +#elif defined(CLOCK_PROCESS_CPUTIME_ID) && !defined(BENCHMARK_OS_MACOSX) + // FIXME We want to use clock_gettime, but its not available in MacOS 10.11. See + // https://github.com/google/benchmark/pull/292 + struct timespec spec; + if (clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &spec) == 0) + return MakeTime(spec); + DiagnoseAndExit("clock_gettime(CLOCK_PROCESS_CPUTIME_ID, ...) failed"); +#else + struct rusage ru; + if (getrusage(RUSAGE_SELF, &ru) == 0) return MakeTime(ru); + DiagnoseAndExit("getrusage(RUSAGE_SELF, ...) failed"); +#endif +} + +double ThreadCPUUsage() { +#if defined(BENCHMARK_OS_WINDOWS) + HANDLE this_thread = GetCurrentThread(); + FILETIME creation_time; + FILETIME exit_time; + FILETIME kernel_time; + FILETIME user_time; + GetThreadTimes(this_thread, &creation_time, &exit_time, &kernel_time, + &user_time); + return MakeTime(kernel_time, user_time); +#elif defined(BENCHMARK_OS_MACOSX) + // FIXME We want to use clock_gettime, but its not available in MacOS 10.11. See + // https://github.com/google/benchmark/pull/292 + mach_msg_type_number_t count = THREAD_BASIC_INFO_COUNT; + thread_basic_info_data_t info; + mach_port_t thread = pthread_mach_thread_np(pthread_self()); + if (thread_info(thread, THREAD_BASIC_INFO, (thread_info_t)&info, &count) == + KERN_SUCCESS) { + return MakeTime(info); + } + DiagnoseAndExit("ThreadCPUUsage() failed when evaluating thread_info"); +#elif defined(BENCHMARK_OS_EMSCRIPTEN) + // Emscripten doesn't support traditional threads + return ProcessCPUUsage(); +#elif defined(BENCHMARK_OS_RTEMS) + // RTEMS doesn't support CLOCK_THREAD_CPUTIME_ID. See + // https://github.com/RTEMS/rtems/blob/master/cpukit/posix/src/clockgettime.c + return ProcessCPUUsage(); +#elif defined(CLOCK_THREAD_CPUTIME_ID) + struct timespec ts; + if (clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts) == 0) return MakeTime(ts); + DiagnoseAndExit("clock_gettime(CLOCK_THREAD_CPUTIME_ID, ...) failed"); +#else +#error Per-thread timing is not available on your system. +#endif +} + +namespace { + +std::string DateTimeString(bool local) { + typedef std::chrono::system_clock Clock; + std::time_t now = Clock::to_time_t(Clock::now()); + const std::size_t kStorageSize = 128; + char storage[kStorageSize]; + std::size_t written; + + if (local) { +#if defined(BENCHMARK_OS_WINDOWS) + written = + std::strftime(storage, sizeof(storage), "%x %X", ::localtime(&now)); +#else + std::tm timeinfo; + std::memset(&timeinfo, 0, sizeof(std::tm)); + ::localtime_r(&now, &timeinfo); + written = std::strftime(storage, sizeof(storage), "%F %T", &timeinfo); +#endif + } else { +#if defined(BENCHMARK_OS_WINDOWS) + written = std::strftime(storage, sizeof(storage), "%x %X", ::gmtime(&now)); +#else + std::tm timeinfo; + std::memset(&timeinfo, 0, sizeof(std::tm)); + ::gmtime_r(&now, &timeinfo); + written = std::strftime(storage, sizeof(storage), "%F %T", &timeinfo); +#endif + } + CHECK(written < kStorageSize); + ((void)written); // prevent unused variable in optimized mode. + return std::string(storage); +} + +} // end namespace + +std::string LocalDateTimeString() { return DateTimeString(true); } + +} // end namespace benchmark diff --git a/benchmarks/thirdparty/benchmark/src/timers.h b/benchmarks/thirdparty/benchmark/src/timers.h new file mode 100644 index 00000000..65606ccd --- /dev/null +++ b/benchmarks/thirdparty/benchmark/src/timers.h @@ -0,0 +1,48 @@ +#ifndef BENCHMARK_TIMERS_H +#define BENCHMARK_TIMERS_H + +#include +#include + +namespace benchmark { + +// Return the CPU usage of the current process +double ProcessCPUUsage(); + +// Return the CPU usage of the children of the current process +double ChildrenCPUUsage(); + +// Return the CPU usage of the current thread +double ThreadCPUUsage(); + +#if defined(HAVE_STEADY_CLOCK) +template +struct ChooseSteadyClock { + typedef std::chrono::high_resolution_clock type; +}; + +template <> +struct ChooseSteadyClock { + typedef std::chrono::steady_clock type; +}; +#endif + +struct ChooseClockType { +#if defined(HAVE_STEADY_CLOCK) + typedef ChooseSteadyClock<>::type type; +#else + typedef std::chrono::high_resolution_clock type; +#endif +}; + +inline double ChronoClockNow() { + typedef ChooseClockType::type ClockType; + using FpSeconds = std::chrono::duration; + return FpSeconds(ClockType::now().time_since_epoch()).count(); +} + +std::string LocalDateTimeString(); + +} // end namespace benchmark + +#endif // BENCHMARK_TIMERS_H From d2b3fd156e5d0a6a5d176e1b84de01086ca1e135 Mon Sep 17 00:00:00 2001 From: zerodefect Date: Fri, 19 Jan 2018 11:42:53 +0000 Subject: [PATCH 075/106] Updated README.md to explain how installation of json_fwd.hpp can be achieved as part of install step. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e4c71481..f9dffe80 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ using json = nlohmann::json; to the files you want to use JSON objects. That's it. Do not forget to set the necessary switches to enable C++11 (e.g., `-std=c++11` for GCC and Clang). -You can further use file [`develop/json_fwd.hpp`](https://github.com/nlohmann/json/blob/develop/develop/json_fwd.hpp) for forward-declarations. +You can further use file [`develop/json_fwd.hpp`](https://github.com/nlohmann/json/blob/develop/develop/json_fwd.hpp) for forward-declarations. The installation of json_fwd.hpp (as part of cmake's install step), can be achieved by setting `-DJSON_MultipleHeaders=ON`: ### Package Managers From 3d776b058206189ef9b785e835ff0373e5923389 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 21 Jan 2018 14:13:42 +0100 Subject: [PATCH 076/106] :memo: updated README --- README.md | 18 +++++++++++++----- doc/avatars.png | Bin 570573 -> 587875 bytes 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e4c71481..74863795 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ - [JSON Pointer and JSON Patch](#json-pointer-and-json-patch) - [Implicit conversions](#implicit-conversions) - [Conversions to/from arbitrary types](#arbitrary-types-conversions) - - [Binary formats (CBOR and MessagePack)](#binary-formats-cbor-and-messagepack) + - [Binary formats (CBOR, MessagePack, and UBJSON)](#binary-formats-cbor-messagepack-and-ubjson) - [Supported compilers](#supported-compilers) - [License](#license) - [Contact](#contact) @@ -715,9 +715,9 @@ struct bad_serializer }; ``` -### Binary formats (CBOR and MessagePack) +### Binary formats (CBOR, MessagePack, and UBJSON) -Though JSON is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance over a network. Hence, the library supports [CBOR](http://cbor.io) (Concise Binary Object Representation) and [MessagePack](http://msgpack.org) to efficiently encode JSON values to byte vectors and to decode such vectors. +Though JSON is a ubiquitous data format, it is not a very compact format suitable for data exchange, for instance over a network. Hence, the library supports [CBOR](http://cbor.io) (Concise Binary Object Representation), [MessagePack](http://msgpack.org), and [UBJSON](http://ubjson.org) (Universal Binary JSON Specification) to efficiently encode JSON values to byte vectors and to decode such vectors. ```cpp // create a JSON value @@ -726,7 +726,7 @@ json j = R"({"compact": true, "schema": 0})"_json; // serialize to CBOR std::vector v_cbor = json::to_cbor(j); -// 0xa2, 0x67, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0xf5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x00 +// 0xA2, 0x67, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0xF5, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x00 // roundtrip json j_from_cbor = json::from_cbor(v_cbor); @@ -734,10 +734,18 @@ json j_from_cbor = json::from_cbor(v_cbor); // serialize to MessagePack std::vector v_msgpack = json::to_msgpack(j); -// 0x82, 0xa7, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0xc3, 0xa6, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x00 +// 0x82, 0xA7, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0xC3, 0xA6, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x00 // roundtrip json j_from_msgpack = json::from_msgpack(v_msgpack); + +// serialize to UBJSON +std::vector v_ubjson = json::to_ubjson(j); + +// 0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D + +// roundtrip +json j_from_ubjson = json::from_ubjson(v_ubjson); ``` diff --git a/doc/avatars.png b/doc/avatars.png index 45513172998a55108961d31070ffd0820c7e7bc3..78df273c22559a38d6668dfb9fac794d4855bd76 100644 GIT binary patch literal 587875 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%0A(I3tR`Q?xyp}x``cgtwqceE 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

K|5P>oLmw%zZ{%iDo`0jV%EpLJK>wyT2fqnZR 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 LNkvXXu0mjf`xk9# literal 570573 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

PC72#ie- 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

!{dZpdV-a1(fo&qz#s%_t)i$*Ldo38*^}kG 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%0DVPS3eOx1a1vxpiYNMD|ti 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�pWRZxCgn?q}E7HQDuxNpK}vQQFF40FTfyWCs>~| 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 z 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
(d+u4kE3L1uPfbk_!Jwap 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 z z?zLdnKHW$4!4Cov{qxON1@Sln2SS1<*1k4|z$8PMF(!`V?(Xi6&i1?SzPr$tU%h(O zjW^!7ZQItjzy0k=Dk}hJt>c)YfCWuEX^4uoW%1+3?}5{)2|o$G`=%|gxnXEh2_UsP zIBI~|6dtoXZYW;)*T=sUf&KU*a9&m?aX%6R4VX3lKlQxy3#qFw8%$l)lW9dpavm#v z)4r)xiVe+#pMJP|NqgrXEXyp;Z$9hG->eKD=|AUO=A>(-Dm0p$@j1OQ00Z+gBLWv3 z5mWix3*YwkAAjmorNhG^#jb$n+P&~Zh9MFIVQ3h{T8~dP`X}i}q&B5ei!A3rfTLk- zF;*qDCeyz(zxdX}cU#;_dAUNmFk78HTpeBNb_`?&$C{1dp`q?|XJ35PWxIzazjN<_ zJRu1SVo6*9LomrxXU6DOQw5F<(g9s#mg6DiIUkK;4yIdJLn_=GMXM}p+~`AwDnuMv z({K3$>(^Erm4mx~aB%6y^SjKWArz3=_#M?d;sD5RN8N5^Mz`~7rv2YGn}LqJUcK$!t@YNfs7qdph>f{V3@ z)%WkV03sl`>Z+@ThK3FwKKxu54`5Dq23ZnCGg6Ao(!uKR{?Xlg+=1Sg++02K86U~>TDi8vi#Iv7-U-7Bc9C!}T z;g?1tc)0!NKfmOX3k_OR;}Za8{rdHj6BAJsw1TFJ9oYK612bu!}aJMZyQUbWWf9av0JlT_GjU=W3!y*+(>eS3EA zF*-_lsl!9ZMvjdMDW2j0l`L5^nar2J{ABbIzxxrV{bSfq{Yc_Vxvj(y8bA!WX{KYPFUvTL$w??u89_;I*?-Q?7^O~vC{GB zDkQR2L;ONnAzFc#J!SK&MTElwryW_ z*=4(T@7}s~>!wYcjvYHzsZ>1AOJaCh>w$p*Ddnm8(Z4Xa1_`vLxf-K{7U!D4mQrL{ zqoKO9nY81g00iKi369g#(|f0;Y|E)PTSmpTdb6*uue-gtdexfg^7Mhn_Seg$$gdd{ zBSYTR=~@;N5o6kDASa&j7<8is9y8i+X`#eEU!0e0Cd6C7xyjd4ucqxlL5{#iXx>n z0BN1j>E@);66H*MyjI_QCno>|HebnBDV@)z{`Ld!Y)j|f`ez?a+pOsLk3Dind+r5q ze8X>j=&$~I_t5e4&RVf%+2XxJ$A@aobJi~H>B`@?dnj$ov)2yR>%quW>Co}XH3NMc zRxds>GI8MO#3ftSS`6>nanNvc;l>qdM_hIF3$K669~{`XWB!;+l$0WDL{FP^>lS z*pHL?a7G)QsOxECl;R-%$E<)15E3cGQiKv2oG@e|03lc$0ATUre%rPizVA71v(*T+ zIcu={WAFQ|t?QP8lLFAxYFxN^&4m}74a|TcKn{$c85CXb&)@XYT(S7ttIsoO>&JIK z`q9sSyWj}qi~|E?Kn8^H{rc|R`>wj`nx2fFnE@1!5AuXazy*OeJR@MdZhkgqUb^hR zeF6bPmZZTgc&Cst1WY1!N$75F5<$=r7^NK{_dWL5YhU)_3opFj$ljeTzb8mLZpz80 zGPabpx`Ui&ayiGgCrdL*$6N|8l}65E9jYKQK*F+6vRbn?IX%(z8;U;I1^lJ zO<_pdaL$B~Tmv$4Z95?XA|h$S5V*7;N!iy10T~Cr7P~nTOKIauLyvQJa_A5V%4S|FAJX(AC%UBu` zXG;tiV;liTjvTn{`#+i*pXQddEt_+m41>xjV?(UsyMO$XqX+lpyBF7*tvC*o;;hNK zjx%P6l%}N501z_97_%*5+frBz1u{mANC@T%tVOL_t=iq*lS-w8-TOMwni-bR|z030T~kVa;-D)^Nd_ zL6{ALMePNp{FGz@t%xXW&Vc6iR%^UoAFc+aN~6_m*1||~R7Po~A{Do1yjp3B94l*C zjKH&Pki5OUK%9pW02#@^U-}Y!?Q3w+Mflf$O~oQ81&jeAR4Q=za8dwo?tsagKRY}3 z%d_kTCHes32LT|T>N_@dOfVOK0c-ium{yx`z8Ve@1wm`;)@>JEaM}I$?z;3PHu?Pm z^S}3|>$O%&sl-W5M2J+Yhb^-wp>M}ZWr_uG9RT>&x4!kX+LqQqBqZo&e>@&Dv_btz z&+l`iaG@p|sPDZ_i@|{RjV^%l5Q@r@Y?Z3UXH}m|(*&tG!Aw&Gm!I|-f0)h9= zbiRCTW>bfY0F6eJTe_-!^{Sv{>ZMs`6f!nv>lp)_S&kzu8vx=s_G{(p^jP(Q$*H5m zPUq5m3GFFzBTwJ4{s=e#CtM%`L&#a7I3pLo9gqo1x^8@Bf`iyK2wt~5*2L+K0*EJYscy^o|P z={Hl$Y`E>8w1Fs!uDkBKhaP(9r$7BE%;!1&N*ZkFbUk$bLxQ;iZ>K(KOx(tF`ZtLH z@RxYQl0`z|s!Lv6W(b7jnPP2hN|&0{)uke%Nf+&iwP%{4W=1m|IF=9~yBX`G_}Jv^ z(vCI;0ERB!u+m7O3%y4VA6UP*qtMltYwu;}Eg2a;wq~HGr?=bVn8%c2wv{U?tq~D{ z0U1p4Oy~Is^S;8w6gPxAF?&sNrAgU{Q|{6;{+c{f__b}=GYvf9=a<{@zxMbif*i-` z?d?rvy-Ks5Z!2c=>Cus+jwL+LDV1k6f#3881_!sC=l|@-cc_>+=Z@nT73T|S3WJg1 z;jY1@(<39@ix$UVJQSirU)RMn*>V?%j)shYlV3@|VAih?_TWhWQG1FfWpsjPMHs z;Pmt~%-1^IxpU{njT_-~Ic-V6&vBf!Yu8RsPv3asjjwy%>j2=cyY6C)xvpC*7U2XF z{lpWUG@+PS1LFt?$^a240s+7TFhR@$2AHTqk^z7yHi%qGQEU3xXs%k(w_$B>Pgg38 zqvOLz&b&?z?%@&F$%~42t@t_^D4PNr&8DxT2;MXzwNf$IyyRv#bOfL zjH0Mot)6w(S&J7hKKI;n`}_Oz`TUkGTM%(_aEo&R(;^kUNdVn$FjI@!0x3y*S zZ4MV`v|=DR6PAsRBU7IDOI-4kW8MTfWo9|U=l_>Dq0g}S4n+WDS-esyZNG2tY^9dZ zr7YX7%v4fo=iyzu3Yp^SHRj0BXeOOrx^z$(t#rJ6Nq@1JKQ?kK)+W*v22rin>}W5f zT*r@;S+N{akBZ$Y=lYBkv9T)*t@$r;m)hbk~78yXFTza1Cn5zkaNZvpaG4*!bTLfTGEli zk+v)UkR=?F;~BBkRbomEs@4Yx&uOK~Z|-8EQ|0>K>$1&X`7 zLvbtC;1qW)4h2GSD8(I$ySuyp`R;wr6UpF=efC~!&VdvaDcz?c5C{+)%!`Jmt1;eB=4C zNaWPkD*WL?I8$N0&e@shZBtFa!@E?k%4LuT2`wHP9-l?*@uw|bzO>x!-AT^2#&N{R zfbJ+2A0NDQ!LLlUS5yK!)-aN(%8Adqyoc52Y*BasKx zWBaVb%X;T<27l);g)g)s6`Nnzgk#)+11k3WYShX5VB7s9%qyobXf|K<;m5r8%S1h*s28RW$*YoEBFqx-T~6S$8Bb%SmGt=eVWW_ zrIF|Za+%tzkc*?{H>wcy##776NY$yUCxT|57ZDm~>tY)~B+7pzDm8{+REPdp%FK)m zTVB{JlB+qQoXdO~*|?skqfN~js`mGmnFIqdV`C46z<0xzdq9JJZ;I|58?*j(It%Dt$iU4Jo<@bv+Slc;&Pyh$Npbmm<^m|Yhcf)j&0{Ae!|2vK@hDapiu7^7PHHzzTbC;i3q!?qOV&JONPvtV9iP zhQ~ovuKGeKe5B@IxqA7V%dMn=8h}|8jH8wr_7H_Cmw^a#TxrlsjlrG@E|vCWhORFg zc>&uA2L>*7el{*Wg~h&be@-u0LoNB=f62Pdf7>Xzw%Rj%g~qIx`_7sof) zDTPgGz9|VL?pbBLe7k&njjbAf-)Qw&rrxzsKiz>WH(g5RrPtj_ z*0ThcoR~5~n-~7%Dc?+I8zrFfr+k@Gb$fliMg@-|nUHrLG0BJQaf_+yxkv%`U3DSH z_lxK;W@anjj<>f*{s0^DGF&$~-2!cuv$j5Tz+sC>IXI-%UW5Q%Z;VW~WQ-v=;>_-3 zuqWmOlsdb_6eORAWEKPxaE~l0nQ+OW8vY}w#j^dh{#6d~YC&i)l@V%g68EikbGnKD zEpb2eX4c&4F1p7|ED4&LRf~6O%~vz9Exq0kp$3%ApB~!>jvjG#>_43RI*-J<(d6_V z1RKe=zsCa;NJFU2^rdgLAD*a1`?}!h%rvO8NVSK2-0`PHKVNSkrtC6wej zI%_|SR=(&bd3}rxonTup7j!nNt6i$l|TAB(`_Pt^Po=gEC=I zcPtQN2yKPx)02^U`>fmvy!|XmeU*LAJ@nAR8$$0%7A}S@4b74`jz<3VWwDkWj$y z7WZQF4B$bjLzjTH?+E^1)$}4X0A_mR*w63EfcLs&4`t#k@IB&mCT*olMQ?zhYH#qjHnAI(Fcrc5RaoA0XJZq{SZTP(NnnH zU2l1VaYw`(AQzaIpCw&TM}U-SsFn!0n}a<>G`VrzBIG#qGn~c&sx(wlf9i<^Qu^H- zzFI)UBL`T#voe409^Lw7yz7>>4~iKNGq5R5^Hd^JRAEK=az?&5S8twI*i^ch)+i{@ z7Oeh$@t5Lbw9Z_{;)7g$J!_MvMY23?nba!@F~Wp3Af8^@(dPBnUjHH;5~4{?NUHOx zY70p*Q?$)%NI*;ws+y9*O9tOjI&uO{G(h0vi8eQ$v{Yx_&y#xp=l&)c4TYvgLTGlY zJSlB4A0Md0=cGjoM=4Hq=4ggW>)S1~EWyPxYPiOKBXsF(4jBg&Yc{7S=xAHco3sfJ zeBaWlTUFcco4_3&DX^!1uE^Qx{gN@`^?dD_tirIA;#q2?NN*#!XXq~8sP3SwdUxwt zY9Jgr5_)%r8hXwgt1?K%7WVsch}G+O{$kWAzzxRB|Nl}v;2a8D@%}T|ZM@V@v|X`n z#QQcP;(Keq@M{NFFM2H%y(!xnPR%9pR;=EMX05(IPz`*9Rp`%qIRok(mSAuuuNY8G zz)i*X-c9++Q}erNt7y8G^r0ZQUqE!YELsHx7HWASW~8=}Z;@N`Kz6#j%&H&XqpjG7 zWk>s}nlMiUd38QNAHMq{E&eiJXQ>cmeP*nb%wQ$>>5Hmp$-fb$9vOSpi&~vw^Q_}O z`ltTGo~@WNh3r-p?Ko3dK>-YJ9t8St`Czb)7fB0cl8A(xii_iTr<=_9np;%OsV$^N z@HJ;oK&4{F6jH3tTy+zUNeY{xA0HpbgpSyx$jHeJ>Mcj}B_s6bVzz$kbHHrDOwmBI zm6a7pokae`!a{nM1hd7Gr>j%NjBUH2k+%?I$$1ZcObtHe@}IM*6x{ws5oxrEJVVS!eQ01YX-4u4u-786s>9413|HF>;jhq#ww-N1W|bnkUv{Cq1z z8{>{W000!OOFH~(=*Li%nC}EYuhns9Q8N?@KzuJ{(ridcp1vBe)}v4c6D@KYO_BE2 zHEbUeDi-&W^^5QenfhKHvO-TNg;tklJkDbMvBiEd=DIc6>*}#SiM5@K6@M>%f7jUb ztj%f`SyYSq?|lBR$Py*ogx!}rdPU(rL|hIWXH^aI(g&5!T6^OxyQ-^&>$Sjp11M79 zIb*Jz?`&?{fppwQ{>Q@HGr8&$&6>bz2eHRfvk0ufXC5Q{skw(X<>8XysvoQ^dZXUv z1tTKE@9n2Edd=!@#`JA#n^JCq@pA zMsR50Ml}cbZtt#W!rUNBVogdD<~_?7E>h;?q{6%1{!j)t&T5Jh9QNhU~%OML&0^kdIdCc_^smJJ15Nf}%g8S0I1Zb)665#UJ^?Rv_C7FO` z;5;*gJX};kYsrk>I#A%t>xbA_<+ZQwl2RabNT!xzK(xmE4^Cj$`1p6* zy!m5Aa_kRVsBV4nLRp#3+FcAN%WVwET_Wc;7Iuju9KCEkSUa&oFEFj!TX$RdQ@^Tk z9odw*${lLfrp`X6xI8EY!Ugsv@nV6c{>d8?#DE5QarzYS-+f}`%x123MqgQ9w23o+ zn4G$9m`Yg30)oQ=PVtz1L~3fcyKQ$iS7vEvFkN>$Y)D(A`OVs z;*$v$fF*dD-qX$E(r2V0hMXf>)fF(Qk7`vI*7Upl{YD@$9|?GmtF4Y_MM91BbM?~7 zZbz#^vt~}kCnuannw`#NQD0lgZT&DkgvLni-G(`_31Z1l3#N}YzI0JV0Nmhrh+-3a z9D2tG`_Mv#hfaE0_o)!1s&`Vu(MaC>yf*&TitNG@e8`@bICSw z)y+L@^`PK|O%OQku_7?ru_h$sKmGfS5;FKO^WM{ZoFqK}2VI zTs_Fh`R&u$`grwHL&$yW{w=!!lBuUoi~tEO*D3S5=}@y=GHT?tGp&j-fz0?fn#$Kb zpK#`S%!a$=+>!oBJR_}(X9^jJXVkQnw_~^Ozgj+^jd1GRX?;3-1Yy5)pGwP8E`A*( zgqhx9egRd_NbSzkf>hBqI-}RVDjwfg15!-H&(3R6ql`2Jaxy(85dBF9XC__`zNbw; zbnyVravz9vcpQ|0B5mIHp-b>cUBpY}#9^GUv>>V?)n4#Z+yD-|jN11|M4~A?ig|iQ z$pz0W2f)?2(F~~ zUyvR4HwG@huXCFnlanvg8$&86Ax3?B9dm19xT>t5N{^$$A^j^Bw~0J1$B37-8+E_R zQMVZ#Bmo%O<`U9}Z=*m%yn>}Ilxc;iY0$ZV@o?Jxf<~uI5K89g23NEy5%WJp;<4G* z)AST$bE*~Q=wY^lUq<}^L#bxzOJW@`!@*SG>t0~M?Sd6+aTrdiV-l11@p7}CC}syOTci+ zw&uR4k*MQW{fb4=QwyihsGZ@}!gv6GbOEf^-kPq&PO*zfJwc+_|em>;4_I5U?eSm|DYJUfyNrXttuG~!YR{-RsgliZ_;gQ zyl~+JV{w8`_W2|~+x=7eDd_--jpiR-&sb{!~Hg8usQPmff&<~=nP8}Xx6+)Gtz2gYnz4uZ`S~%~ z%I@yoKX^L|JF!bnMx7h>OP-~c21+ILXkwTe-_iy;L_myx%B{bMNzkAUD^X!Q$6xTIs)-`WBj3TwT{%yut!HDxXMX$n5dhe3ey`^Bum;u% zOZ4_s>EOGHx|M1$=?RBrFw)bB0Ta4!=MiFUuuzNV@qEIlrE2sBJ;K?|oKYw29-#+o zh5c6_6YYGy9EQRDUr&|(olMipUoe8lz;ec@Q#6hUwqPW-Z(597NiMt?#sYgLz);W$ z5{k0-b{FuAsj^XAHs>|Lvc8aJMpoI#>|%X$8>4C(mX^jll2_xUootXW`nc z&+;Q0_F6DKJGDqxq2CIChQQIxV7!ttiRt*_%hy7& zMbMFr+;60Fh7tGjod&F#Pddh~!K$jjKHpmyfS!W<_^g(lHHw`WQ!(|HQpokXRBWNc zv=IWz7Tkd^>6}d#ZC{K$IvBUBUm|e9s479e z*c1=L*l#CGYmdG#mV=_vgA7?jb+#?5_Y@S>`j>{7U9TyFwRO?I*|la%o7;KsgZ=X& zh8Fvy@^ssy{w1%*rpA|-h}E~GrPKRauMWmAxlMHW0k@}EgyF{)qub{y*qtvwp{yEu zoS1WK%0W)*=5FpPZv@J8#U>YBU0V4r@WqA21mUeWvjYr9g^%xwPpU(sMo+_mxY;OD z+bimlrPu1K*^l$v*5N3jj=*NkLezOYyQ#6U zu|mLBYWD-j{KRa6dKJzmyQ<*CiKKNQc!EWs87i^lwsA5DU7m{piD%%e>@0UoIv;E5 z?^q<)0DC%P$U=%4Nbz#|r*IZPnr@LD=NL^A&WuZx_yftKk|2u_Y=kxjXGXc)LSyR4a_ITt)e zjaZtMsDwm``Goz^Of+2PK@fha@W=)=1=0|iLVjVrXw#h!p$d(i<3>)Gdq1lZx zom@Bz)-X3BVX-|~+5YQ)1VJj?vcO)9m3|r4wdS+D%Y*%dI`V#5JsN*MAI~;j z%uV2c999q$?ys^2%J4YMxz@|Fog(XyxgCdblH!lZuM+&z{hX_qZ zm)*ms-qE8x08};y5-6JJ^3`JXSjWLai8S2$U?CSAPJy^w!ejl|hm-N@uSXfC)U3RK zEdV0aY4BiUP}nJpMQA99diyw;7RRRebF;mL{kAaW%XWTifa~pJzt$Cb%mJR+k;bK(8o0mlt_1U6_yYy9Dzx;_|&P)k4*Us zU$+x0oBA#om{|Tv$%O}B7Cr562Y;x1ikYkS=|0W%$H1_-bSNARN3xMzG^Lmh5BkmC z-ax3am8Wa9K!a4j{vn7OUkM&x0$k}~55OfJZz+H?9K|+F7>|`v%XJ_nuW70@RHRS? z(Li}Hx)(`V`)go-LX^+Vri9Vn!FbmB&+;5d~fV0{Vz4eMSri z?`P5CzWA93kZT=d_Ga*A>Y*Dzfk2qf*O_48>u|bYv%&)?2+O$+{6;qgwV5t~MV9@o zSo~A{0=8m4z+S7IR$w870_pE6NAb#8RDo9?0rN>-p1Me(R-dtj-{rh+ zFdhN-6I5({aKK~wAZJvOXcabKIr@U zGLn=-%R^9<{e$&sRkc*{ijga%7&|WTaAN-LJ)5#~;u%AJDYcoWgr@JIgYH0CdQyt1 zc`}rU(@Le>O}<4vhu3AGXgv=Xm|C!MA>_ewON)=B_Q^>qL1t$_Ur9(SAo|E}vF;~K z6Uxue^o{+>P?q{g2n&>$fEu_f#NU5+t<)UH0Px4;ccC(P69WO7Ud%e_Z<*>^s}_d z?kc7J?sTD4oKjc_k94{1rf{&uWim~V6oEYoly+q0=+ zz$1m7&8}jFPwyw=0VPd`|{h(4e92z#AA|Fb)~e*$@Pz!dO&p+NI0ZcBz@XGm zNp)o|-kSW#cRgyGGcZgJWAFLG2sqN>I%cZ5&=0lG#EV^EEYPmWw7wnCda!sPOe=| zf_@p{DfK)EG96Zy4|?xKT^U!npHR$zK!L+TO0RG$481^Rmc>()SLdSUs|L@0pxa?S zND>i;b#kinkJdrYc|(B1np>^t&nH-f(JC5{fN*4ehWe}pl+r^M`iP(0di6b(ZK1_- zaAXo;0cyII7@)Ygu4C?oE@3POP#ZStbiG-yn_Yez=+TAMQ+9WMg`nkGu>}QpB}WOJ z6o2t-zmeys<*q}^6_2ViZ%;;Cfdin1CC>~U@4MUdl=G!)L^CZ0?(eU*_q#1z7j$g? zqJJ6T8tW~=w6n4!lv3&ALPj02PEstcZrgs2@Hz>+-!O=EsL^hAA1x0)jlC7%cOhso zJhb3!ISwXob!xsjO@@ujy9ENa_W=xMM&7I8!LNn@TxpQm08mlC|7s-)@>Ty+1jv#? zbtc12W+~<7R|QA&ftce$``x<5o`W;bshHo5?+>3Ox035+zJS-^587G&n}vaO7F&zC zD{gC@YwlNdb%WKW0kx&tPRJ3ls`DvI&9~d`Uwxq5dJZK9PbtD)ShpTzAB8+`!*6o$ z=Z#M0Zw4~o&Q&o1+;mC%vkWfQEgQSS3Hy9svhPloU=)hXba_6voF(gTcViSo7Rv%! zA!ruvFgIp_Ii|~sZ;c0;tioxtr_h#API8Jnn;yE2j=m6-AdxodPhui4DRxUYWjjQ1 zTc4{CE*>;CV6BKghG-W5_ao-zJa*KCmMEqXJW&NO5q)E_Qx1EJyZN`N0M~l^-FGOo4OdKd}rSbjiB9#R7*5KqN_8Ymw z9j`g4uVHP-z`1c|L6IdO<j*G6)V*}43RP|47By`78-bwoH%L3kgY;r-6w2hXlSWs5E#ImE4{`?v;1VdbzLeG zNqcyh$k_=!55qja@X>(ONj-ZPyz91qOf1a-re0rw%U*x$pok0 z5!egv3PQv`Fh!}?CP2QC0mx97YRpRW!m{CJn7klC{~pXY-LiiP-;3ZN160KDTz>_c z4ElkziHPt3MAM*w-SE8rrE!el@S^9Sd^$o@pu*CWt;!-1ph3PG*_uHxb#xPM;l7k#La z4QHt6czaNN-7#458X4(3fQmA^6NG`~7OD2Y=5maZ{)wkabYjwK*8^iBY6R3Ydj;BT zyH^i#{VqU|5({2h7dFXFIOYAQWxalx1_>sjBkHCAznlvJFX@bBA;mWkfUD1DRTih8 z1P+rJna!%MjX=>?DAoNIQ5>K4TLusZm8mMluKy16*%OdmGAR zyFj70$ZuUIE?*a0sM}cCBb1s*)N-O9!77j#&LkloRHqe0!Zh2$Z;(yFo@$jjT9TRQ z;NWk(P*6qX>PSB^>Qgmoe_tijtnWB`l&~~VA`+Z95M<1}umM{QNXhC=)@At=?mqDe zQEvc)ZSdJfUvH_(($>!lz>f8BgM7XTXrGs?mjvfP$jg3V&1-1k=?6`dGkzBeXKXA9mq@~-U#ur&Q z?wA}b?CIy*4@J2n6Z%-B5f*j(O#%7CKS)0RRA2Dw<|aQUp@-DS%WH7mfReu_-y0hqfRpqap9HoRPq0?VOLr-tGaSHB`s0NY*+)H{d zEg7E~qV_biaJ-vlq(Oum8H3L{HuANcTx#8UJQBMf3|u1E-w=`f;AC(moV2r2XNz_U z43)t+6Lg)<_vfk5s&<%2kZ%9Zz&NBvfZXj}_L2MJ>wbALkyn$$P|>B~5c{^!ck&m} zqj{J8+?ZIwrWiG;-Q`9nip&L<{r&a_{r=L9$p`2#%$WOOL$k(5VRQ>XwH)lczqD}G z%yr+`c_#)9>fs+`Q;`3=BUD# z0{YpL>}h0Ff-RoF3Rzi77ylbebt4c_-cWHZz&FX>3_BA7kEPD{cbR4`Jq#1dNaR2Kk>Jg9tpSEF&d=7f~AXT&gFhD_trHvxUnI@@ws9ytU;*N zmke!2W>~)XgVTch{={V6WL@del^)J`Ck%fJvpgJb_wel4X0>c>_QG<@hJGh79jr?) zAxySan(+YUS9YD?*)B~~5=QxfWH5O)_~5MT`s zRSFph$&Yj!L^At{>0(km1qEkY&Mz2^G}|P9l-X)%SX0*-q_xoC`R5p9Za+x=U2>m? zP)}VqmMWP;#}flNo!>Y6y&HcnwyeXh^s?GAlmOnFgi|$GnZ!T&} zpv)uH+KHyXLTB(x)|EhPDyLBn*HzBrL{nG(CWcvYAs75Q#DyCbgKn#W=;ouRccgpe zmUaskV*|15!Mu(v*RG%=%MQnPh&HH85S77-A#O&2XH;Qyqm9<6wx||yPw6KYcR<*b zVJ#UhXsZ}8k98-}jbG@%&(npoME{E%LL?-?cpX&&T#Xh4k&z@abWPZ5zR`^Vz3+EH zPjIj_-#5F*-Cn?Lwa#I4c znGVvUY-IWGDjGe(bZ!nSzjg{KABX2&X6-~D%Es4xp2+JPOF%7z;l1{U>vd7R?I&sk zl;pW^K~xaMnMWkO4=b0HZ;vZyujf@~K4M(k11gn$vV$bZ>)~fB53zHd#=YS2{7Ddc!>$EnL5{M#`0G*+4*`95)KqKANAF|s8Z(BlHGxe1Na?rlvS$-tCG_;52mL*=3d$I<6qQn% zxy@`V442HpN7}u&?v2ZfUfz%Q8@dx+0y6P`A+Pmf{xVNATh^_x=N?GXTc|453f?WO z3DcovI#kzsK@LR46^Tip4+sj4z;Xd_{X^gEZ72U?=yy9%H`)Far~0E}Mxju>4Ey>< z-*=%8;@}eZX8u&28Q`pHQvz@9+T6A!#QMI`L4U5(WM>LmUBCsvZS){AbYAV_T)V6{ z)iY%66?_b+Xl-gOtnmN&1GP1`uc~+Aei6gGN}1gGP+dx)!J(mQ8s&U_;U)Ktn3wM%^tHsU$NJX zR?1)hEAIBz-S6|*;@0d(z-zkGKUAYNjGsh^*xektH~vljKw=6IPw?F!-a~#@xavki z$uWS)95OzW43ZCaF3<*XP!LhmDp;aBBx`BZFf*j>Ey~8FzK(zCxJ$r(RdX8e8o3WX zdpl0JsX*owbkeLREEgpI$HQiZiZkK56DoWQC8_dy?H&$v-|L8~%fC@<{ZMW2`h(Q* zc+A6sn^-JOdV4Sng%QXgkHMMHPMn#R&Z-CD73KSJsjiT8))WLu#>16d!w#Xspsi{= ziwGct1w>*SCp*@n|9q-Qqwjr*1O)Tim^I|MnOQp&nJ1cb4-;}TlRx3~CP}pCcHj=3|Gl)dn&TZ<%wzR&PqCr z4#_{rI2y90)m~n>t^WQYaCZ;;#jim<-iBgn{V`zuiqX?1lpsmmd-;7+7*Tk@bgsur zK}nhCf)09VH`5oLld>Gin4VI;Zk#kYd^5YRJ`Wwcju!Cr_FpVxutbF4p?Cj99dp}# zaPvl{{)k1C+kW_5pX$OvAntDpb@`ZV>@rt%e*=X~=PLVRy!<3|L8dya(lWBDwuAj6 zyX(6SE0-}{HqHt#5;y_Cc;N&@>ZdfRCXL}YK4Z{ei5F!hf6=NI3Ou$JsT;&ue0u|j&idlPpd?^A|UW4dbBQ@?dVU(Sbb;U znK11PuZ)5B?2x$NbsXj^)^XcQwb;IoHoWT zFJaDmyt2E`VzOX_T_Wy1)PW%RfSl8^HzNRC8mu0O_i^xRu5HEZp3IrCXygrSXmo-V z39VcY7?8(XS8u8}HcW{5O%p$O$m-RaDeX^q00x!W!>hnDpwJ_5GBROuee# zCVqQ+yY7*+KP;rq5*xPwonBa&oSwE@7?WSZpCpCR#IOTlF%I36PKm({B@8yDUvjw( zZ}iPn3=d!5FQ!P10TX3vmpGgGZKb!Rbo4HaZ%?dYSmiCh5911{}f{&Oi3>4ndN4) zfMo`OL=_A`vtss)v~w~bB$5z1XA@~1o8mXPpCba(KyY$zYo~V z^>I34tK7$wn;p_&*CdzW?V@Zaw`ZpEbeZ~%reggsAVN}8zsXHUV$u^BG-`_7WI(1Y z2EYLXnKkT6xV_USZ3`$M{3(p4&#P<j$=3;8;DP{0KH z^uS%HtoqJ9n^vkQCaN$kQ9+Ib601y5pH=j}yTrOSf(ALP;*ah(F{G`&QEn>@f-UFlotF81Ne5M(Zv=p*%(xeLdoAa?xmfh~pH(;6;i#?~-JQ&lVVBFwC-U)=R|ue6y;8!gs$82B8^y*W~bs64cy^dH&(-r69hoMvQXb z+Ok|HJF?tDr;2z?TzlD5+pDwH<;8RyYB!@b?s~SKKbY|1(k^qrk-9Vswt`lrAu;oi z|Lp18DBR-dA8^&@K%+V}N?59eQKFY*!((Hv-AkX4)h#-8s_h8jxl2GaXc-$)!xU@8 zzr4928WqIx4oCs3o|m3#M;Ni18xtF!%-AnIeyZ0wEO6AzednLr;OXzmJc|Nbp6(?( zC0_SgJwn{TV99v=%^wK6?|d76rAf=UO#Hosz=7-4cF49S;# zF!n7i3fK59D2hJ5j&m5yu1)4(hn~M?`x?PWF#4`L-(zEyUSGrld{(z0u%hEz7GL0X zr(uJwPXFfE^4lFs&F`CF*`b-PI`-HRr^h{m+Qm_V2uA$4+d%{jcx&Ux>#5##YM#=G z>s^IG5xucmBM7758K=D_9+#q_HkIzcT&__(0>HVu8Bc-v`-LSAIc4VY>1jq8-(`#p zbrQb%zlxZ#*wbQGEsyJ4*5V5MEnzPay5CAxQ@Rx;Yxc;aR9MN}VSq4H4CmN$Ie-+y zgRqX;MBAbRUW;(!D3kyLC>f415I-AEP4Y)TeNal!DTaoI8xOXhikVFt`YqPJ)jd;@ z!f`N4NxYgpPS|ANJn1ji`SRyVYZUio_vdZts*EW{!bUqbMMefk`)N~7;PJW?wY1mr z%XzrwFxHCS)wpA4A@480ed_~<&aXP{gd~XJ;Eeb1(eLIG=?c5_PvhYcZgj!MI8l(< z#lJ2^F^&zoH!`24VNgRlDlTgpvq(@ko`C^Xu?Gz@;L0L=5S(~0kZ2VFfeTj~KrM2B z3sNJA4??h!h(ZOskde9uyIF#1;L5b=(UM7cY4Bh`+XERA%i%&nkM*s z3073Ie-0-n&^@#3f@@-nNTP(te5HaZBfDQ0hhLxdLu5fB|8IWkp&70RCr6I(tP_Pku zq`*9dW!PvFN?ZRF9ydD6KtmWLBl#09*hR)X(xytw3wkHS?fCFMGQBQg;ZQ(#IbKFe z3QZ{(B=PwR|5A$b_`f4?ZDo^is`A2AA_nnRN~R1mU;gAj^v1PoVeW-ILf)R1hG`t) zFC%LAx$9TD>uID2Sv_~1|3!kEm+=d{q^RhVhid~wwq4Ix&Ln(=ZC}FfSn@YP$eAB{ z9`<^g_x>n<=q?q*jKGG$(6SI{fC$s7rKZc%Qh4o86`WN!`tr!}K|C&dw1I(xC1M@B z%WY^~^=_x-xeo_j(V5-z^!b+2up3|9L zJ3qva#uoa=;yXvc#@Dy|(5KaAhm*4%o)P z^QC6Z<7^W2!U`Gi=d!RlSm=(EHBRNXL)=v;^CVMV^PdU`8|s_q1#3j8#NEo;kY`h_ z#{r>%VrmoT;rQ*X&_Y(~8CWrybp{rb^+3T%*cpf_j0n7ZQ1yFSdh?vzA?@#z0GJhL zrH6j@nNxatYhtsv9czv~A6q(OaJI@5Qr-~h;gRwJm${BNxlYn!C?rQCS;BtZnkg_v@u-dL_B|DI{MY~cVw zd4l~sc)_&4ktL+7*ZEDV*%irmoC@=TsHz ziYRj9#EZjSea-$q(r#(UUmTeIY2|6{?G-8YNM5eMeeGe)tK+t@hF9QuP^@1gz4k=;Wpz{rj;M#{FM|!DQ($CI5DJ(?9ri|EhEs@@E)@ zePOqX9L?J)dXDmr12uVNox5p9f>d-FOH2@M6&B(9skOtbfY*W8R=XZwxFB8|!u}y= zI)~(~UBrt6Tf5)?5@(R_``pM^VKq;ymPO%TCk8u(lIpw&I=IlDnBu69oUFWv28xr= zm`mK-2kcnbCubi3GGEgnw! zT@CZHF!f>Z!j4vUo%ojMh&$|}(3*@es|-tzhxTMHi_*SkXBl2X>lA%O{yXUItF?wuBy<2;Ar8^ev=0K(r-~yO;;X>eI!RQ+4zu^W4JZp8N zaWcFs(?Q|9UqJV2f6*S77N-yNt^Zw=mD##2{?+YW@MFOw>6f)aj{a6P{Dq0Kyh@?h zX|}+J3}33QxaW$Wz3ORF5~Z}euFDlJI&T_`2SB9@lKJ!(6)~S?vvgVvIq36A&DU18 z*eyTNap2MMF%0UkV2_tzp#yc`L=<*wUhWP>Q7le8YRTEVxxHP4p0qeh;0LY;qr_5( z_;e!?(FJRpjr_UJCL40en&#c7Ypmn3?*hK-8So(6gbV~}Daa;5lx2EB);)qjQIp!$ znV0I-1c`1~;d0D`EabShiCHjGqZ_%6jvJhDRXS({fTF^X?*$+Z&GKES%p4?@8S#`? zXdvGVfnkfHOh1wQfa5a9K!^-s%2p|!J}`@j2xH(v7ElBlN8Md@@+EqI-Ta{X7#F>z zTa_}p3zrAGy}KQ3ZQ)CPh{3wPsnp}!Z{dgQUd~FB>l2}PMxZg5$HRcR=zfD6!|=(j z>(ukWsJ_M*1>M0ERql;bY;(5wJoTSH7bnz3x~YKmYb!Iyi&^)u z7qB(LbkefAXrcJ_P+^n`UvD#hsV&h8-Uhg7G$ZOBxeq-JH@%&PigiBS1YTRI59}Fu zkA*e`md-}&_bV$DjVCMAbiT$NDz8ERe&~397_CV0+p;t2^nLQ@GV;RTm8C1zmK;CXvI{`Ca);Y-t{gp|=S!3u4C zsVd8)LQ(`~yolI+Nm(pAv*>Ij$>$CfS_gF*YenvAvu}S51{xL$@k>@wmgLv;v((WsNbqH4=Ap{*SVM8G}=m`PfrL5fg~6p0RjpnAu1>$h^Y9!fUoePVl055 zAWD4|5kye}HjpBO5D4kLZZEU5JAHorwx^u;kNca+CR-qopkPk&nce-(z0a+`r<`v& z?}vha>sPW<&LShtCGxIa^^`U`^FWo|^(CKvVfAE3BM`mmNBP!EzYq1?QhDHZ{&x_Nz+3iGG z(n%ttEn6f+rEOkplevfE@sgkC@(C<2CzoM+SayL1g{YY&@RE-RA^=+3>vr-bUJuz~ z(%P2GVY}Vww!5oVRPWt!V7}f|sctsfr>?Jj@e4DZb{cw8sl4bN!*WNvL?4t=2oks6 zyCY4NWpWvwb-}5=i^f1Ri9h*|x4q((ukq5oQ?t{*{oa50DMo z=gV`pmaWa#a+WnDnL!FXNs@_Cv(Y-!N+|>+L5`G&?D(E^ojA?{DP6?2)xZ`-&ydsR z$H*)9v64jE7^Mv>LlUD@)aPd_!ZAL`u+J8Ym2OfU=(B_jf{Cq4Z5pZ8Ts%9~UR-o7 zkFGy;#hR$(*uj+>R*jBCNk>eqFZNg5O24*bH3|TB5evdDscB4`F^B#>go6i3>ih5ViwW@GN=>+ z-%4!__m_fh0;PalXIdL=t;1}j)UNPJ+qH%6_ywm-&JIk^&(+)Q`DQdzZ*)_Y=qybW z!%+5XXN(V16i3~Nm99u3srxw{e77t#n7)&e=t5gdcw!IG;5BSN#yhQuZL0zbK%|6njoi(!1nE6EgOSZUdfkU3LpCze&#dWYC)|AL@+zM zyq@iyz>*mVE;%JXy5Pk;WtTGuzlY7v4L4kL$t5?w_fwn8)j&!Sb#tE?VXgkw-S0W$ zlvlp=!jJctwspE~K+FlP>(*iz7H+!Lt~v98p&>IrSC>*)o7%+}tvdZ8=^Cx`E2DPQ zS}}0mRhRtZzUi<1=WV~6skRh;ucm8c%hdu&{KLQ9aMe}UeUEy0+b#wGkL!^;DpGaU z+_!I6+reFn%Tnm2e#!!tbaGqy?0+ji<5`vL(s#YjR{D@~!m|Y-f$-oX58U+WzutPu z^G<*1%aX3b$7VwiQ7K(nF}8B^RzbGWHb{s}BEW@j?R2IRx8y6rk#ciciw zB~wvS0x4Z`1OUuF^sQqqfVc-LGic^o;8wdPcC#03fG^F#{>H^&P?7%qSvHr&4#|S+ z&qs>`)#~S8cI{*|^Ru7-V3S$10%RajDEZp5wFZe00ducxwunSTXe^@8S>_OVY}E9W zKe*b~R$%F1Tri@;&9m3_@7NX8&59Lchm7h+-l&~ENedZ=eYJFAVm4`P+!##8Xf*-b z<5X&XI-ZWF;{=hfXFm3^j|D++T=UF)5LsMY{EgrEjb#mo5Mpw2@*VGZ$45T$k>kQ$ z`5I|_eEdD{dC#x>%C9`>##Se~7He%7hQIfFzqh=i0{|)Iz`($9cj2Yt;fVP2KmYSz z{NfjX1n2qV6_3s$2(3{_qPlkd%-)BPnZX#V5VYk?0J1EkmJ?;bE7V3Do9UKG4=*fA zg-)&3CQ*}qX?Rr>FOYVcohiTpl%%5shgaK`E7;^#bkLg({+7C?BevgXB?zc@+kP2akaf!URX zLctM4Oj8s47V8VXS4fTCzh^J{{^eJ_@}XOAoS9v$4GqsuPl2^Tx%`4FUb6Mn({KFh zm(nas(+sS-=gwPQ$Ent8gM))JGfivRah|ZU>IaKsHDr0hefhUf;h`mgD;WeJA_^b` zA(#T76u^R2fGrS~3w?v0Xf4bwG`pQzXk(joH57@+>#tV&hlWGxE;eUoX6p;{opQNQ zsnu$g+QCk=`{3by`zFV0wQATO2F1u~a$<|53^;^q#{2Gj=&+Fi1wP9@;3D86lK}2p z5+wuV70YwQ%VY0Eo>Dw6a=AR>1VJz`Fp#FHlu{{`Wm%`wab4GST|^ASaA9HL#v5JLgDn&PnS|I56#9Ht#$5Vz1%~>F|Le9pUlyJ zK|~>lP$1;!TK)pqZnu+!AsegH%ot4!R@*!+N(^YNixLnOpw%i%<1|eya}Wkbo1AKa z2)WOpu!xo+uly+l5D^2T1wkk!BQYWgiGsi~X9gfI9%+ynj0L6RPItK0Pu4aYjW~+E zg3p8|Uo`#r$MPEjy$(mjQKYp77LMz5<80fujm?|yS!i_*PtC4hv!Yn^?UI;-F*iOr z>T8Q=tp&g(DF#CRWI4}z+a5=!SDn!q!vKtkrE;lSD{ol0+FFj&G)$FzPkOP(gK#1CcBuvsQQ(9>g#hK?OK@g0M$is&l)u6Cr-|WMWJg{c% zC@cX0?N%m8-1LnJDGwA%vQToPhVHht7x;+Cq=}?NL{N}O-4QA_R%I$R+GvwOP$&wS zCG99P&>5iOh*IrE70Z-m1a6Y1NyLFiT4_Q|H47<)W5Hn;Y}So6oB5_}w;ZLdW+RZY zEF&oq43TxT!-6r>Hcm-08*8k#faDM|lLX&?iVQ9P%K|}Ii!WYjU8(+gKLQJfbXzfi zSh;qs(rKhrmbf2%-`k#d$%XHI|HuFA+P99aUk&Y+HG2Ii>pOq{rGj4pFmL&lUj)nM z$lNoZan4z1p01h0VhKX;n%BQ(?_IZFdi5K3?>~IgEfZh(^4CkXq5e=3NM+MfU;ky# zyLfNR6N%$GkF&vKK$|JOrOGc}CG+gqPb7gD0T~#G*jgq6LT!xb`7s&>kdDKQS}6w0 z2(ycg{S$}BhN`ZRq4bKS0BlVX0;?c!O5wnm98{bnX%eN~C{CK4xD%(+bp&Cqp3RSl zNXSgc%TO6Sc23gM+CJ7f-&nE$0s$-&p(}+kMiPKPvsAS$FEMM3L5WF{tQ{X|Hrmru zt&1;w=FRu)`O=qfK5g5Y>uv!M3 zXY%mGGtNDGbj9$4I}d*Q6JNaO!gCv)?!W%$ZJ+v^&#v0A>gTV#;@7W!-alV|$1lC@ zBk%p4Un&POHI`hLEHeX1hk7&vt~VP>DK<8@Eky#?mB#8cQCe%W)YSvC&HqzMYfVA| zAY0N}8*KseTrKBhFGNDLgaC+)U>G&qq5c77dGF-Z#LRTkO-e-l<-m7+wl-EOBM3{S za;aPn{bH%;y8hxqJx+589}}X|1^}3`r`l&tCrtZnT}L+#&hPq;N!m7PppJ||LB@5- zk>E+sqKV`AWbyvYc4c#orYblNv(nwJ`{Q4aT(E;g$U=~(lq#<{YvWH{^59qAdhp0S zQ9RV?Pe=Mn<^DUMs zYN<$Au4glYg_`UH$1Vpfut(t<*nG(Dim@ZDCrN;jGg;kdYh(m~{e@CJZ6O**NMefh zk39kF>G-b=sR4{uF6Pv4@V#Pc7OHNo>=eoB)Hi^JKz(`kEw=NE%!I@4I z4QZD6u01q6-$~;v&YU0|9qeB{I9yQZhdywqjUKEP8*^T~n2in&Z5&@cKRY`ZlpX`x z9UaUl1bp(7uyZH$^?}woGM8J?!~8rx?|JaS5B7XDfA(kb`s?#ndadPuCMoB`?7bd;q@rO^9PySO8;i*;I4se_TG?(GBKNucPZip>PsO|2uEE=#oor z{Ih@DS}B!?L=+{^Ge2Y@+)Q=$AG!JLQ+`wFG+&lju*_@>jjtM9KlRKbJHo+JM5)qg zHky9+(xLtrjjpH|!$(U)64S1PYiH(ncaxdWAG9_DKx?c)j3Zkvm59Wj{{7asUUK6} zF}&*lz@TJ{ptC>wtyjArxCIKaCFdx9By$ds3Fke7FLs^61w&3M(WuOI97jqUwWlAv z_rCx9>OEij^yYIfe8$UurrFkbyo`X=ra0u6R;}Ip$j&pLb!ODjgrGIYcTekf_KnZ| z$Hi}W;lF(TyKi{SFMy4ZTmYl`i-^S1J+`&{xiBI_PP~$`zXL)U?v#fXJKF=CPDe8} z=7}L!ezQ5Vd0@3$?z?&Sjr;f2fAj2@4SMAjrT&F_%UI4$u^k~=9R-Zm=4O)soI4j1 z0ui%dD@lq{Kds&ru3g(6Tzf|00LTU2SmCbc)x3DP!29RpVQ>A0?fvc4dFY-|;T)>^ za(Jj16sFqk3pd%U-q6argytt<3IB9F9Y2c53CnMO^P4Zc@WK{)8GC2H(&7lpL*tVo;|nFh%+6{9^SX}-rB$rxbEPZwVj!T;o%`^DN%ZMa%yg& zQ7M;R_%m1SpIKy`ty{Z>R@7-n-OPA0; z+M;=S{aAtZ4<`P5V&S;p2-M6;2F&buKnQ{8xs^)*0M-ebNQ?fyT6I;ww`0elW-IKJ zi>Wp&h3ol!)j{cpQ?rvv+EvWezG|gda0}%^tzSynUn>LQbhD`$nN6&;VXMJrBwL#P z`QLAi4B+4jF04RjHE@Bk1C#=nKm(vaa@eM9ED#_)rbh13IN5RU)iOe}ef#!yyPa3O zGfRe7i0C+u5MuxS{WCK&wOTEXNVa*OAA zTeog?94E&@a)dPu!$P63ytH{7jJN#Zu_IkBV)Fx6Tb*SYf>0{W45x8CSnca8R=UkL zrx|2g2np62tK~gVK^{%_-|0A)EEOMF@%o102Qik_zp|JC?t3 zM{75kG0hZ-kO8WF)t|cbe4AHmq5_W<-Evfq@wj@@byc z7TFPwNHVRpF_{qoV(;p38Bokm#<1BtdEn0b9$7m++*c{>+&}pnZ+&~M+JD;}cYW#W zHwG^K?9X3w=WVy%a>qSVIy?958yhIC9UC*oqIi_4jM&2_0df~GG}dljx8m$AYrpc{ z`vT8J#BP#G!cIGhGhJ_XU-+yu0!Mu4@Ba1Di=Pe912vf;PINo=ysA^{m*+lX<;?uy zMg+ohfY}<0TIbH@R%nksM}V>nL{fN$jVRH;nxS&V4?}NmzPYMe7~3j4F=mN|E|z5} zOBFJ7+L?*cf=g037FjxaaAO}x8Yt^Mcgz*af$#`?A}Kpl4b@SZwkSb(#K4T2-3){f z4oV^2YLG$ZyF&QbQa@?#5sbh<+QRckoncphYIoMP&P;{?aOP=e$iTNr)aZ6gh0qYc z0U+!dY&^yq|8a2L z@)<5~V67G8`EJ30$&8W+0+B6fV+9cjv3x~{nAhXXj2*0&0uMj&kN;T?#Ti>SHWr)T zx#eMHX=rdorBZuj&;CSVyPce|eRZP|Rr-8jR9Qxdhg)$JC3ioxZ|%x~4O=ccGBLHd z&>R~boNKk;_3vf+STYt{qe)|7i`v>nn=bUrDe&a2F`g^Z^`@8?{*WUJ_zkc8U z5@akR5#_l`0A#YPReNzhNs}BT)0P3j_dOy(Bn=2coBM5AW~~%3BM~5IYlM)-^i*^R zgaUyvUmxWh4kEPHSgW70e!XX+YO#Fa@Z^Jg_cgm|C(0bH2TT4)(eEbNY$s_Xsb4A% zREi^g<*n=2he0?}G;W}FPRseB#2Flc@GX;Pt$88lk=wET(#sa|CcHXzfDGn4WPKFu+ zvY03n=_lO+`sw(e6;cBWhm_HTWQ;`=e!;a-(wxpRM$HKb*2WqD)<$cqwI-xu;QL+( z($`KXh<(b+#j0>UFD#L@hxR?(>9k!)GfxJAUv~XfPS~EDeCEcD&Uqrv;#Oj&8?C8U zeX`lzGt*q?GzVRK$ywXaJbk<4IcYbVot{2&)e+{Klub^G-YE1+S3vkUf@a}hmls%KoXFnUZZ-+-7fgpGk zR6_(~U|;~&tpj6vZE6k7ux%Us^g${R(EA&W-zCzw4F@-bJHhHQx`9aa`df?VP{$%~Oka#pxW8o9oe8 zGXh2t779f{^e3O$^4llD@E*Dn0LZfKOj|V%%tIf#f6^d>=s9R3F@OasLFYd!XWuz+ z-ZdL4eZFe6n$i5+-d&IEy8EuF2k%?hy8~<&ASJ(;0Rijdmia+I)Ufija}FGsAOvQM z(#e`B?_PwW_mDghRtQMQR)J+;OV)Y>fs_R#n4P=mf{kyx(#G?*ugH#Qmd3BK-0EkFyy=l{? zKm5Z#JgyBUECF?2{_>aq=5PMyaR^+__kZIX-+1SpcS2j zQ!CnF27s+ww>BD$YPGtYMa{A-w=3~HZ}~E zZ9@Nt!g!W}@^$i(xNXTVCgyIDH6)*xOwU^|G3B3Svpbf{eLuL>3`%C zdpdqJk*B<8XXnROtjMi{0zX`sZ6Gj`oI7-6bbLh;M>l=z`oQx&&rhxCw(6B~zw3t% z32S)8_)12jbT%@)LM2h7-gKng_28Y=+Mu##?*n&EO-+vs_IsXp@Ze&U#6+S}DwWFR zBU49q?%b7SO!y;$sEH`cGS_{S=9Tw{;nFPqDeN8v001ldXctU5mC*G10I;AGumu@3 zI_9e9ZT3{$$&yxD=~`7!+I?Bjj26?zR449uK~Sz1wWc&NcRu(?dFaUD`KIf;nsp~l zov5X?(g;AtKVd+xa>AEb;i`3(<(pkA-n>-CY5ksUjBG#U+K%&uL#0AS0OE&cud^Yim* znx1;i|~$pg3OG>smhj0ACZs}NEvGx>?xoiGMZro59sLdaqYIS49hJlSXj*x=DJw7S%$0?4U zN9A~!=lek*>-EJ_L85TFtt8770^D`~!~M0=_AP6ZG)15#6&)k=JgE6mL=$1j%yt>8 z%h!2F9j;f8{Adfx9BgA|wyd?WRs&ey^*3!?w`$ec%-sCG{f7@tO`m`6sV=!ovbUaD zr{lYoQfQK_)lC36(`Jd0({sbi=aYz72>iZsxmXAazE>@UeMSFguDt5B^Um`A9}QHB zr)^q2(pSCYl8gTROaJ!B-YIS2ncL1cIaPnj$p;A$9y?)UX698RgS!t*J+N!Sb%g84 zRbvC8<5*)RX6uOHd#)dNipix%g=>B5MgX9drezNI959EcrxO#DR+dNsGP}NKQEm(^Z0Rd7<6P?w6a%w;> z2cl&F0!*zuy-Y}e#edb3*{+3>|1zZxakbDnWF zl0A56V)KUKvp26SlnULbgT#*Gyx@wTu8yq!)z`oN@Zrh7_}Kq*!6ey?0sg&aK~l@W7$T*_rv-UwGM1U2?(355MnSSHIzZZR{)TTVzk$wCdT_;MiW~bY1b)q;cmuiiU24Fz8x$cZ}knlJxlVi^ojvCsO;hBY2 zvFr;;mMx+r#}P=@J~}`fYx9g00ve-*z>Vux-TJ`pKfCr<<`x!GouzdK2kyLY=Uor% zyx_c3*R3AB@1Z@?QS+@hj^forLvd<~HUE}7c8sqmhn{m}dO?6IB)V=ed1$6SyZC2+ z^8W4Hw`|?AZvX!Ma|=^9-}LP_yz-|G?4A5SuY2hqw6pj9zc0M&&9AIC+mP3UgI?7> zgS5D~KtzP-I<6oMjA@i25CEZc0VMz$YuK=5El3DNtqmg@n<=I82V~hA-CG&yrL`3S z0+>?Zte8I%jQ6osje5fvj*ZQT9N}ogLjyxo^9!nxh@g;ZjJoLp);sOyilLg{jcXQn zp~x*u4KrIS040%>(i)Q~jYP%3l|ovb#`U&lao_H}+NQ~T!yP;&>CtuPN`r`s{D}4AqNGJ zg5A(cH*}oQ;g!ZD?N*`FsAowNz_LIqr6y!6fyri&C36wSbzM~G6av5Eu}y#M0X$16 zI1ot8=unY_d+%Kjoqp<1UGTEMh-bh1&`lp+Xx(?~?tN>UgBwN$*RNUeYtQWu3hv+B ze!nA~9Fvzw44i?9j3Gno0{McG(Ps`1t*n$&G}E2*k%Ii(RMVuy)+V}B@3i{DYPSh8S{oVk8g82XPKnG0p;Izd;fg?Qm4 z0-mSi>G*y^Ish(c7Q{#%2p}3;UEXoqfshJalWA9yCo;4dlK`O&Yi)}Tg+yiPyR|{T zHh|y&fNd|t-9~Df2X^e5oj&XYt^x4EVxdr}^^b_Cy(&#w-NwdhpF%lWD6TA)rW>K} zHM`8`pSE)C@Q?)BJ2BN2o+o&`SX#GgRTj77Zqsue)>+bBSWFitW*SjuwKYOGY1)b6 z6G%{*fe1eE0a#pwS`CcpeF6ZD2E6G_@PGbKuf!c9XbnQZ%U%Y*_j^z-_aHiJff<@j zIQwkq>jQwtKy=IyMR5N4@V@uKb=Sd{z67ln%+A96JS;50;vzJg&}u;xL6$+9LbD0R zz?Lm=<(2R=KLcyloalMvE6r;W|KhqchDWM#WaBv2S{rLH=l=kus#>b6r#8rxI^1k|LiS~yvG+lTa!;9GNmkAWblH* zK)?9Yzu$I39p3K)TnhokT}}2a7r z&b(b{n|k};kxFIk?>_(WkAC1YU;Xl@YNMz0tr)M@HGy~hJC1-hXYNqGKw`Fl#3~hJ z<*IU_FF=3j;O^P2{cFw}ITgB{stC!XZ~Vqz{&RKUS!=g^e$P%qnZu|mO|y1~3J$Vm zYne4L5TdX~fR$_mz+s1+O8*%n&T!*?PHl#cAO_tPTQ)js(JIWq4tRa%);AQGyz=TA z@2QNg-qHfs{K}7h^rK-I9=G~ko@Z<}o4@|+zkci@ z%33R>eDJ{s-}~P8=JoTA%~$4ICnhFVty<-I-twi@>-By6_U+%lKTnTpt>ZX;)0^J(=}&(;zcj7?r&0ls z*h3f^fFx(H7 z1r-WWu7s741X$_XQWZ0UY?p)rM@28i42%{Dfq^m4-Q!We2YmFOjDSE-F94p7r!b7M zQ&Y2HxT{(%g<&DfQlr&|Q%=dUYT~sm znzL4m(5nrNr&&5aHs0yBV{PX4?sHtHP$;fkwQ6B{Dos;h2)wY-Xe3d0)ylP_!(%t! zbbG56xt{Y>%kOd-)*IgNh8u6Z@sIxKkFL7vs@!!d&*cCYmf5vz3*xOx5VpD9lyKyy|sm~;7R&)z0Res?5 zWhI5%sJHj+o38a0!_bS8I8kb@tcdWy`kH>6Y4&<9B6P z079?=kO2t=kq~Sw0~laLA|^nv%mj?U)+lDHjb>MP#ez<cXlD1WgTUCHiFb7QR@J&OpK$+Fd{mO`vvF}iYm{KlK^et74; zbI#bRlAO1h57NxSX|>}<)MaKNAuKq7=cY>M+%Ib_AsVB{M}~gmRhR8MFy%=}f({;< zdhv@cfBSF0^}`={|J`@rR|tJ;)otJY&u2X6vQ;Za$A^b+yMIq7PREA&9Y-2%C`XzZ zj5Pp|1JBl42Hvt}{JCds{K_r&8*7PNA*j=eThJY-l?N-OOU~Xl-{?NLd*ZC^TcJn! zMIuZ)F#s|{d#+0;BD7wBq#&=ZmnDiA5s-wi#?IEG`DOwn0oV`2px~uVwdbx$LKK2P z5F5&Nwpbey&Jq#IG)qz6s==(I8Z#{tf{iiO9(i!iW-2q<54As$qN9ZN=Hv)gxxEd3f@0v(+VmfAt5ywr+f2>nW?he#1kZg~g&< zwqSD7JE2iP2JA1cGFvK+wfP9}lLnqHFA@n6kpxmc=a!7D4I<`rbOu2LQXnG(leNHF zl?q{hB{(uOSFBdNQdkNDg&2S+R|_$#RvfVu3!QGg9nCK`B#5zrp=LdjfZ7@%ghkG) zdI}%_yL>*&V{3kHN7q(gKHI$$M|SO9c=4rYI{{i`3(UqM3Zy&%#fT_{Kwzy>AsyF| z&360cm!JRHf4ly*Z~ge?mtFeI^DkBtlb`zNhv%lIn(g*CzIE6C{*|9zXf`J&WvNuc zVo9m^@NBc3IL|tF+x$XvF>NtB?M|Ae>b^buDy}=*))!s$Y-0?evwp+ItFC;>rO#M* z;WIZMI5f?T_Rsyy`M>q9PtPqheBWc6a}aZ45=!Z4Wk`TSLSZHZ3qm0nSR)FfW6JoVJtpfkz0&GBOaN^gR&TS|%Sr3Z)nbU03)lTZ{S)>=kEU`T2~$uy|_elzz|eFNF0@yXt1oz4+1< zo7Vip7r(%|lV;tyPGnIp#$74IkBpx9bo``-%+ii=d~Fh=6q1ZGl&&lcd5cqV|HvwE zc_wK9VXSS@B>>XOun@p#45MaN23^$6h4zsN85ULCjhltBT=%p!t2*u0?jzI6>8mU2yI80dXlA}v4V#@-sl-O4 ztvH&VZxu_G0ujh?pnu5fWOi=)=w(~ag~J#Wf^WG6|NY;&Qo$U(6N0l0;~3ugPJZoc z!I(#7bGeDuFZ=?2;uE}Q4}>8~$({$L64YwAc{6|ayEr$;i;FNnpF?z5uXD4B%_bKD}=Xc{1r;4*4X3L!9>LVz5yv3)*5CJ1Qp-+Pn4pK)8^XY7d&+EvvE30 zfBX8?=byH+Cf@U&zxw^RzX@yw7=Z2L zoSB)Ag7XlwL=CTAbGXvKJdm683WdE*w{Q9;tOz2b$hy5qaISevcbu&K~j zv2!gUPBi00=DhHs1t36R%V3OjT^cUR0Xdz*;WPSgY}YT5&nnsgj0%PCF-|m&y!>DO z=shoZ!}iftcPvhzL|~J3yQy7Fj88^^)u1zE6wIKMFvc;~5h4xyMpmtS&MDHQn4%*I z(K3}>zpxw0+wzbaJXTh#p2sVfki3D^9SRfJQ7VM9^7(hZI zc)|k%0up@h9iQsr%(uPmZTt7{ zKQ8u`!+!66_q$*I@|SPjy7jm+zWhLMed}94|M}0~bI(0TuehG{K*UX(Hl2CqnHx52 z$b}>MOE)w$RH;;sPB$ZBUteFbSX{ey?ZU#s%*@Q>j)O?^^Rq{eObreW1-`p)?;aqrdHeQ>{rgJQ^3?wQTG^ykuMPHZ+_LGe+io5h z9#u;3y!URUZMjqssc1Et<#MfCZ?-z|tjQ2r2-%4fFs58C_xJZ}Ws$_TGq>G&%RRYM z;tz4L-y`yFeE06%pZw$}0pO4S_>Zr-<{ALV#bNvQ?YsHroAcaRrBZpy&LRVlKm-~< zNRS?&00%)R1_lNo35d)BQ6+uDpS{;TeQxLcp+jp%hT=p=fl7?V!~$T(Hfnd3Rbk01 zlqv(G!>vxI5C&P6HoBc8NtIF{K_Ym9G=r6{vIeZSp%4BL-~gfn%nS}dAFu=9G1O3W zK{Np)B*ADH0FYqG{p9<6KzVmJGBT1s)7(pwnGYU3_@ys>soic@Dizmtb2a(o)N$z>-GAI6)S4B+Qh^}tyaq$jH0Mot^U9huE6&YMYkI>8%MYR z#&Nx7H`a`WN+njAG0JEI8nPtrYW5v+!L!J0Ow#E_oo*Dx-Kfg|C^$|cK}b?EvsPLu z#agq{Hja>e7R1Jo=YlU7QIdm#tg%a#5v0+YZ32L77_=eFLI?_60a$Oe`f7tDD2XFu ztWwJHq|s0QXvilWVW0HESIfg6^k}!JGQD!eNaNap%Ou z>8GzlB0#dt`7+urt&V$R=+aQ0x4&F55wYi^Kt$FukR?HcB#@Lb+E@T{bkW(zBo>IY z(Me)`-|4Fr?|W$X=8bDy85nJrhG=FT5A~M?n7Mkl-OrQ&1}IB z02$aag5wH{!Yg_J;Ptsf)nPJKfePOGa@n`Ws~69^8s6EGG~ zWJXKZ^FkjTV#7$7rm1v1V~yh;Gf~Vvmgocuu^jzn3v3_%8s{H=&#r8F_hV*Wz(<)p z5j}oxmVf^JWo#LNI8Q9oDPU@rw+dFtv|bF%bKlgSKM{qt}9;pLewdnjP>l#TyY8Db8Vb(J88A*-MF!0tR@_H z$G(Mwho&xh#@6SZclL)q^@YWHNBeev~*|$U<6Bu0ssj$up}fv1YEaj%>%84 z!;^=r)w1XMNL&bAbUhax$kI*}b)s&&-2$ygheig=wS(Rql0yI>W$u6i2)P;5(K5U5 zdGd3Mol>n*se~p=^1Fvbz(APS{#=?XGE3xPEQY}}oDCZcY4{rd4%E1p?w zt{NXWXZ!kV-}~uT{nBg7r4oQOz^{Gv&p&hH@XKHFynpz@O&33FyNa8YFl07IW*4?? zSk;ZQB|lPYjj_hEWn~md>j?>#@>L%8YT4O1j-@2mbT}k5=1>B zNSY-^X=7Aga-eB!cjKCsAVSyauZ#|baXTz1wqV&M>c=G8u;;i95|^z21ppAc157l#r~g)fu*x)6Q(W8^=k^27HghV>Hai zU3x#Ez>_AKp8WRNA=ZL~&a#1_@mId`7Y^>+_%e!pzhSt=1eHbMt}y zn+Jwm&(62I*PL_STqpbDu02K9OO5dnw)@^C1Jw)Gj)zj-H9hn7$=Q3`?WQq4cd0pB?bTI7vHk=ylu0GrY9#SAKY{QmcB<^1D17$0?P{`TXAVJZ3(T9E4fM$ zDF6eoG1hXTwGInGtv`JK-*3C>s_Q=YIk@Vo$2YS0n=j1U0>l?g?R>a$=Dbryru-wp zh6R4A`rOrp?ESBJaaeru;oIhpd;>Q>`^-i+neD*X$}s?kEiBK$mSkkM$1VBBI6!rDTI?zu0%?e>`i`xa(etrGETU;dk|v|Vz8f^Z!W5^(R4 zJ#YQm$1ghNImJ%c%327bvrtcD?5ZkTjVeV}$O?^i5PYJl6O8&!;?)MPxO8phYiWlh zFc=GHMS#N3z_HfFl+9py01z0+FRb6}`Smoa#(ZgUTvnQ3XL^%Z%kWru00C1@JEqH& z*WY^rfq*Gzv5mjiHcw&uKkk75k+n^&4T=A5)KCJ5nY+$^xAS_+BS+EJuV4SJcfIT6 z=9%C4#y39pv5yHMj*GhGf{Zwh-}uHi-f+VWk6ZQSk^j?m-H(3sqZeLy;bZyTPv#YQ zo)^dQD_-%6m%j9+c}=^cBk%AZxA^ot&-1*2fq{)1H#QoLyYIgHh8u3U`s%B%yY9M) ziHY&?@eLa`?BBoN=8hr%MS(z)3e3kDsu+wUA5lKp7#=Mb!s(e(9;J@U8KXi-K*J2i zScgax$C(L*Qw$`sGy$fT(@bU{!hrmN{=U&6$M>xrnLI))6gnPS6vc{kq_G*oqtC0y zvBl*g8w^WDH~<6?0`wroo*WO6EduJicHXf!!f}x3WC>QK>`5Lk5y}(SHbDSw*qD>u zf6t|pBzT!wsh{L^3!(!ce$ZDmf7~Z4Z2nZY|G2Q0rIduYu-LGMx1WCcuAMuj;GyBc zYNa+acf@u5f#KnM@4mAX_(%3Fuu+z=QmIu-eG>=vuUxwh2oCSqIlf{|oT*YNG$xtY ze_(9PWNBI`7Hg%-#KgqbZCeZF+C6vN*6nrysMG0m+ASHluIH#s{|Lx1eSLjl7-m^E zF){JckAC#kuYPr*P^j1IuY29=(llk}XFvPdV`F0{B7gkQ;R8D0Xb=`8gGrcjYB2#K zV$WU+*#ZkJM2+AD-gHDpQT23S0tafChqQFw6p&**3r=oVyM8RtFZ^y|e#5 zA5bnD@I24=eWjG+IM&*^xw(J)w||?Sp3cWCt#yBYzw5ej9H(hotyTvH28zYv!otFl zBS)C|o_p>YA0M~Y#&PU^hQM$8|k{!Vy9WskBBxsI}^L znFy>23jqkU7IX1kUW^PFgp@YbVA&c?fYw-W9pMD?2M-)Pu-{rMgp;L-blpOs0AS`W0l1z1@xKs#-25XKZtQAVD<-Bljjz^Ra z(vBxUIJ*zd*PHF;d~;|;m?x6+JA>%VEVMe^q!4&_KeFEf7d^LJ422+O&a?BSVtBzB zn?CXRZ!p-c>sJJU7qvP@Ya(Z;udf)+`L0`Zy<#C8UAf}TZ+Xja|L*TPjy$s1c=yNu zZR`4#S6zPo*S`DUZTIh%h$gS-!CWg9u6fY~#IW!1-1T=o9C)s=wpu8-j#DicC#M&c zQHB|rf$g?+BU?9((UN~RGiYlBku3P7p#nHU3Tc#;LKgeWHdSn`^nE{&aa-9$3jxw| zIZ@Vf|4?aYv{W6hoqOu4N`IdsnwoFkb=&^_kuK#g(>FE`RsiI~cuX`#=bJKPYSJMqAQ^;<@|-S+gsIwMW*nl1DP8jK0SYIX{apQ`3mv%03{ z7Tq*e))>(hQaD+fl}4P$y`P+=Htu3xf&Q2m4FJ$_(F=gYVh6d$`MvPwDqe%HUf8XO1h2A`u;p(Jsr~5Rm`~ zSr8EmCS(Rz*cfYt(A7KF&C)EMonQFU*KcdIlVACzmkjrpH?Ci|SuqRh_vB1zTwwS8Gzq>!%N@yp)VACKLn1PLb+H9 zU3a0`C5bE$rO53}Jl}0M8~Md5V{MW;LO6~DLIG%rfl;tT2DHf5ST-h6NCFTM2@nWb z2++zHqYbdu${53z8G!QAf<(%wI$9}72-3`spuTdk(QMAu7sf`$kYwNmq)e?C4h#+X zQW}*-N$N^jD2EH_0qmJ_u_OV^nK7>GTHxHJ3;-+;0BZx<7(^o-{OY%Fc)<&vH@JS2 z*z<6G;mGK~AcDh4LOMVQ47qi)aD8UqvOz*Zw%TZ;8CVc70~^bhP%s#S27r;RwvG=% z5()$`U=gffR!NLH_FT`UqJRObbi3VMY$UA+EJ{MdkQvK{Wu$FKSs_pmMwxDQw0@ja z0$5-`KlltxZd||m;zqkXG4aVm_x=6qN^M;= zbezI%bM0;v50=ZMc%WQ*?Rgg*I5d?S8+vlo6KBnfQl;Mka;mPM35eV1By+iGs32HJ%gDo6r>E=GqX_?38EaGWmHrR7e5x#QrMqDO>8_!>ySu*oet%iB7W|lXIrp6B*_(woo0hmZ zj_V(l2Qhz+_xpfWL#bHcX!6G4~oYS0h6SPFkaW;}3@86PU!WTn69elwYlve@iQ#Afh=9CS?xB4NIr4>CLK+ z1vfF3NTkx_W2%clj^N>)@-TzlTre3b& zv6#(qO{U_1?qZ?uHrwvIOf)l96z~w#27pClXDn@E)!>|0~~G2&?FqfeqanhfHK(+!lNnA!X%=Joooczb%83$YXhc$}y)N8~ z=q8ya_#v}Kyw;yIePl6yPyXD)-j>EWBXXY*6im3C7X!f+vJBA=oqe1=d22#~ z{We07qG01Y7iP+G`C1AGgDcjFoBE@4@ntZ^ETr&1=;Ds^L(^`Cmw(apLEA;FgNQet zhpkQX(snHW>V5SOzhkX{8?Ab1f3QWf_gUN3*wcSS?03HFa4KO5yMTLgd3hOdlYf0$ zoC8vu(emVX&uLnJ0gxjgmO1t4xFQ?BssI4mfPH;B9E0rdtaZnkN9zjxoo(ltkyOTE zGaNUCaMxlAmRa&K&2^6Do=Z(0EJXd|<-Sw-UR+8h7#V4h8r3eN-b9i`1VMt)IaD&y zV1x_0;yyBU5Ft@aHln|wy0(u=l4|*xvMi3%6TEN<6Q_TsBOOmvX&+s;=lNEalqExrXx^T=~{%9K4P> zzdeKfGN$>06Dd3<=jYp{we0caf~{xbm<{V*ufB!ZU#h26G(t|UX;a}?`kvhypTAA0 z&jg=8o zZ%o3tz7xHk@XOKKCn1*;%2uxzYUI!>g_;+|0i@s7uZ`10hPBpjr|qlvDC1YR$EyH3 zW_>+k&r2tjl?{4#njJqi=ryl$&h<-s`#KKDTSl|B>@yoa$d8SCp82f#JRTH@-me2$ z`_s`@=p8`uRLRZK1%r?+ClEkJcH+GQkoAywMXt)>!9YrubuVY?9o#XRX~y!TMCSW69QTUFWW~+`O%-m5qAY^9QI;GV*bf_@A;$v=`i&ngZZa zzd&HtiK{?-5QG8dY8WoUD!VGguy2h6gt<|kk*)1npdC7e(!4Dv7Y$QI;Hz?UWWz(; ztou@!Y2O0G0r>3}XY3mZ2nfP3nYAk519i(Ayl<>Q10_sA1AHKXX2+Qb%fi9}_*k-8 z#@UlZ#E#k6C01Gh`O9D=pJQk;ZEPqHug)SJwOr6mu&~F;1?gFEd8SwUEo|6&9DVyN)3N4DH{BdyS@}7D;F1<+L-b)zhOyiXo&)k;&NeZgf&&|Q zFc2O;`FqYVezm$KdN8iKK$s(tpmXrw5(WNF7(uc4xNwk8A!&Hd44}koxjG0kILV|V zBj}N|oBpzKz})j0ujroE*i&YBrEIi(+`FP7w41of)}VjE#W7LGR>&+?U5I{kmr(DN z)#F+rLZP=bmH3-EzC_*PB;1cD zww9#+htet*!?zzF1tWM-Wn|*lfaI~f@sVKxbgmub=k6-+iZU7>_8aFZdYQ4?5*LZ z^hu}9_ID+ZES4@=a})`&7!6r+U%^n)Olo5rsodum%YPidqG2r?)`ZZAr3Qn>&&FTR zO7!^bmRt{^)xu{T7UO=xeM5M-w-cu?XTEnxA0LG~9d~>8=6l~uoktC`-_N9VzAUJ` z9r0HBGyX%F4+e=5Xqc$^9#Xts;H4Qz&0gj#kvH!jE1mf)9epz7Xe43#s1>i4!6MX= z<#zY=D-O=9Wg#&wGpnq*3D5P=zEWk}usx^13LMq@Ydtbqe zPdMSsb^%Ne8+TY?CfeobnAJn-k?`&Hk}7LGkl=g-L=G=xD5=Pat5BN0=OW;EI(xk^ zwAZh#5j|z<@jfba8y9%eNGdG%zRP*?2zH!{`=QWpuft31hGSM+@=*BW^?cx*=H1E1 zr{i+N$HSAiYxcK?Kg<={o&GP&&&y{WCmuO|e*;FxpO=^3?x&X;Dtr$acWm5>-DJ!`al7-5@OR|~f{8fq2gQvPQ`8XiDI+6{h|*OfNb6zVQ{r}W>Dk17 z0T~_Fh;!b-V~2{ROXi}124eJ8)RJu7se9$xfal`RaDu(Ry&Y9}vjpT9s0a#|9Z2L~ zIiZAPq*A*P=ryVx{A)@gw5X{t+@_daPNbl!MUGpM( zz$tG^M}oZ%=jTZJfo~-Z$MDL)KLtwE2=G8K5g|{au{6iX$ons$*bv>`bZZ{O40H}y zY?^o;SVAInoQz@}4@gs-qwIi0?>C)thx2pWRy7ApG5DGH)2Tu5aPs0EQgdMg>F)er zWX#?ZYX1?PeBJYY3>15dG_|!9MBTY>IV?@TsmA?PRP6UHav$xT2m$3t^21ZWW9asm z#+87x?qe;CkLL>~G|ZYBE7btJ7%!ehM5n@5vnAy3ajtgF;qT@Ic$zoxf}C-TSJu7$##37Fx55xK-FGg^_a#4o_q zog+5jJ%cBuS&fwupQFBrH6@NQbUM*o
PfYHB?OZ``Fj94s5Z6#*QbCWx#UC2b0e)}N32UiEjX!J1?8ditTA&k78< z-ixi~IM9l)&KEr(6-&@5kR}T<8J9=`lOj3yj0m3wI{3n|HN(dQk=hEog5QzBGK$*_ zQgy7=`6>KFA z*)Gr07B3RiWoAGNrz7R@8do$y=TB=b;Pt+K{$#_sy^sA`1_&&L%UE>Yk+Os52b(Hk zI~~lLo{`4=Ndmuwg2Le;EC|P|?c?b}pNR%jzspP@#H44Cj21!(5p#}OB+hFZAi76S z#y+#|blaArZc<~tJbYS6l-oP+WsTNbqpix4z;dt5|N%@v&HE4?Q7cjqW z`X32KHG>j7l4vHXyb0h+PbkuGQax0Bw@{dG$x5E8v9M=er%K2)RbeNA9BKVvy8FZePx&qA;Q`UsdK%~Xw#4qO|ARB= zOs8P;leTxwCkYi@!teL=754w+sK>EiFWKKNQNNxCZ*AI5Y%xc80D;$5kF(dD+4V~x z=j!lwyOUalBP3z-N{%%&gT$ zE&}MOwe7IzAWo9^dFX^@9PD+!Q$9I|vVS0`R%gIP={3PbnTQl3hxf8sTc8e*yX+9rF3JZ70&<}`r zWfY~T)LBz@yUU2yZQZxxh~qB3eoQN_@(qZK6Deu&ap0Ga5s*fR0B3AgW4*Px{1wf( zCj)^P-2{{<#L)aP17o?5Vvsfv=>6OOo1rNrz~fg@JD1(hSzAr5zdm-r(-d8o?mCXokpQP2h!q@=c`U<#kT6IE9M{D< zf|4))qf6;nWY>S|ut*!cS6P%J4Eo2yLKFB&EK-7l6BNP;LX)Vf4@9E{nc7eoX{g?q z@6E9^VBq@}VSTdE#3*2_)r@tg|7jB$W6l` zku5EktNT;{0tUg%c40~&+rk72?wy!|XN+|aTR>9XuFU)R=_dYEv4=N#vA7M5>9n19lsj?7JH!&(@eAKwM^w(3ZtGoh8} zq%%6Hg&D{(djfshW62br@YD?VVRaKa`Z1gHHRwGMH?m}E@QZqhc7RTj!&$yS4acpEj29xNz^~N&qESb>+6~Z!H*m>c3bVX~9 zCgz6{tm%0AwtWfq6Wo0E4PJXi7M%!w)D-dcU27?nN+UW17U2cHNQRS5ZA6{hdYEgv0UZq*#-!jF?DFu4TddVHgP9S9;%k zSbLBUDDZuwNh;MuyM8x^XdO~kdjQwU9MV&<O#EBTL$$!vbsX4r{BEdC0;Nl*))d4xlD1^yHQL9~lG$MhG?_2j|la zrfKTo6_oSfsSiy!5w!jt27yZC@@AxoYG!q;A!+19rfTyglA{b?>VsR2Ur;ceTPE!q zx1jn`FjjV%(P}ix@H&h;*BcLuj#QuP6*KKq>+>ok?f)iQ9oFHQkxi6Mfa+@MlD?HK z*Nj7Jc;)DaO-4)961W1HMiu|Y?D9l!Nijs9$X{>X&XV|hsQJ`XC5TlMRu}a zGFFx*={(D#+g4T)Q_tyWHW81G%$FgOHQf>o`J7f`vy&(b``3|x<@=pX3et)%$_D)I zt6@a}+b5Ne<#(^M=={EW2x%hG@ZT~@_?KkNi}bjs$A#=}*!7)qGi)jiKis~G-ls^m zTAVfcpXrdu{PG%06@6UatMFb~a>xn67x0TP2%Ma&hMU8}F>*o*Z?=uVkSnNX8C5?fjn%GD^R6E7pqh*$aEqeU|*>oDSkZ z;0T&J*vQC+bxDy?Yx@Xc3`V|p(Piaep;tCjDYFlF=Zfj|_Ve{LvbMgcJ1J6RZ@5)b zEF-1J5UigDezeMriApf5Kc3s#x0~~yLf_wv9(!JSdul+U@Ln(Pd?++* z-CgD$7rD_|yG@wptLVIbJ~c4tUpq0@CYNsLU%!jUjG6PF#XiH44u zFo}qZgGH@f71k*)k2u}(qq52hHzD8uD#WI4xpfh)~LE+defag_@-pCVkOM%?quCCjLYzm{)K>7C< zh{`li{m+T_L=04VYIzF>HJGXScopX_lq>}jPzw?UNtO4r6Or7r%FWZt*XjDIAu#IJrof;%XH#ygGV1r5I?BqH0pI++=nK0 zp6~;bD>*TT1gdHRk9#8eZqsmxpp|O%Scsxl2Kc>$3~RX#W4C0@-Ko66r+r;Nn`1yLYJ? z)_E0+wGO9n4jIq2HD;O6J0;*TBzf~Hvh3RM-Y%2K}S+sVHAlK1~~td4VLT>Glq$!f)h(y6W@gQS3#)Q_(J&hc8Kffwkdrlbziri-N|K zhSk!deYQ7BqdLA4c zp4bCQ;Do{hpwd{5SY$c%4S&6@!7-S*i!ob#IzK;m0nC|hM^KDxA!TF#hE2i(vd^OB+7HBh9)#6oPSa3QFPdp^APg8$L!1Qz@F~A+S%<~V@ zwg92$b`Bv#*vmR(KeTnPLV})iex&DWfQ!OrD-taAEQKEDe+)Y*j&_b@oDLf(_WTw9 ztBTW8KYD{=u!Td%!J?Rs^23*(A0Xk6Tn(b3VncNpWNBOFWSF4dZ)u8Y~t zG)P=_5~BK+Y_P_)3zmGDaDE|Hi3|l%z3R&+LS8${)TU_Enl?M(6sz?PYybB51944| zb>3jc?vVdEzX=Knc~2|xzf6n1Os~D3tgU+OWj}~j0c@ss{^ubChQ1eEDw~6cBNQY= znA_flAVjMLEJ_Y`o#^j6>2xvzFp8Em5W-;jX+w`Dr*FRv=a#ZHfEs_6HTQ(ps6GT2 zC61vb=PWcqNk}J)&@OU;Dy4+)+%<1O=~#lh-Wi5(o<&ZpG+5(MZA|Io-?iLAc!Oi5E9{=I$D@0Q3?Rw|z zZGgVMdJE3)Mj4kriYSFMV=CfUC~mUNyzEy#Cfm1+*e%!M09mlEcGiuYy?!gTT#__1 z#*63dBX7C#3Ul0JoW8A$O+TV~fv#H3e2hqVa*Z6I@1*<#b^l#yTaT zl%rP~Htk~Vo+~)7g@}50_K~n<75W*9dhoMgkd+%%%9WHp9^R5S$kqgH(`n_AGik3w}+?KEU;D9BS08cwfUUcu)_iwxhAv(-d;A9NHg zMK^urB3H(9RF~PjXhmlA8*oC(>B`8%@o~M6!X9_}zyxB*)PZMR_`@gkCG<9lw_(4@4k zS~PqXkX*OJ_+lkF?OJYD+9{|HMZL4qW}UUu`+=m=SGk>Ju3G|AK7R9XUk3-(rQ;}0 zL(<;0!EW`Mo#IJ!t?eXN^65-zbL65}z1&vVZ#yP-FU|T>#HPLx`qaafir)t6n)m)_ zrSC0w5k8Zt-go7N>qxznGXX^-ToIQTEr4hlMITv}XinO%nX$!i&a!lz|9S}i&C_2U z%l#1}P$s@m)MzfW{g=WFDdI?w(>@;Qsj+8ZA8fp;Vqc9h)d$fjK4T}S3){j4r2SYR zk6H84_;*T591=JfPaBg~f6h(+N5aINR^`$J$H&Kw+v)Me>MN{q7X%JWoT~c!CjP5X z_n&AW)snDm&Bp1-M<(9vE3ycdDl`0um;tmn*FbdaThdP;OiHENgj`rTud##7>0(r5 z(V8tt11pWkYNt)HI@|Z1-mtzBJ?N>Z=Qqo$8mE<#Sm|ig0(RevOw`)gCGvTf)q~7{ z6JGWf3&Z6@>9fan{jz0mO>xYJZcg$?9=Rebar7@xQy`ETfUOfL28r8LLXkqSq zbr+xeBUDnYEoz;0Ko(rF=szTJ+F}f1?Ps^uByW~!?8AP zBZ;B%@3d1IrA|E|!a2?6EKx$y?+-ZgOvYUhpTd8t3A;usug}#h)%Ci!zE`M_BZ)?B zJX>J@fQikLR2?B}`$Lx=ySbvYK6T22Y}_MveMn*-G0yda*6)YzPT$*+@*%r5j)|;s2PekC>$D;1y-Kt-uP&CdQMR_muPnJET-&hJ-UvBT&T968VGdA`#Cp1SvVbw zH&ri?K=birk@R|PqIf5Ir3iSxy!tc`nm>PDsU2IW;OfL&eX!%jNwy9N>a3aKU)JjI za^~XY12$ql0C2Xc3F!h-Uxk> z5TLCJQOhk7$=L6!uq)cc%IuP?xG$c#PAfJJ_Sr6o2O-1aHyu}PgCx1rKYibJwhyB4 z`0`&#yeE|Ou(W_l&(f_0>l*{SI3tUDMtQe7;eE%EHl{3bx>!?OcsE@?0lvmaWY>)O zF-MCA8Y}^PaC`@S=(X<;LEt1mbnT_CAs_8jYHZe?G$PHIpe$tFL2`$VarTRbLd;y5l@Txi9-O)?#HO_hL`1Ke%7eVKFj$%Ng3%!lmlRr9hTjHu*c4P@ZRzWaC*m` ztVfWL(HIk9spDg!YE)dWy9>+yIW&%ZH%&{R-{14N>q??3NPiLvgoXJ5e-6L?b)14d zeBj+%&#gq)ov$d1(XwD^?W_qV`ery6Bhd#Ow0W*H?DKPBYHKIQx&KOVH#sV^BHzufWrh)Pi`)5TN*2fZn|| z{XrH2pMec|Tnq4eZhBB~KYwlgYxsN_SF+$&)0rqBZeW%zpd6#@3WfeH$D^v<{VvZ+ ziTw&_-1XH+QB(<2V33Vap_J5)@H*Yy2l4pb2`vgtpQK=&Wt%GUGA|Yy4I9lExQ;Pt z2v5!I2;*anMj7grqEo*3HT>d4q@~nBdxU;L1`KB4_RaZrVdpY5>HvQg9g+XC3^E@p zpDRB`7r_}J%RWtnf1H_{^UyEQT_uuMyZ+AKX58HP{1339{~>5+P?}EKwl1#+7(==? z<5zL5;-^_&05G)uaklama1XuY6I$_Qj!NW;Ny(Q0AzuTpOi@J%A}p7|6|*#h+k_v! zv`W(qQPR@V&iUt|M}0*C{`XvSDh!vs%?5wML1L%Fz42-POwDN`z+J@5Vol1`1$x1oKgx`0&Xqhkntoc_#_!*Y*BeY%{uwCP$#b z<3lKHn)`F5-J7QmcA*@xOe8Op!k?h7pr^BrwL27xY(ML~m5RBe9eF@{34ls9nWq+Y zZSe64@{hF3>nA0^ApGFny*-lA)U&5@O;oHN4%^0-ILV5wI^pce>J8`S77kIbb4VSg zdc;=91n?_s)emnf173iNRa)n>8Dl{*puzHY6{ z=6vw^c$G0;_O<=z4-4W4xG=LS2pT1&2NHHDZ92T;SgHgiQangs%;Y-WnzD9eFH(8U z(qj?J+}WH>Tky1I4><+CwuK9QC>1P#Lar;UqC!L~1!&urhs4R=I-?XI6n#VY1o#@sw>@Ip|`bL}E8J zr4cE;E~9B=K1&LKuU_l$qA0i*E()P0$z&FC^xDG z|JF-zUMKT9{RzdjjG-m|`z18cgeqOn@?k%Dc=h;r`CKex&}roofDG{7oy^z2Rizx` zp(6T8thrR{vr%oT20SGA$)EtK!4`Pi*bRo+mwM;g1wLppTtLg@d-2>O=^X1iYD7}U z7xi`azhnQdySGP7%5lHmE?)&aB8YJwKEtOoO+qZv?|l~7+EMin6mSR9iV z*-Y?mu$8%T9?O9>s%C#ALKR9-JqQX7gfgjLps}6m@yJK~mS(AMTY z9G%2Dl7h~Vob!h%EL1|%iWXeH%$e@Z59_>>su9bW8q%iGclM=st?b-s(0b_}&-R+6 z^EvHAs?FD|SX4ylH7VEEv=Tmag()!3B^&JM^t$RhoVeF}JEI6oSybuV+;Q+a(ql2{ zN(dexo`yq7!^jkt%K7$8y_vGrLyOER$yN>b9u_f=6-MG7c}>gkA<+UTm35k0ZTA3qho^u&g0?Epo66S|&97c?rET2H8 zg8W1ItBC_(DlmfHQl62c!ve5FHR@7l*9udIDAHKh<;DhICgS?!2d#()5SQtof8$+tbZ=H^MOloUbQ>kR;_W zh*caD>5^pLb1F;9yl%A%6N={r@nD5*q6?qC7F@9}&raKr&LC=(tXgn_=@wXXTJ_7#`1MLY~4u8uaGda<- z0=HtqQSJ@<`Hs+iAXDjohvPi1kp@1B+|QqgY?02a3S4p5!cHDCI10_t+g4OSL>esY z^Zpig6q=qd4@QEgJ@KBgF0OF@yak)M2fpqaGcJV7hE+9>wddg&Mk7pxkK>;n-Q;n4 z{*BoLD~7p8H@ZdJ(C4aKt~_I3pCnLAx4~gkN>mn8%Y$Z}BG0PKs<)#2Ge0dp#tiew z@2rP5$Qo~VcYU^U7nu8KVQqB4@J8huc$I+F7!@!`qY zbyCPzwsf8tT02)__Xu=DXS7hGd)Ma|zeXgR2~BEN!30KkxRssJ@9zpbypG?ojEJnq zl<8DWL~T{fa=KW%4et;9Oh)GdqTd-WST7i zo&Ohw&TEA=l_vmgA@qRgRdeYFWFqGPK_ze}rI?cCrVt0%n%CFYEpA6ScWrwgbPi0- zJNExXJA>YVHU-#HP>ys3D%cvqH z(rf4o#;eEjC(F2vC~Jg92W}q!=6x+O2^92DFbCp7FN5=${u~@!94=oEF@9?SP(ymi zhmb&#rHQSQi2$tbN7v_fXuw7!LATarFXxI)z+)|^-3D55<}NJkahytf+PW8XP@*Go z3up1x5w|r_%idC@`d5)$NVWX7cVz$=^h#eKaPQF2(0bL>%Wn&;Sject1YSm_4Mfwk zb4u9xwiw(=84IdzOZ=)`PA-9QuIS?pBgpfn)bM3t+#ernn#YaQ!q(Q-YdFi(xZI6& z49%`@iq*F%IzMy8UdID!;_50CeTxv)CWQhz#onnuv5}Hw-LBvPqBquCK zv z5Pf}e-yh$AN$D6kWpEH5sibHwN zGrzIsjg>SeEw?Xw%MyZrA_gdH5+H$HG1ak1BqV)X99x{0=j)t=wh$vojOdbfL%b}X z5iNuPB%xD2VeJ-|(ldPa9q0D0znrN)-#$0Ot_=7Jx!w5ihvNV)*Aw~b3Cp^0@8K|s z2}`%yk?T~{QRS&YTi`#earugYA?xVOlE-T83j({B(%bovpG%UiOKL`9d?vr>xHc_S zcsOFf>)zKF;kPFhR0N0O%Ef~|xkRra(>l4-{ETskIx;3M1N)@6cdp=so^|7vIZZ`q z*lLb!eEQGwm!8Ie`=12Au1=Z1K0O57FB-mV&81ZcqGEgJ7T_gF2K^h8r=mP3ns;4< zMV58V=3cD&H2w}k&yFU>%~_hLB0*aY!b19sm6W|G?04RA!NBCY*NTft8BN8!i~%Wvz}t>$p^dbI!+Mq@EF3k}vP@!Bbs@Fm zf(}pZOK*pN1D>~ky;=R9`S)s2o?$gwJu7tTKA$h2c-}K(Y-VKXxzZQpcJ#V?R{6Ln z>UYKOzs27NtziAaBnSAy(1VjHU7JX^WxknW1(NQi=7KE=mWH0)K=JCBxxD61)LmZ0 z>n2wNBT%*|(ojr=RMz59#X4nm5v!j0W#6NkG($&E->5;kykz#H4DzD`K_O0b>ZS*% zkLXixC4of1*3Zeg|7JVUw{70ia0NBb6Mp;WSG#bvwX40(w_Eso0{@r1GrxW_hqmMA zaleb!#?|({hE@upo8)>k75^>aJKOn*U+*uDCH(3-e{#YFsx!G9jA(pdLi5B%poT%A z!UUyEj4_pzagOxCa0>6u?|xdpBng!b9n*>2&f<=9Y9;_lk3_$8nfTL&&})>htO{~g zQ!{`!SLJ6YQfP9{1cO9h-iZ_ zhx*f@g&I@EXV)4bR9&XSCzw)A608qsKfg0nMo5TgTRMIGTFZOU9sO#9DFs?Rae2y8 zkgUXhFkVWhaao9}I^V2kK0~S)Wj)SG&#>Yt+mdW?TB$hsr0kn?^ME37%KQZ61je|c6W4Y4*-K__S4y}CkB_AgxZR%gX^Q>+1(PH+egTA;hh)n&H>NG4 z$_K`nFj+;};&kl^xKCJexxWJmF6}?&I*{VwX)wVEF{gC>xh#Ok#8b;bdB3#MMjFkH zLHfC{{u~}m7ay9aRwD4(h9cWW6Y+bvCI)&Xd2BbsWJdJ#pn;D?VbN!pji}L+i-VGI zcUwWT&#LEr^tw)kJrwKt@@!y)aZo3RX7$60Q>SyOr=wzKa##=Tfcc zPwXrU`OKuKjkGq77@>hj6+I;Of$GTk`1g$gBmqZ_@fq1Y%edHBVMeCwD`(%E1)q;C zayu#N{5^B5Sf#P_J;;FJL4fC9EaLG}cuu1L6);3rFMOj~pZUC@~`)|_cSaW8&Zi(D;*(coi(E7qt9^oJ{5K#Y%lUzp#+hI4nXKZmzjqKsl?K5HgiDF3Q%3D(9nDBl zT{h-O+VEv&TWDi9ytq z1B$9ToPSyB6e}Q-QXpFDK676h{yz3K4eDQ@t0n zcYRw0KieqCx8&|O+3(93yGPSy=_OV6$q&oY*b}PJG|_ z3VMP*cKJ)kNu2j-_qwn(53u7(a5+6H$byl)9|RG=X&uKqjcd+F*&g=4va_{@6p~!0 zQ%7^?QveBYEy-ND9&bwnR9m~&Y3us_Tm4i>1iR-(bo~a4-0+9?6Y16!Wt84?^fbe- zr$--r_Xn&>wfJ_4*B>CBa9Hc1o1o+T;zs}}X!UuQzw`B`(qrs{=_CC{HRZQ1NT3(A4WtocGU$NbB`5~7 zP7?}3Kr~`70m+s4I-VLWWPSms2^Lg5P2Hqm02Q}E} zWU(Fqd>y*C0!!YA;`*G73_-_r2yp+0K*UJOSqpz#)p5!}Cq{qLxKZt_H@|9xEsCFRhV!4=A z)wbXilVKsH=ilq|zeg1W#ZJliL`6-@q@}2nnT+;;qjtF_2_azw3W5YSwoUmj+lb3E z(r90%rGkIS;jx@)CD6ePgxqiIKH&KAdn{xS42v)b2E-7FfP&c_gn($8HHj|i`@8CZ3sKxuo*-J8RW&&j)2M(cD*+}|2m?rXgebhV%1wZREiFOw=S zqu~K>a|u%Alcy()a@`Bfg?!MvcIB*xoNhGKjza@MUrTTM!bt|{-nY9(EvzVlufD6x z_pY@I74^c?s5jE3V_;@}J7@`lm|Qo`S1pSbT2=&qdgajk5pDM}vPR1;EEW^oimAsp-s$W5tU~Bj!Sgv{`ZA!M4 zQ015eK71H_#JZ{tE9#WMi^I+GM-n4Mxnv`Goo{1=V&L=xM=weCyetRT ze)*U6V@_RG+~KZ`f}eI0EXqPzZc>}`P3Ulx)x2?eDeO-VjarDBFIyj5{SZsZ)3aX1 zxkmVv7P(6qXo-+Eu{NuIVPOJ%^T1fUb-v*~ zX&LsG{otdwnF*2*4`BuBkDh!N0o9p|BUDdN;hhm9SvswX1 z%UA5)E8_;h;hIUaM%gx7DW*E6L;vsF;QsuDiGBiv6Be_i&ADL^=`G^K-TRw~_ttl; zaQt~ecUcgdN5rQ+edR?gP@rV~avt~C6uM2{;=zeS)A6xK$5|5R)z93V&nl}NoZPkU zv*(ACU+&Hp8ZF+A%Wb5!t_g=nH4AI6hu^&CzO1dL@D;sY2edUq zc{?w{18#Qb3^XdF&wStdk+kf6`*T1S6fX+r!=KRK*j zYtYCo85ry{2N~)Mwp`|yFU32WyYnec<;nbb9bE%v_O+8fA`TcqN)kr8$e{X3v^v-6 zh_bPCaWJgiQhDm-i!6$}Ed*=ZThJXiB(Mr6QPpZpxtmO9Wv;l1A%+dD%QN9tYr_;N zEg!ods#U{Bj9J5CVBwN_g6_J0cA>f7IV^V)@CwGgd;A!vRDY~(*P?cBF`$PZn+2m2CAJlmGaJ0EA} zD#-M_&K+wPGTxy~&3ksZ*R5-XonJajqXn-2wXci4BI*YT<#TK#tD=T0HaEt9jbeK) zjkPngyVOV61PbpSK`*{LJAoiso|srLBT)5#H16Fv~{k_1E{{@-N+bhBS(3XMY=o>3>+jZybrs3_& zy2EQH$y<%Forx6UvJ+Y;MwSj*16zRzOj9o|0}^n&)DCokplzpvBay`^|3dY78u+}X zpAKw(q2I1qghRU|JqnY2I`1eyx?aVl892U{etoFCl;UnT*)g&(FlMEw`7YcHq1 zFni0uZ8tJEH+N@8g_gy0b3m}IvE!y(%h2zJzw=?V$SS`iSw0aS^z||^4Px4z?A7xT zNcVr=_|N@aE2$jn+}y^3dF(2rllsB^NwjsK=p>rPdUr=(uxccSK6A8iGF7#j+bA~a zr#Ac)j+!{*!7$HkHFmO@G{8Ts)dBZx1g)Al{q78?(?1=o!AO-6%2uu>H7lVRI#Oj3 zq^}(o6hhQh#PYfy`X2y$L4>~N-3;gap5tZtU7jQS9C!B|e%e4p$1rj5z$vGlz2p7| zCMTu?Kgg1#zrSzo+ObNdymsT3y?ghD0y=SfZ1t)K?!8aP>57e;=jP^;)SP|Z^TW`e zotmDWoP6Mchen1*;&xn{-`noCJB?a7Dpktm+1WYy7zc}I>0AKdQ=j^j=XoFh_{Xom z{`#A5zWFns`OF*M@P@oS%onTGYWLi8&qqG;k?XI&9sss&+xCSoeBqfsLJKT7Ppi*! z!eCLO3v9s|U;q*z3c$qRVZI1Rz#b@9)A*2+&GDJG@aDRs*=S#-Bs{4+5<-zzPzB4} z=roK?GGiAqeY6%IIJyv)!j-G~bZP>a!}cKzPepb>8Gv1CfgI*hLhdp)fiiS9PwZ!~ zNQH-;OCH0G;Zg)S|L>!68M7=~vt~_yfB%sqM{2biGe=R>?RF<8C-a3{tyb=tsgzn+ zSjf3j-}k%SZWxB0PRCkXDwW#pc9vygsazr)?|7DXeIoh0Ajq^u1YgO_q(Z1Dpd_^d zL6BhU2(aEw<~nh?5+#}Grb%QY$T`b|>rSCit`@_&g?1}WMh6F!q(&g0R0D5o5I+9-gUv=+}Q~ z&%UD%?LGLptG2n30wlc5uS;KfFQGg4UX_gb-8%>4_vx5y&o92L0I?1UX}Yy};tl5`^_wTVMIbYQ2?=34-I(mpSpw3=AOhSBats;^f#dqjOF~(e1b1HZ-<% z&FJb6Zr6t!Sn(hOmW~_(GY7)$YlzQ2h;QCv`#pAm!19ahWG#W@2nbLad_vh1N(Lx%bsYILcg!n z-&X-3JKJteHoEPuOt6PXm-hDe{pF|sg01mA zX6D7r57ua1<`~$bvxJNQQh2~FPP!|4ZGW{#C+Yb3QNy;ccPKCNs-$%2&_P~Cl>h*Q zD3r0A*2nj!SnyoDa<(_bKWdV9Mhkn7QAhec+%}_hEdgjnxBrBzGU2S#7;G~D_ zY?`#=q}%Q^vm{Ovoo0p^tWXXtAje78O|o{9q&Cy~IKD*xv5-JQe)XO2_`NJ??SAO$ zQem{daBFS$fq3sP-bHT=TSfgN*=8>Z{79L;H0^-VDd z(&@?DrzdtCo|)++ouoM=&krQllX`{?fMn&GGrEaR+tv@&^uioCu9o`zpG(D}|GuhpcrfrRZM~inP_8T5UPx0Q!gd=*M(~O&;EF5wq>~o6Xe|&i(Xlof5AWgx z6xwns=!v4M*Ix0M(b0_n0BqPR{ewLrYt4*+ zB90Sa93C2AX6GCLlfdcO1*!T1-$Mi`L^rWs5Y5)&$(c^>mL0caPbuX|T%39>U04PZ zqTNn9sY6nTc*zHDIPTF4?JQjDVED4-{Z{(pVwmafswq(xF$XB|81EG%<)lp9SS z6JrI)ixL5AV1rJOu!w?m8l8MW{A(Y{lwbbt7lX7F?)b6tLR$zTz|`@#ufP7m8}2^m zd;_M zZ*L{)C7YqUKJNcJ17}?Rk@vM+tCza&mB> z|E3#nECk`uim^NHxMO&DsNHUdg@P|Ajnkt?jyQJ4q*IeerSt$GjJ(N-aixBG0foF} zcFuk5V;{TVf(zdN{`Vg`bm*P$eCPlCpZ{~+x^?TG+*TvuXx4h zKmYkCik7UXo*`rwlmQ?RIcev>Y5)YXzz)Cx$wg-`1^~mXflB}dZ~{~@f&OB#;DL8& zd_FM=TQ}C*gD5>u_LeFJM6FYo!Z)B7;^tH*edxdxdfuA#15p66v*n;IX6|PZv2s8@ zAfi-Al5-1R=KujP0i0vV0KCN@;xU);QNQ7lla6DhRJpF*T3aX-&OZC>n{U3Eh$@xJ z`1trqC!OT`{;8*)x^LgUnVFd=irVeAwbnUjj42cf`TZIl9X)*buyd|hEY8l(mP#e1 z)MF=EkGjB*veR7t1QGqvvo`M0U<{Ha<1q>ckT>^@k2mCEb|7rP?q;5MnV5oHbGChf+zBd7saHkvp z(Z|2=r~l*EfBuTse)O|f&CDFxvTjwa-CZ-9E)Cy$|9)^hv(TKFocZN9 zz5WH~pKG*BotdsJTzdXlR=b6x}5QZvLvJe2W5;E`#)>#7dioQv0+G=Sfvdn?7RPcoIg=3?$`qaE1c}XXe5;fb| zZgX;aR!d!$1Ey9I)feI`yUfW@pXok*N96 z{R;x5%sU#ecK!N$?z{1Mr*Grf0_JA3;BxbI2aFnpkO#c$006W!Nkl~P(FM_KO4yN_weCfjM)JysQ}1YYm8$CB|Sd~Q+8-Mr<0s>p7I`g@S#8b$j4jt zZf$1aq5F4+z8o3qf6Z$y+q!uJh%kyu{evTgD7x#O9k<+e=kC4x4;?;&z<>Y6zYjcb zY-|{i9J4@4Qb-{jLYiirW>TUgBw);&8bolA7nnw5aF)O!z^c)~p}qkxAY?!(5deX5 zSr;=ccXrHx4xF}xM1+9QXm#H4hD-kNWB-WkhWds+@bOQ4?yvsx=&m3A($BwUc5c3} zzq)Px>Lf{K<`)#HFbIn!x6q0I<{NiicjJyr&RF%UZ@%<9H$V9H-}=}K&O77R-t@{9 zBgOUWR+raY+-|h?-SzdMbr-8J^%Z2-~4}nKnis#B_mrC6+&mY({3{L zB&oq5>@7w^#b{=sWwh>>y=l9>(CjjxKxAk0Y{$H0fFL3yfozO%*5(#6>~cLK*qpN@ zWM+w!CCN$Kw*B7k{f~voiLd|l=Qa%W&(2OKoz9W@`ARV=DqlN`=$di2p6Dd83~<)A z^__`>x6I6)diFURF1+yD*IlR6ZclIDt+(Cr@>jg#9l!X_&wu)prBYzA9I}CdfdMZJozbWb60sl<#c;u@`#=R-JMh+LX0%h@eDTTUeMlGBjMZ4h3LhbebiYIOl9Pp4YZx zT^1)=XPjwktrNl;E1lzRmbKHgon(p8S!(``-@K=dHr%_S`0{E`>H6<}Vcp7CuUdP` zt^@zlwpl^?skIwQh1+YL4$-{UlEi>e^*B4K^_ZfyMgQ)0p<&&uvlo=3&P+2~nES!R zd=m(q-n{Y!FFx-#blje69GUMB$*|cBZv|@6m^%pbC}-f^~_B zwOt_K#LX9E)V9nB2OB$2>$!AQf6whRKRVn!AVB5{nWbar=dy60!_$PUMqy^Gv(_0M zd0rQ-%M6PkF*-?g7zK4~NiYbgv= z+H6Cumc}ueB$#>Q?8V%`rvB}t4AcDzB`1r?R^=kO+XW@)9z!(rBA6Xygr1LC0 z&x61C3wY~WVaEENS$-mSj3+Y?0Brw?!?Qov*Gv&+U|zs(|@=Qs~V}1;5ei%*=L&Mn)<{Pg}F- z8V2lpUKj*RVmoBE#V81Z;hehD#vPoRk6YdTP_2$s5D9BcOJmeiIoi|!AQ+i%?TkGFj053cy&fqE^j9Zm!wkVV$kdO@MxuCud< z2>GDsn0A*Lgb;|rSv;CSYJ7WWZ-30r&B3+3;s) z)c$XSXS>IK25!&OIm9Qj`)70ed5~ggXy_B4_{53wBy#rd_Sv6JxP-Mr{eJP)Z3*x&zW;q|H*SiPE&$}Ecb3XD zEY`hab`K}&EykGXQK>kK9-q14=5wv_bNJ~(2yD0GiHVt$pZC00vokX@r?rU&``4^n z-)(j3G&eapS*y+O*}Z4yj$N;L!)w=W*!;ck{Oiu0ySHrFSgls1P|_1yPd@3#x7_ZW z8(J}ZK@H0#O970AP`QfL`Duxyc|?fJ;&1K- zQpLNIPd<77{{6LDZRN_9<#KuT>eczT#+Yumnu@P)gZqwbC@5 zot<^gg<+Vc>67ZU^C?E23E`Ye(^N?;76QdYm?o(egwAnp!{w|4XMy>^(aAHnZ43n^ zNfLKrB?UXfRx70t37ECkY!?lW!yt%CrE0aWvSJhoft||?8z)FC+8`q#FbG_FmKMXZ zi0CY^vokX@LEr;2Xp?2B5JGE{6H$mLga|^(&S~?r(oHjBejRe7N=6HLo)ZfprI29| zz@qIrHJZ)qesI_Rqw}3CW5(6PnW9a~@wiCdJlquCvSS>Xx1|rkq%3Tq>rRKTArf zZk+tlr~cp7pa1Cp{@q{u_BX$K@aXuy!xNj=4$aov?M}L4s7DY?PS<=Tr9>@#E<|4F zqYtHmU-ART+*ckbMt#Mo7>2$l!##%%Z&Ksz-J<)7>;vsaGWG zwma;&+~1RBnN3Z}ltti+9>2Jv>?T^F4?Uj96geeO`U1TqHoZf|ZKtkWHCE~$j1C`> zs$kGs5n5*x3Rp>GYoLHuYn`#brO4Kp4wFYn(j(P4(nz~8`sgyh$ZSeJG+5m{qF2(O?_X4p6ePP!=t#~te)w_*BeMoS-OUngj(SW6Vw9d+NG#UT;9Q_w&WcFC`tGM00I(_gDhESwj1+Jo9Kyzf4pZJ=BA(b z%R}sz^N#^Nd1UXQ#2eePY1&KjgutFOuOAOCYzm~{nJ1F$k}I|!2l#Z0CtWw z5uiX1O~N`!q-2TU2`L3S>lpLwJwmVu4%iWpAn}8{9z64uH9cV|wM-<8F^u2{ksSaM z31){<%G|&o*jY=87+k4TyySwj{_OK#UNO*k#mipu&2L@zk&iU*dEmesUUh+GH@DC# z_+Fr7tI>X7=Tt4xcW<9=HCw;>#^+Z`@_+v6m+pP=z~}$;zrN`F(-m@TOl@Xne&#C! zTVJ$d<0YMgKkQj^PCWMfU$|nvWAwHEbn_p)|8kS1&33a~?4O@$u39w^1ffu#F}9n; z-85)*=Z{X$3nE{6k%Z8fF42sDQWCHr0z_sIBuS7Y&|2r!Qkk7|PD){UIedr=P6=ss zx^3&$q2Zw)e(RtA^;_3pc-~2yRu4aTaJ<{)^Vnj#KakO)Bo@aer;?0#gPNM@9=`Hn>L>Euit;)zuxsX z13g>23wx(xf73uu*@Kpbk-^@ht?rsi@!lBr&DBPGi);MCDI-1i%rzqCnn~y2%zF5b4~Lc~@a2kkZp5o_ZPOw1;JQ18@F8WiZ4$7=&od2o|_{$ORq8JX&Y zArlto)1zoBs53I0r8bFay|~D*H-iTr5nM(09D(;7o+hM3P8=tI1y^t}YoNeW)2(>E zYXXeA3$23-$yg8!c+sI|E9>j=5E;;DqXYqGSqcn6iVR9gk; zqnV_FDxxfXzmaqkG^umWs_|yhMXyRIB>6%FUg7XedbHLWC>1N5g%Y{dDpsl`8*sZD z$DO9muuy^y_?!_4W&LKi2>^hIAN(Nn^zhYJ?qm=2%@C5P`K&slewx2XB5e zOie+dfW|Bi-hCfG^BLZ>2|xdNe(h@^3;_VF1pp*^QkBOZvD2ppgb#e+lHYyTO`rM7 zIpv-*ce{@5^0eVm`#ScIta^r3T3T51$aVH$HBcL4xyd`j#c03gCOeA5*uKE3n$ z!HZ3+HNbNzsF~?@X{}O9tz9!L2s5LP9Re;JklMvWT?7UxNC;6|XirVfZRqnaJY!&G z*$5Z3=Xv} zZa6J-3`vU`HT}8Yw@Ss%CeCRRp0mU(9mLKQQD)NbhEkrhmB)A4Oy?#EfP?}dw@h$^ zoKN_XF)x9Kz=$OB@yAoVM<=>|-Ar8X7Xj)r2uw=pKqXaDm*|ML?q|MZa`(tF!QkrBO)!G=H0RZOp))!g4<=ElkE0Pz%BSuDMaCsgo zbMApdPmOOzT(lK`)T+!t^pm%@v^qZa={xR+&*5hb%pj#~w>naZGtM~0kw{WK*f)6K zz^+EU-e{Kg?AhDucKZAJHf&nMZ02VsO2tCEW4CX=CkVn*PB}HpVlPmyc;$;{r)L~P zr_*9YlA_tDA3AjSr{kY_EOJ@%s#U9Qy6L8S@4ffHfdhBlb=Tb7qLb&DXP$Z9dFO53 zym`56c;*9_PJpuj7CPW@`E6Z5GZXnoi+jYfTuXm4-v#dfRezRS0rN2i=hHr!_GBZ zjlFw!Cut&;6wGOwIF}e>%jGgNWSMr(l926Ax6x=n!;j*>1(+EizY>51v~;s_hcu;x zR1%ROr?%NO8;!l=^Yu;^1-xbT@Xx*c!a@*ei$coD>6w4|?(L&P)eA2;tr(R%oh)bX za#;pSH8!?#)#zyIj5dzh2_cys^P5Iw*_~v(RYIXDqlxdRAF0`eA8zF&XOdw%5|-~Rfy4$jO!a9|=7 z9wN>)+H(udGqny3&^R-_i`f*%;| zN`q0M6va&wQxq^6Gw(Q-vcjMaiF3}{# zT&?lo-lN8vW;5K z_skX$q+}sMN+7ZT&RS!PWhNo51K;<8ARrPzB2AM#Jmr`XAc_k8{e1wCC86o=KQp!b- zPzEVQX3ZUU?)X3d{jIwW9{pb*`G@zt=UspHsZV_AsxMyt_TLMNy{kw2NzmZHpbRUC zmUrK?(}Q^Bp#0{yZ|)@a3PP9xt-rzcg8Dj87J6v?M1Ko z)wF-xYhK!V-v|GCX0F~}s>GexarWjnUaHgfLcLommXtt1o|~_kOnZ_Lnb5`BIk3Km zODe+LMj8+R$q51ppge)7nArl6AOdDUZHzWXNvTAjjqa^h1K;1f>!Bn`XXfU3R9G|6yLO=0M={nDjbY)weMfJ-2_;mZIn{ z|Kbz(Z@;ZttuWf5V!@@hUaPmeiNwV>fq(_s+;W+av_-33Pq}jN@R4F6iV7h)n3^2- zeSdg(1q-T8Pd;?_eKX@zp0FrD$VexNGjYjl3{;@MS~{@*Alt0BP+*%(-gC<#7DFpn zH+y@A)^D6X_)z2vM$~EQv@yAqnGFaM&{HS|#Z)Az%`$7OV>ZSbW7%k%7~9o0&A8b$ z?KpeVFU-F)C?%6L+dnmT+UB!v_}6z|{hiPK#yh{dd-u0*o7~aJIMHTvDcU>LDE9Oo znw)rE6jUQW&br`)0XQjuvA&=Zh2ynWrR?`5YM`li#;rBIr(AZ)uS_1j{l**bF(U1B zYsPdI+DA{?diMRh+7Io!X`mQst)%5>&1P;p zycY!#0iy39KDN#L&kw=luyd87X*TLQ?rKG&eLV}^ zcB9b>ea{$6Qv1RKlGd>W6YEqcU-`aNUZ`Y>@j{%%fyE?<;GMq6u54*B$Y*E zYYYg1-}@d+O~E(5f&KkpEj%WH_gFW}r6D+j5MT_9j>6|Y2XB2V#xZ+dZia$U#JArL zzx%s<`su(7#w<(jj{C+vPPp^9pFjEV=uH67i8U$iDa2YQfQV$4W~8|d%fp~YhT@K$ zzVf0$<>IVq=^(8&zJpe={ln>5MVKv8e`JLGj1 zYVU|9q5b7 z|9bGpo$uSXoblR^{NS(HCj_C8gy*Lj3*lL7^2AwOE{X?>wJetQZh@g(9RjV*)P2D@ zuZTbTE8fH|>Kjg)vw~3wnOH6;zYr7=907E*^!$@9+cwCazROM?G;9%b7dHY%;M_Ec z7;w?T#R2o8N9bav(K81GG;A`bPjs;uSfNs=p5ySI8W^Bu?X!CA!l$DSKrjhAbAp-N zPXq%Bl>UiVewMeNb7MdEb3gaix4xB`kE`U!o1G7R=tKA1b5Cxb`Q|sj`OR;B^NE&! z`dDu0KKHrLopsh(S(ZK7_FoVf3$T zgf=2FA~0FjxERNvB{5#!+!Em8ZE|_A^C=;8bC+@fe zUXuKWFN*%O!N>d@7teOy`r{cbJR@%(GY5fRuQv`JJh*bzN}Z(N_@{qLlDH6s3=?UZ zfpcSHLs6;Rjk`PUyLZ*@6cF{7!f>E0JdqmPY;^!g z3Sq5d051@_-X0n*%5Kx9s^Uc*&$I`zU9nknzBPVG>rEI8vRVT$3s6T)nGtLTw8$PU z_Yup|rTmj)vrLYig29q7eQ0QC_3G92dcECl=e%8|QdzTR&EVkR+}vE6riDU*h>|2p z({%Of)y9}wt+sLF#x-l!BuV0VUY@Pe?RJA8I5sWjQQg*~Y^(DOn0y(lv&=f*_l#y| zr7D%0X%jt4>U^&S(XVwS(15y zoUS*!N&BoVV;7vZEeJwp(TOz!XK{SvkM9^5D8Ar=vwh#Q+B$Z`L`294juBm^HL^gI z1Z)|saYRIzQ*ylcd@{O4aUMQw33H5FW}d}}OEezmzLbd8vStGSx7~UFZFk)Z9Y1lST#q!Tpni z{pHo81GnA3cXEF2wJ&)7rfnNu_o|mRTAk}}zV$2Lx*?7eDTTF5GC^x|S`>ktvj7kl zebY{m$XFAUi;J>HcAh7ro(QZBG|Re%J1@1u~;XGE(y?UYli57g%u(%n_n>86EB zNhnW+VH#Vl4G0oKAwrUBzgPf5qoLbLyOS*f#f=1XS}1umR&C9%bgF z!N1(GfAs8^j%{55?M78lQ12AxCpY8V?LYqErKfK>?c^1vlMpFj=Nw~13k!1-HUF2+ zIQ`2sT;2ht5_wPt0^0vo;Wwru^kir;6J`fw{oXIqjlM(<>2?BQPn1D!# zTBE&kXgCZ!074{0R7yEu&CVHSW~l@TbQ%!RI)_pKGg}ubZ+x%mTa;*66wY+Ai$-I{@uPg)fO zUZd5i)!Kw4q(F3*9fR$y6tDb)-)*|mfB&stbu)MMtvSao?CF?pqnQr%(#X)j#9aNF z@7=I!wC}>RHb{0W`pN*H9XR8h%>a>*?2<^>u@!`fi^hYwPbOQ|nOWo^nE}BV!^jTM zTC1dx%r;FjonG?N%g#FQ!hMGhcu~1h42G&DU>@y>kb6TRT1hw2jvW`nV5G0SqEa3# zg<-)vd}z+L<6f_D=__8E#Bni-nyt?6=>x0RZW!CYb8c>?x2LCEEGnc@v9NIDh$jdM zfPfejK_;9)M?z%A&Cbn@jIFrm!JX4{a}{4kg@O$HDDbnii=FnKoe$l2|MrFX`9Q(Q zP=8O4uJi__>OgO4V<<1ItlpUT5t^3tWzuaXb5re!@uNrX?}e@9fq^t_4)w3nNn2-` z&UBV)tGgBf{Lo27gxCqt^MgW2LTK%0Y0~JXapoGS>n5%pyM>lH9)HISF8?{sEA+VF zykzoETI!kIzOzD``I9$SzjobQ9^7-sD_-!ib542v!2|a&U^C68;%<*8Mv74~F}W@Z z2Ld_|>~QZ;Nr{DS5}U3>)g=-7MZ@X({*i*;?U{+%wl48t|G>+)Y(3W#ajQP(Y&zTA zeq{3Ajl*XLtBY+rT?*wwef*&VQ(gdBvoY>WL4~R5T4$6}mNXblo$Hz`QE5hLMN|Wp zE$bvo2Bv(>_cI}4eh&YJkSVi8Tdeei-~z>7fHSpD(C3$BK%hI#loR9<`%-LOIkw~I zWE_WuP_Pqmnt9|jpzwT>UMn-9M*vg^eFp(5Zgg4;Sw;%Vo`(oC^ED&T8CUNnhSYqk z;W4tKZpv|%6}^xc$u$N+cP3}&dkZVJj;yK-$qZAS*5~JIjkrE>)a=|d7L_ZNFbGwx zo^_1DS`BvXg1`M+s8+#RSej!$_T6~c;rijTmtYKR+XkQhH2jzUg2q7Z8;*$9!c|wn zX{Rj~*!xLu+LL`1pVabKUI{s)_Gedb9q3=saT~G{5jqEsnVn@Y01gQS2_ivDfJd@- z*5+jzEHE$=g2?$kX0#@CG}mfo?KU&R2S4~U*gF8Y_6qm_$G?g4(>q)+$PP_#BZp^B zOl>U$?NYH|t$S1;%UauNbr8Isa+M@&ZR?HZ%uGW8p1HmXI==5<7N>T;V`jQpEru3* zezCA>?XVQQoG8f*BuE=OIcIdERSx6_KEPM*_~7Fl=^uUPqxaYLcae>=l|t!<2XCM0 zENrZfJur75j7kJVh=CWfHClIZk-HAGAt_8_mcpp}<8PLnDU7V0 zS(s)93(!vEKm}pB7nLuKG0JZXPiR)RM>mE;r(d$ZSi4ErtaJ>P*)bvjAy`xuwr>&V3rFvYy#hVH(Cx861e0;kDs}#U?RUrH zD4*@^=TW)A!NEWN<3H|pyL>#Ovpl4D&pr2i_`@I0g%=|uBOm_ohflQpGYD(#=FOXb z>$iUEPyXajo|FiW0F33($J#=TWN~!GU@jUv?!u4r)$zd=0Hs7`S1Oe@Y}ha}Gt=MS z@B9AD%*?Z3q{%A>-WjN22l|<2G8loZix18Gm9;UVc!B|%yy}N@&LJt~`JTAx```ZZ z)nC%qX=hWNTBEJ8VY#yI{7d(J=POmItU>@}$4V%RU;q#x49Jgsun2h*&4R$}erQLB zWqD{sr`e{h+q#*p)jB`C`3HC1dDq!zpL^~F7gc)uk|edpGUv8Ec|`|wxLD^7k3CZ0 zyr%tf@af6YtB7#@_vV&s@IB^hu$DcKj=NRo!1w9?2U|OLw@-9w86e9XJ%vQ*p9LVZ zE<_iEg)`y!og*@*t>(9wlM^iP^ufi_E2QjYHphFv7(v35pE*Bb6U<7fy?gif_xG<_ zwQBqJ`(~zRgP@?4-)?n^rNS#-b=h~nbN!un-L>s`&s(!*W9A3#=ED8=KN!dQ!VAue zljNSew^u5C&bfuTW~0871Rpvw)oI2gqvN6eYAFaq&+{Y{ zRKV86S$DSCY-NTWdqNRP2B)O-Jt=^79QRhDZXgt3U*hIcLtxUOsu$VD;k%PoKgbpA zRY4U1X94QKIv3zQ>RK(cASV*xE!keNwbu9j!NEb#^O!kF66f6T@Nlcu%CC7ChKP9J zz=0JjR+LI5BAT6@9UdM&{q)n@?RKtf&s`-uoldn{&FjnB<+?b>+{a`8o3FV1m6X!C z3=xzP#=6M&uvE}Qkb-kI%d7^=#uCu(L*tv)Z>~mx$&y5;zF&%pg{WAF!f0-;@xTN3 zML{&sKhR$&dMJDfH~}TOcW^-VR45FXfh7?EYfGTBIA-Tm-~*Di1_8i15}35xdv@&( zqsR|}G)Y)+xl~fBFU^vAtws`~C`#hgIm^x|^^Bz)A&_zDfWPh~L+?3}u*QK4MM=99 zpSk91ndM!6W|qjaMcNFB0zarNw4DQBXvgV82dB>5wE9&qI$wFdwbmNP%)XL$Y~RuB zWG}hsLM1Rs(&a4H{MHkqvy6Gy?U)D&$T@rLkSQNS!qQW{EVHxDF+TjL=T90h7NcEi zIsozqdnt_;_8pn{%oo1`0Qc|Ow_)9yx4-TcBg3ON-FfHtZn$lzZ{x<5gX4!L(zsh| z&Fw$B?~T9sOZV*FGtk$&a^2RbRQc<_{KWnD-hSrEn<`l=)wx_a@B=PsrQfGi7MP$}p}swIOWaEOWoYGUau7^kK59KeFhghRoUWL*_2 zV}!#EDGSJbJ9>bOk1gCtwR6dCy5>UVe^*jll>2(7aW(vVRn@ZUM{Qs zZ1hi7dp$WYpm15-xcOVG)8nWB5m{$yU`5Z%-vr0-jt)_>xPIJCcDY1o9XyV%jToh+ zTPDn#PCNb98@?6S=K>Y7F;SuL_RG%NdCOge{dY%6Vmk}x441~J^o;}i{jHlXf72_l z+a@Gp3qZ^)eD&SycD(4tudb1Q^NbFV$SszFe!LTO93luQ{`rux&b?u+cWmR22-@&j zr$?up6dt!9M}#cnn}6KY86WTRfH6?5h|6EwbKJ=*Gbjaj-qX42ntA1&kfOWb+)}kH zj6KfnWo9Yy(VQ=VAi>OOmgaLnPk2lcgp@)`DG^0pg^is<5=fRIZ$PGfnw*;6ym|9~|8MVI zy=vv>KmUa^O+4Sz7Qlf6CN`A2VMu|Fj3H8hGSDVTjRETdB|RY-EILO(S|{~JQ_59R z_yCrffx&|1KL6B>BY*qx_uaGe(4ix< z<5RV_zv0}!yY}{t>xYxMJ5O2RzxBm0+qimEvIrxYWm&z`?X*%tBw|1VK+duQTPhT9 zy?4)%@%oD|T0e1g{L^3gXDWQ-jCJa)t?PC?bl}Xbs~g>}@8g=`>S$j$H&g4W6g%Bi z2q7hfA)*WOfkCDn3uNmMm;jVqb{qjA(K#drZM3o4Ix9$FuG+TRBkU;@dj>~_SF9RY zwN{0dojdoGD?z!hzpvWciIY;~dxCnR0NIriKS?wZ^i`w5VpR0}g6GAtzVFTl=R2(n zf8mX1UHJS~v(b)|ILT~g&$-|QD)2t@XMfaKSYV_;iZJjS?bs8LOB)4(Lu#^q=4G#AWjf}30N)^FEIpvIn zIaBU0prN#FD&^7gNJV#RB_{`m`(~%63SmKd!X(B%Ro*V-kQ6$hu@*FRyh zs=fRr=e^+h=l%I-Kb2-$n|4vG@B+DaV)weywY`=8!_xaEEtFhfw@nPbX>b( zYWcBuomNQV_+s(r@Eo2fWR*=y0XqUgnbX~-?YeNfmIRm<0QMdjM|Og#o9W@+{#KSw zH#?CpV-h4mgRv|uTL9-Qo6IolxRV&?3mN$$E=k$dx|6h1#~qznq;8Tnlhl>_+cxl8 zwix)C@6U9yKzL=3oF^$rgPHo=4Rv#1xV^3}ixEq)FflbgHPbmfvx*e>siUHUV7}eN zLJ64Rmwy>NZ;@$x(icF2F>wC*@X?RLZ~i7k5g>xKP%Ogtz6VE-!pfE4+%rAed(yc4 z@@qeE&9>2Pm(TA1W>`4VT&SdG(pilpr7TJ+DNz;N^p2O|O1$8Yzj-@*V7k+tZ5yip zq6$~DefNR!{`IS5vEXTAkDWMaV+Q(r=jS`S_f2}9)JA)r*WXvklJveK-Fq2`914`4 z??kvxd#bS2=;F0Ip8P)(ONos3#x9ta^iQ9lI zO4YggOkxrN#9)O~QKi?A>Sk$Ih^%i^?7HJKdv2eoAH8DDr8n%aUGlEi^w|CSP=>xB zWJZUQkj>(Jfb%NGh@9t-5p`g z!6clu+@c=fNv(=tQr7X~p4PLu{d_XnYPDYQf)^NLjys3U!z+zOLu;J}j2ex`g%@6U zqUE1KEXSk(;EA($%zy~L_4Dw)ck=Wc{L242a%8fd$B&k`b}XK(W{ycB!0x^Cjb^%b z&5EN(k1i}M6pO`Tv3S~Pr!^Y&J$v>7z}Bt&;Db+mtB(iY8!33J-80W&I7De|`^m-@ zoihlIq!;-9!u-US|K*>r|L*rJKVt<4b~eL*z>!Ggph z?PfV{cautnsg{V66tYNdw_TswvwPo~^IzsgfzhU?r>Cb{MZ})oo`v~^>#zULLp$y} z=lSPvI_dOswTA$bB(-dE`cD8Yx@hLUG0Y5$hRIJ;6Paf2akh|09v=tBu-1?B>i#Ep z(PR=8gz5>tCFc0qR^Un5E9DULi3oCLen#qE(7pHW*sx)Z?}fe}0zkD|8X8&~gh8j( zT(@@B(9qD)@k3o_qhd5UHGbiR7aTftwAF4Kqt~um*X<;oPS^9jTvODlcb-*x>8u?FhD0YTd5%PQNN#QDP7ls=a~oY;D}eIw@Nv zd>Mv`P8*$$1oj0;8G)0=Q9DgL8kr&R3qttJ#DE0kdtR|r1SVr4l%55$Me?K=$gpj7 zJ@N`8KKc{3Ib&NzN4-{5L6rd~0LC9a{$r@JO{b=&W@cvU_4=AMYo@2CopVykv9Yn4nVB#Qw`|#x*T5SX7zlzO--WgI@ZrNN zSFX%8d3g=jW2Ifk@`#H{ucgDtnL=X>1BD1FaZwgpN$M*ACrl8=aoZT{DSx4z+`nh< zg=aiZYn!Dh6ic2Lc%BacLEsA^CMJ$1ousx<3rGzPjz&?jSd4o5`%R)VW3|aLuq?dJyp;5mb-ODfwQDk!0bG)VECEL zuwh`2!ax)sXBh{UpX|`>C+>HN^g4EowEU>B^R}#A{k@}i&n+rfYD+pa?I2Tw-NzO45uw%=dXSL?{-LcC{hUFEntaSj8({lM? zEHnCx&4P1~yWJqLwZP8tQh%A}buu#mA~EMZED}*p>D_wQ{kPtA|AV`BpL6;tzwr9k z4^?}v`~FRnGmY>5c>BtszS;T4|M(xj_ZOf3OYq9K-+sp{UjL>qeetiq@|CZQ4h_|s zZLrYjbRO8b`}yae{eS+~`>*-x*Z1u|7t?Iw1^rJ`b$!ZFW+Zy82`bEKB84n0bQQZ9BEE z%M4hgps%Demvq`pHmnwnVO0={i4c=ihkYJlej}~vI(DhkKn`@QK`01KW;C$F%sl#8 z(wU39=uR-fV3yT>HL&9N9NW`^1ClQ8x{GHQL6wyLBPHVf~l^%X;y@U z1_>W`d|=U*gt~jiym4dY6O;p1E$0-bTCEC%|OJKhL|8GIj!up2v{@%XnFpjwdw zeNyY=6}mxShDSNz_+Ds?wvLg6T#A|@3Wov(p%4g?5CJ$fnai!75EpBh5*w}O=H@%C z&dgAUS*cVkl}f@BLFi}NblPnJj!2$!&Y35lvaMEcB*sop&6LYM!vjOzZhY{- zp-iV?6cHIlkbr`Pa|QqekpqX)gPeUAETqVitea?!Mk%RCIKr?H5^>T=p%PdF0>QB( zBxFW`&bdrG5<(FPAxH{~j*va!*X!MHeDBT`D~JB-AOGd|fBo`yY$RnDp0TOi)4y*r zsRVN4Nhe?avXi&247J5fXK9*dz;T0_S;<8YQ$%p=*r745T8+MO{cXGVO}_B_lW)7{ zf$!dO?`vQ4^1;!q*L~%)!~KKxPR4??alPf@WiLD{j+5!>IkLLe>;j?^fWk45HP*4U z)=DLb$di&tGO!@D)^TooOc;d12SE(ZIVBY{Xl;i^Mm9e0w3VwjR|i%wia1VZCZ`VU z-(Bu0^!HYrkUJkbeER9@h#-nWK^O>O0u}f{+4l;*kV2pr+Ug# zWS3lc{%8N{uZB89gFQWmk507O3tMPIwHTPR9grOu>Djz;Lw%yr*mWpV6&q)goLBHf zrCeO7leRL7TqtoM~{eb~-b0+|ejx7%3u> z!eb7C2!+?>`ds2%t?QVh;F0eyxKIukKs>b>CIaL(E+<;x+1UQ+>&9;1c}J;y!LR<@ zXMJz1*`2ha(x~rF$t|=yJz+%Ep3OtDK(3+n92HpdT~qVpDtz6Ru_Jr-qM_?1rYCib zB$eTa$P>`&bl!CFg$SbCn3fbX84p-zUFNLOnJkw4w_owb$s-51tlRL;*Ztg`JMLUR zx@vs#=)uWNFFWfZ*KPmtS3b?agbvVY$N&ri7;7zOOC7O0sW3E`#C7;tut0wf|Avrp zTX%Krg<*r>XrtL~TLdTtVIZKL#G_HvrzEp;taaAewt9^_bhO@T0m?!llmd;l&c;%D zh@z`CSTOBODN!oAkW^+cGr-zwB(0V;jI!Qt7b?Y`p#eZo>(uwzuk^NO7iyivL*+@O z10@Co)tw!m>u8L6dXrXMKQi8G%{s-VTChSW3g+iKO-%=;7NEBmAlF_!)d5+~;l29R zFh37}_=ixf=7m0BejdL3Wq9BF{ykXLe(-~E<&_VvzU0ccy`f*MxE8p;7^k+`Xv}ou zmM{Ave{IP-r5c{*siIVg=LJ&A<@vKQT5D~M>?V`*o!i^lgPruSw#`DJQZ5epsv?|f zO}7pl*a5)5`m1+ca}8W^#nU+4YXGi*2cr>F=!dk?Ojg#j%>(Mer0^ALynFm`W5rmx zR1C~gAe)($l!(~h7X^W0hkhW!KrX8O7iUI@v{*05FJ$7aSLZG$!$kA@xHC{IT zx4(GmN<+%OvN+PgRZqS0tH8jbPs@w3l4Z~y*-#^`5?y#oN|%yH^CdlnRU*71|}^jE$| z0z1w2eYgMco8SK0;X{+;DJdkP3w=3p^zhWw^yuiAHrg7!;oOV1AKs6~lIKxgT?dF1 zuyO4q#W?Z95;>u>R=3+YxMz3M(D3>V%m8d90a{nDxBL)E0;YENp51%)>>XP1{gY4H zdeW(9jjmZANKfm`IScFn7Ry;6ATRv}bchcN^PU2khxoLNJD%q1Kl@;F;#)%ej0W6~ zzkfE&`oshtJR|QNB6hpo`|f*CDaFjCQgOqEwViIK7!{k%#>&;JcieN&e64oYd6(EE z0hA9saNpW>>l*cT6csBKGTQ9lKc1TjBf?L=?%lsL5U>J977By|l(`B9a)Vz~3>r-l zYm;8OT@4y83|Li03beGUA_tpufk+oz)@Q*-^u179&5oN%*RVql*n?ENPLk-%`O=p{ zIv_%6*;tSsiE`1?s3-^#d;sYX1u=Of0i<(U72*<*>OgZ!=s9V8)2&)4LTM9B-UX1C za&yb{=VJ*oI3|C^7{knkLLm>9=GK>eeSI@CGqba^KmPHL^EpeBB&}9!VPRo(bd-n= z95}FQ)vDp)VMI*Rv|KJnQ4|D$Qp#GZlsa_iP_0%gm&?0$?K<xEw`FN`uTyNeqz+jASBY^y0)CZGgz3y#JxS>sAi0>Xy~fnH&0tM|V7Q@7Qqfp^1gQ z-e|{xBR!=;q1F1%^*3zUwk1om(@xp+q8Gk+uC@^R!KxLNdLupMdC&XNUE9C%FE{`5 z^)~`QZUvu9QQ?uI*kd_$XAB8)?3CwuzO>dwYl=YVG%!jLkU&n;O!*QC3H=}{fJpnw zg{Cn96(o!1TzhE6z|cS?j?;RQnwU#fPl+-DcpeG3P-&-y<4 zN_J+taW^fkC<=u$d*+LMQO{T)q-xKn>0HKW9aunNt`hXFxVK6M_OSSZKB&D6HSMDQ;(;lsZe>tyl$0dI~Hsa5qU1M1S7^5v?2<(b_p< zthI*^9kmvKG4Q0#GDpmgonglg0SHM7w$=&&N#t0PM;T|CF*>tK2}N>dq0uu?EEEE3 z9ib!y2e7PZ1^_8gNJ#)pWSwJT%iPx+ef?W^^bV9)^p8%|hfYi4`Pr4-g{EU7(1BwKfdA?e`z}hkyRzh39VBx^;BV;o1j3 z@__(ngUaeNR=nx=|KzH{{$4;PBxBtTx9k{OHT2`V_q^zWQ;X$@83@5TW5FdlL!=-I zJr8{)0_o*enaoUr5YSW7%Q;p=MG65k-9=QFUiQXKr<{eP8jWVX(du-%X`-bkM^~=N zvNSa`w0^_gH{aMdQW@$ilVu?Z1rlQ9h03w?1d(^+O?OYH?!SEakG7q2X3}m=O^#1Y zP9dW2`+Ilq>2%{$PC4~eZ+!dtvoAihcgOBs+h-?_-nC}}r3jQP5Gi0mRKS#k2UJK{ zR!3HQo)-vu@ry3K?uH+%9a+ITQ_?!ClV(<5n2$9NuH0PNu(5BG*E%vsEnV`e==*+e zflFmj1qzS|V@|x4CE1-zXXcuXc%Y|Jtwvd97?=b}C5`4d=}t_{v=RU;pp=H4VXLI@ zJ@Pl)Kavu1*=k-_3sS6@|%!jm?wY}Ai#SUFHG zU^qH7)>k&R^_APcJ<*sBJl{Hv42;Wu&f2lg-O>XHw&9B1sx_ZAp5#S%4$t8ckRvMx z+VwdT$KAHAkQ^K953DU(D*EAYIVzj(Lq`wno)|A+iP$P~o7b+~H9pnsv@BZR57_}i zhD?MCh1b%ir`i*R6~REl>&9J(yClehNDU-9MbF=~b&Dct30qkJC;-9w-MMx>NT}jL zAjt;gjrvXl2-K8ioM1qKETGSR5Cma)ww=y*v!k# z3Md2{gTMHTJU0h_{^!`&$Id~a0AK$)zUy6FEIvxt@TjcPV|5RYa*z3m%Rdo(-~({w zmGHj*Q#|9;mz{RfD=Nj+g|IA0S!>$y{NeFC?tbvA3-#MudizZKdjsKR<=|w`&pgkU zQX-&r#u%HWZl?V&^YQnXnha)OXzl4+e|hD|>4l(&gs|46S-aNSefAmO{r(MKz2XXZ zS{&Yv8v!5{fg?l*jKM_f^nw1JnK-gLZJrDjeQJx}XfSn76jw~DuXG-5mlIO2`@2_0=JA>0}Y-1XW1mrd1moc zwmETR@BI(lf6I@4bmZUxR8n}JHWrKlc2>K3Yxcl_{iCBRjk8%2S68eae%_h0_x`X{ zu2`25A|e4XsgRvW(hSL(OsAbjy*7K~&{T2N#^TTjq9jJ0Wl5TLx=E*#d7keDER;YH z_1eM>-@oCO+i%;ldFyGXoxWz{#$vJGYHN*QaJW>S2bRt)?|nziPNJ%M$XOY+egG0vxCW`@S!w92y$(Ja2ApE(ihus8*{%5S(_}X{%SS7D9}Uj^-wrp63BT zsZ^3uE>jfFxl*Zg=+Gf%{`99m-E20;#>UP#|B2(LoTBHJ>K`mWMb=tGI%ZnWS!Pe#wvIjc-pw}-j;=dp z^GXk_Wpa#!M2I%kho)u*`-^?mNRTkbEa~R}fQ86uIdG1d9pbV!6mlIVvqO4Bu?a+U z0G!teaNu~+@E}M2$XjN1cGIoz5C7R`ckSAFTeve{|30)hlX^*8lsvFaDP|zwxZ|FZqXSuGzouNUt9Rg}AR;Ub{l?IXG!E zGgxcP&rGggyY|8h&b{f!_jF_3X{U3uH6_%Szxk=#?%e?Zc}d9JA$D0oxcH7RBS3zT ziy;U^W?+_S>WB>>vjR_fmf0Ddb+IE;9Va%!qKs-&&2}r*aU1ZGKi=M=ttOuh7tZ~OW;{`wbReWuimiXqdoQi7iH z^HvUCQ1U^uZgvoTLTxNbNvc$wJTm>&n|56CnzyHg>Q%R8tfGwJM3(Bu1vvnKkZ`8$ z?d;e!kGTdXJoG1a$scF2CF<-aul^)%FCx;STNR-IL|{ZBU@%(8-8fAXDV3B`O6hq% zp>%8rfx#JTJg)!%(o?(k?QeB0F<9q>pqw@bBm@F*gpjuqTI;-ZDtP|PTx(&WMuL(w z^_2u>VwabeK?cW;2?Y^JX{|w&J_~s85E>vtNFr-XKmcf*xNZBMUwG~FSB?!oxbNsdUu2DmLVw4;!?)Zqv2v(aNpZ_9KX}=> zV_`6q*)A-WCM9EB9t>kK9LLe88v@5>urs9lk zBj5SKo-D}_fPkiE=gGrWVV3_{!d)fd}rodwOmrO--RtNV9a`_I=>IGtN96 zfEQ|Yuh4tSxi8&(%DG1l?A~?j|1LS!&3L>dB@-yZC=x1|h9MxmcJ<1r5VYcC)7o|W zcI?@H@1FC|-&XP=Ys8sU-P8{B_fuFlDgZ^L^(*4JTBF%5f()&aPTIHuiPMqq5B0lD z?byA4VRl~C%%=6D)oNv-*@hGiIP00t+ycftx?hO>-k(RT`-I-NXLS3i^-kXSE+M4RRvW`W+EOD< zfY<^!DIXdiZ+&}VcdLEb$y@d!T)peaFP(P!S)<*Z3$-8Co0DlW;1^=2^MRBP7%+RD z-x~x6j&2{H-CwPQS(Y+)n@Nq(c>x`noOp20c0%J^*K#5Rf@6}PAte$9T!B(2MFQg7AfX7~43hgSBC_+j8n z>a<)(XC~7^kd!J-l47~{^s# zI;>6B)n;_XnuVs*x>G2Iz9O3?((^`#R~+8cm~Ul%DU2kd%vhL0r3Wo^IyF{IebVoG z5}X$X9p^d?Ju}znwwfco(Q$3WmVZC?^JD)wc5aD6fVKGBzs<9=aMe}V-w(bI2M)k> z*Wu-tgSEI6Cp|X3^w@14%i%q0FOR?c<0B{1e&-{DFL}`$Puu!>qruv=n@lq>0!k^j zY`AD_bjyvmes*ehzq7LwoiB9LSN8-Lc|oeAhltiXo$1N;ms;+&LRbRu$3{-O_?%w} z{EF6bH=WEkg(wDkH(vIV^`%m|So!J|S2Qob9Ikz8weYTdA%EZl1(skm005?w&F5__ z4@Rmn3H2iOURo*~I5gYt6h?-so+piU%h6$%dy_0)q+@R)9%pjNj6_0Uv)!GUw^`Gw zq;b`|HeK?88*aMt(kF7HG4NPnG(<0VNFgDNfR2u1(`{!>9~1+mCKf0>zu<=@l78H6 zBxwg}u?$>(TM31AX4zgQ=N*^wOqQMmKw`F=&rT2TEwmQ=;kBmS&_O{cj{&FKwO*Tq zt=3l;`X0FUH-GtM?|9Mh%VDMPn^*?z{J1&-V`O+ke^XUi0Ide;}1yw{D$MDvAn6k4)iz(prg+ zg$Aa@L|rCud4iZg2TYE+je0<|_Q+m#D@L<4v4YSG9qTX(hoiKNexvD|%*ICho(NGE z!bk`a$Ent)W?FHQAR{A4rIhld@CYDHH3KLVffr|vC=A0!qtV;jTd7nA2M2q5dsnSm)!*Nrw|GjaEX&d~MMR|(5oxUpg+l({ zTuI;QbPgOiuz&ylAN}Y@Kls59-uAY)oq6V&8#iur&ZTLZB+0Qn4Kpjx^R1DdCy_Ge zJWnB_bKp$o5m}=VQAn8+Au5Ot%{PwD&aWP-G@H#J@T{>?%5qpJMupP4b)81rIjcNj zbk=FNUF3ptflx8C$udSnPpYUO0v`au7<5Dk&RL_4l|m>nH9H$;DGF-0TZpVw5Cmb| zjnmZRPK`upj7gHr^ZY07#r^LY`DnyBMdh1n}o;^0yZ;ipFQg*N;+*uakE$t4M=siRP1o5cJI{+Y| zbC}1{VX5xjvd1Pf6JjIIc!_zxIrpQxcdr`idBaODJms|0wr*U% zWAA}$zkdAAKdn+Ybd3Focn}_gAdF=%f_TRzfQDR{DBww$nt1!Jl}Ne*aCFO zA{Y9U2n1S@b)Aq>3QB5*RaS-a1GgQ#*EoTM5=9V%MK5h;Ge$B4K$g|qLbEOfAsP!7 z0OJKCBp8E*a@d|~&F*g%8ir6f?b-+D5y&yPwsqR+M0X~-&gihO;6+#ng1FYrvNSU> z6H0c>F6$UZ2go|kP=Zus?V~L;|HEOb%aaW&b9Kbd-20V>Tw>=KDJJ{|Xtag|IchjC3w|ney+v9|>F$M$1B!PqwSOMiw zs+``ddill^c35lvIQKn0l}bVq5<+%;=*REXednFC&$&CCy}tE*>nT<(7r=;M(VM?L zSiJB2o%e0K>>qA<;0>?3iaQHLF?a@$A)}$6Gk_w6frCQbtfj5iSH6DN&9^;x(9_uf34#C+Lh7)UX{bEI8~;8*srOZ+2&r7H%FqpmptX+U*jihz zHQsw>A=1hqAUap-p^1e_(ah=7y-sJi*#u#wRq%{}B4u?p1eDco(nMs8?)7@TUe6fg zoFkBOCL$zKN<=`=dtZbQ#gQ=)dnX8j3W>GGGV2|YYV}&|kVp^|A_fj>nYm{!iAW|I zD3`QWfDlE|^wiAk;?l(z?EJ=^4-D6%W;K~v>ck*Nj##d1&!L6;C$+x zkK#DiXkB>6yMFTgORwDj$UX^Ty|;xQO!Wv#BLJjXubP;VHS2d=cG(@D`t;3TyW_IG zyC&9*A!-TGUhE$_JpJ&)M>2tT|Hq$mAotvP7b%lOiL>ecg9lGdomw+7dGV!}RI9Z# z%@H6tXY(wI%&t9Ge(7)jRym&?I=t`xhZpib?LYd_>3gRgqsBOd^`oQWy%%O5E;?`b z;S@eN-o4w_#U}W|E}Ur1ALm#8@O#ECebLME;>(}Soab4!5;3=(J;tID zNPxQ*r)_%4X!FG3Be&(guzc|F;S>Gz=Beq7lrhu|g$F?d0wB_eu@KB1yUTPwM{?-& zbYOwZ`nK;z7%eUwv+P)N?(?EtXwpD-MG=VvR!TqsOaE$*!WJz>FdB`h7UsL%e$kJTgvBCAo`Y6qvAxvowj!m2vw4>GtZQevWd{m(?c6#%HdZiH zFa{1;?lG`Jo;z`JX{psi-KZue1}FkqMir{fVG!Nx&k?6Fu}8=Y-(}zLbyRSpiK%_3 z{{Q$O*BLC@>O+ADnDIA%6BZWWOJ9QVaWFTcb7t19&5v18rqE}Hm@;b>vT?VjA&pg5kMS!j3cy2;_uk&4#H99UL_ zl;0r$O$bOpK*7qX#cn%SzTY=_=P&-{1y7y51Ar}+4F(hd1b~1bAQYtFtniLSSb{>W zkOaziCPJj4p>f^U{eB0D0EEwCSA~OCKDN!VF&-(~e~<1hN|g8jmCd{C+zHgi5G7kL zgoF31y)RF?ONaHg|Lx-+eelN@-gEu?hweWmi4h^_F#@6xiUL6*VLlfEJBM@lrvQ0u z`s#1I2CjQ;Z~YE{tWJu``AM6qZ%@4J<RL;#*hn)PJ*)X84IU#r%cIZwO8lk2x$cFoZ{zfxSW5Q**OLy*9paQ=+xfI(UwgXlS_6>o4X-?t>Q}T=0(BJ6Ee}LZ!6!flr=1 zdHU4po4$7ArF*a3d&QL#6YI1}3Tv0$ydL9>`u)Q_pTj?AF!S+aQ(CJ-2ah81<}Dl6 zubcezCqMb7x4dO^WaKaY?9b0XfA`+YE;@4L$cYojw{PE;=UKbe(Z-zXzyJVXfe_FD z3J5?*05u>98W2VlD00Q8^-#lC8{i5QC8Sk_s&O);MYK}2YGBAc7lC6zL{&{18Y34h zizgw4q)lYB8I;pxW)9wm018x<5R}rML6Ko*g$gi)5HzWZCU2!e+$UvG6rqqXGbjNb z&>_q2g0w=MtfVlOoQG1X^vwL?7r*#{4}4&5ZVnNxwYzrhs?}=7m{zM5$8j9T>(;HS z*Xv5DMx(K5)23RjRu*J+&J{%wLRd*vDNkOlRsp~mQ^xFWzWL@OM~;*#Jw&|u=9}-i z=bn1K{*HIN<85zy+vMcr+O=z!gPYv%_nBG8aYC4w2mukX$n$o)6PXHtAafi?Nn|?$ zL6`+y@P$ZLI1uhB%FFGY1q8KWcTythttpx`5}V7;cRbuk1A zeU`H;R2*3rLi7@ndNa?mc6+HP@=B$wfPf;B7d9{K=;$bbSmywM14l-C@2q{=meJpb zSgA`_nomBef#U(g7J`Uy+IMS)Cf@X_m)!TjzOVh`y{~!k-XzArVo;qpH8a+%uNfT< zK^TAl2r+~p07MiR6j7NWT9Tl!ymSs|6QUL0OJ?R$PA8-W1@e$tm;(&TCJZ#g0^a%M zQi~-ixa^3sI>V+USyvl-#&PVN`~5%r%S(VE^G$GjrwHO0EF_OVbx-AuM;J zypkM@_!zkoE(bA`QY9COB;xXG9Pl*6~zcqHSyjnR2T~YfqlU*A1$kkzzM3So{Jj< z8pPjNpv#urTi^7S|MMgFU3To`n#pD;SSbQPU=YwCLZl!@&HBqX-~R3U4qbKG?p?dK zUVia~-<*?u?PxqAVR&3Mx~BvIAmplg!7E5;c`U6?JrR+z0F5ywiX!iQ9LL5OLSmp0 zd7pdjJQ_jZI+r)JviHW7v3^E|7@ z5dd1}taBpbgU_Ay&MT!N6P0T;e2#R|7i!Wp!22&iAYB^L2h>%5) zhyhrTNC|?`QLkUvppf06hUi;cNyy~@YIC*@k z-_H@LG=!jm4Js0WQc@Htd(8~%H*KF-w_)b!)K?eou2zhR3_I_#f<1ZgdtUeI9#HGh zk$SzlxY#~);7|ZeYSkS(c5mCdGpW>>iIn$&L%~{m7EZHl;_dHf`%rmp`i3?|W3>~% z{Nexb+czx^4>e>7r0~{D2#!N+OmlR2@7~?ty7eJv6{9Tmdv`u^qVI4`b9TenP-S>1 zien&?S(he$&dtxwwYCiH+O%~?G(5~jv2bGc#MJyrYwkVWU+ib!+V}N6n z`SKlaea-8e=UvgKTCLuE`K#a7ow~=^qA!7h=!lY}sC;Dm8L%Fk{Y97&&>gT*T#r026h&C<4}pqF$6Eg8{)d(TR2)SBAW&Aa zhw}A<18843j3D{1zx*2y&ffORAO5TV{pWv4=G))AG#@cZ=u)eGt8&C^(+7ZpygT?i%B!SUdE@x@zc;JVL7M3JBRNM z`pCXVhDIhP)@~S|*wU|LwaUCkK6K(pGj7hemu41^k2Xh#s)-^brL;Cmkpv!Uj)0Ep zy~bRt+v;?kCZ!@`@ZbV_v>u7bi?wdHmuKEPRE^Q~<7?Idfwk&;ec!59;>>0~!zx-oLGqA2qRdU#v4Iz)=S56#gb4|A>FG@h+$ zpfJZ0tzA2M>}Xx&gTMA`H$27GK8ihi0AR^Xu&ILefG9x$y2GuPtslN+Lv{cCv)3#X z#fJ5bTHTzU=^a10v@qYA7;n~_6=T$@J(2(n@&y3_fd}<>kPu0j^TKsnzMreK+ed{L z>_2eB4X=DEb?;UK1+4@m^z3uCZQt$tJ_1IhwXUWi_3R0i0`jitd0W0%7!xN+Jt`i?FOB@0OcBH~$2TqtML+h7{r~UR$6oXP z+YTLEd*L^(z3#=6hdW&J*e%c#vX+1dBm!rz)O`-;a1Jjhlv}TlUJq}4Cm=%B0~WaG zQUM{sdMQT+0035cjQb0}@xKLDE`neAX{Zgg*|w=h!7>2A{^#oUpH~pGWZsr8QzC*$ zq`+Axf|V%pF68~ZUTsM5o~h_|HeL1Nh2#4}dybPtBPv5d*b5Sa%dK9zcw$5+itt_ z{0lBvzhUFdso7Uv_sUQI-KTf#+&(d}E=%3|4I6W3{l23nip~*u%U}QppaEiF4Jd#D zI!1{xi(vl2B$+eGc4ia=3MwFKqib5BXs0W>F~a@aGw04Hjw8iFViYJH3sfRf1_+Q? zf(xZSNxXN=A*i|oupkTw49pyag&~CCtj)b6&{dt(BGoq97M>AMnNm{#i2y*Uf?B=$ ztRym)RqpEby0!L}TWcsR;z^&>h*e_ z=Vkf2$;rvGs%sp_^YinFI668SMNwJ(F3YkNO%*e@TCFdB@r!w$CrMIr7)g>4QNQ2+ z=tn>L@sEFe?b@|(eB&FpZQJI(-?C-P-o1O1BuT2(x~hl524+JTn3XmHpo~!>kvAX! zNWrr(2!Qyo)bG^ln>(#;tJ5u|8(NTvs8WrSC^C_NASv%TqKK5?C=!K~#Hh4rVuk2D zFau!_0YL9r*BcbYy_vcB#g=mcP}OQprIa=r5sM;2f;_VVQtGH`jXDt~`3qiww3@Li z`_c;Ug^0@(8?rD6W<`z~ckS46>wUMJnw{UiWzst*0<%kJMOKr4fuR~jhzJ6M&H+G5tu~b{ z)jVpI@=qz{oGZnJzx6x+^H+Z!f9Yr5_o3hVo&KQ{-}>gAKl;v}7_OQtF5Gtfbo++? z@H6La-!i+{dFRi5=*0A?ZZ87>MT7$_pb!qcJxi?ke3qu2h*WB2V3|HF2d9XX&z2Af z2?AhE7pHr160sIxmqP~D$F&M55GN>Ty;W$6)KUa?F-vV9jG5Rx2-l3yPvrA6w+PLN3Q90wN6% z$1xBIA_4_rBvOP(v?Y2!uchA&Z0{Ix>fk&kYUf z2an7=_~4=Uz2h~hbppY2VTVRpUrQ z#2gS134;Vu@IOEHm4Ev)KlqX>E}U7IBSR1d8Tcq9qC|qV%mLz9i7*1#0u-uV*A}@A zLKr}V2ni`DrI{@V0s#jnUXVZ|pkjq!w9#5Ch1w8!zT}dNe)t_fK0CkYth0qfLLyQ` zq!fox8h8mv97U~GOF}TloOk6_cb}e9C_ZyOwM3+K6xcN;CwE?X8L?kjTH3e&z|_?A z@X*+0mtPUZalJ8AO=`^Gy+sZo1TR4$6_hKbLMu-?olK;gj3@!ReElxb-?F*KY!1Rb z2M)ddn#+9fl}b!TZ(6ry@xuNsciyZkL#R!omh2iD6^M?UY>lk#kFKdDaoijqYD{cc zzxBM_`q7PBE0dF1ueWe|LC8du%$=H>ookPcO*-dpJACTyqfd3~)&70@<-9;4FO*B-iR%q?``XF9zQMC1jp08=v2?k+^hn%TvJYeu#K z;lX3~PoF+ri5dVL1ZF}Z$OYR}lnszt2~ngF5P(-wZ2*Bq02m|)5c%0&`)_VKGFot~abPXyuve!8JYr|seqm@CAYr>A^AhjTa!^oS9^G&|kxoQ|vY;o%_@38;W- zfrc)9>znSs`ybS)g-Dw?inJossFRoleUa5-12(P=aYy5^R@(0NETCxPY(YT-Kw#f3 zif)nh`h8ug3?=n_r`kRQ62;6IT%7hu`t=BOMdw+-5a!$MdTcgNG)R%x%5|66rw}Jz z&@nD7^&rTmvAQOnS}2q<6g_PM?>m49n4w;W-}^my=R4uV2|$F8eGFdu(r4c@{X64Y zfSa9ljb_~LP4}&K&OZ?;$hpt+KB58?VHa5r zbrX?7)Kcqor5gQj|L33n`VH{3MR*TR06?mm5>>$W%F3gN!H49b*|(iPdZS2sqGQ%q zL$#{6ZyV`$YIAd)qbC=Y!Dc;a)GO6WYz&angagZDK>$(0;zO`S=%+68=&YojHW4Ye z^q2qQ5&-znhvbH*!`=Z5!k`7au1_szEPgZ|jwxZ`G^CkN2?>!9RYfH}I2$ZmU)VfJ zs@fP1Wle=;^UM{qOj-3a5F#Lmbww-?RqC$aPqVC6)f&Y`706PJ)PLkI+IyWDUDLbc z=IUGimriHizw-6{?%~6&!^4;FiV`QM7)}8Qq97m&%ahidKZkQThZg|KXwUDz3$A|) zY`GKwmczLofSai604re{K}y(8>iY5j_Cfyxzerh@zW2TFz2}~LKKjv*;$vN!pX`dv zON$G=ZkFc&f@9;{-3IT9;my~8^-!t6j$JUhH4<4z(GakJJ^|2zpL+X;ray7R)6eMm zeugnh8v@WFcz_@x!Gj|5=tU$i3h#W87b3tYESP0kwO-%(;_Dyy;>Qz_fPxZ`5ejF0 z$h|G{JWYFr^E)oSKtj0xwmTMDy$#!Tkfu0^LtyKCqaFozoCOCqO*1D!lQAk{%|%)m zisC5grk$BnMcV5>^w9lVw{5%R!o6FzZEp;Z3X-!{f*_q!;GM(w0R)IB?Pp*7hZ~#C zMz2>q^2ojmE;#SnYp+{cTom>rqs>>o^183z{EZ9uTrfVd=AOIm*TzIqv|@Aj&mI9m zi!cb6R#E^4F@cPrw`kIn^`V{_uQO;B*n<|ZwNwz0SN1j9e~50w`de&5O(yMGzLT=)D1D06;4)910K_ z5CCuh5JD)cvH_I#n*snylGJK75m{VZyz#~xKlZVY-E`AUS(cT=Td7Iv_xpzq9h#h+ zoS2vx8XC&7tXi!`Q8YIIZ&GAPufv=SCwsRRieLXqaC+0fMr2rMow2F6;w34n#Q#^_GBV~jy0=e>z^2*LYM z+Pi@)zdF2-v7$=@C~MRKA}|Y=j#N@^rOIM;QfkW5%n}SZGX%(OG2h8Ht(`2Z+yROZ z1?H7PSX>tM9wb=~${Li4c0^zi5e5-ezBo}C+>^3k-e84YPAVO6)m;7$6;kP~w?bO4 z+>R_)p(DU$eW9$}@3IwY_`{EVN@;!l>#o1*%F90axi5b8);qUvoP5oTFZ$she9QU` zoBrp=KX>Tp(TDaQhGi>G7+8#!&Z2`$td_mPGWW?m*c`63YUP+gYs-|SI1YJ1F}cE0 zLU^RoXvgFuW}qbH^!owozAY0B`DfSDl#vz2FpDV2?QqDT|JonCjg(zixQqU;fB7>o;rzqOX4C8=JRWSgA)3&F3bH`5D!;X8?_2 zS@zU%b47Ju-~`@kx_w2JyE3elQsshD4r(8Q(u!yh5h?>)07yvI`(wwBmE(H36u}?? zeMJ@b7U0sHyjc;!l1L;P_+yiBkeS7$mycdp9)6&n+PUfl%7~3J;unMS_VndGCW%s}Tqz2#dF#Lr}xR z!`Hp`t^Ka;wAupToYlr?tzCKJN&ylxBT}VOU6`Loz+Rd)H*OqTx2}KUq=^j*Y9jXD z>-dT{zbS}({?mUuv2Hz!+PZbuo;{bwae|1EHVDj8_~0Rki1^@w0BGaA4^-ro)+!GQ+;jy8X z?HF*Os2@KxwXoD5TQi|hRcrNHeWahw<5H&(cWUNHr`3AsfkRhZbm4);yTge^um#xE zkRqx}NCSaW6#`>KF@dTyUi!v=d2sDljvhV|mX2yj2{dUPp{XXOR$~HAd!40j!7uy( zV!g6$cK$#TZBFxcvpF6`=IGJ;YNA^ViK1SX3L%lQ!m}6vfJ&!@$NC+u2-bnfNgxyM zKXTXK-+LpY8Lf?cK0o{hKXrup+FaI}Gh{2i=#fB{Sib?8mJlSl)a!{8 z%)BpxF@@u)`6U(HmUUxVscx1@U;`?)q%1cppt|e;(L>w? zAOQgpLhSdlVrq=~cxd1S+5H zUebu?buxXRRljB(24;maG!!=)6TP%(wbE`kYqc^&RHTg2+7J=Yz?2-E56(Ge1Tq|K zENoQ&FWi*l^xr!h?I^5#bs>~QAy%@t$4!@ zdd<7+t}D#kw7>HoaO1X9@x(EmZRU* zW1+kBhBtKI_G$jxuVEai-}#;2nVOpV^FRM{^VB5iNUBz=5vhI`K)^(>bvrbgkf%Td z)dmcYf{Jzk4gq+`QH^eQw;x6Pgvf_}ZO;w(jwd_!s{fuBJkiz9{&@)Ac|md7C>ez9 zFbF4=C{L{*w7Z>lcX7RJ03ZelB3ZXx->`Y}Mb}I}@Qot_@4X&t&< zXQD)FePG}I6Gu+gYSm4fH|^SW{+8`K8;xd`pC$eL`*xUo-!|-fj;Gf@pZKuvuSY2? zO6h(t?f0`JsX6Z+dg!5Qr8+l1Q?FNgz3%Af#Id8(gLpR-^ul-Fde%UZpavEI0?-Im zv;@5cou5ujXQW9y)J)?90)w!iVg;IzOr(Q_;0TR?!k9P&%RvCdBPazr0tpy`3!s3A zln4eTxw9FouIJpM1z^yKsDPLt1aED@%$hW725$p^4ORtJQAy8`&og8ZW>f@F2LNU+ z%izUvtdt_6TCH~Az=2zCx#jrr<2T)O)BgSYLkN{hrP*vc=e+kT-0jTF%>4ZP#*G_C zMn*cFP6%OSWQ2&i-L8mCO-+RmF1ze9B1+S=r1ua}Yi*2S<|vBF?qrO)<(6A+x#gDC z5{D4N$`56f))+H7I_jK5MCaU}{^_57_OqY;)gQYuj*~=b774;isg*L;!V)L3*4lc< z0)WbM5TbT3%{`9|4Usb4){-H_S}o19hHqFO1bt~pNJ^_XqDD>Ehd?XPij)Ga7z8zm zFtEzIJ=VH5)DY)@;Pl*Vnx!C6IID%|*f@IU^I)BSJb|(Dmj3+A z4^IILKlH$N`!JBU3`iybzz}4$qo(JuB8~w7gF4H-bwvdCF=*vWjM-{Po0|m^^gAkRhRC0-@o|b54`K0Z+*k-7TeujTh|RWM&JJn z|LORtSy-+sS<(rmPI2XOWhYrC&T*w`;6TSSpzEkCqdVaFmY;d~TW^aXtYT$z#~j4_ zBIF3Df>(;T2ntCfSqe(4v?xT8b5b~)x}v#m_^KE0&<6U23yvJR#%R5;>~jZ!l~L(p zztiseOxOpLVA0P2CAbjPOjJ$Sd-1Fk>L_w9ppv+%gfUBVpG)4!L4k@rumE82u6*bu z=$$7(F2Y&*KR(k9#++@r|1|y!NG6*M{nl_FcQBV|{d{b-{J7zkdNd=okaAeg+Q-5i9~~ zxpo5}xM%R^Pv`MG!^56BR%a2Fc_Gd@A!YP{k}th9OEq3O01?p`O+K0AYa7Ce z6DNY_5SUhMo=f_CP+qGvcoYCITIX3YJ$=dy*tsYI@t&@i>Yc7eodb6e^<9BbSj-%Iq9uMTme&1&Sx~j)<6EsfB1oGuVTxj z$)Y1b6d@v|l(lYRyq-k*;E|KpUUPwGy!4`-T9M^K8)9YwQJ|2}g+S;l)d~O*Fbf6= zfWqLrsT1)EK`D($ajahV`X6eJu3cE1w?#n0fk0Y>lwyIhSf5gg5Q9jyR&TYICdS74 zc{aXzQ*rEs0z@M8%%m=T>l^yWw}0~+oh%;{+_`i2*x01jT5E-ffZheq%u1p63;^td zF-8Ea1cOme5(dOP_eB9~cf9JAuNnEH`}(%f6zw}X|7V~7%D;Zs^{VF4XoEZq(OXrUr`X&=2g5w8bQcR*yA;M9Z1#!bLp#%#^5uSPf#l}eIyeJD;IJKF2?h9)PXw0F-}|Mt3f{`{_&yz1l~UyqXrPzh-mWP%_u zvp8eWTZh8qje5Nrw=&nyERq(Yc3v#B7At8g_0h@Q=ToiGnK`mP!AhjFZZG$kOHC6N zc>y*Utw!qgDm7b+^WDYP61Q@XwOUPSD)Ow??<=h~t(%NAdha=~0;r%g4XwN}uOz{p zVK%+`^T$|QtoqgJ4?zT#k`Qp`PWd1I1Ag)+aeiJt@d^0lUtT%wS^2`Vp7Y6%fAa6< zH-2LhV5Zj#qic*Utz&q)*JrU*^@4r6~duem`|JO%Mcy0|GP~rr8+rez+)nn%O+})&}SOvNwqkViYN@$x2PqrN4Uj=JH~1 z|7*GML3rB2yJcunr75R~$A1F2rh43}6)`5f-l5>r=k?k_4!|jDAOaBS~^?umC+%=^#l%} z+|NJ$D-{5ZdLw6#{9pf`Z@EVnJ0XtDCqD6sU;3qAy87y?%dO^2;w@ z0x&VGUBB!*MF3C(tO3|E-~(OK<6FXA$*iFsD z>FqnVR%a)(r5O?Q)-pRm?{iKwyW{egPVU@YfONZ^q**KSrKQE$#@OyMuBu3ZfcKt| zOcDj>0Civ=MKLfM1J2o^$YYbFX}Yx38Xg)Vg5Zl*J3o2b^aJKjJGLD^ zHoY*vxM}l-dcA(nJrDM}nbHOT%ZS*ruI3y{s6l@a!Vp86sq}bFw<>iJB`$=b--lY& z=6%9ZKtwW1$C`zp@Lq^0B7@2ZItSiK$Wohnh>S`|ClEndP1W`~Fi+5f?3TsnmCnnbbY6K3}4K+uqLqqeYPXoqD zQuPdxHd+%P=0!#by>3?#u-3*8|Us^TXDu)9f&B;ywcBc*;1}l@|A~` zteaBG`|!;>@7;gs@TT<}7zBlb$im{%^vps@7_3;-KB}~nK|#APC>}+n$)_y4Wv+}4 z000=!kSoHw)xQnSGXatcK8Opx@LnX25|>+5Nqq21>kxw0M2YS#^u&q~f(VK97P>cm z;&{DLj~cpjs=Z<7S}@A?a@Ti7uWynlGAc3}eaM5AK%kIF1z=JXRkU-Apa;&Mgr=I9 zB(lzh;C#xqm+6W@r9~u22rjTl-~d1rBm^&9mVA3`ck*7G1yX0PE-}zzK8Fxz2Msu5 zpdpI0;?L~=!%1N@0YBYVDM0W5G1Bo&Eu!0d{^lQh$Lq4w(@ctpl1O1Cfz*fAl2S&a zLBHl+xwGqLePjrZ9?dU?!xgsi|HsttAzaK!}1; zrk)Q}c*~h306>bmz3!<~rx38TqhtXPVGzQVDT|2|mgJdI98eI02m=IWK|)1>aP08R z!IO)ZT(EJ^j&;^?DZc|8)VTx}B8^A_00J)9HNzAC?XNx`$2c`J`|W#=zWaw?R%8X1 zvLuBZI0Ua1IqUn*YXo2v%>Yn=!Y}>M)G!WrnGAANMS?c=T zG)Sl_Oya1Q*;2ZA#hwkP=30*&?igc|h@AHbJ_KMC6PZqy7FkwFA|L=jL1AR26|z#K zDoMrLeDCEi-hJVfi|u*qLssOGF^H<1)p1ohLqr55rPS!?aKGQniULVB*Ke4w*U>p< zrfRb3C09+^V(EbsBcqe+)^AnHH0mR9R3SyoL2JFzNkl+v?Y%GO+aQ5CkS2i8E%KTR zlI87@+NL+Y^pcPL-#0_5ofO9W#kcOhZ2OKkyf$WzeCv_p z|Cp;rHK{2#5|Idu57$jqRTmQPypE{3u7BjOb0V-NS+Ct?cK#EcI$4eH7Z zzXVSlH6}-|xa0nhuN~huf4Woj?|s>xT_HQYf38)ocq`*umjC~WCOrYsqzxouILo?s z-TQ|{utZ6W6Glamr=iBU(UBhBHBw8)Wn#2GrW(W(WtG@?W^wupOP@upMJzL8C_MY} zJt7Eu$j70XL)w895d#D|%O3C?&f)1n+q`}9c&A<;o|qWx_vTDg=d`mlGuLR2hQ(7y z?)b)@*ZyD*p*V0?RgVRVA|e(LK^FGj2M#I*PML$%k*-&i){(R91vOgR?Nv1`<=Jp^ zbo2QarCZkbrVls4P7Wpg!k?b+)tUx}V6ojo9~uVNj}JGrpPgHBjNQ~O+PvCqf~b0} z)~F|14dN3VJfS2>Es2ve?q}sSdgaymG4IfiqS>{gpdE>iH?7g@8-aP836d&XO>?1mJuQZ01lvaxhyRoB;pw)fKr1U z8wwCXYtjGJpMSkPWc&H1IkAp|R|DCr>^} z8_$M4*8zYh1?UH}<;nwK@t^^QS|QA5VPo9{7C;n$;6;E5p<30ongK-M($=3r1}Sxl z;Kb=Pn^}xu5k!9K55B!_`if^v-IZ7>+G)tF6aiR(8mih*l{};_6j}jk9W;v82^s(r z_5uuo2#{rIa2AzPI%4l3Fc1lcl~kZWib#_pr4%X^7N!-!?6*EMG`3#H)siXJD5^Hx zeD#mhuB%S}*{>J3e4-jx%Dp$m%`);hy)>wo;!{KfvWM=5HiHG5_mR=Hk|RfAoufLg_9^U z%v`Bd+U*V^TI)!G_bh_Pj~{hD*NM?YS+DoV-FK6cnc@1H-IpBt)>m9VM-D6@&pL%} zT>L}t8Xa5H?zUN|)@)Eph0Bf~dU*Tp3xIT)*C8SJ!Xtu0Nv*Yks}&s^$Wm`&10-4I zv`$PC^?QAdeG^lfhg#hbajTn!LnjVBe56us?mF+H$J~p+@Q_)*Hjd2qoxMH+crRn4 z(evGq=NG8WBuMcD1fJ7+;z|EplpZm>0Wp4}@r7ufcXhXj7!$RYx|=quMx)tjr&=4~ zmFiUAZ+-Lm1_vY~fLIvp&ed?XTFsO~D8uUvI&OMEpJkD^h=`;>#7Lkb4WK|73tnrj zR0Lu~LcxVA7z?kJFZ+U0S_A|k1PDURAfgp02?0o%NZG<#Z%d-1%>E}JBIB`?5I{vi z^R}@sZT!O0%gdyUA z0|(~k=U?%PSG3#h0|ySIX__QSy%+st?RI-)WMq7NywPZQ??og@l2Yf#%*L2n zt#<3JxBlv{{_6bvd=y3HF}Pe!Z6y?2KIW3TTm3mRBanbt=L+XIw;-Yv7S`td!UjLv zU0iGzp4kNs&I3}TQQLLid4Yk1ko4Ht7>IP*ZLL(jTCY?pm6}#aLP~Uu#sCqpNEx|g z5XKMyfO@@dZu8N#YgMJj3_%DWI&o@Y`>u<}CpRBG@L*B6AZ)!?gw1+g7<5e4TGc26 zD8UCVd9GCukh&flkGC33o`}HHXr4O`4}nIa4UY4(5_mye(@dVZ{t6&a80_^*7H#?a zVgU#^aHK<)(ji8bNt1yS!15CB*y5Z3tUR(L;U!m|1I6wshslvc^@J0wE$R(P}7b+Lb@947Y(XOsSrMQlYZ)h(*L`6@qv#iijB* zL7|YAPyirOq6i2CO+}R<2$g6+2q8FEL@`O>a_Ui11IOMum)TG_a1g}_5cGRRQZ+0d z2?eM+R7F&P%+8}Cg@yr8NCKCZqXHnzAjmENi5E|xQAAf%-uIvhK$HRw3I)exj z(LeIrKsop7D)2iJEfCv-g#@fe+&;Sv^2`X~V2?hc0Sw|-6EVMf9R-;<=%nCG$AP}P}lU2(} zqwKLnYO&Q?Y%LKHFf)4;1}bYqdM{on#eubo;;6zRz=+}zJb{O0CoL8a0!45HuHWr~ ztarf!u~G(vL4W`_Fe8*acL-dmCf~aA!Nqp=V{d$UW_itcH_NSfk3j-@GKhnX69b4s zMg&42DT7Xf$s~XXFae85O~;3hPThFRUH|1jeW2INNwF8w$~fnQ==D##1RB2gt0g&}yQl_8@PX+u>V6QH1Yj3(D^Sy)&Q z5MXfDDpIn%I(YBPnF;`vCZ#lr^n2a;=@YHRg`ImY>Htriw`2O-_eAxf`koz+%$)Ff zxM=U?lj}A`aTF&NtzsQ%RD>h~!Dz$G%QmXuy(_0;n_KT(@WGgz@I*8GBwDoZE!rJa{=d&Li)Xijtt0NE3uhzcS25D>9es}eoo3&dIZ zxz(RMp2=IG+y3#j=Vd6~r=cn-!_~mR(#*6W~ApiM?-6gx)6NxYxEdqd`(2$OLoh1;iH-?x4hY&ch_k*pS3@RnCXKO8hpo%KB zM%tPS!7D-}6+%u!6Xv38)7feM(g#hWI`l(78^8P=p*G}tOR#PSZo0tE9-9tv|ITk; zbn$g-Q!nLTxEE_I85eB6T5P$Vof2Dr>q3Wy1JJuS3HiH@k z@gN1D0<1o^0Z1s&0@D~L9c5pi256t5!$TnEV(rMA*N(pBNg5!+EbfWZ;GQv1go)y9 zYk&4h50f*rpT?LZNf5w0R}@7Y$8j7Nd0~S~D#n<|+TzryQ@viV)*M2_+38aSuws}w zdc3lG&yMTfeCojmmJU8_^H%Qons>kNysKY%`uIVN>qReBs6bZ&sFQ~d^jZreBMm{T z2-!)&p%O=k=$vB!fGErIzyVN$05f~<6)6_!WNE`B&O4xLqOkz)f|^~Nzx7+UY~Q)_ z(fdbmj<3FQ=$fmBpY3P+EaIQw_!2qfFLTAfPw)LId~!^%-$6o0tv7Hk@DV2kkaIr zP`ThC_y|c0C}VsMKmr_kpa9^OTW-1e=9_Q1<(5+GX02^Dn`QC2k}6w~`>cdYSC{PS z_xqpy>}RjM^2%MicAYqJqTO!idA@e-+FGqvtJTKF#^N|mk|c^E=Uf>?E6-W#=l<%i z{_3}X`?sg2rb_k>mX#Cb&#P5XC2_dI&8%po3NKnKU@ko5xwkg+9;REpnT6g$tKI77 z9ubtGC>pBODwSya&RxSJjjpvpt4Ku%VPs^q9iZLr7!zr&k+42I6hNGJF(s%C3KI)> z5$8RJfY|HzvOJsEurVGQ5*9#afG9F|-F;tWc>L9`yPo3OBlq3eZgpz43JEK1*!wik zg?Xgj1XaF(G1oCVzY`$vG(5s)Mqp<`Q{~S2sqX27)UN-*jCz*W8UD4`K$}c5| zurLlZG^J{VR}O%|TaAbSGaIdiVZLKS5P(ps3WZBEHUNB#MdU!*2RtZ=1R%@3V#S*B zF}JZg^_GRp!h8(EDzFFO6(77o%R?A+?2;ZH7_pQi5teB}evBxj6x%@Q;W^-v%VAO; zQ<7~ZslXh{=s5r|hrz4844hO~|M{bIwZLO!f3jT1Z}~eY|4~Zuf^c9~OcEI&isG12 z$e2VaK#WX;NQ|f}k@zs!ikB}ZO8LSC2^w@!I2H-cvvur(cS1x6kY`z3F^E`dB`HD? zR-npJtVosItY{Gy5Dp=b0tC>BRuM6mRlispQyNQ1q{|+nNQqL9q2iFl+4>dNHmJQ+-a507T9bG3P4QuKv|F!Wc;O)7ob;gE9E}S3l|Q@65;ZC=kJUxnghi%FC)xewDyyAqb!F zg3Alj8Cm!U;F(dFl)_T8%c7J*qBxF?F}W>PcyK^biaOoy%*@Q@O&k4_M&?Dt7(8*} zM7!12S{Fs}Xvh%;!?PsmO%x##NC+Hg@T*n%_9BSbUg{fF-M)Q`wP{)7bC8v?O!*_C z_kj?72r=S)j~vUh#r5llj+~e|di?l1-*ye6R15;4bBu~gW2b@a0R#ZUAQb=rK$vMc zaexEYM&ghE(Kp`y1J`X{KQuqL)EG*p7kXd*+8u9y^W|B0-cn;>adD{H^qnr0nqvS0 z41pDqFe8GF0EuE$3JDMxnFmJ-2qTg~REm;nT#I8@1QIvA`Fw4fop!t4Y=}s&*HcQb zWK<}v0f3ZBlFHod?7es1w)gU@7w6}K%c~WAdipq#u5DN&4=3^V$x}sV=IHdu=wxGb zWN4(>X}6*{q0*Na7z6}m`K6CrB;a|t+Ha% zBM{|%ig+e{K!^r3h^xeFF5Ui%o&M>fSm?W@R)5-a+i?(aAy||& zii3zSctG(Y0zn|pY$3ujsBA=oDId{8HjJY&(X8)@u%Su+i}any78E}=tIRW*uS z?$g|P?|LbVC>496wavDc^w zC6F+NJPEGSOn?lFbZ3tqyz`s8U-Bxd)oN>ZayI6s_SI{8+m3BV4(!X)Zf#^Fj$<(u zTR0to_9$o*>+{rh`n{xC3(SQRB4>RN2UQitQH<&d6S|*B-}W7ey~jW)@E+g(b~t_< z|KJbc$A4Uu!d2>nN7wtuadl^v*`4+H?|=qW127N#0am}VK6yyQ`+<9mezL5lvcZq} zx%`g^()6je@hl)j9{^a+I!PfO?G!ItUpwnga`m%Zp*y|jb{{xR|NJMnUHhT0ed4}V3gObq=-Fw^_x}7Z zTs&CLdq_|1I}}8XG)d;z|M(B)^!OjY^rbHpZ(;&f0IHL zhybt&Y61WN6=3Pgb+%qg03D|$nvyOdw&iQr0^EFNvw+Ke=2N@rXCLxp)7M!V78!#A zNfP(HN2DyxYmL}Bhd|y*thER1bh=AR?M<7v7X7^6Plrd>hTwutr;i@qc-{p&UiRvR z^&1b|dSgw(j>}$-J{XF$pi~n|B4v^|ie{%y?t9?djgeu+7@MeY`gM8U1$Ivn zM3|;|n&vBU>T`Gk)F4%Hcd8n7BV&T|f&#rASx+(L3*hhf)wKrIS1ms+HJ>cqW#>jNlCt zp&}yh7(vwmdH^5#(1-f{ep&jita;;?3sbG=jo`6)jb+(9B67|}QFP$IfscITBR~K1 zKR-S`e(cz>i!QpTTCF0Y*1Fs6T5HSWvn(sgxj2r!_YXe!;3q%%$-nuVzv=h;#u(>Z zN$Cxmy=tGeqO~elz(;jgA|f(9J6~pOEVf(yUbfWfx4XT?r9Oj>>b0Tf7>h(E+OT1R z%`;o%BcsF2lBO<%faq)WTApHKbg0#8%`DCPI6$3A!Yi(a;F`vs;t^uV{j)m@kac5$3D`!Zk8LRnaw zw9??t3>6FT^E=e|X<93Uf$il$xwi5Jl_z^t2{$O;1_O=` zRxl8^4capx^R$#2J4DYw1PW<|3}XN;9Z{&R=FSA5xsnzzwym| zFWWE)To9_kC@GIGnP~Pv@k~FAuHU#`t6zLYt(U>k9-Lg@xfJFK$g*GvqF4`%Va|33 z8eqxFt|9rE^IhFUP9#Ek26+Ha{CJ)co>LFhm6>NSgiDee5fP0xIAD%xWhdpFD;LUA z{KdhaoSMGssw+gwvA;aOtU5mcC`|xx?C8lfP0Q^V5g`(bun35k!K_6}sSpC75Gs(; z&I-@yN0oYfZ2zgw(x&Ey202k&)~*QvrA`k;0EtL|kfKU$`qaYk@aST@zp&V^RI7)M zoj!DI`o&kA2LXngRTlt|5s(07xz;icW|ie3EJA<`2mmgK7v8jfxUhM(7C&<2^u);c z?rm%S>a*W|@6Wy-+}z~kCF#`B5ID{A@kT8K4k4f-CXC`ZF;N^T6i@)dj)NdlWQ-!k z!7DN*(OQ9tlmQI32!WJRBNLnZnXA^MOc?5QyNyP(eD`2s1r$Y5*6-c%jhljVy?#$6 z)v<}m<3|o|+`9G9p`-OiW2vxfue@xoznG@kx{YhM?AWtu^Y%Q;zy6gkUU16x!`bLtiYw9CDY9*{PV56rNdxuZX zZd$*2P?i@4QNdbsh5|NINIiFRz?6KN7x^n2asYAk)P5b0{3_m50}vF9GBM%1ir^f;$8b=GMH0XWFD zSA6L3>6`W+`D_x`&v;!C5k?MZg{ZJC=d&Q9Bx3N9t|pvVPJ?6uF^lEk1;wNFA|Qb= z3Mc@6SxPN{UVuPIp>E<(=50?h0%avHd`8cH63IFIvx8PUE`cn?_JZ!tE1&wQss3VH zu`;pp-sJ@+wP9fL3`6TLN+vh858dB>;J)tCTrE8sJ?m}y^l2n`Z;i{jw6)9@odBHqKQ zB14ZRzCE>Oe8=O@L>Imr9t{A_QtA9T1_FqYq??I%MKwO-jZgr9;B>D@eK1eK@lOP_ z!nuy^EG#xF21Ks=wZ}z{pD9#;zR$b1-{o}Pw**+BK`7lJP!TE#Ui^Q<3NYQg~!g@F{JAfPC%K?9V3LL|1ZB3K_01d}A*SpiUKKOR}reCk)e-pI8t?+c3*ZZTuABG*cm&S_ z&f5%00w7hO>QjjFBLEXsIjd~n(%paSd#88axqh-10BKxqUVDGz_L3zimaH3R(=Tm}Fz_e68>_w5&amWBz7^)^wu8pVCd3tJ>X z#c^Ef;gnWnbidy}eQM^i%cEBNw2Gp*VgMzkwYEs-rcU@GOGYQw?7e1o|AUAeL^v=S z6@elSfHjp=73$*$4;wE8=bH-?2c<%xk z$csWG3=KD}?Kx-JVcO2V_Yd(L&fzKIX{4$BGX}Mt_Vcy42O!p3A}m=Lt(182TDaH2 z**S{qqV%$)#>d{}*ymsfwF5_lid5;kL8u@EB7(9kSP%h`z*yQ{u#{4z5WIw-k;=e$ z0KrgNUIt(Z-iIK_q5;XoAgbzZH+VzDfk6Zs1OQs=N~L10ElmPT9%5w;TKQqM>Tczj zl8~rWDtFy=*KhvjZ(e`>^=X>kd+)v5wr!i3m>{B}C`vl8D2i^k%goJYb82ep#v5<^ z>Q}#d=+L2()v(q^QB+3L$_jZa+p9COCs#IKD@m4j-n&mgdTG(^^{fp-(b&ZJC0FbT zjNPn1KR+)bTefdqyJm7}aiP;{g%CiiEVsZyq>MIHQvy))0ek(WcDrETvwk$Qjp1e| z?dhcNSgdtXrAk^u6b+A$j*gFu#=xPJc_D+dg%7Ki>J4x4oqv@S0b> z{*n9coIZT0+v^|^5o(2nvk4~7d56+!b-uS<_1T92Fbm?KhpftNEjibKSZd1{pmfAS zBqR;n){iIzW{InnW`(3InD;mj%oWaTr3w`(Vg^FtG84CC=Sm6Spoh>3ImgQwaKM2C zNRZ17V95>wKAKCrTF54!U&$j{=Lir8P!k{#L1tZW zOh&OVdM2VGw-6x$5UH~I7aZ- z1cezukU&HNmz3)ZzM6w$*;aFxkE&beaY)OP+Y^XzN03A|4atveq$`J_M{fVxhd=zO z;|K43*Z=eHBIEbL1v9kA@h2p}L+Cr<_rENjt{7E`hZnQH%ZgU7A6LjZ@4V9l2anB9%`9%2s2O9#2MOLY zDZK0O71 z&C$`r58eg3rj3d#)m}e4ef$`*O_C(-b}xI`i~D!onYb`}dS=6x?ZoQtZ+&fI&E%#X z=K&YQLP~q~fIy_mHKkPc57vPYthGf^SZkv=uGMPYPAAWE#9;HHR;$NxOi)m4P+Tuf zzrF9|%ddEGaDAm{c|{Na)Y^=Ujt>VrHqz8_T(8$^jfRP8rjnGUM%hW|ca~Cn<2UaB zfx=tyK}0f=Zr}dmPyOUI*T1Hd=LQp}loqs#gLB?`WujBlb3gkF|GHQ>@E?Ebox8W} z@}it8I0UULh-8v#wLbnrw{c9O$(f~Zck(+7^imf#ZP%uD^5o}C^`HhM{I=m*XLys!rV26hqxGQjGx-fA#N zMFDsKRuUytv8tbXrc&7YPhsvnhvy%9Zms~VKz)a)ZN`w*>)TXs!E`(Qr8({{C1QK? z)5+QiV2z%&9v!{lrOl1oPu~0O#eH{G*(;?`n;>~n1dO~8I`2fdG1RD5jJMg56SGMi z5u#DNcCUYZ>g~FoxFdjUW>P%Kh*9l&YWs>+w<*(W_>7$qY&~&vl4;? z&r7Xtq?4+WBKS15k=CpL5X$UPIGfz<@eJAOB+#>B^#PALmNX{(0 zcMfNPGI0Sab48Z`A?(?9ov(!y3KyW0eNGYwf24Dqc1}6!K)*1*Tu(f$n^r9p(aV&vJ zDFhG>hzbE%1ZiM?fTStwl8Ll26=QtbCzNFGE6m>4z?yBL-yv;))S$KjfL0hz9*FA0 zy$8N|{FVR5K5x$#VLK=b$mQ}L&Ly^=!#TXL@rKs}d;#9|eqA5-U^OZ8lyx?Qs1WfL z7e4YAzyA~O`nR8`RUTssu@cGwfIIKJ^LKyucR%^bPxg8}rId!SaU7xwC=~(3-|0dK zT0te)?vnJ|$xGYvp~v`VzHlJ|0F*gft;Og_DMSM_2wJPg zNK+Fv^w>nxZ&CBIO)W2rOoNO`i6TA3CHA1q=vm z6vj$rE(i)}N^M?KqjA~sxfL5Q0NV63Ct9T2mwn6Eo+@t1Easl z7$OQG$bdByh2(-q5dicdkU)UI%z*=oAP*A6eVI=n5IC@e!0ZH(MKgP3R*Wt{H-cq{ zLtL)8Ro>9*sA$R6t$bdR7G)W{l2q{CSF6>72M^B7%@7Uq2ZFky&ph!h=(wtree=0S8NXglL@iTp z0Du4k@ooq~#4DvhIItv9bjhCW#u(?lQuL-*Ty5gSS-)I=0atq6%BcoEl8C}6Aa0d= zSQ(~gdDJ|h94uw{yR_yMkr0-dJOCLS_Gp7w&bCtPZl$W$>Y=f6o6Jmzyv)hL^4r>g zDP&$5EGv&?&z!E$NiXe!9C=p*OCV>&3w%YUi5rhO7zj-S>(6`pANWc>a2+2T6rvyBelrnpS z3!CA^YxwGkcxmd$-+%dzPk;W)g-hRl{YBupWWyhyrbdKZxUCyDOpe1>zW%M*nbTXh z9{t$gea=9%bLZv@FWRPmzENgiIkrWa_U=AhcSDvk$VaDr~ zAGr4XHN#bB9V4I!3W5lMSm#9~i4r7bK#JUcEfL`dY$g=_Z~QK zeD12tcmMTgZ~ej7T`^IQ9%=XI=TFs#MvhM%np@~D^}2z*cPRpSb6?uU~T6OD?(cs;u8zGcjR9Xbjb-PMzMl`@)5pxhSe9 z#@zCiPiI;0b#HrDC8-~JA+1G{=Mdj9&?&M)23Jp>Ry#hs;yz_u6Tku`2&_kP=kx`sA06Ec7Zk_LIfdsv^tIs7w6 zBLe`q@=~vc06JZODWD<17`}6fctQklQX5el{ilBV-EaG`_x;REUVL?}Rs#TQ?aa)~ zLk~T4`|Y>icH3=V{pwfC4XW14`>qGq)0OnHD}p7>2}kDhaP#ppWiv0!#R9cs8p;{gu1CE1QPaMJaZr- z=UwSs7&!Qns|x`DZ^wXbD^0GL(UAS1Oh-8miakcE(W$jLX@|*Iy_o_ zQpP2h%>xIe$eeS=n0~*1&pr1v8jVAT4t?e`pQ+Vq^?JS4YPH+#cDtRXX}{l3(-f9t ztfdcUNnn&`D}A(N87tRaX%#ao^_W$4Y;x_UO5o5k&$sX1d+DW%^9xC}fjZh% ze|c}__`>l=^1PeoE{TDewN|xy{d?F?pA(ebMpjA9WFUPTyknF-sAObA2oA9tnOD8& zqKb~4^MDcp3=faOD)pNzTc`4)9+>4-pk%VjE0oGPB0}a6!m`;WmHIB`03{_-vVsCE zA*?vC5|td^>W~5s%;pB<94r%cE54emi{3rjGt1IwC02zUSA__q)ajL7w>)9VDXyGw zwZfI?QTlM@TFdQT33TA<4+jIJ^zB@}C<`kgKp0ewKwyBu&Q|zQztP8zcP<4$%hN*n zJxyhsz{=i%}N=WiS8E=@O9(G zr%%-l@Ny4O2;gYo<>-h^Vc)t%ziuNdr9Sz0fA`zJ_2K5&*rgX5{E#w+U@rooa?$*zxFl9k00-Ldm}Vv84sP9yZ^xh1%GaFe(t9~@UK4bz8`<> zrs$4S{`31g3(=@X35c=Hf8qkTVnTrg28{&&WZ1jaSXo41z>h!XSHXJ(G{&56V%+q33)&(o4^~ z>DK%A?%6%k;A6+T^+@mDIJxie%v)b``QlQRS?IQM=eUBj&}w(PX{=)qMuZ?-tLPmY z#`;;F_VY@m>H&RV1QwA19vns#9IBiOrKna-x~^cC#fb6n*!+AqF`8LyUd+zUcDvmW zLh!E0QE7c*|HFItUUvI!w;p`(-ifsvc3yaKt=7!*d}w%dZgwuuPbQJ>rLFn-rFwmM z_wGG$CHBrbFS{?jS^)09?{gG6bk?}Hy29{S{`KKYry|CKU_fhy+S*W>@;qS;suu{3 zO#KZ@zIF0PJND2}l70AhetWh^&Erk`5yiXRn_t;5YXFOSWt>o*VRTfkYyl)vF(IYJ zLQ(V`MTI?8RU_8-yw3$ZKoAH4J(pxN2!b#G4i@in%u5g}z-8J>0@{ZnLs!~Ge=ncU dIsDVc{|~WM!q`WrjTHa@002ovPDHLkV1m% Date: Sun, 21 Jan 2018 15:55:35 +0100 Subject: [PATCH 077/106] :hammer: cleanup after #915 --- Makefile | 1 + README.md | 3 +- develop/detail/conversions/to_chars.hpp | 422 +++++++++++++---------- develop/detail/serializer.hpp | 4 +- src/json.hpp | 426 ++++++++++++++---------- test/src/unit-to_chars.cpp | 50 +-- 6 files changed, 521 insertions(+), 385 deletions(-) diff --git a/Makefile b/Makefile index 4713b5f9..28b978c5 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,7 @@ SRCS = develop/json.hpp \ develop/detail/exceptions.hpp \ develop/detail/value_t.hpp \ develop/detail/conversions/from_json.hpp \ + develop/detail/conversions/to_chars.hpp \ develop/detail/conversions/to_json.hpp \ develop/detail/parsing/input_adapters.hpp \ develop/detail/parsing/lexer.hpp \ diff --git a/README.md b/README.md index 3b28e646..09353b9b 100644 --- a/README.md +++ b/README.md @@ -821,8 +821,6 @@ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR I The class contains the UTF-8 Decoder from Bjoern Hoehrmann which is licensed under the [MIT License](http://opensource.org/licenses/MIT) (see above). Copyright © 2008-2009 [Björn Hoehrmann](http://bjoern.hoehrmann.de/) -* * * - The class contains a slightly modified version of the Grisu2 algorithm from Florian Loitsch which is licensed under the [MIT License](http://opensource.org/licenses/MIT) (see above). Copyright © 2009 [Florian Loitsch](http://florian.loitsch.com/) ## Contact @@ -934,6 +932,7 @@ I deeply appreciate the help of the following people. - [Matthias Möller](https://github.com/TinyTinni) added a `.natvis` for the MSVC debug view. - [bogemic](https://github.com/bogemic) fixed some C++17 deprecation warnings. - [Eren Okka](https://github.com/erengy) fixed some MSVC warnings. +- [abolz](https://github.com/abolz) integrated the Grisu2 algorithm for proper floating-point formatting, allowing more roundtrip checks to succeed. Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone. diff --git a/develop/detail/conversions/to_chars.hpp b/develop/detail/conversions/to_chars.hpp index d5e9feb0..73d3a087 100644 --- a/develop/detail/conversions/to_chars.hpp +++ b/develop/detail/conversions/to_chars.hpp @@ -11,24 +11,30 @@ namespace nlohmann namespace detail { -// Implements the Grisu2 algorithm for binary to decimal floating-point conversion. -// -// This implementation is a slightly modified version of the reference implementation which may be -// obtained from http://florian.loitsch.com/publications (bench.tar.gz). -// -// The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch. -// -// For a detailed description of the algorithm see: -// -// [1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with Integers", -// Proceedings of the ACM SIGPLAN 2010 Conference on Programming Language Design and Implementation, PLDI 2010 -// [2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", -// Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language Design and Implementation, PLDI 1996 +/*! +@brief implements the Grisu2 algorithm for binary to decimal floating-point +conversion. + +This implementation is a slightly modified version of the reference +implementation which may be obtained from +http://florian.loitsch.com/publications (bench.tar.gz). + +The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch. + +For a detailed description of the algorithm see: + +[1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with + Integers", Proceedings of the ACM SIGPLAN 2010 Conference on Programming + Language Design and Implementation, PLDI 2010 +[2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", + Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language + Design and Implementation, PLDI 1996 +*/ namespace dtoa_impl { template -Target reinterpret_bits(Source source) +Target reinterpret_bits(const Source source) { static_assert(sizeof(Target) == sizeof(Source), "size mismatch"); @@ -44,117 +50,117 @@ struct diyfp // f * 2^e uint64_t f; int e; - constexpr diyfp() : f(0), e(0) {} - constexpr diyfp(uint64_t f_, int e_) : f(f_), e(e_) {} + constexpr diyfp() noexcept : f(0), e(0) {} + constexpr diyfp(uint64_t f_, int e_) noexcept : f(f_), e(e_) {} - // Returns x - y. - // PRE: x.e == y.e and x.f >= y.f - static diyfp sub(diyfp x, diyfp y); - - // Returns x * y. - // The result is rounded. (Only the upper q bits are returned.) - static diyfp mul(diyfp x, diyfp y); - - // Normalize x such that the significand is >= 2^(q-1). - // PRE: x.f != 0 - static diyfp normalize(diyfp x); - - // Normalize x such that the result has the exponent E. - // PRE: e >= x.e and the upper e - x.e bits of x.f must be zero. - static diyfp normalize_to(diyfp x, int e); -}; - -inline diyfp diyfp::sub(diyfp x, diyfp y) -{ - assert(x.e == y.e); - assert(x.f >= y.f); - - return diyfp(x.f - y.f, x.e); -} - -inline diyfp diyfp::mul(diyfp x, diyfp y) -{ - static_assert(kPrecision == 64, "internal error"); - - // Computes: - // f = round((x.f * y.f) / 2^q) - // e = x.e + y.e + q - - // Emulate the 64-bit * 64-bit multiplication: - // - // p = u * v - // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi) - // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi ) - // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 ) - // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 ) - // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3) - // = (p0_lo ) + 2^32 (Q ) + 2^64 (H ) - // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H ) - // - // (Since Q might be larger than 2^32 - 1) - // - // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H) - // - // (Q_hi + H does not overflow a 64-bit int) - // - // = p_lo + 2^64 p_hi - - const uint64_t u_lo = x.f & 0xFFFFFFFF; - const uint64_t u_hi = x.f >> 32; - const uint64_t v_lo = y.f & 0xFFFFFFFF; - const uint64_t v_hi = y.f >> 32; - - const uint64_t p0 = u_lo * v_lo; - const uint64_t p1 = u_lo * v_hi; - const uint64_t p2 = u_hi * v_lo; - const uint64_t p3 = u_hi * v_hi; - - const uint64_t p0_hi = p0 >> 32; - const uint64_t p1_lo = p1 & 0xFFFFFFFF; - const uint64_t p1_hi = p1 >> 32; - const uint64_t p2_lo = p2 & 0xFFFFFFFF; - const uint64_t p2_hi = p2 >> 32; - - uint64_t Q = p0_hi + p1_lo + p2_lo; - - // The full product might now be computed as - // - // p_hi = p3 + p2_hi + p1_hi + (Q >> 32) - // p_lo = p0_lo + (Q << 32) - // - // But in this particular case here, the full p_lo is not required. - // Effectively we only need to add the highest bit in p_lo to p_hi (and - // Q_hi + 1 does not overflow). - - Q += uint64_t{1} << (64 - 32 - 1); // round, ties up - - const uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32); - - return diyfp(h, x.e + y.e + 64); -} - -inline diyfp diyfp::normalize(diyfp x) -{ - assert(x.f != 0); - - while ((x.f >> 63) == 0) + /*! + @brief returns x - y + @pre x.e == y.e and x.f >= y.f + */ + static diyfp sub(const diyfp& x, const diyfp& y) noexcept { - x.f <<= 1; - x.e--; + assert(x.e == y.e); + assert(x.f >= y.f); + + return diyfp(x.f - y.f, x.e); } - return x; -} + /*! + @brief returns x * y + @note The result is rounded. (Only the upper q bits are returned.) + */ + static diyfp mul(const diyfp& x, const diyfp& y) noexcept + { + static_assert(kPrecision == 64, "internal error"); -inline diyfp diyfp::normalize_to(diyfp x, int target_exponent) -{ - const int delta = x.e - target_exponent; + // Computes: + // f = round((x.f * y.f) / 2^q) + // e = x.e + y.e + q - assert(delta >= 0); - assert(((x.f << delta) >> delta) == x.f); + // Emulate the 64-bit * 64-bit multiplication: + // + // p = u * v + // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi) + // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi ) + // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 ) + // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 ) + // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3) + // = (p0_lo ) + 2^32 (Q ) + 2^64 (H ) + // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H ) + // + // (Since Q might be larger than 2^32 - 1) + // + // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H) + // + // (Q_hi + H does not overflow a 64-bit int) + // + // = p_lo + 2^64 p_hi - return diyfp(x.f << delta, target_exponent); -} + const uint64_t u_lo = x.f & 0xFFFFFFFF; + const uint64_t u_hi = x.f >> 32; + const uint64_t v_lo = y.f & 0xFFFFFFFF; + const uint64_t v_hi = y.f >> 32; + + const uint64_t p0 = u_lo * v_lo; + const uint64_t p1 = u_lo * v_hi; + const uint64_t p2 = u_hi * v_lo; + const uint64_t p3 = u_hi * v_hi; + + const uint64_t p0_hi = p0 >> 32; + const uint64_t p1_lo = p1 & 0xFFFFFFFF; + const uint64_t p1_hi = p1 >> 32; + const uint64_t p2_lo = p2 & 0xFFFFFFFF; + const uint64_t p2_hi = p2 >> 32; + + uint64_t Q = p0_hi + p1_lo + p2_lo; + + // The full product might now be computed as + // + // p_hi = p3 + p2_hi + p1_hi + (Q >> 32) + // p_lo = p0_lo + (Q << 32) + // + // But in this particular case here, the full p_lo is not required. + // Effectively we only need to add the highest bit in p_lo to p_hi (and + // Q_hi + 1 does not overflow). + + Q += uint64_t{1} << (64 - 32 - 1); // round, ties up + + const uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32); + + return diyfp(h, x.e + y.e + 64); + } + + /*! + @brief normalize x such that the significand is >= 2^(q-1) + @pre x.f != 0 + */ + static diyfp normalize(diyfp x) noexcept + { + assert(x.f != 0); + + while ((x.f >> 63) == 0) + { + x.f <<= 1; + x.e--; + } + + return x; + } + + /*! + @brief normalize x such that the result has the exponent E + @pre e >= x.e and the upper e - x.e bits of x.f must be zero. + */ + static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept + { + const int delta = x.e - target_exponent; + + assert(delta >= 0); + assert(((x.f << delta) >> delta) == x.f); + + return diyfp(x.f << delta, target_exponent); + } +}; struct boundaries { @@ -163,8 +169,12 @@ struct boundaries diyfp plus; }; -// Compute the (normalized) diyfp representing the input number 'value' and its boundaries. -// PRE: value must be finite and positive +/*! +Compute the (normalized) diyfp representing the input number 'value' and its +boundaries. + +@pre value must be finite and positive +*/ template boundaries compute_boundaries(FloatType value) { @@ -193,11 +203,9 @@ boundaries compute_boundaries(FloatType value) const uint64_t F = bits & (kHiddenBit - 1); const bool is_denormal = (E == 0); - - const diyfp v - = is_denormal - ? diyfp(F, 1 - kBias) - : diyfp(F + kHiddenBit, static_cast(E) - kBias); + const diyfp v = is_denormal + ? diyfp(F, 1 - kBias) + : diyfp(F + kHiddenBit, static_cast(E) - kBias); // Compute the boundaries m- and m+ of the floating-point value // v = f * 2^e. @@ -221,12 +229,10 @@ boundaries compute_boundaries(FloatType value) // v- m- v m+ v+ const bool lower_boundary_is_closer = (F == 0 and E > 1); - const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1); - const diyfp m_minus - = lower_boundary_is_closer - ? diyfp(4 * v.f - 1, v.e - 2) // (B) - : diyfp(2 * v.f - 1, v.e - 1); // (A) + const diyfp m_minus = lower_boundary_is_closer + ? diyfp(4 * v.f - 1, v.e - 2) // (B) + : diyfp(2 * v.f - 1, v.e - 1); // (A) // Determine the normalized w+ = m+. const diyfp w_plus = diyfp::normalize(m_plus); @@ -302,12 +308,13 @@ struct cached_power // c = f * 2^e ~= 10^k int k; }; -// For a normalized diyfp w = f * 2^e, this function returns a (normalized) -// cached power-of-ten c = f_c * 2^e_c, such that the exponent of the product -// w * c satisfies (Definition 3.2 from [1]) -// -// alpha <= e_c + e + q <= gamma. -// +/*! +For a normalized diyfp w = f * 2^e, this function returns a (normalized) cached +power-of-ten c = f_c * 2^e_c, such that the exponent of the product w * c +satisfies (Definition 3.2 from [1]) + + alpha <= e_c + e + q <= gamma. +*/ inline cached_power get_cached_power_for_binary_exponent(int e) { // Now @@ -468,24 +475,66 @@ inline cached_power get_cached_power_for_binary_exponent(int e) return cached; } -// For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k. -// For n == 0, returns 1 and sets pow10 := 1. -inline int find_largest_pow10(uint32_t n, uint32_t& pow10) +/*! +For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k. +For n == 0, returns 1 and sets pow10 := 1. +*/ +inline int find_largest_pow10(const uint32_t n, uint32_t& pow10) { - if (n >= 1000000000) { pow10 = 1000000000; return 10; } - if (n >= 100000000) { pow10 = 100000000; return 9; } - if (n >= 10000000) { pow10 = 10000000; return 8; } - if (n >= 1000000) { pow10 = 1000000; return 7; } - if (n >= 100000) { pow10 = 100000; return 6; } - if (n >= 10000) { pow10 = 10000; return 5; } - if (n >= 1000) { pow10 = 1000; return 4; } - if (n >= 100) { pow10 = 100; return 3; } - if (n >= 10) { pow10 = 10; return 2; } - - pow10 = 1; return 1; + if (n >= 1000000000) + { + pow10 = 1000000000; + return 10; + } + else if (n >= 100000000) + { + pow10 = 100000000; + return 9; + } + else if (n >= 10000000) + { + pow10 = 10000000; + return 8; + } + else if (n >= 1000000) + { + pow10 = 1000000; + return 7; + } + else if (n >= 100000) + { + pow10 = 100000; + return 6; + } + else if (n >= 10000) + { + pow10 = 10000; + return 5; + } + else if (n >= 1000) + { + pow10 = 1000; + return 4; + } + else if (n >= 100) + { + pow10 = 100; + return 3; + } + else if (n >= 10) + { + pow10 = 10; + return 2; + } + else + { + pow10 = 1; + return 1; + } } -inline void grisu2_round(char* buf, int len, uint64_t dist, uint64_t delta, uint64_t rest, uint64_t ten_k) +inline void grisu2_round(char* buf, int len, uint64_t dist, uint64_t delta, + uint64_t rest, uint64_t ten_k) { assert(len >= 1); assert(dist <= delta); @@ -521,9 +570,12 @@ inline void grisu2_round(char* buf, int len, uint64_t dist, uint64_t delta, uint } } -// Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+. -// M- and M+ must be normalized and share the same exponent -60 <= e <= -32. -inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus) +/*! +Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+. +M- and M+ must be normalized and share the same exponent -60 <= e <= -32. +*/ +inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, + diyfp M_minus, diyfp w, diyfp M_plus) { static_assert(kAlpha >= -60, "internal error"); static_assert(kGamma <= -32, "internal error"); @@ -757,10 +809,13 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, d // N = 9 for p = 24 (IEEE single precision) } -// v = buf * 10^decimal_exponent -// len is the length of the buffer (number of decimal digits) -// The buffer must be large enough, i.e. >= max_digits10. -inline void grisu2(char* buf, int& len, int& decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus) +/*! +v = buf * 10^decimal_exponent +len is the length of the buffer (number of decimal digits) +The buffer must be large enough, i.e. >= max_digits10. +*/ +inline void grisu2(char* buf, int& len, int& decimal_exponent, + diyfp m_minus, diyfp v, diyfp m_plus) { assert(m_plus.e == m_minus.e); assert(m_plus.e == v.e); @@ -812,9 +867,11 @@ inline void grisu2(char* buf, int& len, int& decimal_exponent, diyfp m_minus, di grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus); } -// v = buf * 10^decimal_exponent -// len is the length of the buffer (number of decimal digits) -// The buffer must be large enough, i.e. >= max_digits10. +/*! +v = buf * 10^decimal_exponent +len is the length of the buffer (number of decimal digits) +The buffer must be large enough, i.e. >= max_digits10. +*/ template void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value) { @@ -849,9 +906,11 @@ void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value) grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus); } -// Appends a decimal representation of e to buf. -// Returns a pointer to the element following the exponent. -// PRE: -1000 < e < 1000 +/*! +@brief appends a decimal representation of e to buf +@return a pointer to the element following the exponent. +@pre -1000 < e < 1000 +*/ inline char* append_exponent(char* buf, int e) { assert(e > -1000); @@ -893,12 +952,17 @@ inline char* append_exponent(char* buf, int e) return buf; } -// Prettify v = buf * 10^decimal_exponent -// If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point notation. -// Otherwise it will be printed in exponential notation. -// PRE: min_exp < 0 -// PRE: max_exp > 0 -inline char* format_buffer(char* buf, int len, int decimal_exponent, int min_exp, int max_exp) +/*! +@brief prettify v = buf * 10^decimal_exponent + +If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point +notation. Otherwise it will be printed in exponential notation. + +@pre min_exp < 0 +@pre max_exp > 0 +*/ +inline char* format_buffer(char* buf, int len, int decimal_exponent, + int min_exp, int max_exp) { assert(min_exp < 0); assert(max_exp > 0); @@ -969,14 +1033,16 @@ inline char* format_buffer(char* buf, int len, int decimal_exponent, int min_exp } // namespace dtoa_impl -// Generates a decimal representation of the floating-point number value in [first, last). -// -// The format of the resulting decimal representation is similar to printf's %g format. -// Returns an iterator pointing past-the-end of the decimal representation. -// -// Note: The input number must be finite, i.e. NaN's and Inf's are not supported. -// Note: The buffer must be large enough. -// Note: The result is NOT null-terminated. +/*! +@brief generates a decimal representation of the floating-point number value in [first, last). + +The format of the resulting decimal representation is similar to printf's %g +format. Returns an iterator pointing past-the-end of the decimal representation. + +@note The input number must be finite, i.e. NaN's and Inf's are not supported. +@note The buffer must be large enough. +@note The result is NOT null-terminated. +*/ template char* to_chars(char* first, char* last, FloatType value) { diff --git a/develop/detail/serializer.hpp b/develop/detail/serializer.hpp index 30d1ef81..600dfdbc 100644 --- a/develop/detail/serializer.hpp +++ b/develop/detail/serializer.hpp @@ -483,8 +483,8 @@ class serializer } // If number_float_t is an IEEE-754 single or double precision number, - // use the Grisu2 algorithm to produce short numbers which are guaranteed - // to round-trip, using strtof and strtod, resp. + // use the Grisu2 algorithm to produce short numbers which are + // guaranteed to round-trip, using strtof and strtod, resp. // // NB: The test below works if == . static constexpr bool is_ieee_single_or_double diff --git a/src/json.hpp b/src/json.hpp index 389ad9e8..03101ca8 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -7077,24 +7077,30 @@ namespace nlohmann namespace detail { -// Implements the Grisu2 algorithm for binary to decimal floating-point conversion. -// -// This implementation is a slightly modified version of the reference implementation which may be -// obtained from http://florian.loitsch.com/publications (bench.tar.gz). -// -// The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch. -// -// For a detailed description of the algorithm see: -// -// [1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with Integers", -// Proceedings of the ACM SIGPLAN 2010 Conference on Programming Language Design and Implementation, PLDI 2010 -// [2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", -// Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language Design and Implementation, PLDI 1996 +/*! +@brief implements the Grisu2 algorithm for binary to decimal floating-point +conversion. + +This implementation is a slightly modified version of the reference +implementation which may be obtained from +http://florian.loitsch.com/publications (bench.tar.gz). + +The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch. + +For a detailed description of the algorithm see: + +[1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with + Integers", Proceedings of the ACM SIGPLAN 2010 Conference on Programming + Language Design and Implementation, PLDI 2010 +[2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", + Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language + Design and Implementation, PLDI 1996 +*/ namespace dtoa_impl { template -Target reinterpret_bits(Source source) +Target reinterpret_bits(const Source source) { static_assert(sizeof(Target) == sizeof(Source), "size mismatch"); @@ -7110,117 +7116,117 @@ struct diyfp // f * 2^e uint64_t f; int e; - constexpr diyfp() : f(0), e(0) {} - constexpr diyfp(uint64_t f_, int e_) : f(f_), e(e_) {} + constexpr diyfp() noexcept : f(0), e(0) {} + constexpr diyfp(uint64_t f_, int e_) noexcept : f(f_), e(e_) {} - // Returns x - y. - // PRE: x.e == y.e and x.f >= y.f - static diyfp sub(diyfp x, diyfp y); - - // Returns x * y. - // The result is rounded. (Only the upper q bits are returned.) - static diyfp mul(diyfp x, diyfp y); - - // Normalize x such that the significand is >= 2^(q-1). - // PRE: x.f != 0 - static diyfp normalize(diyfp x); - - // Normalize x such that the result has the exponent E. - // PRE: e >= x.e and the upper e - x.e bits of x.f must be zero. - static diyfp normalize_to(diyfp x, int e); -}; - -inline diyfp diyfp::sub(diyfp x, diyfp y) -{ - assert(x.e == y.e); - assert(x.f >= y.f); - - return diyfp(x.f - y.f, x.e); -} - -inline diyfp diyfp::mul(diyfp x, diyfp y) -{ - static_assert(kPrecision == 64, "internal error"); - - // Computes: - // f = round((x.f * y.f) / 2^q) - // e = x.e + y.e + q - - // Emulate the 64-bit * 64-bit multiplication: - // - // p = u * v - // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi) - // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi ) - // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 ) - // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 ) - // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3) - // = (p0_lo ) + 2^32 (Q ) + 2^64 (H ) - // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H ) - // - // (Since Q might be larger than 2^32 - 1) - // - // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H) - // - // (Q_hi + H does not overflow a 64-bit int) - // - // = p_lo + 2^64 p_hi - - const uint64_t u_lo = x.f & 0xFFFFFFFF; - const uint64_t u_hi = x.f >> 32; - const uint64_t v_lo = y.f & 0xFFFFFFFF; - const uint64_t v_hi = y.f >> 32; - - const uint64_t p0 = u_lo * v_lo; - const uint64_t p1 = u_lo * v_hi; - const uint64_t p2 = u_hi * v_lo; - const uint64_t p3 = u_hi * v_hi; - - const uint64_t p0_hi = p0 >> 32; - const uint64_t p1_lo = p1 & 0xFFFFFFFF; - const uint64_t p1_hi = p1 >> 32; - const uint64_t p2_lo = p2 & 0xFFFFFFFF; - const uint64_t p2_hi = p2 >> 32; - - uint64_t Q = p0_hi + p1_lo + p2_lo; - - // The full product might now be computed as - // - // p_hi = p3 + p2_hi + p1_hi + (Q >> 32) - // p_lo = p0_lo + (Q << 32) - // - // But in this particular case here, the full p_lo is not required. - // Effectively we only need to add the highest bit in p_lo to p_hi (and - // Q_hi + 1 does not overflow). - - Q += uint64_t{1} << (64 - 32 - 1); // round, ties up - - const uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32); - - return diyfp(h, x.e + y.e + 64); -} - -inline diyfp diyfp::normalize(diyfp x) -{ - assert(x.f != 0); - - while ((x.f >> 63) == 0) + /*! + @brief returns x - y + @pre x.e == y.e and x.f >= y.f + */ + static diyfp sub(const diyfp& x, const diyfp& y) noexcept { - x.f <<= 1; - x.e--; + assert(x.e == y.e); + assert(x.f >= y.f); + + return diyfp(x.f - y.f, x.e); } - return x; -} + /*! + @brief returns x * y + @note The result is rounded. (Only the upper q bits are returned.) + */ + static diyfp mul(const diyfp& x, const diyfp& y) noexcept + { + static_assert(kPrecision == 64, "internal error"); -inline diyfp diyfp::normalize_to(diyfp x, int target_exponent) -{ - const int delta = x.e - target_exponent; + // Computes: + // f = round((x.f * y.f) / 2^q) + // e = x.e + y.e + q - assert(delta >= 0); - assert(((x.f << delta) >> delta) == x.f); + // Emulate the 64-bit * 64-bit multiplication: + // + // p = u * v + // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi) + // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi ) + // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 ) + // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 ) + // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3) + // = (p0_lo ) + 2^32 (Q ) + 2^64 (H ) + // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H ) + // + // (Since Q might be larger than 2^32 - 1) + // + // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H) + // + // (Q_hi + H does not overflow a 64-bit int) + // + // = p_lo + 2^64 p_hi - return diyfp(x.f << delta, target_exponent); -} + const uint64_t u_lo = x.f & 0xFFFFFFFF; + const uint64_t u_hi = x.f >> 32; + const uint64_t v_lo = y.f & 0xFFFFFFFF; + const uint64_t v_hi = y.f >> 32; + + const uint64_t p0 = u_lo * v_lo; + const uint64_t p1 = u_lo * v_hi; + const uint64_t p2 = u_hi * v_lo; + const uint64_t p3 = u_hi * v_hi; + + const uint64_t p0_hi = p0 >> 32; + const uint64_t p1_lo = p1 & 0xFFFFFFFF; + const uint64_t p1_hi = p1 >> 32; + const uint64_t p2_lo = p2 & 0xFFFFFFFF; + const uint64_t p2_hi = p2 >> 32; + + uint64_t Q = p0_hi + p1_lo + p2_lo; + + // The full product might now be computed as + // + // p_hi = p3 + p2_hi + p1_hi + (Q >> 32) + // p_lo = p0_lo + (Q << 32) + // + // But in this particular case here, the full p_lo is not required. + // Effectively we only need to add the highest bit in p_lo to p_hi (and + // Q_hi + 1 does not overflow). + + Q += uint64_t{1} << (64 - 32 - 1); // round, ties up + + const uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32); + + return diyfp(h, x.e + y.e + 64); + } + + /*! + @brief normalize x such that the significand is >= 2^(q-1) + @pre x.f != 0 + */ + static diyfp normalize(diyfp x) noexcept + { + assert(x.f != 0); + + while ((x.f >> 63) == 0) + { + x.f <<= 1; + x.e--; + } + + return x; + } + + /*! + @brief normalize x such that the result has the exponent E + @pre e >= x.e and the upper e - x.e bits of x.f must be zero. + */ + static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept + { + const int delta = x.e - target_exponent; + + assert(delta >= 0); + assert(((x.f << delta) >> delta) == x.f); + + return diyfp(x.f << delta, target_exponent); + } +}; struct boundaries { @@ -7229,8 +7235,12 @@ struct boundaries diyfp plus; }; -// Compute the (normalized) diyfp representing the input number 'value' and its boundaries. -// PRE: value must be finite and positive +/*! +Compute the (normalized) diyfp representing the input number 'value' and its +boundaries. + +@pre value must be finite and positive +*/ template boundaries compute_boundaries(FloatType value) { @@ -7259,11 +7269,9 @@ boundaries compute_boundaries(FloatType value) const uint64_t F = bits & (kHiddenBit - 1); const bool is_denormal = (E == 0); - - const diyfp v - = is_denormal - ? diyfp(F, 1 - kBias) - : diyfp(F + kHiddenBit, static_cast(E) - kBias); + const diyfp v = is_denormal + ? diyfp(F, 1 - kBias) + : diyfp(F + kHiddenBit, static_cast(E) - kBias); // Compute the boundaries m- and m+ of the floating-point value // v = f * 2^e. @@ -7287,12 +7295,10 @@ boundaries compute_boundaries(FloatType value) // v- m- v m+ v+ const bool lower_boundary_is_closer = (F == 0 and E > 1); - const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1); - const diyfp m_minus - = lower_boundary_is_closer - ? diyfp(4 * v.f - 1, v.e - 2) // (B) - : diyfp(2 * v.f - 1, v.e - 1); // (A) + const diyfp m_minus = lower_boundary_is_closer + ? diyfp(4 * v.f - 1, v.e - 2) // (B) + : diyfp(2 * v.f - 1, v.e - 1); // (A) // Determine the normalized w+ = m+. const diyfp w_plus = diyfp::normalize(m_plus); @@ -7368,12 +7374,13 @@ struct cached_power // c = f * 2^e ~= 10^k int k; }; -// For a normalized diyfp w = f * 2^e, this function returns a (normalized) -// cached power-of-ten c = f_c * 2^e_c, such that the exponent of the product -// w * c satisfies (Definition 3.2 from [1]) -// -// alpha <= e_c + e + q <= gamma. -// +/*! +For a normalized diyfp w = f * 2^e, this function returns a (normalized) cached +power-of-ten c = f_c * 2^e_c, such that the exponent of the product w * c +satisfies (Definition 3.2 from [1]) + + alpha <= e_c + e + q <= gamma. +*/ inline cached_power get_cached_power_for_binary_exponent(int e) { // Now @@ -7534,24 +7541,66 @@ inline cached_power get_cached_power_for_binary_exponent(int e) return cached; } -// For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k. -// For n == 0, returns 1 and sets pow10 := 1. -inline int find_largest_pow10(uint32_t n, uint32_t& pow10) +/*! +For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k. +For n == 0, returns 1 and sets pow10 := 1. +*/ +inline int find_largest_pow10(const uint32_t n, uint32_t& pow10) { - if (n >= 1000000000) { pow10 = 1000000000; return 10; } - if (n >= 100000000) { pow10 = 100000000; return 9; } - if (n >= 10000000) { pow10 = 10000000; return 8; } - if (n >= 1000000) { pow10 = 1000000; return 7; } - if (n >= 100000) { pow10 = 100000; return 6; } - if (n >= 10000) { pow10 = 10000; return 5; } - if (n >= 1000) { pow10 = 1000; return 4; } - if (n >= 100) { pow10 = 100; return 3; } - if (n >= 10) { pow10 = 10; return 2; } - - pow10 = 1; return 1; + if (n >= 1000000000) + { + pow10 = 1000000000; + return 10; + } + else if (n >= 100000000) + { + pow10 = 100000000; + return 9; + } + else if (n >= 10000000) + { + pow10 = 10000000; + return 8; + } + else if (n >= 1000000) + { + pow10 = 1000000; + return 7; + } + else if (n >= 100000) + { + pow10 = 100000; + return 6; + } + else if (n >= 10000) + { + pow10 = 10000; + return 5; + } + else if (n >= 1000) + { + pow10 = 1000; + return 4; + } + else if (n >= 100) + { + pow10 = 100; + return 3; + } + else if (n >= 10) + { + pow10 = 10; + return 2; + } + else + { + pow10 = 1; + return 1; + } } -inline void grisu2_round(char* buf, int len, uint64_t dist, uint64_t delta, uint64_t rest, uint64_t ten_k) +inline void grisu2_round(char* buf, int len, uint64_t dist, uint64_t delta, + uint64_t rest, uint64_t ten_k) { assert(len >= 1); assert(dist <= delta); @@ -7587,9 +7636,12 @@ inline void grisu2_round(char* buf, int len, uint64_t dist, uint64_t delta, uint } } -// Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+. -// M- and M+ must be normalized and share the same exponent -60 <= e <= -32. -inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus) +/*! +Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+. +M- and M+ must be normalized and share the same exponent -60 <= e <= -32. +*/ +inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, + diyfp M_minus, diyfp w, diyfp M_plus) { static_assert(kAlpha >= -60, "internal error"); static_assert(kGamma <= -32, "internal error"); @@ -7823,10 +7875,13 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, d // N = 9 for p = 24 (IEEE single precision) } -// v = buf * 10^decimal_exponent -// len is the length of the buffer (number of decimal digits) -// The buffer must be large enough, i.e. >= max_digits10. -inline void grisu2(char* buf, int& len, int& decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus) +/*! +v = buf * 10^decimal_exponent +len is the length of the buffer (number of decimal digits) +The buffer must be large enough, i.e. >= max_digits10. +*/ +inline void grisu2(char* buf, int& len, int& decimal_exponent, + diyfp m_minus, diyfp v, diyfp m_plus) { assert(m_plus.e == m_minus.e); assert(m_plus.e == v.e); @@ -7878,9 +7933,11 @@ inline void grisu2(char* buf, int& len, int& decimal_exponent, diyfp m_minus, di grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus); } -// v = buf * 10^decimal_exponent -// len is the length of the buffer (number of decimal digits) -// The buffer must be large enough, i.e. >= max_digits10. +/*! +v = buf * 10^decimal_exponent +len is the length of the buffer (number of decimal digits) +The buffer must be large enough, i.e. >= max_digits10. +*/ template void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value) { @@ -7915,9 +7972,11 @@ void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value) grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus); } -// Appends a decimal representation of e to buf. -// Returns a pointer to the element following the exponent. -// PRE: -1000 < e < 1000 +/*! +@brief appends a decimal representation of e to buf +@return a pointer to the element following the exponent. +@pre -1000 < e < 1000 +*/ inline char* append_exponent(char* buf, int e) { assert(e > -1000); @@ -7959,12 +8018,17 @@ inline char* append_exponent(char* buf, int e) return buf; } -// Prettify v = buf * 10^decimal_exponent -// If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point notation. -// Otherwise it will be printed in exponential notation. -// PRE: min_exp < 0 -// PRE: max_exp > 0 -inline char* format_buffer(char* buf, int len, int decimal_exponent, int min_exp, int max_exp) +/*! +@brief prettify v = buf * 10^decimal_exponent + +If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point +notation. Otherwise it will be printed in exponential notation. + +@pre min_exp < 0 +@pre max_exp > 0 +*/ +inline char* format_buffer(char* buf, int len, int decimal_exponent, + int min_exp, int max_exp) { assert(min_exp < 0); assert(max_exp > 0); @@ -8035,14 +8099,16 @@ inline char* format_buffer(char* buf, int len, int decimal_exponent, int min_exp } // namespace dtoa_impl -// Generates a decimal representation of the floating-point number value in [first, last). -// -// The format of the resulting decimal representation is similar to printf's %g format. -// Returns an iterator pointing past-the-end of the decimal representation. -// -// Note: The input number must be finite, i.e. NaN's and Inf's are not supported. -// Note: The buffer must be large enough. -// Note: The result is NOT null-terminated. +/*! +@brief generates a decimal representation of the floating-point number value in [first, last). + +The format of the resulting decimal representation is similar to printf's %g +format. Returns an iterator pointing past-the-end of the decimal representation. + +@note The input number must be finite, i.e. NaN's and Inf's are not supported. +@note The buffer must be large enough. +@note The result is NOT null-terminated. +*/ template char* to_chars(char* first, char* last, FloatType value) { @@ -8564,8 +8630,8 @@ class serializer } // If number_float_t is an IEEE-754 single or double precision number, - // use the Grisu2 algorithm to produce short numbers which are guaranteed - // to round-trip, using strtof and strtod, resp. + // use the Grisu2 algorithm to produce short numbers which are + // guaranteed to round-trip, using strtof and strtod, resp. // // NB: The test below works if == . static constexpr bool is_ieee_single_or_double diff --git a/test/src/unit-to_chars.cpp b/test/src/unit-to_chars.cpp index c9b326d9..55dee340 100644 --- a/test/src/unit-to_chars.cpp +++ b/test/src/unit-to_chars.cpp @@ -60,26 +60,28 @@ static float make_float(uint64_t f, int e) constexpr int kDenormalExponent = 1 - kExponentBias; constexpr int kMaxExponent = 0xFF - kExponentBias; - while (f > kHiddenBit + kSignificandMask) { + while (f > kHiddenBit + kSignificandMask) + { f >>= 1; e++; } - if (e >= kMaxExponent) { + if (e >= kMaxExponent) + { return std::numeric_limits::infinity(); } - if (e < kDenormalExponent) { + if (e < kDenormalExponent) + { return 0.0; } - while (e > kDenormalExponent && (f & kHiddenBit) == 0) { + while (e > kDenormalExponent && (f & kHiddenBit) == 0) + { f <<= 1; e--; } - uint64_t biased_exponent; - if (e == kDenormalExponent && (f & kHiddenBit) == 0) - biased_exponent = 0; - else - biased_exponent = static_cast(e + kExponentBias); + uint64_t biased_exponent = (e == kDenormalExponent && (f & kHiddenBit) == 0) + ? 0 + : static_cast(e + kExponentBias); uint64_t bits = (f & kSignificandMask) | (biased_exponent << kPhysicalSignificandSize); return reinterpret_bits(static_cast(bits)); @@ -110,26 +112,28 @@ static double make_double(uint64_t f, int e) constexpr int kDenormalExponent = 1 - kExponentBias; constexpr int kMaxExponent = 0x7FF - kExponentBias; - while (f > kHiddenBit + kSignificandMask) { + while (f > kHiddenBit + kSignificandMask) + { f >>= 1; e++; } - if (e >= kMaxExponent) { + if (e >= kMaxExponent) + { return std::numeric_limits::infinity(); } - if (e < kDenormalExponent) { + if (e < kDenormalExponent) + { return 0.0; } - while (e > kDenormalExponent && (f & kHiddenBit) == 0) { + while (e > kDenormalExponent && (f & kHiddenBit) == 0) + { f <<= 1; e--; } - uint64_t biased_exponent; - if (e == kDenormalExponent && (f & kHiddenBit) == 0) - biased_exponent = 0; - else - biased_exponent = static_cast(e + kExponentBias); + uint64_t biased_exponent = (e == kDenormalExponent && (f & kHiddenBit) == 0) + ? 0 + : static_cast(e + kExponentBias); uint64_t bits = (f & kSignificandMask) | (biased_exponent << kPhysicalSignificandSize); return reinterpret_bits(bits); @@ -139,7 +143,7 @@ TEST_CASE("digit gen") { SECTION("single precision") { - auto check_float = [](float number, const std::string& digits, int expected_exponent) + auto check_float = [](float number, const std::string & digits, int expected_exponent) { CAPTURE(number); CAPTURE(digits); @@ -203,7 +207,7 @@ TEST_CASE("digit gen") SECTION("double precision") { - auto check_double = [](double number, const std::string& digits, int expected_exponent) + auto check_double = [](double number, const std::string & digits, int expected_exponent) { CAPTURE(number); CAPTURE(digits); @@ -349,7 +353,7 @@ TEST_CASE("formatting") { SECTION("single precision") { - auto check_float = [](float number, const std::string& expected) + auto check_float = [](float number, const std::string & expected) { char buf[32]; char* end = nlohmann::detail::to_chars(buf, buf + 32, number); @@ -357,7 +361,7 @@ TEST_CASE("formatting") CHECK(actual == expected); }; - // %.9g + // %.9g check_float( -1.2345e-22f, "-1.2345e-22" ); // -1.23450004e-22 check_float( -1.2345e-21f, "-1.2345e-21" ); // -1.23450002e-21 check_float( -1.2345e-20f, "-1.2345e-20" ); // -1.23450002e-20 @@ -409,7 +413,7 @@ TEST_CASE("formatting") SECTION("double precision") { - auto check_double = [](double number, const std::string& expected) + auto check_double = [](double number, const std::string & expected) { char buf[32]; char* end = nlohmann::detail::to_chars(buf, buf + 32, number); From fc32b8a9bca5b3655cc74d9e37c5586579e219f3 Mon Sep 17 00:00:00 2001 From: Vadim Evard Date: Mon, 22 Jan 2018 13:14:39 +0300 Subject: [PATCH 078/106] Fix a typo in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 09353b9b..9ddff217 100644 --- a/README.md +++ b/README.md @@ -956,7 +956,7 @@ The library itself contains of a single header file licensed under the MIT licen - [**Doxygen**](http://www.stack.nl/~dimitri/doxygen/) to generate [documentation](https://nlohmann.github.io/json/) - [**git-update-ghpages**](https://github.com/rstacruz/git-update-ghpages) to upload the documentation to gh-pages - [**GitHub Changelog Generator**](https://github.com/skywinder/github-changelog-generator) to generate the [ChangeLog](https://github.com/nlohmann/json/blob/develop/ChangeLog.md) -- [**Google Benchmark**]https://github.com/google/benchmark) to implement the benchmarks +- [**Google Benchmark**](https://github.com/google/benchmark) to implement the benchmarks - [**libFuzzer**](http://llvm.org/docs/LibFuzzer.html) to implement fuzz testing for OSS-Fuzz - [**OSS-Fuzz**](https://github.com/google/oss-fuzz) for continuous fuzz testing of the library - [**Probot**](https://probot.github.io) for automating maintainer tasks such as closing stale issues, requesting missing information, or detecting toxic comments. From 7eabb6ba36887ec9de0beda949eaca670a2b703c Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Mon, 22 Jan 2018 23:23:17 +0100 Subject: [PATCH 079/106] :memo: updated documentation for UBJSON functions --- develop/detail/parsing/binary_writer.hpp | 2 +- develop/json.hpp | 146 +++++++++++++++++++++- doc/examples/from_ubjson.cpp | 19 +++ doc/examples/from_ubjson.link | 1 + doc/examples/from_ubjson.output | 4 + doc/examples/to_ubjson.cpp | 62 ++++++++++ doc/examples/to_ubjson.link | 1 + doc/examples/to_ubjson.output | 4 + src/json.hpp | 148 ++++++++++++++++++++++- test/src/unit-to_chars.cpp | 8 +- 10 files changed, 385 insertions(+), 10 deletions(-) create mode 100644 doc/examples/from_ubjson.cpp create mode 100644 doc/examples/from_ubjson.link create mode 100644 doc/examples/from_ubjson.output create mode 100644 doc/examples/to_ubjson.cpp create mode 100644 doc/examples/to_ubjson.link create mode 100644 doc/examples/to_ubjson.output diff --git a/develop/detail/parsing/binary_writer.hpp b/develop/detail/parsing/binary_writer.hpp index 7bf894f6..87aaffa8 100644 --- a/develop/detail/parsing/binary_writer.hpp +++ b/develop/detail/parsing/binary_writer.hpp @@ -721,7 +721,7 @@ class binary_writer { if (add_prefix) { - oa->write_character(static_cast('i')); // uint8 + oa->write_character(static_cast('i')); // int8 } write_number(static_cast(n)); } diff --git a/develop/json.hpp b/develop/json.hpp index 9e6f239f..abce61aa 100644 --- a/develop/json.hpp +++ b/develop/json.hpp @@ -6515,9 +6515,11 @@ class basic_json vector in CBOR format.,to_cbor} @sa http://cbor.io - @sa @ref from_cbor(const std::vector&, const size_t) for the + @sa @ref from_cbor(detail::input_adapter, const bool strict) for the analogous deserialization @sa @ref to_msgpack(const basic_json&) for the related MessagePack format + @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the + related UBJSON format @since version 2.0.9 */ @@ -6613,6 +6615,8 @@ class basic_json @sa @ref from_msgpack(const std::vector&, const size_t) for the analogous deserialization @sa @ref to_cbor(const basic_json& for the related CBOR format + @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the + related UBJSON format @since version 2.0.9 */ @@ -6633,8 +6637,89 @@ class basic_json binary_writer(o).write_msgpack(j); } + /*! + @brief create a UBJSON serialization of a given JSON value + + Serializes a given JSON value @a j to a byte vector using the UBJSON + (Universal Binary JSON) serialization format. UBJSON aims to be more compact + than JSON itself, yet more efficient to parse. + + The library uses the following mapping from JSON values types to + UBJSON types according to the UBJSON specification: + + JSON value type | value/range | UBJSON type | marker + --------------- | --------------------------------- | ----------- | ------ + null | `null` | null | `Z` + boolean | `true` | true | `T` + boolean | `false` | false | `F` + number_integer | -9223372036854775808..-2147483649 | int64 | `L` + number_integer | -2147483648..-32769 | int32 | `l` + number_integer | -32768..-129 | int16 | `I` + number_integer | -128..127 | int8 | `i` + number_integer | 128..255 | uint8 | `U` + number_integer | 256..32767 | int16 | `I` + number_integer | 32768..2147483647 | int32 | `l` + number_integer | 2147483648..9223372036854775807 | int64 | `L` + number_unsigned | 0..127 | int8 | `i` + number_unsigned | 128..255 | uint8 | `U` + number_unsigned | 256..32767 | int16 | `I` + number_unsigned | 32768..2147483647 | int32 | `l` + number_unsigned | 2147483648..9223372036854775807 | int64 | `L` + number_float | *any value* | float64 | `D` + string | *with shortest length indicator* | string | `S` + array | *see notes on optimized format* | array | `[` + object | *see notes on optimized format* | map | `{` + + @note The mapping is **complete** in the sense that any JSON value type + can be converted to a UBJSON value. + + @note The following values can **not** be converted to a UBJSON value: + - strings with more than 9223372036854775807 bytes (theoretical) + - unsigned integer numbers above 9223372036854775807 + + @note The following markers are not used in the conversion: + - `Z`: no-op values are not created. + - `C`: single-byte strings are serialized with `S` markers. + + @note Any UBJSON output created @ref to_ubjson can be successfully parsed + by @ref from_ubjson. + + @note If NaN or Infinity are stored inside a JSON number, they are + serialized properly. This behavior differs from the @ref dump() + function which serializes NaN or Infinity to `null`. + + @note The optimized formats for containers are supported: Parameter + @a use_size adds size information to the beginning of a container and + removes the closing marker. Parameter @a use_type further checks + whether all elements of a container have the same type and adds the + type marker to the beginning of the container. The @a use_type + parameter must only be used together with @a use_size = true. Note + that @a use_size = true alone may result in larger representations - + the benefit of this parameter is that the receiving side is + immediately informed on the number of elements of the container. + + @param[in] j JSON value to serialize + @param[in] use_size whether to add size annotations to container types + @param[in] use_type whether to add type annotations to container types + (must be combined with @a use_size = true) + @return UBJSON serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in UBJSON format.,to_ubjson} + + @sa http://ubjson.org + @sa @ref from_ubjson(detail::input_adapter, const bool strict) for the + analogous deserialization + @sa @ref to_cbor(const basic_json& for the related CBOR format + @sa @ref to_msgpack(const basic_json&) for the related MessagePack format + + @since version 3.1.0 + */ static std::vector to_ubjson(const basic_json& j, - const bool use_size = false, const bool use_type = false) + const bool use_size = false, + const bool use_type = false) { std::vector result; to_ubjson(j, result, use_size, use_type); @@ -6739,6 +6824,8 @@ class basic_json @sa @ref to_cbor(const basic_json&) for the analogous serialization @sa @ref from_msgpack(detail::input_adapter, const bool) for the related MessagePack format + @sa @ref from_ubjson(detail::input_adapter, const bool) for the related + UBJSON format @since version 2.0.9; parameter @a start_index since 2.1.1; changed to consume input adapters, removed start_index parameter, and added @@ -6826,6 +6913,8 @@ class basic_json @sa @ref to_msgpack(const basic_json&) for the analogous serialization @sa @ref from_cbor(detail::input_adapter, const bool) for the related CBOR format + @sa @ref from_ubjson(detail::input_adapter, const bool) for the related + UBJSON format @since version 2.0.9; parameter @a start_index since 2.1.1; changed to consume input adapters, removed start_index parameter, and added @@ -6847,6 +6936,59 @@ class basic_json return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_msgpack(strict); } + /*! + @brief create a JSON value from an input in UBJSON format + + Deserializes a given input @a i to a JSON value using the UBJSON (Universal + Binary JSON) serialization format. + + The library maps UBJSON types to JSON value types as follows: + + UBJSON type | JSON value type | marker + ----------- | --------------------------------------- | ------ + no-op | *no value, next value is read* | `N` + null | `null` | `Z` + false | `false` | `F` + true | `true` | `T` + float32 | number_float | `d` + float64 | number_float | `D` + uint8 | number_unsigned | `U` + int8 | number_integer | `i` + int16 | number_integer | `I` + int32 | number_integer | `l` + int64 | number_integer | `L` + string | string | `S` + char | string | `C` + array | array (optimized values are supported) | `[` + object | object (optimized values are supported) | `{` + + @note The mapping is **complete** in the sense that any UBJSON value can + be converted to a JSON value. + + @param[in] i an input in UBJSON format convertible to an input adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + + @throw parse_error.110 if the given input ends prematurely or the end of + file was not reached when @a strict was set to true + @throw parse_error.112 if a parse error occurs + @throw parse_error.113 if a string could not be parsed successfully + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in + UBJSON format to a JSON value.,from_ubjson} + + @sa http://ubjson.org + @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the + analogous serialization + @sa @ref from_cbor(detail::input_adapter, const bool) for the related CBOR + format + @sa @ref from_msgpack(detail::input_adapter, const bool) for the related + MessagePack format + + @since version 3.1.0 + */ static basic_json from_ubjson(detail::input_adapter i, const bool strict = true) { diff --git a/doc/examples/from_ubjson.cpp b/doc/examples/from_ubjson.cpp new file mode 100644 index 00000000..2adca3c6 --- /dev/null +++ b/doc/examples/from_ubjson.cpp @@ -0,0 +1,19 @@ +#include +#include "json.hpp" + +using json = nlohmann::json; + +int main() +{ + // create byte vector + std::vector v = {0x7B, 0x69, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61, + 0x63, 0x74, 0x54, 0x69, 0x06, 0x73, 0x63, 0x68, + 0x65, 0x6D, 0x61, 0x69, 0x00, 0x7D + }; + + // deserialize it with UBJSON + json j = json::from_ubjson(v); + + // print the deserialized JSON value + std::cout << std::setw(2) << j << std::endl; +} diff --git a/doc/examples/from_ubjson.link b/doc/examples/from_ubjson.link new file mode 100644 index 00000000..5ff36826 --- /dev/null +++ b/doc/examples/from_ubjson.link @@ -0,0 +1 @@ +online \ No newline at end of file diff --git a/doc/examples/from_ubjson.output b/doc/examples/from_ubjson.output new file mode 100644 index 00000000..259f63bd --- /dev/null +++ b/doc/examples/from_ubjson.output @@ -0,0 +1,4 @@ +{ + "compact": true, + "schema": 0 +} diff --git a/doc/examples/to_ubjson.cpp b/doc/examples/to_ubjson.cpp new file mode 100644 index 00000000..a39bc081 --- /dev/null +++ b/doc/examples/to_ubjson.cpp @@ -0,0 +1,62 @@ +#include +#include "json.hpp" + +using json = nlohmann::json; + +// function to print UBJSON's diagnostic format +void print_byte(uint8_t byte) +{ + if (32 < byte and byte < 128) + { + std::cout << (char)byte; + } + else + { + std::cout << (int)byte; + } +} + +int main() +{ + // create a JSON value + json j = R"({"compact": true, "schema": false})"_json; + + // serialize it to UBJSON + std::vector v = json::to_ubjson(j); + + // print the vector content + for (auto& byte : v) + { + print_byte(byte); + } + std::cout << std::endl; + + // create an array of numbers + json array = {1, 2, 3, 4, 5, 6, 7, 8}; + + // serialize it to UBJSON using default representation + std::vector v_array = json::to_ubjson(array); + // serialize it to UBJSON using size optimization + std::vector v_array_size = json::to_ubjson(array, true); + // serialize it to UBJSON using type optimization + std::vector v_array_size_and_type = json::to_ubjson(array, true, true); + + // print the vector contents + for (auto& byte : v_array) + { + print_byte(byte); + } + std::cout << std::endl; + + for (auto& byte : v_array_size) + { + print_byte(byte); + } + std::cout << std::endl; + + for (auto& byte : v_array_size_and_type) + { + print_byte(byte); + } + std::cout << std::endl; +} diff --git a/doc/examples/to_ubjson.link b/doc/examples/to_ubjson.link new file mode 100644 index 00000000..919b8b9a --- /dev/null +++ b/doc/examples/to_ubjson.link @@ -0,0 +1 @@ +online \ No newline at end of file diff --git a/doc/examples/to_ubjson.output b/doc/examples/to_ubjson.output new file mode 100644 index 00000000..087980cb --- /dev/null +++ b/doc/examples/to_ubjson.output @@ -0,0 +1,4 @@ +{i7compactTi6schemaF} +[i1i2i3i4i5i6i7i8] +[#i8i1i2i3i4i5i6i7i8 +[$i#i812345678 diff --git a/src/json.hpp b/src/json.hpp index 03101ca8..b1f42acd 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -6860,7 +6860,7 @@ class binary_writer { if (add_prefix) { - oa->write_character(static_cast('i')); // uint8 + oa->write_character(static_cast('i')); // int8 } write_number(static_cast(n)); } @@ -15343,9 +15343,11 @@ class basic_json vector in CBOR format.,to_cbor} @sa http://cbor.io - @sa @ref from_cbor(const std::vector&, const size_t) for the + @sa @ref from_cbor(detail::input_adapter, const bool strict) for the analogous deserialization @sa @ref to_msgpack(const basic_json&) for the related MessagePack format + @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the + related UBJSON format @since version 2.0.9 */ @@ -15441,6 +15443,8 @@ class basic_json @sa @ref from_msgpack(const std::vector&, const size_t) for the analogous deserialization @sa @ref to_cbor(const basic_json& for the related CBOR format + @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the + related UBJSON format @since version 2.0.9 */ @@ -15461,8 +15465,89 @@ class basic_json binary_writer(o).write_msgpack(j); } + /*! + @brief create a UBJSON serialization of a given JSON value + + Serializes a given JSON value @a j to a byte vector using the UBJSON + (Universal Binary JSON) serialization format. UBJSON aims to be more compact + than JSON itself, yet more efficient to parse. + + The library uses the following mapping from JSON values types to + UBJSON types according to the UBJSON specification: + + JSON value type | value/range | UBJSON type | marker + --------------- | --------------------------------- | ----------- | ------ + null | `null` | null | `Z` + boolean | `true` | true | `T` + boolean | `false` | false | `F` + number_integer | -9223372036854775808..-2147483649 | int64 | `L` + number_integer | -2147483648..-32769 | int32 | `l` + number_integer | -32768..-129 | int16 | `I` + number_integer | -128..127 | int8 | `i` + number_integer | 128..255 | uint8 | `U` + number_integer | 256..32767 | int16 | `I` + number_integer | 32768..2147483647 | int32 | `l` + number_integer | 2147483648..9223372036854775807 | int64 | `L` + number_unsigned | 0..127 | int8 | `i` + number_unsigned | 128..255 | uint8 | `U` + number_unsigned | 256..32767 | int16 | `I` + number_unsigned | 32768..2147483647 | int32 | `l` + number_unsigned | 2147483648..9223372036854775807 | int64 | `L` + number_float | *any value* | float64 | `D` + string | *with shortest length indicator* | string | `S` + array | *see notes on optimized format* | array | `[` + object | *see notes on optimized format* | map | `{` + + @note The mapping is **complete** in the sense that any JSON value type + can be converted to a UBJSON value. + + @note The following values can **not** be converted to a UBJSON value: + - strings with more than 9223372036854775807 bytes (theoretical) + - unsigned integer numbers above 9223372036854775807 + + @note The following markers are not used in the conversion: + - `Z`: no-op values are not created. + - `C`: single-byte strings are serialized with `S` markers. + + @note Any UBJSON output created @ref to_ubjson can be successfully parsed + by @ref from_ubjson. + + @note If NaN or Infinity are stored inside a JSON number, they are + serialized properly. This behavior differs from the @ref dump() + function which serializes NaN or Infinity to `null`. + + @note The optimized formats for containers are supported: Parameter + @a use_size adds size information to the beginning of a container and + removes the closing marker. Parameter @a use_type further checks + whether all elements of a container have the same type and adds the + type marker to the beginning of the container. The @a use_type + parameter must only be used together with @a use_size = true. Note + that @a use_size = true alone may result in larger representations - + the benefit of this parameter is that the receiving side is + immediately informed on the number of elements of the container. + + @param[in] j JSON value to serialize + @param[in] use_size whether to add size annotations to container types + @param[in] use_type whether to add type annotations to container types + (must be combined with @a use_size = true) + @return UBJSON serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in UBJSON format.,to_ubjson} + + @sa http://ubjson.org + @sa @ref from_ubjson(detail::input_adapter, const bool strict) for the + analogous deserialization + @sa @ref to_cbor(const basic_json& for the related CBOR format + @sa @ref to_msgpack(const basic_json&) for the related MessagePack format + + @since version 3.1.0 + */ static std::vector to_ubjson(const basic_json& j, - const bool use_size = false, const bool use_type = false) + const bool use_size = false, + const bool use_type = false) { std::vector result; to_ubjson(j, result, use_size, use_type); @@ -15567,6 +15652,8 @@ class basic_json @sa @ref to_cbor(const basic_json&) for the analogous serialization @sa @ref from_msgpack(detail::input_adapter, const bool) for the related MessagePack format + @sa @ref from_ubjson(detail::input_adapter, const bool) for the related + UBJSON format @since version 2.0.9; parameter @a start_index since 2.1.1; changed to consume input adapters, removed start_index parameter, and added @@ -15654,6 +15741,8 @@ class basic_json @sa @ref to_msgpack(const basic_json&) for the analogous serialization @sa @ref from_cbor(detail::input_adapter, const bool) for the related CBOR format + @sa @ref from_ubjson(detail::input_adapter, const bool) for the related + UBJSON format @since version 2.0.9; parameter @a start_index since 2.1.1; changed to consume input adapters, removed start_index parameter, and added @@ -15675,6 +15764,59 @@ class basic_json return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_msgpack(strict); } + /*! + @brief create a JSON value from an input in UBJSON format + + Deserializes a given input @a i to a JSON value using the UBJSON (Universal + Binary JSON) serialization format. + + The library maps UBJSON types to JSON value types as follows: + + UBJSON type | JSON value type | marker + ----------- | --------------------------------------- | ------ + no-op | *no value, next value is read* | `N` + null | `null` | `Z` + false | `false` | `F` + true | `true` | `T` + float32 | number_float | `d` + float64 | number_float | `D` + uint8 | number_unsigned | `U` + int8 | number_integer | `i` + int16 | number_integer | `I` + int32 | number_integer | `l` + int64 | number_integer | `L` + string | string | `S` + char | string | `C` + array | array (optimized values are supported) | `[` + object | object (optimized values are supported) | `{` + + @note The mapping is **complete** in the sense that any UBJSON value can + be converted to a JSON value. + + @param[in] i an input in UBJSON format convertible to an input adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + + @throw parse_error.110 if the given input ends prematurely or the end of + file was not reached when @a strict was set to true + @throw parse_error.112 if a parse error occurs + @throw parse_error.113 if a string could not be parsed successfully + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in + UBJSON format to a JSON value.,from_ubjson} + + @sa http://ubjson.org + @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the + analogous serialization + @sa @ref from_cbor(detail::input_adapter, const bool) for the related CBOR + format + @sa @ref from_msgpack(detail::input_adapter, const bool) for the related + MessagePack format + + @since version 3.1.0 + */ static basic_json from_ubjson(detail::input_adapter i, const bool strict = true) { diff --git a/test/src/unit-to_chars.cpp b/test/src/unit-to_chars.cpp index 55dee340..973e4e19 100644 --- a/test/src/unit-to_chars.cpp +++ b/test/src/unit-to_chars.cpp @@ -80,8 +80,8 @@ static float make_float(uint64_t f, int e) } uint64_t biased_exponent = (e == kDenormalExponent && (f & kHiddenBit) == 0) - ? 0 - : static_cast(e + kExponentBias); + ? 0 + : static_cast(e + kExponentBias); uint64_t bits = (f & kSignificandMask) | (biased_exponent << kPhysicalSignificandSize); return reinterpret_bits(static_cast(bits)); @@ -132,8 +132,8 @@ static double make_double(uint64_t f, int e) } uint64_t biased_exponent = (e == kDenormalExponent && (f & kHiddenBit) == 0) - ? 0 - : static_cast(e + kExponentBias); + ? 0 + : static_cast(e + kExponentBias); uint64_t bits = (f & kSignificandMask) | (biased_exponent << kPhysicalSignificandSize); return reinterpret_bits(bits); From 3c68a796df0858c0346dac2795aacd939a8e0fb3 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 23 Jan 2018 16:33:08 +0100 Subject: [PATCH 080/106] :fire: deprecated iterator_wrapper #874 Also fixed some warnings from GCC. --- Makefile | 2 +- README.md | 2 +- develop/detail/iterators/iteration_proxy.hpp | 2 +- develop/detail/serializer.hpp | 9 +++--- develop/json.hpp | 18 +++++++---- doc/avatars.png | Bin 587875 -> 589278 bytes src/json.hpp | 29 +++++++++++------- test/Makefile | 2 +- ...it-iterator_wrapper.cpp => unit-items.cpp} | 0 test/src/unit-regression.cpp | 2 +- 10 files changed, 40 insertions(+), 26 deletions(-) rename test/src/{unit-iterator_wrapper.cpp => unit-items.cpp} (100%) diff --git a/Makefile b/Makefile index 28b978c5..ea2d7f73 100644 --- a/Makefile +++ b/Makefile @@ -104,7 +104,7 @@ doctest: # -Wno-keyword-macro: unit-tests use "#define private public" # -Wno-deprecated-declarations: the library deprecated some functions # -Wno-weak-vtables: exception class is defined inline, but has virtual method -# -Wno-range-loop-analysis: iterator_wrapper tests "for(const auto i...)" +# -Wno-range-loop-analysis: items tests "for(const auto i...)" # -Wno-float-equal: not all comparisons in the tests can be replaced by Approx # -Wno-switch-enum -Wno-covered-switch-default: pedantic/contradicting warnings about switches # -Wno-padded: padding is nothing to warn about diff --git a/README.md b/README.md index 09353b9b..21ff833b 100644 --- a/README.md +++ b/README.md @@ -933,7 +933,7 @@ I deeply appreciate the help of the following people. - [bogemic](https://github.com/bogemic) fixed some C++17 deprecation warnings. - [Eren Okka](https://github.com/erengy) fixed some MSVC warnings. - [abolz](https://github.com/abolz) integrated the Grisu2 algorithm for proper floating-point formatting, allowing more roundtrip checks to succeed. - +- [Vadim Evard](https://github.com/Pipeliner) fixed a Markdown issue in the README. Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone. diff --git a/develop/detail/iterators/iteration_proxy.hpp b/develop/detail/iterators/iteration_proxy.hpp index 08b32caf..1a699542 100644 --- a/develop/detail/iterators/iteration_proxy.hpp +++ b/develop/detail/iterators/iteration_proxy.hpp @@ -9,7 +9,7 @@ namespace nlohmann { namespace detail { -/// proxy class for the iterator_wrapper functions +/// proxy class for the items() function template class iteration_proxy { private: diff --git a/develop/detail/serializer.hpp b/develop/detail/serializer.hpp index 600dfdbc..717399f9 100644 --- a/develop/detail/serializer.hpp +++ b/develop/detail/serializer.hpp @@ -351,14 +351,15 @@ class serializer { if (codepoint <= 0xFFFF) { - std::snprintf(string_buffer.data() + bytes, 7, "\\u%04x", codepoint); + std::snprintf(string_buffer.data() + bytes, 7, "\\u%04x", + static_cast(codepoint)); bytes += 6; } else { std::snprintf(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x", - (0xD7C0 + (codepoint >> 10)), - (0xDC00 + (codepoint & 0x3FF))); + static_cast(0xD7C0 + (codepoint >> 10)), + static_cast(0xDC00 + (codepoint & 0x3FF))); bytes += 12; } } @@ -598,7 +599,7 @@ class serializer codep = (state != UTF8_ACCEPT) ? (byte & 0x3fu) | (codep << 6) - : (0xff >> type) & (byte); + : static_cast(0xff >> type) & (byte); state = utf8d[256u + state * 16u + type]; return state; diff --git a/develop/json.hpp b/develop/json.hpp index abce61aa..56cc6f1a 100644 --- a/develop/json.hpp +++ b/develop/json.hpp @@ -4480,18 +4480,24 @@ class basic_json @note The name of this function is not yet final and may change in the future. + + @deprecated This stream operator is deprecated and will be removed in + future 4.0.0 of the library. Please use @ref items() instead; + that is, replace `json::iterator_wrapper(j)` with `j.items()`. */ + JSON_DEPRECATED static iteration_proxy iterator_wrapper(reference ref) noexcept { - return iteration_proxy(ref); + return ref.items(); } /*! @copydoc iterator_wrapper(reference) */ + JSON_DEPRECATED static iteration_proxy iterator_wrapper(const_reference ref) noexcept { - return iteration_proxy(ref); + return ref.items(); } /*! @@ -6127,8 +6133,8 @@ class basic_json /*! @brief serialize to stream - @deprecated This stream operator is deprecated and will be removed in a - future version of the library. Please use + @deprecated This stream operator is deprecated and will be removed in + future 4.0.0 of the library. Please use @ref operator<<(std::ostream&, const basic_json&) instead; that is, replace calls like `j >> o;` with `o << j;`. @since version 1.0.0; deprecated since version 3.0.0 @@ -6313,8 +6319,8 @@ class basic_json /*! @brief deserialize from stream - @deprecated This stream operator is deprecated and will be removed in a - future version of the library. Please use + @deprecated This stream operator is deprecated and will be removed in + version 4.0.0 of the library. Please use @ref operator>>(std::istream&, basic_json&) instead; that is, replace calls like `j << i;` with `i >> j;`. @since version 1.0.0; deprecated since version 3.0.0 diff --git a/doc/avatars.png b/doc/avatars.png index 78df273c22559a38d6668dfb9fac794d4855bd76..b24204bd40b801c3360760a7a2a9a28561f10af5 100644 GIT binary patch delta 421262 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�P=G5iC@M$&0U5_1t`36a@+hGX_N-XSdA;_3cbm}P$BkN7Kh>)%2nRH#XDJV<-h`nP>H0I3!(xP0f-fx zZovl+4Q-#OOqWf^U3i^?0Etn7(Wyu&QW2b685o1i6A_p*Zy&mEwR9RPRlOyRzkg)I z)AI`jdM9oye;zp0SU{r`k@pP1KtiOPwSuB3294}JvuE!R6aX?Xuq85xL|Tb=C@$1A zQm6u>3rPSetqf$Hc6(sl6Q=cLeZ>tDmuiSnd9Z!(@n+HdY#jf<_z=#oHBcgi7{r4w zkV8e17vsfvF}}4CruaU$`keoK0Y+GxmCNNFJ9ZpAe|Rv4Yf3VR@ZQf$|_5QDZ&3jgg#x{(tt*-TH&fo6a`gVl}QKAqu zBBFQzLJ$-m9Cic%Kp`k0!@wfG>)sm%3<1=Ne_~@;xKv3HKnfm=qqI^1_Kec(;SeL{AfRKymAGxp3b3K!*qA2n_FPF>fFW~%! ze{{j76=qBy7VU)2JFT@BCZfVJvJ^#;7cR@ZFc}j8fQV(Utc4;kQWFIat-?AZV2p9r zkq`hd04h;vT#<|SWHbP9?vxf(EU1At z9y@+)HZ7I)Y9mhK+!lGKQ?8_2HqVrefAN36Oz%QgRD}C-lcFdddF06?El{3+9XVbAx(IYPr`%=#fKtjNx?|nWO_NC+<+g~ls(0-F{j*Q4Hu7KkH$QUv z%<3QA^~s<8SKoi|@bN$S$e&y1C&mV9)ufZ#RP#KL#pdhP6~<$cFaZ=M>R86Ua- z$pd3U16!xY9)0?#iOl6&$8BaGf8T%XhAX$vo>|DUVr*pONB`;Vzy8jDPa?=(MTVUv zRAgPF$kH_ZgAabhWvynrHL+p1n#Q$q`RM8SYPD2LOLMJN0Qm5GzCuKKr+|bmy^Mg8X6ypqxkY$t}m5LWK0w*V@Meje;K0;8beX6 zl2U}EH3$;=T>kJ^J~DrLIZhI#2sC=nAc7#mOn{8uvm3dt8cbAK*s~YU%s%9>gN-J8 z?@$1stHAsF7$Txk9$QwQJK<|uIRWbCb-*DwksHVH$tR!s-QRi7O*h_%h>8f|EG?gz z6;Zid7B8N;(`@~#pZxJOe@>9q&h6XY`Og3Roo{@DnW;EbPp{g~&gOG#c*C&iVG`%D zr~kf3NPzdV+#$}H$O6wBFcgyl55CpTI$54O2g;B(S_OQH^P&)nDy0g8cq|06!ZBMA zO2}9w@X%JI5Fpq;p1X#B=Cgm+b&*m^X@gFX2-e|Gf%exEop(h$e@HBh*YDhN-8DPE z^Yzy^>kX~Cyus%xCqMx3Zen~eE=Pa;>4%3$296(Hi;PbrYB#e8l4>cr_n|%e4xQRO zJ(LF)1q-leW}>ig5$|1OA^_1!8)Me1fcmC)L}%HGVZIKp!+9sro54K?qc&g=7SBBy zl87(^fOj6STgj_Oe;FZ>P+1cI0}(*Lovn#T-9%sT)SZBPjFp=WF`&))? z^*iTWV50R!e}(JmX8nqe#u)E?D0;WNyc~+&K@W@SM*#4wwdZi+`oLR&#N#+VbLLF5 z+1$Q;``FmngAYE~YPFIi3CHZy;=<9wK>~KT{y&Kf`2r$v$Pp`pX}!HTGPC*c@%dD{ zjgwQX4HBh#(2$ntDF@!q&gLs?F0;m%Q>Rb=^`}0yf8(kfuDj;?v{V+;o|@j?=`=c> zR$<#qODCI4i>t9&Yb?#5In`;k5d^r4z$vAaR){b-IB2~u3TudBWl*VlyJf9KMY(fY zlL%RBz4u1PnhYXJsO=k=*wQsk4j^4nJrj1z;{`Piowd{L7IP!gAdH}l)=wQhv~_Z7 z!{|V(f7RK(afEGW?#%MbZn#3k=XoI_+UP(?nBhfP^GO8f|m_Pd@n3lWo0Wa!9#$ z5+@a<4T(WXOr*3*wT?;0MkjGXTB%4Q>Y~Vzf7vL-Af8!-tpoOyv+gkKY6X4Wfj+u_ z{_fA*_XBTx4ROX|q(3SZx%C}uT~4sHvU>Q~$))8+sZ=WRLJ?kb&6OjiB5!xHtWl}f zh}P}RL_h?tyAJNW6Yjnn-u-TP{Bc-ag{Pi^yY7NGhS5>jx)pZqf?d1d$}3^>W=PWu zf0%7v49p8Bdg2KPRR<0K9z001EEgXiSCpfAD0(B2tTtd@>xIDplXUbAvvYx$Gy%p!R9fJj=iaIBPP z@!~_4S7{wn$$9U?M6I>L7@5U8?-`Lm!uZTyfKU;Fuw@`GLI5J*oFlSPlq5;qe>(9L zOm2@Swq}oifi_=hw_KO*ya}gwMvr_x@2q~RvHDM^Za8-GG;7syP*P9`_`mxT*o*Ok ziwm|X>HYh9zJ7@#e4Ssv*e9R=tz|!T2mr>IQmK^Zc^?mh7oPGdtj%h*+V_9|_jfv- zhaP%p^XAR__wNtutJ`k7?T3Eoe}_t?QoG&$;0He#wn^ux^uE<`>F4u&zrtsIJLeKh z0lM2=5kRE=?}=z};f(kWtD@2F43;Yd-GwxWVG*PPg**_5QK&!&Q3wHv0Feyn*r>#i z)*^_^k%>I;_}I{JrM$AVv|(&2w~l}Uu^a#ef~^_^N4#!EySMoX6zOg%eGl1^@#O4H=A2cM{~HJ0WVvvw=Xvbj^IoVekk0T!F(j);y4zOJkOIP3CRIO3@qUuz{WwV*GEl=NNXL4_KilPe_E|RE4Sui7#@p6 zQQRqtqOjhpys(9HAYh$eSX}g-yxz=!G->Twys&3a6hinvbULlZ z)!TPXO-(A|W~Xz(e|x>iFTc(e*f$@~X#p3?Dp24S%eq~wQhH%wu~lzPZ7zS|bNAH- zMuFtX1IJ%;>r2r$j~-oUw(>@!X`*CcpmOb%+d6Ic*rUg4aPvRDpbaiW8G0aZ=VvoET$_j+7FkltPU_h(aI?!a0Kze`b{zx$}+~#fq~o%bLDvy~Acv zEES%$&Q@Akvt3x5H9E+WH#-2qozAgm@hZ#nqLU@%NY~1Z6AN(?A$Tt&Y+1ZQVMgaX zA~=OgDN^K|vw7jH{g$`g7eXLFE6+Z5JYq0#mUj&bIV;>NhKlW_@)sX_>d{9YIDK+1 ziBbhXe+VdG3l{{+C|ru;zz|jnXC^0^*?V{J@Vo|0mZB zn%xW8YTg-)QxRZcBKn6T#p`Fi*2^^T>|X_g5=IyV5z#wK#sEOOoh`4fwg<~9O31_x zykc*i16CA4y_GAYEmPryfpP|Gy=M|s-g@vtf1x}Zvk0HfA9w#R2=DOxQB>Alo~*yf zP&EpXz3O+=W_URxzy?bQ)vvr0P5h+AcD9of3DaEi3_bD4grg5T#Nnv~{J_-o1NgW@cXh`q$rg-+iY}ovPJpN~ykKrtgm_z3U0f^l*_B z8)+9xkdYBkfdN(S2sM^gw#-Z~f9A#H;3$L4pPWB@^w{j&=~lbLxhv_oMV^J@H0`t- zdmj42@x70xrSjnL$o8vVF*3DjrGBEdvSJ(c=E_o0befGOI#fDb6^nFt6wEGIOSRi= zP2@crt-SX|QCRD|cp_4Y@~rUQYpqSBLx=a?0(98{gb1hrSbzb#7+84zf6^5sOMlmm zi0lQB*n8{Q7y*Fgdh6=THlh=yjrIPr%~R78qgo;9DDANl0J>?L%ciFq1I6sz$+bqK zR;z>(oTJ0la6R4q0HQ)*0b{g~e#TrNKt#e!sE~*>AcVTuf<%H^5Luj3`tb+ue)92C zwV}-^N-Z*p(n?SZXcK9Te^C_0#w02-#^@-DlPHQ}C#bX*E+nXsoEPtniP$qKf?PwP z25OvhrptlxF6fg%ug_iF4MNvs%M`aTTOq*9k6THf9(Lz*+{bhs%S$BmB32IhYI!2jz6)nwX|d^rd&kR8MA-(aTZaS z>9Q@(80s6RO8(Gvx)T{ zBQjXinuwA_i*UGa_TD-R0PwD}XJ#P?6I?;&Nf&wb`F7{8f9uP!iC57GdB-l%@vAmo z_u11=X5v6RDJ|YL8_O&hMTs)X2V#-ZqBW96K(RTn7can0gprxW5h0QxcH9*f0t**; z#$Mu5S{fM2=k`0Bjnk}TCLVoPd#<#op;`K*In=}8pgln@n8PSfBD&;{aHl(>%ac%@B6;*3m5s) zm%j9aAN=5^O`F1JZoT!^x4!kQVTpK&y~j5b2y}Lqf4NY|^ZNb(@KS9w*fpJd0SFLk z$UlR(gTRani_4^?)9y5zrGYdBL1vG_An1Wr&wm_5F!I9e1wavsHXZ;pv$xi1;xHwV zHjcd_HCU^4nk^(1N)HD+m~dU#Q_#bC>xV9M2VLmyQcwBC__hVYc`Ef{GC5t$ zE{u+hjExUvdFS-t-ua|#@M>(13b zQQwW`>xph(wk#anhX7&(r2znh5eQfS1lfiff8_$Al?E0QnQEHEMCEea&hm;eZ+ZR8 zN6VV?)=;IQl^(08;Z!AwzW3?lMp0z67k1r54~eiMtw=EvWOdA&kd6zMKp4;fBA`PM z0RlzPb#NnGm-Xx4;{|WF$9C_^=0XKK=@r_*b>;4Y*lxWNA{h1r525fw|0^N87cva% zf1mk9AMeGdY+pFhx zqzILcVnifVq_hAELU70oO#^y~0`{Irbzg4aV7Nf&w?M=}2j#sMR7xvSacoYWI%%D4 zXL+;Jtkr6@>VP(i0O&jg9$s{O5Cnzrf4p1nBTzWe#V~+#=HIS!b1eoCyL#7UX}SElFMqLGD#u1o zj*lKVa{R%E25)=iOR~Ix9(h_TGdFi8QhK0Py64_U03nU(WiQ!Pipwu~$+dH*e;2>- zX%K=OmE$~$vb)A;m03*_=($I`3fQ}>;eP`z=#4Mh{325m>B_-QY-bw@4W9L z|NMJjKfhdGZDnI4qwjj>Fa61f?)vDT|Mm8*lj8Wd|JVPCjAjp8$2N=%l?(CUks{i# z+RU9F9jI0kbM)krHaIaf)G6%oe}#owximdKeEQT%V=$Z9FleIa#F^#Ts9H5`wTrp= zcl^S?{dfQ2v!D9pQ-@|1s&b;e^8g^kgVpMe z%eL%4d=db*O%G@74!1JbDC*K&6DX|DI+<(bd0zO8Lz#$H)8*}sV<159f7lnkwt2+X zv(|E>R7(}g>T=#`IU%Kui4qOg=Qh9gAKg%y8kv3Q(4nvF)kY7F4Vp>`&=rkVmbHkb zl*D6`e8qL6n>LQF=IX>stC}Z!o|tc~I`E(pCluvvSFd9nCo0jTi9Hv2!Pbdm`lhDB z7ih2mA^y$j=tKi*8v5m{e-I$|G@Z&1?f?LM=;245Ejpd7JJj@$hEAsg0wywHg>Q^0 ziaafsS5{U4U}}1LWqD=s)TuAbee6?z_NRaOiNAc$yZ`4kW93Iyx!fvt4kap71A?Qghff;>MogBztBM&rqwDzH-l_g9D}E!GZcpGnAmc*u&}1tQTC$h(Hwa?3vcP zfB$2X(<9MiI?EiXe>gT;r_fqqC!jTm4+5t%g6No=z` zps(H)#*`q^s#MWPzS9J@fF#a~XAw}!c=6S01;Mw9tlerj=lwGm_#%J|j-h^$R~!|M za>TLG01_FcyyM1f(Jb2WMrX@oQxjvOW5YwkagqQt8jXP984v@GKt0>c?zE4+sa%l+ z!CkL77a|Z*e^ zV~HKHkTTi|gc>w3M_uojl95)*?tsMNy;_I`5br_sa!~c+bE+aT9|I zX2e}agdh=u0_mzFZWwfZLAC&*e-wrDp5r6|4D7Z*;_hNO-HTQpPyq@k z5+otT0z}HU7w-MiLsku-ph@DANeqhCz`zbrMJCc3NugFM(ovd3#sFbrVjmfC+SZ#vWb}i(KDn*oY1d6T6+J{f2oO~ z$;siyO9mR5LqJHB|E(vdS~&cVHdQ@$i%|%GiKDP7wz+s)0MWoe8494~M(=_b?D# zChRU`?=FA}iWXnG`3OVNV!jaLOBjIR!Uta$wk<`IoxPALt^g|3@$=Qdf5JGawSMn= z-}@6k@e}L+v~%aqx4rFcAN$zHe)LCwwApOFa4@`ZB_ksvKlDRC^ozgvi__E7KlgJ# z_X9uh{U7+i9|6Em{KSuM+O+BY?|=XO_uv0r-}PN@ed}9)=4XE99q)KYceV38T#lDa z*j-{zNEGAqn0688TNjroe+hyL`iXVF>kH2%q(1v}H=B1>PM(Yn#Y%hUy>kjpD5ni9 zLIQ*;%pZUVETRCkI3`ryfZ`0DX5$z#@TdrbkuxJ2%!{mr#2_qPavMND-yJTj?~UIj zZ}k@sL8~Vh2HIbYZ)=DYa2`VZTmliJZ{zVV{muSGTy@Pg$LD6Ff5?n%7~cEzo?5jE zV21{4W^}ldWhSD5T5a~oY?c*~iR$&no4)6om%Z|)1AF#voSI%(nor{-NfOU~X=yPn zN1lt9z2c?^?|WcrY1tSf=M^gZ#-g7LQtAS@MISCY|4)5J?AO0UU$>)t##ch_>HOb6 zBNPA;iiD+dsACoKe~B9$2Bytkb!PUG>BL9L}zZ=v@aM#jlj zM7+_)i;WW+-!Pc$ohwJ!P9i9*^BzIEEK~25A`n6LQnaLGfDC{KpfIihh2afB00l)X zfPhNZ7gj$f*57P@r_-;^5jOrImlrHF1Lu8xxtdVFWBn@#fBB7mCLy?hib!A>pXKmf zDEfyz2gijjg|3LBSgc2aI8LD6@c>2P>yjH()``vYa-4d$-ix(TXls%PNqHx1y5%jD z(u6@HNP+}}1OlJ{*fZ2t>)6hVd{dO#5DpF&YwxctzOSwwSe_RR6QQ)3&3ly5!q_({i98_?|rr=@se zVn~zvFZx}(?F&A$V0nZMc&Ff<#OfT`yan8*5hLnmv5hG<*mma-}Ch7{;RLLTqIPN0)W8m zscle1Xp6kl%50wJML~pVLf?o3!6n*nj{*EFU+@3BV0?4D z5YM2fnC+;qo>V0jx+($)3IL%v``tT?Z!AB$_wbq1CzG_K2nZNK1%iRrx?C=|+AR+p zM==Wnq4S;q(V}B_N;Y_3=D=d^4|i{iTJ;rN8{{V)xRc>>+yLc9!LZYqs;zfm&r~ zV0dUONvg(_qBs>|QUuHyY4M;`;zYL=mkP%SB%bT_H5QDcILnJ}j;>exGXNsef7>Yc zXRe;=w@Zi*0y2dP5jmiJ0Hic~&!H$$*YY=rMmXHQ(dxwfnGIvZK~_j|VZND zVFDx&W^n8!C@XvL>H0iv*kBQofJ4M?sT}|S;c%LZZ=%=Lz(ZyRoq#g+R%;=mD#jt1 zo|H;y62);8$C1%SX(KEs;H`6cp$s@uakVP!MLa3;UH}w`6Gn$2%4S zY#jh*&PE7P9LJF%g+LrTf5n0>^44B-33{=Ri?4ioOQUBwfIu)Xyzr}kuE`A@BypjY z(>l~W{BN+K2wRA4+qNC{yPYIS6h&E2$Vl-#$7zdhfmW1_#cdf42*#3)dNTQ{h!A zrF3Li#4&?n3!RcG`$#M1g~Nx5O8IK*#Oc|kh550;%9hE|cBfeGiggeS3d3r{e-uqm^^cc@D!V z03ech1`%U4kz$rgO}E7X0KDeaaL1RP<3*7I(g2?M5UcUEBUdgTX)BXVWmw9@ejOw( zL~u?G56gxzc3uPrVmY{~{_Xu^2l7q-@}(OdI$2NC)u}XFY^#w}K7O?P@uP#Uzq~Y7 zQmxDqe?VM`wSuMNCzsDGn208}UX~7(vo(txZdnk>u>!G|pZHk!jQtQmRv-{>C$3w0 zp#A2w{7K*bsj-nS)z^*|Ig8ZdvNn+ei2yo{I)kVvj-w>cGshkTlu;1Hg2bf614bHH z02NZ``W}=9@PRD^*v(G~1j4COq@1&zcDqz6e@Sh~HkbLSd+@4Tll}MW`~J!o#lttf z^~!D6|I_7_{b$y8RcftHvqh0r{t_PC7YqS;`^Z1uV8*PtZ|y=_02ENh*_}%t?Qlnd zdcKju7vozS!VsnO_(zscJlu&&bg`CYb4I$r5=aD8gpD)ybN_w*qUS*HxtRE(2S{@*_x92}aOo>`bb{bN7&W7TT) z$dMygTye#BfA@F){LlZqbI*C<`>Y|rf0{~j^B-PqJ*260kp-@7o%p#l+Q^cBtJ%GR zsGM&fKK0wqxA6jP6j_Q=ym{-yzZN-5-0SVfg+e|qfCm5ysgpHNot`Vjb~X-e9N zw}616k+jx|G!iHhRHTfGSj2+|D*}Zmg%T-alp*#GQ3v)F2cifa9oFsG*QcKQO|H9sc#$me0t!KlTg@-z`Ci2Ixx;KIQW!H?t-b9c-+jK1f2j}= zTUe!)h>TB9dGwKn`r7L0xw+iB+W26W=YZ&0_Uw6LaByH@ab<0#O-kD$N7P^a%;#VE zx>pX3jn2*K8PMkcIJ6}#qe`_mqM6_wkmZ)6byzR1}5)c+I{(`96*B@cysg$zT ze({T6JbwImU&U3eR$uk1S8dp^0s3Z=&%D#;Wab&BhVYeoy?*M{Derx?S{)i1s#Gfd zy9n2F;X^1T6voT0fC>eq5Ks)DffNXXB0v>zo^AmPtu{`K5P{2GIZa)=f4yit73~ZKP@__sh=M7SR@&yCZ5^lupg}A^3aEt)7{naJ zsUUtwZVGBp&nP>0E{(GH`}M!cc1C;~*r=s3vl zL_mNMHIPDz0D;*N2?A*oi7_CIL@5p$MCoJ8pPX&)jwrq0{3{?ge++zA)r|S`YLW}E zq2y#|?-Q$kV<@?hPMr$w?5y6ht?~-Xo%0e^0zg)>hgSZ=O9621{EL82iXk(7>(~$T zy7@Px1p$S@hy1woXevbh$kC%f$;PR{N1u4wL=iI1omqCykB$zltga$OV`Bq(k$>(h z4>mjbr?~_DlCa9!2KS-TRZoTzmBuX(II_s>4P_wcr@Thci3 z&iC`n+{N0Zui6RC&xvfm?6NC%Y}~W&NSwryXO~~TZSUTvf0Ia8(wGSMADz4Y$}NXa zEhKUDl}GlKl86vbEG`&jw5A82KJt=nGiT~eW$3_(Q#&_JpITnE&bM0aQwvLLjkbyO z!fJDEtvOPw96!Bi6dpabM2v@ypWHk(9vk!3N1m=#%J2N;U%dI&H$M6Jqh}UY%H<@9 z%<rl#-?1; z#*mlgqPXXgwQ7l3X@`UaMXsc!KKI$Z+-xr``ID!7xwZijTJ@ICG6H7|66ATKF{nnR z$N{so9Cua<0?byxx+WQ=<49?YB2O~Ml`@}FI%hrC4=U}ANs;Q_k6A0X&R-)`|cnP z0NuJ`f1Z>ooO9mCNur~OvOLeSG)|1t$YQfx5!GAuDph7SZ@&A}e|hJJ-uEwm_$MdR z=I2hr6RWf#g6(B@&4}7LAk_!~J%D(i9#VMWWhWw7CpX?uzIIo7!R!_y6oq{5%WHWq z&y!oW2)y>z+Teg%SB7Q%Uqx%Y=<7vTKkuK#f0NFB0I{2#Md^NkNa<#$v-jX3noFvc z!LgC?jT>i%28T3(0?vx;$nn`dd!A}Hnx(W{WVv$%pbQNSRu>!X)dmVG6A@=1h=70$ zJpeE4fqO_v_x*;Q!ZX$<3|>3~dSLO00AX$kZiju6N;nF$2gF9pjctfLi;4^>D)NGW zf6j`z1pr{UR#RG?T3A}0U(=+gCdahmR@1L;?atI*wFQ zH6|AEuD-~OCarAQywN5JVv1Y=WdP^dChKBzGW)1f+<_2ND<&huM=TP-R6S5N_ExWe?8h zapHX8ZOPjKm8Kxzt!vdAop#H64}eHYYo#@%kuh3sJ$t=eb1A# z&7xeb#a?_TYv))HozLke2HaztQZ~LVS_Y6c(3Yb9z zZo3U`z8U`HPvG}|e;-bsgrKeqe+r=#lu8h4p)WLA44SH^TPqaLqNa zybRt0A~1te&}zZj8jOv7JstI17>pDfv>v?kg>C5e%{N~Cj-kOJ>pLU_1iP-dxmJ14 zU*G=|g)9oE&O4;Sdm%^xq;L%Y7nzFZuD7kT-I?fJuldq*e-z+#D?mo5=G)m^k^kVC zy~C~6+Dxp6oVfK>_2{B$BSdhHW+q*wjO}6|fxn(LKY!oE@bKn$TsO?VxcB7h@4d3= zyiX%_bPfOWBa>5OwOgmkovcXGL`QJqiQQlOzwg`q=}+1A8bCfUwe2-O@s68s|G^@2 zK6E7n$0Y3Tf4Jk0+duM=yWalx{>g;_1u3HZiL7w|8q0pUC|+7C|M|-Do%K5E$a%MU zU^0s0j4gMvI8Lq2TkRH*($&G*;IKtpI(<^Hpo$=hxwnh}ZNPzuAP0smN!KueSUe(v zXaUavP9P>ETeMqFt5~8G^LA_hgShjiWcQb%$3Jh&f7Q?5^451uY@3>W5Ddkl%jg_x zOV2qIx512UjHZi=Fl4{s5D*2b&8-&|cz=fj!DUi3804Z(m6z6h1_j>5{|xKAC@vhf zePM^=lR0SLJslQfBn~Qzy0>WJv#q0MNz!&b+3E(yWjnjKlziv0OWbPnCBYS z+IG7wf5MAPOHb}So;Mdpl47{rM$V3%Xdoi{;tQYu+`fJLUjFizhp#-RjOW)K=p}Q$ zaY3g_00{iGZ}mx^aeU`n&bJWHUqB;E=K0*BL4nNFqhWRzVJHF!h0O}b5s^Y39;_02 z7ACDUL<&T!xVM=`5Tz)Jjp^h$K%q(LDAsXIe^I0;BI<6u*)wQpwpz=Ldb!>1?Q(i& zCg5(q0OdT%NS~J1|KW)o zohnyKiZC%zWRj)M3MpD!YkdC?e&5v8>9S}KY>PGfKLjWe5`c=*x6+EO`9leAH9d}9MtpBp+iH}}zx ze)JFj@DHDS^2u{PGdeo@o!|MLKlM{Tb@RC~#jSQ8i2WeG6j2(RtkVVrpWCcakB#;`>MLS~B4eU7O|{mj zFzhE$A)o+~(uP4$Gw6u4VHPAKe+Z;doJdG$V#vyd*}=Ok%Ui8D9G!Jk)BoGX2Mna8 z8|m(p?vNHlVx)9SBl!W8?v`%(A`B!(cZ`yj?s9~HNcXefvp;smIXh?j9JaIjecjjf zx_Gk1{>=wO>ZLm9UCzP!+Iou_NT&~kyjDdvqs|REv}40f$aC${%behmB?srEo~Sgs zj^hQb;4|&eckgKvMSrhK(Df+3MQ`py&nxV~1{Gxd3IAAeRKjSs(_G|po>yC4t)=~w zIi>>BNf)@ShayQjG_R;>$uHK&7T?Uch}dQ2M0jO5VUa4AsYHISK$Jo_k75nFeV_&=GLrhJfuOULYa3pf2p!@Eq zw(F^hI!cAp@OU}owDTpjrsf-Qn!LXmpf`4C# z2)6n;Fua)-l_<^!^K{BKq0MEUj_f^r=yP&|PCI%3*Ytct$*9gqo4b26GU(fmR|Xsd zhR-WwZvHHU-Pe9k-Alx5@FDo&xOUE0{h_J^m-6X5HtQYQZlbHfvIjPqrq_CMDc^B> zzbVzXjY~rBOlgI`i>X&3K|ZTZ9_urVdM!Ui>gV1^HL&H-s(#a_uAGmot846A$9u{A zo#eF5>Hg;?XmA=Ha{w{TZV4IEQtVd)tYQ=6tf3k86ES{NYSdaOf&;ieBcjJdI`q?D ztE(9_W|57=)G$xW{hTKZjTJ6Z1%Y*jZ&u0E0^EPaYsHLDu8d%U<9vX#vLDek_^5=Y zpg}A8@%;JMOaj&@B~~@iR~9i$5xB2=GweL0=}!@jPcn*M0b%y8AvStNI6x(V&XP ziSt3=Z-3#8v8c^|vE6ngTvVVK<^ApZ*M$EWv|;}`|4ia7K`v-;n+e}6dPO~b6^_q~ z$+%fK^3<`p%X^d%+s4>&qR$Ef0{_`m%`Ndu3Bx{c zCpvmKdO*9V*hUurE-vm%{ z{AF;4Zc)Int|Iyvx!-*FNa)TXCr2OdmH_f38;X4K;(NwtRm3*?vV`;rQ0>|zvDIIu z?Cbk4d|p=I%TLnMol&U8j5mTca76*gvVhea)XD%C*G(esz`pv^hp z3KO3~c}in}pFW)x{V(G@04W#o(5d^iripbWad)?7prcRjd5;?1C-b&36kU<>m)p2! zi;^^^od=^fSUUQLnzyaH&ED|4`9OqJy;4r9X9*JzJGV>YH2l+Po?mQZLj*@gho76P zmU2oW5ttwWG_bszPu8B7j)BmvDz2+r{4W!UhJ0yZ;^+J?zVa{+n8M(|C=ClG;ee)x z9v7KA-X5SN!gL`FD9AF#diFWKpET~+m`yW%3iKtQWTlQG`hAcJCn&Vxu$$AoX=4rW9aIre0zOpGc}LK=CnA;9=6x_#%y#i8)bCq`lO1bgEGi)(Auit9 z*x1)zF+1bk(tO z1)6z1@f*Lb6z%ekE%H&JT<^delH+|7YQWhNL||1lr$7evF=C*wPG|kN1X&@U@on#9 zL?x3W0QlrW^u}hzXaakc8Hw zzAGhXMii5qKC=1c4)=U+FLOpMwoF5OTFHE>>%FL}Sbe?~;XQ6%?)-n-QsgkbJn@Nt zrg8g=nATNupir?VWC7=Ik4&@ooi~s`F~q9Z(Dy*+nv?GZ2=9tCZ~K1oSCw)5x7gMk}3f2f3JKUUR-coWsrd3al1LP zf*&88{bPI@4Mb|96!iSO^rZ!H@ZA9-NQS%fU?UyMzAoTHG&>xn5IP%;s{@=kF~ujM zDy-MhEvNZk*A(Lz;>!TS2>!NP_h6rOsj3PpN4uVmgDA!KoU4tTr}Ri;>D5%->C@~B zx~Ca?l;478&Ib8`l}Gm9@agXU6+RsPc~UjM7y_nGjFjHO;VGi5sG&A7l8IDzJrTVpA`A=Pl^U7mMl;K9sr?30*G zho6OhHbQ}s+(wupK>J%G2 z1F!x*-t;W!l(nBo+TX)o(p8FBr6$HUet=7n`p*pIGLpV~AV&SW4K(nD$TmNdMdH4d zBYKy&6!J^|n(1!$v89~}^&g$0;1!2)INZ#CFXJO{zXF@ruz8-oHoT`=- z1l5 zKSZ?6#d~h}jEU{@f37ZE;=Dj}Yj zP_a=3YSel1kBiTKruBLKzUOOAkYRCh?E>{+!A$+0qUfJ55){VG0duj0ynhE$(qQU5 z95;cGtTylr@Nh==d=@49uvJ#Zho!qvZA=`=Ksa}Fd3$@S1KiCPK3!C7Ts1X!o(7+y zg|c`Dxw!o4!{N)z%?-S)vUnWP3HhhiQw;8`(&zl>KW6fDY4PlHaPBR!=GKg4@$c^L zD!!DyIM4ywDk>2FGY26pewr&RJRpc-MLH zaDH?-D)$UZ^WGo!wy1nt00r0im`N&w6q0js)&hvJMk-- zfIJ~FQGxuc-MX`EdcD`?9v%XPaTy7uIE?w)?NzF(NeM}2K~GIqI*vgu5}4NA(C>To zO(YR0sO}TQGp9sz_Krrp@j>=|!S#bXeW)28rbQ z&bBtP{%2qk9uroe0GpopX2!9*oD!zU_Dx4qvw8Ug030CKZ;u&<9Y~}+P)G{yEe=j9 zQEl%8p@2YYO7i+hR>i8vDt#<%uQ=jXGoWVKRJzT@!Qr+WxJ*7NH;Kd< zGiaH$h6YfoG48Aq!Smnvaoh6@?FeQ~?9H;K8Opm@&zU5*t;KM`-clX}4z3pjjl}iJ zJj3l>xxU?4))FWTF<1a=lLS1*3XSt$nFT&J!fdJq)J;g8OPQ>P6==X8DiUZ`(k|_y zhy^*ttoZ5XR@9xxhbaUFjG^hV8HvqOx1WNyaf(PQzy8YR{7a^Cn8uT0Bb>Li$7Y#% z0mwYrUjJOmOch7baQcKf;3_ zb(E2a1o1>`=rK4<6Pu^Za`@}!swbnKdONSJ;F9FYLvQ|q*<;q})6VOS3*_!>?A6CO zVJ5t4nue8%ecp*k_|AF2W{LTs78b}kT7cQql1^$OzPKSm>1TKd5l^@Ma3gE^n}Y_% zh>G9>u!n~9A{o%M#ZI({Nk~rf5ofqjAQDB@(&3$6nb`z^ieU}K$%21k#O}Z+J*QyAJ?Lv)RL(Y=hmw_x;Z|BPK8D za`$!PVCsp$m&g6ohoZ)b!%gW76YV34K{x&TD;b;YJ_w6J9HH*W zs7~_|{Zwz5kvhNL6PPIR-TWrxLBsMA!bPgWis4X2fHeX@h~mB0-J0cNpNfl3>zGX!&P}6= z6Y<`>&>{WGU=ej3!n&wH16}Qid%B$W70`U%0qVCA4 zm~5^lqvM$}bAN2iY^m!ZNG3F{$BgH}D^$WxCWv5~J@|F8s4rupSs|2NO-D`kyfTMMcBb%aMcR6L!p?Eoc75<4q*ZuBk zRVp~7?2Xh~c}W|%O(P)B0h+~UQ7~?2Z*TvZ-l(L2;+7yv|Rhji6h=4wY=#AIbRoM7{{78|p(=g81h z(VAO(O>T#jdgU(W$W@>G1XLih7%h(-<3)bh`or1C#7MTIDseM`7|b9S#zgEm&N9|! z4xRNd8$w+i#_Sch?>beRAR(^#tfDI4NjxZ_2M-lcF|q!Vt}qOqe*sc*gnq~~0qT`D z#k48D%%>t+)u}DxabCew>T?MFXp*=GB+RRwFhFnK7>1vhwIwo`un+Iy)c0wKXQ9uT z!BZi2aH0p?fY^vPj?P<)F_kAZybB&uh7Q*8({W5OM5HG0RstLzX~}$g<2Z3NC?3(G zQAXQ?^!c2MT*(HN!RfVPV#;7HChZ8dE!IOQO3LLG+L%gBKm19ngtF#_YuIse=J z#09pX0>kB&7AXz{G|OoW`Qc)-n7AkuMC5&1YD2^d^g9MC><)GRm6jwXk{Vm?zOf_K z@csfd2tY|_CK>vD|FV#|M06}6G0|N(3=fBr&~ssL$^o53nZS86C3KzuCa_4A0xiRu~V|vVCv38ZtVP!T?M0k^gO4b9(Sod+XXq zm{3Jh@&iaIlVT@|GwrdQ!A>Cdv-Yop@$0B)`HDF=n53?hjCg0zSgT2G%iYc5?!Z&< z3_F8#m9-vjOqd8TOv!EI%3aDV(w6{}!~8M~MuG7RT4H=*N)bt5rQZ>2llnl=-WG74 zaWG=G(Ooh1Jhs3`*L7N4s;X|l{tIJ?^6*Q+Dv^IAdP=1IuMnc4ht@}O3ZD1&&n@lG zY?DvK690_3jZ0?_E>vay5rRIY&a1Xidgaj}KD1fTdf_iBP{S5)3j^9vBG?Gg#*+6_-usw39Uj|dD;(_&B23bkW+fX!_jNhtD?+j<4 zNjqcwYc&OUkB#{WA#1VA-|=XbbFef9DEUY{k);Pe36)3&>*_@J?4wiBJ;T=9z45R< zI3L`x$Cw@OuqP!kyJ{*|D- zSevKKebaH4^iloG;C-gx;NZvL&rw%&KWzjhCuI2!8^g8j-R!Q0C{{JpvZ+6IoOu=A z(}3P^qB3R(9@1YeZWDGxxPSK}W;&QG78PU!;ni?6$%9|MuzoQ?Z+B;xfO_(cx# z2IS^i#|Iy1SlqRD-?sM6~wkYhPw7Vo2zCV7Y9bk_zok(WVP;R+GZItvQjo>;;ar^iQ8?6hY=)Owcmq2gT4gVl5r*414?0j9XsDH4kLl6M1t*zBC;Z1G+bsxPZ$3~fWNGNo9lx}}ck`)YuH7-$_ zJ-(9(O1-@H)*zDC7+ES`!@`7`bp?r|Aq{5Y_Lqkcf6?QL2K3W{s4MdJe+{#E3w~L6 zWL2-m{qrhCg= zlVb>>jkZVmsM#whHRTJ^qu%1K7j$dHD!pyf#iVGTmmL%uL^7}y$9g~DX4GSOSz$Gs zjQ-_*O!JZvF$q4Be7@r8K073revZ&pavM!}pH5_TerP*q=T+1^wePJxG1pZ63Nmk~ z**X!nlU8u_XR!l2gj|*QVx+>eXd;Xm+9DO z!AqS{722BPu4d8!$WCOyW~2D@aTBHB2Up{S?_Pvu=)*2nUJjrS7lRvRdsf5pzRK}a zy|3Oe0A&~`3Z~a2*NFV8q&yHGpzw-7H>eRkgt1!xc@DXX+8Fs}O}g9G5TWVRM63Ei zX<6wqw9!C)P?tsp#n?GDQfHaMdFL(6NsDbS&1QItfDlsZ^DD-ung=Ci4uZzKR)Gtt zpYPiC1Ac`{9|1RybsZIKOGiU8tRN5pNYQ~~_4P-o%-uAyGh8KQt3U?EP`;1@9Qlg( z+*b~zR^=sc+4$l}h$!F?`v-3}Y&=R{ISv+DwxjZRWG8!bKYyAUTW|{K$D9+9Zs{~Z zxQ`#=X+d(`=ayyi?lJ-S09cjZA_&0M!{u4bUc4Oz1RmEYJA#Za9wPj6ynG}1?upx_ zb>>3ihcqfkEP0}9C~?9C6r6eTu(=r+QJId^Il{0jFTRs<-38v`pKL7r*A#X4qMmZY zFE0QlASse@m8V@LuSw>K9#cYmxBQ=PLtT(DK+u#FuS0Hn8Zp`VbmaH2d9s#-J)}Di z0@XzTC3y8}ajNQ>A{gvq4f7C14PgURb*H5fB4Vsgdcu%WmI=DN<$ZEON{syd+zntq z$3Fi&u>1C(0)x-c%j@9tdq1=KU{XdVJE$mM=ToX-_r>V+mW(R4O(vm{;s+YP@MP(& zViV_Cj?-BCkI&6~!BJSe;1>g8!p;VGWZo{mELORDvL-#$1_Uj z*r*t4+;^%yXpm;$2WKrRu)_@t1!XYEjZqv9zHmxqu3^D&h;Q;mW-y~0=Z7imgDU?D z#Fl_Bl?GTy6|ECktgGt+iserktrS2%!0l4gR3L0Q?u#BYjUp`1!4P_EE3K{}iX?y$ zDp7|Bh#w3WQpGIA169)h8g-~LfwhSS_;%IbFWzjm2C&4=I(DaPAl_*+OJ zWjp-vG*3E>0Wx9bG}XxHugN{BTL6YqX0(8?4Hh>Mqy4b>^mbt5;+)WJKLr|2wk9in zj)!QW-&%Y+RW?`tVuF9%VBM&V7kts6fzrt}p20cVt6cw0&t-P@ypB^ej&hC;v%E|O zhxN#axU01~{=Ijt3iC&0MwOI!&mj+@FD`?zqCqULF zD#9s-JVad34NC!N>p_s~eh8L#S%jd2+mY8qTDM zRf;_^!CopT3&SUxK{&F{LI4~(?9Ue4XfX1#H@i{J)WMFDGP9#6&Q**OJ5fy%1w-wY zMv)mFFAy&TanNjQ#3kToM%E83Ri9?Az3`(m5?@_&5H8z6(-Qy+4>)be*-6O6?0byc zX`7cXk-V;h0c2#ra5%HA-SeQa&=jEBy~8<~Nk?(IBXv-ExK_c>v+^ID}--;d9Z~@lSaNVyTYlsW>lEN?8?qXyGmC z;W##Zg7|va*{I0=qLOn6ZiQe$(c_Fvl^!YG`u8$>|o*hr?VV?f* ztor6Eu06T09-J8}rNpQyr>%*ha?arGaARu@gP9DQ__^tA6Q8?WFQ>ewza|WF&P1rE z?Jo=NO_Bb9Fk}yaPF|5I{uhvSYTwTxVFR%!F%0K3z9%5ut%ER;CXAS^$0y98GKur& zxO7JI1?9;3$w9W(tHNZ82#~|ba9;Deh8k2;FdO1*0yPlLeVmGt)jy;nd;0F)#X^gIFu*?d>UGBMkPXZFQ9kDvG+gxos90ftQ&-ki?@rU=0~?# z@zYGB{snS|eXH)$9D^B_jU>^O-;H)%o;;8z@d8icgK_tr+73Zck3%VknW-TM^-j_Q z&!=JQCQeLztv@~;gf8CZpRWJQI{i))Y&ly#88|;?G248JdZG7$;L9<+_-}u{+xM~i zW5DGE&*bCaYW*HGC+72&;kx@0a@=b5>pDOC`3}Hi*TqjMct4@|M~UXo>42)0Z8AX* zs5MWgajaD#D>mFnxpw_3ZgzYr|6J9ZKqRFs>$goJjnu9I^$}m&r@cfCx~}Kq-zlGY zg?k{IRIT8uuLQWEn#{=0VWbNM5egH?nnzLC62(>1uJh41Z(B!t(#&)C+27%%QpqGbp zRU5a+qN+>iM^c3c=DQJT9wu6}p6-Xs=eEn>V7{)Ho~*>v}|7R_{7qB@B}(d zUw6&v)5AdNP-^g#bM3ADC>ednUpZn#&e(-J9 zu~^vFEJMRTLEFAb_gsESEZzUF=Rpy)&&mHA<)1>XNfF5i7q`pdH-;3Vx%nv>W1Xg9 z#g^>#X6Su3X1i(@k!6>pEN2J>)N~=#TyGt1i8(gBIdb*NuaA7_Nr2n)PC~RPFoY5b zYW#RwpuyKFj9aQ*(crX~1L+hLn`*W@K4gkY>OicW8n^puac0!$%nNlj92Mth$sm@O zJTD7YPMhXU1D2F)yAOQ4=I%Nzo>geR(63e=9LPR4$g26v5Rk^*E>()B3vOi8j!!m0 zpfP77+1agS-wqx9Cq}ORKOif6-HJ@U>XrYhw;iJy68GF4u8_H`JgR9wK^k^!0iE!L z-^r{mXAUBnhz9bYdHx>~Mr6U%YbW8g`KPUjTHx{MwBvjtDG1nQdc6^J{=e4@JZVJ; z72f_tCpZ1uA|W-2!XRI-WJbtMK)}+y8>g?3j0;YlTMiZJ+X@#58)h80+DoN8IfkrT zfJb^i^!VGbN23ybel3ry8Jr%SF3QyZL{SCEj&!buzkJ3Bk%IYdHO zSXfGGbz#9i9;^SyTlOy>zOEi>R}h2cIWr&)c3Osph6G?;5_I`wn(^z$%F4>#-rm6z z3LLK+$1HHtOROwSF5;m&OI~^>S|+cu9V0NKCykmVkabDk8mdy2auv*>%$jj>a40A@ zZr3p9#KQdBx7{qQein<36@HYEkt^!Tdv%TKapX?Ktu`?K&CX=*JFH2M!;cDDL~2Ys zL|b0kvhGwabnq0`dt$|*>zbcaaMCC_`|h1|XRz6z8><-Mw_v_}ZH)!Oyg^RJ(&Jgf z%^Twez~(>hE{8_B6E;*UwMubRZn{_TF!4`+ZR)-PHqToMqQvNRJ0mzv(7b}G`J-cd z*`w9?Q&rvF`$|>6(~YjnybP|$K=sz5Iq@LRyCw2MSrL);)6KeDrzxxz@{cQ0Qoo*o zt{bg`R`|XXEO?F-VNw>vT8^1inD=Ltyw6AgP_bdix~%;)FIun0qdb#gC-2C^&_Bzu z!%6umzK&^#?Rmde=HkBl(pj>}P1xZ1}Z_)m2Z*NLWD) z@$8;9g&~!zEuJIQ$!P)4YwxlZ4>A42fSak9TZnbn@{CH7PI|^SyD3Ku+Vb(3Y$vDz z@El?IFmpNCd3Q+OiQ1Db*>!piT=V2`@AMfhHq|2rC)@x0{`g!phyBgo@w+MYF~`#~ zS4dqIaPztFR!}2{lW@+t_`m^&S!@W5h2Y++&?~TRv>O1E5BGST*QD!t_EM@Qf+P%( zd6@-^w;zVNJ$uCkRXs<<(ZapF@VwrM>TQ{ZWUl7*|*bX>M90$2h1wXq zVUoEMRM0UmA&K~W%}m@k-b8>__FR>Lzd2{L1k?b!=7z06H)vURy*h4!Pea>%w53Wx zXx~FIYw3tWZw!hh!qdvc6k^jIwNj@9QDTCva0NKFJ|yit8#_~~%Hf308wqBXCWB5t z9dQAVwhOI{l`Jpi-(OStl8_Bgkp$4nm`ddBPT7Lq^H%b z<@29a?zGMJ4s*BD#jX$DKm5L#l7_QU?Y;4>OCh5#5rBUcLk`$?C`w&MCC$GOIAkB< zY}DSQS5>oU%u`sWS{dawGJp9(pZcFOY7x3seCy0!-e8@e3SZ9`B?Wa?{c@?=l0}HR zz2I$)R5D%yhKA*cku%UJN>(i}qTd*rK>#A;y;PTNxBq_JSEw|^Gp}#j6^o*QmvCq;B6nb70E* zIlPraRXNOr+k0Oq9c*YosPxwG7Ga>z|_5-ESbfc-dKjk z9+l&*?tkyG(LETgdsA(srcE*vFM=$H2?hD7!YCj!qD?yO+sF3f12b|uMPdwJ^hU2A z_r|iCA<(jNUw{amCAv;;lsmSUNS8#p>$K2oLR^;wiRVYU-qkpgXv77PH&M}VFy5@O z^Ye40d>+3ewl&2Pe44I@g-@=mOA)D7ccox0KH*sR$HmiAFl)@rYg{Br=5GIFtv%+I zVnbQ_JY+#bV{6a@6S=$kjTvn{k!>ZX&h$^)hVcjxey`!!xQb1`TS7bdWgjbLKpX2> z8?#tMiPIp#*N~OGl7f&@P$@D_xfXH+ez0JFfpMf(oGv)eTH{5dn&(xOKApn=QDWr! zLJwkejz`(XRC~Q+^IPra)rk5~YEy$K$4k5D(1BNJ#-TQe3|66;DKOE!`=f`1&)|9h1rA4oesfpQb!V)Xu} zZR0eqz|rl8>I~5aFClq0Rx7lKyrUmwLf>Gly-`@hM#2yc29&obkX=->-W<{D*WZ3` z-<>%$Nr^0BO!$z1i5N+1hHd|Konr2SQUt)ju4IiUs18Nd-HHa?2)A!aZSPT`Fclw^ z1WWBBG<9-?%|M1!RF-|DIZSbX5W+Jd58eX7xxZFyz-l#Bh%sLD#Ojfh+_LBR9(4HelG1h7ln+F} zd?bMi`N5&%ivqEJWpW&}@qB35eV4frc+~y4Vo!aJM)zs50$Eg+RcpG|Jn(?`IhrA^ zjFWVJceWIEMHra~8~BO_3PiX8^+4RGaI6|ln#o_qR9g|khQkXInJD}(m#=RT@hU>` zZwenz2y0~=3IF4bV5HiU6^RV9U{YzpDeS`uLjRKyYTvPaU9bu}2PElkH;-g* zU(b@R1a1X@T5fS(7xzBawOZ!X_+cV-- z^}){`HxpwRuQ@QHsJukBAhIh$Vx}*D1^cac?;Ro@{%O@N1>WpFHm^J3OAoYw7#QYz zD83FPp>CBhtK^_lA^T{!0plc(7j;&6OkOodQZy>K*$im$92&DdyqGI)j{|$;-Y_mFV$3JRgO6%B?TmQ^mzxamSgPbF+950`p zBZLVVL|IRJ?=5B_P1VYn1XMOM|3oXvKp?swy@I@~)O(9FTe1Nn!0J;bI_m@Af4e#P zm1h;#CSFtO{I=Qn;bs4}7^+Fq;_ROM`AUc_@nWI1}pZ`1WC#oiv!pOc8( z1$Dpulh1AlAALXKFm8EjS(!dj(aWb|nrSla4hJ8raGDLf%X`Gf?cfocfs4v0_#91B z9_Uc8spe9v8Pp*5mKn=iwg z$@AvRCt&k-66iW=(;Ka-X*>L0Rda^`o)E9QZ^w}}C;|P{>qwRTrIg$D9+5OT801O+ zx7C6D+UUNlR!I;a*ErEx!jw+(jZU_8QML0nh{Dtz4HDd~$4T2ffnvQ-|Qdh-RKFN?0X?v2?8Ds+0 zo5KX<-V((sMd?h-qp2~o_|%*}YL?|zm0X3?e@;(%GLc>t(cHM5|MZ|uIZ$MC{iLRr z6O$%-@9@vj@%K5b3eU8?>ootMYBJY z6z=WVawOG;f~&eQrEax8~;6`=B4&to`xeZeu!g|3L|! zDs8rs7K&+SkH`=dYVcC>KDH&-($wOItEj5He3fk^BlW|-|2tY>(kJs#$Y86G@Gl`r z$>*uk7cZh-Ky*J%GPPTrry@n(O(w5|9YfQOo$d3c)w9o08FPFc55|6L?SQ>+*Jvw0 zyoL9i*8bbFrIfA)6a1?|q)=oY3&Yh8qBx>Fz|mI%J!43lO)fO>r1PlW`&t8dY({p^ zpRb+zh$)6!$y6~~el_Sx_ldt)0074Cof(ZYxdQVo7Th6*V4zNC(or8d|1#l?K`|h-%;kW z*p{CrR8#xXYz1f|Jx__=G=>s=9?U!OLO*O^jFUPHh#sV(mcq>lp#0~{=A?osl$4OP zNTA}`+j04o9xq_+T2^8-qB*Kk*H4RPFf^)GQMqP?9WCb68xI>zP587dG+(D8#3;B7 zhB&9@5kD8AFi6`)%9lOA=XnakZQ~pFQV)#w^|Q)c)0G6*5Mt zni-t}`N8}}6Ff<@!Q}rA#I4F2@#jCw|0+K2Sw8p6c2JK50I6BnYx9C&Mrdz1vQa5< zceP|jrL;-60jfC2^39A7Gsm(T?T6bjM2$VnA2%l21jmN5A6(y{1R_J>Ap~Jr!HqCB z-M7RNSp?P4wNp`9=*w(W#gy&nK>Wq3Q{hw5^8xNH_AXX3u{%!C-UtU_$-Lqn3HaAt zhy1r95aP{uwv&F?C`r2f`;iCjnP2! z$XNaa3gr$iifaig6WG0wA!RQ5i_M4;h+YHyCXbN7`i;%FLIgW~+T$bFo3_*`B!)jn zd&+>*7wjkY680h5kuM|lRhT>~D}e|HDe!E>_c)mxQ+}2&JeyeZpFSrZKE45GhFwGJ z#R|C1p9XNQu&aesyxxSeVI}EC~2_NGGyA0~tz^H2yPz z!>eAt{&@%<7t&Vo)j(&lC6%NKA;}c4*ecR*J*@>bj_1{vHRxI#ls$ZLJchG6?Yo&%FGtSe1>?aF^mE z4#PJ|Frd)SN!eZ$B_sI4g=I8_^_gBuM$~u7mK=*2JnJ+cWSNJZP)o3o4+3> zIxviF*@prxcPG-ns{97jMTZL9MIW#MB&o`9Rg7`JBy@?oz~1b{Z9iVwgG5C68Un`Z@9L0;G8r{ zHtLiN^|J8y=$yX(V(-!DyVm1d355AALVrtVLrF8c-$*Z`03$Dhwma+O(1#w>?o0S+ zs9Qq3?)uDYNjY?4)1ZHyqgJ{bM5>!}YP+1>;U*!+n>WE9+Yh4l(w0u9$-8bRo4fyJ z%2KMPl?vbpx|bt;3;kHWO8Qm9=l4}X0J_o_ znqu@j<{w;pab0QabJYODK5pBDa>(5Y{dY>@|NgFSvtuWcUHyVPd7PVAOO|^Z+GJ@o ze`*w<_Rm=NF=?YcoeuPSmH++mw0U)rWs3{&O3qc{r34aSDrio2!}O_KYU;0yLDsW* z=y3iXl!Ny^7w#0#R;+0sxK&JE7e$L9cf>Y+3-GIp{-k)fq~+kq_Tqf z{=3%4)etw0%%465|L?xgTFs~syk}W)pZMQAZs9$xta11tdp0J$GYBH+k$W|<7Rwmb zWSs(_fx@%FAWOyl3l9lFA%VbMf`W$6lMBQN;Lrwr=7(;(ky+-rVY2t!l&@2M59pcs z7mT}6dQ|@ytq**u#i%50BSHIvQE0BFO<4ybA}u~U_r4|2<+rh>SmpfF$XyVO7zQDY zdzoZ-99HRC73o|3;UH`;whm$&Qom|s$aw|OtW@3Ixx0Varl5B`(Ng+J#54NL9AdTI z#(UuddZXV##!31Icm|J79^22SF4rSdx&d>su^CD{_g%-){1+H&V7V802w$<6&IHc^=f`Y;nJA^0Cv$)6>(+ijm_$ z`(*dX{JKq{`0x64*YzM@$k~DFE+{-qWPqEQ$mqx74#;SGDg1z7u!lmG5d<%4ZeH06 z@|1D-wKC(?<#S(S%FrCp(imW4Syo%SYfq2gICJ@Ct^IVr`81$~^Z-B(BF83KCLF%U z(sf=7b?n&?ZpW&GrXKd<##C3(DTX_WU=KDs^Dw3rz4oS4G=XWb6W=tOO#VCZI5k#Y z-44x*uGDIFLR#eJU_$bghMHQVVz#rhvr_+Xv-dL+JcKms@8(s^Ix;A=nik~euOYwu z$jj(tk3~Ma1L-xJZ>Jz$Sb^&XhWm!wWm@$%uM59R>eBYsgNSPN@m%bt>;~S#tyCx!%iW9Pp<9iwO5#`!Oq! zci)=#^Co^vaD#8R?W=d}pp}l!WF0Y^(`A66&U83_|I|4RNAT4}V9!JK5@VM}W6?)= z^q=kX4|!m51DQsT(hgaVl)bG=qot2U-f=$HKUp*_iz&bQ%cSdiS}_3f3A`-S;<{O9%O zr|q>sI}B9==~HyR+hN&Y&wyX73%jw7I%S>98;t|y5r zJ>s0;aJ&y<#P>#oeUQn`#CP`IF12omh`-;q=-PVU{p3t{vpICqcE8TIekX$R!}0R( z{=cp1t`Y{P#y+|e3H=&jURmHVCne09%}%t2qT{Je!%wFEzQLm9y?XJb!svbLf{Q3k zs28xiN`%(KACF>$YlLuki#<|FiW2u(JK-Lmo^xhEOqpar#V6h50#*kia31{PFy5#P z-+G0Uai)-V_?GmSDKz7FlC$()^xC8xHr+-#Vz7U0w_|51Mi>_3BDQda!z-Q`n~=~O z2{)=j4i7IzitH>YXLEFi89_Rsk97KBQ2XX5vDg%{;n>O zz@OwrJl4o!`HDedyW`#Y5+y+`_hOi~4QZOhJ0)*3a!_ie9Hu;+zh6wwwyPs}EysnGR+Re0 zy^t&0){Q3HMU=RaN^SuCnx=Ni1#`k|NX!2f{foxsR3>KCpZ4{+^B;%H9s>Mjj=wS5 z3|A-fda8ibIka*p=<639db4+b5&}|Z<}?c|&KU~UJSfJDrhihtD8=)T;PXZ_HWIA! zqhj}e8jIX}M#zTzJwBCf^qGw=^o-akNx#3QIp+8+ZSe-@Z#(>lQ`6$$+^}Ss$2LYMlnfBqh$GYp zc^I)7LK#4P9O+a>-gT+vQn$<;G1K!-8V0#a_cI{EQlhZo7(O`Xyh^L%?5@aC<&TIrs?MyN0(h zjmo#QW+k*Jc&7N-BJtj)SmF8A3rX*DXQBMjS~7bVcC%Fh?W*caS|$dh*v6%E%OYH5 z^rF9{O~efhKWK)=xwAIR=b4$&5Pp$cNGs5Ei}YkB&y-W8ah<~V1lG_eLfIaZQuyV! zLCNhj=={t!Ux>bL(uf!n;1ly=fnKq7Vxv$vepaHVD6$O2{Ao4gN{NC+Y0+*c6nd=m zK@zty7EIn6R5Rz|6t2%%o>8BvSAg&@fEf%5pcuJIK!rp;Jbkpa!oq#SEPwai)hxEvTiy_4`+D^ySiMv(k*l4q{jLT*lwdU@H&>1OVoAQ z8_AeNmGcycubX+JqX84x;ZJ|l#~%IN*VYl1XlI9Tt`k@STvUb_2(hC~Y`{e+G&XwJ zO8jt4hR^hnx9^odV?vHp2pq@2pT%ZW(zN8P<3OSD;x$aPQPJDl$?D~13kf@mL~5$6 zeY7~Q4c|;ezxM#h*+MCgHtQS4uxcVbYb1Wg{q3qEqB7q2mnz~KaJeGd$EZ7mkd`Vjv za3|tX|#$sodfr47U zzNY`9=&Zt`YNIGTq?ClTbb~ZVcSs8gNcYg)4TsL5OQcIg7`hvgF6r*>?)vASi@BYP zInVjNz4lt~irFmJYcAH3HXD*^v;4FD{E5&OFN8jHgpr?L;G6yaz57431*x7^q-Z%v zRk}`5>73oB@=`3v_V#7_Z|kIO1R5KiWAkqxqkBwB=f7uUXh!_eVq0d6#UuVxbHgmS z41pV6KWSM{)ujZ|g1yN^Zv{M8E<1_l8gX9sbJh+G!#f^@mTKNqYcr-94-wq;%Nm&? z)*|=81%zgMDRLT5P&xSfQ_1-aHqNSQJ>oSOR>Sz`5qmifO}y%AD5NN;CT8$p*1*q= zkEoKXu+O9}3`x||+>CxWThVgAli_jHxc1q>TTRjo2>^j1s(9fnwk-ppmS&{kIl^9i z!UhPtvJ0999xKeEE~YZ*lx?EI_JK`!S&lxUYON3K%KpO0x10=)CCEHoiNr*mnQvc= z*FI4w8hUJ7K2!(VGSnx!6pawxjQyNE>i50M3xCi|_6B^uxoaE4BFcAqc1Lp;m+Ynn zKfjhs0i`3vhW|(qDk~eSDIL3TIQ9DtUwird9)l@ZD9EDaiV$o0PD1-MiKscTQ+vg2 zukLMa?lJt5uA26*;y1}KoTybX!EO^I)kB&DseXrh`j{RQ{_V_@-%2!NXBaeoddpN7 zBpuJpCD1%))QdbWFnds>-(O&15unKP=h8a81u(kkRkE~g1ntPY+2pX4f(5eU)Yp8e zHArnc9Aoz^9Y`x&GMQ{Jb${bHnI7ljLTp#G9HudkUmo&OblFd8F1fokV}uOGCdoei zFJq6f!nTy0JNl>Iv#`n?|3c55l2r9&yVdq*n0flq2X;e!m82Rm6%f?!@;NCu^zH}P zX~`u>Kwr!QTV=dXr=&ZPI=1F}KRnm9kOmN;l(*e1(8$J;ig;h`a*%fh9br@>eyUN8 zIvN~*m>UBAME<0bTSS6(BTl+}oOiA!1z_eyjg5?a>E3mX3>` zy$g8wt05b_`@fd|aKw7Qc@q{MetWb6{+xL;DI1qbB*w{9=oy8pzEN#nGq2*ifeYdg z6x1o5hSjoUw|-7hKq6l?MIx+wT)FGzdl@}_8hwZE?(WVT2`4Kfqfj)VDzhKC`v7Bg z&g{EtKy{F!Q0I5}~1H zCUFwI!Is6qhD(X9nRgv@`Mury*S0i%Y$xj@bv<*|8w;$_(KHg9($a^hHY>3J$7=o3 z=^xMc<-Rlf2N&bPAHj<3D^0bZYBoc*tO@=P#sUDX;!)2XSck-$Ehud#T%Io{0yUSO8| zZOJ?%C{+Ce>REd2B4gT6`Jn+UD-FBjx32}EkHTC+xD3iu);z1XxENzZ++19Vj1R)+ zQ!1kV@ts6Edz=b;fTKN%9@D4TI-O>*v=L7xyZ}%pcbAjBz5VG?*`eo%d!O~RWqo*f z_@iRa^&#)@w_VH=p?_tmo4Lkyl3}eCeB1nT(hy>s_)Fh*4j~bjqrLUbzF5r<-^@NL zbj)!(o_OsN_$d7Q;j~-2>?iU)5pm1H50tHN4|@{{xgVL<0m7?dQ_Q3c7=jUaA;%m~ z4u*jZS}Z1!EFhI$oCG>}sz!~h;5WtQJ3COglY#C&hOzm^mzBpG+l5ADIq$PB{d>vw ziiRo7KMHMC#>Wc-=>xu^B(8#!+?Q=4A~H5xM|AAIqlE1jZRh9dxww2J5+yA*-C@%s z8VCVwO(*l+fYkHXU)TcLYowd}GYg=2PSid>i4Uw_NB{PDU$bI5!;2e5XW7>AhUz`E z0T({Y=}#mtdm_YX_-#h3-3@6MV?M_={`X@qPweg#0$$?+HoRpz^|$>4G%+{#B$}94 z_$SMLw3~x=B(fPJj=uH2cU!|@3G1wfX=EfhqMp7Fz{Mr6AjavESHH8*{tOSXik{E% zHQ)1$1I1FuW#>zHweSNp%|JxgUd;K9Na}kj&s%M3oq5e46?OS?Z(VmUi3PZXKMHf4 zSpd(RqeR*p5E2_AaL4UQ#cz&k)522(3ls=yUY*Ggt~UKWM>YY=3sMG1zN_Yk?V>M( z$)~6$fCiDWFoml;6KOb2&?fd-aOTgA@fK3gVfeJ@D?;feJ*ta+1d*Nm9pX#eSs@ zR{P0!Y-!i z$dhocr)?sGG&~y$WLq0f?epU^OrrYsdW?#Qp)DD#JE%+rM)^+Zj_TS_8A17-sEilL zj(@y8_Sud$^xQ8>BVBxyV<1A|Hu!LiKcTHTC^IQFT65pJ+swV~WrvscN5vxE#f+M) zmq3mmQ(?xE&wS_SqQsD5Q9uF5uyH1;JtU8j8Z2NTDQ6ENF4E&;LX?)~N~Ln#7nhvp zBY-1*!zG78FHuK0Ytl;uLO`tki-ZM$>%0qJ&(^C}9}FpcFC98e{F|$6#=5@9vbUZ* z88*LgMc*X=&p)dX$yc5&H|f~@C9tO)JognrYeP9+vtNJ)w0yPM+d{qf2`ZWg#~jX~ zRvyW_0u_GyZl)&K-eborvnQx5I8#w`(Gvk+ND@~F zasu|a4y|JUcuFkKjE*E?Zzx`nqB*2wnq*ob9S#hkS-YzWZty$Ks8MrSN+{oS9!;|P zqHCxBMQ8c?_>@$vw&Pz%+4u<~KHZ2mZbvM)d1P&#=`aYJZ3ZWMycP-EHTS8yjK^Lu zi^8C7_r$?5@m~FRg^=#BIVmuZqVcux4+4zSfWr zYX~ieK6#O7IxJLPWZGp!7l{UT@|&a0UrcEc)qYnRArs|j_HO+9``>Sy6K*b$9O98Y z-A8@d#&SGNsXz!0&AXr?MBWYMg0H9SZwp~MhyW`~pe4aTkzR8n zm0C!7LIftJBDO&x;#x~|lE8Qi0)hJnsEP6Pk`+GLr5qvldlAuNWqOq}lYC~9W=k;- zdMrs!=8D=>E+y-8DxJ>Hu@^ea2|*Pu+Rw)}IbNuPrLC-ZGvo!xXrKGaKI?d~Pp{Br z+f&P&!U%dA%mmTT&(8qthTkv~8y6>bw-&tE-~jV+qMD0}h-5)_LfXE^fA?L*>gGTR z;*U*g_dfHSSuD8*$`4_?0E9P~v>ggz?bsVd6|aWBal@gNWXMiLp;>Z#LK8R*zK1r~ zj~)Vbc}SRC{Z7QnK-r zbh^@l4q6apQ}_TOoMNPSpQ>gstTfJRr8kCTa^ICLZBy^#d)SZP{^m!Pgh!8FXh%P^ ztEQ!)rjmjeH$lzsBiKV8rVik37E0p%sb{qUQO zm9zPbt49&H6<`9&#EkoFtHb>-OOXVeAWm}ZQ$3eu)$r#;a>lX+g;bPRqpS`>rL}M1iPAh<8eokidUj2oc=LS9Ba8b{wEaVle-}X&$CgzMW1DrKo1WyrMVV!A`#WqB>$HPRv4d9R*AVw89<(D166KWjxZVcs%uvpTlc~2 zS;i|>m|>S6(&?ce->QBJ!{?V+D_~46T{4T`3NgRdg(FzQiY;}01iN@drvCz<721p z`=w4Ib>IWK*i*=4t~3yIrwn2&3|AS>#%4k43~&qboY-@5sv^O}2{qmgLU-45A4s`< zcAUlU*i)_4Gg{{}@JQm+vB{z>i9|_wKk^HFOS?U$aA;eFu1XH_eYwm5bY@dIjag{F z-#GIW5jE$&8m;jO7=4{(X6ZH#q)XdNGFG((0hVwsKd-kpYF58JOrs;$%(4uHR_$OA zZ=_+3sMLK#d0O{9Rpd1vJC>&sFU8;0EN6xq61v;g=oxF!fYGb6>pIgny(XOCVDOBO zzptAH9-g^t`ubW|QbM_!Ym%e6J;Twx^+Lz;Urqd;p6UdNK1f%L<0@=5FzcfA6=XL`3eV z4g(w$W2!>25tPmemCcj69^9;TCih?ru!W67m|^dudUN7_wLe?ps`axnaN= z^VO@#S7UL?UpbHU@I8+bJffF}}3z+blWwdmQ)v`Z!E#&ni&|%&?7- z4VW66(m9*mh-Rker4?&7IWCG3p*xYT!Y-yTgwdKu$D_X1mcWZT+uTID%-%*gBKq5v z?7Kovd6LQWRa*E?ip{r*nIW{_(pnpb-=PfD^z?3(F*TG_sPxUmGc|KEn=K|7&v4*+ z$6`}H5+BmJnf$D-F3x}pD6((>v~7ww^n?52$d_8nic1~%4d0s*LWwAZs*FvIj4D@m zwK{9f%ahox!Pq!~aN0_qKclZvqMQEE;x&ZOqx#rgd`_yzQE5~hyR*4anjbp~6`2ex ze!4$*f2t69DUr$Eg{?Dxy7)tvSzHNSLWlp}IgR18pQe=JOJUarCyb8+muzV5ug8mZ z)T2$iUK*v6nqm2lzP4o!uG>p@p0EG7kTl5oP37TW>RY|<_1^!lp>oEtkqcF8bNhN` zL;gk|6*qf(OH2MJ>ixmI?cnYEC@;a7Sj#*Sd^Zn|xVX5}(r zGn(wk=qv5zR0I)dX9w6Zs+!%0?WJLqUk!fTVpde!q+gEq_9r_T4*t`n21p=}6)y%b zONs)1^e29#d!cLTVpc{CVk1&G30+F~&y=9=Ao>V_P7v-lxoQwLb98?ZUW|JH^ro4o zTbCCT^QwpjKZi5}st%rA&z0oT>FEu!O%BfGG(0$$Vs&^v0lFfNeh0Rmb_yIm;7m>F z5n0O^MKXU8R|4r!e!@eb%tg#VoL~Ahqvo>(yN#q6WGl(8%ouOdHjdc*xB*WU?Bl=>e1ohDeF4g;Ji9EJTwwsTYj&L zt&8m;!>fEkVB5J#{R0mN$3OdqBm;7JL28sBieOw+*c8y`l*}umJAfTBRRsqMUc%?f zkS|ij#NkAq`JqrG=Em z0!az-@YqFLCMUFvF{c#3jg8J`m~4Lq`))Hd^kA={G7o8szN#!Rfz6q;B|uyJts2a$ zE~hIB(69Z)WV6tb*$Lv)JpGpD>Yi(oqbeHQc_s7h!LN2Pyw=xI+dU@hfA3JuY;76Q zHf0KcWwir^;#SI;*j)_P!x8)m@Fas~EJkYcWryQ2euNSVLErm$f%5O^S?Sr#SXkGr z=T`5Y`~vT7Sy^rl6jRMz6w-d0W|DxL(V9Ad+r{qOOCjJqZ*z09rGY1b1C1;4aw?7$II<{woLGMWf_ai^ZEg5qZxN1#8r=|#MR3N%xjFf==TBg z_e|{DjoF7y<*w<6Fm=&cZ%1&#jg%=gSru(vZh(#uqBu%Kn0Zbsgee!~BsofK5kP5 zQCyiT8fDjo$)tV^P(wc|(WbZ&q{U2-qS;VbQjMPP`}5QWOt>CkC6!J6B30exFL<80}vOog#V1 zZF~R4!9!)eoPu1t#sAs0&VMCr{JKM|ReFt}y~h$&(cQ)i=_20MgQ;LlhJ(a> zq0K&>Pl%x_a1{>o{q$~b3`<^XT3+S;`wwqRH8IVcvpIjdZ@%tKle3=9&*yuYREiDy7F9=(L z+bG2HEq|L|LsO$CCZISP zTa2?rAO-*%kPoRLhPYp#8m0Qq19T0`?z;I7=^!0N2T87zmv50CA44;$heE} zR>+!QZ1RL#7GkZU&UvVDM1M?G!~zjQK!5zZJ-Q~h=q%PGw!bqAlqiMC*}G0`8(IRf zoBXjFgHEKSpGkWL3Tvho!#GoqoJV+OAuJSBAZQRm_|3^G0P3Vad=HA(r^Lag8#xCE z@Vye^IRj|z>L~w+517WdAMaJSkn?x)3zq9zA<;+`;XcN`;pCu%S5>GWKXGY-QL>H8 z4(fUj68w!?)%!iRpF%s|5zE$!Keve(^D420aVv|*f2qfbWQ^1ikfo>PSnH3Vgb$dL z7Nj1fF(antVq;P3{OB|`7{3v4l{o|8i!0Zj&RvbuFE-m<2KOY=KK&g z2gfLRCKB!}4z>KwNW0amwEmT>sN4M;Y7Lzb6c7uBq!Mxmi!|M9_}W^dC0mBlqfn1I zF`^(8m3-c}ZJ%1ywf~q-gGnJc7i;@Lt>1#1sRQ3-Z=^WJ+QZGGPFd;3W7`}s-$`3p zr<+bz1GMgnIsXdy-_)F~1y3!<$nzKw{dv6?gE@XUWFm5Tyvf_nWA>Wk2fkE&$F}U! zF~Y#4_&KkA)!GL)l?jH*NPyboq$~SpE8S`q0e5W3d+lCV^7GlYy4zWpg=5SxA-axUJn(LW#w9Lx!~s?ZQ%1pN&*&-I z_k{%B6jH*dA@R<04PIq35oWMDKKv!(;`(~7-!jM$OS*V3=i^InCMUb@Qr@A53QTYY zrlXh9{9BYR@KJ8_mF7rgZMey;cT4r~qS$Vq`p2OD{6}xc5&N&HOYChCO+&{Ne%|!< zFM&0;n6%==wY&m^a0tNLNtTxGUaE&lZ5Pn+(PF}wmg%de%I{~wFucI8#IZ9698nLn z?5Ok1TX~ei4BO3mN`2=vU+0EM35gNNJbvsaj3m_&*dJ4{rnoCBkwGi;nA53bRH*I! z2rmC!r?W?h87I(yYE8j{rR5*t`1c&QR1iy0Sl%RbdaB$ezVrb^aD~`N-3-l&h?LkP zsvi3}-|rzs0!gl6xKsgfC^;YZ>Y`kwk1Q%$;HdW^T%U$R0tT)Q`A1>sOEETiq)aEp zn>+32DH<&swUVj-F^;7b?cND;FNQrRllrCEJlP^0_y1OpI^Acn`J#m1@H!a(It~=! z7;zY^@EQ5NeFzvdZHxo2OBRRM|A$IpuaO$(?Ln9|gnRt!-TAv*m05m8)YN)cL7yL; zXggGbGspz@xOx1D=5_&$h%SKyzD;Ua0sVxWjm2PT`CD|Yr6d%&{4;&z?9EGG4+&ix z924he-%+SF;!pK{N2#A6@m1fXR4K*w$WOCUatNHD^+M$h)zIf26b zbe1ls-f&Uoyezr>?aek{c}xv4ZC1Y_4H$&X3aTy~U}g0`?rGx93!r34U8D0~wpx|3 ziNa^~&b3eifK5d)`PE0HA7N5Sz6+p!Qwn&eZAPu(#1J@wVgOf9&2cpNvL>4Bli zqeoZ3)I&^$pfNum&!X*&R8fn%*IqrZFvX=_2((6`ztTTQAWOB#xtl z(?i#M)z|oXUR0^ZHBG(iqY;vs)tBYdysPS_6D8|%RW`-Gma}TbgF0^udwa)9u_Wj2 zIZ?;eQASAi#!<4;AIXUS|DxT|tenTC-5cO!S%{k(W*SEaIrwgpi=LeSmS#YUlg+KLKs&Cq^@UFoB?xv3O7>CxgP?U z?AC zq^K4TRUIGM!H)0wuq}|yfF7#Ho8c6CMw))DhGt@yZ?QB>Ul~O$V_^W`e@e~vDhljL zKmh$EdJiV+E19ugeE?n%2xFJzia>V`~+4+07ByuZSSO=?5e?Gtuu2P*y zIGim@#=LBuii~ucO`8?5=nJG_c=Pz+-{|rxg>}lbrM8>ZQuXz1yVD{WbJ_?S37Z?d zS#6!PDnFvPt@Fc)4>>Xi$t)H_IT<(zB@N9{MtphroOOItPnj_zYY-X=K7OZ`n z2mSi+kCxsJ(KC;%_?imR>pi&4pK0RGFbey<#-1~IA#C6gBXPsb7cT8bakfrSIFk0>)P(#2#p$P)=V#HA*c zok-lKZFpKR;VD2d)pXcaa=cO+qZ;Wnoh+)KA8pq*lng~qCh6-KKO_c3Ajc6435cMX zQ&aAWs9%E;%mSI-<1wR4lsoi0K+`=-T41%dGgKR zzY$dd%9pqP&uQK=vajn>uhJ;KIJLA~k{1udN9UUiKBKxr*hkt~Jn)@Fe{tc2nFzVE zR9dAVT`E++TuEK^O$Q)8zi~kD+Fy!Wa{pqZ5C(`zi-%=WMTNeH?OH+Fis(dmHGer( zAJ!5IgzD`$5VJU{jac{Gr!W`cHiHy7b+g?7QXJxxf!ze-nrU^JU1uxlO4H3bMh=`g z>rw+79&9Qcb!qrmjCdC3Fc6{!iTQvVt&|?+8-&UthX4p?AY-Bqqcn0zkPDQ$I`s=j zZ$Kv_x)C;t0Fh!Cli9K1)42@;{q9NQbAsV>k%ic96#DD+q+#1Roo1?cb49y}ZhJf+ z>TY7P7`81`j|t-$0S>%TOc>Mqdt@N&LOqAqK(G+o+(i)KOVGEkgH)YNumRSWN^ap56wP&d+2nF0Y3 zZZ)VzEw93%d$AgmCM?hsL|HlGJPHVa`@hq73*ZV89Wy!G&~}%M-H{b*fvD z?qX$R%2Fz~_^naFJG3;^8->EMi5i1|jq@2El3(X8KYtQA1Nw)!B&-qmCIm0T(qH)4 zYa&7Idf_Ruxo)jkRiu5a%nfl@6@?m|sD6=H<8gBAF2~h9(_={83_)9!M|3sJoLJKnnp!Md5HsjA$sP6=<0F(Z=GM$FKyR+IJ` z^IKGY2tQbfV7iz;p>mE+(PnwyHCc7uw!RoBE*`f$TBth| z81ov9Hn__FKVGM4=;sDIBtE`}S)SC?)WERq$)EUrthLM51S)HeyR>S zWfo12=fAHweN0!{=?p}GY8?DlkBxKHrWWt<%95+P~KpnjJsFSI7M^xReS0)Wn z38s^;q_wKyUa_V~c(jj2F<{ z^&4N*kNQ)omq8edJ9cPWUh0s$YWyWVLznX(p9r7f!HIqCdy(Z(4h=}o3vYJVE|tlJ zoTERv=##Nr@%X~lxFmh>>I1>k$?2ap%J&EnokaczfZCM@5H0~)eI$o9t5zB#Uhw344z@OLQyi8#6JPi z+t89VKoK(V$pPKRc^5J!f(XiaeOj7qEEfxOF?1vIyEAnd#QgQ(S91N@_>>~~VRdTG z%6=(G(TtS?vw6L6mFrF?ow?1{Z1e-T%nZVV&}ROr>Y+y^(`7XEGUpn-&KX;)O1f6u zv>#U~6T-8PagoHx5Dw>ZzVL=(y z#U7#eBCqyka6#IQw^Kt5)Od0;onIkp`KucV{k(45p`jmxo~-q5iKAI__LNq|+HQX* zT=EsYIr+YWgl#?(f=S3Kw$2tw=OJDr@8dY(>I<&r21VY@|GSv>8wz8f#~l7- z<0FCsWM)3DtaaA@n9R+oWYDP=Re?HdWK?*xgsT5QcIw$zZ?~A3+NQD;76IXm6Tay8f~niR`+_B#ux^@C|4lysO)$ly zmZZKnGTVuj&c@63q)GRu4$rX$_|r}XcI?Y+ETgqfW&ZibPW?+E5_Uf;2PUAWALG{W zCQ7q)gNEW>jY1_ufO z>of74R`L4(LBa*q@KR5xFt-I2dtwZTv1<2<7hX2Co2Zxa?e0ExQNdpbQ-Kus8fX?R zd2CIo!O+NPwxK2_N@+>+?*K#ActYTL`o0!ZJdsT?=OTRAp=`KFY#`c{Z5{bHAGX$1 zQ?$3#XwgrA+_nA@#vYl3W?P6=mv-Zq4hX%Sd@{u@oB-&gVVIUo~ zs>S3{ei2(a?yDb!%&^GU{c96tSn8B?Y8x>f+8o=@kyN&IR%$t=jSeW zD15~%uf3KBtk>zzO6<5;g2hdDVL3Y7)d4;4^6+QoUPzG zur2%#rODHgU2={QDiHi==isvlqrCa_k$DKimf#=`4vw>3SO^;S=Ncr=3p~%TygQDx z97<&^Qnm8;Cx=0(V4V+q|6Aj-ggkbfnwR3U{!I|FOo57Y7eUS8(swfmeV_FbVGF!YgppLeg8XwKOGD5AP~+n=f>w8xe42VfhUl)t(G)`^`=&glBbX4MlWnaS^~lX8N0= zQW%~k1^I+qZB350mOWOlFVdF8Lzp$nj}G^hi~Q(mo8gtJe-K0SCE0wgQ#3!mzn;Gr z;L9-Xr~Vw2)8%kq71Jp=%-%%vu8kYslM{(40q6~-RsL2|6#9cpU1vl;+6UsrLpcqXZ6n_ux`w$;EjUv6SmJ(&5fw zmcwdI>D2P`EO67e+H`y~2HclQMj&d+QI7ezlk4#;y>8gBeJ`JigN)s{?E)GY$x-)^ z>YKZ};iz>Jwk$#4t1Y8f$_>fBk`NeI+VGYWUJ^S1F}1Z!5yh!L#3)ly6K!2^V!b~k z>0OU%`Sce_4k~^RL~UoXStlgIveNHgIjv|4uR^x|;E)@?KCEo-vXAZfMt6$9EupPD z#)1Y&g9E}`cKC-alRo}1wgluj&?yCIXz8&THLB{2SmCOXsto0}mgczk9B?_xb=`Ql z+yA*=eUt*(Nmr@3U&oJ+xss7n2Z|qg80Sm4a|TGmE3Ub;_(f2Nd7qsK*&m*;S>ZRB zJff%B?w`mXDkEA#IK@$~Xd5HpLaSibqF!tPEjy^pJBWN2i}Om73t(&G-@Sm(GzQni z&-ad_SFg|IJIy`u6qz#TXIceJl$*wq0M73}zCu$4NMt`TRo%)l z?s@0QMsk!^%!c$H!@1TJ*IfWStYZ{`=~x-^J>Dq+7u6^;GJ@%|5vn_xaIJs0U^>(A zOokLPmubFxv4K6BD>4ukmd}qE(w<;2Ij%v1;8dnm1~UV$9bij5D7PPmW4#)+ub9R% zl<_qFn(W0UI+)|=#Q-_h%fVHlBf+^-0i!tlX*2L#?=s=Qshx>tnM`(|&xy81kc3d_ zv45Wh)Lg!GF>V&+W9oT!nU8shoq6PV-=q+h8%!J8gg#3xj{%4CIER(mnjfM}*`|Lp zqa%;)1#9!_S}7@itLS*xkfmsP{X<5m??3-@psIWFva6r#rwI*hB`s3hzxgZ9-Z7I| z!6^k?Yc^UbS*Fi;xLVcXGg{P&(!JJpEE1*Dztjh-CM1MlpxhV@hQLWd2^)L+`f*Ea z;xGt0+gIA{-!g!Wol+ORb~yX#0rANPf@=TRmUsVx>Si2A3m8=))X<+pmt>`C*)Fd2 z?>H!9`OQgN%E1$v#;nFk&xq> zI4pn{ZTMuedJ98V-`(Af7s!&t^ukgg6R3Jj+s*b9dV(nMvu?OfqtXO4fwzfzS{qj| z9-f@R(Q1bwQym^X9eD;eJPyu0QzBA8X5Ne{7em%3_TvOD_b#ssVJuLHV~CM4(K~G@ z6yT&UF_X&QBBAS3$#0Y<5EHmgoJ={(AhRi8tk&prQu>QS9PqZA1MWT*%7x-!^l@$HQqi8yP>%zY;{X8RDi;`5!}Y+VBb=NZ&amJ7qH>!&A?FI&clrq91r4 zz#pZFkE6k_Jt{zwhB~UAe+2Xpf#WY=iEe_xM1R(}x0#`qA-Y^J6}m}@ zZCk#YUO;g|E{RhH20ftUICeks$@Ibig-7Y?cA2ry{@!sL?g8NGY6f%w4S|LYWo({5 zBCx+tNO<_0G1XkJ<5GCvGK3l2RHr=;+_C|?DGg#hLp2~27O-yl+f|;k!S**op7H_MuR24G=251w6XusCqRFy7dpUvvM5Jb0igeptPwE(*p zFKpeVtzLSB!(96HBP77;&0>ZB`djv=hgE;J%RgzYTX6>aj-ErMFMBpQ?f2s_)HiAU6r%wB4t-*x_KvLGA|`&X%>2uIlErQmua_oZNKda! z?gbb`>6B`%)93)8ww-ew^8)aEim{_c5eyRWYjJ8)Lm28t|;08%l53Eh4I1k6c{&Y4}v=X zcm8gu<7w#s9$s8r+*dlu9|H%gi+qkRGj7}Wr8mNvz%nrQ+zwGIQ8G7rj2bd*blP07 z)qxM7Gle|AoW8zvygqi!TGthZpR3%OIQ{m$%=h218cWbd<6c>)>jso8^6zoAy0~PE zMLj()o`cL#l!umSx2^iWXC(g?xwg^Sm|~GrLhCo{WSEkGch$ez?DL-po}c#qP3^5Wgn|^qHD$!;P0vkssbH9Gg#}E@!gyuX>## zNMLK*C>Cw(upY*e&sWq*fU4b_=O;Q%0+Q&-iH;WiSL)k*ZbV&j;j7d`ZRpZ2I^ z`K4`LU0q>G4N#@?JsNw8b%SmTxxg2;S>Z7sofYYKjj%1oivQ#B>eCM2|BVc=OgS)- z*8b7T@|HGNC$Y}3#r^pIzO;UtxTm!@Vt0G8VhgssFwW9V7+>r9|7=!V6+~FU>p5(~ zx$lP+YSdNujSyXyS%@6MhNz6>3#%_z7`bB-xR%t?U*2PPsT63^TEg*wh`!2r(>dx* zV-)37n?5J^^D8m8nB-374BcDjLqcGM)uXJBXR7d_q(})u(*|g#LkEOX`W^P>_3IghDjUU)uD>BHx*JVGUPO zY-uF03I@b_i*yX!DwggOPQUwl6R6jea4DUQ zM2fOG_N0w{SLEUxx&dpzcs>fB&=!V5eKIO<;cqo*qR~Gia~252;h+s@#I-eO@m~yk zdn@u3&)Ga~S$HAPh4_yf*@%+EZqvYHd)m*zGjSxMta_ZA@oUPRqI@$lC_r3JyW$)D z&YGQzuzS|R#^f9xru;@|^7K>CTw$bJ4s)=7z&Omi4r?}C~oUfqY^){hc z?O~@B*71d&$H+no$xO`EZE|w;hgenrhaUFEiR5a*`h23AfpPT>rvzE=cR$GQx_F2?*>2CQ!AmInaBEe^?plEgqsm#{*4j$jC(njs>~0oGo^K zyQJt8t&A2f>7II;x;F0qJ0Gyq<$XPVeDU2a4>x=jdL4p?b@@fw+XYEYTG%%sL>f39 ze==-6exXUayxezRQK=Ig$6^k@oKIHO;mCu^N6ker0_Rlro{yIzV@ZjROngb7z1ovw zuShk~_WAX^%kdIvlKvzl5+!A)Ig<_`rS&%%&A?b8nF&0xc$uiZlwHEC&iK;D=6y}A zr$20Xb>U5QNZtIT7fdd zLG2&qNkGOp`6H^gIRqtCof~)B;Yp~ugc~oK(>zG|CGjwGMPlOM)#9{mlUC@r&$-L* zgPqu<%h4TLtGYqd5Ll%!D1(wXBfRRFqYIhD_G#^$)bXzo1cBGc7R)6U;@R78N<|yu z9GlU7bhMQn%csHLA!a{jS-XJWFLM_ta3ni?1-P#2Haxmdm$E2!XSb_@ey_umybvL z-edO$Pa;)Prcj)DMErDtms5|GHeFA?7Y9VzM@B@hmCrC8MFl53KOZd~w_X(??&u5K z=UJY<{B=4nT%tv+EGx!gjzDQxo))+-!7-Hy4xSk*FB3gMWzINHnc#%O9=dlxL@|oM zj)yZ5J;VV~;y%rtrx*0a#oeYY#^@x{t9o0}2L`~Q(xbIK51VWMs1-sb3e5~k47W_C zDk(z#kzx2WRV=z_S(^~;3xf1h62o)+1^7LLXNhQ>VcmQ1oO>F66mMjV!^C%6vAL3^ z0t524=XBEhJcZ~x-aFdbczc%=>$vG1{&A^ax;|@H@jrPm1TJ5f>g^p*3$PZEDs--h zg7Y`=-}s4xYiUiGS>pSG0*G=6?@k{N$H+zbS0S5mPuCQ_w=+Izsb+Z=!|wzY0aZ#` zyLcB$u0qWo_{)b@PWqwh#}j~mh)a4)@9O3ThGJ4uOgCrI9HL43D_^`EnZ%FL?Oiaw z=Zf7(6|ef9Hl5D6nAm+m`vY76XS>cunkr2$Rd+y&okrE)u=T)egl_qFCO^O6BEUo8^glZ_UW0KN|PTg@@5XNmn^+~eOt#Z0Z@S5ViP$mQm;^= zw@Iy1r-|d}CB`0=pPfxURDE-@oIx@Q{dBNBaErU^OiewS_G6rNwXJGRD}VrJzTR%0 z6lA*yw@0t4`k|x;y9<$h?mkpSM&t$Ic-kY-`a^9MAQ0XfYHY zFAqkSjyEosZmv}aS~g=BZR$z_6Nl;|lj*sTQFx3RQcy~J4o_0)XRSv%K8Jyv%WlAz z#`Zk3x=>5I5Nx%YI_dh^m}>>DCGVpT5g3$|eSNh8Dt|0{w`Jr)igNiT1u9}SnmtU> zZQShzhSUvJ;)YeF5HTtm9Vch)+aKqyT#JhNVoerllcvW3gT$8m z&sVc#$t|NtxpM%ZPwYQw$e#nYFbnl_FcY{TjBwLT1IBn|M_tBc{XP;YY&V? z@pRF&2w1hh#H%N)m2+DDtqR97^f4Nnm|+zXbOk(JOc4>YV+q?@;liAy4_gLsQ%23O-+l`6A{O)dWEJ}2Qlumogw?Dr`>hf z1|oOe3531Ue6>cXNVp>CI?9f}-F9g%7cTvtV^;l0K>!p)rSbKg=XtErd@oc}S*uMO z46Ks%=}fBC6}%z*89OZc&_9tEj&0m`PiT%>1?x|+%$F?k9dny~d3=0b+i>xCU9Zb& zUrW3U0+Bz=WV<>Xf6D=$mwcyYH_KM*%wCezJjlGZnnpH8XFL3CPKjS1syyb%#YA4F zTh=Kw;!>GKlt?jJYyvrl1Q3mH*c#cizd2I?fj(Hsa1>UUZ zMrP;Yo>=qJ#gh$)J6jXU}Cb7%8C%;rS_K@A_Fg LFtrW;c)+r{2xbW9Ti36 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

{)A!P#9Sm=Rqj22# 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 delta 419850 zcmV)xK$E}T`y=Dw5s{h4lYO~0k@0=;g%tq>$|Jq?L${sk=Z&axf7zJ6bhg@@ zo9moD>#P@BC=)3~lvcz<)mqIo8mJTP`ShV9@BZj#BOQB|hE}gWuw6yQI$#k3gy509 z;HhIgJ9E*&eZ|J=^M2q}Pq+$f#TG(ZzS8Fm5nLhe%grxehvT1@B}FE1^g4w#9CJ=k zFC!iUdZ%}%mKpE8SwH_5f9n6`CE0i0Sms?o1o2ya`$E?Ia$E}4Lgl>z|)XKh&75ny3ue_{;3>$%Nix^mIp z?Q6aD?|8)x+qO+EoIRtpVh_Rh1{IXN$W@dIkT@bF5s$=55Jv)W-~1+neB%IHuDixE(@!aI(m6zqs~#ISt}7Gic%;*0tg_VGXvQ;|qt&IAhgOd{ zfnK{e%t{@_MV?#se@PN|y1hygZ*&JoPMqpY*iw<0Vf9C9&&Y;(*)y4Dp)YRnM_IA4yo2XK&dX_;*S7r!_T2f%qbB3yyEmpwvv34I`nf+gGQ7Aoc3AIee{ttH9scILenJsPZ*+r5dl0zFukq{{%c5Kn2fMW=)UmQE{+^{G_X#pv$72vGQLpqC@ z`@Mde#Gd)lLx(TF{JAWQqfGx-IR3+5eV){&(z%Omce(TE?F@h_3ceUgd0Tw+UH@>& z)z=8o#N^oNlPCY;PyYDxpZvt-FS+HGANbzdf7E1qdFkwZ_hG21WpIK?WL|jH_K)6u zN>BrMK@?_fqVIh58`~?(w|)BK0H}0o8e@!r{fae^-0200Q%9O)s8uRSd1-w(}kw3t_d)ywpB6|H_YTd+D~}*@A#J$lmcRZ6CrRR@}&6Z z@`lZ{3r%Q9_@bIv(e ztJT;u07NFjO`*;#%S5Et>ltJE{r<+r#&e$YoH&j}L@A}U9t`@YPMxgPYWwzG1OR8x zo;`Q&thF|dlgY`+ojZ4bM#h{xdGg4SBhLGYiHQUI_doFhI^a@RJ%tzk~ohXA~_MyjEGEZm;pliPK~A2=j^|X5t!MP)_adt!T>n5;vn z9eBS#i6-ZoXR8`T!p(i=0G?7>SibLj{%v)3+uMHg-@oRQM}O&x+21D9I*YDTr2XHdYJ|HZvn3 zuy{fMArTZ7q(CnvMnbeA1mZm#IqWu?-w@q<@h_5KfjaA|cTimFLm zbERKfTf6Fvwqxt z?aOc!?LEa@{5XsUgZ{$C$}&*gXpMRA5G)atxhq}H&KRRfo4DRowZIb&Qaa}cgI=!>2--yK*$YQeoaa4ftx~`MQ52P>1%NCsA`>BC6vvL)I~D=0 zBIm93E;a@U<1`uOne#4669!ad_<~uar#1rG9nWVzrwf(tS#k5x%+nxn3^Hvd_QktW zN-nsWfJA7%Q5c?pBou9nrXti&{ssh4u&t`ff3y4b`gvXqi`XQcUb`rA9Yv)Z5(zw!GrN23rprtS*^DtC{>VqJyz)DbouUMi&bR?#o)?Ic2DlTXfP-m^`>vHTV;R{l@Voh zrAkrErFTU?nizlV?71_Yb`-_df6J6sFS_~?ZDMpK0s$#NCE}1!eBsxZYqjR~Jv&Wx z?EHX57;4jIa$jsx`YPrZUrJ*>diwe6SwFrIAQONH0(vni@+}B}H6TTJSoj#r5yS3Q z6P>(Mz2&NW5jjT$7Kpy0gb<=aLiP>;h_rud`UL_B8J3Ha*&pyK_QQdie@r-IbwYTK zJc$O70YC&)V<*lPfJnLbyXUtnK+irv$!@brjEPlQlv!3pvER9CUTIicTbr7k2pbq} zy!V7usaDuAI!Wi}mWOni_1<|>6!J(!DzLqcQl9--!#r=o``$W0G*+(~txH=1qBhz& z8&ajpv)G}j)!3wpQ9wi#e~fq@;6nne7wL)mVv;YEfKzJhQTR_={)ro-T$i&oTi)Aj|BS5U?zZD2Z)eTJML2 zb(WEV9izgj@y78J(l6~`I5eaHKq=B%4Tps%C6TVgI@U05s#Dc;f4RLL#gm869NOJ% zO*Y4wp&lnq9S=p8*V`(hvB_4WUVp0Jb-p))FLjdVJHRJ6$=g45`(OXBx4-75124Vq zfNPA`_Rg6><~!~F$wxiQWTSf3VC4^g<=-sFvv2*w|2#G}c77YY^J_lvOY_A~_ySM< z8qd@aquCiQ3V3q-e}f>_nW@RA+g(JrTJiRIjH3(jmjFc2n6GFJ#@-8!YVZUEQ3zQP zDXq1RlO#6UD1}CobDq7Av{G6Digz9W2pE}_(k4xB&ipLF@~9SWQ0W!e^jKD(uf#j^O#9%ZHx&R zMws0igVn=3CdRX(etO~EU;Kl;+w0GN*;S{ZC1;P`^_fpx+gPf->R12tuRr$E8+RSp zIoHeN`@iQq&GJJgK7HuyV~0QWM>l=fkJnALuGDOT{eocNmmspY{$+kfzIe&&l2^V+ zx#5KApXf(%fAf+>WP+vA_E``^p__+url&se`rk?@0#P zSZ`v__4>-^9`>Jk#lc+*3+;D(`kvG0hFZ^Fd&~ZpB=H|F&sLMO7ru+a0D!1A$6lCV zMQMdZwKVAsJN;olwrL#IATmX_C`*^7sqzpht&K(je*pqP?``QEBNXiNJSVL@_@b}~ z-r8X{WD?%JKph46Ll4}4C!!&xOr`3F-69(x8B!Fw z>!Bhb46G&*K?J1;Q3WyB$QU70WW!&+?zf9>AG0$LoH&SGp+*X&NAGYzi;vp(eg4YK zwIW<#pNnNAjR2M51_-a1sfCI8&rRI`>|&oMf07eG?o*@5GL$X?lS-}e&R_YJT^C<` z@YSzzF3i02*zx0wi;K->b9Q!i=gyte)6>(_(`8u>27{9)PbNtcUUxd3;cy55Gcz;W zwrxYiEX#K9-o0(xwk-$s#5=+ePwVR5NTqaPA0U7cK2^vd47y6yy^%^Tusb67jLn#O zf11b#2`W1ypYa9Z53!OwY5hJiF|oY7JTWmrMAu$>ZNMqR&>F!-L`3A6gK{QpHbx33 z^xn_T&Th0fY-yEJ&bc&AgBArTilV5@i*Bz+L`jllS(arPGaF;N-R?ElTvM;t!_lHR zy7!*Dj~zSKY&M6(;p*z@3txEizJ2?4f9%+?wzhWm?AiP8zyE;;?!Wn_7fwt}2#781 zop;@}aPHjq|Ijs$|3HCwjB4{*MfgAjd-BL_7m}whEM>5B<_vLT)^q4YsCd5CKBmY&zw<9okHi6aWYbe-IUb zQV6JoNC-&CkkSe-nwqJY*n@ypV!?VR-lJfom579$2St9avpT!F)*Ra9u~b_hnD<{1 zjSdM#x7=TQG1X#8JS^&%!%Ze=5 zy6&x7UGC(0S*a#U0SF@~ManrZ07MeSA_dyg2#fcOXp_`AU~4TAYOTCyMXJbc6d58_ zmZdO?XJlsYL3}oJ02;(G`(dxI48~~$g5HZUREb+!Ls52%90AeVzGuCzGQ zQII1O0p6_A+eGP*ghB@g;89@!hI(TWgi%keYPG($x{>9D(Fqc6mHul4Ta>Zz#q;xL z&aLX+;NorbK=}DX51m|En4g{*OR9>=5S5nq&+kr?%F*T1qNC5=e|h&yZh86NzWr}+ zxc>U>Gt=X9^I*%NEvl{7k&~zX;RFBp;g5Y{?}39X>QDdcpD&#|b8c~=yV04fkL{eE zYgL<(C@!o5Eyzy8M&4cASnUtG=lX|7?w!D%EuN z9*UDE^COW^XPIs`E5G8}qi4+okkaNJc0+(CF{BX1mvMdj(`AH&qv}khb%1pGR1B}c zw|nN_m)@fSXMZILO(d`--|(HS7rb)(t3QgsQ-L~P_u~Utk>}THH`JeQ3^RcL`Xufc zAR>HStM!yyAb>nE@gf4wd-lT2nn=6@5b;g{3xyC_ScDKngtP{btFFHC!G|6>e)L$k z*YEdwX_}U0>4gEQ$ci+r)f;2pdGGQp%i}n4!k)!MaetN#nb>Tx&yewj+SST=E(zxnu$>PBiv(HQGy&HXR0#eWPLLwjw#}xhBnIG7s_da1?8F9a! zA}A-IlFQeOz2v)EFMS%opT#?I|MXG`2x!^ON7HYfdim3ACL$$UdiK7a(UC=8Sl{mD zfG8{iKz|A}Dc3I9jUlguQq3&1j~MdF}*FwPNmgOa$|?{o$9!r2;O0!Q0X#5rHI$DwXt} zyYHzt8cCAGaq`P=dCSK>`r(Q3*#H{^wVXUJKKaS_?B9Qp^ZxYd(?9YfKm4wD{r%p3 z`|7po#Ro55TU(3ccx`okOlXjq&)t9GJHBh@_C4cnP&|BkkTi5GNw^CW6B9SzeDhEK z#7|7m%mBa^ba&x@q4K1{yRETt{@W+#Xf6o#J>fV{$a)7PF9fD9dD$&5dD$)ReCIpc z?e=*`z@TGBL`E5_jfrDY%H~DU?c@s<>WQv8SUEjCKBKGSm<`>=5^i*0IK-k9@Su>4 z7GxG+FBIz!-Tm;{?!d%)dm6vy#nS=v$)}kV<00o552@!!pPiTfc(;BZ$wa(8IA%QFT(pNPvd-d2?^aP!6654lM z$i8mJ&jAdeM$+H~FZ2FVNPGl91kntvS9|9b)&ljZx_n!nZYe`5Ey0*YCl zNgW<31?(e#59XFPx-%7b^nYRKKgaUqNKOzDQ*CBl_HwosuZb}8cv?hIW`LM1vZ^Cj zM=K>Ha302M@%+rhaF_u=$h(E|yC{l4L>sfdvA%QX4rV!V;zX-87AJA9(^pCbVJkqW zr0L4)3W{sY%pcF=!5~M_&WZ>VAu|)I05gyXs3`A$uDI?>G;>j}({|25NbR8x!#^z2 z#Inz=(&^T;avtvTjjh&xcFdzXx7dp`%ulz5{j6|9=X6}97rgp%-yhCS&W}Z7CN@Ps zTROMA#Qu?mv!6SB()MK{9@CLZ(j+nwkzx=LHYWC54u?Z#)+#DpsnfXGtS1`T^W5Y( zX{jWCF$*J*b*@^iim)-JC`v^D;#PAfzT>QSP}U+fzZ77is<2ozW9Sb{3Ekt(I5ZD_nkO$x>2ccX))5OUIj&E zS?rl<9^5sv_VIiE^zHAN9BcgHfB8dz3qLy{TNH;2ewnY*m??@T-|)Jp*+c-Ia(#%% zrER?6`OO<|c$W{U0)~H!=N8ZDjn2c}xZlI~-eazK&_R5{LYP0&?x6Dg1lv5v(_@!tjS_zJ;ypu`kqvUY?WLj(N zd{KSwro6X)UtGPoYML>dGl!?Iy!Pn1&kfqcePh^EE>YBq@y~z%=bx-E)AZy;i|xu< zUX5V!?8fl&q1xHZ;&@xLwR=7}{8-Yu`BHpu&Oj;&WYAKjnP;SEF`FiJp0nQ%-X_P>n(t{ z)((e#?}sicQD_@#Zd@6RBfR6*+yCM3-~F$C{KuSUwF#D-|DBhvssbT@$h+S4;O9U0 z$@jm1df&xA^Bcc*=@pkQudX$dL@719YuAAru7Bi{wqGbjdU~Dnn-#(CzkI!R?BeGd;a^M{PBN#?|sebQCqu54!(hgQc7KN$t62??#%Q2(4j*|j~?B&Z5t7P*{811MFK8)=9P_^ zS2dsJc^5D2g1I4uar^cTyn=`7jc-$I|MxN)b zR%`qA?E!&PO37A)j3Z67t-V8W9y5o}LVjlF&Yh1w@~G0vGiO5>6xkJ<>dnh4m6uh?|l?S%>2Rky^oZ->BgHTCnvSmAN;@vR##W2 zr>6m6c6N5#wz(^=xZ<9B?)mUXKk~ZQy?%avyNE|{}9&`dM+21^N@rzmqzuLeW0YUwIUHc$jbIwm%U1o*cdR8DocwPM1xU~LA;KHltRR^umGwc*Y6FJTBTa8 zD2>J_VJ>Y!K>08)imuVdqD4^7I$v-Sr5@RPVef}oKTS=PD(4&miJ&dnG%H!rworO6 zr7ebk`37nRKZ1fE=izPsuFZG@MFasuJu?cjFf)ttUU5jghV>`PlMMivw^okfNTEV+GsnU*H#56%Zh30D>bzqCKw&}y ztbFdX!T5M<+YQfMJalY%X?b>f;&Rykg(F9QPMzo(wW2Mn?34U#(v$V0A*{oKpUbN?;19RIerOeIGK|N7U1EBxbdKSJWBjU0~ zO!w~F`EP&zX|@t(E^>UbfXdh1P=rY*JFfe=r`;^%b1oEKAh9o|_P=iG!0Vq5;}aIP z&wTwT^3=6=UvhTrcg`%Fe5{v^uL52H4wvk&0yqTtfsZ_wD6j%%e?N^yMnNrIS?dpS zOQab9fXkwcs^Gi@^uomKMVxh|0Gr5kdV{py0NX}IrL)sBGo5oQ-m{J)77B|stqcf= zc)&n`0%7ssjn>vV3wGD8eb3u}*~dP0n_WAZ*3u+Ndc8q&a*Dk~CK8sg%Ce=6;zXFW z(m=r8kxoyZT^eu5f2BL8fSqD{<#x<+R}29J{m}K(bh%Ar%QwF9%}0(NA*DCg+o#T) zx&HajKX&{$0@ds3^wju$_uQSvahfD2Pn~++^PZdKd7g9CfFg*DE;BGunpEOiC9Tw| zQDpv)U;FiAM~>fm+pU$f^2%4eN)aubJvTWqj)>FK)2B|Jf7-KW&tJXmuP(mi;!eAb zAlF=d?O@nHd-k-5j7?2Ok^jk`p1=B*OZ!Kc{Se3M@Zhrf$b;|(A^_O6YuB&->aPMo zNI(SG?1J~}8RBzK{`?8@LBY1_RGy6Ooxgo}9kQQqe)F5dW?Q8v;5{nJv&;t4``V(K zo$!-UblFU6f8WluSxb@%mxV72SXuU+HV)g6<(wBv9J8QGfCQlgQIW#J!XwM8OzcX2 z!QR6{qpisnx>PJz!Q>W1J_wrJ1zx~EX%_vk78vViiovVYt7<)o?)dbuqhC~^`!hWo=2X! zeevOA+o#5^yXNu-@BQ4wWc|{emmJS`pM5$xfXS=GHs}rwFuYUU_7mm2cztnyWWj@ZRgxgB}*et4cWUt z`u6p+=W2f#+5WaSyx}>YzvINGKePDzo!)m3^GDkoeqnNB>gGTH_#^ip@3{1OWz_zq z!!K}jWWm8z!#d5t1;#Tz;WGh=l>YFCKltJIe`wEi-463Kt~Q&zwz9Iew$kk;X;Lvd z?$I!glWHZ6G*QsC5fqkQmgUYdbK%O;6}HT?!GM2#u9cdc9B+-cqS#0W(9^sA?(e_< z2fig|=zaG;`oIIvf8(29 z`n_+OXw=V~U5wJCUahWdtRvEOFMq|E`|ev?Tt+1E6d9Z!kIt@xx8>zmTy@E1*L?D$ z|G0m=e3nQFkd7l?481L$ymZ*C54_NdkRjBM0suvtJ!meikzf1JFTU^2%MK);?RD(2 z?*2pgYU>r29UR-CMSO|QI}uCl#g`)9DTOS6%)-QuY_IU!UjJQ>{->Y*y~%9w51-uq zOMiG>t|m9mExqR_e)^67<1ZE;J9X#V|CfKv&%OGme)8;@(_>>}0WNaR?cBL@Fc{o= z>#fZEyyrddr+(_EuDIfgG))2E+_`g~{p@ESdE}8+t2Hz8bm$tuR@0xa)&%4$hDE;g z0RAic0w+(Nbk5Ds&j<8QL;`J^nNcYK@ZLYcq8M~HkwfswL9%fwK^CKLIi)_ zZg*BzR=VvCt@T)IoIS6utk&zzL4PnYIWajoiHHHc`@jc2Fh172>86{kwYDtdC~CD@ zy>54Qb~ca(m@PBkaKjC&t1BxjD?4`V=yrQ$Szd@!@- z-l2Hw9D`W)Mr#mMf`|-Af+O~+5TbubP~64yvxX8-5>8bVM@C{(^oJ%;y+BbYWD!6F ztrUoC4Er2|AfiH}^~CtZM%F*IayGNMR*}}2J64KBTwWGtn1T00=OUv6BKVd5*w8DN znWyS=LH=DUy=!{^uIZ5)>Nl)S+NA&hFrPrf!;}KES%Ft07$d5y$syF%yWOn7tQ8%8(Lf1}~o3vqn`G zB?~5Ty1cZiwE}cSk!ce-=QSp!^&-^nor|gfU>ePoxpXCaS0I9j0Br`gh{Wd=5F?<3 zJR^sSU-TdVs1$o2oQg;A9tc?pA;_rI4j99}pg63JB~iaqrJ3vZn{yw@kM_(9z1w(``q@w|J%Picl_k+#Pqg_sp+&{QxW$qAX_a~3!^Rj z-P4`*L2pn6x@z0*%lGfsO66rawP*MEo}Im70PvJ6o&Uc!5%K@5Rdz+5zH!x;xuK&0 zd?AJWXLy7snAUMP@YC-oA{*LIWn60zcXIwIS1R|x3G9h;zXkL%&mIW;i@a@h3xCOv~ z9xx`5Z#4k#+xAavj#*d~=~3WFM4%M{jue|kL`H&3L`rKBh|}bv1N-HJAL;aZNt!qo zZ=KdrYrKU3yDDo`JN^6-JNtq}}Aw_XD8g@Ib9BQIU60`S3Q4peYt|&_u03sw+ zS|7y`GHYWHAj=B&LYhEuqER2K*8zg4k@_kE=%=w~c&u;FIp>=q&{3TGZo#6oVX<1F z^`!_C0t1s$gg}H@k;O(ic8CG@!ks|vsWPA zGnohgn7vXa&k7>ttXD+hAxWy;UN$DEiJUTsJSt)U(ONT$Qbr*-TOb;1&FO{Ji?>gD zpHG?M+I`6v4ymO9gXgj+L96=2&foc+-+RZq-m$!N?qC1Z4K2Qm=FDO)r>#_vi2Uu^<1j=}G_J|M*V| zlqgEpSC;J^8l&DxQI;zqr22-LV&6I(yC4+pd?6yaF$O zV{xQy<_~Tg2U8K314bkwtch8`11Zsp5kn&kG#Z3IbKfI`CQP7{vUwd|sk0pQw^uUH10+)$+X(=@je-xm1pOqaPFFOC@k$X6Y zZIx71t+!_SXFLbNpRvlfV4k z-?QtxopXIqw=03Jmqwzl-_%c88+s?A1oFc@fUW@l%$)}2nzITy!&aVV;@ z)+$9tn=H$!^(sux_BW1K>dILb@y>Y@X(9%sKq&Ccnw?)glPXOLi@adw&`A~%z4zYx zux|6tDFCD=icVZmjrN<)t~jv6bGdCU{hsOP<{N`%Wo-Ah29(~PwC!@av#_37J2uvG zC3iD>Yv9K8+Sw|{DWvJcB;@Eicmf`5q;f5+}N&U!)6N!mC z{mxXYwYuD98rCam5}PE6JyRORQ4(dtEKW@nMN8~OV7!uagq|kfwKA zFN33p#XBNR8pkT}pa0`M51n3%(%SP5%-{d9_g?ed8!E9mKNtMu<3H8+`4$*F0KhEB z5>QM;)LJR6Ju@&Mu#OcX=6MN3Q5?rWm1@k+2@x@ib0q)- zQQW{msn=_hlaq^!i&>T(z3cA&#NN5R`;RTLee7d%V`j}KANj~w=_E%S$e_x^yJhnTrHacR7G z@_qmCj4q;uDvuD;@unT^?r2B*`$w4SJG@4od@cjX;Rrrfco{GlIw+4HWM ze(aG)y0-k&PaZ<0lBm;vV9?+DymYqFkH-D6Pu=WgHm)_x!R<%eFTSesRO5eZBrwY>;O6b~d*1WzcNE1iIC*W1EAr6mdF^ z1w?2tRiEy?`P1ufAk4);)H`K{i@q{Psv&NO5h?b<8eERxz2x~G9LLev zSaa9zoq;)IjQL-G^EWfo(=WT_rR|N4a4zq?bFSHFc<*7;^CU@f?AS3Pnwy(*&Lv6Q z>-D~oT8qz;sUUmV>kB)PP=x{{V!^Sn7e@kwp-Y}707mp6EP|U?UP3220RSKY4}zO2 zp-QQLO1+u)b72M|q|HQMD2YYLirld$Aj>QYt8rSXRp%zAmfIU^z4mymi8?OJGL2(K zw%(h5mM{+yKm-u=S0w?rB}{^dTI;X|Vi7|6#y?pHBiQiJW$*xA01!3=PFg%M9DY9g z{J9HsV5(0*T8*{A(o$Xy`w>6}paB*D;OQBE<(sxiY^Eh5KA1TX{y@2!JxEJwa#cuH%Pc*-Fc;Kh%5|DBbw!?T3cwVEgpz~5CS4`kkSnA zRG_|MXt5bwcG!!_VJL``t{n z#ZFGOPM$b*`o!_1T5}+|_r_)8QBq5PQeRjQcHT7_jj4&rey4j;CyOY$=l(CAee49x z?`Sj|N@-_H&Wfq}Sp7id!Nh=W!stn-~MkIj8TT|w_ zW$!^oT`>{p+W_9T?Q1fnl`trORL(hJCP42TqY!%{7N8(VhJ+x1q}VwjEJ~N!zQE#rdyC9H6v9%?OQ%H)05K)D05k>^O_oS3kIveK9 z3JJ_S{c@TuJ*bZasFd|H$Wi z*IZ$KpJ&IT;SgvjPqa$PPqMz@v~tii{XTMk^DoEpOca*n&p|f-JV# zY9`HTR}MqJ4M8o+p#X>?LGh(AS|W$Fi-Jq zMfsTsJBVqnl0Rapg$nQD2hUYY%my9s})4d2E(Y?kowrkW7*WUs&h7IHVG4pCvAzEWuphq<-ZS_{ISh1h{FLFrH*y`|IgtpUIsxMFsCEZW{^?3%fJ zb#dw3+L|s{$ZMn5I|DK%iQ|pc?xC|wk1effG_7WTLu*|WxnovDfDlKKEz8onepVoG z6f4KhIm?34aQ(Rl_9-#|AmW=JzR^1un?YPE)l6wWblYkZ*Qr- zy`a*OGEtHcB9THhO38x=B1KW;y|>l^qEg0M$Lx*KoBi;}T5qildD!Rw@UKiv&73^F zaM#=3{;CRq^Y>u??CjLiMt5(;v7`9UoSI z1{>76^R%ts{v9uW?#y&U_TG49Wjs>egMZ``fA@h8exNlm@mK%-f4=T#E~ah!o6{h| zYdyQKDJ?kko)6!)*rt7#A9&sOyylWiuR!75yZ6t|&1R3C*ni31N^FiEI<;%2_HVAo zym##6+Tq{pZohZsp<8^vaMnj!H)`R39z0cfJpcnU5d4q-@t3DgpS|&_-R!*58mu!) z*J>3nWtwVj`WqYFG8gtz*Z~2A{%?W#=e%>yA|Z&=3Zq!1iLO?w^?E&uB4QBdW3AFC z?qq{M|MNe;?z-!m&E|QX#x7u6udQ|$m)E=5=O0>NXP@)j8yof3JKp&= z03Y&qS{r8z_8w6o(TJ-*BG89~f;`@@;3=Gm1i`BaQBs=^l!+Uz?fe=S9T;Y;D%`k8 zS0^E;QlKVO01Au|or+kn7MKBlsstWM^RQoSrj1IQOY~MY`uh4S78iFz`4~2%Xn6R@ zMT9TV+J5%a>+2hPFWUd`!w+X!mZoVyq%OPcvbVhDEg%2*$4{R=T@*#FRuhqazweyO zvaH+fww|Ut!#A__`~AUS5Uv9NIOnw1K{tZWYkl{GXJpj52q5e-K0e-m?RNXaf!4a; zAN2d9e)*>3^>K&=Af9!@wo?cg^Tw*Ke=dN4vg!}G9-pF(ec4SH+E*K}$DxPXs* zlKnaW0Q?33d>g&{=VH$FDiyQ1m@92UI**hTrSA_iBF+YRoM=QwL@Uf*xzcHk2%Z2) zlTzS0kK+ggJ#*yhbnHxQwc)DSoG=Z~wQj3^mfkLRe(10n(t zpa&q}FtH;G5>cqi44@sM01}UwAM6n@)Xa@q5kXijaKPY(rt0t~R(d5MV_|!yHP5Y9&aJ{}2t5Lsg|MZ5aLC%vkx_}7) zx-#EbTPvJL5UsWI5+M*NE8+xAoMM)-FW6fW4bFd)c%v~kG*qayK_~>lDC&0FURaX? zKq5uJun9$nHbBntNF4x1-zv0G4)1DdOi0WnGodg7ejC91wtY=TM1UxM!~zRh49^^f zB#Ss^0R^N`M1+9|P^z_BrCPPtDisl_daa%$k+3v~I-Pcw4H0p6W;RKZEYB5+vjr&v z3sHX*d7m3YfFR6C6g!rpv_)Bv)>4$tTcslwAQ2EKN;}MQMV!V_WMJD&sFdAmKm6f;s8*`k zARBA4*4jBnMS;QU#XHM{SXyt47GWn+^amRo?Wtt)z-;Z^cMgxVm5LF?kxCVSIGNbC z!;Q@z>#l5U@B@W`vR-DYQ+6*qFh4ofvbr@SJsb{;dVg(cZE{=k(gTCNd!lHn^89~` z=YZ|nQfJR>^-V9RpXlVvuBK|pzL<#f=^E~ynpo|*PGOwq@m2+a87U@v9H~?A_KX-7~4gc-e zPyX1yDt_`e@`wHc2!RCwkoSKw0y^!x0uxHs1lu|2NJYl>n9h-U3}i!zU}nWyJJm{? zje2{nvgA7B;rl<@qo)x&r`0WHig2 z(w5#9PAMd!ATl~iyoL$Vd$+d4-lIUb*Uhp_1c)e(`TQKCHC=H*&$_U(ho@;jiD+m!r}GfYBglz1h}4L9Wu?lI;EwRpZVCr zt+)KhmuJ%gCV%rZzV9V(e&ct4_f1R7UFQmura%4N-+BDVLofWPU#!KI2fujV{Oq3k zTq9pPQ-0`eH!hpS=im78hi>mi`sVMvyg9h=_}?0D%w8+g>27@LQ@2M-xgyt!MC%w3 z7|B$;x23X?Nov(trc<|fs73Fy z?ebU|NuN&pkGT^*y4frohW}RLagWzp4^X_RQ+H$`Qdr@L$SE8Qlu5K8WM?`l2*?y+ z;Ip4iXNRO%z{H?YG+-UR6|6>TVcJEf;ZoJrFhMM1{Z?p9E>{aWQ!#wsY!0fPOIlFN zZAcwX(fLs_zi;71?M@q+!-`c2TWH|EWQt7HNv*fvO*m(ZOByKAA?rM+8{&XM!NY~! zZE=RqmpIWNrr_}W2vx`dq#*z=ALNO5`VCJpUj71^iq?Z`20`^&4+WR8u!uGKUqpsf zaE2VQCv81A+D&qEh&3i?5CjEl${3J4xn6AR6{1tyE`gcHRZ-CWAaXF=UvhZm@1qab zJDzXy>5?x0s!aB5x_Yd4IXixD$jQ#6-+@Bm-;NI^9L`G;bB*-B^o_EzT1{j}M(bF+ zA1??=a3^{9<-b$cHwoWb&=e|d}*kBXfgVIiX- zckh&Qv$=c~^CnJC%nu2c3xWvhrg{aI1zYfz(BU!kF~vrX$r$)J$ksJb2fk&l2J^at zpHS()tjL1!S1RaaR=nBsud3Nx-~Wul07 zfzX29t=H1@@HcqS0*!FN3TTtqX04T7f(XTCs7v z)vBXdp=7Flg~pa}WzXgF;=X7!?beRA>1j0oi_*??sV12)vBpm3ksd zBAc*t>nu1{&sJ32NB1GsVmQ_Dm91SJ1)^*dY2JWQkwBHA2%u##Yf?0xZzTNZ(|#`k zW&M>{9iLEYi8VrGwa%cuQ#?DTn)kZ_W0pg)jQ9PAt%NXD1k2u?Z4LLdb>r{ikcsXn z_iW*|sj7KWQk^txk?E>qvdUwMn(AgBo&A*;-Xvjmw+qUw{H={MZ-&j_O4F0d?Bn;v z7?E3_1tC&m(>#=in*%ak0CF??#Rh(E43ls^7H|jo##{-&uG6q0q#F5y1!s)pQJC0b z1H!-TPSf`W1O?@j@+N?oKyvg*P<&46;P8NC%TufrvoJ|7qim6esr`#|MP@NEk=abg zABq(!^uY(@_=@DFFF}$>rQr6{EP8!>l2fVY%-6w!rStpTu7ILoVC?dP_|p3^$Omomr0UN!g2agi7b9n_p0vZyKXw@Ojj%?UZ}(*Z zlj3Zohw?XQ1i2cXOv6^6X$i!VUpf}Loy|Cn{-y+uaV+7!d@td0w6M3h_$sgUP&2RV zo*Man2=}l<0Y`dR2Z8WZZ1!wegCuVuI>H+M0#(@(H)5&AF*`d?VEyN214@NL1eflEEbL0*^9CYW4-fZIb9}U_nsSuDWDz>{=+DB-3>x z2-#YSssM#az^f_{G8ssOyo)Ca3im{%G^%NN-mL6^JS!jgN` zX3}CIY-wB*Yw!L=c`++U@t$={{k0NAHIXX$eA~M&;TrviiJ*=X4*DY3wQ8pZ3+tmN zy9%AA0VVm*DF340om!M{DZQ|ZwV|;&+h@8?9g2s$1+z@Vk?6a2f5LWcS(?YX$09(Y za$Nxfz4GhDudT^vtR1CB@7L)83L zsNL$?U7sz*8}G@SE+}g%R(5zI!9YAqaXk|D9X9M{I2GpEMEmK=C>=lB3^lrN_?tA| zv}92V^>*A>b8AnnrWu7ua0r@Y!YAN|L|pE#gA-MtU#UYkj)+py$D|`G#^h!QZ*osf zP#`Ckb`~6TVCXiKc#Rr*0m(TC7I<_!H>QrjO zQY{4kE-e|rbt<)3C@Cq&EeS!wITMH?lW4&2$~MXr8D6%29478;D#Qh}kp{&`t@7Yc6l{Z?hVCa6HC|opX+~jVL+iV{n;qP%*J;L7-vbU= zzRVa~cqj;R(B-xkW@`qO42BD;%C(-QDUTy>gd@p_Ad$Q*B;pJJd*Yu=kb1TGKN|*W z4Qt?+k9%wOL9!bb-P7VtG#^}}csW3k3dlO>rv2)F@TQ!kmy{@+Mzlh8vtSsw&tGz{7Y87tIrgr3nnpVI^f_n&SJP3DM@;*pvu*Uax<-`iw1 z1Jr*cay*Uf^sisP78|T0%9tXJY6RZA(Jt4@b~XH5v+1Uv3LN1Un;n*4r+v^MLIa`J z-EAQHlIyy=p8z$HM#SCT!GWF2>}NfWJ}$H#p{k++u#8FJ03-t2zx19O0jiX(ZG{2c ze-rR5UrfudUw2>o#dw@7Uo|bb39LNCJYg9pH8DhyF{>{Ta($EgC5H)h5ie#bS4tgq z%>N`%5$WS=N}OspaXUlO<=(?~R%gjuK7ib(9Q*MEL8YM3xBEkcLn+VeD)5|;U@u%c zx>uo$*lV&9+X1%j8crv+gU3UmL^<9iO?(j+`H5@zM}x;i*X7PtAW^|o>cX;K_rbyu>%W)9F_XSW!RikM zq{rE-rw@(%-+?aT!sIneWTK*ynjkKrvOYYoONCa#&c&|SkX?z8=3-R&Uv zTJ&o770tu$ze=O~zxz(zuiUNm+>Y*i zaM@<<+4{Zg)S*&|IAY~6HWb7!T({=bW!1L4P3t-D)&0`r|2Pk1VHr9BE$ibdFx1Bh zdy9{WTMA=}WE&0b-!$Rcy}s`<0xr2*$LieNTuMqxJzI=MZT5CL+7bV&7y$| zN}4AUnhxmZ$Ar?feeB^GXOh#CeKH{?d8<+zK+j=v)1=4P61A{8qn z05t-M3=&zm(bzIUJhhHzlV(9aF_EPNAIqJhgK_bE8_0-iU_$}PC?~eEIh^bmvIj;L zgcp=)C}zB#JQtk=z9A=92m>=^{nRD{2SF;ly?VBwFvbEtm6ozG#l#B?6!;si9a#=! zQ)W{*P)Ek7b~W?wo5F*W!S;y$&~Txu29pLuwRG|%|5AZ5*DEMR0yu&wQ-QU(aF`yJ zfLR$~P^LM-SN3NY{Ym1?LACJ7ah83?(kv z(nnMQirAMR7b=W!Rc7K^Nqp`>NC7uPC!|1hG?~=>*D-O7K@OZ9JC5nm5hJj{o@qw% zQw-mtGN~r9P6MLBj6ufqmE2^41LK2dC1}oe;(XNmO2GENC{h^cJzM)gcVKeZH{fhCDpCU%&xU+$6w5_epuDXpu zbl!!^*za;K&B%MtBJE?d>&^t6&Q~^m677)P>GqK3=DWbyc-*wY_x_;xZ(M0uKbTB( z13>s_Z7(Mee!vQm@tF_s)KMVL1FC9V@HcB$66?2t*ZwD$>z6sp1$+H*)cmrgsw*5T z7!oI&x}B#MipdZpa1?5Ub95uK19RV!^&dzaUwwSdg=pU(M4=8Myh9XUJ8$4|wpfxk z!B0JowX%zQCT?%Pa7jyFzAEP6d`X3yR(sl;SixTP3YN3(-_9G*w&>?3CL-Z(dB1Qp z^Fo&Mjcx50Z$CQM;nCkoC~3dY^$`{P_$dKrYhS_GHC0sY&)pq^8mqsGl`=<1DGPK% z>3PE&B%%OTd)+MW6OQ`x9CZm38kFr(tv<-*Sv6JvH-dH_q5D=Xpmh<6ab4?^1_)~^R-qmW!U`71?}pPr z&)zT|KMCpS*P?J9NPXz>z^!79t{@Kmu{R7VgC#2uKv1H8XYzztPSN8tOQKDXL+tz% zP!cs(kM5L99l~8B<)e z%^~z-@YLyJ8$A-FC37s=oIlK!NE2uiAZePvwF;x)_|2oKHSmK&Q>@wxgMMgOKrKbb z4c03la927VH#fAnL%c;{e@3mW9Z6{2vZqxtWcdmHK1cj?xC^^%Y$hYg7wg&5t?;?) zu8lL}qv77AkF49u;)^^|zXX?;KgPaTxN(n))UkhmLEQh%=yLUl`_(O?@wr3d!`(s$ zb;e@8PFj1ez5WeZ5ydT1qibAH$RzNex1@ukNgKo7UzFFN-RZ&vpcjq`FH4B0jW3{L zp}~@q)B^WP_cB1oCfd{_p}o1`iz7dm1~++GhbF7E_b*9}VQD}1kU5b|(=PXrxnQh^ z@oWnPIon>;K_eTB(m3P~fb{nYHw>^C%OK|GhXx0wcWUu+&}oRr3@C?OK&i+vY#+Gc zZoMsX%w`m{;BYV`GKefyjsPSD!KVkw;D)0VLc;EQB?ZserI4@(yxyTIG2>Z6LAsV= zvMjB18Z500s38htK}=Zb-|3(*ETx;mU`$*!R3bWFa3qr?k|e$g6AsRA%-4Jw*!t)) zKoTMCMjX&q6PPK3dr-zmTED0h5zFFxW9qV`0KSUU*C4IRIZ#K5jcv5c1i(_&v-xzb zEiCA@R>a7mfU;dTIRNI)=lERo*uBH_x~`7<_|aJqhsh+7UOzP^4i?8+T+fEhn!x3a zvU2mn#e1>m2tcrm-4|A9PSOWKsga0+ zK;GnHKT+4XLDp~>N{XCh^O9mPxt=*+BloWohrZ8Qx49}Ds%jQy3!Xi)exT<-CR@KdWdsxx>Z}^R$!jSAC0I{zb8|p7nWQ({AT$ zXVSYQW-_gPf^3qk?pE@xwEx+GDanA5P-O|E0`U%mUz#?+P@T{5T1PU6)HWywM-dD> z8h_3U6W7_x-1a-OB(gKmoC(WQ0)9urM9Y$#`}IIvYEKbby^}#Ln1&Q)6?3-3T*3Y^ z-yd}<=j00Uhw7U6Rc7nz>f%ohukUF)aljvjH_<)D4`c_@AtL++&A}+41IWSBBj@p} zCx(gi896yH2mY*vh6bC=P%1GfP^LHT#&qYt0_R%?pB2#pta{oFMbrQ^SHpwVmaU=g zV=Icw!S&APp7q{xmI&%1jzwT}pISMtvIFn7nr~YH5u9i6-d6QCNnbG@U zCc9Tq3VQUv>bI{Pd~iUQsYkZD&c_T&K(P|VU&JEHOQnaL4VR>*4RBtGxA70=mER^J|b_s0QV4^+0Y`pmIkl$UZ2 zJTZ2PqOBK+BPl7>mzUml?uA{S|4o}ArXwcWqC6&B1`YR7mf7pY(hlu8ceci>n7-*a z5y`?NB3QS0?`eE4&LwV8YSw*zr2KF;^R;z!bID)btEu)qoq6=}ILyLHnt~d=USH2d)lF8^~$j4(h!#Hp*I4#nA~~P9 z1=jcX1!E=jf*0wSk+B}Iz`TUCP(3^y!9FZB`D9)Em4mYOk(5B^$dga3m3UNa zP=kH2vPn&%jI8>>a>u;z&=`;)YR3=suat0vp3TQ_{=D<-9V!WbUo*3>U`9qp7-!eT zOviCMb^+69y#bt`4Cm@-)#u-@asXz@6+B(IxcCAwY+OD}DpeJ-vuiSFG7$4R`;#l? zGm$OSKbB_fkA}bMIw|(wjr`!?;G@UtoHbu+YAVn`rKP2939e!B^uIsZ+0$~eU~J~0 zZ+zV*RTdMwwLnJrPX$_-NM8+`1Lo3j{qnhr6uAb28r>wp*aD{VUv2~dbbF!XDT)jM zD0BQxoqTM2jl;L-Yd$?@L$Ls-0YsrXy13LK(&eBg!rr@O>dmQx6m&>PW~eT2_B}-Q zEgZY7WG)UC&Trd@9vjfyg?$L$*dlz`B4s)tfQb`=K)4Cen5$RY z8xuXhfuGA@%VUyN1sw^PqH_B>0^3#HS+2Y6-J#&T#qnjmN zzdu_ZxM`|K0Mcw$Y#39~hQ`QJuI$dMXLyv(oLTkjYGU$bdq|=nrAZBAOr1->FmVAU zBLjcTIDd2~;_<+FY-1ErdKz;aP3Bqq@^)>L*#DgsZ`iC)9 zD$m#ybjb^~n>vCNdGmpKw#bz>jm~&i^LL!FzRVy=`e+aWMhZeMTG=&KNsK(-?To=0 za7kt`+n^hb{zmsPDtiBA)%9;60N7zKnFI;Bu~3wf;_8oY*$g^916Cs8db3l}<-H$1 z=A|pGTZgt#OGpb^pS|;x!F~cqphE7>+Wl1h>spH@M4$mBS4Di#;*uDZgo(c)d3V4|D}ZQpW%edOE-|`^70xw$Y9^lv29x(b|G(k z1>C@tm3!xLw&3uq^v8n(<&F*(0&kIonV)H!r^qy_>pkah^KNz-Vb?8dpHF7Geq?C& zUw+>?7JkC+xyTyu9fEsgdtTgJy=&R#K!NN~WrTQ7Y2jpCJni`B*z_H98{rm$uuQ>bsinI`@rs4>qRX(&S{UloZ^J4FuYn^%)GK z?|03)ZJljSeQ37Q7_2rFc}nX$LuQA?wLC5qWC2+{UqzEBBg19Y?dv$2v4r~pXZHc# zXT@;ZN}s2Q=Ae5x-qAzwGy;3Y9<6aiMnvKgRT7Mf6Qs<<*LT2djyDG$Aq)us;|8E% zfr8a*WLUxB_4@cIP%s$~2awK_j1=7&Z10UDB@;rI3qq;|A&0KClR_k4nEejyR0sgQ z?Z-mJjDw?qkS^i*-C~WgjWamtlGt!5+ka2BzkR*h?K0$(W_p241KZ)eJH8z)j0v5%LqXLo|L32ZwCf$BG`67D zHK-rQ_3y>_Vz(iKqkW$OeIMd0vTOk~Qh^rg9jqZ5#iWiLiKhQyn8N263EYdpg3=&Q z1bwwfCJ9Kwy9o{N#G2|!UWqLu30-g+-6Frp{SbnU)~)kho1GNu2w}bwyAl3KZKwfB#yRD5KFGt zHD{|WgUr#?-JNTpU#x+tmdecl%jSqD04stL_z9UL3qu%@Bc&zPV$lM=GSbSR6aU-6 zgX|umwXs-?2K}&2F);kne#pj()~XIKkh5s)EjvI<2*7V*gyIvBp=m*aq^^xo)kXWj z%&4#N${4AqP_`_8g+gsVf94T9fn$?_v@EOV_mNl{5V0{a%*9nroBbeIEQJ{|gcLad z5Q(w={;a1j*mU0Qa^lYd{3YKSHgnMj9N&GW8?ASChT8IHnTm#CQ_D^R=i6SRmStH0 zE(Si60IhzF?Yy-uu?{%{?uOd;ti&oTGs0W-&J#juJ6^*L5qMx0s8d(Co|Qv}Y=Uje zyx6jLmk|koG`>qThkdp+NC%#zN#~=eKSSj2K|PiDAmM~2{uPmZ)VKIK=i%SL_-dlq z(%F_ zJ(^;CI9Mt?ARg5JY|4p_sUC|m9gyFs`^V+S2IyESU>li_mFVXyDL~3MAuL9rhd?al zq+ct^hDTmXkIq%of-s8{U(!P3`wPdn(&o-)>EjWGX zF2K)k+q86WV6RS;PjPJ6`|P{iJuR2XL?R;-l?cFi2_Mdm@2B%xZ|`(bdXd@uH;+WZ z3HDL(1Jpr3e5A+De;;JL!RHIbE9?XCBmtsZI%qtop2z&ewDmJc&u%Jr>k9cn@Ny?fg95Ynlt$mI_tZ$jhtQe%nlb z+;J1>Sn6>w-7hZD(#fZ1G$BCpr{JB{Z1Lq^E%xeX`)j8miMk^GJgO)7cHQr`x5?N1|6US@q;{{&hsS5 zaQvUIVbArW9Lqp5%Gg-+b+-grvX{|cFVG44*YA)?SG)VQmnmm1_UK=K)|vVKQGfxK zBqwywod!PdWSxl^0|uos{pXoHz!IV-&HUz5R2>-nO&VMd>RBWLB9xg=CQi#fab6sr z1oWcfK!dXe_{^_z$t9aTKhx5qgJiHcyrZ2k7Bzy8rzY5kGIEtnPXWl&AIu zGG(qGc8so1-}|36)%cB1K6T{5V^z8zh+F7O3~J`A{_Y@BQ;kp0(k|~{{qtQ%K=Q?O z++VL|ZJE|LKeBcETD6UDJddD}W}3oR<|FBRHnB~3KZLUotnj)zdW2#k(8uWj&%-jy zO9-%N(%T=HO}I3I6i|AEdSa7hsmoDYp7AADl z(h8Y4&Wx7`q!G~#adP!*S~CG*R=lLFn*Z4 z8qu_}P2tA(UVipA)c3ShPW;*YDhWGkG>*zZ&rU$0qkPZ6wThrLrZeEkd12h!ZgtWz zuflCvzjU20Yz+(6mSRwlE%WnsL8oY;7QNgjSkXX6dSQ;PU>#8< zrVz~9W=VbV9F#{EWn}UbY3=OIx4}bnt2JREoF{ygQ?sz#$I+u$W7RKPomB_COI=Kn z>@@hFYYcG(%&RRLOgKQFrH;@+jfi|vp+9euH6R;Zx>?$TSt6hG4xPRSOO--Ve|l2y zj~f`KT4a`dF9wW@Ywh5-v5*BsyR-}i++nR_uoWt!Risd7C8?nl*K6ZC#H-S2{*yhyot{52i$d*Xn^f8`hTAixfV5XQCtLYYn2G7}3oQ@iNG9=aZG+Z9>wS4_KJ-ow_G(Y}2L1*KjbJfcL+3FHb}~)sWSQ>BlT=PZBU%z+=eXXPdQ+Ujw)98mPbTOg>GrR0|9^P6D z`dZi+j*Pu(j^ODZfm~6a&BPh6?2@I0&%1{Fp&=SN3Ya93&`GS93Gfl$y`7L#dbjqR z@$r}+QP?%GWy8PjlQw3cd%3Z2^BA;)hSx{xcP|^9?m%`E!U9Gkv~~y=m60JZ0Z9(IX<5-v2M{aB*(u6YKlb6) zNh5d&xD4S>#^R{&A+RWo6*s_H#H|Ydq3KtR?9Ok z{08N3XD0Rb`mIIH!h;FwptY$;Qe0RjNb$U2)B=BaZH-oc_^^0T*f;Xfks>JwI;K4m z5r}J{+n)g&w8aMtL?Tnim4SbOY135Qg9l77GKQm`sslSm-n}Stq6q5VUOqJ}lEB@$ zPjp&m@c0}0W{|1BcY?bNbU1Jq!@bR; z#DXfV|Buhmz|gGN1V_@*Vo48@OpTOpOqM`Nt3_rH|ApuJZV+6n0U-#s$xc(kZ{TQU zhRAHab_qgCRZ6aSZ2~TrOc)4Z`-470#N3cCb{oxCL7n1DOUshNPicstm>8Y(UF|$R zg*{JPubjZ9NaMs#=jP-_k9z!#eNuG$&+;Bm2?>)*jm~3d#E$dW;GuC63qrSUo)6Pj zd43i6H&VGgL3>|jhI!`s+xpLS?6Q8a||D2+ZF=yuOqU87Dd_akOdw) zv3(EoZ&`LbR+;^ES)8qd3Zhpe2+cQqe8mJDTt2pa-UgC1-!A=jc6#afLy}%H%8##l zxwsu11WFAtq3#7X7K0cGs!*YDzYvXOmUUy@0O5?wysRJ-l)DKxNA($Kt5ECLW3mK3(pqGTZD zDLXyAYgr4`)?vBNElU&4%jmV3xuOVznLPh4E@u$3#-Hw`L_o#c4z$?PrjoOTe;Fg z`(l+CE9UUNqIDJds>PGUKCf@5UdNK+;vp1Fvr)M&ej@LB(L?)sa+|=fzO%!|*yRET zpWF_ST4Qh2mVLc6XlsnMrwElKk_q~*x24~&w4GyAQ}>1Z(b;}z2n^P}eH7n-%v!?^aCsMhQO&Xa;HT!sv&K@gl2B`UZ}d?x0=Q`c88 zqSlVZu=2j5$Zx8%AF5{;@ro;$oJ>Kfk`L!%`QC8?GzRR)Fooj+!>^jCe48(+O3XjE ze{vn9jata}yG5@tMYgZP92*wDBp`u+YpW!I%d`R2hU>UW8G@k%gVr76Z+f-qsfrg4 z;puIQ_PAfz1Y@_}rEze(*31J^v7MbA#!Kp|`Tc4>ZY?dJwGF2?E#0!dH-9fFZxF=a zobcDXEs*vMqkBGWp4U7=zR!%yBQp?~>+9|9hlFgc($)NPH;98toLF5l@sYd;XhILi ziwA9~uI*n|Z9{csClCfQQjqwnuUJUSf~r1URO&@lJ~^Jg72-l-O5)^i5%siq!5jD@ zou~wKkQ4TMOQ+1$%U>hFI)!DHEb^p^6+OF=x9>t!$s&YY zE||sZuiFUWOuI1O=eSO*oue+&32|-%%8&YXu&b@SyS?k@m+Ebz0w zlM{#xeErfF;vS~2)Saq+q|NH2zF&V_5^GkoOPlXG_2g~(^vRd?-PerOYj9HLhhL>0 zA3u0rRpvdf`W*S3hcvv;mT=qbI`$iSRnxwgAuq0<3+tkR-Rw+eD;iwAxn6m)g57O9 z)?8m=q&c=fy4jfBo;8#PeH-9=ErxQnloK51fAQZjL84uZV%=^2BZs&M?dcE=?7`0X z{y*8?_vR$WV@*gxB9CHr_`HDWcR_dq+wqsy)l@@6UP{W%Gah)&kXJV@9`XwI33tFf zQumqC7!6Dg@*WxVGMKL=Ob`U2PaDOg1x=Clo8Y73lZWxW4XkDb#?Be+c&L5*qq^L7 z7N}h0??g8o4fma2;eO<<8p5JwX#4oeR-fMLuHGKPXv`UZEWsdv-9Y_OQ~5s z|L0S~#!gm@BEg5ap%2&`ej)Ht(5HU(XzXw$ZyR><6Bd4BfDf#7E%)?{r zXnF1Gs>bi|`?6D44Ew``)AMNE^j-OEX^l^RRv`o|{k*Fw@6@)9*ip?T3LXQ{;zQ$`bnG%`0up9SfhV>}AIR2xg>#oPd$we=`a>6X6*+&tzLR67{Xh;}rZm z09k$Ot3I-Yh8E@U+}Qu+a~5~myUl9<)tiCnZyF74vF27*rNK4*N{>_dSu{f4z}k(6 zM4SpACsDH0e~KFBA(wLpmjd1(?ldm2 z-gA3Ve>3N)O8z{EjJ$}R?7F6u)dg#Hc(Ev5&#%+Kj-yvQXkb|z4Gu;RXyQjeYcV7- zNts+}Lh7Im{O_87rWov|CHL_iUU}z8>%&!2NtBq;nF&}{&Ln2XQR$g2t8I%nH$=-28ryk^ldg}(rnc_D`(+&F>F zXq{Vw@gFfjUb!N+_%G>Kvm^1LxN|(KUzhhqK+aFUh0>-VUeb}>eHaw)g+*Iwb+wR8 zpzpyLSWVV%?Bc+|C+2|a2K)M<8cz>Gi%+(Lhsrx!C7H4_9L;1ED;e1O<+Rg46stE- z;`8eFds(7{rXa;S#9;m0z?ey|wHX_9jKc6wIi57@YqZ)C!<;P~m+)LK=MEosUM$Xy`B)v2#=^h?g4m>*ELTuC{0=+ZQe=s+nm;Ogl@_C{p zr9#;B{J}(MK^Z=Z)aWy{_ zg~*whtsIf$D6(`Ie3k7FDl^ug;loUCo3nlV&H413QT#N5HXi1)v%%ToCLoH=yv_N1 z#`!$M`8ab$bhu2z5d||aHijMhtl#&dy!1Uw%JaSMSU=3AxHHCGzB($w?mq!GAv7f>bcFLx#`95zX^lg==yK#;?jseoRtN}z+Vuchg=nz zTaGI18e)U`u6>#P%-CCxAp4M$;vHsfu+$QTNq=faFu!*Z%;^44n0U9Hamxu9tUxJk_^VXxIQ(?@l^cp28C6hQ2QbD z`n2inm_)mJ1SVA$`$V%$x^2hzJ0#}`cLskbC2HYXPJCxmR>)VcRpM?EJ$J%~Rhp+G zxpoSyJG9fm_|gX;9J3!+-wE8o8J?Vq1s*#!`@JOKDNi=RYz7Nf7bRSyLhIO z7=$xd`DJ@gfz%G>|_u}-5!&FADS+q*5LC9PK`U#27$b~~N|NpVw&7R6=R2j&!nfgSl@+8zHuGP$f6dI6h1n6=78 zwK~=+uPf}E2+T~p9m9?W9sbUZ_)@bH^rrE1dc$&zT8vl>4YeLWw+!o~2vD08^Up*r zlZ2pd=F10Fjr6j9E>4twL-|U*;%1lBT$(5l0x{K>=_8d51+n>p^9l0*CN{k?Os*;; zQbSswuZ`5v6QQ^xQPb-njJa@l(@-yc8!fDNM(Qgh4DD2YW4HN-QQ|y+Q?5aj60S9? z>H%}}avibnKDzX1e(8sJ9YW7Up1qoWn{R*hJlg$G?)?6u$q#jnWMV) z;c_`^KP^oFX~CN5?33@KpMpz`9sFwsD12~`V+(6AQ;L!*86hZJo&sM87nN6}FO{(C3#^la z*@9}w?}fP;sQ2_=`zl9kMKA)SMiip?^-B=mQMTY)>+5u0DpO>r zvzgSdu(uFBbL64#4b?F%aP%WbrXkf&=x>7-B8=*}1_yHfF3!s5`5x@QBjx;YC_|Y8 z@HQk-*lDVHg3Z_MUDh_6GZqlGIasB@y8kGU^|+tAk6X)=i^E2MBAAb2np63r;5DZG z0+c85h&ORjz#5;pK@y$5vMIJ;_%@`qJ4bVj`Y$Ma*LKB}teraRt%;z+!}PSeRe%^b zcLIIHyNvF;xtd&Ix1VILJ2@VqrmX;{VN{b=vbVCb5`s;7b-2946Qfbi2V2nuHa0z1 z`rIWMi_*=q4p%+=mLR!~2^lbB@d z&i(89-7^_=kPqFJE6R|%ML?R~c6SnYr+j9XA?c)OntN6tk^e3o8Z0;(awndSm{UZ< z_kj#E#%mDY{!4iWhmXHPID0`N+a1*=g#1dxuPG zhz$lhRkpNuz}8Yy82;Pj&K1BtaD%5iTG5fd=(^1R*0;Kzhb~2)11ecbCzmDK<-rQpc+MIxy4A zRx+xbV~OmOWho{8Q!s@+*|vk?*Pt@h68@52y<0|Q?D88d=2M~3zewX4C(hf;)Hx4a z@7B9hyyWg>k_`bGmX`H>>P_SFP0VC^Nvsz*!5Ua}%Gz4g51g<>37767rJTQ?6jL<| z*}kghqL141BSg|T`J$&~jkuDs{>J97yi6X(VUzp@u}e>=%5N$zF-cz&Do)n;njJr4 z8W-?A$V$;0Rx;!>xWAXbNBHi?Qn68Kl73k1mxX=*anzz?OsJ$C8&|C{%e~9?UrO6z z1FzGwnbj7W&dri6RcgQ9v}7!N)U~dfHr>)L9lO0$k>e#jC*Lbgn7EkA+`lq@{@8h( ztBE|P@$vUhf1Ypdu&wfhJ%ryxONZaZW>~`?{~0p0!^FIfE|v~D#h(6T@YV(gfK74ux_;v#*|0JTj?|d z;ft7tmP2DklhU|>)SL{Se9Z<7qCfVGpbR)VmrRh_zk&t(<{3e`Ucg+%BCBKf{*Jn^ z4uZLwi(rOePfrfQn|80B!a)a;ZbwWjoPIC`OkP8FdQ8;7dOc-ExuKzoCSdnpwS(ga z*olcyv}&ICB|@Ob#?19RgOCxBr)mI$v(>fRJqgLgs_*&b^B#~2uvZ#K{qe(H#`C7% z&P3j9`_19{U0RLL>f^vgU7Y{#)nk8*0Br++!1|`+y$Y1Nhh4(po8{+q*kzIg>^8|r zjfdrZ5*xVlz2Cp2u&ZO(@O;3`%^wK zF$bflFhCQP6BP)^KzpXHU6@O${ljDpP0jVqjm^&+NAoMN8sp32ICb!xlC^d-l?Mk0 z8*wQ42)1;buO&m896mH3k3d}y*1@jB3p%e}?QkDccHm2$=NG28O(;@rn6?pkx19(u zw<&!ZBZSbiKIpqe>o|Hcg){TYIcI%7(Vidoho0%D=TFDBnU{$*G^zH@F6E)&a3^3i zgfPUoTy)5L4APBNnQ!42&QTS?;l@!>G@%|c%%ap3VaUw!op%$kVEzCT^l&^r@}hNy z=L;+yW&^c&g-Y zYE~uevpH5gA%m<`UDNz@@sqS;#K57?)AXA|ecRkS&EsF?KN6;G%e6){!nXv+HM9ec z!^W?4nncBf_UJ0T%PC;D3F9%+h3bD~6Vv|^A7}!G^->Xf=7%$y5NLkPk()uFF(e=HlS1O(Wx*5*$WFP( zp`hu19GzuY6#v`Bmre=klBEQsyCp<~Rp1AbON->vDLH_Y(k-1U(hbre(hbtx-QCap zpLxq0u4{H?zW063`5g5=+t!(!aZF-$NUmd#2&Q`x!gR#acVp5T^K!JYIPt~%DBuQa zB&kfq8?xH9yd1M^+}_DC)M08&-zfs$ORCI>T1}B>!~C)~J@9L5k3wi=evYDYv7_Vy z(LzV;jIb*WU(}!)Eb)-d8HNPv=$u&~v~dyJZkAo|cZGGc>O0xZ3>_y`R zg8jAgzviR(6@`luRewxQQilzn0Z5B#?y(Q-X151Q%+JNg;AV<>xCfC&o-G{niaTO` zHCsyB?T++&vGx?=A?D1b%X^W1qY}a8*yg_HqamTc)|J9ED2ddc$3i)RjK24UPJVl# zD4twNKro)9O(gTO9UM5-pLDgdA8Km)Sg;o-VQkDbH~18 z<{Ko9*(yYX(J&69YUPY<{{i^f5NVf{&}8NyjLSg5zVZ`n538N~Oz(9jd!H-9eerT_ zJ&Vl_OaGVx`|@3xpElnxa)iPOw(xy!7r^(M@6na-Fxj`@^F|aey5O?|GBGQjD~*qd zX8#+E9w(P>^}tBA#KJ+N#IFUr*0b~@@B5Q(>Bp0(*1LrxH(thhKsYOE!gH}PxY>L7 z?DA--6#!)?a7hImV*$rkPmfDaV3orC%`ot|^f(9HWn49FnVla~o;LN|%V5hw@^G2V z{2+-D=cwqh%>Fo|)J2Neq+_}TjOrOw!-P1!I?yb^$gM4Nmh)E`zNaVSnK%Eoc3bMe zRY_gbO$n%Y0a$zf!0q}BR?Be${cSJ3PS}*eOPqnpa%iOu6%_`RZ8Q-P9#V3NbyE)H zUsH8#yI}a0a5=qIgcVd##7YS)>X0RDR$7R#l+}gx#QnkQ`5wVlWf3B6bb(l}lUT6( z!fp<8wiBvi)cz=IEUstKz~Qx(6Nb3mSBDdLe`ab2!tkWj{TcUM8r+<0*5_}=IU*Jh zl~gHo@H)@`5%8of2#j|$%}&n?&KioIO#Im_uE9Fl*C7k9t1h>6N;QW~+t}o}T>k4w z8Jr(5fRoAOEa>dIO(_%Gw~p{^>ktA!1#I`2J*mT8oNlUX&Hs)a@*6jFZ^btA7x$ac zoE{V)*C8D2%7UON`P{_9#)Lq{_0x9E# z?zoG)h*FB4axU=9M?BI+A+lCgfxUy|&)ossm2cu6!%`gvI8li+BScz$dkoew`SmPn*(YHp{YAF~#~U%1*N-X7na{tS|=p z2~j0@KyfESbQ_yR8rZT`T^s(P64p{s^Y#Hpa3 zkg6t{Eq`OzB6siGrWrm%duQkFe;QSQs6l39i{Q(wd4u{U@z-#VgXXKl#j4v8krxkP zJd)=kPg_@+ug`3V+UHB9y3CVQjFMAlN0laLwPW`#5A5n1jqZ8yWS8HvEWwon#+cP$ zWa4vt(s9DS4kz|nh;!TXws5lljP)o~YX1ExX^2B4Rh*^dNVBo}stG6h$1^_xpwSrf zxge)c15K~lor)l46@E;f%(p+3$s6X*MXBU3dHhBQC9%=9ikMi3?V(J1(x*5$?UnRB zybvR}>{y(k)?a^mY$aVa=q=+f8$lYQn^V(?EJ--c$NKMmEVAn!hRb(yiVQt`FVgxv z!Oed4tCE`d$_Z;Rs%r3mr!yo6&}HlOxs&?U`|Rq%LRIS9>wk((+Slu=jQ=CkCmQ8) zKGelhc6ecOk3%GEh8~T7nPK1k^GwEl75My+gN*X-6wp z#3xU`h&TOLFM2d^9Isv~j{zyQ*cq}e(V}5Y`yqz^hVc~$ZIHU0t}yLh1cSW~Lr3>R zySs&mKG3y0WB@ZAh+zWWfd<@C^C~euzLn+IZ`DNYCEZU!-+VguJES^$0<7zYXr#g2 ze=uDza!f4^QqT{%e|_A)zr;j)Uet8fldog8#F2yLym49AJ4=apuuZI2ik_Uk`ucmS z$|k0V<-ml45G<%4F26Y0iYo)~P0ZZF>bx3hS~;6SB^gST?obbSmFJpML@`H-F|An(Xh*?ER%E=hv-4XuLFx#%Mky(& zXAqDduOc&Xv70ie(75n|h9=iPYv!1p0ykcL=!Cn!(ylIb%LDua9i8i)GUDLxUvvSH z)WL7xPJsR-o;zO|v|OUPfOF60g8#oHhxJOxA)*o-+6@O6p7Nm4kalZ&BXc-z!C zY83Fc#876(sPRv)e#6?qYRZW}m6TD5zM`u4#;pCjbw<3)CF1?Y^sxQ6D@gjK)e!04 zw*)?+yJw5T3ca_VUGC-#2_hmLw+b@nh#tUfml*v!D+7*Ef%(8xofDDho4=3~m${4H#4l^6_pd?{E~gp7(iN=CqS zKuVFtm>^-l>*Px=P?m-jyy&#@+$yp+FcO%9+5I;YXOUD!>$OI+b<}e7437NxarCB2Z!1HuVCr;B#dUYXW+_`F zT$#S%Oei8Z>UI6^X`cziQCY-?caOmK!2G?n=?M+1Ho<_(?Bech;_2R9BKeTdDdE%o zv6mQ+#LVE2obYIoJa%4z*s%FNX7T?kp%b&RBr^nr+oi0luy z_D`4gMlIfA{gn%i?yZj(Wvwg0G-(4eRWtfJI$t)EEi!yAX9U0*D^v1j?*O<=^=jsT zP{|NxVMU|<4aJdZFaEI*Jc8w5o2)Ib_%YUE!Hz-=VT++>3?*W|bNZS%$`5C~%jwh< zZ+z1LhayVIUMQ847V0eM7{TE)I!nCud(9@439pc2It6g{yMStjjko?6ec1aRa=5V> z#(!ndsJR1;(GmE(XjPh%UMYiE5c~|e~Z{O_1 z9N#ZpM*w`%t!Jy9Vd|l(z;4`z(+vMq;Y8;3H+o>%A4`%Q84ujQ1Au)G!>Sq1q^Lv~ zG9uzxQWn9Uv1HcFvzeDJn%$MaWiYqO^B`4z4375Ax7H=erBjFm{;z|pO*BOoQPPbQ z)=L+&jfbs!ZnZrMh=lHgO)xA}_j~l$#5=+lqLNxg4MY9qxKm{zdT;PQ8!Wt09o(O; za|hFU(p`6K){2s`u<~3@Cb=l6ub7P&8U@qM z$oED4{T%jR9#SoY=%ig=9@NNe2#iZejnDmdg6kSgf3ZdI0ik~yev#QW*JR^q!ah2l zu4^^YrT%ewc}kZ%anfrIudbuklcmi0+aDGdCH?rUwfOLdc#dE#T$e~AUMXcTvS!(9 zBj(%pF-s~GF`m=jZ|Ne74tuAkeUs*?zZy-uT?%NCjv^mDRLu(d7I2R75eggd6TcU_ zn8=z>Bwnv%On?Obw$BNJm7v)*kVALvGBG?n*k1@u*JS~_79D-SDu!3gejsP6Kkfyd ztm2=I@X|8Vh>A)0S1lc3PI)6+8Eli{4%3SjHHFrIXZX;p+Jo2WQhI+zS}b>o{u}76 zrfg-;qP_MSX+x81ioeL%w@FY+NwQpCkl;0MUt6s%fW6uFet;r-1R9rtyi z`Q*lhoroAs-xe~>H5x#b_X{{UEI;k4NIr;?z$4mn6fgJOW$k`5Sw2_McpBo>=lU-+ z6a`oF7pJyv>GvGoStyJF8Ldn0^_mE0Zc0{m$3vFrwuJ&+Eo19#OygD0oBzeDkJc+Zi{a?En&0eM@`K5{;nBZ2`GZ~Q~CJ2~L*pno%lhM4d-;Zrg!=%dn_;eG_1J6c$Ea)iwz1|=h!=e0+_o}PPsDYesi zm0-BY_q%m3^Pvj3yap+8prCddb>9;us`=(>|Gm&+Y3aE-!PCy`-T&o^mae-*9uHa{ z>ZH$-hwuNXKE&5tcKhykw~W6q)T)Ldf!L0u=eNv~#^-tY?Ex%qHV&sm_yLm&IR0JM zrd-&yiNw9u=KbNq{o*u9lYD!(x?{h;w7=9{)}-0fQ+<8vz=(MykkwuV+pkIBB`o_l7)Fkt*VEsAchm_Y!r-!22S0INcDIQkUtP8}Ji# zt;GT(DiSkL%c6W@pu4N-S5KiK5o_{GDMOyP;1_P@AV`Z@+V!WG<&`2&?dRY6wSPtV ztP82frtPb3khrM(yKr?H;y(h8k;+xyMx9S)G<#BX^9`Pvb!AZOOg1nYxi%CDCvog3 ztmoH0chRfI&(5)lDH@!35APklwE^a>NIiH9K&0Zvi+z#o5mcm|> zzIpL|xlst!NWPGU`~tKYWv2Zsa2Bb5IXwJK`zO_-++63j6y^Em0?+h2YB=lcL=v7E z>w?{V%UmTf1Qj0zQH`60R^I*z#R0`3t|B5D!e3rZl=IAgZ-8M=X<7VAlNP8h!r?~? zfcys`_oK`#!#xb3hnDY)+(6pYvaf^ACE_VFBWMVPKEE~8>x(rxy?YsbOnnT+jMuRt ziwH@nWHh{YWBzAAcYy!ykjmqQ)XFZ0pHN++Nag6hMY=0JU;K`5#8s8Bb4aBjEQdL(0OksT&k<;!-e zwKg!C->>#JILsW&T2ppp&=dW?%dexb0>=99loY?c1ZQn(;kKGICD_H|>kJV5)UYmC zyYD&;n1EbR3TG%9Go@2bAb3?sajSupj03!^QdknQVyUS{ zerFqwveP8^Rp+j}CblWaDP8@zG4_K8MjG-D;U>Kc;n}Isng{q0w`F^O3OK>iU)mmD89)TYIW%v;JiSq0+GolHk_R4g+f4 z@t0GQkcu)nZ@lEKf8;98pEK{_y{(l*VkJfV&pohr3EQ_crH$9iRekVb691$r@0dAe zVR4z2_lzjWHYVfvpQIQu=L!7AC0jR+X(%@eN`rm4^2D|!7J&9p*}m_f3OOV8o1OO- z-OR|XYQ6==y&nz)O#I>CZ>bJEefFCn<3Ad?$Y$wtHv){G^2Z(N=(g-d^17AS)AeGH z?%;dON@+(axwc~dAttoW{+(tCc15eT0^A})m7L1sFeEA(+pt4KmF3+cQDU^EP9PfO zeYi@}_w1ty;9Fuc%IGB;J55oB?><7+`vUK|jAHfAUs|x>ilmovSwyJCChOp=_}kme z*Dha2kCDNf96U4oEQ>sKdik!hF5OSMqgr>2ouQJ3PAa*=DQ-FY{eNdWP`fo`A_fR`w!ou7}ZMumsp-AGJG^0~@tq$;0Y z9s2+!%B3IjlN8yJ__?8DoID!)7#X8K*_@c=8Qeb{^@Pn|`8@yZ*TFjik5W|u{i}|& zQQ?uORncRWX6DFvHR@urfS!bjTdZ&hc~1_<;S7(;0OCQ@Ea8{(}5%2e0V-wo4kDlAdwt z?YsGJw_So2I1jm$z8tw(3-k2gim){?Ku*IuFoR1+550)F&_tc;Fe;auMk)ZowgFk9 zraglrYhiGcZEI&o{e;&N6ldCJUITB{O@8>irw;{?Y0{= zG2c27`-@~pf-UcL!`RRQt>LYF`pzuxgO^m!F5`PfjIVj4tD6A@-`f~OYkKH-DP`(2 zf}R8A^Mj8l#X~%jom1iVp~d_X%_88C$74Uq6fohv`Au*qkM)T!sJke7zVM2EeZMzQokk70pi|_6 zz&W@L^oPP?zRdtQYuBFtmQwk68E&bC_Wr=D*Y#EyUSbc(FhklZFQm#eaKIZMDmmJ~ z<~?j`D*@i<_jqAjbw5jK8qaDMsw9^83qtaKx#}T;12qrwqqxHdmBY0=o=!&z7ryKb zc75pVeNHTWIZd*qVuYXD_xN?H^PrZ$cgR4b8R_=WH4AKRQ>y{6cRqj?Bxrk5Pc+3$v)w!M}z+^ct7#jP^_DfNw^DC2rgg4q~5ayIarSx1NJOA5h|cx*vW5 zOEIpa08ots;a@v04GX1lSW94PY^5Wl^IJj`Oy@KldDX>*8-l~f51i#Iz_Ci@>?6I#ZFDh32HyJ&TW z!jgLn=t83Ap9ikik9U_)CR5Xe-QV8>1!uuETi>!s6-?Np4V%?L8JtW}iKlc@q3RPN zm(Jp?ihM^Rgn;>c*=w=wP9->%Plf$0_R3w$9Ic(5UBla}lq0y&T;bHa!kXQI^A^K8 z0V&;9r;}BU!8&G2Db4jQ9{tc9_2*Z$wJ9PCV8c@V4YGeK{q>_uYFH1)L?H=a(i?V0 z%aTy&?>7=4=G{++dlQy<7p4_9PP)5cy`1zO*>||GK{9MuJXzQ^`!QdYho@|-@JD)z zzTr$bNjhR-Ul4`wRg&WEpqr`!O0;p#tq#}lckq*;)mOu*#|FOmJdn>lGT367$6rkb zjeU=%{LQO?hTz3E=2GnSgJT1XVLEIKp%E4(s9ZHew5Yw5g0njPp==n8er9sUML7OA z{-e}*P@L)5V}0Ch&Q#^>z;3o)OGJcFS9z_UvH!FVwD$A-D&&tf0`v0uEOj|g0r?Go z2;`LsX*Mv3`2y{I6QtZN4LCd60D35AAQ5xm zaVQayywOTh2lSUlp~-*W8C78eRdQAv>Yuk$S7Edxe!+*HrTyEH?V3&tRg<&WoVw|S zf6iderU_a_C{WZ^jdkFs_-j{(sn4`m#f8kxZlz&t_&*g86Ob@w6yw1cde%SPzHS`S zk;oL+^l3~gfqKLTGZs>+uUXu-#bvvnnB!T8xNoxG35f7AA{O9HO=IlUnp(K3(R{(- zGFxQ+X#$p*!+V+NjPdK|*D;im3{vb*i_)Gu{Ws}^a`-)71(-kvMq-(_+dc!8Jf2Js zb&vy87s51RbxJvv&HzQU>0HXyJMEmZJ}#RkX(a~YyOg3pxm=)mJWvr>1&$&lS4~Uz zeE>cs$So>SU{HfrjWQD@#|y>sa#!{c)=p}*-fsbyUoYrOR3mAG(f^zNl*Q(6Ide&O zEXbP$u`PvV0l%peneqsFPnBZZj5nEb8igEE9oLSV%g%M1FDd2d4ZCQ9h_;3^pZ=G# zns@A`ds@%DC+W6zt$&|C?s2^m^1lJAfyVnT^DLmY@6tMQ($miFkRCTt=$GQafeJ>F+q2vesreJpx9&V1O# zdKy1^+SfC@t95T>S2K`_7(i9TRS!PPfyzapnhBCXd387xDRT|@dd$F4oG+k8%X5sH z0Qghhb9Q$ap79#okOW^2e!ozNp@8653>9~c;%cDVu>5d^l2m*0(Ij`qv&@O&o0)39 ziziw4+RDAiX!%{-g^G?u9k%e>>oR*s#(@&wPvkB{Gnm2{Yh_1~R2ADgX~*?fT)^W8 zo0JHN27AMpWl3p!hEhG?E_Pu1DhTEX2S^*ct+C${d8DSMPay5Xqm*m(QbVH)J~%$A zPnmfod=?F=RYgPCHZBZR+WaVJl=$>3TCCWSuqL>+?j%ik)*%6>qgG`2!oZ54XPVc zc^~^s^7^F+IT|dUjJHkFC` zH^Kfy$vsd;Jzh?<+Oey^+Mm3C2w^S8kV~m}wl-7@@{#>TA;-NzueuknnR;(!0=1yG zp&3LiA^sLQiZFk;1*%|G5=G&{0j64~-_m<0#KSzPg0B4RzuW8H_rN=XBbwCYYMDMA z!d^95P5}WzpPjT7Dgo^xO-SgP4*P~R%Ny^u?d@Mhbue=%zIQ_v-qYA!uWuKDo5mh|%G(`d&UW6RV=^cyrUx zlDFlPuR6l|i^f03#gUknFykRVqcyvoW$ z&v^AO4VW4!qYh(IH=1mwO?2n?G(l!JZk<5sWFPX0tv&)6S;& z-zyY|sDK(Ndg%5(wIcR&e6-n2zU^IpOClN6px4CY@UJno<2GquR`;gpTC9ABeSNK- z9Z&$zsA&n?pwjQQtc0$ySz|14ApZCg-A+c>nI2a4j#Jqu#9;bSGvgK2&smX3ZZ|Iv zfnUH$jI$}((c|7$X=>Et^>D^3&2I0XAC06h(CnKZu?!opY%9dwex7xb^yg2RcCzX6 z8XF~pzq>SoO9RDlaw=kUv47(-_oNK{l^+3+`?W%Xwd*vqu)Dj9e4kXRUmwft2(~#n zt@jLyEa88Bz$T2JNi+KC#l!egi9debm6}i;Gc`2=h6EjM;1mv8S*I)oQF=Dgz%k6l zGF-i2JzR24)UIyM4hd!f1q1{{i9FosElUPLq^|Q8=ItNd6%5LFKDK5Jw4+p@3kx%r z=f;h(oE&+jj7E`T6oBXwk%#*Go{t?p2xH3qCs!M|)OdVjg!G!SKt7UD;{FG{MSl^? zFoKT#JRCEC)dgN+tPNawkV1||wu01F^Ls6p9p%#wv>+c4fa5b)*Gr@WCqxNcsMx=l5)f6{t- z^|*wyb#ChS#h|Wdclq3DQZcMSLvtCe|IyIxB>dDW6^x>#l6GG?B?RFREzZN)Z?;dA;|Bvb`6X18i}+eQ)V@1PzGk26;3e%#t;4I>Q`2Y=Dg(E)f?v#{^6V z*V;l=iYCy6C^XY^X?W-`S<3nJ&u-OTNt1%-&B?nVo6-&G%Q~Q3uoiJrf!x{K)QbRP zIw7q277{a^2_;<`%Dc=s9O}~zSKcB4^mi5XAio$CeQdRXE6^lZWc08LCNQ5)q#wIM zZ{VIj_pZFBM;jnlF&P;Zwe+y7jdlheub(_iE(zn9`CpSS0&CD`;Zo_17I`ARHHD(_9k=}auB|OM2Q^L}eV{aaa%fhzYT{EzW*PU zsX$D?4sbIrdm|sN6~OkM3R6>W9XmalZq0ODfP#mIj{!%aea)09J?CnpOmf7w?(xd# z+NiA6jy!@ZShVy!e9MYTx=VzwI?9K+N}OCmIP#c zXSA`kA@fj=3^=JMC)E-b5h)Fv`S*8dq)fY;!$gC+Ad0`w8PDQsS-)r^Iep1Co3Ye} ze6~`5TByyf@qFJH>gVH2H5$P%J!v}?qNQW!1M-&=OQToX z>h0=y0=F+bhvvkT#&ddHvrB65!ymi@f}+u`Eag74=RvcbbDi|K_uwVZgERQa!xj7( zPN!t^4J12J624H18vvb}n))W4I$`oQ|J}~|C9YFd*1rljGs4!R6l|NteTfoVUY^2G zuI|Ste9odr>S$j`{URl`7SO=XcGeRVpIJ?g&tv~@-8fgh-bPHhkwsPGy~#7l;ec9k z{FB4v`l^4Ws#Bv$@FEqSIc3dEm(qAXw}L4W_1l49D3=o`xIHHplHnQ7XsZ0rTR{46 zlGyYHd@ARQ@B6R&Ndjr4X>qY~D1O1u>TkjxLhFwM1jaPP^n&WX!w2TMj}TGuAXe|z2;~ZkAtOe;-omoXhFVd3m*R49Ywp+x%c(DnFkPEeE_MkfWX@n2I2Lrkg{tL&$qZib&$ zfa_&?smIQ;=FOg#hY-6MReJj5AJ=X4k4sntM^g7G4^vBDpxm)44J?xK3XrRt>8)N= zJ=+;nMo(sZG*p;;|F2>kR3kAn4|7w&Y>l@jC1xFKLiOdbw9B3vIikb&yxYZ!sjTTb zo}?O#(g?tH%Yx&PK)e~_qv=1DDu|Gt=b_CfWw*QR*+;A7T1_R=?4$02!9>>xkER#Z zA4aV{Wfz-GL^OZ;r{Ue;>OK=!KDNS{us7(kg>R>ytzy|9>lV&mW#^7J{HZ9!S4mZ~ zoWQLrolGm}#imtl_GC=`)B&jtR{#mrY3fr?1x+MyAmDuWabVuM2K?&Free`5ZzT%G zTRMbc6JF2rPFwxvyZ@j~?>-58bMjdPZDC9FuoEvb53oVKll<-9kR;HEl27&LVV6qJ z|(+JnZni}r0_eVw_fp8b0hPg#pHP* z)cS_NsF4fZtHd%bg7z_9XfA}e4V#mgX!*uP3Sw*wG9eK2TuTb5C(4UMOA5E+z){U} zY`6S#j4}}u-9)zo$vmMqWo$7^W(6fEGI;;m|1q&uK_mQ)5)CbNG~Xi|v~kd+qceCp z)%5pmzHC6_Q5axIDOnra+_^(IOL9^6yf#q4o?ha%Y-}Ic=F1^Q<*WnXYtD@ z&b`$F4ysH^O_X7B4$PIb5*0T8AvPAj-$aa2;>CZux61gQ%nCMYmd_@`EU|i_T6^MD zF>1qw<%*g_tBRU0g(GQ@4V*Xr_19?@1Dl5iUXS z?{Tm1xd3-ne8?TZ`H~MKZWHqVi zNPaQU(-eJ(xBliQCc}`6}#g4nWuhWNZm>_1v%vb~>~; z&zsFxtmXP4c5~mcCx3v126L5k@u!H87Y8m48Kjf5PW6KP>h`q_3x@m>5==g2Z1M3e zM_3v3Fsd&ZQK3pa34b_n>8>-5-Vc)u$&C5LVJIB#c>|2U=UsV^Fy$r&=96Y!0-ku> zG4Xee91j20Urs92lTsnjQE@(@GCpUPRK;b01a%-#bIoc$2O68k3-#e50#R_(bJ&^r z^Q=B;-kviVVP)M&dELQN4pR+RdG*=dM#vhzzs!>rus;sHQ<~=?d|pY$*fA+YuAFRiuFoqtJzWTdk8IjOJEt`^z|!p3&M(Ewoj(tM zxpuans~Y1ol9&{AL(UBrJ7(H1Ha@fRy$0l`aQ0=Vg3nn)A z@u7owOB-*3RSBu~EgqscRh%DTn*R@1FVO-FM26nx30Mq?>YA5afXP5wX|K!gAXF=|*3g%pk{i;#KF}R!Nn<6TFxD+WVTkcW21DJ_1 zAlP_aqh`rmrUYrp;l#xg*omQ41BT+Q+58(Gl{{be(Yc7x8KCuP!>HS`8k@Fi9wS?C zOhx-$*hb;ZjGv7CnFC2>WXRM2*j_s65UQ-Nv zU$md8ndQNYzy*_``>2EM(M8DPdM-ez#3xj-g)n-&Jt4{OGiy4F)RuY}LF3RKYF#<7 z*Zb|1X5(dxb7fT5QeW}%J~sQA#?4jh)h(8&r@n+CnO$nIW#ah#BJE3U+w8tI`=V|wyMVu z>hHJkXMj79+H{Q5`6*t`(v%Vdx1IbOvyEOpIu50bAm(6w(GZ;-u;UctF)i&}-*9w? zML;_OH){H#hKT4=lfDHo$a{fmuvtj+=q1W0u{vwjuXJ=>j9{qY_f^;-A z5)R94&qU^rdzhjuOC-`&az}q(F10zGoc3M+-R{x?y(7(l*oNrNtM?gw@$o-?A}0C> zO3Y|O((NwKi zgb9fwvZ{JV`{?Qpn%9QzR5E~}s~o3#x2vMVnR$I99i3S*X%FM4#Zh=2yew1Fr&gnI zQ}^)Z`L{TL^FosF8>6fVQDpdJ-ulVO>1xhYgtPRyX=-H!buj}Yx-s5g%u~5kP62=3 z=RRnGZ%w9A-$O^b*b)%D0p5s`^LrQ(HbZ!YM+Q|KL&b6nH6G*h92tfnc}Og3-sjra z->lhV(MI1OaZSS+ZL2HYvXH%#?) zI0b#Sv25Z_otfdZp~h`8!rgRe5K(sK?%0X}@*YZ4qVQ2;HGx;T5q!EC#2lDfFtYkC z+*}!eqnA3O%ed7Mr;8E~>g{M(@z7JHJ>B$yjLcvHt6}?3p76$+EX6Fno6=>Ekvuke%e+K?5wd zp}|XN4j-+BQ{U_|;EyFqKdwnXYCr879n4g1fwPWvdS`^#Pt$@S|u>Ic8zPXhCnin?Nr=*{v@J<9tO2Ees~tVF!aXKY?7tuE8q z%}V%UUcS9QFTbjNIGB^R0PbjI+l)cACm^$oV0DCbZRuX~&S~OlUgq z{NF%jSQ{|?dMv%L`KAZtFut%lThCbNGyG?F#qVO{_zr*D?eB9U85dE{A61yUQ;hLc zg6B->cTT(RI}l>pm<3*5#tM%1b3#1KyS>&$GzQAEH-NX`k2!{vJ>V@5K~o=gvUyo| zpe9=gslvLKLIipXZ^QEhG{#teMi1`8Vsnp~xOBmSkc}qZmMssqAI0bQcG)y$_~`Mn zN$exkvPHOI2`W?8$4!+oQ8JbhS}ZXzC{!_zFkWvcfg6|QJ&EQ@0&75QvCL40-M@V6 z1cS5KhpsX6MMFI0USQX}3=sf*6_U$OY47HoU4&5zheJ18#m@gIf#lKb_9dyB7&TlM%(nk2Aqu=MmGeSBH> zG(*wivN^wD(C7w!R1PB>?cVBn>{qZpc4t0*lfM5Nb-2_x45S(L;JR)vuf*kNa$w}@ zR=Rbpys7#)b>W$Ak?9eS{@T6a>UOGCoYSCC^@se1R-In6ieD{bM~Qg~%f@$gKlwoI zx<)x7;;(PX_p^lX|Dcgm_KoerA3H--Ct3TdOdoy9S{i8$>b>i8QS_ufmW4Qur6f}> z)Hwg7y|&R9wFM%t&FK=3nf(TwgbWFli9`OHngj*%z9La4W%gW%?-e0WsFvMTff7+Mv{MYSZy?V?|J6xXwQ+`m1nv{?B^7qH z0Kyio7XH`W$epy{;T9CDlE3EiF@g^OCpZJqce5EkekjKN9gH~G=`$K%8Ne1_u*+X? zyBJfi{|BCNXfE2~xJ6J9r;>v%0?%zU0qu2L@s=?D8Q?G}yFf88&;(iJ2xQ=1O;TYh)9m3BR@uBZ9O_@NM^qsBUS z$usw=2iJ3jdR@_iZ}gXhuU(PbWHmh$+Y?1!tgAW{FS1-L?Q#q+3xSKiwc#`xDw@=S zyAZeV>$nSPDbJhX40x-B_D+QRVR+s1fy#xoRsA;z7G*msu5uG|OnEscabt+env0CA zBi$zush|)z{Ykj0b1`>1MCG_&+Og*I)-}GH7QW_7Ek3H!59j@<(oa73X3y$I_J3s9 z)xzx<>vcAic0Bl%st&GVIKKO;dM14JU!L883y{E|{mTph_UGLHye59Vrlu~bt$i*$ z-Bg(YF3(6tq8#^$&d}xOSzF%Ap^s>b1t;Ed`M9{J7= zRM1(afVdIh<`yk8IfeRRW9hb)gQQV7DauInae8cQ+}`sn4O}4=q+jg*yKxS?YFSwp zh{^;zI!%u}j#N<-UNMb(mG*-=!AE*7BcLOO$7f~yj^H3)y{1RAsG_#k$?m3a_l?nm zT!EzTdfVYcNR*ACcR`>$};*bo7~=nuW+Wce{FeC2jcz zXDpq4acXMoygJ3)1`X@HdfY?a`=<1I`ug`lM%O`8V6H0CZ)2AsbURi_ijw=Pb}~{` zSy?1?nEGtT=|p@| zMYh=a3{jt*<&64{I|9x$Dfh#jHIlQcwMMr-m}NKv#P)7ajR^g%8WDp4j9m#A1**u~ z82=w?+kZ#TGNMQVWG6+|?M46AOB~pJjRv+nO0+;&y()-o@gsb}dp6Hu@O}F=gYr1o zSvUy7??8KLzDjz-my;Z{XGYCb#3889=ctT)N<(K9IA}$C8T=3ci60>|j%EhCt%5?g zk?Ymp-P19h#&K&_E1uRgp4+UH!4jkUJK*W)F+H>O=$XATyhNS7p}clfS-^Av;H5G# z|38k-GOCKUjlzeJPC+=7q|zzf0)n(4(gM=mT|)~I}rhQkgee~0cWTIcg zr#xs+0NZNQ7HJU}D#m7pQG?TWSKXm-mbInqn_u%3`eEsXDCQ z2@=st(`5Un^8?aZbki3&`fc}(w`AEj^GJx7R(dYI1m=w`!z?q2{o^ysZlmw$qe~Tf zMamq4v?#4w+$Swl z1y<1hCv{*I_ORW&rA{FK?_DX1AY*FX<$p zN+IF4|Mf){4dJH>$#l*e4k9@cqhLI$PiSE4VDL%A7YK_8$#ueK_jZ3QT3ou%x^*Mx zBGd)P9-FG@p}|xu*S}*OGN|Gvv@HrFQGmC##@4nGq@LP2v~EHv%`yA$TYIFEa^&~|llQiDAfYeG#ABJ>u~8%zPh-C=6!AS*B@YoY`pYD7*m%#* zqTy&BUaZFHN5US&OWF#dlw9AU!M_x?&a)=Y%sV+JH00yy_x`U^S*b~EQu;8s82}Rh z!WWE=ncDAh4#gjd5cq}M;sVCKZ%cxU*{lgywK!D2l@JE025`z&%*Zzi&U|BhDYZ}0 z0?4GcL#;YF5+peM#Sta43k_J%I`U3LhW*-6-oqkc;M1i;Gp$bWx^?}_)6GU*y)bZz zN=wDLU+N4^AR_6Y;qPL^TxBTC17@szuRdol?QQAd<$jA9+HmNwuF{S|{$*J*Z(f3^ zP)2kqxG%kF0H;U7?I-=fK+>*x7^ICJEN)6wnN%Qk70J_QzxFT}xp}#p`A+VYG$Zw! zYL_u0h(W%8Xc;w;G=Pfzm$+tfF~j){eXjz=@>}86P9R>H?1&r`QwVtWfIy?Ll)1u) zg?H)4ruETF^YfkuRlUpi%h!!UeXmS(?;Lw6+#aUw9;cO`FO;JrBU^HaD#4Bl)sl-I zzE*q`))r##`qJ;<{k<=8>@nK*H1iBLsXy+pKXkHt-@i;N&ejr1J1! z_i(lto4Fs!!!qcaCby;|EupO0pOl(l+LeT@^D^K*87sBSL|&C?-BD(Spt_v}0zq%_ z^OJjz+&-Ey8Or^R>>%q@%PDp~AlJlcuy(1>SeyWEZb92R;U~)h(7MERA0lhaG){lY z`*Wskm1jD*IniL&#P^zEyc(Wt#fByIGia>f5HOC+X0ktY}Ma*zvsky2H>eJPJk7s*RV}-Ig_P zq_ew+uiF@6a(s-M1h`$Mr6dKksDqeoaP@_|>sqO3SE5W7o~CSRgOGy5iIrE^>g<4| zREnU8V99AD9s7BeA)hbo8ak-bG{%G0cz=ot%|b<}=yVWpBELXHB~m>wZF>H`*g<@Q zHe`+PH36?38O`7YM8f&y1m4A0$i_n<#Qal6UdQW5-O*8-bYSVW9_7bj#rdodr%F<_ zm&xwgK;v)agkMk7{p&P%(4fM_&mqDF2(^_SX&X*LuE<$!%huP;3b0E_1De0T_HMfy zkM6Tx4YBwOQ)6ymF4;n+C7a`Va;jC>YXt6me`2%lbI0JLh*D!<{+alb(N14+kodmfqy3GaT&rrb=>F456;k((-$?W=9-nfvW;^I*~cOn2X!^hVK%y`o)S<?z;df-0%=|aUNx2{NZH5CdkPs>>RTtK~VpVwGNT)g@! zSD(v*24z_-(Ca(cOWTo@@#6(YaRW}N%1&^ktJgQ4FQuo7_rV6Zm zgH`ciSA~Ey%tofP<3O#YX)eLSt(9frLr89=lmYxgm=HPO5iefz+7M~t8nJDOwI+8_ zJ4wQ`Rh3ucMXs^9tZznP`Y_Hu%gHYizXS>X**d&XFq}BS?Q)n3A}T>&6)1RvxC2Xg zh)6S7N6cTY##E+m1s>EufWa*I1-D9uDgTFICmI+qrP`VcwYmB9D0V@~E z$4FZpTD(4%(U{*S!k>3Wfh!o_qW%7%+agkkir*x$5JZ^l#su31_FJ?YTCw)i%|9^Y#`VtY!!Y4^9^#gdX!{SB{8~-oC46 zNwtv7Ab3fp!af(KIhcM+FF=C|c(jqMHAP5rj)@*D`8VVxi6ST z0iknP+`sJUrDut^Uv!eDV@UX=#?;QuBO)Rycy(##{aCwT`&CcRap432fpSudaHm$i zii+PXy%u&hHf2?FP?D19s3??g426UX89lSw%eBV1O`a#-8Ct;TZ1D>A2KRjqQ9kSM z-?o{8E)L(my^&We6|3y^X{x`-dhd( zQA&2W(Vj)}SF7mqpJ_$rD`d;#5%gcv$`!Rr`s2kjhB`m_>xLD4F0H}#7|p^15w|Nu z*(xi~UPF94i$g>_zYlmt6+JaR^+<0*p303)O}Bc;?CA1#cT2AtmEc@a>q^D2#>U3x zX0UT5Q~8(b0C0L3Kt)Bv2ohdh);e$X*!6UD7Qns|kiZ#7M?yi7nVnrXedQ@a+_P|a z1$HMiTFrPDswUkS)tidU+X1-&bxW@4NFEQ@ zry4;0D<-V2l9K+(;!y>KC@^tj7L^^ESE(C*CIOIGxkW_2m1kbvyOH>rcM^y<&hSMS z=KK(jMS~EhMFksEKuKkxbsqweSeKSIK{Y?wF5^sv^z|+9*IfOK^eylZW-YB!K5=obihiN2%+=|9gztIPX%zIe zY``k+TCaDO@4}35m6a5fhx;(ih*#{NS%EvV-qzFE36VO*cqYyF(8TY>n`fJYY$Y+O z<>lqRSFr4*2B&S@$1z+1B@VmKTFyFOi}Q5|gRQn2;4aRFd2_aaK)C6d_r$ycAa{7L zjaJ5^Egu@9k7E9ijxBA<!QzKQCo7nk7O27Id>KzzBt_ynKC4EOsYue`t-A zNk1HfeFg_6Cqg-H)6;*Ji?RiDgH$S{tYf)ysj_43deagBxQ`nW$MOpz@hT=#X9z92 zK5leAQ#kK5jO`Y}IXsn-6R!r;+)D;9j98Fp11lMj?~R4Ob)aId>&;^OWa$QziKb& z3V7d4@h!S<49%IbW%^8SXw$~1BA{$Kx_DdXiE?R|&P?!^PVWV5{Bhbod<9HwfU}4Jn1~i7 z$&%%77F|IN%95ecQDr6N-z*gZJ0#S3&P14KLktV9)?xR&Mkj z0EoD`4V*_Qo}%L=ey+3WK-R-CR&(3Nnz)VR9R;NRVJcX7M%bxL2x?8HrdN|*rc^xn z!>F`|x%4GI1ojFGW6VKg>}vQpV<=VJ_#iz;r%(Z?Ba@W9Y2CgR&Et@!B}JuoIK-Pt zLG?TAoD}|K>QpAGOamb;49gK#WlB&*uc}Ofvx^|&1-zlMlCF#^pj+d}g_NrXw#Ok? z2eXU#+|7M?k%#PI>QkMBAk~4UZla}EAg7bb`>y8hRL`#3736M)wM&zUBbP#0xd?w5 ztOWulC{|^r`RJb@jRYM5ETovwPwouA?5}28A^veO-zQ3T%sGM<`GTsG?$w1Af}(|Q zE}e+kQ46`ySI%RxnbTt+W5i|7M?dtg!tlzov#JK`SI60+ZA0#)r zbAB6wHvD#T_?2+>dnjgPPfsBx=A@9@PhmiYx*gh;#EQunS;b8#L1&hG`ZXIt$|wRR zY0pAa%y<6}ZhCKjrdzk{x!<&WS)MNw?Ylus>44^zT)*hKU-m&o_#ru;o9Nl%4N+Iw%;mJeCk=BbfTGldaqU{3EhHARbF-E=)yJYTOgJYTxGH5z@0)ppf0k9uOB!x5sfo{LGC zh;LAlT17A6k){6qVOlqOPZb5YIer@Z?0#_5&-d6Z6t(E#Ue=&`8IXXWQu(1)NmW~p zk;mLLYLXib2{R|s^~NB%lgI;jD?*=T5Ly5+Mjkz{;k4F-RKbV5J@R!Jz24=kh|ra^ zr?Zy1)F?YPE4>LGM|`lN8j(##o|&OX#H8+FIoy0$K=m3qiPz_3Eg{M;Uz zek-kltPwVBvnJ@?6P&KCt-*lWYt7A%OY{BC!biZ59bwqZQYSx4k=jiJm^rE zP+qw|@7UEn^XMFmOI!*z|DzKuxaIQ4$oTrx&2wP7JumvwV$C34;I%W#=!pBhcb1Xn z_9J4UC4(RlVa15Yik|`uomzOP5E{RTL*##0;^+qmTg;Hsb~2?X6me=(EQo^N>q-;@ zapOY-PUPNHD{~yA6oiq?`$qv3aYPOrPuxBq!Jj(`?DrfGK7;A3Vp8& ztiLxpciK*3K;!co#vnA29;1VZSV`g^Q8if188iL*D}(l1E&%~2K-+_m3WuA}V(V6$ z3szPAHYf#}+*-pc&;Wr61^pg~l}j^VO+%NyE^?sXE>faZEXwgLd7VgODkPoQo`xi2 zd){`@?|v(1;>`sxVI21tziv2P&8%p8<~bbMsuxpdGQa#cVd(O&? zPR~3`t8#zX=6BY>)GLOh4j0KqnppC<(DkkUNErW)=f6biu#PXl>%8^}U)M#d<{Z&g zv|^x2rojWmxvX%m__2nq_0@AG{ABJ6O`-TKu_XSn>5BcYW&pgsB%nhlQ* zCXq1R1+q*o*RSz?^te`HLZ&(*pHUq>?WYTRv0A5@^4)$56!ed1MCfxgeyhG!$f>dK zfhJ3=!1oY(K5e$-uO4|zwq9A=X*o(v!lUQlR;@hr$Ca&rN?O_-?(>=$;fFO32}ZA# z$nVP@*JUuF-Z=@_I4OZA_l2j{wESPwCK$e%My+6^UTw`(OMOG4rDP`(FW7+tc+Pxv z18cq!#T#^8b!D$VC_R~5TMxY&T%;obm~5m~q@=(t*K=am60<1ucMKsi*I>l-3mU=? zN3vokB4VMIvct0h$QvHG95NXEqhC}wG$HBqbGPUJxndqwgF`cRUeWxLsB2ncV4@Io zHt_X5y4ZE1yv-K_(cLFYZcEgKDVdo94*$S2;V6ZuqkHdxLh+JfeEqmJVIyGf))d!= z8vu^9t?j=#r?iLTh<97YjF0(1Ov*jVRNQ;P!B%nc(XB0Xt z;&F90Hgy%~A<-M!F_~*B?60HZhB%#hk#L zNW;-C=F4N^V>A?|v?$iV(47;xPK&#|Z-hQ15M!O$l14E-#;>}1mjKi)I(o6W>DRgY zjIjXwPOK5;l-w%jgf4kXrrvD0*!6|soA#x3xMf3i%@iqf;zK+0KmN^~ey7MTugqzftLK)OMa%9SQEgA*X}KOBvac*7s5G?bWoKrB zq$CbV{SF8h2JLph;;%J5P#3=imr)AJ%4S-%RaLPjVB4c3iyn11=-JF?(AL!asa^{H z^O7y4&~!$6I>>An8M+!sWKL%LD$%`P(e{+2W9#4#{$1>1OcFdgPHXq}kZJq&I7Ec1 z5WZiTzpW5Kx@ijr{kk7wV;o&<4q5GyCD)3@q*hq3i{Cu_GGzy z+DmDeVxMn`btGIGRYmL7t$hEi@3kcC3z0a6m8_GPIf+4Sw*d6;v<2) z1k~#8MEw2qMW*lzs+R(d<-AGgEINpYG`$^7q}YeUd%Q@-ur52Vj^qTdTYI#HCYm zEk!eF8a?#;%A!vfk9N2HP0KfYZ2E#G;qDGDXjK|?_qlo5zV6uCMBS(&BGbZwuS6dvhBamcH$7*qi3#AAu$j99`s};h zY>(cu;|B}CcyZzMpm0;a#d%MKx_hxab$;hBSomI8QUdl>r>EZ8I1nKw1`eP&+sH=FaE5c0b9E*-}TI2$@RxcHkuUr5IYM`lDEU1_m$V?@jL zyo1UuYOa8RclWN#@9Ig(>}-0jUy-7N)O%jy#d1!^&W3$x`;IE!j!YVhOby}4Gt`1Q z*{+>M@{y;3u#AB@OiTD0!J+5WCBS<^k+l-9il#~m*0y*`ptRzudj9T5e1~}L&&v;$ z3@ZOo*VP-07p2L?@>bL8`fvg4zG2g?Up-S5;yADu*r<%;`z>70ekNS8WZUZ?EG7nk zr#PW)Q`A4J{!m7&JEtQ9@~mZ%f7<#Q{T?sjJXk0x|DE%L;YF}1|9}=ioRLRR`&H}8 z@@x(Bej$Uxf`t}F+4=L${j*2@xchqgGU?v|26337A+M^TUxvn@k<7C9arfeTl&)Vf zt1~K}_(2%M z4e%J5J|(e4PJDEX>v=sYyf7*`Zq)yc+*qfYyL!`1B#h`y+Dkx|a~t`kfbL?3Q14zi z{ZZvIWmD4_GMjh+a_{=}^3%!MzRp*dJ?G5NUKK6AC7&38$9-H%QTG}>GHT=U?W*_H z)ytRX9jtsSyz`oFv$wE7%wf~66lW6?lRV#g^%AQ0vy`B7w?MVG>WIy5c$7U`M5q{> z{Z+aV?HeS)BR7C8O9VHfjHQf%zrIb)FpvR>ElC}eh}+T_4sUCwj$~haWB*dJCBa9! z>2=&-U}^~Y>3kz7pk@y)l`ro5#}q_+6_vP?Yt(_AH|ad;pvBm> zASB8Tr?P=S?_QJFo>@lRBHlLp+I64Ic7zr&HIpm=z%J!jPz3T14n+)8B(Pvdg z!B_4*Tm>m0P!f`cHM_&*%Rll3>-?wy?rZX_D{Or$eRq&kGf#1bDthA2*Svc#VPoQQL{c$Y331R8bk!HsCE*gjCVHmTw(i-8Js3unRFg1q(6tC zD)t!rKbFKETf{s!nDu`rrRS-6p0wEMM-WBeww`&s^~a~7r$b7Wrcp(C&zuRER_!+# zgw8>QCA-HM{^>#&(hzEnDk6rc$ob0$p=fN-Z52ZFkzWE8n(h2?!+CWiy<8nu=tC8K zIylH~*?na!Ci1NPrEl?|y-UqBTw^%YrbJWfqDaCQ^eM)&JTn6 zKXY|o@>xs1ue{K~UZ{gLQ85p!gv{y_s#pMpu89R3+Ij7@?=o7H!`hDk{SF8zB!n)M zn+9RP4BMLkimD4S3e|`$%sH1*?8d`J2=aT`hbrgKTwUNp>z9I!Ml;rqO^T!NvMt0D z*T2aKmxmlNwDwTu;57*pJMa|GpBs<56$3foxt8`qvr3gaOt8UjwD30AwoOc%y~3K! zR4@uYgfPgh!6N6}3AF;=hzv=Lc(i}rL^WZrFy{Rv%cH@gtB-%c&gA)qe3b!}5bWkMC8&xlyVwo5?DI(=pfY zNnb~MWD@@hHvCzujsdm``HIEwydq0PE03$2Iz|!rXsDa@FCP-_9RYw={MPKaY z`ghdV+Xp^JcOESFTf!Yjm-sRT;Iq-55wPMc0hjGl0^qVm>~?28S|E{z^40U{4`7ZV zfjS~vZvH4`wnuiIH^iTQ=QhZcg5(q20-2_x*)}II#Q;{*8~6(rWrwBCgMl z6CXu0b75q{8~sP%j&H?&#cG?Fh{D`i&?(w`?SSGs@;>S$Nb-~UCHpkfi?)fdPSKxi zMtu+xq%tfn328b1<4vZ`Jt`bHXRxkE_aO88EPMH>ytkY8vzYPpBN_K=d`nKp6!ckw zPMqq}Mf1kcA9Qkee3Sy^jaElF`e-{_{nAyu)iu?v(4rkSl&CHzQB21Mj_}Tp+TTh! zJ0YYva&k7@F@{(q5^?ykFLgN#m`e|@s8UzuKKUn)IU&6T3cf+LKf^s+d_kRmf2M+u zG?EGp6fP&Y!8gF->@3I?xZ5Md2sVY0e2C3-63iU2e`hzIvt*65e-uO4-`DrCOg%k2 z``8(*+fGIm_1>Y4VxL z7Ow4oECW2=G@NheOO3EsBt8zPIYs0{q#%E_18EeE+o>Fk%hx3sw@nHJTM%SW$3K3E z*v&W=yXx!Gf9O=i6}ga1oM2e3t;#|WH^joGn(fjAh@>O>@ZLe%1#kn}5r6(MtWsk_ z@Z*^Pe^Q!{sPYzFvF2Upm+rQN-+_VAn=Z;HfWu5d&S$#{>3NUxiODU)w~69L!lGVl8VVu!P5D8*EPR8iXvbsQeKL!g}bcr%%d(80UN`gZ_o#hcC>HxQTle-mbgll%dA zv9@UEe|#xX`^W!eCv@*~+~p#Wcj`S8`SphgbKwNt&;&y`HiSP)UTVbkuXWn_$2UM2 zb-u!0ecr-h-9n~kgTg>aI|7aKy-0}rxngg^Kqo_5T3SZtlGo1Iw;2}%1w3SWrHp#d z%e}?L&M*SL?SRG32MK;CorNk3A*)3kr|D%B$c=)2W+AfCL^)9HIwmZvKg4O7JmfTp z$+bapG`5IiW&5q$RNGu%-#Yc0@CQkvMDEyOO<)GQ%k(Zhaw6(oT6frSQ-f|+GL9<} zDS&b7owl=?7`g9+X=HSXgnAtr$s;ma6(=UO;6nr9FgBpiN@{<*YV#Z(dcj=s{GFog zeF7E=K0YI@0BunWzfpiw2SQAYLoa^kS_FFUTGTdw6tgZKj(u&}#G9Am68wG!5!2G7 z`H2%DPQy?~`o0&*qgiuqH=)Dvud|Sj908u$$JG=31^pM|Tp{m_A=4t!epp;Mp;)>j z)taoX3rh-KSqv{N4EGONXWXKPh>G@JbGaW_?zbP@X#Sz3+lxx=SA~4e|4^>LbE5so z5gWTN7^o&HvZDH1Zh#@5@V#A2mz+r;E~FRMRt;}?Wk4R=MDyrh`z_sk9~FzlYsBd$r?d#^w$>G zmZihj0`(QDY=0bth2Bja$rvPzGwHKj3h5MDir`R`P08E%w)N&>%ai0#(^#}i`#_D_ z&65f$s|C@#Oqu2Rh~eh_OQofY)utzHrb%D3@ouur;Z1I`?$hbJ z0j|cQu=w7)C0iN0AfP4D_t>*dNK;EYE9^#!Q1-${WmQnyquN;@+=)r{wJ+2SmO32f5@m;OF9LMe0P> zU5SUFwfJcTy53k$iJZ5P>6WogZl+oyYGms66InPr>gg9&&qukI=4M;0FII()4I7Q+ z%;cZu&xM1fq{_F!a-Z?ot%(Ui$nWxUWo2a+78Vjj#SIMgp@v6a3DDtcO-AvqbVQ;D zo#f@Zv^@eEK=e)i6?LU=1}jV1=t1^XujTIMlsO#c;Zx}0o=t}xlCm1%5Hj>F;~h2s zb_6X%ruSo*UmyQb_+BN!!O@oARLfk$jG=pyMz?^N^G?k49a!PsC9tCO*A?rr%DSwz z$-L_6B%+F0qntZ^_`kbzqEH^B3tsvF^>H}29bG_QORhPxTLUs@4?n$0Urd~~=b}tE zd@7PbHaa@;((@}l=SI7Gp}K3Pc46G;_N~hvmS@o0_Ei`tj=odQY~6RM0R5TeQ$_g< zXAR!4PaEk_ z_HVpj8ZP=$J{8w;csz_*W0c1#($vHe@c!LWU!Ni!_inMy?s=Gx;+Tc~CpRO?2P#Kl zHzU~nP{Y1dLkp~Kn#_euVL+{3ZFN#M4wTCDGSi#fPrXb2we5D?XZvo=F>A2%rmZvY zS5`HIh8Fmg@Jnuxcl~_)`#Cx~>L8Vz^0>C?Qq{uSbKvrZ>HtN6?{k3rEiK6`zW_pxM>Nxl$jXM*y{z!QTf9}V;*Q|V4dXWpJ-VVBf|78Dl9NE_k<$DE zISXuPDQc*LxFh5L4sV`iZ99wv+2hrv;;4HW(>ur$ESK$)Smq%_PD{rE-~3eN3PX`& z5%MFsFcA0yI78c^k|m6T3d@@jp=jhCSO!Y%i;mY}f4;mW&wLZCI>Is0_v>;iXEN*_ zDe2tlR@~~12@}7D_A9wW@2Z-`ALZBgF!+1{ZOuP6+K`RM~&2e|2gZADe4MEbN4~w)6y;j5piv$(xx*CIE1RE) zg;DWgEa|DK9y3kLg$bl2B)6dD;P|l<^e6W9_5C-Yf$sG!u=7GkH2XOctit&I+B0-V z2iN6crURn=kF5 zSJ#J2LZZB;fO8K%6r-%8oVE|*AHn_db07)nFjhUy35D41!1*?N#gGk)zK+M9{K^n- z;{@lW&m^!9+%63GV?oVgNJ_@>ps3?9(vUx?$X$_!IpMd>g^48j2vpmsC2>`95o(3H zRR>9_coTRUA)#6Bd%KUQI1v%tsNYs{#&ex@`N)j{e~gFbg{aAXOODS*`eI93=Jd3$ zcvakr>08c!$RCRrvyc@tw`uJ{~F!QI(P7?VRSDzOR zt0{pIAWR+;CoLP9W+J}(?h;Q||q*9YCJvC?V~qWl?@ekzOvk^I(<9A!;JCmcTl zE4(rq^7oqrO#!neMW)tVFBpOn7|i?-7z`ZAfEd`7!4SlLH65h_fg zSmNcRI3lzNT)4?<{bkX}ij1?R9c7?>z42Aw+{l=)%nm+gj&9lt+htHd#H-8LIHxzr{rIzVti@EGI0FU=qwzk;+=n(Su&z*p4yQjUm^KHk5ho+S$ zNy^6?`f~Omp99+LTN&W`_;FnSp%``frV%Xty@_tVUy^%E`A`8=HF}t=tZgN?J^cl6 zo=>ubj#E-IZs%vR`!*eA>n8M0OM~$p*DtZ>7%0ih$ZcIJs&n#~uXD z2F;B{%r2+^$X|_cP?+>fmr&yFwalWgMt%|cS^2AXS7vXqSuZ?l8?2_NlKbpT*LJdx98xR$Y%ohc{00V-hXm}6*3k#MeSLNZ?ijhrEl4Z7fLkeXUW?IcAQ@~v&9PX8QqM1sCZmO*fD z=MB2^#iERQ9YA!;xGtLpTQV5zmywZyPk;XW*@0Z_w40#iKSJ3g(>Z99hELbn#;6dE zE6Fu4Wpnkgq?pm?QK2p0P1m)qVcS8mP$=)lzQ6W5sLD-VxA!FjTwM+a5n`xi7Qx39 zZ{kX>KPD!|55LouDZ`$aOl^IPvHaCOr5xX?BX zwKS5pywrczfA++3ApO8*rb@=$u9EVAhU}0ar9?_Pft>JBYv2VvZi1~CZ&&81&qfud z3Zc)gyuP68L5dG1rpD}V#`L=FMz-zd$=%t%EpRvw#2nyFpZ)^>#L)Z?egE0CD~)o1 z3)9ZO2Z3zlv*yqK6jR~8oFtyUps&}i(F$<(DIeT+Q_}e27ZEp)*bp$ z=%K)ybLA^-kxLP`QK!pS<`5KP@>pug$|iFew2olNccg7Jp%YRXM1J2GRK&3oPHD?T zV^#T{23q&k29-7#huh;=Y<|<|H@-wmclAoz@TEsgW9x-cVuQXDSKXP99)r%lMFZ+6 z=mqwOjCmt-B6%^Tb-_Z(I;Sj@Y^T=n)Zv7Ro zKTYGTOZhkPLRoLpsnIoxus9|qkX7lYKc+1ZWGVx{wlS7`F_&?{$ ztZf~*+=FW;ZSnB&)m2wJuC^njHzo{jk^{Y|DJk`?hx6df$0r~#XU!W(Rq43w*kFwX zHqSSfTgf7Uc3T-ruLDkOCf*!Mj9@rV8sCGgZ8mOh##bRELiob}H8>S8V!DBL9A zqwu&Ix<$Ib;{LVCFzk6)HXaskPyWWF{1f?wpfQ$jZwFq*>Y`r_ueALdntx6tf>CN| z4@5dweXafS=f-9Y-FNgt9@_;1S}HE;AR6L^K{YClQ4+qt>p5J3?e95gxb{-b(({Vkya3mUIV$&wd#mn<VahcUsYKUO}C*BLGbQPCL3B zfR}${i4I-Jfl{iI)1l}}$>(yd_=CxBxUYlrgVb9Xfm`cs=Pvt{{D?;DjSJ44)sc|z z<=(?3v$Ae>Q`$xR-{iv1**}Aa3wHerByjaot#c3)+qTkXzZP(OA1u*<(4_KZXj_G9{L`i2|)}p?poZ(qDhDgRddx# zPbqeT_Zy8tf&+rjN_t9)u9ih$Y~cHv#>VC2%NO=^P{!m>`1S=kc)bp$ScphcG+ll6 z5MqAf2q7F|M6`&xBp*@~DeF?WmYw=OZGNfMk}b3=u~6D3XeJy;=tdKYb?k}Z#1f}^ zCms=thXa9O2;ZOLG+|sFlOlR`H6({xzp|7(uC1-L-k~`7yV3OxL0JATnd(Ido$&0g zuzOY=m{Nsefn(5^H7_ObaLR%8{jIp9jGz~{7v2wwqbGVJoJo@UoU!^4A?QWk@ZCjL z>G{6@r_bvI()>W5CKVG70k=S|_+xieOihz zUhgA6&N~vg_F&+&X|Ge`JBx!X~h}34$0*VW3uGk?Nde0`nO? zlo)T_Z!LK76|A`T1bOov>eDm>&g=7wB(&wy;`sv-9GZ|R%ia+y`P?~0>t?R>{TtC)zR20$0JY@yU?CA+t%@zr`ZY&_lf|jQndGf$ zie8e^Bpga`#$0*Qyt;2un#E1L-~$)gfP}5~NCMS4ea+ZY1=fE0rOCn*#NyX%;g_*FFrka{aB z)5qa{`yp-UTAhwlJgQH>pkD?OULQCN(=u1*A(V=&Fe<9lUyftNILsBCTm>r1Yv0uZfq(=UCS z1qwAoUgUSF!mxS{F4YrcB;+y|XzymmAOt%mAvK&}nuF zJ!hY`;WrPj?b_^w^q!CpaBg&xSHqAs;xr;rOBmJmWusY z=%En^Sw*?)DB$CpD#ul5oc2LZ)~J9N<+m;dcdjY2_JTXf3%{&=dnFY@(aT{OGt-_h z1VouY)216<^@4~V&58Z%a~Lw_dZERhN7mN}b2Bt*(Z^k7b`}-|B_*c9|H8_^);i_$ z&A`9_`{M+A3kYSdG3f^LFr_Kg23ExK>OLO=eNgX-bml!Mv1~q_|~#fFnvYJ z<@+tFlG*E+c$5y3>rhTNBW70-?#H1IMWG`V{g+v`C`zK+Z%~pocuN4)`qsF{otVzH z8_WAo`DX;zib{$%Lr5D(p7IZEqArc_IWZ4zz?Bgz#w&{NTra^X-oEjc%$-ISS{#6*gA9nn}3#DXZu!cA(IlUTPqz4f3f>UA{05k483*1Ivcj zuZ6&%7@2b34yUT_YYT9EC}igDZI$TS)ig*H-jv-ON!*BB^Qed1et=<{}K_d~8 zgMi226L;ZaAdvI=6J`7RILI3V=5`W;feVE8&{;ta$U4G}6eGurp9pVakaKJZ2p#+I zD$%+T2P7dG;)qlM5Gskl1y@GW+Q8F;nttmQ@)!gkzC5=mqaffDTH1n$~){Z&y3DeDWb{}`BN7T>S`Jpu5gAscU6TAIWFg53BPHW?Lk+^l5Nct4DUR+pu_gJ3TEe z8RTAkvD@`yRw9hzk?eglhg>ybdjkMAuBoYc;eC8r;j;t`%~Ap| zHuNoB5%4}sk$A{;YjrC%lH06uv^iUBn5^*W@)`VLC3Z7S+3fC8qWRNzw{%5QSG(E% z_TtG0m0haZD*2D;v_ki-U-D z{+^FVLJ<~#(L`8mXO##%c+T$o@GPX*-XEhqIj{8-i0<*xVb@m71PyTryF5cw@-C^f7_E91+4H zfmR5g?imi_juberw=V>ZPDbXDlwfcI><(KzbOpZ7EVTh`@L^potzFk9a5>td2jZSU z0v0Ifg6jo3S=|}<$#SvS<1Sbj*YJtqU=CKSS3xii0^dV-9&XRCkgDXWE#aVL5oUNFOgx={*VXTJeo6cu`*}_wPInYSO&}ca zgd&QP*07x?hr0SI5fUUv+jlWU5G_z3bf{iDB{vbo$wgNuC^CvJ%{(mKz$+kFTU9$J zhZ+)!hR%;bH3{K8`HZ=B6Q$$)I5b=^glv{N@hvSO^Wk6TqEWPnpg_ZDi6_v{b9ez}(DC^kaH}OZFvZu18k#;HKzx!|0`_ zNXLuyi#lMpMdn&rze$uGFRL%*s z;b6<$?0xH4rHKroma3TfEO*;ViTu8JvI-h!1D}-_6A{TYNu6%|#E>8dykRc6J@%xk z<{qv|QZ0Ja%YN5^ACaqI*|(uy`aD8MyjS?N1*68aKd9_@h(Z_`qsaxluMXyVUjq*#LdT1B&+S`1 zchl2JHmi8CQ$nO=?-W*3sAcUE8dlzACW{ zVR`ai{otWos!;TDOnjANBoyk87s1&R3-N<)54k|y@F)x(ZeOJLnO;z@cVad-voY9I z)5#jCrEwZ7AQ}l`R%D66j@#cezpu}|I(iX3hNIs5`->l^>p9j(-Z8qQwSLpn4TV-+ zOg7{v!x2=3(xjl6_ZJtsoud&o7Jo7K3X7 zxjSaK?0d^c`jTmp!_9{NM*r^&P=wg`Ld>FebP-tiHbwuGexQACpFR1$R*Wq)Yh1Sg zMnEpW)_Ps0#DmULus7(*i1I!qvKO}17*SQKQE{}=CYC)4fPNXR!#_7SH{hpkBC`e< z)HEJWx;|bx_E^5$pSgd00((dm_fxX}ld}@a3`9o30Ra>aIiQ+#=sz~JRH~2fGn^Lw zJ+twCHqbFV_&`A=VL;wmR?PhGYEZwPk=B6x>E6xx#uv*-p-R(zqpBA)A^ZN5@x581 zeBLO225#-1@*{_*W4l1HcQBpusfYG?%gy(H6rE*Q6L?fE>D0y1QSxLAoTR zyJP53x=WB2Dd}$M2I=OIlG4pLAAkA5#Rap^?6scfzS#)wZdU_22@tD0F4NeDbA3*g zfT?O;*;tM^7;=k02_|yK=~tYqGnbt&I}~0)ZWDOWq!3M*^@1|pWZFZa8S zY`a5Y9z2rniE!AcVA(%hbGw3}nFUsBSl(oc3%%Lg6?C^zxY*#*v1d(Y1MRL#h^_<3S3l=x2d z*#+WB7C=zow)$yC4BIhq${$_CStx| z!7?*o!tptc!q%;GLiay~*k&m*I23U>|E-S~lZX(i?BP-sLXK#>qdX+A{4YRJlsEd~Ep8Ur=b zGvz&g?d8ctUSn+DQgJXxn&lGs&kKHSZ*Nakb(?v3rZtLx51>(=1)HTMhuE)mrxIx$ z;E`%C+Z!+zS&#Jysq8#|#;W(5O>5hQa8$-pH(v8=V1w~_LS7(O2qfSQo)(H;B*y0m`?#8!nc3Lb zxVv9X%aSY4)`NXmFp`}&N1oGieYe#x*Km3H&6b@*pDhqJT$<;--I6HdBj@8|ZtH7iWd)Sa+VRp` zS-0=2h-BTY6nzTVU9N0e4R|Vnd2P5kmFbd&Z6!}m(5f>vn=r;Py~$LX@&>AaWxr4SyJ`rQl7h=MFw$!rX zl-K*oRi;@SoY2Ts9qdL2m6fExM2*1>Jt0d*W`R<$UlzRAmeB|eEW=NN2)lQ&j9hob zWF(!i+{UhdgLC`0yF6Qe)J6OPb`55js4qjB*u|w2rbhuvG*pV=F#Z4Z*RZ?4HgF2P zaoV8lAFUFJ;V7qQ^!Uj$SL2U@eyE4o3*~}hZ1Xp2=5ruJ1QsAc7^qPgl$-;N#OYD+ zUd0SJ)&(1>P~~EysdBaCSop9Wby<*~gb%zHGV<5K<82V&^87?LUT7 zM5V+@vDAfe8J~xm8RMY^&qyY#6ww7SDDt(gE&a=idlR!2<05YM8A9mH`D0j)J?wkE z)iP>Cjn;2@)P*JefS%oiB4cornKaubpawABaR=I8U_P5x5eSCYGsDKc19Vrz5S{BWv=T1-59M7%|EY`S@v-GHnB4!`NcU`e?jZl$-xsKQ(ql4RE86sH(|eO&iEfzU_~Gq` z_pW6s!7$aPVZH9e$0>arDcsFI z6F&689_;W}tJ=@XgqI$~@8k|;AeBB0@P;TeYf)z;EbD$&34A0v_aZmGkB7Qy`TpHDi4EU=BXBD0rLuzjN%L+0Y4DXGG zVif8`tz#3n-G`IQPK&>5Zj!VB&b7>n9#+7BLZsoeXf1i^cVFo*uE5K zgM)yE;{t>rFe8eYtKzleh{y}N}-* z9w!kI)ct$!p1R!>3V}~1oYP^_;)9$+f66Vv{P&Th4NA$MXYOfK9!($0v=lxdeIOpK z`rBF+it6&tMhY=S#vljaKqjMR4TDixcNSLV9pWok_N-)oGn}B_OFGN%k>GQO#%Gj$ zRG`XRIbi#qLc4{w^|$x48Z>lXn~+44!CKP(TE8V{Pa>Gk`tP-?%}*_&;Z$L6!SsLa zXi}m5h?*ytB)2rh6=So!wXU7zJ5i_dxO*3tg?bx4+}|^4zS4#P_wVc+44YjAFlUYP zgHCwnKWmw|opo#q=u{hG_Vsi=KX$8?H#B&?9#HZc8(QW){n06*v(iENrufy(QtWmi z@E`CrMj(2dCweXm+;54=a>nO=YkSRIVEtym+49tNkM(MdTB^pd?zdp{I(hpFgYl8t zIbo9d9<2y|+j)5e&cJFy{LI9+ruCZoW^G2D_2*MQuf{)z^wq1N60Xh}HDot%FU8I( z;bvOrcLt1KGKxkSn=pi$D;51Bthuvsm>)4%Xoe(FL6(yl{{m~(=RDcO-=bb4hm8Eg zZcgR+#Nt)(<${oj@0B6FIu>ciFs|`pG`fVI-Q_NuNW&5^ei6HzyA-W$@!pTad~A2q zSC`TIt>u3ULc*fB&AtHv=4#{k&*#(kDvC+G@Ub*njRv`vHg!uC3t3ED-8~7s5e8oC zW;Mn(_%YhhFz47rPfrhaPZrK@D-&416c|_E?j)n$_hY0g1lQ7~_(@H~tu7U2hO3L&(4um0n)YA{x z>J4Z3Lgu|043=~Bc{E4{`;7Y>Md1qIlBBD||AY;pc4PlMLByeu(MGcfJDM=+sP*2p zFWh0Pt}b>FgobItVChw3rRuywqQ;E7vbGI}Kv@}0Y|}%)HzKnj-|RX$xo!vsidI}u z&e1>>@gO4=1yQjU^hmPDZ#&UR_^#UkZI=m6+;skZbWqe3HUc~H8@M6e5H1Tny0Bkx zT5FCAw*ly-OWH$Ioh$P!@0UT-8(6BAlrElg7<}9L+~e1}rc$GY%%W~5e(pc{DTb>A zDC9>&(WCpXQ)|4q%-U>WH&BGjYO-@rwcQ6i6c4Q@as=G|&Gcu-k=8Ye+`L=ib2Z|N zGoQQ+p;%m9t*6J102!U&vNxmqVPv3@;i!0yX`@8!v9|H3x;_6>j0?$o`WYy8PHCBY zfU5HZ_LCuq(W!E3^bPIwkVfpDYiIx(VwK&SKX@1Gs=#)3{=sm~an+&4dI|$t^yT-G zohwI<4UKdqbfa@1Eat<957dRq3m!O7^DzZ=oPS_%&FA5;lsw>gdZB%9Juwj{f+T^~ z#jG42WcvzZOWKjrM{f$tzbnMtkD;VC{~gDG8I{ZDw5pziAW^=yWbaWs1_eUpbDRf4 zDbk1C9UQ315pA-rd^=QHz}GV3Jq9Jx{_E|rBZKy|IAnHM<{F)v(KXHPCa7tq|wUw;I5lfNF)IPI`D_;7CqqRGf zLzb5pzdSf3MZ;PxP@(JtV1qD|npviwe_x5h)k2%d3&AuZDgk})(zP?)CvbcJ=?~49 zdh8gto^Qo=;I%!SzSOEwY|)5SyHC(zaW%~0%JG))ECU%wYDbR_YyRSvq{7JNI``>e z*Ky1c%lfC|(zrZrn_lbkn{pqqSgt-ps*h-Qxe5(wUR(+4Ki@ce0Ojb8<&RT!_3qDRyi+-GV2=!D|a{C3HKGe)hfY{~oT7U@!nSZ|(-(X!I+W6XLAuY?ji}7A1rx?9*h#rCmtuDjiG~Ye_tHe)fHB zwToz(rkylXkW5y9_I$>8GUK!h{o6D0FyP#@ug87cAG|>^!-;7a@Ck zybrL9d+SPt~2Uc~oGz#H7`H}a3*-sP)N9kqon;1cG^y1uE$4z0V;hUP8h2Lh= zjRyY|>Au2z;|7I36>!nI276}2n8z7v?wzj&BVf5Nt9}#maIj<)^x6M+ zJ+})REJ69Vxipw|>Sua(ZC6=JX7b$sdhbNQG(JDydfK$zBR(uan@~iVXlCns%;Myt zZ`V-`I3A|??H=rm9j#w9n$11JUe6Pa8NmDHIABfo`gPhWU^3Vo9bK{Osp)0EklxYn zftb8`zw@zA;`MK8Ira6l-&xn;cEfH2YfE!ujkkmCYof7V<8^Nhx zA1Mr%+T{L;?}lvkObCQfjw_9^RK&+9Uq7Nj*8d-6etkXzCjHjU(c3||7L9!Ue3}fv z8?)Ask-&n~$6g<+hQ5i(K?aeV#q-ocIf{cZ6-P6t&+dI>54weGfBo1BMBzfLH>ns@ zhIqVtS@yoB%~C)}_?*%Dxi!0~%{Ac7Q3WoAyQcm+jcF582baQgB4wPZj*SVy@eNeJDR7<=^}kZ{>&P2TUCHh!zCSvN1%+@Pgx1EJZcXI< z3T0!TIlrguDACH(7*fujZ@a~3T9aE+F{XZzPx()s?Mq=G-?Z-!=~dqL9e;ygvnQSo zAw1B80S1knON#wSmmIoiY#;=caKGxvHBRA!c}hbzJYcO=;R}M#B4Ojm@>vkkQdm`7C?;ira^0@Pyxr3Prii^ZolTx~#-@r;fX` z`ImQqK0=V&5Ako@s z;s##_TURXef(;WL!BKqS?CD-q0rTI8gwhjGn0Qe!JVaVeAC5AK(m{?th64igjX~H$ z=pl8g<=~ioD?n_`@2-TQBa1(fog zt?bBf&ZZpww6Y+==9F~5ijNt}QGK8UXx zx0b0R&b$REgQzZ`U0WNDQNjaYCOG%dp+oDN6vW9+iOPrH<_FLcXGeB<*2QLE#NQ6>X9NNF-M$n{FW&)CoNHRg%5JN6mxL`Od3@#|88L+;N>M-R!g zs>=eCL4DE{7?PGL(_i3b36sk-7=t+#G~Zbwf0WU%Lx_Qcs)T8$p+zl!rz{L^4sEMK zf&*F(gl9Uud5kYJ-1k{A6Xt(qGRot4D+3T$V!}bqIX8xhQ%10pWGFDjhamNo`C7jJ zR+mKlO1q(^G2+xzj5Am5aZ~=lT+9Y%QA(PTV;PP95g1BD0nSmxZp_6z&pK|c^gOQ) zz$|+FTaNg==cT;oV{0*k@;S#0#2X_FzZ`n7lngrN_Kl6+Z>gB{fwkWDnFUecWsz^= zE-g9pEuVg+uTM&1c`U~lZc9iGDoz5&+bHBB3GOT%w_ULZRq_X{u3K3#=U3vFmyPF! z>{H=w{MdI)|4psR`_*=_=C*m>jOGE}E}saaNJYKxs)VrOKo^c^Yc;+H*N8$K@eUKt zPLO!empb+_szb>Xt8iZ&qqHJmnC*3hjWn14>GAc#YZS^JTgF}{ucr8G!z7(vKi~?M zN0LXRXy&m)QJt>KrWIVCUA(H#r+}I=Q1}??NTW%s0VfzIl5UB>p^wVjDlc&UG0T^= z9GPE#^qbL{&bzd-3f*e^dOvemOL70zh{D}y^|vgBui^YZCS+*FVaQh?MtaLW0Sv?^3T*O-AG6P#tua)A7_AwEb;ujBJd+t~fXAZ07pF zYUJ&rVj2C(HR=2~Bw=zN40M53>-|gK)5NGGnwG%lhrfSqp%GGS=*uP= z<}n?mDbR}}yaS2Z)XP{9RL5><3Ig#vCUoC$Jac%s407-C@lrpUizSV~F5gIw8? zcy47Q?=4yGuHpDMlPlyA9Jrl+NRH?b$x3pT1f1Ee{fHlMHMmVn<~ z+%$EZG`*}jk#^WDi=Q1NMoam8Ydy43Y3+mbkceVL5@i`(C zn651(RPWJ{%$4%hC<@BT$~@aTIy=cC@?reDt^%kbfn6JpO#=IAm>s`fw)d&&>bm9cSkwg@*(x!V95Ly&r-BjEtPKz4=kVksDYF_%J0~K>_fl6 z{E?~uDOl>!HvGa@?cC_Sf(`dODtPK`3>-P4KVTc#Fnw3JYtkGE8AH}oLE&xBYU&47 z(VL;;mr%VDk}aGh%3p*z81|@SC=}8TncDyi26G`XPzNucH2bT8jyZ0AZwwb$(nmi* zm#YTB4F%|x9vS)a+~z1+kCGri;TlYSi^uun{y8sQNODUkJx6s2@piS+k|+}zCj zMU%i7Y%=fXXGzquqLCEp90~%8@31K5(Ijr3fxBG#X49amWK9La!b(h9Jsx^6u}v3* z9h5)cI!j0seHaOHu!AmLdD7_!2}KXA_t^~h<@(J6ZEV8piERE9ILZQ$pp+9&1L8g; zDN6>0S^hmD!$Eb8)-XM&jrmkUqTq2cAyMAffzSVzSHVm=YuZD&o=8nO^C9PCj(bkZkl;F14T6N}woGGJyE(~^%Q3jy078nqhNDTW@xJ6o?x>qYD z)YF!#{TAcB|CA^{O9KO8eRV4Q!2Qh5pRx0Xwn-FY3pSfA!J{KPz;vEA<&CBL(q+lt zVpU;|F2dnxUwI8-y^3`|cc%%r?H^u&9%~-$R+M~3S5eVi=wSQq<=nkc{l?&V;=;Bx ziS50B`=ffk-WtY2%vPc{WEHDjnqGqo2};KqU8^vsT3k~%26$E<_(1TTvwg$R#!i!g z9&b3w%*lO_7xfegE}m{aMIUhG-H$yzwa*!Yof(b+a4lp~sSW0{KW<_oBPTh zkf+5wnimCy@s7?`@p#UmhL|?ZOmyO`yb0zV&>iSjs~Q&&1C{7iTvjx*t0zvFj-9VE zCII@cejv2^nQ#~}VFLmu1*x3&a1xdv49(5U_2cijT2u_Nwz#PFiT@Fkki^H2LWRfb z?`5HeXx@Fj)b^tN{5ayv!q<{^_0v%m&hr!u_5Z!j+V@c>!7`8sM?&DLD{|v9_x~c? z;h7YUl6sln2wb?!Qx^ki=9f zq1N@Oz|gh5PXFx`&hMBli;uN(IUG_LZ@A%n{m<5yd;3-9l|ASP^AkvdYzmEx1zl&K zf$^Gb`VR!74ZTm-#Xs`?GDz$-&KE`}CUU8=gsTe*_#JyV`TnSDSzpPq#=GHTGivwt zF*5_wTIMbokgCp7=}MFv=G$C7x0d_G0w3dF7CWjRgA2rNz%fu;u}t51>X+cl;Ek6J z$BsvqvzHbVgKRM_ue~L7Yt?U}4L`Om09Ci6&FGFu$LwK(QnB0gZ1hW=o2p40V=!Cd z0&orCJ9V8okUvfhl0EJjnp?Q}Op}Q05zjh!DHbNr9i^jiaVbv%WJo3^CQY|e<#V+s z;lnOm#gRtlm1J6OH5)$s1Z}TyPF9&_l1zA0bF0-%QwYYw6<4bZygP@qcz|b>E zf}#us!zKoHf?Ej>#ASjdc}@Y?K1LL(H>hilUwYGBXFB)t{1^+;my8?O2=&e67@az< zwJCptkYL+>>$K}#AF};bk2U7e3OH}P|2ogws_aNZovn2PhW7TXNCrUz;Ad{4ji)`n zlhf{*$K#cy%bm8QAc6f}4~#@kzuZ^2o8I#lrkCMk_!2|Qbn`k^f)eVZgqyN8z2M;ykLWW)4c3##aS)Xn#ZWV z_&M$U8>VHUq$p+yWE{5^kdy#2$QSD8L5i*)YdSG+K3aH4%0*deuAuwD6nKS43GLD8 zdiZz*dMH|KTza+$Ozq8jKMBhxHN@U%mxpHwL0W;JT|yhPFS zxsxFz@v~JLzK$N?zFOF5Y4!M;oZtOvF)Cxp%lXWrPT!R{_33WWK(XJy2Y<*PQ6sYg zo^LLNeZ21P-nxhhu(w*QxIhZGJN@&3zLSBa(%w6eokP@kB6+lKIC?wyIhj*gl7jOe z#c_)xC`0JB2YyW-dd>dXxy+>|sh>cMaoH0*2>w%qza4jzod1Dj2LqcBLf99M-HQ{F zZ|-jbxm0X9aGn)z{UV)0M`#;gKdN5DIkOCJ`(5d5b;x$rIO?^t9=>~VO_=Zq&V+P)UE^TDQS@^k|)DUWTcTr#JE@k#afrPZUWuXGEIa zX8;O$mmd)FjVc<|eiAnd)|kf+Po&Jr)1k8AMk;0elMQHol`?vduk0*^|sD4R} z#RakR(ikz??eQ$Zrldb}mmvxi=}Qj8%+sWf!=Hv_Qth$7r`KbeefJ)H zSD&PR{(D3bRoq)#%#Az-q~vi|)^k-8y}y8CWq2qaP6G! zy3u`$Zw#kK*29+-bP{nstD#-J;-j_ii%Cgmuf0PI#&3`KbO%lx&qB$czI#N}s2<%u z0+&uN<6@6>V#I`mi5i_x99@^65CHRBpFP6M%Ch?E5sHGquCDfW3`lhpffF_sxe!x> zi|`h*F)J!3A+C#s-1i`UFA_*ZR9G0srQ^S2H&Aw1Gf6JueL(&^3OGMCc2v&Wrd@n7 zNnN|*B7fXT)g;g+NE?)~)12FOsP0&@bUwM5n+!P5ocrZSmVXf6!Cd&SM!8yHQEE%&;?JgFT_GDoJb{a(WXkybG32 z=ytO|hixj7R3-J8A211>fN)B^&Adj$Hy3~+Yby+nUt4C-k*hWiyC9_=jffWF`HW{RVI9;(qj|4 zCd%m`!(t;pJ{FHiN5)~HwjC-Y(%3mB+TxEJXQ=%ee)ia)Upf7`0;sBDWn~4qB2WRjAp zSU9t>aWy6@dSm%JT>R8Kyg;E>#)TWBjp^;MWoI_JbT>~y9}sM##)R!CkRG3iX_k5G zh9p}*E75byg|A76Bzta@*+ZeOP(@$EOz_u3hgnWLBXfdMF`X^4vRi(JpX<8DHNbP{ zZ=KHlg+hxqYg{b8YzUWXj-bm*v}?~1Tj`DsN7|&u5QD>Ls*!hWp7w|8)b)MG&yMXr^*fcqe2Oc^=zERgBF1S)Hb==P5QSrQ7==`@U zQy3i)BV(G$`!D?R61cG@f3WMi<7?b`IJg_9hM5C_qTc7h3&l)NYhq9Fk65Gv?w4yO zuiFGzWJBND?F!aTDw#El+LQ=BblP=iC~*v=!Z|Q}F+XT5=KX>PS;%^L?%A_abRODu zGsL(#Tf022n>5Tb;WrjGD_UOu{Mflq$!j-fCDPSdJ4Q&~mo+{zX3xRX&du|XISIJA zw;KaLcj;whKBhqn;U_EczP?R>h#Y)|M?}6Cj#~)jDSlA+j2y!#qhz^!Yn0kww5xV) zhVka@z-J+WW{~d%0vF7RHOdx_a`%@O%_l(Q;4d))%C)B_fACE#;tP1S1dCqpP$Au( z8rU4lnqQw6-;A7Y;nb`-vazwP2n;d>7y%2US%1NNSgjTlDAfiv89uo@pTNK-7~h-( zxg}=?7Iw{I;U^tTD0D;LeT-j2AY(yRVTh(f>;ut1#10Ha9xF`E%samQe)DcL6+QIx zlx>rYLgAe4_2P8ltY&g$EK3=e4C?aVaJ&$l91hMbNVmSBbL62os_b_qeA#mnAU82C ziRP@$*kxv;KY_Ev7^s_yqyapYZYHh z)`HR%XbrkC((gj+xMIwEh9BeXl2Qt(>r&uQ7m&;iw+1S&7p0f6HJ7ng?d_;%XA%R9 z9aJWip1T9+fmgOJ-;=)|d%}}!0npfCTpju8z-RsLuGxqnqSF(?4#mI*F-l80YdT{N zl6!yX9NT-SLXA}#bc|JyB_no6RNR)O5jOdF+o&sz6BB+*>_O6=DL$mryu($psjR;c zR<+7JYR!cu&=q>*Ct$&MX;l9C*)XmWNy$|FH`dCnNIoKn*(u3}c7bmmC{I;r(It@< zAx2rZ=Ph8@H!}K`xdijc)%eowIFP?`LMGyQTyF9h0pqXs8}E3$Ic0o*x#l>z_SREs z&}C#!;a$Hvo=u?x_1GneMTQmO2~<))I5O2>35$XxEE~LHA62T*+j|KHpGB%yq`ZaE zYV9hYt&X+R*D)aO6mw{?*d$uj6227Hc1NG%qE@{ z$}~28F<1Pq-1-WuGG!(sUz`n6ZWX*V+7x$xt(-YleJB=p-Wf97BKVRcl*Mp%7eS5o zb|}`PYc25klCyjN{s5w#i`3I8z-#}0=fe>*xY$^m zR`D`{EmhUiJa$YxZem~}(v^hgk6XfY_JxmRO-%hwy}EIJq6Oh>Ku?QSz4cgfZGAIQ zBBzF>k|gz6JYI)PPfHwfY%a5@(z-sLV(>SHPdSu~hzE+e{ZP7lo?_SBfPtevXgGz0OnpV)4rCn|r z!vXsE z_blh?yr9W?D#x`m4_W;C?uVYaE?97s9^J-EV^iAbE*OWeQxqH)h%fkT;eN$a?K8eF zdYMU)UibW|cKyxTuz`$9Ty&ih4n5x60-D&FW=Zb|4XLOhJP5@4 zd#q~|8424<>e3<8#bCqJZHF4yj`WIrho?e~-cPijnmy4Ac$30447kNVMMp8>i^+E| zW^;99n3*S7)_LLmu*gM#8-3Y-I=Gki< z@O1k+*CqNomd+-2`=?%dI!l4yzu3KJj{`Xvw1Wg=hI(V`k0lGD4?~3TjWw;U zjWfV@zb8o*{q+3z>^xED0~RO0{bZ9DvyQ2pfWB!(>s(Ry*%vKYzBS+5r_|JzqftJ- zx7gE>qF4FgyIlZiOaBA~|0JGml_}dfVD#+~K&S@G!TWe{-LVP0%z@iiU-Pm5lfZVTr4%^K zkGq2ryw-iJNe2H9P}t_5*maeRV)%j_+Vg7x6QW%eusf1^cz6gN>g4`AiLz;FX~zYo z)6$EyXd8MCna(8Q+ymIu=0N>$t*hJBa&K`20g2$0p>DhGxQ=4Ke#-U7q(-6Vz$_Vs z(t+PL1sIe;*pj$#gtV3+GFJSY`lGu!3}gq)h@3fZAY~0yoN4Xwzt*t!CBxJYQ0bL5 zEtpaL;nnogN-~u=2kg@*DMDb);y+S}=Eqhb#`$Uo*S;VWS28L!6~Ko$8!e!1Ufe&8 zjg5gsnL6gjeDa5U(CdJZ_T8v@A)Zvo6O`zIZV=$#R};`Z?0MMG7G=n4-30|sw1!t{QLvF!_i>^^1V?ku$ zw%J9O)`YeRwX6aqS52KQ&E^NB+cF1XmQW|lu9sQ!o&q@Q{F|$QZ0}seQPbHlJPKw# z?#}>nQCE%PMCV15=V6nlSm5S}{C)@JD>(i~b0?&SIAGu~m=6U_7xgTjv8+#lI#L04 zWWJ*BUF`wGz0ICeglqY`W;niV;H4-?%6K}-_`|KpFZh)u6TX$iF}BXM`(jk;2c(g{k5K1Z0tqv=XfM&TbcaccX0Hq?otBt(*- z1TYWLH^n|7Kre+c%}yoryJb3pn#i*L52O6XmVnOPkozA38Dh(Jiu4ZzUj?ewoq@N? zF%vQI1n8Z8?59{{UCvbt=~XbaI5ciJm+T>hu+RJmk?6=77zKu+YD5CH{ED&jt6Lb; zA6MNQrAx01%0n>{dc1u6{Ljq2;raZZkPTQR5teg_sg|l42*t%6Xeg+x!B4T2--f1X zjLvJ^(Qw1pA>3aK*%(rPjwf0Q2jT`7qW&J z<+mle&@*|()uAQJa$4P_nY10h5Wqg8h;oEP+u9Kp^2cf=8ETk*xdST^mj$<5hIaL8 z$e|y!5p_x*3ptcqIeUEX|D^;Ja{sAiUA_B67(e;TdF1O|{HwRUJ+tyGpo3!$8ttHv z|BF}_s*LLFOLUGlwRx`nx^DgK?Cc=UN0m*zU&F51cof11f&*md+uUNUSe^YBc5Q4^ zWHvma>Ln016DT)-EjcDqGr@L830TofPFpS;r-!#?ys8X|^6_4`vBVx?*#MTQy8*sc z;rs3v+v3f(7`IrOvo2u2k)g7>aR=q)3AYQhyo@$=!q$MZ=dSzng}mmYsXsN*Hf{mW zuXn2pft#i4ms#X~U(fD-{_*Mvp+UT#EM1?FBY1XPk#v0gY#o3c6_PL6TBDH#)iBlW%FM9qrjXzObIGHn}-f z9y1%Q@Yj?iL{McAx)+@e9`lK8?DRu5j7Y?5+$v>w{HknN{sX*zzLm;|t1#&}o48+A z9kuQGe13=LfPOoai&$eTVsRb2gZN<@(@xJIoB%CcD)KEDkZ}ON?Co_&-A7~UZa)7i zlqvocx27U^^(!O7$i<5d%4TmaAP$c+?JHIQ(Rfcljc7IX9T`3X5s@;V4xZ+XDK@qo z{JZ@440C?VZiz;l1Ey{P3JIC-atZuHHqsQw*bpdy0EO55PC6r+AWnwhl>8H3{yU3w zBm=}Oh{Tk?1EV}7Kl?p>5dp*-B7Q+j^c8W)rL77#>IuC2q9GzCXMqoTgwhvrAvS<9 zB%UTY3w+KSUqg&S35+5WwHO&qJFDGI*f%_K5@N#Oq$0vl&|7(vH?Iw!6@=Tax7c8FcmDvR761NSf| z-^WVwm&;e@r@QG$9Ri`s^~63uCsCiBD!U1>aHtT%ptPs3HoU!{rr=#PAW}&QensHZUtD(L@)jSrTD#l_?|* z;ZO~8R$4GRD^?xTCUFEC%D<_C71@kHy^KtpK_`3@h9qSef>6t-LRnxJaQ%1AkafYH z7lf03NF9k&71Fh>EB0GnFXtF|!G+j+mU#SVq+&Um0{iU_IoZnXrZK?Mn$R%=mupLo zhdC&_=r?l#i&FmntDfTauL}jFQr2YIJ@&WiLhQK`oWJ?uDG0N%e~lBGLr^h-QvSi; zF40d`u^PUCuUI{63!8L-$HJ>RNPrp1I0 z0Wnqg{-PLtTRT{g5c9%}(cKHqa(lF# zXABZLv*xrp3Ozgm_j5Gk+x)a4;o;%=I$d*ZpaxVjfAcXA??3sZ#mV-Kvq2Yoe0(+z z`Hr3M=}h-S5ZsMUpv?hqI7Z8AH;oTkU0*^q-W-Y;ff20D8JEnhLXDijbn+O8eFxcj zlxQ*JkP(oC&U6H3++Mz&1Y5VF`^hxFTx32s3L5MxfZTs+^{|yaq=QF^d|jl_=fEyq zW;w=SIXlZH?^s`iDgOtqJS636;KXi_o*u^S(6r)rd#Vg1hox{R*i{OxIo7CQ-}|Qx z4_S~1So=4>Ck89wdg&190sD$dHWpTg3I|3^IqYx_2pZdvl0`2Ap>*&E!8Okbd_nnS z3Ec@Kfk8N0qd}K21UXYRpPWzN*i4UPFq9!K886YVYOqC3;iga2EwL~Qn(b;-<=!}3 zznr#=DF%FQ6Iv12azfbb2->h}GnFCU@egnliFvR`NtGIa?uQ%7+kt`ZGlw>cE!IDd zkMoO-J@w)5Ps3oGh#>#s@zp_;mkLd%zLA%uv7We`ICrZlm;Km+C15m993x7LWxsH~ zl%Nfsq(>z4hhO~IdaY9oKxJWu{p~e?;?RG22 z7h62IHJs2Y$)a^C%$paagX6C=Lzb44`vScP%o)%p=0t8Z@_~%qq;LBy<$KsjELv*v z+9!dE0SLutEjtDQ0Rfv)tNXw0evsr_U0KOP6dN0hIgp{u%kus!*ro>&()yJpHp`Ac z)9vw+dH?%Haqt_w7}fffrz=fPR#qb}!qQJq`(him4S%m&#~W&$MC_@sth@66I(kQd zi&s0lqd#SuZ0%0+>qyx~&%bPJJYrO%Juns-JJ7oYYGWy;ufp>2|lYxW}zjx%GFM7Y=Z@~p|2Q3~VZ;uM4w#O5u-{b6Q4rSK4p&w9?H4`v;<0^@V$X@2B zfFG9kE-drp2PG;4zc7-6Mj;0FN-iI#!+`(3cgL~cdTRf5?U@QXhjq8aR1CmjI>tVL z4P}(b37fd;%QK3RQvN&zQ@J-ya>6>wO8&{QgW`QhkO$Kk5WiGP-kN&bBs z_Dx4eTYEuUI}=j*u|Z>Oe}t}(KjG5AP991qPqG^KcW;$QHc9^w!%r_{_44LhT z=5It;ubUPfiaelz9I%B0p`hsfPCRcLk${$}P|df=A$=m@5|SZx0G%0wP?~oqLirhv z_tqmo9cph|fbTI=CXIaIG?bj&sX>3ukpRLR)RYXdwl{fLZE*u%F(-|@*5(e~!D7zE zeY*qyA6rnCTC=pY1mXqn?|nuE=)jo`j9C6&J4+sELTdz&9mX^|dv!a+5H zG6MJ%6%mF#|6$67gf$~gM!}||;!~+GHn_@-srf%L3Y4T+Sq*4Bf>bE*cWLO-H8DB6 zeUx_J{vEy0aq2NC`gok)^|T8{-N9dO#i{FgvnLd|iv*fGJ0}DtK|QIAxus>XaWz6W zXig5iu?B9y1_gKksN==P#qkow0$%Mf(!AHFeeegUqt^>`^7r~}ho2@EM z1QTpkZuIQfVtx-xhE?@*gkuxO0?waJigknQfyZc}i`~TQ*!x+qw~Hd;v3VE8hL-L; zg@6xOXTn_e(DHddI0}n!i7p&9qI8t?s!xI$fltjfwVg>=i_)``yO(-YLf?3Uh5cSy z&~;da#%PnNig3;S&IWEblRz>gq%DxA6DW4Z;3#Ck_c_k=;7w_G=spP&Djh$} z5LJBhz;28%*QYZbQ!rFQiBXolMrB4K#S$P))S|my-TXW&v?`aZ|i5^m}I#oEAI)rQD1gw~;@!ziutjMSVk$xC1h; zLpD}dV+w{EP2jMDh!JA)=fmW3aBy5Be%r%BTpagFl`ZTy%u!-zQDZnHEQYYnO);+9 zJ~8I)Ah3Ll=oVhEjzVsH?3en`NGXJH9EhCAg^WR)pp`@^HIZQ@U6e`(Z;n9_)ol~G zM9FWyBUg69f+~*uUHwDn-Z>mM5uu!kQ&WMK%K+-{v7IY0B%u)eqjhYH0t%NgUGr}^ zvF5(gM_K0hSOm)X`y`DIMpFMN2F~%e6dPvEq`N~vhVBySZusu|-Nj$P8WzLlo^$s8?dSO~O@uB|;=StmQ1txJRlNsNs22RB ztV#P)hjF{E#UP2yCK(9ApjGwf>~T^W7BreCX+lK9^Go}&Z=x)wV#k~mMQ6hAx4zCT^id}G0yJP99$%Zr~7dr^qoIR$P$)~g%E@$Q%VkteO* zPk%Mi&jNNi9(ubMJZQHk&2BS*UD<%gr9RJJ2cEuf=V5PKi$T0VVDGKmq#}>6Rcy7g14;@d}O=8t%(yJNpO>WE{pao8LGJieF0)!9gA^C_MAcW_`| zG_9+zPmYPAo2a6&_LbL3CPWK;o+zbD4De`Tkf*tE0RUJAMUTtGtK`92am%z36%A_ruDyz&k z^>Kk%hvv)FNP~uay2XEW3A-DtSq_@a-S4?enqo^IzXg#h)bJ+T5Fw*UhU3ZBi5guG zS12(3bDMb2bkU-FcVp_Eugf@7RUtw?IefNsQ5~5ohU)i%C9{~Yk&wLUvv(`rKEgBx zLeA<4MFF={rv+yl11B)wD=*>wIO;YMGxY?{?F--=*jAR-A0aXv4ZeGULp~F}QrS-stqxSLMdtyuNkU%x6;G}}a3Adq75tO(eg zB0n0P{nxk>a2-H(e=d=kMOn_jkJEZI2HZP6OSGqcdEQ>7ngqCM<437^vGL?iDHj^ zkjojT^=#i2GB&pLCv8c}C{kSBFPkzA>bbi3xRs_Plh2e}$M~5BmS1kmkE`zToV6BQ zj?b!=ulVgp90LWp1lfXIBH|znua$(5`wZ_}O8_NpkDy8&SB8)|BUaK-@fvrERc{6( zZFx-3FXxQ7I7@b_GA9RF<}0yTl7{y7d7JBqrcCn#l;18Hbc!#*i^Fk~ zH+4dg>j()HpV#Tcpkmgqv6!iCmoH9g zEQm{*MF*~+we6&Q*JTV2I>V2z!N@hTl!Hb@pS;68EPKLA*RouGzhFw?7q5b5TE0tK zuS+q(9$Hu2kK^3evmUsQWz(J^8Bv5l(;%gQ(a-+DI%h=giWJl!-gj7}11?8Ro3TF( z7Ow`C3h)m}c6jY}0GX1O&Jpp;-sx(}o2qJgdLrYIr>;8Gb}W z2oh@{K_JOD(&iN(TXqChoN%EvAU}47rO$s&;8++G-75DsQ~8O1!p8aCx&AkC;fyshNp;Bfdp`}qLT$$PW+rgyqj6~t_UjIDx_ zO~I@4iF{s=#HdSQlY~;xeS*W)4}(CN5u>>h_AcwkIHT)7TjOq@BbV?|AIn!G9AHc1 z2$3=pVbHHKc{>_9fBgaL2?8*(TE_TM3bEp}*mpzRhJ|Vwg;@fp2j$r>xj0yCg6hNWiKv}}bw&Sl$_=Nwz z_ny^nWC|{=L6J#ylBKI4wez@Jm}zD0CHLFAV}C|j7^&r!>sIeanN2)u=N>^$8H8xk z*j_=J>)%eXN$D(yp9juk2ho$!hv-RyG}EA=-`@%($sQ#Oeu}@7i+|noE%;qI-b{vd zSj~rs<0imn=g&qnISXM(5H*w-djI)!49AZ1PJxc63oDSFIWIQ;ggE`^t;VX^kG=YVF;QSwH6i)b_;MlX_HyO{ zL}9Q%vxwh)Vdq_iJJArdqGna#b;x z!r8-5nOl1UJ5k6^zH$_TRo5?!M3tG~r3D-T+h=UoS%Qxj3Bt+)Mg7+Y60OZmmouus zmP0)kG1KrJ5%pP2b@Y1;^p-M3zwFV_Tb%s!8Ps% zDO@D5vDIv-L#9Ay5&5R0YA$LFR;b&ot(S7k%=CA1nz4m@IBRENwhI zh$0>@{Bm=5FJo1Lpnf7|HxP8YYjr~!4Ay%8K4Et}%jly%OV~8@-;C17nJPNKbsIJ! zP0wxi)&v&Cw)SvFp%AX1@wqo~+k#J#wW_{9h)4-BD86QOVrSQ~h=Bo5=36g6+nFPZ zdD70<4Ov%JQf8#MJ36H8-F9;EcphrjxMTTpy`6TsmcF6kRqQ|@-V$`ULG&=dlA1#}xlipF46T)@HgSsJUQ1gW?DNLa%J&Zp z95?T?AEU2N;utaCZ@*D0fhNXhxIq!WjnX5LyjA73+?oEO{3X~z@f&hxmm1~^Z5@{S z;xKiFcRidi2y=#phEg0|Tyi%W5z1ftIFISvx-b{)47cQr_j)V^ZGZ#-f!We9+B zc#1d!pG=zS>OkPMF9^`+3CCG=?!mghIurp<=*K2UbJd%D9D%3u5_gmT2graEKlzC* zUdMs+BZjXF?D>Iob;7ob0*>WsvjK2VnKxNHW7`N~l(WSAz@uzIBIpYj@jh7t7w@)0 zlYoF_{gl^=_yeaPS6S4`N}2VzGJ3?%TQ7`uj0*)O?}E>(Hx^0R;@gH0GJ3ArXJC2j zD{+ju!#>8I+2(AB%&Ub1!aq8i(?Ac|*jQy)vj!IM=3Q!#t!^48ow4zY#!lQLs=;&UqFhA2h`&7lVmGDatK(|FyLH_cv*R$}WbH{zXFRQ|h*I(UG^P_x$B_NtnCG z-tQ~g&2$?MV8u?`WNduzz5c5B#MAh{fiAj zreo0O+OWE>7FQaA_WDaurxqvCuS0h&mL$e^AJRUn=X>Dh{BC!@s=Z1ML&m$6qlKao zCV!{2LE*rswzR{trq4%X`5;F-j}nK1z>2GeCYPun1Iw30qxp#CQHuAWhch~1S)_rj z9H@BlCn15rEYHk@#CnKbHIBl1Js{?1a1?GG2ByfmWL08_REU%nX&5pRw>>f%5}_Uw z15w;{D&AUIm81QHvHk4x5zce^s|b90P9Yc}zGx{qZYtV$Nt&*I8uF$PY1ntsk)){^ zy@0tr1^PEc`+^9J5NVm0GSd5Kx+uc2KY`FAvZT%rM}%WXf$1NTJ9LKOn3655&=99 zewJ1=KR?}r_OI)w1mH}yo&FW9Jr)GENSq)_to40x^6nuA@BhYn^5?Y8B4Ec);zC0F zYVLiJ;qzyGr{>dUTiGI?@b7h+dMNlvxEP;8C=`)`Q4Si!M0^p`t@goQJMnn7xA)GU zJ%RR{Lc45$x1tkv2qVB?QiCD`Kd|u#(+!-{F)vYHfG`5^Kr}A`>`6Ssu{eM(jcWIs z;l}01IMwINOh#qqk`JD}M8S1dG=lZ<`%#PhWPnapZ0}an0k%O} zcbsosmFXqPVmI5CIsVVSxMJk8jA)-`CMDFLy=A;2`s?FwW`2DLJUt!SBUW*ry}P8d zp(OD+zij2_LF@NCYV(1$g1pou-|A)4=zgl&>Rkg+-HD-JJIIdg8Urit(1UsdSMOUKg^?$rf1%Vq#)# zUdM*n8Q@4$}$s1Y(C0;|isw8&-G6BQ;MlAv;AI2E@O=S73;P>(EJ3ha!@p z`sp}-DUl(8ltB$3|Edj#(bervCSQ{Loo7eG*qf+UeUezeJXP_ep+PEAUXxp5%c^`& zfxpy3PhB+p1=L6$L`jXjo>LJSYm)9Km4`%qs)AA&|I6Sn{8$*VZvLiOs^8Ok_Jsk3 zQItGUQ`JYhw!o~B8BhjX7!x@>XP(#S?xHQavj2N{14cy{MIEORwr{=vv$;W!45D?~ z=Pw(3T>99l`mTMqgFRp)Gj0=V zc#R)QRDDqr5UK`q2#>%?mPGW=q4t2q`oCT+`yDqGUJszq_j#>*iD(hq{~@@KA^qdN z@$u7twW8``_8nqkt(N^SvYQgm|9YtW^&iN+mLKCA+b(g)kc)?^&^4cePmigU}#Atx z){%lf6{l}-axSR351f?b&77`*n3oMg-pkx-q!))>S8}v=UbB9Cc?{>|U%z5Sxw?Xc zL|;}+i!4i_`KdVtg&hqVkjP;!#H~ZKU#0yW;PoPN|G1}OVsFXzGrmTqZ$!EDIA9ep z($PD5$Mrc>gvg6mUUqR=3QWBBGj}OdAzHP5$Coe95 z3s9q~PAG+&A?N~yRJ2_!fXg&kynbxA!Y47C;-v&N%S(kJso*{^goGX!hKpuS7!pZ= zm?LAS3j+m66-H?#pSp&9ze)+`>d2ZGFB@h%s{CX0K0BCqBesGIw@n2Ra>xGE3&W6t z=c{jez4*po8*-9IGynEZcOm2Mh$OqYiSKypWmUexMEYT?6`-zz- zy?JJ+ij48?-o`d5@uy{ZjHZHc)ITgNIQHG^L%$*ddcH|Hot)K6zeXHLF#txk84qW^ zrIVwcG?YGZJu)WGE@G_s0(KwJo+v~mIAyapp_>{k`KYIX;7mDYdT98{#Fdsug1 z8-o0*C9fQBUrB}yxuS74EJ&{{tq{?yZ0^7eojRBC;QDhpTqmu_asH3pWxhr=sJTn9 zr9fKm3P1(1%GDnXU*w(u54Ua!3GcOy0xr9|rF98G-rg6j9>#y3!m_%WEY+lvX)l>E zOup#Q@*4<30=i(sQ<$iG&N|ja$pu_81w4l;6G9DPkqL~LAwzNf*7VVJX!Hs-N`rLK z`QL;wJaR%AY4-1yD_%+?(3<8$kApe#A(DwwG19S`jTEtUdP+9H06A(Wxn=6p3IC$U zDCVkjH(cw{tQ;JYu}IFffL=)((3mbr5+D|gv_>!-F*+8nJ+eHVFf_C~A%OZ~iVX>pM;0DRVS11q&1ADCJ4+fKiRn6I-x zBZD|GXouqPHNF6ri4hQ@JSH}bE*kt9W+?7Fr*#^yLoYfvL6gBq+J-4F`^SAt{%b=6 zefw(^M21L+g)S~Lq~r9opS3ruG$w+4C2Iu=IR(+;GQ2`Ux|OpN8A9h_9RBOEB1eBg zC^?x?L2G~aKqi@)KRGywS~qF!UC~iw>Mf5dQ>Ila4Mf1u{ONwmlXr8zji-x}hOD@c z$UwNn#6Wk2QlHC`W8-7uk*r_DUmr_w@3im4pC$}{DZ9?KwEHvT+2x_b!FwwpAmF2T z_+|C+JcXe5iL%#fX5k*3UxtNGT%&`t1K%1MQ(T2nDc+=`WoYfTkbif<2E8}~SEYv7 ziiR6xc#Bd>$IIXcG14hSYT9VpwblLnKv7JWh&S>Yta8iR_?6gL3B9lkMs#IboRUf+ zf_VP6_*@ThzPUMbwhZ{*J9MQ*R2%#LEt(`6ChWU9jQRCT=nJzyqz{7J zHU)nxyfR$S&$nbm-A~oy(TEVu!N=M0c8+aHy3!x#%leof;qTneIbWOq}{A; zMbPzOZv6Uj#teAA?t3>Ib0qO+xx?>ZX>?;X@a&m+gLFiQ+||MFyX^K0x^zJ+DwMK9h4hefc?CFXRn z`q%<^&3^PMuc+vE5hcN_gNJslfyc)c5JrEz>W!DROLF_GPh`NloH!+!Jxihk`y@^D zIkc;jf!F?{ZAwce8U(5Uv4wCzZ#n^ilyHWw90*a#?nkc=MIBk#HGRr%hufEywL~a! zVfMetD=Iw@^1nqDQ&2j%YY~?#cu>lb(K<4I9_fK8&=%+?Ob0WKtmhcVQQMYqjDn0c z=IZD-l4Cu=gXLT9a}gd#rt&hq7((VYpGe9)w0rJkN^@;<(<2>vXr>qu@pOPH7_`97 zMMK@hGIb8&1w^KLz4b4GA;93H??Tv2wobL#waz;7%Kt=a*8mqu z+rTBv>IP(T#>K_yl_y((w|>iRmR|$+;lm%022eSxJpHF=+kw=ZCU)_*DklaKYbsanZW!kXU#wBI2E*0-xjjt0-9A+KfryF2_@H^n+>gwv_GoP~XWbny^ zWZ)FU)_`T&^@&+$K?+jR)XYp!G4OnGaq(YvF@Zr9WF-@K-1LF}-!D>9Qmm}3jBdJ# zZOd7bln7o$VCAoBfNnB4eFK`SZ?+gDg!uUSM!_b!Iw4oB zQQv<*2cWF@@8z|@ALzC@RuVmP}tw|^3>*bVi_Y@#)UBmRXT$76Fvnd1%%Y8FT81i3>aNZ(Kn7gs6$ z&5%<3{Ih>Z?(t&j;NO&Mm02q<@?sf2eJ}AKz@ypZIC1B?7>T=`Mp$lP>BCR3t zF>pgU`*Cp6&hTOvIFoM#cBWNIPT`um*r`E5$S;tX)S-+pl$vpTve&NNZ=Nt?Bc7zr zou6I&Db4KMHcD4GF#`}M7)B8wcs7*YNcpVFl^GBS#ME1}mvCZAT(H9xvqLUKS|g`6C?JU1#XjSB)Z5yLa0@)42#$i$HrweuaRy zsg{7)Q$Wp>@2*Lfu8btdJfeZiNNAnu-0jQpo*HdQfo-aWZnv0|25s)8i;hr}lR$`; z9#@L2V_32hhK%#t;DY4fknbC2I#_vqqO{WboMOo*7@-PH!na@zYjnI%i6j7HdP<;^ zBK~iTocNUSC#So)4vU`f4enY=WA0D*BqVL1bQ( zQmEH!pd(WA-ysc_p;K@&?#V=~4|;oVzk4)nnKdGJ*P_Q@lg*(qXUm6Gg$PD&Ru4HO z8vvYiR(6+jJ0%!|cti#j^|L^x8N?YWC|Yuj6%Fzu)9nag|9xMI-BEL}P;YmAv0Bs5=c~g z;J0U;ss^4l2msIf;+K)AtLI=`c!DZ$jp6C|IB-b0@{l;poJj%g2QJc!(K4< zr`(jbzsns@ent6C<3k`B^>lG`EZ^!!E$UHP zPx|ffwrtyfkIe!+ajk3Rl_F=|!ifUOwJQ5!+L#*z67K9*ut68s}+8K(3Is?gS;^Z$i7E5K|R`zxcyw0Yi6yRH%Q6 z_)%ZpKWfA74#AgwPd1Tv7RvD@e&r5HtgVN5?1|yOSq#yI{k$JjyqD`AURloQ*_DeW zj6X*v*65W3pc`7|Vzy&f=)XtM^pU9e235!9lxmNB!`jc0N_I?$sFfzV7CBex8o#md zYozrLTtQuQL+Clk!69)Z%#5X&w3tvN1VTnuwV^@SezYG1JJg5iw`>j{EZiCWK>6G2 zpz!G0QEDjSMX-J+OHdxOa53y0 z9SRiAKiDBfsaWZJp@Gz3mel&`mG_t|CA%1zG%B2Pd)O^IL|R)t21d=y4|Mlq*9dYUi^y)Wio}hN z+w-pTz*f7y;Y03zMN9jF?ehH^qO9)Qm}60QYt>qHC%7DY#*u(+B=lFiDT`FK)9Tf} zllS^Ej(A1S6xNpC>h=1U6!ydWr5}fj4Q;@q!*f|1=W|K1SN33n_rTEf_2EK*M>#j; zOf!S3!B2Ruqn{1QtoZF#ml()R-p%$sCgK3$nxGso-~rqlwLEWs9H>~j3HC7>Hy<|ILL)#9VOR%BcJTh7wx0d`QL**RgaiMEb1929R3X zv@Dl@AooFFDGjY2N_JV=-?HdPx5_V2aO)9fj-r?05fWp9;p7%`i5K>C>g`@D7O<5S zOnskv>67+SS1-}W#$2Gl(-w~UnpP7xX9TYR`f^P#W@{_8R(WI@7F|9qDP6+(mN|wI ziK(&qQolvEvcKi&Zodu72^?6}1ejeYQY?l>!Og8+I^7VsB!gI{yT?F^ff%`-@ZCO_ z1AXjQI;Ydx^?G8?Ym&9|8R_X@d+2&?1T0DQaDrQCKTs0`4k?wqFOrj!Yuzz(ad81F z#F;8q9v(9TFrQR1h<(_c6Q|}UT4SU>SeycsAP6y0+7}}K<0Zb83REI4MeYLeEpYU( z7k2vv73WoB1yV9vycC3+3s3089g2@HK!Oi4oFSYP*a0@nd+v~&8C#!jJFpT%DURa+ zK4hq#{v6`?g_ZOs9lKfM2F`d=tyl`Ba$Wqx< z5vz=Pcr#;E=e;(Bk>1I>>#|-+l;Ywnw~Wpu4##r568^6~z^{RW{Z7VNO{2~)(?G3u zo&r035Jm^BGIIARDLDw&0Fs%f;XHSZ@A6BhwRMMh^E#2oBw zVke!5@?T%IZJfl-|I(ds5a`Esi>C|if_$?mP8%x5s9z01uqUB+^ceHkE@f1*D(4&5 zBmYp^WB+}Z9)ms%`dO029N+#8B{DuQiXJml(i8%tu3b!>T>p0iLN*)`O6Qm8L6kf% zwne0(r4^{vN+<8Eagic`?$Cq3r{YVd&nJbFCnK-ZWQ2Fc;l4K8cU~U$X@1KC$Xvxe^w?wXrn;I6sui{lKJ?4Sp%z z6mtPa`G};IIo9#*5u`9);_JMqW26v*%8=U@@P5XO3q^dNhw4>UY4neerC#|(X-{he z3tsIT>R=KCywo}Gbk(^N>}8T;|6P$J4RACJR7h11ywcazJ>_Z0cK-g0F^X+hSaqe% zfGrMGDfxmi^Th_hp=bSf&%U8wBYg)rH>d|H9+;Ezr)})Y^AnSlK9qE}uzR(LK~7k) zaPWPd45>dIQ{L^KCj7WIzbfzDt?_vtIDKwd7pYXu@cx%n>3!?wppxkZPL~aX#ohB* zkp`LMSZmw-Uv+RcC9@bTXbhUho?rsdusyGymM?;t3;Ty-m!?NlJ@NW6x2kMG_x8k> zL!MlL_p|VpCF;X2PDZnjenPjT5<0g9HKiWFljy`!#<)llgt8|%^>h7G;h)Z5z` zQ)9w31)wCdB+?{K?4eUv{(K1``omqV)PMw%dABVHSOs1 z810r%#ucLst9yN?=bPEL`lS9DXRLl_;yD?ir1|ssNsrf#jz(V1k88I*4&DO_;D~d)kQK?^DR*9b8@!gMh zqTOux>{V!&v584n3RP>WcVigjUY$@jo^BwPk|oL%%t)N9_vr0|T8yKWw)?39W%vT< zUz?fvkZpFjj(q%g2eCX!LwxpkX`?{McK(F|8jUaNfIf&+0^c6Lhtq+^e*l6JI>=l9 zP!~1KjYfYYGWzCnfnpr-+cJ*^_JDtH6X4;LWJdWWh#Q$lGR8 zs>ks*G6IU6D|r$3-Vphyydlh}inctOD;9K(S+b8vD=GF1+9A_Wb0=s-A$%VaLS@Ah z{WLyWRtE=@HsDz;9EZvfFfdVq}|(CN)c>I;Xl^ADj9;4*1TZHa8pn`@Zl!e>wVU4mgAm7B^ZzW z+5xI5{~LU5&HfC(1G%WrhaHcNpq!`3Caut>Xc`pD9qa+qML6Iq+4F-D1~5M>emD7b zVI*T3#U?!CJUi8GOT)bIEn%o($Lb-0i(!7@sNQ9i8eWbE|Jc-7ubJxSD3Qz=spO;O z`q|WNIlChDNhO3(6)x&8zI?^~adg4a8hT#@Np`+`VPR2bk+o`*iT;URnLu14$y$$R1yR<3K$x05*iJgWUizZl$MmS zgfBEA6c!Nzi`Za9Lv%)Y+n_#6;^Xoc2gY){7z2OUI+!Gol7^azm@j7;kG_6g|931aT6h;8v3f~=_a zLqIe*n_)Ypf6Peq?rki+$tQbK8d5mx$V{Klj}XDKzu-a+`EL8>v))W;OrY7QxsYBr zURyJNij2q0jLT*{Q;o_GwXbQnd?JNu>|{;miS(qBEel-U(&xem?YSZJgq);-pXFB@ z*X&`?&h?&f5akP;lsg6NJ3U`HJ@-330G~C6iK#%UnfJc_sxS`^s1due`Y%u6(71d> z_0$90j9Q7Gmx3xBaF|*#-hblSf8u`i`N`?N!3hzP9e1QCxB3u#J9g4>r~O}7aqBE<#7$?Y3-fB^49EK<+;x|FfpnU^X_>N zr|pQ%sr_;~`)O(PSJ-}K9t;f+iP@YQVG;wp57;VVX9l!WnvVmosRW=m6CHOGUyTA3 zlm~|q=HH@4O5^^5VMOyW;^I>9pwXdt(&1)!Tw3N;UHzF)2sdh{isr@8Mmb!#82s9H zo(_+#=B zx9XQ2T?rDA$rlsmPYKod#tBt4bVa&_Q5p((%yWuwyq#kkIm^dXug-7=?KWE@Q&+3K zF&kM&2pCju`m>xCZcl#NRs6C%UTF(N939=?-v@;yANBO~z)dwj`lvzjHn_0{bN>F5 zdk%j&fMut(;Xl2|n3&{Yd@0(`h?IbnGd?G|Obi7r4949L!%rs4$3La{jUBX!SqecB zGDm`d#R#rkM4795$7D?W&e?%iKk+-GCJ}Ce#IgReP=%l1SghZ7*yniAC&A|#703*R z>#U;u9d+u+JYs$>?#8bos=zK?Xzcb6^EBXK1eD|Urn;uqlIIv^B})KP7;LaBww5__X` z)N9F7r!GV+^NEs6zogQy*Ri!!jBe8Lx>j(MzqC}!+RO&MdYznLHKFp= zp@k(&^z`)p+?^Bdf3j$F8ZQyBn(cqnlkK~o4$gx;XECDtX1dn6QlcT*5rqFti3(3a zK|p$oqTPWee^8&IgMh>fv}ckJV}1=`D)2m7+S5*u%Ui#HRE)oY)*DvdC(%!wgP#b~ z4HPI!1ihSII}jKel*$4XGMYg*1eUgQ8P5!bLAs8>L!w5D=ix%5lMy&PgB`A$>;SHJ z;Mu`x4V>TsFH!e>Wz(hT{TuGG{wW|eIH&-L3JutK#~eX1`cZIfJBKlb-t-L( z$3MkCD~$VpN61>=_`{jQKT6m*n6e<~YwkBq6A|xn*{gRL^?VygeM0w}POe z;dbMb4*~$>rajF~MF9*n$;rt>AP5USJ4j#OMT7gcr#+{q_4|j69E;y&^eqGAmCaW_ z1(ux?iDad`H--|9A2(=K*)NiXLsgQYo#)5C58;N-%n(q1h7@f1+Kv(e!Ws%R3p7p* z^jEbsm3-6-C8|IJz;o&IHo;1xHyYCi7znro3_x4%lDW^1M9gkU3^WSDep!<>`@e%& zQ&Qz1YmuAzo>C|?Z@umB>5GtBp$&?P{M?HJg(sc)Fk5tF% zwOSf3qb_Hh#=mB}%6H63WrHzX@87=%0gl?cQF-#%R70RGYdV)PgDZkW-i5D3&IJl| zjweFAZ}kq}e8eJxtz^NbyBSR_BY&Vtp=XxKH=fHhl8=vJp4{ zy24)JA+p)S!i)>Y3_i-e9_qD!5#9}il@+*KP$MZ(t1FmV@{bY7_3I7 zUXCY${YSPWWc}TU4AqNE4>W*u!=KD=uZDK%?<|eu>%&{G0a!lLnkdJaC?&J>t+YP?56 z)9_K%b|&ADmytt|?CxMFd?(IP+sG~AcV!R0t7H7DpBCeFZ+K~s?`mbw7lwr|t1}Iq zmhJi5EYl)TLW8;b{Z?-~n3V}WOSKsicYmQ38UYQ#@pMC@qsWjeB+9wI-Ojf0c3| zC!H(H#8$iI^@BNi7}tI=zGFfHZ+Vymqz&^ml$7q@I?e2oNkekgx~UTtV3Ic*(lGR) zX!2+@+))i^lbY9tOj>SkC=Bycq6zL_NgnC)ml0~R@d-ouu`1PGRqC5hT6fMjCMoRUQ zl7K}Py8z?(N0qBSKVY|_^@^`y6eJDlwZ)}4+F1Nr){n@GJOcYR7i$4_Bg$^!*oPd` zeaG#Gd|s=MHzlYeqkRk&lZu85YMt#r-9_K0wZ*aWHJ3e-h{V<9hH8U z1LgKy#+{v=c)F4q+ZB&~RWzG4FmtxOyX{N&j>UVpTd(Ui(e?BTE&jpvCzh2f$;XgB28q9M--h|InWPvD=HyM{+xC>g-w!>O zydozDpT&!Jcg?DX=N*^jE#*L?cfW;hY;0`9;vog{-14HPk!EnWHiyK7CUsM5C@{ zP0~Q4E|ax1tr`yofoEeiWsFggk&)Zm7EU$SYoRy|dgXSNZ4Hyw_J@_C6<(lKLgFS= zqG|mzxnuKQA$W%JOZ_joSqBG&V}QiLFiWMV*HOl``e|RYHpkWdBU|tTcpQKJZ?;uc z?DEfb!0L6|-Atw7$B)QC|BZGz0r!i~8yrujU}6;9x`G$T@pTYl8bz zVal5@hF3o`(08Mnr_h|q-mW$9VR-Z2^B~s!+pqPh;o(Od@#d;J4C&z-nL2ehO{P~4 za26Mhmkow?b^j`KzuHUL=w-Ax`(7VW`duG>G|Z}mmrCKXvyQ%1c{lTKOv~+TEto|$ zD^o(GQCy5qsO=tDc>mR3FCO2-dW42U8G2UuPeTbwik0+xBnbj~u`w!=f-y2|OZHdu z3cCC6y(^=O?vx{uhjM0hcblh&UTjcjOpOH!TPC-@@Ni#_9lM=Kx zF)CFmhfmaTT2+n{kqa>-KG*$|#%F1pbwX=4PV8>IT2d`r7hDvVcb}AWZ@!01j6=WR|M zJNeERJya*(k<$53%PPbaFX+|KUZ7$28lSt?&HHby$Om3)0~|Hmst;@ASI3kNl@(+x zP;(+?eKNbuZxM`Wq+)SV-y`ZUaOZ{OP|Xjl^K9*Hx)fnuKt{rTs=egJlmKx5!stHt zUILg%5r2kcOLPb~-W;vowMqD_8r|q$)Mh_Ui8%W8yc@ta{D&1kS@I~4z3roAF8k5$ zol=f=IUWxZER_-lD}E>3j7TX%a{hX-M(Sf1)+M@-rE_bSeo;P|c%bXLS@y%!3~GNK zrsr!DGky9BKsDs0wQm2`2D*q(D?3sMa=*HHLo9B?i`K~b;41Uf;Gr3a9C{Eb5+@8H zJOUF6={kM!b!hdjbJ^&e=ZuI4a-%y-Yy;NG{QtXJXKWE9i>A5y!GL;uyJ6{!C)n>N z)owGK5K1X584z#H`0Qq*Q74f0RE!WKmMLQJ0dVrtjjfFLUBXQ*zu4| z*AN8-`uy>O;K48CpwyCo)HHDsjgh4h!aET{jk_W~cyi@P{(&GZAz3CfbtA!etS^j7 z2O#?pA;*@dvq%>-N`fZ=;=BcCW&yVBA_U`636_lFB`9gO$YyNf= zIMD}@@n`4R9XwIFO|P1*o%`B9qQ*M5oNjBkA3Kevyn1YLP;Q}WI-Yd6muDyh{%ynB zjxTx&bjViyJ|uqYFW9DU-iD{wc4r9(>~&_fwKN?2pR5yjE&ExC*0?UcjiI!D`}NqP z^ox(7r471qIsJQK2)h9_5`!Y91{1Yks5m#T9Uo#Ws!!?sfyL3(@J~#ZbGwl|J!ML~ z{I_bA@F^4EoBoe_NQ=Wyp{bv!Dfie&tbpIKBjwKoo-d(Gf()#|^br2ew~*w6u6Mj+ zvl)R_?RK;51%I3c4?J5y2FG<5QG3Z|Bm9-!{-rN?XN?>@uJm>dF*U1J$4NRr7wRzC^^ zGYVM&WrvNqP0uLZ=(~`1Vg)N(f*CGZ*UoKDHn!{g6UF}gA^s)@02aW)UZMY)!xF?kc~4izjRv{jO02O#7Qz_dp~T01TI`h!8tt8 zmQo8Dz(#u%-C=4l+}xOWgNp<}aAo6G@i^ToXG7ol*RCF`s=TETcE71@1dafC|O)cU%wg2vDtfTxLyNY*B`Iw;Vf}>gG|smfwe7lpc`E$B!dtw2|BQYyekcM?o)M5SmAELd zUzpWlAO*2S1vYXNC~eFMh3e>~kQbfPynuczr*pyI^|=M*tspYxaH+a{vW$ZbN`7AGC5PQE5s5m!X12T=pWLl6hRkTuMt+| zqpMV2E2R`0^nIR*?Rx}z2JQZ!5O=a>4iW|oU;2|tkcOa{vYEXJloFRn9KTm@1nDj7 zC$*~eYiNI(DAmP%j37;oc+OGH^xO2Z>9Ixk1pT{9f4LNiw`c$!BUXACh}V0)pHVLt z^(`3vdjuaBhUe&C1#T`3*Kr0ECyHji@8d zM1h;@92*pdiw{sDh!92uAw=cUxgL;AFZIS*o=G*6!x1GTa=gv*o-FpAsciPl_}UbA zwD|rq(62;yB0;`FIM1C0FJ5)%CbO}!CR&inPWJX9K|Yzx9bZrLQevX`WclrRmd?12 z(<{`px-A?km zKJa};6~B-__5tz?$*F7%e2fQf6iOLK7CW4^vxxQfn>1n)eoi&d>QY@b-+1IJSThmj z;s%x~Kmc-;FN{(!h?2Yb8+=1Ycy7{6u2RNJpJF};xjr=SC5e1Zdbg|AxQE*q zY?}Eo|r&eMX4#C`5cmvGz;i6_0^#{kOCR@7w)eot%LHn z4Al{XBVLmWQ%AED6MYIFNFjdD)NhM^ILF0jj|EtbvuFPLla*=o5Gw$D{cQlMBkx8) zaZ%3H&=X5V)W$;i>a$;5lr1=b`8pFuBc%1^SWI2?W{#lJck)MIrGqPjro;8q8!K^- zmDIi~J$`;&F?Z{_8t&7z(64O|J9%x?6BP@dB3N(47J3EaXXr>Wzu)~eYI{zeZS|!Q z(f}NeZZB2?*9Pmg`BCk*VE-x)#hfpL^R$7jHY(97Kw{pVQ%B3*YNt45<7GwDOwo0! z5eINPBJsGVdQU$wQ4MC(TMjlXZu2yTXIVJisxb8~B| z735E0+|KjT+*&zz4(_-{{mUiio^u=uU`artW6r^Aqzo6DU@Is*MV3yYZ>T?UR;GoH zCaFx%i1vnT3vr(jNi$-Gj!W0}%v~*+G^wn>IP(aGr)z*k=9val7#dv9 z5?4k8QRm+!Ds6poENz^X1{2dKnsuUWC1x2&@LLrKx+OY!Vj>%^G3deb_4RcDT(~CA z%c&gM5DYsI($~qdG^sz$)mnXR9FqW^9zfRySf4!x=Qly+Crd@s2H0$qRkvSlU!J{s z43wDoA4g{y6;<1X;h~34=@?2vI;16}8$`O1?viHc?nX*bkQzEfTDrTXySwW<@AnJ- zuvi0g=6Uws_r9)6T^JC-iY_?wH8oRIBk;GZHeYN>ZP-CF1K1XKfa#;M3g`SDz8uy z!9Oyo+xnJXuuuHEJ7ln?jxa@H+vMB%xihT(c95Z9x!FU{_O#_vnZ0yr@OktS`jnja zv<1knJfOE8jk+)(bV(?MD>VTSS^ebKfyEabQ#Us^;4j5b?j8CF7_k})-qNsR4_-bk zpZa?=Exo<{j_7Wn_W>&WWU2*7Zi{%>{oPhH&=P+!7#WO7>q zJ%W~=Qp;^n$4ZV6Hk4BMx7m_gW$OpU%fA_4n{zb&0wb_)=fWxLu`#KkOIdxJjY;sP z1Rk4Wl4k9U|5YS^37Q#$%sX{rqKh|=w*UjSQmv9@#Hc2it$G2VUSIF=5TOp`URM0WzdVl0XG-Hg zyjW$dZOyN9kQx{s=LvW;Oc^XR_+1@+LLX~C!Bi1>Vj4sx=@+0*7>5f?z$*m7hhTC$ zRSG3_NEqXUY|Rs#Y?wA@u1()*)PLY~z4=mEOWDJ-SNYS+(cXktubvjRRnIPRwO7(} zE`L=@cKh#n?*N)?`51ny*)a3NzIF!Rk_|~6H_?3Ps9y&mPM-~i8xa(WCoj7$#E%G% z(+P(FF4QP)n?SYwA?YvejRA*0jx6zDx8VJ<3ldv{EwmSWT{RB#n+o{G-n>r2-VVnB zzuBAfFq6Ap7E_5@ciCIwdE-X$k0)=HbcNq@NO)@Z)&aU+s%u+Vz;dXK9)Tt%R}wkT zPEKhrP9P!sdItd`23(?UU`Y0}WbnoCJnw||D{$iKKyYe|xne>XBl<~!$i19CY(~(T zT+8P3YRA&XhP_>O#1mZA7dk@lEbb36&0?_-YVi6hOp{a$l&`tyxD`Q+i^NQUh6w(t z93Gtb6Ur3IQb>*mGQqKO(YX23n?WO|U3!0izYw~RC|#=t`%~kl$y4C1E>{}bENC}i z!=FGdwV4>F^otsJt@m>0kcf*z^5^UFR>Ow`13r zmWGsB@xC`ken0vULXJLu7URJAA%%?mrC@aN!Vl`PDmv`qRKfVkWj6Kxs3+RX0pvzs zakA*zGk;Z4@VzIR;h{@k@-xW{AzQZRQ=$*^Oysgp<)Z6ezZHF?fH8=sa~1>&qO`Uj zi}Ig!jQ-M{5%b$X;h@2M$-#d96mu%yd5uL!fs{8HNt&h)tS^LK>0=w!^90p3b>)BLoBPZ$-?!i(;W59SwcA2} z`-jN9JJfd52l`VzcTYn&C@?R7`OE(F_rJOk`k?Y^UAy3WU1oG_t4KNYbR8)(6pXK zEmHiZCtO9DYVo;e$}+C)V2L?)(6rfB-b@fZ22Tz3OdSJs1>>TFI68Gga64%1o=6iy zyD>3CZe2_*;56W?Y0p>Mz1G@%@@y(c%j#D99IT=bD{_-&0%rop!BPqDv5-sxw&WSK z!N_>JU@^j=aWv^z-QRd(XwZCN`EYfICYg!1--nENgY6Gp|4sJU{gL^eashBaggj1I zqD=Y8(Wrryt8n24nvX3IX{H$~9$;p(jcJBEL1srN<-F>5>lO8HRw{S5iG5f&?Cx4$ zmWFT`qwc&SfF4wBoCXFN``X4kgE_L1NCPlb-v*#YBp`t-`@73kp$Ti8VN3yp#=`-| zsF|JAwFtQuXyUq{Xk`Q~;_zYcnkqjC$r#S3BN;=FkHxzcy$a;kfx!ZzvvYH7-JPi= zKpTr=c2JwkD+@S-LkBCibUHy7@$H`VeP{4O-c#M%VT*~~$*UGDja7efB9@N{W=v>M zQ;W6X9eT7RBr1SF8O3g0KScz||AG%h>^<|;kEFLrGSIs5G2nTxVbWovZ2<|$R3Zpu z!EjQqOfw&Z4}!#L$I8#CXCr6hQfo6PN=a@yyQGCTIX8{(bC~V?{17RhAv_c4CY4r{ z1F4Zf{1HSN#GP6je1EMdLEJs`0A+lr}ruyfzz2#X!YUxfZtW`Fp@Pey3-t5|s$8tbu$&4D=Gy-6 zten-fo8PW&bapIv1(84jUw%d6;>g;Cup#ib*m>erRLVB~Jpj^5zI5CmPa;~Q@0!f1 znq}KvypjE%e)%CC${~}bb9?o!^=|MA2s8mmPY4*8Q4S0P{noB^9Nb2`ly4(Nmc#^7 z=X*b(@eU8tYqR9Pukp`_1-*^O ztzR_>jXNS-IEKHdb`>|&)wOu^0c!zDiGtD8H0lD3HRZ!-wrbLUIG?9K#cP^zPT076 z+scu{M~R_?*$0X5N05_d$(Xnt4D^KsJ0#UX$%P0yu;3CpsnNddTN3nQa?=?3Up@Mb zb%}LrmVG7&&Fg5L9qC#S$GQ5G<6T@RCevcSq)~hYTsZ*Yo6zfwoBn;QsMpwi&-U=Q z37cynhnAPVwp+|Yu7j^>Ha|R{_TIo`*vl~#2&z_2DdyjwQ?0(tuHLUP#FUA=E|UF) za?A?y^g8HZVT6Bl96ib>baW*M%a{3A!$L~~l{FF=5%IIUy^f2u-=2HWTUiWv8Efh9 zeScL$jiV#RT5;~#)WXr&(857%0UzofM{Zp>r?n)d*=QDJeKp_yLaL7 zlqMxSjUw9B)eVMaP--q3fcXbVFy6lhb}_SEw`5C|Sebz9#PiGA z-%yg0t%-MW5BdSSqOW()*upq{6Ej){+x>WI?Mr~8EUL8L2GbVa*^7H1Hv%Vgb@Krx zS+Ds?S3rx{jFq#tDh&}_BKe&M-WFD;DHsuwk`*YIKZu|<3Otmx2 zH)b5q+J#JPxXcE=J)9}SI$4vUnD*-++ zKrG_7`hp-v8_UDVyXfQCPu1=yIy42wID4t-K;%>oD%{mZxClNlYlmCTmJoRXfhZ%c zM1#ti=EL>|dC~ zLy8HjSJ$=OhNU(yJG2_!sOoH!ig&%q{p%|xdl@c28@}izWWUUW<>};IgPz9POAw4-`ej64Hi%l!npVEE zi{?T{cvXa7?uey2Rx6w*x$`^v7M;}CCbrD2#hoRVhVN@yAA514#C zYz$zDlg0GugsBM#@bpS}jH5~f#MByC1$7bcjY)zE#H6l&E?a&fszW)p(JmX>HGm33 zBT^AH(PT6qpYuihM=l4;iLshZi0hVu!>M%dh~`$ZyHj6mZdF8ILPeUtNembwgFH>D z?Ph-910Dr~$`=3A^|F_L`#v77p4~!k1IvsI9%keC4sT|ph{J#f4mh{3)?&0k zk04=5#iVY%QBUb~&am>4j7FlKkou2I&)NDM>BICL-0cnDyfAR=Mv2&w?w+9Lu6=Wn z`H%vfju=HqAy9-hRZsNJTTKyfq75m^=i>}VTq=YFY}u(1zu8kzFqn=}mo~}3L>}QM zht1ff1v-c2q$&=}@BJMV|K*4)|JGOoGLcw2yVO{dqE8&kq6&$a6zszZAzh#eNW(*g zlcgyDA<|it5Wv&&gD$k;?4X+0;aC*FLB`2x zr-z3za7RW*KLEk;Iek~9Z$&Go)3>Qlgk7gtE!E*h1cNpIqQFg0x!XfmP!nQcQVEoF z4@UO)p}u3U*RF3_FU3C$*K)C6)Kxuepd9?jdssU0i$_)mTWh003x@et_zUKS8R;`i zSQK{qJuVu8of8c}fUimRvS!%8W{36Dv zI7$)V;Vsl?HGJGE!7pM-bv*$lCD7$VLjaKjSTBK|Jg{u5B&mA{I9r6T#y@tgpCPe( z!hx~{Tz8&Np-^b^a@+k*7Qo86>p;NvJu;&L{*(GibU_CSlEy7hQ^pUD5U-!`wDg(?5CUjQOTodQ|} zBvlKwK4W*Xn}Md|r!WLPFdbgMV+US~$xcjtAkq|}q|5v0$530Wx?GRqn_qdt*8fubu%&}nYMeu*6mrkT!V-!5 zsqaWNz;4D!;QWwNRwm>?JRB*A`4uJuM<{VOF%yo;yDwn=PT3#KO(~GvrcOKv8XHms zu^BR<5vn9-z}4C!A0Iq{IlaD*mQziicej zPorwe<+3=Tb(7`N)k(>|O<~QS8eePc^}oaVozvyK3}tflgc|Qm=qH!H#S)z?&T( z6X;o9nbWgA9G`r56r--Hf3NUpZXI%amH0Q| zBjT6N;aP!O_ikg~?JOyyx_dpdXi#(g!6R%r?`a_K>AyA*Ky-@X1Tw99K(A@kqW1o# zv3>dQp)lq3x&74xboPSr;i1Q9=7nL#W=8b2F?(&_$MbbZX7wqnr>AH2<#^Tq8Sow{ zv|lNRK2M3l>XFZwUo10q8g>w&2|$Q4?_v6v|2mQXIsiNeIW5^YwgRE=mWP9~b_=32 z9h7tvMnppP=cTcy>%6wxBHK9s)v{In=r6Nb_(4CuOG|!{-5=ML!H|GdA)%;43XEx_ zXBmalix?59_;$ihJqOzFX7XM`q37sA4N9*Ej!%75uaU1l4Xyq~wNL4{E6!J`?EYQY zejd$Jv+`x%{&=3|q(1>a47H>)E&2;rlbZN_lC)q_V{>in)Zk_E6UolKt)ZV8z249J zi)fX!W5tuzPZYMHCbA9}+Ur}3%XyUAI+eD&bjfDOxK=U{3Oz_fou)C@Za*BesWE!7 zs@yg?Y9XQ!2U6);W*(8K+1;OoQ|%`i{jwPV7^bDAwY#$;+*vSV13d;nYy9N8wq-M= zbE)tFoJGqHK25_wfW?C;Gdr7{ifR?uuD-wA6>+t-&DyHGXN+pl4O3Y{c3jsaYs_8z zw=O7#a#X9&65MzLLPTx|K^(>k5qnbu4lS=LhR~`4BttwirL`Fd-diScPBJ8MArKxU zMhGFVg5!#a%glfx1&ysUb;gQ&y>Y2Bi3oa009NwWI#DE5ES<@6>V7HBVbBm1pXop# z$SM89`dr&rEb-#sv*)WznH$DdIzA;Lf(9e#L~N6>i6vPyq!J4(m&Lg_-x#ThmRDfW z79fL(cM5^>ONXt*Ef$iSg7@S1a8S$C#{>ff&i?a6TzY5+b72sqRQYPDHY`e*O7mlK z0tN*ds=R5go*FU1zjCcur5Y0>$mz5Tfh624T$=GGX70%Jh_BB5GzS?id0)*YSjzA< z2gY6a-gQAx;k(hOi@*tl=1PC|C2xJCu!{}8{QZpR^3z6r1i8KmG}I%Lw&B1-5qZPm zb2bqUzz3l5291@1AIOCp9@gW9&*zgZ4PPJl{`q!c%9bg+VUcIr+&&ulZoO#M>ewRI zzT2e|T5f&$cIe@-%G>^X+`&W1T1L7z+clN>bg5lPe$aRO@7U8)BNYDP@pb4Cy45h( za&atrwM6xL=jWlH@hv+$Cr?jT*Z1Yzmh@Wlo4F4Z`*=b=H?vi{Y!)8op?Es%v%Zgh z-REG`U}JLn*^5Wl#vry}T!07>4HV4594$PiU<*sq1tH4E#ntT)5n|x?|K#R4cCg4H z-Z76fQL_*v#&gog#9gki-+Xs$;^54KN*ep8WBi*w7^cmU+Q9QZc$8~dL^PR)j3}+R zv4J1jWHv2mM`U3<5#$y}UPDWy`7T3al)XG1B7V2=SFaS60gNk>sBBo&ap@Y}xJ5xh z;XVo^N-b(5vwBn22l?X~BdXQqRfx{Us#4qbEm2pKmvpC}9E8C^KV7%|dr3+b0rkU-7|fh#)jL#O}D9@2(6~W0x8< zmewRaiTL^i_f>gW!_wjed-ARDY8nhWuyB*_h&V{8-tW{NJ&tt@4IOT031kb!tP1HI zsYtA+ljI55u4m<0%2NNNq%=z;6F{Wa$g2}v{M^m`UncXr@JBh|eu$mU#h(J%_ zT5uC^3K*j}Fvw!1e@&e$>c{7MmbVyIGRSR+zI}sO%e~7}t!{dno6~A?OZ0jyddSY& zde5+W|8VO0+-mtjBeIl83)#r?Vgq}RQTc#`B<4_M)Zd~y549w_zVV;$)at7H=_S_b z(>>M8=;}*z-|fk2-me9x3~4nDm?qSxmC_-KNhL?neXS!9;On!NCX255w;K^iH7@xr zK7|O1<-b@)SSixPsG*$AyrijF%GLMfRL2ku`!_T&i~S? zxy&g-F~clx7t*bLsEiMXhWrksZDouXFdT%`ml)TjT`FNMkrMoZqZ1;}L{A?Ca!bp0 zl_U(Mu`tz8$4hp7PjOW?10_YZuq|f!%|gH-gc6_|CV6DbXe?dRQLf5ez^#c3rUs>c zM6hG!-z~2RA=V~HVnq;&r@YXVUYUD5$4yRAm!d|i#$}Wn-s&dwO3EOvPXl4VBY~+C zLUCB04r@FD&UMwzFa^wDtmudGmYCdRyD{}&C_q9k@`pC9$XQ5Z(5aVY{wkPbTasJ7 z`x=;39C7iMf^*14h7Jx>wHOiq_CmvI=A;2oqhRBUbFpW;vZR`Ws_ZVxWfhR+z$N*q z(+Luvb^-~iXYqK^2qd%*?Slt&YQ1`By9mkpvueRqSbNn0nVBR;7ojG5x8g6Wj8Pl> z4YPnSFt4-ex~&{q4|I5d4J&`@v+Lc#!9gH*@H9giMh)^j&dF=^6Q;z?5%O?wcQ2gU zmt_KOOo7GD4&eZxTx`0 zZix(E-W5vRtPQfPrN(KBTwI^N9HT$CZI4DyUGBl1s>0!5M^n>{2Qr6EV0G4t{KEE-+2Sxk<;shKq!a_ec=jRvb-`~lZ`~IxfpBKIROUnSH z2dv+(oV5gh;sv&R_|p!aT!aXPOWnb6ku^CBuim=?=o=CYa~f)}w;CbU%48DZ7+b1n ztclrjKL_R21WC8x@+Fu)zR~1CVlI(`~$WaGCc| z!RJ56F(&kkRjZ>j5~~Iepa0P1Mr?Kez_;==KhSh6qz9DT5iz8p)Ukr469^1{evRI~ zLZ924t4}*BbrivZ$JOxzTM;wksb_{7@{|azrzy z5uIKDAM-xf(@6$zFLo@Imc&yx+WRXkRrrAUI6E5uwGABm?RGc1<~$i z5Wg??^S!NL1hgiumm_?uK-z9)b&{{n*VQ(9Q7Y@l(s7u{yiNTiPb+X=WO(})z*7Sd zDQ>_)3lL2wCMLKoNBMXE>#i2BYi1i3s+;Tpc$P4eB)S!0Q8~Q$9xsS(bm973icP)u z!_~fjJ9d_BnPr1P^=$z3m6#>K1W=L-xK`A6pNp6MEkJ5x?RLh&2IXjuXExkhS#!0?D#WRK91OfTLl#amD)( zi1-S_aYxbQDKZvjXJ(dYmf70c0!#V+G9Fv~i3liIU~2y>z}zq@bXqst>-;p^*mk`O zec6Qqi@0-hb3i>!>3?Ukn)ciCoCd_g$|}cXbQVN}fsBx6zm|RIHd~(rv)JrtYmHXG zm0hW}Pm0(f+EEd9wmA74`m?}hMl4cW&J0-!uY|(vhcgbO%JqHBUmA8zt)sjC`OHt2 zi?*!}e93lYiL-mT9@qH@K5-&mZLgutCk#Mo(8}{pDWpqRgx`CFGogmXfILLRIxJJj z&!Kf{>Nzk)K2+RoUER?-5{qJhBZG0wYW%%H)i(xjuw>f$DXNm*w<(u$y=7H`W zpOY4a=tE!@)ye++2K@^?OELi&eJOlr1R`Ms2<|Bef=DCFZgE%+A^C&qVi*2Po@0=PTrpC?Y-!C59f z8Unauc%gwc_YegBogegV@+yWh7X?glxo_gw)W2MtYK)i-uIH;Td}#)DmuSDW$|O($ zAX!g&ogE1f4Q?t(;=9WiI2xUGnv)``UOJOAxHPq zm>@)qQTPxHGl%W~kvAd3=uLS7dI_*J4x?Dm*zQ>hqRI$*i(0O*6x^gNFlXpEOKRO-8DMxGrG=U6 z`MdoOo@VJUi}W4!lfqWqch*1OFAfhIm*N2wm}#p`y!2^aL^>!m@ZOoz=y*PV`w2ZryHphg0r ze%Io{t*z_*T=v;=&%^(CIez82cBFZpPDBD*igSbY?1u?UOAg# zQ%)cA$ThiOu&H0-fi`v#bDAQDAQQvUeY5DU;IV9Ys!g%GaUFTXqtvgZw?0Qbe9d)@ zo-gVc8jHsLG-(>zAvUcn+*cXM@oBd2Qk_ zKpzFuw6(K4>W;(*?r2(uUfYrQ3>U&i0H{LqNGAuQdb(E|PH8UN7 zak3mO!iGbGz*1kP`d4aQs3f7{=e4&HxHxEE;1nUVsA*zf1JeSQzyijdb(nk1AozZ` z=aj#{w==xF*d0Fw#)D#v2DnVcLc6BATwsz+xpAi)-^H|kI|*VG1zEPIN0>{&Rww*5 z?IK!Tsa&sRKku<;!TH~J!&e2rY(D#buza-J5QG1mnA(*(l;=;E02TU%|JAxj-~{IO z04Tw?-9Fnk2&!Uz{wRc1I07?Qqo5dKcJ4_6OJD@6f#2o0Q-`kM1)$+6*BDRJ>8hm! z9{$W69F(R%kuXm%_X;Tds3GW@z+{O#o}!?76Q#`f@z5>}Q@Xd;oa?jO=xl!RJ8EsK zDmD6XdEzX*M6npK4V3y6?Jv?g-Fu1R?(4)P^i-RI@(_H0O$XA3ao``cB>KeEBCzlFluJ zs0w`wU6CNXilU#6WZhaE*3~GhL(dV2jA7}(E#a7!Yx%vx+rbjBkk40-k1-71dwQYh zs3ff;$vQY3(}jHn%0XbyXWfZkP>{Lss$6MtIP=yQ9(&qh!f36gW~z+Q*Z)_aVPlF{ zy)NLLEuY%=)EfmdG^QWM4G-q7`m@qUxN{3k$! z>S64?LC^Qk>Gk<`L|>T1+Flm?M$Q&XIUbH%jgxbNxkeogRS~3!I4ZzY=L(hVkkT0* z89Q0b|i&hTV+q#8#n`Z#mD{?RRla+}xsHhoVQbKkzo^o>Dm?2Y!_wW`*TbP%a6O zfN+}5`O$_pUcHxx9GXrTe?b3LyEfwtc736oP?h((;N?DDZ5NFyKqq25T524-EP1Zk z;5#);yx(S0FLpW4CacTCr+Q@$CUMth%SFh~eRj-LW32suUR@t3U)4pdMSXnyn)o4XifDL6#q=37MSl*#^ux{q=D%_8yPV z+uNa$1DeE0T_#jGSL}QUx zbTJUH@Yh}R9+ZgrwSh82y;Rlc=^>cfbCHuJELrW1Jts%wf|;KFX;i$;CWUg>YjBLqQ#Jg9<85*FBcj z7t|o!us5y89o%vDhiA?wZWDU$>g%q{Btr2aCPA+_BEphRX(}RVLg-}6%au>80&%6L z(B1VjvO%gNY~+rZ2!B84(U)zb*OBWvgGYUP+|^FM0R^K2TGkdZBin6D4YT3SuJF_5 zSO1+@9!(&pyIe{iZA$^0Cj7yt%)C(b>fT~6Eo~7Mk_7RI!LY-PNQLzL#gUgJh}a?z z81-+*CGM;^Tau?jFi_FunVi%ZD}6-pI5!y4EaOFWuMUXOa1j`u=drvJEEC=^4xQb?U&3m=sCWGR41J1U5@*6Tq2Zg zF*^dlLz6UV!z8ZCS8p(dyC{{6 z-I?F;a=gk$q=7?Y!U5!M+Th55058LD<^LK_#|OCMgVLEL5Z^<``O*BAz++%GqbzZ z@N`0k>OX|#c^F^II$#WpH@Y9x0u;H2*FbZ!t*Q#hBo+diOUy@5ZV_O4 zCJ-LpJSXUGJ2DgLW12Z*ypngHnYU1FCId8218P`QviZ;N zfjKoT)qVfb(UGmuqpsQTvd5|j(6QL)M$Hog4t3qMLO#OgC}%RIi&*V0GFjcbDC3KmpjY70QVdy#_{T9xGnE|Ggi8?jMlSj){u{Si6|a^p|&g z;F{=U&&P)S72`ejxRS_YS?9(jJ$+%L*m~~iQ#KDDWd1sHTp3&@Hwj&{L%dr@s&<># zz!_J|Fmpj%q$9*XE;cPU-_oJ&XKQg2TFbs8p~(yuY-}-zYD_=ZfA)u&jqJ!nCkR4; zi1F{!PMQ8ap7df}36u3Ghz9*qvZa=NE}_)LJS}&yol*q4i921?=1)PIk3+MghPtgg zgI)0-zFOuI_Qkb6l!U+b0<8kM4hb9@p}cRASS^F@$x>r@s!o-y-*})!MY^dBRHDxN zlSgqS{rnbdvewpjJ)4{H2HJ5f6xroqa*^NcPxF8duVHhu@2iqks8P%9zt37HFB@hm z-T5xviey>tc!Q{*i$+FSdSNOY+)N4q)NT-tj5r?D3=;#f#m}j)_Tn9G)s{>8%8S{^ zsh@=p_IrA7=*;8Z;~ywh45zmyHUT1-L(G%V>)#xCTd<3k<$d6au2iw5pFi@QrBLNO zC4CP!feY4en(2?N*X{bkM50T1=-tCjwz{;9aSmksk39L5z{!_i+s^B1x;D%$6aiM{ zIF2iIT=JSX(1f#B%ScVXmT&6$WQ=T9&PktG-+<^g9KndIVBv5YIv8j5aRpH*aM#-mB3VcO_c=hv(WCXy09*L1 zBMV40W&xY_fc0x1xCnkdT{({L^N|OR6*J)Td=6hlxVoj~A0ScA-R<)~>U-IXf3Z3g zFiBnw$?D}d+C7(rTJdv)5PCsmnMg=c(wx7T-Y&?fJnciDyK?Ynpf|LuMcE^ZLyRoU zI)oBdOo)Lr1WEl|_ySx~owE5@zG`}Dh3VggWIz&Y9OLBl?g(iDWnzT^5~dvi-G75j z-~-_bT(F3pGJa_-J3U1m=FS=D(Q7f{Myir3b+KTkXePo#QPc>Ig$x-IB;E!{hA8H{ zYPtu8>*&lN)$)_|Fppm)qH(vi>}UjI-gUrJB9n%^<8bVR6V#(->*D}J z-c<#GTv9m2((7y6zqx zlnATW$CNp@BEih`^XEg4^1R2f-Oo}YpNtvkzO^l!`z_r*ZBZ^YGUkqgBqG0Bsk|(G zDsohfvQ)c!Q{nR6 zxQkMx{3~$7750Ol-3nI?_c9)CmeoA`o+k@mrti9kj|4LJCa)wr4uem6dZMqP6TNRb z-&8&{oc?Qj949(?nWxBW7Y#kqH>nixzhV_Vn|wV_92*(dpG3c0fE31nf4dxGir(H( z+4Cfo4#O|Qv~{rdg;wrnUqyXhDJ-ltmr;J$9=EP~UX*-lD*fc1yU!CTH{6i{7e*J1 zf=ZoGvE6S*CbOU1_HI9Uq&06F`i{;ojb%W*zs8Pa03rqv3xa#gf%A? zMh)?hVus z@{#*?jm%LA|JFm?sGf@6c8SbPqN~#a8fKf# z=iMrvW)2Lo9L82ens+lw^eb$V1><5KaINtPgqh5%we@uko)5a>?{nh=xRaB^u_si5lJ>yRw*@_LXC)+}HS?u4z~OF%OY31mj6*Za5wN*b9~!u>c4X9y&Y@;_&yx zK-55rRrF}Mgha4hg~6DVhD1PR3VZ%hSyD9p7-q^YS|oA?2BR@@T8iz6GdxRFp-Zc# zLQ>u8iPew5NNSIt^~@&APk(nd z7D)q*lx(hI4=r}t8vay^H?jvzoRgTs^Hf1*4^MQpI^>!N+~o+NS9P z1}@)&jls?IIXyY$>~{n#NFY(4Lf0=f-cxNQ(wr?-f-IhK2}ygpW_T;Yfvfy^vWkSd zECgsvBpRTEq7vBik%X~{K-qKscuvkYC`(x5NOAGpA#j}Oq%BCcb{ba!HwK4Bdn7W% zK$sS+P`i1V5(6247XWW9pX!g{SkGtJ?W^v~{BapfQIjrBu{@FSF_ez>} zWhv*nC`c9>%1;{~_cIwL9^)=mt}CB^ljdv-KWZX_@V!mEZw{YPUN+yg>w}?jw5Q!< zU0JKW=W9y@9T*ZWTz0Q3uOrT{Z-_A>vVV=<h`s_{RSd%hCcJB>7|f2yxN0}OE2xUjag1iJl0gAXI5eQq41@p-exd*?eN!U{ zh?Gz=0HU1$N*Vq%ckFpT*bDWxUeDcM1f;c9E7t`_F9<@LbbbdL(82pc%pctvKaK*= zBz4_VXc4)2g%e5oGeg8e6FA-xn9Knb>y)zR!}zhcc+D{+HN&4!8AWEB0+Z6^1oZc? zrr?Sgae4Rr-yL7+N{x+eY#ara7-Ik2tgK*zL=5a#s{{1CH{v?k*48e3V4bAhuxI~^ z%(16HoX)Mf7B??X=yKb+NHcS^7CXHFFX_=ezHYP`!_Dc5P+;C*;?*{~!D`^X^u%R% z1w}myWz+bI)lA&9%uwfg$ku(uwL)V^KVE80mDGI|Wp z^X56hELho=@QXrX9=i_aAp0s)eqj><}$5HUF87#5>H9ajs%hnUa{V62XT+AR~&9? z7wU3MGF<8aL@RG#QhjeuJt&DPhPVcL;tk+~cLTB6=X<;ob%;U>vwR<2sp+|cdBv7| z%a00z0lgE;NLbEGr=Kh2YT(lt*&qo$mp5dnxQL8b>V#vID!8>_0ST7%}lGY;w2BK@MjUyvc|P(Et#8<9&&8QO+`mGeH>Z__wo zny;$I!Z?dt2|xkr-)G}!|4E=e2aPpRuQ*V`2dG!5)5zgjOwI-d*qgpzYVU7rcPFog zg3lWw>nPq+&e6+HrN~<9^s=zNw*j(01EHE9_W0v4F${GKU#@PzdNdCdsb1YW`z{`fi?)`IjW2K>h4&dDJDYhL5`P=Wm*Q(I3PV@vI|Jm8uZU(nN zcSEdwwcTZV@Z#d4dF8r-%(2DU%}oP*-ZbV{F|{uYAZ`J956D>QX=uA<_F*T>5m>wT zx|)!g;<10Pm6oQk62>P~TdNMsX?7}^+UJ^>oK&ym%UEiiT58%H+^!vjqMrB+EqPbJ zTxe0E27MRg3VX|393}UgxN3JR*=${;arJkDZI`y`lY7mt}==9OZjho0g_e z*+~y3xBAGAg+k;{!?e+(5;$gYvFamfSMe@ON_)NwkmU~Cx*2`^ZX?DPpg82ElRamOLEP)wxoYH z@KCR<_5S+wW{ISu?deS$me_DEPPcp;UI0U8i({FV@9Hj0R$!^4zIjiWPd96wBMOk3 zpB7rn>%v<}f`IxL3=ScH@IC)SnpY2Ny#6>m+z}9l!I__gMn7K?3d&$oVm*TEmhA<7 ziRfnmWz@@udyVZAbt&&XR&1it)5(ifeg2)3fx|iRhX8Sqf0&cgITzd8PX@Jwz?v2* z=*J|Fk~^Dz>J|y;-8KQ*I>&%S``Ue6;6JA3REMUuP(BK%$RtH?!aF7d)@nm%rL;$R z%Ed;8foI{t;2^EC&*<9{r0&hZ^Y0KJZ;uan^>XN3Nb2!QI2JQ_lped<+=So0<-%C= zW=kBnY|&tQfY+wsIIDU#IQivB##VY7QEBf!V7R@F7W!A~ll=4T%Bx*O;CK-mn(1VO zaRi(!lUfBK6s@h+%nq8yuxt21gdmEuIR1Scr9cru0N!MmVTv*3ui%$O=~*<=OWVso zwVb>nORc^o&24qItDOTAIq(z&G-I{?KK8ICPxEv6UriJ7VG)dejj9#jktgMR>{+>c ztKfd{4(P(91y{9=vc4_DWpf7+pn(QJ+US+1m>pfL(B)^nm5a3hHoO4^7NB^ROG-EN z-haIleTfHd)+Rpxk15i`Es$pzn`q@Z#c-n;lb&1(mA#b+O~alUWjKL z^P8{Uv;WbgrRRxpW6{M$nAwm&s} zk2$35Gr4tIc7AtcQ{LhrF}fOq z3LedhsWYe;4t1E|M|o-jQ?C3`gac)-lQ7=IBe2=2hmc->cY3y^FQ$^18Uf=pHpNW* z^t^t2x(72X@gpQnr!EINdld$kT<46Y2mIY$iX2|3_KRn{NBs!dY7IKFHPGe$?|y>a zJqtRhmRBmcTUewuR5_4|{WWn#vvq10A;x0B%oTp?laFij`)&VQQrpuPkq&c<01HQt3S#t#oxQz#ciXqkSqr?= z36hU9fp?drlmq+m)PB3)m8&;}o=xuE+LupfQBiQBg>Ngk+gaZ@xde@jXD*lnKKIvS zdUNoh(Ak;k*G_|#@wT~M*!Z8tXaL*|rs;^=z(Y0|(rdHw86lfLKH+L3qRJ8vY}3g| zTH?cr!VwAvd#T>DN|HAqkfKerJC7e7mpzkK zl-IAXaHWs!Y1y*0Eke^G*@mqaN^AGL%~e76My-`($I)*dnNi8cX8rJ?2Ix#`;*)I8 zUk#c%e6=u+LRwpo-RuiYr4;AXayuZ)zAyMd-24yf#z27)8_Zx^W)EwKd`xtA zU48CPe~;R?oh9u(z6r$(E1X?2*gX`xbl+X}-36GYV}VHtdvmK2-6|~mUCEVMk$K7j z!%D;6xU~0VSm8GHc9pLVBL+UP6tmsV8jQP6VoyF0A^CXG1T?C|YKeXA3WeOxJYy)3 zN4zUD1P@>F@#rA{UJoTDCHR7e%TBuH#BJYBO--GjH_(HEU{Jp(u~ezsEJ2=2sYh7M zMw9QZ-|rhuBD;Ts7m}xw-?VN1KM3UT|RgyZJLkr3}>2`A18^ zm*(gHB3HkHvi9}le6e$Oi`K+2wvpN7Qgt$AAK^y@NRb!F70lKL!prT_$>XMyzAk81 zE%4UT%P}R29^$n*X|wrsA#jUPWfE=5Qmv@jx=lFRWZCi6A~GkmWR)x!QiudpF%7!? ztr;l>aSN=x!cb*HzccvAi?h(Yc+oKZxD^B=efw7U+v`FjH++M-&>iw&W`-2yjgY?` zI5-%@Kro?J0N&M)OL^3us`6QI!H{zulvqqEOIHA{>`}fi*duDoa|Q-r2-ARBcWP9R zG!N=IS7Y{h^2bm(07d;%9?X=K_@E1HP3^@gCdAJ=M9)IF;xJWVZnYKR0(|Yynq}wy zq{Rw$kEq)|K``k`kW%a_jb@0(fxx|A`j$Y+H0_r>Y`^s~b%_ z>i9ui&G3KhNoqn{t<}H!eRkfC|J}3Ks7z^r1PYwBRVX;0aC!}Zb8y-5!(r|;5`dy{dTJD7;DCBDTzmf~|JUi4n0HuNL zeH_GC!t`mG?l77x3_S@W_9)QeQ$ST$hbT9AMaRMSyKe9w^1T-pGsHnJc>=kYTQ3H2oLJ0 zpglWJgOzWj2te6wknzn6KM$_9$p(&0Eb?LzI?nsZ5-azA%8cX3RapbJ7hfOIBdIX@ zOb^IlYzBBd?N|^4dk(ho$BxTE4^^tz>)55+rC{|gD|Sw0h}8?Na4wF2h=4KN%ust! zF8xa;Aq8nvRbmznFWUe!&LVcMHJ(eSbyHgJ8-+0yS1j<)$*4MukBkm68Q4oI2Z@8_ zL!ub9<2cVoHY6@-L;<&cCMg*TVyU5W@xq~4*EX-cU#)Jg7S30Xh`gKcaU!ednbHA{ zo^NQE^@4VFbgOH4=sDjaLSYNh>*1V~4wTyNcSG2&7ufkv8w(Lx6-*{OgLZ`IZlA*% z>-H+XY9l02az{sJz^BoQXN&9Fu)U_h*4tNn1UP;VLo@*=hrn^5M(Znogz>a?%1q<- z_vJ}%(eDCuSTkDCwMRMDyxYA{z45$d36Ytl`5JT_(C4UJbQWM~Sv+G;E#-Hf5wx4Z zB|S5I+62?P?4_lq?%ar%pb0#m9LeC3h(}4Ukr70Vf&`1Lerm6uFvh`W`~uxpv150) zNkL!~M2SPYfLYI{--8O_Y)Iq~HVE1uuE=Nb?J0xaCq} zj~MWg2)x^|wX|eZpZ@oG2X1jB-M7`qBXn_`tPL+u8Y)pN)tZ-9THS5SXAIxH^FOE^ z0{K4H26XbjoSVU(`MPLcZf@g&dv>uA7pc>HBr`M7`l2P|6uoh01=ewN=>YZk|f$~{Ckl}5poeGBZiDUln%>|>pPYWO|g%>9u z{A;F97pBsld!Sw6rkD1<_ur%dlImIzzAiy$*@w|h*k`x5w;;C;Y?an?-6=lp&`Les zpZz=2!ylI6V`F2ThfXdM;O-MFNPts3NJj>dQ{Kc_;ErD-T?K%Fc)9ND^%yYe3L@h` zHy}9PtAI>&o8B4le&1jYG(JA1}$CnaU2f@KVHHDXVVT;H;#L()%a zw2w(wsvo*94`P~sd$sfYT^@+3e-4!BA2;fH9b|K-_x&z-x@|wEVgCi=iK=gzGks^8 zF?E4mT(AzPRJxt-6y9zMiX&|)yE{GHxRd!)Qfg~kmTqU~k!`jTyd^{pdQloNsr71$ zS4kW8fxL98bUli)(YlZcpP&BW2!F6t;nU2?P45g97_Iai^6I>wB11mT1wTCZ_tIEl z8+;NFI#f1TnAK2{ikJ!pIL@Qab}=pnnqFm{Q35geSzMpows3`U3Zxws7&8H8``MEE zxeT7MYN{2Xg^mU{EBNS**VFDu?p&uAe2j4`+_@+sE1UtHMFBdhmOW0`uZFCNg-VaZ z&uie6O-C9G#iV~~9|<{pKHH3<)37V|MEz_LcV2h=7_2qxQZs%wr- z`F|(tWq#IQBkPHtu~3Q7lvFXUx3FeDM<{5Q=}?uc^WH$Cd$2{-rz+BjggBnl|1GPx z<@*pLBu%|Nh)+a<74BC2Lh)yT)adiLx`mgwWzpn4cW#_qcBEp>|1IvpRZR_jQCd{3rI;72TN@r1B1f@aoep&gZ5K) zwaT0WZneL^{!$2Bl`HU>II5~{0Orym;pIB?7@zeWoY7HxA>%>oMENZsH~-aTZNk69vb($c(;i^@P>u&&_a#VO z&fnilIwEn*;lj^AZQ5lQ_)Z61PdnNmmp`WaItDuY^e-Cp|6IbR#^WZq@2PD5eY-f< zbva1svfS*FZ*1Q^)TjORc@Z&93UnAd)UR6L{^@=c&TT4wL-cfhtTv0CJHxEun}^jn zDO+bAN=Slb1I)IjLm99X#T4w8bx1O~;F22#E@52o5TZ4o_~hZFOcoS3NBg$?0fQH+ zbMy?Ugh@_ZElCnlg20P-kR``q zcsMD&!0RY9sj#v-o$lRnG5K`V>9gB2I+BoMP)0hiZhsto(3Vm^v^o=TYWDkFaSxj; zV`%@)d2St+l>7?(w%=NjjuD?}N7Ym|y`CZDZ6|#-3Ew=W4`o-l1KaN=?q#pGYf?#{ zY^)4KE6_;0&_q-Bqj{^59p-3kE9Rj^yf9enw5%_IZPO%{R9)m&@KPi|z8{~Chz{pH zBpRb9ON%#HM!`%0nH!4=OJ8avH1-oAmc-}T*Vj7C zi?1K2YT2%yrbRM;2tZ`G1cCKHI#g1`-6itJ=vP6X8?y@_xMDZIBsfFhy z{KHl|o4#y0sUE$qU|*Z{>xwVe`|G~yd>&YIMyhz{>z^;_nYon|1d);HRjSIB8!TrA z0Uh%BUaY9l9s_h^ZOwwO`!{lOdDZBh&MJ#!&g7z9D49QD9?w$gin1G&hq-;#zql1Z z@#TK;z1HFwv#Y3gR+IR678=Aec0Zz*v6MUhzNWlY6Sxk^Sfq4?ZEI+#>kh*Nw>zhY zz9`}fXUDub5w#gfQ{huzN0|7m4HAh!0hXuy{HN~6L*V*Q131FQll(g~fPM0C)qV5Z z-^7$V{pui7dn@?!Lyvp-5-o1Stcj;hhy0N9@>XkIYh7}w*sp%mz$gFT7k$T_yueLi zwWQbSC_BRoM~`$py$z~Ml${;fm_I^gF!HZ0!1JC(a-wGh7wRiIfc&Fm zspQV%p4q{qQAy84KEr`E^NxB zgoK|?r-!wquY5h6Vc|Z^Vh^!vTR5yO(_AEO0q54 zzGD^SJ#+=IloWFt)DEwvkeAvjz*13T?+9T5X1_r*T zKUq!h7Uv?&-(L-8Z=$O!)I4unJWWW%`5{jz_O>Wol?;sti$y*2%MtG>fM1_FrDOS; zIKZVs_rj=pCY_tzEJbzaqJ7S|`RPw#-xpe;j5z}znZ?h<1}zoA7{QuF`+kcuIKK8u zAFXDml14Xuag)4Cra>`d_K1Ynk?k1r1crqKXAzQ_La&;a_UPzryIXd%gSJUTpLwmm zhw&W8i!^9)-0jU-uAe0;P!79{;i+yGW*PLt4y)0hJ$#++)lg`*x)xpLn#&ZVzjrm4 z26@hnw`gAJ7ci%v42vG8{%+s8tj((r6fNy8d<4S>g6f9|VSl*Se_$~*4VtFHjME1$ zZQ^*kWHW19n~SB{gRfT5&+;3B2FEH9A_-uSfj(@8PM2egNf}7b$mrwk2)MB)R$Orw zQCSZk2)Ce*Mb~mZWs9?i4e!j)4=-|1s9S-~NiaF~&iEuy8b?+Eto#M5?}1OOvN;F4 zblgaAuW`D$3HF3oO@eN=Z0f}XB%C%*qTYjo_;|)fb9%HSQd#z)M0#}0D697pdAdb1 z_z^GV6-@!)-a+jEEnJq}gWSx$FQKO(Oi$K#E}HVp$f!*c4{Ch$JSvIAVXQLK(7iApR64CI$`{w_>)= zGX4HnCf-VNAYmNS5~6Q!!E)3nUZj(b42e#14;TOnqFve@=a}9LXYbqPaSojX;w6#G za4@GO#>3cDWkO_Ot-rfnj@3n03rbMwE6tnYB8Y}10&nhVrA{I(i!DP%#r*fy2gtUM zfsv)(KF9lQxv$-eXO2CmMNN!4#L06!C65oK|Msm0T%9z}y_q%Lm!KAdAQvL#ZnHCB z4ebN+m{1zW66Xk!(IbkJ!M4iTt*@*5S2|hhXt19@zwy{R1iCxBy4LABU(|Cx=++w1 zRI2s&Jt}m=)9T(~U{jV$P`-IP2AjFCt#V8)7q}4b@5}QfVrKY#dDd{m9o(@{c%$HJ zj<`IOnryU)ai9pBb5^d{1x*0W*A2$l2LV73C{NKXw>A%&=XhVwRX_i`EAZ~_;kPPJ zCn^NApMv+{U5Gq?5G9)WZH^LTUVYKwSjZ=nZL4ay_;!3}NC_+1Z_l* zTP%y?rc2+_O8Gf@4aFZ@{eq9Gltp%(rj_OgEpkV}rLUHM{USy#F%XuJX!mx8tMcUM zQPZ9n4|&1948Ax!(-QRF~oKXi9~nPi;O z{;VGug~Zr0$PLb2vTXEQqg~NJHd;D${Ot;Lnyh3jZd_R8CDnmvI}5_1(9x%5@(?A3 zwG8_AO!T7B93n$R$4Wu2;N%uP#p72xE^;-VZt8!g*5W*lr=FFR*hA;@`BPaDyI)-j zJE%k!pp1wTNMAk%bt+u(2wNM)<(jaztNuBY-$37f_yz{64jm~^wFofirEx47a5}&` zw|>2I5oepM+bqPDI-ts`w-h&iG4v%|y7PBegZpy8r9i^UU3%+^zw@4FdwA!xySw7b zM4a}tL#1##O5fhIr`tfhz>Bg0&fnkB6RL4U(%}hV69->>^KHJUj6MEUvc!oya^}hy zk?6Yp>mK>`09o+i5{(|XJYM#8^s_llf&*?AUf=kjT^_!^+kYm5s>z*>JIEXimZ5~9N+PDT^E5FCMpZnj(RCn2CTjsFnf~y z0OnpVE-pmlGcqzNw|2v^$!u(F93Qh@uDFiq|1i1B++*g3+<)SRQZ0vu_|9c#)=+-f3F!4Qk=>~8tMo0@(gmaE5MuaQ@Ax?Lpc7GUC>3IQSi^+IQB!dnHcguDy3KJE|_zYlB+<v63fIkU3X*kxwzBCca%wKKSm~^7+22)^-VMJxmhez? zzYueigedgJZ?Lh4r*;8kSpd0wv;*%Xty8=YT2DvF@ zWa={xT8^}T;mpzT=a<;I%K!PTEWMgg)#c9ff1G%vG#(;=vTb38;EL{mMU_%WA!2qD zq^hcRxbd-F!*cz-XvGP9((GX+MwtTxT)Qq@Jb3;}k|?lB@20 zAB!ai=Ut6aU-YBQRoYN^`>)8-Tk*=a;l!$;VyO9Mb=;aZcgoUA2i?0oRCaqJa=jPr zEhX0XL3KA+ni(PMzJ3!UbKUjyZ-jlkJMIQsE?D6o`3AiTrUd^}d6)))=Vy{nAa+if z69iD%z|S5JHod*1JD#ru-h%4lxu;uG>C+#KpgaBU>gjQH6%_A5{#r_3TK+>_fM+bw z)D={^;w%mFH1i)0Y@LdyyX0#1C0*D1|Fx*V+`Te8XWDSW{f~qIaOS=aH@y!3=TiSy zrKb(LURwpB?f-yAk3Xev09G%DKyVRmITR0mpRx39v9#ZzSinGUBKGcQD&`gw{ikJH z8lUZG)_71<`{!574i2M zEclZJwEJvVD7#`N9IsV{UI}DwYJKtSy+W&rqnh@`mDP{oLx1Z5#FL^h2wOQ?)xyv@ zVX2#3>M8y2g{wH9W5b9G@KclAC{#-8C(0T# z>?l)=3wEGLoU+0TA?*K=hfSK9MQIHWneJ2`uJHL5l*lx_-@I?-VToBOeRVQ=hO!}s zk4i#&hB`H*7(aRmbm``>9nn(kSBXfawXS`Ad&{pTMq?Ad;Y;&Th8}u|2{+&3dtZ3! zusi6ZKD*M`iP^?N?y_V&4SlK@S`^;4-6*i*{AQoc1Pa5A=2pBKmP}k7rJSUlS6RUj zABS-lwNjJR!yy9+q$cCxeOy^|B(Wpv z?AzP>qRB)eZtqlRjIyTjqnHMkmB_q&8hopWKnE- z(M(&l3;P*WxPC7&XD0MAEsEr%AldC&gFS-jDw-gaO~{Nok+4 z!y)Ov#ee|ZKj!d4SKuduq}#^JXSnbg`vE@~GNf#LU0#HR1=90g-_eVkJBN><^P#Qp z*I^zY?!A4{Oq)yPQqbdOrz0LN8af(Ob3A*wc-KMcmx7b&qYa1-KgEL zHDky#<}_mJuw-Unx>RQtqeY-qI$c|SGd!%)YSa{F+CH&l4rCyF!4u9p$joW71vunU zQ7{PcW$3WYY6J>jV|GC~V^qgrZ>)OzXMak)AVmL^ss48KyL%w)yI`b}oFlL5S44UiHdUzfZ&$%etkm}U0>R3@OrcJP!XfGqoLeh#aFEf17FrJx&2@(7B zELYdv%Zmr|_17dcXEZPTr6c@zmO$HKYOj+*xDfS)B>V+69(t%nEgLL$qr{|~y8GtK z3ge^d8Fsk?rFYl%?b~*EGL>Qx0y#=hsPaNcM)u}DoNlt%58$wqU)a??|Nr&;+U)v580_cqR_}NDL zv9C=#+gdt0g7zy#L_~zA1Q+2FozR zke(MVfJ%?LncjY=l+FOB2jD_3wnZr4(=SJE8{-rHquxTnK!>7QsiMfp(Br(-h|N|i zEz1;lYnh?l6E$?WN|i-*>+HcsNwwFO=#Tw@Z2isCRx~!5Yq)NWZbV3t{S5(%mNbPI z`cDriWi^<7OOxH)F|za4;1N#a4XO5uSI4ft-*G3a7n~ck^3B_o1jgKQ5q_VkqG_q%_WXq>Ryl%-)-*W?(uWPGDCjel*)j7tOBgjVqPdur%ffz4Tg}t9RAECQ zkh%*zba)@_b=Q^T<#(b^Cf}R=(ir^5J$T?Xh%xS3vLoqpE9OgPjTSDc=Q>hk;EIh; zI1!4SKV)pZoR5+Lg6ipoozt{2Ai*Es%w+gh+;*Dxin{!knr3@uC+lBYinE!}?IC_S z!oyR65*4^LJQIf$ebKriQP*(6$cnq{zx2Cf=_#B?(zi`6_oBShoT|9~cAcFgO+~qB zk@~l&@xp(2>Fss;FO3b_tOS*|2!e%vHWbmT?%6mr%dP&p1Zwf>-Xy(rvAoj=c8Hbx zlYK=HHNSshG}kyC4*fRyzNMv~yAEqhnJX^)+?ta&W$ll=@dg|}xg8AK? z+i_MaCvW}%LLREy?;3%>neeKL%H!XyjGs320);qXlB;uuWHE0lFK*lspmx1X=hH?D zKeT&maKqGpyY<4$W$xEkVFd>%;aQA6x)}mUG23cLhq@uP0W7`*1;+zAj za@uL}rJh6NC6boI&)IF}yvfONu#qAtqN&2UIhvus*M$GBhHGMWb>tfELT!MWDLZxI zZ!lT*id3n&M*kaqC@BRbRxLL3M3MkU#yp4aCntATA6&pYQ@`Ea z(pMLHM_{y`)=xU6)$cLW#Ct0Sk^b#MHV<#GwEC{=IJ@gYsB?(s=DVWwCI978`=xqb zd&x$Zo%e0Mf5)Wj{a(h?hoQ&5VxmaXfJfl$s^d^yoPyh11AQy0K!+-K86;7z!EEks zY&Fz1X2dJYL)U#I;Ad+ejt0m?W@m2=pH`p#(1N%*7oz9`#dep*oX>~s$PgA*RuJ4z zHFR(%7fjQG56ZHGmu*&@*#8m+E5QCB(KFPwpsLN=oJ|?Q_Mwv(2lI2Zux$`3vMgoT5OE7GmR$*fVX48az#v*& zqE+f;WG=0(U)Nex0_sF_x48Kd@i;#r&CFD!R{bb4VZ!tkS+0xIEq8FJaRtpjB; zI`v|VPeLBi7^hrh$)AzZY5>AI86b|(I;Vv0zpO6-&x=<`mxPBz;y1wMIjw|Og${?* zz6v||laWV&qoIc6i99|kSXyT%c{2%8O^?9k>B0QJ*f>wnNlfnBp}nEYg9QO0 zp&9!|$Ne63OU5FEFBr_(epjaRuYL;7%l$f;}@<_% za#}VRk)THv=(u0U4(~bikKgx?s#&olkX6aVD>APZVN3ho+WAas)xfDrWKJSiS6&RW zkv*>-4SWS*x*j8rowsKvCzGwMnOj@W&Ai>FRvInaHrvNo7ei?GBsHcs7pX~Ito4u} ze0aq{7IlpmpiT|=_UrTc1A#TbHd6NtO!9_J=FU7F3s-ofmY{=vEU3DO&z%oZusgIS_=5rUHKF~E@ zWz<@CxN%aZ5x6%|D5t8b8ZKM7bO`1k`T6TyR)H?CVBjTA-9A=BbOc^wtH7ZDw*in& zf~?uVU08++YzoBLWPO1_cMlfo!L(7arDdZ^>)ftLtC4HxT=AdE@AGqVhZmQObowq;jf>Rmxyv;hZ9%m~jVy9`ZfQD>qHwS+fE?~t zyRv7W5?M%<`&BVC4%Rr+3n}p^Hh)X3A%ry={1NT6-)aT#WQ`}_n`Xdq7mDJ$6;)(a zHf0X_u)igo%-12_`?bxq-H&gFP5@m}()=pP58Gvt=~X$nfoXDjDGqMg69v6EBj6-4 zero6)$*IR&LrZ903BB!_qkcb#{vp`F~xGmeA+DcCHTD{;cU89>s@Ny)+P0coJx8x}Mwx^XG%rgzj&9pTVKamZ4Ok*0=az<=RGYrP;@qmy=ek9+E;$?r zz2r9$h075KNLaZ^dfy#IC+xVx_$iRJ@-}77zQozER2rZZTk2ExiBTwutK5ujPp#jJ zxoz3k@3zt?POhKMTwD%50v2Br7d|*tQVeP7JIyGv#*Kr&dVcQI21X_Z9W7onoU>{w z=pI?jm@vCM=A=_douE+azTjF&GS(YseqLXDsvhLbeowH%{h#TB2D$vG3?XrW)iVE7 z+OXBa2T`yxS+2Lg(HR#vcpjf*HtHEVX^$2R!)FUCMwa>T8rdQbxb$2kp=wtO<+}R# zv$l344Z3nw5|iAR-fxh@0If8vK9Fvbq;fWLE`!SLy{_|XgjUUt6h1#<7PfO1+BnR} z15W-<%7KB?sttSu6ss=^xnbcgK~Q7wD0q2%wF*2*T`ku;iT?sW58lET7Z*Xa4%hr2 z(YNW=|0d0@Q#x> z7o3lO3L|MgR_b(vUPJIQ`v@r*27?XJ_#gB>18DF2Sznzjbw4aUfv$pPa9Zz%mUS>V z`1q6e{V3YWFm67r2G*W@4><82=AS(sb?q*iP5esrQL&1!#s?=*{vu*z{S^ApC{(Tz zoR2*m!Dv|X$zKg?#*jY^Ko{ORlx;_qEoo@0cj3dJnD|U8a;O&Wu62zXSzAzcQeiXT z$GrWNaE4Q5W(fsEiCtcEuE#O%&q9H=H31#@^R5q^e>63%WQhwVXv@_s|C7l>IMO`} z{ed05O(z(U!&tu!^QGFRQ!4OCQ^k>0QCn}UFF#5`!BM#Kzge7OK--ri&f*W1Wm(iR zn?n1W(YM>`7?LI;{+}gs-$!f`j9RNGAW`rIIw5L2vdsV+29tQzn~f?buXohwMxlF7 zBK(fy^~PK|mF6i*f3hb<-^njdJIC=r#u`Sput>gQ*pZ+eg;=>eG# ze*7$hXPVdV5<~fdTep`BJ|N+1B87#~Oso#v<65GdMaTsHp&`ffiRDFMK@I=Ii!V1^ zkVGKEyUtQ}P3e>O=nQRn5>h}?lb+3V(=Vplmc^8hK1h>H-=TnK=jO%78d9B;)6;LT z#pk!qOLp#gOC)Z^k4q{NQsz&35(B*AQz_q*RBlx=p#|tt@2ee(8Kb+3tFAuvNgi)% z&9oF;&?yu2$dS$eS}r)s2vd4K;`rI#32GTI1$Jn2WtSX3cp1}Jn={wHu z$Ndn!&NCtJ?#nI_BVf8$p>y%bhK#54e0_vxEWfkm@9BcDyAOeB#9L$Z|*}J!JRa}sRI5iMYWz|BWBsH@3DILny zVL73Zm#G{V8E|6*gQbc7siXn}l}t+cJ1b5F!VSj8Grd{y$pU@u?a@4)2hq1@1=G97 ztBnq;qp{xwU2WyJXeWWzefe`)lzYcvG!R9Glmt0bhP#zw(Msa;ll ze7v(Q^+HuuZdsG}VpD(Pn1Mv!e9Kr`S{jI|0y|wWN?mwuSC=y@_Z^6z1!*$nGkcqx z|I#BOK6oF|0Ny%ze8)RxGn^vXlrMIr3#dh-?{ftxAcTepWT|8(YNn~MWl9CZ@_Egy zQagS%Pa4#tBl-;~3`n}Wt-o2QTSQe-|Y0vlH zjL)n^Nh#JLhq>kIzv+x~B*(jx^R~AqT8BV_ow#Oy6M7wz<3@TN)-Vymbdm$ekY`Qr z>BAF~0f`kQl{AOxT@UJ^GM(YRUbD^>zXzp0&s^JlN^mEdcWeq=|J9=fPEXUqDK)6f zi+&emd;ulfkfKTQ{fqX)S%s`GU9?gghHrLK}SP4p{LDH$WL4yJ6!n{MUSROTu%*kL;HAMm4o7NA2W1- zmj5+^Q~x6~Q6^X>6#SLsOYAz$*?N6DaYiPg<#!dm!g5s2B@#OMGvR4XTRc*Ih6foy z!9dCjd5{>%eEXkSv3!Ld;%X0K^_+bt7N9G ztxJi@;temn6T>~i0Bu-E^W zr}=5Fj&^5p=ZW+7mB9MA$31&7550)V%$ae2+{0g;g%g6h-vUmj(xlL|PD6iADzvqI zX;>7|?e=+`O0ITU6cHk0tu0RxeSxhSsrYd~@aWutEkx}ddEOgZq;Ru3fnUIOj^oG( zm=@U5D{FqzZx^4Jp5DtdAA!b3Ny6*3JB60?jg1=%69zwn1xx<|S1LsBn0oyMM{eQg+6dv(zlB$rmL@DD~Jl(@xgZc=c+MW-rk`D_Oi!-deg?ZsI$b;J!Xe4R;4 z7K7JnYQj6kkIlzT;iy#ymwv_lUAR$sKtQjMh5Oq0Wh$}l&12JU!>Y;QVmvw#XT?} zxU{b%CBS6GBxsoipA=wh7`!a~2Py+6V>len!^H(6%Hv~W!N4+@b)mwQg4Z`?HqDva z`rnxjxt64YN;E@*e_spj-aG`x9X_s7P6MOSR2T5mgAMV~|r}79wJSIR}b% zS1Opnpcugi;^#j!VJ~zQzIUG#OMm$D$EZHze)jktLFwFD)y)^MzE<5FnN4N7d@5Ck z%*G&_2$?!Fvnny9rKBeYAJeH-Iy*N|3@Y46H3bgkh6SJAN_i>O=DjO)7B%f3#oR`1 zf~J+k?VPIFdm*CnnPQ)cz_T!L^zW<;LX;BkQ3IRr~j|Je8 zXQ0h$^j%~|?mjV+vJBmn%m*@>~d z7D#3Fs{)HBzs}fqnz#f7y;7eBU+c=Msv{6f1a>mZX6(adfkGV)v3PCnjDJyY-SU6C zG(VHi%)WSc@#W|aog*2Dca?Gfj_TJZM9nKFSvBM=wP3WS$umd!rpRC2gz^Dca2o4`kON6 z2QyVdq->9R^#w#@41?pFdOpV5o4kEQHx;03`A*xh6>pII-Kk+!xp716W(4M8_S!SG1AOu|+1zfB zU?6jYYk#26oH$cdJDf1uMKD#QGXM3yWE?{Zc@o0+R|5TuS6F;PHbAma=zh@MSu9!Z;-ynH4PAN8A!kB%OTuUD7Bk?1{p7A@+`qMO2V+P zJgrh40lM^_fB;@QnKvIZk$hFnMo^KjXvJ%qCeK0(B*oi_+>W^Yd!vpyWSoMj*D%h} zRCKEFt4jK>X)^Y5Frx?d*nTMtDk`W}?Xwa0e2x31`~?*~9IBsL7XA9==!hi=i4IV5 zIeW&PDL)LE;AKpl42x3Ac~&U9EeYO&)zX{c%hvGWn3>EZTl)KhP9%|l)vLh#8G=Q^fNF?HJ&g1#PhV(eGjVT)giot z_x&38VU_nmx23?pP4Brjpdn>_QwWfrO5EjvYM@&fD58f4Yzvf^mmdcpB&2VCYJl-- zs;12+l`CJh=DY*N#fR7@7JW#NqD zR+Va59na@@{EQT}N4C~uzJ|pT5=D-Nbr%y`D5(+0Vo5h5s5F4X6}F|w$GEVi&%ZBR zWTt@BBU`fz5Mo1^H6h~2Vq@k)|B)9>isyVAF}~O=8>!oIuS$c4(P^j9j8;HzDviqRxl zT&aUM5?FtQ;z%($&oMi=r(YZ6RQX*uWuQs>rGP6SO7%T`u4A@s=@2J1hZ$3Z>3#ORP}kj>~6Ea=Pz zjM%={^nJl@%%kGA(f9w(=Xgj z^ITvsI@EnA<#BjA!I*&wX-4*h!zP4QXS!nrI4%`G3x~coZ=5rx@rYfQ8X&N9V^5?u zwZ>Fh7(07Q>Q6{vl{4+OxMJ|HoQgGs_5t(R0!bAK+-ROH?J{*=5?CX&)x?PDUv|7o z9@Y7_)%omFCC$V@pQ~lVc04a9H*=-kcIdFW_2hh^K0)$!2O)i9I#-o5Id-%4Fx?JZ z9kv9{1vU;6izA^Z;WOt7eG?dpKMMRal7Brcm(b;L+uU_Mag0OMjDOo1IyVvn~fFgk1;$gQod~fglIh|vMNhl&#CQ+AzM-$Q>%nZKS zn^%tci#A%K3q?m>^Rpk@vr;>K4Wen#t6w}{JHv(ttVP$)_`8sM-jtqUOAOw<3N z+n!BFE!u-=-W^sIA<_Tyx&|CV{ zC;-+T#Xy!{qanBkg^Gbn672AghkJ%qJ(q&kyJTK=_1W*1f*OOmy`EZ(qr~GaNqX$E z44p%ylw#Iia&dv%hCTdYC8wp0p0-dp`0kXnG@YKgI=on~peB>K8zF?Ve#% zeL=+z6~RlXR-IGB%GtcWIn&!)%W}OckeH%sR~45eg+_BLk*IJwupbd1}lCQCyI8(;x5lnV)rP7#Omw@H4~4S3<9Z zr38e4o6`^!|3pzhS)2ZYD0xJ9(RiH#OuX4WQu7o3>!@(-jJ%-RT@W)HrxB|x4Bll9 zYTBG~!DIPUR9GN_v9cIjSaxd8a4`aUnJNKAKQD*U)KJ--oVcF^GGbU<(y@hPs;IAn zl^8^PlMy)-{JuH1#lzWA$w?NzZeF(1Ds3yyu2xpgUM~P{Q{}UM61GexWEtEZHYE;L zIA%D5uqx;ONIL7FsJ_3CFCEe#lCpF+(k)i!<{|%p7VLfYdm7-1Qr`0{;y;uE>7$7ULJtOh`BnY4rZ+eF(uiJoDXR# z1>AmUR;bRmg~h6f9oxAS^Yjgj03nGm&6Kd&qY}$a-=HDR?A0l61d~p6jFlj^&sPl% z8nufyN;1P!Hs*B%A>qfsMgdfk>uX{r>y0Ay7sq2F?&N}RVAjX`<#&hohX23co!ai^ zMJ;hqCAQ26HS~t9+Zm$ocRNP@d&adSFKLt0jabzJN6s}cV)X>X0U9CEck1k^hLp7G z`vUNVy90k?A4;rCN@g~H3hjN5vorbLA}A=L_tB1a!l&U+6pI2aK)(f-V-tQu_Klqf z1={BsTgJj?nfX?T^T1b^(Pt~RcGNMfoA2~{eny3H#}tZ7LZ<5%{3hG(+sf=*P{=R4 zWEJ!n2uNaO z(k#IMDaCE~M&Li72PHr7y5;P@7n&4w=6bEsTb$R;!v55pdR&(=gn>+UG3mC=$?@6k z@eT{7*|hSsI4E{E`?43m@?hsQdGhj@{j!ez$iGhTC!lm;S+Kyc>}aFw<)Ablt9R<6 zeJ?MNS9vyicvv;?S&=XiIw9OZoSPN)<~{FPs^?0ddg2EHr27>Xmx^_wlV%8TWFwS+{3L1W$DhD9M)5l>FXkTez2^tO|l959W zuEMsn?MRSd2z>B4->1zbff0B`!slek#TCn0(b=p`N~+KwRXj1iNmma~#$?Hy$<)*^ zGhL?JUY1d}kM#v)7^5uoI7e+*iSieSK$L`h%}gw7T7~6j#vxp#(C;*570qSJ74@y8 z7R9&{g6J4PuUB4^4IRcpW4r@tk6)MLWUp7F81VcE0&CYVOZWmoB35R0cKvfE3Kkh8 z*s9)lXCzhVq!|J7+zZ@d&-WMTvP?`&=y&Ayo3Vne=29%@b}&n?5Qg;8MtXo(Kmd%< zG<0@${`m335wngJ^M_ddIM-_9>?#>NPB+J^ZT!J_k(aB%lr8z{W|upKwz-*#3t@UL zh1aRcYoO)uW6Mp6N=^e8zx(ykI^Tx-Q;)!>*~!4?vKV#L1bEh&k*JvLLPF?qD^{VN zo-x1M9~(FFW%P?0Qp$T?E=u8SDy@oZu zNJ9Rja#86+F2F@43c~&ZZ`SyDd9VLFvxAOHFh&?5X&Myte3Ae1h{?CA#zKe^7NRAw z4&FWb&8F{TD9y^}>P{Fy$i}B$(89gq)OK7}ng^cGYp*lvf%^J6yVszeaeU>sVmuet z(|ytI*3#bI9;s>HG5W1)%)y<*!y9FCFI9V2Etx;#$aCYi_kXj6z*dz7m#MJH0G- z?4JL4xkmx`U3MD8-PJ)6Jy1YDcJ`pWN{KGZ++XTkmGW5!`4lcxE=cL0mOO4wy@!!6 zrG(T(8}9t`DprefGYLX6P=$~rJ*eG#J*)F#N62Vr{y^DVb|2D1dqHJlSaprYStb$4 ztC6zsdCGQ*`Vw)s4k?%;SAh*@YlrD? zDR|QjyX)V~%gUk)F~zxQwx~O>@_JhN5#YP3hd-r|^qHm^8|iPnd$YT$xZ*k!8+u0m zZ6HO4uw5iu_cE@rS!bi2Ewtg2m0I`EZRtk)^XS>eyQ4k}deK)4;N>L3xPOu$ptZG2 z{tKkwh@%b#XJ0eGC*Vjh5U?B-9~H)raEdFC(2|R5pm!&JCg(tv!iy%3&QPy0dHgyu$P4>Cbpff(1+;iA?*1p1p)lvMdK2F<3SD`jx^o0;ArtQ0k%0!ui%1S zngyf$0qRg)jyyD4f=s6uCo=>yRKigyZx0xDaWpsgZurf=c;dkx*52GW%_D;cT5<9X zj^!fyYyNGwFu%`5uCV?)$4~q<>B+c4IZZx3WlDpDg+WzoFf+83EkeK!>$5aFPK4PB zs>H7hqV&AX(;W9PJOoG2Kz{Xc@y${soFQr?c|_m<9_{o*fW_ z&8N-4Tu9I@E{MR!VIQWzK_w_@^HG5qIV6dnlf zM`!<))zuu@-;cRn7v7@hiSb}N2MFNP>AKfi{Jb8*%JMjt$$bNk_OijdN_@~|(XrQx z*L~1AJ;3$35IAFhMuI&4t$zMH%HDObyn3O6=b`k+P%wyZ?B5iXZQ1K>7Eic`NRiWRxm&Zz8u1)PMcK%`W%}FSj6@ z@6ouinYy8D@NM9;_4CrpO{MqxBlw`+47%Yex=sw0Y{<|-j5G1lw z7hHiJLjcQ=ky%n%ZTvtBDz<$XB}e`2Qg2kWBc87`U%r zej}80C-vahfElXd$5>txT!hd?3@#J2Z^5)*k#UA-gWtY5Q~tzv8j`?e{PcqqE^qv+ zI@@tMKY7^u1!u%($k(dXvk^IK97`uA2I(SLxFpbXrNlNJLjKZxOTq`Q01MD9X$Ro)V(fm72SMZosCWIf<=V&Z1y zI+$l9fy2wxki!3MKG19ZX1(j_nc}WZ@YJcIDo6D0oH|~(u60$Y<}fz`N|c}5`kZ$7 zg_a(b?6tOgY}`b8;l6_Z(++njd%gfLS^ylf8MV8eAAG_ln``Q9(QrUK(wUZ4XusQ` z<;amjvxCrLxMyvnQk6R3$i8A8FCP`5XDNu}Uy#pxMJZ1Wj~+dS1o;h*BL&d0uW(I`8 zH_k{QIgl`e<1YwA+#abHbYeop9hA2={_QrvjG9&&5Z{pU_;3D<0R2%lhHNXo!z4|* zn-Oc*E14}T$IG-Ue^d$6>LvW{meGVDX85wT5LM6Wy zNKLVoXdv@x>EH+oBuI)6;U%JBB5;Nw_5S4e;a=w$w|Jq(mM${+rEmzybMX%XsdetF z_0B-)g3-iMJI_nv#&h38(C_1Y2IcLqQd0P(NMh|LzqdzTm9kekk&%^EzT*ozEmw_H zcUwzb8y!z=As0ec%DU>E%x%BRJ$;*>vu?v%`MSQcq;ZbB5l)>goqW)ihlIC&oaEo) z==~n&-ji*dS6l93MN20js^Q#RHLB#B2VZyCrcP#CDKg2P`rTAlZl=#Q*Q{q_ao@N# zpnu=NECB4*ewR)9<<+YKipY>pl5Ev%uVjzcn!G(6F3YNcKvUDRb-s1Q$aCTJIK1FE zjroMOB&dg0sYb6#KJfZ|kxP}5{l(S}1H}DTwqIdfvjKcE`$sT?X zf=*QI((CZV+GcH}1x=$aGJj%zwWi&s`|sv-33qT>u7OMtT^UOQu1=g1Cp8JnY~}zw zt5H;H*)JYr4IrprxcXHbq2)Nl?6X+T_t6Y1rRC!LGxeLnf(NAed77M+KXm-&F@G-} zsRj?>La>gy&}jp#CqxrTHP9KUXIeZqpDA9Bby@^h>hT@U<4wK1c0*7)Z?C-{=bW0- zrNcbB1t%R+?K2RG&AV#|p;6J8P<_(_x<0FnBz|VCL(`V_#>SF*47dg>#R{CNQnmX$ zvdcmQ*?52B8b|0IlkDwy{>ow9PQgG-Oj$v{_Dgq)*c|YUcY#+JZKozfGT>=_jg7QS zElx?zN$IV*lOgOc%q-7Ivm~6fS)7jk1M4^Z*pbb%L_eawEQAg23R)XPEOH=&R%3IuGZ35Cif6>prbG`8jb`%jT)0(-Hm4oTiqQ)?Y!w1Yl| zz~5oeAGN3k7t!`HouS;V?( zk_K>%xYhf@f-cD`q&h8e`1iPnq6WgVQk$)6oLq8iu#1U|DB%(^)$t+0COCLRm=ab} z=w%Z7{wjZe<_@eZeG}OJrh%i95^mNpkG-|(9f*)HxF*4KNs#ngW;(wrwUFUEzgqO-= zFc4fwhE-IF>x`MbaljvU=*#svEkal7GUHt#+)(C+J`AX7Tn7H2{J=oum0ux&H8Dw8 z)WTq`4B}v7l_G@qUY2`rOduG!hGLvBrWB4WxUCwkccsJ-AD4rgX_czoDcfi(?TUP- zMTMI&MTNWa!ZZs}61mEa1|Bz{}0XP3H|*$^;&bH(hLQumG=TZzFGhG6lvh z{zhl}9n<-Vp2FJ|IR6OA&GVg6ooeGXnbV_2_{N;SjjTMCn}oQIt|HKJ&n!#*Lz>Uz z3#8du$Aj`&mYt{Zv9Xv*rdcKGJQgKA(AEG~OV{V`Os^lFQWw^Jiw?`7;n~ij=ZiY3 zyq{Vs-H6rfD`R(+=YcP{@LT)`UJs_O74?mc*6oD!sqXCThB+URG~?Vdd+G|CqPYxy z5)nqh6SGW4QAQ`>rF*3|1-uT&A*3mvvx^tK2hX6gpL#bzsd#_irfm&5xU7tEv2bM- zR7vSo^AI72!P7Q8ps%-5yB_;}{SsoZU4xz0ziSD}zTx3v00i(Usi=S#Y2(IGA;c)} z;VGzTrE=jgRt5oAR#tZ7e!eN_af`xw7d*Ps=Lej3haikw%_5WPPacAqJvi~Kl8aaD z&(HKP_T_Ulc#|S8QjDlC>tc_CU|-gz?Aw)kfA6H-W0k>I2n((Qr6rN-h2fWh&P15S z8ngIY5pIC%OAi7Vv-hi9$+XoRZ5T1(cq{_V-1qph*kqk5;SrKW1=^$i3YO2HK`rna z+o|)ok@RMxIp)_gQN^{HR<2tZ$6LDyc*G?R4#w##VaTSRG!^I@u*lM{#V572*|GStmrtJR&A_Fy-B8~$PB#?!X(k2ZSi8%tOHt0&3Yl!3%^-y0hu%^udi z5{kiGhEdMd4>BQ=Xz()SzmS;y%m`|H{kQl6E{@G#WuIVqA>WRk?Flr#!&$KFZ6fe- z%>qiK+Q~mqrN;8BK`{2eO34anINXP$Ml(o2nnygzWTEh;4A6fF!#VVs1V=tq)B1bG z4HFIW7>T?s!?0JuO3R$fHsirE3OoZuiCVha{oE{-Q4h#ohfx2R`1BOu;We2%NUtjx;U+H_ zvi80fVv+z2hh;i5ZRyEbOf*gkCvxgN?|H7h{6KatQGA6+hiHm}gb-@VqRq7RVGBU2 z{z_Jceicf++#5F`Uv8MpITne7CeHB{9;fP@7F9kIOzKOke})g{rpEZ%V^}|d7`FF% zwa~>-m9#*BeqxqihVlCrz9f{oSwV~0RQDfBFJhx&LM9TLuV@ctOF%am!zYXLV z6#cJPoSW8KKYB|$y*2Da-;zji7K=nUJ)&G80gC344?x#M19^bc=Ql+!L zze7-hK*amo&dkLJre19mu&f=MO7!-37-4r9>*YxgxSzcN+BS^X(!1{Gs`L0=e+Hd_ zh3V|iW3qXHe-ra>yM>%Ooffo?Hl1C=i{X9OB z-i@S7nW&mh!_AM!y>*&(IZ$pTVrD`~OEhDVvWJ1(aWwPy??|Zb+`y~!m0n}XCw{`X zzNB*E*GxL!Vslh;?e|Q&{pcL(qj58c7X2h_tgHy601T-#dvog`gP-Jr9yVa&7y>?t znsg8qb?XyIslZ@@fuO-F+>M(`n&m7Q$fE$=FY$44AkfgR0knOAO|72Gt1@s+cT}!q zD|jdRs4d{$g*b@R_AS;YD`p?OMw;SmHZNK!%oO-y3}i~_5LEbX)9b_v)JX_`uxP@e z39zM2);_j&p}ROpg?JE3V}%BZxx}a9P^JpImfO8>?ut58!-kmT7htvHQ0^b~E z30alga4O5uRC%~4BisU%wB1T>;oK&0MY7|&}3egXJ;O$}5ueRS<@ei>htyxc>q zY%5*p{$HALw`AhzQ|9); z`WYHU&0Ks8-pCCVC8r9a7yseHwI((>X5PcS_{jFZiQzI^I3AW03TLm!FV=z~Ky~Pp zo?gd&)`~TXl`g9`TlL2i>_~ib^Efx}@v%7NA(~LD>MhORnWgz}v5H31Rp0z{S(wNj zj3;xCIczCn#4Y{0y?r}&bUSv|wsH9$f6I*}giJ)kwM-88k8p)B>Rlqi3{zQ?1kmP8te2)I zSi)HX&Nv##aP@v|L_&Y89IKRWwN}mh`TDkKmmjaSy@AZn&wuVO)EE)GbUN)mCb#c0 zi#ZGI0*$MJad4XRhFPH3p&TAc@<(bXL#6AUijA?GdaS8shzI*dO`Amvkr>6Fk%FxSj z_4YnPHS6@Nefv2;$kF3Lde`Mom}<}g^XTC??AgT1!@{lN@jh(U)tmO}NrDNb#rGl5 zIX1GxtjuHc(U)qu!@nuEwn^VbF=e98fu9Vlss{HMV7e2xm)z&zAqE)yBzt;uOCu%i>2k~L1qjw~J^T51ukU{P z+;XLDZ+Zqg;xzq>Qt8S_Z%xZ?$1W!0W8>0BEoDt$8ekoi8WfK5^J*|&ID9m!8fpk6 z9Cd&w1RYVgl)z*-7_!ZemAQHjju@iS43v0xlY#+6BAHLYxX6f41aPkf6_|YQe%{Sm z?;dVZzkBz`-?$8iEq>FjRu$ zljp_|hne;Llx&@o(7I)h2!%1ea5`}sL5MyXrrktQyKeUmhxF^HPMhGgetoH0h}utv zy|$0QS7+NEp|}U3m%A>WztrAcCnxpHI^-cglzUC7Mvypm^cig3EC`}PD_?hOljO|H zSo>Ce7OL#}_bZ2cmt9UoiR3)N-)=X?08Wkg8 zE+#L&Hw*hZ>xJX7B)xMhX*V@c{1rdfUdB8CfZ_GBe>BF`Kh7uW;eqQh=_}UR*L1P< zR4XSOrGyW|(Lh6qok*-9i5&P1QxU-!kUX{Hg(UT5YYS!T7K&IkvMEcgMD1$-&Y5d= z@UOqn#wgA84cKThSpi#7A2wc|^Y6>@^>uY`pHE+cq#Ss&(|jH7OkK&qTp1L#j-?)W zU7|dG87THSsiEQO;2;x(Wxbr7KEF*oxOs?>q(luht8K2l2va8i*FYjf`jI9hB#KOy zi?mQ#aOh)PSIv8cr30{g9$V}tS?pQ0kikrfQmR2?UjJiD-M?Q8U7~`#UVHW*v-{4P zxRr4^Coe#x`x3bjTaK9XnbE=x8Lc-k9@FJ=eV&$x#uTDbmNL-mV4vI!3%oyhPbq+b z>w&*%()x`L*UDf3-yRng>-G+x* z#Xiyp{E5eiehkIQTzwJ0;=0;q!}23hzgf~C=8_+~_5o*4vt z_4NH3_rD=rxs)8k7;}^wydj5ynz+|x*z546RZF49IUhotx_?QBzChBqz1GQ=6HnVL z4t#N}1WtO0d_h8Nyme7gbc$dc=VbH}1W{jg*OvxS-nRJHn1ER$?OOfIx&5=AL>_`k zcBDO|hFI)}Jk{RuyHIgxA*9WKP%@#wu3@=KbBibPD>R%VD^gGR9k15)E40Cm9%y`> zL{_2%CArR$jd3K%-%=AW{a9*>1Et3Qnox|1Uvt&HF{YXn<%MQks+C%)VX3bxYCSSNX@r|yeHookdju?p?^RXIVfvrcxNRw_A25$ z;^IsGU0<&=Fqu6&FT;G1+LCQ9k7l1PWE2HPvRP~5o@H|Do? zB1$XF<;K}sjPM|A!`2$@zKiIl7HWovxzYOyb zn)9-<+FfmNe+mN3%zjbw6+3*ppby@Im*Vv;|GYm%KimnpTL5s z{~%Z(4c4G~Av-5W*z<1+rxkd9?|NSE!o^!Zzg`fzIVwxf6Z^oT?6Hztn(tSz@?}H0$UE-cz@OD0`jsq`^*mQ_f2p-}zV>qHSF>p5iy z{&0ojh>WXFT}Aag(ON{v>FnMfbP+g@FV?4%y$)?v_i7$70(*AeUEXt5yE)%y`I6#_ zsrAz4ntL(pVjYJ(QTtrsDajF?P|+wu02hQe>tTC}K9u1&@QoK3bUlm6q!>=MmZRF{ zSAv3pI;CZuOHY4ybIjYtthDar1o6`Tgg>mOpUvrfd}n{!aBa5>?!-QtUv`H1hniqP zi2CT*U&BQq-Jd@6G(GKB2cBaGy)eJ*%dV5jT6-8LEH|ZH#hlO?<%ziY_;}tO0YzO8 zCH~fs~E;hqV+rS}~n0obh0F^;JN*Pw2j(ZY;Di^nP6N zroHQSR4@*eVb!wDxY_kf@Bs-?DDdh=7TKpZ-T5Uq;{XYz3k?xMXn^vsofSu%|96Y2MvWXnr7N?2(~372GiV-gm)$94u{h( z`=Ok88A-oXeawu?9v)?PqnOXX2>KaRk(Y)D98zlvak!eab?q}*A%xPLM8NgJ!h6{& z%w88#-u^MZjx!NSbZAPab#x3ZZSi^N(`OjYVR`xCq0#kpdf}4Y2}L#yue52=^iYPO ze3`H+qiU9VTHJD{e!C0jWc^ZRS>3<3QSvx*e4o^BWJv1N#Ifo2>5OqW5SmwBx!|qY({n6AjE1W^jD= z(Z(Q-(uYzECh~L#nLParlKDz$84?sBXmX+72J$YyLuSOaHAj|<_4fchF14Wo_AQ07 zck@~2B8=+jxJV&FoPEeFctnU62PBg0ucLe}#`%O)T2jupC|+)PQBY0l*&o`|`Qs9k zL)`2p*(7i!13=snA_Rrn(*x#w0rPS4$@2#PW+UKY97G^Jb$lpQ2?Q<5kChwumH)Yd z|4YXLcj>_0Vl804=5zxpui^G;RqW&^^&6mT0#s;#Yir<|TkL{+<^EIt!|L8TNJrWL zlkoq&2dC7Hio$>`8Sp1D|CwIQ$Hm(6mmX@0h1x*qtVwc`2zF}1n0VII(r4(owp~At zZdh8(o7>hJjjw7mx>Mq=o{x`94IB596wjqE+d$y#tg*3;Dx>*l)1(u}cdu#`kjJ!{ zB!&ibBP4^TELdi(%DxLI0m{()$hSC(cS^UWOE166=o?Xx3_@USjw zd1Q-tXid!9??nU?;(6#%i#NIu8*xRs?*E9S2!(PwjDa{m*K~g^R#7ttV-DcdATtob zAq8)()X4C5NA@^Gr?kG!BT&)FS$cO(L;wzmgApB?wD>;C;Bau_i#ca(JOb1R3VnxK z*lJLP$KABaSCQi~r=u}y!vjh%u342TmNneLusT2e{z(~Evh%!d{I?|$dQEyz2NAYZ z>aKj+_GwHHWLrX}M8*7Icp)hs`K**shA1t;zg0SRb%uj+sUyf0d$U(c9FWii>SS1j zr%DmeaAn#2puO?cub-LX-+?5gYTS7dLXFE$y<-I3{G_Rwa><-}b@jaS6qtUtC(J;C zwK-E3dLQZ+cCaR?cGB@us8!vbZ_uFrAv3{m<>!{4a=ApB|J20@U3XluY!N$Hk{_cFj z-*U8%IJ%Zfq$_Q!90_cs9HpxABc)Opi$yWs~JI7t@5HnUob2-@X^CxXM|nZ ze)!YRx(}P3q(_E}fg-}galf)=`1`L(E_nO1;X*4}524wwr=zr0{lkWa29;8U;+pXU|Ifg z#9Ie>Yez?5ZugDpAu3-fVqqb}?%tmF@$x&caJf=C=}4CsRqi(>M;H>s{L|CA%aruI zxXmzAPhOHdv@0}Y%c83D8@dwMQ4oX|SGq^e3b)zcV6 z{!L}pxj9;so)0&zX>;z6~!siMk9Z4CfRrqqpVS9u^ z94d2bP|a=ad6EpqXm93}8$t{r@)GKGaz3rHm0DsL{EZ?%U!Okp6OkF1@DiH#CA#~Z zC|;0K^81;?92rhLyB}FY5<|o2m2?ABz~(1OpTcfuJ$P4A+4VzD)x3b~k1v;9_y1%? zlj80fYtI8q+t`T15ygAw<#3k^rzY014d0BiuA_N`(8-#|(p4&RDa;7JF9_9Wm?n8M zruUnobrYGgGc&Kpy(Rb&AhYY|vm9u8Lmj%tKgxDD+f9ubs~^~?1^jt5%Tq)vq_foW z8?bm^^q~?>4L)Jsq{XOAX^#HB7fyyuS!Zg{!pU)FAJ*ey+VD-LlcI0`OAhf5N6qq? zixn?X0>kJ~QY-z#S80r?8aS<5GkmI02!8?LAXYK!j+f4pdp}A#a4Nu)F%P<}2VDd1 zFKus#PuosAfd}W8$_6h#zk9HE6qINzb{+R7SVlo!G_`4SPu~*Vn%gKV*wzrNnkT#j z`u^UE_<C{mQ$KaZzG+#{2PznuiP3lI4% zHwWD81qyV%3V;OKvje6`QD-|?qSa7d@8{6o4Xl7++0S><=*}c}NF%i}u$fx;oolOT~_|7%((6pkpXqk+%D40w&(oEARMrt~#GYm%j1^n~Q z5lI1i+OX1}{HP^XR&Vye?f>(iKj#tL>GtDXb&vNtyUxP;!#?IUo$alSZikK^_C)=0 zC8YAeM8*_3fjL)23KI&}>XN}nYT9B9lJO4P=k4b(|1CG@<7GX?%il%a9rByN!G+HA zsm!hT)ti$p_dz4)$C*8`ztJ`u1tvdSM_vIxug9F`_##BEj>=$AEbL<=F;}z8`O_!* zavgR?Y_UtBuA6J`An%g45R4Jm8gp6uo98o?y+4b(dZ+?*^Y4sMH1NQB0{)n?qEN>$ zh)mJ63%}CrFE|78CnuqgmXP6qnVV6`nv@uu%rDR>eEh~G8b-&w6&_FYOeKpb_(Gt2 z8ByHei~inNG$*n9#L?KrXVy0z0pM@ob1CI> z_rAjKu#%KaoW(LTJY53H5qPB#{vKTbE9OUm#>iLcTF3Hw0reKVs05aT;O=1(fu+Y| zVrBbd)H*gDZ-G*r!i7W3PrV>rJHoUXd<8y7@86znJq5k|?g_(6TR6NbWN;e|cWOG+ zmt@QK6t|FFCX{SuY0_lM6>tZShUQ8yO%^M8ZEBF36b0!mW z{d<&W#Qlb?QVwq9Lj>CpiAM~BBBZvX*`#VvB14Hvuj zAFH#kViJwCIyiLRbXh#`7#JL6H);)!Vzc+oV_4x4h5h<31DhBhuss7)6uV0nyK8Lf z7%yWL2r6&z0xRF7)pNvvPK`2QP^wB!P6l_+$6o%XrkfxPxDx>31fVb+f`Gzi*jxj= zJcGqEEiD3EUe6gDmuD#romW%T(1*JHWf>v~lw z7gVQMNvS(mAZE}jEzMc9rY%&rI68hGEy`~0`f^()>-MnGxJ*e^$&law;Gt;2_>fvHM5$WN(3Bb8n`fY&E~I>~s)CIiHfj~Y0P6%&X% zZda>iA0E8k)qu4^hQ>#p;S3hh-(6YPx!)_GzE_E}W}fs|q6sTMbS_){slDZQ!AJ-% z_uHM`0g<7Z$hB@5%SRw2Sm1S*XE>!%HJeN~XCxv|VR%2YAHb$D@zITRXgDs$3T?p` zKolno*(tdLdb*nY!+itD|CmBkN&KM|Pip$u1f z*moP+m~N((%Cn|fadi&Gp2#L@a>xs<9~fxR3GgC*%)AOe4^%~iCBUG1jAeFZn(R8H zsdzOlKLpt=7MXOs`RHDMn|sDVoH)rmFXAGBG63OhGEdXzE*wpD?Jl0R=J z5Z-VbRu1trE71Aj>njkqwbthSh4qcSedW30n1gPZrB#BYZrxYzY!WD{Cja_(e7%sL z`W-w#;t)I)hrS{b4#J`24X-xCq=+g_WTakP!Mgvyf6rf2yuqedb@V^A3asquT5FSR z-N0Ofiqq_cPF3gD)s3+_cm92{>M7}9yIe5Amr$11hyz58GrHxmrjR-rh@Kf$X{8m! zezNgelIaPJ3h=oP@*Q+=<(dv=d#~k0}~e(0!{DFaYk*Ru0Fm zV(1<}(@@qK4*+9|hxc5S9ZeX(cZ?pHmjO+R2%bnOu{L7hG=gZUS3%F8&WU%)f z%>RJF^PX2~1MGxYtULUd|M9=s!S(2UYRtG({c>OZKmReAzJC-=^0eLd_`5>>rJv6@M46%iy@$|M@AN?ANloaX&l%-7iQ znVcw?ro?YX+RPrJFnD+StHyp5DmVlCrctIJ{XEuq@UZu$ML01^7&H};GJ{PSN%d&tgyt_`zwTnBEn%sOtR7T#`?r7a5EJP_@xsM?|ZGCDXLNO}(GxbLk)?NBD77Ecc6wI9!9eG>@8AbUq_7yr zfl+OxROaLE_U|YD<^@rX8*j=*m}qxVqY{VBdeEib#m!CWj?2V1*X)owS5&b0%V#aC ztEb<}U^OLEQ$39YU-vDA>22*;VYL+DSxyQJTFP-15#Y>3lb&|^8a+?(T zH++RQ9OMz^vC$)#a24Ksysb6u+QLt_uoL9Bop&-KF~O-hHaUWUBl>xYd5axQoq!wq zH%`5B-J>Ii>|X!R%ojRBhonzV`4!4D9_<2zfb{h8vc9|B0K+Cqo)kreB&>pyS9Vf| zGi zTGTHBQRYz^-L$PmyIexSf9B>W15orG7JBg-IJj>(v|picROh|?h*b75Y#MbrR{gCL zKqUHMgPSo8B0--5b}K48?lfUyl=+5v4K2avjOay1Idl(Qb;@G#2Bar=_#Z5>yuoqN zr4iyL-K-y#0-U<%W8|g4nx}O3j}sTGdJUD;)uiU%=j_rfof7vU))O_pK|$*m?K&NQ zwOq;Q<^L?JORJ|S(5{}Vcmb|3;!jn_z?I+D))pJAn3ZA*B!LTq<`1(`#J7;u6GPw- ze4K;7)KDNCf(GZf<Mns(Al8^&oy%11HH?JYB{a-kB1mpg@Hn=bM){l2>Zs zyhx0Nd>BartCP|qSmsDzD~4ALw|SQxD^aRh#&>vJLsmpN!2`u{GbM`9%mbMkfkRUB z91_({^I+`p7d<#9#VJ5S^gtiM5O3Ct@k&+xG_$CU!ZlD)UG1OuX0Wzbga2#g>4O5J zqUQOd&}rwxjp${**aZw_!)LNQJ61-1XybnB^l9+rI&(A^E_jOv0aZIVD`w9h_1_%# zo1i<@KiJQ|)~(}3+_zY7w1M)g(R8*uQRn2=M(=`@@7m=nRz6i<#fUIQcIviVx^&^M z@p`0xUW!$W#WFnpv%Esab>t$6k%_kaB8O_CL>cbTG^qYhrU}FwWmJ|*!3^JCKBOvG zdOq>j_PQ=IeD8BbON=LLImj%HXJutmQC3c2el0b9>@})x$ec>r&p{iPpyGtU)mdn3I8lxJ*27_sZM)dEBkfx$_8GLhBa73sphA9wTBPB}zw~_Z z3rVr24eRUfCX-;tD|6=$(WKN!3~p}D!c>i~36f@s)_u^3OD(7fr8**LA?1RXPYKyO zq++jAl8e?rqa9Va1q#>$A|i+DD17GR2$xZ#Yoae@Eo3MqTyO@ilHM>9`~K89Yx03L zzWUN9EFj=}!P*pbz6D&)zWgZ-`XdW8%gN5^v$E)9z-45Zq*w;w*w`=WQZET0Ih_vG zNf-n-43HEl=UM6{5|6^%EdBPX{5lFewHc3Nwrn2O*C(ca11)ZyCv5>(ns1s`BOud^ zK4A%FCUpe~d1~sWv@0;->|%yr5>XoH(+m-guM1Y)xS)x|Z+G6CD_80d>LYgA{9r04 zwa35WKz~fqh@hmR`;v*PSGq8#505pZiJ(`R#zs!TVI%Wf`Ha}bq499-ai4#_D&|ne z1f_nl>Mz){0zAA2El~%vrRnK9`jxu|>*r}2W!nSCpv?Opf)8vj-8khViQRP3EuZ^b zxbGo2Q8SBauaa&Lsy+X2zdXKq0QI0sO(t+t>*(lcYdfrNpA$)sYpGY_x#>G{gRuI; zQHD|&Wl&QAKKK-+28q#MFC-{R0z&%PZm8rgTZ}{dL+zOxWNJbShTpzD2kWid@37*86S*ZeL z(N@QgbF|TRZBlO|&*ZME{PVk{!r@`B(J>2kd26hcHi9KnAW{2p=;q{$6s&uFX#2kw zg_-zMEErDTvtqp8Fu=1?PDohC=T7Zc@l$n%8DD>|v|=CUait$OQ(c>?sK&n7@VBb1 z=C=2=wz%(mtr{cu)%tlL+lt=K%)$X^d+mhrdFtY4xAU)d?RO+GV{=$Uk!28)w%*ah zJ2O?%<3)5txn%rG2Y$b`z>S_;si4Ql{!tJk>i(5a-}fT$hAeR0D1B1+SXRROYvj|! z1ZPL>=1#<=y+nt@mIhT=?s%Dzyx@0UZ&}mZqvV^7vn;;$vr1M; zbUtY7%zkixO5L$EKkwk{m}ZYX6?)8?RSn>pQH_094o(>G+nf$Cqyf3=mRh&XqjP2N zb;ZVoERq|=E%A2q)|OTu%LRw6Yn_dN>%Ouwa+Le9^Sfm0r|c|rD2jNnW)#@0r>*_R zZ7EZ>+4W!est9a#?R3e?1+z|c^CoE{=!)Lfl-s&$y z91F3DQV8_)=8io%crYpA?(2nyT;V|rH??d$2;`Bho0f_(qCrV2d+muermtj(Hcb2| zHgdpbCwkMwV)WexwxnvNuy9kIpQWqm!uBosgZCWi95@5D=GQmWBL!&n5rb`QTamotR4w2$#7=p!&ToH7{PdRGenI_q z84E;uMD}D!yeHBpzUM?Yvax>!)j57M=D>rN4=YX4=oYt-0a~ZB8h?%P`g1r*Evqa- zx_ijhj;vxB>&zr~Vrcofkq~vy7kL^1F1WhLgk&Y;Rk1 zZHNUu-hyx1)=q97E4HY^ah`Pq3VdZKMVKcV<_^qBAy?Hp{WinRP_B^j)(Dm$xIwXi*bIkcJ!Dsr*k$UCgNUj3kBaii|360aRJW~D3?PXkzw@3JdN;4pe z4_>DASdpfrcMW$@P9$qBsei8P50`ajqG!S&;xe7QXcFS%*Cqd^nn^Cy&PQ3CID-+V zi#92)U!+3XPrjfrh`+QkIn((By&M?;s6QN->mJQeB7?II<`vATqJ#<9SH~Rx!D6Ma z;Qdw`^8e%>FTE*3q55t2e=MChKFcDXnx!Neqf~ zcXvy7m$Y=lzuxco*>Q^vgjwr(?)$pVGtU3>`jR^q1p?+dc}<1(FT$&5>~>DAr03>> zo~zHu<$Gb{N3W#ws_CO^LSU-7Vw&jiL{=>vT;VY-!?jxw7S-CVj;)ysLW7GE2S;p6 z)Jk7T11*=1ZNwif3p|F8Gm2B>?U?LHA3Kf>n&>RAUqk4FZER7!oGeN_t}Z}mM{OJf zZOrs=HOhIC<5y=)>pmP%7C&t}J@TVB^#$c!Bgm|3AmQ$1FQ1pV!qMTiBdMH`>uqo+ zKr_SSXh5u^9cmcoaZ(vo?yan<)sHy1e@of|#MM5I{!!Rz!l;RuNiBA|NQj|1xW3C# z{}98MHTOaF_NA5^(gt=ZO-7d`_R}CW8t^Ct%y%XiLT!$QQM^l7b6MscZi{6P>*0t#9 z$gG}f5Aw9M5>#0KZ0Mi5qaFpa^%E89($ z_XISj1*u&8D||TEoH=ip0y&aXLleJ1^;gLy)rcw^5(jmU{+LLq-2j6x%w7E|od~iK zhzwS7yf6&k)4+{Qr4bMfMwZ+zS<%etQ|$-j^^31LaE)!49!;sG*AssSuq2psYaXZ3 zAFbM)ON9IulC^PX;3cW1Laa`W%@^3o$c&A?_6UcN}9_V&Y$ zJn7dA89f_b2wzZC!Yc5op|Yk{y--n6kshw!I6Q1;XE&NU7?A_F*}vMpf2#S7$5#B& z0r2e654&^Sz8SgC>9vh<&J>qbl{^Tb58dsjgYvT@(j)i4(mG2llvo)mtX(CI9df{l ziz+5PBpd?)6_zSKH$W1As-17VkI9>NMfAFtLe_KzLXXYM1cX8$vReYB5WVPHyKJ@< zT|mbe85^?7h-A!#O(5DzZ{{WZtMdKg`Pa60eg@dwTt5PQIokdm5Q?q2e*utr6!{x` zkMuCH0@MY)JPJQLI`r2&HC9D>q>Qgl+bc;K0nYyX8V;OIoAGbaA}UAOeYF~CSiVL~~cg_m?B-Ld{u^m$iQ zupDR;;}8*EBwH0_q&fA@shQCXO0(6tGbGaLLb|si)JmrG+lZjYBp^r;ASF$x;!^yM zaXwr)DY*DrQlB+xhmf#(X4A~f1<&s)3gDUgdAmi)+Gh1sBmlgEHGd$}&h zj4GWL4peFQh!4x24@C`r@KU4kLZwHOjJGljKskjGL(#C9M zj(3qqlB6d`dtva{?oN!IpQl8)U<>AM*5rw2fl~JM1_vPqxL#UWNeKu`lxHA+JB()V z_1ibWq2XNmjNFsnUJzj8LdM3%mM!Av4LbXd{q%=M)N06@hF%&eQ! ztsqkZc~dm=>`a`N!|w8mvfOG8JvCnld*#JU++?ob6mXA)&SlWflSJW`h=)8G*E_rW z?+%-op-WRCBk7p(Dmd5@@mJj*5iA?CJ5Lt9H(;+yhemUN^Pwp9LJefo_<}l0;k%|# zp=zhG;MLEEm!2&;T$u!}6P%L8JdC%B~~SFeNVbx%H7*32|Qkf|i`WLi(GY#ITl z)&EA@O#`2NeU~yzd0TFkCIt&XK_Od+^IXSOcX#jI-PvFy9T<=6dH3jw088b$7h>hd zfdzUN&feoqA9xOf?P?vBh!MkN%GR$7i)9=t}3CCZh;_cgzItqf&<{ zl1tI&hh3Bj(TBy=wu)BuTCYM)D@=!0Ih&DlGPNHT$(;=$POU6yC7}$&Kv9(tZzzHM zyYDf!CAtjvS&@*e)n7gX_b+O{oj0-zA>&C$S8jCnC{P@nYC5zC{;5s7Ba*crbfuT0 zXChKtb51OExah2xP}fl*e*MdRDE2@S=ZlDLd3<83b#ELcVT0Uca{`?L(!TkvDVyMg zwPdlNoH!y%ZdHY+MrTRzJRq=B(#BVrnJ3f4;YE6WRE`H~vD?3as!7m0nH`tW;$6db6M+AAk^qln~fQ*a@J;z7%8T<@nCuS0G*#b zm~bt@h{#Yl-KPVCQxR3H9Q9N0>Ppw!Ty+NjH9IVkySdkS<4~MUK97T@GU12RimSN+ zu!6qmcj-L>Fi?w}Y|kw4eZ`^>y16X#8(D^jTSxSgOy4HO*a_CF7qT0cT%P?EERZQTuH_7VR}-`t&uq5W?J`pL$2xXFTU#PzY?%SpKC^PuNh zUoUjy+(K0Sp#X-L#V(y?KpK)Gu<-jnu<;KuxgKRHpi9mvNA*s^5R&_3b&?^>w_WCO zrp}LUnnjKwv^r^A@Y}zInK372+mdCRAS7&~U7MTW{C4`&8<#o+%>!CCT*2$5OFxk4 z0o;D`XCAt{{o!^vmliSb#w$KU^mbUOZnYj*o!i8^esv`3YVoAa@u#*RiE)CeCW(5( z^4=H@a8%S*b9yrPTxNQvRy$4P)=jiLUJbaWQ37`xa1pRvvX?b$M8E%<%g6DMHADFP z5Q&qOT+|Q5QH}N5%H*!_Mdmf#Mo<}_2jb1-?3qIYg0vmxUqUUpYtEaP1 z9pGke6HC;?__=hnckpYPLFnjN$24Ml#SQRIjFTi&#IJGOmft@1fB{d+#R17lPt?sP zsC=gJ0yL#^zUoqI6XoKn0%s%Mc{x$wC2)IUduWJ>$-JaX3I_*UC*Y4R9SKC+jM=m! z1Ic`tSZtriJo^BUS(R}x9WPlOB2f?isyhg9WeQ zg%J@I(j~mI1gr*ViM$|mipXP<8()HI<7SRe8`t@(`*FLQdh((| zBge?rmkYsF=W=@}1)lg{)X_l84K(#SI2?h{;fCuKAJP~wf!AWlCKoRc-$+&r=Mxt8 z11;EaIBl3S*wr~W01iHU`0!PvEb(q(w)G05?H>mC{1GGT+jb>}_=BXI%>$$7yRpZm zF>-!abASKV*#nRu4FcpWs|JR_4KR3}c6;s7wmNq1>*8_>N`DUi_w{P&dgtWx(*vNvnulN!E~U z^_G^p0~5_!PVb7gV+X?Q5OnkgGO#&Sj#$bTt}&ixNeQ$Bfrk^(TGwsUzg*wqRYc3# z|DJeV!8=#jg=Jvz4bnyzQp zoq9zHg7OmdW^Y_D(U9Nbht8fw@}NDlCZIwBfzcZS5U=KPM2(JsIY%0V#QP%5NZd0p z;0=yQn()2PvPw6RVOR&MY4?EOkdwdL?Ii>4#`er;JCzngTW{}S!!t^kZ~jC*eh&s0 zJ8CSVOz*>Bk5!l^lP|?BHnP}gHSh0cC-3YQ!;i~|G86az9_GV*iY#&tqcU={=iDbp zfpQH#{uM$pYL2Z7-zg#|?^}tiUC;p60h60t(k1v0wiKWEEAbQO3wm*A?8LPsk&g?W z%q2TfQA%HWO+>|M#Fb>x40Ln<+>ax#G!Hkjbj>>3pv0@z~+V@E&g*QVle$u_&7+f$ekEc0! z?2eB2aTM+BRaR80-LIh;5a>`;&0CgST+p`vk> zKch?49jFxxPZ29>d4R2HBYSFGk6#`%9p1rMnwi!9yG)bOA?C?a)m)C}x+6BTUj2;_LxsMs^{IHPT3NQ9>wz z@{D-QsWDQ<0F~I*-QC!kM~KPaVI2f;nLdBp&^nj9u>1=|Ud1^1ZWb9m?*Atz1OL%7 zvi`IyK)v{D<(a?2fRQEA6zseH2fTU#0x$m)ZMkjk6iiTXLg9`LR7BH|Awo57-t; z;VGK4ARuCNfF0~Kee3|qoW$A?3f&wOMytZN*e`J))Zydw3{oE(B7EOaNjgt*%b{{o za3u|q)Z!u2O+a0c( zCDpd_-<8d)tBpi<2Zb%g*Gm=?356ie#p@BXQ+q?u#b653l(MnE-Zf~`r3c~L%Y<|2 zVoOR!r=d8s_XY$+c5rvNF`B^aM{8fC!XQyAJ38i3^nolu6}J>7Do+hJz!HGM-ELVG zR(JWgEr`zlIj!R|lof|Q?`-`n>)EgF{K@OdP5Kb!?4fL|#LvqhspVio6JkW>_p^ql0rkjyR6}}ypsj3Yz&{%Ug7QNk)+_hEnP30=xO&gxMeh3 z2@zMNKn<4s-pw|hJVWRTq?c9T$jc*b>9w=7acfEP%KS03a(DJJqf&Z@^HZ8B2RRVW zwNiJ_!iG(Ot4MgAR{qVpajfXLUWTTNPUPq>EW`qH4MIlFTCCbmzWr+{%iq(+e^PLn zaH;#lrqvtzIq8@q?cLq?6s|?1ZL6)W9G`o8WGGtN2+(b+YGPt|f##=|Sit6g_otYy z7g$HBS++{bEM=^0Wz0vZ3*(d*cU|LOuZXy`2De*$EYnARacPrMmf3y= zYEUbH4>k});?{SuF_D|NUudTCt?mFszjlQ-L>WEZ<>5{lb2mHhHB)o^EzNGS?sc*y zqzwT+BXpf;lk(&C@6jVgdo-N1%shvdQ=xH zlmQj++R>d%j3OY<0n@G;h;+UiMx;T6Ri60BGBSN4lW?@h zzELBK18Q=LKdWDOcL@za$Is2|Dj_sOFv+oNUk#{rF+p+!N@Wf=6YBggJgpE&CgH0* zV;#;^Y9%&Nhnepa_ps2E1n+D@cRHT*om&TSaqNF9w zhMoB?gvPLfrQthTo#0jBMmz6nH~UtfZ{G$LP${(3|6ZbX5ZGA1vS-=D&L-d5mza|G ztKW@apI7v>=drG3zo6@dKxPaK3jXB5ji6x{Tm%jZfJc&2i@)Cs^2TNDTB@t_6G4J= z*)W8yb-l*lC)wTQ(W8$E3zdq2yugamEVC_|DlxN!uaXw|*T#6erF@V^q4xT8Et>5^GUk;Z+s&3Kiu%d5hd$9Xvihe{ni{C9z zop5L86{SG6-8JirRTDZ0f>`)O%`y#4;3+B|F<_vxV5?*jQw+k>OU)UF+u0!V2FKbi zBlBf@0V!D((o+?-v%S~R025Q$vM4|sCNL&5?d|o3bSLeyQ&j<$;3L8RUS!Ca1ugcK zAfPl4v!?e;TRhdF%2f{=P0_2_9!m0 z@HhDmD%F}yd){I%QzMyou|M$(Nc|l>tz*|;GlNPqMAMag(qif9^JYYvfP4Y7uKHsg zlSDc=sJuZAv14|1#<;H+UgHaK1j#TDyQ0r4Ac+U$aQIP)9dzneCWH6s#nmT|pAZgy z{@eemKf{N}$7Cx*{961P^WZ+O;jae?zbFWXDqq9=2hNpRAGX>00GDRq*?;wViFUAZ z$wuof^!_IV0RoYe6xV=K8F*s+N8o z#rocA{}2$pJL-JQeU$Zm>GBS?v%^)ln#};`Yfr7R>}gJD=(*Lo6(v!qg^K~W2wb8T z_8078G08|{wI2XB8kQwZ>T6q{z)4#k<#Pq4i**(uMLdV)^V8!uaK&B2c994bs>sTR z(^u>Ld5<4bJKHcLWcs=v?Z%X_CpK+G*f1vVwx**$bz0fUti=hvt6O%djGL~vmoX_e zpE=}jt^rGjbtBcc!y>XJ7TMj$R=+LAiW=rQL}K>jz;!?aPuRz{gZb)9uOab;C-3GW z-O#ivc5-L?wFN@5q9q?bLB~VatV-K%%}CF*K6(UAagY4F*env-M&cpY`7#dk2nu`w z2283g0tJy{$NOsaepssYH^PBmyy|3$R-VhBcQXYKO3+j~;TW;znbJp7bDtk`%0xlg zlUB>`Q*z+scAiP=nPFS11c!!cm}i#3qOh>`O8H3myOj#LsE4VU`_soV|LF%)5q^CC zlWV`{{fTM6qrW~YpANK+fveF)Q6D0O>7C(1nWw)Bz}@ck5>L@4yu$Kmz)S@_4jLte zD&x2a+%9pw_E{C;s1U_=aoX&x`UbfBn(lO0Wdmr54mEEW9!Q;<&X@MAB(8SX3&{c? z+&Ju_ms1~nz-2s-U43m}3QfciQRduct(R5ZB6*DTh$R;^NbeiPV{6+fucLr#cVH}P zusFzT(AMU2+34=V67@Y^YEU{8z@b8P+aL%V{xTn7F0f&M9*ejYzA(RufY)1I^qc{rp<@D1GEqEO=7%@b*mZsBT!IB@ z#bOX9Wb|GoEvyuNC8DDzhcHWHFXJM4 ziO)o)eppv>gH#C9r+U)0)#s*b8JEIU@~@R9C7QzJR?ov1pR`Mvz&C<%6d=!PZ~{J^ zERue+e38ig$2S%usTPxj?crA<6Vl?3n=HXbf2)S3CRKr8S>ooIgF}9X9?mO;%8M0m zobK{hI?1l-8`xkFZ(3H4A3+<}&P#R9r{r|Em;JP7Thmxw{b{2+0<`dU z6tXOXWyDP7pR)%wiw?8t!d_=v;0xM!)u~1oM2wNp=DqF%R4~1T&G|eI^^-S1xo{B7 z`m2)cM+(}f-L8He0KKs>Eem2C?YbQRBLzT zYCm1@AZ4eyDB;Lv^*p5AyJg|mY_uGD!nbO2n~L%!pR)%zT-nI0)uLbKVtCW)ZaM2@ zv*?6x>30gyRj*d`k${i@;fD^Jlp1zQ(17NFEzd%OnGm#d@#M4n_dT|iXA70nmtj|# z0*^N{LKU|LKOhL5a??Y8gk>~FHyc)=N}G{~rL2`bg0BYkddmug$zt*eRaZ!Fk6IGy zC>Lzssuw0jQ{70OMxg0dz)iZrZxA*c$SVu4u9R9&%=>TS)%H5pyckA zW0oiI@M>8V4@FxqUn+|>ltL#RA^vPT`3R3Q!5B4yURVr85|%nXMg2~Ae4)k7`(%{d z?6Q$Egx*(-4ZXAQ?sL<;b#98VxRue)U2;gGZy} zn=Ra#dWOx7Q{-0yp5!ZBI)yv=8!*#|?hO2$r48CuJ&Z1cO?>9P#D>@gG-#wUDqS03 zQ=nc_=R47>8~7_KZa1mmZ5LrvilGj>vwTk!{rgI(`s0$z)dm$*^TcMGV3~lRh}3ay zO~Z1#Yeg%ECnhZa{VF3y!^{1;wu7eU#`5n{?d`(_Fedc(oiEZ4)CB$(!-y`ZF?zNy zy_9*B$H?tej=?|vJT=h~K|70XpGG0yLoZg&Rt#wZ*vQ~d#`W~G=D2N1msQ~ymLJ<0v?_n~r+`p;jX(DrC`NS-kjL|fZV zjqk{{V%ypgA(RRuJX#a-V=T*sR%7pBI@q;v%JEWwsgxSr2`uE&7MX8>Qf|fWAoP|- zf_w)Z^jz2=kHAqb%)zx%_7&NS?aHzPP^j0&Ji&FF_sA!|jTukom1V#9{nze3Q&5fm(UdH*RbP0V;!?R~Dhb$1{> zz{eFcrzw3_M^@jW;V%0YK*!4)#K`n9UU3%CFe-g%$f8jz+ve-9N{(qa6>4tgz|Hq3 zYrd||W52t7%N@WQ>>Q4n*+tFb{af8~R)}G>5v|L)@d=nx@(E@y4)KTU)_PBo(zY-& zeeBfkj&c3-zM{O<`d!z}S5x;^qMZYsncrVpFYk1yyXx_g)q`+?FyR?BOs9#2WGBTX zcJYW*vK}w?txNn_hrHG35d?Lpgn#!WB^?J;%O!$Ev0Vy(?+9Fe&6r-2n$V=?lzj8x zzHHy$;QZ;lmv^ZNSXC6!ehvivo5p;$(ce_S_lA||b0}z!1n0h%t1H4b-!u8#&pP2l zC%%h|228nzMP6Ac`NT+cZ!$0Z#zqgVliho>62)suV=53eXSBf0?M*i?Mayk}+@#f* zCex*3S(BOfPT^aXk<6pwV%FfKZ$eM9arh>~z=z50`7@30CB5P$vQc8*_7&wwJ(<0q zhpg>tSfdXwK44V#D6)`B^L z4OaiGJCl>NGdLgy%q-|wfaznfdMab#&AM`s#MC zIMtj`=O-=>71dX3|%Z84>*2AEK3lh-4VMIASrQQocrt>Jm{gUL0 z1~J->_g|E(a80ipf?%Mw)`W;oPQ7TF>=W-0=ZjQlt1|UM%&_-bXRMKc1Sv~NZzouAuJbCK*mZ3wzb1!FRbG!AhJ+%;L@>`nA=dJ(sIhOCy z##t}D*QBSf%$g4?`Tq6&s8JU`VPjDn*nb08A)x-0*{z1X~7{f+3Bm3 zl*C@F(&>@a8k*eg-)$gXrr4qq7OE;AXTcyvB<1*2qBWRvmKe(f;y7(-$J_!rht4Z1 zD(2_Ok4`n?ENXN|TE?cPx;HvEl5UGiPAlL&(?7HLTY=R;rt|Zzan&zs16V#S9pHcX z)E2Vi?Kl`RkQTFCkUT&_j5DX9Wx+wzwgamV)&})FJO*#bX?mk)na$%es=pqLv9n8j zy?HxER;IO`L$1U{BAGPt8O}|zotGm2giH>+7s2-m496Yke@$=nR|wz#7dxkb(aEb$ zdUg32*VlJhR5Q|CF!YXY^B6+e+S>vK@`R9-pzjUH!!}vFI<<|TFENa6I$x`Za0v^a zFZdk)r@?7mIntEh7QKH+X>93Gd6*NmuI=k$k5?z~GI2LdRg^RG%F%1erID7TA_@Q^ zP%3I>w86vq_Q_m@m8~};bV}jV$(mF^uwEXmeS9j95p0VQxE|C0!Fd{tD`Hhnc?#=-Vuv1r|b)0ACIKjnotp@5xT*F`VG@|jDb zm1RdzBu%7=si014uF`5M=|V{-#uISy@bH5j9R-K0(%Ea-L;gZ3=6ED;dGxfj$GP6+ z^WxW1%_6_6s%*cVG%LgN?}9Ia{Yx}oOEm1?Ui*$+L)t+BC@8W58{YZ`?u$SAJ091+ z2Ni4*fTcoz@Vme}&9>`&Nx;s|j%|%DS)Upn$ndAaqyC%)-isLu>&L;Jeg>EhVz4WF zKX<2q^!S(d`FVowGI|i{GQK_Zxr67kf5=VH20jE9q;V+2<|RSY49Tm6%7a_wb-MlQ z#n0ulhiPqlB;^f)l2jp^tX4XfM&&be$4ho4Z-0XAS}V2;QA(*eyL~XY)V#hjD|B;H zv7Izc4@Eai!rLs7h5^=I7Wir~#Mca~DeA-}CGTci^eBYMkP3uxvnLqJp z-kE1)pt=i6Ii((FP>?#kLn*f?@k=_iop1RteK*H`@-{9dfvWOXyDnq3k10D_WLb9e zgwFogx(&}3+udwokJ~q6tWpvyfETU%9AJWjtj)(wvFc+6Uj%~n&HiGjkmMwOj1Tnt zM*6PDI5Cps(wH+3Ub>f$LZv|Uo8r(Z%p}@|Q?|173Lg7+U~v7tj5&8sZlU0DvxBX- zIw82>H@Mr#CgZLB#T(UheDIV>`E+{yoGt3PE`M<`Fy68JTST|I@fUZ&=GiMem6K)R z$&**2&uL|>C9eP@zg>qWtR?@$c_%WV&yzP4C(q}Bq5E@Lt`?p9>zzsGuaBhNY`qgP z6b5cFn5;%EdC6^-u4h+H=gd@G0xxGewM6cXJWm8GufH^r)>v|CliO#oO<#6rRV@3w z3jS@EXX!~Ui~?+td=8z-!nPXA^ts#n>3KM}o@kb#9GwR|eUr{R!u?b8ex|cC=;VIH z@?6G$OUD0in16r87u4X6+KB=)XE5&wK7_kpt7zM0*7yYSK_Cz$<68aWvm;arQ!0z~ zdrgMfC)WwyV-6g>AI@evvb17|c#6ZuD3L-VVUMMFxeMW3W|7=)?O1X#n{iX558h*t z^@*U*M+X7S(E9#aX?_>;n$ZbUYuA_zJ+tUbIAcnlI<|8h^5EFSFm52;+5-cb4)hPY zbZ8cKwCmWRJvL({vHfp*U1`^aOJ(eSoiPFJTD!G|sZO}?S1wOb3IMih>dhD3SC`N0 zTZp-gT7A7h8W*SdosN*xmN5*TFF|DTk;nbT-sEwR z<7BIWz37v2)p8Q&XN3?mpG;HG>RQp4CI=<{ViNb20q;?~&CscO(Lo_UCRsjkJ-7UL zEttOe+naLv$unoZPu7+>TkHd!b3xcG(_r(ZkdOIZB8~g#+EoIv15wOT;hSSx527wO zDL_ObH=%CukJTr_2jPnF*42vo{0ZhFI6=dSzt`d7YIu z9XIY3q=Tz*x4j8?p3Jw=;bAcSEc~w>NqHqC&A{O=C?vWPasqG2BbHUGCtw`w4s0Si zCUW;K0nd-w4_j}uz4r@!jvM-}AA#Anr%T5n-I7|Xu`IXUQIK`}xbR=3qtUp>Xts;fb!sn&RtQi zCM|Yt*aBX%g;)pl2ax~s+#vgI)2#1XCbLX2yUqctqEbxFzAd9R@s(!EjwG3+?rqIu zSb?D%DT71xvP;+SaTjlv-`P~pPnAnTUet(J+P}nHG;-MwhbDYQc(h9?vLvbIUr&$} zu(Z`W2*o?=vS4B&igDRV?oH+L=taWW~#`iW+`QMFXjnH51rHS2FU|a+&mUEMgn|1H6#R6?72_f4W(o`5^sHo(@Aikz1BFm0Y!7)^@e zU7xI%R{@HwB8~Z%dVA$tA!IjgCNtNdz;Fj$h zh4B8&aM_{TW6J9N@O9huGW>Un1!=(d2n4(w)d{nM#0>0^M8wpz0c%sLjE6duWGMBk z^!%xc$@8|;9MPxYV3l&@RVFYqx1TXhuJTX2k}KhprRf@^50~;ZXyJh<9C@1!u-Eny z6TB|WnEm0(YI2{Ujr6ct^AB(di5>!e)yn~o-Fbey=>oqBlOlJxe&j=}ID0uZx)`1S zuN%g;-u0KwgwS`}G=%}HRv41zYUqJK0H`dsH)2G4rKx2X0S>K#G1yTlxhidNR+exR z)bbd{OtBE)Xk^FqY00X&>I}sIS7gONy?4pxnlTlY_Mb8}#wCA00q znj5{#*~G-83GskHVU{)0_~3M2dDoD6sY?b?4T6+FWm4yj#BAb5zfk-R@r@n;k?aU! z#wZ)~hTeQfU4}U(eQuxhzxT!c!s-@kk?2^gM@yV%WZRB25rOA%TZEsSo=#@ zGg_UAo^>XDPmQbAC8b7&nNGl0g{I1a*%#Ytwkww{*M{1-dK9E?un~C@8jeVNq2qAoZ!d~)tdBxpB&pP1U&w7I_vE8DX-h8Vbly$l3FFaR zjZ7p}GK($ICrNGG5_*BOvRC(oJbXlRPk(3{|6V8L!U7|)!H}n~S;QZ7MC01_aEUd# z-w-&B9U33+46Y7OI4nR2POoD7@uc8yM9C2X6o8Qi3ttbVn;}{jTYWvEc3Ia40%WW0nbn%2_GeZ z3J^n(Xdlw1@{8(7ce+388sOk(pcy+S#}bLmrH_uaw(x3L-9w%jt7@Jv<|Un$=eM3Y zsIhf_H&%zRm$iG6k*1?#K#uu>cg1-QqtmdiZf0IKDu{J>*?%Zb9nZsOS-NPC_`pZr zo|6LsEg&sG6@~;Q2=7l0fdpDdSIl5L0i19$)p(SqOvh2P($JU4i|BLx{Saj4ZjwbT z(VM9zBfm*8&=94Evuc#z!@J1cx_%#iqzFNJcdtO(hfv6^GbY*k&`_)&6k{hA%RN|keTn( z%D=1+l{zji$@IO8@SP%N^7s$N4QvcjR~36zO)BI9B{KXKi2Pu%=DZ*Kgk?}(5q4pAJ=;p zvVIt5S5J@Bi)*$>)AXn{C>dC=2YbNNwmNpCF}+{O1&cjsi7PXH{d9S_`g8|cGb4U_DA!ui>B8w_ zUB{M^Ze_B4rR6{VewV9Gj1mt&UXWMYV$*+g{>n7b)J9AJR6Zz?N4Fe>e z#)zFX*#SkP5HHla$gVbfzgtUqr$5s;1^U(*oR(-`p6H1D8%Jk_l}`aEA`9|=|i_0BmIRZ2?wSJmXG{t*bQ`h3gQiFBS6LOy2~^RK@h z&o`ZHMf~i2drj7QP7bbdKOo$VM~hW7em1pnd0JzUSp=G{KQ4r6l?pZPirurddY?Ky z{Shslz3~*e32X9H6870YcN!QxVl44^JvbA3*0-?TWc0j$a#Koq@Ny=ZO~2W9-F|@d z5&_-v<&PKyJB$)a-+vu~C(V;3isUO(@BU?+1S{w)yI=SLHa0dO+{xGX!RYw_c+9$P z?jzddR0Mbn8WQE~`HRT;oMCeDR#{%XoO#&q1Kg>ob4@Y!ZZl9R!~(5D`r%WOj@q8{ zmEqJP-gp$=(AH}ow+Z<#aTi=O?YJQ?pjj7l>~T5Nlc9U=K580_%(Mj%>^DV%JT@8% z6+eUjV5Dy^i8=U&T{$G@Q|;>54yap)B>uf`RRw;y{|*RXS9ysPU|gLp?-Ra;2K-VK z|IRteXo6`^<$mdocqHq+h~eAUZf2<_)sre9h4 zHH3hWaPjC0Og>z(0k=cv=jU+s0ghY!oi>)}J&mBH*IJB8jt$$%-Yx#1^3{P?P;0?; z6=CoLmG-@pKzOgVDxqBhjl&RBDUA7o?p@XedkKFaK@EJtnTT+8 zGU^I=SXr33G^j1UpizMLV|7&Nm&K$oC0+I?5bl-=-TvX-(Yo8d8_i*juUqTcnYa^pkTLv&zP4e*Gijgl=!jP5&5G9Ym6g$*{M#J%a;a7k z#RnL=%zK}Wxr7>NmVXajyk!1I!cL98w-R`v5bQ4|KE=y=C%PMb6y6tcGL*dCh052} zi}XaPs+^7_x9l9Dt!=dn&s8e^jqfaFtZ9G%Kx9 zduV#yiNMnL%u1obi*PtL%C0H*`ToFOUP*2`OQxQNdI@XU1Wfeei=bx8>|*P~9a5iw z-I47ZYZY!f&o5sNuQGNanyhwPBckY%W79}DIDx0%n{V+`DxS1_n>vN*vQ88tknM{r zx+Umyc(wsHqWswOms*|(2ncY*SZOmg7_K}46bh4t9x#Ygt0oQ1NUp2B(ltjxWe!el zucFHfYCq>l^fyURyQ=BS%Fxrjz*b7u2`Nd6MwXO}Fm)3`K~^BZsbLYwtg*}kJAK$6 zOVp=(e-#*4+9V^Zqvg7;y%KsNG3_lwhz2PS@=( z(Y7Q$tHr|!BrRrR!cxk@nH0c*-QSD!oU@SfJQ@bM=FPuPnt5s%!NrSqM-3H7^&guM z6^j2<8M|>7=``zhgBr0EYZ(pJs8Vp~Ka(1cqy1axeLJ(#^KZ6iz*GA`b_tUiTBmsy zEe7dtudy6D-vBWda;JaJMcl)=P=SLm>u62c1)o=IaRKV&3(u%T|UAGvnD(BPXjjeD87Z5i5-W zKe{K^%VVWqE+tl7wU*!H?(OaUcf&mK-4#TD-~i{mz~ppRsk`lM(a}mn_5XkwrTPc~ z9meGbqRSMKW#kEEkMnRz)+B!S{VB?a4oYo1N}t0DaFXQs)~XC2)_SwG_mlM@3_L5x zl(p0sB^_EN>F$Ln8jsreD}ULVo?i>MmGH@HQQB;$QTT%a{9z@I59B+4%IqjU^<~R#{zX$4v3PriUsef1z9o2Q}vI^X^32+!fc~ z%ss-_hOyqYJMVh^8sdsat~J4H&sTgNEk>xqy~%@m9U*dul7Bfn$yP1VhiUvw=`16R zTGAla^=ZZDYqo&P!&U?gfL@&}Uf0O9UMw^n51e6s_^%(M*}~x6 z?Ce;I*NgF#{BB)0mLZaE(Lm+&hiSw> zpDH>%h9tlo8)9BfPA8zG6px>0Qd+~Jm_pzXmf0j> z1|>QOA>>nuJFc>7jGAoV1sTP+`@k}n&U%8^o0w9?H6WQ$4KGu`oly>#8ce&&7lKkg z))esVfAw;&+KYUg3_=!2REuf7{2lP+CV3h5es=D)1Ru#H&*Nx}f$jka&cV}fTxPY8 zNtopns$@3f35nE!Mj)d?VsdB>J~+}2{=rI8jZhLtr$UC(*`-P)6I12WnzM$eCZ|SI z*{Gs2CnAG52_1wlnBL)vJa1y<<%fE|cT%&zFLf^+8T9^1|A{{`=_~?6j0u1eq3Bs6 z*?eal<6SUpaP@!gNFR_#HbzDr>hGTU*pfgKksF={GMwEWU0Bp#2z#7KI@Yh0*3R12 zoL0Cb?w6Fco$omb{rj1H8^!w^)dqYX`x>P{+S2i3k+Rd-p=I{A+z&1rnOd*CTj(P*=E$i9@SN%v-J2c8&cUD_o)n0G zL(6V_^PJ5+{D_6Yno|_@fvL?y$G*-v1nG)m6oSMck#kE{!P+V-B1GOqTsj$%}Eq$rWrdsE>GHw7|DbY$xuzbHzlhFF>o+NJq~@xDpD9#6W)nbm`axMR77%SnX!6M*RaSE_SYI^iE~W0$I_p+|frVA>>xG{0Y*u z$ZE`n$zOlTH1zZ}SN4ZkBBh}vvDu=~Cyu%G`@lbDT*s+K`G4OAlJTgae1X;_o#|vL zxN=C$$py*jZPmZowW9>)wTyma^>zK>+DR#o+M1*hJP!x!EdTTD&4Vo@1}qj_8PdfZ zB;=0yils9p@(lvf#$U-?Kcmr^7EOT>I&g+QSOEi+o}Y<*=iGeM%hmY4uXk4Hwq%10 z?BHMob)LG}U5^jqiXCfj*7?U^vICje`+grl^x`)EzD9Ih0GOg^A^8$*FBmVY7`|gI zYYV^TLi6JuQ(AiL>L-t#rFUwU^zeGY5A0hy23-zw%P#8mT410jv2aJ};LYpoZMrjy zS|ytwRgKnZ+RDNK24DBEC4{9qu|~(8hK%lqjAhPHM?(=UTN5;4ER z0?z(PpX+xx@_alCQt`*}BOD+|My5kL63ai5F+n8Pq@zpwLiOG~T~Ztuz8EKpCK2RY z=e@;}tgVZSL@`&2(M*QezQ-)>4~@^tKv=^ogd?5BOkR(^NA zbKk_U7el(dr+;MN@--7Go@}DdEXdB|rC@7B3O!UG&H0BmmO|lv=)>)MKK2S0;I8J} zExcCMvFJ0XqHXLr^+!xV?}uWXxpDC-s6Fgorq6>l$_qVixK|%{8{02WpKh36@ii=F zh6ezrvnyqD8lo!eLZ6H6@ZyEQxRTt+jD*l|dEE(`PFLC}Pp}y24Q*WrBixv_rl!Y! zZYapqJucy0>N^`g>V!G@a}SQr4ZDjdLRVjeuKrsb!`tkYMj$!~1HCuntYBn_lhei0 z4jn2Rr136KDiKD*&*)HcviyVIsE&p=fmqwb7v^C~{z(9FW-3H8lK9j%QBg2ITF0pe zf(s=*sUg$Bh@$X`(a(0?J8v&kY7uDG{Ah()E_eM##6r4hooy4#cUXQe%~K5nVq(Kp zrW@3l{**djVqA^eWu~*fW?eRy&K*V%?Q>i<8oHh==xA#*qzwI+AA`f-2kR>lQe-`| z_gaI}7NYjT_8)!oCqBEMkx~5DE9s)TVzSY&Trm$327yxH8(Ix^?6+%qw95~Fpn6Ku zp-+&W4O((o>n4?mz)tn{f52@^x1o@fV?S!y+#&cdY1O5@4G@-4gldV?UGU>cClf_U zLz6L_?4`}p4C}H_S--@iOor^3#Z1X1ikYC1lko;a<*=yKoeZqy+7wqh0Q+(^)ekq1 zZHn>q2lwq5lKGUZ!|6Rv`0n!R1uFFQTIFEySHIcW($G*u8r)EU3cWVZ^G$KH8-CCi zL?Ylhtr^FD34)BLr>Dc;(G(UHftu&zw6cN}-B^y0eR)<+PEKm--HiUTs+di^R(}lX z>Fs0KXI9pU1Ls5~MV#lmnAbb-J@7GxpN$y3sHmuA#ST9NtjC*Co#M#)f5VVU?LsEl z8k~^nLtG7+F5}kgQ_3P&AdF{#!=X>t)m?>X<5tO`fae1-Z<;V0W%GYi44i0vw zc1?S_9lDSxk=LWACo6l4uJ%2?RkjxMy?hLxsAqtsvFS~S)JNeq9b;()p~s_<##OeN z55RGjn;r3DZENfD@eO9R(kB=0W@&fY0x{OVO2w_*tuIk{xI!qBC#y@;-X>Zp)=#si zC5=UdzUzm7C^pv~-q_!d=s!+_{AA$XT

_bL^&z0Q@Gs^q5&7zjJtQb6oP9?3OU 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

F*XirIu0bb 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 z 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

sy-U_B8#=tG5Jh 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 B872S# delta 421887 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%0A|XSK_7--yI|)gcNr&B;&E~`uXDU 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 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 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 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 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%0A5-|heU?DyI4v)^aG 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 z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM 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 z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq^?zUe-&g^?zUe-&g+kKy`g{Aa{@#A9zqcRj@9oF>d;78e z-hQmVw;${8?Z^6i`?3Dsek}f9{J;L*eyqQ@AM5Y!$NGEwvHsqEtiQJ(i~kq@FaBTr zzxaRg|Kk6}|BL?@|1bVu{J;2r@&Drg#s7={7ymE*U;MxLfARm~|Hc37@9qEkd;7om zfARm~|Hc1{{}=x+{$KpR_vb^4>z zAKlykb#MRIz5QSJ_J7^m|8;Nw*S-B;_x69?+y8ZM|JS|!U-$NZ-P`|lZ~xc5{a^R? zfARm~|8;Nw*S-B;_x69?+y8ZM|JUjNa(}tM++Xf5_m}(2{pJ30f4RThU+ypWm;1~8 z<^FPixxd_B?l1S3`^)|1{<2?hzgg}t_m}(2{pJ30fBe7rfARm~|Hc1{{}=x+{$KpR z_?9`@enO{%@bR|J|Mq$N zzkS~RZ=bjS+vn~7_Idliect|WpSS?9`@enO{%@bR z|J|Mq$NzkS~RZ=bjS+vn}a_Idw*+2`%Y_IdlUecpa-pSK^|=k3S#dHb<_-hOPK zw;$W*?Z@_c`>}oAer%t&AKT~c$M$*qv3=ftY@fFu+vn}a_IdlUecpa-pSK^|=k3S# zdHb<_-hOPKw;$W*?Z@_c`>}oAer%t&AKT~c$M$*qu|4*C?DyF3vEO6A$9|9f9{WA^ zd+hhv@3G%wzsG)${T};0_IvF2*zd95W536KkNqC|J@$L-_t@{T-($bWevkbg`#tu1 z?DyF3vEO6A$9|9f_BsW_OZu_&W9i4z zkEI_=|CfF&{aE_3^keDA(vPJdOFx!=Ed5yevGil<$I_3bA4@-$ek}c1`myw5>BrKK zr5{T_HvQlH|1$mG^ncU;P5(Fj-}Hae|4sil{onL|)BjEXH~ruAf7Aa>|2O^L^ncU; zP5(Fj-}Hae|4sil{onL|)BjEXH~ruAfBe7k|Hl6t|8M-i@&7ja@&CsE8~<*gFA>N8JO1DC|BnB6{J-P>9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 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 z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J 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 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 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 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 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 z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq 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 z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B 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 zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq}i8e(avNAG_!6$L@Li zv3uTr?4GwDyXWo4?s@yMd)|KRp0^*n=k3StdHb<@-hS+!w;#Lb?Z@tU`>}i8e(avN zAG_!6$L@Liv3uTr?4GwDyXWo4?s@yMd)|KRp0^*n=k3StdHb<@-hS+!w;#Lj+yCA7 z?f>rk_J8+%`@j3X{oj4x{_nnT|99WF|GV$o|K0cP|L*(tfA@X+zx%%Z-+kZy@4j#U zci*@FyRZGe_WRoJYrn7kzV`dR{pNk&{_no_``Yhozpwqi_WRoJYrn7k_9slq6f5-nj{@?Ncj{kT3zvKTM|L?x```YhozpwrHf5-nj{@?Nc?rXoV z{l515+V5+>ul>IE``VBHcl^KO{~iDD_9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^`ux`P{s0U!oq{eLfUBhhSs2beVodJf3{8~<^J+(ezV`~ zH~Y|2O;1ezV`~ zH~Yd;78e-hQmVw;${8?Z^6i`?3DseyqQ@ zAM5Y!$NGEwvHsqEtiQJ(>+kKy`g{Aa{@#A9zqcRj@9oF>d;78e-hQmVw;zlD*WcTZ z_4oE;{k{EIe{Vn5-`kJ%_x5A`z5Q5!Z$H-G+mH44_G9t?;{V0}i~kq@FaBTrzxaRg z|Kk6}|BL?@|1bVu{J;2r{k{EPe{cWS-`oH7_x6AB|Kk6}|BL_E-`oH7_x6ANz5QQ* zZ~xcd+yC|V_J94o{a=4?{}=x+{$KpR_`@cSK|JUd3 z|N6ZBU!S-C>+|-1ect}B&)fg?dHcUUZ~xcl?f?3`{a>HA|LgPie|_xtvERpjANzgY z{xAMtpSS<(^Y(vz?Dw(X$9^CCeeCzK-^YF*`+fcI>wjPW`}*J4|GxhB^}nzGef{t2 ze_#Lm`rp_8zW(?1zpwxC|Kk6}|BL_E*Z;n6zuDLSzW&Gmi~kq@FaBTrzxaRg|Kk6} z|BL?@|1bVu{J;2r@&Drg#s7={7ymE*U;MxLfARm~|Hc1{{}=x+{$KpR_BoNhv7dg7{}=x+{$KpR_Hnrbn*NCY7ymE*U;MwO|C|1A`oHP_rvID%Z~DLK|I+`Z|4aXu{xAJs`oHvl>HpII zrTr5{T_mVPY# zSo*Q_W9i4zkEI_=KbC$h{aE_3^keDA(vR`~;{V0}EBo>PNJNupe&VFaVvmgI2{$KpR&VKyA&VFaV zvmgI2{$KpR_JNupe&VFaVv)|e8?05D%`9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq 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 z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J 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 z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B 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 z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT6_x>Lp|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zx((5|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc 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 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq-M`-d*T?@m{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slqC`+a{n{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 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 z|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK z|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5 zf93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`% zU-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^Prc zSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jA zmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj z<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB z`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq& z{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y` z|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK z|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5 zf93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`% zU-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^Prc zSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jA zmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj z<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB z`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq& z{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y` z|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK z|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5 zf93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`% zU-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^Prc zSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jA zmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj z<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB z`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq& z{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y` z|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK z|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5 zf93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`% zU-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^Prc zSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jA zmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj z<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB z`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq& z{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y` z|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK z|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5 zf93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`% zU-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^Prc zSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jA zmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj z<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB z`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq& z{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y` z|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK z|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5 zf93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`% zU-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^Prc zSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jA zmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj z<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB z`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq& z{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y` z|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK z|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5 zf93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`% zU-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^Prc zSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jA zmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj z<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB z`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq& z{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y` z|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK z|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5 zf93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`% zU-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^Prc zSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jA zmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj z<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB z`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq& z{$Kfj<^PrcSN>o5f93y`|5yHB`G4jAmH$`%U-^IK|CRq&{$Kfj<^PrcSN>o5f93y` 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 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 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 z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B 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 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 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 zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc 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 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 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 z`#tu1?DyF3vEO6A$9|9f_9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 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 literal 0 HcmV?d00001 diff --git a/test/data/json_tests/pass2.json.ubjson b/test/data/json_tests/pass2.json.ubjson new file mode 100644 index 00000000..e2bf4bda --- /dev/null +++ b/test/data/json_tests/pass2.json.ubjson @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[[Si Not too deep]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/test/data/json_tests/pass3.json.ubjson b/test/data/json_tests/pass3.json.ubjson new file mode 100644 index 00000000..c29a1922 --- /dev/null +++ b/test/data/json_tests/pass3.json.ubjson @@ -0,0 +1 @@ +{iJSON Test Pattern pass3{i In this testSiIt is an object.iThe outermost valueSimust be an object or array.}} \ No newline at end of file diff --git a/test/data/json_testsuite/sample.json.ubjson b/test/data/json_testsuite/sample.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..21df139b54ebd530326a49290616e90a610ce7e9 GIT binary patch literal 148695 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

Js7#(1ygb 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 literal 0 HcmV?d00001 diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index a1830d62..291093c4 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -2111,6 +2111,12 @@ TEST_CASE("UBJSON roundtrips", "[hide]") { for (std::string filename : { + "test/data/json_nlohmann_tests/all_unicode.json", + "test/data/json.org/1.json", + "test/data/json.org/2.json", + "test/data/json.org/3.json", + "test/data/json.org/4.json", + "test/data/json.org/5.json", "test/data/json_roundtrip/roundtrip01.json", "test/data/json_roundtrip/roundtrip02.json", "test/data/json_roundtrip/roundtrip03.json", @@ -2142,7 +2148,11 @@ TEST_CASE("UBJSON roundtrips", "[hide]") "test/data/json_roundtrip/roundtrip29.json", "test/data/json_roundtrip/roundtrip30.json", "test/data/json_roundtrip/roundtrip31.json", - "test/data/json_roundtrip/roundtrip32.json" + "test/data/json_roundtrip/roundtrip32.json", + "test/data/json_testsuite/sample.json", + "test/data/json_tests/pass1.json", + "test/data/json_tests/pass2.json", + "test/data/json_tests/pass3.json" }) { CAPTURE(filename); From 6855bbb90273f23cfa093bc775697dd5e0dedd89 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 28 Jan 2018 13:15:03 +0100 Subject: [PATCH 087/106] :hammer: split "parsing" directory to "input" and "output" --- Makefile | 28 +++--- .../{parsing => input}/binary_reader.hpp | 60 ++++++------- .../{parsing => input}/input_adapters.hpp | 0 develop/detail/{parsing => input}/lexer.hpp | 2 +- develop/detail/{parsing => input}/parser.hpp | 4 +- .../{parsing => output}/binary_writer.hpp | 4 +- .../{parsing => output}/output_adapters.hpp | 0 develop/detail/{ => output}/serializer.hpp | 2 +- develop/json.hpp | 16 ++-- src/json.hpp | 89 +++++++++---------- 10 files changed, 102 insertions(+), 103 deletions(-) rename develop/detail/{parsing => input}/binary_reader.hpp (97%) rename develop/detail/{parsing => input}/input_adapters.hpp (100%) rename develop/detail/{parsing => input}/lexer.hpp (99%) rename develop/detail/{parsing => input}/parser.hpp (99%) rename develop/detail/{parsing => output}/binary_writer.hpp (99%) rename develop/detail/{parsing => output}/output_adapters.hpp (100%) rename develop/detail/{ => output}/serializer.hpp (99%) diff --git a/Makefile b/Makefile index 004dc337..66023444 100644 --- a/Makefile +++ b/Makefile @@ -2,28 +2,28 @@ SRCS = develop/json.hpp \ develop/json_fwd.hpp \ - develop/detail/macro_scope.hpp \ - develop/detail/macro_unscope.hpp \ - develop/detail/meta.hpp \ - develop/detail/exceptions.hpp \ - develop/detail/value_t.hpp \ + develop/adl_serializer.hpp \ develop/detail/conversions/from_json.hpp \ develop/detail/conversions/to_chars.hpp \ develop/detail/conversions/to_json.hpp \ - develop/detail/parsing/input_adapters.hpp \ - develop/detail/parsing/lexer.hpp \ - develop/detail/parsing/parser.hpp \ - develop/detail/iterators/primitive_iterator.hpp \ + develop/detail/exceptions.hpp \ + develop/detail/input/binary_reader.hpp \ + develop/detail/input/input_adapters.hpp \ + develop/detail/input/lexer.hpp \ + develop/detail/input/parser.hpp \ develop/detail/iterators/internal_iterator.hpp \ develop/detail/iterators/iter_impl.hpp \ develop/detail/iterators/iteration_proxy.hpp \ develop/detail/iterators/json_reverse_iterator.hpp \ - develop/detail/parsing/output_adapters.hpp \ - develop/detail/parsing/binary_reader.hpp \ - develop/detail/parsing/binary_writer.hpp \ - develop/detail/serializer.hpp \ + develop/detail/iterators/primitive_iterator.hpp \ develop/detail/json_ref.hpp \ - develop/adl_serializer.hpp + develop/detail/macro_scope.hpp \ + develop/detail/macro_unscope.hpp \ + develop/detail/meta.hpp \ + develop/detail/output/binary_writer.hpp \ + develop/detail/output/output_adapters.hpp \ + develop/detail/output/serializer.hpp \ + develop/detail/value_t.hpp UNAME = $(shell uname) CXX=clang++ diff --git a/develop/detail/parsing/binary_reader.hpp b/develop/detail/input/binary_reader.hpp similarity index 97% rename from develop/detail/parsing/binary_reader.hpp rename to develop/detail/input/binary_reader.hpp index 174528c5..dbd0b305 100644 --- a/develop/detail/parsing/binary_reader.hpp +++ b/develop/detail/input/binary_reader.hpp @@ -17,7 +17,6 @@ #include "detail/exceptions.hpp" #include "detail/macro_scope.hpp" -#include "detail/parsing/input_adapters.hpp" #include "detail/value_t.hpp" namespace nlohmann @@ -64,7 +63,7 @@ class binary_reader if (strict) { get(); - check_eof(true); + expect_eof(); } return res; } @@ -85,7 +84,7 @@ class binary_reader if (strict) { get(); - check_eof(true); + expect_eof(); } return res; } @@ -106,7 +105,7 @@ class binary_reader if (strict) { get_ignore_noop(); - check_eof(true); + expect_eof(); } return res; } @@ -205,7 +204,6 @@ class binary_reader case 0x38: // Negative integer (one-byte uint8_t follows) { - // must be uint8_t ! return static_cast(-1) - get_number(); } @@ -396,9 +394,9 @@ class binary_reader case 0xF9: // Half-Precision Float (two-byte IEEE 754) { const int byte1 = get(); - check_eof(); + unexpect_eof(); const int byte2 = get(); - check_eof(); + unexpect_eof(); // code from RFC 7049, Appendix D, Figure 3: // As half-precision floating-point numbers were only added @@ -831,7 +829,7 @@ class binary_reader for (std::size_t i = 0; i < sizeof(NumberType); ++i) { get(); - check_eof(); + unexpect_eof(); // reverse byte order prior to conversion if necessary if (is_little_endian) @@ -856,7 +854,7 @@ class binary_reader @param[in] len number of bytes to read @note We can not reserve @a len bytes for the result, because @a len - may be too large. Usually, @ref check_eof() detects the end of + may be too large. Usually, @ref unexpect_eof() detects the end of the input before we run out of string memory. @return string created by reading @a len bytes @@ -870,7 +868,7 @@ class binary_reader std::generate_n(std::back_inserter(result), len, [this]() { get(); - check_eof(); + unexpect_eof(); return static_cast(current); }); return result; @@ -890,7 +888,7 @@ class binary_reader */ std::string get_cbor_string() { - check_eof(); + unexpect_eof(); switch (current) { @@ -948,7 +946,7 @@ class binary_reader std::string result; while (get() != 0xFF) { - check_eof(); + unexpect_eof(); result.push_back(static_cast(current)); } return result; @@ -1003,7 +1001,7 @@ class binary_reader */ std::string get_msgpack_string() { - check_eof(); + unexpect_eof(); switch (current) { @@ -1119,7 +1117,7 @@ class binary_reader get(); // TODO: may we ignore N here? } - check_eof(); + unexpect_eof(); switch (current) { @@ -1159,7 +1157,7 @@ class binary_reader if (current == '$') { tc = get(); // must not ignore 'N', because 'N' maybe the type - check_eof(); + unexpect_eof(); get_ignore_noop(); if (current != '#') @@ -1212,7 +1210,7 @@ class binary_reader case 'C': // char { get(); - check_eof(); + unexpect_eof(); if (JSON_UNLIKELY(current > 127)) { std::stringstream ss; @@ -1321,24 +1319,26 @@ class binary_reader } /*! - @brief check if input ended + @brief throw if end of input is not reached + @throw parse_error.110 if input not ended + */ + void expect_eof() const + { + if (JSON_UNLIKELY(current != std::char_traits::eof())) + { + JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); + } + } + + /*! + @briefthrow if end of input is reached @throw parse_error.110 if input ended */ - void check_eof(const bool expect_eof = false) const + void unexpect_eof() const { - if (expect_eof) + if (JSON_UNLIKELY(current == std::char_traits::eof())) { - if (JSON_UNLIKELY(current != std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); - } - } - else - { - if (JSON_UNLIKELY(current == std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - } + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); } } diff --git a/develop/detail/parsing/input_adapters.hpp b/develop/detail/input/input_adapters.hpp similarity index 100% rename from develop/detail/parsing/input_adapters.hpp rename to develop/detail/input/input_adapters.hpp diff --git a/develop/detail/parsing/lexer.hpp b/develop/detail/input/lexer.hpp similarity index 99% rename from develop/detail/parsing/lexer.hpp rename to develop/detail/input/lexer.hpp index de222a6c..58e40001 100644 --- a/develop/detail/parsing/lexer.hpp +++ b/develop/detail/input/lexer.hpp @@ -11,7 +11,7 @@ #include // vector #include "detail/macro_scope.hpp" -#include "detail/parsing/input_adapters.hpp" +#include "detail/input/input_adapters.hpp" namespace nlohmann { diff --git a/develop/detail/parsing/parser.hpp b/develop/detail/input/parser.hpp similarity index 99% rename from develop/detail/parsing/parser.hpp rename to develop/detail/input/parser.hpp index b0322204..799ea920 100644 --- a/develop/detail/parsing/parser.hpp +++ b/develop/detail/input/parser.hpp @@ -9,8 +9,8 @@ #include "detail/exceptions.hpp" #include "detail/macro_scope.hpp" -#include "detail/parsing/input_adapters.hpp" -#include "detail/parsing/lexer.hpp" +#include "detail/input/input_adapters.hpp" +#include "detail/input/lexer.hpp" #include "detail/value_t.hpp" namespace nlohmann diff --git a/develop/detail/parsing/binary_writer.hpp b/develop/detail/output/binary_writer.hpp similarity index 99% rename from develop/detail/parsing/binary_writer.hpp rename to develop/detail/output/binary_writer.hpp index 87aaffa8..63b16f3e 100644 --- a/develop/detail/parsing/binary_writer.hpp +++ b/develop/detail/output/binary_writer.hpp @@ -6,8 +6,8 @@ #include // memcpy #include // numeric_limits -#include "detail/parsing/binary_reader.hpp" -#include "detail/parsing/output_adapters.hpp" +#include "detail/input/binary_reader.hpp" +#include "detail/output/output_adapters.hpp" namespace nlohmann { diff --git a/develop/detail/parsing/output_adapters.hpp b/develop/detail/output/output_adapters.hpp similarity index 100% rename from develop/detail/parsing/output_adapters.hpp rename to develop/detail/output/output_adapters.hpp diff --git a/develop/detail/serializer.hpp b/develop/detail/output/serializer.hpp similarity index 99% rename from develop/detail/serializer.hpp rename to develop/detail/output/serializer.hpp index 717399f9..84aa83af 100644 --- a/develop/detail/serializer.hpp +++ b/develop/detail/output/serializer.hpp @@ -17,7 +17,7 @@ #include "detail/conversions/to_chars.hpp" #include "detail/macro_scope.hpp" #include "detail/meta.hpp" -#include "detail/parsing/output_adapters.hpp" +#include "detail/output/output_adapters.hpp" #include "detail/value_t.hpp" namespace nlohmann diff --git a/develop/json.hpp b/develop/json.hpp index 467cea97..2544d84d 100644 --- a/develop/json.hpp +++ b/develop/json.hpp @@ -48,18 +48,18 @@ SOFTWARE. #include "detail/value_t.hpp" #include "detail/conversions/from_json.hpp" #include "detail/conversions/to_json.hpp" -#include "detail/parsing/input_adapters.hpp" -#include "detail/parsing/lexer.hpp" -#include "detail/parsing/parser.hpp" +#include "detail/input/input_adapters.hpp" +#include "detail/input/lexer.hpp" +#include "detail/input/parser.hpp" #include "detail/iterators/primitive_iterator.hpp" #include "detail/iterators/internal_iterator.hpp" #include "detail/iterators/iter_impl.hpp" #include "detail/iterators/iteration_proxy.hpp" #include "detail/iterators/json_reverse_iterator.hpp" -#include "detail/parsing/output_adapters.hpp" -#include "detail/parsing/binary_reader.hpp" -#include "detail/parsing/binary_writer.hpp" -#include "detail/serializer.hpp" +#include "detail/output/output_adapters.hpp" +#include "detail/input/binary_reader.hpp" +#include "detail/output/binary_writer.hpp" +#include "detail/output/serializer.hpp" #include "detail/json_ref.hpp" #include "adl_serializer.hpp" @@ -140,7 +140,7 @@ class json_pointer */ static int array_index(const std::string& s) { - size_t processed_chars = 0; + std::size_t processed_chars = 0; const int res = std::stoi(s, &processed_chars); // check if the string was completely read diff --git a/src/json.hpp b/src/json.hpp index f7e3ab17..deee4504 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -1543,7 +1543,7 @@ constexpr const auto& to_json = detail::static_const::value; } } -// #include "detail/parsing/input_adapters.hpp" +// #include "detail/input/input_adapters.hpp" #include // min @@ -1808,7 +1808,7 @@ class input_adapter } } -// #include "detail/parsing/lexer.hpp" +// #include "detail/input/lexer.hpp" #include // localeconv @@ -1823,7 +1823,7 @@ class input_adapter // #include "detail/macro_scope.hpp" -// #include "detail/parsing/input_adapters.hpp" +// #include "detail/input/input_adapters.hpp" namespace nlohmann @@ -3088,7 +3088,7 @@ scan_number_done: } } -// #include "detail/parsing/parser.hpp" +// #include "detail/input/parser.hpp" #include // assert @@ -3102,9 +3102,9 @@ scan_number_done: // #include "detail/macro_scope.hpp" -// #include "detail/parsing/input_adapters.hpp" +// #include "detail/input/input_adapters.hpp" -// #include "detail/parsing/lexer.hpp" +// #include "detail/input/lexer.hpp" // #include "detail/value_t.hpp" @@ -4678,7 +4678,7 @@ class json_reverse_iterator : public std::reverse_iterator } } -// #include "detail/parsing/output_adapters.hpp" +// #include "detail/output/output_adapters.hpp" #include // copy @@ -4793,7 +4793,7 @@ class output_adapter } } -// #include "detail/parsing/binary_reader.hpp" +// #include "detail/input/binary_reader.hpp" #include // generate_n @@ -4815,8 +4815,6 @@ class output_adapter // #include "detail/macro_scope.hpp" -// #include "detail/parsing/input_adapters.hpp" - // #include "detail/value_t.hpp" @@ -4864,7 +4862,7 @@ class binary_reader if (strict) { get(); - check_eof(true); + expect_eof(); } return res; } @@ -4885,7 +4883,7 @@ class binary_reader if (strict) { get(); - check_eof(true); + expect_eof(); } return res; } @@ -4906,7 +4904,7 @@ class binary_reader if (strict) { get_ignore_noop(); - check_eof(true); + expect_eof(); } return res; } @@ -5005,7 +5003,6 @@ class binary_reader case 0x38: // Negative integer (one-byte uint8_t follows) { - // must be uint8_t ! return static_cast(-1) - get_number(); } @@ -5196,9 +5193,9 @@ class binary_reader case 0xF9: // Half-Precision Float (two-byte IEEE 754) { const int byte1 = get(); - check_eof(); + unexpect_eof(); const int byte2 = get(); - check_eof(); + unexpect_eof(); // code from RFC 7049, Appendix D, Figure 3: // As half-precision floating-point numbers were only added @@ -5631,7 +5628,7 @@ class binary_reader for (std::size_t i = 0; i < sizeof(NumberType); ++i) { get(); - check_eof(); + unexpect_eof(); // reverse byte order prior to conversion if necessary if (is_little_endian) @@ -5656,7 +5653,7 @@ class binary_reader @param[in] len number of bytes to read @note We can not reserve @a len bytes for the result, because @a len - may be too large. Usually, @ref check_eof() detects the end of + may be too large. Usually, @ref unexpect_eof() detects the end of the input before we run out of string memory. @return string created by reading @a len bytes @@ -5670,7 +5667,7 @@ class binary_reader std::generate_n(std::back_inserter(result), len, [this]() { get(); - check_eof(); + unexpect_eof(); return static_cast(current); }); return result; @@ -5690,7 +5687,7 @@ class binary_reader */ std::string get_cbor_string() { - check_eof(); + unexpect_eof(); switch (current) { @@ -5748,7 +5745,7 @@ class binary_reader std::string result; while (get() != 0xFF) { - check_eof(); + unexpect_eof(); result.push_back(static_cast(current)); } return result; @@ -5803,7 +5800,7 @@ class binary_reader */ std::string get_msgpack_string() { - check_eof(); + unexpect_eof(); switch (current) { @@ -5919,7 +5916,7 @@ class binary_reader get(); // TODO: may we ignore N here? } - check_eof(); + unexpect_eof(); switch (current) { @@ -5959,7 +5956,7 @@ class binary_reader if (current == '$') { tc = get(); // must not ignore 'N', because 'N' maybe the type - check_eof(); + unexpect_eof(); get_ignore_noop(); if (current != '#') @@ -6012,7 +6009,7 @@ class binary_reader case 'C': // char { get(); - check_eof(); + unexpect_eof(); if (JSON_UNLIKELY(current > 127)) { std::stringstream ss; @@ -6121,24 +6118,26 @@ class binary_reader } /*! - @brief check if input ended + @brief throw if end of input is not reached + @throw parse_error.110 if input not ended + */ + void expect_eof() const + { + if (JSON_UNLIKELY(current != std::char_traits::eof())) + { + JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); + } + } + + /*! + @briefthrow if end of input is reached @throw parse_error.110 if input ended */ - void check_eof(const bool expect_eof = false) const + void unexpect_eof() const { - if (expect_eof) + if (JSON_UNLIKELY(current == std::char_traits::eof())) { - if (JSON_UNLIKELY(current != std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); - } - } - else - { - if (JSON_UNLIKELY(current == std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - } + JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); } } @@ -6158,7 +6157,7 @@ class binary_reader } } -// #include "detail/parsing/binary_writer.hpp" +// #include "detail/output/binary_writer.hpp" #include // reverse @@ -6167,9 +6166,9 @@ class binary_reader #include // memcpy #include // numeric_limits -// #include "detail/parsing/binary_reader.hpp" +// #include "detail/input/binary_reader.hpp" -// #include "detail/parsing/output_adapters.hpp" +// #include "detail/output/output_adapters.hpp" namespace nlohmann @@ -7070,7 +7069,7 @@ class binary_writer } } -// #include "detail/serializer.hpp" +// #include "detail/output/serializer.hpp" #include // reverse, remove, fill, find, none_of @@ -8186,7 +8185,7 @@ char* to_chars(char* first, char* last, FloatType value) // #include "detail/meta.hpp" -// #include "detail/parsing/output_adapters.hpp" +// #include "detail/output/output_adapters.hpp" // #include "detail/value_t.hpp" @@ -8993,7 +8992,7 @@ class json_pointer */ static int array_index(const std::string& s) { - size_t processed_chars = 0; + std::size_t processed_chars = 0; const int res = std::stoi(s, &processed_chars); // check if the string was completely read From 102c47439731facb50a3c7427a397a253ebb0b98 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 28 Jan 2018 14:13:02 +0100 Subject: [PATCH 088/106] :hammer: clean up --- develop/detail/output/binary_writer.hpp | 7 ++++--- src/json.hpp | 7 ++++--- test/src/unit-cbor.cpp | 2 +- test/src/unit-ubjson.cpp | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/develop/detail/output/binary_writer.hpp b/develop/detail/output/binary_writer.hpp index 63b16f3e..fdf9a216 100644 --- a/develop/detail/output/binary_writer.hpp +++ b/develop/detail/output/binary_writer.hpp @@ -684,10 +684,11 @@ class binary_writer @tparam NumberType the type of the number @note This function needs to respect the system's endianess, because bytes - in CBOR and MessagePack are stored in network order (big endian) and - therefore need reordering on little endian systems. + in CBOR, MessagePack, and UBJSON are stored in network order (big + endian) and therefore need reordering on little endian systems. */ - template void write_number(NumberType n) + template + void write_number(const NumberType n) { // step 1: write number to array of length NumberType std::array vec; diff --git a/src/json.hpp b/src/json.hpp index deee4504..e51d66c5 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -6846,10 +6846,11 @@ class binary_writer @tparam NumberType the type of the number @note This function needs to respect the system's endianess, because bytes - in CBOR and MessagePack are stored in network order (big endian) and - therefore need reordering on little endian systems. + in CBOR, MessagePack, and UBJSON are stored in network order (big + endian) and therefore need reordering on little endian systems. */ - template void write_number(NumberType n) + template + void write_number(const NumberType n) { // step 1: write number to array of length NumberType std::array vec; diff --git a/test/src/unit-cbor.cpp b/test/src/unit-cbor.cpp index 1e37a982..43fca028 100644 --- a/test/src/unit-cbor.cpp +++ b/test/src/unit-cbor.cpp @@ -1703,7 +1703,7 @@ TEST_CASE("CBOR roundtrips", "[hide]") } } -TEST_CASE("all first bytes", "[!throws]") +TEST_CASE("all CBOR first bytes", "[!throws]") { // these bytes will fail immediately with exception parse_error.112 std::set unsupported = diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index 291093c4..2d87e570 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -2071,7 +2071,7 @@ TEST_CASE("Universal Binary JSON Specification Examples 2") */ -TEST_CASE("all first bytes", "[!throws]") +TEST_CASE("all UBJSON first bytes", "[!throws]") { // these bytes will fail immediately with exception parse_error.112 std::set supported = From e95578f88432a13973a5ce34862d99270755b556 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 28 Jan 2018 14:36:17 +0100 Subject: [PATCH 089/106] :memo: documented JSON Merge Patch (RFC 7386) --- README.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/README.md b/README.md index ebf2b52f..28c52f4f 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ - [STL-like access](#stl-like-access) - [Conversion from STL containers](#conversion-from-stl-containers) - [JSON Pointer and JSON Patch](#json-pointer-and-json-patch) + - [JSON Merge Patch](#json-merge-patch) - [Implicit conversions](#implicit-conversions) - [Conversions to/from arbitrary types](#arbitrary-types-conversions) - [Binary formats (CBOR, MessagePack, and UBJSON)](#binary-formats-cbor-messagepack-and-ubjson) @@ -456,6 +457,37 @@ json::diff(j_result, j_original); // ] ``` +### JSON Merge Patch + +The library supports **JSON Merge Patch** ([RFC 7386](https://tools.ietf.org/html/rfc7386)) as a patch format. Instead of using JSON Pointer (see above) to specify values to be manipulated, it describes the changes using a syntax that closely mimics the document being modified. + +```cpp +// a JSON value +json j_document = R"({ + "a": "b", + "c": { + "d": "e", + "f": "g" + } +})"_json; + +// a patch +json j_patch = R"({ + "a":"z", + "c": { + "f": null + } +})"_json; + +// apply the patch +j_original.merge_patch(j_patch); +// { +// "a": "z", +// "c": { +// "d": "e" +// } +// } +``` ### Implicit conversions From 1483d39c916ced484eeb93312a90bd8c9b3664d5 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 28 Jan 2018 15:36:56 +0100 Subject: [PATCH 090/106] :hammer: moved class json_pointer into separate file #920 --- Makefile | 9 + develop/detail/input/binary_reader.hpp | 1 + develop/detail/json_pointer.hpp | 696 ++++++++++++++++++ develop/detail/output/serializer.hpp | 3 + develop/json.hpp | 728 +------------------ develop/json_fwd.hpp | 1 + src/json.hpp | 929 ++++++++++++------------- 7 files changed, 1170 insertions(+), 1197 deletions(-) create mode 100644 develop/detail/json_pointer.hpp diff --git a/Makefile b/Makefile index 66023444..36844de8 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,7 @@ SRCS = develop/json.hpp \ develop/detail/iterators/iteration_proxy.hpp \ develop/detail/iterators/json_reverse_iterator.hpp \ develop/detail/iterators/primitive_iterator.hpp \ + develop/detail/json_pointer.hpp \ develop/detail/json_ref.hpp \ develop/detail/macro_scope.hpp \ develop/detail/macro_unscope.hpp \ @@ -273,6 +274,14 @@ check-amalgamation: @diff src/json.hpp src/json.hpp~ || (echo "===================================================================\n Amalgamation required! Please read the contribution guidelines\n in file .github/CONTRIBUTING.md.\n===================================================================" ; mv src/json.hpp~ src/json.hpp ; false) @mv src/json.hpp~ src/json.hpp +# check if every header in develop includes sufficient headers to be compiled +# individually +check-single-includes: + for x in $(SRCS); do \ + echo "#include \"$$x\"\nint main() {}\n" | sed 's|develop/||' > single_include_test.cpp; \ + $(CXX) $(CXXFLAGS) -Idevelop -std=c++11 single_include_test.cpp -o single_include_test; \ + rm single_include_test.cpp single_include_test; \ + done ########################################################################## # changelog diff --git a/develop/detail/input/binary_reader.hpp b/develop/detail/input/binary_reader.hpp index dbd0b305..ebb06834 100644 --- a/develop/detail/input/binary_reader.hpp +++ b/develop/detail/input/binary_reader.hpp @@ -15,6 +15,7 @@ #include // char_traits, string #include // make_pair, move +#include "detail/input/input_adapters.hpp" #include "detail/exceptions.hpp" #include "detail/macro_scope.hpp" #include "detail/value_t.hpp" diff --git a/develop/detail/json_pointer.hpp b/develop/detail/json_pointer.hpp new file mode 100644 index 00000000..9cbbfb36 --- /dev/null +++ b/develop/detail/json_pointer.hpp @@ -0,0 +1,696 @@ +#pragma once + +#include // assert +#include // accumulate +#include // string +#include // vector + +#include "detail/macro_scope.hpp" +#include "detail/exceptions.hpp" +#include "detail/value_t.hpp" + +namespace nlohmann +{ +template +class json_pointer +{ + // allow basic_json to access private members + NLOHMANN_BASIC_JSON_TPL_DECLARATION + friend class basic_json; + + public: + /*! + @brief create JSON pointer + + Create a JSON pointer according to the syntax described in + [Section 3 of RFC6901](https://tools.ietf.org/html/rfc6901#section-3). + + @param[in] s string representing the JSON pointer; if omitted, the empty + string is assumed which references the whole JSON value + + @throw parse_error.107 if the given JSON pointer @a s is nonempty and does + not begin with a slash (`/`); see example below + + @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s is + not followed by `0` (representing `~`) or `1` (representing `/`); see + example below + + @liveexample{The example shows the construction several valid JSON pointers + as well as the exceptional behavior.,json_pointer} + + @since version 2.0.0 + */ + explicit json_pointer(const std::string& s = "") + : reference_tokens(split(s)) + {} + + /*! + @brief return a string representation of the JSON pointer + + @invariant For each JSON pointer `ptr`, it holds: + @code {.cpp} + ptr == json_pointer(ptr.to_string()); + @endcode + + @return a string representation of the JSON pointer + + @liveexample{The example shows the result of `to_string`., + json_pointer__to_string} + + @since version 2.0.0 + */ + std::string to_string() const noexcept + { + return std::accumulate(reference_tokens.begin(), reference_tokens.end(), + std::string{}, + [](const std::string & a, const std::string & b) + { + return a + "/" + escape(b); + }); + } + + /// @copydoc to_string() + operator std::string() const + { + return to_string(); + } + + /*! + @param[in] s reference token to be converted into an array index + + @return integer representation of @a s + + @throw out_of_range.404 if string @a s could not be converted to an integer + */ + static int array_index(const std::string& s) + { + std::size_t processed_chars = 0; + const int res = std::stoi(s, &processed_chars); + + // check if the string was completely read + if (JSON_UNLIKELY(processed_chars != s.size())) + { + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'")); + } + + return res; + } + + private: + /*! + @brief remove and return last reference pointer + @throw out_of_range.405 if JSON pointer has no parent + */ + std::string pop_back() + { + if (JSON_UNLIKELY(is_root())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); + } + + auto last = reference_tokens.back(); + reference_tokens.pop_back(); + return last; + } + + /// return whether pointer points to the root document + bool is_root() const + { + return reference_tokens.empty(); + } + + json_pointer top() const + { + if (JSON_UNLIKELY(is_root())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); + } + + json_pointer result = *this; + result.reference_tokens = {reference_tokens[0]}; + return result; + } + + /*! + @brief create and return a reference to the pointed to value + + @complexity Linear in the number of reference tokens. + + @throw parse_error.109 if array index is not a number + @throw type_error.313 if value cannot be unflattened + */ + BasicJsonType& get_and_create(BasicJsonType& j) const + { + using size_type = typename BasicJsonType::size_type; + auto result = &j; + + // in case no reference tokens exist, return a reference to the JSON value + // j which will be overwritten by a primitive value + for (const auto& reference_token : reference_tokens) + { + switch (result->m_type) + { + case detail::value_t::null: + { + if (reference_token == "0") + { + // start a new array if reference token is 0 + result = &result->operator[](0); + } + else + { + // start a new object otherwise + result = &result->operator[](reference_token); + } + break; + } + + case detail::value_t::object: + { + // create an entry in the object + result = &result->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + // create an entry in the array + JSON_TRY + { + result = &result->operator[](static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + /* + The following code is only reached if there exists a reference + token _and_ the current value is primitive. In this case, we have + an error situation, because primitive values may only occur as + single value; that is, with an empty list of reference tokens. + */ + default: + JSON_THROW(detail::type_error::create(313, "invalid value to unflatten")); + } + } + + return *result; + } + + /*! + @brief return a reference to the pointed to value + + @note This version does not throw if a value is not present, but tries to + create nested values instead. For instance, calling this function + with pointer `"/this/that"` on a null value is equivalent to calling + `operator[]("this").operator[]("that")` on that value, effectively + changing the null value to an object. + + @param[in] ptr a JSON value + + @return reference to the JSON value pointed to by the JSON pointer + + @complexity Linear in the length of the JSON pointer. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + BasicJsonType& get_unchecked(BasicJsonType* ptr) const + { + using size_type = typename BasicJsonType::size_type; + for (const auto& reference_token : reference_tokens) + { + // convert null values to arrays or objects before continuing + if (ptr->m_type == detail::value_t::null) + { + // check if reference token is a number + const bool nums = + std::all_of(reference_token.begin(), reference_token.end(), + [](const char x) + { + return (x >= '0' and x <= '9'); + }); + + // change value to array for numbers or "-" or to object otherwise + *ptr = (nums or reference_token == "-") + ? detail::value_t::array + : detail::value_t::object; + } + + switch (ptr->m_type) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + if (reference_token == "-") + { + // explicitly treat "-" as index beyond the end + ptr = &ptr->operator[](ptr->m_value.array->size()); + } + else + { + // convert array index to number; unchecked access + JSON_TRY + { + ptr = &ptr->operator[]( + static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; + } + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + BasicJsonType& get_checked(BasicJsonType* ptr) const + { + using size_type = typename BasicJsonType::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // note: at performs range check + JSON_TRY + { + ptr = &ptr->at(static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; + } + + /*! + @brief return a const reference to the pointed to value + + @param[in] ptr a JSON value + + @return const reference to the JSON value pointed to by the JSON + pointer + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const + { + using size_type = typename BasicJsonType::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" cannot be used for const access + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // use unchecked array access + JSON_TRY + { + ptr = &ptr->operator[]( + static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; + } + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + const BasicJsonType& get_checked(const BasicJsonType* ptr) const + { + using size_type = typename BasicJsonType::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // note: at performs range check + JSON_TRY + { + ptr = &ptr->at(static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; + } + + /*! + @brief split the string input to reference tokens + + @note This function is only called by the json_pointer constructor. + All exceptions below are documented there. + + @throw parse_error.107 if the pointer is not empty or begins with '/' + @throw parse_error.108 if character '~' is not followed by '0' or '1' + */ + static std::vector split(const std::string& reference_string) + { + std::vector result; + + // special case: empty reference string -> no reference tokens + if (reference_string.empty()) + { + return result; + } + + // check if nonempty reference string begins with slash + if (JSON_UNLIKELY(reference_string[0] != '/')) + { + JSON_THROW(detail::parse_error::create(107, 1, + "JSON pointer must be empty or begin with '/' - was: '" + + reference_string + "'")); + } + + // extract the reference tokens: + // - slash: position of the last read slash (or end of string) + // - start: position after the previous slash + for ( + // search for the first slash after the first character + std::size_t slash = reference_string.find_first_of('/', 1), + // set the beginning of the first reference token + start = 1; + // we can stop if start == string::npos+1 = 0 + start != 0; + // set the beginning of the next reference token + // (will eventually be 0 if slash == std::string::npos) + start = slash + 1, + // find next slash + slash = reference_string.find_first_of('/', start)) + { + // use the text between the beginning of the reference token + // (start) and the last slash (slash). + auto reference_token = reference_string.substr(start, slash - start); + + // check reference tokens are properly escaped + for (std::size_t pos = reference_token.find_first_of('~'); + pos != std::string::npos; + pos = reference_token.find_first_of('~', pos + 1)) + { + assert(reference_token[pos] == '~'); + + // ~ must be followed by 0 or 1 + if (JSON_UNLIKELY(pos == reference_token.size() - 1 or + (reference_token[pos + 1] != '0' and + reference_token[pos + 1] != '1'))) + { + JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'")); + } + } + + // finally, store the reference token + unescape(reference_token); + result.push_back(reference_token); + } + + return result; + } + + /*! + @brief replace all occurrences of a substring by another string + + @param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t + @param[in] f the substring to replace with @a t + @param[in] t the string to replace @a f + + @pre The search string @a f must not be empty. **This precondition is + enforced with an assertion.** + + @since version 2.0.0 + */ + static void replace_substring(std::string& s, const std::string& f, + const std::string& t) + { + assert(not f.empty()); + for (auto pos = s.find(f); // find first occurrence of f + pos != std::string::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find next occurrence of f + {} + } + + /// escape "~"" to "~0" and "/" to "~1" + static std::string escape(std::string s) + { + replace_substring(s, "~", "~0"); + replace_substring(s, "/", "~1"); + return s; + } + + /// unescape "~1" to tilde and "~0" to slash (order is important!) + static void unescape(std::string& s) + { + replace_substring(s, "~1", "/"); + replace_substring(s, "~0", "~"); + } + + /*! + @param[in] reference_string the reference string to the current value + @param[in] value the value to consider + @param[in,out] result the result object to insert values to + + @note Empty objects or arrays are flattened to `null`. + */ + static void flatten(const std::string& reference_string, + const BasicJsonType& value, + BasicJsonType& result) + { + switch (value.m_type) + { + case detail::value_t::array: + { + if (value.m_value.array->empty()) + { + // flatten empty array as null + result[reference_string] = nullptr; + } + else + { + // iterate array and use index as reference string + for (std::size_t i = 0; i < value.m_value.array->size(); ++i) + { + flatten(reference_string + "/" + std::to_string(i), + value.m_value.array->operator[](i), result); + } + } + break; + } + + case detail::value_t::object: + { + if (value.m_value.object->empty()) + { + // flatten empty object as null + result[reference_string] = nullptr; + } + else + { + // iterate object and use keys as reference string + for (const auto& element : *value.m_value.object) + { + flatten(reference_string + "/" + escape(element.first), element.second, result); + } + } + break; + } + + default: + { + // add primitive value with its reference string + result[reference_string] = value; + break; + } + } + } + + /*! + @param[in] value flattened JSON + + @return unflattened JSON + + @throw parse_error.109 if array index is not a number + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitive + @throw type_error.313 if value cannot be unflattened + */ + static BasicJsonType + unflatten(const BasicJsonType& value) + { + if (JSON_UNLIKELY(not value.is_object())) + { + JSON_THROW(detail::type_error::create(314, "only objects can be unflattened")); + } + + BasicJsonType result; + + // iterate the JSON object values + for (const auto& element : *value.m_value.object) + { + if (JSON_UNLIKELY(not element.second.is_primitive())) + { + JSON_THROW(detail::type_error::create(315, "values in object must be primitive")); + } + + // assign value to reference pointed to by JSON pointer; Note that if + // the JSON pointer is "" (i.e., points to the whole value), function + // get_and_create returns a reference to result itself. An assignment + // will then create a primitive value. + json_pointer(element.first).get_and_create(result) = element.second; + } + + return result; + } + + friend bool operator==(json_pointer const& lhs, + json_pointer const& rhs) noexcept + { + return (lhs.reference_tokens == rhs.reference_tokens); + } + + friend bool operator!=(json_pointer const& lhs, + json_pointer const& rhs) noexcept + { + return not (lhs == rhs); + } + + /// the reference tokens + std::vector reference_tokens; +}; +} diff --git a/develop/detail/output/serializer.hpp b/develop/detail/output/serializer.hpp index 84aa83af..5ad4796c 100644 --- a/develop/detail/output/serializer.hpp +++ b/develop/detail/output/serializer.hpp @@ -9,11 +9,14 @@ #include // size_t, ptrdiff_t #include // uint8_t #include // snprintf +#include // setfill #include // next #include // numeric_limits #include // string +#include // stringstream #include // is_same +#include "detail/exceptions.hpp" #include "detail/conversions/to_chars.hpp" #include "detail/macro_scope.hpp" #include "detail/meta.hpp" diff --git a/develop/json.hpp b/develop/json.hpp index 2544d84d..1e59e579 100644 --- a/develop/json.hpp +++ b/develop/json.hpp @@ -61,6 +61,7 @@ SOFTWARE. #include "detail/output/binary_writer.hpp" #include "detail/output/serializer.hpp" #include "detail/json_ref.hpp" +#include "detail/json_pointer.hpp" #include "adl_serializer.hpp" /*! @@ -70,335 +71,6 @@ SOFTWARE. */ namespace nlohmann { -class json_pointer -{ - /// allow basic_json to access private members - NLOHMANN_BASIC_JSON_TPL_DECLARATION - friend class basic_json; - - public: - /*! - @brief create JSON pointer - - Create a JSON pointer according to the syntax described in - [Section 3 of RFC6901](https://tools.ietf.org/html/rfc6901#section-3). - - @param[in] s string representing the JSON pointer; if omitted, the empty - string is assumed which references the whole JSON value - - @throw parse_error.107 if the given JSON pointer @a s is nonempty and - does not begin with a slash (`/`); see example below - - @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s - is not followed by `0` (representing `~`) or `1` (representing `/`); - see example below - - @liveexample{The example shows the construction several valid JSON - pointers as well as the exceptional behavior.,json_pointer} - - @since version 2.0.0 - */ - explicit json_pointer(const std::string& s = "") : reference_tokens(split(s)) {} - - /*! - @brief return a string representation of the JSON pointer - - @invariant For each JSON pointer `ptr`, it holds: - @code {.cpp} - ptr == json_pointer(ptr.to_string()); - @endcode - - @return a string representation of the JSON pointer - - @liveexample{The example shows the result of `to_string`., - json_pointer__to_string} - - @since version 2.0.0 - */ - std::string to_string() const noexcept - { - return std::accumulate(reference_tokens.begin(), reference_tokens.end(), - std::string{}, - [](const std::string & a, const std::string & b) - { - return a + "/" + escape(b); - }); - } - - /// @copydoc to_string() - operator std::string() const - { - return to_string(); - } - - /*! - @param[in] s reference token to be converted into an array index - - @return integer representation of @a s - - @throw out_of_range.404 if string @a s could not be converted to an integer - */ - static int array_index(const std::string& s) - { - std::size_t processed_chars = 0; - const int res = std::stoi(s, &processed_chars); - - // check if the string was completely read - if (JSON_UNLIKELY(processed_chars != s.size())) - { - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'")); - } - - return res; - } - - private: - /*! - @brief remove and return last reference pointer - @throw out_of_range.405 if JSON pointer has no parent - */ - std::string pop_back() - { - if (JSON_UNLIKELY(is_root())) - { - JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); - } - - auto last = reference_tokens.back(); - reference_tokens.pop_back(); - return last; - } - - /// return whether pointer points to the root document - bool is_root() const - { - return reference_tokens.empty(); - } - - json_pointer top() const - { - if (JSON_UNLIKELY(is_root())) - { - JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); - } - - json_pointer result = *this; - result.reference_tokens = {reference_tokens[0]}; - return result; - } - - /*! - @brief create and return a reference to the pointed to value - - @complexity Linear in the number of reference tokens. - - @throw parse_error.109 if array index is not a number - @throw type_error.313 if value cannot be unflattened - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - NLOHMANN_BASIC_JSON_TPL& get_and_create(NLOHMANN_BASIC_JSON_TPL& j) const; - - /*! - @brief return a reference to the pointed to value - - @note This version does not throw if a value is not present, but tries to - create nested values instead. For instance, calling this function - with pointer `"/this/that"` on a null value is equivalent to calling - `operator[]("this").operator[]("that")` on that value, effectively - changing the null value to an object. - - @param[in] ptr a JSON value - - @return reference to the JSON value pointed to by the JSON pointer - - @complexity Linear in the length of the JSON pointer. - - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - NLOHMANN_BASIC_JSON_TPL& get_unchecked(NLOHMANN_BASIC_JSON_TPL* ptr) const; - - /*! - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - NLOHMANN_BASIC_JSON_TPL& get_checked(NLOHMANN_BASIC_JSON_TPL* ptr) const; - - /*! - @brief return a const reference to the pointed to value - - @param[in] ptr a JSON value - - @return const reference to the JSON value pointed to by the JSON - pointer - - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - const NLOHMANN_BASIC_JSON_TPL& get_unchecked(const NLOHMANN_BASIC_JSON_TPL* ptr) const; - - /*! - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - const NLOHMANN_BASIC_JSON_TPL& get_checked(const NLOHMANN_BASIC_JSON_TPL* ptr) const; - - /*! - @brief split the string input to reference tokens - - @note This function is only called by the json_pointer constructor. - All exceptions below are documented there. - - @throw parse_error.107 if the pointer is not empty or begins with '/' - @throw parse_error.108 if character '~' is not followed by '0' or '1' - */ - static std::vector split(const std::string& reference_string) - { - std::vector result; - - // special case: empty reference string -> no reference tokens - if (reference_string.empty()) - { - return result; - } - - // check if nonempty reference string begins with slash - if (JSON_UNLIKELY(reference_string[0] != '/')) - { - JSON_THROW(detail::parse_error::create(107, 1, - "JSON pointer must be empty or begin with '/' - was: '" + - reference_string + "'")); - } - - // extract the reference tokens: - // - slash: position of the last read slash (or end of string) - // - start: position after the previous slash - for ( - // search for the first slash after the first character - std::size_t slash = reference_string.find_first_of('/', 1), - // set the beginning of the first reference token - start = 1; - // we can stop if start == string::npos+1 = 0 - start != 0; - // set the beginning of the next reference token - // (will eventually be 0 if slash == std::string::npos) - start = slash + 1, - // find next slash - slash = reference_string.find_first_of('/', start)) - { - // use the text between the beginning of the reference token - // (start) and the last slash (slash). - auto reference_token = reference_string.substr(start, slash - start); - - // check reference tokens are properly escaped - for (std::size_t pos = reference_token.find_first_of('~'); - pos != std::string::npos; - pos = reference_token.find_first_of('~', pos + 1)) - { - assert(reference_token[pos] == '~'); - - // ~ must be followed by 0 or 1 - if (JSON_UNLIKELY(pos == reference_token.size() - 1 or - (reference_token[pos + 1] != '0' and - reference_token[pos + 1] != '1'))) - { - JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'")); - } - } - - // finally, store the reference token - unescape(reference_token); - result.push_back(reference_token); - } - - return result; - } - - /*! - @brief replace all occurrences of a substring by another string - - @param[in,out] s the string to manipulate; changed so that all - occurrences of @a f are replaced with @a t - @param[in] f the substring to replace with @a t - @param[in] t the string to replace @a f - - @pre The search string @a f must not be empty. **This precondition is - enforced with an assertion.** - - @since version 2.0.0 - */ - static void replace_substring(std::string& s, const std::string& f, - const std::string& t) - { - assert(not f.empty()); - for (auto pos = s.find(f); // find first occurrence of f - pos != std::string::npos; // make sure f was found - s.replace(pos, f.size(), t), // replace with t, and - pos = s.find(f, pos + t.size())) // find next occurrence of f - {} - } - - /// escape "~"" to "~0" and "/" to "~1" - static std::string escape(std::string s) - { - replace_substring(s, "~", "~0"); - replace_substring(s, "/", "~1"); - return s; - } - - /// unescape "~1" to tilde and "~0" to slash (order is important!) - static void unescape(std::string& s) - { - replace_substring(s, "~1", "/"); - replace_substring(s, "~0", "~"); - } - - /*! - @param[in] reference_string the reference string to the current value - @param[in] value the value to consider - @param[in,out] result the result object to insert values to - - @note Empty objects or arrays are flattened to `null`. - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - static void flatten(const std::string& reference_string, - const NLOHMANN_BASIC_JSON_TPL& value, - NLOHMANN_BASIC_JSON_TPL& result); - - /*! - @param[in] value flattened JSON - - @return unflattened JSON - - @throw parse_error.109 if array index is not a number - @throw type_error.314 if value is not an object - @throw type_error.315 if object values are not primitive - @throw type_error.313 if value cannot be unflattened - */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - static NLOHMANN_BASIC_JSON_TPL - unflatten(const NLOHMANN_BASIC_JSON_TPL& value); - - friend bool operator==(json_pointer const& lhs, - json_pointer const& rhs) noexcept; - - friend bool operator!=(json_pointer const& lhs, - json_pointer const& rhs) noexcept; - - /// the reference tokens - std::vector reference_tokens; -}; /*! @brief a class to store JSON values @@ -486,7 +158,7 @@ class basic_json { private: template friend struct detail::external_constructor; - friend ::nlohmann::json_pointer; + friend ::nlohmann::json_pointer; friend ::nlohmann::detail::parser; friend ::nlohmann::detail::serializer; template @@ -523,7 +195,7 @@ class basic_json public: using value_t = detail::value_t; /// @copydoc nlohmann::json_pointer - using json_pointer = ::nlohmann::json_pointer; + using json_pointer = ::nlohmann::json_pointer; template using json_serializer = JSONSerializer; /// helper type for initializer lists of basic_json values @@ -7789,400 +7461,6 @@ class basic_json /// @} }; - -////////////////// -// json_pointer // -////////////////// - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_and_create(NLOHMANN_BASIC_JSON_TPL& j) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - auto result = &j; - - // in case no reference tokens exist, return a reference to the JSON value - // j which will be overwritten by a primitive value - for (const auto& reference_token : reference_tokens) - { - switch (result->m_type) - { - case detail::value_t::null: - { - if (reference_token == "0") - { - // start a new array if reference token is 0 - result = &result->operator[](0); - } - else - { - // start a new object otherwise - result = &result->operator[](reference_token); - } - break; - } - - case detail::value_t::object: - { - // create an entry in the object - result = &result->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - // create an entry in the array - JSON_TRY - { - result = &result->operator[](static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - /* - The following code is only reached if there exists a reference - token _and_ the current value is primitive. In this case, we have - an error situation, because primitive values may only occur as - single value; that is, with an empty list of reference tokens. - */ - default: - JSON_THROW(detail::type_error::create(313, "invalid value to unflatten")); - } - } - - return *result; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_unchecked(NLOHMANN_BASIC_JSON_TPL* ptr) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - for (const auto& reference_token : reference_tokens) - { - // convert null values to arrays or objects before continuing - if (ptr->m_type == detail::value_t::null) - { - // check if reference token is a number - const bool nums = - std::all_of(reference_token.begin(), reference_token.end(), - [](const char x) - { - return (x >= '0' and x <= '9'); - }); - - // change value to array for numbers or "-" or to object otherwise - *ptr = (nums or reference_token == "-") - ? detail::value_t::array - : detail::value_t::object; - } - - switch (ptr->m_type) - { - case detail::value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - if (reference_token == "-") - { - // explicitly treat "-" as index beyond the end - ptr = &ptr->operator[](ptr->m_value.array->size()); - } - else - { - // convert array index to number; unchecked access - JSON_TRY - { - ptr = &ptr->operator[]( - static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_checked(NLOHMANN_BASIC_JSON_TPL* ptr) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case detail::value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_UNLIKELY(reference_token == "-")) - { - // "-" always fails the range check - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range")); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - // note: at performs range check - JSON_TRY - { - ptr = &ptr->at(static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -const NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_unchecked(const NLOHMANN_BASIC_JSON_TPL* ptr) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case detail::value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_UNLIKELY(reference_token == "-")) - { - // "-" cannot be used for const access - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range")); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - // use unchecked array access - JSON_TRY - { - ptr = &ptr->operator[]( - static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -const NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_checked(const NLOHMANN_BASIC_JSON_TPL* ptr) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case detail::value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_UNLIKELY(reference_token == "-")) - { - // "-" always fails the range check - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range")); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - // note: at performs range check - JSON_TRY - { - ptr = &ptr->at(static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -void json_pointer::flatten(const std::string& reference_string, - const NLOHMANN_BASIC_JSON_TPL& value, - NLOHMANN_BASIC_JSON_TPL& result) -{ - switch (value.m_type) - { - case detail::value_t::array: - { - if (value.m_value.array->empty()) - { - // flatten empty array as null - result[reference_string] = nullptr; - } - else - { - // iterate array and use index as reference string - for (std::size_t i = 0; i < value.m_value.array->size(); ++i) - { - flatten(reference_string + "/" + std::to_string(i), - value.m_value.array->operator[](i), result); - } - } - break; - } - - case detail::value_t::object: - { - if (value.m_value.object->empty()) - { - // flatten empty object as null - result[reference_string] = nullptr; - } - else - { - // iterate object and use keys as reference string - for (const auto& element : *value.m_value.object) - { - flatten(reference_string + "/" + escape(element.first), element.second, result); - } - } - break; - } - - default: - { - // add primitive value with its reference string - result[reference_string] = value; - break; - } - } -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -NLOHMANN_BASIC_JSON_TPL -json_pointer::unflatten(const NLOHMANN_BASIC_JSON_TPL& value) -{ - if (JSON_UNLIKELY(not value.is_object())) - { - JSON_THROW(detail::type_error::create(314, "only objects can be unflattened")); - } - - NLOHMANN_BASIC_JSON_TPL result; - - // iterate the JSON object values - for (const auto& element : *value.m_value.object) - { - if (JSON_UNLIKELY(not element.second.is_primitive())) - { - JSON_THROW(detail::type_error::create(315, "values in object must be primitive")); - } - - // assign value to reference pointed to by JSON pointer; Note that if - // the JSON pointer is "" (i.e., points to the whole value), function - // get_and_create returns a reference to result itself. An assignment - // will then create a primitive value. - json_pointer(element.first).get_and_create(result) = element.second; - } - - return result; -} - -inline bool operator==(json_pointer const& lhs, json_pointer const& rhs) noexcept -{ - return (lhs.reference_tokens == rhs.reference_tokens); -} - -inline bool operator!=(json_pointer const& lhs, json_pointer const& rhs) noexcept -{ - return not (lhs == rhs); -} } // namespace nlohmann /////////////////////// diff --git a/develop/json_fwd.hpp b/develop/json_fwd.hpp index f2a6b0f2..750adb64 100644 --- a/develop/json_fwd.hpp +++ b/develop/json_fwd.hpp @@ -47,6 +47,7 @@ within a JSON document. It can be used with functions `at` and @since version 2.0.0 */ +template class json_pointer; /*! diff --git a/src/json.hpp b/src/json.hpp index e51d66c5..0fd92ebd 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -91,6 +91,7 @@ within a JSON document. It can be used with functions `at` and @since version 2.0.0 */ +template class json_pointer; /*! @@ -4811,6 +4812,8 @@ class output_adapter #include // char_traits, string #include // make_pair, move +// #include "detail/input/input_adapters.hpp" + // #include "detail/exceptions.hpp" // #include "detail/macro_scope.hpp" @@ -7082,11 +7085,15 @@ class binary_writer #include // size_t, ptrdiff_t #include // uint8_t #include // snprintf +#include // setfill #include // next #include // numeric_limits #include // string +#include // stringstream #include // is_same +// #include "detail/exceptions.hpp" + // #include "detail/conversions/to_chars.hpp" @@ -8866,66 +8873,27 @@ class json_ref } } -// #include "adl_serializer.hpp" +// #include "detail/json_pointer.hpp" -#include +#include // assert +#include // accumulate +#include // string +#include // vector -// #include "detail/conversions/from_json.hpp" +// #include "detail/macro_scope.hpp" -// #include "detail/conversions/to_json.hpp" +// #include "detail/exceptions.hpp" + +// #include "detail/value_t.hpp" namespace nlohmann { -template -struct adl_serializer -{ - /*! - @brief convert a JSON value to any value type - - This function is usually called by the `get()` function of the - @ref basic_json class (either explicit or via conversion operators). - - @param[in] j JSON value to read from - @param[in,out] val value to write to - */ - template - static void from_json(BasicJsonType&& j, ValueType& val) noexcept( - noexcept(::nlohmann::from_json(std::forward(j), val))) - { - ::nlohmann::from_json(std::forward(j), val); - } - - /*! - @brief convert any value type to a JSON value - - This function is usually called by the constructors of the @ref basic_json - class. - - @param[in,out] j JSON value to write to - @param[in] val value to read from - */ - template - static void to_json(BasicJsonType& j, ValueType&& val) noexcept( - noexcept(::nlohmann::to_json(j, std::forward(val)))) - { - ::nlohmann::to_json(j, std::forward(val)); - } -}; -} - - -/*! -@brief namespace for Niels Lohmann -@see https://github.com/nlohmann -@since version 1.0.0 -*/ -namespace nlohmann -{ +template class json_pointer { - /// allow basic_json to access private members + // allow basic_json to access private members NLOHMANN_BASIC_JSON_TPL_DECLARATION friend class basic_json; @@ -8939,19 +8907,21 @@ class json_pointer @param[in] s string representing the JSON pointer; if omitted, the empty string is assumed which references the whole JSON value - @throw parse_error.107 if the given JSON pointer @a s is nonempty and - does not begin with a slash (`/`); see example below + @throw parse_error.107 if the given JSON pointer @a s is nonempty and does + not begin with a slash (`/`); see example below - @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s - is not followed by `0` (representing `~`) or `1` (representing `/`); - see example below + @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s is + not followed by `0` (representing `~`) or `1` (representing `/`); see + example below - @liveexample{The example shows the construction several valid JSON - pointers as well as the exceptional behavior.,json_pointer} + @liveexample{The example shows the construction several valid JSON pointers + as well as the exceptional behavior.,json_pointer} @since version 2.0.0 */ - explicit json_pointer(const std::string& s = "") : reference_tokens(split(s)) {} + explicit json_pointer(const std::string& s = "") + : reference_tokens(split(s)) + {} /*! @brief return a string representation of the JSON pointer @@ -9048,8 +9018,66 @@ class json_pointer @throw parse_error.109 if array index is not a number @throw type_error.313 if value cannot be unflattened */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - NLOHMANN_BASIC_JSON_TPL& get_and_create(NLOHMANN_BASIC_JSON_TPL& j) const; + BasicJsonType& get_and_create(BasicJsonType& j) const + { + using size_type = typename BasicJsonType::size_type; + auto result = &j; + + // in case no reference tokens exist, return a reference to the JSON value + // j which will be overwritten by a primitive value + for (const auto& reference_token : reference_tokens) + { + switch (result->m_type) + { + case detail::value_t::null: + { + if (reference_token == "0") + { + // start a new array if reference token is 0 + result = &result->operator[](0); + } + else + { + // start a new object otherwise + result = &result->operator[](reference_token); + } + break; + } + + case detail::value_t::object: + { + // create an entry in the object + result = &result->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + // create an entry in the array + JSON_TRY + { + result = &result->operator[](static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + /* + The following code is only reached if there exists a reference + token _and_ the current value is primitive. In this case, we have + an error situation, because primitive values may only occur as + single value; that is, with an empty list of reference tokens. + */ + default: + JSON_THROW(detail::type_error::create(313, "invalid value to unflatten")); + } + } + + return *result; + } /*! @brief return a reference to the pointed to value @@ -9070,8 +9098,75 @@ class json_pointer @throw parse_error.109 if an array index was not a number @throw out_of_range.404 if the JSON pointer can not be resolved */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - NLOHMANN_BASIC_JSON_TPL& get_unchecked(NLOHMANN_BASIC_JSON_TPL* ptr) const; + BasicJsonType& get_unchecked(BasicJsonType* ptr) const + { + using size_type = typename BasicJsonType::size_type; + for (const auto& reference_token : reference_tokens) + { + // convert null values to arrays or objects before continuing + if (ptr->m_type == detail::value_t::null) + { + // check if reference token is a number + const bool nums = + std::all_of(reference_token.begin(), reference_token.end(), + [](const char x) + { + return (x >= '0' and x <= '9'); + }); + + // change value to array for numbers or "-" or to object otherwise + *ptr = (nums or reference_token == "-") + ? detail::value_t::array + : detail::value_t::object; + } + + switch (ptr->m_type) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + if (reference_token == "-") + { + // explicitly treat "-" as index beyond the end + ptr = &ptr->operator[](ptr->m_value.array->size()); + } + else + { + // convert array index to number; unchecked access + JSON_TRY + { + ptr = &ptr->operator[]( + static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; + } /*! @throw parse_error.106 if an array index begins with '0' @@ -9079,8 +9174,57 @@ class json_pointer @throw out_of_range.402 if the array index '-' is used @throw out_of_range.404 if the JSON pointer can not be resolved */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - NLOHMANN_BASIC_JSON_TPL& get_checked(NLOHMANN_BASIC_JSON_TPL* ptr) const; + BasicJsonType& get_checked(BasicJsonType* ptr) const + { + using size_type = typename BasicJsonType::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // note: at performs range check + JSON_TRY + { + ptr = &ptr->at(static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; + } /*! @brief return a const reference to the pointed to value @@ -9095,8 +9239,58 @@ class json_pointer @throw out_of_range.402 if the array index '-' is used @throw out_of_range.404 if the JSON pointer can not be resolved */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - const NLOHMANN_BASIC_JSON_TPL& get_unchecked(const NLOHMANN_BASIC_JSON_TPL* ptr) const; + const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const + { + using size_type = typename BasicJsonType::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" cannot be used for const access + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // use unchecked array access + JSON_TRY + { + ptr = &ptr->operator[]( + static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; + } /*! @throw parse_error.106 if an array index begins with '0' @@ -9104,8 +9298,57 @@ class json_pointer @throw out_of_range.402 if the array index '-' is used @throw out_of_range.404 if the JSON pointer can not be resolved */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - const NLOHMANN_BASIC_JSON_TPL& get_checked(const NLOHMANN_BASIC_JSON_TPL* ptr) const; + const BasicJsonType& get_checked(const BasicJsonType* ptr) const + { + using size_type = typename BasicJsonType::size_type; + for (const auto& reference_token : reference_tokens) + { + switch (ptr->m_type) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + reference_token + + "' must not begin with '0'")); + } + + // note: at performs range check + JSON_TRY + { + ptr = &ptr->at(static_cast(array_index(reference_token))); + } + JSON_CATCH(std::invalid_argument&) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + } + break; + } + + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); + } + } + + return *ptr; + } /*! @brief split the string input to reference tokens @@ -9224,10 +9467,57 @@ class json_pointer @note Empty objects or arrays are flattened to `null`. */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION static void flatten(const std::string& reference_string, - const NLOHMANN_BASIC_JSON_TPL& value, - NLOHMANN_BASIC_JSON_TPL& result); + const BasicJsonType& value, + BasicJsonType& result) + { + switch (value.m_type) + { + case detail::value_t::array: + { + if (value.m_value.array->empty()) + { + // flatten empty array as null + result[reference_string] = nullptr; + } + else + { + // iterate array and use index as reference string + for (std::size_t i = 0; i < value.m_value.array->size(); ++i) + { + flatten(reference_string + "/" + std::to_string(i), + value.m_value.array->operator[](i), result); + } + } + break; + } + + case detail::value_t::object: + { + if (value.m_value.object->empty()) + { + // flatten empty object as null + result[reference_string] = nullptr; + } + else + { + // iterate object and use keys as reference string + for (const auto& element : *value.m_value.object) + { + flatten(reference_string + "/" + escape(element.first), element.second, result); + } + } + break; + } + + default: + { + // add primitive value with its reference string + result[reference_string] = value; + break; + } + } + } /*! @param[in] value flattened JSON @@ -9239,19 +9529,108 @@ class json_pointer @throw type_error.315 if object values are not primitive @throw type_error.313 if value cannot be unflattened */ - NLOHMANN_BASIC_JSON_TPL_DECLARATION - static NLOHMANN_BASIC_JSON_TPL - unflatten(const NLOHMANN_BASIC_JSON_TPL& value); + static BasicJsonType + unflatten(const BasicJsonType& value) + { + if (JSON_UNLIKELY(not value.is_object())) + { + JSON_THROW(detail::type_error::create(314, "only objects can be unflattened")); + } + + BasicJsonType result; + + // iterate the JSON object values + for (const auto& element : *value.m_value.object) + { + if (JSON_UNLIKELY(not element.second.is_primitive())) + { + JSON_THROW(detail::type_error::create(315, "values in object must be primitive")); + } + + // assign value to reference pointed to by JSON pointer; Note that if + // the JSON pointer is "" (i.e., points to the whole value), function + // get_and_create returns a reference to result itself. An assignment + // will then create a primitive value. + json_pointer(element.first).get_and_create(result) = element.second; + } + + return result; + } friend bool operator==(json_pointer const& lhs, - json_pointer const& rhs) noexcept; + json_pointer const& rhs) noexcept + { + return (lhs.reference_tokens == rhs.reference_tokens); + } friend bool operator!=(json_pointer const& lhs, - json_pointer const& rhs) noexcept; + json_pointer const& rhs) noexcept + { + return not (lhs == rhs); + } /// the reference tokens std::vector reference_tokens; }; +} + +// #include "adl_serializer.hpp" + + +#include + +// #include "detail/conversions/from_json.hpp" + +// #include "detail/conversions/to_json.hpp" + + +namespace nlohmann +{ +template +struct adl_serializer +{ + /*! + @brief convert a JSON value to any value type + + This function is usually called by the `get()` function of the + @ref basic_json class (either explicit or via conversion operators). + + @param[in] j JSON value to read from + @param[in,out] val value to write to + */ + template + static void from_json(BasicJsonType&& j, ValueType& val) noexcept( + noexcept(::nlohmann::from_json(std::forward(j), val))) + { + ::nlohmann::from_json(std::forward(j), val); + } + + /*! + @brief convert any value type to a JSON value + + This function is usually called by the constructors of the @ref basic_json + class. + + @param[in,out] j JSON value to write to + @param[in] val value to read from + */ + template + static void to_json(BasicJsonType& j, ValueType&& val) noexcept( + noexcept(::nlohmann::to_json(j, std::forward(val)))) + { + ::nlohmann::to_json(j, std::forward(val)); + } +}; +} + + +/*! +@brief namespace for Niels Lohmann +@see https://github.com/nlohmann +@since version 1.0.0 +*/ +namespace nlohmann +{ /*! @brief a class to store JSON values @@ -9339,7 +9718,7 @@ class basic_json { private: template friend struct detail::external_constructor; - friend ::nlohmann::json_pointer; + friend ::nlohmann::json_pointer; friend ::nlohmann::detail::parser; friend ::nlohmann::detail::serializer; template @@ -9376,7 +9755,7 @@ class basic_json public: using value_t = detail::value_t; /// @copydoc nlohmann::json_pointer - using json_pointer = ::nlohmann::json_pointer; + using json_pointer = ::nlohmann::json_pointer; template using json_serializer = JSONSerializer; /// helper type for initializer lists of basic_json values @@ -16642,400 +17021,6 @@ class basic_json /// @} }; - -////////////////// -// json_pointer // -////////////////// - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_and_create(NLOHMANN_BASIC_JSON_TPL& j) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - auto result = &j; - - // in case no reference tokens exist, return a reference to the JSON value - // j which will be overwritten by a primitive value - for (const auto& reference_token : reference_tokens) - { - switch (result->m_type) - { - case detail::value_t::null: - { - if (reference_token == "0") - { - // start a new array if reference token is 0 - result = &result->operator[](0); - } - else - { - // start a new object otherwise - result = &result->operator[](reference_token); - } - break; - } - - case detail::value_t::object: - { - // create an entry in the object - result = &result->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - // create an entry in the array - JSON_TRY - { - result = &result->operator[](static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - /* - The following code is only reached if there exists a reference - token _and_ the current value is primitive. In this case, we have - an error situation, because primitive values may only occur as - single value; that is, with an empty list of reference tokens. - */ - default: - JSON_THROW(detail::type_error::create(313, "invalid value to unflatten")); - } - } - - return *result; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_unchecked(NLOHMANN_BASIC_JSON_TPL* ptr) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - for (const auto& reference_token : reference_tokens) - { - // convert null values to arrays or objects before continuing - if (ptr->m_type == detail::value_t::null) - { - // check if reference token is a number - const bool nums = - std::all_of(reference_token.begin(), reference_token.end(), - [](const char x) - { - return (x >= '0' and x <= '9'); - }); - - // change value to array for numbers or "-" or to object otherwise - *ptr = (nums or reference_token == "-") - ? detail::value_t::array - : detail::value_t::object; - } - - switch (ptr->m_type) - { - case detail::value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - if (reference_token == "-") - { - // explicitly treat "-" as index beyond the end - ptr = &ptr->operator[](ptr->m_value.array->size()); - } - else - { - // convert array index to number; unchecked access - JSON_TRY - { - ptr = &ptr->operator[]( - static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_checked(NLOHMANN_BASIC_JSON_TPL* ptr) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case detail::value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_UNLIKELY(reference_token == "-")) - { - // "-" always fails the range check - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range")); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - // note: at performs range check - JSON_TRY - { - ptr = &ptr->at(static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -const NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_unchecked(const NLOHMANN_BASIC_JSON_TPL* ptr) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case detail::value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_UNLIKELY(reference_token == "-")) - { - // "-" cannot be used for const access - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range")); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - // use unchecked array access - JSON_TRY - { - ptr = &ptr->operator[]( - static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -const NLOHMANN_BASIC_JSON_TPL& -json_pointer::get_checked(const NLOHMANN_BASIC_JSON_TPL* ptr) const -{ - using size_type = typename NLOHMANN_BASIC_JSON_TPL::size_type; - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case detail::value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_UNLIKELY(reference_token == "-")) - { - // "-" always fails the range check - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range")); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - // note: at performs range check - JSON_TRY - { - ptr = &ptr->at(static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -void json_pointer::flatten(const std::string& reference_string, - const NLOHMANN_BASIC_JSON_TPL& value, - NLOHMANN_BASIC_JSON_TPL& result) -{ - switch (value.m_type) - { - case detail::value_t::array: - { - if (value.m_value.array->empty()) - { - // flatten empty array as null - result[reference_string] = nullptr; - } - else - { - // iterate array and use index as reference string - for (std::size_t i = 0; i < value.m_value.array->size(); ++i) - { - flatten(reference_string + "/" + std::to_string(i), - value.m_value.array->operator[](i), result); - } - } - break; - } - - case detail::value_t::object: - { - if (value.m_value.object->empty()) - { - // flatten empty object as null - result[reference_string] = nullptr; - } - else - { - // iterate object and use keys as reference string - for (const auto& element : *value.m_value.object) - { - flatten(reference_string + "/" + escape(element.first), element.second, result); - } - } - break; - } - - default: - { - // add primitive value with its reference string - result[reference_string] = value; - break; - } - } -} - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -NLOHMANN_BASIC_JSON_TPL -json_pointer::unflatten(const NLOHMANN_BASIC_JSON_TPL& value) -{ - if (JSON_UNLIKELY(not value.is_object())) - { - JSON_THROW(detail::type_error::create(314, "only objects can be unflattened")); - } - - NLOHMANN_BASIC_JSON_TPL result; - - // iterate the JSON object values - for (const auto& element : *value.m_value.object) - { - if (JSON_UNLIKELY(not element.second.is_primitive())) - { - JSON_THROW(detail::type_error::create(315, "values in object must be primitive")); - } - - // assign value to reference pointed to by JSON pointer; Note that if - // the JSON pointer is "" (i.e., points to the whole value), function - // get_and_create returns a reference to result itself. An assignment - // will then create a primitive value. - json_pointer(element.first).get_and_create(result) = element.second; - } - - return result; -} - -inline bool operator==(json_pointer const& lhs, json_pointer const& rhs) noexcept -{ - return (lhs.reference_tokens == rhs.reference_tokens); -} - -inline bool operator!=(json_pointer const& lhs, json_pointer const& rhs) noexcept -{ - return not (lhs == rhs); -} } // namespace nlohmann /////////////////////// From cb4a9c85cb81cf3dc989abc308c08ddb1ed1ca14 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 28 Jan 2018 17:55:40 +0100 Subject: [PATCH 091/106] :hammer: excluded code from coverage --- develop/detail/conversions/to_chars.hpp | 2 ++ src/json.hpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/develop/detail/conversions/to_chars.hpp b/develop/detail/conversions/to_chars.hpp index 549ff01e..186b62ef 100644 --- a/develop/detail/conversions/to_chars.hpp +++ b/develop/detail/conversions/to_chars.hpp @@ -481,11 +481,13 @@ For n == 0, returns 1 and sets pow10 := 1. */ inline int find_largest_pow10(const uint32_t n, uint32_t& pow10) { + // LCOV_EXCL_START if (n >= 1000000000) { pow10 = 1000000000; return 10; } + // LCOV_EXCL_STOP else if (n >= 100000000) { pow10 = 100000000; diff --git a/src/json.hpp b/src/json.hpp index 0fd92ebd..e12904a8 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -7578,11 +7578,13 @@ For n == 0, returns 1 and sets pow10 := 1. */ inline int find_largest_pow10(const uint32_t n, uint32_t& pow10) { + // LCOV_EXCL_START if (n >= 1000000000) { pow10 = 1000000000; return 10; } + // LCOV_EXCL_STOP else if (n >= 100000000) { pow10 = 100000000; From 52e944956385a4b94652a168a4c5a8634290fd53 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 28 Jan 2018 20:44:45 +0100 Subject: [PATCH 092/106] :memo: added more functions to overview --- doc/index.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/doc/index.md b/doc/index.md index a72d9654..6fbe2a4a 100644 --- a/doc/index.md +++ b/doc/index.md @@ -36,7 +36,16 @@ These pages contain the API documentation of JSON for Modern C++, a C++11 header - @link nlohmann::basic_json::other_error other_error @endlink for exceptions indicating other library errors - lexicographical comparison operators - serialization - - deserialization + - @link nlohmann::basic_json::dump dump @endlink serialize to string + - @link nlohmann::basic_json::operator<<(std::ostream&, const basic_json &) operator<< @endlink serialize to stream + - deserialization / parsing + - @link nlohmann::basic_json::parse parse @endlink parse from string + - @link nlohmann::basic_json::operator>>(std::istream&, basic_json&) operator>> @endlink parse from stream + - @link nlohmann::basic_json::accept accept @endlink check for syntax errors without parsing + - binary formats: + - CBOR: @link nlohmann::basic_json::from_cbor from_cbor @endlink / @link nlohmann::basic_json::to_cbor to_cbor @endlink + - MessagePack: @link nlohmann::basic_json::from_msgpack from_msgpack @endlink / @link nlohmann::basic_json::to_msgpack to_msgpack @endlink + - UBJSON: @link nlohmann::basic_json::from_ubjson from_ubjson @endlink / @link nlohmann::basic_json::to_ubjson to_ubjson @endlink - Types - @link nlohmann::basic_json::array_t arrays @endlink - @link nlohmann::basic_json::object_t objects @endlink From b3bd3b726ba4814ad079601603c49a81e13e51e8 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sun, 28 Jan 2018 21:02:02 +0100 Subject: [PATCH 093/106] :memo: added link to OSS-Fuzz project repository --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 28c52f4f..4f064a47 100644 --- a/README.md +++ b/README.md @@ -991,7 +991,7 @@ The library itself contains of a single header file licensed under the MIT licen - [**GitHub Changelog Generator**](https://github.com/skywinder/github-changelog-generator) to generate the [ChangeLog](https://github.com/nlohmann/json/blob/develop/ChangeLog.md) - [**Google Benchmark**](https://github.com/google/benchmark) to implement the benchmarks - [**libFuzzer**](http://llvm.org/docs/LibFuzzer.html) to implement fuzz testing for OSS-Fuzz -- [**OSS-Fuzz**](https://github.com/google/oss-fuzz) for continuous fuzz testing of the library +- [**OSS-Fuzz**](https://github.com/google/oss-fuzz) for continuous fuzz testing of the library ([project repository](https://github.com/google/oss-fuzz/tree/master/projects/json)) - [**Probot**](https://probot.github.io) for automating maintainer tasks such as closing stale issues, requesting missing information, or detecting toxic comments. - [**send_to_wandbox**](https://github.com/nlohmann/json/blob/develop/doc/scripts/send_to_wandbox.py) to send code examples to [Wandbox](http://melpon.org/wandbox) - [**Travis**](https://travis-ci.org) for [continuous integration](https://travis-ci.org/nlohmann/json) on Linux and macOS From d0c9e5fffc1bd1abf417143fb61021c362d10829 Mon Sep 17 00:00:00 2001 From: Kaido Date: Sun, 28 Jan 2018 14:42:13 -0800 Subject: [PATCH 094/106] Allow overriding THROW/CATCH/TRY macros with no-exceptions (redo) #938 --- develop/detail/macro_scope.hpp | 14 ++++++++++++++ src/json.hpp | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/develop/detail/macro_scope.hpp b/develop/detail/macro_scope.hpp index 8316c077..e6752218 100644 --- a/develop/detail/macro_scope.hpp +++ b/develop/detail/macro_scope.hpp @@ -46,6 +46,20 @@ #define JSON_CATCH(exception) if(false) #endif +// override exception macros +#if defined(JSON_THROW_USER) + #undef JSON_THROW + #define JSON_THROW JSON_THROW_USER +#endif +#if defined(JSON_TRY_USER) + #undef JSON_TRY + #define JSON_TRY JSON_TRY_USER +#endif +#if defined(JSON_CATCH_USER) + #undef JSON_CATCH + #define JSON_CATCH JSON_CATCH_USER +#endif + // manual branch prediction #if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) #define JSON_LIKELY(x) __builtin_expect(!!(x), 1) diff --git a/src/json.hpp b/src/json.hpp index e12904a8..f170ca81 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -156,6 +156,20 @@ using json = basic_json<>; #define JSON_CATCH(exception) if(false) #endif +// override exception macros +#if defined(JSON_THROW_USER) + #undef JSON_THROW + #define JSON_THROW JSON_THROW_USER +#endif +#if defined(JSON_TRY_USER) + #undef JSON_TRY + #define JSON_TRY JSON_TRY_USER +#endif +#if defined(JSON_CATCH_USER) + #undef JSON_CATCH + #define JSON_CATCH JSON_CATCH_USER +#endif + // manual branch prediction #if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) #define JSON_LIKELY(x) __builtin_expect(!!(x), 1) From 8049442c2a1225fad61f1c8b4d18eab1dc59029d Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Mon, 29 Jan 2018 21:56:13 +0100 Subject: [PATCH 095/106] :hammer: rename yytext to token_buffer (fixes #933) --- develop/detail/input/lexer.hpp | 37 +++++++++++++++++----------------- src/json.hpp | 37 +++++++++++++++++----------------- 2 files changed, 38 insertions(+), 36 deletions(-) diff --git a/develop/detail/input/lexer.hpp b/develop/detail/input/lexer.hpp index 58e40001..2b99c137 100644 --- a/develop/detail/input/lexer.hpp +++ b/develop/detail/input/lexer.hpp @@ -211,9 +211,10 @@ class lexer @brief scan a string literal This function scans a string according to Sect. 7 of RFC 7159. While - scanning, bytes are escaped and copied into buffer yytext. Then the function - returns successfully, yytext is *not* null-terminated (as it may contain \0 - bytes), and yytext.size() is the number of bytes in the string. + scanning, bytes are escaped and copied into buffer token_buffer. Then the + function returns successfully, token_buffer is *not* null-terminated (as it + may contain \0 bytes), and token_buffer.size() is the number of bytes in the + string. @return token_type::value_string if string could be successfully scanned, token_type::parse_error otherwise @@ -223,7 +224,7 @@ class lexer */ token_type scan_string() { - // reset yytext (ignore opening quote) + // reset token_buffer (ignore opening quote) reset(); // we entered the function by reading an open quote @@ -695,7 +696,7 @@ class lexer contains cycles, but any cycle can be left when EOF is read. Therefore, the function is guaranteed to terminate. - During scanning, the read bytes are stored in yytext. This string is + During scanning, the read bytes are stored in token_buffer. This string is then converted to a signed integer, an unsigned integer, or a floating-point number. @@ -709,7 +710,7 @@ class lexer */ token_type scan_number() { - // reset yytext to store the number's bytes + // reset token_buffer to store the number's bytes reset(); // the type of the parsed number; initially set to unsigned; will be @@ -993,10 +994,10 @@ scan_number_done: // try to parse integers first and fall back to floats if (number_type == token_type::value_unsigned) { - const auto x = std::strtoull(yytext.data(), &endptr, 10); + const auto x = std::strtoull(token_buffer.data(), &endptr, 10); // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); + assert(endptr == token_buffer.data() + token_buffer.size()); if (errno == 0) { @@ -1009,10 +1010,10 @@ scan_number_done: } else if (number_type == token_type::value_integer) { - const auto x = std::strtoll(yytext.data(), &endptr, 10); + const auto x = std::strtoll(token_buffer.data(), &endptr, 10); // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); + assert(endptr == token_buffer.data() + token_buffer.size()); if (errno == 0) { @@ -1026,10 +1027,10 @@ scan_number_done: // this code is reached if we parse a floating-point number or if an // integer conversion above failed - strtof(value_float, yytext.data(), &endptr); + strtof(value_float, token_buffer.data(), &endptr); // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); + assert(endptr == token_buffer.data() + token_buffer.size()); return token_type::value_float; } @@ -1058,10 +1059,10 @@ scan_number_done: // input management ///////////////////// - /// reset yytext; current character is beginning of token + /// reset token_buffer; current character is beginning of token void reset() noexcept { - yytext.clear(); + token_buffer.clear(); token_string.clear(); token_string.push_back(std::char_traits::to_char_type(current)); } @@ -1099,10 +1100,10 @@ scan_number_done: } } - /// add a character to yytext + /// add a character to token_buffer void add(int c) { - yytext.push_back(std::char_traits::to_char_type(c)); + token_buffer.push_back(std::char_traits::to_char_type(c)); } public: @@ -1131,7 +1132,7 @@ scan_number_done: /// return current string value (implicitly resets the token; useful only once) std::string move_string() { - return std::move(yytext); + return std::move(token_buffer); } ///////////////////// @@ -1259,7 +1260,7 @@ scan_number_done: std::vector token_string {}; /// buffer for variable-length tokens (numbers, strings) - std::string yytext {}; + std::string token_buffer {}; /// a description of occurred lexer errors const char* error_message = ""; diff --git a/src/json.hpp b/src/json.hpp index e12904a8..eb0dde5c 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -2025,9 +2025,10 @@ class lexer @brief scan a string literal This function scans a string according to Sect. 7 of RFC 7159. While - scanning, bytes are escaped and copied into buffer yytext. Then the function - returns successfully, yytext is *not* null-terminated (as it may contain \0 - bytes), and yytext.size() is the number of bytes in the string. + scanning, bytes are escaped and copied into buffer token_buffer. Then the + function returns successfully, token_buffer is *not* null-terminated (as it + may contain \0 bytes), and token_buffer.size() is the number of bytes in the + string. @return token_type::value_string if string could be successfully scanned, token_type::parse_error otherwise @@ -2037,7 +2038,7 @@ class lexer */ token_type scan_string() { - // reset yytext (ignore opening quote) + // reset token_buffer (ignore opening quote) reset(); // we entered the function by reading an open quote @@ -2509,7 +2510,7 @@ class lexer contains cycles, but any cycle can be left when EOF is read. Therefore, the function is guaranteed to terminate. - During scanning, the read bytes are stored in yytext. This string is + During scanning, the read bytes are stored in token_buffer. This string is then converted to a signed integer, an unsigned integer, or a floating-point number. @@ -2523,7 +2524,7 @@ class lexer */ token_type scan_number() { - // reset yytext to store the number's bytes + // reset token_buffer to store the number's bytes reset(); // the type of the parsed number; initially set to unsigned; will be @@ -2807,10 +2808,10 @@ scan_number_done: // try to parse integers first and fall back to floats if (number_type == token_type::value_unsigned) { - const auto x = std::strtoull(yytext.data(), &endptr, 10); + const auto x = std::strtoull(token_buffer.data(), &endptr, 10); // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); + assert(endptr == token_buffer.data() + token_buffer.size()); if (errno == 0) { @@ -2823,10 +2824,10 @@ scan_number_done: } else if (number_type == token_type::value_integer) { - const auto x = std::strtoll(yytext.data(), &endptr, 10); + const auto x = std::strtoll(token_buffer.data(), &endptr, 10); // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); + assert(endptr == token_buffer.data() + token_buffer.size()); if (errno == 0) { @@ -2840,10 +2841,10 @@ scan_number_done: // this code is reached if we parse a floating-point number or if an // integer conversion above failed - strtof(value_float, yytext.data(), &endptr); + strtof(value_float, token_buffer.data(), &endptr); // we checked the number format before - assert(endptr == yytext.data() + yytext.size()); + assert(endptr == token_buffer.data() + token_buffer.size()); return token_type::value_float; } @@ -2872,10 +2873,10 @@ scan_number_done: // input management ///////////////////// - /// reset yytext; current character is beginning of token + /// reset token_buffer; current character is beginning of token void reset() noexcept { - yytext.clear(); + token_buffer.clear(); token_string.clear(); token_string.push_back(std::char_traits::to_char_type(current)); } @@ -2913,10 +2914,10 @@ scan_number_done: } } - /// add a character to yytext + /// add a character to token_buffer void add(int c) { - yytext.push_back(std::char_traits::to_char_type(c)); + token_buffer.push_back(std::char_traits::to_char_type(c)); } public: @@ -2945,7 +2946,7 @@ scan_number_done: /// return current string value (implicitly resets the token; useful only once) std::string move_string() { - return std::move(yytext); + return std::move(token_buffer); } ///////////////////// @@ -3073,7 +3074,7 @@ scan_number_done: std::vector token_string {}; /// buffer for variable-length tokens (numbers, strings) - std::string yytext {}; + std::string token_buffer {}; /// a description of occurred lexer errors const char* error_message = ""; From ce273af9b6f94cb1c6731511ce44a1d888423d00 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 30 Jan 2018 23:20:36 +0100 Subject: [PATCH 096/106] :memo: added documentation for binary formats --- doc/Doxyfile | 3 +- doc/binary_formats.md | 172 ++++++++++++++++++++++++++++++++++++++++++ doc/images/binary.png | Bin 0 -> 65897 bytes doc/index.md | 2 +- 4 files changed, 175 insertions(+), 2 deletions(-) create mode 100644 doc/binary_formats.md create mode 100644 doc/images/binary.png diff --git a/doc/Doxyfile b/doc/Doxyfile index 4c64dd6f..46d3685c 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -109,7 +109,8 @@ WARN_LOGFILE = #--------------------------------------------------------------------------- INPUT = ../src/json.hpp \ index.md \ - faq.md + faq.md \ + binary_formats.md INPUT_ENCODING = UTF-8 FILE_PATTERNS = RECURSIVE = NO diff --git a/doc/binary_formats.md b/doc/binary_formats.md new file mode 100644 index 00000000..8b187860 --- /dev/null +++ b/doc/binary_formats.md @@ -0,0 +1,172 @@ +# Binary formats + +![conversion between JSON and binary formats](images/binary.png) + +Several formats exist that encode JSON values in a binary format to reduce the size of the encoded value as well as the required effort to parse encoded value. The library implements three formats, namely + +- [CBOR](https://tools.ietf.org/html/rfc7049) (Concise Binary Object Representation) +- [MessagePack](https://msgpack.org) +- [UBJSON](http://ubjson.org) (Universal Binary JSON) + +## Interface + +### JSON to binary format + +For each format, the `to_*` functions (i.e., `to_cbor`, `to_msgpack`, and `to_ubjson`) convert a JSON value into the respective binary format. Taking CBOR as example, the concrete prototypes are: + +```cpp +static std::vector to_cbor(const basic_json& j); // 1 +static void to_cbor(const basic_json& j, detail::output_adapter o); // 2 +static void to_cbor(const basic_json& j, detail::output_adapter o); // 3 +``` + +The first function creates a byte vector from the given JSON value. The second and third function writes to an output adapter of `uint8_t` and `char`, respectively. Output adapters are implemented for strings, output streams, and vectors. + +Given a JSON value `j`, the following calls are possible: + +```cpp +std::vector v; +v = json::to_cbor(j); // 1 + +json::to_cbor(j, v); // 2 + +std::string s; +json::to_cbor(j, s); // 3 + +std::ostringstream oss; +json::to_cbor(j, oss); // 3 +``` + +### Binary format to JSON + +Likewise, the `from_*` functions (i.e, `from_cbor`, `from_msgpack`, and `from_ubjson`) convert a binary encoded value into a JSON value. Taking CBOR as example, the concrete prototypes are: + +```cpp +static basic_json from_cbor(detail::input_adapter i, const bool strict = true); // 1 +static basic_json from_cbor(A1 && a1, A2 && a2, const bool strict = true); // 2 +``` + +Both functions read from an input adapter: the first function takes it directly form argument `i`, whereas the second function creates it from the provided arguments `a1` and `a2`. If the optional parameter `strict` is true, the input must be read completely (or a parse error exception is thrown). If it is false, parsing succeeds even if the input is not completely read. + +Input adapters are implemented for input streams, character buffers, string literals, and iterator ranges. + +Given several inputs (which we assume to be filled with a CBOR value), the following calls are possible: + +```cpp +std::string s; +json j1 = json::from_cbor(s); // 1 + +std::ifstream is("somefile.cbor", std::ios::binary); +json j2 = json::from_cbor(is); // 1 + +std::vector v; +json j3 = json::from_cbor(v); // 1 + +const char* buff; +ize_t buff_size; +json j4 = json::from_cbor(buff, buff_size); // 2 +``` + +## Details + +### CBOR + +The mapping from CBOR to JSON is **incomplete** in the sense that not all CBOR types can be converted to a JSON value. The following CBOR types are not supported and will yield parse errors (parse_error.112): + +- byte strings (0x40..0x5F) +- date/time (0xC0..0xC1) +- bignum (0xC2..0xC3) +- decimal fraction (0xC4) +- bigfloat (0xC5) +- tagged items (0xC6..0xD4, 0xD8..0xDB) +- expected conversions (0xD5..0xD7) +- simple values (0xE0..0xF3, 0xF8) +- undefined (0xF7) + +CBOR further allows map keys of any type, whereas JSON only allows strings as keys in object values. Therefore, CBOR maps with keys other than UTF-8 strings are rejected (parse_error.113). + +The mapping from JSON to CBOR is **complete** in the sense that any JSON value type can be converted to a CBOR value. + +If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the dump() function which serializes NaN or Infinity to null. + +The following CBOR types are not used in the conversion: + +- byte strings (0x40..0x5F) +- UTF-8 strings terminated by "break" (0x7F) +- arrays terminated by "break" (0x9F) +- maps terminated by "break" (0xBF) +- date/time (0xC0..0xC1) +- bignum (0xC2..0xC3) +- decimal fraction (0xC4) +- bigfloat (0xC5) +- tagged items (0xC6..0xD4, 0xD8..0xDB) +- expected conversions (0xD5..0xD7) +- simple values (0xE0..0xF3, 0xF8) +- undefined (0xF7) +- half and single-precision floats (0xF9-0xFA) +- break (0xFF) + +### MessagePack + +The mapping from MessagePack to JSON is **incomplete** in the sense that not all MessagePack types can be converted to a JSON value. The following MessagePack types are not supported and will yield parse errors: + +- bin 8 - bin 32 (0xC4..0xC6) +- ext 8 - ext 32 (0xC7..0xC9) +- fixext 1 - fixext 16 (0xD4..0xD8) + +The mapping from JSON to MessagePack is **complete** in the sense that any JSON value type can be converted to a MessagePack value. + +The following values can not be converted to a MessagePack value: + +- strings with more than 4294967295 bytes +- arrays with more than 4294967295 elements +- objects with more than 4294967295 elements + +The following MessagePack types are not used in the conversion: + +- bin 8 - bin 32 (0xC4..0xC6) +- ext 8 - ext 32 (0xC7..0xC9) +- float 32 (0xCA) +- fixext 1 - fixext 16 (0xD4..0xD8) + +Any MessagePack output created `to_msgpack` can be successfully parsed by `from_msgpack`. + +If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the `dump()` function which serializes NaN or Infinity to `null`. + +### UBJSON + +The mapping from UBJSON to JSON is **complete** in the sense that any UBJSON value can be converted to a JSON value. + +The mapping from JSON to UBJSON is **complete** in the sense that any JSON value type can be converted to a UBJSON value. + +The following values can not be converted to a UBJSON value: + +- strings with more than 9223372036854775807 bytes (theoretical) +- unsigned integer numbers above 9223372036854775807 + +The following markers are not used in the conversion: + +- `Z`: no-op values are not created. +- `C`: single-byte strings are serialized with S markers. + +Any UBJSON output created to_ubjson can be successfully parsed by from_ubjson. + +If NaN or Infinity are stored inside a JSON number, they are serialized properly. This behavior differs from the `dump()` function which serializes NaN or Infinity to null. + +The optimized formats for containers are supported: Parameter `use_size` adds size information to the beginning of a container and removes the closing marker. Parameter `use_type` further checks whether all elements of a container have the same type and adds the type marker to the beginning of the container. The `use_type` parameter must only be used together with `use_size = true`. Note that `use_size = true` alone may result in larger representations - the benefit of this parameter is that the receiving side is immediately informed on the number of elements of the container. + +## Size comparison examples + +The following table shows the size (in bytes) of different files in the `test/data` directory for the different formats. + +| format | sample.json | floats.json | all_unicode.json | +| ----------------------- | -----------:| -----------:| ----------------:| +| JSON | 687491 | 22670390 | 13279259 | +| CBOR | **147095** | 9000005 | **5494662** | +| MsgPack | 148395 | 9000005 | **5494662** | +| UBJSON unoptimized | 148695 | 9000002 | 7718787 | +| UBJSON size-optimized | 150569 | 9000007 | 7718792 | +| UBJSON format-optimized | 150883 | **8000009** | 7718792 | + +The results show that there does not exist a "best" encoding. Furthermore, it is not always worthwhile to use UBJSON's optimizations. + diff --git a/doc/images/binary.png b/doc/images/binary.png new file mode 100644 index 0000000000000000000000000000000000000000..2579fd8f485383195cb8e6a26c02c7a14cd63dd2 GIT binary patch literal 65897 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 literal 0 HcmV?d00001 diff --git a/doc/index.md b/doc/index.md index 6fbe2a4a..66ad588c 100644 --- a/doc/index.md +++ b/doc/index.md @@ -42,7 +42,7 @@ These pages contain the API documentation of JSON for Modern C++, a C++11 header - @link nlohmann::basic_json::parse parse @endlink parse from string - @link nlohmann::basic_json::operator>>(std::istream&, basic_json&) operator>> @endlink parse from stream - @link nlohmann::basic_json::accept accept @endlink check for syntax errors without parsing - - binary formats: + - [binary formats](binary_formats.md): - CBOR: @link nlohmann::basic_json::from_cbor from_cbor @endlink / @link nlohmann::basic_json::to_cbor to_cbor @endlink - MessagePack: @link nlohmann::basic_json::from_msgpack from_msgpack @endlink / @link nlohmann::basic_json::to_msgpack to_msgpack @endlink - UBJSON: @link nlohmann::basic_json::from_ubjson from_ubjson @endlink / @link nlohmann::basic_json::to_ubjson to_ubjson @endlink From 57e6fddd90fd9293872a5e197a970809266139db Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 30 Jan 2018 23:57:49 +0100 Subject: [PATCH 097/106] :rotating_light: fixed warnings --- test/src/unit-constructor1.cpp | 6 +++--- test/src/unit-convenience.cpp | 4 ++-- test/src/unit-conversions.cpp | 2 +- test/src/unit-json_pointer.cpp | 2 +- test/src/unit-regression.cpp | 6 +++--- test/src/unit-ubjson.cpp | 12 ++++++------ 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/test/src/unit-constructor1.cpp b/test/src/unit-constructor1.cpp index 9d93f6f5..33a4f677 100644 --- a/test/src/unit-constructor1.cpp +++ b/test/src/unit-constructor1.cpp @@ -295,11 +295,11 @@ TEST_CASE("constructors") { json j{1}; - CHECK_THROWS_AS((j.get>()), json::out_of_range); + CHECK_THROWS_AS((j.get>()), json::out_of_range&); CHECK_THROWS_WITH((j.get>()), "[json.exception.out_of_range.401] array index 1 is out of range"); - CHECK_THROWS_AS((j.get>()), json::out_of_range); + CHECK_THROWS_AS((j.get>()), json::out_of_range&); CHECK_THROWS_WITH((j.get>()), "[json.exception.out_of_range.401] array index 1 is out of range"); - CHECK_THROWS_AS((j.get>()), json::out_of_range); + CHECK_THROWS_AS((j.get>()), json::out_of_range&); CHECK_THROWS_WITH((j.get>()), "[json.exception.out_of_range.401] array index 1 is out of range"); } diff --git a/test/src/unit-convenience.cpp b/test/src/unit-convenience.cpp index 2bfef0fc..f74c00ae 100644 --- a/test/src/unit-convenience.cpp +++ b/test/src/unit-convenience.cpp @@ -99,11 +99,11 @@ TEST_CASE("convenience functions") check_escaped("\x1f", "\\u001f"); // invalid UTF-8 characters - CHECK_THROWS_AS(check_escaped("ä\xA9ü"), json::type_error); + CHECK_THROWS_AS(check_escaped("ä\xA9ü"), json::type_error&); CHECK_THROWS_WITH(check_escaped("ä\xA9ü"), "[json.exception.type_error.316] invalid UTF-8 byte at index 2: 0xA9"); - CHECK_THROWS_AS(check_escaped("\xC2"), json::type_error); + CHECK_THROWS_AS(check_escaped("\xC2"), json::type_error&); CHECK_THROWS_WITH(check_escaped("\xC2"), "[json.exception.type_error.316] incomplete UTF-8 string; last byte: 0xC2"); } diff --git a/test/src/unit-conversions.cpp b/test/src/unit-conversions.cpp index fb0ab4eb..f9d49a83 100644 --- a/test/src/unit-conversions.cpp +++ b/test/src/unit-conversions.cpp @@ -1020,7 +1020,7 @@ TEST_CASE("value conversion") SECTION("std::array is larger than JSON") { std::array arr6 = {{1, 2, 3, 4, 5, 6}}; - CHECK_THROWS_AS(arr6 = j1, json::out_of_range); + CHECK_THROWS_AS(arr6 = j1, json::out_of_range&); CHECK_THROWS_WITH(arr6 = j1, "[json.exception.out_of_range.401] array index 4 is out of range"); } diff --git a/test/src/unit-json_pointer.cpp b/test/src/unit-json_pointer.cpp index b6b83760..7a493347 100644 --- a/test/src/unit-json_pointer.cpp +++ b/test/src/unit-json_pointer.cpp @@ -60,7 +60,7 @@ TEST_CASE("JSON pointers") { json v = {1, 2, 3, 4}; json::json_pointer ptr("/10e"); - CHECK_THROWS_AS(v[ptr], json::out_of_range); + CHECK_THROWS_AS(v[ptr], json::out_of_range&); CHECK_THROWS_WITH(v[ptr], "[json.exception.out_of_range.404] unresolved reference token '10e'"); } diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 886392b1..c4a04775 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -1369,7 +1369,7 @@ TEST_CASE("regression tests") uint8_t key1[] = { 103, 92, 117, 48, 48, 48, 55, 92, 114, 215, 126, 214, 95, 92, 34, 174, 40, 71, 38, 174, 40, 71, 38, 223, 134, 247, 127 }; std::string key1_str(key1, key1 + sizeof(key1) / sizeof(key1[0])); json j = key1_str; - CHECK_THROWS_AS(j.dump(), json::type_error); + CHECK_THROWS_AS(j.dump(), json::type_error&); CHECK_THROWS_WITH(j.dump(), "[json.exception.type_error.316] invalid UTF-8 byte at index 10: 0x7E"); } @@ -1394,7 +1394,7 @@ TEST_CASE("regression tests") CHECK_THROWS_AS(model.patch(R"([{"op": "move", "from": "/one/two/three", - "path": "/a/b/c"}])"_json), json::out_of_range); + "path": "/a/b/c"}])"_json), json::out_of_range&); CHECK_THROWS_WITH(model.patch(R"([{"op": "move", "from": "/one/two/three", "path": "/a/b/c"}])"_json), @@ -1402,7 +1402,7 @@ TEST_CASE("regression tests") CHECK_THROWS_AS(model.patch(R"([{"op": "copy", "from": "/one/two/three", - "path": "/a/b/c"}])"_json), json::out_of_range); + "path": "/a/b/c"}])"_json), json::out_of_range&); CHECK_THROWS_WITH(model.patch(R"([{"op": "copy", "from": "/one/two/three", "path": "/a/b/c"}])"_json), diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index 2d87e570..144fcfe1 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -1186,7 +1186,7 @@ TEST_CASE("UBJSON") { // larger than max int64 json j = 9223372036854775808llu; - CHECK_THROWS_AS(json::to_ubjson(j), json::out_of_range); + CHECK_THROWS_AS(json::to_ubjson(j), json::out_of_range&); CHECK_THROWS_WITH(json::to_ubjson(j), "[json.exception.out_of_range.407] number overflow serializing 9223372036854775808"); } } @@ -1340,14 +1340,14 @@ TEST_CASE("UBJSON") SECTION("eof after C byte") { std::vector v = {'C'}; - CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error); + CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error&); CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.110] parse error at 2: unexpected end of input"); } SECTION("byte out of range") { std::vector v = {'C', 130}; - CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error); + CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error&); CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.113] parse error at 2: byte after 'C' must be in range 0x00..0x7F; last byte: 0x82"); } } @@ -1357,14 +1357,14 @@ TEST_CASE("UBJSON") SECTION("eof after S byte") { std::vector v = {'S'}; - CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error); + CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error&); CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.110] parse error at 2: unexpected end of input"); } SECTION("invalid byte") { std::vector v = {'S', '1', 'a'}; - CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error); + CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error&); CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.113] parse error at 2: expected a UBJSON string; last byte: 0x31"); } } @@ -1374,7 +1374,7 @@ TEST_CASE("UBJSON") SECTION("optimized array: no size following type") { std::vector v = {'[', '$', 'i', 2}; - CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error); + CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error&); CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.112] parse error at 4: expected '#' after UBJSON type information; last byte: 0x02"); } } From 51c774f208ef5a1d25874eb57f24963d394ee585 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 31 Jan 2018 17:23:11 +0100 Subject: [PATCH 098/106] :memo: added documentation for binary formats --- doc/avatars.png | Bin 595449 -> 605218 bytes doc/binary_formats.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/avatars.png b/doc/avatars.png index 1ef578756b1618a70983fff188067185efa37cf9..d3ba51c24f145fefbdb2b690b5c6d813da71172f 100644 GIT binary patch delta 603766 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≥&Dxd-u1R26?>A9d*I z(mnS+aP>6<&$(JIxwLiFmFnnGY*s1Hv&?3zEo4ro&+^QJh&Vq#f6J}6-hbbH^Yinwv$IK-dfIc&Y0nFM zztLz64K;+N-EJe2=lN%+rw<)G7zRNUhH)I%YBg(Z9LM!~-4B9qs0ZXfbGY-VP+<*< z>-LS03wCZ@FBOCVoFf1#R&n400|X*~gsC;wnCTM_*K2iKsVJqqz}J7M9IyLV5%K!^ zyUumuf-r;#NSx-Gu}*6xMdySej&n~l1LL|lVxbKQMLW|ucl3fQk6v))=l=Jf{&W;< zt5{3w%qqX*?wR?^pMS}bt4*F4TgUYt=!UK}Y=~x@ZzVq_B}7ol0|6FCq?A%~YqRfr z@4N5%_(%E=KR98s36FmRhB*tzQgu9s_VCDSU;Fa^@KZmrd-roTzUXO2Q^O7qMg%GZ zqZ)jKa~94SNEk{4K0=dV+CnVgBMcA(h)8aQvlHgX#o<{Gdlj)U7Ys;JQ1WSe8T*J! zD-1IZW(~B91}DHc0V*i0l+=1z$VX8a>vTC5wS`Ul86NWk4Q0C2iUdf1VoHds0cNI z?`Z^5L?Xa~gccDTbDpQCPM%aeT#9N&2i>%TQ9e8%hb|iPA{B&zWf%HUJ&4S%UT%6i za$2a{?RXK6PLzN9z4ppd-tW6oEi8To0{|fdD^ce?7mKG{;X(vLNQ$tem4|@H9x6gm zo~oAhKqVNgQ@vU)1v(%sEAlmw5>1K}2yo_HFSQFx-I;~fYTp_5lg#xpW)vmX=Ec_) z(*bMlUT5?!}h_uz(RT0>$iDY=3`&5Uq1Ts9UXenq=il!|}SV zH8BW)_MqEdz3R&6{KyagaF(UO766JR?-}ekij!uoEtSdx0|UmM2t^Q4YkhvHIuErc z`nQIp{8s#ng!4ndL~GHW506^-iiMRFaUR!3c8?#r9xL-VTzB;DhaNiG+%Y%1xPSlt z*>mSkpE-ZsZFhDI4OIiUYVX*t;Yy{f7@Uc_e&8bzDHIk4?}`JB>xbk^YhEkO8|A84 z12zl&QlP!%)z(7KkzYdckL(;B81QG$tka>HMG*zQ@0P_#zRBNk?sEVqB2uX=I6-R=8Y?b^O$XmBVBqb$pe zF-YiXEzEx4BTC%w)vDFb+FHsEK(aLUe9zO`^K`iq`90O`bwdi2r=wEX?)9ySr&qdh zW=5SvVbEw)lO(OyYKsf=)l#ID*NyweWFx~vv-9(vu+3WSzTCI_xA!AKgDrb2n z8$y3}kB%pIqW(q~PUZYx{}SK+&mSn_=^#`hD%6noD9o~iEd*@ETBB{&j!kUC;Tn4Z z1rbmm*daRrD*~3q3407#zxU}+eEQ7E(>XW^JV5k`g3xm;z%oBO|Ean8b7#(8b>*d% zp|S`oXO**>fc&VNm`H*4kc3G91#@PFpnZR^U`3-N0j)g6Jt4(VVq-Y)O&>r`t9lt! zpnZ?v2+clk@0lavk{%6iy2!ivA=OEPu2X;V*E!U?th49=X-xB?H_Nt^N`nl{uSjcjmv-a z(HFkq2QN8#A&|$eZ)}ow<1FruR!ZAnaCvKb?7i>$^IeDMb{;-*%boWPmg#jbzvSp8 z+tVaHnk0+!E8X5QHOlQJyE@H#p5U!WM2`l4o&UGV4SMPq-u6>3ddJ;=Q|i4&)Gn(2 ze07i%ojR;JPj!}QM{uLr7w}zvekBOJ_fQ)9njOXLe5PcGla!XJ;iE@szi&7btkXbccmK3anEIMNkBV z)=!QFVrC%{0Zn>!W%+YAe!R83Fwm@=on0VMVauBsADBM3*z4zK&P+Z3hU<1*a!su^ zBw##bh3pX`g0NFag2I2q3aQ9$F(}iG+m+ zm_l}K zn~kXx5ATzrjb?vw2tu;<5sC>jtNs#I*T#bS3!Z<;pa13FHNv^dpG8eMM`KRB

^QYe{*EC(_6mehU?M?-=n1Ygi(ZmvW~8R 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

N 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

}Z?HF$ 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

S-dsXSDqF2pD)+6FBB6>z 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

9W(r69te2Z7sqs^K?I~syZp-_8 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�>%UQO7980W7qy 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

uid0S`A!@Y3 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 Hu0mjf62eiH delta 593884 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

J6mFcF2;y4qwO1FGn+@+=sT8MK>b)qfScDW+ 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≠@zBANfG-g<0AEf$rx&T6yvBWe+4pI|oRF3P6MznSo(PJvw@1 z@275i&{wJex><0*7$9Wqk`zJ>n$Uu@(-aYUT^C!~*Qm7C;%;gZ135vC@W`oC7hHFZ z(!|!C|5Zp}GrsUue~p7LtZhDj00=;NNV9#$i_6mog0Sd-uK%%-!Wm?fZx>KLZb~tK z(t5Fur~Fz&06=GW3G)xaNi-_1FI+gN;_)`9qS8gV`#QeK>Tb;en-~V#|@QYDt0082RpAYaTJiEZiZ-B?8z*H6pNd*AK^1;H7y(xr2M>KWQ z!s-J(715?he|8Z#{N3ZFv4Ha@B6N^|bFS@y=0!KYjKq_s$Iu)sxMo6&IfkAL$gCuiqB^@ZDss9^sYV~Tz6 zV;gwqF%#!&xQ{(z&Q0z5>nc}X0kl~HN+@Zz_NmWEo^P@bL=o0nN*KCTln|y@`diu$-=SnF>nn)>Hw~VyxJdMn3*;S%{(#Y6o zdud6SyQ{0!N_B4eT(dFI>-T2nW&z;bx#`?E^gTa_&YU@&r}@BOV|sRWYHE7d&YfWt zFxzSka|h*8$@4q}Bt$>(hlYmArE(NSgU!L|si|(a)9tmBBvk}yo_T>cG%}JTX>N_@ ze6lQxfkoKKV?-2>KX7h-^`mNk=i!MRJ9h8h{lO1?=#{T}xz}jidEcFNRg>t%vF>0i zt52M|_10-GcRRd+^mExI6Vneb&izT7hL`NbQnR{O@u#LFocxPzrP8PEmE*ghX0g@5 zW@nzYr*uMEZkDTwR_Y8r#8ARGc>%|D{r7txeLbFq2ZsOXBR?zU{T2 z`s8Q+`foq{lRxqA+no*q5MqHyM?yex))Hz!A*Gyi%)so<>k4Sk69DI2@gN9iS*CnX zdAh7ZTDRPcP3Ni*VubaofV=FN0(+dHh6g4))ZojJ)vGR6*?maX(w(S6-0YbnS z`4mYA#Ex@e2hak&jBEiJ5JlRE%fbz2wgt^E_jW=lKf@3&-xeuh);$Bx$!>2(WE`e7xUF?!EWk!-o$K4i0uY zomQ)*h=vA-3QS%c$4QcCtp^4M%H?vN=duyc;71k-Y9c2-)U)Yk?KcFm5)P;f-dx=Z zeW84uy)`}duD0@VizNc~zpfk&>#Y#PPmW@r{OFDw*Ly3tAy>4KQx)cq8)cLAg1dl# z@A)TBJaY4YM?dC+%^jaSJ4H$@-`d_b(g=cZYIY%QmUoN{4>d+tTk)Pf+g6w6&ffm{ zU02@VMJ2I0lG;Fw0Tjl`AV}*DwSdCn47&hT(d5AmXWRmQRUF>P@CXeIukmVAY2?J@ z3DLSE`^MRmM?p&kUl?&Kvq|TyR{CRK_?zGOz90U7IDra5NMJlDAuvFRpiWRlXb?1rYBW}&xsJT3K_dz?E5j9Ba&p$% zh|u?cp&tMSAR$785E29o3P1yB03RV2H*I_8oZ745vJf(X3?LC$V_0+G03w8n01yO@ zBgWwCY2XQfLQGu#-uc@SXEyC_T5*G3^{v}(*kWjlkNOL15C6g0&jh5ldd+u^UNh>~ z%##4t&pJ?q6@?c~{D)23YyzSwTG7jKpKhTbrX z`PvVj1hq#>DN+PPVj%}sV9?prt)L;O91mCw$g)sFA2j4F^BVzpu!t_W7~!s zTLUD~N<5OPACxqfeAzY}>>e&njFckZBf-cIqO$LY6le^575HALJYORbf!ers4942b zSYxdsu*OhH9o#z+dTM^DQw~)lM77X=J-5h#_(I09V*mkW5)c6d5@bO_Viv~2WI_Z5 z1f{SDk@H%^2%rds0mZR(_Q;VV0|R&Tdh3$l8ohq6^X+f^jvd>#t*$P5+Ox(G`Gn7k z+^W`7DMm!Cb+6ZZ&Na^gk$1oQ-NqQLwY8S$(aOjZfQjGifhZ;q#wJGJ_+7GpsYJF2 z1>w>s{=WavgA_&ZEk+{%0FbAJB})@yjS?t8HcCKP6u9P&ondWE#C-A-pO{}*jjg?S z&sY_b5)JgMWx;0T?HU^>`E=^UnOaoK!Z`A@pmjqRj5fjD6n)>cObBn*Qj zO~WMlrfJ|6A&|r_>2KD+L&#HUj(DRxf^~b7C%ly*ER)jM?^rI=rsH4anM*)CK5~(S zSvG620Du5AwI206vsnYLc!7ILmPB3at>!!eNLX@_m}Rs49CDHDNgtknS?(E8fws(m zNE)jV1;B~5M3}_=uvCe{XrR$_EKVRvQ{M}MfQ0SxYWqMfnCZ-q4~L`Wq1*221QwGt z1`uQN@zKiR3r1$UOQYkp{evTulk=;smQrY~17Y6}08ybDY7TUI{VdI^)k^65AdtkV z?|Z)IiEx}`%Zm#`!^6gZnA!Q6o!hq$)*IH^<>i&Z!J+BdnJ4_lRPwIti^x_DJl?u4 z%^)R;YC&bIS0EGxx-ExD!NBXgc+&=6DtW@`R`2~9BNwyj06{<_rViB+Z(viIPyq?h zC#2XV0R&r737@HoW|s6!mH-=PvfL(G0f@`ezDLB?W;O-u;(kwm#5t3lK6UECi)&~s z85_s3)%xU#6KAKU25R**&8nV1*sM0o^^t0QpjxljYM$r$1lE~2&ZAOwaCF%Bg5}og zBU2~YfVH@N=bmyQSMU#Ow;8aHW(0IA;r9hjmsd1qfMgwAMio6eYNQ{=(UF zdDer~gjW)pUM<~!J*m%h!cJECg%^)pyuJL2EBx+l=5(taXi`XwbpOfZOQ&^Zpmgq` z=^Z0wPjXcb)|UG&13$@k)u4_NC3(lG*y>&uBPfY{6Q_swRx7^CJ4+`XTKduh{kx`o z7apzD*M`HDQXr4C0;~4WP&kqa&|Fl z?qiDfA3XYCvi!JfN5sr8e(nwB554=>f9gLbOViiQ;M=JFSv&ie`RNZeU-}A~xS;dl zH~D)3;4hL#{!4Vp%>IF&p8Slo`jz@~hiveQ+QHKwyyxu?{*Qa6PhX@O7fS7|`zGHq zS0^V1`76ACjG|Pj{Q3X$!RI~q`f8;j%*#tlq&%hd>gww7@bEKD%d9X1I1wk}A(62L zAr`I%VF&Y(%PudE)dw%S?Cf2)j9j``*9L8tDUaOhLOOqrvn;k*+)ap52VRVxNk$P#jyo{?tys58bB)?I9FB*8CwiJv5A9j zs~Zp-?XUH-M92s#70j=!tt_0|eZhWbA7?@<0_7pSRrjul0_pZo6iCq6wl%>QK^WM6 zSeyKkzx!&a4kH^u!pGGk z*9jSj_}Bym5n1GXO{$oCakDOq%f-Y_WK#@(##3`BK?HO}UM1MPcq8l3%%>9J6tIc2 z@s|t(8l2bIVDVdV0JZZErNPTCL=q5CH-zr3yxMo}1~@ zXNHD`2bu%M8bvzKjB_>&gYyPdTI+VFJ3Bk$dmf0*vfQx?d_OmNyWbrh9gK8PY1Vsx z-FCB4t5wUM0!@O5zORoRd+_eN@2S>mr0AxbZu;);`QE|7#zPMszv&a7yz%)rUVOK2O@c%c~NNDjx>kJL7pU?RwuKj-|x==LWfk(FQ+_8Fp?BU9R?f&x*c)D^Z^e}^%^MOXW(@l2ydaipYtZd&~ z!T{V*)*c=m-s`DO((}AvJ80B449j6oy0$IqC;9R!0`D9jow(o?X|6ND0ApuEAEj^d zUYuEWv8}M7MnmoOY$wabIv)j*Qg)h5do4YA*U7Pc7oI*d*=RPCrMaDdgZo;+(b3)8 zHybGHtz|?4uqRGFjEDqavRM4Gb&iRZ(pqa3hL{Tx08x=~0ia{H&K2D)VG;{U5f!_Z zVqQWE#H2urcFu_d!-mKcKx?fL6u^LJwApyz%;MDK$)T|wAnVe;Pagk%7%(%4SZ6%# zBRe1%86AAZ>tFqU{^sw0UiaEp4-OBfX>BOWycmQBU0zX{Gv#-nBA^<9d#u#P}g5Z1+P(% zW_gyRsV5Er1R)X?IR@o?5ClmOJmvryg&3iWoCAlXb7K;KMzgVhZ)ek}(qG;ApxM~z zc&HYLl^-4+tgbAzJ6SFu9)MP;Q8a@Gq?sMKHKjg>@Q}F6fp!uZWXtQTXR@|@`kwoa z-tasTM*Ifz@Q@(d=575n2!m{$pNN3}HRM;%h=;eq|K?h?IxsMh=Xnr>-R{cj>M97F znVdZS@WZuQZP)I99S05^IB?)#xm-??tq)921jO--$}x)&Y2Anx}E2b*)VGiz&WS3l>PJkRqy zuhnYS+IF`CNF&1|McW4viKteq)vDEUx$K;ago=Q9a^n{L6MLtrC814^TMtK35e zhyT?jQ8<1K{0RWKAmMLt4U4k+df5bV{T5T6K6dxrAN}Bm7FU)H zvo)^Q?OJQCbJmR4Dy7iZ_Z^?KX})vpLRBu$%�hy5E_6`Qbb22QMp^%FIRiTSS1g zD%|xpI&_SG>$H8@=-z>dD8h9DlmH^KVD93T(~2|55z=Foj@gDqhbyIeh~K!(U`(8CWud@|{+veRSRN-n1)=?e9usCMQ-K!Px`o-S|P>;wo<%qr{uApj7PQj8>j zzNZ6Cr4V+Gc)Le~k>Og|^H8u-qEe)zNc%oTfgc6R^T=1a04^22bw#Z=3{+&j+?X^o zIYBQ)KZNZQL&CDK(jKk)*LtD8hyW9ELCs`f z0U;D*3xLcnC;?N4$s-&`Nx0wUH|LPk~CA=C#9{i3Kgt(l>bG|T>rI&2zq|7ZTsd8JZ6eY6qWutbe#V0 z319n}urbye<7pp?Vhf0{qo6#r^HNmhes{UO)=iU~m0Id$jfUUw;*mzpfi5Y3juedy zG@p0Hr4xgt+wQt=rI+7$!$tG0l~!j>6QDR|@Vp@D#o*69@5R^r<0qDL2kmy3Scp6i zw8@=U^V2jFB0=meIGiH~jCK0VY&kuY7$kOzitbqqWg@fH@ z4ZH#qZ*tkHfmiU3ltxmULrk83{jGr;7Ia%R@T`at*{XpDPfa%fuv;G@0TdsrHv16V z!Wgd{`Mo%kibit9#xwFT@I(P9L>5Mbk&zK1>~?!fAv2e1^?tXN#+}}p%aZEIXesVw zGqWZLsw}Z4m72^8bU)6MZl?lfuvY1IyJ?yLv$0kHh`>__K*l*{2t4h7Db37CRIOC{ z{l4$jgoRLPrHr*UH=*x$`@JMd$HvB{&rN40@ASGugUu(M1k|V$ZhnEEHoIcr?CI!n zPmNAeKnm5S4Ll8sp0y1kZUKueOgjObmCv0!w|&Q+Q0acBMGCVlKYjX46opxy27y0ZuMJhAs;8@( zhRdZ&y-c3=qo`J`X+Kb27)FsFM0*75je+}4-9Ioe?0cnZx#o=PB;BHJ!VJuUEJZgf zw-yMQg{>u}eC@GwMQOqq14Jk1VX>oTTIoWkdS=A{20{70om}vGs#cpAe;kPhRD`1k z_kREPReR>%w|_PUELrvxIGdGz^PQ*udTieG^A{g6+pjxF8v0C`al->OC+UTI%P;o* zyHCzd_W?r1j)^eSVccJ6O?Dng@(=PD~hLFM@?%O_2I z|1}qt_l)eFIks@Daz>zXf8fyA?9_?4cXOj$J$C1PR2us57ausXe@|~Md(Pu8M`3Y) z?G;!3!!0+r)BZ31+OPceuYP>B8Gcu==QS|#-_rZ0T=#9^k^dOqp0PWXEdSt7{^uV% zb?8rj{dYbI^Ka1yW=!{u2d>(G=9J-!ZuH0ASzGwdAAf7}XaAN1fBZ1dq++hI!@3+E z`#*nw!1+h6wTlP6D(kB{fMLB|Eq^cgkqinNbK96J&rX7V|9U^C+%I&k3f zOK7Mz|L_C#T?4hTy*5sjCQ0&aaW+|7L2ET2DU9QOY6S_bV=E#e3RR13mBcF~SbVRf zXwUZH!Qtl7o!f7|fA0)N7=Qp{hpiG#EC#_?W1S1Zi&-oX6L*;ByRn7Ude<_3|4dxlpi$VJ7r(Cx1aQlfgf%@y@eie{vy(xB&tb0r?t^fw^c3 zaDjI&N?q0&VX=ml*6i3hml@-j2sHpW=LEpHVzi3({Pxq$o~fU4tRX*Y1k;;5^kKyVqI0m>3+i5f6`e5RJg_R z_4GSyVUW#|f1juL#wR{cxPAanu5hSLBvza=z1V6`k%mUKcKYmeKV{zwwaD1u&^>n^ z-?nr6p@RpbC`!`=3Reaqjq2|{{DDUvdhpUqE_%t!Us`Hr{0>3iPt)!Xm6^Nzdxz&mo}u+r+O4ND5F`kAT8GiOc@maBwV zt5oM#R$g%9wKraWaoTEo+I!3`^XSQy4H9O7hFJ&3A_{Ki?uekYZck5Nba>y91N-hg z_5dlxf6Q?lm&;|?m?6K$5No%5j%dBFwyD=0VxgNS#%$HVlY+Zic;IbLF&42_jM=h* z2Tz=Ud=2EG(!S@HEU>4vkjA11kK|aaGf@ysjE;w8zZZ8G&#sINkIpR2PfwkVwAX6& z2O1-l^1#&OxzT}P2i)uTth1}jorQ%ZkGzqze~HLiDee0r5=Bw9TGgI*);VkaAgH54 zRJ#xCU0j%-onOdu2c&A%u-dE$N}BY=<_v7Tz<8!uUP-A!k;?PDOE13o!INj^d)es7 zHVRbek1Wj2^pc^*wgYpxRE>tPJ?nGDq;Z<0tt2Sik`|*)1iLP*@RR z(qEZ9ds-_6OO8VirMNe=M};L~e}T9t%F){Mw06ddQ;r=w5a5EH=0FsQfDiyG z7Kf;b0F|Xeh6}{8Wd;I= zr#^PmU%l`BKl5`xon<)`jAsTB@w|YGk~~5bghk1zTrLxmv4#a$95Z{Km*mU#b zKvH1@VG##tNsytS$2n9EWX0Ku!GX(Q_Cw~ePj-t zEIR(~s}4<6!?W{iQ?tu6(@SgZe^>xYNP&O?g~(bQFwG%;4&X}Ry`Zf)hpdR4aSIRJ zfAogu32!Nr_-uloE1Ck;@A52Oe~3u8+wJ%J z2#{r26h+RtWB1)_j1BzY_(P8f^6Osr`u%(N{MBE*Z)Rp@czC!ND_ZMHrDCni^SoZK zYpo08J*D)0$By;-{R0OMjE{~PW4;as!+8tzC!e>X!Bhy{J~>37FnnH51GXw~Ji~Cp z07$%XCC&@kK~cRfx_1bSe}VwQvd+CjX3(BmU0(gfNB?1FZYDLZAIIVt2}zNs;E}Uu z123po%8{?{J~_2xd}!a!;fK%63G$Ic`ypQKp1I%Kf4LWUAVP(44i+6c7GT=&ly@x7 z73#?aiI&!jHya~SfC1=+*S`EiKmW-aC$d*;umAmLKK_UA{MDa)f9roe|1+1mi>FRM z_|QZ5O`l#N4|Z%Hy7b~JF1hf!C!J&gfh2GL$ajCwe`t7D59VjPC5w)_?h_zxwcZ{`kw;ImhgIo3zQTwOZ@n z`Td{!&@cYh4_rL*f9}sM{z~P)6i@vUz<&dH3DJrt_eXMi5Mm#pOOP_KKvhA?;3K32 zPJjSHf+}K_hAZlDNs)sGV_8mJ(qj?0`-E*Vzxu*p*3g)Sg*wDT0-1mV@Nr!jGeqbz ztT`|O8lXgwAxvA??n9CNT7gvysencpAYcJTK|$|X?VxBqH@|*z0R$Bw0OVpfO$!+$ z7X*O91Mllf&%Xh|veg92PPB+c)QFpu01*jM3$PQzl5Mr5K2zc#lY`KY2=f*QJc6QK zMw1%REd=>`?@g0S(HehumFLgKR4|qivR#2 zI%g~8%7qsm{NgS52DOGsGXQ?W8(v?EqF%qN6v?_0%;UB&Uw53Ju@M1Sy1mvlS6^{v za_S#G`mu{Hy!5s^?x>c^HfQa5CeNQFt@%wKB9iA@HSk2~ZxI9Uo)DAg(LD_-QPuBd zX;9nl1qC0BlQGgjfAH4ltIcMu$EXu*_Qs9JWsA43fA~Lf;A8%LeQ$s2Plm0<6E=+~ z4AU%OCj|@*fP7B}BtEK)2t}0e&hfD%b7>kk>J6nl>ueB)Nzxa;F)JIPx^{258$5? zob_nn23m2`r{Ehs#uWxS@5ea?(&OA@8B*L*NICeztT1H=oL0V$vR=0o>FLuC>^XR` z(LVZibzz~Gf5oAW6hOr<1xjnB0_`aaF3o|3v<|QosH*k?9h7_>04U$5Bm0kZ(?k@t zI^9~W7FMF9lQ{?C1byY4FoOcfm22k4nJf%K%v@?6D9@AJSM1QwttFSG=R=U2gg>cOXJN(v#C$sF@Nf05A68d%9*RKEUzZ{ z``-W8e=oi6dF?bfb?VHQ?mc<(8Wv zYw?+C`-q^31_T5HP7x4!j@>fnFMRo{FbtQ^O^#i1Xz0MDCXGR9Qp)t(ytcw=ic)O4 zP=S;K<&5n)%OXA~C%_;9Xh8Nz1)8drU}U6;esJ{Aj$^0h=Z)E>Q2}`3bsaZB8*qZy ze-UnrVM1cjpi;D}&SAe7JF>u@AOaaBt(8^V>2D(C^iOJl@HNDWM}fjkKI!b9d=XYkf1}B*HO^TPdIOS@nF@V0P_4%`4~4`>}uSRBuJ zkvDo&Dx}!Z(4+cGPaV%PKY8}!Z>s~??AxuiN>LbwX_|K0{c@?I{8S9qOSQp9e`S1U z{dv!QrKi*#x8Hu`f+M9;*&6Hn`b%HB?Mt`Zx_j5i%F4oRw|(X1FMYusciwq!=G^?k z+`aeQfBkh=O-|2*VK_cKc>2`L+S(ct^}1aIbjAqk$O}uQQm@;qRm(xBj-QxWnw=jV z9y~Yq(8ZTtIXX5tJ+pA?)TuBGf2_5}SWoGdrG@wZ&0n3GnyuBUv$M0ee)-lHzW4>1 zd3ruQme`_?QfM3wqq+UbfYTKdni_`9EJnu+2QJ9i#R_20|9WqPZfI zcGph@_d@+Yf%^ zyWjMk^??C)tT%q_`ISNdh#qD6NP$IX20)_q8n1|Gt&17G5ZTgN6)Vo8Zxk`cc%G-w z&-1iU#&eT7*&Kfovj~6#FaS=V5MnbLQ-s{{u07kHclqIZNr9rZc5>Oyf$zNb&{#bT z0xv>3(~1A*$G>{(Lz5@xRxTJnggf=_9i#cBW@dKvk<$w&CeQT&N~kpm2{;fRz<|09 zF-O@?lz~H~opmc`PJbh{peBbYMI$!*l7Z+al`q$m^#Vl?o9+YapCpJiXK8`!3CzJ&YK;NoxS2C}$+9016A z`|Q!g?|dzI0|bMhi^dC!Fk7voyKcYh)QOW0DNPe}Mj>gX0mS!06Q`ZD3oLuKPb{pq zzI@Mv{mwQ-y7TUbN=j85^`Xe){v7)|QIHWtgaCh(RsyIPgv45-Nil*G=5>)e6ahwl z3_NSyyx=>(^GDwMj(5KA!4q#f+W6fUZ-32y{{p3H+eCMzJ(s#e+ zhl+n0=Fv-mh~T~TM}DFB-~aIQfB3yW^-II0K>(o53@nYwJe|h#?@$7>D0I*$Q6aWh~Bbux5+Mr}PqoD6YJ0nvQNCcdKLJS}Za4eub9`Kmq}PQIHEPIap?xvtR^D1cLxbFlAsw zL6cyOprK$yLzf{!2oO91579?>)~w)7)7!^%Ft#cmKCXW9FH}B+tuj1WFZNptc-j5Gx~8130gRaF|p7UNdGKU5zNyvXD(gIFllqQrl4 zmYb{}hZ_7K=%u;kwv)tK*H3$FT%M(AVuABK?Z+K9nG96xNs=Ra%1=>e1I=2i-On{8 zX{%DH?c2Y@**J;YLe>whbykGJ$akJvSnQ^;uZb2G;;0J1uU&t6#U-uw z+VJq`$&<&s-Ch_}3Z}a;Tf+^%X=AIc)7QME`lbp*;X;Io8K}_7FLaSyeP{%|$hy2% zYaBYV=dQc%tAq_}+?|t4H(b1{j5f`Qz$uX4S|>}p&B40o)A&T4e4QjMP-Lw|AVkbe zlE$$~aX_m(}AF4KLm6B3nb7VmE7Bpa}h!9CDr4%U*L`A0@ zfJ6X^1PT#y`sQokeJj49(eKCo(B%vY2@qK@h=Nd4NXq!SAE%dX8!3f)8L-{$vvW}? zYPDB=tw|}i5(b{N7ST_$ywz@%O67s(Ab@MFF4;VZ!fLx?oHfSeN|Ar>`-o`m|Hs~Y z$60n%cjD)qs=D!|&T+aYM}<*BIe-udY%tLVV*|!s8;3Qlf9trmvDaZ8)&aaG*ai#; zV@xp7AfkkjKyj3%8BOS!&gs2=>Bg!$zdvrzXe9NB;KeMMGxM40e(&a6w{F!r-(Va^ z#YqB;d6rp5wk(AN#5{k`ln}ljG#U-pldj|DI+uc6M`l^pQ?0Jl8*_^b!$U*9=PfQT z>u*A1?FaE44Wl{jwsVaNbGB9+lXjb$Em8qGrZ|bS+*$)xTLeBab!=#StK+-fZfkyi z&RVMh6-fXvYza{y5px`MowgSu1Qe<`BF=3RvmZ)Ff(`wkym^0OOAKau{>0+)%HZID zwH5*LTnon*bS_u8nh>qcv&?lJZI~H^a0G)O1j1Zv0&~x-)9k?NLKyVd&besI;Mnl^ z;F$7)eC4rf5HW~6gIZbnp339M_dO=EhEWQIcA?$L*qK^O9-N+DZKh>MUgbDL{e7xz zwa5lWDsd)sW-EUs$0eL!Y)-An*0Si`?raJCEt^I!yXf3JPVYMKP`MnmSGGLx$Ss4_ zyQUwTdAND-n#;Z8hgOfymv4XYc$U?-Z=PCiMnSKC=l%DFX5g{u)xF!sfAWRTZmiXd zyYQrH2a3X^$JQH-uYURFpLKVID1RxrW6nfB%0K(rTm9}@|6d_bW;UXhMcoq}lv z8H!xECmJJj`(E_?$sM~Ny!Q(izvjnk+t1DujU)@9P2G)bw`H@!^BI%s;3jj9w=v6%*53h;`gbLYL<+#; zoS}7c-Zw*o0{~zI@E*Li9e1;@R%*xAqCdJf|HaG0>pby?wd{82=6yQDQuhI{$uj?&oF-xTT72mJPU2HZ-jNp@(dUZ@X53+z`7Zp5o`cZ=jJ4# zkOA3RBc(zV##lilg^)s|%?2??o%XpqCXO9DQ5ooY-c=Vzss8vEZfP~!%8~tLznNq` z)v_ba@ug0b8FkM`H*LNkRSK;+Y21RRr<<59BLE9PL^h02w0uOgMLK`#TXX99e>7}{ zQVNqsne1?TtlRsl9H6`v|0`<~}GD(NP!>viH73K{@205g#_7I?iR zhL6wNpAbkwCyCDDV&HDH25W&&$*r=KN=wR?79i;s+b5!Cv-yAEgAZPD#TDN{$=&}4 zB91deVm1scr38dL&y6)gkRXy$IgZ0%JKc^+;>aXS0zsr{Vi4MKEWuPOVP9_& zh7IdnTefJa(DQ$^#z-L$&{!*^(8iSN$*NZlD#6lhJr3hdW0SR>zS-I7EnBx$_VnI8 zJ(X9UIodykY;(%@?0ELjj{aJytmAH}mqtA=-!d}cVqU40_G}x!|KY>OXXmzV+cLIg)7;byJZ11uWcmtjdAHk*leD7T zzzc}T7`Di45UeFaQqmaCwMJ&ntps5$F(4o@=LiH~ z5y=7rYPJ^90upmm*p^3wu5;13n|;UT+BoR?uG~7>;|oJ<%hjI2YIs3KKL1%4T=mBP z??t4roBSmq9TMB5EWA=q@e6 zcOONG^dA&O$)vbjG<^YlhEZAe`{a6EsmmVuf6upyYC(x>RUPjk%#$QN)Pa zvS=dSyyVzezu_ zdUq;}F~C5A5MUtaI}`4$@L#;?&M&;>SAOS%&#m>e(p*$;J<-_mg6&_w=^+645C8!D zRch>1t{T=AAO-Y!C|&F?QBO$6BD?ByW&n+qNFl?Zz&^yej(w3;hCo1tCBNa3BSVP$Sr(z(Hsm za0q$`$_PF}h!}p)xB2g<$W5N-I>~Z_q^-$fCf8Wi$Z0Ljx;jqpaR#ni-QD>nn#ye|C}>(HNtM4 zhC%44pc^%lPsWG)jm)0)oaeph zm9H%dcnB;I8Q3BaArSx?Bq;>AQkEq22eLO*y;Zkb4M?IZWpC9Fe>|!Np63W5NJ=TC zSjTRjOmRGpJ%IHg0W%{iA|%d)&j_AnPQyH|g;APkY2FjKXHS;nL#aW z1gz_#7AiINX$!`d!7>vfBFAyNr>FEAzy8ZNe)cQ>_HSQ$_OpLMDitS*kYtRdGa1VM z`+^9J%@BpPd4GTHe@9>TA|g3B*z=CJzY`dw5Y`y+txG`vAbt?12TI2>#yZWcaY2Gm z76=4-eoz_OL8@%Cn1%fD*S`LdgGV2G^n~v@og}{J$n5hk++A)fKWTG%Q`>nob6w@@vFm|8@WmXU^mV~-;<8h?MA?m=D9W+7_2eA z=L-~Rl6E^Ce?azqUrHA1+FV4)NtWftSj|L)2wEFQNy{cTIt+s(&9fAhBl~-M>&>gveIsPB30PAALr!M=V#F#j=_rysJ`l3CmbI}+DAP<6k&q(I zX{{OMCZ9fWeEY7m)|RvGYL~1ijHa|;ixzC2Wl1NCe?SMJ=Xri8IOCM#*krkOgRt6L zV<*r|eyQR(Zn;#m)|lLyJQs+9(B_%Z86iliLO-+&LdrNz7&1U6!b0#H0rD(EqNx*M zlAB<#y!Wd8o40RDl5}BdsaEUV)syv>Jhq|a)%j)~b)y$uHF5A*E;eqYjAqPbY5EC(G%f|?^hSQcu~0Xb8r39k)L_ZwvkN*HSHATs2I`a8_hyjwAO4D zf3h!lP*IenIf7Ryk8Ij8+nC+|s+afeI6I9KAjwR~h)8+V$&Oe)Pq=Nk^)7v2D?`PR9qV*b>VZRV!aS8A88kjQgTvoI>{sU+ zm@Of*)p|XxVy(5-Xq_`NTc-ds0SA>yPX1Y6{>q3X+@wLeaFfAtIx zp11$}e}4Z*qDBL9+f!DfWv8ZOl4Y9*Yk4=FF(z6(T7UG`-t(WAMeUQ;+;~!##@Yfb zfLal!7PUr!1X$oA8BStlzYnG_yLatAc<5lJa|u*miJL8rV9wpQX?UQI&|O|`e*W|S zVB)UV({uM-cMbMb4?T1*A}%k_I727yzcA5|n zk?cC>z*y`1{VNZh?K^A7@=|yE?#(4%#Wt@5rGrOW zd5{fO#IPGZaMuw%zZ|c2ywTC?UwHN-_uljQkA8T3$G)e(J8|5NI<3C`TD4RbBv@NZ zXsJ-LlZb-Yq^Si960Fut;3y^7GO#ShggVziC{$6|Mm9#XwG7s3%~mK^I*zf1nT^Ig zGk>`;x-flVLWFu_IZYGC35s{pQ`>(KxJ3e8A}aEXAqGyTIketUygFxi6 zG~339ORi_wxRL}RAaa^(Rr1e$-j-{wtCrl=69;Q^2mbIi&-wbJv%AjQzIn8--f7Ry zw+=5Xue94cC;N9y4t?S)_dRfA#z*oP93TT$GHc|!2rpq#0w93269K>mHksd-!GCPD zW@bVh8W>!dn_pV&hJL`>G*(thm9h||l+)MS>p0H*!otA7;2YlXhMR7_>CuBnvrLbS z4)yl+kq~E{wa;~3L;}E~gv@M&pi(Jh=6bzem}`FKv!AJy%aaqMVOZ*RS_kgEr`c@P zYPD*$s-!HJD^f~kbX~8g9J{U)1b;yxs@dP)Pl(-a_nfoOK6>=X^78V?$jEp5@_lCm ziNwiAf*9>O&WxE^2)Vqtw7RlrEO=5>f=cMQuA>Nnjj`601JQ1|iPj8yuo8+&$#-QO z$D=)AnkGq>W_f9TX1;GvZb68mnh&6jVFUyq6iyHd62@|zWrfOKQNAz!KYtxqQ%EcC z-G0vaWfvU!@JD}ok24rzpQ?h+t+9!4Ah$^zch>tb%@&_snf?58Ctvxu?|k*o{(_F| zvEwJMy7X#7`R9M~rl0If$2|Xo2fGJGwtw=^-)6KGa^pmwIE`#~hJgVaZIx0t-~Opz ze(6uV<($4zit=9g>qFhIlYjj3oBr1a{{G_t>lM7E#T-uLFry)1$Sn|{BZ6K$caML; zxQHEY=0HG_p+-m=4zCKh%96PhQYBmB=qUi_otvBcCeco8CelC_X~Cq z8aem~E`h|y1)~&#L|Cz~W*y@cg_fjp?zYx4oq_NB%5kf;0mrE|8=XAS z14F&#a;+UTdV4C(m48*w?NrMZ8J4{uY?}4gccF1Xh{Q;Yz$^$QSVhv8+!LsZFKcC| zuNDT55@>p>K{Zri;QC4sp_Ebxl5*YRnoer0p8iOl!t|_zhg{?od>5_ZJk8V4>x51{ z&#aM~s@l%OC4q~N`Hzx>y8YK4-Hn%+Ph`f z?p@t(*BFBY-#HQ<10xYLARCigL^Rf1xc{8|H9z@|zk6>O20GWTd)@0k_|cDlC-(k> z_)ikG;R)TD_ku97D<)0LeZ!2Xjd2}S8{A?|&X@svd-v}DKX3itKl{30m^wT!K_y9+ zfbFfhjpeTAd4JV%h>p19>ksXj+{<2nJ8B9Nxz&UMNFWmu2q}dS+VJKb=WgAy?Y;-@ z_8gZ9Orp2$Jpadj`8T)k-u2p7|4gz{zvQa2?=9y#vqlpVp~$t)QX{1Rq?1*AD9pBh zP{8{^{JSF6xsGHjgPKd$Fd|DqHCG<2w2Y8RVx+Yx=NDgI-ci+zAFg3c}_woC0*AO0ttx}GGn{bO|#4xW(zL3 z)>@;D2Ac`u%=GkBq9n<69)uo%@EkYIvgPHKp5C5LyWMCsf*{zrW6SM#-}l|Ve*f9S zat>gLh<_M>tpx^T0Bemwa2YJ;Rtg7Q?Xll!=Yrhjg~iFO+bdz&<_0VjLnlLEne$Ai zQXnHKM=E6ijaycZXWEeww$wZ7_V-v+4A!DRQngwSFfT7Hq-jEkQV0MrItOb3gcJ?| zF|*MrP`0i}P?U=i8Bqw4Y1Kb5vhUJ;t++jP^nX}?-(Z&JQ%6rc?~16mr!R`r9HNEg zs7K*{`|)So_0a5_Z}@ssiE16h)eTQ2#L)%7^D7M+}}ftzl;&GSkV6T|i9Qqpa;I-QY$-p{nNT=Dqk z+JB=*;Y3Hg@&)}r@!au)_uf9(BmC;n{Bm=7mC7Y|bZETWY5Be3xtE@MrhG0T0>I*( z5B-$fv1*ee*y%^FB$NlD&gskjZC+%4{x5$Y0N&L1LvOMBcmLxJAH8pNTmML7f_{9t z*6Or*$EZtU)5z#s;mBL~vW_r!^763p|9@++=Wb|h=5VJ|24?F(2KIlNhj&AHvLQP4 zH5{9G^pQsZarf@sh3~@D)YO~b@;6}^?%BQTRj+#0Da<+Ku5 zbZqkIZ3nQ1V|!i`$8916&?nu*B%+m$2f#!^k`;t(xszr(7qR6*UkO)i-@EmpV}DCk zRRW31@yLVmp*|K8(GcN|$??bLS|g?2`%Wx?)*fq7@tb+m0bwl%ES9bDT{YPgE-j{A zundwAh%EqEKtNQaY?kS?^B?-KeW&Abi!KH@6X)TKD+3zV;!}TYmw!Bd@y_5npFjJd znLps*=PnKhtlfXSb^B*a_1mV#pMNkPai32H4{%fPbWp%N8Y0yJO+fn{K87}yx&dcpGI@#fNO@6hP>&BMF4 z43ZmorLf&;T)2PBaQ{oDk1uq)T?89jo>^WiNpF0(e=c5C!n3BsRETk&Mt>7TK;Wt? z8BCue220dR?bMo$EfNT3!zb%@NdGaK%HP>|@k?L+iBEhyNurq(Q&E(st=8T>Td%+V zhmy#SPi$RTtsgpgXv^pT5gwbG-o10v)bZJ`-13#hr3K$nm0GE}wpJA~YSo7Z!cJSP zuCA=C)*pK4(fOriv^q^X)_){nDeNW@q0BM^M6Tz=c{j^)rNq`vBgPnHo}QUUU?kaS zc58k8sR5;=(N=nDXrSCv2@}noPDf`ML)MMra_FrzmgCg;&eP?Ch{&>SwOgK2$LAMj z7Z(w+6K9xq)($>&e0p&P%Lz-JrR7pMF*>k)>u9C7tlLjeHe+T`(tq*XO3y$?1&3C< zciwjF{)dm|CLbLh*uQ7zRpY&RW7#rVyFUFUqBxEpeDJ~RuDcGNNM-(x-O2Ax#H~i) z3fFVf)G>zBT(ixU5CX}vu$DP7okqLW?dse*j?>rMuN<+uTJLld21t{oshaMtt)9T)zD>QhJ22oJZC|mtdf(gM`giB<-Er?1zkhu3v!64wv@*O@I(}r4 z@V9(_#xUVUvdbe+V#M^S= zSUTUBnm_c(UVjg_lsC-X6cSPv0HP?e+BlB%T#1MbmKj(mE1Yg_v#t@A$U4AGC;>Rn zErXRL3o!PC>a=t3gKlT1Y1jj zw1!jSV?>31tI4$iM&AzvQKt1tZ9!xU7Hu)qEY$Oe2$77@#qjdfu@Q+P)n<$aU=ozG zl_-4Qz2oj9AOFhT#<`q`$WQMkGZ-0stebbDuf( z%;)zH4Sz(fc4^ZE-pIs-3(MQb25mQSJ$Je) z7e&>gMHUPe=piuYfkOZ`iWmS1NgeH2>jq8uxgsyFHf4<3x7C`r@p+qTUwEKGWC z5C&lwII^+H8?mRRHYQe@VywA#JRCR#uNMq5dQV3iO6h1$6- zys(f9EGnO(*PjliDGtUMErk5^XKt_`d*A=Qe7N1pY@9SA>qsG#+fEpC?kj=05fa&g zC0t0HF}L;O{pNKqe%bY<=F|hzxBS#kKY!Y zIYHo*%Vj`eOe&?yT3LNQ?jPza*ZNYynxyNhkA3QSnvia<$}yzAF`mo+?-T(06?0NWmmP2q6R&`pF1Lr+SH#9e)-B1EOIj zSciH_A;58fGv8B{&~3M(Qs{Q$s2drSYP=s7TiHr8mju?XYf}O6Is@1rwuorK z0tX!diVMrY8WimAJLNuDrAnjolBl^VYAhJ_q*Qp;upX8 zs;e*k4(PC0OqS=+4H?hXz0N9`5NnkF=H)RhDPmJomt2!%#LsDyONVxV(AiF`zB06`Gd6byNA-HzUph?|{E^a!@bk-~RX zmL*BbuInMN*1B9ND=E9(wqy{5M(ao?MrXd~Fmsk0&-0WJ2tb5{5(x=x)J>8&)y4v% zAW>kh9YdB+XV!v_+|0R<4uh`k_Z2o7gn|-M)VR z*@Fm}tz|<9Ohp1+Gizh5Wverj>DaPxl+cEyR9TkQ>nkUw4sV^@m0Qw=JwRd5{>#AC?e1Ft z;w8tO`@bd*&VP5d9AD%pmfFh=N18JbURn8JXw#PC2Bn}Bgu&?GV9-}>H{ugV=Tyb5 zjSh8*Rj)VPS8-j{X-B&@(NDhM>~bmX8z?KOdisL1cT^vUS7)s~zBE5F&^x|$_}w45 z(ff#jC%M4|d|CY|o>dsI3=Mmti^O={sn}6Sw-up*A7yo1T;A@*VU*Zf7 zdp)l`DE)_4mRx$&EX_vqQP!gzr&KBt;HUIVkMOR-fn3=Vi#3z{Qg*)!;%&jD5-~u1Alg1Qwo6{B#(tu3cr8y>8IN#6v5vr zLyVcN0N235PnpmC3j9p3eBbLQ{}Q4~B9hrWyU43t#AB}=+dLUQ)-m~G4%yh;to0*R z7PRiY_ryawCF}V#k!#JTJdLy~(m-5)VjVZP3%3=v{C5*e&n* z*Du`rz#~su>wSOtUthX^I8E1?%1EfS85$aT`O9Ap8zF7KugZ9A(>P)Ph=d#o?1Px_O`hbxQq6AvGIpnrqg-H8jf zm8TwF()D8pE8*aYIlSi!Hw9y77%E(#goVV?w z#Yf-qgj?}=`(Hm(YmK!=0K1Mvu$ql<{M_Q|a-+W1NxCVabd&;X1JAFNDguSdb?A7m z;~)wN=s0MNu^<_kO`d53NKz^d23X{oCCSz*!zRS3BUCKPm zm;uoNFhYoRI}K(jg(E#{tkyaxm5FVdW$U^7lh-HD^8#T)1VSigYfa&Py{?wbY>hEW zsVvWowv}qoYU%g>>wlLYK6da&uDf{G_6hv8qCUwM0D%e76t&ah92o$Bq%DWC;s?kq zr6eQM1i0(g~S*6Ip?$?{XInEwn>04Aa+x_|SIJFmIsn&su?+i$;p zc6PQ}sTyNE*F!|5lrbib<2=v1QFQLP`^UyM&CSm%CEJ}A5lNwT?c5avfm9;!1ErMX zI7CE5N-4HBu-5l|-}fgbHa-0C!_zY}?RL9Xt0|>~5Suq|u2rkWkho}6MN`c4ym%=H zAp+kos>Q_u<$rS7nD2QDiBr$=$=BSvwC$-+is!zdrWfgNJgH>hd7cz9*QrFW0fD)V~ou76Pu%XHT~Ob;S*> zpM0I4%zXg_fE)k$gD>m#(^hN@0zr?$877%ej(iPSgcHB4W) z8Mn;OTs2_jc|$Myrw`rw)f@kClY=V!-Fq5u_=mS#bk>z%nUIXuNQE@tH~U-`&`AJz zA?T*dk#_f>q!nL?>726;QXZW?(jlgrO#Y01SW@u*-o#2_Xida6F8^jdu2f_|62` zl#H@z7fid`S(#fnAeAAo3?Rs3LSs`Q8Gv$~A%BQ0X4egfq?CjLvMjcoBU`&tdJx~5K&R?r_)5XPmL3>(A`Bi>6{Hx2(WCFWU#)k zg3xh0B6L-nrrJW)ks~$LjToyK?c2!0UX_hD^rbeiW0SX0pB zQ4plMZ)k$ZwcJFOz$^r&QT)tjUVX{c*QMR|Eua3-9XEeEv#{rj68MbH{2&~rMZv{MNVBQE` z!vMIh)3u?S2s-6lBQAOP}M;+ zNW=)0Kwi6NaC0x^n%N|5GFJrzXnzf3o?F0LPj8;*%S($=x=4^Dnbuk8yE;#omKGgJ zJ=HMkMuLb)XvpI@R!RnekVsjQM{!d4!~=qo0tuy3f=FwV<(WhkCvhn(Nhw;bR;gUc zbBzFw=PfL)?A^1Ahz=e)tQ;{iJp7c?eEbf78&{8kpPm-+4Yz!zz5jcT>VN;`K%#Y! zB(b$x>nzJs%X#suu~z56M9cLCS?;U$L~$q1llt<)o_!apu&meG*05CM2_aC#sa;%Y z`lVngjtOZ52;GHP$nl{u&*j+@2M^9oht+Cd-$1p$$3TAK=y8FVWl;drKrFwhRLaxD z8Y84&HpnbVNTGm<1bUv+jjfbI5aoYb3qnE!6oSNWKG!>t(DB)|q28dssut>6cOLoC z%f?0qs;yR2Cu^$hGTFCA|zF5my<&ukudZ0kf9 zSFgQpG)wA7=h`3m*Sj{CtAWSmYPsT6{YnWk)9oI1r0XlM)>jeiw9|C@kwrZ z>^N(}V;rcI94B|AQp)vK>-)Df2YQ1OCzhhNA z7yZef{7Dc5*Is*V;fL3OjDUK{FS%iF(Bryp(vA8zZI(MH1}?bJ8Y+J@6pI|1dTCi5Q;hvo% zpSt<3=Uj2&!gBM$qbFdkbNT)~Uutwkn!03rq->=5wt;eA=&iK#1XvLxBQgpw4uVVU zhQ1Qt^85E2>Qy}b`-OkcIB5T-R^MQQ>k?k4hF>z-t>Cj-c=gLbjeDJ;lq3`un{Nu+SZY5Et+nSzUgyPn)tyBYRxzTJ#oldn> z8XX$!>Fu3cn6H0TD{-8ZgOb9$(M_Uu`^eFQo+}3W%l`g-j~zKNzp#XY{J=vJ#^`bo zDk%=!`%wSD;N=(Wd+^}V6H5(dZZ})5<2Bcss}DWAw6tQ`^!3+jrEqC+b!EBL*H{>mNU;K)nP z+ASnmV-QIQ5vS>~V<-O0Z~i$+dhM%zIB$0(lCf5}>c*Q7{L=6K&EccRdQ0KCTgQpW zS{8zcV0Ni-Mf>s64a89)Po zwMDx0shfWWYad_oOaqx>0Btukc;u(MIM{rUsdSzHsB`7iVTJyX=4R@$oSV$n)gR-8+Qqc)oY=vBLsD z2_cmbQW$Lt5k(S0DP^s;7Lf?qZV~lGOI~$x&~51SB4bq2{KhF;zS{fYMduZxd7vi1!#vY!I2FCi+7<_7nzM5NE z$-~N_+1Blkk!C&xT9 zDWlLP2f%imuBpwal0GmnbA5+(v*J$_4V`(4Gq`A(r~S>r&=xhK1x+Eq|w?| zx0C5Cw}!!5#++@M#aWgy8%H|6=W5H=Xk=hx390OtJkLiZP@ICTZxBLBqjRG*7YhO9 znXzbqgd^P~N}m0!D?j?-kG}W4|Mc6x`#beKThG*;W>lk;;*%?DoeLoWSfFqm_mh90 zx$!M;d2`%u?cB5Pw}0!mwr<}Z#c_eOhvHGOmWZ^r07eQ02-+Aa1QA$fMPw~2CADE! zcuqiHz5C$Dzwos^yM}-I71t+u-fYGIOn|1~yfXlRKpNN|22SQA^DGiSLW<_G2*pS}J5Uwr;W zTZRUfn(ePWH2t-M$C-pi>*D%rh)HzV)&MMh!)f%HgTEo<=DQgPPlgGlXG$oI*yYhiM4j`zI~IMH?OU&0TjR@avbNBz*@0z@vF5~Ntxw& zqtTe3o7=Kwi|4w_D=R?|xSqEGlH+N*|NoF%Q)mlsydz$p2A>|M8Q?t*9XRQS2LQn9 z#h_EEa0|dlz+i&FQ?6Tbyug2TrK1P{049nq65+WH;%~hyLcVfs-=%hETF)3vAh1vu=cW`eC0A^dTWuI&(9R-ZeT_aYckc z+JyhM0-v1IR}b;e?GnFqlL$j!BOl4L_eV_x8QI&n{LWoCN$p0D34Jq4-k z4Sa#YrI$YcWv_qug+#MND#YyU`n=g9F$zg21cDUkN(x+bi9^p*E(%4yuS(^>ccc<5 zB@h*6&FhckdiCz{5dy$T@k|7ylcc$I(2oGYz?P&!-&3w5d`~)2W-?S{`#c#2GSY^O zB|_2+41yT}?3qhS3xF^`y|gmAR^1dSCBvRF8kS0-AYcn7 z7va$4?#m8NEkUEP>IRiopYA55PYUb$#KaKDVH0;6A-M0Jbk){P%~%DbcX)*o9}nO z?Z{6az>@+2GUog#&wsPoX5gmhBRULFc(DY58tw}mmq>WkupQ-*p#HUX!w-Ui!GSc( zXXk$wtmPz0XJ%%qwQ{cWsN2o6#8tv|99PM1H!-;uu8N|rKvYUeNx+%@DOW7pR;%s0E&)oS%@gDG`YK7)+gl|;$4{Ji%IWKrQ_0e9 zG)8&)`WypGln$yhqzf1UGuAohPg93WIZJ;zD_+e{y#APSmT`Wj6~9L#XT#RY0{lS8 zMw?t)%>ZOA=2@PmS*ANAZQMzqR`Wa`+149N+8Q_TnK%av5|rbZEH$8qMmI~pG(W$P zCP_P+S()XjB{$|Zj) zgink$Kr#W4C*nNxaL6Vo(b}=WidWUUvO+YQCrX2LADVU!8q4{)L~v-0K@^&c;1K zdhN4DzWT)uChpyj%$~KYS`wJWdAEO+FU>VNoi*Qatc{}^GwVBSMNX5;@_+*B{=^vGoBXMG|o~cJq)Gyq>{gl|cJ*`Kx z#wsQM?Mt8E{`sS0m90&kPEhz0!H$on$1H*c8v|pC`O)? zl(J~8C9r^w>n0sSgw%jFN|l`cK#mU%x1+|EZR3e$w3?KkDHtw0V`IbU`;-|50+g8$ zquV!+KQeV>VfE$LT{?Ti%4#P=iO)QD`{(X_xJKA7AYogs`sa-g96En^!U|Q;!HU9` zgXk*dNGY9f(E<;_37(F4#g=t?=2rxRbdkiH&M75f@OcQfEp-cK{8+=jIr%jtbvtseJ>EwHA4IBX(#V?J76J=(zCX1 z+B(i(d-Mb{n_Nq&TxlIgGXWx5q^g81fiAnY$$ILIM*--P!rY##-~dbN1!AJ3ca4 zEmsy-SE5`zdhmadcf9=_Z~VodJJYEZ%#7K&xuZvqmK;||0RVsU8~??tmA8(MzVd}v zwc4HLS|^GVtu25Z9O!-4-c7rQdUlVOXyHWKY-Yw-osbao_uunBUVJGzSI#asqd4oP zDF6)jgj+`kw+_{IY##H^+Up;CY|ljR$8TFF?(E*Z`}}|N&j(l+CEwq8aLkr`4*)pJSPC#3_cG`>xb@O5(V&vg!bj4fdNf@3z}+p!V;re)9d|pWa>aEW;V36?x9-^1-`}5Q`NG0n9JgEDu0nU9zc)+VW}|WJ z$YZ|enwoYzkEGl@v8jChb4N#p*IHdyN|cI>F~T4SA|a3v0D%hnEHiw)b75cDJZoU) zK-V7-I5aqDgy^#;<`y{!w=S;KnB3W=g*nr*Zj|fg^de^|3#;voS`nU_#Vgm-I@Os5Kx2*7w7S}^ueOrdBvGbFl`B<5 zPV%%HMOm&p-L3!(9XD{5A^^6=m|W*^D_gGDmm2kjW_@XKIf`@7cm2={!w?u8NA{FU z1HC{{?B3C6PArb=tbEfmKqJ{?mX%e3$wd*u|PhJ3$Fn*fCcL?Bn(nY6oL_mxaO+bwtZ(`cIix~ z{H}Hu{ozZVwfEvthu?eqKg-wdAUkK6h%kw>DAgTp?s@3Z%g@?6+|v_sx_8&e)q5sy zxT*3lx8C0+D6JcMSwM<_7{Cp@Zx1lP0}SLM3fy@9^xchh1Tfntj;|Kx7sfY@7mDtP zh=hIpeQRrL#u(4@vMkH*9;9P|`X5ay{iTT5AhqJo^tHeEYk8`%SM3n?G}Pp9|Uhr_(olz4hGJ{qWoV;{Q}C zliKJfSMLCz4iH&bFc32cgc^aekPFaYEr7+IGEFltI*>2tszVqMCk!b-f7imIfdviB zP!-@Hn8MH+tOiIKVut7>Q7>Z%2##sU0nT-xUqXkWDj+gYA?On@A|bF)BJdGh1Rp^n zEa-O3$0h~HZxiZQM8-N}E#S%4+6b7kw!i^7W}_KY@f851HW!E+7Wuv*{`(sR3v`L( zw{d<9R*^^OXd5Gnrr(<5tg*@IA1%!v$unuJURpgI=QHIn zU=8FbZBPIefJ%YL3|VHC%zRI!X_i0=2`J(`?J}YA9gC1AQJka%gp4yMX0z0kN^Z9s z#a)BekE5*8>s6|LoMi>kZE?QU(<>cUWLZk2kZilt2}@r8KraC{e>!WOZVZ%L(t*u?&FBO36aX9+{mWaC>(!x+p8;RKY5N z2&6y?0RHNYpS}Ce2Nj4gkUc#m*HJ;>?K^w-;N(OuMVB?8FbGmwW>FBig8qF$|9MMG z(L;CLx%H(xe|v{EiSqdI#m-gF+ghph%+1W)^rah-D9bVg)FzkGz3;vU@3{T0Pk-{0 z@7sIUFYqb^@o}gi6fd^IJHh0n|Z^MBU13ReB^p!-ps@IMs(*mDdeggmm)U3yx;ZbK$ zv)-_VM?jn1vDhTE(eNl|J?0F3KNugK78$TWe^m6MNUS@QNt>mPw zf6A#vOq(E87MV?Q^~bgbwdr{KF7cwv`p5g7P9y4cn%$M9M-D9h(-&ba4>vojum6Qt zUA(*ZBk%i{#57riNxV2*iFRMIH_yYq+W7SS)APsHCiibWYqz&J#g9mn8fi4lE;S>t zPP=v1=s;tpnHp;yzq)BtY5U;lNcfD&f5956wK%SZD$|(&Zg<+fmFke^ZyGY~ZcCdu z%`mE4sX#ftfn;#Nzw?pShia+1`I~1w^O%vUqlmNQ>= z<(hTcZS=iO+cw8Z($OtJWI1O7e>ycTL?A#?(h31eLE$-XLHRBS7_8PvsL`4~G%@_x zYS$I62F%lJz!N>={Tc*HAVfxK1XxkJ)3rVW57fVD+1%r1iR93(>Nz&9TVR`c|OU28Vrf0!eJHQcQWzzSRl02Q9z z0Dz1ZLFG)^f&>}3<+y%ekrLEJ}%}tVDfjF=G=1UMt2d$L3mtP>v4t z#M75YC;=*e8?!0D7h-9#yKBcJ5dsM1JGsr{IB7I-*W_8pjy`6MlV!SRY|!(9JYTKP z%%_IK2}t;6*LhZh!B(oSU9=2=2Q_?~h- zUk2XH!h+|hIEs~W99B~^Gl0-jt;TUY+l|vGp4c*fDW$)>yc8#?0Nyk{;)XtT;?+hw zGug^&BaZc+Z4=6Ho+gJ6K6v`MY?u_QR4Re*=V`XqYVX*#wb4nR{Ug74--Cxo%KllK z2db6I{OVex*+p_n4&2h{w9@>X$-$qv_JXU<*@O&PjsOtF@ju>pSG^OB_V=!}yYp)u z-}5kk%Z3Mg8m&&?yDxju^{;>F6)(PW|DXNyO~x_+6mo5+AJ|j1G@lemlupl@Rtuhj zZ!5OKStfgXp{G{-{^SL$CExEp@Zg#DQA|PIi3yZqqwND2n;e_cD=Tcw1`{xA$@krf zO;7B+*cxMuWn%*07XW!2={%RRN@&~7`r7J$k^mxNwsv`buG$ljatua6*zLezb*tMglw`YECHZ>+swZk?~;-S7iw&wUFk9ML+3aL|Yd@G21duo-E zZ;YOqoz8XMKQQPpGjlBnF4}+I!qQ5k+0Ia8MsuDE5{M)i2nsH?WNQKFtZQDFKm5Ue z<=$)Dv&)>Iikmtz z=ei}Qf|lzmE1f7Z!U_Vd^KRU6gm9$H^DIi@RyS(4JDqkEH{-OEV$QjVvZ&R6t}EAb zm2ym$0&}HSW|vrlDx9oR)89KRgnKe!y+Ql`;%C0_{FlBk?sRpo1u}vKp^UYH2oW=5 zvm|}y)t7(b!ykX|yKngIH~nssrl+_~Y^~!szyQd_XhaBQOl}QZgfxmT*tT_Vf4S;; zKX%=-{@}x3ZZ_&eLnCRHT5F|$kW5tM{ffhrQmy-S0WhFtwpRO&3jN??U%ca!H{EjC zMSHHf^tvpEW~-|lAySf0ct&vj9|p@%cyJkD0hGtKQtJy#p;Cm%J>_6aZ>jHsi$;gW z-n*phk9=M{`pD;(MQ80p6EFVRvFax7l!Q()196fqH@gRqOvV1_SwDP#O{KrKwzxF& zz|F&={o;#v+;ePx#CMb93k7Nt!KO$#K)G540JgT^K7O;ofD*fh)2wb#KD|57cPH4g z3@O~21QYj%M zKv8vL-}iH^Vcq_4UA{Yi%Q7jY5W-pp;9{)qx^CgUXRK9H7C*#syk15m0>q-30%9SD zSgX}M&#Tw#jYebJ)~(D;PsC~}YIxJ0MDc~6z59#4M*vsw3rL;yq($iS9G=!|aJ^60&HmP%!R2_iSFq}%OwvR zQIc6+PtU^{#tBLV5ttD-oJr!|9&?T34^{Ja96uv~BR%vdk3?RIO;_nS8wPmozFGil z9prw;J2aO$qW0#0^OGc@ByX0u=Id;r)_g{P)k50r&Nhy&9(w4@UwO})KRB^x*K>a8 z=YICTD-k}ahR4j-7$Kz)aN9j!`t$$s+v>qP{&r94ywTEpSO498=7!Au-yeAMYk%~Y z0l-=#pQIgf6952o8CDHUYltnB30w(f0RTV@2(Ak$@zIWd&6@`6CST2AkU$bxfRv$W zU`~Ss@Cb@jJpxDsK+p^fkTR@Vn9-0j^b(9nST*oq1{Zs@Td^cw0O)5(6)1#`1p+7$ zI0zX-!$JloweuvsjS9fuWDww}TT4t%Pszd|fC2W&xwm}+pHkj~^#lm`~W}g%D@7hb~;rJb_;Yi%wHLmrTOZ7^HyWCrzdf4ybHEU zgjIjf>C+b0sX)EfS!lIpf*KgBvrG^<*4jk3(ljL^a+I;g8fKdl5in+Hmq@ckn*$4L zY!ani03)f?iCeDgOl%sSIy&84YZ-%B-F8PwT#IB^q3dPMW`jr| zQW#e9#4gS@ShE3(5~R$f#3;_n%5xQ3mV3^=Z1d#KZkjuiEL$*|a9uZ(3KS0jA`qfO z;7V}Ok^m{JA}91@*>_w)Qh*Rexd4a=VV!k%di4&9io?mY#6-M|y9Ly+WJatqz z8u(Pj6lNf@Y06rkv4%%vqi*Y-yUxVGL&wd38;z&0;dLK%;m{aJ0o$-|50ZN7NFEW{>dx{5 zNoN-9Q%aZ!Y^`ugLGSL-qHVE*4{ZqhW2C4Awo0|{Z-U^$x4N(Tl}&6m*aZUQ z%$Jl(mzJNdOSAxHLyqmgJ1l@h_@bVkGcHj~4xjiL1Lt|Z+(}awoW<_eJNe3RJ+--0FF|n zFj!h#L_xzt1E)@efHIr?aP66YFX(yJ)1-qfn+?lv4D6yhnoPfS@rICsrxN%Gsckwx z+WY*i?xwcQpELkMK+D!8=NE@wb@EmFq+KvTG4J@!!yx|ygGeA1!&yQ=HWq-H0PMOV z3In=9h|=>*-rDM_HJKo;mdY~^KU&UV=kRE~(Nqpg5Ux-V=OfkX(BK4r8nZHg0$aAh z7)Q<7>8Y(}owa*xWVn=$j|`#&HfDTyWPV|$-dgH*yQQ(x@X)a9IwXaX4w10HmW{C_ z1TnBRRuYmBQbBp5AKT?DUCeyy&^@=y<%dlCpo%W8W}6?9K)U<=&QK3N*lzEzH*-~uQXRHzN@oLmBao@ zX`nO!RM(lr%;<=h>cR=6v`(N%c^$~IGVonrzZ2FTEhchFlH7WK>#f$9g5KpQ^|c2M z-1pU+9;Ros7UvM)>~Q4g!reLWZ>9G<*Bf8fiOZCMeU-bd!`eq-fp1IZ-ze_*AMQDW zrSMm>bKn0*AOCyb|KV4^VtP;S&rVOi8;)*buh*)th3!2L#Q*w7e={&V8luSa{P=+b zs|)k-i!c1;H~iNn(UFnMFS#Trm8#|P+2@?|g`2+u07@xqEfQ(1YyJIq-gD1$ua|u^ z0U&?mN$fWZRA*?(a>e8|89oxf@lL*)}n#YCV}H zlmZ2^0YPK{`nQa2n;5)zYW}ikU7n-!zMJm9?eO&F+sEFsxMa2P5f0BTUblbu?$Q36 zjxClv4-qAj11x}*QpThR-!ub{0SQfN@4A0sCG8sA=>4J-?%U=)``1S{e7`V*Q25xF zTgPr~JEe_Fbj)zwZ;bYog*M-s!2Oesp70%`2qp!&BdPUZ~ z&{YcaZdU(LhVPePb{67UzR{SHVy0^@4NfpR5P<{Q6?pM zQq;oAXstZGKu)^sp*9u;f|4Q>I#ehGBih346^Q_e$q-prq6I<7u3$x$jWGarW2DXZ zQmi!_c{GqjaVLr@rNDP20vtXzJ6C`IQkt|@m)DHR;v|*|le9ZG*GRHtbY%FEhYyxY zrEL>quA)Y(O(>UE*PRKk!o-ELR9(yx?~ZX}VUB-d3obqT?9UDtIz*C|y( zW9;JmLXmzYA&*bbR4cWf_Q>-AUs{O{y>_E)ce=^KCYnVIu7h9R_>l-+B^w@v>$rrx% z;)&ynjrV-{-kwXb%Ehd6%_-?c0JEiu4|0V(zHtCIcd^0S>i~M zvlJe_wLQX7kaRe5`Czk;@0T_Q4*4nO+g2Xy421z2ZWk9e*#2kt8VkaJY^oEIn{=Cw& z&|bwXpBx{nw`|iE*ljD_s_09tMITHNlYvF`E9y+n4 zkJkH2>i1vz?4B?*))E3B8k;i%(W#t1F*CEVY`_2tg^0bC($VRKzx%)kK$xF@%?tW^ z`dY1yHkL>_%0Ut&9XN@Tw?%n^izFRrW{rjJ6z>`st8U*DC}*V|PYm=tW9vkJf7zMX z4ge=wQXhXLfh&Ju_4!xqd-vB5CF9;TLFOC;*(iaPZ!1bWcj8}{kEQPQ!tXbNwI}7ey69V8QJ}6xLd$ zRGOv*53gY68Dr9P9dhovZYeAuxcA<%vGE`%Wm!gadI<-F#Ki;2>Vui|&*;u9oNps_ z|1DhP*;{|&jdzV;b1sd@-LEX4zJLV=W&*@@#>jg0?$iS7kSl~@fQP`0j6gt?r|CdX zuk`(9oO+&@=5~I5?y;j&^>!=M#zELLSR3i<1p#vl^}};Zac(?EEiA1r)|>m!*<*xr zj*Pa`;p04Dv>`%E$ZXjfLSSHPG#j>vahwD3`t*O}DKHvBWQJ{{Tc_N?da`1S+)mC? zRDb`f8#@)QIQ=_m_efA15QAkcy`F#g^zz#tUHpTK`Z#X?>q_af^PN99CvT@|o+%;1 z3=_1FYqzVlG#)8CG!$=v;5p2T+0>u^+3&sNBOiayM?O(2j{k=NNf8Ge&pu={THJH+l;Y9Kxg9Urv_pRbpw$Fp8x?A zf&=IfJ6NmGs)e*=Vb$=Gg@%FSIgCgsAt(e7p+X=4N(2Fchu|WX2wgOUP!QJ*LqkK% z;7Q0C3L@LVtU4&dNt$7C(s&P{VWDoJZNYz9PzV8nWgw!|;J3xvK>*9_ko?i1i#A-K zAlTj8p8mkX?LMie66^>uGU@ewXaCsH#a)x0NoLqG8@3z5yPrN7SfD$*cH?~OD-M;u zRh3Hw)SOiP-RDpIPv#96Fbq~v>A~5*xOe7{zuoPp6>rD+6Tio-Pi^0j%FIeTIZT%g zJpnf?di>b&!(BmMZn}NLP7pXc&#Z+`)M29tRDHGMxB*cVgrZXEPhzvO5Unh9mvB7+ z7Js?qN`de=8<_+b$N(k=wg`kMsVJe5BN?TU!gZujO8BnhI#LNK5ClnqL_~x{g}6mg zxk6%uLI(e&CTsDBiD13fhL1Dz2$4`YQn*B(BZLqIj7lIXVj%^i0cN(EENB2r00wZK z?D>RNdb&i%Ned_hAOy;CgNRB>qrqDJ#D90dH-p(deSuS)KLjQ~I!V0yrrJCqrdnrN zTB%f@9*_7v7R;#B+E>5Qy6X-KgAIysMdj9Y3P{QZs|%SoR_AZ{$1`3?26PlEb;bf7 z;__!c1=en`1w>9$Z*uFzFTHVNh95IZclFrkS~Ir@6>h|k17O&C)gQREEu5!Mntwks zTj7+N(_fjs^Djt+Pqm6cB%QT}_q}G*MZcoc)>9b3j3`akKKzy6FliIRjfHdWmzU@E`*cefwwMZ^Feq;K;V-McHJayu%v(F_Pla5>M zw#_r&b*j~>v5}l$7J4$!~w?vEiY!M*ICN z&cA;Octt1&{eaw!3U~nP0_)bW{T36Hk8i;~xz{`S1pt6G?6_nM(?$ta6o2fv-(X6^ zaK?x0KPH~;wY<@RWoee{oGr9Lgc5ZQ03?;0>%3G7^E9cIA@D?}+i^X=QmI67!ia3l z+}!Ny%1XP_PLinIYU(^A;3P>1f!Qc2loUqiYmG)vt-8Ft3=BaKL}}tWPLih9Y9S;5 zWO-IDg;G!yX#h6H5?O)B#((5&0YEv9>&VsBRTLzI7#bV|z7BO2q_52->`sZ*{U-T_)f)!@(ZW7|DD7>es@BULZreShKyi?BozwMnK71%)R-4m zP?lPa6=N+SWw}xuyQEq=_WYchNfKVpwq}A-Kt#ua`)(#zA{n~wT7H9i5$r9v84^GbrALIIIBut@H#sr1uxv84(<{p< ziE4juIM%y!`&gd`!@UEJl(oOZb~T;Kz|!^?H~WfjambPQ1YgC zf8m;A%jfnFcoF?c_x{(&ZAjQ<{Uc&i4*ZVrvNzK0UykSgseAaAY~g3TUFSOk+hh0W z|M$MX`(HQAUAJYfxBIeA-~C=RBU9JV0jJY^`-jx)Up6v2a`ecNxuvBSyzqtBTz$>$ zciwTdTD{_mD}Mk$8wfA_-~5(!ZA|8cJd>;y znSK?{HCC68Vy6-g?AlG8lygHU5F`V@`utv4%dA}Chr)LW35hh)TB|cY9JaG;bRd{G z_Z$#ms;v{2%xZI}&mY;o$)F>IWs)ou2n`G@AP4)5OMlM$(pL{mEwmg5uiP{G==AXy zy!^SjgP-{F1KaurYP}VAxaZo7&ieXn-Ez)Mh#&!^0Jl``#Cq_X_ogZWK?TIj8y4_L zu=2h^4kd$rO+ov&XxfXij0`m!pqo2L`Ep&56BoUAb?z?iU1Iea8v04%N(dr z@wjW&DBZJt>}$6iI6l3SYR%SmqHet%Ty^yi-G6-U`0*L(hnVHo_j(07N~M_zmJa2Y zWJ3WZehi*3Z>4r*dUk4Nwy$^9@s-wk%a-wGqj~c!ccyvVH&9MG z1U8GJxYcT<`?evX=X!D6(MFF?j5rQ$-8%8$!6S|%GLyCH?acF%BniT>+iv%igV8OU zX66>96abj#I?D=b6lPh<%*s(hh&+!xuUrj1f0HGRm8EK}@7!~CA#0s##}%IMF0HN& z5A+{9emsf0Pj_aB*4m-L!5{yLAAi&D{4NR6Y^(voXm9l=pSAD)`;Y$1*N?vFm9PHr z$3B5xpvu*7$3_2q_gz1C)z-hi;3b#u-1Jj_`GJdfOUef2}PYe&pb>qlYhi#zl*bl@~n!@>c7fJMNp>JJLJY zKfKn+%7feH*6w!wyxD9Imd_iS*fzVgw!uvV%bX*~#lw%Zr;m*E_GPa2U74jB0Sji6 z=S#~=Yiq4;l+P}&wR3~Y*)lfXCly*Z@InD>wACiHHaFIE<8GW~ASGm!f2FBKinKPl z7ATbyDs80@N($i!Hr6DmBq>O?<0Lit&~QH@7|X=#4l_?W+PT>yU;NDHUimxewg=f7RCTUZ+$}(xgb+X}zvndD8X`0t+fdzW+$G-5z zuif>mEB8O=%1hJSG}~=~)`HP&E3W4#_n`+5?BxPb!lv*(Vz7t?NCW5Vl>{E>3(Hk6 zO|y61bkD1QTPg!sTv~2-H=Q-9-~7hfv#$PcVA#Z&fA5N%EwfcNZ>gU5 zq!+e6{a5AQ+FORM-Bz9*?Hg`a2X$k1YhT$i&Gwg%FV-ahGxk~I0u1jz56(a{`i4Oc z%8*1r^#5Q1PcS`YeC7H!baq0VNqwmB zQ+w*Sr@+i7WhqbnR!o=IAy){9EU+-~0=8Ot{?a1{mp}clf1|$F1b1O!?csawbbzBI zi>x-xXrVi^G}}m$Jd4vrYhz4q63f<1P0uHB+7kZmJ(DDSju3hf)NQ_hKc|S&?}&iph8eWw?@LJPCyVMR0w(n3`ku>WxJu`LR zi5bW79LMkLQG{mRWsM;%*^(2Y24zJ2?YrNCL%K;QsCs1VOkz!Pi%k!{gIJ%vdGz-&nRU^Q%1z(bTIpWOdwof?w? zxFm#<0)dG{xo`8y0|peN)3t~1{_@)5p=uE9+Px!=GEQS*<5Hy=wboqMErlhECQH-Y z7%9NUi8Y-xP6y7qX0hdeY?*MoQT^TT`rB$LJo?xp^NWq+v-7}WWN33l&5wQLUyjes zqSB6&YqBOr$8k<-=M)mc0055T6bK}xL>!x`>H6f*gk}5vR={HhTiC^(Awl^cZ~$z9 zp9)IAGn+GiF9#yls+HA7vl*N5(9wngKuDRTX>4)29xp{{ruf++c250o|xEe))xcK|j zZ!Oq=j{xTP;rj}I08uEZm>E$Rg94C&wKams0-zw}s%|?9{jAngSxsA6mU~{QZ)BqN z@N6Klo5Y?Jq!bf_<*3xCfJvz~W*{0fBm7Zgs`K-#!{Onx^4xYPz;^y}^4o)or5i)mU3>W+&=xNmOL1_Vo2$x^vTN zlDN_(tqqB>fkBIje@*^>_WnEG((5V@$Jg5BZKvOU=gys8q#5;M6-$;Zxpz9oU=u>` zI3Xbg2qa%Z3rT*V1qXw%!C+i4?!vaLYV|J7XnMW<-qYW*%UZub-aE1^jbtQ4h=rez zKKh(F_nh~#;TF>*K41)RIsll)vkJ{7>$+_`Lh?(#8e^wjyx^vKMRg|hsj_{4w zY?&D~WfIk<(blb7Z~oGke*7nY^0lvib+uOOcDp5=LP{&fMf9EY<`nNyx)1^lUp{glp0F6qtAbmdQKC$ogks~{| ze4Ca*;fj)-fw!Cm5?F1HOpVkZzw66azU-n4F1hfYM-M)6YUze+FHdv#;EDNGYgVqT{!g>|CS`ju1F8V<$34AHF-v$Y>n{xXG#!+5kiknOm&97J1jtH$gGzIJhc<>&GokWjVh{!<*$X@Dbu%J#HtyF_Rh}KwT zb1}BG)`q+amGJFvx^dga+37}o^TbFLMp7zIe@+ELf~bcw$XIo8 ze{od`rL`;yuqF?JFbs8nIBd7qoO46~#1JSM1X?QRO`}nBp7T8SR<5qBjf^x=U{a~| z`~6d=P8&Xa+g~--?4Fta_^3;j1s+@yHVg^DI|d3B;?f zx@z0Dt>qy30yzymRgPpT!ngUR_f3ucl z>DYLy8rAZlan^^SrfQ`w5d|8PkF+*ibIsL}fcXPQ3l-Js)$U4n_Pq0_##%B6rzR%e z{$1adM9J|Zhtl4vEs9>JAV#H0 z$k8zNEa&Ft5WtZyEj2+1!QhF2e*qB<@iL7i^IbI>TW2>-jU8FQy%>#(Y&=x8ZCgXF zdNw!xqx(*GcJA3Jolk0m-4|{i9}6nA?)=1!%iFeZthXM%;)2=kaCqOXx7S;*p59GS?VOo9)6(4uEf36=A;B~5|1#esP=dE+ z;bbcgS1cygO2lm0h6-8X(7R#3H|Py!W_N&YK6&D3oJ5ygc1f|c+C4cxH5CFn<8q~H zIuu#KgW;ek(xlpA#CE&if6ueI1BWv*4rr{=oEjNX!bfo!2eAyL1QZM`WSSLZ&C&br zS=oEh$kv@eeAcHxsLE$PdDHc;y&A83^@xOQnF-*jK59p{8t6|vu%8ut^v*}FfB8kPx^#Q*cmRnw~0CQ|G+mItIWOr*HMV@yS0W5SY%ATGT=4v&<2td4Bm7SAOnuH*H;5 z+&H`G^!x%jh~gm2jZ{ThFpENvQh86zD1q?u?06*vW{eK6~^Sfu43}-59b?a4dU$|3 ztbm9-$Wl&*387?Nvp`IT_VZspc=>rV+h-=o0hJ1yPn8z|gc3ybb3gI#Z@>M{ANbJC zpZNb>wYd>QI^xc;=-ueE&`LUllJTVn>Z1$p5APm+VyXRezxnTf?ni$aK$9mF@O;&~>j7>77*`PUy1IK!LQ_CpU`udQ zwkD+yf6%Qu7!dRcx&$j8dIX*!B{)BXa|7slAbV}f1mxW0vAc-j#vnxuy9Tm#wwu@0t9W0 zkD^#28RN84tR<6_S|&;Co%dYG$U5syQ49uMms=#I>k~?h)EXlWRJ-%UrC02npPx52 zlLEcV(rgf@B#L9AOezvK=(c@Q5ju$0R&oGY3|CqW))7ojwl;6Rcz$7S?o`(lG8?1| ze{-vE`|g)lf?Dbbg&pPze^uAOuE&m5^nD4axvO2$TZP z(C^?3=WhLE13=j?x<2&zGj+AEDv}`rq7a~@1T8@cBBD}mQ=tsdAUZ@AOdtUr2mlYj zz=A>0*SHx=o;R~{7AjFh!~j^*i_iSJfAF44!Dpp(DF9fmdd@ProY`dnQKr|tvr-8m zg!lB-1-a*ZJegT36@HCM(l;#1RZ{uii^JEcUGQ9UKO)fIE5XFi5x{+=dVKZ~hR>9N z37;eWJCp8st^umla-ves{n-gJKHFv;6#_y8K#dZGwCGSzo&XSak~9g>5Kv+B{=lpF_6PQF-?8h?+rRL^ zzxdFJ<0s#E<26fjr>4S@#f7CnN6prBi2cb)xbVX1_OQSIiKG4DP-$fi3xNRW&oCXm zC#_{kzV)66XplK($MBLX;C&PSf0w~brZCppp>a|rYzhw;Mf%98?y2ML%{yntCga5; zYhc(KC#3a6kYj2cGF3t)1W6WNNf}4D&U_M50C}NRD3GH-k#htbN1=0GNkL3N9IW&3 z7zIcr?9dg3v(_oCsH6ZhFcBb0sf7@QG26Fno?lozJwG1=!OYauFiYWVf2~H}#Q#kY zv2!d?I_HR303rxLWJHhbm~;?IlNG&QZE}Rc>oAy_*_3lsAUoj)MIO|uULYb!#zZAl zI8_g&46W$(3#8l#Cu`MFz%X;3os&|8t%j2dRmE8B_lk42?oQKUm}gAniLJ2$1qxJ3 zl2~6z3n@{ckit1vQk(NUf3Jnfsb!t6&YNPnH-zDkB-wgB^q~ympuJ%HxEdd?Zr>fh z;&si>fA;Y$_0|m+jU8Q1LHMHE>v!`LgW+G@cE|tx&ld)|B6K1_OQmnPV$;|w&)swB z#WK)lwOeZ)`_z{nSQ;AR5tSt7Q=L_GTSlUIzT07?ZB{4|jaM7E4PsCFtk{3T&LE^=)R-JF1es_{LtdAs{jBbilu&M#}kVWJ^a8IVCl?U z%^FYwUJI=~4;_E|fBlzg^ThYR|KqsXc<9l+8@DV%{9~~oAs&D1@rNFH z^k;td=Pua0XaD~Fv$L}RfQUy=&-K#m4}Rx&j+{K&8T78W>MGmqzut^TZ@yyV#+j!g zi2@jz0F_0S2ue^DxgJ%@diC9ULQS6-+5(T0yauEiFe-I)JSw^PlWY)?+5%Bq! zU%d6w3l^4F_doL3Lx&c8f91yOF5Yn2W)DYQjK3C5ggNQxMP#(U^KEg3CrK z2893slFNlIe?L@-T0(3*+;d~Ql>0!P?vnll!=m>yfY)oNBW2#b$;%PeKmK8V;zAUc zFgbu1?EN5w2!gc#9u|)u8#>(*B3O9RCEUS44lU9fV=0 z-;;r!nixB9biouR&oTfILbPN{D#6bC!mc`RsIJ*wcJA(^a_+;A9X@#EM5mk1ZfZ(N zD~rq9e>YAaJ+XY*%P#-oZMRhhIk2fzlEEM?iUI&Vd4a+htFQEkJ_+K~g!m>sjThaNxRe`L64`*ak@0V)md_9u>CymQ0kMVA%} zr{DatbKdz|A3m|z-aOOj%rCATJ6&UcK|@_I9hszd-YZ_Qc5t8RF7(&B-V*@$!T`W` ze9t=&h4)UrP@3;I6oddF*qGcHVD`*TNS0_lg_+&B>ASx3yFUB5Pkr$VpN&Jkb?fGZ)AMl{ zR%#U@qY#s*A^^PeDhNO*se)F$VR8!yj8dSGDqyL?AZ&SDYp)SAI>GA=q=X*CnI7s5 zO^|ZYPaN!4HbOVu{qk>{-4!>R@ol%>f4Be0(WurKX-0vrY@VLkx45VvEQ@v9)GZK=Ar$!*0^!cm;bKS+Oo2`v~^ScBab~?1$WsMf0y<; zgQDHrz2)4Mem9ks*2=tn^nX^Tu7PLY{|qR#Y0s}7J6cT=1vEC=)DG%lXaE(FDZ;HA zH*J~?at=1djZGV-0wq%~BZW{>f2u$U768IHYDIeG$wwdg{NLU1L%Rs5?Am@t#Zjne zb!p*~AN$0+e)I>sYn?FCL7<&=QmL{iA^|;7IvBp}vWq^vZRa2V=?8x6xBjaEloCtB z)Upwt8N7GQthFW<&bg78rgok8Q@{1Qj~{rVUTHpl*u3I;+l)o(JW7S@e`N>KY4;e>6Ci?8dSbHm=)(_u_U}GhpW5)+8{e3} z_q~Fl04xA=0Eb-Gg-XsiA~Jwhs-31!&aZA99m|XC$A9yEzx+er`i@sI917oX(Z%Pz zX>n5%ZC@(k!8>pcok!;xe+eW@H~7UjT=4rhAN-~Fzd!lzUop;r%L0JRx!jo~saR_y zz-9qcpgO)d@6B(hj5NI``GO4azF}dl)j>d>fkmxax#W^dZoT!kx4h-8yLO%P;6o3_ zNn)Mv4~Bsb;z*aYxif;U>nw0kMV&J&%mE5CwpjQZthfB2828eQ9I_0LGXs%ZxEel7vBU?C8-T2sX{mrfFI}0?(ae z{f0rHH6nWQ#9m2RRy4~oNlFRC%n$@>m}mPAFZ2h)D8N9fNK08w`o|YhX>>GEt!*4@ zo;)?W*6FpXiAKn+e`STLKJVPYAX{{uKma002~iYGH0oP7Ov{r;hg)WQP5@CU z<_Aor-W>px2}>dt2wCcGzURp5?(EWYH%SoAIeeOg0|~Z~MjTUvce?qm7w%=j5kvfBE8jKl!2HfxEAg{?!v< z66+#Q18@L}*dt?EIYvY#5{S8@tu?Wk`u9C}*IQn@{pNc=`yUCY7{|6hxOD~yO z9t?l>3+`j{-CeJ__Cp{14_99PS|%X&Ups`@3jhGK5{3XV0s&}*7@#V+C165s98+`5 zU>FPFoT1Awf9GJ$gF^5CM=V?#!l;IVK>`E-RRL8o))eD`m~XL7B{&A9pd!F9Fn|UK z5gG_B0S)oMQCpdmSQi`$h!{cv62ZV%x~9uJT@ZvX<#6a54nn6zkvoUX90sm1D1kq(QzFi{vmwXiu82g~#QAdC@XrNp2phJ#aDDx06GCbdRwWc!X$ zXF$sFk%`$Wuec^BDmz65gQu_5(n{aPk}M|~1fNm5T!)vEq(ZS?!Q=I&10hO+-PuJ` z&xj==e*y|YznweMJeSaq)<|Le<8?2ZERDJv^&kZqB_cgNrDVaDncP7#sCi4qq9N-dGAf$Zm)G#Rvtf5eERMuYL#SuX)!O{-aY5l zYBeb(F`qs?*BITrxUjfwdi;&A-r1geu-e#s-$k82`u*P*LX&qWr1y@95W#z2J`?K< ze_A3y@ZJ#PXAj!aB;0F~htPN5*;p4z%{p zX|1IY#B8ipN(&*&q^A@@DaF9f8X;wEyHjobqr1Yr1$wGp8~#1X`iu2wDb-073CqfO(}wwHH0L#YF6U4PgoBB?YvfA73y zra*^MXn|fSZH+04TneGJmO`=+2xzTgdgu;+;BtlZ$7$k^@WXX8^;$89=Yd^C+<72w0Vbm>#Jv`SMp(sf5?5b%_oY|;K=&PXFS6f8VNbeJcJa+b% z|LEP@x9#}yZMUDdd-vq{WRfIh_wm-54FE9NXujhUe^GBV0>bzH)n82f;`>H7?>MBg zrxcnL3IWJM0-zMa0fOJ=k6N2V7I7OXD25&GpzJJmvUpk`oN)+GaIKWO0se6JqpQzELAPYc@Tk26fmr; ztTOT8)xnW&{=|tdKY9G*R9%1jW#?UYE#!hlk6MT*fze;ooPYn8L>)crHS z89QnPD3C!w!D5B^aVei<_dv8GFz@<}EiQjd$EP~(%1Q`V+ve5W0{IY#jIc{ALpo1| z3s+=ECO;;R{Tj#a{rP^D7VM2ie<_`i1HG`Fo5E)x%tjVQ!@>Pzu>kv*GN-^#=FeHy?%J(&Ad21kHN2ELlDN`2NF(=cYGIL}BJV z2?Q1*2$V4vxR@NRudQ{uo#9BUQRI0p3n4JiZM)O4wkV21NR{UWlizdh&b8If;!?X_ zZ*1Q(Gc_@~fA8S&G`H3j2tEvCse=b+G-sZ^_$;%iLWn019{Si{{GYd8yX~Cuf1AX~ z6_@PZa@F_z@_+fGANql}Y&`!`2vx=L+u!vqveYLbU$^aB?>~6+gGb-@pMLPO1s8rP>ucCTE%7=f52z&-+%r&I|42JAid_2or{m$ zam$A3>#n=5B;ozjT-|?s#BnTSK}4QNYb8KSA;T~dQlbz=UJy|d1=fMmGKu1I&ONu) zY?>_fE;632z&uS)96sVu7-t)HJW8rs$vBDM_O@@?vSs$uAOCnZ=xx|A8^>W7Dr2&& z*JJMhf8^xUc(qXvqeuuL0E0m1MN#sx!XU&jkUAui)k-7JEhqp6B5=$?2yx~P@r6r8 zt$NOP>@Y_k>W2l5Xv`$>NNc>&ictkJY4ukZ+MN@xxbZrUm*Y?$I21Lb5tXQkU5$CD@Kuf6geH+}xY-p+-M>P>h4=}hy=8(#AUtpjwvQ2O>qj!#as zu6nhYPgCVxFN3iqw|L^}-pD!SRe1XS&x``FJwIo%;pk{B%3P$i_qhsUKp^5~Lkd*= ze=LufFbD!s4V8A*fe>*V_xj6umd{n9Ug??Vq?aN&hnmP#qgDhr%ZStlYE zB9<_)`rcFcM}P9=ho5{@V4y(1=d%YEW?%Os*TkDgBsiDlmJpN_g3&pzv~1LpFF$nf z&pz^*iSguL|K#^hPE0=d(1W%xf!5ZTEGtGvn(X_3^EZF_;J$+wzUvV{#|PIL?avf7IORiOI>S4KrW7`R41dzdnxRJTIasw$?^rq?DFY zc}JyK88cX8J$WI7ln?~r;lqcGH6tUVGX$z6ha9J!Z`-1_Rek?kCV%H@4S28fqs^H=Y`U>xFVyVAz^s@4qle=H2r{HpV}1%Yd3&LHIAhu-xI-~09-z59XtjvqV} zS0WXMTM)*^Cbw_izF~YCVO>PpTWU3D-|^OWz2mL#IAum1dh|Chh{@LRI}4P(_T zAF`1s2nCiRyV^cp+EY>hyJX4(_Qc0Zm+zy-W|C2fA3p<&zu^)?wa@h z@DJa3?b~488&Al;e^=Z&2`m_h1rUP(hy>ITnqu>a9*e}0z6UDnn+O>}+rylLmVgln zp5cUr%OXf5NPqw_5kZK%8>$lE$plYKNOAzmLx^AiJc9rT0BQn8B@pyayZ#Z2n-xq* z=n#xa*r-4NIEJQxe=0&KAVLlVM&C^O|33ujrACyJa$|EVPzcW~luC;tON&G)ll4Tv z-uv7@px6;uql~dcmI`u(Qz)|{6^N(+wTO}g7_#AVo-U&aeWpmcN|NZAFwb-n2ZMgE z*Gp~gBdsFs41u*ccdR!#Q`K53?Y#q#q0sUC;^5H1PNN!5e@!JLQ#&VTww0|H4p9Ij zg8)D#frxNGoG6zfuKmg=DAWA7n2m+-Am6Dm_Ddpc1%x4sV1+FuW%fAwr zf(=hKOMR8>0Wu&9DWobr>)11TPlW6M90Nfa?=S)hCP^R|iNBgB`Yd)R0!XQBLBoLw z!4WRd$op;Xd)4@446^GYYA zB%)H9n*o?8D>7$6_~)0j{wBVOuZ1XzlUNtV&+ghI7N0O{%Z@4cqE@erj<){fZ|->V zR2PK`e|0cDH5*7(9UEI+T^$a(Kvo3`8JHZAvDSD`Ob!6F(qW*L6tyI2G-`1iwcFj5 z)m6a|N0HKGI$dUD?}flPiVz^r3jhcL$qddB0ES6es)#V4wN`ka<|a*tGc(i9)579> z90d};dH??t!+GPqWo8g4rS!zs81w)hv1_)C0d|XLZ`kg^G^eY%e^|6V`W5*6o%*={>@c09F zZ{9XhkH*75w_0PsQb`TSD19KSz?!+wWF;^fgTSaH0ER&z5tWpHFc^xdoncK4y15^Q ze?buX4I3g#A&io1&UK%>z59j7`d3^x;&Sg&|H{{Ieea(=`G!}&<rPZ^!O-N{FbJESfBs5yqVOcsUg(`6o1ufFk7pzGaC#=Lw~*Ks zGI?6~hzJ-kzx;wrzyB?7dHOZ_fwz9k4{Z8{&;0gBU;Z=i+5KlfG5x#$$rObb@C!l@ z!Jh=+(%ubV0a!4+8uhCHV4V&RPT~iic%uK_&wc+BTVM9jgSp21FOL_J|I{CTf3y>P z-_QI|Ak{sOJ@~-C{<#B(554yf|7h#X#!k2Q@tba1SYFw+b?dd4Tw3nN_~_UWscMa1 zZvg{DB=jhdkwJn$Aog*!9_p}IU6CN#^9$WaAFd3$qMBqVj(z&c@pE@>diiy#(U8?7 ztTy_#P$Ue`V7XQ*EHRxy6w|2gYJ*dxCMO9xTWh!b{fFt?4ntgLm0xqYtMSowZo?B9O)1K)S`?97M==HR%)O*=RK@89@Wzx3OG@_~=s)Tmb{ zCP#K`nwcDJ#ferbf3U;u;}1T1(*p;8@@?1L@Tyms%n_P+xG-#ZeGE@zBF34jwLwVV3%OqdGD^Ve(uB zI<6+QYE^5k0tEohxTTJwJ2!b8jf{>r z)2xp|-0{GZ7jN9#2u#>{%q0*{?XuZv5KV|s`Ya4)eEZ&tJ3808RF7V~bLR!ej-PCe zjBVUF^S}f5R^wHzCN`bG35JnoEvb*Sf11hoXu}KPJjQ`0Wtuf3r=!I0 zOQXrN-d6~a_BxGPJs%PdSqbz^fmWUX(M6E};6So1h#5S1AypE_05}|W^L$XR#Yw1v z9fJe(NgUQ{wJgo6)#k)#%X)5YnAtWx-CbTzhyD7-aj|){QcWtgC{7|JF>?fx5V&4% zRIBw$e;AdCFhKweTsFT0oUyI}sdTr~{`5!x_Q&4+)6AZTgp^tbWfIAiPV!3Hthnsb zy_?QG=Y4#rn=iZMf~{FrFoXA8O`_G_fAIJI>{E{)-2Xk_a{Z;3UcAy7thU=y zqW2C1&4^QDBMS>h{?8x($xy{_`L^#FX*E_?7W(~x2ll`PU;#i#6&4a%0V{w206}Cx z&028d>t9y;^G_W)y?_!oOm7GR{lUL`@TU6?{ma*0_S*Ain{g5m3*u6x$2o7TA6jDy ze@C92hcqo-f93fL6ir7i>USaU<^>0V==2B6t83LzSSP(RulT<2-F?kcrUi1s7a!#~pWEC`7edU0hfq&tVXG zM_~w3N)(`!PLd=Y4gpw7skJ7evP9>cTWhb4jgEw2RMPL(_2<7%xvl>PaLe6~0nzkW z_jPqe*N}YK zj{(TY>nS!qBQsZWVT|)il9ck$@zpdfUVh1rdXmsH3#bUl-cuYjufOtDaOJC>eZ1a# z23Ar@Ek63$58Qvt&1pXmP_@Qte}lbSf9!7_f9;XszrL_O8VyXoZgW_Y@Stqd1TKuZ zV#~x$pS<^bX2S2ivEhp0@7&(|_<*;+;q|}qzkl|s3$F(NA_kxrz}^22006jL!4ZIy z4gf#^B%+pJL*Zq0kqJNnpb#~(1keZpLPbDTtUKokgf>B4z>pvXk+M*De**C}=Y@M6 zNW?kBtcuVfD9Vcn5Q3-+vJ5L8yTonc6Ard07#C0|unZLmh9N?z38*4e5UL2(mu4XJ z4T`n3W$)~8kOo>h0Nh$aMKLJ$7KRV^e}bZc!j38t0g}R;dzsWBh^BbHgIHouRiu ze~|WjMJ0|;oIdgSo4zP9@#LHn5V*7Z;g+F2oS;~sl>@z zd(D9;b(fjA$a5xJc6-E8WQw9Fj8NJdqm__Sc`tJ3@;n!S)_SdExqSdoQhMh>f@dP* z5ty~ERAWR;f3vj64T5MT6~uoo>&*XWL7vy`3lOAIO3S#CXdQT)mG%We5a=M3N`^sr z`t)3&6e1KR&x0Ty8#k++f}CXt0hJUwj5A{oA3NOX^-*9LMfD`ww0-O3%&a3e&P(em zmAa0iZnr~-Gcy}jmggc3lN&Zl)>CztfyhRX}WRf{(C%vs<*oBzMg7b{Oxag;uE)wjMV!% ze|`8PpILUnVyE-?z9-x1a4j`Er>4H;igPCnS7J>-f|yW1seV?z2qYjT6O*y8T)zAA zbKA=w`A@%caBhC!d6TqPZm3-Q@=L8Xl}0QifnY6VC{(Rhae>gS(HH3x^NkAxWREBS zC5k^M{5QD1tjUB=Bs3kT0&@G%aAp-Ie^7)WK>&3sx;f6W{ix*Bn25q_eh|5A!>2xi_gMf9Z)+ z@BiB`Y?+zv^wVCR@7gpaPM^$jn^T|}Hf|VKm5L*;0|){YXeERc2wow0K}5zAGkap^ zzf1f;Z@Z@4GWJadrJ7im_BqvhvKewJCY`|f{WYm!y-Ui;vnv$j^>ILT@LLvMfM_r3Loe=py2{{wg2 zGe5U->d^j!52emhDXO?(wE4k*_ubdM^5vF=bcT~^&+(7H>C!!$CqD3Z5B$daKDGM0 zA5uXWB~d69I*$T6X{r%E@NeI~QDwbePuG&+APbV}Rhuh!-tvWQTmA(T;Y&27o)!f& z8)Lk8ObA5Yd16B1K6?n1f44cX3pIve*s9kg0D0(kJ8@VUpBM#!^?IY;Y-U+@?D&Zj z{?N?kO^(@3j#sM{0@6AdX*BvH4dO}?$61~&FD_N8mFbxo9R^Yg2@C>e}+$i6msZ_1x+E?mV=0`|^_q4{Y9W;VWK#<-PYkx_kG|K{olZ zqoeP<^j10l1y>Br#ChnFKuQ5Yzjv#nHC{Oqi<7!`UUK;ljZROm^^O>q-TbA`kau@K z@R^M>7l`<>JU#iQe;dB%@R27sOpbp3t}nF(uAFM8Yb)oSw=;?4{M>?=~Huw2n&5~lDYV@)CpB-yZHnS?PD2M|_*iZN^r0cghr%;dZhP>bUvi4X)4 z6@|0bTkiuM4B7U&om#D>}0!yhF7@Ya;cf8}b z{?o5M@W6wYTykle4$3kKGZPatSCio34gV?tAx*ya#25X8 zf4O@4j!!`6e~yoy`{9qgZ}Y}+Cf{t-K6}gkfBK=1pMTz#U;c$3ih^iyWlgI{DkV{v z!qjSwnxflp{lq6ef7{NBF2CyK*JN3i=V>6dL|_0e4P1dk#F{`$7ytwS0fIm%0LCYq z^^wM}{q#G3>et?TVt%z&t8Sg$h(bJh^z>hT{@(M(e_Dx(MjB2tvOpH>oVU&o3u_B+ zy|a!6g%ItP@7ggRsLfILc-Pq6a~Q}2M;8i1O&R*aj*pJN`4@lr1=wxAByi`Qcb+Kr zWF$!v1oqw&c_|e$20;{tVM*XilBCz|3MopbqLRB%zIZ7x7>ER_h1LEiZ+@^I$*bbFo4}i?TOi1hgd+dow3PdP{ zJi&Vgrbx+!<-r&4dVJ5;4MGLy@0|JS<9UiRM`s?T^(23pzArD?T5sj&e&{;x_altD9z@mYqrbQ+mu6sqAQ>YG8rTo0cbXpT(4OtO9$-I0 zjuEN?MkH+1Fd`ulFeafXp^4CTuwa1ze-K@Qt|lK`bP?e7=LH&Iv;|8Et~J;c>^%#B zN&vkAsO_LbyzHS*kTRThut~ut4UvWs2?YZ&D1-_?O+Z~>^Q9RGeS;!P2TbIO0=+;W zM9oYE8KpvJJUIi*8f2J6K@eJ7IBS(u&KF?O`P|stJMSnDRhT4kVMF86{;=nKf05>W z4}J8c0}%w3q972dXBS4QIZ|C->h#xA9RjnHGC&TUfwh%fhb(2mSU8g@8A=t(Kvzd5 zCpT;nN-eL>cL!@xTw8a7LtfV$K!JdOL;wT=2m~X0&YS}Zn8;a6u|A z(w>aO>vg@S;c4|lL?kFpV+6BdMuDYqT{&f}69I`B0G5|mPM$bbtJkf~7Zw)A#>So* z1|XGvQ_P$sl`nq&ON)z(t=3qPXIYxP|NS2r4Eo>k9p64o2h6^#Za&XFe^cs9|9$i} zzlm?+`9a})-ZO(!^;WIk zFnQ{j!tqeH#`_Ds?l6-?$wNo?9q$OFG&h0bkALK^@3|FjeC5@R z35A##+bwJQPdz=QB03S_e|mgTMi$)9irleQ-;~h&CcZuxQv_Ps!u5v*1aV`u1wyd* zX*vkQ;IbXftG8Br89cEfr4Zd-hZ$W%SMt=;PpkqScwh_x;dtF3ya zTB~c}PS4@c0dVeY;fZz3y3lMV>Lbl+CDE}a8B^HQmEO{t3GHe>-Jo>8-y548W5^zR zd>=?XIJWQWl z#=V=X+h*h0sVJ-SJ6=;62JqYOJ3dy0D=r-!_T1D+-EA&bI;%Uj*6)5G`@N4WybC5D zc%t+8!4u#4n(bF#z2oSkCz{cCy0ls!AIzQ9`<@JEwr|C1e}3c2n{lKkv?S1og;~Pi%?G&1gMm@A0TpU!7&vzBeUccW%x9OZc{WZV5*sfKf z8L23YkDn}7+SR9Bigl%BT$fUpN9X1bpE~ubmtD@x)^l1E-!;5*WEfkp2wao(>Df&v zu*mb36AM$bf3pA(XuY#TPknUT^;i9?pZJMV_UGfb+|CIIgwp~>0IL8S0ggU&?7zML z{eS)b_pL1-4iy?u>^xu!93Vc1{9ynE;xc3fY|bczKV^D+mT*6bLn6+tF%B89RJcOK zAkx;c$#W^8JMdB{0Cd(Ob07o&F}u3v7^Pu4f8vwAL4sm=ZMnVJSsLcoUVZ7v#OQTd ze(!@%cqO7n^;9n%5|bio;XD0V|5lqwrmoVNg=lmcXHJ$rV}S?4^7(&0M_ zq$A4nVzj2El3}Of!+qTXE@`<^XtQb}z+`MVCF{YA) ze`#SH^1dSnFS+89Qz!3QYcDUY($1}0`<-@HWX4fm=zH#aIO}vajE^&Me=vw7GWnt~ z6|D=G5Bm_y1_b#Qv9@Vbb>0T6hnI%k)ty_nPEXICJar;13Q)pZ*Xj4za-*6!=j*lD zGa&IGA36+%{enD6A%(=@VEA0eRXz^Oe~YIl;@~4+db~Zzqd;H0OCgJVm}xCv`O25S z^4d!w9fEaGc0801P!L0)b5u~Bz_g*k2C){%M1?g{f5;>X zYn8|ur39tJ41pyA0y=A?lyQ<2#^!le=gz9zs{Z4yqe7vcZ4#Pl)0I1_QOe#``GSE^6A#%M@ zTUuVSmV^*2C7=MH(*2aYAM{+`e}}bGvm2+g#euo~{!g!D`uc0Xb+i?pJaXdFODVTRQ}c^Y=0+Kg4h&kABp9hyo_$3a7{TXh&l+-0 zMh(o_IxkFa0v%`}QHVGa)>ug-yaC`)Nbj6u?-gMfC2=GKG9eKgYpo-tbr@+S1cFnJ z1!5&s7*|S3I4J~500i#~e?-CTz2``3ur3UfUa#wlTtu?u(U#4&Pqn=>djOP54f^d* zee4rI`g1?!$!i^Y=TQihT7WgiSnGs9_Wtrq&fC7{+&}q~KfB<9^WjVve3>8jo`eeC z^VgrTCjjg~6TcsR;>r8$y??~*hY?VSNULyd<*z9w|^BKFd_qZ@166RVe5?Xw(v9@(jd>JE^6tV9;~E}kv+TM z$jSLwq3l~=`hoZU(bUcz-aGlvN!RD_;lpo!^P6_>-mSF`!eC}*=Jd(acieI3^z?MM z(+PASQ3QbkU}H@jMGTx}IT0~%x7V4Nm;{9WU{IK%HQJhASZudDn}0UV62ovX7!HR* z;1|B|gR{YW3OKSz>Osn$=omWp%aPS?dpa)mkkILaEf+>Z-GDWOO8sD?~oe z(=ZInuI&v|(~ms%sI|7_-jxB{OMrnVg!JA{*MoLJgKTKMLFQ8nEB(G90xkVSRrL&| z%#jj_7DMZ8L5)ybLVw598QVOScWb=`GaPcID#45=p@?MK>kcwVBBhD}l60AmoXZii zycpHOb~}sn3;Dw8qTJw>RLDe(#3+cUOw5;^pu{YIfsx6RK;hXlvlK8Ky4xQ(nmhNb z0v^CR)#mKE2__O!{F`_G%bmA;=|8@1qsxcr0m%u~0%@VJKYz9(Ix*A%5u+5uM6M+K z5PKy8kAzkQRh&!l-+q2>b!xcn1gqu=JTmfs#M~pa%$p z=$;23=oe|L(HwS*FWr2{g%@6ItvT~c0suV{lvPNrPA;5&^x%^m>Ozp$5*&?AZ207- zJ|9N4x4rev0M^>f+7v)DoTcNooVk=zd7i%n=6|nm;-3~wM2wyY866ctV_F8avWU>@ zteUh4gE$JKQm1xhe%>-Q>dj_TS(_osFbomE<)+BHh`c<1(pV}o)9rRkk85W3j^k<^ zhq1Rjzp^&ywwVlj(t$pH^vL5+v>$%rc(XOWywolO1_lNOQATKGFAoudcxr=8Jj~Oq zFn=og=U2dE1}0#79*Nx-w_RWa{<_DLuRovr{D<`qzI|g%q_wqXe6+vesygvNx~qE(==t^FbYgzn28t=7=HyKgE58Hfzr}ghfLmD&(y3ph^d@ltbL{j z0K-$#7cUG1RN5sA6avqZFB2dnil;vLB7Op(Oguc_6-K~vJ^wQ0?of`Ifx8D1i-REt0pfCzL^Bq)D zY8^yjrBdP_dx^=xIs^yrCG(ZNOWi3jH{ zxp3w3yqXVTIKKkChS7wJH@)uL_cTYxl3Mep?tA3O(IXEW8y-B;y($zv89umt>d4}9 zD5C>M7U_=rFTL*k`ChjeboY!#k&@nxJidSFl3h|ledjqBkB^Oh`E&O!&3|=@Mi;3b z$CXnH*cq-1d96on<%K!}Ph_1107T5Q^p$UT!{iTszY2m{y|#bfzCZf?-}~i1`R{vn z@BHj%Z~D*&|Khjb^B!h8dg9bwU%vAl-|?MN2oU1u|MkC`+%WS~Kk*Zv{Pd?28NTT? zuS#?Cvp@SY|Nh_qyYnx)(0{Oh__4>n>uqm+_3K~vp7;C_Ige8O`mg=QuARH%ICjn% z=d82UYNcFNCSf!vBiu7_8#4=m8kGYZ--=V0?OqN{ZpC4Cu%I#ak}fJsBd;j(;_0c5V)pBx3=P z1fUYg$b6>FmXHN9vFNS@y>{r_E3ZBu{2s_sYi({VnXD2A^-7hQ5rsxhf?zPng$_g* z2#L=afW8vIKkM;>e~9_zYoeSSpL2fvO6K#czxDU)yJrB2p5W(^{)#a~P|RzD7I@Zk zo1s7kj}ra8_y6>_Uw`)NzrOd<-9yY;IUZkVANcYEpZUng@45SyB3}kTr5lCo0y_Wz zcECiKg7{0oV@MYO{s_Y?a0U>a`Ehyn0$!x8^Gv|VCF@iO5o*m0P7x3(DF6jZ<*Xy} zjKIJOff@@II)8d-VO1(^ty^7fpTB$4 z!ouRV%PzR;E#GEbIwi0ZO2l!6Jv(nB&2g-PP+RAo zd3~__#&gUOU-K$4JpYx%vzI}i_5p$GJMfI{oSB)PflDtu_tes&cW!yDTaAP9(UCZc zu7AZV9(jDSsaJM;V{oSy}^KN z8pSa&BuPaGNeIq+Q@A|Kg!9B0#!)7U%=vu>4iEFQiumoo7ZBgXRpaeH65da7jwOY+sn-zH!R)JXx z2|%85Vw>eo2%H-X!Z1jZaPIUxc|WGak}>^uj~JqA1=v=rNu$wl-VX-@V~leyj-w(Q zwA<~tR*gI>DRdBO9ST%RX{|yKN+=AI1f`&Y&VQuN*PEAtSsb4bwK zynkiSv4gA4+GaA)&(_}X)^D3XH8(vq@tIHGckJ*2jBl=RI$Uhy*2ZA?^V-FOC zVUi?CQq_T$BGW3=K^{i|6NXX-fd=QbVt*L~3?xx7phrR_!J{MRhy{RP%zA@l(^Mve zH-(C8j4T+R5xO#a#DIuUC13i&t#5wYTV{6b==BCs6rj)u;2aS%q6l!nYFoTdnA}pMv?BgH*>`gabbJ4qh;=8PYcDt{2h{%qtBda1E#qsBE`t*_G$2aZTd)?)i z3#8$280Y|iwUih|AXSD?1=c7+kQxw~kwF6}1XV6N0OBBkBIn%2uE-4!ZGPaufn7T` zpLg!|(TVE5g@slvGR0V}5=uk@B!43EU>q244cWYKE8To8&v*IZ#M)Xx;G9i@=-8>n zl}d`Va%nMUD|9kZoBRFC=O<3 zW~7qkq;8BU6_2d7#+Y8O*KD;am5MbcilXh?cdV|g_Imx>ZoRGB>;A+~{C|YC);ag& zllz*@=F47o#q{)atyT-e&^f1+^4{0$4FE{f)EHBeM5m^v_V3$QsU}erJ7+4tA+M!&GJnw(iM;~)g^L5(k}`LGNQexEaA9QYhCJ`rT6MQ3i$a3W z(!uhua4K9$3+>%ltPH@iaj3&kXw1zRk{R^xuAH~fmr3G6frMy05uaH>^SWSNNp&pM z<~*~M=)ETrq`-LQ7x=I+laS)X%JF#rT|fPr@wK%s3Iq=F!1hqGBpi`wCi072{d0FMeEYBbhhO~Z{|FFy?-Akam%ZH#U55!;r3V;E_qKA$L0niYz1mFw+fCQ)@GzGLIgfg*Q4{`2! z&M@%0B;s>?K>P#e4bQ#<&jmaqg!tSa5Qq}bmVhb`i~o_=kO<`{@T|HEAcB0hW{3nd z)^SNAW6pC^snihBTIU@xdL5|YFs;_AOe6r6R75_@Q|D6eJ%4-j4z!BmxC*GP!_1jH z&4d8&93uun=tkLq%rE*^H0&A_2ikn z@jSHbJp-|4ut1FKkv|hNo%Jqzx|k;duFHakaV(@LwK)+{2#qM6wZIrxYEK?G_^D5S zCX6Z!XpP^#eTNXTRDu4A{tW{oGO&`e*B{KypVoo4)_))hp@YKuD5-qnQ=dJ0^ws?b?>z5z{4-tiU(aKEBUwZ-nB2U^^7KUFRxb$9pR)VQ~ANaY3 zFGNu`wVe6-Gq=ld*7v^#!nh&5j}qxgMzy3iwH*MNJ)%5)>X0|4QmcnyRIAiku(vi; zqPx1}3V##DQ5XcMg)vSlrJ}^Mt<+mdR1Lz=S?4VYW+rytRVtNA5Ei-V^oPb3L{6f# zd1kB)lW3*gTkGdqs`UdWrZZNTXNpGqcqJ7xHR`pQ zO|v6oqq;Mw4En~SQpyvhy}@8Gtj19sMglohDvE+muj_m#%LiLG;sE1fXVDAqo^I^P)f^B?U1kL?Mto5pyL;KnmwvsB~_Ob9Quel$q1v zFn=oy2qm929)%c4lrN%&M?jH?HLAWJ5}&0+Cs6eL00Bc05z|?Vd|&JQBQX_hp64@$ zZAt~b@G>L<8g`alD1x&#wlHucLIO@He{tKl?4G^z);R)HIv}DF5@AeTK3XG)C>#7YS%k=UUS0t6sR zDTS0uDkbHG=TblQ-OLVBSj*JVH10fNUVT{{6o^9Qxvf^KKm9GRefEm(Fr8b7M}Ma_ z7~APAtk}8q;*BG(eACo@x9sb!(xw^phBxe*oT=P;(=p6>ast{b{>nF>pNjD4p}8jx z-u=X(`P1{O?bYlx7hZ^kf9%-mPYAHDX9sj2$vrdB#VI@t(=Z8O`e zm95pNv!^*dSh1h|*d4a;TJ{16SAY8=)Rp~fjw|7_rt_~{R`E2A9q--i-t@-TUwy?> zf4%JD%eIeAo;SU*xctfsckj7m^Hu;@JTd>%@B9~=rl-mr!TbO4J&!zj;PRcjHhu5- zvH69)yLR@5!{7Lw-?`?Z3(Ae`c;)1uec&%&cHxB^Yt8bV|NI~R!@*-G0DnL!<(LuR z(>HxS2_spJ?mqm)xqt#d>j2JVqEVny0zoivDD_&u=PsPx^{NYTX-QZE63KW`CJdGq zYjvwca$+&_7p2LD4NFfvICbIf#*>HI3rmEd(J^#S!^-JKpx*k1>miPqnT&NsArV=C zAb}E@7+DA@5Rp+5vOp;?6o1ZpU!=o~D=}LkIs*<^u*OC!7#~x>TF6AoDAZk7)W=4> zW9Qs6&b|szsAm;F0Du7{o+8b8ouk)`yNCZPaQ?ghieTl%vyI zRTMO;;aWE3`2u>RdVJ%f4w(ECeJ;#0bt7T8LVrD{&BLq_SP*tIx78$POK| zJZmV+^tHl!iBdn`9Y&7XKldgWTVT9$ z01^t@=DBM^(`R%QV4LRrcpBw3@7SNU5^eKDlg;XZ?I?+pLo6iF@z4;^mjgC|X-x*}ij=^KxQrT#DU6Kbl+M zKCNw@9k%;z9R-Db=&=J21yf^LZS3+5c`X_Y9y^>l6D4Ey$;+PT1)al>r2X6CEib$G zzWLEcWzXI{D0|LK?>YCXiuIJ)TknXWx` z-=Vqb`UnO=+F$FKjlrSD*woo_p$tNVBB%{*Iyu|izdVONv;dN+ATJ4}R)WDfQiwW= zg%HNsB#s?ZyWb-)iUXyzwN^+}LTMFv@=D1v9tnle8ol>W*g!|11bJV!y+0*aXRRM; zjepf4^d3~8z*&Tn?k)hn()|Mf0HVxk3MqJP!{51^|+w z04}|<01*xzIB>^3cm2Z8e&3eOn+N@Y^M9bEB=XFRs76K`k3IJ2hd%t*VXOJ3Z~5+e ztC40y??@0Mf>a6x1fXiQMg|xI0FodS2vP{^y#!Rqihu6Gf!kT1D}+Sfv@Rviom4?q0K`1shZx8BxhG_=&S zvzwwQJbd_Yx!%-TmnF9>%Z9^YQRGZKJ~>gT)(}x?4FDTAZZyVh-@aq()~$d1fByJO zU;5Jd=bzthx22TVU3Xm>@d7}p*MBO6C}qT$xmK$IK%Qmm>^gx01tNIw!!QiA-nw;b zC61L+VHjq4Q5Nt@bxmWQZ!LLNxPqC^mZBHn&DRbNyQ0SlN)R3TSjmwGt`l4gKnnK)|{b&{NeGf#6x7 zASNM%RG^eJ1*6pR1$#IlFlZSpo6vMIiFyUakFEs&^4`wGbi8fHpv=-8~(@0ssJy0N<6< z(YA*rhik+oCC)N4U<5oSp$D)^u;^jQLB^mF5(Lr^A#^+}dMF42goXfx5EB^588O4n zkJBB;>}$5`x9kk-u{e_X;|vns0tVo3>gGKfPc_tSn;r|dP8=r zQUN?y;W|Jio~OJFV939?4)4DwLh*d@H!~Z4o~AK$lo{6r;rXmR;)qJb|IplpuY#lD zS!;v{=(%wEnUWQGYRU-K5}gr6l-@}xl?td}lRF#e7(tml4`oQk=VpzZ$x}iga8X6|$~m${?*L5sFC3nDvHjty71(>}4Wr7!Iqo zAW~UAv?I;&xR$6OXf#KLdEOl?j)l!Zw}|6<-xv2h@Z~q%@MiBp%Jo+EQpys`lmIh2 zW{v3C7~9RU9*5R(XHXbNX_h6GN+n6)Od$#dfskkX9S~3gGk;)t4hc%3%XQ!0^$(R4 zUs1|rI>Y1<(HWN)rm)r+OT?L_Vd0$v_Eb9Np=V!qi4v`o`JQznKa~zbL?s0RN{L!4 zDTMRvy_ZswFB>ss7{&YcJ^9Cf{3pONisC`Pw{_c=8*aG4S|g>Tr*#VAnGQv3iru?* zPK=MOtRARVYk$^yl%dq%9ZLz1JihO)d+&PP>u!Ae_k5Slv$HpfoRNUmTEEovx)G@; z++ZM>fxcF6=(D~I%&3$I!{=P1A+j;vT10%ogBS`nxz5rTxL41FP_fh%M)izlA7)ZP zghD&h73`lKA0P@>^Z-x=0dwV9MLtGU!2X2}ZiK=)n|~SaJ%(Xza(Xua2q6Z&mE-#! zVq1WK#^|UA2$dS9z5Y^H0eWvMwQa_lJkP=?jG|cT$fUO0>l0I>QNt66Kw6?9BBp8* zYl*#dFdXDe#GV*Mcd%-GAxJ2xfzdmUXG*Z*%z~Y{lneo8Dmk(!5FELjvaF~|{O47` zLxfvCzJD4e;va*0iwNGaEg11^8Q8A{2GEEP42P$T4PN*L5Wq3Cl)SQ9eJ%>eKgRYi zyLeY6uAG=(d3^ur%<%SY=lZ&T&x`l)z}KnPtkj>9}plO!G+8|`$uh06e> zL@bC9Kq)DNAR?`l3bfV%5qUtVFa+(qBWvo7dZ1LN+i!O}aTGu8{BVH57kYOd%#Vi{ zywCxT*9)Bd_R%*95NG*10s=0W<^Q$tz8BTTg^t~X9(_~mmGqnulHV0?9#u{GV!ZuW zpnvH5>{F|^NjPf=i^LQN{mRzMi0K6`vj6}Hs3PNMOu9iF2`PnA431HP5Y~HO7D5DC z<#`c?(cWF>roH0i+_4~%LMp(39K;Z461g!&Ayga+DUCHjEjhKgR0(>Klp$iPRU4Vw zK$Uon3J9ln# z%*0%+*EesRVdf)qb8Ca%XtPlm^M8f=?t9G@S5)IDN+Kd^)vMiMoruyruT>Hvdh+;* zB#JgqPmNDbByq&dcRc#&Rp*@-2SFuSe<~3%&GKLQ`JX>=^2CKh^{U3UojAVat$bSJ zY8@Z|Z~_&|zD@W3;9K|J@Csa-V{h3rS}V$0EHkjgPAAdXXs_M*_@C|=uYZ}nyRcbr zY~Rto|Nh0r`LW#>xHQFn0a=j_=CNMEC=?VJgZ^M>YgwC_DX7*I+);`uij7|@h-p0Y6N>8ldKAT zz-Dm#@KbLprHGK3yn8B%|E$`xcZhvN2WXIf*~9-v+{NtS>;oDAfRsu}VgRCbr4sV4 zTqA`_M1k@Q(nC=gPncVq8qTe7sFVQE9HWzfMV^mTt0tdaIDD6N>3`Hj>xwHbG#MN| zGQYCYF2GDqHWY}=m_cTvdS&}XmpVs6O0891q|6|MAZCFQQFwBIER|3yQcPIh!Jbg7 zNC#o0n7OdtGkgD)i2xDE^62@scrrYD4H$p{f{J8+mNGCi$N>At^M$)R;;iujqAzId z{OahQsx$P=!ao8t3xAC>*Nu>+voi45b5MJxx4CgyQ4EtxB}9Z^&>pr2X*wJZv%Hv` z7-N9_PadA$Fu8rp#`(GVw4%Mhm9@TiZsT}sa;){hzT=X;s8zj(K|kwr_rh%xwkWE# zTD6*xrzF79P(1O#;|gq~gtyd7vuts(*{DaAYNy@Fi(D(LkAF0(BTY|at?hPt{lS1d zkB^T|OiUERlo_MAVu^Gdc#K0Sm<=O&_;wY^I&d)dc6aR2q^o%1&z`TS_LS_vfh zb>|6002YAE%m@M`+xg=Q3*Dn97cbq~xaXmL>gdu%7wm9_SzTE8((RAF?Jcj^cXD-{ zQaN`pnB1)6Du1&>Awd9m&q8=1nL!3}=XB%b(qLG)5Z$ILu15e*B;|U~?{hNn5ZU@< z&pB#*43&DWMWC!CeAdz7>jyJxUBCJ&cJ3^}1tNGatF>p`KSE$uWbD0jR!CK=*93?x z&+>d|QWr~~gjy(ASw6|6qOiKOJRirEq}CKVBJhl;w0~wIsU(qLaD+aL)S%O4Kn{c6 z+FB9@anuO3S~zv|#Nh*ieRE`Fa%MJ(f;`LPN;OX6O0y~Ang~N3XsH5_3IuAUnR&F; zn%OYjX}8%^Q54>L1j+0X1TY_6vr~-C+3OZg91QX_3{)IcGMD?TJ+^Vz%7Nwmci;Bf zH(h(=(0{TH6B*1@Bm2aI4^WzQeoDtF1iF-S)_)^EP)oi+(u7$xA;r*V($M z8tosQ2u@8lAJ42lW!^LqZ@oWXz4?jVmtQ_{`0(7+c=XVbL1#F#b6W#kx@Fr;f6!T3 z>D~PKFaOQQ|8Aje$C?wTPS0I<`L-i%8ExK7-GAP6Gw$@#xGoths-l}4_8p0@c-D0S z1`;S|w(MAW;-096VXAw^J0(2>c^{|s#)rj-uEh?u-1 za)1m1FhOR|@Kqt}(-KwU zjDKttN>#bz_AkHTvB%Fj{}ShNCAD)xNMsgD3h%9y8Uqn({EqMbw*T)J{^OVLyz8o~ zueR0*A*^S`{P1ceg?cRzx$SfRF+hcoFj!!Z;P{Ml3^O~Mz3V&QJiBT0TDu);t&}vD zoO6{*g~9&ud;ahPfA!HTuD|~EuX)|r_OJ?|)9dv{M@QFI*S2rnJ~}#f;^eU?ij-31eW%}Vjf@y$ zvMg&fn$>DWY0XT4N(fP&v__)=0QGwP2Y=`X4;(nKva+I-+PZaHQJ5^ttJP|jWkpd~ zYo(M#6oz5>B27~%gp{(=Zg)G~&3{|Al&K#nl~PJdDV1{0jf{*$Vd%Xt{aII5RzCgd zPrv);FL?pS$}o9xsH@^EMFa#U))n#G$wMH|Bj*J1m^^!Yff3jw4mv8;q z|M`2pw*Sm$KK7n{`~Ta+_kUkyyWf9)vVnpQq}GOG)!_E!>}L;}|NhAjzxl>*wbm-F zS4}7&QKGeBp^V+uql~~ZR9V!dvGmC&&5<_!>Xns5VIU!v00BY>5F%&FOcJ1M zxK!S|G%c7}tI!lS9pr*p2n3eQnmqxCJkPRpU~D0U0#K-AEfF*l$t~4|)5|O=j3W>t zEsT^>hY>TGBF~GV_ilApAD0 zb>-_}mSw561vv-S@-R1Fx_@uY29=8;wS%yHff>JmdC2D0Q3Nwbx#|fB%!V$W$1Y z`Zr1io+z%?q?V69w*Q8uwaL+jv*xK?DrZSJQ}q-=7-L>i)&PiXZT+H4qN!=n`UN*i zG7GJX`MLfh58>Iqj)>lv%Ff-%j-6!83tqt?f_JLk6r6MF|5qp&_z+G9I2C|2fuYN@Bw z-rB^}tg}Wi*}T8B+L3W(Y+^=-L0qc_LK8V-G9n6sAP7PxZZ?|^{IJN2J~N|IQYdAN zElg3;>wk#Mpx;K6%z}skzp^~R^~MzN-j$)6_a4?cdB8*{*yP+Dz^0k0e_jPV066^k z@E=}3^9&Fm2*rzDzX*WS#ypnhk$4djg3o*ryJJffb5_`SCmY_g6%P;04CkAaX9wiMIXZ zHGfGF_)x^ZyYRj*_3o;Q>I>gK7HoEeo8R2J;kiEJfp)~3b|>OR<<~h9!Q;atA6xlC zgyFN}R{@w(enazR*EB9kDSvTN63lGae$_igVZA|xY#kaC>!y@avT#a!1sKRmP}4F{ z0kcq^BuN2GS&@0NwQ5yJAw2kkKwwdtS$_d_*H#iKN5ZfbMc7ZpT9`lSs1#)hTVP9A;gjO<8C^A!ci9z6j*!W64=G<<(@_&kj zllybK?`N+UN(`;-^x8qQhRAdx9sM7__xXqS&y7?Y^-49Wi4l|t7^-lsSDaW*jYCuT zVU~*jKYRZjZ^?08hr)aBs_Jm^&1rJN3k$?22n zAX~Pcm4hY97Db7&X^LXb00;s^9DiVPyg8oKp~BwpkG=zfzyM+tO$zHbb7$tvxqbU| zS9e$Kwf0(M0$b1O5C8DkzD95Fo^cgNCRIfb2CEpGT1%VR-P8N_O^!`W2WUO^*b|MK zotSFeeO;}yv-5@L=kxwJ%skdThl~Q7PwxD@ZHS2GOvNM1ZiGUSnWSgeZ!) zyO0>G%nQV-+Z}`v8Jz<~oYXaWsy8+VgUz$&8%8TdbrqpDoF>D(3}vZFeO?MGKpNLh zmFGS^i0brW3S|?2ZB1MjpUAHGqY=TEGPXZC`j*a>$ekC@z}wamdVj)*;b#OtDWbQn zF9Ad#TuCd+?D1K{U;zNRlHJn_7P-JILF5eKH2@Egd>g_4bhsBJz>Cx=2sw=~5zH)< z-jiUk9E3qr;Lyto5y-6{WTj^;J==h&Od(2vZzxPO2DY!ddH-BnU3f?y%F9reiJ_&% z#ag|#vU%qICr%e0#(!E(jFgFVD2hGT-ZHXdXV&Wn?-f8C#Wn;)fxv=QMxcTKN|91Z zadj=QAc{!o%A(Ab)>>()mR+~{xt^|FVfZ1T z8;06sG=3dId8HYY02-XVd!(`lywXocVF~3IZ2HmTXM|;Od4JXAAvmtrlS}8%2XE6P zF0!IG9CW)w@8sl}vkGZ^d}?dZt2g8MOBb9=SJ$?b(n*q*-uHSvqs{Wl=9A|ZcTSAo zT0dL_ySlkt3|*Q;z1~*e@y2E^HnEPAwBG4ucB8jeWO?qb(mEb#^oPS?)^9dik)r*3 zc7wv8 zuBu&q^-H{m%M!ju$rB=|b?c7XUTSU0%wO0w;+!jsvbqOXZ7!Qzo7P$uH#X9$H=1c| z2EFwpNu3iw2IQj1YV{ToC^A^(hy*Vpq?Cv#Z48mHxN;bQB#6uBFBYAypf85~MlI1= zw?;>!w0}OiV3G5k-o$iM7$%x!_%xoSeCM;o{=L;$=1TXFBE5OnS?!?z(V#W2?J<_{ibaODlyMo!E23 zXd~XrJ*#FTJ#y&Ck@4xd6U(2RoxOTtWpO#(+aBQnnJ=eVTN$c4;{qKmL)`*>+g`nO{GD>5`Q=49ZOxIhQvZHf>Ek`q`7$zVVe~ zlhG>d-Ky73_u=mRX4)9hWnCS8U3&i93r`Uu3CQT49rfw)et$h;l3+`cIG|Es*@+G0 zA%9U?Bm`C{T0$tx!VZViQ%&Zi-(!KK?|NS5T^kE90O?;M&`7`ITS$jepy2yOl^2VFZ9C=FRhHvvPPU49)?z09YUZ zh#&#zN>(fq5Yf5*(@!6t+dV^wh{P-aGBVmZed^TPf97AGoL~Bu@BO~p@3?u;@8zRo z3Kaqe5*0-#5IonKwF}2i|NOuF*FObP2WeH>ePk_20wO|yH6SIVfY&c94F&@Utbcmh zOd7xE|M^RwIChD2^ub3@{PKG~dhy)FMzb}{{qmU$6KR?zacn4#QUsS6)2ug?N#6VL z@yE_B5D@^n5GFh6x8Hir`L%NAcx`jNw{#)vZ1i9I7gi@`cYOZH{@FkXVK^L)jg8-R z*Ij|-f&1?t9UC1RAM?SFj*d=EO@EDzjSU8ajg5^F0Hu`CS}Q`t;c#F~BrKJ*BG2IUm~IiM^S8y>G%72mKm*|c>M9b`}Rd9 zD$5c8YH3PD)wh>r8OL#wBmkh4T3uaTURgQz^wVGJ=bgAdu21V=<@siKm4D3}L$EKp z`jh}8hoZ3~@P&2bZ6JZqWc_Ii_DiVGcn@Ge5FG=DUXCxY7jx)PF#M6e?6mL`Xy!oG=SRk#P_~0Q}M|zeo`?|KRuhwIq(; z_G5qZZ|~4Qe5m>N4$14cYX9n2?*H-s`B#7TSAPEA{M0W1z>{Y``|khshyVCD-tkYy z*Y-qlT*D7-4*#p)^^Q;d?p3?43BjAMc7pQ5kYnG&CPOzsPhgXw7k|J5#0W7$SD=C5 z1O^Pt9tr_tKmZIt2~aZh!Zxc%00zMWY;r~KaS-fi8mD7fcx25Toi#0m9gU_zu1U~9 z7*jB#fd#Cq!JLN#s`yrBG2QD_&6^+)>`YZP5Eom_x#Z}0o+ zQg_b+0le_B;X)Qlg@4bl;UHisZf89D>XAb)Hn|sZ6V2Nv@$M_tuLV&%-&^i|DnRiy z*!^wHc3#^|_5^WPJW3)Q_zNNkeQ-+CFdHM|CTUROq=fnq_Bq<_`4+5k>OAuz^ zz}^R=4fFQnyW8zD^W?;Ycd~G4vCN$KkfcT@I(SUtIA2mF zAXv|xY%nbI5G4^3lhQ~!Novk{=e&t^6svsL_vN79?=~9ca4<<*6EpZ8R_ z+=s_dDe@{eYH?-Q97-dK%Ob3A497a1Bq|5}erH4zDF6^=&<@ccqg1z1kk7lzT;>Gf z^1lHXfSH5$-hW$HHST1k+ZvSpVdVEw3-gU;i%6A4zH`UU8*jXEI2>MP-JY|#?T-V7sMp=P z^Um9t{qO$n?`B1=q6TSl&J&PzUXV7o`deGQ>G969-+#``!{M+Jqg2kB%&e69GCIir z&jq4**Sziqyy=!JKOkQk94JY8k9@ZG$U_)KS6F}}inHl~gA=cRlPij9?0qQ^02F2} zzoNUxVEIvyD+xdmgDdJ|M|R%wcSYP4KE4Es;tLP_ht2aJ)KT+FZN374q?0e{&}nVR zR9(+pYk!QOuAwlXYPLpe?bgc1d~a)`-fe*72DNjx-&-9S9nZ^RY5wfouKg^`gvO-k zwJ>M7%?sP8*TzRW{XvEpGZccMHykps$L&lzB6NA?@=PK6s%uaHFH_V2)nAx7AZ}Cj z=5m)jvxuOmu+p`t(m!(qUYye9UgfVo1isRkB7cLJ62@0zm|q$Qpa`NrY3=k?-+s~= z4_k}<3&*mxOE&KX?;>N;G{J^u1{3KIeCAWf&Mc?RPGI&NhFNBGq!i|P5wr?{)3n&w z*wm4!HJYNA+U3m6CEQ+q)1UE zH-8CKmF^J{5Jb}0WVs)Wa0-VHp5Gj4rk!@?p`#PogrQc@dr7cun6jj8X6Q5EXU8w<)w*9#!<09ws%cBu4yNWz#hX;e< za8NoMc@`T=WkraY@=*FRBvCDhtSqi|#(ziCS{;dm#D@^4Mo=tpM3J_D4j9q0-iw#Jis45YjWZZEo2 zU=%dYgZEa~(nO~~z$E0ogP>5IdD@>}_LClB7OZQ-WsDwbZ$mSIU6hv-j}&MjQO;+-|6p7S0yu=kv{|^U)_yB`UsZ=ibeJ zzhDnVAScR1^~f-(lZ%_(Ucbmo6-C-ap$H~1A3tZZ_xhXmUz#&vHWAZKS1;w|aHEm5 zr`x;gt?{#$x+BfzfkW4xIe+fy^MAb__`62Tv*+b`VCKRx0lb0@TcDu$H7BO1C_SRdsw|tq6i?jj&MbsM(0N{p02lvg*&abRq zT3o7bDtBLh9RMh$RyH>F&CRB9OaL?E;{Y%@HuCR(|F{0`_x;e1e0;g4Zhy+2v*ko7 zMT)b2MhH0ssU~=~26@4WqILx0)bwR7Uh$4)dS zM?sNE(!1}z^SW!Ue(b69Pn|q(gG3r!aASK8dWl@wWv;5O74hJ(3djs zfdg0ax2jPriWBd?@JJ$rlEX`$ix-W@tNvG^t|^^fp|XU8B0%OPyFUed_R_+X=UZP) zO->ehzPPZobN93t-GATMB7u=ct0?Wcm6fR-vlCOJ-Ub0?58Xju1crk_Gp!HGa-%;q z#*}$RM6HqL%+%DrxmgxiTbUVpD!=~A1GhJbXpdj16& zy3hHXSk1xT^0sgN#sB#BJ$Fp)Ytnn4cx-KBYph=L!6O8*PK3Pe+sy^Hyr>)FX{3MT z``)yock^SawFp1m}7;9#wmmZVGz1p|@FSLW^VMco?1T3rj~ z)*^>at#)Z?<$oOyoPFJ2{QINL#`D4?p4GHo;hIGdYyX66`D-eA72!O8sW)5}Cq4^n zEvfA>T@;1)o`tp1K8VuVdPcOhv>mA^FNeW<5FNz{5(M@LT9{*PDi5*ByrCjHRm570 zHZnfeLAJwe5T}uDHR>}{Nm{G7JGE9@R8(t?*Bgz(mVcy;rbw$eij1IA${4Lh*!y6u zUtil?T3Rd1!k8$8K(HM|!OU+M{p4af)*5yf>f?sI;sm{1C_3kStK(&KB6FR_xsxYv zxb@BlKmIYA+R5~XnB1A>zAu~EC(tJUkK-h#j)2$e9r>bQHs zFb{#rq>p^&k*7cR`1P;2!yT z7k?2#Sza5+=6vc;Qme7q&5`OLLn6)0ATa_97Frt-@!miDnFn9k* z_x}5T`uSfvc*D(a|Ihz4&j;n82LgZ`#0zgvzygO>yK(Hn$KL*b{j-U~yUP=}g^Yj^ zD@3-$1K<*XgqjE_q5U2%HqHSae^od)fRts) z9714g%Mf^FWqDy?acpD+5ohP-#wNyly-j9!u zPfbpKsh`)E;xb|PB3|w*tZpVob4y^Z{e_6me&jQ{uA@m_$h0X+)mbu-ijWpZYR%X|SyqXhXsxh7H zs92BzYa{)1ng_Xn0@>~t6c8KOJ0YckJ!2r!N}&QlAOK{Mge-v$u-yRuKmosV`2wGf zFA78yg8$xc|KY0-9sVaj`4jK?=mUTMX!44k`gg{fe{_E1$6oV>`~Kz+|9|_R{&&~x zz2%y}b;~P%w5P0%6V(%&- zKuShL)C&r92&e>Odg-%Cy$c1wMZ;1y~pfnMElCKn?*Ag~^lj z2VoFPqYk~k+u9g3Qj_JmQmWkLNhKCf?HDOHs{h*YTVl>){X06_v| zB!y*J470vS2*G>t*I$2ay;ke?yGknne(p%aZI1&Gku-^i{q8;YymEZ3^K(D{e_w5I zfQk^cqTpP;mM$-EJp9>*uRXHgmU$I>hT9EE!F#Wisw6K_6n#?>cmS1!rW9WmL&i)Z zT$V5O07evReNl$tkiV>T9Ku(+03=hp^8O(r>dHb>uIPj*Ou~Suqb8a9ixrW+)QnHO zOr8;Ob9@$wgaaa2n`dPZWg6{Pf5=Nm1jY=8J@$nwGeGDKHpcA^EVTfk))?tv!AWS2 zbOO76Y2$jm4BmkN;9xN1AP5*jP|6^JwJvZV_4!D`Dk8n&(x3fW={+kA77QFxYEX%_4ava&3Ezn|sB%4_fP5 znyjv_4hC41)|C#$E3Lfq`RZD$)f52d!Z0f?7t2J1i8Lt$Am>~Ntdx!-?VKZ0k=9mR zkF(bu?R@T1?{qI4zA#b+e}sXnUtiL}K|lr;5W*|@X955~CD{K;wtvNG<@4V5^xcKCty3Nduulg(Qx+^ezZ+;9ilkbBm z3*x;|s3W7af#3(jerIeVcyF!c;G-zg#wa4;5JD(RJCY_<5yxoby${w$Npf<*o$W^# zGV|1h{`cI``YYeLbHv2sW09DH-Ib;O+UAo_Jp9N*A5LrW$x8-N?z(wW)kY2;y?NKZ z{lmf%nPzjOzcFo#f5m>tPMjI6mFkmc`$)-jtGSwG1qJP}6Kjl^Oe{fi?|d&f@tjZ` zB{s`LU<4GU&-m%bKexdbH*aVZN#ulAzUOr_+S@b7KX=os?{X^pwg3EEcfI{Kh-pHv){MQjkPt(>@U z@!-z6XCK3e$RY?}v_8MM@L}&~#>aQh%pBRfXMT0Xc@F?*<`;HNPid_;d)<$G_ThVP zxh0JwxU4w7dS=HPzW2M%e)MN*KwRZ1ivU0r7?s!vZ+z>0dTY%VJ=6*j!Ds=dT0=G3 z5=UiR<1{Tim%r2j41eGEAO1sl%{|fF&bIBXKl$kX@BA*QHxvRA2>>uKZi^QXP$2mg(KDUfv(EmzPtXnz2Cp(^%Ehe99(1Q{R{ zEZWmY6fc16tjYi{{D!PxfQq1%Na@HZ=Yt>!i?uF<;Cyf)0O}};nz7be0|$+v?>&X$ z?wgN}#Pr+$_TQK|zVn_ps{S+QPAv#vw?D)vzIf{5R=1yfDN%v*ib7nkpFMF#O+P(7 zJ)xCC_Cz9#fPbX5swQxsk02Ex0%7tY018Xx*NV(6%puQ9_x!FzMEHstAfyVDzOpo2 z_)o5{y);4iLTK`{W39{Eu0Oj%YedcsnJPy?vo&1 zqV~>1-hVUJ)O4fihdmgZD}&74yh{MQ3#9e7NS7s8A!y z*|Gb6_$O|?@rH_i_>=hcFWCF9a|6wnxIQEz;ca4jdo6_MLx_`FQHHgx?yi|BO#l*V z#KIm`5=Dv8%-*p^1t`MLQs&z|;=oEN(nLmU6MxO^*(1RVii)DVEYc+Lj;(cZ5)HR{ zM#nmetn+EAmC>j);dbfVx==agT5Ef~K8UNB)WD3F!{i53w@od6vXCRnS!BAnyu2K) zos1_Z!^KVCu)S`rNk?D*CcC`ZtdHh{!PM-;{L02v6O-%1jmW4o^Vzjm%>|-<9>4a^ zy?+Y}CujB^m^(PJb!o#cm$w|<^O^3M@aWl_($SBdx8rY`>Wnn^K$+Xd?(w=BY2i|a zh+2#RNA*_CXQ!WjYTrzAV{`ewx4mWE^C{6~t}tl~*PiG>J#EfS&s?MWryhM|@dLm9 z(-YU;@Vuc_b>Rp?6xF?$LCI--L}d%a-hUAQPy!?@g2I68Jt|;kK#7cE=BJ-IX_-wN zkB*KhotH(~@ArGXo=&4?y-ui_N!>ajuH2Y{h?J#6z-kFlIL<_z_mRkSr_-)Am-}|_ zbvHywje`>sl`bIk@m4*^sV%JA-Yz5Dt*ZmB*^UOjpEpL8AqFPIq~844|Nh9& z|NsBxO>ceupZlvnPOpD02@V7m@_&#(2?$9IP?Tsv05Je-d9k_POKMu2SExk%+Mxf= zW1D5^kM7y|-p?LGfJ9-O*4MLa(^^fG04QyoxU39Xt41S5kT{CcT2cg_8EKByqeg^D zl8#SI)&@ferHTIpap5;5I_>7p9kb1P&3k|F;GvO`k+R4>`q2;G_uBg=Cx0hTpFSPO zv9%V62E$>y-4T(ZEJftfr3Gf#zkeUIlx3lmuGf>QG&w##9zs}KTT@CEWuDe+F7Pu? zJifTFJj^mgXf_*360fgsEG{l~I-T9SckSA>ON1vTCeNNd8yVASx3$()fjdcR!>s7{ z27CAJ_2N+x3!u{NMnmZ@H5G#m5Vx0qU*7r;uXNdM|5vryFA-apaoPbMf16pbz9Qp= znUJ{HOfih@IJCUFwP$)X$)ta5p%yD~o;h!{V^>4#oghY$K`nt@s*Rr9XC(q2a1h2& z&DS^xFbD*!rjK0NiVK4fiV8LkF7pt@fPex7)t_G$l+q!D>yO^`opmID+F3ZRZa2oXbFNx=~0(LoqkK9thBS1Zi@jtpirhzG4;e}teAhymsU?1&)t zpb;7bDM5^201SeGD|X;jc+T?c$^_n5`MA9Ry#4&VlDo(kp=U&RvBHcXsuu)Def5Dr zh?iGkUj))x8iH@PTOkAyHd;CBkW8FJB0h>EXI);D-j#u!);cgFNX6ec8!824tJPu- zCr_Tuv%*jfNRSW-e>|5iNWC6~kSU`SC>C$DPU5=K=&Tn3(lRzV+U$(>S4&~Hv9+p{ zY1A9zV>1HiLLNu;M!Qq?v*pD_6DbhZq;2V3V64gnB0vHFK~Mu>U{NGMA`$`sf%USH zx!M4GgJN~7SFh=*$&qZ(MSx~wgfwyR1OSSKF1rJ6^LAKee}4c3zyK%}f#;kH&O2)f zIRJNigUzi$uQzlq%YHiq}5Rre`}?+rtap()cE+T@4mZI)>hv|MD2FlT5GMabeJ6cCdX$D4+@f`;cuv#0q zU~S+ujUy8|Ya25=c?Q0q8~XXfTMRwYI7_Jr<*l{jfmslO4}yrjflWK{o30-D`3G0s*T@X&Wqi@FE@XKT#fjvWbfisW;)Ge0 zU=+n1s6IA&@xp=t#?6|w7D)@DD?NB;;>3vrenld*4m98U=|_*BFK#+wRFXAg zf9U1&{ms)$3(t&C9=P+BuZ1WY^f&tb^5n_EzP+K_^+SqmSx${KVl54Y1yL{9xYmrC z=^%&FmSt&80E-^blzARF0D}?(Md&2)^!VgT935L(ZM(t0`fJ~M@9lT3ZFPIywP7~6 z{>G!X-FEe{#~!`urkmR;K0DaD|GfXvf9ISFdG-qc5iPH;KXd;4j;Uu=x`GHBy>4$X zoEaaV9vjb!0suDqgLb2S)$ZM==jXFLtLoRMFJ0O{H(UAF06=#*ti>^D?L!!AcjCxA zb>>WDqJ48SeAzDG?EIyf@v+DlqxEL5`{B<%R7;Xht99eSgH=LUD6Iw^5coOKN?%H; z(heu?II{o19=AMCMj;v?;5ac;vlh}`VX;v+qZ3iPrEB%^q#=TyJqhl-?UmPF`;mA2 z@^6!pzw_O1$Z|Uv4&(Ni3^st5PT&C+f7`V2Y~fxJi6-!D+M}CR;@$f;FZMEbY^K(j z*t>T)HwhP)8JzRq9P+X1T)cQ;1{hEyz6<2TBI?ES$%2ci(8$B8>n+2x~^Ua&X_BH;y$L@Bbgae;K@g z)!V*n;pAtpoogRHyz`NVj%9=5%(DZ>?om z+1zkt*(mb0jqa0A9Y-J#5W=zXe~GP)^`)gHV+^xfTUo8u8isS5JS~xfl5*3@NA48_6Ln5Wzj;cBV$C11X4z8gTTmzctN9C z0(+`*Rf&ich=5V4(ncYgI0`@^FnGrp;#yq<8h`C(aE`nygWK4U=13>4H?>h9h@f>8 z0V?ag4+u&tqLGmiW6Yp8sGbxASXtYNNPzMB)Gd!4I~$OXUOSfo?u*RA)1U3S)!E%w zr|lUcGhy85(W!m2`jZbnJux+LVewd`0P=D(mm99#|Gtkt{;JpBb^6rty*p>_dgbBa zaDRxsJdNqP`|g(c`6IGN-*RnU2&(HhOWM8uuEvZYbmN|Ly z!o9D%{r(3(d*|(UIt=ah$}TnD#n$rH@|4Mj133HX_Z>NS&<}POkvU;sX|hYV+5^uU z{~|zyE(E3Pd#}Ca!G)FKU=wu|f-3-oF_(nn0TdSNy`B@bw$U%j(m5ZzwYEeTvZ39* zW0$Vu0U>|)bvH;=F((BeBD_uWUKZ~YUDmy#NDvjJpMCH%4}a=`JMO)AI2>vfmDUl# za5yl=Far?+i}>*EfBxJ4+28)VAOGk_@44?ao0}V~YHvA;kI=kJcJ{iP05z1Dp&$eS z2B-wKuJ^0@De;cbhaspf;IZ}0IEg*niH~=7m z28diJ^0M?IJ`k{q)I_Hhj2n#2z3%E;Z+*+=laD@JES%djTKn+hXP#Qz^c)-lhTs_q zDX@P8ACgpC2}_sOrdsLEyRHHi4IL9oJuy7w`t;7$_*8XVzaBS%uN$njN~!7T>2|wA zL>Dh!eBz16@3`ZR!-tQYKYx~)0nnI;h%R2d&}uc8mzO)8PP5rObm-uN4}RwKsZ-bA zaDy>sZEbCNdAZ7lY_(fQj~=bnYD%e*(UE`E)zuRxPLGa`-gx7UQ5+ki&z(Da`qb&i zAAkJryY4!C2aw2lueCN&q_tjJS{fT0i{sd_Q>YNBYVwdqQZ_*&HDoLUb!CD`L6{^n{ z+N!i40#Tx4^d3B8stJ8?zRGI*GEv1Jg23PT(SP*af9^Yf@+be<55D((KXIV(+Lr&7 z`$pe)cI^k>^wzX+zjFInFN44TQ1^c)-u14#Zg{2lUhA(}(NDb-?%xIKvhTeIumW|0 z7$HSKggU_lfI=8oz_OiSH%7n!pkSPU0R{{wEnM=DGt>ws6x0L)fENe=0WyZqt%vJI z)tpArL<*i#&?A6^pclYz>jnVl+_wBN2ZVB9#p@ z>wNCJ$dN_{mM9`?hr{6@aA9qR6tW&T&r0Fg*eC#(xl7`DaCXq&91J(hf(fI*PEa}I z*hJ2Uv|d*PMnN1IrDDjSKg<%HI9Irki6CL>y-(wm+S--IsENg;(}mqy-aI!ovp2$a z!QdTE?3-C1Y`XrI(WP}so)v$@9;l+dw(Ty71r!7nvtg+z>BzGbL%-(zFTv?XBv?wSH{oZhMYq-9Z4NJ*9 zZe@0JkPl0CJ}@&gg&@M!FMd{X{cMX5!sol?o;A9xv;|5lKrD(pjtqaZ4*>)L5CsFG z3c*ED^p}6&`+xJlz2n%^&)j^=&2w|JWmzgx&vE{Q&uEdEdXbulwn{Zhg#h~I4OcQ51X0i~4IhJwXf ztur}Ad+t1O>dZ#3U>1KxWTF@m0!w!=NTP^{ zM22~m4~7FmEN#hwwb46v?C7-Gy?(E|xtYdMoHPIed#8wurjbqygsRT$Uaw!;l3A1@ z*e+2?BdwLzl2V9j+awK`Kq2a_p6w0c`dM@RRQlPKm-K6T8DD#l(Mi3YZ4CfW1VVto z5+Ep~h)6|AYixgfV=H40mFbxX5}H_RZwEnnmDaQ|!a<=nIxehDbmG~Gih`2dht0fP z?ez!Z>#bsSFo;Zi?R7WZ|L~`@F~A7ad7W8)Vu&Q~|n%3uHqnS+RMU?N097S`G* ztwRWvd_H)Oh~M$XLr|>)q0Jw7U4-B+Zbc6Dmd$pJ zbZ*!;z1r)4^4#iH-!fV+%6Tb+E!YVFphY%*f8u5TkY1-Lpwib%Wr?hEwBIX z@39N{%;A3>Q+apw#53p5o^CelwYtBwcCLY)BRh7y^Zm~}w*ZG1 zyc9%jdxTO2PWj;bBn03()$>*YZ*?M^x~UXG5KdabZltYh!K@ylJ|vXJ<>RKewsg)D%E`Yb;O{Gy)~ zk^f{H&MyiKpVzK30FnsdGRupKXG>=R!F#WWT;Tz#NtOtJXRzLhAQ2g@6jse53Xxpd zzw5>W2X;<>=Ann16O+l>%-U9e`S{~EU3Gu+byx4Zc=Ezi$It61^0{ki5)rMDgbB5^ zWn*ka$I02_r#E|p!#5o5jE#A=5$X__nX7&vqaabn7^Aha3Y_y42sIVHM1WSKSxe%f zb&$I&eyDFCJow<_Q5uQj&Go_l-Fx%ge)JO$6=fMkx~3B#6Gg_^5JhHlW8GQXZnu8{ zfP)Jmg zU#VtYy-SkO6pt=wN?vjy>I)0AAQRk-yp&jdneo3 z*DtzDR#6m1K;%LI z5F!MD5I{#!9Gi7pn8;N1(`{2+<{U>JT=l*^dEIqKXviba%y0RAqU7L#tI9^l^2#u@ zQQLBOl14_p^*i6VqcJkOduM-tef3Rme$7)SPaM5&=Z!ZXnj9J3eYIQ|oPGMiLX#Bv z#^~hCUNhdz^48R}-B|7)o9`W%d)luoE-VZ)IeO@b7~Z*a`p%o)P>Ni2)gDjL?i)4_ z?H+s8o8Mey<%PwE23gjEt&6rTQPWU)?<=maxn6su-5m}#F0IWaCYgUdIx^O{;wVBQ z2Vv*o>&K_(o_XfsPk-nS!3Ra;1qulWK%fGOAd)5~@gVF$l{o$@w6q zWc+&lh@jf8D?KZB zt@a#6KnNj-Frt#`VZ?v@`~Txz*WYrBAo^edNhAO;fG*22i6X7cVAwmbXXl;wz4rh8 z#b3Vjt~;YBZl=k4R-Rt#`QDk6$4?SOK{ABE+sa}0v4gEln%iYI3Wk31RWuGKj`N+paKMiTBKI5oqpi=fA2HL_a8jG z`|zRbZ@SH2bK|MceRgUxTkPfiy!0%MB-%eVa%_IZ1t|;1;@^DBH3{HYyS8U)Zl*2Bzd8+nG9-Dtb9)$0$oimY3ZGU2iZopTvefz)q8~^N%*R@BwWz=XbeRlny z-xkfb)BoRx*AD%aA9~##Z*$Il)pPH@01S{KBnW>sgciY!h6X}PFr}fRAVwG=s1YOq z3fhjNivVU61O$yx3iKGd0ZM^&4_$^C4Xm~`0SKs207hfFP{{pH75xBd9Zd}n)@XS* zZj5r-Qv$$!2J(<13>5gw{+U`JXISQ7J;wMlf%kt1BHeJ#8f|Jd6Z-waWf~xN4h2HM ztmuCa20Z}J>;Zj|v(a(0-HxK9-|H?dt$-+PfZ3Xel%n8K0IV&QG9fr+bf?o%kv=6QTJ;IA(`q7?p}SG5rAb^P zR>(ryT%M;^KKvfUZFll}Z>_au>0JmSE)-cm-{=-=o5S^9*3JE9-){6>FAqgvE8YeU z?1Ka+9Do@Fw_W*I1hC@cNQ4>T^AcPE5CjsAkdRcp-azlvzEpL71>EoYy z@S(`WuYUC_XJ@9fY(PqFcUd72k$?aJMdZW*k}wltEls~JgZ5>7(*Th}00K_yqbePf z?J6jQ5^R}AY2uv=AbGbNqZ;efS2usUgrp5b#KGnHaLbrU2&&9o2%&V=`H~4s=LdtK zY+qIAy!YON4TLBlAvotsK*hj_$Sf6W$Sjou4l{2XX>Pab10soF2;1^^BoYKfdYQm` z8D9}v2W|!c0LI{@$b4D);ShZ=^%f!ZHr8gRI^X#nZ~kBJzkh41Cjd$j5!!#ETwhUBp>N&LtA?Ss92t3X?Q0n4`!c>57;Th^JPQew);jh= zBm`Up(4Y*~>J1%7f;`MJqm6%n(HfQ3scw1&4iHgQiQp0GT14amXcah6Qj5|!M_k<6 zii&QtEDs&H`nqdx2IMG85c>jE_m_&2q|s{Koga9ul{(erfvq-?V@K_%EFM;AuWF z*-{23HrWWH86^piu6^`PH}Cz#vBAgI>Qg86U{Ox21fx}1hBKRkx}saJ-glvIPs|Sj zd4*i&xfKvajn+6tsqd~?Ye{QBaE!gonn6ir@we_e@Ll&_^Qm9>ImwnbhcdeR=#BWM9lWEPfAkX%oY@-w!7shzn&0?&><>bB5eO+T1ER2SC1Vq)iiSW` zd1s?gb z;VbB11pv0=JP?0?0SV;Uv*r;agg<6@2wq(H`qlD7cmaqZ2wbXu$Q9p_S1yzSE>yr5=115Op+v?eHn;BBJ-stQU4!@Mys}CXNz>2Pv$#!%{n(+gxhbs^>-fm5Ny-`2*T`xK+q(oAARD} zr#24l-NU)JMPYqtHJVf7W1GG1yWjg!7Kq}AP$hqj+NpD=t{I2hW@k7ZB@qM=3L=04 z^Znw^z56O1U)6i}JaXlmfU$cXvMeV}T4|+K)i)bO5vj@rSpz_vB!PuUP^z{!009OD zWDLygSS!-T2LVma2N8~vw32NE1}RIOq$ZB7E!g_PIUPk7OCm&rAgr`O03y;#E2Wtk z5CDHrkwy)b)T7yK9z1ZM*WEzG5CRKSeY8Y$>Egw!4)0T>PM&{?FOAGu*;2%}TG#vAI9M?Ry} zq7fO7+KE?t(ORqKAuxX- zDJ38b!LvgEVX+*XaEXC25HKnUiu!rz7va{cuNRC#D)o1jR<*73+rBn|1&Fp&1sISd zh>B{Df9`YlfBa+jz2z-~-Vg|ZMH>SswIo)Aq(qapMfR zga}}>Ds)*E1&V=z0*V7Eflol=V<(fJy1KBA5>QS&89cIcu6h5{m!3KH#4~@#-uLcz z?>)GG$KC@|SKspL9eb8fJsp!A+A)4$YUGa}KlkwI1tW0VRXc9jHLg%N5POMC{H8mv z-?L-7KP>9AbGN?r+qP}E{*0k4%MX6=13P!_9334!dUW^1#6+!D^WG;(;+$!jD@>#Ku}7X>U%YtLj!wVGbsE{M zTwm`BU~I@62xTZNd%zLIMth>4^`Cn1u{-X2Lvw0+VR<>y9!O9T0mla1cGi?2K?qDF zppK;OVQg$qLuO92Wo2+e;HRhuO51QFaQu{NL_ zh`_o)pP>{00nN|^i9DD;TOx!1lTj8Tq9h0s1s0`rJ}k@32j`4YA|(VE3=6;zN2Zq4 z)3hEOudQrsY^*u!qDU*!N-6IgARrR6N8%6)0Wxt-MUhe}P7>=~Y_!st))EfEmW2dm zivmE1$a|YvsKtNnEGt^|)E4Vw?KJDH%zL|Y=K&Kpea@2;JG*oF>dILxZ54I_pN}6A zte894F2gg505Wi3bb)jT-ow_AFRu2}NE=cLd*G#3PtsZxf-j3QiXx+p(nf3jtdqQe zgRt#}X`OYY4L*br3R@0`!+zhcZDz}B{jGsp@8%m@d4GQxN(UiGVDU^aH985E75`;RCqevtfQ29;5Q`uxc04S5TI+)cb|1cKFA~|Z92Q+tM63mr00^=W zFt8Y84!M6V(x{On@o=j&>g5ahWqd_IBvJ|`#EnUyCISl}0u)(qFz7QYr6OTMqDH%+ znj^!a2;e=0vK(ro%b_YwL?q0XMTUc3nGbDQWW#JQ7*_t-0>aF$wCsJQr}aK~=a3Y0 zAQEN}5vAyIq2O|vmAR@^3bP1$ADCGw1t3~0=bV4Y%N=+x<12?Sd+V~H&jw&!RBsrq zA-Lh{YQNuAT3>b5;jJNj=p&yPW_eK-Rjocw({8ty=L2oDA`%c`V381lF;SYPi_0r( z>sl*}lUiUu%nRYr&oZO1+v|DnTv;%S_tyK6BylZG1w?D@eJHK9)-eNVg_i~Ih+wpF zfI)w&0CaFFe$DRo*ZbK0SqFi_;E~z;Fc@Z0vleVwmM#`XRNgtIl{UHxA1?C}6|fK@ z5d@V+gQCc@EUj{RIViv=iGp{vdfgb)YS%kslbzAAcDufN&)&J&-4ZmBTV7jTUEi3U zp3DOi2M8<(*4Yr858^xsssO+u&fAE(-g8gsgN)5VQN8tt2`>x$vB4^W6s=J)O#?^}OracgQ~++rNEtUftbpV+|wh24Mf z&Iu?lWvi}YS6)2Rz2)%C;oY4NKk$K@_BB?{H_krtSxGr~zrH@`EB`+p>s?$=sUH2_ z6RWQ|H1gbY@zNboRmf_rqYyI^)mzPTt1AzjJ#}GuX?|((srj=u%QsfmKJuXts=)pJ z;Dg!-OCH?&>UFQsAwK-%qm52$ach6`V%9ylYiFz081x1u^Z3Xp5gAe%F?e4~l8KSg zrS-L8QT&Of{{zi;e#e_)RwW0F5&-e3BSH~+w2^yh$k>p+amAdJi?!iWrlfLwox_Yn!V zlkxxrm_d{n(qj`iwR^GGKl#+j9cgm&+wK~fo!oV3UuWOG(W6H~v%!F&$h>#>e0uU5 z5d{DUXatdMrR=l8DgvOC*ns~YDznEIW;=Xsfr5b0d(I2b-vQ^V7gz*{fJIPgZDL#G z&I=-i;7G6*No-8JSsQ6JCMSO;COR$WeP?7Wc;|vUcjDyJ4N8MiBuZ~BpS|?-Q%7F?1_lLQE}om$CTg@&5kaJF&jb}a@0>4z z(fZ&6c*o2E3GzG-L3{`TI(*}oOkZ{H(WS-p^QYIRrkky{SzJChF;Rafm~ z5d?7FImFyK0l)yrfq`|TYl&i3!J~?hs8+h6LmIka2wDUcMS-jE8;1gj+Djkb~BJ8;wqn~GC~%SExv!@jcX0P(UdL5FRxY#4&t?uT}{@gFT?R&rbFaFRECP=+O4?%&TR>lR-0)i;O%&ax7Us(Cq|L`B3 zUAgd2e(l#19e(wn|En{f`&^K)k@ZQD386&Q(`J7XfF-1Y4uFLL)ev}5=sgoREG>@y z;8MAJBo^Ty=v{uzp&dIA4m4}$b9c%6#gnHmoIE``I(p!yn`W-QnU>CUVjAZ5u7i`; z?i@u_wODQSGo`Ve)`VeZth0A^I?rt0?Y{MI{=??z1hcOwbAC?5<2OBC|N1vP^UTw$ ztE+$GqjPg}4?OTdqtS?>=;FnTS&@kdqFP^Hd);eaf8yk+-+R})Zo27) zTW`Jf;~)R{o8SDF!C+Vvh4;SQZYOD4sW*R$qS&!x$7^5vTBUWX)$-n77B6fMeyx>K zn!a8^IA1+*01gfX!?srkI_HHMYQ_a&4+UqX56(FNtqcHwHUuEGI9gjD=FIIl%?H7U zV2s(=+(;ACFr*WcQf)Bo4Te^u2q+V)MypwC)*`KDChDgb7VHP!_xf-DzP#D#XT5(Y zj$)lC3?>v_)kT;&5EBPaNY7UL6-a`>%u)s9`L8_n8JI;W^$Y*ypZ_IVxM{BW=`;HN zMm}565A2Q8!u>{f_%DC;zt*EBbNJd`k^+d(Y+!Ff!H|If8U$4^dJIrU5RiuoumS{- zAan@EbX=Efo60J9I`UhVpouU-FlT=N0SbW>VVs~r&?Km%)G%q#Xo_b_UJeYUP$|+2 zZYUdP9gHggfGq|EFsGr%upD5Wq00~iG(duYD9Pm}>_6?r$ji6_io!C7TFrN;zv0Jt<)E#;AW*yQOPs z6i1|#WzPtCK0pv6D2vhu>z$2^&a*NA7llJtN~9#{;H=W*t&?DTTMHN1&du&Otqz!Y zVsclnw*eOGNvf1$2~q_X3V2}!NWouT#DPO1K@#A=-h;DZmFf-X+~O7@1WW|N7}uwFcP<3)o%7b(qA2nrtZwF)mbTV5?RvM|>e^lw z3g3HaZDwmP!oY5 zA~n)Wj|UZA6Ot`KR};K zh#hOIYK04~ED)88V$VKRbzorJR5&X-GlnpzAH55|>s6!gzTaJ3E8+xhnU)WnEN6FQ z|KR&)%F?bZ4=kH^e}8iE?(3%eq5p}ZbIUC^CAGR^84S02gK{OzJ~(gdvihyByJzRM z*Yeoub^oMX$gltr-U{&0*|nKYZ|}~jL5QbDCxYt7b5ZWX`pPO4*7u8g0-7_JtxtS#D^T>wCx6deT*F4a9>t_+?$NW^ z7uIlJbU`B`wR*i<+NW0+o;Y!$`@jF^^6}H<=>@s4lCBNweXE8=43YvRKnkc0`dQBe z2Jb-_U=`d&08ZkMB>KH0X_#))&WUvQ^fRYV9JuO`0A3Zsc$(JJ^cB}#J1mM5=Pzvb z`!BIuBC_+IyMK?~dAC1vLYst%j7hdsW90*%-P354nv_wocUQAks3Vt?%H+PkpUcP=>ReECh_p9zQs zNVMI)AOdJW^yL@|2GOYAANWB468O{id#t(wCoAzGDh2=vUr@BFlkyFDR zd#7fnu7A01|I^Q0tkq)2T$z{)V$RY^)6KKT2S;yg&mG8mTX7t1Y;;j$9BaZVmq6!* zEz7_m6g~`d8^;Ne79f!jLNF>upv%jrZ)`mN`26~Mmz{6roku=+nN@C+7M6oFgFERQMeDKZsNUPcKc57?U z@3eK2MqOL1udQc;eygUB96WI9;>9nX0}CN&tq4-TXfPX6nVqy~|CW%=jPNFzT3tK9sfddjoaf+xa z*(7S^oMVvcnZp8vgi6IpYE0~$V`i@)iXuW{4l}dkXU<-lpI?}p+tq9|J=6Mn@6f@$ zD@&WBVeqQmJNmtvNm?i>j|X`(jkOwYZmuny**P`2&|4ml`S6~RzBBE1$CjlgRewvP zNZ3Tpq_w;37SOZt!K>0E2U)?@_1gNzTC+Ji)fiRUvyX=PfGAp7e7bK9W4tKC2B{>O znrSItxFj-4OMgJ47@k}_yXB&5ufNF+=8UiGPeqBZEE|CL|LG6r+wJOWFYsOFPV6Hy6T!v7C{0VSakDMZ~MLjhp!{0q%wrU=Z?GQvUeaTl~>KS$PYk(m{CRP(@#G2 zu@8Re&42E@x?5d91SAe2O=3YLqADpl4*b2}^Id=E$Nt&}|M>kk-1UYJeSi81$2Qhj z1|eYp24oOIFaRhL5cETzy5G5C_jNb_$Updp*Ij!!9}IdSRO6?L)Db~pgg~sYGtxT# z@Ugf5E8X001cy$FV9h09-|yGSn%`ZHrhyi%+Q51Oq78(wQy{+zR|MFkI?Tz0JAVhjN92P|p$1wm@ zV&Qtd{#Cr#{}066+}yr>`v!x-^73+?=W!fIQKXa_3VMqaj^S`HF)?xJ z(#5T)gSxV$J_08yNS)1ON^}@xDn! zin8pCw)ansKK96?2d=$!?(lWp{w8zKC?b;Q9-9cl%t06l5ri2$GZKGE8N|Dg8elKp ziu!6C{;J;n$Y&qeRW?4hp7sO5Q){oCO<#En{^8Rbc=z|+as55Pd-b(%zY~D{hE7hX zfn!J!h5}B202II`!;*upKrY)cbv49RDB5(P*&*-EH4COlN&00^OlPzumxPtGP{ zhoq?vb(GgQpK%xlSPy@^5nwYwA?QI^ASUPr7znHdnAYF`HUlgNZ~`@i5d{i>M9fz- z1CbY5kbaRHl`FmZ#kToPkD|z(E3Ly?T|1xkha2KaM1|n3%X|@nsx>Mg~jgbR?+L1-GS}rA$MYZa6w#UVJT3BGN6c;&s!Y9Histwf|7u+ zV5MYYf*=x*#gj5gI)8C-;mk$y$->F=(+74e4OgOe%(-Z#t6aKD0+Q#sF-9pRRnHLM z3&?TWW(Y4Q;Z=-baK3O(Yh7i)e?bOVRdlKTT5Xg;0>pnR5-+Vr``F`8eEcIH{ZkpF zFXNjRstU-_luiHuY#VE#E8OPhmIPlG0~5`p%~sNysI_5iVx{DbY?u>K!KL?QS!NI< zE6a_|)pF1+vtn~An_pN7?5lAu2!*$W^8^UuSd_B`pfFV4U39rKcKfTyHiyRyh)9IN z`?APPWLSRy0kw{;b=HL-FB5n#<0}KRco&q?#xzM0cMzHd|Y-xjEf2WtK0MTT5_e0X}v-g30Jr z*UpY^1sz@7Jv!QG@x*8=%X}{{m(N%n))%MRB;m;HM7Ux9i9tVfNrEkkp%erhx^|^3 zUAr~W-ORe1MLWuF+uIwh(ZX8!$kVo`I&m$&xViP=fBSno#yj0S`;L2WFW1(7`#m51 z-oJgv?A4u>r}C6q{jIIN>BxPD%x4zM$&s-%G2Px55&$p0hKNo4!4H1mKmK1o)jYA( zIlDRT{ZXj3TO-NTC>`9(<1If@vyI3m+D8-=dSO@>8)h&V%fT*hG2{DVCxao%Qv>d(T z*8cpdLvML&(SOID8?QO};1h=ITq9{}gsk+Ae}#iats?D00QM3BfN)?$RFS5%P86*U z%hgjC)YRTv%PFX#A?f6s%v|DueUR+0tXcZ}erGV2NTx zs(Y*k_`;e50>irzn5$`uykKJgwFQHK&|VY(43Sbn*arr{%ej5fXv7?X_e@A8HnB0@ zTl-Mvtwt>r*} z25!Fp-SM@zy8{PyADCU-7-aoCCGsquy%X3P<_%Q&U~BQ@W1~~Mm(3OeEF?s_-98Et zs?o{uqMrntC8;BnrG93EXD`i`x$&0Wr$4urZT6QP7Xl)G-8;C}K-J4#SY7Mw-Mh1h z%=*$wL=+Rmk(nQ4jMN&f-G2LyxIwm%eBff05TSE&;+f&<(o(x!`^>NrLqHTIBC1xmB9P^P zf+PAp@Bj3FsblAoD00Cj7}^cJZ@S&pHM8e1jO`%r1O$*mUf9(IB4TeJS$5y?7w&>8 z!S!o*!d|p#LqJ`Qt9c0^f>J>AqTAsw%}v)Rs?0(|@WG4oJm~ea;m{bRNErk`AtI`* z+YuG&%l9Ayq~b^eqBfdP1@8e-$7xxVX;MR_6w>wrWHOgO7y==G9f%-^5K+Be8yy=x zbLMov-#1#-(!@j&GoL*1*wMrLXK%jtp@*Mn)Xd_Uje&I|oz`bR^Qh{$&ph-T-F@LqfI^P@}ncA_NvN`KM`3vv3{`$l7$D4Mzibx_sK!Gp-BY4;K-r{1;E& z|M5Ti)!$ydcs7a?9mj-dqA1RXUBFbEY3CrY5SAbTU;|+#xc@$S;{&_DJ<+=8ZT#<3 zgZuW|t7DtglC>;TS@M&A=X?LJpZe8@&s^BqjP}Re>iel?{pQ!-yl0}lJ}A;8u`Vc5 z)(7vr(SH<0NfJk~R^4pK*)SQOc>Q1f`}=Nr_2S~f#Kgp&4GqZDZ zJC>K1TCG;A)j}dt3J9Cc=IZ)dVePB$x#!Y_3uF&G@IaPjwOTETq9jRbX-zA=wYl}7 z4}Pd9%fI{=zklbB9rKswFPuMr*Ijq@y1ikqUrTGXS`87kHd&S}EiN5AbjWC3Rf7<* zy7h@vCO1q-%&ZiBGtjFj?OIefFwrz1dR3QE8v+@B*XA;_T4oE&PfpGdhzQi0Lf}vpy#q4`{wnm}RsMLOe&YZBH-F{(zq9j%UH0(GvE;{Z3d>!1hnx6! zKlxLC!t$puQT(oV!aD)3BGf6K8CTr~`BIQUN``YD)>^Y%yd4A`l@EO2k;lg>!a! zuiiJRHUlhAqX<9(&?K+|ED!-i2u+d^HPNJl9XjD8D;Wj?U51SSn+&;#7bppu02>Us zzy^Rp0DxYAMF*L{n1TqQMj!zC%a=D1ph9GSK!h)t>M(%9=fC(uV3nc$oapxo0-zA- zi!)C6X2KvJdROq!4u>Rc!yscXq_jpQ2tgDn%CbDq3#}-w*H}0N+Z}8nNn}!C0u+`I zI4BfER76OWB#nBrX<{W1Fa!``??`-6I9FI;@GgX4hQor8oG-0&tYQW1$tI0Pujg5R z=h`R;AP~x8xVUt#QJb9{-<@D9X*c&AH~;`drn2*41YoYTcnC-pT`!^1F)0QK1Vn}R z$_i4f1sA!nR%}rl4!F@Y?M75HL0JOy01$)#fGS-PAR@9bhv2+qmixou(nhwl*6$5m zKlA;}_KPrdTn2WGWeAQTgl%g+V0pHGX7YTwl~l}{Fnb~-UFkTKD zBOeBL`+CY67-;_X9h!E9(T2Xx* zpc-icKpQJd62O>9tnIBX)m!bTF-kR68yTzji#)g1S*0~1=EHu8d1)>C!f2pIvs5)) zUaM$v#EK3qE?v5`cXqC_#tdBX=qTHi|2D461{eIc)6$I@7xmp^O=A|`j>LF2oap^r8B4608HMV{4Irx&qD}6A3OZl~=Xxx864C*k)a~v>MKKeb#KBC?^gK%fIldPOB9)8m`eW+T>J|qRh*y zo9i3?qmO_1Q%@Zp-F5Auy}RQQK6Cy<#sVOV)|n5hi)%va@#E)z#B+bk-f%GcsUMta zkF?g7w?6vl;Aek(xSEj{_0f}lV!0S?r@#LD$I6uxKk(+!0|y(6&#W$-AXheK=h9nm z-0}2Mc;b(qLZpeYv3B|e3;364=&=eu`OEM4D<{FvPNZ+VsoXcw9gQzU(q~&Z8+-r` zhRR5V%EXj5qZt zO{R`svvTb5V1skcmPJ0yWme0DniHP{2Xyz%Fu z>ZSm}Isj0A9dTTUMQ;IT0=~)`$5xUsv-kikq?C!2Xdsb6x4&a{>egFs6qce4-h1bK z6h*_~Fin#*O?usIWob>}iLLdGv8jo)RbQ}r)A{yjYyA_S;wO$b4_h)}=w@Pz&bw1l%ZcOhYZ4fc|kXr|UAp`(_i->8O2$B+xquAOKf}pS_g+zI7 z6_VCEyx{rum1Emg?gb|b<+9bvR~3{MtvGd_7fzkdo#ou3(HKQVC`lwT(ZuM;<|SKh z!GQyNdz&l$?q*COjcd(XZFymF=j4ciFtexLm`d_&sI=A^jK(;Lz$q^1ci!=fzAVdp zsG~@KDX29YQ)8Xc_DH)Gjda?D_|0zD7;Ll!NKGYieGHPMh6r2T^4Mcfj*X2(Cd#{; z7{S?d=Mn=`o!X_?#Bn@2QosMvV=s2keC|^D+4nGWEjHKO^S1Z>@o#?jceh==qd*IW zDoY#TGTlJ<=GWe`Iu?rIFin%XHlzWBN+gqi)MZ;-ON5jyoGpuTe0=2npZ?s;?Qhw$ za|eg;tXmqqV8wp93mLy`^Gwc*D-Qw|5D{xH&z@fJ9uW``=Qztb&tHtdqbT~4CfR~s zi9#SkQU;8U5K-dby|Y{vC41|<3spp?M&&hVrK&@%Oro@gO6F)ZsK{uY)a%U=trZ1- z?<@PGz=6GI@RT4R5GX`QlO&E3B%S9)Rs<19>nSsvD55GI7nJ~T@Di91nzwO4hpFi>7yJc>AcD+9s zY0VK_WaSK6WxWq-NgleHxfl#s|RncrJa%f=gx1f#e=w+aBt!|orlt` zN8_E&HFsQC8(cVfX1bO{gX5#Cm$GhiuCcIj+E}1SEp;8yq0F;*ZsM=-e|P4aNYICpE$m6@9rXV?YK9&etL`dUTOSqpZZFFlMXDkVgPu#|#R+NMM+nnQ67#mBaaVN$B!Uy~Oyh>PJV@V&$abm}Lz9i0<>iCy9#f}pva(86QO~q=KD2ZyM*(5fQ z1W1q|Nc5S()Z5QFyR7y5;|?H*1SC=-CCkzKJj63R_ug~&J!hX?*1OjG&hC2nMC^he5jM{#;*w_<{d=Z}{3@@=bpH zSSZr`c^t<#+;HR3qeq&}ktm90XJ=2IJh8gEnx-icDW#$~ zUS3`qA0M;MEu3DsWY?~hm6dk8efaR88Nk>9h_! zvVVGNs!^}6tgH}!QN316;v~;=09adH)mk?j4Rt1E0nXG(1mUuT|YKExh43Zz6r|ex#FDw02dJ&L**D+v1Bas1L>>==m=y2ZH5I8Jplz!Cr|(> zK>!dqJRiP)XWH}ws8N_#nyUmo1`B`!F=7l+OtpxvYpRl=PVU76WDEm_F2E{7hamtI z0s^qa&}Co%7T9PYAz*-v!PB~iF~L_f{+~Z`c7tHO_-Bk1!#Zv&UM>)*8Lpk3_(8B) zu+JV02{B{$Vs8j#sHk|p5a5~PU*`leT%5nuaLzd*s#dFt5S7Y{V677%VJ>We2t@1R2QGMuR2(IU=tIc!EJ}^VVev5nh|i1Q z#TM4(9+(|S2wZrplp=*%o5;k*>kzn7t%DhOZvjw5Lf|ZKudK{(n7&A1ylL~+sfmpu zLWBZ;GOW5AT4$lidKMcqg9wU8B2k7#JbS{-fkKDCLcy&#XZ=VsF59Tn%`1sYV-rP& z6cGgkU?C6~>gfgV3-7Zcbi4Udx7%)qer~hE4>B3#k~z+OaE=3mXAUf0C;+bqGX(^2 z=rk|G1H*rr88QI?EkT4OXcP*pC5%;?`yV-fa^&FAhOQ(!UOIXDuG{Xs@y)L(0)qqw zNz=5~>lH=OXfyzzC~~chRuK|aN)-Tb))lshlTu_NCLNd IsEL+~hqAX=$juV;)I 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 z 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­o&wAt9x0pg(!{91>qY(c-gz2|tU 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

r5c#b0bZhct&r*Q&X@A^n58NJ3t8cp~ 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%0AUq3D%c{Ad)F;$@~ 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

W5QI1jTpYorU;iPMmp!n-V}k^w&WazHEcwa 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

    3wrOAmCu<`77#CVu^MFbYP>kM{2C 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 htrhC3@JI<_002ovPDHLkV1jgH%Vz)p diff --git a/doc/binary_formats.md b/doc/binary_formats.md index 8b187860..051e2ba3 100644 --- a/doc/binary_formats.md +++ b/doc/binary_formats.md @@ -63,7 +63,7 @@ std::vector v; json j3 = json::from_cbor(v); // 1 const char* buff; -ize_t buff_size; +std::size_t buff_size; json j4 = json::from_cbor(buff, buff_size); // 2 ``` From 60e2d28eb724ce7256fa73a3b8f7d23601c58126 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 31 Jan 2018 20:53:13 +0100 Subject: [PATCH 099/106] :bug: fix for #947 --- develop/detail/iterators/iter_impl.hpp | 2 +- src/json.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/develop/detail/iterators/iter_impl.hpp b/develop/detail/iterators/iter_impl.hpp index 4d939476..2934389b 100644 --- a/develop/detail/iterators/iter_impl.hpp +++ b/develop/detail/iterators/iter_impl.hpp @@ -608,7 +608,7 @@ class iter_impl /// associated JSON instance pointer m_object = nullptr; /// the actual iterator of the associated instance - internal_iterator::type> m_it = {}; + internal_iterator::type> m_it; }; } } diff --git a/src/json.hpp b/src/json.hpp index 0bb324d0..7487b686 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -4467,7 +4467,7 @@ class iter_impl /// associated JSON instance pointer m_object = nullptr; /// the actual iterator of the associated instance - internal_iterator::type> m_it = {}; + internal_iterator::type> m_it; }; } } From 552d153842024802f73420c1ef818e26c591beec Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 31 Jan 2018 21:54:38 +0100 Subject: [PATCH 100/106] :memo: added more statistics on binary formats --- doc/binary_formats.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/doc/binary_formats.md b/doc/binary_formats.md index 051e2ba3..b9f233ca 100644 --- a/doc/binary_formats.md +++ b/doc/binary_formats.md @@ -157,16 +157,15 @@ The optimized formats for containers are supported: Parameter `use_size` adds si ## Size comparison examples -The following table shows the size (in bytes) of different files in the `test/data` directory for the different formats. +The following table shows the size compared to the original JSON value for different files from the repository for the different formats. -| format | sample.json | floats.json | all_unicode.json | -| ----------------------- | -----------:| -----------:| ----------------:| -| JSON | 687491 | 22670390 | 13279259 | -| CBOR | **147095** | 9000005 | **5494662** | -| MsgPack | 148395 | 9000005 | **5494662** | -| UBJSON unoptimized | 148695 | 9000002 | 7718787 | -| UBJSON size-optimized | 150569 | 9000007 | 7718792 | -| UBJSON format-optimized | 150883 | **8000009** | 7718792 | +| format | sample.json | all_unicode.json | floats.json | signed_ints.json | jeopardy.json | canada.json | +| ----------------------- | -----------:| ----------------:| -----------:| ----------------:| -------------:| -----------:| +| JSON | 100.00 % | 100.00 % | 100.00 % | 100.00 % | 100.00 % | 100.00 % | +| CBOR | 87.21 % | 71.18 % | 48.20 % | 44.16 % | 87.96 % | 50.53 % | +| MessagePack | 87.16 % | 71.18 % | 48.20 % | 44.16 % | 87.91 % | 50.56 % | +| UBJSON unoptimized | 88.15 % | 100.00 % | 48.20 % | 44.16 % | 96.58 % | 53.20 % | +| UBJSON size-optimized | 89.26 % | 100.00 % | 48.20 % | 44.16 % | 97.40 % | 58.56 % | +| UBJSON format-optimized | 89.45 % | 100.00 % | 42.85 % | 39.26 % | 94.96 % | 55.93 % | The results show that there does not exist a "best" encoding. Furthermore, it is not always worthwhile to use UBJSON's optimizations. - From e8bf1f62f76e1393f741ecf690d4b52c403f17b4 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 31 Jan 2018 22:36:18 +0100 Subject: [PATCH 101/106] :sparkles: added define for library version #948 #943 --- develop/json.hpp | 15 +++++++++++---- src/json.hpp | 15 +++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/develop/json.hpp b/develop/json.hpp index 1e59e579..e1e6d3fd 100644 --- a/develop/json.hpp +++ b/develop/json.hpp @@ -29,6 +29,10 @@ SOFTWARE. #ifndef NLOHMANN_JSON_HPP #define NLOHMANN_JSON_HPP +#define NLOHMANN_JSON_VERSION_MAJOR 3 +#define NLOHMANN_JSON_VERSION_MINOR 0 +#define NLOHMANN_JSON_VERSION_PATCH 1 + #include // all_of, find, for_each #include // assert #include // and, not, or @@ -308,10 +312,13 @@ class basic_json result["copyright"] = "(C) 2013-2017 Niels Lohmann"; result["name"] = "JSON for Modern C++"; result["url"] = "https://github.com/nlohmann/json"; - result["version"] = - { - {"string", "3.0.1"}, {"major", 3}, {"minor", 0}, {"patch", 1} - }; + result["version"]["string"] = + std::to_string(NLOHMANN_JSON_VERSION_MAJOR) + "." + + std::to_string(NLOHMANN_JSON_VERSION_MINOR) + "." + + std::to_string(NLOHMANN_JSON_VERSION_PATCH); + result["version"]["major"] = NLOHMANN_JSON_VERSION_MAJOR; + result["version"]["minor"] = NLOHMANN_JSON_VERSION_MINOR; + result["version"]["patch"] = NLOHMANN_JSON_VERSION_PATCH; #ifdef _WIN32 result["platform"] = "win32"; diff --git a/src/json.hpp b/src/json.hpp index 7487b686..62411195 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -29,6 +29,10 @@ SOFTWARE. #ifndef NLOHMANN_JSON_HPP #define NLOHMANN_JSON_HPP +#define NLOHMANN_JSON_VERSION_MAJOR 3 +#define NLOHMANN_JSON_VERSION_MINOR 0 +#define NLOHMANN_JSON_VERSION_PATCH 1 + #include // all_of, find, for_each #include // assert #include // and, not, or @@ -9885,10 +9889,13 @@ class basic_json result["copyright"] = "(C) 2013-2017 Niels Lohmann"; result["name"] = "JSON for Modern C++"; result["url"] = "https://github.com/nlohmann/json"; - result["version"] = - { - {"string", "3.0.1"}, {"major", 3}, {"minor", 0}, {"patch", 1} - }; + result["version"]["string"] = + std::to_string(NLOHMANN_JSON_VERSION_MAJOR) + "." + + std::to_string(NLOHMANN_JSON_VERSION_MINOR) + "." + + std::to_string(NLOHMANN_JSON_VERSION_PATCH); + result["version"]["major"] = NLOHMANN_JSON_VERSION_MAJOR; + result["version"]["minor"] = NLOHMANN_JSON_VERSION_MINOR; + result["version"]["patch"] = NLOHMANN_JSON_VERSION_PATCH; #ifdef _WIN32 result["platform"] = "win32"; From aed4a080bf8cdcdf3106a8b09aa830dd387799bb Mon Sep 17 00:00:00 2001 From: Kaido Date: Wed, 31 Jan 2018 23:01:01 -0800 Subject: [PATCH 102/106] Templatize std::string in binary_reader #941 --- develop/detail/input/binary_reader.hpp | 21 +++++++++++---------- src/json.hpp | 21 +++++++++++---------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/develop/detail/input/binary_reader.hpp b/develop/detail/input/binary_reader.hpp index ebb06834..ce48fd93 100644 --- a/develop/detail/input/binary_reader.hpp +++ b/develop/detail/input/binary_reader.hpp @@ -36,6 +36,7 @@ class binary_reader { using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using string_t = typename BasicJsonType::string_t; public: /*! @@ -863,9 +864,9 @@ class binary_reader @throw parse_error.110 if input has less than @a len bytes */ template - std::string get_string(const NumberType len) + string_t get_string(const NumberType len) { - std::string result; + string_t result; std::generate_n(std::back_inserter(result), len, [this]() { get(); @@ -887,7 +888,7 @@ class binary_reader @throw parse_error.110 if input ended @throw parse_error.113 if an unexpected byte is read */ - std::string get_cbor_string() + string_t get_cbor_string() { unexpect_eof(); @@ -944,7 +945,7 @@ class binary_reader case 0x7F: // UTF-8 string (indefinite length) { - std::string result; + string_t result; while (get() != 0xFF) { unexpect_eof(); @@ -1000,7 +1001,7 @@ class binary_reader @throw parse_error.110 if input ended @throw parse_error.113 if an unexpected byte is read */ - std::string get_msgpack_string() + string_t get_msgpack_string() { unexpect_eof(); @@ -1111,7 +1112,7 @@ class binary_reader @throw parse_error.110 if input ended @throw parse_error.113 if an unexpected byte is read */ - std::string get_ubjson_string(const bool get_char = true) + string_t get_ubjson_string(const bool get_char = true) { if (get_char) { @@ -1150,7 +1151,7 @@ class binary_reader */ std::pair get_ubjson_size_type() { - std::size_t sz = std::string::npos; + std::size_t sz = string_t::npos; int tc = 0; get_ignore_noop(); @@ -1219,7 +1220,7 @@ class binary_reader JSON_THROW(parse_error::create(113, chars_read, "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + ss.str())); } - return std::string(1, static_cast(current)); + return string_t(1, static_cast(current)); } case 'S': // string @@ -1244,7 +1245,7 @@ class binary_reader BasicJsonType result = value_t::array; const auto size_and_type = get_ubjson_size_type(); - if (size_and_type.first != std::string::npos) + if (size_and_type.first != string_t::npos) { if (size_and_type.second != 0) { @@ -1281,7 +1282,7 @@ class binary_reader BasicJsonType result = value_t::object; const auto size_and_type = get_ubjson_size_type(); - if (size_and_type.first != std::string::npos) + if (size_and_type.first != string_t::npos) { if (size_and_type.second != 0) { diff --git a/src/json.hpp b/src/json.hpp index 62411195..7dbce3b8 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -4856,6 +4856,7 @@ class binary_reader { using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using string_t = typename BasicJsonType::string_t; public: /*! @@ -5683,9 +5684,9 @@ class binary_reader @throw parse_error.110 if input has less than @a len bytes */ template - std::string get_string(const NumberType len) + string_t get_string(const NumberType len) { - std::string result; + string_t result; std::generate_n(std::back_inserter(result), len, [this]() { get(); @@ -5707,7 +5708,7 @@ class binary_reader @throw parse_error.110 if input ended @throw parse_error.113 if an unexpected byte is read */ - std::string get_cbor_string() + string_t get_cbor_string() { unexpect_eof(); @@ -5764,7 +5765,7 @@ class binary_reader case 0x7F: // UTF-8 string (indefinite length) { - std::string result; + string_t result; while (get() != 0xFF) { unexpect_eof(); @@ -5820,7 +5821,7 @@ class binary_reader @throw parse_error.110 if input ended @throw parse_error.113 if an unexpected byte is read */ - std::string get_msgpack_string() + string_t get_msgpack_string() { unexpect_eof(); @@ -5931,7 +5932,7 @@ class binary_reader @throw parse_error.110 if input ended @throw parse_error.113 if an unexpected byte is read */ - std::string get_ubjson_string(const bool get_char = true) + string_t get_ubjson_string(const bool get_char = true) { if (get_char) { @@ -5970,7 +5971,7 @@ class binary_reader */ std::pair get_ubjson_size_type() { - std::size_t sz = std::string::npos; + std::size_t sz = string_t::npos; int tc = 0; get_ignore_noop(); @@ -6039,7 +6040,7 @@ class binary_reader JSON_THROW(parse_error::create(113, chars_read, "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + ss.str())); } - return std::string(1, static_cast(current)); + return string_t(1, static_cast(current)); } case 'S': // string @@ -6064,7 +6065,7 @@ class binary_reader BasicJsonType result = value_t::array; const auto size_and_type = get_ubjson_size_type(); - if (size_and_type.first != std::string::npos) + if (size_and_type.first != string_t::npos) { if (size_and_type.second != 0) { @@ -6101,7 +6102,7 @@ class binary_reader BasicJsonType result = value_t::object; const auto size_and_type = get_ubjson_size_type(); - if (size_and_type.first != std::string::npos) + if (size_and_type.first != string_t::npos) { if (size_and_type.second != 0) { From 14cd019861ab7aaff55bb1a8d093efeacd80c0c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Mon, 29 Jan 2018 11:21:11 +0100 Subject: [PATCH 103/106] fix cmake install directory (for real this time) * Rename 'develop' folder to 'include/nlohmann' * Rename 'src' folder to 'single_include/nlohmann' * Use headers in sources and tests * Change amalgamate config file --- CMakeLists.txt | 13 +- Makefile | 78 +++++------ .../nlohmann}/adl_serializer.hpp | 4 +- .../detail/conversions/from_json.hpp | 8 +- .../nlohmann}/detail/conversions/to_chars.hpp | 0 .../nlohmann}/detail/conversions/to_json.hpp | 4 +- .../nlohmann}/detail/exceptions.hpp | 0 .../nlohmann}/detail/input/binary_reader.hpp | 8 +- .../nlohmann}/detail/input/input_adapters.hpp | 2 +- .../nlohmann}/detail/input/lexer.hpp | 4 +- .../nlohmann}/detail/input/parser.hpp | 10 +- .../detail/iterators/internal_iterator.hpp | 2 +- .../nlohmann}/detail/iterators/iter_impl.hpp | 12 +- .../detail/iterators/iteration_proxy.hpp | 2 +- .../iterators/json_reverse_iterator.hpp | 0 .../detail/iterators/primitive_iterator.hpp | 0 .../nlohmann}/detail/json_pointer.hpp | 6 +- .../nlohmann}/detail/json_ref.hpp | 0 .../nlohmann}/detail/macro_scope.hpp | 0 .../nlohmann}/detail/macro_unscope.hpp | 0 {develop => include/nlohmann}/detail/meta.hpp | 4 +- .../nlohmann}/detail/output/binary_writer.hpp | 4 +- .../detail/output/output_adapters.hpp | 0 .../nlohmann}/detail/output/serializer.hpp | 12 +- .../nlohmann}/detail/value_t.hpp | 0 {develop => include/nlohmann}/json.hpp | 46 +++---- {develop => include/nlohmann}/json_fwd.hpp | 0 {src => single_include/nlohmann}/json.hpp | 128 +++++++++--------- test/CMakeLists.txt | 1 + test/Makefile | 8 +- test/src/fuzzer-parse_cbor.cpp | 2 +- test/src/fuzzer-parse_json.cpp | 2 +- test/src/fuzzer-parse_msgpack.cpp | 2 +- test/src/fuzzer-parse_ubjson.cpp | 2 +- test/src/unit-algorithms.cpp | 2 +- test/src/unit-allocator.cpp | 2 +- test/src/unit-capacity.cpp | 2 +- test/src/unit-cbor.cpp | 2 +- test/src/unit-class_const_iterator.cpp | 2 +- test/src/unit-class_iterator.cpp | 2 +- test/src/unit-class_lexer.cpp | 2 +- test/src/unit-class_parser.cpp | 2 +- test/src/unit-comparison.cpp | 2 +- test/src/unit-concepts.cpp | 2 +- test/src/unit-constructor1.cpp | 2 +- test/src/unit-constructor2.cpp | 2 +- test/src/unit-convenience.cpp | 2 +- test/src/unit-conversions.cpp | 2 +- test/src/unit-deserialization.cpp | 2 +- test/src/unit-element_access1.cpp | 2 +- test/src/unit-element_access2.cpp | 2 +- test/src/unit-inspection.cpp | 6 +- test/src/unit-items.cpp | 2 +- test/src/unit-iterators1.cpp | 2 +- test/src/unit-iterators2.cpp | 2 +- test/src/unit-json_patch.cpp | 2 +- test/src/unit-json_pointer.cpp | 2 +- test/src/unit-merge_patch.cpp | 2 +- test/src/unit-meta.cpp | 2 +- test/src/unit-modifiers.cpp | 2 +- test/src/unit-msgpack.cpp | 2 +- test/src/unit-noexcept.cpp | 2 +- test/src/unit-pointer_access.cpp | 2 +- test/src/unit-readme.cpp | 2 +- test/src/unit-reference_access.cpp | 2 +- test/src/unit-regression.cpp | 2 +- test/src/unit-serialization.cpp | 2 +- test/src/unit-testsuites.cpp | 2 +- test/src/unit-to_chars.cpp | 2 +- test/src/unit-ubjson.cpp | 2 +- test/src/unit-udt.cpp | 2 +- test/src/unit-unicode.cpp | 2 +- third_party/amalgamate/config.json | 6 +- 73 files changed, 226 insertions(+), 224 deletions(-) rename {develop => include/nlohmann}/adl_serializer.hpp (92%) rename {develop => include/nlohmann}/detail/conversions/from_json.hpp (98%) rename {develop => include/nlohmann}/detail/conversions/to_chars.hpp (100%) rename {develop => include/nlohmann}/detail/conversions/to_json.hpp (99%) rename {develop => include/nlohmann}/detail/exceptions.hpp (100%) rename {develop => include/nlohmann}/detail/input/binary_reader.hpp (99%) rename {develop => include/nlohmann}/detail/input/input_adapters.hpp (99%) rename {develop => include/nlohmann}/detail/input/lexer.hpp (99%) rename {develop => include/nlohmann}/detail/input/parser.hpp (98%) rename {develop => include/nlohmann}/detail/iterators/internal_iterator.hpp (91%) rename {develop => include/nlohmann}/detail/iterators/iter_impl.hpp (98%) rename {develop => include/nlohmann}/detail/iterators/iteration_proxy.hpp (98%) rename {develop => include/nlohmann}/detail/iterators/json_reverse_iterator.hpp (100%) rename {develop => include/nlohmann}/detail/iterators/primitive_iterator.hpp (100%) rename {develop => include/nlohmann}/detail/json_pointer.hpp (99%) rename {develop => include/nlohmann}/detail/json_ref.hpp (100%) rename {develop => include/nlohmann}/detail/macro_scope.hpp (100%) rename {develop => include/nlohmann}/detail/macro_unscope.hpp (100%) rename {develop => include/nlohmann}/detail/meta.hpp (99%) rename {develop => include/nlohmann}/detail/output/binary_writer.hpp (99%) rename {develop => include/nlohmann}/detail/output/output_adapters.hpp (100%) rename {develop => include/nlohmann}/detail/output/serializer.hpp (98%) rename {develop => include/nlohmann}/detail/value_t.hpp (100%) rename {develop => include/nlohmann}/json.hpp (99%) rename {develop => include/nlohmann}/json_fwd.hpp (100%) rename {src => single_include/nlohmann}/json.hpp (99%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e427020..ca4f49a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,6 @@ option(JSON_MultipleHeaders "Use non-amalgamated version of the library." OFF) set(NLOHMANN_JSON_TARGET_NAME ${PROJECT_NAME}) set(NLOHMANN_JSON_CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}") set(NLOHMANN_JSON_INCLUDE_INSTALL_DIR "include") -set(NLOHMANN_JSON_HEADER_INSTALL_DIR "${NLOHMANN_JSON_INCLUDE_INSTALL_DIR}/nlohmann") set(NLOHMANN_JSON_TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets") set(NLOHMANN_JSON_CMAKE_CONFIG_TEMPLATE "cmake/config.cmake.in") set(NLOHMANN_JSON_CMAKE_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}/cmake_config") @@ -32,9 +31,9 @@ set(NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE "${NLOHMANN_JSON_CMAKE_CONFIG_DIR}/$ set(NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE "${NLOHMANN_JSON_CMAKE_CONFIG_DIR}/${PROJECT_NAME}Config.cmake") if (JSON_MultipleHeaders) - set(NLOHMANN_JSON_SOURCE_DIR "develop/") + set(NLOHMANN_JSON_INCLUDE_BUILD_DIR "${PROJECT_SOURCE_DIR}/include/") else() - set(NLOHMANN_JSON_SOURCE_DIR "src/") + set(NLOHMANN_JSON_INCLUDE_BUILD_DIR "${PROJECT_SOURCE_DIR}/single_include/") endif() ## @@ -46,7 +45,7 @@ add_library(${NLOHMANN_JSON_TARGET_NAME} INTERFACE) target_include_directories( ${NLOHMANN_JSON_TARGET_NAME} INTERFACE - $ + $ $ ) @@ -70,7 +69,6 @@ include(CTest) #adds option BUILD_TESTING (default ON) if(BUILD_TESTING AND JSON_BuildTests) enable_testing() - include_directories(${NLOHMANN_JSON_SOURCE_DIR}) add_subdirectory(test) endif() @@ -87,9 +85,10 @@ configure_package_config_file( ${NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE} INSTALL_DESTINATION ${NLOHMANN_JSON_CONFIG_INSTALL_DIR} ) + install( - DIRECTORY ${NLOHMANN_JSON_SOURCE_DIR} - DESTINATION ${NLOHMANN_JSON_HEADER_INSTALL_DIR} + DIRECTORY ${NLOHMANN_JSON_INCLUDE_BUILD_DIR} + DESTINATION ${NLOHMANN_JSON_INCLUDE_INSTALL_DIR} ) install( FILES ${NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE} ${NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE} diff --git a/Makefile b/Makefile index 36844de8..fca2e0d3 100644 --- a/Makefile +++ b/Makefile @@ -1,37 +1,39 @@ .PHONY: pretty clean ChangeLog.md -SRCS = develop/json.hpp \ - develop/json_fwd.hpp \ - develop/adl_serializer.hpp \ - develop/detail/conversions/from_json.hpp \ - develop/detail/conversions/to_chars.hpp \ - develop/detail/conversions/to_json.hpp \ - develop/detail/exceptions.hpp \ - develop/detail/input/binary_reader.hpp \ - develop/detail/input/input_adapters.hpp \ - develop/detail/input/lexer.hpp \ - develop/detail/input/parser.hpp \ - develop/detail/iterators/internal_iterator.hpp \ - develop/detail/iterators/iter_impl.hpp \ - develop/detail/iterators/iteration_proxy.hpp \ - develop/detail/iterators/json_reverse_iterator.hpp \ - develop/detail/iterators/primitive_iterator.hpp \ - develop/detail/json_pointer.hpp \ - develop/detail/json_ref.hpp \ - develop/detail/macro_scope.hpp \ - develop/detail/macro_unscope.hpp \ - develop/detail/meta.hpp \ - develop/detail/output/binary_writer.hpp \ - develop/detail/output/output_adapters.hpp \ - develop/detail/output/serializer.hpp \ - develop/detail/value_t.hpp +SRCS = include/nlohmann/json.hpp \ + include/nlohmann/json_fwd.hpp \ + include/nlohmann/adl_serializer.hpp \ + include/nlohmann/detail/conversions/from_json.hpp \ + include/nlohmann/detail/conversions/to_chars.hpp \ + include/nlohmann/detail/conversions/to_json.hpp \ + include/nlohmann/detail/exceptions.hpp \ + include/nlohmann/detail/input/binary_reader.hpp \ + include/nlohmann/detail/input/input_adapters.hpp \ + include/nlohmann/detail/input/lexer.hpp \ + include/nlohmann/detail/input/parser.hpp \ + include/nlohmann/detail/iterators/internal_iterator.hpp \ + include/nlohmann/detail/iterators/iter_impl.hpp \ + include/nlohmann/detail/iterators/iteration_proxy.hpp \ + include/nlohmann/detail/iterators/json_reverse_iterator.hpp \ + include/nlohmann/detail/iterators/primitive_iterator.hpp \ + include/nlohmann/detail/json_pointer.hpp \ + include/nlohmann/detail/json_ref.hpp \ + include/nlohmann/detail/macro_scope.hpp \ + include/nlohmann/detail/macro_unscope.hpp \ + include/nlohmann/detail/meta.hpp \ + include/nlohmann/detail/output/binary_writer.hpp \ + include/nlohmann/detail/output/output_adapters.hpp \ + include/nlohmann/detail/output/serializer.hpp \ + include/nlohmann/detail/value_t.hpp UNAME = $(shell uname) CXX=clang++ +AMALGAMATED_FILE=single_include/nlohmann/json.hpp + # main target all: - @echo "amalgamate - amalgamate file src/json.hpp from the develop sources" + @echo "amalgamate - amalgamate file single_include/nlohmann/json.hpp from the include/nlohmann sources" @echo "ChangeLog.md - generate ChangeLog file" @echo "check - compile and execute test suite" @echo "check-amalgamation - check whether sources have been amalgamated" @@ -243,7 +245,7 @@ fuzzing-stop: # call cppcheck on the main header file cppcheck: - cppcheck --enable=warning --inconclusive --force --std=c++11 src/json.hpp --error-exitcode=1 + cppcheck --enable=warning --inconclusive --force --std=c++11 $(AMALGAMATED_FILE) --error-exitcode=1 ########################################################################## @@ -257,29 +259,29 @@ pretty: --indent-col1-comments --pad-oper --pad-header --align-pointer=type \ --align-reference=type --add-brackets --convert-tabs --close-templates \ --lineend=linux --preserve-date --suffix=none --formatted \ - $(SRCS) src/json.hpp test/src/*.cpp \ + $(SRCS) $(AMALGAMATED_FILE) test/src/*.cpp \ benchmarks/src/benchmarks.cpp doc/examples/*.cpp # create single header file -amalgamate: src/json.hpp +amalgamate: $(AMALGAMATED_FILE) -src/json.hpp: $(SRCS) - third_party/amalgamate/amalgamate.py -c third_party/amalgamate/config.json -s develop --verbose=yes +$(AMALGAMATED_FILE): $(SRCS) + third_party/amalgamate/amalgamate.py -c third_party/amalgamate/config.json -s . --verbose=yes $(MAKE) pretty -# check if src/json.hpp has been amalgamated from the develop sources +# check if single_include/nlohmann/json.hpp has been amalgamated from the nlohmann sources check-amalgamation: - @mv src/json.hpp src/json.hpp~ + @mv $(AMALGAMATED_FILE) $(AMALGAMATED_FILE)~ @$(MAKE) amalgamate - @diff src/json.hpp src/json.hpp~ || (echo "===================================================================\n Amalgamation required! Please read the contribution guidelines\n in file .github/CONTRIBUTING.md.\n===================================================================" ; mv src/json.hpp~ src/json.hpp ; false) - @mv src/json.hpp~ src/json.hpp + @diff $(AMALGAMATED_FILE) $(AMALGAMATED_FILE)~ || (echo "===================================================================\n Amalgamation required! Please read the contribution guidelines\n in file .github/CONTRIBUTING.md.\n===================================================================" ; mv $(AMALGAMATED_FILE)~ $(AMALGAMATED_FILE) ; false) + @mv $(AMALGAMATED_FILE)~ $(AMALGAMATED_FILE) -# check if every header in develop includes sufficient headers to be compiled +# check if every header in nlohmann includes sufficient headers to be compiled # individually check-single-includes: for x in $(SRCS); do \ - echo "#include \"$$x\"\nint main() {}\n" | sed 's|develop/||' > single_include_test.cpp; \ - $(CXX) $(CXXFLAGS) -Idevelop -std=c++11 single_include_test.cpp -o single_include_test; \ + echo "#include <$$x>\nint main() {}\n" | sed 's|include/||' > single_include_test.cpp; \ + $(CXX) $(CXXFLAGS) -Iinclude -std=c++11 single_include_test.cpp -o single_include_test; \ rm single_include_test.cpp single_include_test; \ done diff --git a/develop/adl_serializer.hpp b/include/nlohmann/adl_serializer.hpp similarity index 92% rename from develop/adl_serializer.hpp rename to include/nlohmann/adl_serializer.hpp index cae95637..53c9009f 100644 --- a/develop/adl_serializer.hpp +++ b/include/nlohmann/adl_serializer.hpp @@ -2,8 +2,8 @@ #include -#include "detail/conversions/from_json.hpp" -#include "detail/conversions/to_json.hpp" +#include +#include namespace nlohmann { diff --git a/develop/detail/conversions/from_json.hpp b/include/nlohmann/detail/conversions/from_json.hpp similarity index 98% rename from develop/detail/conversions/from_json.hpp rename to include/nlohmann/detail/conversions/from_json.hpp index ba89e540..8ea0284a 100644 --- a/develop/detail/conversions/from_json.hpp +++ b/include/nlohmann/detail/conversions/from_json.hpp @@ -11,10 +11,10 @@ #include // pair, declval #include // valarray -#include "detail/exceptions.hpp" -#include "detail/macro_scope.hpp" -#include "detail/meta.hpp" -#include "detail/value_t.hpp" +#include +#include +#include +#include namespace nlohmann { diff --git a/develop/detail/conversions/to_chars.hpp b/include/nlohmann/detail/conversions/to_chars.hpp similarity index 100% rename from develop/detail/conversions/to_chars.hpp rename to include/nlohmann/detail/conversions/to_chars.hpp diff --git a/develop/detail/conversions/to_json.hpp b/include/nlohmann/detail/conversions/to_json.hpp similarity index 99% rename from develop/detail/conversions/to_json.hpp rename to include/nlohmann/detail/conversions/to_json.hpp index 2df7b0b8..ce2bc0aa 100644 --- a/develop/detail/conversions/to_json.hpp +++ b/include/nlohmann/detail/conversions/to_json.hpp @@ -8,8 +8,8 @@ #include // valarray #include // vector -#include "detail/meta.hpp" -#include "detail/value_t.hpp" +#include +#include namespace nlohmann { diff --git a/develop/detail/exceptions.hpp b/include/nlohmann/detail/exceptions.hpp similarity index 100% rename from develop/detail/exceptions.hpp rename to include/nlohmann/detail/exceptions.hpp diff --git a/develop/detail/input/binary_reader.hpp b/include/nlohmann/detail/input/binary_reader.hpp similarity index 99% rename from develop/detail/input/binary_reader.hpp rename to include/nlohmann/detail/input/binary_reader.hpp index ce48fd93..057429cf 100644 --- a/develop/detail/input/binary_reader.hpp +++ b/include/nlohmann/detail/input/binary_reader.hpp @@ -15,10 +15,10 @@ #include // char_traits, string #include // make_pair, move -#include "detail/input/input_adapters.hpp" -#include "detail/exceptions.hpp" -#include "detail/macro_scope.hpp" -#include "detail/value_t.hpp" +#include +#include +#include +#include namespace nlohmann { diff --git a/develop/detail/input/input_adapters.hpp b/include/nlohmann/detail/input/input_adapters.hpp similarity index 99% rename from develop/detail/input/input_adapters.hpp rename to include/nlohmann/detail/input/input_adapters.hpp index abbf5d29..ef66948d 100644 --- a/develop/detail/input/input_adapters.hpp +++ b/include/nlohmann/detail/input/input_adapters.hpp @@ -14,7 +14,7 @@ #include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer #include // pair, declval -#include "detail/macro_scope.hpp" +#include namespace nlohmann { diff --git a/develop/detail/input/lexer.hpp b/include/nlohmann/detail/input/lexer.hpp similarity index 99% rename from develop/detail/input/lexer.hpp rename to include/nlohmann/detail/input/lexer.hpp index 2b99c137..75001652 100644 --- a/develop/detail/input/lexer.hpp +++ b/include/nlohmann/detail/input/lexer.hpp @@ -10,8 +10,8 @@ #include // char_traits, string #include // vector -#include "detail/macro_scope.hpp" -#include "detail/input/input_adapters.hpp" +#include +#include namespace nlohmann { diff --git a/develop/detail/input/parser.hpp b/include/nlohmann/detail/input/parser.hpp similarity index 98% rename from develop/detail/input/parser.hpp rename to include/nlohmann/detail/input/parser.hpp index 799ea920..63e8541f 100644 --- a/develop/detail/input/parser.hpp +++ b/include/nlohmann/detail/input/parser.hpp @@ -7,11 +7,11 @@ #include // string #include // move -#include "detail/exceptions.hpp" -#include "detail/macro_scope.hpp" -#include "detail/input/input_adapters.hpp" -#include "detail/input/lexer.hpp" -#include "detail/value_t.hpp" +#include +#include +#include +#include +#include namespace nlohmann { diff --git a/develop/detail/iterators/internal_iterator.hpp b/include/nlohmann/detail/iterators/internal_iterator.hpp similarity index 91% rename from develop/detail/iterators/internal_iterator.hpp rename to include/nlohmann/detail/iterators/internal_iterator.hpp index b65b33d3..d9b8fb29 100644 --- a/develop/detail/iterators/internal_iterator.hpp +++ b/include/nlohmann/detail/iterators/internal_iterator.hpp @@ -1,6 +1,6 @@ #pragma once -#include "detail/iterators/primitive_iterator.hpp" +#include namespace nlohmann { diff --git a/develop/detail/iterators/iter_impl.hpp b/include/nlohmann/detail/iterators/iter_impl.hpp similarity index 98% rename from develop/detail/iterators/iter_impl.hpp rename to include/nlohmann/detail/iterators/iter_impl.hpp index 2934389b..52ede17b 100644 --- a/develop/detail/iterators/iter_impl.hpp +++ b/include/nlohmann/detail/iterators/iter_impl.hpp @@ -4,12 +4,12 @@ #include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next #include // conditional, is_const, remove_const -#include "detail/exceptions.hpp" -#include "detail/iterators/internal_iterator.hpp" -#include "detail/iterators/primitive_iterator.hpp" -#include "detail/macro_scope.hpp" -#include "detail/meta.hpp" -#include "detail/value_t.hpp" +#include +#include +#include +#include +#include +#include namespace nlohmann { diff --git a/develop/detail/iterators/iteration_proxy.hpp b/include/nlohmann/detail/iterators/iteration_proxy.hpp similarity index 98% rename from develop/detail/iterators/iteration_proxy.hpp rename to include/nlohmann/detail/iterators/iteration_proxy.hpp index 1a699542..7547d038 100644 --- a/develop/detail/iterators/iteration_proxy.hpp +++ b/include/nlohmann/detail/iterators/iteration_proxy.hpp @@ -3,7 +3,7 @@ #include // size_t #include // string, to_string -#include "detail/value_t.hpp" +#include namespace nlohmann { diff --git a/develop/detail/iterators/json_reverse_iterator.hpp b/include/nlohmann/detail/iterators/json_reverse_iterator.hpp similarity index 100% rename from develop/detail/iterators/json_reverse_iterator.hpp rename to include/nlohmann/detail/iterators/json_reverse_iterator.hpp diff --git a/develop/detail/iterators/primitive_iterator.hpp b/include/nlohmann/detail/iterators/primitive_iterator.hpp similarity index 100% rename from develop/detail/iterators/primitive_iterator.hpp rename to include/nlohmann/detail/iterators/primitive_iterator.hpp diff --git a/develop/detail/json_pointer.hpp b/include/nlohmann/detail/json_pointer.hpp similarity index 99% rename from develop/detail/json_pointer.hpp rename to include/nlohmann/detail/json_pointer.hpp index 9cbbfb36..fce8001a 100644 --- a/develop/detail/json_pointer.hpp +++ b/include/nlohmann/detail/json_pointer.hpp @@ -5,9 +5,9 @@ #include // string #include // vector -#include "detail/macro_scope.hpp" -#include "detail/exceptions.hpp" -#include "detail/value_t.hpp" +#include +#include +#include namespace nlohmann { diff --git a/develop/detail/json_ref.hpp b/include/nlohmann/detail/json_ref.hpp similarity index 100% rename from develop/detail/json_ref.hpp rename to include/nlohmann/detail/json_ref.hpp diff --git a/develop/detail/macro_scope.hpp b/include/nlohmann/detail/macro_scope.hpp similarity index 100% rename from develop/detail/macro_scope.hpp rename to include/nlohmann/detail/macro_scope.hpp diff --git a/develop/detail/macro_unscope.hpp b/include/nlohmann/detail/macro_unscope.hpp similarity index 100% rename from develop/detail/macro_unscope.hpp rename to include/nlohmann/detail/macro_unscope.hpp diff --git a/develop/detail/meta.hpp b/include/nlohmann/detail/meta.hpp similarity index 99% rename from develop/detail/meta.hpp rename to include/nlohmann/detail/meta.hpp index 585b8d44..49f1069f 100644 --- a/develop/detail/meta.hpp +++ b/include/nlohmann/detail/meta.hpp @@ -6,8 +6,8 @@ #include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type #include // declval -#include "json_fwd.hpp" -#include "detail/macro_scope.hpp" +#include +#include namespace nlohmann { diff --git a/develop/detail/output/binary_writer.hpp b/include/nlohmann/detail/output/binary_writer.hpp similarity index 99% rename from develop/detail/output/binary_writer.hpp rename to include/nlohmann/detail/output/binary_writer.hpp index fdf9a216..10183262 100644 --- a/develop/detail/output/binary_writer.hpp +++ b/include/nlohmann/detail/output/binary_writer.hpp @@ -6,8 +6,8 @@ #include // memcpy #include // numeric_limits -#include "detail/input/binary_reader.hpp" -#include "detail/output/output_adapters.hpp" +#include +#include namespace nlohmann { diff --git a/develop/detail/output/output_adapters.hpp b/include/nlohmann/detail/output/output_adapters.hpp similarity index 100% rename from develop/detail/output/output_adapters.hpp rename to include/nlohmann/detail/output/output_adapters.hpp diff --git a/develop/detail/output/serializer.hpp b/include/nlohmann/detail/output/serializer.hpp similarity index 98% rename from develop/detail/output/serializer.hpp rename to include/nlohmann/detail/output/serializer.hpp index 5ad4796c..a6442644 100644 --- a/develop/detail/output/serializer.hpp +++ b/include/nlohmann/detail/output/serializer.hpp @@ -16,12 +16,12 @@ #include // stringstream #include // is_same -#include "detail/exceptions.hpp" -#include "detail/conversions/to_chars.hpp" -#include "detail/macro_scope.hpp" -#include "detail/meta.hpp" -#include "detail/output/output_adapters.hpp" -#include "detail/value_t.hpp" +#include +#include +#include +#include +#include +#include namespace nlohmann { diff --git a/develop/detail/value_t.hpp b/include/nlohmann/detail/value_t.hpp similarity index 100% rename from develop/detail/value_t.hpp rename to include/nlohmann/detail/value_t.hpp diff --git a/develop/json.hpp b/include/nlohmann/json.hpp similarity index 99% rename from develop/json.hpp rename to include/nlohmann/json.hpp index e1e6d3fd..0ab7d007 100644 --- a/develop/json.hpp +++ b/include/nlohmann/json.hpp @@ -45,28 +45,28 @@ SOFTWARE. #include // string, stoi, to_string #include // declval, forward, move, pair, swap -#include "json_fwd.hpp" -#include "detail/macro_scope.hpp" -#include "detail/meta.hpp" -#include "detail/exceptions.hpp" -#include "detail/value_t.hpp" -#include "detail/conversions/from_json.hpp" -#include "detail/conversions/to_json.hpp" -#include "detail/input/input_adapters.hpp" -#include "detail/input/lexer.hpp" -#include "detail/input/parser.hpp" -#include "detail/iterators/primitive_iterator.hpp" -#include "detail/iterators/internal_iterator.hpp" -#include "detail/iterators/iter_impl.hpp" -#include "detail/iterators/iteration_proxy.hpp" -#include "detail/iterators/json_reverse_iterator.hpp" -#include "detail/output/output_adapters.hpp" -#include "detail/input/binary_reader.hpp" -#include "detail/output/binary_writer.hpp" -#include "detail/output/serializer.hpp" -#include "detail/json_ref.hpp" -#include "detail/json_pointer.hpp" -#include "adl_serializer.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include /*! @brief namespace for Niels Lohmann @@ -7564,6 +7564,6 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std return nlohmann::json::json_pointer(std::string(s, n)); } -#include "detail/macro_unscope.hpp" +#include #endif diff --git a/develop/json_fwd.hpp b/include/nlohmann/json_fwd.hpp similarity index 100% rename from develop/json_fwd.hpp rename to include/nlohmann/json_fwd.hpp diff --git a/src/json.hpp b/single_include/nlohmann/json.hpp similarity index 99% rename from src/json.hpp rename to single_include/nlohmann/json.hpp index 7dbce3b8..6c19d1e4 100644 --- a/src/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -45,7 +45,7 @@ SOFTWARE. #include // string, stoi, to_string #include // declval, forward, move, pair, swap -// #include "json_fwd.hpp" +// #include #ifndef NLOHMANN_JSON_FWD_HPP #define NLOHMANN_JSON_FWD_HPP @@ -111,7 +111,7 @@ using json = basic_json<>; #endif -// #include "detail/macro_scope.hpp" +// #include // This file contains all internal macro definitions @@ -228,7 +228,7 @@ contains a `mapped_type`, whereas `std::vector` fails the test. std::is_integral()))>::value; \ } -// #include "detail/meta.hpp" +// #include #include // not @@ -237,9 +237,9 @@ contains a `mapped_type`, whereas `std::vector` fails the test. #include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type #include // declval -// #include "json_fwd.hpp" +// #include -// #include "detail/macro_scope.hpp" +// #include namespace nlohmann @@ -490,7 +490,7 @@ constexpr T static_const::value; } } -// #include "detail/exceptions.hpp" +// #include #include // exception @@ -821,7 +821,7 @@ class other_error : public exception } } -// #include "detail/value_t.hpp" +// #include #include // array @@ -899,7 +899,7 @@ inline bool operator<(const value_t lhs, const value_t rhs) noexcept } } -// #include "detail/conversions/from_json.hpp" +// #include #include // transform @@ -913,13 +913,13 @@ inline bool operator<(const value_t lhs, const value_t rhs) noexcept #include // pair, declval #include // valarray -// #include "detail/exceptions.hpp" +// #include -// #include "detail/macro_scope.hpp" +// #include -// #include "detail/meta.hpp" +// #include -// #include "detail/value_t.hpp" +// #include namespace nlohmann @@ -1220,7 +1220,7 @@ constexpr const auto& from_json = detail::static_const::va } } -// #include "detail/conversions/to_json.hpp" +// #include #include // or, and, not @@ -1231,9 +1231,9 @@ constexpr const auto& from_json = detail::static_const::va #include // valarray #include // vector -// #include "detail/meta.hpp" +// #include -// #include "detail/value_t.hpp" +// #include namespace nlohmann @@ -1562,7 +1562,7 @@ constexpr const auto& to_json = detail::static_const::value; } } -// #include "detail/input/input_adapters.hpp" +// #include #include // min @@ -1579,7 +1579,7 @@ constexpr const auto& to_json = detail::static_const::value; #include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer #include // pair, declval -// #include "detail/macro_scope.hpp" +// #include namespace nlohmann @@ -1827,7 +1827,7 @@ class input_adapter } } -// #include "detail/input/lexer.hpp" +// #include #include // localeconv @@ -1840,9 +1840,9 @@ class input_adapter #include // char_traits, string #include // vector -// #include "detail/macro_scope.hpp" +// #include -// #include "detail/input/input_adapters.hpp" +// #include namespace nlohmann @@ -3108,7 +3108,7 @@ scan_number_done: } } -// #include "detail/input/parser.hpp" +// #include #include // assert @@ -3118,15 +3118,15 @@ scan_number_done: #include // string #include // move -// #include "detail/exceptions.hpp" +// #include -// #include "detail/macro_scope.hpp" +// #include -// #include "detail/input/input_adapters.hpp" +// #include -// #include "detail/input/lexer.hpp" +// #include -// #include "detail/value_t.hpp" +// #include namespace nlohmann @@ -3704,7 +3704,7 @@ class parser } } -// #include "detail/iterators/primitive_iterator.hpp" +// #include #include // ptrdiff_t @@ -3826,10 +3826,10 @@ class primitive_iterator_t } } -// #include "detail/iterators/internal_iterator.hpp" +// #include -// #include "detail/iterators/primitive_iterator.hpp" +// #include namespace nlohmann @@ -3854,24 +3854,24 @@ template struct internal_iterator } } -// #include "detail/iterators/iter_impl.hpp" +// #include #include // not #include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next #include // conditional, is_const, remove_const -// #include "detail/exceptions.hpp" +// #include -// #include "detail/iterators/internal_iterator.hpp" +// #include -// #include "detail/iterators/primitive_iterator.hpp" +// #include -// #include "detail/macro_scope.hpp" +// #include -// #include "detail/meta.hpp" +// #include -// #include "detail/value_t.hpp" +// #include namespace nlohmann @@ -4476,13 +4476,13 @@ class iter_impl } } -// #include "detail/iterators/iteration_proxy.hpp" +// #include #include // size_t #include // string, to_string -// #include "detail/value_t.hpp" +// #include namespace nlohmann @@ -4577,7 +4577,7 @@ template class iteration_proxy } } -// #include "detail/iterators/json_reverse_iterator.hpp" +// #include #include // ptrdiff_t @@ -4698,7 +4698,7 @@ class json_reverse_iterator : public std::reverse_iterator } } -// #include "detail/output/output_adapters.hpp" +// #include #include // copy @@ -4813,7 +4813,7 @@ class output_adapter } } -// #include "detail/input/binary_reader.hpp" +// #include #include // generate_n @@ -4831,13 +4831,13 @@ class output_adapter #include // char_traits, string #include // make_pair, move -// #include "detail/input/input_adapters.hpp" +// #include -// #include "detail/exceptions.hpp" +// #include -// #include "detail/macro_scope.hpp" +// #include -// #include "detail/value_t.hpp" +// #include namespace nlohmann @@ -6180,7 +6180,7 @@ class binary_reader } } -// #include "detail/output/binary_writer.hpp" +// #include #include // reverse @@ -6189,9 +6189,9 @@ class binary_reader #include // memcpy #include // numeric_limits -// #include "detail/input/binary_reader.hpp" +// #include -// #include "detail/output/output_adapters.hpp" +// #include namespace nlohmann @@ -7093,7 +7093,7 @@ class binary_writer } } -// #include "detail/output/serializer.hpp" +// #include #include // reverse, remove, fill, find, none_of @@ -7112,9 +7112,9 @@ class binary_writer #include // stringstream #include // is_same -// #include "detail/exceptions.hpp" +// #include -// #include "detail/conversions/to_chars.hpp" +// #include #include // assert @@ -8211,13 +8211,13 @@ char* to_chars(char* first, char* last, FloatType value) } // namespace detail } // namespace nlohmann -// #include "detail/macro_scope.hpp" +// #include -// #include "detail/meta.hpp" +// #include -// #include "detail/output/output_adapters.hpp" +// #include -// #include "detail/value_t.hpp" +// #include namespace nlohmann @@ -8830,7 +8830,7 @@ class serializer } } -// #include "detail/json_ref.hpp" +// #include #include @@ -8895,7 +8895,7 @@ class json_ref } } -// #include "detail/json_pointer.hpp" +// #include #include // assert @@ -8903,11 +8903,11 @@ class json_ref #include // string #include // vector -// #include "detail/macro_scope.hpp" +// #include -// #include "detail/exceptions.hpp" +// #include -// #include "detail/value_t.hpp" +// #include namespace nlohmann @@ -9596,14 +9596,14 @@ class json_pointer }; } -// #include "adl_serializer.hpp" +// #include #include -// #include "detail/conversions/from_json.hpp" +// #include -// #include "detail/conversions/to_json.hpp" +// #include namespace nlohmann @@ -17142,7 +17142,7 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std return nlohmann::json::json_pointer(std::string(s, n)); } -// #include "detail/macro_unscope.hpp" +// #include // restore GCC/clang diagnostic settings diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 89f5c221..ddce7e0f 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -101,6 +101,7 @@ foreach(file ${files}) target_compile_definitions(${testcase} PRIVATE CATCH_CONFIG_FAST_COMPILE) target_include_directories(${testcase} PRIVATE "thirdparty/catch") + target_include_directories(${testcase} PRIVATE ${NLOHMANN_JSON_INCLUDE_BUILD_DIR}) target_link_libraries(${testcase} ${NLOHMANN_JSON_TARGET_NAME}) if(NOT MSVC) diff --git a/test/Makefile b/test/Makefile index 91dd7654..4dc39916 100644 --- a/test/Makefile +++ b/test/Makefile @@ -4,7 +4,7 @@ # additional flags CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic -Wcast-align -Wcast-qual -Wno-ctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wmissing-declarations -Wmissing-include-dirs -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-overflow=5 -Wswitch -Wundef -Wno-unused -Wnon-virtual-dtor -Wreorder -Wdeprecated -Wno-float-equal -CPPFLAGS += -I ../src -I . -I thirdparty/catch -DCATCH_CONFIG_FAST_COMPILE +CPPFLAGS += -I ../single_include -I . -I thirdparty/catch -DCATCH_CONFIG_FAST_COMPILE SOURCES = src/unit.cpp \ src/unit-algorithms.cpp \ @@ -60,11 +60,11 @@ clean: # single test file ############################################################################## -json_unit: $(OBJECTS) ../src/json.hpp thirdparty/catch/catch.hpp +json_unit: $(OBJECTS) ../single_include/nlohmann/json.hpp thirdparty/catch/catch.hpp @echo "[CXXLD] $@" @$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJECTS) -o $@ -%.o: %.cpp ../src/json.hpp thirdparty/catch/catch.hpp +%.o: %.cpp ../single_include/nlohmann/json.hpp thirdparty/catch/catch.hpp @echo "[CXX] $@" @$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@ @@ -73,7 +73,7 @@ json_unit: $(OBJECTS) ../src/json.hpp thirdparty/catch/catch.hpp # individual test cases ############################################################################## -test-%: src/unit-%.o src/unit.o ../src/json.hpp thirdparty/catch/catch.hpp +test-%: src/unit-%.o src/unit.o ../single_include/nlohmann/json.hpp thirdparty/catch/catch.hpp @echo "[CXXLD] $@" @$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $< src/unit.o -o $@ diff --git a/test/src/fuzzer-parse_cbor.cpp b/test/src/fuzzer-parse_cbor.cpp index 576407bb..72978e54 100644 --- a/test/src/fuzzer-parse_cbor.cpp +++ b/test/src/fuzzer-parse_cbor.cpp @@ -20,7 +20,7 @@ Licensed under the MIT License . #include #include -#include +#include using json = nlohmann::json; diff --git a/test/src/fuzzer-parse_json.cpp b/test/src/fuzzer-parse_json.cpp index 6b2b1154..86a8f7fb 100644 --- a/test/src/fuzzer-parse_json.cpp +++ b/test/src/fuzzer-parse_json.cpp @@ -21,7 +21,7 @@ Licensed under the MIT License . #include #include -#include +#include using json = nlohmann::json; diff --git a/test/src/fuzzer-parse_msgpack.cpp b/test/src/fuzzer-parse_msgpack.cpp index c3f9eb5d..03da5759 100644 --- a/test/src/fuzzer-parse_msgpack.cpp +++ b/test/src/fuzzer-parse_msgpack.cpp @@ -20,7 +20,7 @@ Licensed under the MIT License . #include #include -#include +#include using json = nlohmann::json; diff --git a/test/src/fuzzer-parse_ubjson.cpp b/test/src/fuzzer-parse_ubjson.cpp index 947d96e0..1980f684 100644 --- a/test/src/fuzzer-parse_ubjson.cpp +++ b/test/src/fuzzer-parse_ubjson.cpp @@ -20,7 +20,7 @@ Licensed under the MIT License . #include #include -#include +#include using json = nlohmann::json; diff --git a/test/src/unit-algorithms.cpp b/test/src/unit-algorithms.cpp index f74ca72e..001f566e 100644 --- a/test/src/unit-algorithms.cpp +++ b/test/src/unit-algorithms.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("algorithms") diff --git a/test/src/unit-allocator.cpp b/test/src/unit-allocator.cpp index a182d989..9fdb41cb 100644 --- a/test/src/unit-allocator.cpp +++ b/test/src/unit-allocator.cpp @@ -29,7 +29,7 @@ SOFTWARE. #include "catch.hpp" #define private public -#include "json.hpp" +#include using nlohmann::json; // special test case to check if memory is leaked if constructor throws diff --git a/test/src/unit-capacity.cpp b/test/src/unit-capacity.cpp index 4df512a8..1c0d573a 100644 --- a/test/src/unit-capacity.cpp +++ b/test/src/unit-capacity.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("capacity") diff --git a/test/src/unit-cbor.cpp b/test/src/unit-cbor.cpp index 43fca028..41b2e15c 100644 --- a/test/src/unit-cbor.cpp +++ b/test/src/unit-cbor.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; #include diff --git a/test/src/unit-class_const_iterator.cpp b/test/src/unit-class_const_iterator.cpp index 5ecc9d6a..cf6777e9 100644 --- a/test/src/unit-class_const_iterator.cpp +++ b/test/src/unit-class_const_iterator.cpp @@ -29,7 +29,7 @@ SOFTWARE. #include "catch.hpp" #define private public -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("const_iterator class") diff --git a/test/src/unit-class_iterator.cpp b/test/src/unit-class_iterator.cpp index 45f28ef6..168988d6 100644 --- a/test/src/unit-class_iterator.cpp +++ b/test/src/unit-class_iterator.cpp @@ -29,7 +29,7 @@ SOFTWARE. #include "catch.hpp" #define private public -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("iterator class") diff --git a/test/src/unit-class_lexer.cpp b/test/src/unit-class_lexer.cpp index 45355cd7..4ae7e77c 100644 --- a/test/src/unit-class_lexer.cpp +++ b/test/src/unit-class_lexer.cpp @@ -29,7 +29,7 @@ SOFTWARE. #include "catch.hpp" #define private public -#include "json.hpp" +#include using nlohmann::json; // shortcut to scan a string literal diff --git a/test/src/unit-class_parser.cpp b/test/src/unit-class_parser.cpp index 91fd1819..ad1a9723 100644 --- a/test/src/unit-class_parser.cpp +++ b/test/src/unit-class_parser.cpp @@ -29,7 +29,7 @@ SOFTWARE. #include "catch.hpp" #define private public -#include "json.hpp" +#include using nlohmann::json; #include diff --git a/test/src/unit-comparison.cpp b/test/src/unit-comparison.cpp index dbd7788b..3ca7d552 100644 --- a/test/src/unit-comparison.cpp +++ b/test/src/unit-comparison.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; // helper function to check std::less diff --git a/test/src/unit-concepts.cpp b/test/src/unit-concepts.cpp index dea1238d..29be62dd 100644 --- a/test/src/unit-concepts.cpp +++ b/test/src/unit-concepts.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("concepts") diff --git a/test/src/unit-constructor1.cpp b/test/src/unit-constructor1.cpp index 33a4f677..b1aafc34 100644 --- a/test/src/unit-constructor1.cpp +++ b/test/src/unit-constructor1.cpp @@ -29,7 +29,7 @@ SOFTWARE. #include "catch.hpp" #define private public -#include "json.hpp" +#include using nlohmann::json; #include diff --git a/test/src/unit-constructor2.cpp b/test/src/unit-constructor2.cpp index 58545ad0..5cb33fa4 100644 --- a/test/src/unit-constructor2.cpp +++ b/test/src/unit-constructor2.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("other constructors and destructor") diff --git a/test/src/unit-convenience.cpp b/test/src/unit-convenience.cpp index f74c00ae..fc04d4a6 100644 --- a/test/src/unit-convenience.cpp +++ b/test/src/unit-convenience.cpp @@ -29,7 +29,7 @@ SOFTWARE. #include "catch.hpp" #define private public -#include "json.hpp" +#include using nlohmann::json; void check_escaped(const char* original, const char* escaped = "", const bool ensure_ascii = false); diff --git a/test/src/unit-conversions.cpp b/test/src/unit-conversions.cpp index f9d49a83..38c3d8dd 100644 --- a/test/src/unit-conversions.cpp +++ b/test/src/unit-conversions.cpp @@ -29,7 +29,7 @@ SOFTWARE. #include "catch.hpp" #define private public -#include "json.hpp" +#include using nlohmann::json; #include diff --git a/test/src/unit-deserialization.cpp b/test/src/unit-deserialization.cpp index 1da791a9..e790f21a 100644 --- a/test/src/unit-deserialization.cpp +++ b/test/src/unit-deserialization.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; #include diff --git a/test/src/unit-element_access1.cpp b/test/src/unit-element_access1.cpp index e288cb5c..cc9b3ff4 100644 --- a/test/src/unit-element_access1.cpp +++ b/test/src/unit-element_access1.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("element access 1") diff --git a/test/src/unit-element_access2.cpp b/test/src/unit-element_access2.cpp index 8f628f69..4a566b15 100644 --- a/test/src/unit-element_access2.cpp +++ b/test/src/unit-element_access2.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("element access 2") diff --git a/test/src/unit-inspection.cpp b/test/src/unit-inspection.cpp index 21f637aa..b4fdb9a6 100644 --- a/test/src/unit-inspection.cpp +++ b/test/src/unit-inspection.cpp @@ -29,7 +29,7 @@ SOFTWARE. #include "catch.hpp" #include -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("object inspection") @@ -316,8 +316,8 @@ TEST_CASE("object inspection") SECTION("round trips") { for (const auto& s : - {"3.141592653589793", "1000000000000000010E5" - }) + {"3.141592653589793", "1000000000000000010E5" + }) { json j1 = json::parse(s); std::string s1 = j1.dump(); diff --git a/test/src/unit-items.cpp b/test/src/unit-items.cpp index 4f5bd15d..9d455204 100644 --- a/test/src/unit-items.cpp +++ b/test/src/unit-items.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("iterator_wrapper") diff --git a/test/src/unit-iterators1.cpp b/test/src/unit-iterators1.cpp index 8c5eddba..ea789fa3 100644 --- a/test/src/unit-iterators1.cpp +++ b/test/src/unit-iterators1.cpp @@ -29,7 +29,7 @@ SOFTWARE. #include "catch.hpp" #define private public -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("iterators 1") diff --git a/test/src/unit-iterators2.cpp b/test/src/unit-iterators2.cpp index d872890f..b778f040 100644 --- a/test/src/unit-iterators2.cpp +++ b/test/src/unit-iterators2.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("iterators 2") diff --git a/test/src/unit-json_patch.cpp b/test/src/unit-json_patch.cpp index 3490f704..c69b3f07 100644 --- a/test/src/unit-json_patch.cpp +++ b/test/src/unit-json_patch.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; #include diff --git a/test/src/unit-json_pointer.cpp b/test/src/unit-json_pointer.cpp index 7a493347..d6b61494 100644 --- a/test/src/unit-json_pointer.cpp +++ b/test/src/unit-json_pointer.cpp @@ -29,7 +29,7 @@ SOFTWARE. #include "catch.hpp" #define private public -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("JSON pointers") diff --git a/test/src/unit-merge_patch.cpp b/test/src/unit-merge_patch.cpp index 79bbaa2a..88720766 100644 --- a/test/src/unit-merge_patch.cpp +++ b/test/src/unit-merge_patch.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("JSON Merge Patch") diff --git a/test/src/unit-meta.cpp b/test/src/unit-meta.cpp index f6e9d6f4..63d9abad 100644 --- a/test/src/unit-meta.cpp +++ b/test/src/unit-meta.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("version information") diff --git a/test/src/unit-modifiers.cpp b/test/src/unit-modifiers.cpp index 44b9cf2b..3b31bda9 100644 --- a/test/src/unit-modifiers.cpp +++ b/test/src/unit-modifiers.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("modifiers") diff --git a/test/src/unit-msgpack.cpp b/test/src/unit-msgpack.cpp index 531012b7..81aa3637 100644 --- a/test/src/unit-msgpack.cpp +++ b/test/src/unit-msgpack.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; #include diff --git a/test/src/unit-noexcept.cpp b/test/src/unit-noexcept.cpp index 56ca4a41..6d0fd359 100644 --- a/test/src/unit-noexcept.cpp +++ b/test/src/unit-noexcept.cpp @@ -27,7 +27,7 @@ SOFTWARE. */ #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; diff --git a/test/src/unit-pointer_access.cpp b/test/src/unit-pointer_access.cpp index 19254907..eec88ed3 100644 --- a/test/src/unit-pointer_access.cpp +++ b/test/src/unit-pointer_access.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("pointer access") diff --git a/test/src/unit-readme.cpp b/test/src/unit-readme.cpp index ebf10583..ade0e0a5 100644 --- a/test/src/unit-readme.cpp +++ b/test/src/unit-readme.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; #include diff --git a/test/src/unit-reference_access.cpp b/test/src/unit-reference_access.cpp index ea84c9e7..a87a0c54 100644 --- a/test/src/unit-reference_access.cpp +++ b/test/src/unit-reference_access.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("reference access") diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index c4a04775..bcdb4ace 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -29,7 +29,7 @@ SOFTWARE. #include "catch.hpp" #define private public -#include "json.hpp" +#include using nlohmann::json; #include diff --git a/test/src/unit-serialization.cpp b/test/src/unit-serialization.cpp index 5668b7ba..2f667f41 100644 --- a/test/src/unit-serialization.cpp +++ b/test/src/unit-serialization.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; TEST_CASE("serialization") diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp index f88bc9d0..bd813aa5 100644 --- a/test/src/unit-testsuites.cpp +++ b/test/src/unit-testsuites.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; #include diff --git a/test/src/unit-to_chars.cpp b/test/src/unit-to_chars.cpp index 973e4e19..dffeaed0 100644 --- a/test/src/unit-to_chars.cpp +++ b/test/src/unit-to_chars.cpp @@ -32,7 +32,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::detail::dtoa_impl::reinterpret_bits; static float make_float(uint32_t sign_bit, uint32_t biased_exponent, uint32_t significand) diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index 144fcfe1..f0492702 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; #include diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index a4adc3be..44204151 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -28,7 +28,7 @@ SOFTWARE. #include "catch.hpp" -#include "json.hpp" +#include using nlohmann::json; diff --git a/test/src/unit-unicode.cpp b/test/src/unit-unicode.cpp index 97fc2751..82a29204 100644 --- a/test/src/unit-unicode.cpp +++ b/test/src/unit-unicode.cpp @@ -29,7 +29,7 @@ SOFTWARE. #include "catch.hpp" #define private public -#include "json.hpp" +#include using nlohmann::json; #include diff --git a/third_party/amalgamate/config.json b/third_party/amalgamate/config.json index ce937e65..32fc21cf 100644 --- a/third_party/amalgamate/config.json +++ b/third_party/amalgamate/config.json @@ -1,8 +1,8 @@ { "project": "JSON for Modern C++", - "target": "src/json.hpp", + "target": "single_include/nlohmann/json.hpp", "sources": [ - "json.hpp" + "include/nlohmann/json.hpp" ], - "include_paths": ["."] + "include_paths": ["include"] } From 0258484626e1af9b306588e929e04b0f512c0eff Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Thu, 1 Feb 2018 22:20:26 +0100 Subject: [PATCH 104/106] :bookmark: set version to 3.1.0 - updated documentation wrt. new repository layout - temporarily switched off Homebrew --HEAD building (can only be switched on after release) - set copyright date to 2018 --- .github/CONTRIBUTING.md | 4 +- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .travis.yml | 4 +- CMakeLists.txt | 2 +- ChangeLog.md | 65 +++++++++++++++++- LICENSE.MIT | 2 +- README.md | 14 ++-- doc/Doxyfile | 6 +- doc/Makefile | 4 +- doc/examples/README.cpp | 2 +- doc/examples/README.link | 2 +- doc/examples/array.cpp | 2 +- doc/examples/array.link | 2 +- doc/examples/at__object_t_key_type.cpp | 2 +- doc/examples/at__object_t_key_type.link | 2 +- doc/examples/at__object_t_key_type_const.cpp | 2 +- doc/examples/at__object_t_key_type_const.link | 2 +- doc/examples/at__size_type.cpp | 2 +- doc/examples/at__size_type.link | 2 +- doc/examples/at__size_type_const.cpp | 2 +- doc/examples/at__size_type_const.link | 2 +- doc/examples/at_json_pointer.cpp | 2 +- doc/examples/at_json_pointer.link | 2 +- doc/examples/at_json_pointer_const.cpp | 2 +- doc/examples/at_json_pointer_const.link | 2 +- doc/examples/back.cpp | 2 +- doc/examples/back.link | 2 +- doc/examples/basic_json__CompatibleType.cpp | 2 +- doc/examples/basic_json__CompatibleType.link | 2 +- .../basic_json__CompatibleType.output | 4 +- doc/examples/basic_json__InputIt_InputIt.cpp | 2 +- doc/examples/basic_json__InputIt_InputIt.link | 2 +- doc/examples/basic_json__basic_json.cpp | 2 +- doc/examples/basic_json__basic_json.link | 2 +- doc/examples/basic_json__copyassignment.cpp | 2 +- doc/examples/basic_json__copyassignment.link | 2 +- doc/examples/basic_json__list_init_t.cpp | 2 +- doc/examples/basic_json__list_init_t.link | 2 +- doc/examples/basic_json__moveconstructor.cpp | 2 +- doc/examples/basic_json__moveconstructor.link | 2 +- doc/examples/basic_json__nullptr_t.cpp | 2 +- doc/examples/basic_json__nullptr_t.link | 2 +- .../basic_json__size_type_basic_json.cpp | 2 +- .../basic_json__size_type_basic_json.link | 2 +- doc/examples/basic_json__value.cpp | 2 +- doc/examples/basic_json__value.link | 2 +- doc/examples/basic_json__value_ptr.cpp | 2 +- doc/examples/basic_json__value_ptr.link | 2 +- doc/examples/basic_json__value_t.cpp | 2 +- doc/examples/basic_json__value_t.link | 2 +- doc/examples/begin.cpp | 2 +- doc/examples/begin.link | 2 +- doc/examples/cbegin.cpp | 2 +- doc/examples/cbegin.link | 2 +- doc/examples/cend.cpp | 2 +- doc/examples/cend.link | 2 +- doc/examples/clear.cpp | 2 +- doc/examples/clear.link | 2 +- doc/examples/count.cpp | 2 +- doc/examples/count.link | 2 +- doc/examples/crbegin.cpp | 2 +- doc/examples/crbegin.link | 2 +- doc/examples/crend.cpp | 2 +- doc/examples/crend.link | 2 +- doc/examples/diff.cpp | 2 +- doc/examples/diff.link | 2 +- doc/examples/dump.cpp | 2 +- doc/examples/dump.link | 2 +- doc/examples/emplace.cpp | 2 +- doc/examples/emplace.link | 2 +- doc/examples/emplace_back.cpp | 2 +- doc/examples/emplace_back.link | 2 +- doc/examples/empty.cpp | 2 +- doc/examples/empty.link | 2 +- doc/examples/end.cpp | 2 +- doc/examples/end.link | 2 +- doc/examples/erase__IteratorType.cpp | 2 +- doc/examples/erase__IteratorType.link | 2 +- .../erase__IteratorType_IteratorType.cpp | 2 +- .../erase__IteratorType_IteratorType.link | 2 +- doc/examples/erase__key_type.cpp | 2 +- doc/examples/erase__key_type.link | 2 +- doc/examples/erase__size_type.cpp | 2 +- doc/examples/erase__size_type.link | 2 +- doc/examples/exception.cpp | 2 +- doc/examples/exception.link | 2 +- doc/examples/find__key_type.cpp | 2 +- doc/examples/find__key_type.link | 2 +- doc/examples/flatten.cpp | 2 +- doc/examples/flatten.link | 2 +- doc/examples/from_cbor.cpp | 2 +- doc/examples/from_cbor.link | 2 +- doc/examples/from_msgpack.cpp | 2 +- doc/examples/from_msgpack.link | 2 +- doc/examples/from_ubjson.cpp | 2 +- doc/examples/from_ubjson.link | 2 +- doc/examples/front.cpp | 2 +- doc/examples/front.link | 2 +- doc/examples/get__PointerType.cpp | 2 +- doc/examples/get__PointerType.link | 2 +- doc/examples/get__ValueType_const.cpp | 2 +- doc/examples/get__ValueType_const.link | 2 +- doc/examples/get_ptr.cpp | 2 +- doc/examples/get_ptr.link | 2 +- doc/examples/get_ref.cpp | 2 +- doc/examples/get_ref.link | 2 +- doc/examples/insert.cpp | 2 +- doc/examples/insert.link | 2 +- doc/examples/insert__count.cpp | 2 +- doc/examples/insert__count.link | 2 +- doc/examples/insert__ilist.cpp | 2 +- doc/examples/insert__ilist.link | 2 +- doc/examples/insert__range.cpp | 2 +- doc/examples/insert__range.link | 2 +- doc/examples/insert__range_object.cpp | 2 +- doc/examples/insert__range_object.link | 2 +- doc/examples/invalid_iterator.cpp | 2 +- doc/examples/invalid_iterator.link | 2 +- doc/examples/is_array.cpp | 2 +- doc/examples/is_array.link | 2 +- doc/examples/is_boolean.cpp | 2 +- doc/examples/is_boolean.link | 2 +- doc/examples/is_discarded.cpp | 2 +- doc/examples/is_discarded.link | 2 +- doc/examples/is_null.cpp | 2 +- doc/examples/is_null.link | 2 +- doc/examples/is_number.cpp | 2 +- doc/examples/is_number.link | 2 +- doc/examples/is_number_float.cpp | 2 +- doc/examples/is_number_float.link | 2 +- doc/examples/is_number_integer.cpp | 2 +- doc/examples/is_number_integer.link | 2 +- doc/examples/is_number_unsigned.cpp | 2 +- doc/examples/is_number_unsigned.link | 2 +- doc/examples/is_object.cpp | 2 +- doc/examples/is_object.link | 2 +- doc/examples/is_primitive.cpp | 2 +- doc/examples/is_primitive.link | 2 +- doc/examples/is_string.cpp | 2 +- doc/examples/is_string.link | 2 +- doc/examples/is_structured.cpp | 2 +- doc/examples/is_structured.link | 2 +- doc/examples/items.cpp | 2 +- doc/examples/items.link | 2 +- doc/examples/iterator_wrapper.cpp | 2 +- doc/examples/iterator_wrapper.link | 2 +- doc/examples/json_pointer.cpp | 2 +- doc/examples/json_pointer.link | 2 +- doc/examples/json_pointer__to_string.cpp | 2 +- doc/examples/json_pointer__to_string.link | 2 +- doc/examples/max_size.cpp | 2 +- doc/examples/max_size.link | 2 +- doc/examples/merge_patch.cpp | 2 +- doc/examples/merge_patch.link | 2 +- doc/examples/meta.cpp | 2 +- doc/examples/meta.link | 2 +- doc/examples/meta.output | 6 +- doc/examples/object.cpp | 2 +- doc/examples/object.link | 2 +- doc/examples/operator__ValueType.cpp | 2 +- doc/examples/operator__ValueType.link | 2 +- doc/examples/operator__equal.cpp | 2 +- doc/examples/operator__equal.link | 2 +- doc/examples/operator__equal__nullptr_t.cpp | 2 +- doc/examples/operator__equal__nullptr_t.link | 2 +- doc/examples/operator__greater.cpp | 2 +- doc/examples/operator__greater.link | 2 +- doc/examples/operator__greaterequal.cpp | 2 +- doc/examples/operator__greaterequal.link | 2 +- doc/examples/operator__less.cpp | 2 +- doc/examples/operator__less.link | 2 +- doc/examples/operator__lessequal.cpp | 2 +- doc/examples/operator__lessequal.link | 2 +- doc/examples/operator__notequal.cpp | 2 +- doc/examples/operator__notequal.link | 2 +- .../operator__notequal__nullptr_t.cpp | 2 +- .../operator__notequal__nullptr_t.link | 2 +- doc/examples/operator__value_t.cpp | 2 +- doc/examples/operator__value_t.link | 2 +- doc/examples/operator_deserialize.cpp | 2 +- doc/examples/operator_deserialize.link | 2 +- doc/examples/operator_serialize.cpp | 2 +- doc/examples/operator_serialize.link | 2 +- doc/examples/operatorarray__key_type.cpp | 2 +- doc/examples/operatorarray__key_type.link | 2 +- .../operatorarray__key_type_const.cpp | 2 +- .../operatorarray__key_type_const.link | 2 +- doc/examples/operatorarray__size_type.cpp | 2 +- doc/examples/operatorarray__size_type.link | 2 +- .../operatorarray__size_type_const.cpp | 2 +- .../operatorarray__size_type_const.link | 2 +- doc/examples/operatorjson_pointer.cpp | 2 +- doc/examples/operatorjson_pointer.link | 2 +- doc/examples/operatorjson_pointer_const.cpp | 2 +- doc/examples/operatorjson_pointer_const.link | 2 +- doc/examples/other_error.cpp | 2 +- doc/examples/other_error.link | 2 +- doc/examples/out_of_range.cpp | 2 +- doc/examples/out_of_range.link | 2 +- .../parse__array__parser_callback_t.cpp | 2 +- .../parse__array__parser_callback_t.link | 2 +- ...contiguouscontainer__parser_callback_t.cpp | 2 +- ...ontiguouscontainer__parser_callback_t.link | 2 +- .../parse__istream__parser_callback_t.cpp | 2 +- .../parse__istream__parser_callback_t.link | 2 +- ...parse__iteratortype__parser_callback_t.cpp | 2 +- ...arse__iteratortype__parser_callback_t.link | 2 +- .../parse__string__parser_callback_t.cpp | 2 +- .../parse__string__parser_callback_t.link | 2 +- doc/examples/parse_error.cpp | 2 +- doc/examples/parse_error.link | 2 +- doc/examples/patch.cpp | 2 +- doc/examples/patch.link | 2 +- doc/examples/push_back.cpp | 2 +- doc/examples/push_back.link | 2 +- doc/examples/push_back__initializer_list.cpp | 2 +- doc/examples/push_back__initializer_list.link | 2 +- doc/examples/push_back__object_t__value.cpp | 2 +- doc/examples/push_back__object_t__value.link | 2 +- doc/examples/rbegin.cpp | 2 +- doc/examples/rbegin.link | 2 +- doc/examples/rend.cpp | 2 +- doc/examples/rend.link | 2 +- doc/examples/size.cpp | 2 +- doc/examples/size.link | 2 +- doc/examples/swap__array_t.cpp | 2 +- doc/examples/swap__array_t.link | 2 +- doc/examples/swap__object_t.cpp | 2 +- doc/examples/swap__object_t.link | 2 +- doc/examples/swap__reference.cpp | 2 +- doc/examples/swap__reference.link | 2 +- doc/examples/swap__reference.output | 2 +- doc/examples/swap__string_t.cpp | 2 +- doc/examples/swap__string_t.link | 2 +- doc/examples/to_cbor.cpp | 2 +- doc/examples/to_cbor.link | 2 +- doc/examples/to_msgpack.cpp | 2 +- doc/examples/to_msgpack.link | 2 +- doc/examples/to_ubjson.cpp | 2 +- doc/examples/to_ubjson.link | 2 +- doc/examples/type.cpp | 2 +- doc/examples/type.link | 2 +- doc/examples/type_error.cpp | 2 +- doc/examples/type_error.link | 2 +- doc/examples/type_name.cpp | 2 +- doc/examples/type_name.link | 2 +- doc/examples/unflatten.cpp | 2 +- doc/examples/unflatten.link | 2 +- doc/examples/update.cpp | 2 +- doc/examples/update.link | 2 +- doc/examples/update__range.cpp | 2 +- doc/examples/update__range.link | 2 +- doc/index.md | 4 +- doc/json.gif | Bin 4372509 -> 1541683 bytes include/nlohmann/json.hpp | 10 +-- meson.build | 2 +- single_include/nlohmann/json.hpp | 10 +-- test/src/fuzzer-driver_afl.cpp | 2 +- test/src/fuzzer-parse_cbor.cpp | 2 +- test/src/fuzzer-parse_json.cpp | 2 +- test/src/fuzzer-parse_msgpack.cpp | 2 +- test/src/fuzzer-parse_ubjson.cpp | 2 +- test/src/unit-algorithms.cpp | 4 +- test/src/unit-allocator.cpp | 4 +- test/src/unit-capacity.cpp | 4 +- test/src/unit-cbor.cpp | 4 +- test/src/unit-class_const_iterator.cpp | 4 +- test/src/unit-class_iterator.cpp | 4 +- test/src/unit-class_lexer.cpp | 4 +- test/src/unit-class_parser.cpp | 4 +- test/src/unit-comparison.cpp | 4 +- test/src/unit-concepts.cpp | 4 +- test/src/unit-constructor1.cpp | 4 +- test/src/unit-constructor2.cpp | 4 +- test/src/unit-convenience.cpp | 4 +- test/src/unit-conversions.cpp | 4 +- test/src/unit-deserialization.cpp | 4 +- test/src/unit-element_access1.cpp | 4 +- test/src/unit-element_access2.cpp | 4 +- test/src/unit-inspection.cpp | 8 +-- test/src/unit-items.cpp | 4 +- test/src/unit-iterators1.cpp | 4 +- test/src/unit-iterators2.cpp | 4 +- test/src/unit-json_patch.cpp | 4 +- test/src/unit-json_pointer.cpp | 4 +- test/src/unit-merge_patch.cpp | 4 +- test/src/unit-meta.cpp | 10 +-- test/src/unit-modifiers.cpp | 4 +- test/src/unit-msgpack.cpp | 4 +- test/src/unit-noexcept.cpp | 4 +- test/src/unit-pointer_access.cpp | 4 +- test/src/unit-readme.cpp | 4 +- test/src/unit-reference_access.cpp | 4 +- test/src/unit-regression.cpp | 4 +- test/src/unit-serialization.cpp | 4 +- test/src/unit-testsuites.cpp | 4 +- test/src/unit-to_chars.cpp | 4 +- test/src/unit-ubjson.cpp | 4 +- test/src/unit-udt.cpp | 4 +- test/src/unit-unicode.cpp | 4 +- test/src/unit.cpp | 4 +- 301 files changed, 431 insertions(+), 366 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 85ff9b50..8dbacb78 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -26,11 +26,11 @@ Please stick to the [issue template](https://github.com/nlohmann/json/blob/devel ## Files to change -:exclamation: Before you make any changes, note the single-header file [`src/json.hpp`](https://github.com/nlohmann/json/blob/develop/src/json.hpp) is **generated** from the source files in the [`develop` directory](https://github.com/nlohmann/json/tree/develop/develop). Please **do not** edit file `src/json.hpp` directly, but change the `develop` sources and regenerate file `src/json.hpp` by executing `make amalgamate`. +:exclamation: Before you make any changes, note the single-header file [`single_include/nlohmann/json.hpp`](https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp) is **generated** from the source files in the [`include/nlohmann` directory](https://github.com/nlohmann/json/tree/develop/include/nlohmann). Please **do not** edit file `single_include/nlohmann/json.hpp` directly, but change the `include/nlohmann` sources and regenerate file `single_include/nlohmann/json.hpp` by executing `make amalgamate`. To make changes, you need to edit the following files: -1. [`develop/*`](https://github.com/nlohmann/json/tree/develop/develop) - These files are the sources of the library. Before testing or creating a pull request, execute `make amalgamate` to regenerate `src/json.hpp`. +1. [`include/nlohmann/*`](https://github.com/nlohmann/json/tree/develop/include/nlohmann) - These files are the sources of the library. Before testing or creating a pull request, execute `make amalgamate` to regenerate `single_include/nlohmann/json.hpp`. 2. [`test/src/unit-*.cpp`](https://github.com/nlohmann/json/tree/develop/test/src) - These files contain the [Catch](https://github.com/philsquared/Catch) unit tests which currently cover [100 %](https://coveralls.io/github/nlohmann/json) of the library's code. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5863d0b5..d75a67b4 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -9,7 +9,7 @@ Read the [Contribution Guidelines](https://github.com/nlohmann/json/blob/develop - [ ] Changes are described in the pull request, or an [existing issue is referenced](https://github.com/nlohmann/json/issues). - [ ] The test suite [compiles and runs](https://github.com/nlohmann/json/blob/develop/README.md#execute-unit-tests) without error. - [ ] [Code coverage](https://coveralls.io/github/nlohmann/json) is 100%. Test cases can be added by editing the [test suite](https://github.com/nlohmann/json/tree/develop/test/src). -- [ ] The source code is amalgamated; that is, after making changes to the sources in the `develop` directory, run `make amalgamate` to create the single-header file `src/json.hpp`. The whole process is described [here](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md#files-to-change). +- [ ] The source code is amalgamated; that is, after making changes to the sources in the `include/nlohmann` directory, run `make amalgamate` to create the single-header file `single_include/nlohmann/json.hpp`. The whole process is described [here](https://github.com/nlohmann/json/blob/develop/.github/CONTRIBUTING.md#files-to-change). ## Please don't diff --git a/.travis.yml b/.travis.yml index 6c284754..ef06dbfa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -296,6 +296,6 @@ script: - if [ `which brew` ]; then brew update ; brew tap nlohmann/json ; - brew install nlohmann_json --HEAD ; - brew test nlohmann_json ; + #brew install nlohmann_json --HEAD ; + #brew test nlohmann_json ; fi diff --git a/CMakeLists.txt b/CMakeLists.txt index ca4f49a2..22408ff6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.0.0) ## PROJECT ## name and version ## -project(nlohmann_json VERSION 3.0.1 LANGUAGES CXX) +project(nlohmann_json VERSION 3.1.0 LANGUAGES CXX) ## ## INCLUDE diff --git a/ChangeLog.md b/ChangeLog.md index bb95f937..bc03ba20 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,6 +1,69 @@ # Change Log All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [v3.1.0](https://github.com/nlohmann/json/releases/tag/v3.1.0) (2018-02-01) +[Full Changelog](https://github.com/nlohmann/json/compare/v3.0.1...v3.1.0) + +- I have a proposal [\#949](https://github.com/nlohmann/json/issues/949) +- VERSION define\(s\) [\#948](https://github.com/nlohmann/json/issues/948) +- v3.0.1 compile error in icc 16.0.4 [\#947](https://github.com/nlohmann/json/issues/947) +- Use in VS2017 15.5.5 [\#946](https://github.com/nlohmann/json/issues/946) +- Process for reporting Security Bugs? [\#945](https://github.com/nlohmann/json/issues/945) +- Please expose a NLOHMANN\_JSON\_VERSION macro [\#943](https://github.com/nlohmann/json/issues/943) +- Change header include directory to nlohmann/json [\#942](https://github.com/nlohmann/json/issues/942) +- string\_type in binary\_reader [\#941](https://github.com/nlohmann/json/issues/941) +- compile error with clang 5.0 -std=c++1z and no string\_view [\#939](https://github.com/nlohmann/json/issues/939) +- Allow overriding JSON\_THROW to something else than abort\(\) [\#938](https://github.com/nlohmann/json/issues/938) +- Handle invalid string in Json file [\#937](https://github.com/nlohmann/json/issues/937) +- Unused variable 'kMinExp' [\#935](https://github.com/nlohmann/json/issues/935) +- test [\#934](https://github.com/nlohmann/json/issues/934) +- yytext is already defined [\#933](https://github.com/nlohmann/json/issues/933) +- Equality operator fails [\#931](https://github.com/nlohmann/json/issues/931) +- use in visual studio 2015 [\#929](https://github.com/nlohmann/json/issues/929) +- Relative includes of json\_fwd.hpp in detail/meta.hpp. \[Develop branch\] [\#928](https://github.com/nlohmann/json/issues/928) +- GCC 7.x issue [\#926](https://github.com/nlohmann/json/issues/926) +- json\_fwd.hpp not installed [\#923](https://github.com/nlohmann/json/issues/923) +- Use Google Benchmarks [\#921](https://github.com/nlohmann/json/issues/921) +- Move class json\_pointer to separate file [\#920](https://github.com/nlohmann/json/issues/920) +- Unable to locate 'to\_json\(\)' and 'from\_json\(\)' methods in the same namespace [\#917](https://github.com/nlohmann/json/issues/917) +- \[answered\]Read key1 from .value example [\#914](https://github.com/nlohmann/json/issues/914) +- Don't use `define private public` in test files [\#913](https://github.com/nlohmann/json/issues/913) +- value\(\) template argument type deduction [\#912](https://github.com/nlohmann/json/issues/912) +- Installation path is incorrect [\#910](https://github.com/nlohmann/json/issues/910) +- H [\#909](https://github.com/nlohmann/json/issues/909) +- Build failure using clang 5 [\#908](https://github.com/nlohmann/json/issues/908) +- Amalgate [\#907](https://github.com/nlohmann/json/issues/907) +- Update documentation and tests wrt. split headers [\#906](https://github.com/nlohmann/json/issues/906) +- Lib not working on ubuntu 16.04 [\#905](https://github.com/nlohmann/json/issues/905) +- Problem when writing to file. [\#904](https://github.com/nlohmann/json/issues/904) +- C2864 error when compiling with VS2015 and VS 2017 [\#903](https://github.com/nlohmann/json/issues/903) +- \[json.exception.type\_error.304\] cannot use at\(\) with object [\#902](https://github.com/nlohmann/json/issues/902) +- How do I forward nlohmann::json declaration? [\#899](https://github.com/nlohmann/json/issues/899) +- How to effectively store binary data? [\#898](https://github.com/nlohmann/json/issues/898) +- How to get the length of a JSON string without retrieving its std::string? [\#897](https://github.com/nlohmann/json/issues/897) +- Regression Tests Failure using "ctest" [\#887](https://github.com/nlohmann/json/issues/887) +- Discuss: add JSON Merge Patch \(RFC 7396\)? [\#877](https://github.com/nlohmann/json/issues/877) +- Discuss: replace static "iterator\_wrapper" function with "items" member function [\#874](https://github.com/nlohmann/json/issues/874) +- Make optional user-data available in from\_json [\#864](https://github.com/nlohmann/json/issues/864) +- Casting to std::string not working in VS2015 [\#861](https://github.com/nlohmann/json/issues/861) +- Sequential reading of JSON arrays [\#851](https://github.com/nlohmann/json/issues/851) +- Idea: Handle Multimaps Better [\#816](https://github.com/nlohmann/json/issues/816) +- Floating point rounding [\#777](https://github.com/nlohmann/json/issues/777) +- Loss of precision when serializing \ [\#360](https://github.com/nlohmann/json/issues/360) + +- Templatize std::string in binary\_reader \#941 [\#950](https://github.com/nlohmann/json/pull/950) ([kaidokert](https://github.com/kaidokert)) +- fix cmake install directory \(for real this time\) [\#944](https://github.com/nlohmann/json/pull/944) ([theodelrieu](https://github.com/theodelrieu)) +- Allow overriding THROW/CATCH/TRY macros with no-exceptions \#938 [\#940](https://github.com/nlohmann/json/pull/940) ([kaidokert](https://github.com/kaidokert)) +- Removed compiler warning about unused variable 'kMinExp' [\#936](https://github.com/nlohmann/json/pull/936) ([zerodefect](https://github.com/zerodefect)) +- Fix a typo in README.md [\#930](https://github.com/nlohmann/json/pull/930) ([Pipeliner](https://github.com/Pipeliner)) +- Howto installation of json\_fwd.hpp \(fixes \#923\) [\#925](https://github.com/nlohmann/json/pull/925) ([zerodefect](https://github.com/zerodefect)) +- fix sfinae on basic\_json UDT constructor [\#919](https://github.com/nlohmann/json/pull/919) ([theodelrieu](https://github.com/theodelrieu)) +- Floating-point formatting [\#915](https://github.com/nlohmann/json/pull/915) ([abolz](https://github.com/abolz)) +- Fix/cmake install [\#911](https://github.com/nlohmann/json/pull/911) ([theodelrieu](https://github.com/theodelrieu)) +- fix link to the documentation of the emplace function [\#900](https://github.com/nlohmann/json/pull/900) ([Dobiasd](https://github.com/Dobiasd)) +- JSON Merge Patch \(RFC 7396\) [\#876](https://github.com/nlohmann/json/pull/876) ([nlohmann](https://github.com/nlohmann)) +- Refactor/split it [\#700](https://github.com/nlohmann/json/pull/700) ([theodelrieu](https://github.com/theodelrieu)) + ## [v3.0.1](https://github.com/nlohmann/json/releases/tag/v3.0.1) (2017-12-29) [Full Changelog](https://github.com/nlohmann/json/compare/v3.0.0...v3.0.1) @@ -653,7 +716,7 @@ All notable changes to this project will be documented in this file. This projec - Compilation error. [\#273](https://github.com/nlohmann/json/issues/273) - dump\(\) performance degradation in v2 [\#272](https://github.com/nlohmann/json/issues/272) -- fixed a tiny typo [\#271](https://github.com/nlohmann/json/pull/271) ([thelostt](https://github.com/thelostt)) +- fixed a tiny typo [\#271](https://github.com/nlohmann/json/pull/271) ([feroldi](https://github.com/feroldi)) ## [v2.0.0](https://github.com/nlohmann/json/releases/tag/v2.0.0) (2016-06-23) [Full Changelog](https://github.com/nlohmann/json/compare/v1.1.0...v2.0.0) diff --git a/LICENSE.MIT b/LICENSE.MIT index 00599afe..8b0f7002 100644 --- a/LICENSE.MIT +++ b/LICENSE.MIT @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2013-2017 Niels Lohmann +Copyright (c) 2013-2018 Niels Lohmann Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 4f064a47..5f6a9bab 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![Coverage Status](https://img.shields.io/coveralls/nlohmann/json.svg)](https://coveralls.io/r/nlohmann/json) [![Coverity Scan Build Status](https://scan.coverity.com/projects/5550/badge.svg)](https://scan.coverity.com/projects/nlohmann-json) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/f3732b3327e34358a0e9d1fe9f661f08)](https://www.codacy.com/app/nlohmann/json?utm_source=github.com&utm_medium=referral&utm_content=nlohmann/json&utm_campaign=Badge_Grade) -[![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/Op57X0V7fTf2tdwl) +[![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/VHpbaZBOnrZcbn7j) [![Documentation](https://img.shields.io/badge/docs-doxygen-blue.svg)](http://nlohmann.github.io/json) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/nlohmann/json/master/LICENSE.MIT) [![GitHub Releases](https://img.shields.io/github/release/nlohmann/json.svg)](https://github.com/nlohmann/json/releases) @@ -40,7 +40,7 @@ There are myriads of [JSON](http://json.org) libraries out there, and each may e - **Intuitive syntax**. In languages such as Python, JSON feels like a first class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code. Check out the [examples below](#examples) and you'll know what I mean. -- **Trivial integration**. Our whole code consists of a single header file [`json.hpp`](https://github.com/nlohmann/json/blob/develop/src/json.hpp). That's it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings. +- **Trivial integration**. Our whole code consists of a single header file [`json.hpp`](https://github.com/nlohmann/json/blob/single_include/nlohmann/json.hpp). That's it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings. - **Serious testing**. Our class is heavily [unit-tested](https://github.com/nlohmann/json/blob/master/test/src/unit.cpp) and covers [100%](https://coveralls.io/r/nlohmann/json) of the code, including all exceptional behavior. Furthermore, we checked with [Valgrind](http://valgrind.org) that there are no memory leaks. To maintain high quality, the project is following the [Core Infrastructure Initiative (CII) best practices](https://bestpractices.coreinfrastructure.org/projects/289). @@ -55,7 +55,7 @@ See the [contribution guidelines](https://github.com/nlohmann/json/blob/master/. ## Integration -The single required source, file `json.hpp` is in the `src` directory or [released here](https://github.com/nlohmann/json/releases). All you need to do is add +The single required source, file `json.hpp` is in the `single_include/nlohmann` directory or [released here](https://github.com/nlohmann/json/releases). All you need to do is add ```cpp #include "json.hpp" @@ -66,7 +66,7 @@ using json = nlohmann::json; to the files you want to use JSON objects. That's it. Do not forget to set the necessary switches to enable C++11 (e.g., `-std=c++11` for GCC and Clang). -You can further use file [`develop/json_fwd.hpp`](https://github.com/nlohmann/json/blob/develop/develop/json_fwd.hpp) for forward-declarations. The installation of json_fwd.hpp (as part of cmake's install step), can be achieved by setting `-DJSON_MultipleHeaders=ON`: +You can further use file [`include/json_fwd.hpp`](https://github.com/nlohmann/json/blob/develop/develop/json_fwd.hpp) for forward-declarations. The installation of json_fwd.hpp (as part of cmake's install step), can be achieved by setting `-DJSON_MultipleHeaders=ON`: ### Package Managers @@ -908,7 +908,7 @@ I deeply appreciate the help of the following people. - [duncanwerner](https://github.com/duncanwerner) found a really embarrassing performance regression in the 2.0.0 release. - [Damien](https://github.com/dtoma) fixed one of the last conversion warnings. - [Thomas Braun](https://github.com/t-b) fixed a warning in a test case. -- [Théo DELRIEU](https://github.com/theodelrieu) patiently and constructively oversaw the long way toward [iterator-range parsing](https://github.com/nlohmann/json/issues/290). He also implemented the magic behind the serialization/deserialization of user-defined types. +- [Théo DELRIEU](https://github.com/theodelrieu) patiently and constructively oversaw the long way toward [iterator-range parsing](https://github.com/nlohmann/json/issues/290). He also implemented the magic behind the serialization/deserialization of user-defined types and split the single header file into smaller chunks. - [Stefan](https://github.com/5tefan) fixed a minor issue in the documentation. - [Vasil Dimov](https://github.com/vasild) fixed the documentation regarding conversions from `std::multiset`. - [ChristophJud](https://github.com/ChristophJud) overworked the CMake files to ease project inclusion. @@ -967,6 +967,8 @@ I deeply appreciate the help of the following people. - [abolz](https://github.com/abolz) integrated the Grisu2 algorithm for proper floating-point formatting, allowing more roundtrip checks to succeed. - [Vadim Evard](https://github.com/Pipeliner) fixed a Markdown issue in the README. - [zerodefect](https://github.com/zerodefect) fixed a compiler warning. +- [Kert](https://github.com/kaidokert) allowed to template the string type in the serialization and added the possibility to override the exceptional behavior. +- [mark-99](https://github.com/mark-99) helped fixing an ICC error. Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone. @@ -996,7 +998,7 @@ The library itself contains of a single header file licensed under the MIT licen - [**send_to_wandbox**](https://github.com/nlohmann/json/blob/develop/doc/scripts/send_to_wandbox.py) to send code examples to [Wandbox](http://melpon.org/wandbox) - [**Travis**](https://travis-ci.org) for [continuous integration](https://travis-ci.org/nlohmann/json) on Linux and macOS - [**Valgrind**](http://valgrind.org) to check for correct memory management -- [**Wandbox**](http://melpon.org/wandbox) for [online examples](https://wandbox.org/permlink/Op57X0V7fTf2tdwl) +- [**Wandbox**](http://melpon.org/wandbox) for [online examples](https://wandbox.org/permlink/VHpbaZBOnrZcbn7j) ## Projects using JSON for Modern C++ diff --git a/doc/Doxyfile b/doc/Doxyfile index 46d3685c..1ccbf260 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "JSON for Modern C++" -PROJECT_NUMBER = 3.0.1 +PROJECT_NUMBER = 3.1.0 PROJECT_BRIEF = PROJECT_LOGO = OUTPUT_DIRECTORY = . @@ -29,7 +29,7 @@ INHERIT_DOCS = YES SEPARATE_MEMBER_PAGES = YES TAB_SIZE = 4 ALIASES = "complexity=@par Complexity^^" \ - "liveexample{2}=@par Example^^ \1 ^^ @includelineno \2.cpp \n Output (play with this example @htmlinclude \2.link):^^ @verbinclude \2.output ^^ The example code above can be translated with @verbatim g++ -std=c++11 -Isrc doc/examples/\2.cpp -o \2 @endverbatim" \ + "liveexample{2}=@par Example^^ \1 ^^ @includelineno \2.cpp \n Output (play with this example @htmlinclude \2.link):^^ @verbinclude \2.output ^^ The example code above can be translated with @verbatim g++ -std=c++11 -Isingle_include doc/examples/\2.cpp -o \2 @endverbatim" \ "requirement=@par Requirements^^" \ "exceptionsafety=@par Exception safety^^" \ "iterators=@par Iterator validity^^" @@ -107,7 +107,7 @@ WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- -INPUT = ../src/json.hpp \ +INPUT = ../single_include/nlohmann/json.hpp \ index.md \ faq.md \ binary_formats.md diff --git a/doc/Makefile b/doc/Makefile index 886378a4..30ee7484 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,4 +1,4 @@ -SRCDIR = ../src +SRCDIR = ../single_include SED:=$(shell command -v gsed || which sed) all: doxygen @@ -28,7 +28,7 @@ EXAMPLES = $(wildcard examples/*.cpp) %.link: %.cpp rm -fr tmp mkdir tmp - cp $(SRCDIR)/json.hpp tmp + cp -r $(SRCDIR)/nlohmann tmp scripts/send_to_wandbox.py tmp $< > $@.tmp /bin/echo -n "online" > $@ rm -fr tmp $@.tmp diff --git a/doc/examples/README.cpp b/doc/examples/README.cpp index 5a8ab38f..04b488db 100644 --- a/doc/examples/README.cpp +++ b/doc/examples/README.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/README.link b/doc/examples/README.link index 5403e0d8..365a883c 100644 --- a/doc/examples/README.link +++ b/doc/examples/README.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/array.cpp b/doc/examples/array.cpp index b43be5a6..139b5ef1 100644 --- a/doc/examples/array.cpp +++ b/doc/examples/array.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/array.link b/doc/examples/array.link index cd77ed14..5f02f8c5 100644 --- a/doc/examples/array.link +++ b/doc/examples/array.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/at__object_t_key_type.cpp b/doc/examples/at__object_t_key_type.cpp index 0430617e..202f8a2e 100644 --- a/doc/examples/at__object_t_key_type.cpp +++ b/doc/examples/at__object_t_key_type.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/at__object_t_key_type.link b/doc/examples/at__object_t_key_type.link index b4d6efc8..bac67ae9 100644 --- a/doc/examples/at__object_t_key_type.link +++ b/doc/examples/at__object_t_key_type.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/at__object_t_key_type_const.cpp b/doc/examples/at__object_t_key_type_const.cpp index 9aa2ed33..56ce5766 100644 --- a/doc/examples/at__object_t_key_type_const.cpp +++ b/doc/examples/at__object_t_key_type_const.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/at__object_t_key_type_const.link b/doc/examples/at__object_t_key_type_const.link index 6e6ca335..3000cc57 100644 --- a/doc/examples/at__object_t_key_type_const.link +++ b/doc/examples/at__object_t_key_type_const.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/at__size_type.cpp b/doc/examples/at__size_type.cpp index 202e44b1..65baeddc 100644 --- a/doc/examples/at__size_type.cpp +++ b/doc/examples/at__size_type.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/at__size_type.link b/doc/examples/at__size_type.link index 5dec3752..b06ef70b 100644 --- a/doc/examples/at__size_type.link +++ b/doc/examples/at__size_type.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/at__size_type_const.cpp b/doc/examples/at__size_type_const.cpp index 33108ce8..faa4cffd 100644 --- a/doc/examples/at__size_type_const.cpp +++ b/doc/examples/at__size_type_const.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/at__size_type_const.link b/doc/examples/at__size_type_const.link index 7412f09f..ba465d31 100644 --- a/doc/examples/at__size_type_const.link +++ b/doc/examples/at__size_type_const.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/at_json_pointer.cpp b/doc/examples/at_json_pointer.cpp index f43b1bcc..ed450f70 100644 --- a/doc/examples/at_json_pointer.cpp +++ b/doc/examples/at_json_pointer.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/at_json_pointer.link b/doc/examples/at_json_pointer.link index 99ebf019..4bae0ca3 100644 --- a/doc/examples/at_json_pointer.link +++ b/doc/examples/at_json_pointer.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/at_json_pointer_const.cpp b/doc/examples/at_json_pointer_const.cpp index 8009e95f..6f2b2f5e 100644 --- a/doc/examples/at_json_pointer_const.cpp +++ b/doc/examples/at_json_pointer_const.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/at_json_pointer_const.link b/doc/examples/at_json_pointer_const.link index 9011b99b..21e000c5 100644 --- a/doc/examples/at_json_pointer_const.link +++ b/doc/examples/at_json_pointer_const.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/back.cpp b/doc/examples/back.cpp index cb227c2b..1439a821 100644 --- a/doc/examples/back.cpp +++ b/doc/examples/back.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/back.link b/doc/examples/back.link index fa1ce912..09a85fda 100644 --- a/doc/examples/back.link +++ b/doc/examples/back.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/basic_json__CompatibleType.cpp b/doc/examples/basic_json__CompatibleType.cpp index 69493559..d39fd7a4 100644 --- a/doc/examples/basic_json__CompatibleType.cpp +++ b/doc/examples/basic_json__CompatibleType.cpp @@ -6,7 +6,7 @@ #include #include #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/basic_json__CompatibleType.link b/doc/examples/basic_json__CompatibleType.link index a6e786ab..6f401441 100644 --- a/doc/examples/basic_json__CompatibleType.link +++ b/doc/examples/basic_json__CompatibleType.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/basic_json__CompatibleType.output b/doc/examples/basic_json__CompatibleType.output index cd5923b8..2337e81f 100644 --- a/doc/examples/basic_json__CompatibleType.output +++ b/doc/examples/basic_json__CompatibleType.output @@ -28,10 +28,10 @@ 1024 -17 8 -3.14159265358979 +3.141592653589793 null null -42.2299995422363 +42.22999954223633 null 23.42 diff --git a/doc/examples/basic_json__InputIt_InputIt.cpp b/doc/examples/basic_json__InputIt_InputIt.cpp index 36c6f571..ed5aff9a 100644 --- a/doc/examples/basic_json__InputIt_InputIt.cpp +++ b/doc/examples/basic_json__InputIt_InputIt.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/basic_json__InputIt_InputIt.link b/doc/examples/basic_json__InputIt_InputIt.link index aad58f73..bd8170d9 100644 --- a/doc/examples/basic_json__InputIt_InputIt.link +++ b/doc/examples/basic_json__InputIt_InputIt.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/basic_json__basic_json.cpp b/doc/examples/basic_json__basic_json.cpp index 98df6101..17136f43 100644 --- a/doc/examples/basic_json__basic_json.cpp +++ b/doc/examples/basic_json__basic_json.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/basic_json__basic_json.link b/doc/examples/basic_json__basic_json.link index e894b663..8e44fa7c 100644 --- a/doc/examples/basic_json__basic_json.link +++ b/doc/examples/basic_json__basic_json.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/basic_json__copyassignment.cpp b/doc/examples/basic_json__copyassignment.cpp index 4f1bc439..2d865740 100644 --- a/doc/examples/basic_json__copyassignment.cpp +++ b/doc/examples/basic_json__copyassignment.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/basic_json__copyassignment.link b/doc/examples/basic_json__copyassignment.link index eec9258f..b558aa04 100644 --- a/doc/examples/basic_json__copyassignment.link +++ b/doc/examples/basic_json__copyassignment.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/basic_json__list_init_t.cpp b/doc/examples/basic_json__list_init_t.cpp index ba1bce4e..78611e1a 100644 --- a/doc/examples/basic_json__list_init_t.cpp +++ b/doc/examples/basic_json__list_init_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/basic_json__list_init_t.link b/doc/examples/basic_json__list_init_t.link index 75234b62..b92a9fa2 100644 --- a/doc/examples/basic_json__list_init_t.link +++ b/doc/examples/basic_json__list_init_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/basic_json__moveconstructor.cpp b/doc/examples/basic_json__moveconstructor.cpp index 34827259..48b68f61 100644 --- a/doc/examples/basic_json__moveconstructor.cpp +++ b/doc/examples/basic_json__moveconstructor.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/basic_json__moveconstructor.link b/doc/examples/basic_json__moveconstructor.link index f9047302..c45e09bb 100644 --- a/doc/examples/basic_json__moveconstructor.link +++ b/doc/examples/basic_json__moveconstructor.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/basic_json__nullptr_t.cpp b/doc/examples/basic_json__nullptr_t.cpp index 886d5ea3..7a436665 100644 --- a/doc/examples/basic_json__nullptr_t.cpp +++ b/doc/examples/basic_json__nullptr_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/basic_json__nullptr_t.link b/doc/examples/basic_json__nullptr_t.link index 003110f1..30568efb 100644 --- a/doc/examples/basic_json__nullptr_t.link +++ b/doc/examples/basic_json__nullptr_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/basic_json__size_type_basic_json.cpp b/doc/examples/basic_json__size_type_basic_json.cpp index a021edda..9ec76772 100644 --- a/doc/examples/basic_json__size_type_basic_json.cpp +++ b/doc/examples/basic_json__size_type_basic_json.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/basic_json__size_type_basic_json.link b/doc/examples/basic_json__size_type_basic_json.link index e48b9fd9..2b286dc1 100644 --- a/doc/examples/basic_json__size_type_basic_json.link +++ b/doc/examples/basic_json__size_type_basic_json.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/basic_json__value.cpp b/doc/examples/basic_json__value.cpp index 42d4aa31..9488d30e 100644 --- a/doc/examples/basic_json__value.cpp +++ b/doc/examples/basic_json__value.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/basic_json__value.link b/doc/examples/basic_json__value.link index d0182781..df2bbdc5 100644 --- a/doc/examples/basic_json__value.link +++ b/doc/examples/basic_json__value.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/basic_json__value_ptr.cpp b/doc/examples/basic_json__value_ptr.cpp index 4f6f999e..f25b7736 100644 --- a/doc/examples/basic_json__value_ptr.cpp +++ b/doc/examples/basic_json__value_ptr.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/basic_json__value_ptr.link b/doc/examples/basic_json__value_ptr.link index 799f96f7..3f393692 100644 --- a/doc/examples/basic_json__value_ptr.link +++ b/doc/examples/basic_json__value_ptr.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/basic_json__value_t.cpp b/doc/examples/basic_json__value_t.cpp index d52e628b..c306731a 100644 --- a/doc/examples/basic_json__value_t.cpp +++ b/doc/examples/basic_json__value_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/basic_json__value_t.link b/doc/examples/basic_json__value_t.link index a66b1dd4..8dc41b22 100644 --- a/doc/examples/basic_json__value_t.link +++ b/doc/examples/basic_json__value_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/begin.cpp b/doc/examples/begin.cpp index ebf97e5f..42710d15 100644 --- a/doc/examples/begin.cpp +++ b/doc/examples/begin.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/begin.link b/doc/examples/begin.link index 64ac5fba..3875421d 100644 --- a/doc/examples/begin.link +++ b/doc/examples/begin.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/cbegin.cpp b/doc/examples/cbegin.cpp index d12c8608..3226fd21 100644 --- a/doc/examples/cbegin.cpp +++ b/doc/examples/cbegin.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/cbegin.link b/doc/examples/cbegin.link index fe670f15..547ae485 100644 --- a/doc/examples/cbegin.link +++ b/doc/examples/cbegin.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/cend.cpp b/doc/examples/cend.cpp index 8d141acf..9d7978d5 100644 --- a/doc/examples/cend.cpp +++ b/doc/examples/cend.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/cend.link b/doc/examples/cend.link index 3c726426..7b8bcba4 100644 --- a/doc/examples/cend.link +++ b/doc/examples/cend.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/clear.cpp b/doc/examples/clear.cpp index e892b13e..f081e7ed 100644 --- a/doc/examples/clear.cpp +++ b/doc/examples/clear.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/clear.link b/doc/examples/clear.link index 1123e2f3..cad700c3 100644 --- a/doc/examples/clear.link +++ b/doc/examples/clear.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/count.cpp b/doc/examples/count.cpp index cd030fff..0ea19b6c 100644 --- a/doc/examples/count.cpp +++ b/doc/examples/count.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/count.link b/doc/examples/count.link index 84666742..9355bd2c 100644 --- a/doc/examples/count.link +++ b/doc/examples/count.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/crbegin.cpp b/doc/examples/crbegin.cpp index 6dc4a6f7..dc3209cf 100644 --- a/doc/examples/crbegin.cpp +++ b/doc/examples/crbegin.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/crbegin.link b/doc/examples/crbegin.link index f97dac66..6079e7a3 100644 --- a/doc/examples/crbegin.link +++ b/doc/examples/crbegin.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/crend.cpp b/doc/examples/crend.cpp index 9a00950c..dff26093 100644 --- a/doc/examples/crend.cpp +++ b/doc/examples/crend.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/crend.link b/doc/examples/crend.link index 208c7c96..1263fc1f 100644 --- a/doc/examples/crend.link +++ b/doc/examples/crend.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/diff.cpp b/doc/examples/diff.cpp index 274e56bf..a29f14d2 100644 --- a/doc/examples/diff.cpp +++ b/doc/examples/diff.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/diff.link b/doc/examples/diff.link index a02ddbdb..dfd1772b 100644 --- a/doc/examples/diff.link +++ b/doc/examples/diff.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/dump.cpp b/doc/examples/dump.cpp index 1c485972..4deb64a1 100644 --- a/doc/examples/dump.cpp +++ b/doc/examples/dump.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/dump.link b/doc/examples/dump.link index 4de70343..c072c0d9 100644 --- a/doc/examples/dump.link +++ b/doc/examples/dump.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/emplace.cpp b/doc/examples/emplace.cpp index 7e80b68c..a5314910 100644 --- a/doc/examples/emplace.cpp +++ b/doc/examples/emplace.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/emplace.link b/doc/examples/emplace.link index 809cc21e..36f2ed2f 100644 --- a/doc/examples/emplace.link +++ b/doc/examples/emplace.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/emplace_back.cpp b/doc/examples/emplace_back.cpp index 6a50fd20..e979a945 100644 --- a/doc/examples/emplace_back.cpp +++ b/doc/examples/emplace_back.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/emplace_back.link b/doc/examples/emplace_back.link index 9397a892..2ea20f36 100644 --- a/doc/examples/emplace_back.link +++ b/doc/examples/emplace_back.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/empty.cpp b/doc/examples/empty.cpp index 94bc46a3..6ef6e40e 100644 --- a/doc/examples/empty.cpp +++ b/doc/examples/empty.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/empty.link b/doc/examples/empty.link index 90a6590e..a182c128 100644 --- a/doc/examples/empty.link +++ b/doc/examples/empty.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/end.cpp b/doc/examples/end.cpp index 2984f9ea..5a5b6e72 100644 --- a/doc/examples/end.cpp +++ b/doc/examples/end.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/end.link b/doc/examples/end.link index 2695e1d5..9ef322c4 100644 --- a/doc/examples/end.link +++ b/doc/examples/end.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/erase__IteratorType.cpp b/doc/examples/erase__IteratorType.cpp index 0ba7e6fc..bf5d3dd4 100644 --- a/doc/examples/erase__IteratorType.cpp +++ b/doc/examples/erase__IteratorType.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/erase__IteratorType.link b/doc/examples/erase__IteratorType.link index 71d41146..67ea55ab 100644 --- a/doc/examples/erase__IteratorType.link +++ b/doc/examples/erase__IteratorType.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/erase__IteratorType_IteratorType.cpp b/doc/examples/erase__IteratorType_IteratorType.cpp index efbf789e..7cddac6a 100644 --- a/doc/examples/erase__IteratorType_IteratorType.cpp +++ b/doc/examples/erase__IteratorType_IteratorType.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/erase__IteratorType_IteratorType.link b/doc/examples/erase__IteratorType_IteratorType.link index 9209f64c..0ea29891 100644 --- a/doc/examples/erase__IteratorType_IteratorType.link +++ b/doc/examples/erase__IteratorType_IteratorType.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/erase__key_type.cpp b/doc/examples/erase__key_type.cpp index 592aa020..40c75511 100644 --- a/doc/examples/erase__key_type.cpp +++ b/doc/examples/erase__key_type.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/erase__key_type.link b/doc/examples/erase__key_type.link index b3ab45ef..1d02dd58 100644 --- a/doc/examples/erase__key_type.link +++ b/doc/examples/erase__key_type.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/erase__size_type.cpp b/doc/examples/erase__size_type.cpp index 72021bad..b6d7b011 100644 --- a/doc/examples/erase__size_type.cpp +++ b/doc/examples/erase__size_type.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/erase__size_type.link b/doc/examples/erase__size_type.link index 33a124ca..c3d94bb8 100644 --- a/doc/examples/erase__size_type.link +++ b/doc/examples/erase__size_type.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/exception.cpp b/doc/examples/exception.cpp index 13926b25..82696e61 100644 --- a/doc/examples/exception.cpp +++ b/doc/examples/exception.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/exception.link b/doc/examples/exception.link index 7043792b..ed4cb445 100644 --- a/doc/examples/exception.link +++ b/doc/examples/exception.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/find__key_type.cpp b/doc/examples/find__key_type.cpp index c411ba4f..685ba776 100644 --- a/doc/examples/find__key_type.cpp +++ b/doc/examples/find__key_type.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/find__key_type.link b/doc/examples/find__key_type.link index 0be7a24a..f23abc82 100644 --- a/doc/examples/find__key_type.link +++ b/doc/examples/find__key_type.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/flatten.cpp b/doc/examples/flatten.cpp index 908b371d..2bd7e9e8 100644 --- a/doc/examples/flatten.cpp +++ b/doc/examples/flatten.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/flatten.link b/doc/examples/flatten.link index d32588fe..8eb81a69 100644 --- a/doc/examples/flatten.link +++ b/doc/examples/flatten.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/from_cbor.cpp b/doc/examples/from_cbor.cpp index b37b375a..633b3e79 100644 --- a/doc/examples/from_cbor.cpp +++ b/doc/examples/from_cbor.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/from_cbor.link b/doc/examples/from_cbor.link index 6e1f4e24..6e27db91 100644 --- a/doc/examples/from_cbor.link +++ b/doc/examples/from_cbor.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/from_msgpack.cpp b/doc/examples/from_msgpack.cpp index 84c7d1f1..8a99b3c5 100644 --- a/doc/examples/from_msgpack.cpp +++ b/doc/examples/from_msgpack.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/from_msgpack.link b/doc/examples/from_msgpack.link index 493f4435..ddfdcb34 100644 --- a/doc/examples/from_msgpack.link +++ b/doc/examples/from_msgpack.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/from_ubjson.cpp b/doc/examples/from_ubjson.cpp index 2adca3c6..b20999fd 100644 --- a/doc/examples/from_ubjson.cpp +++ b/doc/examples/from_ubjson.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/from_ubjson.link b/doc/examples/from_ubjson.link index 5ff36826..2855f18c 100644 --- a/doc/examples/from_ubjson.link +++ b/doc/examples/from_ubjson.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/front.cpp b/doc/examples/front.cpp index bbc372e0..a0f63068 100644 --- a/doc/examples/front.cpp +++ b/doc/examples/front.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/front.link b/doc/examples/front.link index 4f8bcd77..172924f9 100644 --- a/doc/examples/front.link +++ b/doc/examples/front.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/get__PointerType.cpp b/doc/examples/get__PointerType.cpp index 29f9ad34..2f32ed7a 100644 --- a/doc/examples/get__PointerType.cpp +++ b/doc/examples/get__PointerType.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/get__PointerType.link b/doc/examples/get__PointerType.link index 73a3fc51..1c67f739 100644 --- a/doc/examples/get__PointerType.link +++ b/doc/examples/get__PointerType.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/get__ValueType_const.cpp b/doc/examples/get__ValueType_const.cpp index d78a6b26..7a703aae 100644 --- a/doc/examples/get__ValueType_const.cpp +++ b/doc/examples/get__ValueType_const.cpp @@ -1,6 +1,6 @@ #include #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/get__ValueType_const.link b/doc/examples/get__ValueType_const.link index 7bf5e8a3..a3de6d6e 100644 --- a/doc/examples/get__ValueType_const.link +++ b/doc/examples/get__ValueType_const.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/get_ptr.cpp b/doc/examples/get_ptr.cpp index 27deb149..564ce0f4 100644 --- a/doc/examples/get_ptr.cpp +++ b/doc/examples/get_ptr.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/get_ptr.link b/doc/examples/get_ptr.link index 6c4a0684..ab05e4a4 100644 --- a/doc/examples/get_ptr.link +++ b/doc/examples/get_ptr.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/get_ref.cpp b/doc/examples/get_ref.cpp index 951fea3e..ab25946b 100644 --- a/doc/examples/get_ref.cpp +++ b/doc/examples/get_ref.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/get_ref.link b/doc/examples/get_ref.link index d5bb4cfd..d458912b 100644 --- a/doc/examples/get_ref.link +++ b/doc/examples/get_ref.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/insert.cpp b/doc/examples/insert.cpp index 913ad09d..4ee60987 100644 --- a/doc/examples/insert.cpp +++ b/doc/examples/insert.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/insert.link b/doc/examples/insert.link index 803d5c62..564226f5 100644 --- a/doc/examples/insert.link +++ b/doc/examples/insert.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/insert__count.cpp b/doc/examples/insert__count.cpp index 3c2ac24a..ce33b93e 100644 --- a/doc/examples/insert__count.cpp +++ b/doc/examples/insert__count.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/insert__count.link b/doc/examples/insert__count.link index a76cd8e2..100cd360 100644 --- a/doc/examples/insert__count.link +++ b/doc/examples/insert__count.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/insert__ilist.cpp b/doc/examples/insert__ilist.cpp index 90965b37..a20766a1 100644 --- a/doc/examples/insert__ilist.cpp +++ b/doc/examples/insert__ilist.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/insert__ilist.link b/doc/examples/insert__ilist.link index 387dce69..36b181dc 100644 --- a/doc/examples/insert__ilist.link +++ b/doc/examples/insert__ilist.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/insert__range.cpp b/doc/examples/insert__range.cpp index 5b0aa9ea..92fe63b0 100644 --- a/doc/examples/insert__range.cpp +++ b/doc/examples/insert__range.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/insert__range.link b/doc/examples/insert__range.link index cd8107c0..00e83ac2 100644 --- a/doc/examples/insert__range.link +++ b/doc/examples/insert__range.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/insert__range_object.cpp b/doc/examples/insert__range_object.cpp index b811f8aa..97373d3b 100644 --- a/doc/examples/insert__range_object.cpp +++ b/doc/examples/insert__range_object.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/insert__range_object.link b/doc/examples/insert__range_object.link index 7c67093b..70d43ee9 100644 --- a/doc/examples/insert__range_object.link +++ b/doc/examples/insert__range_object.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/invalid_iterator.cpp b/doc/examples/invalid_iterator.cpp index 2d613597..5d3e622e 100644 --- a/doc/examples/invalid_iterator.cpp +++ b/doc/examples/invalid_iterator.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/invalid_iterator.link b/doc/examples/invalid_iterator.link index 0bb86950..729243d3 100644 --- a/doc/examples/invalid_iterator.link +++ b/doc/examples/invalid_iterator.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/is_array.cpp b/doc/examples/is_array.cpp index 1dbbf5d2..235dab76 100644 --- a/doc/examples/is_array.cpp +++ b/doc/examples/is_array.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/is_array.link b/doc/examples/is_array.link index 7820d336..4232a922 100644 --- a/doc/examples/is_array.link +++ b/doc/examples/is_array.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/is_boolean.cpp b/doc/examples/is_boolean.cpp index 485f9704..ccc202d0 100644 --- a/doc/examples/is_boolean.cpp +++ b/doc/examples/is_boolean.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/is_boolean.link b/doc/examples/is_boolean.link index 9b56f6ed..19f0b008 100644 --- a/doc/examples/is_boolean.link +++ b/doc/examples/is_boolean.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/is_discarded.cpp b/doc/examples/is_discarded.cpp index 0b0435c3..782e6499 100644 --- a/doc/examples/is_discarded.cpp +++ b/doc/examples/is_discarded.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/is_discarded.link b/doc/examples/is_discarded.link index f20d9ce9..9ec778f7 100644 --- a/doc/examples/is_discarded.link +++ b/doc/examples/is_discarded.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/is_null.cpp b/doc/examples/is_null.cpp index 3043e184..4a635092 100644 --- a/doc/examples/is_null.cpp +++ b/doc/examples/is_null.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/is_null.link b/doc/examples/is_null.link index 05b27018..dd1a5aab 100644 --- a/doc/examples/is_null.link +++ b/doc/examples/is_null.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/is_number.cpp b/doc/examples/is_number.cpp index 08fa138d..eb23bd24 100644 --- a/doc/examples/is_number.cpp +++ b/doc/examples/is_number.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/is_number.link b/doc/examples/is_number.link index b1e9ad2a..43c52b47 100644 --- a/doc/examples/is_number.link +++ b/doc/examples/is_number.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/is_number_float.cpp b/doc/examples/is_number_float.cpp index aeef78e8..3435a7e0 100644 --- a/doc/examples/is_number_float.cpp +++ b/doc/examples/is_number_float.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/is_number_float.link b/doc/examples/is_number_float.link index 17208079..4d8f0ea8 100644 --- a/doc/examples/is_number_float.link +++ b/doc/examples/is_number_float.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/is_number_integer.cpp b/doc/examples/is_number_integer.cpp index 90bd2146..6f6e4204 100644 --- a/doc/examples/is_number_integer.cpp +++ b/doc/examples/is_number_integer.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/is_number_integer.link b/doc/examples/is_number_integer.link index a35be75d..0233e0f7 100644 --- a/doc/examples/is_number_integer.link +++ b/doc/examples/is_number_integer.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/is_number_unsigned.cpp b/doc/examples/is_number_unsigned.cpp index 499530c5..2ea2673e 100644 --- a/doc/examples/is_number_unsigned.cpp +++ b/doc/examples/is_number_unsigned.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/is_number_unsigned.link b/doc/examples/is_number_unsigned.link index 0a2ba020..89817630 100644 --- a/doc/examples/is_number_unsigned.link +++ b/doc/examples/is_number_unsigned.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/is_object.cpp b/doc/examples/is_object.cpp index a0c03a76..42cedf8f 100644 --- a/doc/examples/is_object.cpp +++ b/doc/examples/is_object.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/is_object.link b/doc/examples/is_object.link index 0cf3d4ad..5dd305bb 100644 --- a/doc/examples/is_object.link +++ b/doc/examples/is_object.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/is_primitive.cpp b/doc/examples/is_primitive.cpp index ab329bdb..d70c83e3 100644 --- a/doc/examples/is_primitive.cpp +++ b/doc/examples/is_primitive.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/is_primitive.link b/doc/examples/is_primitive.link index 2a0e91b9..ae58b2d7 100644 --- a/doc/examples/is_primitive.link +++ b/doc/examples/is_primitive.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/is_string.cpp b/doc/examples/is_string.cpp index 44cb483c..2679cd1c 100644 --- a/doc/examples/is_string.cpp +++ b/doc/examples/is_string.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/is_string.link b/doc/examples/is_string.link index f3672db3..92b05e75 100644 --- a/doc/examples/is_string.link +++ b/doc/examples/is_string.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/is_structured.cpp b/doc/examples/is_structured.cpp index b7dfc858..33e2bbd0 100644 --- a/doc/examples/is_structured.cpp +++ b/doc/examples/is_structured.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/is_structured.link b/doc/examples/is_structured.link index 8ea3a75f..44e06e9f 100644 --- a/doc/examples/is_structured.link +++ b/doc/examples/is_structured.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/items.cpp b/doc/examples/items.cpp index b2224d60..9cd2b51b 100644 --- a/doc/examples/items.cpp +++ b/doc/examples/items.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/items.link b/doc/examples/items.link index 0b74c5b3..001c704a 100644 --- a/doc/examples/items.link +++ b/doc/examples/items.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/iterator_wrapper.cpp b/doc/examples/iterator_wrapper.cpp index 61687a92..7ef5bc57 100644 --- a/doc/examples/iterator_wrapper.cpp +++ b/doc/examples/iterator_wrapper.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/iterator_wrapper.link b/doc/examples/iterator_wrapper.link index 0087d9a1..434031bb 100644 --- a/doc/examples/iterator_wrapper.link +++ b/doc/examples/iterator_wrapper.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/json_pointer.cpp b/doc/examples/json_pointer.cpp index 23e8e84f..75b97175 100644 --- a/doc/examples/json_pointer.cpp +++ b/doc/examples/json_pointer.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/json_pointer.link b/doc/examples/json_pointer.link index 3ba4355f..952bd749 100644 --- a/doc/examples/json_pointer.link +++ b/doc/examples/json_pointer.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/json_pointer__to_string.cpp b/doc/examples/json_pointer__to_string.cpp index 70b72778..da397cdf 100644 --- a/doc/examples/json_pointer__to_string.cpp +++ b/doc/examples/json_pointer__to_string.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/json_pointer__to_string.link b/doc/examples/json_pointer__to_string.link index b1148125..244c4815 100644 --- a/doc/examples/json_pointer__to_string.link +++ b/doc/examples/json_pointer__to_string.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/max_size.cpp b/doc/examples/max_size.cpp index 8273f86f..c2ffc546 100644 --- a/doc/examples/max_size.cpp +++ b/doc/examples/max_size.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/max_size.link b/doc/examples/max_size.link index d49f5ea8..1212833d 100644 --- a/doc/examples/max_size.link +++ b/doc/examples/max_size.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/merge_patch.cpp b/doc/examples/merge_patch.cpp index 77a5f2a2..b8804d7c 100644 --- a/doc/examples/merge_patch.cpp +++ b/doc/examples/merge_patch.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include #include // for std::setw using json = nlohmann::json; diff --git a/doc/examples/merge_patch.link b/doc/examples/merge_patch.link index 7a6cbbac..41aa4eff 100644 --- a/doc/examples/merge_patch.link +++ b/doc/examples/merge_patch.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/meta.cpp b/doc/examples/meta.cpp index 9194beae..e800b9be 100644 --- a/doc/examples/meta.cpp +++ b/doc/examples/meta.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/meta.link b/doc/examples/meta.link index f1d8c869..4da2b02b 100644 --- a/doc/examples/meta.link +++ b/doc/examples/meta.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/meta.output b/doc/examples/meta.output index 1b3e2aa1..04529057 100644 --- a/doc/examples/meta.output +++ b/doc/examples/meta.output @@ -10,8 +10,8 @@ "url": "https://github.com/nlohmann/json", "version": { "major": 3, - "minor": 0, - "patch": 1, - "string": "3.0.1" + "minor": 1, + "patch": 0, + "string": "3.1.0" } } diff --git a/doc/examples/object.cpp b/doc/examples/object.cpp index 6c117758..733b89b5 100644 --- a/doc/examples/object.cpp +++ b/doc/examples/object.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/object.link b/doc/examples/object.link index f8638334..fbed2f67 100644 --- a/doc/examples/object.link +++ b/doc/examples/object.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operator__ValueType.cpp b/doc/examples/operator__ValueType.cpp index 2def5271..66fcf310 100644 --- a/doc/examples/operator__ValueType.cpp +++ b/doc/examples/operator__ValueType.cpp @@ -1,6 +1,6 @@ #include #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operator__ValueType.link b/doc/examples/operator__ValueType.link index 0c32d631..798b8fdf 100644 --- a/doc/examples/operator__ValueType.link +++ b/doc/examples/operator__ValueType.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operator__equal.cpp b/doc/examples/operator__equal.cpp index d541a212..1426f489 100644 --- a/doc/examples/operator__equal.cpp +++ b/doc/examples/operator__equal.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operator__equal.link b/doc/examples/operator__equal.link index ae7c25ae..6e1cc1cc 100644 --- a/doc/examples/operator__equal.link +++ b/doc/examples/operator__equal.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operator__equal__nullptr_t.cpp b/doc/examples/operator__equal__nullptr_t.cpp index b5d0c640..dbb21037 100644 --- a/doc/examples/operator__equal__nullptr_t.cpp +++ b/doc/examples/operator__equal__nullptr_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operator__equal__nullptr_t.link b/doc/examples/operator__equal__nullptr_t.link index 90cc1744..097da776 100644 --- a/doc/examples/operator__equal__nullptr_t.link +++ b/doc/examples/operator__equal__nullptr_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operator__greater.cpp b/doc/examples/operator__greater.cpp index a5c4f78a..c632387c 100644 --- a/doc/examples/operator__greater.cpp +++ b/doc/examples/operator__greater.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operator__greater.link b/doc/examples/operator__greater.link index 7f082791..3fc848ea 100644 --- a/doc/examples/operator__greater.link +++ b/doc/examples/operator__greater.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operator__greaterequal.cpp b/doc/examples/operator__greaterequal.cpp index da014bde..f8659ee0 100644 --- a/doc/examples/operator__greaterequal.cpp +++ b/doc/examples/operator__greaterequal.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operator__greaterequal.link b/doc/examples/operator__greaterequal.link index 599f5d7b..62ce78a6 100644 --- a/doc/examples/operator__greaterequal.link +++ b/doc/examples/operator__greaterequal.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operator__less.cpp b/doc/examples/operator__less.cpp index 3865847f..64209a22 100644 --- a/doc/examples/operator__less.cpp +++ b/doc/examples/operator__less.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operator__less.link b/doc/examples/operator__less.link index 0689f995..52da7af1 100644 --- a/doc/examples/operator__less.link +++ b/doc/examples/operator__less.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operator__lessequal.cpp b/doc/examples/operator__lessequal.cpp index 8e9a21f1..543b9543 100644 --- a/doc/examples/operator__lessequal.cpp +++ b/doc/examples/operator__lessequal.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operator__lessequal.link b/doc/examples/operator__lessequal.link index 57681851..0c9ede3a 100644 --- a/doc/examples/operator__lessequal.link +++ b/doc/examples/operator__lessequal.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operator__notequal.cpp b/doc/examples/operator__notequal.cpp index debcdf8a..43e89509 100644 --- a/doc/examples/operator__notequal.cpp +++ b/doc/examples/operator__notequal.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operator__notequal.link b/doc/examples/operator__notequal.link index c23e8263..656ffa8a 100644 --- a/doc/examples/operator__notequal.link +++ b/doc/examples/operator__notequal.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operator__notequal__nullptr_t.cpp b/doc/examples/operator__notequal__nullptr_t.cpp index 8d74e713..dc7e6ac4 100644 --- a/doc/examples/operator__notequal__nullptr_t.cpp +++ b/doc/examples/operator__notequal__nullptr_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operator__notequal__nullptr_t.link b/doc/examples/operator__notequal__nullptr_t.link index 49864d34..f9a17003 100644 --- a/doc/examples/operator__notequal__nullptr_t.link +++ b/doc/examples/operator__notequal__nullptr_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operator__value_t.cpp b/doc/examples/operator__value_t.cpp index 087910a4..d9aac797 100644 --- a/doc/examples/operator__value_t.cpp +++ b/doc/examples/operator__value_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operator__value_t.link b/doc/examples/operator__value_t.link index 7c22cd4a..d2c38a37 100644 --- a/doc/examples/operator__value_t.link +++ b/doc/examples/operator__value_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operator_deserialize.cpp b/doc/examples/operator_deserialize.cpp index 7a2cf23a..bf214480 100644 --- a/doc/examples/operator_deserialize.cpp +++ b/doc/examples/operator_deserialize.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operator_deserialize.link b/doc/examples/operator_deserialize.link index d60e5301..72d7350e 100644 --- a/doc/examples/operator_deserialize.link +++ b/doc/examples/operator_deserialize.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operator_serialize.cpp b/doc/examples/operator_serialize.cpp index 7f556383..0c46f014 100644 --- a/doc/examples/operator_serialize.cpp +++ b/doc/examples/operator_serialize.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operator_serialize.link b/doc/examples/operator_serialize.link index f078934f..57edc8cc 100644 --- a/doc/examples/operator_serialize.link +++ b/doc/examples/operator_serialize.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operatorarray__key_type.cpp b/doc/examples/operatorarray__key_type.cpp index 43ff8ad8..8db08d0b 100644 --- a/doc/examples/operatorarray__key_type.cpp +++ b/doc/examples/operatorarray__key_type.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operatorarray__key_type.link b/doc/examples/operatorarray__key_type.link index 68a7a9c8..c1a534b1 100644 --- a/doc/examples/operatorarray__key_type.link +++ b/doc/examples/operatorarray__key_type.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operatorarray__key_type_const.cpp b/doc/examples/operatorarray__key_type_const.cpp index 2320e439..1bdb3402 100644 --- a/doc/examples/operatorarray__key_type_const.cpp +++ b/doc/examples/operatorarray__key_type_const.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operatorarray__key_type_const.link b/doc/examples/operatorarray__key_type_const.link index 53a08924..9467ca2c 100644 --- a/doc/examples/operatorarray__key_type_const.link +++ b/doc/examples/operatorarray__key_type_const.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operatorarray__size_type.cpp b/doc/examples/operatorarray__size_type.cpp index bc8ecb96..d6f3e153 100644 --- a/doc/examples/operatorarray__size_type.cpp +++ b/doc/examples/operatorarray__size_type.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operatorarray__size_type.link b/doc/examples/operatorarray__size_type.link index 3e05678b..018f0bde 100644 --- a/doc/examples/operatorarray__size_type.link +++ b/doc/examples/operatorarray__size_type.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operatorarray__size_type_const.cpp b/doc/examples/operatorarray__size_type_const.cpp index ec9fc30f..1bd88bc1 100644 --- a/doc/examples/operatorarray__size_type_const.cpp +++ b/doc/examples/operatorarray__size_type_const.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operatorarray__size_type_const.link b/doc/examples/operatorarray__size_type_const.link index 2eb1a380..8a9cd0b2 100644 --- a/doc/examples/operatorarray__size_type_const.link +++ b/doc/examples/operatorarray__size_type_const.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operatorjson_pointer.cpp b/doc/examples/operatorjson_pointer.cpp index d4036673..7a0353a1 100644 --- a/doc/examples/operatorjson_pointer.cpp +++ b/doc/examples/operatorjson_pointer.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operatorjson_pointer.link b/doc/examples/operatorjson_pointer.link index 92bf9d77..92468d78 100644 --- a/doc/examples/operatorjson_pointer.link +++ b/doc/examples/operatorjson_pointer.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/operatorjson_pointer_const.cpp b/doc/examples/operatorjson_pointer_const.cpp index 52b2a9e8..a5a437b4 100644 --- a/doc/examples/operatorjson_pointer_const.cpp +++ b/doc/examples/operatorjson_pointer_const.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/operatorjson_pointer_const.link b/doc/examples/operatorjson_pointer_const.link index 22a7c5cb..836e755d 100644 --- a/doc/examples/operatorjson_pointer_const.link +++ b/doc/examples/operatorjson_pointer_const.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/other_error.cpp b/doc/examples/other_error.cpp index 16b9657a..2e7ccfbb 100644 --- a/doc/examples/other_error.cpp +++ b/doc/examples/other_error.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/other_error.link b/doc/examples/other_error.link index a8dd89bc..bdb11752 100644 --- a/doc/examples/other_error.link +++ b/doc/examples/other_error.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/out_of_range.cpp b/doc/examples/out_of_range.cpp index adec741e..e7116408 100644 --- a/doc/examples/out_of_range.cpp +++ b/doc/examples/out_of_range.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/out_of_range.link b/doc/examples/out_of_range.link index 3daa44ef..790eec62 100644 --- a/doc/examples/out_of_range.link +++ b/doc/examples/out_of_range.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/parse__array__parser_callback_t.cpp b/doc/examples/parse__array__parser_callback_t.cpp index 0857f9ae..6083a959 100644 --- a/doc/examples/parse__array__parser_callback_t.cpp +++ b/doc/examples/parse__array__parser_callback_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/parse__array__parser_callback_t.link b/doc/examples/parse__array__parser_callback_t.link index 2c4a7687..017f9ff5 100644 --- a/doc/examples/parse__array__parser_callback_t.link +++ b/doc/examples/parse__array__parser_callback_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/parse__contiguouscontainer__parser_callback_t.cpp b/doc/examples/parse__contiguouscontainer__parser_callback_t.cpp index 29b54811..fe51560c 100644 --- a/doc/examples/parse__contiguouscontainer__parser_callback_t.cpp +++ b/doc/examples/parse__contiguouscontainer__parser_callback_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/parse__contiguouscontainer__parser_callback_t.link b/doc/examples/parse__contiguouscontainer__parser_callback_t.link index 2e7f62e1..2cc96595 100644 --- a/doc/examples/parse__contiguouscontainer__parser_callback_t.link +++ b/doc/examples/parse__contiguouscontainer__parser_callback_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/parse__istream__parser_callback_t.cpp b/doc/examples/parse__istream__parser_callback_t.cpp index a20e81f5..92e62d9b 100644 --- a/doc/examples/parse__istream__parser_callback_t.cpp +++ b/doc/examples/parse__istream__parser_callback_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/parse__istream__parser_callback_t.link b/doc/examples/parse__istream__parser_callback_t.link index 7afa48bc..64b703a6 100644 --- a/doc/examples/parse__istream__parser_callback_t.link +++ b/doc/examples/parse__istream__parser_callback_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/parse__iteratortype__parser_callback_t.cpp b/doc/examples/parse__iteratortype__parser_callback_t.cpp index 6044021c..b513fe77 100644 --- a/doc/examples/parse__iteratortype__parser_callback_t.cpp +++ b/doc/examples/parse__iteratortype__parser_callback_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/parse__iteratortype__parser_callback_t.link b/doc/examples/parse__iteratortype__parser_callback_t.link index 093a2d18..9adda14f 100644 --- a/doc/examples/parse__iteratortype__parser_callback_t.link +++ b/doc/examples/parse__iteratortype__parser_callback_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/parse__string__parser_callback_t.cpp b/doc/examples/parse__string__parser_callback_t.cpp index 37ea6df7..4db82d90 100644 --- a/doc/examples/parse__string__parser_callback_t.cpp +++ b/doc/examples/parse__string__parser_callback_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/parse__string__parser_callback_t.link b/doc/examples/parse__string__parser_callback_t.link index 94643bb7..8eab4cd6 100644 --- a/doc/examples/parse__string__parser_callback_t.link +++ b/doc/examples/parse__string__parser_callback_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/parse_error.cpp b/doc/examples/parse_error.cpp index 6802e7da..9b27b58f 100644 --- a/doc/examples/parse_error.cpp +++ b/doc/examples/parse_error.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/parse_error.link b/doc/examples/parse_error.link index 89a31ea5..7e3e8644 100644 --- a/doc/examples/parse_error.link +++ b/doc/examples/parse_error.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/patch.cpp b/doc/examples/patch.cpp index fd0e6bf5..a3c64a61 100644 --- a/doc/examples/patch.cpp +++ b/doc/examples/patch.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/patch.link b/doc/examples/patch.link index 7038cda6..19970624 100644 --- a/doc/examples/patch.link +++ b/doc/examples/patch.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/push_back.cpp b/doc/examples/push_back.cpp index 7b0ec488..bbddf4f5 100644 --- a/doc/examples/push_back.cpp +++ b/doc/examples/push_back.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/push_back.link b/doc/examples/push_back.link index dc2b525e..4ee15bf1 100644 --- a/doc/examples/push_back.link +++ b/doc/examples/push_back.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/push_back__initializer_list.cpp b/doc/examples/push_back__initializer_list.cpp index d231e710..e96645f1 100644 --- a/doc/examples/push_back__initializer_list.cpp +++ b/doc/examples/push_back__initializer_list.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/push_back__initializer_list.link b/doc/examples/push_back__initializer_list.link index f6796c25..f18e96f4 100644 --- a/doc/examples/push_back__initializer_list.link +++ b/doc/examples/push_back__initializer_list.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/push_back__object_t__value.cpp b/doc/examples/push_back__object_t__value.cpp index 27215fb8..5d694e93 100644 --- a/doc/examples/push_back__object_t__value.cpp +++ b/doc/examples/push_back__object_t__value.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/push_back__object_t__value.link b/doc/examples/push_back__object_t__value.link index 375315e4..396fdf25 100644 --- a/doc/examples/push_back__object_t__value.link +++ b/doc/examples/push_back__object_t__value.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/rbegin.cpp b/doc/examples/rbegin.cpp index 2e9824b4..239f7a68 100644 --- a/doc/examples/rbegin.cpp +++ b/doc/examples/rbegin.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/rbegin.link b/doc/examples/rbegin.link index 34174218..8c8c9241 100644 --- a/doc/examples/rbegin.link +++ b/doc/examples/rbegin.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/rend.cpp b/doc/examples/rend.cpp index 0c81da12..adadbbdc 100644 --- a/doc/examples/rend.cpp +++ b/doc/examples/rend.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/rend.link b/doc/examples/rend.link index 7c9360bd..596faf60 100644 --- a/doc/examples/rend.link +++ b/doc/examples/rend.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/size.cpp b/doc/examples/size.cpp index 07d1b6cd..23754837 100644 --- a/doc/examples/size.cpp +++ b/doc/examples/size.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/size.link b/doc/examples/size.link index 9042e08e..7b2f2501 100644 --- a/doc/examples/size.link +++ b/doc/examples/size.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/swap__array_t.cpp b/doc/examples/swap__array_t.cpp index c83556ee..2119dd55 100644 --- a/doc/examples/swap__array_t.cpp +++ b/doc/examples/swap__array_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/swap__array_t.link b/doc/examples/swap__array_t.link index 7562e784..53670b8e 100644 --- a/doc/examples/swap__array_t.link +++ b/doc/examples/swap__array_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/swap__object_t.cpp b/doc/examples/swap__object_t.cpp index d67801c4..301b558d 100644 --- a/doc/examples/swap__object_t.cpp +++ b/doc/examples/swap__object_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/swap__object_t.link b/doc/examples/swap__object_t.link index cc6a18bb..256be861 100644 --- a/doc/examples/swap__object_t.link +++ b/doc/examples/swap__object_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/swap__reference.cpp b/doc/examples/swap__reference.cpp index 5223950c..34182ad2 100644 --- a/doc/examples/swap__reference.cpp +++ b/doc/examples/swap__reference.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/swap__reference.link b/doc/examples/swap__reference.link index 8c906769..49207f61 100644 --- a/doc/examples/swap__reference.link +++ b/doc/examples/swap__reference.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/swap__reference.output b/doc/examples/swap__reference.output index f5495bd5..96b07b09 100644 --- a/doc/examples/swap__reference.output +++ b/doc/examples/swap__reference.output @@ -1,2 +1,2 @@ -j1 = {"e":2.71828182845905,"pi":3.14159265358979} +j1 = {"e":2.718281828459045,"pi":3.141592653589793} j2 = [1,2,3,4,5] diff --git a/doc/examples/swap__string_t.cpp b/doc/examples/swap__string_t.cpp index aeea028b..b5d58316 100644 --- a/doc/examples/swap__string_t.cpp +++ b/doc/examples/swap__string_t.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/swap__string_t.link b/doc/examples/swap__string_t.link index 29c2f9d0..b9fd75bd 100644 --- a/doc/examples/swap__string_t.link +++ b/doc/examples/swap__string_t.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/to_cbor.cpp b/doc/examples/to_cbor.cpp index 335a320a..b4849c1a 100644 --- a/doc/examples/to_cbor.cpp +++ b/doc/examples/to_cbor.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/to_cbor.link b/doc/examples/to_cbor.link index 9c9f7a83..31f4809f 100644 --- a/doc/examples/to_cbor.link +++ b/doc/examples/to_cbor.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/to_msgpack.cpp b/doc/examples/to_msgpack.cpp index d0fd9816..8b18a123 100644 --- a/doc/examples/to_msgpack.cpp +++ b/doc/examples/to_msgpack.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/to_msgpack.link b/doc/examples/to_msgpack.link index ad0c6ce3..dfc0d333 100644 --- a/doc/examples/to_msgpack.link +++ b/doc/examples/to_msgpack.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/to_ubjson.cpp b/doc/examples/to_ubjson.cpp index a39bc081..8a25e618 100644 --- a/doc/examples/to_ubjson.cpp +++ b/doc/examples/to_ubjson.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/to_ubjson.link b/doc/examples/to_ubjson.link index 919b8b9a..add6fe49 100644 --- a/doc/examples/to_ubjson.link +++ b/doc/examples/to_ubjson.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/type.cpp b/doc/examples/type.cpp index 5979d025..68fba3a9 100644 --- a/doc/examples/type.cpp +++ b/doc/examples/type.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/type.link b/doc/examples/type.link index a81ee122..e027bd2c 100644 --- a/doc/examples/type.link +++ b/doc/examples/type.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/type_error.cpp b/doc/examples/type_error.cpp index 6df39f51..d4f18b18 100644 --- a/doc/examples/type_error.cpp +++ b/doc/examples/type_error.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/type_error.link b/doc/examples/type_error.link index fc160d07..6907fd7a 100644 --- a/doc/examples/type_error.link +++ b/doc/examples/type_error.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/type_name.cpp b/doc/examples/type_name.cpp index dccbd7b7..32d3590c 100644 --- a/doc/examples/type_name.cpp +++ b/doc/examples/type_name.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/type_name.link b/doc/examples/type_name.link index dad7eebf..454da519 100644 --- a/doc/examples/type_name.link +++ b/doc/examples/type_name.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/unflatten.cpp b/doc/examples/unflatten.cpp index cc672b5f..5e3d65e0 100644 --- a/doc/examples/unflatten.cpp +++ b/doc/examples/unflatten.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/unflatten.link b/doc/examples/unflatten.link index 20582c9d..d13f1717 100644 --- a/doc/examples/unflatten.link +++ b/doc/examples/unflatten.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/update.cpp b/doc/examples/update.cpp index 4383df7f..b77c0fef 100644 --- a/doc/examples/update.cpp +++ b/doc/examples/update.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/update.link b/doc/examples/update.link index 46af9cbc..5ad367d0 100644 --- a/doc/examples/update.link +++ b/doc/examples/update.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/examples/update__range.cpp b/doc/examples/update__range.cpp index 7c56aad3..88780fd4 100644 --- a/doc/examples/update__range.cpp +++ b/doc/examples/update__range.cpp @@ -1,5 +1,5 @@ #include -#include "json.hpp" +#include using json = nlohmann::json; diff --git a/doc/examples/update__range.link b/doc/examples/update__range.link index 1e90f66c..d2d85a82 100644 --- a/doc/examples/update__range.link +++ b/doc/examples/update__range.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/index.md b/doc/index.md index 66ad588c..a3024a93 100644 --- a/doc/index.md +++ b/doc/index.md @@ -299,9 +299,9 @@ Note that this table only lists those exceptions thrown due to the type. For ins -@copyright Copyright © 2013-2017 Niels Lohmann. The code is licensed under the [MIT License](http://opensource.org/licenses/MIT). +@copyright Copyright © 2013-2018 Niels Lohmann. The code is licensed under the [MIT License](http://opensource.org/licenses/MIT). @author [Niels Lohmann](http://nlohmann.me) @see https://github.com/nlohmann/json to download the source code -@version 3.0.1 +@version 3.1.0 diff --git a/doc/json.gif b/doc/json.gif index 2b5b5883009e2502f32f6fb7331db171cd019894..608df6aa6308d12dae46846890590921773d3fd1 100644 GIT binary patch delta 474534 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%0A6*hdf8* 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� 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%0Do+J&o$axUTaNPopIJGR^&Cp?9=>Cwf_(AtGh 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 delta 1180609 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≫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 yEOM~c|+j+z|C?r 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�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°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 e*Y|sTd%wvyP zxQ)SuuY@SnfsQwsherg2Y>JCo@txlSjh+Gh*+~3f7gL=@5ay!d{mz5T$nYbE&O8## z{}NC2)rQ%ZP-P_MRTJ>IxDt&xUU6xe!X{dfIucjINi#z6ROyvUl1b$NsLndX6L((q zN<`-2W8naR23vb|UK%xGL4eQ~2k^#5QD=4z0IsCnaheYWShf+(q3OGQ4mG-Zv5@Snd6IE_J3MXHy-19|3qGV=S~6J&{?txCL+HqhT4b zFG6!WC2oRIm7;pNw~SbSpBz4HuQg@WU{^EJTq?Py8gjztqzl*%Wz~pB;wJ<<_|YHC zsTKogjsY2!Whai`yYe3+xkaqt$q={^kgN`HO7-TaZ8;ijrh6S4_yBybX9BFAh{+Zg zwsa+2M#JOcJ#=YKGi%z!YThGPXicc$GQ@p$fx%|H{7laac>_CA3^}_F9BzU!3;I*dqT{@P2@UbrKdC|}KSy?D?MPK8uc2%;zuhsw!29a4yMEs=;)1KlYVdw$MX%B6e0?@J;qqux2MF&AgXi&? zz*i%&5k(cpU#p zAIakJ#$O=}dy;5lyoU~_#KMR|X>dm972#|#0SAtB_wXArx5gOAR0E9~lD zqY7d6@i+B6`gUSc+JHY8#eS(S%1oF3K=yV*&X2=WbERF;q=HwM{Mt4^Xs=sf^@0NI zQCJL*&uYKmK&apo>9#bGs|imoIzeJJx!fL z)~}$GDCf?n5qXC_KI%iaZ-#MpeZ=mni92coj@9x|0u9S&BGKCLiG$P6q;)jxt%D#u zk0Gc#fIu7Zk5%)$lX~LW>#`SQ#Rg;D5AQd?vTamTU}U8@j}HavwL%39 zd3PB{=LxQOI8R0X_Y(!eiG48x+|A+IPj|}3|IN&S~ z&ub6Vhxu+{6cw5<`BIeJGz1TN0DsR9P>g;Nwqu(1Nz7AV%wwRXx5lz}LRMn>N}sJ* z4UUJ+UB)lmIECTwYqgwLL_9gn-!gpMMO~L%5DBAq?L>Vqg5nP6jh!= zI?QG9EtvQ4&{wrWR*h4CZwb?r<1VSz*}8IO#wF;_E<1?Mtk1JAnrQ|)Q;{}Vk)Pi@ zo*vrMehYfIZj$>J5PxSfw7ZEt^>%y;(eY?E z6?>^@MA3fmaetoh#g*-I@A&j4AqfLp3Io=!SN^+q;e!GoZPvfVQ&dK15~yo5ZuRbO z={4?}dHV^4k?Hie2Qqnh`7;))QP^3JR^%{;@(6~6>V$ezM{r@DvviVE;Q+IPN>Ke3td{oVk zzVuea5&mU)1@Hg%NDy=*?Z_QEs5~vJU(*Fn|I<)+s3g6QE<{daaLt-Q0VGS zjH2kaz)IhvSf#;L#PZ5VhgSlqRLaAT8WU+nT(SSuUgvi7`Edg+R_Bu(E#@|*i9oOm zhga8|FVk9-@>^#As%qa2asQ8|o{u_?XN%u>2$#hqBUWYT52^5obGxm_&DD{czMGj6 z^zF0<@FU@0A*=DdI?r<(O@c7*zjyWJ38cgx!3nR*Jehzm_=)!4_Q;eEd^$85X~4L6 z1THZjwuB%C*ldA1`ktLuWxWaT&Uw?O4c9w~&|A$nb%IA+5g*ZkYmROM<9_0~co-${ zf71Q?hZVyF``c^0>?>RsMhvlhz; z{4%bh^!#cn;=(HbfSAZ9v5fYg@MCL2&d|1itCvnVCsv^Fj!QNG$juwB#spIRn5GNDQj(!Bsn8d>bCN^n5mED7Xdl()=LG~V zm*Ub0S5#deB;s%(qd-C2fYIV{infq2L^_^Ergb4=kvcCdo+kWPKaj%KtF6cW%&dg}LI-@knLZ`Wb2qfgf6)<1~sm{y+O7EFb!C>e$4%S8X$I#NkJ zR<6=|tuBzsdutfY!z&#CNI)+xGbzeg>6doOgpy#J>^sr~yIQ6sV^0}h@;e#^$3MeA zqy*IEqZIvI;@Pr-X4M%lj$QZ!(ZUr3>7=i0iSn_GIyF@Agq`W5i?gyAp1Nb@iO-H5 zx837Z$^LE{0OM;Wo?lxsTjk*dZ&5{gjb;nes*5nc<4|HcsfpR@9kUTEacoUIyG*zS z#L0ax-!ye?cA=2>yCZqlIWzWmQv>~!(Km=>2{`IyhKC?|{N^zeG5376Me$7X@0qin z0p?mn0Ug2ZVqF*5I2!)HO!wqPmOj43JHk*?g{1~m9^t~Hc!qkGB1F)tRCv(w;M*Ph zqk|rWv1d0`ScEBupZ+P|Oxa3fH(#9?u*2?m=tkq&A4bGqtNXe*I;!R`MGVeky#)u}zTY`0* zCrqks@*Fep@6!kt^Z++1$HyitUE04Xk7XM`G0)(4$VQQV`9t4%d*hanc22DJ@SH9Q4N89^V$n{G< z!qm@;&9E(`{v59kVs91o9-rST@+Q@%Rp%S>?VnS1g6^XlB^g0K^8qL5I_I4m`X+L) zQPMn*iK3;*X=fQK`?F~0rQ3ZX$1WhRKk>Q9HvRg^*LXt0qoV08 za!w2yygsx@0BD3=jeK@3^TjMYDJjF`Cf$E$W9lDNhpRqC;b-tR4XL%L5 z4gAAJpiGgam0LeVAJM)bkNDaAmKvwF|Ch`%?JLNBpA=>+0=jY`Ku<+7#6~}C z=vc#fQAVZdA}&Ce+$tYYQi9=pWWe!;B?Q`U-i?;3(u!68E zTG7YxkNkCTJ_Fn?1aWChgYk>iDkg!-)z3jJanjybvU!nun}>PKkobe+25$9qIqDia ztw~svByP$4K9&uasDbgtGz|)V)UaXpiSb}d2W3;H=EP@3R2rFCCMT3(63lj3Vkzk9 zv0I|HND&lU!OMz>a+`WigT;)|wVdG2RqbcA(F$Y0@3q#o52}R@o7Q$6-R;wMB~Q!B z)OsHVTN+IFJ53xdEw{m&MR7a^~0}q)$jk82j>W_uMM^Z>pd5W5`j6b|-W&D8yBdyi{B-+k zs|iji*tuWoD!-(XOThl;#_RHmQ`S@G86_K&S5BO{efstU2zi-!W&XY@lIni{W`Ylv z=R1j{Ba#DKYx#~eezdD8Y8RX-h)~%}Ex!!OpKAHtQ==Xa>=pcU6ytffOl|hImsf-F zKUQ$8+Id?vmT>&HxeCGpvGc|LPw-?-@UzfUr*dS;o&VeZFzi7BqVx-9>Fqy}OLN*| z(u9}Qr3I7!LHI4X4laQ<)>NODg$>=~A{ zO8T52j^;QXN}MEzZ=c&N1T$~Jz$oQ(;W(~}z%u3GRb8VNr}IB7sfxzYX*k{GCU&}) zbMiyJ`R2oFz{#xxFzn=&`RZSP5TvP{xmE9u7L$caOt;pc!@~JArJ!5+bG5srO@Oz2 z-VLuXAehoIvhqabIh!>~)YPhhie|;927hj1>5~U9VH|sK=;brlv)9P;g4r7Dtv79# z0Tahp^fZ&WuZHU~sJ&GG+XM5l*7-v7zhChJzu;PWZl1Z<$MegISnRkf&4;#$a^WWG;UbItxBKB<#&LYuWvweyc=x>C$SOZd` z-oXqnbZ7+K$pa}gX)3=8(I*6$vx07YnW8lh>x=j&Wm66ym!F*fR{3A**14ztxMru2 zPWYvr#=W1;h^P9!X4=kEbfK=|w9T+H*<@(2Sj^97U+zxaa$N=ryHkebY!&79XYfKv zrI6JVh1^eK>(pXfW*U|aGGwRq<_J-mzy`E5eBk4>g>*al?{MAJ8WevA{@z;R2A)J12~=^3DvvG z8_Gi>QHICrnBTnHv2{?b;0K1OP_>X6<5{N6w_ej_ON$-L{{{(%n5%6tKZK)y!fg28 zSaSy(bqqgzW!JNUd zuJw5pViW?vHw8-4D8V4FX+zS_Q~z4ic8rD0h67r4iQR>g@xvnb9%IdJu6!EG9H^pI z*ktEgyGTn#J+pbnWMuD*Wy?db(D4VaEuGdHR5BuGZSs-;H??hR&1~!JZR`DP8)9r-o`H7Ywp?Hg2h`YVd+UL1 z>oeQi%eHMhwx>`TS{P!UJdID9c*o4H+urW3pIuLkU2i(cp^u>+K|2(8^U*+_sdf*S z?H=veJ^pLQ5wstWw;$BDA2PEawznVgvmcGIf0AlHmTNy=VL#Do|MY?VvuF0tukYOg z%TW7BOYx|!pKz2l}|2~zKF zhi?5jzZY+p(`}m444G+0EU<}}`SynPDH*7MbaqeQok=h6#)OwmSXE z;y^VZ!$gOlpxh31jrE8?5?dc2JQB&j(ay#-%A+pOrg#(Qn_6jcSGz|`2W`&Mr zIu10Yll!K~?Nb7GCxxC*k=f~Fufg#wr$zfpn|6jmDNw$Y@ngBzm6=A9gN9^J{!Vw2 zlc4+|jz=s)j8^D!O+ZB&SoEKvtins3mTB9A$pB*>zK3lJ?F^nvP9h@|p?_2gyxt{@ z$m7g5`NbquK?+ zB)jqM)U=|V`F4KKOKuj4x+HAK&6gApa zI$X+@9rNH|<{L2&e0-s9pNq){9&Ti}L9e^@S*7ZD;01TdXW9JJ_s4UkH+9GNkmpIo zg;vu3qIjzYYj3~hM{@pdT`+MI!uW`fD>>3Cf?rCFb?ynw3o7aee< zVMT5$!Nm30reBn}6+9*GNzb?Kb9n?svT`F%l91KlbU@+kol*fjzGB z+OumvsrW2bX~!p3g-x`FL{!&8(>-zBm${Sz4~0r#GRC=dw!KpDAIhDc1ZO?J<`)dD z8d52rlgN^@OnBPG6I{kq5+H67BLmmq3ETp}8A2mL3z(#Dnu{Ht9LwW4c zC;w4Q&%P{MDi(C1>BRr7?8VWQd&C`fBsW8-78iLc1$t_Qv-30H%dx9ywnmS#g`n$& z`EUJ8=ZuRF>Y2`A4d3Ltk`P(^23caKN+$P~QfeRids`=C1*WHEw5@_H{ug55Hq*h; z(v!?_JEN1i73c;an6SXcMqXB@Hku1x(N`SLeS(Q?2hE5Yr+T?ZBL2OB@JP|B2}Rf#2ASJl=k!xa@clkhn2TT#ZrBjV+a z&wrWDuN=#=Ag4~f4-R>A>guU%T*X{7k;vPafuwjGdmoqw2!$d za-rR(JFo#0I^F-tWv^799Duj{hlL771xM;+ z{r*^vRdZ4R!Y(b+g*(tn9wM7JhCSOnGMNR}E*3njhq|^Ld+rM^_}|)sDINbpq&m_q z4axJw5(>6zyA7zVHsY!N{Z`~&cuLs~t7psvMycGrqpZsje$n&x{yLeZmE6hxyHt^- zmCFM+zC{8%L~HiU^n#BlT-5MM73QR^%-!*A%wUCUEcT`a9$q0}?18cB_{qz$(Y>RO zy!+qlv@FlIOJ#+rdLC18eW^tb2+HGV$@IAz1k$~0BW8@ZPNcDu3qvV2(5lT2b%M+} z;oM2Ol)qxDnp~$!EfnlwncuFMLnUQQU-XPPFBUwf?&)$%;kvg)V^iL41a<6Yz#wsr`Ej7ck#)4TZE+A2}dM%~E{BrciwpfQh z?5WY6PpH$Kx;3txh0n73_eM`mt?H3`eB5v+s{K!F1~9Wr^1jI|cw}?=$En_EMBj7$ zI-|_p8^2q(T=PGLX&BUXKrXt-jNOxdOk(X*^}JnWW9I#~ zCg7G8Gx%cMUD4Hj4+F*+^z&em@=vMtH|cTrNl7_wCv`^ z^)mk0>?!03sq({nl>I-w6-Dtk;Ww^!?!f0#$t6OAk_2M(=?54A{I6S5?YOb?*wuJdu;i~ykD1FC?!}x`IVrZu&NjC zk`D?jP2xTJJy7N5N6Ln8z2&J;V1tX&;=?p-;3iPJ6!)JE%-WH%=3_}$1tj7=WzTiJ zGY3^RvgqcMBAXYO=3V#SGwQWPx;vQdY-YMCJl!N7ygu`hOAR}5p)OnluPCs>@E*b# zxTAQw-_X_b6Xa3~{I<($EPaJt>2FCH!Q$uqjSpV`zHxy8T>le22kI8zjY&H|s(e~Y zqv#hd&@XLX>)%$hjZj2LtBVwFh?c9p%8bZl;`0DURIQn=-UmTtKVEqlD8w)1u6RGx zRrRwvm8turf!c2>z#S{ zkJt2DXW^YA?)PVyoHSs+(}h)~%LXRJw-ouWCp*SWc)774C3t$4(M{J=7i9qb84+8} zmtb@MzGC58&2!9zW8WrM=K5H_OIMVKPMvuYR5xG^eKtYm0*#u$M!44quf(*7_Q8i2 zxup`soV2D3KpLC44H*zmprGuTEXM)y=#Tojb@Awt^g0(rg|qW&L#CP91m@tB@_2!o zlZ)RB9MNK{D_bM|tAIV4UE_sFPv}}f6hSxjm(vq%hr~5vIb|wM&vR-DQwe#tFI_AR zn;iEr4j0mjZWPO%BNn-|^Bfvwva2}LR#S3{m_UyjW>*kQBjICvvom5;qxtfGnJUl_ z)F|T!`mFZYsakfX3mW@i{pakmcv`i`kuiqj;^XVwuabvDT;cVZiQGqfOXaphuBYEh z=88&j-B-npZFuJ^xlXo-8nGyW4YKkNWQMWWq_@N;aW>%z{6{qrs0*7fLh$AO8Ra2D6??k)(2y_{h z6=ICOiY-h^%Zn^Q%y6q*_i@6ZpDKZx}$S`P>|%HS8J`x_0KLz zl_Pn-o4w0g-B&= z5pwvsnNtcv_2DzgkbXe3Q;oi1B$<8KutyrXI;>tP<1H0%#;7QLh$>qHal@CesY#Zw zZ=JguHbUnyRhYJ#gTcmOiS##Cy*{2UAqOUllp=oj=_!F%=;1JY=tmy*Wr%7P{5(3p z+tpbcDlZW>Lpp2Sp42`7F8+07sq^X4A^EOn$7lSyo*S;4`Gh_BjiunHJ70}b)!PHZ z32gmP6!`{wi$&J4IoRwKBiK(<)>ae6aWAL$dD2%bU*`9~wjhSc0tDwd44l;-ugFn2iAEOZb8$Q~aZ=Z>FkJJ-7)! zn}!3usOQV~m7l^Q9Vim!^B+KEWg$^ITbHkg+9vVKxb+pY%adA-Ywtn4%`O39O zq2i9!nOkFH@tac4yS8?<#tN{gD-V>>dRex9Xz?3c!|LT~*4Ov!!Y+I*&%UcnlpL$dWk_hupr+LJPR#IGYl-q=p*NbATvkAnJl#MZ!b*ESEHFN z^?dZiOa3BP(SL_Ua4BUQjC$hT0&Rg*ZA}|(jX`o_R+F1ai>jvluP0fMuMq66z@j6? zdMec=hf<-2y+w_D9vyuA#!`{cCB!!=25=V};x-^G@siv7%e$_Cq!B_YQEjBpZL4Gm z7TtrPpJ$~e+N&7X1r3(M57nhAu)lV1Hq=z&9pjXLPb-mCq{^E9CSH?U{V+AfV7$y~ zw9wcJ){`5wQEcl#y&Vj+RIw?az}(KPOmebp?Gx4dYfa^WRM>ceGVQiCHj?hOj;!9yk+I(N3NlD zb!?0!sK=NkCYdTLh$uUs7M9E~fLBkql>js8=N8!D+Zh?k(Lcgk^IAVvB8*2mW7$fQ z2WONo&2A7eKGQW`87d6;?ZDS5vNgd%M9l7TaMtMK$sR3?Ix0i3TnqdHJ={&kW<~Jl zIM2ba)()m0(NuH3sWHpvFPHCk(s^}|k&B?BMvCXQU}&R)CVD&Lb6Av-7ktl!cu$>$ z0qgLfC5v9FUy9ZyZ6JLhv2_;vl}wcs0q{}{c2Mk*8n88LPCI695CHg;p70GIbmQ(2 z`jim!Ag6$0Ge*CYph7>f{Zi*u7NWTMl~pbeid8l#SRgJIX@tyClx41JegQ)jJ zU%i!*IDw82`%Esd1>UYIsks%uRz5P%rENJ&;I$Kfy>Ft}#Ez+W7iVb%zkV&*tWsQl zE86Vo;_vzlm7DTee)IS81#33U;v%EMA13-48}s|wd+k36yB)iWb&y- zlxCZ#wR5%k1X{%|*fFojDKLES;dLr{%@VIVwj&NcCZU>+Td-<9$0&*=mJTWC-Hv`Z z4D*#9x=W^I-VFS-XapR7tZ1M=iIJ#Q9eZ)h+g-5rEUfpt#P}cYv0|-Yf`xKj*|yI3 z$?CPmntN7#N)BWHAx}FhU1&Wcm*qsVC}WuayH;D!Byyu3u{HnqOO<8R)eu?yQC#mT)TiMuae|?uQ*K>jBDDWjvXgRW6%lj3~y_ zJGGpZF8#>64>PV~k9a9ToIU2%1*#rKm6N!GH5%SH1IN|7@`IP6$CCaXR7Y!$c_ylR>&vG zS3l_q?QYwis^bW{4ajZ)s-#PjV?Q*gw@_ zjjbnBLhi&EVxu>&NZm7S9dS~;%=89LqKPj2OjNooJv`_}R0>t{Rv%D)g_CSFY2}vv zFr`E+w&G^7RhVE9sltB=4SnLIqtmD$%Zt;5;t zsl^gHc4a8lzpiOSoD`a+Uo*H@J**btg#Z1DxV-vfzci9I zsLj1y6KCvS;0);$P46GM8UD6JxI$4ghVf45`PY%0j?Y!j9_6ndX4pFqU(6-N(9v-o z!wML6`?^Dzd+;Scl>f^QulZ@2MXi=Q{oMG;>^6T)mAkr<9|%j6>2 z8n7+eDvH=VJZy#gz#p@uo>1?ETc)yc5`OBgJ&JTq&5l)dfIRK;`|`!}>orwGzZa_Y zjuJ_VOD8KF*)K9NY(a@uy8M{NC}~ix9j{On6=md-)ibIA1<6yWcnJ>u!mD|esevZP z!GvsQ)n%Z3D^S6Hu=->6tz|3K;Q?6+T`t~g53+irhPSB)uQdVe&Sqk481k)nc^goN zBV;uRWBZ6M>oy=~A9mV}&^9s9_M1n;hS2$vem7v`m%^gItzjVV8tB3}bRJmrpk(D`2Jr;mFAADh$Lz{42iN9~K@-xSDnuYeH&kP@Tq-jrc z;r2B7k^jw>?K=aD?vMQ8k~+6V9iJ@uB)m|cswsYE^^xjpKy&8@NQSOI`?ymVtV8gN zSv=*cU_(dj;=HPe6T1MBzLwW{`8JQZjq;7 zJW|z=9*iRHEI970{@z)2X>)tN$a`U#_eV4OkwQhr_G<|NOAX{|`l-!Ru4`88Z9;~D zZ7Wak=M8F0?2d;kBY=G=;|1^6YvY=1{>6`XM#g!0+ja;NAHO#4a$O*w2uDUhpBH80 zzG+S)oACRYS_@f>eINRRs|$TrN9UHxRc!9aZro;84*q29w2uR&TJQxXU&KYf{Puu+ zb!7Y2=o$@z49Ce-mpn`~UZq3X}U!b{D7|57OENon-&Fb`a`HIHik?NmPTRsQBM zX!fg)U4|N_3v@6njyWTIlZf0phE~TNtxZQod{bNBJ*odqO_@X0nfZbgPr}RXTMN((|0Ah_Iq*0lG1|+{ljv8nPlPZsc>r!k9BXloICYmC2y}@13O;}sc@l?w zq+LH8x4URXMXfYCx#FzE9U#-}~Qv=Xt@* zyP1pnWIsI68eco{jkxjM@30V=)O|8dU$bt|-`5LR3PG-fJH-(tBcy?)=|E_*?H?Wx zw4EH$nK6eY8DU9(_x1k}PZ{pl)(m1jiO&u8k5jdVr9IRA3Ok*od)#FJ3Sg{?K2&8AK0yHBS zF7rtwjKO7LK+?PT+Jf&VQ}(ToezlD*C9ia62m#`*#gmvl?h+gj@my_e&q@7W_XK@1 zb+*g>vjN%W+_{U%r*9HZu7|@70Uu3pkvX@?!#{#@e$sr4)o&2Porcdwd!1Dtw)1sQ z^Sn#HN%Y`5utFMLI)Rgnz$5y4GCyNU5q+8FyECJB(?jDvpH%73Sfuu36dRFZ z44IW8>dbq!XrFqgpQKts!}^B?S7Pk_pCrCtC`){TQhzLzAPB#&^=m|Sm?k((YvjGy zW%{Q}Dc^{zt-fUfc+g9Zpl2!oG~~Ym4~$9OeeRpRYB*%zwM^=SKEdt&b)~r4hWlx? zn^y4*D{)S*ui@n%z2Qy0)aF8BPue+hs^O(LV$I1p>($VbO+a>ah;j6p;#(ZkYMGZb6x3Q>1+2X5^X-An;SW&~Vns%QG+`-W}NeL#R| z_sr<_*m|h`mDfwDlYjnBK7ED_c<^AR`$im*W7?7_g*8|YKko#gKJzV}rdoMC{&N`& zV0sQW8eWoD_-&Q+eL|i1eC>i;#Qs9uz> z^&t-YFltLGb+m4Pdg=1E2uyxhN5ts%wxy}Y)CE#XpT`ZzfE-QD&YTo_w|~7Sll&l@ z%Qiitb^fuhwB@JEbR~o7=+c?qi?69xcOUl=-1IF^PzmW5E5#oGN{OBy&Jo~$o8pFV ziD1Y$_SZYfjb~1{Ur(nMoN$x3SiaVmS#Pq*cOruQzqtQ?{-)Lru7Yu2oFE6+ls|zX znshL~q<#u~6=$F>T?HtHujOXyB0ajj;wcge#}g^dXGBA77{wUp7X59+m}}aaTmL|< zL!|>c@|9qJv(PnJ!-fZxEpAAQz%se1_6Sg)|bsW+UqIm5WU)ynB=X$@Y*e0TEyvMUQeC z0D%BfT=ENJ0hyYFY4gC_pf}#g7i~Jo>cSMA%> zT-uVbnCz4gH0Xc35|i_f{1fQ$fM?>8YyVR~@gkBm_@kBh&sQZ6qL@6! zK1Ec<9U0t(vm61Oop7dU+skS76``oXr>XLj&p`p2nh8_6wN5p~wZ;dZkHfR$!5xULO4O3cw0ZDX~`*X2Ei zoYmT6!+;nS+7i>$=HXHeZp#DU(#k9flq!M=yb;4;jFyC%B|U$H6H9v1H!SZMueP;A z;r|lNF_ue+_ATEfGonYYz{R=S^lStKNo)2QxlVXfVbkQb1Q*ow2Q-X0^qr#$ncxgh zqhxV?VNR8$YuP%E7_mndEs@oku;Sco1DS~+lF32v>Ux@H5Vy<0R7WxNrH+5!F#~5@ z*w~Y7$4HlrvZIourv}cuE+oZ+ngO%~G5K4t8L6#$<`wU%K!!@ASP?2mRio2Eaw7e+ zy|pEpXG}rqVJR|;=+T8Wfm7dzWfln(tbN8$Kaz`+kZIGIVEm}R{g!wAVMHALw7=sn zpD05bumx{Ay_^Q)L$cD!Ny}*7q{4*;?`YpSws_mAd|zVtY~pm-kXb@<;im-$_y?cEYrD1Mi{oc6cI4H!7ZjwzSv;+hoLsYud4I5<;@ov-)En`EgknJ7o`EuGT2z600w(#}E9p zsqd-JgBhr;i*liz`VH>d!op_2{{od^-zx!h&u`)*FF)WUn>Mjl(PKgcH1o#Zh|u|= z^076JEFLmtbHSE5LoKn&`1}Tb1-myF&rp{?a3dNG{bt2394`*7{Dhoae}gj%mve(g zBtiSHZwuCBr2B7}%;ir!1h91(bvgK-EyehD9;3JfK6LplA^MS;(IsR)(qY*1op8a; zCBYr!_+Tx5V}Ug99g!k_Z%p{wIhOWIHB;Pnt(5qh)jRoNYW6)*G!gB6rj^E1c{xU0{#sY*Uwy-;-cTI7s&AjW!XGHr3&JKP^XbjNw*+) zexT(uM_r3~4*lp+b_ky3t*SYtjY#N2zQkBrW^U1h3t5(e2L&MB-}Pd{p(jbW0V!z? zlJ|q#2NUWEa)<4#18;2UutMm0P))xTRcICHoAOF3yT8EB6;4!HnIdOGx3P&vi-vq? znCQoXqcN7R<&ulQ#`X+h-cab#e}rs-L7Y%NJYDwVE623ZR@>vadd+kCwhoW<3n_ID zo4=JSUVUd7a1OVI_F}QZUKLN8>wmTj$1TGv(dGS?XI>jh(1`w}S6OjOA>j zYqfcwp)LW(Iw{&w5cB&ulegf zdw(tn9uzGqux2`?rxmR0z7xFHfXhsEP~nC^1$=6!FNqCzsHY4>w{WCn{OYWP@&}$! zlSi*#EZ1ZR^(*0V2?SEddy0F_VmUFAMe&2{HHh)(9ml}OFMP!U+=ocE<8Y~s_>576 zje?^U?s4}(#naYtn8v7|;+_j4F^Xwt{LS%^;2N6Ix55u7Cv;b?F?3YM5I+oMq9@{! ztF2qAGUuFb;kDzRRQAb);5 zJznb^zWJ>p-(a6R9TV@#oqH}V^76<7S(P?l9`bzv043;ffOh(<@c>W;@5x+1Hs5RZ z&oZ>3suC}B|B7-5jTx1W6ZRhjle4cZom4;JP3Fy|J2>w3tS0i-^O-ZXsTZ}%C@-@f z@i}8GU0A*hFUn2C(=ga6QkXd5`fVUggYgR5^uhbi-KchLC~nBC z*mXFUCr`uXl!FPYd3=kC6fwvDWiLnDNc4{wVVB|2$5*oV=LT@bHKh3KPnLEylT{RL z1~UCvn=<|9P?a=7Ws29|_z-N5n%Yi7|c z0|>jM`(EPw+JGF|UXqp*`85_We1l_q1nR4k%NoZn&x>9^aHA5Q!mnqAJ`>E}KWXwB zZZD;RIHw3z-Jm3z%qtn2YU+V1 zTkT&xY6~^jikHPP`5}|j8Azw@`0*?UtAN;!u*eud6>w-0w#-%SM47gX%?&<%u5mx_{O27kt((H_N-2xj=%g! zQ~1!yT87p3k|Pj~JNPg^a4oZ(xs?x*QHy1&7z z=s{HCX+Y8qHG9?Cy$3or3|24>uBS&#g^KNm{15r|gC_B%W~}J^!QlOZ_J?5pBTDN^ z1^Yul>2dUf$=_l%cXphRg2GR}!p4(CK+3u*5zwia!D5RXY@)^wVMch0)2=hg4zIWr2O@8p6?LS2yP< zg@r_1W9VKjl}7WPs=29l3i5piS?c(OayY~#OZec|hVlVWONGPSf;%Z!zfFz4u)?5b z)p>acVvdJLHtbB>NooJOXn4Z(qNo(X!@btwG6Vts8ewMhk7LoIJcBT&zzH~dee7vJ zZLnBa%%uU2G61p@St4g6*FC7@>x3zk5RAuBgmM**dfU3WqSD1Y{L+=s0M=29+er2< z#Oy0F5%7^nP?I63-~DhJP=FlHISQ>tmbUR}SYG0VqFS|Jkpz`WNEmd|jYEkg(mzzy zA*T-4T}COMwCE;72pJE836?E2k+Oo;z3=yRzn-th z6OfTIlqmoryM8X7--*%+{tR9>&Hwth8H%?oFg^E*AiAehW5hr>qyh8P$2|KQV>!E} zuKN~3CI0Zccy+_LJMS}e@&4<-RX!bk-8C(cn8A^yN@9)<4B=wdnWp%4T)DceRCOxu zoBp+err0B=V&>F6a8OR8wy)v*+DXozss73N~7bA%K%RL>negJrc}#mWO0rUR;!ojbHUvAA2mxO@#4 z?+NoHW7P124?o2)C-!O1;Uu-zJRtc451T)@o>c=ew*C{rKOMBDvu)lT#nEoM)#1cF zcp~VRxa{FO?$67S0`R8?lK2iIb!dnbjePhy%Bg1|WFh_onRLbYmi8yt;b6V6_b~nG z%F|nemdADHlXCFE`IdY0%!;LaTn$K<;BGSOijg6mEW24IgnSjTrx&ORMBKn}mN9mm zn}tXXq=PY?MA|qq6&{1zwd4j5`HLdl3^h<`k9#+jWN~youWQ~+jI+PSNM)FAu7@R< z9Z~;#&8%9 z@z20k6thy5R4tiUkH_~QigOJ=_dPJzw}yhht8rK*1F#a6@KDx1$*wk84s0qLlk~NP z3XT5Qj1x!>JL#aYm1~gCM@jF-{Kw9`9Iez$p0TFS?!73EU09)lzuM1W7tDv91_!S! zs@!+Q=tH}x?}(@nfbPkHeaqEp%M^ojNc!>D?2!)5mQV;SdXK@c&@Fj(kzE3xU?T2Vf$_m2osFff z!!F^t{^4&>l^n^ZUl?RJ3CB6oPeRnkZ1-~^r=`eOVuSTha9zc!N147GA-~2dV4Tq7 zHL77wkB)tziqE}t*Opw+p~Ab$rk2HgWiSP-4I2Z<`@ZPKeGfetfX66JxCxw4@B1d=ALWGlb^SoK7w~F-`Azx3Wy2E_PF8+#i=B)3z z^AowhpKg;mW>!8KN~Ixd{ZTcZcLSavx4{Nfc6!CfBQaR)uT1TQ_@L?Ikqnjt{JhpU zjugn1j4>7e41?YCB>a@Z67k``3UKkmY@OFz4Z-b(aY3`p?xNKA$a;ry|26!jL@DUv zx6`d|$Q&FaC6e>ge&7eh^9QCI15b1ch0dLtRKHVs9GBfvXm+bYFn63_Rl@jVm?3mj zKd`dmBkaJBOzu(fLn?KVx*@u{8J|q!rH-|H%H9aL=_SORyYGwJxLzdrMGY1Z>1|V@ zcaB_eoHD+}MCGdvp!8#ah6&t)Tl7!a-ACy5-S?y;(`WqWQ?s&VzYb-KfQ^kBauzTe zo;|ds7E_vm7eYLFaZB!J51n_Y2-gS)uMLI$6BwH>0C zai96Ao$I#4a*nFUj$S)BbVtmuIgYz(x*XZ<;c>@U7AF5bUPl3o z(UW|54O(-y@NB&pWOj!`j%|Rn#M}$Xu+Yz}_Y^(f0Ou^#uu$D=nw$HzkE_6$H>94O zNcVhj(ZT){fA~gK_DyhQA{{hgE1#nilE{1@VM_gVZB-&$q*|`@*MWBPqgb<;pGUNg z^;#j-o!`41;5tXstK!6}nx=b+|n~R(c!)jhFLm`2vXuZoC13Rzk4gH$i>v z&ZF1TB4ZsLzGE=A`@7>E!z=ft?Y}px@|6N=QLlDQbb6rhJ(TgH)$m4%t%EphJ;2J3 zV^+twZgo!+GPs7DZ}m;A23NI&=@Y#gUj zCH|QuK0`!S+nj#fO(`zLhX&t!FGKKdyL9PNf0yV0y}0yPD15YBa*-&;Uz&d$%KRh> zEf-fWz_#XmglgrN7%CQ}7vJ^7F`*0=R3|Vj^&Vp(-uZZkRY>^fy{&7kCUNcPv(55Ki<0!3Z0(>VF@cNs(WB_+1i$8fj4;ykmNdxxE)^=wtj z;UA)_Z^N#7$)gPVUi-8+O;;JD8W(q#JjSVg`VqGakOEJvQ0ody)B^V6&jo0iv(I)& zU@IT*VI+L$`?vAxvHj??>Z0U+izj8%4pZ=u?;e#y!XatLYrYH5g=<;iFHDNqfpP9l z7Nix3h-aOoRzPoK)sr(QrV>Ysnm1FpPb3nX9v-B;mS0UgbyRwp`9jX^YJniUa z8n>3HcdowVDQQb`>5)~tvN(jx4YHacs)8&-9LJg7`1B=jAEKJL+H&2Cw>SARHP3Ta zGs}vQwPVUVKa<6rw9WRT6?SDp-w?C?SFXRi7)*f=(qQNp1i+OhGc1rR=#1`!P+jVq=C!#buYHby~O~3oMYTO z6jZXCt(@&VJ4~3WDvkR=FNr1?d+nUeqoE{gLd*%%a!WIeOOAV(c3=RqRL_8cTzk z`nkf-3rzmjj@XMTdJl$4Tp~-8v>rf*aC}k?nxqp@q)LivlFK`5x!RqpfuW;)?Gux_ z$t0gL$`CGY(_AJvV>szrxai*#V8=7w6gx*Rnu;)me!0W$(D`J4Y#{b4Yml6N8HKq~ zkk71FrrdIJqS`&Wtp9{;=Vkn)OoZ*7tI+JA{k6sC;Qfoz#)`m9yyR={Y%HV~c{vtz ztovOouaZ*{``H8nzRd@P{Uq5Wwq6Jf-SikB(i1UWUz_h=ygo3^r)8?MKZKzpccQWZP&AaLTm0> zOmd`HU<%2O$KO{D(xJQ}Stl!H;l)vrK4031=+M+wI40*&I~$*?YHf&5i~2>yAO(`?isy)1!;01$<9TpC3?Bv>~T38e4K(z9#3q0^IWmC;UfML zIVhImUw9^~8`yX@_z+04u8tL9k~hA_t_?x%#NO$<(fsU(NZlKuIsm-uo+3#JXuS6L zq=6$DNTO~#cq=UW@zq`ryFHAME}x=moSwNsd(3)blc5uD_CD_=JXs16=hPcM;8KP3 z(a?729MCE+9m%4S(9$~R@%38##q!tSn?y0fLFL{XI7z#jKvi|v(k^l4xp7oy&caSo z#Yu$vIya9BJp!fgCugN_@`>CdkNTUZ3$#Z%~J2!B3?IZ{kz0RJ#pRua(>H zfkrdZ6gGgbFLR^bj@AT!Whd#b35dJ;s?>%7HgLc`MA_LTN{+LOY}R<%s;g zjE%vl+scU0@?r;j3nnDy5sz?&Qs{OSHQzBX zijaAA#|oNv=kUww8{thMC+d zUKz@um|8sGVWM-zRu8#_JRFfp8FIk%9U_OTn>@FVMdsbPKE(Q!yML$TwaR*DnqLjO zzFWlp8h=-W;+$W%XFbjcp(2t9chs{`Y2=3R<(O=9<*Z-#iV-EU6oRiS|IeoqlM@=i zioKNR^Q)x`S27<1sOrtW27G5X2arPK&2+h>_CbiY--kUCt0Y3iNlH%$0@*#h1RX+I z?%+aEy9BO`$+ zlhOsqUOVl+{YLy`N;Ny_rW<*cA>F52EQ}8DmP>4r8YN+R2(C2EkgFM$eKEY%25kk& z))CKJ1n0nWvk$KCH*7-IROS#!`t!M_mQKg(UlhIBO_)E&+JIzP=hdx!&aHq66D-~$ zHHN9784yWW+!5sv)dbGcR;o)!#NA=KCnanNH5C)#U#RDjADcR|yu5<_1PhY7=ysFL zQP-SnC5!mw{IlcgAw8{GU>*CGF)UI#ZK>!vz1^R|kzmPjl=5BeAX2;~9aDDTZ#|PV%)laQ`6L(wAi95sEXSNaBi%3rYc3}UXxzV|y;+u0( z?zZ(giCbB9yWWlIsHyn)WoUac!vjz+Q_p#_9qdayP--rvUiK+sh6i14qT25IIqF{> z-G4TjgS$eG*TnfLycl)N>RrR#N%0Cm#5$INhvdDrx)9wN)j z<_i}m47IW7sW@~x40B~?gNWQYsSxsDXbR$~_1vr8j;@30wtfwj%X#$?RRzkGu^ zH|71!*jG~i!-K>0^kXBp&a@b{uLtxdEdA(T*%IK(DtCi8aYb+d{>bD+%6-sE+!beL$(n;AB<6DrvF#urU;*fj)PtA zaX2l6zN6qhILiRY2`&S5o|nk*wzG18Q=UcD0WNxtc6B&pHWwV-a~O+0dM^RF?*S_K zisoUCWukPFcb8?9289tSOs(PU=wkZ0F3~6p=ZLV-5DU#}Gc%(74Vgqy(qUdc=fWAJ zCPFAV329V(hFL;K=Z3nZJEk~FdTDos8+khB%~OqF`r=pN$&&{iM8Vu30GzRP*sqy z2VP^*lW-gC;sJw#;Mw`ufeW^>YAms;0AR&kjLmvBjuIqGfhhqK;WEp<=f#I`Lh(7m zizfjh@EM`sf!{4b3IOTri+9EXv|Q04S5PAhIdtS@=(*kp`8q!_Jv*zUc=IzUge(WN z9jgns9O@OpAt2S&(YEM!0?~G8TZF zuV@-~CF=2Y+Du(MIYKcssL_m78FL&}nOmseA>hZkG<7_=M!m3vN~Tb)u!e!7uNecL z_u*KkJzA3pO$>%!P;-`Gr?&75ES=CAK)P;eg-0jtVO8FQJ$cS9X8foW61GcdCQl^c z)HijxZj8;V&>+FXgZU$%s(+iOXL*3MHv$d^-f1YTuLoj;t3>KipD8=_%xrPGf!K`A zq%t0YtNJPf$Ye5+zf59Lb*OGYszg{ht3z&cdg@Ksk8u6Hqk*>}Q8U&DN#MdJNysKDZ@R##EF z7p|U$qf0b=b(%A|saHkt``t#o_c>)X)L?tIQSvhKaq;QKt3?NXM0}qNw?qpSE`)hL zLsiiP#~O|v;$8or`*P`s!?npC3HS2LoRBT`)}{}|mvFG>ngr?4T3mc6GS?j-dl3jmiw zyRIq-G~_(w+0uxrepR;66nX`|YwTIgzh~8o3DrWl9N|u3U@};oe#I1&3yxOUynY@@ zvMpbUUyee|h5;_}h`*m%3Isg*1q!20`;Upo!-=O^!NFq=gvqiyy7hFQJpW)B-9*~; z@I{o-kGl4$aDOe~2u)SS1LdZlYQYoo7?PHbr?AVHs|MG0zW;}t9W(N-OIZUM#|80s zJ%{f~pwA4H5rX#H8AV3Ihfug5-ifGdnQL_-ba--9Mfh*j5qplNCwxe&OagC~&kQ?R z_q-^y8GG7q!qiVQc1k${Uqx`rN21IS9<|_;~Lf+6_Kyda6}rN%_vq| zYsFT9^Pv}w$opIjlnd2_*)AxH_>?*noUDz#U4Q4lleCd!J@-ne?+m1CVRs*+s_Xt~ z6Z&mz-~T{N;l?Vg#TBnAHYk?~h*ttamCSz;L0|X9q5QD}Hvo4OR3bO%_fZ7|Hco={ z2$-pWojh+$ieLK$_^_Z7`hm}98-s-Me}Er}vw+cPKshzntg3SB;V!{e+ZFfR$L^^3 zDTBRhZ76jlAQBJV(R6*{J6%#~Kzjh#wL>zb<0bU5C;;_cfxtYO`HWv}`u*%`l*M?I zl%JMvQM^#CrOYOB;q^NiHa(%3AR% zGq;O`i>PdSNiH*9J6Zy7eiwm`pLuX3L&zn@#d-#uw+_AwX)TG$%xH$4ehxl)167yQ zEj;VU=||jMqR~FDdsPh){Ig)o+;ol~%A{O?Qan?%Vhl~p2J7qBuWF_@ z@+u6L+m;bkvgIiF;ieB$x*navozea4Yn{jG{r`l}OeL)YPeOwfouvjuUvAAe0f&QL ze`%llg;MpG8WeiDM7`4GWw;{pk|KX+^9Kf1viAkL3-vh`;#0f4{8Cb~=KGI_n6v;q9d%ctNtgq`qiJxpzo^DgVaz+2gFqAR7f7f<2|MJBdE=2>l(5oEZ#PL@ z&I&Aw28|o+iSZOBD8dU+qj!h24u@(KF>!Fmcd#Vf*oy>Y^31TlZvQ2(Ax0xCsqwYw zsoFPDLC|>ZF4*7;9YwDy;m^_i;F(8vs@NU)rq5@Hi0B|}`>E~hDVIR(%IgDYgUL!U z^e0h8!LqC14Vs6#{nQ$ee2$V8xh=`La*vMqi>!j=AfF=!L=7gN_TL)meS@-O0>iti z-?!uRc1=#X(UnuM`J>O?93f=aOw8)a=^m?_KcdjXxwLddA=PgDtD6F+;P`6bbeP-mdjn#4 zwgOp=0z_Dq_t{Xfcwi?79mTw zv1#>7XDnedDNxgJnJE;Dt)U^(cgsEbZ`u1Gf`?jq^#1Gn-BzczzJ?i(&b{AhYZ#j! zKxNoHTl$8cn*6r1`}>;hcM$_}zuWii%in+5Dwyefw{=0q1$;X_R=fT_#8CHJ4|)3c ze=DNXD^Emoo_|@9+`IbQ77-P{3ex*l&06(Fy?!JYaiWK zb*9(${M(P~ThiORZXC33%3L?EShswESK$6GPeTd~vZ zC)b+e_Wno;`f-f;BZXPdQR#Q{ z?e8)V^oMMJKdAWq@bT~V>E9MEFJGvx|F`!~chH}w%s;)4jmEP(-(HsaGw|=vpwi#r z^MA@&Q1Ql{mk#&^Z;cc`J&7`fv7Kj#96>QC4dqijRw*i3{P(svrkI(AvMIh+3{o)N zj-TtvQF6Q-@H27Y<)yu6b_f1S`aE_s=-K7K-^aead&Gn*9r%;7Hvdvk;aG9tZ|c?# zSA0gPcoim&VZv1!i9!+-eG*hAw2=f?;_8!y)oU8bB6{8Wc4B598|@_aLJTNqN0lau zln2GY9_tg@WG@rMHE@`dMc@DcoDzH;9MfPRBFBUnQt?&+0H6%&rE7uDK{}q{E4YTv zn($DT6a1?G8dd$;$7UD3$F8@ZD;H#IxhUUG!h(ovsd|p&bkL#Cai_-DE6ViwXQ#Ajqak?W4!M^VRN60+g_;2sFhPI zAxqm`_pAp+-HXBS3F7T+PxnU)^(M2Xdht8M5Iex5TC0&Dl^= zZ;x4XY)+cA&mrxX_uCW}Z8~|G?oR9(%^E4ygB(9|)!ne|e<8L5d9 zzW90d6U&8)DdraEE<;vJ4mg=+ls1Ml&pa}JOR>qBd}wM73#*nxWPqCYSua$nJNw&K zeJU^h7Cjx;_wcSqLPEH|r7Yss!D=__47-SGnd|A|O=CwgVdoR-EWfsEeUo8%B`f-T zohPh5IG6c)#TV0SsrDd(#}MFB#ERYh>|pY*`M$9|t>A995JI++1=*!hgTJTDBtS)A zC{{ZFDM!>?(b-L90bo=xkb4#!$vO&F^SOj`S2Fwvf{LPc4khUagf}^j@qd7fM&B7$ zuS|SbE@z>p3~zUtSP6iv4--H11QyI4%nHEC9_gk2{1wL`{r6v5x3Lq;TTN`R3+E}x z3Sw`Rx)M+SR-p0=U@?qoX0MReajNu3pT`;~iWFi|Y3Cwjoe9hV!VH!gjMJ16Jj)h_ zu%yz)bD=kvzY@Z0edSCf);VSF^evvO4cSVxCr{=(sn{7wpWwo!^fGMsVwNG_S|4e>VG!>%j> zcEv-90iB@R+!3NqW+zxyCErzx1>Tj*0@Zl{wboSW5{!#y$x?EUl&Ut`6G0b92ZO$( z)qZ@iHp2k#Ty4*~#SQ7OuS&ei?>n#f&Gr=XIob)P@%uuOuj<(SW zz~_N8;i^z3cOuq#pM{3*jhF|WBEB;m1<^#D=aJ8DBM(uemCXa-`fmA@+;o$-v-O%i z4UXX_05fqe=Ds9g;55sETeDhPv~EVa{3dfS9B=r{MRrPmM1N`>e1bY7d{o%Sr{RaT zg9$||CCpt8;1CQ#1&$MMBz_zWLA~m@4I$}w9%!G*vndINDd_VR({i2Lfo}DQPJfR< zZ${eoh}>=iQVI~#HU{d}-i^4DXS&4gE;(Rq&b#@~N~rep9<1&;X*yjNF{ zpm_&K)}N$8ClY0Ul=g7sLoa}ES4mlCi4mGiZpB`2MBe#s7oN%_$00R>93DyCy6xL|Qx|c?4nph$g<2rd%_(=T1x7C#aA) zf*_d~Z1pJECin4(HY~A(ON)*NhjW+@aXU3n3r6QTtXDH)iGyhiKJKW9;Tz&{6LB4Z zGn~JBc4No$Da)!u+e0!n^M%vjMQ7sS7Bu{Kbs}4}%QlVic8l88h8Qqvj{UZ$`)&(a zliWzWQ7^;w0BzqVHZ0%H7X3@zFHoY6*4`gu7c z(IaXn>eF;dx8)FBx35K*GiJ=rX(OB?nlP1mY~Ke`b&q~ovH1!J#GxCM_1kjIHq}nX z<`JcLv=O_b)G}ujQk#T+hp^2mxs6%vJOl~Tah*$Tm)arD8o6)owErlu*wSjgXjOGi zzrbS6bko47?h4k*ieD=PFtz;=p4)^|W&EXmcX+hDK<^!HU8^$Mlox+*0dIr9(>Z`M z=d|89V{V*kAX`XnJ8j37Z7|``*^pfbv6iYAF8bUQ^VBANhHrZNNp?EGYZtL#pzcaj zjoBsEU{{1h4LDQ7=D9$@#4L$VTWsT1lElj)=QW?~*)Z8bjKc zZPP0;D+=}i(6(Wxo73AB>cZDZ+ObssTUJ0wHShMEA-j%>-kIGSwpOB`ocZUF=9v;T zt~sxLy^8JIF?Hh!T+})h-I5;MR@tX{K0%1vVP;1`NMu{^eY>SPZfCM6Kch(5>m@yg zh+QkP2R810VxBZrw9Y@rm&a-I86UfO{5s`M4!5pHvl^>b$fx%^dIun(Z@a|7A~D5MosQNtV2s zdm7G&1ckk4s6D9{`6oDJf8nn566gB~2)BT}jiLFcb)G*j(NA?^lVT8oS3pJEz7 zQn&9HDyXymalVm3Run0o8uL%p zJkMBZZ8qk=?p7Tr&z63ppP5VT*(ZFK`!u81HCqL-??y4l-2COT3;(PGV8_oBapuIQ zC%FpvI~d)wBn189-b)P%8H0ECs_>t_VY<#HskoJO-Q1w$$hzsaJNkq6a`^H$F?*Xr zl{r&<*5~Jnp@?{-rBHRzT4I+nomG?csx!XhcRFH`D_ewnDiu%RMhtLquBrI8M<1QI z@g0u~iJi-X7e2awry%YWsBxN{_#J&Q#vcE14bU!p%igxFv_Yj|uAVdNOcI|tn8qje zf;CbA7^`A2^Wy7jEY5^qm-(Cn^o&su?>0R6GZ5YXS6e~I7mFwFD0kNIDvO5O8zDu` z{&K88Z|R-EPUpD%eGvw$#+j`;#%Fq6la2XOe+TnaWEGECOTM&{(skvS_e%)|M>xTB zUhq|!Q~m3O{Zt13%{~w2Q{_I>Qz|#I&5XPd_&|g%jrG;JveL!=3~QKMiP4PWtBg3O z&p^~0Jrn);+)%`V5b&15*FjpQ1SpMmk9MMX?a}F(5!OZhz2qbOBQ1})bp{EAPtJF{ zK5lpKj<6Wf($09~p9ljB~f0?ztlJ zYl}rsO{_5|TgSV`a3_6u6V1VEFPE#wIg76}HX962@h?Stv1hoxJc9nsab3u5czM83#_3REOM^%2e-MFMZU+U2a zyX4J|GRmDOjqpUwF(^)|jy?7W`9Ck%!EKLqnfq~Foc)$nx9xd>0sIQZ$4m}qUn_V< zWvph*ohy!;^c-EHOMlbg<(~+B= z{sycJ8-!8oyWy{?VEsJ^_+_s>=hXd&g1KINAFS8wu(_7p zeQ`znxt#X}C6J5x>APXJ)=v**Vp}itu}v3k!M7r>+ZKi$~hU_ScThX`Qn;d%eoWM3gyiufm zd(x$L3L$g}u~Yv%`gQ(J$(vR&y}+7J7L4!T>J4A_-X4z)=-JfMjm#(@V!KaYl~A(TT$vdVn2p1zBa z<{O?w&@j|cZ(MDt8EZa5?dF|T%D$`#f5E>Ki}x!h(pNjyD8fmCmUSi;YNOUz)T4du zs*LOeqlab6Us74*BHo@q*~S^XYvcM^^yp%-0Iw~! zps{tK+Nzg_dZ#oRfpECbEvcg)#PfUC4@I3eoZj;Z$3I}#s9tg*)FK<!3fU6{=?9LV@1*Q@?iFZFX?p}>?l4XwChUyb6#)P z!#yjljyi+#dB{Eg>-9>1mVEQwpwo1|;NvuhM%IG`?>iFi zUxVH2KEd?1MjWWE;SDkndm|?g<{Jd^XYQ_O4|JlHL@Y1+@g|}$C2?!01m*i`v+n$Z zrU)A3(*>BU$nN+y+a(5L%y@oLr$0gXyrb!tRqf#gl|R+^#|gK%YmIe6yK}*stjP@D zbc;{yho{b~GuIt|eb*Em&R-UJA(XQ??#v>&MbpUP+NZa@RscEYv2A<70udy zSiX$-aP+0^Ga1`YNjPUib$gzUWbz&+nHT>q8}@DKK(u9bVmi(x#(Sa3o9|nki$y9mCa;z)j!fRUHURZ!h9H zws(v9Vp9P<61`xdc&%tO$I|t-ipxJYwaD=hCN{8*a(udkCJBTG=`A_%8~fwg5la9N z!ye?Sg9jojk}-R~8QmY=x#sTs{OW=CH!i>CHDpb{CpqlsQEx^aQjNz)9%EF_DQhO5 zU=~&0<2v`o<*CaEzLNFA;hGI$n=`Htb(s10waoH$+G7iE9eYz4A$(P-7FlcTIgy}; zc>L7ugB`%zBt=&w@%W3PdQ-5Kz&qV{xHAQrjz4ca`vt4Q?6jM@QMWxQ>-J|-{0#`h z>$Yn0gd=*}fb@@3N_<~0AYGN;SVVRkb9M)=fq*t5u}=4{g;7vy^6zSn=LC_@{Kerf zj%6<%d-dz-@iYNH8JY#w)qu=Q-nyv%NRPmRMqJ8_J8?DILo)Vf7n7Cy7s<)l)UhRMB65=j@bEoK(HfT+JZHW*|}tQ5BWvry9E}2b&BN zjz`zpD}!=z^XdrV$~a{0_?J)r1mhAqU<3e$OYSORNnPh6Wwb_(D{-U@;Y&mvUlxN5 z7E+`JMAQX8J12tJDd}Bx>f!97)89rIR#kyD;bbR14@WLghF?h2#N-unN`;zKT#5Q; z`^bhoqzcfhUVQqwl(Fl04IV;<22@>-)TCrff+8Chaq3z^LNe`tWDP#Mv)!*A5Y9Cu zzT|40APZFIabX}``k^RtH;0_9bnlM&LlG1c(>@}J ze-Fy1YeKifo9z5V>`6ia$Ys}ykNWC~A8dUPBnXZFmH5pR9(C~buittdpuNv4iAbUx zmDGQW$-6~cyX<$1Nb!2%#Qy1@3f=eX^3pO<+)RCfxYHJLJN(t^WMzlujdsHqZe`&e zAa~mJP#jV=x1%v~=tbePV6rHydyEjhBf;26L{Td=ZRqOlfb6BW16AHsLqOi>nXa2| z^dpn;z>|;gub~xnD9!SI>-kqC=3liVU{!#L2o0;y4IA-LhF^R)Oh2-jh&X!RbcQWr zYd(7noyMw;lo1bq0PxE+o~@R-(tx9m_m3yRQ8in0mre>S7OS)w31eA?I=Q{odVUp^ znXmr_xPWga>5Y;T_j@BjP$7iM zOb51E9j)8w;WA0@0AW^uflMe$@a^QxuK`blF2LbrNK%D#5PYOJZGW9U1abvc#iewH zgJoHuWd|gYSOpS1nMPPOUq@6k!M5$dZ?%{#*XC3LJG=*rZwW}ilObI@{$ zJnaTO)H^#UPCl3Q&$=qpHgea_D9bJ*qS_XSc;}+lOVZtl1WAwLa7^n6dql_(S7UiD z#Gem9I^wgJpHT6#xkO#vxPtQ}7kqCC3yfodJXlJ0b!K}!DQu9iZ--RkRR`0D3G4(0 z{})c9Sx1L>R!E@1`ifb5ROgy_>U01?aoo|iS#}O7K_i01I{7yz?VA_{2@ivP^fED;r!{^f)M zsTAOSC&VeJ6&Hr_p5w%NKIO%*X%#VCXZ#S7v@4@2OCN{NX7}!eN9+h-tV?zLUh2#F z+|*keIXrw*O_eIfC4**e_H=vUU@R@lxNk17T7VNO z5oq`vGb(_NVz9TLbkT$>U-5!XR4v7vMv);v3Ck-AZ}2%F`4Fzd`i72Wc_#RDriHF6 z(+elGBE+aBKIG^S8|nrr&dZxq=YI)n-IMGk1qq>Vh_~GT@9)i{1S=`CQf`AL+nZ{f z;LV5N?qf_4np!Rv9Z|KQ=;WI|5pCXiS8Hm@e7_PsolWnODXGtQA=FQ6u|6#n>i7YA z6bR~BMQN1U&V!TPwJ>jzy6Yf)it0>f?cDxEsECBQK1Zq{7<#s+UUR6H(z_q^Nv#Go ztjh<6`AGh72MR1uV6@!WbDaTc#pgBBj2EU?stFyke>0OyLp*rIjW%d~fM7z+PI}l- z6_p#$lasBOb;e(do zH(9+~FGO;(=y_U2RoCSn#GW=P|K~}oqM73biU7DjpgC8^Ox5w$;*s+%7jgz5ZGl63 zsI4x;y)~3};l3tX#-HIduaA8~pbB4i*l?fo$HP7>z4>nErn^XDb^wg{?UyKUH5ED> zjqSzN&&^~Jz3_}RIZ|v1f{G4JnkEbzK7k$7piBp9a3}b38BgUsxPPmAqJ5 za{Ni*o;dGAZbkI;Bu~kz-I%PvT=O;gn*YLk%l)#DKKs2@S~H)25m>IxZ|2*-Magw| z|2TG#W4(^~oxxXnCW=0}vy-sUFwUUTcaXQ%S#hR$fOjv6xXnB$uCQy%Mo-b$GZa+4 zae9|%?u}Z%(cu8l`RB3M{J&P5$N*ej=lxu?@^qAumyim}{3f7v&MZQdE!K1KQJtK5(Q4}I0ZA!}2K z!;s+CFsoZyc9-6Top`TabS=xL-aqC81{cqUbbN)ln~A>=!1!TLB&xY)u~FXB@=e_( z8#ZyPSW(R_p7Bc~q3wsO$hk$Xs9-C@vE8Fft+%F#`QFIw0s<%V0_6$(ryO&<&-e1% zfbn=j)vIvCn6)x1KpHHP>)w7-^Alt|qU(3)n$w%*yHg87Gaqa%)^}9Sll=9^{{$W) zPfIBkD`H~^lxD*PrLp&TQV_{kOr2F!Q)=%D>KJA7nixH=CbM=_Fb!jhl-%$-#D8kj zX)TS3Ih}oZBalZ&1K3I5eMx02fB6aYJUSM@+RQApQx|` zZLCeVdx>$5LU|qJHto3S8kukokE`^kQ5aZv6!k;P zQeKM3h-P;2Tz$>)f8xofCW6T33gBhtCXEknXLVb7=uWPNmB-JZs{Gb?ESKx-b#aHkptbm@}yT`R9^a{xBngy zbe>i-Ai<85*LhyF^Cj}6;N6otyM^Q_jx-6q%RLb98J_^07b^R(ETA$_%FNV-gant7 zQIJbOR!mqoaq*p34CeG-*BgJb0X`O&FyKI%C}-pC0MDh!Lq01GK>L-$9apReK3GNV zKfUrs7R^QHkwi$$dP7>?eb;p5Z+|p#s zQiO2##B_0_uQ$yv*2ImuMe_i<>E}-L7eGJ$;8D(%o^j0J;^maJWU)d9&rLFVUWqF2 zR;_YMc6Nl6js03jHI%({%)_Wr0 zNV@Acp%LcI6_XNltNrh^igzE0S%7~f*o8iIdwn(J7^LQI zt=bWoDmunwsA#oUg&R`dOw5v7a*TI}kt(k;N=mi8>C)T1jMM5VA(O5f*P-h1L210~A#oIFn)UB4?u>SxLZS*rw+H5d^Q)BsfgB}37rkTQL~ zKKkgDHW}n>KSG&#-y~~17vWg4n3;URtKoIbXxM(SZbAt3N}akFO)NnTLaCbG?7l{J zouM4TumgDlLWcT<@cIkxABdxJTCzTM`b11pmAyEn$P_{n_4|O+wCmN_&sRN_@8DI! z^lLD2Ka*Ogp~lS}_(<#yGtGdK^cP(|UUDKb!tols6IYx7&z&1QT5Y-ulsi8dPNjKl z5l2_T7Qit05=-N-IHc5&VD}%TVnS-EvF_Zhi>)l^Qm7V#cHWWjG{`gR|A;yhcPPKO z|KGDQCNdanV#vNFA(b?kVeCuxeM|Nv$=b{?!w|CXG=%J1NJw9WVN zJlFNRet*GzpX*%rxj*Ne&+GkCwtQr;Dj*R?7Nf{@axt1FJ|^FTd0=F%%u^PeI0=Q| z#|Gvp`a!5g$P$^=CfWXevwnDiEgf3bLepB=mNXU1%uydJHAe$FrXNb~Foc_=Qv$!}L{|k< zWvrdd?o?U_sjuHws%w_T-dAD}?t|qLEpg-F65T_7B}(y)QtLi_Ra!PM4>y;X@M@dZ zEo*a=?gm-iv{X|Y0fK{cdI;sFrTi$1A|vH0`r-5ZpU||*CWf}Pp!K0fWaW)1><|#^4y~GR_>2MEBRwd#ex)9I ze2w0)P3R4)(K-Y4mtmzHotZKN4H;YJ;=|Dfr7yqv-iJXoB#G}M3k6jaW|g;3#A7>Z zdON`A=cc_Q_S+cbmlOhmd~hT$_xHy1V683M=N(^F7h;E~$k^Ea^0i_cQ$z7H72mvb z_UFB`-rle|6&@6t_`bwkQXl1pNSh=Zl5dY6P?I8ks)08sg z0E=-C{38?);Ka)T@#ZeX&6BK{M;dt?LWQUJ_-~`V4oC=wH_RN6Z+{EDK66NlB z@38{t;e^ASfJ#3%c`QfySQxalr)-ngR~p{*+@^+qMQ>-&QS^Hd&qG+3w=jzd>_JT< zhW$S0D}RxwZCl}Yk!i7tuW4;bv!aiB#1pXFrT$R`%>+Amsk!mKb@HxtFc{6TayYaf zSaGgW{2Wt36id=dbV%bj9}Q9FK2##laqt8f7t;>lp|BFPr1nOzk=4qV`&kiCE!~x5V!2; zdM5cwW`W=AC@5Xw&7uDNxY%0`$nVAiPk5&lZD<>NrOp1lExm{~tVUfBF?+xQCst`3kMGea3aVnu#uld>`;nIZn9qhQB$u`9kpZwK`JgoJH;pZ-u zRKuxpyEju?pe)w4%RI?qcqa2-#<9WdgCEQ;@W%F*ot}QXm*b$`OKN$qG@h?1&mLlX~qO@@boju4eu= zVdMHMty}h9Bo1W~kMPsuX6cZ#KX1wZy!ANN!D_$Wb<%#*YdraBjcMbW zc-!ATqZRtTjrmA^QoY;bMxBH4v|ew01;S?|jaD19jPfT@Gc)ysyBZ|{2T+?i_b`V3 zIUordE4Dv{zptXDyKV5Mn!}SO@ThJs)XLauOX1--8p1BVD7r2zYBg}#hORlHqD-VF)jV1G4g^!d@+7{JhFoNyee*so0W4i>v$M4@`n6XVq=ec!^in2O~SG9zfOvI7p9NlE z^SY*xek3uR-_U{W-}A|BvCmUCYvv?G>yc`j9thP>0rcPCx~b%y&0`%yKosTLOJhU(vHY&65(?v>5Tbiv=ndwGC0KI+@tJOg@`UuHjq{EoM2 zPUM5IXO)p#I#rXOBHbe{uI64K(^JVt=1G*JEn;+$EROz$KfXk1X;Xdbul4N z8?8S6D7OA)7Y1mx+32i9;Dl-?=q)@g4`Uu&xY=!>rgY+#*b!6v1$33I7xMR@_FUvA zVP!mLd;~#uMl{2JEo#0Xg7R;IYY-Xl{^Wx0m!E&2=#DPuJJ%S`&k3jEXxRc78n=cy znh#(Fd7Z-o?z#Y6m5Y!?-7)|YPM%6DkQt@p9suG&^HtSLK)STW^;3UdMyj-3Z#U+4KR(aoa@7SkwB4 zc+MOLECNj*W4(8Zj~c@5zDAPcR6$n(V(2F%BtEE$HagH-Vd3jR6FSbUKFcB5ao-$> zosvFxCQvvxoEBf{%vTU&LCjo|R+AN2R0hBm(vL;0f-Ubra*2Nt$Y|aqFUYIf9ln1m z9iyMcAGWd*FpF$qWav#l>3(48SVR{3yuUM(eT$RVRESnj{Oyz!^fV5vv3M!{QUN>g zkhaWOI#(AtdMr)0SnQ5Fi3xi2_he^EBP$zmNYYfGzu^g_RbWU5kO~;kAS38ZL%lTW z3Cn)5M1`^bGwH^b1CsdxV*}E&a^DR66iq#eP=Q;Sia$fRLd z?pT?bd>HDntXeL5@-7Eyouy$K#zQy1a&e$F&CFE}djey3MRwxCr#9=ezo~SrAX@1yw4-Z<8Sl9x4LUf8D2YVGZ)xBR#pn@P~%IAFQN}R z9;fWuF5H<7oL;!QlrpVo3j#@`VLo8#ViB%m%hpk#fu2OsZrl9E8cGu$t`zBXYgf-qNV3bXNE!|ga z*k2>zad1*ypIY$e(nO^X8;{aWg(OwdL*D!RQu5%-rrpF+r!xZUg@_^9Q`hA3|9)`@ zsBG2if8J1x|3hl(b)W_Oqp~m(S;t%sB%gA%M1Af0wKKQ-3UvI#Ek{tZS46K6LL$%9 zw7o1?sjFSTv?uZExbho#(D1kK$+`awU$>myjTU!|LMt9B#)V z(qHY*g6t59f(Zr32BrhPn16?}H&tGNSSDy@z>%6 z;>UT~?{^pIB&Q`JOP%u;zFWCkHn%AP;*`q~2~p0Sb_b(D%-o;uU~vsY>xPW%`p`9b zcR?fjcNsZtt!s+6@{OE#GIF~P*3OayjonXX=Jl$spG(g-zOIy+KODM#zEsd8x3%d6 zp0J_KRbWn0$|~i!v!N>{WRYl^RmR)4fjd`VkrI^k==9-+zP6BMdTLg=q}rx|MS*2@ zLso_2olPTmp=kL#C?ou6NiIr>d?rNV( zNu#nsRRIBdpI7noyStZZt6K2K#{CVvxnKBJA$|PhG-Eky`|Q!mZDHyy5oVhA^Rw9k)@i`)(5EBJ$c5R_PMFMhY{#*;fX`fLjzV55ukUcq!{ zt5Iyu-JY`|1?8CjJ_ntG`g0}UM#}$y>dG1~*_M2NTOQTz%6A!L=hR5akG7}(wr@R*TG%c5+4b|^E=e?ciSyx6?*-<*MEb+%wX+X@4c}#c zFBOg1G<*1a@+tGM`C-iV&4+&$elmY{pY4CjrO)jPe#**%GUm{je~Ps0zlGDd1SZ|A z2}efLsKsJ{+yvp>KGEW598?c`_}+*_wVyeP(y+VFvXm&K62_*Tx)7h6%7YRmocxv6 zyhJTtB0;nXu28>?aHX}+E^O{j2_C?oiPTX3dmB|^_p)7@rICO891q=7VeauiteNo% zDkOwOD91Gb6ra|Rp1^W0&9q7kVy<|?H$>)}{BJm55=KcFOGD0PnFcNEl-?IAy8+?KJ}I69 zy_NMqL&I*vX|m_;zj!WNS&@)mS=9WzOzo6kKXSrmB!wf8!g*FAn?ev;E;!w6CJt#u z6_<@b`sPPN>(|oL9I=M#)H%Cy>gUTG}(ppkTEzD0^EA9tAx6BhNidHd7TZB{Ms^Nch0G%I? z`Uh?#^b{h})!Ra78V--cBKbnufDtxldxY6f>2eMbf^SQR$?U5@)F6uoBF3b(Pp}5D z?o%Lis5PDSB($uUR3?|0%JfC%Y?ZbPDE;@7_HwBjykBwE68O^^R@8G#bt@!`PpLfe zam%GzN3oh>Pz9o!P^t79srOsI`I7hB*jm_9@r_Jm*B1I-uPs76B=%?C9Mq@w12O^u zRS3n_-V1e55mZ9hA`=U2V4#O`wp@QNX0&!Td>!QV*vjX6UxH7pX;qAB7a^eGkSgrr`Y>#@$ zAIqT9#QgZG@^{+l+d?hk&rvIgn5f?w|9X-0o2NhpOyjpYnNasCy>hEfq0~DQ;Upk9 zPB%Mkre1grIi6V16(N(BhpgN}_e8d`A0U6s3NHDT{At0vZ5E&`D(5b>*cG-Jl{S4B z;U6LtC`P#~3d9LJP(m28tbKWG#0bzTboF{W+`T&YV)mC+6jAm4e65V zSb3lR=h%Fa6&&*G*}Kwb<;YgG0_1v9BX?=(L?SYo@VuHuyKYGQ8ue6t(V(pR2D0l* zcADdhzWY3?ku7Tu#1rRA7bEjn#GdGtzbGoafnY8*4vnR$z4boCmFeA2EyE)N1rs>L zx?V_e&CCfdRMiN5^JOpX9DWv?vvtZwrW0>n@}Tp4dc=#rbFZYjUw+;Sgtj6nUrxb^ zujJYlmI#-T?OQ@!>Ms@kyp)$Lp=szD%bzFxj_bIO{BZ*KV}w{Q)Y0uNo}cJ`XnDoXZR=9KmJiBL19apVtd6r$0scO{`XQ=t-nG zj85YiXj{7WdepKc_*M8>WkOqz$z1JY8lQCZ6Yl_NB%%7nY|(pr zN3&yKr!u-=ZPI98GabeCd>J$h<6;(cTpj~}7S?lZ&?dl?_}*-u!MXp|`7N^DVFdAh zP<6TIZF2j`_wR~JDf$Yx?Y=g{ij8&0p|PDMaZV9JS0?}Y_o9o9_$LVdcrL=Y5I`BC z7kwM4sw?1GYLrPq>i?@PPkRZWd2w%!{WsNw=zjBqJSw?KVpDwXI3yc5jC2q1iLa@+ zD=F<~G8wN}8xlQ9FW0iOYaM=`&v~wjYK&mNH2Yavx@&%1IImG>NH#deC1h+GnLZ7q z&FZeta%xW~7d}Ot*1x7%(?y6dImAh$f6pew%-uDdPWo2{S$c6*rTzWe>8QSrov2wH z?u~O<$GJZj;K|Q41CezLW8BQ{-ps{r z-G|iZ68nSAH7aJa2_~;QFJ;YSZ+4xZ9WO8{MkYHhz%A%y#mM&y{m`g>9_67okNF93uhNHNsWt2s1w$57qJ~lTsCG?K}l3q!kRMFBhm*R+YKP%~N zt?>u38YJYy$Mk=NTuX#cLd&bRNvXBTalI+&i6=;8+r?u-yEDo)xo}0`a%Rtl`3Vd4 zPcf^ZA1R_`s~kKQml2nk6NmMsDb9Sq&YXIY^e5nAh~+1bjrEh=y_GS@^pXc2LIM0S+tr7Y#{piFUSp*}MIOuEzj60G|f<@DscwSk15=0*;{HD)DkV29p%Bjxfr!2(E?6uJ8Zu9fa=s{qAOT+Ku5 zPpih#rIN(=wk<6sxQ_apos53K_M^?NzAfe83hn9^xnHIcICrLa2R*oMHS_b%F)6#& z*!mK=J)0s%h#ppOaWU-cxNDpFG5>HX=F`SpWjli;^Qn`pP$uY;;<$@cP@H19HL?8f z?sTAj&sU=l0uzVKbKlEF|CQfqN>$`KACRhS@aLUbE1V-$IxMNkV;5}EvF?(dA;5K{ z@%`1;W$034{m$ICu(hKSWCwefq2Fv5NAl3U4VfX29GLt+K-(~P_Z&YuS0ozAP8f5C z0E*5pLj|iILGsi<8U}fEsUaA*Ht&pJYm#oUb|AMoe2{2SsBs$X@jC<5D`x?cp!y8> z8NoO?17LIs@rf#sidvmt+hbihH&~HL2de_H8Zi(=nKLI%0yF{f8M$_}NuiOIh+dK1 zzDHlm>8tU=_TRh)vlU(YitGvBz26mIxygj`qWzpx74jVnjZ zSB#126_WuwezJ^qo7{X|W|N@qrNV#5zm`*&JJqn)T?*vJA+I`o;cU;WL2_6NBz1oqkkW6e|q!K^%Yjy=6cwWl8hENIH~%IxZf8-8(0X8ZGD!eBa;bs zg)mCH+A~tiV1MJPt~Pl%${<;v{@yL+isJ?t6s!Awmnlj2<$5VKbA!()wEKP+Gh6;K$`HgEAn`8qx#s`~WUCR&~(mx#>J&fZPx9 z?}$~%-&5ly@F0TZp$a|BF&X%2ZZ3s7A)WD>3;c#ka#I2y{LJDt*#k=D=YNmWPIw;p zH2?zQ=c`^QfOskah31xPX2%q;m4&`!o7FWl+?_Wq3`W1&BPmH`IjV9+eLKY|<~Z-% z9|lZOxLf@Io6~-`AGZl_Wy-4YI4rk;&QOonF2)b2@6`yI4qyWoPO4vKBkBC;3S;?R&x=b22Sl%jveYPo>gP7>9e+ zL67)vytws7G(j_DKw4VzOAh{r%yz-LG1Zfh7w)~W^GpM#x&BO3@^QN;{|)|X~xQF>b+;E6ugt z4|!ds+9(y0>@ITHp|ADh{R4v2$edru%QQQsWVYrr#;v^x*q7z$%7Vh_cmduq(lS}i zeri|CHcejhn~cSaelDXbB>Wp90=!vTjQyE$Qfl{pmynIl%l;a{ypGiVwgr3ud#PkUGxk;=&mXCCG5WBPe$?ev0G(Yl4V6s`*nxr!t@xyI z&$8RTx@RZ~5|>$G-{xwfd1y`G%lSHhxr&r-!p*|72DBcLdwCMVEhixmK; z6ROHJbl-z7Vg zX#fVNXc6UjO>;XMtkMZ1l{5)G#vzA+%V;KGp!Zo79$GWsAoqS-S=v%rn%{O zOWM896=p>m@7*vtnU<>w>jlt*42bv%Vx`WP`+{I{K!o)i|L|?`(Bwhz4L;p{&+&#*<}4He&P7$7 zBIGPMt4%@xY6LXpUD})+M>mO>xcr{rPhNcB$3Als@?E{5p~6AzuF{Db(G0eiQ+}ZK zhS1iED}jEtmkrF%%NPU~tmWU~mx6^83(p!6KIBTcT{INoX#Fz}oMo=uet+hfj)}Vp za956uczY)i5JvCBLBR{w*XcH=4l?Y`7#ZojbO^@a)ynVkH|8b%BK(pd2ybK zuP)RS-qyyvSIc1QW9?a%yr_75zDPI&qDQm6Ryz`@qLW!Qm_#Nd1-)~ErVJCW82OhB`(O*K#i;~x*HdvQh8~h z;Tv@BqO{*H?}}QLZ0MeOarNG}Tv2h3+D|WsuW}p7V2&|&wTeH=ae|{n7D8GcTxjcR z+^IU(d_Qv%3QrQCU;Xbq9Wrs*JQ#d)jtv4_hLY)&eh|nQB#;NUumd5IW8w2>^l2DS z9q1&gn=82$)88=-2bRRUc_m3le3KMHQK0g>G!32%^O zh!8V;lB@!q9NZ(FEGGCD!;9>>SgxCfAfJ zk0Z`PAru-!%Lyx(28l<)RQoYFE0T!vG1?l(SrkVOCTJs26iY6Oh73akqsstb0!J9t z(bu+Q+!c@Z4n&U~`$fGYx{JP(C;YWJQW&X!DNZV$&eP3U9pT^(>!3Ddllt zjQ(Us?dyw;=HvJ@9vI&!J#jCN^9A0jTOTCcm+1o)2sX$~2IXdf(!CgQ<`Cglk~%F; zD;RQ`t}UwpfA|-}*AG(NBMDG-34C@2B)T4=6_YrmpLD=@P(D}_T4{axZ2c3%2XVTf zP;%lPC_FSb%b4_*hwai4h9C^LFz-ic7{vOJjZkz~6jhJjeO?BB$;U`dhFV!pS0@e% zEAW~s57es;y-pT0Ke|v$yv(R;y>1K=Qr4g_-bNMm_hF0>$@thk41y5a8@DltI?^K% zhfsiVTriYL@d9-o7=gSGy{N!lmwDyCAN9CxALRAcd-8j7MeO3EjLg!dq^ZshNpBj=Ck zS{So~0BEOXq80&f6c-%F`PYz48$bbrBs%V~F|`Sc7Z9dSp)epx>Wnd|;xGKF^1D-M zpwo*w5utEX8boc6bZUd7N{hRJrEZhs)DGfSUVud1;{Iq-^?gPX$}ws_W(O~z@f&gK zY2ed)BvoP@zct)q^xcIS3z0Qb4fD~s(RW{?`z|607Fz+Pln&@c4CHjjvF8iIgJZ%k z&X|fUSg=XL@YL8-L=ayZNEALs3Wus`yjx8Ms}s#WS{-jun+XM%UpZXEui(hW<0aCEHcsGgs(6@~HMo0on+l*~`ZLQLQm;csv+UXlAp0L^}P zsJZa!D2WIywPNs6V=twQht+Enyl%6>ni>OcO&dPa7s-QPn>4<{Y?~qq58}%A2Qr%OmJg>lsUV6Nv6Q+xA2&o*#Prabo_4*XI z312Ic8isn$nqk41z$kO}Go>tvwz*9T4fQQC#-PM(IM#&3JNki& zq>NdSPK|;JDJ0*`5sDQyM-txFt9=1(;K{I|Rt#rVO`vGjmd9=jg&7KF8f6FX&w8E4 zixHw@Ku)9@0xvc55Dr%B%TR=yH`(jdUvsGdG0ROz$-Fk*yqFS2s&=oVa283K_k*v5 z!*SLDXELO`sPC%Gq*e?m_s-k6V2~%2qT!}zQ}G7n20GObDm>I}p}0U9ucIAP?}W0= z-gns)n&zj$s}4yS_<7U@$(2kFva-k?~`l!u?oTf6deoc8cIP@R7j%(?H-r+$xtEuB_F)8RG}k`EFNbO451{GD6~(|Lwmnu zP@FO7sMQ^Wjmr*&p6Z|YN?F;DdnnK>bS5tGFwv780;BvLqQYH2N+!kyy2TNPcGakH zCLmoYY5_$*j2BJ`fIM^}sRa|r*`Yn2fgW#U=3h&~q-?N4m^iIbYtj+s7)F&n!k7md z4xlLaU=EpGZYdZqloVCV96z-%!C3?v8g^2sq#MMnmd?AAh~#$RMG|@_<_=X(Yi{JU z3up+G0RQ9}f1NkS(z3&GR)MN6|gIw-Z^TZm=_X-X$)A{!?IkIO*u6H{#EC3>JRW+h6^j?TQ$}oDTLPqu=)8l1=pB z#oM^k#5iC3Sqf(Lo0p;dlq-TUJ(RMRjP~JOTq6Z9pv-$>G1n2o>!b~15E&fjV`Tc# z4uN$f?+v47j0y31abKe$sY+D2Fp%&13}x?lASPM&JVW30(GGmb$}SWekmYsiU&eJ0 zJu{Q8&kYT#joF_`aGAnjp~iM)S5wfnd(`quOaO1+w@PU%ra zM7Cow=3mx_UTRU5<4Ijo)T{=~1%cp|zF_&nLK+4^CXjGeKvI8 z{CF-Wu=vY~`$E7SCV(xj!95d_loP1u{Y zzRRw!>^Wr{Okw;Z9a-bf!YP{nC^Ek@+#o_TuNL%oKeNJxH9{8mbdPTw$^Mqg#$0Sm zh4HfQBtxACs?kdp9$A^(<9QNy z43-N^*p~1IXRss&miRi?=Ck_E@P-?BATIcK?@~RxpYrQpb~vKB0k%k#AZyVafnoly%&-=X6R5N6_2k)>734w<#aV6x#AwM z7l2cAHs2r#Qrd^E{&v=?5_i+34&WTcW2062Y${%rmiOk(Umr)Ut3FJY@BA%S*F1Ph zzP{~)oIS5Nw+)WqaewoY0O%>=vO;t3*rkUE>oRK>MBT4D&IlEvVUmohxj}}gm%3#- zio4p^GQjtj^qCV5%do&FMd(#lc7gQJ8@fsxJ{HgCOD*0@2Cma~w9C+HG`-Puh8q)q zvprien?+0ladUpnK3!(C0qv-Bi@g*4itV2PcNF`x8sQoQW@-`Q;eCbXf}}VQXMzB{4cbb?QbMta9rdI z@S6W0ESw1o%yU%}f9zTp|C4d*7`2OMujK74#L8{Z`c7FWzfG%QOZ>+2>1M~m&r?CD zUy}>6qXc>!XX1C|ZO0BZ=xdIRN;-IjbrPAuZboa?LtQ@Mls?Peou<3=KK{cfyJSR* z%$?AfeDF!1RxVg)R_1Cr;sPGTDx^+6D0s+mIIwT3Lpd3DGV#x7To0ScBr}cO_eHv1 z(RkM;mD5au$>6b7DUbUxcr7b!RCLAYwvP7`A|YNlxv3k{iMsjW>1+^C5@uGSe+nm@ zrdrl_!Wg32$kjw-(L{rJ@>-3Zwh~|$_4Px`k$+Tng1<%JNc&GF9AUu+nWRGA8*D}%$Nc1T6 zz%g-sijk|_K}D%gl&juc`PTg4-d|4}opO0-8X3e5rHcU7{Wuk7hNAgj8+&o77yaR7 zp<<;Vj)CbWRLdex!dFc2wk_X<`DViPJ0J=Nt_u7;eUX@CS*p%iZ8oDPR1XgIwC*yiG=mQ1o{Wn#Rr(tPy7hRK)nQ)7OYh76s)L#8@Iy!|N7I%Y0f* zu&jmblbJk^#s89%9L}H~5boc)55})`=vG9M1I33(3jbA4wY9X>2dO1$-N`;Svo5CP zgv+~p_frTTka?^_Dnm)0Nzy-9;)o%VFPnrUYSFv764y@1h@9d#Q|{sL36Jv}S!UB` zXmj{dP{F;rjZD)uZt|&^4RrzV>)G+dimq*U$3S!;#Kc(>3@*npzp1!z` z@=A!k(+9$v1Nq8lqgRah1uJP0*V9)Jm2#i{eS7+f$^3Vg2zimqvatmcxpmy@D!B+d zVRv%&I|wxv%d&H&lyH&#rE>iFx+RX=Gxc|P-#hd4B*cVuFr>83C0(mq=6%x9D<@8* z!tJ?EIv=MdhMh~jUAJ=jd&e6s<~ic*oEWzx!;d=@oR(R)DtZ3dfayJztdu(d7f4(z zHXRLnRJW#h``KF;rb^!HuUxQD8Gx;soJQa!VyMrC|CbeBAt-#l=*r)nVzH}T8SQoH z`?HaI%=0veqK}7jsV)oy&zGd;X`ks2?j;E~O3GxI0$DRISog z+_JbZo0h_bfzCyFT0ZHVY`CXZ=XvF0he(U=C^K8F;dcEO=kJ}<2;)63Og|tsfko>sZ~N&#pZoaZes$r$uQxOQ3=r`^Cl770 z1rQ%L-dF*{Zv#P)KE$ReCYzG68Omdiize>7ef+1-QvMude@my6x5=+XmA1HcPs8!N z#ilMoc$tq?B?Yu6_GIRX^6Zo+5Bn1zx?S0rJs*O^M)cGo#=gzb9v`@cAN{@q!I&H@nX z%>@bzB?*&uPwq=1JcDf|W0a+LPt3FFI=5()DxWYfUPA$*m zDPM)8Um7^1_M_ND0rzQ#&)JqSZ8s>}JXoVc4ubHXebFYwtFy@f(e$26T$%FLjT1Yw ze&PF%C9S|oiq92oWA7z z!5%NFm5q}UC;>2^e#fB4&9#rS8vrH>fM}3dV;5`NMBQI}a`;>Pmy6|}vzxmYjV$nq z;D-JrPSRO_f6BgG5TJ|1o6rns{J;j{%!L5Ua&?`lmF2yx1^7O%WD%{Qt zyE>qR+y#h~MKl1Xi3^GeX5dy&$H#NI8vyRR>Aeg#G5chJ8H>`>AH_s0Ff!206l6qn6&&aj3hZUTa`I9cRSE(QS0wgIPsc?S{iGO3_tM>{b9759^S9o>XGgz{Z`cd&d3qO$&z;65E&v^ z0{~~}@F9A6trpj_VMD%78Ux--^4Z;+~vAn89UDEh~aK zo{wWewy3!_1WllWH8IonAiUP7zWAzE4p|aiK1ht^Q2@Yb3`CWr7D?u=DRn@4QbN7V z#J%tzdo`3uU|~Sbg~ST((SGSEg>=ST0(kqE4KEQ*q|WFZc;N7#G`)Kn10J~1(v^JN zH82wcSY1EABk8&$g#PR74#oVJP3Fn4Gtkgp=OE~Tn(}1~2N_FimKo%qlWVr--M=E> zGEz`pO(}O7Cj*U#3Bp*ZXgfD4?23E7xz)%0?xjiOM<>)WS4PjPbMZj=BLh3I+f0zcSa=V1`^O+PmSjvUI|&EcX)?HAwbx&ysPXy1)L1$TqD!bY4G@jITr#rr1DJRrJb4eB4`C8a1{YxceeoaE~nE z#ytZT74)@ zCqH1Jb9>Ecq>7~cAn#q5L9zfK1--JJ?sj$3@m*lIgM79)<5%xz5zRWRq1RgjzkQgL zOZ=A(Ar>W-0C!DH8!1*IXthx&9zfFabclnVEk@*>x09mD>j;!2dE=h7!+b649I2&;vS&n%izt0(zAse# z-lr{-;ECQip_g^~#+4w2q6a|%I`s90GMxLRAc~ceOZX>2@J^vPwnz%|m}`3n>^FDE zq4;F{lnC^_(pOvR(u)t*-8bsZm8;iE6c240b1Li!s~#)7PTh_L=I&5`gGG@}zTM6O zhR@)sngXb3xgf+xEEXXr8?gJMec8EvdzwSkTZ^=2%G&s}OCC9#O zv{$^yW;_;$I)gFaZOE;ryV^w!mWy(7sV-)k$}pxpZso9%f^2ezKZHeMH8X<3+m~6m z^$1W=tlRI;pHAN_=EZvJC_Any$&_)s9v))DVw=nbN-}>yzjspL;}n7QU2Us^&~J(ef2U6(C0=?p zo8nuy99#?-XKL1i9q}G>@yc}{dgo!gY6QM`mEST)HIIZJ&VJ8Bu{`ea8qqOPA zzOaq06opz3W#%5s+%O zA1Y>lN)gy<(hn#GM4^@mqcFG+rI$xn03cK=>z!NA_9$-QgyP4Bd7G8nv)=s-^E_`5eqiO#^l}_hGVly_LT*h0Wn2y`M$%a0LIPuVAb3S~ zcZgT-1Od0N(`Y8$?(t=YH?*b((f)IA(ak8#K(&ON4A$cB1F`#7Sl`M{4LzOEW*@5V zpsKJoc39q^YWE;SC;1M%Ie>A#N`Z zy(wWv=;n=e_bJ+gpuU={l4uXL55fUmAJbKR2D)GVRuM)V3$#JIRw4=HeWI_mTFgd; zq^9cbin0%%3f5kg;PQj)4<5n<=@vu&KI`Fiw&cHU9SfX{@?p9C488dAp z+Y6KbVyuyh7u1!0wM4{}_Y$*iR){zx)41Q3E)T*EFN;1iGmK^Y_@_1n@of0PY zdPY&2cik0vzoRHE@i{c)+K=VDyFWc*j9g*}aSaNBN5)+}CcQDo?6k#t@j-85oIj+k z5xNxBdf}YuNh>1zJar60;?eX*+L4b4F6$;YduyhCr~KveCJA-`X*7j2G zr=jab^7%oXf)Un4SWk;WTrk0II-S-w5i!Cu@j2JEVZ1P+^|TikW)0 z8+7bN4#dY)VL(@sn|3|Zdz>BTvdl=`HWIXAdv$DwgA^TqOt+$9h7OQj4xU|Wl3>{iR@xRE&Z z1t0c%PDWU5_l~S#DVCo_t*jCGPLeF};+P#X^g7KXgMI|$xKeqy9Z)2yB(UCJ5ar{w zc|Yr)tWRcCd}bU-*h8c9J2#avJ9vBEQN_DIO69$Xr|!l5H+Rd0E9^wD}__b9S!q8+nK~X^+p2GMq{g z`b>gyqc6(>%3r=JgBzcG5k?Y<;PrIsr~K!@swv1y@L5Rgf`tTmk>XiP`0|A4RJ~_P&6hPNaJhS`! z!oq4JlT_}FXnJ2(mbsVh%7P_{VSQe+5VW|LSnEYa8ox-XFykL8Yo7=+T8DoVa#He} z|0h{IFFV8^Pgac(HF}-&VcWNG?Fe|=uL8+ z(kn8^kw%`PQX0N*+TAHYPh8*AkpiZ=r zmPG(9dOuD4CVTRNbgjKq(uaBJ*AsnO?4(w+gd_AzLfguZ4-r!yKUd5GuC?Ja{ufc6A@a$~`Y57C;X1<&(=hbi_5ByMXfcBnl z?>kyayLL&(YQr3~Lvpk@KL00vXojnoj6PmoW2@&flCUbwCOUSXt+RJj7>Od7&bREU zz^{P}DF;vnfPVK95C&9+WQA56DD^mf;jF?fWpK0M=^jc@?wMS!GX>8b0~?)(E9kQf z-Xs?+@=L@U<>WV^9!tu=1z_&3FMC*5M-?#35EGQ0dX z-3zp=xm1jY#BS15E$Pgp-non|srNlMq0j!G3XMXZBak3@H}NEaN=s} zAKvRw9(JwZE{9&xx*Hs)BK9OIm1rlYrCVV7yOO-V>dk@(Q51%5c%E&#WTO6leFob+}Al96)(}G-XE45!^#PZrSCO_}gB*&5i`Ia7>fLLW3?X6z= znitz|MyUhyMAM-VpN_dVH&Tdp)}Z|wr(}ALm|r7$5rC^}GQOmf<`_aBkfz$fT zx2Iw0Bkp@&4-Ewus5HF4ycu(Cl7b8c`Az!u5$a=u-0MKXSrMP!FFB%^5nr@-s<^2h zt8Ficxij?74vz5}m9~z=ct$;S0JEkr|Kb{ATO6PZqyD4fK>T=AbUw@L8?)YMny4!% z8##!I>~4eAA5*`BLxpbqG?Zt0w0{ss(L%4yuTpfJrWx(qFe6M`{x(v#3ua{pPi&YN z9q=eqnRRa*%J;^>!Z3WLfG#Bn!!$*wOT+jUx#D@|&A{(VM1}&iUY5{n-l)ie*)LNV zzT}TC@&|kk3_AHJjt5jOEB4>*t5h4N7=^hrBzxZmgIOq4@=)u?0f$F8#;}7L5=QH_ z&pcqm9aV@im0zDG{mm@U_V=cD_NIM1&EA9kHwNY?-9Jzdg`PJW(H_!9Q&ye4dCc!K z$;s2*y1`Dok|(@`+oUaIktske9dJAk+?Wc!fHvh0mnp)!VjqvcY> zuHa^Pz$mVImSAQf&MVN0jyZ--{$0xY&i=g1Bu3MR-WA7qhGyOI{uFMtKj+62iaR?c z@tu5?8nBhJkmZsJ$7l~CG#D}5SivCl%-Iil1W}-#ndu6xqAy1bb&&&1Cu0q5C`64Y zKpBppa}?$Uxg+(w6P_WqRWw$}8Y*0b`Kf@OXPuUOFefjkS)>3xBk3{}&6;&;EetR~ zSylo8N$zz?FN%a$9&JMh%Ro46mWDMEDKKpJU0ntmQ3UVt<=3%3;{tP;TmDTyI^iJV zQHcf1rh`aK2PP1CpxD4R&`!_0E|6MC_hUw)$M>);LMF(5+E589{as15;BaT-hwr4; zk>Va$LDH;Ck&q%_j~41b66H-{^bA!U+>rd&iD^6Hb6jT~AEJBOp>*Y&45u&h9TS~J z6h zVH%wnaV03%ECyRo>(wDZ@MWPd(ard(8*x1KwSDeLUel!*`B}&yO;NL^i^#{Q4875T z2`kpnUz>kejM-tqKiy!-n8SoUFzLY>nB)t?-h7`cMrA8QE#wTDOE4VPaPFbcb|vRu zvX;{Nyj=t)Ng2A{jR{bY**`XpinczKSaJgny&IU5KXs!-~Q+?I;ajtcb4iSvm{z)FakewT9C)P;|YHsw7! zK3Ku}7z|h0>>07S6qQ?Q(lP(NsatD6o{pyz^N|`H@Nh4!@D--ivw0Rqbx+lK?G0^YVGnK^>k-R)n@!k} z_H$fmu>GBq^_Fx=qu zAH3>O&&g=Me@TCh)}|tu;1jR&F23{~okS$*`Y+-u|5;C;6oJ@s+0vevzY91=QW7sX zF?JFYrUY%mfi(2BQ(0081}Mc6Xh;Q$WS9IrMPRh_Vr{e_Z@reSqhH3mwEcG&Z4iSG zB||Gp&DmS<7Mp%d?3LFQ#BN$zGk;QpRk4IP1Xye3imdks3PEwP{eXCu=V?{K=WlDs1s3^-~;|_Jr zx72Oyn_0y&zfYCQ|5V_GqX==*q)5&Ynl~q|<|G31R!YEsL zumD&)$K{zk%yS$%FR13$$fJ{0_B0O-eW#S)GsM3O?Yy!sqlE5= zS8luAT04$Vp6YJbzMd@tlg)d&A~nfr^h33GJ>>#noMPplFLNM?AD;aP!ua@UO9f(Xrx5Tr2k5gWT4@si?ZKQpe?^3G$U%|f^OSNx3+owUbr6?#H5bZJs zPkJbb)573P!#E;?^=g96U4W$SJ4je-{PjUs5rbXFy2@tuJ8GLukgv+_4&-Gjw~Hkh z!(&gy6SA|r>fBXdr+Niw+qmBm3FoseGu6AMU1=eLwFn;jjY9Da089h+6>wA;6<`>fhEnXc~uKj5!0pB-A626o7+D9Qw2|!My%*G~Ilxe}*U)9DXJd z`^CMR=cTs4w(YAC5Ex^R(;uUU&VX<;jzbr&F3(s#y}Df!E2`5i`Bb}A+x8ScA_AQ= z(hsJpp8(8nOTGDj6bNQT;{Xpi}y>2K*8UsXbE(Jyk9(-(TM)p(CbGHW2N0N{_| z$ocgX2)E_x^clg029*uWIu60xd|$s8nvcCSuYYfTeB&)B1I|hU{c;cFLxcFxiwRh4 z+p=wqj->mg)xQ?ix8d2egIj*UQiBXE36qJHdtKXi3daCX>lN!IRCL zBZD(q=ovz!Z!9S_>{rq)RZ{j%p6@_k?4{NvJxgJ(!W&5Ihvja7w*UUD#eL!QhBr5T z^Z`4J{Ck7D_)#Ry`-~{6d)rH@Dy_U%DncE9_>G`14>?P37(&!E20|$3xyJ~HiyCb~ zvM<0WCO!<4cfDqoP~w@C<|p*rbBv8~I*?LwK9VB1f=Kf9Luqh*cIh!;zyJW>)#mH< z#sWD_Ri^Gco7iSi8fDe7=)w}VJZYLH6l{lN40iU!PWKW`s6|;$o_~%d&^}t&=j+yo2mxLu!u#hRzDQ6aJntYWIe(IgBys-B?zpJcU&XhxWxD zO;|*X(}pK?Xp$h5++YTz>A^_9OQmf8>1@AolPpc_9H-88hP}Efemg|3smLEjltU-~zak*mR2}R!(7H*-tL!WsPIw#UosnXk8{Y z8=GC0b?u{su}v~9qJWjn-xY%aq;w>gBqR`Cv}{?*CAfaxo*6Oj`fK1~9*aD(Qs zW66--u&f~3S7OsA(lZGjP~m%n5Kvj`*wR>88)Q;JF-QvDynjU0m5;s218iAzYs=h5kt|#oECSuZ z$KOUZ6&~scBPbx0JUd=*{f;er*~r}jBF#!X+JM$wcq0MEQ6l8p<(qAPk!KR>mWHrW z4oaalPOwdaaTfsTaH#x;zzOb_X(G)n$84D@lq(+H3ovL+Kaytg_QTt;`i~pJ0@*{N z8t&#a74blS%=$o3CJPTZXCAfs>q<0BH8ANhM2xUnC$d+4w{w4hH{ic?XdPQ;7BPm+ zPpoQmFUnQCMEMdiDj?mr+=2D6N5D z#_#3RfF-$ArH9u`&Tr8o z<2au{EtvqCcoO&(`vRDFpsfGut`6EZh=vLTHStP(4eWr6XiAW9t3A||o8`;)<`IflBH2tRGdxWA*BAanBtLcQ?w|apA`YTc_{Z}+WI|a~_TpN(p z!5|&G+UU}*0mZK_^1rkHmYBS_@xux?>YL7is3PEuqK zX7rDR1=ZsAI?wKFYeOPmYA)fGVccYuaCD{k+hdad)7SFhQmoPpPNI(#dL75TC3bD` z=fG_zDAY`#1igibyeBOpVn;WIsJ1ah^s}TZB7%4US}J*Azdm-7)lR=Tx-$j+8s6Yi zii?~Z$r#8#57Iv5yk;2H7gQ+f`5BLv5DrwiIW3k)SVR9uqIQeF}@ zxgwjP?GP%|OYyNei{WKw`OSqu=NBoY1~ZyCSal@Pw7_Bht5_hxl;%qXN-R+rc-dzr z)nzw)*19Qv6*4~alX{gCaNm`52v5;)mKaofM$U4zHO0bxWtdt0BUv@ZFK2hZPHD={ z2WMTFk8CWsB9QL!FVTJ?gp)*;jIL+6D2~!87K~vUVWsuBsJ|Fr%I6q~e!#YA&ZI>8 zd~1Zr%B)GkJh+YY2pcV2k9cdOS@kkW(jS;+@IRBii;Q20yraDz1Z7w6yaA?G4}k90 zw(ZU~NwOCiR|0njChz;NBb?BZP7PHhA-)%h zr>E9pdff%Fk)olH>oDVDMGc1=vbW?|Bo*z6_QHWhz9G=xw~QG7BJTyA-$SlA6IXwpGZ|;IvzMm9?I5ydbaDZW%LS-V%PK)}fP6puUc{R2O0SDTwNMuT{?!mz4Hhk)_~!RnvdidOXvJ zx)0bhL!EXE7RbiMfQv7_wVL%;S}A&MXbZoP!1JMb;W1pH$`Sf`s_hm6U<{WAE}l>M z6ICS=MqZ^}y~=XrrmB&%Y%0WtcMJ+u(fV-h<^{XAGhY!SM#U;^8F~!s$C~vu4qQf~ zcPkWsu{*2ZJ?6S<@TF49CVAu_O`#%ysHVjG7yg)2!s(QYN@k)Lw(Gm)+}3?763$7D>ocXAo4d=6o_JjRw)-isQxNO5gu(O8lDEens+_ z_1;h*5%w%IR8+gTLX@klSVYKs$xm~9KZ zf4-DGTBtzT&&W%FTkQFBuFaWwWQM@sUMO-^i5(l1kz(t_+g(nx94L(m|3OD``=DuI zwdyz+sf|?qS@3eHQqF4T^&L+y!#;wo^X~1&0(P-2M6&;QC1_yFOswe*bG>z;#?tEQ zV*1-l4zS!Kzb`3)=1ZjTH4hY#`mu0d|Jnz)0TT0d&sK+@B6+IE5$J#35|C$Vt~nGw7%Kgn_w8UEh^aWd@1-N$Q{ z-*X&VK9#}#;N>L-a1PZNS6$7AC$-;7l&^L8fqMh6rN=2QOVkg>y?D+31IEMo&1hnt zxQ)r-lPfRg#LApswX$E1Xsp;!dzav*6&AOIe!Z4uGC5_0PlNRGV$S`#b|d_kX2HLo zuiO1FsL0c==L(F=~Ld3I~;P`MmVrsc*)9{peX(jq2G(65+<1 z`@d5xY8B0=yYNrWDqm59tDY`#00KNbIBkl9f>`)sap#o|W>3q2DTbh_a^z#dv3>aa z=w*Awz5%tQe=aOWqF_)auBPgr+ggI1w5-BFg2X%^qy4Xt0l@qu5*s?=XvF#IIMp56 z0ojpY(P){_bmSeCCs~@exY9ptRcyt(@ zl7akqn@z(ANwdYa_Jd7o7~;?sRK;TQZH9EGL($wOG)^J<-A}e-jIBbXPrhpG>bq!N z1ufC5EOaKwNY#*PVu>fhk945|RWU&49|KL4C%TV0O2iRAs44y_=R5l)h7>eNk0r-l z`Na(t&v& zbsC`izy-^5$@uY;Ed-`u49RVq@g=`hxe{pjYH?=-Y=em#>?!P>|I?svRJ$Q1;-04(&v@uD;c@g&AGrpE>u5l zzX7>v>{(}wAPV^(RmA;IHXSHY?+t}}@n~W5Gh+uK*xgh8gKja{MwIP!Z2uW(XR>i_@PO2id zWK}U!s_y>=4%4|SkyUhP68A1!MOmz(Z=Taupy%16XjdP&EJR=~DpzW>SfU=SM?mUp zAnDf#1aex)&+3cgNexJtBjEHtvo=FK->D^~zM?e0naBNi@MqKXZsXbtg|b}=IPXYKGBSs9U z_p5++_yYIY2v4)(8GK5hGl8@5?3zI}#V&4$`Wl+S8nBNch~n%tSHDCoN6L@YVawr( zHqZpBx<%zJ7|)FW^&6WS3fns(yS=zGs3vL0_11y-?aNQtpKe<({s5c?v>B07R~pq3 z`T*_)#F$+9Cn(QgJ72CtlfQ}m>%$7D&qc>=s~k-$p2rsv=Z+}pQtm?}Jr$Bbh0q_U z$(6%jY(Sjmfo*>)OX5L65=z`02yob_&`rJz3I`l-0}`4pu^oWLG=za93O=w*F3_>U zc{1VdzNe|K@!_Q@;2>`U2z1~AS0Dld&`(1w+DX?CmKv-8qFwET&6I;nv5W2ghdl_a z_-db_X@_QugqbHasbB=ixkhZg;U+dNQHxqr2~Gy!?L4tZ zje)GeVNWhMkX+wqX}$|OgO&j|NViF}HfnT~`<^`N%mn~c9#~ul;2*eGD_M=9u(`bs zuFp3J3as=t0T2?v0Mu94m-5Zt4&^Gk=>ui72@t#om{S|{)*wv(19RsxpM#7efRQ=S zu}6fkC9srD-;v|J_j)v3BZpf|DtB~`w~`8BwCPSXhTch6;=9}pn+EhhbCo04)2m1BP|G6A1_O z{0WG!#`mPpV3-kZw-AIZqkYPxi*u`q>D;fz2De9|bcot{^+OhAXR51B0#9NA0H*+O zn-;k5)A@-Wn_v-wmPqSeRrhL-51;RR=zIF$7LIZt9k0}t<8y~c0XV5*X9#~voX-(m zw0ruF*XKvyb1(ssVDoh0L-G(^orgqSoY8eT@lO7Z=eb?_^sfP)zer|uAKg0e)*O}g zBs8}ZvQzz>=JoTVO~}rK^k%6>VeIoy;zJxqYz_m@;S_Vn@IjhzmlRqbo*H&i_>*Mc zzOkt12#ULY?$hxPRF{i3D zF6dO2Q5#8_9(E6aU*Oa$v+2Y4A^WqVR4UnjW+&`{`$MJs$HrMXSZ?VMyEW>(N04d= zMtT^<#<<}CUd!HbEWy{p+PvaagFSo_eEN+4P(a-^T?reL$_Y~sk*ok2C)8tVA_hMm zBD(`A4(>=JtX&w4Cwl@3@-A9f*VRquYDsX-<#S$2gcfr;H*DNVI0w=UWagd3y1qAp z4?XqtJzIaAb3BOnFGMR;E4xE`l&+t?u_C3>9SIABGgHGr(*QwhNRI!3 zb_wT17OO;~veD7kYYoZg!H4L;e>Lj(*GL$k6QIqKo?vXm3b64RRh_bt3TC$Pw-!@} zA>Ku`S}gBB7zJ)ah-?77pxc5p3=O{l)@FgUp95pcY_>!oL0XW(yMzAlt@(i(mKejq-!g79p0#ofZ5vh@?Cu(Si+eej#+YW8@kmrV8VrPl~fJr>#3Z)UDK5qH^m&e&65C-WYE znY)E~!E^YQ+VJj7TSL!6&XNFqTEgwQ4e^fQE0Z^DQ(x*{L$YZ(O~jgxv7Fy;3_!x8#m=4xSQk%=_|` zd+Hkc*UCbD^t(p+(ileN25)L35^;~=T^aRNY#vVw>oV_)cLgYCb8o0K6|$l2op|~D z7(71``$oq+3sxr9O9eqBz;8ROgHOFz5r~+WW0;BZz9c-}PnNTI@3R-X2UD+OX@VR8 zuEf3bLsn|ue=?(1Eus&&Ww$0M90(>o^!_Y`*^xq!fL<)WjyB6#U5St$>p2wn#$(|P zp;bN!wH`*_SN0^bC^!+M&J)wxYW=Ld?^M9HuD_RKg=Teu^7&J;E)V06w<%xEVlTn7 z1mM}8@T@R+u{Ye(6%Q+(;Mzc#6c5~up4zd$2bhskJ!e4gnGFYhS2`BDEs+Ie8B=^m=(q=a* zlv+<+R`h}@Fn>Q5A|9>?l-UvmJo!U>HdRDsZrXah5R0CLB~v);`N6-WRV~9unbcs7 zpWbi9Pg)_SJl_}6Y;syly=K7DO#3W+;rHi+ZG$QLZUdH@#MbhsM1AwRr?0_c=Gu8{ zGjL}_#CawH(Dyymm5(dc7Wjy&5$@wIZTJ!Rw(>koIc4=j$n~RSfg@sR{%^fONQ>)S z1hK`FmP;ibo{tMuDpMmja^F3N^_(ZrBcmGG*~|9I%vY(nC|CpXh+^Gg~QrY zdsVqQDn=cytTCP!i3a)>O=m^x9=i5E?997;|8Um*)QSQxENMx37#HN^1Vw^za6q2Q zB0+|;xPhkI>)Fy+M64XfUiu7+q6n`26}Ccn8qNoa!me*O2_+JaZT{~&H&b&IcsYQr zx7(IA8Zlot-_L%srs#{XhQ#4^Y?}zBvKN=;cI}&OZ&}?U?m3j)l452RZpUVqG}|^l zOBZ2xntN}16JL9g-V7z)8>V;hnz@mFipZI>BK+b`!N7O{)4f3V$il%%5GQ{DLpTf8 zs)6xmnZ+0RO`kkRUs~)g6+4+vFN+7EYj+_x6f5rH-z>xYY;A4ZDrCNwP zNjSBlSi5wuy};gTMGCj?4vp29;q}g#mNYRdGGr9WxW2K zs2y&b{04H9pepY9-H)0sbnok@2T^?%UwGsn=z-~#4{(s{*UnQ`4>X^;R5*bed_@;^AgsnZ2C5f<<6!oA`OELDNBd^w?*@##Sk;VERoG5 zRDGA1(zF7^F?Z&K%!#XJ)K!ZYSJ<32iYo#Ef195GU%FaMB_!-7G5<`lZ#s*b8HyX0 ztomBAayWW-O$JRng>UbQ22Wu`H*YD}6bai*PcVx?H6@9=6X`g1d+k@Uopz1N$=$otBGJV`D_Kus zcE-f~cn+TBu+|0USDdE3d02FI_wpD}%w$=zYNQhEKqc%#N*q7O-B{hQ zxm!ZxAsOCIfwSoWURj~Q*=^WQGol2oQqX3xb5i_vb?jOEPGflz)~4MTpG<=Yrxdj> zxJgO3zPDp3;kX%-lYd5wP$z*zk4T2Gb>W6uR@s_#1HNU!R{~dyuq(WT45}s80{`x_ zzz-HtnJ{dKCS{Ew9XIxG0@Luh*kE0iW!zR)q+x)6#Lcd0ywZ@^Sr0oPx|^`xQ1-vT z`rZ~iQmR^9^BO~fxmH_Y6^e2Xl0*tI4ZfcWo;)7$)K-LlyX)VdWNDpc?(fT1`^!+= z*fx8DH%;VdfD9eU1f7ot=9|l;?@eyGZC;)c;GpQzD*G^(9U$!Pb`8a97=|La?G3b> zS!q=b<4}d~4FGZOV)-m$3QEFaS9z#!z4WrO`r6xPvJDD(b1VQlVfhgINV6;xn+A}C z%&8DkmI7_@8G=yrO_&w7W#OO6V+gO=^Y5(K93wH-zc(>6X5q(2Vyl;Z2 zViAipV!mAxqV|;&{sBt0zbyid?NODB25em609cyD+=#aQMOSzoN%Hk)P6sPcxZJ{;>GGQYcvM zgdf`2H4W?i^~tvNh$-NPyOIuILMnz9uutgJ%;RMRREn0 z2pM+fiumeJDDq`3#L~<-A#K;6Yp@<+HDbnB0``z4MUZH(JQ&U+u&4q|A+hVY2McJ{ zBqu?_y0e-sPdNdPw^1o-Pscoj6!B-jkFfRbFeW0wOuYDQbeXPnmI*K3b*Up)INq^_ zz*@dgg0f2!hu3Tb|8Q=2;qAf`VrRiOl8 zZpNb*AESQnns%{)JPgW!=ZMt_Vc@Bd`7%#?QJH@mPf+NAm9L>Ohm%m2d8?r?fdF$W zB6{zI!sSvQO-(D8^>D;o@#YWG&jL_D6}{YNpvKOvt(&0Hg!1$|vU~pOIL%-4EGzgV zd*to9(=hLLc!tiY57K1Ir9TD-<^W(_uhV)RdJNI-x$Lyk?+~N`Ih$n(5BOz&6GoN+ zn&4KXi3V=WKvc0X`JGK^;-ex0>WV&5#IA`3<@(C-VXHaQE3-7=Y2hNn$THijarXjL z#J>ObvkQDY&QyO7PkI;ZUL7NnXVILfcjS2x9Q*8g4?*$uvR+euiUfLDFwL znSUTWTCe%IgYV^M?4o1l7;0IIc6MoyPeq0y6stiD5EbR3-EQ<4rIV^C$|`Fg(!N4} zCBCm(ud;VYp!fb2lHAfYhwuqyV!oCm&cBM8L>(RiML@-J8Rsk>M-Z-(-O^mv7gL0? zSZ+NHR!LAJToGAool3u*Z~kFbVl5`IQd<9Auz$O^>TN@29yaIzkJXRV@YTq+xrk=ypqJAI7#Pjocs%KGzM*62>n^w0r`k}Ok&>%?n!WpJI< z;LQ6Wx8_i;xTQ)N$@Y87l{`zYz-P6~-Jh56R=9j%>3$d2m9+bw8QD%}dscB-2Yv8s z3X(Z0lLzT0&(<89@gky39?h4@bE2S8nr2~vX;E^wem-H$xxv5ul1p2q_1Fu7SESTz zEH>+J0-lQ}WWKRxQ9Wp=h4}N%&rH6RH;k2IVqW=TSp(x8(E=hyWHRfO{|>s=bRXA^ z@dtK1Igi1Sf}?BN3al}n4mX<~vc|(d-a$nH4s?OPB_Q~paxAgS`QiG_tLPTa&A<$N z_pd_5p;k7%YkpweW&v}6%t2Gtf*_B5prKo)(WUg`dY{)d_o}lh6W{oOKe7STiRbqE z08$&UhwHNn57O+k&GKq2-_s#;$<-d^uqY3*qV(Ayx-XWVzW;poBolZjqJ^!ZA^nPi zOTzB$R%MpiH+{CxJYprWG!1fx3~{+@H3-Qw%su>0R;Xi&(q$Sj7|Ao`K02Z0}8J>c}^;#I< z%&DpN5C~mA*kw6YijuQEWJiCZ10D=#UHe{#?iw zI%c&cKc1E-mg9X`^&xAsC`;F0D^U|Zt?<-9f3Qrw#O=%;zSf2RXa7Wcu1jm9YcEye zChu@{0bfTBEI(QBKOcQnozgNkAbPuq=SVxd*fWSc1T~vT;F_@Fv+Z*iR8jW}~pYCj9=8jP1 zeFKAt#_G&geqar0u+d6+E$ZUZY}0B`;Vl}L|gW|B%Q#!DTtrEvrcLl}aKNMKWk zYe^ekr%BTZPl@|mN!G%hGy0%&U0@HUZkHtA zQXa-X=Dq(dK^llL8FrV8ih>ix4bESGOegWhNNz!-BmfP3U7N}9n}OZj8=%1f(pm@t z)-rqSUZ1~V)Sk`Onng}yb*cE-1Gei(n{a^Xaa&e*IWRCjhZ>)^fR&tr3UV#8b}V6( z$)*0urm@MwWlK97I~XqcMm9r^aKA-+%4lkT%Uv)O4S>~4zi`hIMZ-I!DB62`)lDHb z7qV^205WD>gX~?z%Wus7W$=Na_1|O*N}zQXMW?s|UnI{qG^BrXj6C8x1y^~})702B zk!9R8u%2L=RZ#D)T^qeQ5i=rk{JOWIeUxu`w6y)EMIOxl;vGKFmIA zYP;%~-S(xYyx5VjJLn>k#$blvRy4H}XC;@ysPzUO#HYj6RFTOqyykf@?qJ)j%y(~= zm8>V7>0&Yi?mz!>8BTB;J6)ghyEf%0Q{@^V${p!QL*HE5XHdn(4*p zWGDVsh@bHOG}F&<{FaLotl;e>_VJI}S^ccA2ead%HUp8@-Z%uMNVdNb74Hb0uhZdr z6@BvPHi_7}#_L+P*c8z%$UZs?NE#=GzRX+{rguc(p4!-ja{VW1?UgEScmki|nKlb$ zDuGEc{`pYrm~~ds{yrZlS<`Y%Yd08ry$E&8OgZkVfVsk+ekdteRMeha7@jWms4EM- zjfLZhP|`4?dQ~l~Wq7eJDswERdrzLfc*k{tk4SiD!Lx{3DiU`qv{-1wEd_YE!2*|x zE9RTGQbpT2a4uj4ok5Z26qQ#HE2@mBH|dt5J?A~}WmjiPoXh&iM0NQRef|2P5_N<)$?~9?RK|nK?#q zqO4MuHA3grKZlvV<;dCPl1$c#i)IJ*@2B^IjiFa36FCF!m%6E4N3Zjd@~4RBOxw&- z;b8M;{uU4YM|-kfT4d?~@3!uOVYI`NfmJ82{eOi4xOMs=bv58Sv6keR=XF->h!S;>~*9qMfuR3EIqY+6l3E$n5F~AT93LzUh^mMmPyn z%%556s(Zl4I|i={ZM$x7r6EVSd@iOKz-_qJFAqsd0+;N#wlmFPIKX*lU#~A_q=e+- zQ|gm#15re#Du}0&7s=A{$;?C?NScer=ys+p7ew|~GK+k&jCg9Lc9vx`jjVVwi#SNO znZ{lnZZA$FD-S}!z$wO=EBDt{jhsqh&^+DbtT!o&?LK*n;1a&o!tS?IB~-(Ecj*F2 zpF9GjT<*kF-o|mQ(=HY$gr19EklXU^P=2ow^)=i1Mr^}6er0{`FVV{`eDDuJq-rxO z>0joN+1iEKjgHo-PHhBLK?LcxNG27#hZs(_29N^{<+cMh4W7{GWU=h|nbx|WS^o&K zgAF5OZOWR@IVORn9yX>r|E4i(0KQrM%R6t_Sk)?%&qD?L%Zu`t>rLSOf(gA!Dt?NG zK{tFjo#Om`#jN~*C|#_Ad{qXYSb*Pw6abmeS=JdOe`$Y__W;QtzAtVoZts=ixad0M z>Xou2(L>5zews%*pSdnRjKJ9RK2FC0{i4v-%Kd!mr<*6AvIbHLy8$vRWr++R(d43L z8hV#2uz{3fYD#gdCBk$!Up)1%@i=|lc)_Me5e`yroJCZm*p=i0vf^+7E7-cqYO!g} z*R%F}V;3DF_H;7I)&FD5O z0Q}N0ci(uKoBA~hP8O61b>G0RjxS-dvlcBgQxyZ$ZbsZa5G?p!sUgSTUs#Vrwih>K zS~MSfjWFkyYQD^S|56pn@7ANmA6ALfGVfKHB+AxjfS|ZfjQwplyz5|x#^cO&T=A^%&0E`1E8p>Bx=Zvo(QHt7^w91FsA$M9z9{xjchs%CJq<&TAs8VH9Q03%`rD|ew-{Iq zp|X(R|4l)j7F{oWoE>3uZl@0GY_`z8A5r~Kb|9F>Dc^5=Tm4S98FM7XrN97$Y=%s( zlfs-LV~oT?3nY(knDZ{Y;ZnQll6{MK69WG~6rFiARR05p?~ED4*k){51~X${L&_G7 zG4_4mW&0vq2-#)$>{QkRt-gD1A_niBF-uHP< zr3r8YHWFArj5DuXT0g9ap|7GK6(+wY`_nAd?-$K2sHoc_ix;rUW>oi%2DVH)-T!m8 zvQSSCrIp#dUg8>YDPZ`{ZNS7s7XSlgkdH;7AhECE87bc&cmCwb{7EtY^IzAX$6p5U zYw=K`4Lw^~4a+Rm-AEe2q(^2JC zTRi_ENpU&j&mz!3cj(>6A*sL)vBFQN?nLp)c#7}g{3Y{^1*f+c4vQz#LA775KaJ+% zJ4xrq_RM3h*fEf>@e%D0r4!tiTLR>+q+*d#+gsc){gR@aG3F-g#X>iUB(!MoDpeX_ z6>P@`yNiJsK=Sqy*?9?f;Nl+RwIRZgT73aBX#(n7S68PBjci)I4&^6@j7``SDFZcz zx9$MU0V4Z|ym1&?DRDS`2`M_CFXuk`{_T1>NR#d-XJq7mTMGbd{eJnOVlBZ)4+OCf z6-7AIGeCVC4x6>kgxOcjARVoHhSjj*fXmdjQJlFgO0ZojJMA4TR`GYPi7nzuxhtKcf<$`@kSrVk^M0y!tx5ZW7Q>O)l%V(5 z>?tyv01^0vS6dS;pks3%$_`;*8Or8hV|8s1G??9 zq^WG*prfh)f$$V_0*3{kz8gbwon*cM)FYp$=OkEJ>zsnM*~C-K(-3z2HiOsFpM&`u znqR~pc?CQlVsxmlv=80Z5@N69#k1+pirKUOh&Bfs=6EDKJn&wpH8zRf7bRVV1V$se zm^8QxY#C&=WKxE}Ku}61CJaXgCxCZ~nW|#u%fP=PC!a&!N1B7^audb#__&yX4x*w- z6!|H7v2IHH0Q`sCNOy6tioi$*e8u$$ib!e|sW6cquq#9%{9l`#dyiWK9h60iI_r}e zRm>`dAl#hYWQL39Oc2<$a&)%XqK0xJ!6QX40m~$cJ-T7w6Gllw6@f28&_|aiC4`La zwB9kTOhUe>*-n+`Uo zmVh0=Jq;nLcg?|C$Fk-x0pqf%dkp{eOl@AiIMub9xixHkQr_qD zMBT7LB4}Mx6-}}Xp4p=WAvuVnS5WiCE)-2bX<};~8!0$!8X}8FthIeBPYdfzoe&di zeYI8Sfw_WU;}!FuKfsavd7^|N!zsw`#^M_63F|lL6OcM7M2mC?ueO*hW6s`RhSUm_ zsO0wwl#FZw+&U6y;C!i-X#fco4V@ zF=ZMbwvaue( z2_6GLxQKl6#zM3$3>%3PkDw-naI<1g#)qHyRghpZS|Hh6D?NCcC{zYl_~^bqj*bMt zBvy$@Ay)cjFaV-d4mWKUw;|I!sTq}z!uV5@9;vlHf1`4Qh6R&2*d6=$!bO}+WJJwk zwyiP-<#k6!87c}@$pIOL`fL{L96gbbsw0WP()_;$wL8zrvU?8}SH3`b#^2ATb|mc{xKgSkTq%^Rwm!zrE|BiZVicZ7*aq}Rm6 zOQmY?of4lG=|KPAc=P?%Xp->S^^Bc^A>PgG7e9UpHq6`le!O|rjkpE`6vOO@t9jSkq)z~c>phQJ>Z-zV^ z_MXlS-9h@LgcMnbw-`AAF__J6yg|pyC=03QaC(MTolIn%5=`^Y|Ma)Rk{9$c=GK_I z@MqgD=)S*!z4tOL{NjS)o3Cjy;rt|6?%>@8(R+y-v(w8aMW&Gg1`!!cB=OvVaE?!I z!Ermt9D|#)8#cj>WS?a$6Hz1%lUf>-yRG(zK5|ATe)th9Gu9c_1&B|i+=2yu^?yMg z#Hx+DDy&UrjT{3^Jjy*IUw0Gs?dM*trKCQoFiRh{U658{R4V2347@XZ_4CTjmu@9; zUTlQEI`HQm`A{*;d9Rd^U;I^lr(``2k?OOyBL`3HY`iz2lR7bHPdqPY^$YH8?^3pl zqnG@WTv7xUwO1W;kW)hFd*R-Iw8s49ZZNndpdTXMuqjUer_(z%!S8Sb>bDYF{?fvJ zt6rhAcrPr2Ry)$o#$d_xT0L8epmsIowZ52I9IpUTjAKf`?t*sHwaj?JnzsYBougqr zYy6ynkP&yog~q*^VIow1S`?^dOmt1;`hDC12nWcxL?!=M&6<`cTQR#}e}y5)jC znAd;ewPv2OWHW>r?F}hfk-zIkScPCtYRytk6L2&0!n}SIqTOrtEk596V*8j7`=|B7 zf12?^Zx}`Z(+WAC!S#lF!&8W@ctU;@=G%jRVWF4E6Z2PuohaXRdA5dA8+iX>roEwK zuzve38pdrV0nG7-1tbBiMI~{`aOBHSSK}aPCF%x*bpGP1k zMKfY21?7op01DWDH!mnpI+mcaQx|c=d|LKk2HSfq_aPG234|U-aN!5NGaw{T0LbG$ zBoxx2&bCt|kPIm|BSn+}o-dF4Bk4oGA2d;Li9UOa4KiBx}>>`!KVgq z1;m_JC5>GIKU932D{_8|_hQO78B})=^bLErWSn%`F^_A101R9mudDd|qvT!69ohqv zL7E9{(je(y2m$ECLN<$<+sS>Y?($e(2?$td(_P;Sd{#@==k$cZJ?|W7EoE4W5j=@o z$cGAP1Xez{kjy82b5G^8L1nd1;Dkg)%}@IFVCAw;YMKv);_15@UD@hBdMjyhs3d62 zKjc{cq;aYL)!@qesTF+t($~3dukxw}J ztGY53+0B^-C-x`r?uo3Vc|cr`^an+W9!Woc(Jx-Ke}*&Gq92p+NRn**5N3}POGTdB zTsNf&%^a>|DF9;7^qY_52iZBdEnV~Hju6k@9fv_6*`(Gi4U*iQR_{Og$92zl%j1Mh!gi} z(+R!um4_@4j?ZN{PA;v1dj_$Syt+IF1I4nuWk;Xk6*hOB;7MYZ{Kkg7LySzPXKfw* zq|+Z2`V6oCOC5Y&#jC5LCp-UcApin5)|*M0CT4sNT=Ndvt`7YBKIrtzb?^rF>1X_Y zKbVsQmM_N*8sK^}3D)E8`1eoxh+NJQU$pi`CC%qDcts3s1@yNU^dM)A?V3o%%4TNq zULNt#-g7>;liWN+>Jbo$%0j~6$oHs{@ElPuLx^-njre>~!U+ zy?*UEfb=oxW3ldAUkPr`q_jaDSC@K5NCPwJ2vHIThm43+=xuVU$oaZs5TpvnJXwg6 zh26)&93w+W#mUBx{tcpWn%-&Z7yN8Ox`$u2U%hSg=j!O~nnXXnNs0YJ9l%*Ux2o!kn|R+DHGa z`I<23SyI4mnV405sU?>ToO?9=3v)bDZtsMv$a4#YU^>3 zy@AMB_)R8sVYVQfP%4P#YAkC;b{*Xo;u#qvFkVuI1}FyaJinL5MrHV zDp^D+!KKv{(kM@T#>wX7{l(TDa?3A?bg&gh^dfj$NNAy@hR&ev)${ly{OuHO3sy*( z>NbubGb3Umfo{4ZH~qqI@V*Z9Un4h!Cn$Z=Fe)=(BYJNmQU7}4-eyjd?R0HM^>|Lt zNWKaM#GIQ5A5`bPefeSnSmf?e_D-|_fMVZxrenRfTio|iaPm^4t~@f^aZ4|8&S9%QSlt3Kg1zBR7-kA?{+tcB+(MMh;o2LeYVoH9q!Tsnw5I1Di*M#6@qQ^+q z;<-nf_mvp!5n?FBCFuhXinz4`h>26ByyrWY85_RfNfMA095@Sv$g}+eV(Mq{-owaiu--kCAj+}k9!fq8rAbb0o@hdP!7cTfEkJOPSo(nj?_;F!OE;y1wnN9ejm$ap z6?)L&ysp>E5vjuS>0uJ1&%!S^TsIg!IUAljBf`IGNvk6rPo-vOguXoAWumGlf+>lkef$i_m$%o? zVfzLgCM*%_#_()4ZMXH}PsJy!-y-N`|0#0nQ^u7&Axf%iFGZM9UAp5E)CI-6UstT7 z)E*f-HOgTwZprI45okvRs2gFe{%zUs-=73@MZBex5mYgelu*G1@luulDX7B~wJu_t z)0cs(wX5_A8btNa#XlY}$S9%ylk@pYnzsgq_>ORu`*MCsVkM-vDxdq=rR9B&JT6?a zOAGSUj_@iVs3r>wmG}-dLN4DdeZ^Sxg z`?EnB5z4;uQ)V=n&vWOY)QUhiSO52%tf2*he<$*zuQFFaaPOo}ZfSQ*XhbAgok%)q z8SaCGc8OYC&X}Vh3&OdmxbX0Cu!yEbq;B8kDSLU~;^k(Zn-+K+P z2mhiI5tj^BEqHjWD}OEH4#V&5{JgPRuB0BeAP7+i%~`OaJi^oMEKv~jaZmMKjLv3!m2Ddx8#>I)9nb$%8nQaA6nK?BmU=HlX+I*s60CD=N?X zF84T4gDP^PX?4ZXl14jqk52E(sa*};n^9nW-2XEOY?0r_aNO5Rc$F#;(-M;Kqn<9N znMvKXTJW@)|A~Df{tWlsEeL?mjFj^I1uxWsQ=^;iir!Ht(Tyvoh^T{QV!Fkw+H8xS zoM0nj-y{qVmgqwW#m%VG{?2H}%|7_Uc(Hrd>F=Cp+`NAu^^?*0z`qN(;@;l<`}T?o z;WW()`@1|7_x?_~*;3rf&fk^qaUT}AB?@alFws^y;y?1! ze1gr(glKCQ;yZm(l&0zZ{B@2bc0Nh#$J8; zd-D-(yDfeP7UM~a`ccxiGZX)HiT3rkDq$z=hrZ_CZ`wCH;{L->!FY%q)4u~@;-NHg zYumciY^L@+@yO`kk=4KJ@OeFibA$E2;~T`EG5>6OGdp0*7Ll}{#s7XiB%T&bU-R7I zvOfc{JtF=Y`}b$&xp6b`FYObNw)2n1bazKz{U04fvcUckRGsL+4gyMnljWmd9KPn| z+NsNVQBQwjJB82D1Q&(^+HD?U6OibtM0y(Ja*zNSNph|IHob z+;d}Vz9Z(``8rX*x-UPB@>3TfM5jyUOQc|rmw~WaXa`TI*GR6UU1u!sh2=i=-}A2r zYv8#s(}tt*UE+oPiT)aOMRWBtpzS-XY@Mh)|IMKHPojPv|K;DL>u}k!GM#DA=81|0Ajg#pg^nBB zBl*XdX(}$_Z+H30@&Jf}#V$njW>Dz`Vi5xjqT>M?L?9(bI+t#JNgnr4%!}a)aCD0~ z4;m4=_WXsWb4vqwwp9ena?^wKk}vQn@)ataP&dG|v__}Ns;oqPA)t*4QGk&zWC+ti zmyw1KPMS?BY9s2gqcR=KIb(7H4b2*D$Ia}jV1zFzm7X1e(-aE79IB`oUeO{f-uLu| zC^Vetfvv!inb_XopaOZ5_;27DS);dv2|$_|{F3opc8sE)ituj{O~_@%W;Jb%ml7Nu z5Q)}uDcY>m>WsCG%e^_4bTmafVp6Jr%F1(*w$=cYTB`r1fUb>CA$V5IF4wR4&Yh&hCw5aBwP9?8tw3J7~Oy{U# zVpv>bn6hBedX7nEz&laDxd|DLxg72a*fBKX{Rqw=zx;0a{hJt5GqEtkIWh3(1>%DY zO}?$lMyZpfj|g4XIa|!Ui4S02`SW5`-{ms~1|i-ztD!@%c(?Vncj{I$tJotyfZH{E zo3>p4#i9JaVvVICT>jhNATi-kd}G>yV9EXf%XNv*_pZxI&sMlptR)P8(;Z127Jk01 zS|0Q0bi2&vva=1H0krgJ+T@B_U@~!j2&I~JHPoSI%A)?XzB{B?-Lu6^+}e&V;-A3D z>Q|GeTQA?)N(1k#wr|!H_;!sRzYBhK-~Qu4dIzKUN@v;cy}qA{Kay-8*N1$%YB%<4 z-S2Uf@&xkVpWi2+A3UI)K86cnf*BLrK@fTgG)VEqFxROb353Fdj0)fBwm!@!PV^*2 zwcHr_eufC5M^j0_t`ni60Aa4A1)^6$(-rP_fLtd@Fnb(_aU@dnES`hzFA=IYdP-^L zQXD3}R1mFzB--ALwT&c!dtZ>m#wXFSZs4;bD;2sw8gG%e##yI-Nn8X6g6reR06>Mf zA@BZ3;2wj7Lgng{O*x3=iIwYZB&Y|$`J39+?_#yj^1Tv4FVeC=>%-*n&*I+EXPK8^ zHy|&Ci(4K-!0 z%jM*2+h`n>Bp-$cqHW1m)z7?>1H?88daXC{yo=_j)JFx3b4+9S!E$3M2xow?x2$A^ zo=AsR{uc4!LqoKbNPkFfoZzg)oqAz$&$HQny78IQ;r{ai#-vj9qK{m&c(Yr(R+=Zy zw&9_pSB64F=zq84e_IodpO{h{`PGl#G=$5pmB2rw~}$C~=J7+=Jh z&~Z`u#Vz?yURxx})_pNt43~qdxZOSAtH#W$_viG>U&ZIFm8vNKbkk`l zP!c-^gJ-s$Q?#)hwh{-c49n!EnyD8VwRpHlUgl3Mc@-Q;0~qZAaN%i_@i1reIi=5_ zW=E%`74EKkb&2bO`=$^TYA7{XregILNpnxDnq*z#SACx`By|RB>nor%Wv5qae?c^! zXgLPzgr%&5asM%GRpW3*0@*HFmPbl5+G&1(w_2C+-#@~D@8CrcnVbymZ%||d_rL(V zhm1heXF<1jvCqUfY%QtQuTxMpV(VtbNb30uNE09>HwxsNcn4=;2jDJsVYm-c44m^L zqKpDxD4Yvp9Du31-^47wXAESsv>?XndOZUqr1c+3F9<$_Td(#|1DBu#4U6+6fdHKz4H*7S`7#?nj&2)@j}&m`VRR1yzU{#7GmB^2BV_u zR?ZYUKgAF{+(Xv766!GGq)+!Qm+yn*`XjZ2P<(!e$@6DJIx=$lE?UkAjr%*VD;bhX z>Q|)~G^Bczo_%jlbqVmiRp}CHs{h29;F}zLP;01T+61-qrqiyhb#fh%VdKx~X&s!S zAGy|UpztA!d%bkRR6p}m8iL5XBeG1_zhJ_J_hY)I4=jic$7eK4p5E#FZ?jkVCxeo%AxR}~-4198qWB8lj->UYicZ_H$KnHHLAfILv2%>( z%k>=YdfX%OI+?9(9)_Ns{&VMQa`2-uCHJ{S=DcZ&L$%6>$vlqpFygPKS`LqIrJGLZ zZ`E}#>s-Sh&G3GD`DhpaW$Aj7NWmhV!eo!oz`LTP*xW4zmkl<=V94Z4Z7(^|C5S&D9v$o=?*eJXl%YQe8YvwnrmGO?xIda4+$4DO-sYq-SnWOSJ z@XD~EqzOW6CBCig!JosT4}X4%s((tbqovFW@s1}Kc4BYeRxqxJI?RgwEk2d5A=z8x z9Lg3&NqrjXEif%NBvg5;oo4nhZViS%L@;I3F}Ik*tJe1Pu>`OQS}n!5Gt<494a5AE z8M*d=GvnBM0`bCu=aY$oQA#tM8fL+AK2v8|QbzNwA?eKr*q_JB?Gh62XYwG_)Xc-FqzZMS52)g?=e;7R!n`V)%s~ zzluowh7bPt#o%W|HJgShW}6Jk-8p~{OeT$^r65S5Dc%Q2KBy?@CvyX8jU9>QHhOdR z(6|M#OE?csyAUq35VWNQ%I4sY6jA7!j@R^Y29jzjq#1sd<5oL8bDFc7I`At zq0L_=G3;N3TsBcOs~psrgy@@Wk%#^uR=Dc=!Pn78>_`vJdmBjLD`q_F2icP&#$qo1 z0C$QwU^vLK6)fUeipaAXH2rWbNA{d0Cx>)}nt9K1ka$uE2C#@~JrMctx^Dd8EAF*# z&igdTc>z#1=wccpbU^ZhIr7o8;(3k>4_{!#vtc0${}2OPmWMxiD#lMNMCFOiQ>?k6 zgV|yl=F6Q-*j4%Ou9drLxq0B}?`3t2FDwc^Lavo+!3D)j zGw5DJ=_}u9Xlkpd-VKbRg0yGF?`c-3*}x0#ED(ysSWAJ|QgH(l%l2QtvLG`7m}YSYSoViz;(5qAS{r&-7C@{5 zBAg(JBS35xuMmbeX~T3gs9Jd(DNeFkC4S5Ee7)Ov@#i#}*$XK<#mIzZTg=6Hr)v4X zIdAb*GbUG=%Oj80dIbqq+@`1v2Q+Ow#_35&R%|r-&6l~t(5=D3eg2!;lN7%wW>){!g0w< z-J|81{hl>TPBdT~IOPNzzMlbGRMbYch;&*JI*=CG8zTLRI{kSU;-)aI7EzU%l1%uA znWMV>VtPNx%_)jRft{lrloCd4M&-(pnbVxj)o>B^FowWf4GSBIa4e@fmTLz2xhX6{ z?VCuq1VnnB>qF49UXGt$ZRqVu4yMGruB}hEITS*^qiKz7{NMHNnX7?jk2#N2+_{`z z*f^_W%@a~>`NN!;@Y@pm!biSPhr}iQ^P-7+E_O=i{*7NGG9`ZN4ZO;MH!Wj#315@E za*^$WwZ_fIY<8AkmM2YrWIFvKKRym~7SH#Pj=+p|=qu!y2Zp29y{xnb25z_6@dk?0 zsBc81)_Gvq`(ielZ3+@l>?^@*A_8D_5aonn{u};>8)p7CxDsP*v!#-c`JTrYUZEq) zeJ%Ic=CP$2u~bQT=APB3S&_BtCKibnR=HjVYnOQ|IG$T;8n}xI46H+@uko#EgtwU7 zxFHeVF2VcVr|sfM5;t$^CFF0@Yu~u9yKs4m8+vM3iKm^v-@qY)`}i{SqKJ8$S3|@Nq;WzX6&cEk%8Vk@$X<9Ha=Qx4b!lG*5f#&?&q67}H8SuKbj>vN|?mVNG5Cz^(QIrSeZ-3?^}DqlW?MqcwuVsTjbZqTj$?iQ?|WTWiQ2p zI5XM@pToz&%rPa`0DK{)=~75rgvg>!s7dkyCsso`SZnrJ$LEGPJ~-+eo+LoSDm_QJ#Sm577Ky>v=8BGYWM3IYMYTHK z)Xma#$LK1oH{nb(e`Ve{j$*@dU9t5%nMolsf*B9m3!aDFKWop@lA_El+P3cLXuhp1P-q6pTk^@e%Z$@Uy!>J{8{J#^^Qbd0X_q zKHiCAUq+8A&~2Un)V`|ONdeq$jAzJ4-A9FV_4i5_ZoIRVg2;&Z*Xe!!wM9E$m-@Zz z+f5viuT}W$VP^%wY$(uoImtdzx!5k{WB|ZUpdN!llqWITJYG0bHQb1>y@YS`#9!4LX&ivF1H(iYI5RhyA@O;U_ zozk=HP))JkI5cC}`|aD}_wOFOzYOlrgP)N<(U&zpfgp9g<)uqc-Y?yJ@p4cB$oaE0 z_I~-zdpWRsbB-iHOhUc?Ah7bOPo_FX|EGr{Am42^um5Ihy zgzo1WV@!I#dJYS-1lHW$umpD~S`%79`FO$g6D*O9CiO~y7ybBa+$Z4y4jE18v>SGn zy3VWRUrB|4$DZjRm)@09KwgWQE|i`bQ;H|GLGq%_l26joS1wf-tc)cH=UZ-G|6EfOU<^mbtdo zD7aP=kEs{j!wBwNxV48V+j(C0?YE#ZPyhPo)eo|+(98Xr(bP46>Q@^y)S7xw?z+dd zh7|m8z)SqF&T{2K`^wtSm2c`FzDs{%lqrMix?|m_YvFFVNb1@(isb0Z+6Oo6GO%?P znqK*EeEq5d;p5ly@z_7q^)2)d+4$8WEW5EL?GS@MmZj|}Xn+49`166#=??z0>l(%Nvlq@-TZ z#HRm#!j}x;8t8dhV-U<=OW8>^O27y)J*FHI+<9=;MCDb%37x7wIdFe)Kd!YpsVy(B zm~3Ut8hf;^o7H}ys~W>2K5Bg_e(h2?gtlRviLzY1yw-ir+i;MMw> zN#&6c{TIn=Cop>_8j=a)zaGb<+eD}S{a4y*D5%BF zU+>MyD5hUHLso%N&R3BZJnJbQmGT3L(em;Gv!XKWwc1?C^ih_p@s*K@x1wc+ZL||) zDnlsYx!>q{iPQbf2(}ijR@xl@izs%F1SVN}BuaVU%>3;k0QrCqe{J_b>#bz_)o5rv z<)IecqQPozPieU?oT9)rVvCFpcZZ*S$tK~I1os*gYhO_!GeWWu%pzW0I2maf*_s#) zVpZ}iNe`|qD`9InkSdW`4kMEx?AQDv3(3Bqf)9TyNyG>+C zJvJ$8N!tSOmJ|QGI)CwO`c%VhZ6m4mJ={q(`9(9l&s;7Y`nuknPpSF0&(rOfZr%}6 zghS#Ex$>>LYYS9^<{{0j@|L`NZRvRT`x_ig_GprDF7RkdU;KRu8&e;;I1*kbQ8EnI zm`ahTP#Jh(D|1;gjoE2x@{V`~uJxmB(9^zgnp!D;(0g0)+i#_?N!Ehv(*wil zgfmj=5qz1G7Bxed>p!HJ0_4G|C?V;i_ga*0vI~Dm0`{e?YA~cJzOn%o#H>7RJUPFk zBatTL_PFNg$6KGre~*`Me*61#^-fmcN2YS5Qw2OuV!65WoYJ2~*oaK{>&K5N`(xA*Xq7s=uQpUt7}FKmxswaM%H7}b64YMhp~ zB~BK4d2G~{UHqAt+Ci#$dIe{V{!5~iqk=KqOFw{>L1DFI-o^^&Lo(0OsgsWiu<3ZB=sy2^fti#nMy$;SPnw?Dl~ z4r7-Vv>Dd!;WfY2-jYJ6b@g9sQKG%h_?410hI3Wg9r3#BB{@uY&mbH#rh%Vv?EDrQ zdfjA^y&ITIf5pYRLg`Zm-Rhtrg?Lj(a!xfhip3>`<*B7c@+83OyH2ciTo|42?ETRg zoFPri+wB1BDpVD}N(z#IL?Is@(xisfaGSpszHG2(aEExr-EMXOj=Tc4u132l1Uxrae)C31~6f) z1Zy`I$>;4xR`eIDIw1G^`F6LL;Z7$5JQK~gl^aBhyt$>n{U&Zp)IX_v>&0w^_}FAb zGFvjnyhXz7U#@txj3SSw2QQQf8?uzsb2|ZW5JJjtd{bh##+~LPQ z&2`TMFPZzdJl_&IXVLI$!E~rigyqTo3uJcq;Q(jc_#wMU9osJ_zrWkoVoWC^x3rG5 z5CLSP4)?5>FuGdpK0Wx7QHeb-R3MrPj%d-#_s;BS@G;qOTG~4?4*u3aA+5FkN!Vp^2GG}A=Em2Z7Ff5u;l1$(!|GnF=gL9a zZ9PZCJKZ1Ym7BF#d43E}F8!mOym?N`a*{h9u5S3x2c>v{j_w6xU`?PRlrGpa(o7E? zSU`sxpdVQac(Q?*x)jKYaaIOmdlN#H0saE2LW~b0&PQ_fm>(k=5TYFk#aKzXMV)1i zC{MFITSOz5&5GW|cghHignD9u&gEbV8T?ot#wzkPa(U`<-uL0gZTu?hQVNv9U<09Sx!&tv>?u=F!gn49$H zSs3NE+rwk}AZmiME}hRLj7(*)L~HjbCr_NDPx53;tH|D zgRv%*cDY{)bP_*32tzR+2RMoAw}qeeX9T>J-EsH5JaisbL37J$jqgO>P1fay37K*{2897tCWzZ2KXu_`lBch5%&=ktatem{WiV5i&DWESdY3&F63_xNffS+A z(RcqLLsVMG7ruvH@=#O^X1uJMAYYxyGtDWrrTsixJ>Z1TXcqYg97jBT z0lLoV_%4f_fHO=z5p(agKH`V3+|QHT-WU7{%0Xu|W<=Pky89>TsY_(_6KnXC7oG0K zYgPr$m+00QZYYvvWJvT>SbhXHUnQHqa^$ud`Cg!E$x}{Xh!Fq*487$5h*SciLI!zD zr&UqZYJrx1746jIECeicm4U@T{^rM0PYisC7iK3cU{AC{IcUSycs0x9&kdiT$g8kS zpb!CK3RhFlf@}o$b$r6AJ6j6~zeiW=) zl^b8Rhg!8)Z#IDsNuriBQ>!jGRtKF{2lLg0MhE-Ak!;j*fLd*=Ruj8e6MtGmN^=fB zMYu#$45AUqr&S5PwdsqsnWwd8*2Joaw3_JcDspsP;r+V%y>$zUwX8@6)HZN$lv3hY zUmaavd%u3>V;!qI6zoP}-Y=!guB~@`)EWJ#`~D+OOdSfz&}xWCUaag@YZ!EF7)q;a zaOCfgZWv!|m^f|l7=6^G^=Q(uaXz~7?I~r%kbm}m<4UhaF`D7de&db%j6}O;*mJ`s z&W^^msmAToCY>25FNp@?nFJLBkG&QlFf|~SipoDb#4ZM`Nsq4xH+Hr(K#H3+AHt3d zAM*x7;ObSBUJ4x*1q-HtnyZk-vb$3Jd%Z1aX<3)aW>)^z84D=98Iba4q-;PUM_XIn z8Dq?$CRB*YB*fGlO5__u8Z}c)+*(U}DR=4{0u2#1s{n&Ma0VY`lW%X&W;CG!^yr2M zy=O$y|8o*x&44wz$<-aoMgr)8_P5(mk-H#4T<2s+4Q%o810QJQb_dJ?dhTuw{dOm^ z1;(V->1QNMAA?{)G{Z?Pl2sMH; z(|{iGleT|pEtO=(GN$Gj5*HKD0~mG3jnx)YK;I1?y9c9+$*|61STU0~2?u?u-u%%D z+BeqQ(cgJf+Rk+HiK!8aVh%9%R(rJosWB7hne|5KPF^r2LR4Wf^p zIQrN$1j>{KK(wCHp8~LK#!2aC^p1e~7;^b8g{~i#=T8C4Bj}nb`D2{<)bj6l`|kEK z>f<0fWY}fGIoDXv zaEq^9HZowZ*xiTgyzY9E5Lp%iFbi0U@7>c6I z%QtHSP|%B&N0pfSj84n|9T{My0P+D8Nb?XZyBcN)!0x?@F+}8(h{N=00P}wTrC7@D z7-u2>i%OuM$#1w4@r-G^gLUIG2x(#O6TzT^ph4E7o2aHjP?lIaT(omhP;IubDAH3cw9 z4Q!&s7LDLxfBHC4z=kn`WIlfNGGe*md1doUXz)NJs^4xO(bW6KI2&LxY)cJ5-23yK zy}!I?>CG#{m%O;q&f71)1yI^!`{&0vi}ufM5a1BtCz4iy*pjCU!V@heqUx~})yv%S z=`+|q(NJTAyz^vA^s{DWq-HGT6$)9@OabGDLFie$48YhoZm~PYWC#tsJOXPOhf+Bu z11Qp$XM;`|Bbw(U$gqId^TtTH|JV5kI7Ac$qJxIGAn3&c5y|EZxAzy^aIH~@w+Sq7 zlZn&`YCp_~3NSRcvrIx3{_xvUAkqL56t_jw z$c;o55NNf_E2tK2Ql=$UkZ+)um&$p_N{c4FCu8Kb4?I^ z8B21~L(lq_Kk&}|PMh~Ue50pPPv1MoYEdiTS2@Kz4!C__Yk{!}-pf973s&wwqpx4{ z`HIkpqbNQbcl-L$!;#U4f1UPRjZws(q0)_kAFbK(?-P4g&ra@@`$JIE*&!;oRPbp4|knD!%r!EL4mjO)y*?h{I)JFiT>ub@5 z5!Mjs%Z67RUtgjuCT?UBx$-B!(4o61ZW|F#x{ckT=?w$to0fp)=WGd6q*%m<*U$2C zo3LKsr}vuZpV_CN=a4-F(e-Q&GeX}BXzsn~MIlrEd=bs8(RW!zjlSs+cs=gl-wFEi zWgMx*3Y?P$+5-{V#yhZtEqb+?$AZ;3*3Ug0%|mSb^H-OcR$nhZvy~4dZPbOZUc3?*Y3{9hS&#R*@u|z zGivY`QTHOG0n_4dYhxSq<7&a+Ra2~=dCeD)EsP>}VJmW9?*${S{`+dN$B&npV;}*6g5RH( zKMrl$sSMr>)dc)yCOk9|K0%1%mDyBjfG+kR)b)ESQDN`Tv)Lygc#z_I?T?BOQ;rLw-HmLsSsgkeC$!IJg!2>rYQnMo)a^Cc@K^e$}47(G&;KS5H?+$Y()7&W#ktYk=k7;qG{2LRHPpz<| z_}%VoM(uRKwz-Og{sVwgW^sv?>;R6z4Y-G^1XPh^1aK>n?t+1{WwskS)kMlRTLmDI zL~V~%R3)agbj(ehdyP~7N6}gMHTiyj_}SQC8#PLha*Q!XN;kNTPHB*wgoKocii&QG z8l57g0@7V7AnHiz76FkG5D*ZtkM0%JSG+#K7c856VHNI1|GTo4q1M6?|;mqZhyko`;)&1 z3FL(Ij1%|{Bi1#8iL;t_jW|Q3TCIDyS&LrbGJjdlz{doQpLqOt=hyznHwouF8BxbS z_ur4l5H7^q5T*9tr^lE|4~M>Ci=Aeo>n~@s15lM=A0?m;-Jl)2N0zSAiB&o_DP|Xu4Oa<^Ov|Bp(PMpFbJ7{}s-z@v zB0>xsik1=M`22w^UiaZohROJcp000t`kaO;HirDZZ7(F_I=RIN*S(ZWq_2Sud*Cs< zJN+v<8)=m+I#)t&m5dQ<5V3l`Q2#5|3~Bs(p8Rzhq(7iS2zeMDTIFTm~}_%1L~5^rfk5ys4sq z7&O&V`eXCz$tE{qkydsaYJ7ITv2s6!zkK~ea{MWq zXY)Uc((6K!uNje_(%;vAE=EIv$W-Y!h2e?TA)1X>j5!=iC&D3=jifFpK6K-)HTJ1yf6|@A-KkKjzxvBgxU@!e25W%7`ot}1lY4UE$0uNYcHT+F8 z33BcG%c3Z5F;r)X7z=n%;pm$eq`6Y(I=bnWS_7hBJrNK%G%50*R=%-IG6WxA)bE~F z``hcJ#D&J&>ZI91qGmQ!5CGY0fIFcTlNr1%rD=Y9ru;nL)AQGQbc#Qgg&+5s>R4WS z#Souk=Jisefb=CiTt)Kc)U4&AY zB`DKu3)0Q}wyB#2M2XEEQ_n5Q2jhEc20S=>)t3v8_!K2CBd!pn`3H)HZvaM2<$g-h z3&rwkk`_VECLw4siSW7SFZzQ+Zf6_StoPLj&})p=+n;ELKTA7m?g3kD<#rrli!q~c z*20H#x!h$LtKnDCQbJB-W9IUPFH>vKer=Cf4?B&hFyMRS(FKLXAF{~ugD(OSnTrhW zUmjJuXT2V}ARU$F9;lxU0{Ln#h&Vn^c=2}xed8sGdBnIvSiknV?3c65VBk$YUy?*m zL^ni*1h*;%^VI;A{%0T#;omLtFfirsYV-Z)%)@C|C6LgkQ;Zl(NC83|=*3fhe}QqsNE7k=|YD~lOXee{6OjNzk;%uwBz zjV9qi-1OyrsbYW?dDHMXS<*V^uKTyqp$CfjJ9pR1tZtA+v%Gn-zUaPZxw1AeWET8X z4xPQY@;_0UpP$xRvCW?Hx1yW${!eG4Gb3&{s1{ZHwp>YSI=jmMHgdr4!GP)(ga>HR z*Gv@R)$dxgCWEdYahGmUP2kgcF_8qkP33V`sg*BdzVUAr$?LOyy@uKIi!McvDe?uV z%-!FX)`m7@>pZrVGJhxcFrEp#QNT;+loc_zx_*+_WQHumjjje`zl>@#Zo$`ZQ73Lf z_x}Az5KOpR!sX6YfVPo%#wAb@O1o?kusaS_5j#&-qnx znVZ1=E~ehfXqg{=lZ~G6_PEWlcAWp5Q?4mB;ey|148dj%c~sF)8vS@_mi(5u|anxwFy z{L@+cm$*jP%a_ct`k~zIzmj^W;x&s^&yU38{>so4Hq`Qk-jv_&U8G6!T}CkydkyUS z$jT5*Sf4R37*M2QiVch*F-d<;VQA8t+({;o3=RdVu>ln%m8KvC)B~})k$~ATxpxKD zdw3hbk^nO_&{v`bi3B9WD1Pf|KH31Y31w42P7nfIX1pY%=4n1YZOb@QuGmv@de7S1 z;3Q4@u_RF?j1e7Ax#9*uSBbXPr?66hDKAAKRz9!e!UU!Gfo3v79AG9E~Vh(p1FtglV1GP453v6qZ!*ZW<+3*?vP!_^5iq3EK`>Kx*MadfQN8tYS+yz`pe0 z@seq?6fOM&r{yed=q2543V5O;zrM;8JDr()!oIVZ3Bc6JbJLk+%CzDFy+^KZs2WD8 zRZWj61BFA7pVM4Sl!4)$MD5zQBGGRdTeYyt*_I-_+G{&m*_S4I2x<135xJbKuR<{G zZ1o;Z)>fa|mF*D`)As1W!HKHpCA~v~vX3=$3e=)RUsSQ1Q7tksaY8kwlGlf5g~Sh( z?CSx@JK3Y;S^KeyY18r_ro|YV>8j}}x8^WUlFmHv-d8_t)sD#;m>biD9sp}6J-3$ zOr{uHk_^d;Goay<1uQ8etNCA}iMU0{DpRkp!W!AcLgdn@ypFU~+Ca;(@ZjctBy2wlv9AyCU(vQ!X?wbC@mO1gJCsR%5ufWGRlau-_YrV0zjy z=1q5m#*PWV1k|d`rvC2-93?9-QkVJ$XN5GJb+Vb{c-DKui-2*@M$c;-_*f)XS*ODE z+2Tww3&g5_9R|>M*6v+4u(+^5GN(BpBH2Vm8FJ#Qz>@P!W@B)3T&hg*>*6p6$)*A@F~m_3?p1x&@b=p~D}OTbI5 zeA@!U#j^iiVA-_t9Tv%zA5)two}2jQJehv=G;XoZ*Xe3DQBl#Eg+RM8!f$ChQO`cD z&}H&qM}TL^74DhD?S0P#nJ z$AI4W58HldYCv-_FgE!Cs0{!ujr6AcveZ{6#^K*$jRbTa6sGa%Ms0No9 z*qTqSFRL|svRNS?gmg{0#P%+um3HHU>i5Jp@sBIemQ zYeuqr{0tXZAX}#Q1=r19tKc=%nRPMjI$F(3mCfjD7`TJ{sFKA50Kra6fYK4gIp;ki zKCmu3w=TEk#qxM=Tu$_m>!UpOlakseWus3j@tg-!`l>fSsmFiP$o-^pMnL-UC+&ex zI&+_NAFtRpJL)lSKx5bxu;S(li77%Gc*hOHh5{kPsXcmQY&e!Vdf45z2>i!;9X}&u z2CyICtUSn`moC-+jjEAY_4&n%c(b}8leXcw>=Z2J>Xf_r&`WS|R3f6w={GG0L>Ztk zT6~?WpECzaGat=F!@9mc+VnZ|ZrX0^N=OZRvhOkp2>J1`utaMlKmFwU#;hGT(UI3* zw3KDlXtoP(9{FN%^|AlWts5SeTOiWSct5c_71jsj)UxJ+r{I*olV^Cw)z4mD|Cje! zEHJ}Z6gJx9BIA}6>FCe-pkdQ>JK;>J@yJF`>ynXLexL^@-%ED;=1)$yRYC^}qJOdJ z1$rN3BhzBHbDo~?ZF&@v_z@TqU4!Y!*#&>Ut0+4lc|+PQ!jE3BsGJq}Rh-igq4 z{ur!Fe(1Q%oRaa+eYbK>7Cy9DA^kuwzGNqBv@~SmX$Sj`Aij$Es_nnzYK|{02NjIM zR=ESQFC`h7v$MNJhx#93y}@cMbmE{5Amn(~mtY8Y=-yIsz=Dtn5F|pFwf&uN-`J zKbX6cD-8^+7&-2^e6c^Ua=IM6bw9Y1k$TF4j?$q(aq!J&koT`MH$5nw0Te7iLWzfb zB4cUeMs<*`RE52(@8&|4cFir8zy2?tlg%;cQYI?UwmQ$@QBa2btt06!_Je>uk%aG_1Jj)1xuZpXUY)sU!LS`VoW0LU81_B z=e=Aa}xUr*m z92Y87%ca>GrnAU*=Y0fri4cWj&P&cB+Vwzrh% z(;fH`%r!oa@RKzfye@?ow=P;#fQwcA6YhJvc1CN3axyH*SXXEK&AYcoY1|erk^Pa8 zlrm_fZQJm*cVyyB<<@^}EW*Ba^RDORIuagiaHi2??uW!?A9uD)CMl(mEu5*e#6}jc zWf;$_9^?4M|NfoFe&I~p{9RW2VTqF&W(zh|1(A@zlV}7KtD!*>V;Dp`a)4pHHkYwU z=JL#?^Bbjj5HBIiZP37bC`a0<#eSQ9c_a_aVqF(7L!!nx;aobLeXT( z%L=EL0k_#8RN7YBK8zXWkt8<^KV&{fjYHr;gH#qCj=jk5P2K5C7de<0!WxGYSwIgU zaZ06YeHgg)sJ%mDcWI<4b?e^)?0TUl-@)1rPnC7LQD)Z3?Tl!LBva$>2mAlj4_A8< zc+Q8MXdG<}KU5AqIQhFcefdA|Yur5Qa&$gOA#8f%<*l!)Z~P=pnor0?h=QG&nt!Ix zKnz1jafCU5g7&Rp!#PUHi^v87!pP-FOAP|)B4R(nnu=VwVr|XDej~%5OT>3Fg#X#i z$w0e)KO|@}Q3IVQQ4onvlB#J(C(CvIL8mA%en0SpQGNi1U*SFr1pC1sDBwT$zO%H< zP3J7hhlI9AUi|y-$=(hIou60kc#4D-+6f8Ht`hM^I3&u97$FgVxZ~(>m)zfuEe!7b zi!Hh~tSR~E#^PAQ;>03KLj!TjG>|Nsm zsdL6Z-F@JOD`wELdN~lBA`xU$7+~4$5zzo_4*UqL1D_6`QkY;}lcm6hpbe9O&9hp< z-)4hTKPB1hrQ%zWyC;f+V#zv6Lqq#_ZLm~ZUVI~0bx=k#axF3=mDO-bz#vzksTH&h z9TYL3__Iox1UzS(N&qmO$cjRnoJM=~gflavhP&GSrc&>DfmuV(yEb5*f3*^IjcYm? zcUV+Ak@>!Jj$iCQY01uv0QSyG%eTM0QeV0E??1Bo>iNgQHU+%7W%U$yMhyBHK~J7{ zivV?&wZ;Z8;Z>wQ_e90{QT)?FOpTnb1YADw=+k&^``^+}Gk(FofC%So`#-Z1d|}o= zGeb*L3R1|vMl`pXrT65v?W>uXvNVNR^a$CDn12A#@2Kle8NzBxBvD|{6 zYcRUuHt!D7{NQu@ylN9>{GW@d$Ipk@y=VkmyXPqHMgdLOLhOZWK8QE02V}BynM-Px zaMGW}1D^1ByerCay{cE_s3}43MC{t@-|gf=APIBd6#s|AP9b`Ulc6{{V|pCe!}9*J zd}6gGtqWo+b#qEGUg~xVA(odX3 z1!o!B3OBiX$if!_D{x7%84^B1zAnO=NR#zg33D3S5P>p|{*x9PyvM!HF%8)6*+`IN zT`k=BG5NxF@hMSQm8Vi;0k*9LxGcdf6EMP2imsf%$}d$!9|GY>54je4L8a}$u3;IR zt^FgwL5GCiZ!s^a8^W0{7?Q`zAl`;PaG-xMi?t_2j$s>9uGX~9(;H{}g+;FJ3H|<3hWc?EvE5PbXnc3A$KWJ%_CY@B7;hPiU%=)?Swo^~{ z72z@(-H5#ivk#;@{Avy968Py2GXeGPXB3+UvYAqr-dTyd8YPG*GD-B3?6o-EjU0*4 zE?2WOr>VT$n!GW$tOyqD{jUCS1g?Eox-~svf@(14A0U+>^F1GC(c3FQa7@nqF*pUdhCQcnnWCL)ooBi{{TA%xdd}(c9m)fNwmcyrUhifo3;lOa+{#S6g1ZI=FW}Dn{F_ z5N2=S^U{qej~>e`9GZX2%$>elKv?Dbc6 z|2U`~_4s)dw^5m=%GN4Zc6%RI@7fAJlX4ZzYc*^dU%8*8}(7eM!*)IT#z!_QT zE7y|wGgg`zNM7w_#Y~&J4GHCrA*+LZQ9%lT<^n+Mu*2-ux=p$39U~qLrMzC*Eye7= za``~tosqgNvTAF`Sjc^4^ZF*rLn!K5*lULJopu!2V1->bYW*U!}MD#q8YK=|)qpmGO z2YCn|kh5JnyG=Lz-OBvJ_&+{ea=QJF@$_SAC1VakMRjiybUtLUg_>fY@ciK*aG{v$ zieythd6kv(U;izwJXTji8z*1S20IrO40{}+GPU@xzevoz{=w{}@3?HiXD#dM#N%qw zZC>Jsjs#N!ZI@j$EnUw^)O6aJ{~b$uZ_K{iM3GA*(msdhUAD{4etqS3IR>Chr3M6tPFI|gnRR)($tYD$HV$u^HhbuEIb1*tmU;$v1=pq zof>)C4!SFMwrqvqlKs9hab5KqeV_57XP`VLuF5LGO6(|uMO%QHS-iRtL}12zdik;rAk2-bs0Co>Bh5Qg$| zXlUwzhzo9J?Ve!)ZkZ+kVs0x&>eyjbC}hxJ_VV6JIPyWe?E8;XaXFAIGqH0q@7P&h z$AMemd{u1B(gxfCA_isfAC{yddz7Oa%6!&=5ob{Vqk~RT2BQ0G|DaslCXe!Ateq%c zk2rQ|7P)WdOis+we;O(FC*o*eT$yL6fN0F4Opz9s@BMJp(lV3_wf1M~tY|VX*(2_E zecwdW@>>em-l6cn8&FAyj|?aO@qYy4vtD%8GiZl0vGCP`-o48^s5o2?v=%}UzCx8a zB%pkVQgcwGm&>_DLoR7^Zn&56JweIoAu$&ypI~CmH}*hW3bAcW#<3rIL->;aIERuk zmZMwVDo#?AWdelfzMly~ycHt%n_>?MKJK7%Y$c&??$k$Ip|f5skWw>}r;5>K1usK% zMPFlt*kDTXSoDBEyy3LYWhVvkWS@2Hb8m}{$Ke1{;>i5wsSi#A57q$0@Apgfz;SMc ze34K2AU%r1hO)WdmOhwE#o{fpYg)Ud_}8ZA9SwDIAp<%a!Xh;D*W?ZJme?J|4K{f? zlki5leK+?h>ROgT=XM6&c~zEX4`M>mL8o%Bo1V~SGbi_Mb3r#$7sfn%S|U8|LVUm2 ze7DFv$m!-LhRpyM70nevXAZ-2&7L#y@#PmLa79Fm*n`Ujh+>1jVlV=$7oLTe>M<FQuxQKF*sB$7N^|Ig=maR{c(#@42!6Mu(hPmRj-i;@L1yJ2c0g%83 z$hoVmQM24U>8XXlpt+T2z(Aji~QL!WTto5)RSk zX8fpj%w+`vLxUiOJId=(RnelgXtxGThNz$Q44S-(H_(VrvtqB zKMZ)^ur(C-T;%TT82qN8!E3nW27zysw{a{7C(NQb@K6-HDyuXim$p&+08?0maX4Au zo*XbcL3q)gUWd+XmBnU?4G3jrfsP0~iU{Yn)c#pVsGNbSwCJaer(-6gm+ZZj%?$aM ze96oteDW2%0L(x%i0;0;$?w*OHwdvERK4&5pLak&b-WN0;lFQRPt}M|>)-pnwa{EUcaqDaqQRZxI zKh7Yj;L@~7L$~e;3z19-OFlQyICRptvwEI5A z*PXJ_4B75+VXrIL(Dr~*vkX?64T_fgkhWPM4F1#$c=5kwUFZsNke$zG`%kxMDTVrl z7e8gQY^Y)}g0-H`G9=l=8aMPMAp!(az^RCUEO`UbFd2_U?%J1Cn+X?$Y+O9Xi96b#zCJT8 zDJ4Yf(VDetV$lf8Lf-qcebay`&qO09!H;^jSUpSXx}f5r$Qa4*pT$ z=+@1I!&eFW!tTq5pP}!GoepH|k0F+arF{gS8ZT+pFY?hGIl6%Wq5R9DN=$O^=w;PJ6F+L4N&sXO9~nDf zY=Fl+TqRJY#+F117{zuKJGv%m!FP)a{xx98w;et%H+sKxx&cda zo*#HmG)@PI)f&A`>=T9kVDpBQ7>+|YA+5T@EslnK{(=b#>%3eMeP>kg`s7A4mFV|g zw9%SidwQL&5agRIv&oAl{nmhnYQ|}i{kU*GH5~L!obSh!TQtEt1rgH*j?Lw1;3`Ga zIg~c=t!V?(Dc2N1@=!d>`92wOBXCjU{NE;fSveEj0|yKj3wBE0bnGd32xRa;!eV`H zSoF@4lk5wFB2h}41p8JqImEok)EOZ1$P$=P<99<0g<6Z5qX-hK&3Jn%{Z2sY8L)vt zIBTwqi4U5ku5a~uFL==r3r22#i{+ja7Bu@t6rD}YS(6L2QyQBgfOS`RL&N6WPvGy2_C=Y}O4 zFiZIwaeC=x6SJ1GEv>y!VLu|xT?--x`D7zhKB$~)`w%T#B7E(J?@8Q}ncqu)b# zZIMz;~A?o)MiHeIcTIDTt6513aO#K#uLh)E5)Ow-T&%P&78uuMOjZzfK1+j zem{SH_leE= zb4SFfNp9fXkc`;hjRDbpOW#1*lASu-=$VXS_)wsM34CC&=HYt|DIF6Tu~yA{dY0sWYXwtoD$6Lc`oGmG37zBIP;Pz>FW}Y;JDEmT#!Jl@cq zkHVx8UF*q!zHoeQ=BCDMEoHF%?TM#Bk*nJCE5C@sArdjMW8U=f?7jfj9>YkwJM)Gk zK8v*@jXwsuuv+H%W9QOIQr`n51K^ec?8TGm5XB=z>;2=3yevYoh|s2Z?P@7L@{uJc z+2Esd|4oZ~W_8yM?;2j6=59!*;oPWv&JK+eVj>5f5|ir9*@lA%7?a6@Yi3V%Zl4_w zJy{AknD*|ei0{AD(}=+9hcsH+2L=5Q?XNlnqbORY{ycI3ivx&fyG8v)AB>w0R=^xE zFSb`2b!7L6mZg7Ir)zULo2e*Btxl0`wC=Ze1(`*SZ`$9FzY@`T!QeyEgq=ap0p}s&P%LW`O17fZU*8{TLG;t41^C;rVJ7zQ3f1YHK9|SY$qLS1nlq*^NhX^48fZDjB^Ovt#6~p#xxpqh3n^tP>2+9) z2_VU#GDVE@`nTOOr-u$LV}f8LkUzmuFf>AUx~dddl^%ruX7!$~senIDz?OluQ$Z z1Q)aODK@6c27INM_K(=lSZeOi&Rir&(CB?P3#Tg1twrox$3gaC_&6}04w6v_Zbsuc zk8H&(l&fha@$vRmX5V;yh(?#;!^-FsSvGQ3vFlV1_iT}oZB?{2CwE{~Ye=WK6o$^O zzJ$&??t5DGynI-?E~_P`wk-CKDZElki&$gD?;S9e#LNDm;a^Zzs|)yyKUnu-I<(j^ z0fnF|jA|8_icK=#3F@ZiKq-b2V$1xc_MF39fFH}T%rmI9)mdLaH(Uwdfw|(KMwa5E z!d<`pp=rJ-)Q9$So{CpeySqlEy5~LvCb5PDU?61MlQ!JOeQB{t znDmLd?k$T=lI|=#|LncnQgbHxU=J4xc$o=MMg_wQqt9LIuL^n%_0-173t=VRf{(Gd z{(0R7O%nSh$zo5Q8_blO@nYdbBWBj=ce?Mng8h}}^=b;eVwAe;fuY+C%g0}uCm!2@ z3Gc_`Sc1a;MJ_l(iycycfCw|FlDdBwT|4Q+$+C382S-}`N6RSCydc@4MEm;2GmUS_ zs1ZA^p9(F?7cZ?N9Q}K0X$f+{m+7zzaD9fYLLQ-1wp@I>2YBH%{h-9HTSd(bZt=$|mQG-`H?8QORS55xb&2uqH zZzTCIED5o+7-4J?=6|(eUtq0Wzxeu0s=KWX$LEpQ6EihSvi)E;2l~RwJxDl?E8PVV z_B!SdC$Rc`a4Ryu6l5|T)F=Cqz);IKO|j>?FS=8n6weE|sl{5Ht1cbWLo2{Djerj- zGbVfL2II077=h{!;4;W~4DI3-fgK0KL6d5xJ&v^hetf&@E4CBM6EbCs^}wyq-@pq(ZW4AOW20@Sa|Iql20eau%y1;cxcQS>@t$QY*k27pK=L zJ=~6wcrdqh>F11fO)94DoFPMOuurd2^B%+y+r^Y54LHJ_n)+~BzB&P37^IY-XP@+u zPN!ny`3qT>z}D3cylOM=X#%$SWQ(%?qLlTy{*q1H~4oxd8$b?M7^^>9<`Lk z-*KZa9&!p9zJQ*ZxYQWbyFUxD@#hJBbjWd&42wy$j7s2sqQM5!k#@ii+QnE9tNxmr ziN+^I^9#O{eVla3kC~rAQAkR-0sx`mZnqXX-^0HMU2s$J&kDF&G4 zJ(HWShCb%eu8)Py{4|bi58%0`I6h9kAz}2q-BUZgaA}hv`8)FatAoG?QSJAaMDwg) zxDqcu6XO%XJR%3Ue7-Ckl!U; zzGUwrO5;7tBA0@@mQ+S_<#PX|BrSf69wk=saAzd!I#a)&<9zFBAdKzTl50+4H@ps6 zP%$7U?4?7~CBRV>h-^3FVSQVL^D7(c^s;#_Dy>PsBDABcmGGWH8((703jFUMO6o}I zF6Xk;%p$}*dPOa>?uFqYWAX7javW!~lj~9*K+A>K<<_%gm5P(Ef4q1MtG=v@oRD}e z=4)rt%TAmqW$?#7PJ42^f9=WLqhBd93re>c;1CrOlzhh8rPPLpYHL>A%%-4Fk|GFwhB81_>YXYe_Ya)gL-lgz!bmKTGFKbj_g z3$7bi$YO{6I{i5j-eFv4o4G=%zpv_Imj9Tv+co>sK}SQw$Oa zChi=A&1l<6$zaQiom|w%*SzB($>_OgAdVm%v{| zVPEPv%PkJEG%3E|QX%ygafKa`TfL%{Stx@N?q75@R4NE8HrallIbg;6T7L?~%KHls z5@><{A_d^fFRJl~mk#}_3V6TGg&QUt16Sk>^A7K6O|glArStp$a+HR2g{pTptAw_o zN$hNmpYJ7I7xq2Udn1SK<|5C1Dl#( zj?$IyU34zOaJ+GE5bmlknbRc#d0`s6@pgeiB+Pz8ac`-6DhS!-G(OG-oi0xEQaAz2 zJ!W=oemSkKUiH`BEeMKa6+VD5ZO2+6dQJ9SKksdv`(c3UoQuj@&c_el}>v{O9j5te+vMVzXnFGJKw=auv0 zMxSJJ_~xLpEW@S4+3eap|8potfjOhsr4_;W)py(s&XhNTSmnPIPNFh8=Gj$Ie5A)_ z{^-%)6O0|L8YoyrJZ=S*4fF2ABoo`j=Bj+u`*R^_>cno2J$yeF2DcjZ{R$`zp`~#Hi9|)LiDNHQ6;MpEcsHM26dNce#SxxDVT$jGQNW)!UE{IcqtZ%Q-ELlG zFA>LND{+>t5UtyDRp$X!b3a^xIU3$90JbbK65eP zNRnpiL+B@(@EYoi1y&Vri|P|Hv3ZiUWO8Po5*Uu%rPnm?Uh`QN>e{7{A5 z22xh-{L?0GM7(P`Ok8;2BGf~0Qd1LozuYH--H^N?gkI3G@cZ-G6B&6 ze{d-`1bAXF*+TD&?mJ81`E+!MjlLwJ9>(%0A8 zNppP^Bw>@C_~u%D1D(vQF3irjCEUS=4!@Q7KK%Z}c6wP*%9j@?Zf5L-b>paaJ}Z28 zP3$NjIUXPyA&kEz!vwnk5`)7v>L?R8okIF~Tx~Z2^v+<$U!osk7FASvsodEPyoM+u!3FUkBnrf9kjbf@<10xFMH?pVXNQ)K zZG5ANU*bH^o0Wfr*Ho4fLSOa?@e%XVONWbR1|8;QQ1UzSH+v}ms3b+A-}t=7Spi;Q zXMH*=?<~S?XN;=&JoS?oCs|Pa+HbVC^=H>tf4PE3?o?S8`Fit2=HcQ|SZOgu)onkq z18l~spE8aqHWGy^VPg0PGEvnMOfM(gZl@{`m2TB3nIB~8u==taO9ojczRe?74<;H@ zANVna@?SDs3aCemdo%w|?Bm)VuSI}MiYjF#e$#(yIDdfDCF61)khdUmvfXkyKgFH* z@A&oV8QjqP9}HPT2Q8jK(t9b-E5s=Osy+YkJ?p*qede%xn5{<5zW2lFjR)+sm=1WS^= zQj^&6^0#f1FA){Vf5eM}A5P7QSJhW?mOATsB^T%A^$%lD-ir^a0m8)vk8Zb_x~72D zKK@|EZAdojmNJAAf;fdEuP3k}k;OI;JP2~&#f}bLy=3~R9VmvBZL2~QcPh+zOMFLUmqj)D#wSd>EtcZ_N`WI}?P7JLtv*B2^YWfq-%Xca(DrfP^ z#$$K{QHBV7D!Uh4@D`9q@5Qty8~o$l{E3~`kgp1^()48}`{X4G@}_ixMCmuV#x#<8 zxxpZ^e^3`(m{J~Ha9-_m@5SI+`a*H|og1`UT?2mx`G_B+H6oZ48x*O>b7e1ry)d&1 zzf2e-^&m>4a{E}CPE)!$@5-?_P&OaIoM>Yn&0JXPU0VO?;lq!7;C-)0glBKOdU7Fi z_|L}I-CVTHUrzidJfG_9c3MdFsQAkMvFWQds>5j5GR&ACTMw)~seq;l%H*~tt1w+(so z8Q!HKNx`XiUPk@Wo{Px;#(lp)!M^3K7WJ!Eec7ef+6k=M=L99fGAUsC(yLDw+j`AE zT^nehy!AnE`yVP^q(gW4H3uTKN@~zaZ;R}Ef9q}PqRt`;W-#-qbj&5QxZPy(BCmF1 zvG+rxf#|J8A+?>Dcz;y2J;X}&o9sH5|}sbWu-rgmYnvzl}L z=hTqFOWf$2C#VK`A`2cQOoCUD4o2RNxSw5((!`onirbbA#~d7RiK2lh_p{4mBIL&& z3up5<(Mu|-*EEGzwW)BmJOC)#lKbB;yoXrNqLrjaEZ-ZH&P~o=6wY7t-MQ_p^DB%y zm`Rh{1Mpw&3w9TNT|dvG@qToC^w+gF*9%GezAGy5x7gvgUs-dLETHqu-Fq^zax(Jf zKf7-)QnW8C35lMiJmn(2C7Wln^hBmC+(J1T5%mETCiDq@SQ$B`xtazI2U}ZU90^9{V>KsNHi)9g3A_wfyOJW{b z`X4~-6=%j{tzh;Tfz{#ZYWrH3S4pb1bMs zm$JlI^xWZUjmxj1f;}>2oB~#A918xAq4V%(>utmM2|>)ph&^I&wKom1_ukZOQEDrS z3_pwW>e4gh#_jBFX{k=40Ul1nNM>4rI66w^! zbsHW?YV-@K_3aLs@{T1e_fmU4cjOVkPZENXgzcQ}qY^u;>}n+}$eeq@5a@kGfz(+K zy?@TBmgALMOTK7<*w{k}Z;!xrANLyDGS$zEOm}s@D08U#=02-K4k6w+KIz|n{I=gk z66?m@>51WS;}hzw%B56yiblc3F4cp z%V6A~C+`DsqA#0Ht+5^2$~FxGfRyzep(u@wmJO8SPsRpc{H`-a`hyrheJ>q&t6zEI|6=DF zu_AuGHO7W6L`FYZ^T&b!)$G0%xvdt#%P8Zdffsl<=KDE?Vt=q870{euY^CU7b7@eH zHL=Q+dS?ucvEj`K>YcFB57Gy#_5}6MT9^hu`An9vZOi2H{`ig<>>}_P65DIY?0`Bd z=DKgjeI3A5+Xx)VM61B{C88WwCivN`iQ1fN}m=};h?rk^T53G^~z zB8ToJw=DTe7IJSGdv{S(UEZ^C@m(=zjrg-7eez+&(I+Bz5fv8G~B1p$Q&}ADP9HYvP$%8R8?xE%#-#eyZGkAXkXvGuo-3h@lNH?D6eU2FngDiTmZl=Fu6+G2EH=)rIW#NuN@GXF`e^~> zYjFW`ZiKk~ovC(Ni)gmk1&7L*;r8YT(JQ)Qp`kLEhDW9#;jrLXL`gCAVpc>>!3s4U zP_SzUNd>0sjIT-+vX9!s>HaxOrIku*6p6*$_~18!cz~KLY>j*@72INao5uEs-zJUu zIuZs&pvi;?AoBrT_zz(kD?98BJE!4)ly`4wJArQJfOgc?hDWVZNDcOe?M=Go??zcq ze6zXdXtr1fpql1T$)fUV&EKl;GYSjfij_9{Kzfl7lW#5C#v>8t;qeT#{G(54cXjbf z^8y}4^(f1#R%CY5%yt}SvqU14#?StUY zsOy^aG_8%kQJ6{g(+1ho#MM`HdK zu`(Bw!|W%lV>IBDQ!eD6@^Zr{#92$nn~W=KlKV3`P*e0zaGESff=CGr&qjiBMaShyR^}Sg1&% zzD5-~{25#+##gE*_ax>bY9AERgZ3AH54>jIK zMo*#nu zG&SS7{$Pc>k%-F^4|^u!^JAVPeVJ#d?zRPqPuwlFK!4!&UJ9|AdmP-HbeP-ZF3kKb zm^vCX?eI)pZzj0!LZ6o&y{V+u#kPMY(ezoWP3R(-1Hp&=sSwEq#6v9&)}8TD@^gAHi6KRw>D0?VzbBgSU9Q!C2c=+|CxJWx#RiA@7O1ZFYV!Fm6w<-@r=R7gTm!@ z0$-&8r)1NB2+4$fvykVXYNk-qG35136FPQEQ3cd4=YHtVyGA*qn_qBftP@4;U6J+o zrgY2can3sKd^fSuB^mCYMMN%jH6stU!jtFLNHU@DvHQ&L5_aau#6pv}yXPl1e~x3d zBJ^HAMn9pc5PSrIfhMz`4=*?D5;fYRh4)NUZg2O@9zQqV4s;Op)8I#mNC7Fg>7slo z1VH_k=oO!wzbl7{zvL*A#mEwhtgo~c;@KuN%=@XvziRU%WPsbh(a}Ks$^^^{VD8NM z@95r}%?5usP#hYs{qE03+Z%i+V_7bpiL1bHl#8R4B_YbA&iP-phVEd!2l?JKE}orz zIg1$cm@zYq_f!~jl>xJEJ4XU|24xuT#)#wGPP!p$NSb5H zd>dwm5gnWd>=CvF5uD@^Ar{f7`bZvzb+COm_*98+;u-U?ik8<^vb&M>$^%A^JIuA$ zaLj3dt`^_-=yo=Rjl)k(L`huWt|e1l;td^&7$ilR5nj$ou-Hm-iz@xGe|i%>ovt|T z0V7bFmo%+|!pTPj;n_35UbuYQjHm1|JI{P;zqnc_3w2z_UQ13P#%@ZjP04)+e+0F=JI> zMt)JcLVl>PYR)fw&hO?NqEKwn8SfYN7#1fE2!L|vcglF?@B5!W$NRe|=(g<06X-Ns z1{lb0n^!FA0hY(0->+Z~fdETJnFhhQ43$(7xh#f_TO7n(Z_(TbI=QwpSt4HeRDTZc zC=3#p{b)C4CL&nqZAL?GO7RB3Ihd2hC?VxkXxvh0I$r304iMP&+yrCQ2cTv^krjUq zidHUZ5CT93p?0A~l$b&q9U~j3I6Hq|dT8-ygF;reVo+${_BSZu3#@E9|I=HZ<_A_| z1I$0KSjgc;5OzifQkszSIAcqsHPe8TRg166Z)-K@pv$p>j?YZ+0VfM5#;Grb-5d89 zo|V;5m)D7xn|o6;Xt>f_(+wFD}kK^W$g>lXI@54CINZE%vD$X{daQ)l0&D4V=;n;I)a zVe*6OIE-jYSuOoR?G2hb#z1}lZ#7JTb=20>PowL&ChB+&>iEi~h-CHfK*_7$MYOd* zm|DH$L_JCRp#G+d=G0|9G+k6eg0X8iPNDUY#>6A7iRu>@ncA(@(R$gC3l@Lz2IJNS z(}{+GFP32o4Q7L;@=HuUs4-LP^vBMvk6mf*=9fgel^53O7S0$#Jp&u>rZ)y~>cgHx zJMt?7UDBJ+(-`Y=b!eI%q&LO3HjR2yfVwNV<$OB^n`C0tAmz{lrPyl#QpQAcmITK` z1pg#H3)pRbEEfADmg!&vT{O{BbQGC?Y_wA%(u2RfLJil8N?@G#xXokD;SQ z6keo9vw?TZlRK6tI#ws@Yu8g3>$BHf?l!+|+)nS@Z|yWwL-nu&Ax_$TXW_Fj^=<9ekJdvDVAX_$E*nRh2DGiAmdpqmo%UN+^c|Y zl9W2*BnOgA2a*rjF>tnOuV%eb@07!V9NNJ=4Z-1^XZiOAOELz_BpG@0+sY3IYiOUB zm{M3=LtwkxL3ITO{#+%BlH{rd+5xPn7ftm>{4Ba%C#G+H-g{$O?+3`f`E`90K77-i z_vY{4H{@mnipdJ@00MP8VbVl~6qf_KmeZw%dR!>7^7Cp3P5)>NaZL_orAuQfa-b_i zf@Z^^5DQOXapAX0bVMDLW_^Xg z6FnOT!QZC0q==@IM5aKBn>y$j`9AGTf_c!0<4WxfJ;2kCs|&`2qAncb}%MbV9!nvCALPU;C7OPzca zWHxp`b1ds<>?oFko*?smHYp+w)ttjF{ZQ7G;#6j4n;h0-cq>@*cRm68Q9mk4;Uk0tV^&Hxa=CbeX-^e+e~3yr*lK=+dmE0Vb(si|rAO zTmIuN&ZNnkj+&nwC(Lvn5`x}0Pkva<)c1F+;8-d5e!_g}$brU5FV3Q})zz~723)1{ z-gr`U>WKj%OJ&S@7^(9SrCq6_!w>(Xn+_tMDk1Bq!9=d+WwaJd8TC$adl?Ft(j3?~ z(Do?Aw?hZqIJ8Y^^d?v=btaN0TkDvB46bS6;Mv;>(=v9`SMSs>VR{UN6ua7D*qIn@ zFbDl{f$(59Y-S`;Z3abc-9(Ev;ER2pbC;$5ibdLC;&=S4`SIt~r09PlQwa;R1OsNd z*@-?~-r{bYshAt+6kzDadB6Iw2Fa!wtmzU7o6rZOpMv9s09d(iL$?FyniuM+%D6Gw zNOE~%c|CAyE-mgJC}~bZC7ng1AbceU;F|s1-H>7dOuiE#DF0tgbTbkq4;U51dUme# zvciE(`dQ{7!z$W^$H7YzOmkqZND;3EZn=VIDS#AvxBFSd=oltEVAM9F6!L8OvnU_? z?6XPMC4W(1CVpu&YXu>&@XTOg_;L0o#f)6axPzDBVLQ)3&y*jm!H^c9OOIx9b)dAe zC|V89nG7f z!8*(b`>|`X*U^V{dR~tA(u}qrtn8&3o2iCRHCG)NHNa1JM&2geeZO(>pK3fYgtULO z(9r$Sd0ryoa9#RjGizfliT-O86>vK}E+K1UdLCASO3IC{GgRIVUy2KlFI;Q54reu| z+0WdP50V`EZ_|=tM|N%C`>Q+5CmC^b1$J`F{Z*LB1c3(I;Eq{q1??Vygt4^#Oj|dc zxZh-bvK!LL2IXaBVo+cq^{H3GF0*{s^=GJjbq8DhsxsnO6TUG}Ke&n2;#TwZr~Q_7 zvd7JclCUvf*p|92@A#D?k=KL^Nr8dNzx&GAqhS1C`@&C$-!>s_YK&~?Th7!$2k)Y- z%$B{!H^;;P(c*8r3orqia0U+1isU%ISG~2fI}5C7BIntvf8KR=9vw-4%bq8#MDsH4 zzXWPB*JDnS)5V!|E-L5a9zmV(Z(lPvCp9eOqbfm_hO5WXYJ} zgx{t=4e<-e+l|c(%<;Ibz?>`8hs&EE8Bsr8u{@m4uZcNx-zc#x5V$Gm=(e1a;LO|HTZ$wKmCwVfo7*KC`PsJ|5i}2`fjqnH=x!=^g>Q0 zp7XT)D2JB~0wd!rat56w-^JM-(^5IVsRri=FA$&xa&j&;zB^^cK>sf&l#vBf17UIb zqec*%t)zhPPN#+XTU0l6{+ld^Hd#vriXpwk}#Xc-BtG(Bz!SOiTycKveV{xbIG z$i56I3LLUVsQ zg$(b#@+q?AFq<}!L9yx_(4|!8qx1d29HmQfiw$AdQII~|*T?tA*AxnJLDW9BZ1PzB z6EzYDMAXNSKc+j{7|9X+IL++Ix6}4%uu``$?&@skW7A)lBys@5JuICrhyIS6pGZRi zIdPxFpKk+uA8Sd^!c9Eki{ascb;61H6a1ivO>(t?&)BvOjFh;HDEXeknI4O+9b*H# z)i9>s6!7sG`HjE`GH`3v%_vyke`!7XLQf}TG$lS$u&?|MKu04`5&2{M>}WZyjuEtw zTL+GCnHFe`ToObqs4h*Y+Hiu`2T(~@)5d7bku92E^4dL7C!)P=)zr^B0R^B`^<?jIR3@8JEj%h5wM2mfQ;_yxpalXqW)~ zS^4E#XiI6%!fM6jFK|oN9yNF~($eO^ZqbsK_$PSk1xxqCFxEK#dfLDu{<~3e5p}Ax zuOXh=%m+$MIRfBX->O2BF^68#=kaaa0g?GA>D_1JH~uZv%G=mh^u7K1t>T9#6F>w` zfRFIFqO;s~AohD^qy^^g3*{oV**IGWXXrbwn|6vQ#@0~t22gH329?|jb*RgXT7uO{ zd^;i;1+_=oj@`SiToIyVTsF$<6HyX9TMS=FocwJOx}U<<9)_&EC?Hfo3S(?l-##e) zL*k0X%S5qt5x)s5hK-j#BgOs9_AvV33TssW$Rjvq>N+S98g-|j>7}-s?Sp2ejHuzC zwTRPpcJvw7rn)Eym8j7iP^EVQcaC#HUg{~^ps}7Y>U@{nSBPNhPI{JDa!W?Qb^Jw(N8hvef;h8hxdQaEr(N*yB_>vkO~g=--vd_5KC z=FQ+gt#f0_vlOE!kQ8F|S=V3)qN2A!scw|SJ)pp3D2vj~umWdtJ-r$+{MnomN{ZnZ z-9|rp0rO1>Ma=5R@TV%C5|V;K`OV@YDS4*}Np}GOJ#`%_rS@E^fZDe(=1po&5heyB zZajA!B8hj_6AQ)=*>(VSrTDOnU^^qakGV0}ntc6M^o|#LXANvj2K}HS z`DqM_Wd%(@Hijl^H4BI`3Z!!6%cogS4{>wE=9=8^xq()z7vTs)CL^qA)K5X2>%a%x zbZF+XkWXImg2AoYAC#7!NKPIBqUsu)CfJiG#;ThtJSCeXDx@#e;F-kUjiA(wsnd}e zqO_ZWQ(1c^@$<)6eY|Mnr`@jEquW%bC__;Lp$cQXcqJf})7SUb2B}o{q(nW(>{ygT z3;!-rK$g6m1q1IMkY;#}lF&?$ zE%E0t@kg855b9b=yoNUE!c#6wee)wqB}_h}q3usoDa+ExOgy`DZ}p3{`Lm~?=$6hM z2#^%GZSW>y0iDmyLJXCFHhR4Oh^srM$;-2#) zo!$#$bDi6?;b|{l*;80Lomi~CU^|u;deB17r3V5apUqkLx%^g(XviSqPb~Ng$W3)> zX&A+g@%(&0ne^@y6;kF8)5uT|h_jb+%RAs!g8b@3t$!O=d&(4=wGfmLS|s0`o<1reXAldmE<()YCA?1|)OzioTbt1wqjBD1Fs-#T3m_mm6NEdL`@E zy~P)Aopfo(?u#nT0PChN8y~#VI;SFBU<6b>hA?tuG*g`RG$H11U9*CqTyA$L6q=6{VG<=hk!1R$5r&W@MskE=f8VUK%96O6N>DKRv z-s0zfG%y%v55Hslopmcj%U(w+;UblfxTPIz*~y&0eUi>8e82RM-+Jg+$|E9$`?CXt z2Ysojtao2O<;a-hwbIEFO?i1o(=7f&ZW8FPXrBTX%IKL$?BrILbJ?3|eWNC3Uq6Ng zS$B(<3U7{5V`gSrSc-JM+^4`4el=ebk^>#8`1!j5jjOV?y38gH(ckxf%SCz8 z`*Re9`tPIrA3xe&Cj(aQeM(R--QF~b`iG<PSBdvQ2q#BCTHcI03#T*7IsKg}wL`uA@ z*JV5sOu~Z+XlWD1^!kaFSXP#B+;Pivs!9 z=%klE81lC&g@~?(B?1efaXX?+I~H7rq*i{UWjKi+b%mJ9Y7Ibv{taFxXNX8MN_o;1 zy&y<|XwH}Ifm{t1-y>I^B;`R&(dCmqXiM@bD)bdjf>YEX-i4~44XpSNiyrBPVy1g#cPSs4$a+lqyKxW}?VE z)L7kWH}GlQ99P2{acB5Ipk^QiADJiNYN>k_N{aXfZ;j7UkLgb@vh=;4UljoVFg{*Y-A-EYr|hN3gQBSrA`uhs2d8 z4dFTstTEjFH&HcUHm*m5>WXq!I(V2y+H)FeLowbAJ$%anp+I(sd0nbX4zVzWg zilnyWtI=ZPB)vY9Lb#mol7Jko8JGt$mWG!=b6#)AHw_SNPoPBLnr=(>zZqr`C!hfi zfSs@(_UTMx&@l>tXv_%M+#05piP5CK6OVU@>o1b!E~+&zB$#~I6mnLW#Efb16>5-B zL6D&#lU=e*^+K~kh}AZeWv=Y#CrwD0UVe4`SRE(6G43OFTI;b8gmHN`Gj!-QW zC^=Ui2DiN~dlD)k-+D??_g+;QL!5oyz3%y-yfu~$m1EU}7!p9-V<7HRVaYA)2XwPi z!G(I~W{-$67c2PDAhQ&_WePBiyF!h=M#|hAc?}3t9Nja==k~%pLE&!JHY8z+PCHud zF{>;f8L>{zqLt?$++tH@@3Km(Z_l0HJzPLA^T<=f0-so*AHPUJ!d7fSs~ySBLuan| z+h(BiNDHJe#Q7m8xm%tLmi9WE5HP|SbsP}!ME==SL??|R#69XplBc=wxuTq}UDqZ= zNQ>G?tM6;2U12xq*1gYvk<>%-cxCA>f3jg~B?t`sMR|SBg?`e=&ABAOxzrExRWl8? z@HrVF<3pbo7yGW5c^-w3f{12-#@LreV=VU0=Tc6`s)Z=z+mNJXa>x4QOwrJHMPm-B zS0e`jd7(XuJl1yY{|u!yA+YT)+3YV^oIsqpWa{0E#2#C0b8U_A)N%J0*(QAu+G z-T6cQ6*Ek_62$Qj-c{*K>bici|NIG4&pkh+rY)qb9b#)jjuJn;_LX5OrHEDiT)%@> zl8h?z1u2HkYG1DQ-<8Ir+P~~B%CN0tl$@4IqlmT%?u%9KE>*2)Km590S_L=t+gJn7 zpNsC&`1h~+k|^B9!|}MsPsB3jF=A61f}gXRIbhQcuXNMI+3_$TiuBLVZgZO-xw=4! zvpLtTA!Hg1HHPuKj`!M;CtSID2eaf4d`U4{Fx?XRVMf9%9xc2*!=oBJlGmM3FP&sY z6em`0jZ%1~qQN|PwaH+JvDQ)n!hIGipRf7+rxG3|sN2Oi_&DgD%`Fmx4TWRjY-K=X7xoX5Fv;3GZ;*LgTBsq6)H zMOhhU`x+O&>U;POU)rjE0#W_xUWoUyVCvx_IlWO~-?6S97U$kkn*XY6;PK%JqOjH> z2|CIS_mgPYaY;;C6*eymgP021zKu#n`~>~uoiygn!#cW| zfS)GXr=E^o3hvm>?^;Kv1WocxbJ!?pBnz?=iI+;8iwWA9^1G7-aefvIF>`=;7Hx36 zc2`ev@{Pi0ILQC{;GN8iPfXM(y!uv3=g)mGm2qVlnhmksyFQ#1O*{Ro+^1xcztS1K>B#H;#a$r zh;Z^|+4u;ncG)TTkp{KKf1S(1@=nFe1x|r@|AUl)xh!q`9cg#W)8{!?ftJh^8`=>0 zhj}>2*ChN_^ptP-e{RWQyYCICe_gRXz4pNb)ayLj#9p?nlY&{szBGntU{ zYOc!1cnh)W9G(f5l^ywmAM9haRO1{M~CTpw(+aXzKQD^t8;r8(^A z8E#stgcq{gf08U4n2HMhh&vrf5W$b9m}O?IBLjWpnZr)1U9)QkSF}S2Et<+Y;UXd7 z35#J7iTE;J!;*zsMH?=Yuben*+9Ft}ZP!NWc&_!Ok3^88*rt@Xf zezmJ`EpD3qR2oH!>0{$A<*;qbl)N%jG<=J`R zOg1^)j&!8y4F#lj+R$}iE##8R>1{bKP?WFyzt|R^+tGI%i;mhMqK|^>!@WkP!rzHN zL~Sujje`lLo#OJR6_6kn+P0St0k!#?@^GxnH=h|y-D3=;fSHp?#r@~fF!F$Ii|E6AW z0$i50OLxBUQ2a?F^|Hq`SjGu>VPeL8lVwNk7^sOU-#xX0gZ_-N?165oKh87#Qrh6> z*t^rrhu5#}Yy9sE=Sxs@J-LlIFYEM!EY%n5b&aEY7^Q~W1+h;8M3M{4K@#C_^i91o zW6WUd7*u#1PK}_-YyS3qK2`;hG^d@$AWESI_uH-qxq4jvr)cy17lwEJyij3Qsg~RT zkyK~Frjjnj3g=&yf0I#yfARt(o-3^8irK&KAX|Y|F-qzYbh5!;;bPRumG20SfX4PP z)t5L<97u5?fp?*E2Mgwl!S2^2Dw#hXtxbH4Dm*`Apu^z@V7X*!{y615OlSCgBe-9= z54r2wU8Q6aMr=UD(34#4JmK+8PRfk#zh6-#(HyC%C^TF+6t07@wt@Rvhw{HoVW3Ud zE!CwQQe~QfzT`if9Zq7pg)Q6&;1|sm5uT6PGaNC-NpSzng*>XOD26*D;;ubdI+iG@ zpvKa-(=(%GU@ZZ=PgaF=wM>srGbf$>a&=q_ep>%pHxo{We?rq4M$4(~zyHj)y8C)n)Bqvd`N9dUJ&F z!lE;tq;|eLRfEitNl^cJFyH0#vGY~51J2`i#-B8+^9U;@afW_8bPJIMQIqj~%ehTw zL1#+(?*z(}mE-0tt7~Eg;TW0bmH~FKf**g@Eg8qhUe5S~U!CRgF<^9yjHOWhPgc;% zgVU)Nf$h0u_gw4bOpvwz!PqS`#qKb<1k3@Bsq}S><=hREMU|qOgt-)p;6hbCUF!j- zTxSSue%ebzhe^<=NgBLuEIAEI^QHao?291{?1IsowoH_IX!^ueGjUsHi^llxh_?pytzI@KCsD+Y1OGD4q`sHTJtV)$0!-pH%uD00i-E5utGsTG1j71_i^u9%H#%v$EmtGpyS;Y1-8q=FIA zK*z;IaTb}m0JQ7LT-8cNhH zLaD_|f}E}VJVg4ZUAFc8cY9ST_s9ppMXU~Y)rV$kj8(u3%^y^@Diwn4{_Tr~tCREe zPa~P#`)3RVgW0&4uG3uF+*cphwocW`l8tibQq=zi?%qXLgV!Dbh3m7ucHwdaRjZ&AE2j{3f~mojvRNzFX( zKUY2|eM!#u^7Jk9?U!ex-{uh?L7LslKRzP)UR`{$eZy_dR2JyS$<(p_??Sd4sy$9I ze#Xc>_o(LepToYdum94Yoe{{WW!KTLwKp|yNPo}2{;xV*bAwv@%H4e$N)UwvBp6xi zkWtU3zJ&WyRGspnC?x%dXuV~VI9K3Q8hb-Gu-z)z)3kK;1WIM2AuXmwYltgpZ{h{ilS9CxeK zLAV;$T!m^Fsz2HOl$p6+7ubRlDo-oL^d-{`M5GWPj$}bGI)Wu?-meZthN~^_Miv0E}F)BP>ou88;L>(a)UyD^4GEhw~Pb(sQ!%u(LG=X z(1yc$Y-E`=e|A{8IIN4asnL{2%8Rz*mIS<*=D`zl+pKc~tgfAM?BlyeNi=8?S*q?4 z&|w{?YbA-?>RaPT7}gzX;#@)DUHzztMr{3{$!GItyQZ8pU?TxDZFT@sR;5E8W@uVn zp{V-?&ZK}fF&7|LS-Cb84Pxj9xA^Mzy)*6%Z+O3ml->ZY0evnNf)1}<@7BG;1U~|L zuF+DS<(eBvP@I9slDTq|dYKdemMGey`SR?~>P?g>mD|>KNsmSF)&me6eYloFQ(Sfb z&YS0N$~eCbcIi}wc`vC$e$h3YDrLu`cy#Rn^rcd+^pw@#dz;LU*zf*N+5&wK>89e% z4lu-I3*-Mbv7Wzs{)ar-PifL+jO6Y3C8Da1eu2kb5WLdQx0xjDuSaU&RcGAC`arUhe!a>$>k^ z{J=-!d&4zQDCEnOT8zm&b-AP_7o19czPDNlUQ7VMEa*hD+H(W|dVl+G3+Q3X zN2ZOzZ@JbiUk{TpT$}D$2u*Z#!p!$SphYHWSk5|e7GyffR6?~Y=I}N06yX6|inSIG*&~v&6xwWWdahbDt0EJVX2_*HsU317brSo)6hf$45LQ?pzIpso z!c23`=nfvX{vp)nlz)cOXz+II?9OJln`jaPq7KMAPkZob1Aw4I+ddp_m%dyRzx^92 z|6IQ;^YI(vcaJQJ`zELN*Vz5Q^V91*kB?A<$og$0ixVjgQ(l8F2Yz_* zS+MM6t%HPs4IN$`$i`O+4|XgcdC(%#v#w@x-9ph5^@|?oZ(k86SU6JMHV3}2DPX>NQvH!hp~P0d?fLDpM_^d0`V3Lgb+P-1WMvw~^facl?+ zK(Jqd>G__)&8%bM1?X!Hq7rH6%3?B7y}|G9(I!g03nz^ zG2$fU5wI&x=5`@-IdFm!S_-4f+&mAUN^NQX)VsizdBKlw9MmGAexv%#HP#@$BOT^} z&Hg-HE>1Lpu}oD)PsGUqSg?dUT@wv$`;WP8SzV>~H<83IVX8yCP8c&%+9D5|opO0i z|5lX~)@pdxi6jURd69Np>?Z~u7CTx8w`Z!DEzDQR?Ld5)%Qa35i~1FS6lw?t=)%N4 z`e=id<_-2gY~2YLk%*nQ9ID}9PPLh?wbFh z&SD@6s*CH4xtFdvUn-^NmwUMbVx-dF)WY{$#IsqDnl%@5;>gNfWT992QZi}LGllb@ zP9ndO9#Q8FK?N8jS4!_8oWv~6M1)O7cM?ixvw(a@Y{MqIk4&1C{N4j>)mdfA**nUK`q&U9y zIoWFOL}1^YJH7K1od)7v$E3x=*m+(VT;+%LTFgBi?k_zI<Gc8C6NMpqnNvt=wWcJl(eV;OZ{~@opf^84lJAPd3S5|c>VG)w0d=o)-|56=w zw22kV5I?-DMx4>_%5&KXA_fl%&{R4|PBjLH$JCPg~=lvhQGx*ZaE@;!sIL+GUUb z{*3>ZFLN%>PTm-*b5vF~Y=C1uWw8z8QoF{P7|zLr;!kiV^^#u#Q^5sf3xVRzq>uu2 z9p;7}&R;&9O+BQB{|+b(PnN@55m&Y3{b9W4KAbPUP0F`iodi=quxGwOq+uhXW_Sp^ zeP;q)VR|;4C;7S_^-}a*M_cl^tnya4pl!E#8`Mz$wmg-9faeI?SsX5`?Ybuv;%&k800BNf81cuD=cacDcnDa>zxafugSl;T|G}5E*sQd zHbImAcS)bayDvzOgXJ9e-}An(^-Vzyy~5u&i6)0ZM`hca;kuHFOi}CCl+t;5J*%D& z`lK-A(NL^72_bQgV}_%zORUCpxl;#OVA`MdPRs7Fk6rHCSApZV`Pe|z__@W)>e&f7 zxNV5~S7&l|#K0LY5*GC5{;~S9zSXL%`1Y1X!_k$43$iqXyka{@^XrFdILJx~gy@gB zx(iJTdFS14z=rz@`-wbNKyG&piiGIhQu$0{*BlqlXa$3592y{dUAKJ7UDR^L+n!nRW@Q=(ppKl;M(w6mX~c z-!iyJYKbuZ#aqL@cA;O-Nz_kms9=n?Az05m9`=QytVPl6zH8fq1wdu~ud) z!m_UQHeh2=47ie%&*?AY?D%De0TCWJsYEMhtxpB4_y2YW(ENM^mG}yG+W8;%+M{*+ z+wJ;AcK30SXHP!1K9Kjh)D=RYo-KrRSm;FBRjc=#v$chV{xY6ALpHPp5%wc)5vfdn z-d|Vt>H3MptDq|7cq>z$;uKWleno_B-{lUJPN2V#=PC-Ka|t-t>tB2t$sC(UZi(S1 zECKaa8sIRU-XyM~Prlf!GJkO6RBpj=d2AVyU0J{LdbHzssrgP0R~J>UgM&QC_`eiV zynrg^?>GovCT!-Q$c7^Y$o;_fQQwqvZeU2eabB~xhFUOKj(Ak9D6N;-A*yXXB*(Gx z&*F!-tzyBK*eDMX<98{MUa@vl%2B>g(nEeLdi=IvQC}ALlPMTh!=%Uc!;}9JJoj1U z+VQ>CH|G}po|T-xJGRu%#&|$u-0-6zCb8;T7s-FZ=tT+ibKU`v7$T1vNZ1E^W;EJ~ z)p>*u%Ax*u;`N4w<#1raeTWH;==a-)5tbz_SLRyc4hs407?izFFv`vjA%@{H)M;bH?K->Vr`-h!mJCEoWyh)!Q}n*R1yi&!&?Wn3L0fMb|G#Vts2!kYw!L zvZx{-I0qidPrKgXW$*3qafqy-_#(7%5R1t7E0z(n-i{<71Y&s^L zk^@W=7@&j(m87u-ZO-Q3S(U!4?CcI$eVhcboM6;s37CG>>!zfW*(t)i(w>tW0w*BI zzchfER$j{%oD_V8aiUN1J8#$ApwWg-GjJ?;G;*2q-Z!{8Un&fO|LKB!u9wDYJA`~e9kI0!vWHQ%e9AU9{%Nt>Jk7sTU>{GC)W&lk7)ZXm5HHZGZ1y&OTr7qkXVsw&t5vv#%@P($2!x_Z1Z)nx^ZsXM zBc;VmW=Ye|g|`;94CH9h+Q~=ZVpcSp9q-JPRtr)8r|2xan)?4Rem4eeqsC|?wo#*$ z77>u{7+s2hG>CvS$i}FR?gr@=DG3FIkrGO$BBf%WU;^sCKYr)jKj5Bo@A;hP{r)`9 z>sd5Y`^Ub7)8)@!vNToWSmp%rLoJ#^FeH|0f!hkp^_(aYf%};-6jUikQ#o~iO{h_; z{b1&iExV?y9|{CrHn;|C^EN90xr3aW{*PW4Yz7Se<9ro3#?K`o3Q-PMN`E)1*kZCk zL(rDwdL7TA-mV&e3cltDD126j3oBj2yI$uYECw#%HmYOO7n;@Hy}iXESyagekbcZg zjZDm4|4gW^PXDo+r7KXppJS@d^ES`MncClcgUQ{#$|N?FWskm~o#!1XX*u09=k$7| zjfN=yqziXxdn7E&t9tjH2%IMSMr+cFiD*G-vm3d!(A%a)t=pNnQp}6RdbP~r)h`@& zFFThW_Pmb0T0IQ6+>Wc^A~6v%tX`egg8QCw=Y@lyE^#6yf!lTfN^;#Yy^hmdz0WD{ z0^lz4jPLu5;+wMXFVz0y!{V^3ri4zz{mn{%S4M4L1F||pcy{SUM5Wuql8s7GNfv)d z8~6+V$#$Y(#mR2^HFe#mM`o|_abEhh7!ZWHNB~6lG0b`YodJHsU7hdb>1it;DfWy8 z>Fq+U&Ypm?AMr!O{++zNf1i4GNPQ-FXj0@dE&Lho#gEtT7^Okt2q}!)0HX`|D|k(V zUL8SX&D(~E+iNm7BjS0Mw&|{{X|lv3642~BP(ynywhBa|xb+U)0kl>a$qiS<7c(qy za5rATL1EGNyAn9u@^$4aSkry1_ZXVmc|q1pA+~|Wz)}MTP6`Ez{Jd`Rt5BadgjFwj zc=8B(pnnbm$&8fRhot%ra6H}dq^lDGu7j?3U4+i%ZcDGe=T zev|cE36IH!xFal8*VKMUDh~fnd_%lZGRE<`IUf$O>G9E`(_xc_U1oZ6XB3&*aorrj zX=JO;Rx+RG32m{-lDRl)I9hvwgHt^JX8D3{zby1`bB+m7Su*4+9FX!$cpP!4Yr1z! z_~cxUzWw8@UAQ4*i|*c7L3h=})v zyIfso8$$%oTEAWt--SS9!XP%t{_$)*0YwWacubEieg5Jy9qc)}=@%8r(YK<*K74E6^u$w)RXDz$6Y=hWkW4i|^!~qkQWTqG8WYo!@c*oQ9 zTdnww4>lLqF`h}d!4ra)C1U2O)~V<2$6cRc5JL@87yU-3%XtbycH~w?h3O{;I-~Ny=Zp`_ufM=b9{6XyeUWgdgBgB*G!>(Je{|71 zW%luXVgLp=d>PqDWyl17&a>4$QW904nRbOPUe>NuK|qwzZtsHoToX)Q z_dhbQh|W5jfQc>@&s`odMi+tH%{mx`(k_A`fYQdSzV2U34aR-M-0`H|z)J~l43A|d zJ~)RzxzK@n@`e0Fz;taue?LQzi1TNjYYt_qZL6*P3Is4fGaO$leOEG|7E0sMeYA%A zcKZ;xShS5$Fb!&3+2Q1B`GVEm#Uis2TPS5)SC}Y5wV<6`=XkYM`b$_hFnsmjm&iLK z&$v9AFkInUij;5(eaMrey~W$dp{L6ibQ;qykdDY1eqiQ3VQ~J{tztIZ$7(-p^OBn?=EZ2iqx7H`9fS#IE>uRa^od&<~b4eK%u@* zLIEkpU;T!YXx5&E zKA3Jwa`UBJqW?6<{PpOrFaitp1P-#WNh2c4J8&8XS4+JjEx0Z#v6JK<5!YKC)#n*D`bT$-ZU)`Rt;*=x39!u@veNj?*if z^XhxnXbK~(3j@cyvQ~F`!=2DyxB4LSBF!&gFd}4nPqoPSrMDK4y<4Dap{FE^EoeS! z#Bh&|JT|g`zPW=A@HvnhVdBC#8UPtMhd^u=_KSr)GUI}w)>O(KOc5i$^@aVx zSFBqW|23qr_BXe`^V6zQ0&hDUz{gx~-U20+u(EBD8%WVxoiI)v*3=GI5RoP~n;j#| z2&+bN5${Cckzy1{tHzFI(NVM@QpI~g+{;pbiNyqKnalnKBeGkiAV*s|k6l0j*5<+^ zmQoYntX~}qsb4w=3w-_dR!Hk&K&vixK<)u&H44qbBf^4G)IxdfdSz9klG}8UYtWxmaYb=720{$5M!sMvh~5`7aK0kcxdXcNwOkD9@%kVx?M06y9UFV{$A8>|7ys z;?cZTLIqPl-&tVmjf767Sid6S9#$AEt5|b8woT@u*jLG{1(A~^AcgI8s#VNZSCW>g zuyH~2bG8WeT>)?2Q-JN#O&@ieK-H^D+Se4YQ(ek0zGGLUm^X9({(!iux5_HzN}u=D zC>&Za0)}#~4?YK<$yxJ?Wh*IGqs*7Y@aoi;44cR^It8(y91%nwTFx~RjPlnL7jszx z9?x9iag*f%-<%2ZZDtcz?lur+!yeITYv!3uv#VaVLZ573iP+WO$YU?6O;yIJ$O?rE z?7tky)6cHSIA}QzPKI9}K{leeZ?atzler|~cIh!Vr>HtDkLY1s zcALS3DPUr0Md?scJu@Np=Af($I5)w~x@$`{jTUr?{l80bjI4%9<8~ZGGl^U@ME^1e zMTvIX#&E~totz|8L30pp+K(T>P@RJ$rQr_wifz~c3ByMcnKGe_8la-O%XW&Ba2u@i zq40-LRNs;r~kYi)Q|pMGJWz30}%$Kk_f z7xdN4=UIVW;PK@i7Cgdmn5wL5a)nMui*Z*Yim1{`bG3WKdVS?q^epJ7Jf<^LE#Pab zkrH;RHTZM!uULK@COclY3Gn;f!_v+wX=v?}7YzDbD`8+ym>77Q(j5q*P7 zS0f`cbHl5V#d5$^~$1wi*` zy)D`A7K(T(7(@ zn0y3w$i=FU6Y=3i$+}dAP${j%k+)vNcio-|ughI!naPqR(hSf_2nT1^4M7PkbVxC zBG1=9Hm9GZ+jwtCKZR>O&wSm4zLCI;jpKyo-{dK{NT;R7}aEGVxu0vsXabfg& zA)cow-k~VDxF~hKD3hl+*P*zuxVUt^_&!fbjYG*J-&B>pq;b-VdWX_phwPT2^xEGE z1*q)v^WPm-4N&)2|3iwC#x7+ew-fq#D)!dD6#eLJ<%zGf#@gRWDy1-LpQ=4)DSzuw zNw0GK97LUB==2POV2&!->ev0zQnb=9p?(L|S)4HQoIJgbYS(HnQ;=~JN`N`m>Yuq4 zz;y$}i8uF^wW1^oq$=eN?vu_<{RQK@;vi1^HmJ{MUv8d|pIVFOZS+cjC!Lv>Qfkfj z3xrj4ZKHJbk^}VX;iQdfC&&|Il&Jp;wT7A%TwC6ljmK|dWV~bR#F`>}&zq;9lr?eJhI*b$cx&H(x9(0&SKW^2U4-9xa zMM33Rq1EqndSs#U&bsb8^=8WI>t1-k;q<_(w&T*l4OFSFe{OxDR?KugD!r76Lr&(R zM{h&vW68JeiEiBw++%nvo$MZhkS=&wn@@+lN1rtIk)N>RS(G>@b1d(PBwp((c~>Qw z0%P9DYPs<29uJ~`076s(NR7C5dIV?UP`Tkd*Y)V`W%lt{(fBQYz$9kvG)fc8VcMP1Tny3i&h$1Hq@Yk2r~g88)1EKj8Z7g&0r#QIKYVXJ6QUxYT%uHb-+W27%j71fH$$pyR~zD;kjpFhGrE?Ea8ROpjpov<{-^YYu3kH>wDN| zP%y9IpBXXbcFlXgr+`1GvOh0s$_q}10%nVGXRk04Rxjx_nqu*Pq@>*_9N=9l9XJ}t zJ0E`)odyPru<8@5)YgEwgjUhVB2kuTOw>I(D7_i10=W_O?a#_yZ zH={y?hb}EJqMMM`DriXYTi>LAZiWzMt%h6tBrQ!5bNSN6z-Y?rT&E3VYM$iR-Wjh* zYqm`mH`JeUMLK*rT26f#|7g_cy`&Mgsn<&;2|7 zs1?PGspAT8dCnNC5YKM5yvauO{puc>_ZQ_Ry(?=kpVGQZ!0fS9xA@5``Nm#(uZV?+ zb@|Tjzo!-)eg^H<27d}g1Jfd<1Q%rGSDH7c%+n(RE_nS`jrt?Kd1)#4Wx$;+(u z|9*){4dZ{@us4O#GY1w|;3n!l6M#e>h`S=jt zHP3Ug(vBtevL4z62pZUAU(hZxHChzBaRP{1>PWDaR=Nkv04QoaU27gYRAR@FOvh1c zZSS#5lNuwcq!FpxU;wrbV;;zP?#|X?)!?btC@U?lVY{p3idv`yIs(W7?z^0B6Y(); z@5&519_E7RB=F_GL;jV&Y<#F$cb%a~EP!NF zX7K(&d*v|bLZ-^AqNa<4Qcji#c5IjT;cQ%(c_`C%^Oy)*)2Qv8pkJRmIhpuWT`Zps zL$poVH2^czyAtaFX_=g0PFWeG9k^$r(&^~%ZBZEABYb`VO~U%JMo`jeSQZVL>U!Sg zon#@Ks~OYrZZ}nC9J`mMu;RU!uKccXFGKa$!Ct1uH~S$?$acfpZTkMp%UN_BfeR^g z{j>%gas2)I9LCa@SqT@=K67AFdFWgM4JZ^5x{R(AC3C`lXN$DaR=Rpg@-HEcK4)J+ zB)w@m4}TYtOs%)|+`t-uQ6jG}yW1qXr~v=4cxkyv%rpu?LvrxSibMW2PE*}lSO!2G&p!eZr=>>q||C+iM9=zc<+GylH41LM-OVu*9_q0oKW@5JF%_LN%#W-*GHl>Y5O-tV;Q2hp?bUib&KLgq zcmkCy^=(r8_(~4g#QFng=XRY!K(v?*pNL-t^W*G5a3usTXstST?ukSVZS{zc!C; znlHMogXb`}V86%oIjnKRIy95w8-*k~ai1dcc24WbZrbH9Cwp1?7f<)|?uUgY(q<5J44&p}I%};I%VyGeap4$!J(=ycAO5T=<-wL~|AE@Qg{PvkucfG;3{L$lMhCj6 zGU8oU~JN$s>9qZq(lO9yud%K-{iF&eMc!zp=(D2_H z$LCNi&>|Mf%;zXdezD;~SI3n7p;6oV$G44*@~W(!0gykl{G}(0hs@x{^ay&T3$A#| zPZf8ds~AQ|;MrPcju>b(gvIkmRcIa269W0^B5a%(e{$Z{1QevLYqe*3fg#18>qkk- zGgZvtlOqCW?Fx1-8r#qsxlPpx4}He+E^p3}^rNq837Q%-1#=JyYfYQB=q$H_uq-f& z8DOf-Jv1RcDdB?;gk)1zIuP zI&7+@8F#3X-Y9oxfsbY#=kbcc_+(m=4~$RAN^Tky^{wo{q(No%`HQf}U9v+o8bV*%%@xxk#$?dw~_{ws3Q{9mAyTY1?Fz> zK=ujHRqV$lgA$uL4dJ)(IW4j$8@JrDR!iau7iEPL8l9+~SgVm%1f~E>Fk^5TxT9i) zx-`P<#-1|XtsDm!h-iR5|9nxe^0Nt--fZ2V(sE}d1jR+pL z+DcMW=_K%3ms0I()Yv>AqQiK)5Eo&UI%67Z63tqYk#kPN?|Al`#X(yN z>5HbR?1!zQ76;)$kurLwkiH97F1k8RZ_`~p8AfEtymc-B)P{YoSvi!uNn>7JGR3kD z9Nu2F_j;Y%_z^Ya5m4*?eC!W(ze|V@GfWL9*n@~_Yi0P029Sj9Nf$2Pn`Z|+(hHQw zVfGzE+Cz`Ptj;=`R#!4RXOU-m=JZID@n#(CzJn*9aJ=wW<<;Wnj=WeSI5ddt&9wt5Jc zkR>3u#YLG0C3jLpq%uo8__|q{+7=wOW@k^~ZRw}~pbQFv6K*ym^Z0>V;{QsVNiF2(TUhqC-f%wZ)R&08(v<=+7zHYkpfMnDH^e-*uBzQ%?uvw z8lpElB3}5rohHsg_h&HMlx_S~El$?8 zSS90tac7qMtt)PIL(Ti)MA|SimxAmuE z9Dk)OoGvDB;QfTX3|l0oO|NgI_r*_YTlC;?49+uI;xnhZ>TA>mPr-S^XmBe}$cS_Q^Qp*zT|JHI~ly&U`! z{_>9iaksJcvhynE1C!eD3N?tm_1JrHd0P9y#jKpGJLPtk^zEqt3(&>3#zvscOZbX? zu0umL1Mai9AJKp!SI~RGfP?_RC`M~w>PDs~sR4q)3>bCfT3!?s`IKkTNO3o|F_pBCT;100!a0w_mJ~()*Gs zI$iGehDQ(4N4wCP%4oBaco=iz$~-K{t_Hn@r22@I#-fzwh(O_l2t1ud!gV`ZW0_Rr zN@opyZjdsM@e$C4r8@d+ry6I)TV-SGdsD_E(k6@2rq-+<9Hg{I5PPAd$KOm}_NA>v zq^}jFZ}ch8k|G)#BO9zzhbg)pz3J~FG7gF|KCVf|%>iFdGLE=2k4Y)Um7-gUy4JY# zYg)A7kd#j+nE+2#q45VM6PQD;Qe>`jajr_Qfft802p`A;J)5jT@m34+K<(xrOo0H- z@+RhSwN!Jq4Fd44_n|?B5q?)mN7X1tWw2Ul|2J{9uBb+XxAs4%YQ2|%k-j(c5X3r= z)&yH?c2+yVZT=o4PQMKpdDq}d>KuJZZn{oA?g-=FIyaU2=g@N)kWGDoviswDf8VsB zcmp|njni$Fh7jK5H#u6|$k5Qo4KW)@TRv}Vu#&V zL>T8<#37)u2aQD~O^oBo*`kO7%=t?LPK`~qj?MLnmmI^~8ul#eH=5g2Y&@e7)pag$ zAUFq2(8CgH%j1uRCzg&hJA%wL2m>TwkAK`U9@Vc-PI`3YNPwpj%X30Ya^@fC6k@fDRZH#K3keb#M?boaZaL3}_B++K?R5Bz`6fieP0Fs!06{ZDqIOsF# zd^+siPP$ngA$avR0SMjnS~Dn+Is;GGpmwhJcKQXCu#r zSr^F`>|lM;x4N%H?wLv>~&S4BEG2Ff+V*b=wUWAR1u9&q>-W{ zfLd|!|JRP%--fx1B@(HNl9|SIAPuC?3&~G3m`9=~Ik>qjr=7bRtW6`M{Eo*d_Av%{ z+&hs+;ub;Dh7cMWD5u)JAo~zMa)%|#P%tMT2RKhDmYaap}sFQJ2!)8qV0dh;S=q(OK$3i^CcWN%R~ zFRM9T-nI4_=J}Lu$;(79B3dd(+33GoGMc;w<~(-;Nd0(;5!Uh0MzB6%`qBwvh#;`j zfsBa$Xkxhul(XJ`8u)7|Vqe2qNC@TN0u2@xg>qcRvmxQeQFj1(0}YypE9O!LXt+fd z$6Tt>XhJhM=;vIZ`V;~wN!P@ zI%Wkd1c?;+*VZNN5O;%i+#y&O&9t~P|;jcWQz!`E^%h>yd-Lzwz2*%IYhB|rUWu9TYJE%!5 z%1`^`tZ@xqTj@FIsSjnHYn2U3gA}8wFY`rcFIq$qKpC*{UkAcxD@a9H|y`mJ1z9GUDN|QBwV~&Y7n{8*_L)L z{Guf$JLL{F8D9xKSJ9ajPdl$h6V!!DVTW4RD3eltWW(emB_qnLJ>h5SJ0iQCHy916 zj2?AK4dm9&@9ApPS8FirdXAP?XH(_^GYH=&pPy9cy#8HZJ({6xwz$d%h9Ng{^olf% z)C-G#zTb>PZCs;s!9s;hvyF2}>$Mp@-G#M#SlIRiO;A|cXbHmd!~$>260e(C`S0)s z%}@doJ(_M<3uLxk&@NW3YgH}F()oLy1zzJ7pGik6U(b`i~ zp*-wm_8ltjZy)PCIfyqr&2pS*%)2~+7>84iZzQWsOnBlHbk~JKgxu%)$CNY;WIyYx zwKfk2^h;l|JXBlx`^n{fR?p(wgBimcoHFlUYhu*}JaaK060C!?dw}1^kjilIhp4>k z^@uDM<1hCFqgSBd&<8v^M`$47Q&r$}>rbp&fuQ-rem&_i zp@bg_>ZC*21ecynCx1&u~}TaS#$2Ag7 zdn~#*5iKGX^f58$^cO+_N@&qXsIe3NCHq@cULCVz6~-5N3-%?L6!B&D809yZGF3$% zUk)~$h<4KhphJK;fp&5s{-nWH)qOzIwv*x!kuuGMMH7b@E25WT?nXyal;auByj=>PH&VMW&7 z-uE2vw}{UYgI3QCd-f9cNVoiN1gfm1Ar$CPf=Vk!GUi0Vv&qzR5gw7+*T`$G>}PR; z1*77@uB82)phg1>lL6w^+CA-qD~PH{Ew3m#Sv;W+A+?4=pwkrDukuZZt#bM7FWmWQ z8(z_eXy+DUD@r}reKqK`@_NJ*XoeXb-U;GC>M8O)9=_dqlmSX0y--l=QAUiN=zpXQ z@0dWmI1mI8Y%4+ofNy?NZ*^pM$y|Nc{*n-{_tc6SGI;y5i!3sZgEFA5q^hF$I1wkV z8pk8W7!ocV_B%TfMoV4mUY8#|X)D%v*6vA^ z%=2uc{=7_dT1X!v=imlYN19@-W6go!36=pA>4zrEU3Ngcy(}={jVNzWV2leg??)(J z5dfWNf`Gfp@z7^<>0s9UyLzl=lZGb!g)z^$1+EChc_Z?%u50gdEs!LxCL**WZb>#~ zSy{laI5O=3VeKs`cXCe{S%g>azef{>&=hy;q_+jRq`K86L4GAOt`#=-m&D6v&-7hi z0_V6mC185@= zkvxL09T1yb1V|k82o^mWUknNfqt8xg^NCq6u7sCxw!r`gAH*Kdea4`?z_9x=qNcLn zZoWv)3Lzt`pQo^Z%8%!hhx?Rjz|ofaa917?=yt@1%ToL)#xAt+D?OD;Q8k_&rLvu5 zNJrJ)e3Uy`t{i{9QI^j|ixMHS_dC~IazB)gV9M!T3-@VQF-H8dzKHxQQV>)r&2jm$ zY#F0$((P~el^yFnH#nRn3Rr@i6ME!K3IgvGAav;+zth*k<}2TO2H8Xf4B6Kit04R( z6j@y>sI`fKI%n9hsPiAdB>#$Qrwi#zWPOfGla6bVEFPRjBb&ftgxE~3(y^7QyN5m$t$SqivZXVEb8HmXvuSY#Rm*e8D6?+m4!*haD0Dd9^c5PtogT^n+2ve~ao5L1r%O!Hb= zTtZXJ-8|$@+vrEa76qByO%FZ_;!+Uo(T3EXC>frDLtjLKQS;Vsl_741qbso&6K{3P zN!hd@Sa}6SO6z~yBTW6e?f>)=Bw6bpcSe2cOla0AEb@_ciwVC|RYT}3=e$-^@p z7m|%F-zl*A6?Z_YdRL0W9palI!|l|dey}E7^+)QKz<9y$eg;TU6KV96DZ##qxOUD+c!4>LNM9YC- zXmm%)IzsWP8ckqbOL&^&9|xo?0dKc)e=_poh}&cOV?aitZ{%AueKr~YxJ&rkBkhw% z8p;BHqX&VQ&LrhpS6gRh&=c-zjkE88%-FoC%Tkcf^-FTy|E3?{IS0nRVGkz}4xyr* z5{MH?SC;I$0Tp}g1G0*3D`}5Zt=_qI3^;`-DZuaXHCIatRf z6ThA38?r;-rHF#}y?&9S41dB+;^k1MMPy%#&1s75_4?w*p2*;Vre@d6G_=1t&$~b< z{)NsLP56!d5cP22{vRhT<6>DMRxk%Ef9s{O(hwhif6vnp&NM`v5kECHdW_gwf`28H zotl*2+tn0 zbenS6s}L?L*?lz;uQI_RJ44YI$pp8(Y#qKN%E?Cd@LTiwEef#+$p@{v)_{3>gJVo_;KqJdZQDy zV@8qC|@-=?E1vG=({c?)A}Iz6JnP7DY#WMJ%ee0jgPg&Kiwc) zwi3t6ci4#scQk+y3=E*~4w~$J!&jeQCmhV6ItCHW%@lY3U?;l7zNPxu^z2S~wI5US zs=pC^(p80B_avWzywg3tZS!6NW!q zEF3s|RF7XP|2V71B|GEjkEk8&^^6dm|6bfGwxfjq5<7R{%~GF?S;=dT4sThvP1<8D zvu2Ilsq5C=QF5^xPkegaZ9Ij0hI^`-xk_ZKD;9|5d)!lVdF$;{`f||Wt`{csZJM0f zZ$z*|BBH8{Ni!Iwb4M@W4P5q#+G~WqPcFMi+98>h+IKk9@Z<&cW7YLCTF;-aoMR8b z;qmeKSznT;rg(*->qQSwj!F8H^9n#Uuz^3k<8{{zLh$4A?iIo=e+S?6aKsd9c_PBR zoxq!M&=%lD8h-_q^(isjTNHZR2{81X&&RSeqqpv8>`xHB2!0ChJ02b_6{RJ-v$Gt^ z;b^;ir^dPA1?uLXEymzG0Vf|f)bCm>?D{0)-w3bVH1rB`IPwEkzC<5J`YV3sma~jM z8eGc8Iiy@G>p_%`OI6LF#;jc!+F1K8Y}Vr9bklooh5(SqhtQj@eY87I%ROMjZc6#k zdOcuB85(~DsEI}7auO^E-v1ih&WZr~b(2yhDnM>0gc!n?PG!JRz{ELYrazZ&2Tu_w zP@8v7AIzQI$_41}AF01_{HK`1T{T50tfM8_OgR7obPN`OaZs5R3r8)Md?@`1aDH(Y z<8`c7jaD)LEN@WmAl*DbE`8={u*CCy>G<y`PAHcW&qVHb7=JYd)PJKM@p-H zcn69I?XxhTgY7+topwSKPHLycn+F0DqQF3GLv%P_y9RVBO4-#(`Lez4LwfD95g(ej zX)-!cm#P3XT>ATy~cEAs& zKfCv>zVc7vnsjQe1e;NP4+5mU5^&1vXUFLC-AcCw`26zZKk6{>uo3|>e*&P5w>5~g zOaeLvMgWk+#IK%k(hgt}I(cv`u(K z__&e;R#{1-*xZVfhHA4S{sa;@6WS5A=~$Gpt|i^JkrYGD^4Jqb+VaU8Y{1LG7&p5O?Ob{QDu0mPet$$k1a3k~MO-K{fD zlc84X0ua1?<&`REq+biTnsi(%%{>$>3Fch;rmxH8(QTnGn5bZBC|1{PnNQ~fq*NfE zW8n0BS#GJyw}>LFT6BiOxN5C=trRi72uzBUp6R)rwr5BSF6}LC1*d11aghMQHMYqT z7DNvQJN_&VR+}3Vp$M;B3@wAp0|o+thIew8(;+`6ADm*xV~+ySaz|*{-I4a_y%F9k zN8&IA`myaMr66AaM1=sy zbDr36C=JVXn0KiXk7OBj}`fgf2i#B&8uq4X*iiB{3=H@;9^ zo@^b0Tr`mdNkd&d?-kv!eAP{v-oKhu4W#b)5wF+s7NE=`9++6CE}^7+I7Zc)gYI;` zsd=X<_Eb%R<+_%0(h~h3i_-4x3*R7FKbD)c0x#JHb;28X*H9fmJMp~i)OBop7X`g2 zV|Gw#&GtTl&ERmD$nWM%&C=MpuALZ|k*Wt5|FJf4?U!siQztF`qwXXehPp45@I`)169LzWJN; zv7Q?}r{;?Y=p-|LO~4OnWCcZYr(8t z0b__%+6M}g$TWR&PRCir=$v1q#78Pwiek%M2KkpXAE#J@Mub@+Cbb1{saYy}8Uu(jRl^24Qw`PaHq9qRKSAT3{xX?KXANnnU2u~H z%yeF7MG7Y1*`!6G&(e|pcK^ArK+cDTGL_F|+{-V7mT3eEQtxK>b)lO+Sn3=^1~soT za>fsxq5OTO@k+Iubo1icU__8TsY?ZkTe-pgRx;#+VVA8?sv{;ENUSzf|szgXF1T*qzvF8SFnodf;1@lxLqr*Dw|gvb%l z4DDca@*1`KW5b*EsB6_l(G0?Sz_y5#qXP6CGyYMuH(WDjF)RJ6utD5I*iJ9sknCe0?$wd#hkV=OAG5y)$m`|G@TRu7oI|dnm_yAhJ zSRFk4tIoZ@LG@=TC*5cfLDEWZJ1s8!x&bsU2P8wvc2Ymjm_6Dfzo7w!&tcL~0)4^| zG;avnEm@>Nn}!4E6iDwF;Gai8D^suo?Pft>cs^J{?E-0hB(4OZInn$mlR)daDV9Z& zel~RNbVRc#h_q!)Dwl)#(L9X@D72$^h2*)bV_1zcoCebpqb;IW+(Id9=xOX8?8^uh zGzlMW*#Kodh9O7dZm>Z)TFDDWGU)Aivo#vk?SYzwowHb&HviY_h)sh8VpeQ%daRwmFQ)N;2q?sF@T<>1vh&npuq zM++t|)>0@kI?YF=WcvsS%$&M8Aj5}vP=AZi?spEv9dVc`R?~sf8DFEz0z2?Q?OQeC zWfXyJ&A2%wO;xD9g6f-GY5h?W7Um?j59$p~bmFpI1(Z5X{X}IN2(w!me zDP&5|5v4Sq#hH+eUcuA?oB0pM@7vS<)sny*^)7(BiMWX>l&s}nQtvG&?GRX+yFOCq zdC9uwT6GFp87lQbKR!Yy=|G9l3bhwD5V@}R(;#6{`FVEWB);sVzcxpr`bgtXFxl9o zi-?%0x5k88v?1yrlV%4QAh7K#sq9osuIg429J^$AsjTx*K@-Lq&zj3_NK{ zI~nfXWHg^%4s;51SArkVuc}l{OeK#_#a*YFx&B>CZIXua7Z%z|J31uY;%<^ZI+ddV z5kJVJ$dG#R(}u(>BLJaRssnX587eP>?bN{gTFGq;{kbGPYQ0+%lN~z5KuA#@au+h*kTFi`GbxpsoD)uapGJ1^ zSF21=%r$_34X|JKXH&Kl7JO&(T!1h8FN##5YWVH8wN{d%yM87&uO2DMrf#Gx^)DwICUeBs9|eR@&8H4F=zjKgURUTp*kH@t%Y zA8W}6d9e8 zLtpAlqsquwQm=x|qT-Fkl3Z8^gz$+S#{K}h!@iiZ29Zmc&n+@c>eGx5e3^m*KRko- z>{}8EwCZy-YPcocP;0$MTKcp2fs~_#q{^2m25r81iB&q9nGx4C<;jah(_$hv3E8*= z+&QT0g|Zqn+nvCq38`9`>-;>^<*qYl!lInNm{n<&kR?WKC7Gc{W>RVGWo#WtiEfFB zZvUW*3X3U68mJ-zo1-DVIcp+87Z{StL&@;(Q2?FBqS>^i!?sDBJ4yQ=?z(QK%d3_6$@t)z zI8wU(AO%ETj^o1)$D`C{AutV|{%98tC54+>bf>IVNf$*v!gX*j$8l3`myQr=ubTgv>GsbYGf_n8 zHm6CG)M)`u4pKnfY?dx5zQiI6r#Z1;5#MMHAXf9ar;0?@(6r>ukk;Q2*p9XFj=yE~ z@+Mw(BQA@mcz)=mftMAEP_Mzo_#?+vuv5GT z>8lRZ%wD(SY??+IO6B0U&n2wS%Tu!Fq$yK03lB_^m0^*=i-V6|M_;kY#O9D`nAOTpMxqwXW{rl@ja?hFP4l+TI#{Hse}fDw zjJL$`XAkb#u-Kzikx69#pRXG$H!9ZFU>SJW$K{EVh>5Ef#$Jz{**M+w4Iyn8AX+%i zYzUw$yK6O1C5my2{jg@y>C=BV3L7K1mSVU6JR+;>u9YfdoAb!wI)LoTY!Yr8ZM!GP zYKE}QOCKY#3uIo3CeqmxXrVhFLrAC>ut#mKg{F2 zr{9(hE_i$`iG|f;`JThF!Z=LIXS<|wOLq%KTebe2Fea6>Z&jbI#Mw(1xX%-JE2Q~# zl(@?yf3iAZnE*05Q2Iua5f`kWvtMWK;0dCbV_)O*P3>HeA zoFnB^FioEF^{|_#dCpJC98I2#KrG`WGFY4hzQXxGmd-t%>FF5Ar9+2%IP z{hCzU%w29NBWZ+)+;YF|Vi=)Gu1Ri{+;R_E^;ZAZoWT%{Qms>_j#Ph zIp=ZC`@Eme*Za~kHIXIeb1kkkaz(nATjVA*7|h0QeICJ9%EH)pUD!p5nW)4SWHoqn zbY;LHb6kRLYLT;RA$;2@vD~?uyDKqcM=NeoCS*OfGBc28wh-=ak%MgrmkyEh3=u*j zL62HbKKt?Io*R2Son3^4K8hDAp=3%eoSg6Z@;ZL?QUl~sl@RkzYdDGwEh%Te3tnA* zA5mY%8P@=vBeTa#KqY;U9f8xX-UxPLrdLSjYSvm!*~<7pc##43Q;$$dO~ypQ+V)=f zMC;0snWzG=RuY{7{<#KG$;HloK{7ylPp%`|I3<0YaWfF~?)pXI>iFJ>B38yHY*a;= z(9?npw93XurZUW_8Z1i&q1`|V>oCu<4AU~OTm#s=A>#~x1AQjrMPlZzHnvP6Tbq^f zeH-RpEo92yX3O`29qpr~t_aE2LoBK}*lPBUQ~CL7fa5}p-ZjvAD_2kE)MP8nlL#>{ z1M3{ku$+kDhCtEF8)$t9hX_$%fY4+R)-6Mfd343JAwpGCbS^!7q(}6N1PH~5l%H7j zvVgfaaA0qttt-y_OiLX5od(Fk4yH2^f#rYEZV1P$!>nPe@38DW*K()^n};OX z@AvY|tHZxs2HWoAIk7g!)1$nRP%J%yzI%;nFg zB-x04qEZdvvadz6_QiTHB%s_tyzAfDW2@r@>|ORyZ*rz7E0!$7%k^4Cxe4uVgII3G zJo=GjxqK3nnBmyF^SNpr8RcOPb0n{^m%qyxtd^6Z7W|aHggFQrXhlQ4OYR7%2Q$2GULua3#0R*BFuAG%G6R=-CIZbyT%N2@&SO-ll)l&d)p1 zn(LVOv9UPsT5BzfzWk{vj|6MH8XB~8R}1nYczQQK(l$p(&co-#mci0+u8eWS%9i2V zv9p>7TEl-Cy?;<)uDQo)VqwhO%k|)`#@Zk_=fF*uz#_w)S94Ls5omt&=cBx1%$*A} zJ%d57@LEr<+#Qu=I|+FsJm8aIy!m13%7JSU|15v3%w0dVw)$^(V)+g0Jciy>B2Q*_ zv1Hx>ba9P&Xu~XTl6nHB&@4K0FJ$?Ix~R7eKU{94O@?+`oW>CsxBO5IhqSmoiONVb z8DfM6(G=M7qGoRF#T*Mlj(SBRlaQ;`*h@IA+rJgyuGV0C_PEgVEUA=jJVbU%C$ch1 zns2;!Q<@^|3Q5nrj4{aFrBNPKk)%-( z+SsRY{-o{Qno_k_-8j9km8U_NRh56@{VaG`lalF%yT}L#kLhO@X2h~7E8Up zcNHmm{T~}|=-qI#v2jySV@?(}Ul>l?^oMyDdn%>82+@C(Y=LtWy|(%SqAu)AIV+dD7le}*Xcsy z$!`z7o{Q3P#a+6Fw>BGO_1GQBH2&6v|(BX-GcHh_+vRr^1N0NHbl`R7kg2 z%F!9Hh~52!a+aL2(IOSj$mU)gk^J>E@*(~uDXKOU?^ ziYs#PlCQLS@kxF|qp)&$-JeYaj=Ds4PR?52!a;i17I-$AjZ!MPwz~c(zsqbWy{wI{ck3 zkW5R#h*hiL|d}_4;x5Ululfl_KyFwt>=-#1WtByYH zMi#GQ{jju%2h&{RYx|k>zp6N)BwF#VaJ4qUW9iFfb{wm17u9p*R|lt`*nGYh5FzBw zp!Qr*>#RO*K)_M_C+I^N)07OdC1o>M^G?11be3GpQCjP@-vjR`>A9({cj~HB{H-ut z6wcv~@L5rtM@A{KluYrz^_-*QL+(RM)eo(D?`7ZghciiAfr$AD_@?d&)oWu6KBr7- zE)ybcY5?NfPH;SpMqJO#z0rH4^*Cv&v+BoRm$yXIUHlLHgmZl~JQ4J`MnKm7b7xG4 zWSG5+Uh7gofvUep4y1T=)nacEZH@cOxqFVQHL3DaXr_kVpGbm;`Bl_2rHfdjmwr)P=8ISN8tXa?`RFQE>L(hF?PD$mgEO_+IEh5JQ2Czi3LM z?F||Z-O@hP+4!^t-FhkIDo0_S0kx8-FZA7`1nBS4(#KWXCJk~$5C!u^sdlnG31_8*yj=<^kTcCc zy`XgHO1ZPmcDjCM($f6Ty_VAh+oo-49c+0`_HH5juT5d3&#M#iz^!;x&Fj;!s@UiK zSrSaMp3asprNcv`fwKkJw|`}K%HER?urcNFCtvBW)z1O5W;fsHt`)Wojk0D7Zqyk> z1U;62wVOS%Lqo7!_5}~DnF8G(Q@$h_-&~wa=c>x%H^{THV(3WPu;D!H;Bg3s2?(Lf z7Bcsla8z?c48|2!L<%~=ZxzN^!u<7|a;7Y6;ED1*&AnAzH5U7=;zqBEd~=~4WX}gl z|IAVKy~pGu7nbDiCfZp^WU0y4hz3RtUp-|6)B1lYHbVJq@V@gJH6fjGufyZD+HQS` zh}^z$#s+;d?E3iuiQBv9*+;nhzWp1O`^80VwX%(lLqt>c`$(fK5cxg?yD7~S*vq$X zk`zE2vVAf6of0Vh*)2ThL&|GY$wD{T?Z@)4;r+ZHH8qPsEo{$u=|bET^Vx^2rEagyXu@5TEz z7z$fm`%6kt!RP9yqb-!B5|~Yiz+pgiC2r_<#q9PEfEQ!$xbp4-ZsF(9&W4JfozH*0 z6e>saeZ6H0vbDOHziUWy^VLQlt#c2>-u~iOe}L#)m0$dtlB$xQd6b$uzxBLKXPW`R zfxvQV zcsU+BU!9HKi&4@wG`HHwj6?@srxQB8sf}z!0&&1{Nq|v3Q zr-$={F52=C?gc^#iw-PD2C%$RTqVOBS_xv0gmbNLFLSdk}DUS_Jv{32d6!k*^i`R ztUy90^1#iDq-|C5Dpq%jj*q8FD^qNT@%ay5zJ5Nt6ipF*KMbBI-IvV0dsWev$jJ{{ zu%4)~nD^sm z=qC@mYXnixy>qH20M&1-o$KS?%{hPdaph96;goM5w;@)a)ErEF_BSX1vO7kx0Cx!u z|Be~=If9)<9n?V0Hujh;mt$=d?82m9it`V01diqZ8dN;H;FZpx&y<-Z51UWXW%kk> zw5y%?wY(s1KZ<47pjtoj#_#t<=ic)`>V@6d%Mq&@A^sYaWQf$vtnJ?#Xnpm8nKJYy z_wbOHLn;-Q2a+XH&<2CR)T~OlhG_uTG+pCK8U#F5_InR)VX~~R8?qbB6l7kylH6Jq zcS~dc=w-hGNSZkLsBpRSSB>=dSAvu-+nEH|Q->3MfP-d%`I!_~QeB*=x_9!R{8uF} z0@v$=COv{n%?h^58x%eP>C-*z^tb+BOR(?ujC{h|Ku!V8Z^moC+7LDbgu#`Ef6~kw zCHmI{*=;S`LO!qpxRE|gLEI;K`9qA1AFnc$X3$(u!NW!U+@p>Z3=LG%aiIpQU31x=XL&e*Ph9mU`P??iY-hvzb4poZdP>@atSObiGf^|sB`?Zcp+ZxcmS8`SC>^#Z&%64 zcX)4I`O(Ql!O8Pu9Ql(=GWTfz)$RR!)mPDtoqIpK=6|%c05=BHu0O4{C2Pq3rWFO9 zuu}{=vv*i^md@<0cx@XDiQYbL!g+7U;^f;fsGfL}eww6@S40)0eTGIf5!4%g@|}9t z9uMhk4O*Mj=u##Pm0+0ZP5B=Qw#3VX5N^e9NDw;QE+jBN`mHq`moI*m6x9qBG?B`N zpw11po*(RdKN|-_DoV z!G%5J)u65~4?RAn%t2C&w%?ouHQQH~r>nnAd8Iz_qvbVxYUp=pz7lA*1FWZUyvOLI z>$DEQZ2n@a_)ggOyw<|fA?mPu$D;TAr>Y3ZwX>SDC%7uJv#9EmB;s3Wb*R%;kPzu5 z&ZN8}VEDl(_f6)k`gT~VrA(ST?y*m)#dgcub_6;}+ul=CS$mLUN^y{=o6O>jC+R9& zu6(>mdw9#sCW1RFp(@KC+*ud={uOJ3YGE}d8!bx#Io5f2RH5r5(TS8r|MHD(iquVQ zV%4w$<_B;{IA!a$|i2gcSSv+!FW3hVJ^I zHt2t6CL*{u3NGH=9_PSHn)BIF`Oy>?1}M$@(|PRC>3EWDc+~5lYxhn-l!D98YA_+v z1+TC43^(p5V=9-k!7S}Z!y2tGz%O+FPL?+PYVh?lkTN&?uf8H5f7uRD{&14qoV5U} z__Tj^?Y{u-w}5iJL;fO~ey^opB*f^_LRMu@aJ9}=E##1H^@s4GWTE>*@bnPmeXi&} zKgjZM@l3RBRJ7|#w3cN%UghgrU=-8tFKBA2OxPlPC%f!xX#0MX!{~%zRpd3O0ci1H z%}*+XXwo4(8_-Z|NGk)&%Ci6ZkS_*9a3(QlITYI5u+;3eIB|iLTbtyYX!Ye%5KqZ< zdf`hv1TO?^!`Frz(JbtyA;G-U_`k=Rz>rFH%drQ#hhu0Y78Mun>wvq!%y2h$?4_=4 zU%)wkBdtLQfozNz*jUq+grv%R9&Yq`Z_5We!^u`JhMk1vPVed5_n+}$bHCDbtoOwplJ2}+D^1`n;gDc_2pjW2_iYl_$M35vZ4fC$wzlqaxMdv-EJYv?2LVyKt}{G35FlUF8S z$2tXYa!G6#+p~eCpx(1SIE0(HmQDcgIrhVL0;yU^lXo888=d7PPQ$Z%)~_nq-zO5f zJtsQHX?$bvL^%O0@p<4DNJn{a}=FLiB$J zPhND8V1flt#vA^jSzgC}=q%jb&!(-q{S5XjnD4Szm?*Rpkfk%tW7Wip6ZgkmxhI&{ zFI$b;_sE=9mH_kZv5Q4bIE#=TNXEQ@Xp^R?7k+ru|E#ODwc9*U+-rVZkiefllU^qZ z+BTLi(=$mc?n-|%d7|{mL5xM*P8L#|06~*>Vb=dJkrP(1lC~ih*$o3D!&_h6?!t#H ze7(0a&pV{;*0aTdv0}ThTbuE)UwkLf$v+qpgN?D+g*yXD_tLi||0>EBAzAHuVbiz% zB`-IFRv&so|snvxM2CL+VjZYD1gy zJD5^UuL80}tjzZ5I==TtSwTC%1KWPNn-`kbh zB3F({*MIuu$ORuS>K`iqjTm1_EP_CbnRbnW-^a$19U6XBEcUnRL$9fV2`q56=4e}n zUHj4ED}QKLnRl<=36RM@I}CGh?ix}g-&cGqsYC~f(~;_9o=T+YuIUs-*$N_^B32KG z*6-*BsMMPr!C@zX^=W53SMYdH`8h~>RzzCBW~y-2-N0i9hAs#wW2LDFP3M`4U4xi0 zfc|uF_&BZZcuLDNu9DSXTVLwP=|1maw*0g}te&FSm1q|wP8qw-BwHoj2P;kAphZLc zJK5r0Eb%r9{_k(fgF)$O0MR9Al`ZnSLnVrFupjgZ#I1lp%l0SFF8ti~yzyW~)jyaWPIaQLKb2DAN(&BdBLCHi6$u@+VbZCszL~I1 zXX;McvHO5iHAnhfAtEiwZrI8p|eOuCG0{1nKl^n?Z z8qQUS+DqZH0>dDRWoYCPgx?)7K5)?H*}Dz};kolS<`RB)Hl=hjJO6xB@GmRkjz9SA zl(@bnUc`|b(a8RW3EjCvEsUCJgaxp7vHX3kg*|MWt=U%REVpSwW6Rae>fK$6>{ zGLwId>uDlR9z$EW;m#vPP#PE%Sb~x*>8>98Z5@x`>Js5r>}|g7s54fIfN5_VZOQ{* z;fnP|Ejg6x`uO_Q){?stB>J*GXkp;iB(bZ(@5Q*wC9iF4L5B>h$ z_TXZrPcbF6?Qm0a_w9@Owtw|{F2{uFZv9sMv=0E2+yHn3g$bxke6JH5eDVy%9${bkYWn>VI%)k-Ae-(EiX?FQG&AS*+Q$z!Q?N zNNkQ6Q_b{sCu%o@`AZ<&lQJOapqMYX*@)VLp5|$LVsCaMGKZXfxv~YhrFRuygY+L4 zt10n4v4}&>riSz(Et4CZxB*)pCDc{1L02ObmBMuJT&mU+7LhwSJ!ywmy5FGNLFQuW z_|(7$;N`kcjrOO8&S?K5>pq<>l7O&UyXP#6FMA%zKRDz48UC#r<=kNFU>^~r!J8DDB&kjU7^v3yHwz_0{EPTMjB*%+zp3c2I0?Qg#f_okDuw*71UqD}K zp18ksi|$5&oTm63Y&!say5j&BmXO`)q?6@?8{BFc)hwc~#9V0TgU>-)z}dNhrpOS<}Qfr?2;b6noj;8gc#mEn{g=)hQ8SKc?|CVnApMmj+@Dq4s|q* zX%U^vFiOf9MSiFr%i=aZEqT%AlXK^nMWEVdb<(j8v~Oh>_F4k8XD z=1e9k*FuGj+5lfUGT4CG00;+zj3tl)pGLxtK7xWXMC=Trh}k!jcr-0Uk9NOkJx=hENOvDi+`tB>B8f_!);K zrA^L}dkz-Ml4$VQ)2sBtWoAqPbx zs{GI54hw3K(!e0_2+i8CwEr4Ng>v}|IWt+% zS(Sm1a@VxgqC+`jR4f^En%)dP#^rbh)uX@j(=4@yx<5HMvr7$ z(u&YZ0kWcKo17n$nZ@Tq#saCk*dcf(A0sy`*UkfSvoeuK&V_)m6)3ahb3k+KJ?SQ@ zM`7y-fZLOUah{tH4%a?t{?I{a=MghI@th7g@t%~GJU|+QTs~_JL0k=Znr#nircY}( zHuw~Sd%2jC=ZGMzmQ;iAL0lV43y6U`SDS4%|J`hA-g|EU`I}TTk*m}l$!g5(4?H)e z?}fU>$+Hg@9uo0)>c>7yO!12tW{_9o_bsgjI%RYR2))DM#{gAz9{JYd?#&$H7*tAr z@T1yYe-)dT*UK`x3J9-#z6hw)jK_bAdq+$olD6FpdHFS9?880P`?~o&`hrc3zRD^nC0LIT99qsF0%XbgV28%WKni>{U>g7K zk~V1IbTMh{*$vBXt%Hlb#;uhy2+w!=&My`2h}^HeDt<)AB~jyG_n23+T#nkot6ONA zhk7fjd%+ruI|`_k;p*KsGPTgTLQW)mfudfP@{e#X9=`Uxy9z=_c(Ctn|N{0Hj0>!+w4S%Q=6H) zv3ciG;N*CK1))vTndUBHMrXrK5>&g%h`$`KLRD)m^JwRe5sw&Cmq407`QHA(VPL1XtgRmlwxHERiN4^}J-`KVU*1AIY+(6*M8Y-b zykWU{(y^^qc}-72hi5q$kDJ?A&-jYvrO*s}+-@mZgCCR|yF|rD<$|)Dci|6Z*;DPU zQR7k1nd(P1oD{*CvZx2o)n{YhhfYGVYF92NMBD#%aC3(qHMC6~x^u;8Gwy6UbOj$K zBOdw2BBAAOb>g0%e_rP+An07qx}(-k4rL*ah6_Nr%R*9M@(A}jJGeKFyNJ4&I9xQ; zK=nTD`tCh2c{qhvYo7Md*khwL9FA&q{b7w}Mh8@BEr@!Q^^#&Fsx`UM?*XGvSeLa! znz`Gemv8?gQ&H>t`(ktjd++5*Egl6F1t5=J3(5~T3$&7oYiS+-uJvQQ5eF1;fkwdc z;=hlt=W}TnRu9%`Betbf7JhJhKT912KM_im!S?A#9m#RsoLSmbToA21qhZv1%Vmu@ z0BZw`YX^rv|6tVo1XzImhdTfc;hXoq9vFzt*Fm!W1hSFCXS5&P$J5z>2p^Di!^ND@ z7GwRBkO1H=dwYj;9@zu3ICwSdyD;*{BO+*Ca-GN53x9JYJm8ZA=N=M)PydW>78xhj zmW7CvS4do#$|m%XIvXP@rl6Kg?TpVZL&?rf8uKI)41pIsxTp3-ZHfHQvTp6A-i5ql zE^`jJnEUvZR^#;ooFAnMrz*^8g^9K!@mbPHJnA~2wf*s;>;~!rb)D`%tuca9*g$ua z5wOLtdfQN)LtoTzd~LT+>h%m=KUbWA8-OAHpxR^ot^x&-IQzw7=85KdtaDz3n?{E| zu-P)=XaG#Ze#f`~J>!>V2w3RQpE6x-VjJIRd`Y0gkJZR^nGkNO1ql!4C~BYz_Ola5 z!F$9gsqnHHFcH13KHfOc(V`6#G|+Q(eE2v61H?^9z{MR$8%-U~LCo!S~OjHO?+>kKHfe+?s41YZ2Q}dxgPqo&q0vXT|MJTU)gbz{s zq)Zhpjp)3I)bRsNIJ1PO7Q~lW5^%gpPr<{1Rt+}O}C$OQX=y z#_0UUPeO-R)dm~^el#vw@;~3DWA^I7>20C1NDasJriNM>rKJVgDSXv}ayA${p35}u z{;XyY1<)7O>|JN<8V8PX%TLBygpsbIy83VG=bosaFg_J?K>8@hTmjgpDD~qJ*ive78>lwceJ7;}xWmJi zTu4o#k{ofDTBxUx`MC(SbJtx>y`)yRPV#UT@TI@#*isP5~OsI z@fEV^IA6Q&jgAO`@{ZpzucmFiAQ8m2TyVgya+6bs&@$t%Y6eJJFB4N0460@!mpV1~Mn?Arm}+s%|8t#Z#(z;WbNks) zD|;jWxs+empnEO`rQwHEbglgf#yR?r|EVa#1&bLz;ed_5se`|oFh2|sPBrVnDWkDC z>{m6qVRItEDuJ`hzt-8Xu6Ze1pNVQ(?073P2*aI1Yy^?h;r)JbbAv-HwoXr(jkk{u3V8w zu+eC{+C_>zKe}`nBZS=l^<$+QU6nR5-?|UA1Q8hF4^4kQ)TQY*c#kTuIneF<&{TIq zHT1(}(1NYK$S0Pc|Bm@X`Vii)+-cpuMqjh=TOb~#SPjgyXn8QjHTQ0S`lu=@;LCc& zIOJJvaPhN8wVYvhurfGwfT0B1kM3#_3ep5o#_uj{zwh3V9c44DVB9+`%ns?|bZGzyk+U8W>Gwxwk(4tZHpbm^cqnH)qYkNuu1;fcs! zRYL~T+LsP5h?R|_HSZtNh)0uvLbHL)lcHVb=%I+k5{V7N!P%DeqWo>A3oOmPj zPH-ACNt9r|&-9dNBF>NDBHyHOD9(2zAf6M48!n#Uo%KpE^+`5`%#PsQzOt2;q|vnp zJBMu7xdgR@hmCiAJKjbRKsKOxV^!9BJ*@Gtb|B$;#U(F(II1hYSJ-+Leh--dj6u()zEuO{rpnG*0T^5 z!mGClxUTD#&vOGiWeO5Fsi^H?#kd*uDU@-WIlm8FSR})pnAOmBVH1C)xDs5MAVHBR zweVkpuE0dK^+`@pQby#^3W=_2!x3eF4O`}(d|Gny7*(y^08(3wLvM;|4IMggj8{kX zJ$4YsfZ+L2U2d`~WpSicNLOq*A%q6~t?6sc$x4#ZJ~~tq8AQ`xwD{1Pai0dU2WW3Z zKPcC7rGs(lF5*GEE`Hxt1Y_bu!6Kk8mc3*MmUc4s=UGezqDK0+2ZMsx_RiaFsAKjV zKP{`FU63q7{q3w*K!(-bU#iWzp4pg?aBOKnn7+-xYE((-8${IwEge(*r7rO(UuzC? zEI=2z%k^-N2ITp|w%#wb@lR$)2#L$5n|e7ZQ0l*UOU)Rme66HNBD3~qz?^z;e{mnd zF~#-3&tJYuo{&H<+)R$kD46l#tz-BCJaFM~{O6;U$0ep1N2=~7^&i5L1}DQAaK$ey zRDkfx+$6c|QR~w(_IGvuDlKqf@&tpJG(-^^64uZ+`ipfuM z>ZCuD=zvMH^OLMTre+kq>d27U%jfU~fp|EJbYV(T;bCjiE(o@z;|lHrgVJKng39JY zu~cZmo5M9)rV;`0_bl{#2Ar12RpG#G$ilPLXuUy+=DQbeCpUHfv3(*P1(+eKz_Hg7 zr7P~Ue#C9p=&K`;j1zw!dJJ*m&onw7{M~qr;Cf}pey+|Wk`3xp-WQ(n*%{-sjW6}k z+NI_ny1~v&*Cps13k{w;Kde8%sY1u-+ttqVihV<8uSL6me4*YUFUUM)Y5h&}&^`5l znk&(3jG(2#mJ02V-*}!p>$<|hHSVD>PV^`^Q`YO#Y6= zXZhj^yc3y;yVc5mX>Ljwo&b;!r;_th$9}dMVg6{2nyG1+oZOu;js!<%FPqO}D|X*O zRz8Rskv5_;kkF-;g8^S?2862aK*HrW&ScJVF)ynN^Q@QU?u~b*27W#b_o=UX@-=KT4SK5165} z<2Fn@zQ6Q+imeI)XWvS0ZWqIno9y5wV>-v~L2JkIZ(4_{Wk6F@FRFje>el3E8u|d( zW@aT}-q)n-}xXRi@WKfu2K8YH9)+_%JkDK^~9TZ zq1$t&1HR9u9!m>$qQLDg=wLMpr!oKDS}%$MdqB##ezmkI$s)(5fc&7rMDMgl%hb^A zX93SnEeRr&&s^$xX80&gi|}gio}uI0Lrf;P_~a{f%aUj6FBuvC)E(CaB1_OKUYg?@ znvY~=pOk*8Q`Rs#IBaZ1OkR76?^(G}rNi6vrD^GDcj@!UTiU|7=jQV}nvr{9RPK=` z_SFm%zeV`8JhWL5Ey8(;zw*2d z`QzHa7AR6z#5fiXAj%N2yIdVaAL~i6G4%ilCIasv_iqK?4fMnO`ZHo&+YIjBJ||u2 zR1SvAS4SHVPwel${W>u?h-1Eg7qjr^ZjJSP;O$-=o@H?);b8M#RRGK)v)u#btP+v; z$p9E>8Eem|DajVGhSFg;3L#e!HRK~(T{l)Bjy03j`n*J@s~Qrhq3b#K3dFDytmlPp zB}55XwJo{mh2a7fkt~cH{Eb_gEF#9UH%is90in`1oMYNF)8cz0`5zN*);!xDxO+ez zMff7$nmKj3+Y`I2ejPuf+!dIOZtP9{6O;OVT;I+;Q!EIbXVE_6RSG{i*HrfAD)kgR z=XdV7TP3v=942iO`bg1CFLYM{7da006KOw%^K!Ty(qw6=T0 z0uQaeL-!08QF0vXMw!HJ)q?=Sc3hDzVE_2?@sca z0_br?LOj-dOvp6^<(Pi8&txk0Y0fl0KdV&}XY*!%*}-j+Yia^9Wp&Ve3XD)^J;lo6 z?@gwInIqXnJC|Qv<_Y)kv8T8R|AW9K%9KnEjWAfdBdS~HNfjI`Hkoix$>Mp|55Z%B z{Rn*ZQ!Gv5KGD4)zW#(~bHC$ctlc1&cSaUEL5@A1j)>^>?p~Nd_zn^{ha>0?UL{Kd zh{&5?A2~(d`Z0fc?NGZKXGDrOjCQK56+6!Ky^t`MREf#pjmWZ@M;GE9`a`b{#=lPgPdssfBk5vM+J+-Qu{p!Fm!pT(W0rAT zXP2Fh9pZ!a6B4I&kx!MhqD=EIY4>ZnKO*im)tkN7?Vcoaf5Kn;h6A(i*p^lq;CsEy{+UUKQzmuf@&lNY zA7pLTCQ`fJc-}mXus~*h_HH;6=k(I+nvU}W#M_(J6JgNPB3wyTsI1ST1dp6}#6edy zyjn;FHVAW!;_MHA5~>B73$VM4JMAxVYUbNKT`_R9k3DV9`IONk_bVP|y8tlLkH-?~ zoyat(_ZK@>W|~cc1C`XA=YSiFSh=1|uEdO;xQ={WqlVH-6)hcf;y(~WK}B0??h$j!UuNbH(h z_k;lvUnKBIp)>!4jn3-osWA&MAO#iF*V`@CV0eQ94~ViEbUtBZifF#Cu}^f|EjQ*| z{Y@FI5MvleS|o;t%Y65V#?uYQmt;(UvB<%(;qU_0Oo%}BPuXzqN?SH}XiNn~9VU4M z#sd}_)E}j&=5ww%VXHBzx`yIyHwy;qvy+&y!ddM+7FfqM_A-e{$T@2moQd?LP2h#@ z;U#kdLka#%gg4ZErwD2&zC2*4H0AUqDKPA)Mn+pyT3$-&UcWRSd@A}ySPAQfN2^sGOAViJA)p@PF7gM%ghwGb@7 zBfySvd^jS8%S;~`${~mt?alU;BGrd1lN;qq{lEh9>I$m6>aKBF!vP&$VgTyGrJJkw zI#q?78?9r^`K9O7FBD(p$Kg6)yMg8ET@#XqONE; zJFFewo_BKP`j2;()a|woiy9nP2yVc7K)}IA@mwskgP*C(ijS@+nz>^ie4+WQ%@x&; zmp}oAXV-||@DIdRCIg<$^=o%01e8kv{Nl2=_+p(OietXZeMpmmT>73ctXF|B@Gim? z7bbT4r<=!&_rYS)=BYOd34sUtPW(())M~{?gS9>e#Nlj$v{4(MX1B%@1~yx+rLEnV zz2ksqB1)QGM%6|EV9Y|MFcH{6YN)i-l1p?tJ@le{10#3%1h~(^MO+)*Ip`dA4558= zPY*I`h+F>jm2T4L)Lx*>RPRXL`#uBC{g6^fpPu6G?#kY%z311_6)? z86=TN7D6)s(C%uB+V8}R$or+`tv^o_%HMnH-{hC=RZ9g$H6%ql9VYF2+W;PP{KGnJ zq?P^dR@n+7M{r+y`s($nWEb9vOPYSy%6>k^s$Pq`3m-_yeVe1LfH-_$H~-Kn2(tpL z-f>l{HuOo{9PWb{A``T5zyOglJFM5!ekLv4BOC-jOjl2aF<1}_GTdiE6eG{@2(cb? zv0T)zdeh-l@ikJdRGC+OYiLe$O&0&8vc)=GiQY9Nqrv#LN_l`ic5T9SCQWYPay$6p zb{uzmvL2g|e;&c|IR=f3dRh~~ybXSPRNPC=MSSHDpJe!^_HE8xr4YIeI;w8(%O`E} z_m80RSI#x1z9U8U-B%ye*HYtPeC$~)lmHOxL0ecR3BX7)3q-^rYRHut{{_w!YFxSJ-hl<8KM3l)|`6c^bz5~z--s$3-yCj_m7T_g!5+{|IjL<+4Kv{X9)ie`=|%f zA@a{>c$lzjoaRpj3`0FxnH(9=#QH}|uXX71*z;)W?e2@;p7<{=-B*$PHRhE5_1qeI zDfl@cq`-P8zAAOby^u$-9|XaP>kiVsLy<*6&(xMXUtbyU5jz!FVezo-zE$|f?Q077 zZAW3iQ@mrk-Pw3H-C={zw3`Y5-WIE-beq3$s&etBSOqCCKJ%7>Z1<|pKy6EZD*XmJJ6)z$C39XaduoZHW8Wj48^F65~l3?Zfz1* znx=xyFda(I6TvnZ6Jm`#wz4z58!``%W#(LBx&p^V+5lI<(Hh{eB3{9A1G2qO=A?Gt(vABOq+_f0Mw*aiqH)>g%Dz6b-E_rpRHt#9!}`DbjRxS?q)9I0<}) z*oL&waI67k-whclJl220D>j}KcM!w2KPi*oe+r30( z4zsh+r95;kCtf%^$ETgG#Ev{d%)4WsHxiPUkpXA&kWjJpz51r7j@x7Ek;xtlr*{3! zvM)WPipnAWL^7V7ex?fieILDd%Vpqr%Im>=k;#C#Eo8qr`j&Zahk&OLjy9KtL67QB!IUK%M>@POLAcRfHT*b@p_4H{ zXJ@fubT+^$kpS&4H3@4zzW=7FPL)Sx$AV|>b+0I1Zi8ty$SodLnEJyuDnP`+Bk@>r z5|U@23PzUh=%PM9L%j-3*p-3KHkX!V1JQ2_2sMR@SVK%ZsW7Bmgnd!fo1j=&^)IJX z(%ru19;&c`J0{BQc+R9B*eNx)0l2F*!5k=JqDJjgjhbZ^5}NNl32K!CDI#kP=VU@V zYL|yBBsGxVlFDt~qo6^~4(d>TZQ^E9WqhxfkbxI>LDhroFZL0+CJlf;B9CYRwpcjx zI#nV2!hUR+BnaU^ywt()ySxj1=i|lg3yJps|@B^ zU*?#Natu5#fhv^9MICb}SuXO*S+~ZCmS;VyRyI^YF2(k#`>PIKCd049%!Oh6YhVU0 zF1yHjNl2#5Wus*GC!6Q%lQkyZU92C56$)T^47kW3{8~Tk>;hbgEsUI~Knh?jDABX) zjdkR7W{bAyS!7c~ZZmK2JkFjZE&!enHoW+{H;nG!KF;oe)i~4}cucs6e-9&Wgn`+B zL>mBMm3SOH_M|84lRJ=jsN}%-en|DH!|RZ>;!7sM(FW{Rayb=9Q7pH`f*a(Cz| zYZ19}a5WV9As4VOhrWPpm(V7SAZ0 zD;IkLu5BK!)w-9cX`NF>LT>FE?<&Cvs5?LDQ(^UIxtggYGrGYp4?Z_q8_g|g&a{TL zW9AX)@pnm$38)_qGLJ$Av$~OOFeM5CQ{9A`fVND6`Yl09QOH8(M0XIb zJMu;{qNWap>X@}dO{kG@j>U=~v#hhYCn#=qOrtQR+XM}4BwjeWT=#$gNG6)pRY+&v zQ2y#&qkD?@%km0LAgx63nYsl6b$n3YUaDoib;HYm0?aI{Go=)Lae_tu`5 zDhVT&y+|+L{$kg?_Q}xFQR7P7)eu(0rrl(064rJ#ToK~^Ry>yz1tZ%!Gx5$ob zQpO~o-cV@CnraoU(Zz}kW}!2nHUESd6tb`m0;DRF2ua z`9J{?G|_$Z1u9{o78xbn9DNJPzt!G$i~hOCLTtpTtj;#*M$_kg@}$=9rw87S?RD$K z=w2RSI;d`I=pcMpBZ6S&`L#ykyD(?=VP13%6qQQiIl<}u?agHZ(Xb3mAuR1Q3e39w zCwB0uQ!mDMFu3cSA_|_a7%=$@*@DoGdFlL%LJJH>))kQC7Hm(Z~)PE!P^if!QUxL0MKf{1ISi?>MFtN z4Whu^*8RXNKz!l0@LNUKgGo37a!0ge~Mvv2|Zq^%=@+?|yOSN?Bp}&~RfoPF#z0mh#zGn9sw8o6QsW*A_KZ@=>o~i$j1NhktySQv)bN8KH z-0!zsYnx$i<$fomh)8ZpYBQ6$BzID|C3ixUTZL8$<$ej3M3G2ErHg)k|L!~A?rlHUvBvarp7$v_$CM1(hBvSB6!t8aC6klN0vPSX$!aD{X{&Rcwa%2m%}g-GA?y zlR3lZbm0RY1&dcloZWBu*PKG(Kq`k(ZWoZAf4L{Qb|B`AfzaAheY`S*()NL@^8h$WRQAYyXM%3CM8gM z1Rv|*>a04NqmHm0zOP7$_;GD*{ouJf-#&c`Kb4N3*xEY=35>GZLzc)Y@j(zl(tveU ze=D*z>&9mnh{(03Jz3Jp+l+S$+7ETt!IWr$g&0Wz#NF2`Iv;@oDL`neSNISRyoou) z-4X}Y`Tp=~piHi31Hys`BVT;*D-3e4Cp}_VSnmEpW>EcFMNq`Xg6t*=m=dOJ_9tv& zul8?eZmWJUFDlvgE0Av;4Om~;_GnS$1>DM;uf&S;dOh4ZA;N3R7~JtH)mMs@GMiV< zid;THoP-olq&nkak=A}ZpIS!`@&j&O&2Bg2Q#|Youac0DYXf6Uly$)0yivTUo-YwK zuh+kP(K~{Dcmn9wfkwF1EY(S}nFFx0<=Z!97aV_TU1@)*j+oeN_fbP<*mF++B1WH! zP2cbaHA7|h4z50645Q3$uWG(s%R9K!t#S0N&gY)e<9D{;7Nh>X8rX@vD_H8*m6I3u ztEPneRzRg)c_jgtyE{K_A`jgr|6L-`_^D465?Wg;s|dR?{PImLo@HL z8v6IEUFj<#>bLVB3S+VUSw=)T(;FQM!pK&L5Yc^fk;3K?p{W6*qjCUbe_p>3uvq?x zuUtNS**yXb$vVJS41z^ESb9j~8@5Ls#;uDmM2rcK4mg=DV;##O+3&07!S?u$U|^;2 z@(e_R5u;L(lG>9=@|ynS(ROm`Flny2&$Hvq%8UE(6*<+Uy@tD=Ua`&w@a#|HgyQ2C zaSb5h(uh2CnLnUp?XMLa>7s$7<8wG9Wlne z(z01f=c$N${54{fGA)FPX`79Ra&r_?m;CpNq2<6@0VFvxp;f~>xnMn?hv9INWD(Nh z%w(Vw^*c)jPj(-Hzm?Dl9=yJ$G~^<&d;CPK0O>a~qzf#%55pmJx5y9?XL}_jWv?v? zl#mxe&GbX{%Bd+%Mm&O^j|x6e4V)La#ivCZP*3rF#}QR)s|l;6wFYP2T$G#x%Q5(o zqhp{X#n6G~B-^N9izGiK>sm>vr7@KibvW+k&9uGq^aBsOLeKyh9j}O3(p?Y9LTDH< z2QJ(9)PU@Db+! z?#vN%R?Hq0O!Mw$HI+lq%Dv@}4RX)}jV95-!<7lqoJ0$~KV{G1i-8(o7|n=NsXx*i z?HxI!_rp7S!sV<_?0n3RSL77a4S>HD8hi7I*$PK41#P`7hv8Xf+>@&cQ1b(^MGhNG zlaf?V)e>`eLS_W=>fq{-Pw{Zn~?$YSc? zZK~9E`+=OV9gWbdrkgh_e*P)%GW-OVhk0IIB^3<<3suGp>9c$1R&N$wjQ?1FPxiHa znZe@Ou3RC3TLYG~)sumSXX(J+h>SH3t~7i0-{0@XF|%^&r(+aj8_=*r+aU_$OS3I~ zO)65q9eyuD`-k$f>XUxCK_l%PZ0#CfA%E_BpCfDn(H~|P zM-{EIPliZ97^2I^>mMfECX9p0E6^50(B+ULbU7R#`6SO1*ug;svC--c@%XhbZ2 zwZ0{m&*N>UEGUgo3SP~EMH2PLJjnlKD@*dD{qQmwy?lb`j(m1Ra%kW&saHQO44yb- z^25zVZN$vJoZ;F6WEqOJd<(m`AH-iaBZA6-@`*EWpgVJ%V96!(#9o$Yv)|+U%eR=- zSxs^~Hr6={Nd>Cg_NjXkQZf)9{)Ps6x`(|-fd}$Sf6%kjgn#e$*E*dqZ3VNE^mpfn zL#Ffh7j=pt&{^rr=WGMzovscAzVF&g&c2+H#<5o!*aLupM?kY2uVx^Hug`SME)Zd$ z%VFqid1R^BH7XTD0EO(F%J37sSbNTt;%?OAOHd%+RZHYom4WshXQB~*)(Wjc(>Uv8 zE4e8Puzk(W60j&M3<{KWD>+$l;)L@}sg+<$(_aqNip;ESBj~QAq*_JxSE)oU69W#P5{R4@4j2bzz3{(~A#{`S_-r$8TIXXDD#)Xg!$0T|k ze4jn8zh0NXzh?zF3Ih0f(6*{OIhew;#)P5;s0Z9(kch~lLS|*gf8Ng)Tfg3|VL9JE zzY==%?=QE<nt++~6t4o+yxj!Udg2CMQ5njFs#TP)I~=17 z1V3SwX@O%O57xNC+*d8!x+ZRg$H?VZ0z?3wKG=__??O4!Mgh3}ETzrp76ga0?WWdJ za0uq-3U0L+%;WUB62NQ1cnh0mH&SvS+DZacI6~2LgO3VVBF<)yTSb7+sUWGkMVIXD z_aazfp#_xLGu1Y7>s8I#hZoKLk?wv>#Zna{zh>F77D@6`gX0DE!`po#6mAnS??Cv4 z#pC)EbxQEv#-)IjWWDzA?8^y(L7Mh~ z97oUS$a!XFg6JxUqH%S(o7Ph96X-!fjg`cjXM?A2ngNc3_|&pojHfGtDKUa(q9tEj z6UpgG(m#?u!CF5h+zF&xdXDE->E>)Cw8%9XhTZIL1E6E$8X|!Ys%-{kTSQ0ZD;t3{ z(kV|w)Ct{hjB}AN2btA{2CSlJuac`kkdOC97I@iXq;)ULGplIrCSC4fwu(>ND=RO-HcKpoo%wW&~9`bjK zkPCpTSfKVD0(03f}yZu=rfdyTCM3Y!7mloY zs=V!`WPP9y^4z=8~yBL{Q?Y%-xGRNP=@v0)h(>b-3F70G!h6n^@Z!uWOeuZ*J zf)N+{4U{0)d1=c%mn{mxqwZeD@5VGyeVk#{hKie^mhn#@hiC zGQ^h5>umDMBcC^6|A&%c%U!0PwXhztz%W^`t?3)OLhuh6DL_FjD6+oYLzz%SZ7CRH zIog{dmOv5Dp!7@ViR4kFdMMJvdyGDta*E6+%71?-xP&aM02Qy=kD@{ly8SPu^y;0c z3JKIl6bQIgK(W&FsZN^mFjei()oXZW^*nX(U5PxzOj~uIE$y(=Hk*+-8-qa4LjdWpXeOu1kR!h_^BDb3o3_uo34*sEeHkcn$ z$>c6U9Z!kf0IOTunA`fBbKhzFYB4`%V$lXoE>+?91Qt5|F>i-i7d&dv5!%1_Q?g?bD?84*?2+mq`OW?f^f>tcgxPxcjWknOR;5S2Gw)WhSfo zF{5q{LVj9Tx)0nO1z+P@-N;~_vV~LQz-2^h58M#1CKEJZ#mi)MF2kvd)*x{W{$6?; z(y~UJ0omhs2dZcQABWZ!NAC%JR@h@}G|XI*Lijf4zhT4AODt6Y{1UpIQfOaZXb6qc*u#;bdsyz*t-2 zgh34F_%)7CpP2{eNPYQ{rgbvonY4rXUlj*5!o5gURTt_Q*VuNh+2I`_Z?S~zHMYWJ z$yBtatmcW^jmxwQ>KNry2lt*UWt4%6I^(}iCyML2W1#F@T)i{%WjRk~vwXh) zBLf0-j|wQxg4H;z+kHi;z12K^z~78Ah1@iJj7z}$3{DS7OYT_t>EJPoQPy23KylDWsaQ-=QePeAem=I1a29*ZIcUxpwvt*d0LJxZ%N` zxl}ZL+SL6J)zSC@=Xr$sxy#SjM4_x97jph|5^iQybEY1_tGX!L;^Nl!yoM;rF3<+} znVm^~cOW$dd@J-M^3^lC9Mj@wiK}El5ztNqZ%QzaSTmq3L5;mbVZe7KP7Vw(fru0r zLzQ@#Jk4s9E{QK<*Y z67|u)F5-4!Co&Q|F9i*pgR6+%-@{^|_^z^j9462B*=K z)AxtrohJt@$l${o^E*i#+D}Q11*O}<{Yt#sR|U}{*7nuc|!`bb3kyvyk=U2*S=~=R!fI-&tvM(sj16~#hsAG zL8jir$8Ic4-AscX6w6s}aP>)m9z==US#x6q+Z|~f+sorE>J(S=_kbo})?)r>%&L$8 z=wH1?AXBBSzJ{+j#?R*;jSGmj`0q)YHJbZp(%;N~rFYLyHQYL?8eZjdrZIO88d^8Q z=8WN9Or&=#RajB=hkG1$->}N$l*9|PY;%T595r%)sIg!V?dsVnZ-EjHdIRd@^p1f) z49z=tjPw#Z*z0PwQlc{Lpiz>uVRu&q?nl?g6^wK?BT4Z3yiaoh?>LT!IYMpkPK62D+Cg>M6AnqotL~d+ zb~yAr0<+6!6$e&)nu3qT%cTRyg7~B|YZTJ2)oPvaUZik{*&git52@mq{l#kFahgM# z1&8-hAd6lRjmm$Z{$Yojfc!3=0l(6Y9TtM`Gnf5`BYh5GHkNsr^Bi z5%GzmZSb_kd!BCS<1QtyfMxjDDLa*Sm;Gj{I_{o|HaQgq=UQ+M$uev796G3vX{vg*Lbjdt@qCF5XqXOa zdlL4q9S^OQYTRHNtE9BDmpf~!rcMn4S^*;%Y z1hE&xw(qYi`9Ax1FjA9!tM6iYggkUJvC^T%-(!_5CG$GFum#FRsH#_b_pPgDL_g$6$ zkK+T{$eZ3uTHN}!`Qd^`^bjSyZuaJX7ormPamGSk``+-J2har5_bG8F8^!Z)%WtFv zJNwrcrlGR|C3!y?x3x<_9ZGK`=H?JYOsC(8ckyIiCtIFUm$`R;Jh7`)55V zd+B@QEJo=7w74Y9-7@T{YZ&E7KuWK*e@Q28q%}1q?$k_d_6Q}Ev2+r8?VHMf0Zm4+ zY`<6RMcGSl2ueYBE}YF_%^da>i-`FgsWkU~EaF>ASv33iT4GV{g$*b*cvkeCEu^DX zu6-xe>}=wqtmg$O0gcbC4hV;|Gl{eLS)0GETnP(N;7rBF#ujRLi2XiZ{kmBJnj(9y z;|C>FGR&i60_gSW`N3GYh9BT1{Bm$w-n%(n-1GF6n082&1;LZFP~b>frqXcE(`y#0pE*~* zo@u@po75C1Gjs9G5`&pVidZDO146Qs)T~7u8-S>07$6fLDWb(BBj~Gz4sC+}6^^#^ z2r`tT6~`)!L=2+0Q0b4V4wvEsd(SY<98nkpc8r$jWRpECB6`ujk4|$g<%?TtDWACu zMb(H(?c8M6$%u45_hKI7NkLdxJezm+e_9oK%~R0o%%*u2v@eYqQ??FnG!!%<3Vcm8 z8$gTw*Y-1egTj$*H?RdF)6IAYJOzv#i1?s+!`RQ` z*8>M%lCCMfvMRi|q(`c{naouNYa$5L&n_am%^@ zOg?Q{-j)*3gZ4icS|bw6)hLYkijfpW=>4wG{Lc!?4B;Ays?zVuE{D?!OTJ>To)=Jc zfV%{N3L0Rau7${XN74*QhOVXh3mLUAH4PAv{B*^xehD#cMskOy-9A@r6R)Fsg^71^Jxj6y^G>0lw}F zqwh^N)KR5;8k2c1)Sd~VONZvKzU1Z~iFr|Y z?i+@5>^|q`22T9E)v!?Vof;qZkq0?57d+8AKy;9tcarbnG_mY==PLaHoYXgI?R!7l z-V>k`UbLT=x_whCl|=G5PhBtN&^QqZI=iw@na+Lb4Z)XW#xQ>s&mzB{;a)hk4h;i( z3qji$H9|+ysy&Wn28G3pTd*JkjF;)xV2AK`*Aj@{s? zP(PZkKAqLERoJ(U5km@j5adIrpC1`l)tB2nR&P+ax{Wb1mR+t;N|m?l-%GYgjMymV z`Er6LK4%4-xk9*{0Mj|S^x$naLMuVyx@E-fcyfbqUjOo#y8-J(Qm+QS&}RoD#pukE z2ZzT>`&j+rYn>!5(XN7P*Zy1|MCTkFk~7$;6mp=%6x-{z$L7$N)gt7Zk#gEF z$MPhDNV#u=K~5K~v&x=`$faJ!9r^Jd+2(so$(KamtNZwJgr(nBA=5Z6^eg-PiBZD9 zI{ndNz+k5@%~c_9AY?>mIxo)w&+u0HMAl5NnU8-emw4+_G1+lGxpyid=2h+Xr?jj} zby`A3nEKm~YiRFSBBqQEIeW!sZ}REB>njaX0(1u#@YWl+_jVOde%*J>Tc_nFi31Lw zXHb`)7qU~NV*QE^p*XVV_cb8U;mzZTCJS``0 z{epVDmnAOM`3mku3y&5l4Yu@vt=H6mdbzFxqx#ZHtV@8`+J)VpRy2}!yIrh33KER7 z4(RuGgZt)jLf77MIyBlDQ+8w)Z^d-tmMeB8pjtI!LGKDP8gxQFD;d^`H$1w`65Whi zxs<+eFg~#50!FTaKn>V?W?0E}Qg0)Ni03HA9Y{oyI8gqL?7pT6f<}odWz)*PYH_>} zk=sfuk!DifW%bIO(@KG{G`!!R%ef|~(~=(c=@>z(pz1I5ku)Q+JMg3s5t7t@_TobJ z=f5v%5+uLhINoyO00L5&Z&BL-2Yfu1<2xT>T4=r|UN$qI7Rs~AbmeaN0t@jfF_hU3 z!5bkLv71l&cR1DcJS9=*yIT=jqZ9mxd z&~?H^*G^T}w%56P3!UWF%>hS7lOK0){IxWtJ$Y$PPc4eLs(z>Wckgp`DYqG*ek$nV z7uVz25%*oJ>}Z`7Rp%6z&Fd3pT$a5$EzE&74r+~qBt zbq$VW$`m!|9U#Aajyt?46q^y;lRxD)SOR#B4dPve3= zwm*JW?zLOPeeUygVkOV3;SIy{T;2;x^3!Kjxk0d!=8}^*SyhN8R`9O)?<@149&M>h zrc1{TemvIl>^i*&@9e&)eED6-f}C;PRn=CndG~itP(VfhiH<(6Ru%2uxg%~x9zRx+ zr>2UuUO0J)k^`i3Nb)Q-$6<3M*vg1kpXJ|sLsF-LSFix_?Z$p(M5Pl$k!g&kNgjMG zuz^`s%h!iPj0VAS{9p9?7I-a~j1#9$0Ocl$p-3ZMvo*S?CGw-Pv)qE8r7dTt>+wtmod40YQx%u!-zd z2g*?=0YE+cN@ntYEqNI+V9I0FXP6da4hTq%#qffd?m>;0R1V&-7rF((bL|S)9?|AJ zc>;l$SvP%Am%8^MttUd`r?IL`sEoV&M~IwiK*7GgDZQd8_;ykp;7NEJtjYW=-Rp}@ zzE8ukF&~`Ny?F-G0MQTOO^^mv-~o~hHeh;ZLX~u8pZTEcH-UQ%U$f$ z7d0u$YdP8{bB)$=(U!yFRij9yJkPcKfRhCwYX!=d8ef9$IV%;Wtrg{*yjr|=H51a7 zP&&p|D(+gl)_?N);9AI1#(A{ewHGH#KCYE~Jz0vE3WG9EjxE-fqC?6hKbGS|$YT?$ zEw#p^k2k3ymDV3CzYEtv0&nuk-U|6x6&X?;AJV=+zx2BH=EacO;*YfzA$8xM-~_;X za>)L|_@T18j}7A?jdLFx;aLq!ADh00-2V0Pc0hU)c)b}N+9J8$!k5yFUvJe8y<@a~ zr-a=~U2k*L2yORNX|`T(4_Ut(8G6q;=V5XlF%eSKWG7oje{#1~XwA zt?NC7m;deyamr6gqWz>wAysFVTp4(9@YC@4DcjjTcmsfF0EPaSQXQ%XRm+%Fw~yn+)kNBH%b;|!s8mDTc;+AH(pMw zD#vX|7ICHH8cD!Y(roX-99eL<@zwN3dk=Glafv*NPElM?d$klMI7wF7X3u@ykS^O; z(hh&tlsHquvT7qw*O4Pc!EXXK+h>6{ zTQROt%3Xameq+ovos<_o?a2Bt9zI>gI^vu-QwK0S`=!M{ulXWK;-96(Ss#r)e+y?Q zk>b>3irA8YjZn_!X>saW8t~(5d>#f@mgV+BE18 zji~^HU|{2$eIxPf=Nw1M^j=P{m7?0%3v#4M_%v%;DsJPm{L_DPpW7ET#y+0@=NQ3T z|9A-2g|VhdkKL14GApY=Dibv_!hmTk!5Jq{tbCO|`Km^8E&l*^A9W=L?`gVaxIMv6rxQeaRjuJ10nTNFkB{lfQjLPU}tG^ z9Tdy}Q?RXXPuifBPSzSri?kJ`lAOL0ZN7@za8>N7>L0#hN}1}vTX$n2s##w}A(2v| z{VE9B7tgP%g&Pc&wnTvj09FPF0C#BO{Zj6I0<*o6!-;C4SsHHr%V;&kpH_7Smo!X~ z93Ug?LDKeAX-oE3bsbVVl~R)^P_vKnkp%{tX=Pw(caZMGUeSic1E;@G2+`w}eLMIl zOHLHDnR$2=1Z%iG(@Or9#s!INTyX543p5pw5s-{g>`dcRHg_5t4-p#z`kZIMvTW;_=K;%_Siv9Bv=r{iceKR%)6=cr%{%nZSbi}dy$fvsB1JZQH6SkUzN?rp^xn5p zXx>^uPT_}z&wg&*4m$KBG}M67dv9hAr0mx*W35M-Y}>zr0>fvaS!A=&A6IyGvowDQ z7P13{f7;RFrVsZS53xuY1~ASKYS}&G&9fNM{;|QvnZuft>n!ua?@G~O(^Y-u4fm#5 zpGn?lphX8LWmJ+q>zW&tKhO64PpG$-nZ^{-ox`hrv#On3j`5 z76`np7}4=dJvPhfeET7O)rQYSh1}F*ZFZdRVj{G*l-}kjn*YI3=y2!iW%xx5-Q8P|khT290SWWBM#eEv1WG)C{|B@+5^FsBoXmF}A*ASf9ca{Q2{|${w|nrJfQ! z8g=o*w@ZyqCUkmF1Htg}QHWFz`Qz!0b4ktC(OP5Q4JoUCI2}_dY|6YvMBlil(xq#!6y$e7OIi{@*V#^P?%`=v>;vl-{i&TJ4X&^gU61o1Tl%NdwCD4k!T0 zw{C@Eb>p(i@{tJhtcYBgKP?p|c4>c<^m~jvsTupJ!-9I#k`1_ zcvzm6@{^*PiU6q$ye>8}H9OEeSNx>2^O>BSCyD4I&Xw9<@}D3J?O%);;032j3++Q; zqJ^XNyl_Uo0YGK~0QBX~Z?Oo!z9g6!_IgzX$IZ)aGWxtZLA50W-#zSHeHo*y8_+yT zw+uj(xE-xgB6hy3MLC)k6^%U^cTGlU#P;YK?T=u$Ri8UJJ${mb-S_YkZfaqC&^NuR z*qsp&>+5Y{&iD2X-s(zC(~p&0f!F_#T-5eOGH!F?1ICh-4)ggK=mw;xY0CFoFW^_| zMH{TR?#Bk20bc2>-u>=bWFG|Moz=(p7!5F?yOCM_aJ3$!8RD8Jr@K^jELiAX75$WI zmNFHVuk3ovt`14)3N*u-7bWIoHUyk07pXBI-Fm6|Rk1eh<5nGdH$wFV;Rlr--jvV4 zh6s_A1E|k>2p+lR-N`4mvgB3Xtkdr!Gttiki3E6Va;p8vK#g;*R6cGRIg}dlPLU*~je*;K z9%!(wkWjXE!v9u|d{^y6`>m%HfO=IhAAbKYb|K>N1^a&3Q&X{5(Vc=(!=;O-?x^{g ziKn-UB<7{@Do@896EX_-hU#X}&Lr`k5^L=z*wo?j^-5{hQ#Y;2%htZAfaZRNpuu}Z zuKW31+F`>2@0>_EU(>qQWP>H9*-C*=<|F^qhzY@4@e*m}aDCk-v)A?`&eJ!wN3IP_ zByZ&gKTivYUCYsfKgsrtxm8jea>h!6m{-^SdQKI}yCV6i`7xgWW+D1ls?g0sSZhpueuZ6mG`Yt#!)#mET1~LpY!2j{5AW2W{$67NFlMQhW97D)noID zO1!bULAi;QTduLTHYBdQe`7M2HdezcE9~g_wRFaK?G2K4b>L2Nb6ySRviHtMjP*2f zqi*`CY{}0h(0MAAFXL!Q+--t%-tOwHQs0VqS$|>En8p2wms|LF-appHj0*3BN2qOwlW>tkw$DHd^QH5 zVd(Cc5|w--aJx#?AGhRF8!Q6_BzXw#sO@t!H-%vA9r^JVrXe{!fy2VasfQ*Y%wVDi39AW(^M=mAZ3`n|qIn&Q);q%3O)Mi;tT1@2G#w0D?z+wZuF zlM=#MH7$p+JNcnpV6-3jBvJ;0PksY?+9zS3IC#ssG%r#+F*V;r1?u;4{14fWll^#C z)}7NY4It5UCv2~?0>w8`3A>-UQQ2RCIY~g0rB7{%o=C#bxOlm>AC9RaE2I5V?#$L!_fSW{Dm~@!Ox}|LX1y#uE=5qo&w(b;=e6FP z%QthvtX6>HapDzK43I9qQOS#nE&cV(ehj`xgrq%DyV%kZs9J98=2^DVuT^7Z>h4Y%B9R)Qhd)qZms%`%!%MCgsEh|AWK;JG z-&6=})FOVv$6bhfM?Exu(C=nW-}HYq>G)4-k4O7BI_(dWM3+upXkxh@|H4;RkO7yk)jxt_y*CM!nwMMEr`n%M z##WMDpPJB>L;O~k=De^U?mBkej%OV{oM?Gr*^ok`Bv%h9zlN5Zy-;DXRGRZ~KcAom zNRH6>dR&$8%k~~p`1M_|8 zW2FNmI4Z@+o3)5K$@{^dFTU$~1v07(;)$_LrT(1vT8x4zD{G~UJTg_QiTF#3c!+s< zZ$v1nnf7@Cz58N5@kgrL-s`_Y0Q;%?+o6AZLu8O<$l6iHIYwngH+`!InR)ELKX1kU z{p_6j^MU{1uVu#2+o?AfYf0F33lq&RuZ}W)zxnSUn}J9KqL$G zgu+j45+?zWLKE;G5=^iMGXnmhUrfkrs`4Ru4rK8dkMbNsLUy=+R3o;iqokUVU$*wV zZdtruqr69vstn~Ul}aW^$Pa)5AS@Y96(&*T;MiWk{S+Sk7AD#YK$w7#-+spzzhM7A z07;^kL&LHFbQ#ETOQo_5l!qjsLGb@`&1C?R3A)SF+&8)e%RriV(Xw9X=}|zG45ufm zjz%E(djWJWsP&0TvmfZx-Y9@wg#B#BF?2@>e0?Bv8L(v!;%iYI9R(r%0HLz|6Cz1e zMA{Y~stoieO^yDRUvS@I#KG0GRrtz5q7DK(NR&4oCEW|n&JuV&N@`|;h*~f)9K0AQ z=O>3?MgZ~-pfaYA6CNQ>7L`E3ZBcyJ#w1EnlHaUAXdI|2TcVvQiD8gI@G@^coK(FQ zsI`pX*9SUL;|&4e3IWImUy|W?#B~Lk<8lb0vgAP$u+)NU_LHp6mLlylpxKfq&)}(Y zO&_(WaI*AGq_oK5pFj}m7YY!GjMD|B;%G^Iq~O0BZ6GQAfn)gOpb%jF${EQK2CaS&RF{`VuzC+e;c8-%$w|py>v(GST4@BP3yy; zs-M4xq0=EJmWAP+gMw6(qtSSH^g&*-*|BoE)Hgh8N%=#R)vH{a?n#@6qLjsNxaBC5 zH77jvtqOy$En1IFmJT$7>h{_ognj9q#QxQ^t*|~OCF2LG z9N#@0aA|c*FKQd-E@u}LfoxrbRgMF5U@TGBim*)jkat9w36fp}h&m3Y0ieO;$KY*> zn4gp&8iA_V1>XV9Ia5!x%9{ol{XGLhqYhn&P98MZMERG&$slHyJ%Z{2D|0_EWxK9v zGep`??r?s?5Oqt|=0~~Ugjtp#7ufEkg&-Jfp-Y7@MWhxzNXw4KU^;;dNRttF$?(JN z$*t{+%Y#1mdWF}=-1_p4{+>GeZ%56OP7(y8WP1Iib||I2eqsf_hybTY<2a>?K zE(h$N+o)T;B2juk37|aVVrSRpC-~iaPuS02jDa;eE+;yS3dnZx-f$+KP((RT1>W*I z8WjUHT(JfD9i6C1_5&dX&4q8_yeM};1x|2cl%GO{l@A^38L0--cQgm1K8~pp3XFLG zY}^FyZj4@%2)2az3*u);pt@+}8w>Y}pvtX1GDJOFfmS^fGFES>KUBic@D5q~XgeeH z@0zuh9Kusu_FeRoyhy|^lm%hQ8&pQ*4L|c`OwOyu$y5|C;CNar&$dU$#t0izRb=FYbK8O6vJBUu0VOv7Uz zF%Vh^Q-LYJ~48duY){}Vk4oH}OEHuYKgICt=s8P@UV3P?tw*q%kIOA4(uz1ZT@}vzkpd%PITeDfXruDLh)%JXC`{h zBiQU^=|73GcahPg0I!!~a+#6mPyv@nfw?+UmqFyz{j*F;6h7Cne|qK;`q%#Vl(M7o z7w;DBl{4CPo(2T{{(&QZ|7R3%me5K#0WBf1!pn>Dh8`FES5&1HP)-Uwj|#X&2+ZH{ zpq_G4jo1b&uxdz^S5umkbv=nW(N`|qOLn|_vi2OlM6>J>3Drg}2ve-jmE_^4AVP{m z{rvZz-G*vDRNJq*SN+9=fK0-i8KsNBovL)0VBnJHY8+f9(j*C)MpUkm+u8V=>n%4B z_}u-7KK`4B?-`LIJ&TTX$sV|>+t{H9drA0XL@hpdi&x4d2wH$xN+&FHq}q~e46lHg zEh82Agymbp0k=fv$35w0#_o4bE9mz`wJd)VBlBx#Bq@&BlK;&UiXGFXthV5OcM-@v z2FfC@uKonlQyYjsAL3W;5IUjW%#^HkF#DhnLgJ*~MwY#bzi|3qsVVrFR)wtLHI=X8 zO)ByD$oBTzo!$$L*7wB-u3mO9f*qsy%G!^T>~TWmuhQ5KvtxIYe-`|TmXa&he?aLz zFRaySO11dVe_1Qw5__KTLeGa0;58!Q%J@6qK4jjdRdI5C?w(+v&y*oP0Q1P7ej&yP za=_(ky}VuSd2dDSvs3u${q#UdJ%BjR`$$R-K1axj<~~Jxu0PUxw$uzF-#>ls8frfJAIM5{*3ilw!HQ=ffPnn|Opq0R)Wrp~*zh;L_r7~14`Z(< z+2jxIf#c(`0NREz{;=@~p`xu5>~DA7&s+yTJvDT%!`rh*&7&Lzek=ThDX_OF3?yQp zk1zQDQ9z0SCcm;2wO^Pv%U<&eiS%rnz@xC_DKT=NMBo{(pZk4}c%@w;tH|d~Ya?o@ z(KO)F3F9lfQr_!d8l1pfQvdyvjP8t}Hg8#gP}epkbJu%sL2W$xiBAB{-wQu#VC2PN zo&LSQeVK6}3Yr{*V6 zMZI9K?;@`+a*vw?!VHk`ZkAoyrZ4UEOy{_QNYGDi^adAXsr9oY_SNvb_S&p!^(*fp6yE_;9D z{%il-H^P7J8_xEUDyPimmk_L_L$7gZd81Qc|N6N@o!}P_&8YV-JiyGgGVpCr|48)t zEsh*q{^SAClx5gT`yKgPA4)@1$*yq7q$9; zznqsP)LfBp>yTQzac!h!&Z`+UD!VcD;7FTCtV1dCt`_KZNxb6)fyDnzR%9I>{CxS3 z2Jg)RZSMsfJ>*@s2uw!I9%=Cw__u{|0M)%wb(O?b4oK3Q%P1@dKoK&!SoSCdNwB_7 zZ>e~kF0K=@Fwn9@P3AC&0lNcaeBKqPD&Nn2fxO`gP!d7hkNpwlhoe{jxc4qw@}p%E zh<;jcpK|yP%GVS{uNGw5BZP2j9;I=_Tc z$n`T1FP+z^ZK~LP$Gi#GsCMs`EC6Lmx*d*18bcuHFodR0DCpzhO~$)LqV=a>0}axQ_ul*eAgqM2~T zo(df3A!Wg+DX-|lv^*rv0gW!DepdN_v^nB1R$!+2<@=NyAnBS3#+bBuxeD!Y0UmmANGU`HA=sV*f#Cd=fY4Eu2c-JzYpcbzPhrf2m^>Asv^Y)_@-jR~Nx6uEZCf+r z`x~`>Kcjrqn{-!&)5 zvmSpkM-ibx&CW%!*AR79b;bx=bI&$~hwe&o70)4=Eef{0)o}=w_2hQyTNy5IMO8K! zV^DQjx;PG^=|XOP@n!)5GC9~K==bCDW^dIdRT(oahW^#zDjVh0G6SeHAZ^>OT9 zjCLMvU64YUf1D=_EVfKl7CQouJ9?Wy*49ZiuCkZVa^KbDLULs!E7jc`6I>M@$Q$3K z*Igyaxhyd72XNlBa0uLg9p*w>LsEeMo06g021HES!LZEVt zU{`zww~c%P*5gYu#ijma8gDjmIF}Uv-N{a*q?F2mTjq8LUK1KDt8khC=q!Cm==&u? zg7F6Crt&<=GJeG5vYiNHVF=y6d@Ek10(4Wd0^Oncn1%+!GvW7yhB`-0T$<5zG84p! z2EfZtWXqUCf-N(Ea@$ih-EvKY>e5U&i04mPBEtBH6dpA^A)DurJR^b{H?*-X^YL_J zDnjk4pY8_0`|B|ZeA)$SIDt^m!jR-&#H89^t+V63tJ{MO2|?sJ zjHiMn(Fq%bwPHRzQ~Y(HnYAM3&V#jg!doIxAM2K4MEt!U$}`moopqQ6Ri>`P*cA5- zzdQ=G`N>mxn%-eAJ$;i^ZFD5VA^oEBU152CfMZNhrTSs|A1CRj=ox)(m0OqjYf8)! z4%1@XN~W?2mM6IZD0KpSjp^}@A);+@@T(CM4WSQ+$}%D;?oZ-N#oQTWoFr}nV^7_zh@vve4eK*HMf!P@$)Z zzrX94?d6lXBqRvNYl7zJdZ^ys@GUfX-~RpPOPS%+2;5V>HwZ@y%Ff&bDELr)r0U#IC+sW z>LnMbrt4D08Hz5mL<8Cvik5H4cYU5Xo zT;+@|ZRy;RQkr@CDtJR~uE$bYl1WjUYfro;l+-B2zL1DR-jMG=M%**SDtM)21lRQY zr<>`isx_GHQ2HkwTuz>|OxW*y^xg=TLRMN!xIT|5qLmeo(J z!IJq}p|}eOO@_Fh^;9`Q+Gb&lO=$LWIhm<1DHIXmF7i$=jl$Ie6%d)fOF4PkQly=F zHpd>)rqVpNp7{6K$%t3oMOoUP$g&AU%HefRVeD4b&A#8#eu%vG8bWQa3eO}4SyAOu zM?zfuFa_udVS8h_O(k(@YVZAAcW?BHevbWD`im>DR>wOV1bAvJ2po<6ZqNs+6zKb&AhfALi2oIg; zeWHU7gwR*a;A8EP!yPiDqrgSAZ*aZ1l29bIQd>MyZ9iT&l^7Zzxhhc1B72~UjOM>>jNX~%FyY8LeEKclG+ zR56~F|Nb&RUuGn0oIrdJ-O>4;$4I6;k7)98!`#_v-}RvhA-EDp0pM4dh%|ECGiTE3 zj7L+Vf5f>D(ilHiEXmUB`^UZ*j}szKPRm7pWfrRsP!#gb-tD_Ei=Fo0Nlf1hx6E|@ za&FCE;>tC!8-j}GdIA&0d9(!$GIc zgHRcuCS-JVrb>=0B1sdL#G>H}R5mM>IPr?z?T(!B$2q9bz=%^7U;X?(iSSYn6=={3 z;cFC*X$nZu7u*uenx?U7kedR{PzTKfhYTz?KEbW?Y*U8wDJqYu;Aw$D3GZnNBwQv~ z521An>aFdI1KTGM5;j`_H_L>{94u%L5`yIM$Z$3_Ky&8~AWh}?STc9F=v;fqzs z>)W?HHqZM&eQydVMG9qNo6V0u6BXNvJYPkKQy30>KkvJ7>4x2XoQdLbVak^q&cjFN z{gGC=mz;IkkvtBmJEFpcG@q6X=YU5FLP}wdEl3@ai0(`nZuNF43Hu{I)x^S}S&LKn z3#wU`lWT?8+zdhv#y3yHg0nz30G{AE*pV^R9bsQ_!nsW-Ihf_b1tD|U+m&TF`$QS~ zSQtwEu$bZkdS~T0d@n*MWxm8NnGX+=XV*g|D_mzHjJQgnevUS66=-NCHt+#WW{}SH zCHkG#@eW=4c5Q&31++NpUrR(q?`Lp*0a_nO%;oE-#Gs;c4%_5DT!3C!p%aQ^RpYDk zFu+65+V9SD%g2=K)zio1=S^n5Sj76$ z|FK1oU@ree#oO?*EQw5K*P3uUT_no@S+L=2d(_$Q3qrHGh;!P&dEws`L(^C@(Tf&KP1$~E>J8HD2M@eG-FKkp)f(vgUl{1h}Fue$;lH( zR;-qbPoE)h7EkMweT|O##ionVZ)aCm`Cmcxh)RZUA~@hkF;V9iRu^M}5giEyToL*P zis2bpcr};7Pq(z;q|=EgG1sppU0qkWWW!%WZ;W&!p?>ub9WFlp-S{1q$tGqBQpz%$ zWJ~y0G<=%k*SOn;<7@59Y7w&Gj40$rZ38^M!tYjC%EzkL4yFCEO@g4?uI_$RjuYk# zq#;k!#bh0_5dxU=ycHz%%IH$)EBnwM)DupmlhdU+{lmevGk5%5_73iUT9kgUQGdj& z^i&EGwSUj>^~Ee}gic;1B>uSZA_d9zXgSjSP_ZuTG1n#MnoB9{l=FKY`I`oD4}ZlX zQ~V-h5t~lU7cMoQ?mAR|p{@$w(D6icM7KLd*DP6gJ&ta1AUv4rMg;iF?G`<#EJO&m{?34zGmO~8+913#`6vx4m`25h?BG3upQU zGV{bTRpw*0BI-~nRk`c5ikYN=0|~-M(c&(Nup-?8M04y=Eu!zVU-}=+{nx$Y3tcVv zbHXXHtIFy0WM<`7C8juy^2@q&`xoLdy#L;7hWNWWYy8R7Tz~hJRT)9`i-%Ng)5tyT>`z&|VM2SBIwjQP3Qtu*o6Lsv2We zWPn~25*Z~zu6-{qLEe*8DXa|)K`_EY0R+Gkp1aq1eov0zcixv0yW0OU{*j1Q*IS)| z#YY2Q7)bl&^IW)*zt#v>-`fOR#OAl`0j+l7%zldQV9oSNk0hPh$}6ihjrEq1y2+T& zM)k#>Bb=F7WI&fxvqBZ`;~UY9M#+@My85&^z{_RWbE9W%QEf=H8{s2|wnkWkS@9Q8 zHRZW`fs?|SEKbTGMuDqP$mWiTI8r=oNSw0=iDb7p1U~6dtws>WfzsPT6UZwNDio6qM8wv9x}2qq1gN0vR0w5yKTd z|I)qq%qyb%0-~{C_-#ii?nfon=3au)NaN4(Yf0l)3&>S3A9(zotU-)jeYc^@o%2h= z3ZG&QI4G^ZQk(BcR7=|`o!LbEfeCv?J|(iJ6Z3+Pi4w3r7e;)K2cIFdIv^-}%0Z3@ z%1^;A?>HjjBvSCqG$Q`7cpRc67=$X21VhK(*&w^CuC~!;VxNwEy>n(KMQP6yd2ltS z1t7l{ggOFmoW$PDo>_!=j)@X@#I*tVGLTk4fqIbd3pg-u{dfV`xZdcLs7_ODCrTiwrB zJ5pMcMmBn1-Mx+=YXkeH882SChb48g<&ITn_cf333464*CDU5ZU%KF62|4ogqG|9Qgi=t(1W!f-% z^cgkN%eFu2RnLr%O4VP=S{mB;BrtsvNE@eMFLXQfs~NICaUVlQ@7K1FYZj_7RHex3 zgoPk#CgY+WI<4lV-)~mXP>ubsimkU-KJ`AWN8Mqq{Ao{V&#dhuv1y%71nBmQN6ykM zw&tkS9d2NBG03(67TXqTUZsCg$)ny6xSrzD@yx#QI5K@%(6Tu|wSMwcuYiYo$mabxt25Njr_}5#C}09(SJ5IE8&3@*m&9Vz6ux6A#w`x5uLgoyo+V0{t!#s)`0S_uOh za7&y3aN||b_IB56+g# zdGVGCWyu_h)SyCa#-&Er9#z<9s^%-eZ1%38H`)A~I0-Q|jopAp^ z2A3pG8J+2~c$dN{X&E0Gbspq~<8x+}3ph~kLP`S(Z6C&`>ZCN3bV9D+N7Qg!Uu+Tn z2$4n}LBdJ5F4?Da9*N6j=$YOhY?uE#~F2&R1Oh)fCv&t1w8;Lyl&+9*U9GsjroMh^~92*;S43t zCNv%KjIA@9u2v$#^hJ;=s`)GWF0VBox?>x0hW@b zQct(%)y`D%PSAC6_m9&UbMjwp)6F$Wu(Z2rVmtOMe)dnQEKWpsnMy-NO_rVzBtE(? zX{Gy&&=SRBJnLF_JVF%@mQgQvXpq4=%?TYSyz#5a17~CQk#9V@mk~kLuGBY zy37ddSxlV2^2zImt*|rUPrZ`n;{}bJ7q5R_z4S8AX!xgE0^dbT)~?5d5RiIoCfElY z!h@iWxnL?^$D5u>dX}|b$;&kU87z1)lDV(?Q1s!+ zr#9$-o_=u6gR0mu%;UhIRHfUDNVH2(>T1}OhQ&z!o;D)yOhf&V7 z<EEO&vnougWuh6DJcXbu-0{#n0xmkgGDxkp{h;8OI>MC(u79hn9lLh3lf^6NR()GP zEcNf(e*e;|zk?#L@y!%Gc;P8p_*)E&1I8L<>GtkDFniUT_;vpYA3GaM%1UoZc*13+ z*LG&T!vay?Z_$nu9LB{K5GyJ>F=`R+lud=BjP-H#ra+J0CJa0c?{~f1ihN3MA%h$H z5Xh6W#Kp|3`$&Z{j{my%9531^U-CTZ6dgmb{Zb+Kr~-Csh$=9OPgInzu@r~p2>qvN zu4Sykdye$}70V1iw?em};EiF9LWl$rpE5rp9J%8C9sr9>q1myhWwaxkMLT$a34Sdk zaJnUdUpEq@;6#-Z%`mtr=A*=6iI)=&H?1-oGaj-!q!T6?sgMXfd09lPlQ^_noJ59G zi9%wfMuE{EvI@5|z#sh)i!U2Mjxj{u3x$GC=CX+#ZvHBj6u_cS2cHEW69SbO5^22r z7*58aVT{_VylZ&{H*U|RMeNB4RR(c~l;f=Rs7ir8aQ^V6;k-whTz<({9by7Lm8hIh zcgWUx=m*Oym=~}?I-WS@6QD2LZQrwBsgPY~31+t(9pY}vP|X<^5Ok!TnE)S?J~!Tq z)wZVv4i-_2)&eYGfy_kaDg$AqL;$#{Qgdd}p|g@^$IrE~QHp*!($nb2GxGxZqji87 zPMp)d+<^gMmcB~P;Mtnb%<9@xcQjD3q6-`3WnhYrM{GJq^SsCrk%zm#83*MoBGsl^ zbPqG@B9Y3Xo!YYvSN>(bWH_7UQCF=f|5VXp6by_hG6z117R?Xl$MOs(9=1`}X-hV+=`?3qb|5Ne_DY2Z_cGS-=Ws5~4+z3K-Bm zyLrLP{nJcsg)7u_J|-v&>Zn{wmIa|pLD5o{4FbgFY6W8Zw-H65nQJB_O>%F;D;wpK zQf&@PAJ*sGq~zyG%SubGib;Wh8Xskk{_jipNM8ii3|{z-QweCpPSe0fE>x)TcNMrn z5J-r8TFmv;glbZPw;ENq@cIxeQDKI2)(v4s{nhBL?An1|${IDgOy<~oDDXuXur`9U za+YOhL%%wFY!H_No65&@!GW2}5aiFT)9ogm9&^~8F|byUzdv$Vd^fm(5C9S1S9K|CgoU)5U zZGYZeAXLnOYuxL!Xq85F6#-gi(QTD+qK=yDvo8Xylwp~S3;$WZJ}z=Pruj@mu*@Iz zBs8S+@fnk-OFimkO%5I66vt3mL1EWQ*$5l; znJE{Alyl=E($~)L>qC&Rv06Z2`BP!l(dT*MlAu*wp`HT%4cL8`$&PzLD@n3?T=O$-?5ZsF| zyLUTGcCIW#Ps9vyDB$DOuOGICVn+4fesTT-LH`AkRh6RELSxAkfikFyUp(T5hNW^l z`cQ7wZ}GYTj+>!`_PddeC?$=7H=aI~BXwT-p`BFHYt<~Swq)|9fzpc$NE8e``vyHI zPX7`r^@mVgTzw@V@V~aV$YkUhg<7W@dyfXr_x7L1A)`m=I?s^g2d;x>ap~ zMi7G##UN@_@XHz<&RHhk8k?EQU~L}!)-omE<3%5bB~^|supV`#{qAQui< z?vtQ?dGz(+Q}QE@I%a%+00hX^bf9tuKCpD6kGRPnTAHY*jRA-ouS;+*oFxhs8`&8K z`v)7j%bV}8{|E-FjQTl``umLrM2(*RYX~)+UAmR0GA=#F~wnEqsJO}{i^Sh-xE^NabnUw744OcLU| z-2V>TX_CmnTkQ@Dw9DyVSX8_8$`)K;Jx+hRkn{A__44ybYK0JklmW(3mQU8o@_j$1 z4&FTR_)m394ityAGtfiowa8&<6y`#!sfb& z_$+(|!2iTRO^m2Y$|r+VpXDA@4}Ce26?kgL1~Q8W@~{s-^(I9J)t<^I(iwcZD?bI+ zo#GhbW@Hzg-(dOgKgmT<6dU|t$y(2(Nl0%rxC)_$h7-K1x4pG zp9eS>G{DWCyTKO;=0_{;@!f~pGctbb7|+X2OMRG@u6%l)Tkg_ImXQCb@aZHSAG_M* z(w`H3qC*bFniWjvq{f-&Xe-q6{xt68j9S|Gc|t->p=4Xg=xtw$9emu@9i29@rtm6O zv#o~lXqg|wm!Bd9$t4GdSKbsbujmJZ{GDd%8O#RDNfRF*@Jps9${HkjBV$hVWX)@tE zGNH@Zexue3I!npLo4{t9^l-ChUk-d@Cp$!pzcA6AJ7+c*)22S*o;_KAnYvStUqVb&VT8ENZ0yo{W@bo!wZ+Ub_Kd=Em=T?&?&RS=ovTFP)57B4_2i0&@VcMkJi zvN}Qg{^}mo!`ExBShr#hE1VF~nX~m!YTS+Y1JdLhZ%1;g7$!45$nC$>d;o28FjnGm z@>QO}NfagFm42?P=g30*ubK3*dG_V;R|0(UkwMe0e2ZO`ue;5LNg2!|l82+I3p568 z;Gd_>RWMUw>1ZGKBWLazv9>h`&&Dr&pYFWOMjq-C4CgQ)hAQUBNLO1PDVul*9t4vX zQp?uG{N>QYW=`v-EhW{n-3<5Q0{7_g*CgGhWJ;6!p#gGe=iWMcX~5q-emSdW4e6*U z)ua3Ny_vU;ZBhRS<2>PwOC=%I-fP#_t1sN6C@7B>j=vdG&*FYXR)IOLi+!#vdA^-D z!|VM_wz&H08(v+{6J7Ic=QE{bx4;D2=v2n1lW+fhc*lkgd>Bch6cvd?4=cl{9Olaq z7YZ5L@U~a1UuK1s2;>O~v#W0Iy!`K1wH+P$(xE-QDgV z>E>I(ADKyYcR7E&6R%o9@tYvcea=ZNuRmyp%hj}s9Yw3XrL1E4Ge8Hvs{Il|;C{ASS%2-N^SzUIKGKUiaxOH6oKhaHoW49xqOFtl<9 zL9Q`uOxsbE8BMWbwPu;|tajYW&V67Isv^ z5&T(;lQgALg`wh)RFU=g{uIYNZpx>-MTISMr=R(MmJFEVKA#H95aoR^O!}0Vx9r53 z%(nViO}L%>(9H%Elrf5yl??iWPs+ZrpxyrFPC-q&p2(GUflpmdwDyfVhZt|oz>(?o z2rYSw)SUX$Fh<5o&vJlwdiKC+#Y*)m$KQF3iwpq7OxA0RQat>C!5@lweo}(prADsY zY+$s-nb>;6)6GAyr=D!Ixokb^&!>|=zFgmk$i#CScWp!$)i=QF=2B9)lf{M{BlD09 z<+?FwX(cz$n@?P5P4>liy1@9Krc-O^$8{@gs~CVf4{KA3IoYRmy!m zhLQm=AJbguxKLN}ftC?mN)bp&T+Vv_x4I)QwP!FXN0$0Vk&1;1j07YtB%B@W_q*<$ zlI{Dc8(4S}u=_FZ<6VB0=l;q)-X0OtTd9c*Pf z9!z=%TJHgNbIIF>ex-hDP4`q@wTjE9xzGRd&aK-O+`U`0k;I>Rmy!$C*h`VxY2@1# zcjq>ZmoxKW3t9X+hP%6dH5hyC*WCuy!a4tTz??_F??WkKSJDpFd@+g9yyM#tc4<6} zeff*1#oOTYW>`>IMI!8(OZAo>Bf>1KHCcIbu(*-ED|IA{)|3GnD@=bG;U1%RG3i5Y zX@St^%%3hvNPYj+ehT-$iL5chZCh4Y7xjy#=%x7Md{)T?pqMHG6s7V)9>T>_n(6yh zHneP=I}cISItjKHP}mLK8TWlpTYtG#J2Ds{{V~LKpC{S-jbAPr9r_lI)lX^+fSG4i zWL;JK*j7=+RN%?9Uu+IJ+<_vbzd0yHOONPoF6PEhpS69JL>Ye@km}8S;J!cQq-OHt zLMjkKW4r0(l-_NrC^$520B)i2>jefHnr{ur24+8mTo+?9J;T(9y6o@#A8tE#{J0=9 z?W9ybZU6AJD>qN%rEi7bmX-?Nour>}WkjJO=h@%(a*u(UG8H-=B_qD4muAO4_D^*0 z4G7CW-=Rw~<)`F~9}`r{FVeakVsSukv=058RGI^Ii2*~Zjc&CFkQibX6pT^A{NpJP z{i3d-VMeqPgC{=}%tM93l0i6j25)u&W+BS)>J4*Ux7gQlC2= zl#2fL3w4Z?h2p5Rn-nRdi0|>15S7H^Gw`3?)yLN<&0!a?d7o=wMH(TtuL;X9UYf?v zv*%OtQ8K?FA>JCov;b_Qz*vhlariwq03^1)Szu(-6ef0C%qyBVQNapnY zQoc5!>s$AHWb%Sthj-$nn(iz29f{qo-WcfkJIU|)-z&TuHJ6L={*N&6)`=oJt6}9B zKrRDBrgUW4<9};g{F*$Qgnt~f@E|VUdu~zunkF53VjO*5eS(&Z+Vfh#Oovww{_3r)SrDDzEKqS3F7k8 zH#yh8T>0}3BjWjp}=}llRS_7*s}7IWQZ2=VeohCT)js})&~Qk7JU&X=``{G(yJe+~E7XQCy}U%zJbV|%fAz^$2zF!z&GJ19J9*G4~OJF_+U;clc@kitO*eLIkk+kIk>8XsasNTEkxE(f1a>w%36~>Q>;n$OH;9O{m(P(r z-RJ-@&ZHTk67~b7q;g#yu2{++)cm3Kkr^b#4CE)yY~tmM{MgDx)mH8LV9k{R!?{d5 z$l@r8_G2f5JL@)2HFZt~TIhE6gu!%K!W;v;iJ}h7-Ju>4EVR|Kv5W86U&n`VvoG}x zd`P0&2nXMzMwbB8~>!8;~zV|YsFMSzpmbl zM;T)CF3d{HQpDbwp9=E1#=d&qxp9nWQC-pFi!vDR(X{`e{<{s<{NUQ}WXHzuG|G1K z=WCBl8=sW)4Av!vckkNVykY#cCADt~&2R7-4~{jSb1WO{^ZwuebU0M9_iOh-5hs8oE&4F+08h+oh9Th7^KK__9NReL+*Stg(YAZ!> z3I!qjr9p0_iQ;TK9eTr@Mvlx>g4=Z~n=Jkh!%e|A93bY5JMll&Q^$<7K zm>=@OaT1TPr{z9OfO?=HFJzVl?c^yv;TNw8@cS`DI?WKDb>-PwvwLuL8^toPcDT$DAR>swh%}h%lOGhx_Bg_oFp(k zpr?|lj;xU!=LDN4=#UeSTm>)kt4z9IPJqa5GZdDDZxt)2McZDJvN~AM=uf4ZDHU7t zxJNY+M6&XpIiKQ{qCqLH<}81X=>^s4eT1XmR-7AS42|1BIOYfd?jftum~s;u0>GpV zVo3EcAYT`sA~L;p^jppIx;C3asb+AB`ChW2o|6(A&HHh~l97KRQoc~tL($u9eKO8b z=-6}!gO7WtGjZ%&>bst5qFbgKW*Q;?kd7wdyDB1Mb7Y$+%I-FzL#njBTELhzmVMD< z`tDaDrK4mdkFoEh@JWzjlO|mv7=07lxsHx%d%wo}g%jIG=DbkK;VkUPFkt!cBTmDl zx=~!#w!7Xi6}oUB`Sh_TmU2VR)g&B}OO=J@3}SBDs%vrSE|580s5fPe9G?hFIbrx; zqHM@oT$F~`@3M)@SXWuhY1J_%XK=wyWdq_^k{(3FH_g=L^W00rC$eoYBvfiv^QMS1 zh~Mui47-eX7wIMQT+j?Xb?Htn$vV3TU{7qQeE*0DIUaONVVY)E5K|Xr0_hSlJa1~Z zXvKIki3>OOD64Q{A^&# zhBGw>s)4$skjrMBeRp~mr!s8UBRidx#o%^0xO0V1)8FKHh0eNjb<`-?7hZnWYFS4q zU8IYhWR$iQ%qKJUMphSp(kfn_%kJQKMK=c$Aazc1m0p!18I<=FjRKD>0S@!pW>Q#wLutjc{2liio~bKzrYQi%rf*-gDgKC zqw6~Q|WGH()$uR2GCu0_(KI6TbkksFk z?Rnf`5?|kUkm%R6bc_E5{HQofVcmidw2itTnQGV$*$-Zo#Cop`Mvh>2N55V>68u>B z)fKr)@66=MtqqZ;j%R7o8m5S)odl}eZLX^$ecqCCH+<|d^mGR2&q^=_-^hS`HM5cm z)c+ipsgKc94m~1fm<_QP)Lt0N(+s}ieqHu8Kd9vM zBt{&^I@4-nDob*J=}y@}|GsJN(WxRJ4Tiua0&>e**XN29mF;eR?HurF9j^fIUzpM;gCq^1x`IQVV z#eH?2z1b*Gq$Gd8_XeZ6(I9h;1MhkK$PX*cIm5C$S?8F!jHrmJC@J*=^p+&!WP-+x zH!iZJozGzm_POP(8x4UF=)L9*i@ONtg#w6uh@f@#e zOM7E~@7%0?JI?Y=$UD5P3~8a*H|pMz%Pa7{{NV^X1(J++YKBN{oZa0?k`_Fu{AWtbS)H;=&*S`c}=Vpj(G^t&-o`3w&;bz;8{4DHjd8dz(fqTgS{N z8+)*cOXNf!vXo|CLM9m&;!R@Y|22ecB^>ggk4ikECnk(DUZEc zMp3&+YS5xT&CMaoCn~K-f{wovh=Ztv9P$U^Io4s|wJCg?ppc0JQ77@JHT?@8T{!q2 z$x;F&_D1cp95e|9yGVy(l5Ox$_tusP)n3ZdbdDc)Oq((jRame4@c-=;5`pF97)(#I zL( z2VtC)mu`U_QKwJ)Er5O?Nz`%)E!N9Q-;-$hJpzkp4dKJ&*)**r(<^ap;GLWmb0(V8 zyJAy{rF@9^%@uyB%Mz;^A|Ci33ZziH^3DN@rfcQ5-B}3p`>*zsokoYUjqj2UvlmNG zT5Qj?oW5szT}IEEE{3E)$mXw41qc=+0J~ttFixJW=wfsGfQJbX?&5TJEQHrL0OVLY z)|DbP_FnR1;eUs})p{G#w)aqT5{RdW*yawi1wEio+()|^x3E;$LPQBSknj|qx8Us= z6Oy;0muW5ibMdn?zbj#4{<}{HQO@yvV@!Cbr04|L+=Oo4K!HhU1`rilJ|ol^lL?^( zrbh!zj(rv+ZOvOxNcf@X92xNRsv-&EALzl-@5;HQM^X;IJ<+6STAgF6`M&KWY<1GZ z28Q(4drPm*5z!T=XByrD)aR9?LlNxGB9Y{`N& zV1wZC^7Dp}l;Z)!-n*X^=u&fU9;vhGSJW@GYSXU}T_l;HDNZ%N_z-h1T3Qm7=a5Tz z=qQ^7$*@a^AGbO4mLE>w{!lXSw=TYcI};?BgNM(Q5}8z*Tum1orATT@#E-?5^i+Uc zxp$_(p`rYxD3;9Qr1~T3wFn~VN8CpXNgN=LGc)GSju1K)Uwc81bsr;<3#^RBl9YA0 z3s_liy&Ep2-nZBfd7oD4)jsuF>JzU?sbqS(X|HSESJ5jIG-x7)dPACZ*__po$UKQ& zfaPpAciTMDCS518yuFL8!^>yG%cFk>Nm?zzF9(r?*2Bxx{JNJPCjgKe|A%u*Fq!>h zu#Y@4?-o@}brRnv)0f!-yF@0@(5le%`sUF@<$Ws>lAk0Xt&o%mQHcpr2-RRKK2}{= z5N@k^+0DB9n{wBbUME#}&P9>6JzDA3U}>*KmrukuOwfA7YKTigumUQnb6fLQLk~L4 zcFJy1nuJ~7ofVk-;D5n7b%g+P>cT+$W1Dc0je;t4pNN>MRF%y|1OwMcCyC%9o3<^A-i? zIEGmZ?V7mGVk!64vwAFguo{uBdc+|h4^shSYW};rYf4?%Y$)l0ZQ8nlcWfK0cXo+Q z8*=Q=HZUi)tnHcc;}9j^J#6y{X#;N*e`4Ced_cPQ7rl{8k!Ajpgn1(kzd%H(;8@fgr`DS^* zZ~yO(<)Nx?L{g(oKM8uya&XMZ?T65D%5 zb8=`=tBI@b{Z{+FU7(tt*gWJ7tSwK%ez47@F47{9&YpQT zgZ+7b_M-y6Iu?zVaWIp4>SJ zYh%W4zM>Z$C2*2avxf)uLEbi$t?9S21whh^=2iGM{L1Bv(T(Q*`}l1|i_WiMNV;gp zI_}S!kOpbots&E_cC>uoQl~cYxj_I-P~Qe}L8Hxv_tHyS5O2WCR?a8ybV;vNY-Ot@ zb>Ho2eVcsnvaGuSM%h&)QS}#d*n2&WcQsFM<*M=qfP?R+QEh~}W{Hr?oT=Olk2!~r zU6p`owcJ1kKruUbV|#(w^s{Frlvx1;zBrIIYx}7UNzF5`%&0Px|3Sd{vqS8*lPqwS za*$M`X47?Lf_<&+V5gg5%w9vcU#&YoiCzV=r3EdZ@bS16W@J>6wB>pfU+llSdn!$Q_O_K+5FwNa${1C3>E& zo{&cfQqG4&fhe#%e&ES^mc3#3Z}%`iCm6O|wK%}qRm9h4Qc=9KHOEM*_8^ZVoewlf zl4R`;6;%EE?a7HDiB7M`tsKsjpd1Z|#Bx6KE?(lVuAxmwPaA$*g#CvYa&-{>C;MiX zP3aZeo+X$iPnAj-k-FL?)imfr_`-XeFSW4!-sy14W0>%hHWv`@_(N*?kzSL+uYZbk z{NSRw5Ijdk591i*o8j4t6XX3FB;A1S3NXN!B#uL_ucecG+xlM4_j$NQ^F>1bB;euC zS*mU{S^FzE51K2X&$NOjE7Whv04stQxl01~LL>zEUOO){=mbc3;t0QuSIsUW+7_ zF{jVE|7pE^^q=0NIQz)=2FRh3+q{(*NXqyV+h-|Oz2W`r0`VVL27XE;s678uVNSPf z?IecJV7HtXRE-GE?L^CjsOGN<{x;o{$H3(r)Peamk(%QJ?^jIl~lc#`z5if<4L0l#FWaBoWEz6#)7V1Ti3TGxwyPvETR+dHo zJHdkTOr>H}N{=!@DkTTaEk7-18nv=k|0ExVkMX1wrP)8p@mb3>JN4{sIe4X7=@y)& zzmn?o%y6Ur#j|5yo;W=}{_9XWnMGDX7_tAy)tQGw^@e@?%z~M*%?t)(nZ=BK-;#A^ zjD5)(3E3(nNs>xtG1lx9MU%0V7NU@(8e@r4SxZq_ODZ9i%5QqT*Zbf5-}&pg&UMap z&U0VS{k=aQ0Lz%sd`6WYWe+L21xa~>_7jdeKT`F-QzNRaqQhLcK7EVSWgJo{TYA%1 zlkEOD@iU2j@ypmmKzP3Y%RMoT6EF83eRkY_!94=)y`|0G&+vd# z+^u-)Y&$7K%{K-~RT+A@T^+>%es3@$O39V6(^U_rg$!0>ayIl`* zA%mODQT8}*SZ?nOcHT%ODUpG6ZWAzWt`dk+AmY)6f4`sd)f=8iE%8a11zsG6ny zuUGD`J>UE7!S9u+BllgXqzDUp0;#zDlJ@k%qjF>jMvn1q`uhv2bjZeti^1ECG4EX= zKehw^Z-2ZBFAVwlI_B2fpHoL)g#3DY^4r^A?^)7mo<8l9;G+R{s0EpzaK$L`n;C_n ze?DEi_3qEb8}o;z14^6ur%4f?4u6EAfn+V3p${zfGK_FJb+xH*pYZpmTkq3upcS7! z3+P*Y$1qGWF=7A>v09{b1z)@xv+r#oOEPH&LKvX9oN>pIAJ8wCeMqY>#o zeX_ezx@@xPEZn<-_9g~o`S@um+Ax|$`f?yHdfw&2!y0^jwJX8(Ns;!?qAWa=Af39z zK@?Ze$@;}P*Ay#%dzOgkx*t8Q7)#&QK9ud+?3QLSfL^!UZ3*cr5`ZRzJBS)N=q?$O zS(efpnsvE^8D_!px>{-T5xUJvap9SbT6gD>?a6$8mL_3OpT&4KNtpoO6X*J`D~nZL zw~HYD1uiQU#uVkZkgT`d-H@bW@kOdwvME_5ebvdospMQ^64|99W1yTm3NDEog#Mer zGIn)BIS3SAF{dZXS4u`KC1ug5_=5X>?rM>7ZM~jwk3bLL?=r*xjdH6a6m=Lq~>2Bn25UR?i_`x;I2>n9hy!TBbCLVIaJt#GpSyO?24w$>!+ zY`VM{`mftR9BNoM>p}-s30Q4*9B}nR`zLil?w%Zu-AkGo^e&`N2~5n7Q2Hj;c5t$;jfDAPUuDDYaUVyQ*gOs&Tc$-T*Sq&6Um5WXI|DA z0ei9DjI;SQDSKCYFmnjzH{FSojQ^skw}pd_muH%bEI)Bn3Z08>DK8BoeF0CS%018G z&+qs&72{y+-A3RTZ>hDC2A0)G&$IDb7Hxd|%?{MfAgyI9P_ zruiNCAiGx;gc({fy-LbsJf zI2?1!MMlqp`Cu1w`7o?;-F(Pw?5cKWEOVI9u zACfPt|F}d_r7sRwFdP&ioCEcIB<*6-`3xU1)F)MHEQymXs5j7S0Eb;1Gs$o%&bJyZ zZ)P{v@2>k-VU5-}Z2 zW+kq2iSGI2 z@=%Y9vkt(3Tw2RN(FM87|3x)pE8sAK{Y##~ zbe_IT*H&lGsoy-gEw~Zp2?9UQI1R?(KfKU@Vpq5j5A|72nipMFmOtLa$Xsi=lY9lelG3 z#Jg|n{ky(b3t!krH~-oC_(YW`_TZqH4*Rbcjk(l>M|LkF7XjfnLc}g|iZc))m^wuh zvEN@>7J)d57qg&>ql{2;s3g(uud;ks1^!!Q{3nFqA2gl-T$vHg&=VB}L<b;PzfnI^uekCv+e6+8#IOKVuLDwndW zFl!3MMvAz{wxSg8^{?HgB42f-MLlSuCj>JBvcgfK?9Q4tu7sFTwq%R6TmX@Q*#>w; z%n#E{%Jh7K-R}kEVLax*j6HMfSa*%*H-R^ij;&1DTz5d=rEcC`*5IZnxsFGzAMjG2 z7DiD=Xg5ck1!!LZ_BdF{J_CI);?M1Z+2=^*;|ZX_qhv!-wf*6j0RXfx7X)O=-iG&T z6QzBL@bH?NrZpYU*lAbs+GNSE!lBF#gF`OLwrkH+X-T zU=i%2z90dz=zA_P2S*FG!fIrgKAN>Izbn=aQ6@%a&~5swqbi?Jkx#m{P6D5mJ~QXW z#haKNGug>FX7a#?%)brvl@P~=!M$sQu94HqEb`1S2~9;x5-CM!VlGlBy;$u0P#_Zi zO~+P-T*D{36j&=0QL@!LoCGo{VVz+DOQx^UrSCg=r54t1+=jKN-d>9{wcpK|Y7eqx zC2LIEZV@StXTFZm(%z|T|Ja*t*(uxIv65VM=&XHfJ+N&ebl`yE>=JBc`B|9c6dB$ z`V9H#z_=bNk34sMh;sJXiWf%E;NTv?aeu1i`ot$C0)M%zq9%#tCHk&u!wY5ReH6S5 zgwb#U()}c>=U;S;i!J)g+>Nps;?I*z$A)DGJqP1IH?}Y8tQV+tx_fG|p8?f=`&sW3 zT1p=h=gZh8)%sH5U@ypzGO1<9M>RX;egv@00*``y?EBmr6G0L)@E%hOeL3F;kKHA~ z9$IV(!3Zf3BvBCtp-h~n`@0&AXjr1Wmy;T{S*b9-rS35jl5N;*V#Y`?3-}uCwUby^ z;}!VzN9fu)?aey}Hja^lo6G|u_i34AMbz(ls<}^yG7pzCPjP0I3=Pn-~%{+I>9l+3qtCjPn)X%{hC)fTKx!l*i8~Bd5dDhwSqqC@vosIs=k&+I{o$e_lTi z95p}q+c_*!#MsOKAj>>jJ7c%ERc%Dp&*)BH-={(Tb~?ztv$B!XKai4 zp|<2h_u3DYzlxL~Gk(UenIHL)d<1n1Kx_k)nILYp#_#q7$zKWK{r(WZ5Ow#c%CDnu z`~2m=VT8MhdcP8XLERDjzC_t$HouNh13ZU6>cDm+dHhQ9F1NUn;qQC*c*w8g{%XPq zE&1e_yUB-NX}gz19XWC0{sgBu zPoBM-_Vw4HYmFcYO_y(X8UOu?72|=Be9NU@49QJq)=w{MBulY_Reb)v6a~S)m88GWo^9s+fQggFK{eIPk^qwN4E#)_RDod8)B0e0uHA#Hh64I`*bV;^9K*O=O=S=$r zhY(7CMhAIfETm1R^>JF=a|Xy$Xa2wTv;9$3UBnKDA@28(Ha&uyR)m3i*#yM)ZazR- zIPmO12nNP8>9UyhpK?8a4&QGN=*A=K^5>2yWo>BN`jeb3=Vxtf+n=>esj#2R0FmgK zv0dCd&x+GPM{V+KK7^bG(lEA@H}b<(KU!IBGSilF9xmkzmx^sa8JtV|bm8HrOTte) z+vWPSd)wx8S5KHq!z`GN3rx9yj{v@e4XzdQ>~1B35YD}dd>cf}JhN3s}_ zS)3kuqKcM_n=sa=SXe`vNT@f%CQ1fi?+^xuR5BdcSpU}*T*Z2Xe z?3etf}ezmr;_Rv(^mI$!T4+qV-A*sfKo}+hP}FdD2}Bl zwSuC_cI8N4f!uI^n6TqwMWi_6xfNBH7$I$euTC*;sG%>fiGq-^@-i(M@@HRx1Npsj z!5L-1K(k}EX3t@=8&esoSR7f$^s0=@CRl&629@=~PQ@}U70@C!#chPGf$pcVuSz_L z=&K$)FmLzkG4IeTNvEEGsY%oZCw!Z|>oXZ&u{l2*>N!Gb3W*EFGcu1_EU2EXh~?h& z5*9WWwB0=D@i}Pf&+eRIdoV}f;L*vNw3cL68oqw4)|}#qPi-Z1hmLU zm)<~yj=kY4>W+w_tp@>WSQ~*+-SpkZa98$Zq|~>Gv1mn~pt183Z6xnT?#xWkq-~V4 z(?F?+=NfvN>wTBuKHJDmwUW6!2X8osisxoqA?KIj_Xgh%C$5bLv#fXQ8u1?>ZPc-2 zoO@M*hD*^i7m+PBDfj~uGC}8RcH6WZ$Hz~Up2MNxv`fq;6UAfPmq;1&)5hSLuxxWp zAfjVulxpn20UqoN@>n3y3-E!RexnlKSep`(uOZobc*groiCQT6^D50&cS%@Yf8I-s zSx*bCygF&SpmaAZ^WdJuv$Sfc3@GK_bN4yQIhH!tA`F(2$ndXf0k?c6ZjrCeCo`i^0>ZxjD z1UV%rfaOnyxt1(bhpR-ZV=V5@M_qpNtetB0vmqd z6-L9rBPUM*RVQ3# zsR{%$qgkByOF5XW&{<{Znj+2zzmKcA&&Tlc_Xp68J^e!-?~jHsaG6n;j~&L*@>IAD z03htKrhu}^fP!SN;sTtHr%%YepO|%d>A*3s0P7?KxyPw+liu2;hD>TfZK3D6ruLrv z9+Bl7^Jb1IG8e8~MHz=MKDpdeq{|}_NY!5buqse>548bYcavgl_y%g(tA}(Ykf1iz zAzaFCmjn=l=S8Dc2u2rss6{>ZC7D8FJO_=;Rlw7~cjYNh+Jh1loJkZ8EikY4b=)lCMuFXA z1%C;gw@W$7ioG_&L7n7Y1*9uk8LGaaiff%y{{R;uLY=`Bk%kM@>U~@a&1Iu!7{nK^ zilSB&bG>?~{9NtIto5XVADDxz`R~h>i-8Or6 z(jkTxkew;d9Pq+&9K&~8e#@bH%{pxsB=uDdTmo7W^@II$#fIv zo?RIFPKESN54ueP#3qSjS8Z=h?+Fg&*e&fh%d5Aigqw=KHuahJiNPfipwx6XB8-uC%rdjQNMfgJG= z%$I5|k`MC&Sp`9rDf6xtHIL5((83@*WH*&h)6=FKS3Ge{R5&VxxPY0?s=d-n@OPRV zBP0S`(z|o=JuMr=TM|%Pxm*~I<_F@H;k`b7SZ?C?@3SL{K840g{ zpbUdi_-M9vG`mE@VM&15I>4n<*Ynj7TEUNC%sGj?j=UG zR02pzowGwX+DL+KoWKI}U%|b)Gsqkh-G+Qnk1Q+{)WF054K&jag)VAQp3Y|IDYGXe zE(u7Mq$@2ALQ-k81W3jnoYVsR5(bLpDjxy^WyYLjthD?1hr5e#3X#s38zcnwT6c73 zQeAQIuEQ?#jXV6w5{UY7evV3k`8I6NU^_~_|5=ejoKv1ruL~CqM;Ath$ zni9duM7kL=SF5bo1evR@3nf}CP#V(fpYyj>NW6+}>Ht@KgFs!-0KQyx@Or;rlmI}3 zx={`7ioG|uBXVAJ%cyR}aO$i_Z-ysyM=A)9d4b|IxaKV}9IDdgs)|K#g6%D4HNOz* zqNz8GwSgId?Iwk{%A(YPm*Cq*XuAIRy3SD%BjlE$6^Amq*`(j|ugAO^3qPX;AZ}Z;Hp6ovw7tWw_2NR0oM5DnRX4Nm8U<%T$$N zEL~HVU4*8;J=H6>lq0h0=Mk;XmEg|{d(@D*5H-4P(Ta4&CAoxJDm~t5OZQm~-Pagw zu;hYBX{MyaQ?qY;=P>l?d4l?Gz2)o5^kK*w;;5LiziaObJy1}u7;#o8YqWr`v;O>T z8LodbmItM&$-Wp@f%3S;pw(Dv;7xAVc1{kXho}FTb1@22C5ixjM9z~p%1_z1(z6Zr zW9b`U05U|jfrUz1EK`zb7)qkjzaDuo1=PG`H~!5^^$^3pNUaW_{ySB<#j3R5VhjCy zucC8>5TILm1B9t+;3`wqH0Xcl;OeWra0mrR(4z)Jc^Rue{0LkzjAo!8$XWqvvzXQz*VD-xT#d~A{^EVjMp@O?|yAw%STOK;A%3#5){cT<{Fp+!9Wd}T#$3O zsv%pc^`mrov(h7vDKm;xs%c#V1<4TSs6Z$Lz7BMif>1UDHkb{`-*61!5xm_1UgtH{ zc}51=tFz?N6T(qnfE%Id>bE|qoAheYTm{;PP5*t<+|jFzbQSl4LjM}W-lT6Y#2s#- zyLYFoK#k{JMlp0fWNuCUOteNop1M4Uu0m2%diHh9xdjG4(r(O?R}-k?2&@*OwmYiy-l$;1+w|N(_?n4J;tO3Y4*{8#ZPv< zJxS8s-mM<9F5^yR2K|)Jg@XvFK~)kr>92*8*4V74Fb0dNegp zY9hh%!|iE*;yngfpYXjB$XsI-R8yC)c(2($?3m-1^t#0yP_JL?$HCZt>9X!^Nckn2 z^}WLe96jU{X*|?6$(ZuZ+}W(fz8b>Q1=9w=yzE97KO_3^j~S83C$u}y@xAs3L17q< z?N)?s)(!@D>$cn#6>8b7Y0ngi7l8LaNWj6)Gxi9fhH~%D4iX?iBVnEZ<0rPC@wk2z zZS!cl-DWz8hF>~`4<4md^)!9%G*IAJgy~bW4Y|rdgA>PWA&0EMu>?-zp^)tov30Kr zeF&br#n|5E`s?{0Z%vZJ-K=k?wl z|I*F)heSwSard`biuY)wtCqPx8qrTIKA%jmqw8)Lc38Sy2Tf-tRc9vNMfQ(91BnBi z4QUdE~yD9-;$sc7Nmu_-eUC0PVWnQdo% zPt4F<1Cu&f1_CK@j7dFT#?rn{3BQinPT2Jtb|h(#dQa`+Q%rj{QBO+i!MvN_qLsFb z68i}vf5D_aR=T$z%zPsW9n|Tqw5M~xfOLn=XE2lg&>9_K#ar?Ld2V#Yku88|V81+_ zh(xGiZFmiATEz~okn)WGa@Nk;8c5*11VaIqfl$sg1sN`2*g+Axyw!cJnPADH^i6}e zbih`2WfTT_*B67m7F^D}A)>+9-<)|v%2?K-=EH-`4-rua{Qd?Q;sBUZwi@(Dc{Vd^lK_PoTBP%Chcjs8( zhlPS1Xh7zeb5{M%e5m;kw;M&d{jo-mVp@fX>lYkN5K7Uc(?|3A!(kWP^D+(l=x4;H zB+KvB8PIcN_ErTOw%9x6+q;jBSNIy_D+lsZWrMyvCW@TOt3P5o z3==!$J{MNA?cLZ_E9!0plgZarY;3)_+#OZ}9oo~_mOfpfS@0(Q>EXNQnnyH?OCMH5 zL(b<_!gijw?Rd(uI`vzhzodRqN`1fSoB6tvag2p{qO>QPt`;(2B5m_y@|c0Tw#d30 z?>BbtS=|QqI^|K0@Qp2q&_ zZ*Q77NA}*PG-_I!B6=uxrU*(|spZHL=e|_M0zTE0=t<_Qqb07K?9Dw;?zRB<)?$sV z8QIQi47yK!B7HbIBiYjj1Bjj)5%x5f~IpSG^F0)vthotO^flo$rT+g-duv-*Fwzgq<10Aiuj`c-YNvX5f zxykmoX-X@?jzw-npV$S`(hp|lb@WDb1PHz5Bx^XvSvbf{-`ay z73Yy6%1eAccXYbyi+5dr=BBe|=t;#|`T8U;;GS|>oaVYDK|0r7El>)h8GeB=R~$wZ z8K&m8WucZMiAMUN$L7ubwfmF$p?+kIVk*%k_+1m~50+`$tA5{4a`wE-%a=v|l2R;N>= zg{y_|szb1Qi6w}9{EQN8kSUTKNLN!u^jt#c{j`*kM)H=hJvq`8Qwa1;$-O2-P`0kiwMRcM_oP^$sCcrf*)UAx3a`XOE>jHS>x?!{EYM39u93fZkpN6} z!F6{OfV3JQsvBo8s!>3!J6s7g<5$);tWPOi=J=nl32G8W!x@xGi<6s1j z2xkDlj{hFD;4u2C=!at68L-Pm>iOhrSGDRGat@Xh5l6!p?(e+Rs=Bf@M10ISRUXXP zNF~FZAir8wxoa-|*WF79o#_^}7r<1&+;a}jAwU%+*Lr;Rlt|{o@T&S+-E=%q#xRS* zfQcD^Y2x*BGahRCDdKd*4peLtJ=khtP|vg^qjor53|kDC?yiCFTw&ql*Os6`j6~}6 zv)(;2_tO1WukA{oj)chU5v7RaqS@FD(&J%g%}wv1F)l{fR-eJO-!G638K8=t)Xjs8 z@07IzmylbB2eiDv>>OpOXc$bL-?)qz*x2>f#wQSlrV05^8a?~^;GDuCr@zy=J+;JB^f#Nut0fGkH56B2FrB* z0rFGUe)S0P@@b0N`s!fj8^!9~NQzo?w2PD}P4rJ_@1uuL)PeRKndE4wsN=oINL%pC zIlLcUcFB-7&MUs$*xM3Zma`LWSS(t##EqaktE(GBQ4aIsMyT~h78u|!?9RYWoA(~PLKDNe!U*U)}Il~E~8wr-jKbom|}k^gO;Xj zR?Sl6eIS8b76*c43RL=zu!vwrfz{6}49=jj`%( zMqQqFMapranlZdn39P4YF#2@a>Z0p=jiSx}BGUlon^1MeD5MnHPKXo6Yk)N0TuIltMf6?*in224dpn9h7C!Inf!XFztrpoEuR5ZJC>q*(Y>%KD)) zZ;lioYoXtw8g5a}i6+W+W^1diBphxfNnl-ij-6rwsQON_f4no&y+r(TE9ur7cNdar zNk!>G9D_(uMc8dk0uMT%2<){Cm)vSpL{EpC;qT0A8To2YmK6xh9`j1eD-5HYqD}XL`-@KL|WF=5Gno>4chNUkKiuvdsv`Vmup5sT-^%I*Rs zMj8mrnEkAPnD(hrtN=kS@RVr#iK3L(?1(230xfKfoMGWUAPj8p+OfSMfAF}sED5aW zz5n^l>*g0ClXYkz{d@BD8QX6&v|D92!R4kAGJ!8(g-Cd5(cFjGC@33=j8I*mv|}M4 zWcY6(NHOZ^avr$4>)GKytP{#d$nO}SChQyJ~ibB5*^iv2>l40^|Iws^fw=(=pVsmXWtT*&CX^Jq2X+lsQ?;h zKp2W3>hq<{rJFe1Sl*~=tX|G zL=(QGaHPO0GyGrbd}-F4* z_pK4X${G%3UYDxD0lXxDc^4xMWV#V@#eoC*_ezcqtu_uJBCtD2ggTZWu^FpDyV}$u zb{Dk)i*6`l!%T^G!`>!4N=>Zp#KU+5(Q2d|8|z0v{|Q6U2=WPE@I}0XseHYx8l2;8 z0>c@IFKfz+btC@_7g=G8&M{>}S=;DkeHvdTU{2LGo`_l3yv>8lTqm6J5fYM1;qrRzNwMx5OOcAerBe1*g-Pl1&pTHfT%Zh1WpXS@mRX2rSEFcS16NjTcwr5%-R+F5#)`7A5BjmQX2u_n8#`Sy&S%p> zd?f&r00~GCD<}T}No&lB2G54b3UCFp;&Cs?hn?oBc7!Ww ze4Sv4KNuju8B&jlt3fSi_Y(xTW)z^B6}ij&I3Yq#;)gz|T5?*R7;(by;10rV9-_j} zpLW9kNZSbmfy!jq2@s=N^vxP6cZYA`tBV64GTwV?d9althNA1`$&=j@$vc1&zO&8Q z)4PZ&!mt`dIv6bEB^hY@zSu!n;z>~g@rW6*R(bNk`HrEVIIxW9{$@jIfl^f%X(u3k z-~(gKlqoV7B0~&)JFfIKPjg%v7~YmNUnp}sY0}LTk83{}%iwSOJXD$83Z(YKe+VbZ zZt4RpIc)+GL6EyhDBLT!t}cKIIu74vq25ps1%Sj)0HfQc{e_ARnnm_f5Cbz(j8=c4hl{qg>^oN_d;xpCtMk#98?s^8cA^i{O zCROdq?uJ6_wNlIYx$PkUkj&PM6rL)V&0`!NZjm$v%Z;)X<9@>QgRVWo-gMftf+gDY zyt(-T+c<_LuMlM4bT%F(=;d`cPF*aVc+>PP$YkvfAxQGp-#54ZVVfa)o5hq8vXb_~ zm0D!>w#ZkuC{4A5T(i48*P>B*TW9LFfzln5``R;vC#F+(?37yV_qICiZCRu03Tm1d zE_>SoD%we3@CkKEgSu(JKoRQnO7yT|t4JyCi0^weF3Qb+pUj;zX#vr`>~O7}|l z3h$Ly-m9FtcUh^kc5mm^%FY{8owt~G+6oY^VGv{N{_OLIM~-H28anw-0=t!%onTTi*J!GUVkKBOL}01 zy1z;U3pA<(-zslGBScFmJv*v;th#!xmN}1nxPKx1I1~(~@dUoXeF4_@4U~c2 zc5-m4Y+f4yV|{;~dPWTJ+f()U^z`GxslMh1!eh)?zrpIzG;@TgIJ(xs3zraU8@ z&fZtAJTskn6ZG5wynTW7*{%wL&!gE&Gt3HXRg&rK2xF%1Q4J7V?7fQ^rP5VQ(ARs10kNZ zd%Let5S|7Cc;XSdA`y@-OTsV^B`X+^Sr+@!{^)|fW(8GkdHk3sG9Geb5;QX;PU9)f zft^*RdqSo?LhxR1@y%)E%|Ac#j0BD(wU1dnAjPe^6?TrTe%`u{qD-^J-e*4>O>h6EI&JeutVaT+d>Ox!9 zG>AVf4t}dddn-NnHmhm^MSQs^L0tNeCN6jf0^aX;c(25M|KjC)0&xm7bHSaaurfCz zLwr~1G>f8TnY7I^<`}a|#JOVvTzfaBy8D7rsG2Ev9>kxwfA{%OTA$Oyg@3aPBE&_> zh{ccxiy>*R#VI4wv=3uT_*mhGNb*OKh>tRR)P(hro6PEMR5ufj?e$lwRE*AX7*XFGZ@$1_&Utd2YB=T>}s|GS8*()a=ykcDXCJq@7 zQT2!HBmCq;Bli6i4+Tf<`}sqiP{IT!U;cIS@_wZV(5Zc!Jc_0QP6*VzyNP>`Cq7!Q zeE<9F-}M(E6aEjsM|S-=p;d3$iKqX2X;!lmzPJLyf6Frc@r|vGC*H^oB}=ss%stdS zE$!G^VH;0v)Bh?&(eUQM_ zjB#y@M44BKBXAd!D|_vk?2QC9-|NAH>z8W_AES+bPaYv%Dim?5>&lU#KV@99{qXzR z`tV~Xda3sQpDkxcuX@$GUUF@_KCvy&aDdD|h@Ss>*0Xnqpj*zRas; z%1P5yGViqX?@+Kyq%R4*Bc1D)s-l(EUaYv~8=;<$2l__6EPU>m8U5wXey@D{YuJhG zGJW5C&ws=!`Df)fB0t|;SNbSXVVV@a7Ng|Yv}_xHpOd5GF%h~WO3>V$ehSOq%?i;; zoA7wp^?O@udt={=hY$Xi>#^WsjI=GjoS2&K&9!DhCZPFK)<(hNgMw0VjOhi+IsYU@ z?_X8SF=^rWk39}NxM`5XxYl-PZiio8mh%>9n@B3x)<1ekuFrfTPHw{d)nU0sbvZ5i zLc@H4r4P~H_Uw`u-${Bn%-LqwZ~G@QQmJ)Rg@M-Ifr7nwzg_AEP_GdPW9KHT&}YCI zB>=E;c(Bq8#Y|X8u#vdtEq=VJ)bGUm|71d`^RKUdo((S&^PO4)BBpDBLe^ZdQ+$DU8s+Z;H&~PxabeYnr(0zb z=pOWNhK0+sInWh!5l!|I{4Jcq&FH*7*-C5qP0Vzu?m*7xGygGW$m0V;KK3m1d>K^A&jkSQ9kd zz9cUCKMKpz`#Bj^e)#9>=&Oy%f&WCU6S^Vf%mk{q+W4v?H|V^doi~F7?pKH%B0LuP zam>Mi5f_AFKz=&2)^oL=Ci`tqiEqh1>v>mIh7AlD7jrw2B*g?T6mXKLxZyF-$lnI2 zr%26r!$#Mwar`MsyUL&5m$s2>Kfm$C47OH#<&SKw4O|^J56>hV7@kIGEG4{?(ryci zqyV8_ng8MfEoOm%@2(Cynows4f7P{3*LE=Tke@E&zC^&HUktkEzs>iT6Q~#eEet)! z2?^bD(C$nE&`bnXRM0A@>iK1Ospz?r;BO_HN)4xDvvNqdg1J?e2PrFQ6Q8M;7prVg@(R8#b>zn_~hkK5NUfJfHk z=hE@Gf7w(O-^9n~Jf54UlFs6Om&LJ7)Knx zgZFE7a0q206>_L}^}vq|=QmnA-+V#sI5Y12FR+ADI71+#CY*&Djy2D7O(`l`-91ia z+wTU92l^G@wzh$&=)5Q-u6UXDZX~zgyuFMfS1;`|SEv|G2k%xH)aP9E;6&G4$q&00 z?d0}m^y1If2D7Pd*>xBf!-3g8m4(TumDmlyTnleRe+eWec-v8M1ISTQ=f) z5%_^Nyw6FZ^39(&zaDNryOs9K>hgp(RCx;4%oKB<0ex0$@3VTQ4~@voRi4AWZ^#yr zy52DV#^~O?pm@fui#q2&Hu;mMHnWktM9#;r`aR(6dAnrK-22;sM%~!iCA(B_6n3i?B?r1jsW}jy z9HEegO;gP3nG3H`o>vQNKkUnjvJ>n>^sA^v=$);>T zXkC&#o-&y2*;*t2Y{?PQG8lEzc+Jxn!PvP)jlJiI{!&Gj1tmW?Anp1eu z5!9@b&6onZORxO0%N?n(z;l#WGpo9uVr%a(UTQWnwsIbt&E;I*w3>T1)W$#g^>f*D ztz?bquvD5gI@>9A4!f&!wEX$TmAy(+R*Tm>F|_#EOCM(btvDFQYDBA*yi#NOmf%hi0tG)fil*u& zmIY(tvSQ*<^*SjWoJwn2`yrlX(-SFw?6p;@@aOs7IWeS)kruvJ_r+bzw3iqq44OKex{5l3@CIY4`@qzb5oB}}Iax2@h{1^?Mz7El zt0-qLIY0GCzv49Lt7G0H;>xS2a6|N|denS^YVIo7P$AvwCBrl@-8?1TbdwQ|V#Y9x z5GMmrvXtO89uv-jJ0@@zGmywYWQh50Va-q3Q&Fr(;A0ybGMlTx=&(4o7O2rC_+1NV(45#f{W660#)L3xzaaBjAj9zwna!OW8MHcoK1K1sw<{T#0o?_RB z84m+22q4&`Dt!{|1_L}aS-Thwvfcy1Z%@R&e~h-F#3tLb5iQ3>P~Z*?^w_F+-KMx- z-7%5yOav=4c2oKnU!oay_Cpc+H{Lb=Dl#7igf^oEUb&CFvW~K1Z0fUm1M~V*^0phP zjf+9e9&!X2s64mH=>+kpP}(jKXsCN+p#fF;b~iNPTo#x9|7<<-Y%c>xb*Q-q-tmyX0K43aO%X4TPOOmcixwT+!SCv5;Xo+ZTG)k{G3V9GsmBigm{yL6|))?qt&}f z_|iZ{!KrdV#36tL$G^s{p4lR`c|fWg6PH&jG~dr>32gzu8#rKUN#?tM*`8^~U1r ztzD|8f8ZuQR0BYbrNLRWUCo)08t=54*Tl3>jabY3A=Yanj#J8x+5uat!Yzwcv$;SI z9#}7mBeqq1mmaa;sRX7{5yKFJCAIfl1*dC3Du-*lr%QF;Mcf6Tu4Hv%S!83JLEQ#g z-PR!09RL*pATOVoG}@t+J@l2M#N)=*_3o zPR`>lrQS$>btC1$y1(uwUi-xxW8P|(uJcy;s0@0(oh_8kxvGgIXri}sUW z^l=G=r%DQjh3`BuHdH5OtWcn6u; zO|I-F`}jk*_*)e#!w+6i`k~f5k2{`=4cdrxyJ+^I9%nJM*Fr}^_mFf*y5+mRsr^l@ zJM#uIeF^W>gmbaNx?uqKWPSQPZZ{~2?Cgz>_VAtSwpfVqcz)DsL86Z9{YU8yi`M@f zg@wyFshf2AcYE~zTNE0(bC*Z>0(^JI>hDvw_RSh z@rN-0=MOH)U*F@7nBLK=Xah)#$;#%)wOLgTl;XxV$p~g%5(89;~fa zb`8YA#EQQvG`sx=rQ;7L{yf}RJ?I?^xuOod&3F))e1F)V@SeL#e?cDB)r1?zJX(r= z{9|1Dv&&=uIDWGvBtP%b_NGT#K?9a)u0?4f2h%DpW7OqHV5!p9Na?uYQPc9CBM^5{f+rtXYKT zR@bheO(WYbcZWR0Hw-;J$|(kp0{w=?&l#6{*!K6Fu~$=LmG=!HwgBg~ zp1`UPj%0a`E`JK9>^=X z5=dyCwdTdcEI*1;^Xu_PmwV4s?lI>v$XM0s`9SD`@+Qi?rhT>pn{c}GXyNks%%+Lu z(@KRuag=$*c9Qb@K;_P6qzC1mdMs+Jxy>bg5zW#ahn-Kv6(SfO~z^vLw(b*lST z$y6$BrS-Uo{AqiyH#O^&^p7O`Uc~5kK^-UFc-_6_nfXTU*<<^iwD#MdH_Wp$1*f6( z7#vbGoYaNc*$fLvMULLl*~u-6}IEKw&r zn6r^bXUk$fXrI1b;I%Osr-B&f9W)p$+5Vx%>*LrCOo0k;PNt!$C*0Gr9snSej2T zw>_mry zNyI)Gy7r9i4=xfHxEtraX#DloB7iv&h&&)FAKbKP^KX%&|IPlS$4>-}6Z7vodspLM zHspJ#p`6sp{LE2CB!8{mk?JCHl1E zLJam|YT6IJTJ(1{qc6nBRCSIVP)&WP0aw|^KpY==`I`(n0oDVa|U zng;WMR!5Hn^z^0Nc+!a;V(<*J#DsO0@IhhvPOc8&26a`)JO2ve&(B;kwcMYkuDGKy zF;Gk8oYigxpD|J1dR|qDmuCiDK1FB|W!rM@2< z41k=ALl>-remq@&r~X|xi}ZTBr@3Pifqqmqg|M(;;MN$ofNJYOJ0JCp@hv``@@8$O zJD;@ph2$^k398XjE=eZc$FwGs2G5pafgkcTRbV+9Ow<>Im--QMx``{z`?S_TvZ!MR zPkN)>0xqMQ_E#n`c&q=sXYlC8*H|u-e1`zH_qEpo+z(|JSLL=xk!!)-@N^RE{^_~S z2g6Z~btk_#O8s)GK$IRDj;E@Z(u1%7>|%Anx|~kFlE2+5ljEii5NZeu7`3_{wsG_S z*kZTWUEgqJ5l;2>f^bF`&UwQW(gO<*5@!23S%ilB@A5tD2TVStKl45{M{K~AX{{pX z2i&erwTMdebP8*|YjQJs&to5#O?zMbRob{IaVf+QdN&osANtzsvRQuEBoS1C7~^jk z#6c(;5kOgy@LYmd<5u0y@-Tv9@OgD)aOpISO45q^*ss7t2XeOCtXG77w+?!_)iJuI z&*#?Glbdthww>C3sv+{i}uu6s)r_nJtf5B`vO4`ml|dN;QCP z`iYfpi&g1`Zi?od%y!}SOMA-`wIqA3xuW?)|p&P#A^#x z2sM~PVv^yu-~C0TU|@?7uHiN>#Mh+ZSsbf+^w&ed{y!i-Kr+vC16F{bmni1wh)LrV zh>zD$UxigOk9?qimAz9jGPx$tplc-=Of5EE>7#E86qw0rIRZf!>0U+=9Uof~=NMa# zuZCQrx2gz2r}gCxFdsN6PwZ5yg^lR-{$Yp6Cy=lqAxa(uI*-H5J`SS+9LGm13ddBo zjwvJ$pP7|=Kq5)kqwDIKtPaZG@T^ADx>#>}e0j#sVeO5)J{N^F~zhWoCK9XQzG)3P8 zH*D1EEy3z2D*51mbp@w#8d^BTb6UH*m4y+T;o5VVRc_dopDe?!_B9H|t=xU0S~bHu zq~2P3Ku+k&XuuLmxlE&EzeT+IPck&*XtTy)75+KB0;#e*O(^W-8UIb?6Hh_2Vyb4U z6Z6TwKJJmjCq~*XgcbPie{SiGmMHGaj#4_}Y*nhKROe8Od|hw2vd8Z zXJEXB5d_R2QuRs*&&}2xUK<=VoX@i|GM0x+l*>egB5@q4Fj*R^u$y~WdcvH@z3iXq zr}j0sAG%jp*wEY(TrZ!qHBM3&nB`K69V)X7^N4;HNNE`$_(saqWtup55li%Hn_&?O zTn$)3Cg;nwRfG?|7}Hj+L>P~oG60+c79+w|5wDy1rsaoq#uZ#VaSW08S$}eYkXFSu zRMrdcN;y=LAqyj=j9#Wz9PbnjE_p)OG#m-QAxKq#+bHC)VojY$q-=<4r|WC98AsV>e=OoYz)cCRJyb%&!0##xdpT6Cz`ks73uz7NDjhSV52VTz_2(D#6Ix?V zi5czKCxF_r453FM8OD%MjPO41dA0KI}owXTgpaOjTufOK*?|gg5MsttjcAR;Z z8bE@^ka`KF-OwOX)|)Y{!BZx@WYEgz)nO-B>5J(4tqs(z6=!W zL|-u&kj89YQ<9VeH_-YkK4@!*#C^i;Gh8o5yjsQ;T;MM`pX4;@T_xrNvAr(5)Y( z?`nYBCe3~_qnYuYxBm5T>h{0;NLv$-wj@Jg?lR4Qi4=O+uefuT+teOh9k{PByja!Q zY5WW><{&{sXb!T&;A8WxP@`!`OK$u|fNk@uhJ6lq3>~|TR&=q0 zg&9b`X)=9N0x}`B+jOSvP&RVs&%CW7YmDGR>AWHF?2Ag_Ovd&@d~?SxW`0MmG;dc8BYQTdLkYEu$-t?hjxV;)g>al|*P4`( zl>s)ScoxV>Xw0q3<4NJ)FI`@#hJ4c!;OQOfi-k^HBuQJC3D9`UIjB%1QeaU`&ikM( z7d-lfqu1WH7Ne_^UWg6ltkLEk4JA1pBk)4_)z>Ki)iF+nioD0pHe zXJyacdToSq4-q)CS-~J`H&;M$6&m6NN827ou6-nu@keG@g`8y;5BVsU_-GoF|0YzR zaoJTc3n?uR;-xxgivkiQf-Qx>+??;{P{9`u!B>J{-Vw>>A}?DAjRFO$G9FvM9k%%% zJp5{1u`HM8!F7--L;=|R4T$k~Fe_!Y>s;a-{bgwUHmKP#d{HIkOM5 zk;7V^0&P#>ej;LBAk2ac)pmtoTyN@z_3@UWrNBKNahM}|^xO)iFAo$L`xIzop7=~a znmHlK3V``v#h@?&zKWMvH?pISr$<0ympQ{b-;Shw-%x;lT1-|5(iW)B);d4D;}VAK z`=jW#Qy{GkDQQpy#oRt@=qXa@mrJOxMnX_oxN_zzdnQ?EH+)1BB7TjWdHeG0_lT3I7sW%0aYR0Ynj7P@(IIqjugMUPGPK`kD7T$| zQ2E%QB4MV}vwWdY6D!aSe6}c&ENvO!QNl0MMzMFobN7bJOSz-Gp$+TRk@?EcgWmcS zDFjS878O@1XsfA~I7O6&A&=)EIVVg|vAW2(tzCJg5f#@X3dIrBCoj((A0Mb2zkjE+ z>T>=+%uqP*X?E(1Z0<&0Lr7tGb3PSNBJm=XpFJ4A+w{Gnoajdk4E0scb2kbH$gf1@ zp>2n?uOD~6Q54>OW;DMpiboF1b`9%PN9uSAVg>7j6abCo9liEEElW_!`FpqQyZc#3 zRF67R;?p@d-fr3}=-Vmie^@NNKK^~{jJmU9<>5r3w_10~H_rRMgc)-n$bce*65hF0xw}^;H3w|BT+! zE9kY}oGL+D-gY>`o;KY#ZT2p&Aal~ZetJbbdrvTVp?ve+%aiqY2HezNixQ&d33s74 zBFn^M@R7)}1}JY7C?-9#3(s}?q2OCJp_=eS`QfI*W_AuMs#MBx%L&geP4x#v5UlA$ z&f)q(&#BwjpLF&LoVfz~S?}WJSe`gGM;uc!8fNe|mNy?;48$3{LmM8ASo|JfoFdrF z6@<4>Z_Irge&X$&1nb8V^cB{|o36P|QV3Zd2v*B1%)ktdyyP!5Rj2oGTN!I z^))^0%?lrt9hM`2G|c1zarwlYh%ABUjgo73*ob`LfmGj8k)nY4SY20u)f3`0wijN0 zf=gXcm!b~pTT+DN1*OXGWn!bHxgjioF zLI_4pCmM1!hh~ccMk9XA9z%TSOuh^k^j|E`eb4ge+?s5l_f}Q50Jti7_f`Jmt9pSQJEHKRQ^B_~ zK|Oj~eNo6M#OsF3ufO-nk?B=q_cOO0u0tKs6{aA+UJBe%g8WiSOerOnqnmvSIWk{f zAa^+hNg4PkN_}5qH#NI&CNyUT;=fHp6qhZ{D_|tO9h|y85nC7@vEZCg#?BFnfxHc0 z?`->eHwAgR^<$+?d}yJP5m$hqj{O^1w0^(a9i0mK4+VXX-dBZm6fhP3i$?TMHvG*q z35m~UA|8bzpWC2D_PM>VL2*(!-!#_et9Xy9zJ0yl7saV6;t?S=9s)mN08hr=d-T;i z(<$Pbm=E;}&3yv;$p?BLbD7|yBM9yn72(&EPdEDn?Y_eF3gl6BVW(Wt=-nr>GHO5a z91qK-%Yrgw={$Kt?yd4v9`~+|;t#gwzL5iPN`LWY`+~X(q`B)in;6c#?b#2MKBQ%y zz(5L*X;$zphw7i-6WEZwOYy&5>))v%|4UWemR-)@{qM)FPyr$EztyDgwnRZmF525A zimHmr%=mA0IaI*R+P@~Xuszr3WV;QQ&lV|ArQ3i8NXcJCjl6W)=9!EW3kS}AIf$?j zr1F@}IWgsMJ5t7x8!;T#NbGuz#V(V@uSKW>=a5^OyB2otMP7aRBL#Ug3#o<7*)Go8 zmw@md1q2xyH>utQdOvDhex2WVaua3WLi?^8vOKo7fR?b2*Sy(Db*FP)?uOF>z1jU} zeW4kkq3$h^TSEy^XjD`xRpsluy1xB|0!6mlgJKeVfea)H9633%Z@C$1SF^wPom)71 zc>#8M@401eq2|vvd0N28M5)VaC# zzfa8mZb-|k+l7I(zq`)<$@;Z(W;ywi=FZ{-hjSS~svz6V4ArbkXmLTdKE_?^M;_+x zfQq^fZa$>C{bO!?#)^FUH>d;CFBK?`zPr8oy&!Ml?teShDrT-*A6Jj%vfJqcET$@tf(R%GLWPp0%`|$*s(ePkENMr?N}Qc@=Sdp98Y{@B#F^PS@P#%F|?m z*VKpS@7(z=cMp1snoC&fU+mv?MeMA0t=x(2Gx~HL)x$QI#<=y*OIVtiO;hl#LxT^a z5P9S9?epA+Xq2s|%-mq)UVy8DUUc3b3}YoG{GV=9u7fH=-^GZ^FDuR3oI9U#gEBf- zuby3;ViPP?4TiP))bwJq_n@BqKN{K#Ay-rW{*Q+CX4LrB|J+|f2EuE$#HnS)enAwC zfsuiUta`b^nK6FFP$cf63*(Q_g>s1%W%5it!!2j;P`JWGyaxSGJ3B;$GsS*3!rEm{ zc){AE8+tO!WvVyOD?78Q6mTA$#Xm_iYUadn`tpgUft*-qW`j%5AQ>f~@@-XtY4(09`fdeSV4AG>zTbXIy ziZ3b-*_<7f!D-&J9lvcl7w)^;-uXUuXcw&&u6}tVX+FzVtc41JM(DvaDcuH*Sx@s& z?tdr}+&T}tUUj8Us?K$zPZ0gOhyK_}_22MTgd363X?Usng-H%QuHYU5@{=c^bkBC{{3fvDCSAJwP^tc^b6N)9HCw)M2NQh@?B;ZQSmLEkXૌ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. -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -30,8 +30,8 @@ SOFTWARE. #define NLOHMANN_JSON_HPP #define NLOHMANN_JSON_VERSION_MAJOR 3 -#define NLOHMANN_JSON_VERSION_MINOR 0 -#define NLOHMANN_JSON_VERSION_PATCH 1 +#define NLOHMANN_JSON_VERSION_MINOR 1 +#define NLOHMANN_JSON_VERSION_PATCH 0 #include // all_of, find, for_each #include // assert @@ -937,7 +937,7 @@ class basic_json object = nullptr; // silence warning, see #821 if (JSON_UNLIKELY(t == value_t::null)) { - JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.0.1")); // LCOV_EXCL_LINE + JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.1.0")); // LCOV_EXCL_LINE } break; } diff --git a/meson.build b/meson.build index 2cfc9628..cdbaad90 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ project('nlohmann_json', 'cpp') -nlohmann_json_inc = include_directories('src') +nlohmann_json_inc = include_directories('single_include/nlohmann') nlohmann_json_dep = declare_dependency( include_directories : nlohmann_json_inc diff --git a/single_include/nlohmann/json.hpp b/single_include/nlohmann/json.hpp index 6c19d1e4..9b38efb4 100644 --- a/single_include/nlohmann/json.hpp +++ b/single_include/nlohmann/json.hpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -30,8 +30,8 @@ SOFTWARE. #define NLOHMANN_JSON_HPP #define NLOHMANN_JSON_VERSION_MAJOR 3 -#define NLOHMANN_JSON_VERSION_MINOR 0 -#define NLOHMANN_JSON_VERSION_PATCH 1 +#define NLOHMANN_JSON_VERSION_MINOR 1 +#define NLOHMANN_JSON_VERSION_PATCH 0 #include // all_of, find, for_each #include // assert @@ -10515,7 +10515,7 @@ class basic_json object = nullptr; // silence warning, see #821 if (JSON_UNLIKELY(t == value_t::null)) { - JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.0.1")); // LCOV_EXCL_LINE + JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.1.0")); // LCOV_EXCL_LINE } break; } diff --git a/test/src/fuzzer-driver_afl.cpp b/test/src/fuzzer-driver_afl.cpp index 69fcec7c..6a9c2881 100644 --- a/test/src/fuzzer-driver_afl.cpp +++ b/test/src/fuzzer-driver_afl.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (fuzz test support) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json This file implements a driver for American Fuzzy Lop (afl-fuzz). It relies on diff --git a/test/src/fuzzer-parse_cbor.cpp b/test/src/fuzzer-parse_cbor.cpp index 72978e54..2b00edf0 100644 --- a/test/src/fuzzer-parse_cbor.cpp +++ b/test/src/fuzzer-parse_cbor.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (fuzz test support) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json This file implements a parser test suitable for fuzz testing. Given a byte diff --git a/test/src/fuzzer-parse_json.cpp b/test/src/fuzzer-parse_json.cpp index 86a8f7fb..5b4e0b08 100644 --- a/test/src/fuzzer-parse_json.cpp +++ b/test/src/fuzzer-parse_json.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (fuzz test support) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json This file implements a parser test suitable for fuzz testing. Given a byte diff --git a/test/src/fuzzer-parse_msgpack.cpp b/test/src/fuzzer-parse_msgpack.cpp index 03da5759..021945c1 100644 --- a/test/src/fuzzer-parse_msgpack.cpp +++ b/test/src/fuzzer-parse_msgpack.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (fuzz test support) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json This file implements a parser test suitable for fuzz testing. Given a byte diff --git a/test/src/fuzzer-parse_ubjson.cpp b/test/src/fuzzer-parse_ubjson.cpp index 1980f684..1ad07677 100644 --- a/test/src/fuzzer-parse_ubjson.cpp +++ b/test/src/fuzzer-parse_ubjson.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (fuzz test support) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json This file implements a parser test suitable for fuzz testing. Given a byte diff --git a/test/src/unit-algorithms.cpp b/test/src/unit-algorithms.cpp index 001f566e..a05eb953 100644 --- a/test/src/unit-algorithms.cpp +++ b/test/src/unit-algorithms.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-allocator.cpp b/test/src/unit-allocator.cpp index 9fdb41cb..75efaadc 100644 --- a/test/src/unit-allocator.cpp +++ b/test/src/unit-allocator.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-capacity.cpp b/test/src/unit-capacity.cpp index 1c0d573a..e1abe70a 100644 --- a/test/src/unit-capacity.cpp +++ b/test/src/unit-capacity.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-cbor.cpp b/test/src/unit-cbor.cpp index 41b2e15c..62accfcf 100644 --- a/test/src/unit-cbor.cpp +++ b/test/src/unit-cbor.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-class_const_iterator.cpp b/test/src/unit-class_const_iterator.cpp index cf6777e9..e5c23901 100644 --- a/test/src/unit-class_const_iterator.cpp +++ b/test/src/unit-class_const_iterator.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-class_iterator.cpp b/test/src/unit-class_iterator.cpp index 168988d6..26047297 100644 --- a/test/src/unit-class_iterator.cpp +++ b/test/src/unit-class_iterator.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-class_lexer.cpp b/test/src/unit-class_lexer.cpp index 4ae7e77c..7850fe03 100644 --- a/test/src/unit-class_lexer.cpp +++ b/test/src/unit-class_lexer.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-class_parser.cpp b/test/src/unit-class_parser.cpp index ad1a9723..0be045b5 100644 --- a/test/src/unit-class_parser.cpp +++ b/test/src/unit-class_parser.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-comparison.cpp b/test/src/unit-comparison.cpp index 3ca7d552..e591b0b0 100644 --- a/test/src/unit-comparison.cpp +++ b/test/src/unit-comparison.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-concepts.cpp b/test/src/unit-concepts.cpp index 29be62dd..0079d78b 100644 --- a/test/src/unit-concepts.cpp +++ b/test/src/unit-concepts.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-constructor1.cpp b/test/src/unit-constructor1.cpp index b1aafc34..b4f4e83a 100644 --- a/test/src/unit-constructor1.cpp +++ b/test/src/unit-constructor1.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-constructor2.cpp b/test/src/unit-constructor2.cpp index 5cb33fa4..9d34f562 100644 --- a/test/src/unit-constructor2.cpp +++ b/test/src/unit-constructor2.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-convenience.cpp b/test/src/unit-convenience.cpp index fc04d4a6..f9e99284 100644 --- a/test/src/unit-convenience.cpp +++ b/test/src/unit-convenience.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-conversions.cpp b/test/src/unit-conversions.cpp index 38c3d8dd..99449784 100644 --- a/test/src/unit-conversions.cpp +++ b/test/src/unit-conversions.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-deserialization.cpp b/test/src/unit-deserialization.cpp index e790f21a..f5a61ce6 100644 --- a/test/src/unit-deserialization.cpp +++ b/test/src/unit-deserialization.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-element_access1.cpp b/test/src/unit-element_access1.cpp index cc9b3ff4..f7fd3e8d 100644 --- a/test/src/unit-element_access1.cpp +++ b/test/src/unit-element_access1.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-element_access2.cpp b/test/src/unit-element_access2.cpp index 4a566b15..852a93c2 100644 --- a/test/src/unit-element_access2.cpp +++ b/test/src/unit-element_access2.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-inspection.cpp b/test/src/unit-inspection.cpp index b4fdb9a6..5facb116 100644 --- a/test/src/unit-inspection.cpp +++ b/test/src/unit-inspection.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -316,8 +316,8 @@ TEST_CASE("object inspection") SECTION("round trips") { for (const auto& s : - {"3.141592653589793", "1000000000000000010E5" - }) + {"3.141592653589793", "1000000000000000010E5" + }) { json j1 = json::parse(s); std::string s1 = j1.dump(); diff --git a/test/src/unit-items.cpp b/test/src/unit-items.cpp index 9d455204..68663119 100644 --- a/test/src/unit-items.cpp +++ b/test/src/unit-items.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-iterators1.cpp b/test/src/unit-iterators1.cpp index ea789fa3..a63de5e4 100644 --- a/test/src/unit-iterators1.cpp +++ b/test/src/unit-iterators1.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-iterators2.cpp b/test/src/unit-iterators2.cpp index b778f040..05509c31 100644 --- a/test/src/unit-iterators2.cpp +++ b/test/src/unit-iterators2.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-json_patch.cpp b/test/src/unit-json_patch.cpp index c69b3f07..71dbc45b 100644 --- a/test/src/unit-json_patch.cpp +++ b/test/src/unit-json_patch.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-json_pointer.cpp b/test/src/unit-json_pointer.cpp index d6b61494..f572e1c1 100644 --- a/test/src/unit-json_pointer.cpp +++ b/test/src/unit-json_pointer.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-merge_patch.cpp b/test/src/unit-merge_patch.cpp index 88720766..9dd7162f 100644 --- a/test/src/unit-merge_patch.cpp +++ b/test/src/unit-merge_patch.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.1.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-meta.cpp b/test/src/unit-meta.cpp index 63d9abad..4aa3673d 100644 --- a/test/src/unit-meta.cpp +++ b/test/src/unit-meta.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2016 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -42,10 +42,10 @@ TEST_CASE("version information") CHECK(j["url"] == "https://github.com/nlohmann/json"); CHECK(j["version"] == json( { - {"string", "3.0.1"}, + {"string", "3.1.0"}, {"major", 3}, - {"minor", 0}, - {"patch", 1} + {"minor", 1}, + {"patch", 0} })); CHECK(j.find("platform") != j.end()); diff --git a/test/src/unit-modifiers.cpp b/test/src/unit-modifiers.cpp index 3b31bda9..6d8d3a86 100644 --- a/test/src/unit-modifiers.cpp +++ b/test/src/unit-modifiers.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-msgpack.cpp b/test/src/unit-msgpack.cpp index 81aa3637..f8de13da 100644 --- a/test/src/unit-msgpack.cpp +++ b/test/src/unit-msgpack.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-noexcept.cpp b/test/src/unit-noexcept.cpp index 6d0fd359..9a42d0c3 100644 --- a/test/src/unit-noexcept.cpp +++ b/test/src/unit-noexcept.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-pointer_access.cpp b/test/src/unit-pointer_access.cpp index eec88ed3..60520bd6 100644 --- a/test/src/unit-pointer_access.cpp +++ b/test/src/unit-pointer_access.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-readme.cpp b/test/src/unit-readme.cpp index ade0e0a5..dec879ef 100644 --- a/test/src/unit-readme.cpp +++ b/test/src/unit-readme.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-reference_access.cpp b/test/src/unit-reference_access.cpp index a87a0c54..c9f21f85 100644 --- a/test/src/unit-reference_access.cpp +++ b/test/src/unit-reference_access.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index bcdb4ace..c3428532 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-serialization.cpp b/test/src/unit-serialization.cpp index 2f667f41..f5ad7f73 100644 --- a/test/src/unit-serialization.cpp +++ b/test/src/unit-serialization.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp index bd813aa5..b2cbfbcf 100644 --- a/test/src/unit-testsuites.cpp +++ b/test/src/unit-testsuites.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-to_chars.cpp b/test/src/unit-to_chars.cpp index dffeaed0..f7c31366 100644 --- a/test/src/unit-to_chars.cpp +++ b/test/src/unit-to_chars.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index f0492702..175e5ed1 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 44204151..17baf4e5 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2016 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit-unicode.cpp b/test/src/unit-unicode.cpp index 82a29204..0991290c 100644 --- a/test/src/unit-unicode.cpp +++ b/test/src/unit-unicode.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/test/src/unit.cpp b/test/src/unit.cpp index 1ad77ce2..c3cfa0f5 100644 --- a/test/src/unit.cpp +++ b/test/src/unit.cpp @@ -1,11 +1,11 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 3.0.1 +| | |__ | | | | | | version 3.1.0 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . -Copyright (c) 2013-2017 Niels Lohmann . +Copyright (c) 2013-2018 Niels Lohmann . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From f5c03999d0cb3b423cf17c789c912fa97115347a Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Thu, 1 Feb 2018 22:26:26 +0100 Subject: [PATCH 105/106] :hammer: fixed benchmark compilation --- benchmarks/CMakeLists.txt | 2 +- benchmarks/src/benchmarks.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index f614978e..c10d44e9 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -12,7 +12,7 @@ add_subdirectory(thirdparty/benchmark) # header directories include_directories(thirdparty) -include_directories(${CMAKE_SOURCE_DIR}/src) +include_directories(${CMAKE_SOURCE_DIR}/../single_include) # copy test files to build folder file(COPY ${CMAKE_SOURCE_DIR}/data DESTINATION .) diff --git a/benchmarks/src/benchmarks.cpp b/benchmarks/src/benchmarks.cpp index 6dd470d3..bebef603 100644 --- a/benchmarks/src/benchmarks.cpp +++ b/benchmarks/src/benchmarks.cpp @@ -1,5 +1,5 @@ #include "benchmark/benchmark.h" -#include "json.hpp" +#include #include using json = nlohmann::json; From a8fcfd98809e2f8446bee907a4ca59dc04cc573d Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Thu, 1 Feb 2018 22:34:14 +0100 Subject: [PATCH 106/106] :construction_worker: fixed travis file --- .travis.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index ef06dbfa..22a9b674 100644 --- a/.travis.yml +++ b/.travis.yml @@ -291,11 +291,3 @@ script: - cmake .. ${CMAKE_OPTIONS} -GNinja && cmake --build . --config Release - ctest -C Release -V -j - cd .. - - # check if homebrew works (only checks develop branch) - - if [ `which brew` ]; then - brew update ; - brew tap nlohmann/json ; - #brew install nlohmann_json --HEAD ; - #brew test nlohmann_json ; - fi

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≪ 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 RNKgO(002ovPDHLkV1jSEpG5!w diff --git a/src/json.hpp b/src/json.hpp index 4c02b076..f7e3ab17 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -7294,7 +7294,7 @@ boundaries compute_boundaries(FloatType value) const bool is_denormal = (E == 0); const diyfp v = is_denormal - ? diyfp(F, 1 - kBias) + ? diyfp(F, kMinExp) : diyfp(F + kHiddenBit, static_cast(E) - kBias); // Compute the boundaries m- and m+ of the floating-point value From b0a68f540fc91bf2a7b9aa61c4a3c538d8cf3081 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sat, 27 Jan 2018 18:37:55 +0100 Subject: [PATCH 084/106] :white_check_mark: added roundtrip tests for UBJSON --- .../json_roundtrip/roundtrip01.json.ubjson | 1 + .../json_roundtrip/roundtrip02.json.ubjson | 1 + .../json_roundtrip/roundtrip03.json.ubjson | 1 + .../json_roundtrip/roundtrip04.json.ubjson | Bin 0 -> 4 bytes .../json_roundtrip/roundtrip05.json.ubjson | 1 + .../json_roundtrip/roundtrip06.json.ubjson | 1 + .../json_roundtrip/roundtrip07.json.ubjson | 1 + .../json_roundtrip/roundtrip08.json.ubjson | Bin 0 -> 6 bytes .../json_roundtrip/roundtrip09.json.ubjson | 1 + .../json_roundtrip/roundtrip10.json.ubjson | 1 + .../json_roundtrip/roundtrip11.json.ubjson | 1 + .../json_roundtrip/roundtrip12.json.ubjson | Bin 0 -> 7 bytes .../json_roundtrip/roundtrip13.json.ubjson | 1 + .../json_roundtrip/roundtrip14.json.ubjson | Bin 0 -> 11 bytes .../json_roundtrip/roundtrip15.json.ubjson | 1 + .../json_roundtrip/roundtrip16.json.ubjson | 1 + .../json_roundtrip/roundtrip17.json.ubjson | Bin 0 -> 11 bytes .../json_roundtrip/roundtrip18.json.ubjson | 1 + .../json_roundtrip/roundtrip19.json.ubjson | 1 + .../json_roundtrip/roundtrip20.json.ubjson | Bin 0 -> 11 bytes .../json_roundtrip/roundtrip21.json.ubjson | Bin 0 -> 11 bytes .../json_roundtrip/roundtrip22.json.ubjson | 1 + .../json_roundtrip/roundtrip23.json.ubjson | 1 + .../json_roundtrip/roundtrip24.json.ubjson | Bin 0 -> 11 bytes .../json_roundtrip/roundtrip25.json.ubjson | Bin 0 -> 11 bytes .../json_roundtrip/roundtrip26.json.ubjson | Bin 0 -> 11 bytes .../json_roundtrip/roundtrip27.json.ubjson | 1 + .../json_roundtrip/roundtrip28.json.ubjson | Bin 0 -> 11 bytes .../json_roundtrip/roundtrip29.json.ubjson | Bin 0 -> 11 bytes .../json_roundtrip/roundtrip30.json.ubjson | 1 + .../json_roundtrip/roundtrip31.json.ubjson | 1 + .../json_roundtrip/roundtrip32.json.ubjson | 1 + test/src/unit-ubjson.cpp | 103 ++++++++++++++++++ 33 files changed, 123 insertions(+) create mode 100644 test/data/json_roundtrip/roundtrip01.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip02.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip03.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip04.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip05.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip06.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip07.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip08.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip09.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip10.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip11.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip12.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip13.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip14.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip15.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip16.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip17.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip18.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip19.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip20.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip21.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip22.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip23.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip24.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip25.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip26.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip27.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip28.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip29.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip30.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip31.json.ubjson create mode 100644 test/data/json_roundtrip/roundtrip32.json.ubjson diff --git a/test/data/json_roundtrip/roundtrip01.json.ubjson b/test/data/json_roundtrip/roundtrip01.json.ubjson new file mode 100644 index 00000000..b9f6852d --- /dev/null +++ b/test/data/json_roundtrip/roundtrip01.json.ubjson @@ -0,0 +1 @@ +[Z] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip02.json.ubjson b/test/data/json_roundtrip/roundtrip02.json.ubjson new file mode 100644 index 00000000..f9ca78f5 --- /dev/null +++ b/test/data/json_roundtrip/roundtrip02.json.ubjson @@ -0,0 +1 @@ +[T] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip03.json.ubjson b/test/data/json_roundtrip/roundtrip03.json.ubjson new file mode 100644 index 00000000..e454e6ae --- /dev/null +++ b/test/data/json_roundtrip/roundtrip03.json.ubjson @@ -0,0 +1 @@ +[F] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip04.json.ubjson b/test/data/json_roundtrip/roundtrip04.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..150ad07d9bab62c4bae91b5a57bfa46c34e32035 GIT binary patch literal 4 Lcma#fWQYX-0|)^k literal 0 HcmV?d00001 diff --git a/test/data/json_roundtrip/roundtrip05.json.ubjson b/test/data/json_roundtrip/roundtrip05.json.ubjson new file mode 100644 index 00000000..8a3655bf --- /dev/null +++ b/test/data/json_roundtrip/roundtrip05.json.ubjson @@ -0,0 +1 @@ +[Sifoo] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip06.json.ubjson b/test/data/json_roundtrip/roundtrip06.json.ubjson new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/test/data/json_roundtrip/roundtrip06.json.ubjson @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip07.json.ubjson b/test/data/json_roundtrip/roundtrip07.json.ubjson new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/test/data/json_roundtrip/roundtrip07.json.ubjson @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip08.json.ubjson b/test/data/json_roundtrip/roundtrip08.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..1274f060f904a87ef83350e7523a9fa111d942cc GIT binary patch literal 6 Ncma#fWXNQU1po!l0gM0u literal 0 HcmV?d00001 diff --git a/test/data/json_roundtrip/roundtrip09.json.ubjson b/test/data/json_roundtrip/roundtrip09.json.ubjson new file mode 100644 index 00000000..8f0d59cf --- /dev/null +++ b/test/data/json_roundtrip/roundtrip09.json.ubjson @@ -0,0 +1 @@ +{ifooSibar} \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip10.json.ubjson b/test/data/json_roundtrip/roundtrip10.json.ubjson new file mode 100644 index 00000000..116f7ca4 --- /dev/null +++ b/test/data/json_roundtrip/roundtrip10.json.ubjson @@ -0,0 +1 @@ +{iaZifooSibar} \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip11.json.ubjson b/test/data/json_roundtrip/roundtrip11.json.ubjson new file mode 100644 index 00000000..20177536 --- /dev/null +++ b/test/data/json_roundtrip/roundtrip11.json.ubjson @@ -0,0 +1 @@ +[i] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip12.json.ubjson b/test/data/json_roundtrip/roundtrip12.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..1a39d1b1e3084c3a8797d51f0456802cadbd68d8 GIT binary patch literal 7 Ocma#fX<%Srhy?%#=>eqx literal 0 HcmV?d00001 diff --git a/test/data/json_roundtrip/roundtrip13.json.ubjson b/test/data/json_roundtrip/roundtrip13.json.ubjson new file mode 100644 index 00000000..d1b43667 --- /dev/null +++ b/test/data/json_roundtrip/roundtrip13.json.ubjson @@ -0,0 +1 @@ +[L ~] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip14.json.ubjson b/test/data/json_roundtrip/roundtrip14.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..65a415a07f4f6e80af5ac956ff1a27e2d283bfc8 GIT binary patch literal 11 Ncma#{X<&eWSO5#j0fhhn literal 0 HcmV?d00001 diff --git a/test/data/json_roundtrip/roundtrip15.json.ubjson b/test/data/json_roundtrip/roundtrip15.json.ubjson new file mode 100644 index 00000000..cd579001 --- /dev/null +++ b/test/data/json_roundtrip/roundtrip15.json.ubjson @@ -0,0 +1 @@ +[i] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip16.json.ubjson b/test/data/json_roundtrip/roundtrip16.json.ubjson new file mode 100644 index 00000000..d3494df1 --- /dev/null +++ b/test/data/json_roundtrip/roundtrip16.json.ubjson @@ -0,0 +1 @@ +[l] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip17.json.ubjson b/test/data/json_roundtrip/roundtrip17.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..dbc1b2c1ef2dde8f79b50f3007c3db08732b8d16 GIT binary patch literal 11 Pcma#{VE}^vKoAQ66*~n1 literal 0 HcmV?d00001 diff --git a/test/data/json_roundtrip/roundtrip18.json.ubjson b/test/data/json_roundtrip/roundtrip18.json.ubjson new file mode 100644 index 00000000..2b1778d5 --- /dev/null +++ b/test/data/json_roundtrip/roundtrip18.json.ubjson @@ -0,0 +1 @@ +[L"}] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip19.json.ubjson b/test/data/json_roundtrip/roundtrip19.json.ubjson new file mode 100644 index 00000000..ec62b059 --- /dev/null +++ b/test/data/json_roundtrip/roundtrip19.json.ubjson @@ -0,0 +1 @@ +[L] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip20.json.ubjson b/test/data/json_roundtrip/roundtrip20.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..b2aab5209c1e930ee6f0e2c6377b8bd675211548 GIT binary patch literal 11 Mcma!cVSs{I00#L0{Qv*} literal 0 HcmV?d00001 diff --git a/test/data/json_roundtrip/roundtrip21.json.ubjson b/test/data/json_roundtrip/roundtrip21.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..9c9eefc2f04ffa43b7996da5f746ad4e2654a26a GIT binary patch literal 11 Ncma!cX<&eWSO5!o0et`f literal 0 HcmV?d00001 diff --git a/test/data/json_roundtrip/roundtrip22.json.ubjson b/test/data/json_roundtrip/roundtrip22.json.ubjson new file mode 100644 index 00000000..ef313496 --- /dev/null +++ b/test/data/json_roundtrip/roundtrip22.json.ubjson @@ -0,0 +1 @@ +[D?n] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip23.json.ubjson b/test/data/json_roundtrip/roundtrip23.json.ubjson new file mode 100644 index 00000000..14ee7f2d --- /dev/null +++ b/test/data/json_roundtrip/roundtrip23.json.ubjson @@ -0,0 +1 @@ +[Dn] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip24.json.ubjson b/test/data/json_roundtrip/roundtrip24.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..32965e3f20862ac1a59fc1dfa451d7687ec858cd GIT binary patch literal 11 Ncma!cVSoU}SO5n50R8{~ literal 0 HcmV?d00001 diff --git a/test/data/json_roundtrip/roundtrip25.json.ubjson b/test/data/json_roundtrip/roundtrip25.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..7361cea368df726c77118e01710c3a30cdec416b GIT binary patch literal 11 Ocma!cVc`D{2C)DlRtE+E literal 0 HcmV?d00001 diff --git a/test/data/json_roundtrip/roundtrip26.json.ubjson b/test/data/json_roundtrip/roundtrip26.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..ef476931914b0164abdb0cf1fdf1b05aa00f047c GIT binary patch literal 11 Ocma!cVGv*dgIE9uc>xUo literal 0 HcmV?d00001 diff --git a/test/data/json_roundtrip/roundtrip27.json.ubjson b/test/data/json_roundtrip/roundtrip27.json.ubjson new file mode 100644 index 00000000..5b5ddd56 --- /dev/null +++ b/test/data/json_roundtrip/roundtrip27.json.ubjson @@ -0,0 +1 @@ +[D] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip28.json.ubjson b/test/data/json_roundtrip/roundtrip28.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..32965e3f20862ac1a59fc1dfa451d7687ec858cd GIT binary patch literal 11 Ncma!cVSoU}SO5n50R8{~ literal 0 HcmV?d00001 diff --git a/test/data/json_roundtrip/roundtrip29.json.ubjson b/test/data/json_roundtrip/roundtrip29.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..82ab8dd9fcd42df8ff508e88658214321abaf599 GIT binary patch literal 11 Pcma!cVc`D{0)JxxB2otg literal 0 HcmV?d00001 diff --git a/test/data/json_roundtrip/roundtrip30.json.ubjson b/test/data/json_roundtrip/roundtrip30.json.ubjson new file mode 100644 index 00000000..23f39bcc --- /dev/null +++ b/test/data/json_roundtrip/roundtrip30.json.ubjson @@ -0,0 +1 @@ +[D9 ] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip31.json.ubjson b/test/data/json_roundtrip/roundtrip31.json.ubjson new file mode 100644 index 00000000..cc714de1 --- /dev/null +++ b/test/data/json_roundtrip/roundtrip31.json.ubjson @@ -0,0 +1 @@ +[DF/)U] \ No newline at end of file diff --git a/test/data/json_roundtrip/roundtrip32.json.ubjson b/test/data/json_roundtrip/roundtrip32.json.ubjson new file mode 100644 index 00000000..cc714de1 --- /dev/null +++ b/test/data/json_roundtrip/roundtrip32.json.ubjson @@ -0,0 +1 @@ +[DF/)U] \ No newline at end of file diff --git a/test/src/unit-ubjson.cpp b/test/src/unit-ubjson.cpp index a8bfe691..a1830d62 100644 --- a/test/src/unit-ubjson.cpp +++ b/test/src/unit-ubjson.cpp @@ -2105,3 +2105,106 @@ TEST_CASE("all first bytes", "[!throws]") } } +TEST_CASE("UBJSON roundtrips", "[hide]") +{ + SECTION("input from self-generated UBJSON files") + { + for (std::string filename : + { + "test/data/json_roundtrip/roundtrip01.json", + "test/data/json_roundtrip/roundtrip02.json", + "test/data/json_roundtrip/roundtrip03.json", + "test/data/json_roundtrip/roundtrip04.json", + "test/data/json_roundtrip/roundtrip05.json", + "test/data/json_roundtrip/roundtrip06.json", + "test/data/json_roundtrip/roundtrip07.json", + "test/data/json_roundtrip/roundtrip08.json", + "test/data/json_roundtrip/roundtrip09.json", + "test/data/json_roundtrip/roundtrip10.json", + "test/data/json_roundtrip/roundtrip11.json", + "test/data/json_roundtrip/roundtrip12.json", + "test/data/json_roundtrip/roundtrip13.json", + "test/data/json_roundtrip/roundtrip14.json", + "test/data/json_roundtrip/roundtrip15.json", + "test/data/json_roundtrip/roundtrip16.json", + "test/data/json_roundtrip/roundtrip17.json", + "test/data/json_roundtrip/roundtrip18.json", + "test/data/json_roundtrip/roundtrip19.json", + "test/data/json_roundtrip/roundtrip20.json", + "test/data/json_roundtrip/roundtrip21.json", + "test/data/json_roundtrip/roundtrip22.json", + "test/data/json_roundtrip/roundtrip23.json", + "test/data/json_roundtrip/roundtrip24.json", + "test/data/json_roundtrip/roundtrip25.json", + "test/data/json_roundtrip/roundtrip26.json", + "test/data/json_roundtrip/roundtrip27.json", + "test/data/json_roundtrip/roundtrip28.json", + "test/data/json_roundtrip/roundtrip29.json", + "test/data/json_roundtrip/roundtrip30.json", + "test/data/json_roundtrip/roundtrip31.json", + "test/data/json_roundtrip/roundtrip32.json" + }) + { + CAPTURE(filename); + + // parse JSON file + std::ifstream f_json(filename); + json j1 = json::parse(f_json); + + SECTION("std::vector") + { + // parse MessagePack file + std::ifstream f_ubjson(filename + ".ubjson", std::ios::binary); + std::vector packed( + (std::istreambuf_iterator(f_ubjson)), + std::istreambuf_iterator()); + json j2; + CHECK_NOTHROW(j2 = json::from_ubjson(packed)); + + // compare parsed JSON values + CHECK(j1 == j2); + } + + SECTION("std::ifstream") + { + // parse MessagePack file + std::ifstream f_ubjson(filename + ".ubjson", std::ios::binary); + json j2; + CHECK_NOTHROW(j2 = json::from_ubjson(f_ubjson)); + + // compare parsed JSON values + CHECK(j1 == j2); + } + + SECTION("uint8_t* and size") + { + // parse MessagePack file + std::ifstream f_ubjson(filename + ".ubjson", std::ios::binary); + std::vector packed( + (std::istreambuf_iterator(f_ubjson)), + std::istreambuf_iterator()); + json j2; + CHECK_NOTHROW(j2 = json::from_ubjson({packed.data(), packed.size()})); + + // compare parsed JSON values + CHECK(j1 == j2); + } + + SECTION("output to output adapters") + { + // parse MessagePack file + std::ifstream f_ubjson(filename + ".ubjson", std::ios::binary); + std::vector packed( + (std::istreambuf_iterator(f_ubjson)), + std::istreambuf_iterator()); + + SECTION("std::vector") + { + std::vector vec; + json::to_ubjson(j1, vec); + CHECK(vec == packed); + } + } + } + } +} From f0b26c8f38e97bf0392cbefe64080f832849a73a Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sat, 27 Jan 2018 18:38:11 +0100 Subject: [PATCH 085/106] :white_check_mark: added fuzzer for UBJSON input --- Makefile | 10 ++++- test/Makefile | 8 +++- test/src/fuzzer-parse_ubjson.cpp | 64 ++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 test/src/fuzzer-parse_ubjson.cpp diff --git a/Makefile b/Makefile index ea2d7f73..004dc337 100644 --- a/Makefile +++ b/Makefile @@ -42,6 +42,7 @@ all: @echo "fuzz_testing - prepare fuzz testing of the JSON parser" @echo "fuzz_testing_cbor - prepare fuzz testing of the CBOR parser" @echo "fuzz_testing_msgpack - prepare fuzz testing of the MessagePack parser" + @echo "fuzz_testing_ubjson - prepare fuzz testing of the UBJSON parser" @echo "json_unit - create single-file test executable" @echo "pedantic_clang - run Clang with maximal warning flags" @echo "pedantic_gcc - run GCC with maximal warning flags" @@ -69,7 +70,6 @@ clean: rm -fr build_coverage $(MAKE) clean -Cdoc $(MAKE) clean -Ctest - $(MAKE) clean -Cbenchmarks ########################################################################## @@ -214,6 +214,14 @@ fuzz_testing_msgpack: find test/data -size -5k -name *.msgpack | xargs -I{} cp "{}" fuzz-testing/testcases @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" +fuzz_testing_ubjson: + rm -fr fuzz-testing + mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out + $(MAKE) parse_ubjson_fuzzer -C test CXX=afl-clang++ + mv test/parse_ubjson_fuzzer fuzz-testing/fuzzer + find test/data -size -5k -name *.ubjson | xargs -I{} cp "{}" fuzz-testing/testcases + @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" + fuzzing-start: afl-fuzz -S fuzzer1 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & afl-fuzz -S fuzzer2 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & diff --git a/test/Makefile b/test/Makefile index c7b72303..91dd7654 100644 --- a/test/Makefile +++ b/test/Makefile @@ -54,7 +54,7 @@ TESTCASES = $(patsubst src/unit-%.cpp,test-%,$(wildcard src/unit-*.cpp)) all: $(TESTCASES) clean: - rm -fr json_unit $(OBJECTS) $(SOURCES:.cpp=.gcno) $(SOURCES:.cpp=.gcda) $(TESTCASES) parse_afl_fuzzer parse_cbor_fuzzer parse_msgpack_fuzzer + rm -fr json_unit $(OBJECTS) $(SOURCES:.cpp=.gcno) $(SOURCES:.cpp=.gcda) $(TESTCASES) $(FUZZERS) ############################################################################## # single test file @@ -88,7 +88,8 @@ check: $(OBJECTS) $(TESTCASES) ############################################################################## FUZZER_ENGINE = src/fuzzer-driver_afl.cpp -fuzzers: parse_afl_fuzzer parse_cbor_fuzzer parse_msgpack_fuzzer +FUZZERS = parse_afl_fuzzer parse_cbor_fuzzer parse_msgpack_fuzzer parse_ubjson_fuzzer +fuzzers: $(FUZZERS) parse_afl_fuzzer: $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(FUZZER_ENGINE) src/fuzzer-parse_json.cpp -o $@ @@ -98,3 +99,6 @@ parse_cbor_fuzzer: parse_msgpack_fuzzer: $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(FUZZER_ENGINE) src/fuzzer-parse_msgpack.cpp -o $@ + +parse_ubjson_fuzzer: + $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(FUZZER_ENGINE) src/fuzzer-parse_ubjson.cpp -o $@ diff --git a/test/src/fuzzer-parse_ubjson.cpp b/test/src/fuzzer-parse_ubjson.cpp new file mode 100644 index 00000000..947d96e0 --- /dev/null +++ b/test/src/fuzzer-parse_ubjson.cpp @@ -0,0 +1,64 @@ +/* + __ _____ _____ _____ + __| | __| | | | JSON for Modern C++ (fuzz test support) +| | |__ | | | | | | version 3.0.1 +|_____|_____|_____|_|___| https://github.com/nlohmann/json + +This file implements a parser test suitable for fuzz testing. Given a byte +array data, it performs the following steps: + +- j1 = from_ubjson(data) +- vec = to_ubjson(j1) +- j2 = from_ubjson(vec) +- assert(j1 == j2) + +The provided function `LLVMFuzzerTestOneInput` can be used in different fuzzer +drivers. + +Licensed under the MIT License . +*/ + +#include +#include +#include + +using json = nlohmann::json; + +// see http://llvm.org/docs/LibFuzzer.html +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) +{ + try + { + // step 1: parse input + std::vector vec1(data, data + size); + json j1 = json::from_ubjson(vec1); + + try + { + // step 2: round trip + std::vector vec2 = json::to_ubjson(j1); + + // parse serialization + json j2 = json::from_ubjson(vec2); + + // serializations must match + assert(json::to_ubjson(j2) == vec2); + } + catch (const json::parse_error&) + { + // parsing a UBJSON serialization must not fail + assert(false); + } + } + catch (const json::parse_error&) + { + // parse errors are ok, because input may be random bytes + } + catch (const json::type_error&) + { + // type errors can occur during parsing, too + } + + // return 0 - non-zero return values are reserved for future use + return 0; +} From 05f49fa4012b612a4fc0e1542956d18bd3e0022d Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sat, 27 Jan 2018 18:47:32 +0100 Subject: [PATCH 086/106] :white_check_mark: added roundtrip tests for UBJSON --- test/data/json.org/1.json.ubjson | 2 ++ test/data/json.org/2.json.ubjson | 2 ++ test/data/json.org/3.json.ubjson | 2 ++ test/data/json.org/4.json.ubjson | Bin 0 -> 2596 bytes test/data/json.org/5.json.ubjson | 5 +++++ .../all_unicode.json.ubjson | Bin 0 -> 7718787 bytes test/data/json_tests/pass1.json.ubjson | Bin 0 -> 892 bytes test/data/json_tests/pass2.json.ubjson | 1 + test/data/json_tests/pass3.json.ubjson | 1 + test/data/json_testsuite/sample.json.ubjson | Bin 0 -> 148695 bytes test/src/unit-ubjson.cpp | 12 +++++++++++- 11 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 test/data/json.org/1.json.ubjson create mode 100644 test/data/json.org/2.json.ubjson create mode 100644 test/data/json.org/3.json.ubjson create mode 100644 test/data/json.org/4.json.ubjson create mode 100644 test/data/json.org/5.json.ubjson create mode 100644 test/data/json_nlohmann_tests/all_unicode.json.ubjson create mode 100644 test/data/json_tests/pass1.json.ubjson create mode 100644 test/data/json_tests/pass2.json.ubjson create mode 100644 test/data/json_tests/pass3.json.ubjson create mode 100644 test/data/json_testsuite/sample.json.ubjson diff --git a/test/data/json.org/1.json.ubjson b/test/data/json.org/1.json.ubjson new file mode 100644 index 00000000..f6029e90 --- /dev/null +++ b/test/data/json.org/1.json.ubjson @@ -0,0 +1,2 @@ +{iglossary{iGlossDiv{i GlossList{i +GlossEntry{iAbbrevSi ISO 8879:1986iAcronymSiSGMLiGlossDef{i GlossSeeAlso[SiGMLSiXML]iparaSiHA meta-markup language, used to create markup languages such as DocBook.}iGlossSeeSimarkupi GlossTermSi$Standard Generalized Markup LanguageiIDSiSGMLiSortAsSiSGML}}ititleSiS}ititleSiexample glossary}} \ No newline at end of file diff --git a/test/data/json.org/2.json.ubjson b/test/data/json.org/2.json.ubjson new file mode 100644 index 00000000..ff8fd4a0 --- /dev/null +++ b/test/data/json.org/2.json.ubjson @@ -0,0 +1,2 @@ +{imenu{iidSifileipopup{imenuitem[{ionclickSiCreateNewDoc()ivalueSiNew}{ionclickSi OpenDoc()ivalueSiOpen}{ionclickSi +CloseDoc()ivalueSiClose}]}ivalueSiFile}} \ No newline at end of file diff --git a/test/data/json.org/3.json.ubjson b/test/data/json.org/3.json.ubjson new file mode 100644 index 00000000..e3b6bafa --- /dev/null +++ b/test/data/json.org/3.json.ubjson @@ -0,0 +1,2 @@ +{iwidget{idebugSioniimage{i alignmentSicenterihOffsetUinameSisun1isrcSiImages/Sun.pngivOffsetU}itext{i alignmentSicenteridataSi +Click HereihOffsetUinameSitext1i onMouseUpSi)sun1.opacity = (sun1.opacity / 100) * 90;isizei$istyleSiboldivOffsetid}iwindow{iheightIinameSi main_windowititleSiSample Konfabulator WidgetiwidthI}}} \ No newline at end of file diff --git a/test/data/json.org/4.json.ubjson b/test/data/json.org/4.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..a31e3fd7f4dd0cc523117f45e553a71e4760d997 GIT binary patch literal 2596 zcmai0ZBrXJ5Dsk##4$C*G>}d+WjakWWn$mt<&!DX5*reCT-!m%H17knHTAWrZuz9u?KZB4DZoQcq7A^)cL5E>69d zpppx%U+{~f)ML!SW#O1p%`$S8Bvht|UA$TpTQ}(Wi6^2V1n;;|ippt&`XNNeAq7rg z<6MQmjm1D*)jbiy(*-C*N>h%}K}1KIz-E60ocfH9M?hcf^^ah8!D1{fnPmRkDS_3d z7}6{F?lwdl6$G{%2(kLg@eH~iz;KB$a?s%QsU8uiATH7@(oQUeuYIbitw57gr3gG0 zGQebvGxC|YQZ4M{KoLb}3WIha1Z`@csag^)m?ZE5t5FZZlR}B1u7C0eUR{0WrjMAc zlMfwYPca-GW%h0Ct|q!y_~kbNu+pSs?^Ae*2wDBaGXxBdDMB|BW~m6 zo7b-oTA1&EDrWc|20}!I9L})F1inxdsy-Xi3D>4}X|ofkQi?hpY6c9$!IDTnk5^X{-H(4+Rszp#mY4-%_{!;CyL;kDE2{egsOn_R zbOg?~O!z;|`5TTZEo}^f?bN7;Qz5~}RcdDR9+Xo>EO?M!6+BLleJMPqlt@E8$wPgd zD!7~mZo&x46U9u&*eQ46K3;z({gXLtBzwK)#iL&+x96*Rvqj99;^K#Lij3@ptlJ4e z{e0m?ST}3&y->L8R?YDxY^IVl$3*jLIsCVI3MPEKVs9o;vIHywDJ{~L4 z9a+Q;jtWIJjLbK@#m~cGu3Ich*}fR>q?nA`E%*vb1BM^NE$Yyc(_$Tv=u%6c$)*a3Rjy5pG@0uC&QlvQS)L(+8|+en=2_ zmQk@Kb7H`+_O(A8n`iDP@DHIH%hLu=jDNn%I31hV!NPo1wBejVoaNU1zR;Q>PDYmK zE$tAul`X~mFQ}-vi)$g48=?S*#`bUAn6U1|+3rI&R|Hm^1eE;JsA6_l-H8V7P-ce8 z*-sEQ3_&+G4HOrfk-&rGsdx70a9`7a!(axL_)s%%Y20f&PP)}J_f1cjUjTT7QUaYw LKxdhJKA-;wU_;8U literal 0 HcmV?d00001 diff --git a/test/data/json.org/5.json.ubjson b/test/data/json.org/5.json.ubjson new file mode 100644 index 00000000..dcb888d7 --- /dev/null +++ b/test/data/json.org/5.json.ubjson @@ -0,0 +1,5 @@ +{imenu{iheaderSi +SVG Vieweriitems[{iidSiOpen}{iidSiOpenNewilabelSiOpen New}Z{iidSiZoomInilabelSiZoom In}{iidSiZoomOutilabelSiZoom Out}{iidSi OriginalViewilabelSi Original View}Z{iidSiQuality}{iidSiPause}{iidSiMute}Z{iidSiFindilabelSiFind...}{iidSi FindAgainilabelSi +Find Again}{iidSiCopy}{iidSi CopyAgainilabelSi +Copy Again}{iidSiCopySVGilabelSiCopy SVG}{iidSiViewSVGilabelSiView SVG}{iidSi +ViewSourceilabelSi View Source}{iidSiSaveAsilabelSiSave As}Z{iidSiHelp}{iidSiAboutilabelSiAbout Adobe CVG Viewer...}]}} \ No newline at end of file diff --git a/test/data/json_nlohmann_tests/all_unicode.json.ubjson b/test/data/json_nlohmann_tests/all_unicode.json.ubjson new file mode 100644 index 0000000000000000000000000000000000000000..13ff98b514230a7767b174da871da2fa06bfabd3 GIT binary patch literal 7718787 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 z{O9nW!+#F{IsE7FpTmC+fBOHT|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyk|U&8;F@TdPT`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgD)RqD{-6H8=>LoUzv%yq z{=ew|i~hgp|BL>==>LoUzv%yq{=ew|i~hgp|BL>==>LoUzv%yq{=ew|i~hgp|BL>= z=>LoUzv%yq{=ew|tB8LQfBOHT|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg zqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q; zFZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y z|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY z|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd z`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLgqW>@Y|Dyjd`v0Q;FZ%zY|1bLg z`u{n&qaw$lAP9ogZR>z|C1kE9a`BSFM1R&K|NqDT|MCBS{Qn>S|HuFT@&AAP{~!PV z$N&HF|9|}dAOHWy|Nrs-fBgR+|NqDT|MCBS{Qn>S|HuFT@&AAP{~!PV$N&HF|9|}d zAOHWy|Nrs-fBgR+|NqDT|MCBS{Qn>Szt{P{=ym=tdY%7^Ug!U!*ZIHbb^b4Uo&LPn z>Cbze|BGJd|DxCVzvy-TFM6H-i(cpdqSyJq=ym=tdY%7^Ug!U!*ZIHbb^b4Uo&Sqo z=l`PD`M>CO{x5o+|BGJd|DxCVzvy-TFM6H-i(cpdqSyJq=ym=t;{V70kN+S4KmLFG z|M>sCPJbT%KmLFG|M>s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2|KI!kzw|!;FTKzIOYigl();|s^gjPDy-)w&+x_3? z|E2f&f9ZYxUwWVam)__9rT6)N>3#lRdY}K7-sk_N_xXS6eg0p1pZ}NM=l`Ym`G4ts z{$F~Z|Ciq9|E2f&f9ZYxUwWVam)__9rT6)N>3#lRdY}K7`2X?$@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$)&GC>|6l$8SO5Rj|9|!W zU;Y1A|NqthfA#-g{r^}0|JDD0_5WY}|5yM2)&GC>|6l$8SO5Rj|9|!WU;RJ-KmLFG z|M>s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ z~V>HqgR{r^6v|KI2I|NET&f1lHzkN-dZ|30Vx z-{HqgR{r^6v|KI2I|NET&f1lI;?{oV9eNO+s&*}g7 zIsN}Wr~lvQ^#A*u{(qm-|L=49|9wvXzt8Fa_c{IlKBqt5=k(|Moc?^D)1U8i`tyBG zf4Cg8${rNtpKi}u{=lh)ge4o>w z?{oU|eNKPA&*{(iIsN%Qr$684^ymAW{(PU)pYL<}^Lso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ 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 z{$Kll?f@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qv&+=YRV1zt5?i|Mcg7`e*)s{Qvm>{prvD^yh#2^FRIh zpZ@$$fBvUG|I?rU>CgZ4=YRV1KmGZi{`^mW{-;0x)1Uw8&;Ru2fBN%3{rR8%{7--W zr$7JGpY#9Y|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|NYbd|I`2f(?9>yKmXG| z^Z(=j$N%r2{{Nr;|DXQOt^dE>|Ly*7 z_kX+p+x_3}|91bk`@h})?f!4~f4l$N{on5YcK^5gzuo`s{%`kxyZ_t$-|qi*|F`?+ z|HuE2{~!N9{(rar{MMh}`g8t&{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$qs_UHfi*#EKrV}JgC{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c@&CvFAOC;+|MCCF{~!N<{QvR)$NwMyfBgUP|HuCy|9|}d@&CvFAOC;+|MCCF z{~!N<{QvR)$NwMyfBgUP|HuCy|9|}d@&CvFAOC;+|MCCF{~!N<{QvR)$NwMyfBgUP z|HuCy|9|}d@&CvFAOC;+|MCCF{~!N<{QvR)$NwMyfBgUP|HuCy|9|}d@&CvFAOC;+ z|MCCF{~!N<{QvR)$NwMyfBgUP|HuCy|9|}d@&CvFAOC;+|MCCF{~!N<{QvR)$NwMy zfBgUP|HuCy|9|}d@&CvFAOC;+|MCCF{~!N<{QvR)$NwMyfBgUP|HuCy|9|}d@&CvF zAOC;+|MCCF{~!N<{QvR)$NwMyfBgUP|HuCy|9|}d@&CvFAOC;+|MCCF{~!N<{QvR) z$NwMyfBgUP|HuCy|9|}d@&CvFAOC;+|MCCF{~!N<{QvR)$NwMyfBgUP|HuCy|9|}d z@&CvFAOC;+|MCCF{~!N<{QvR)$NwMyfBgUP|HuCy|9|}d@&CvFAOC;+|MCCF{~!N< z{QvR)$NwMyfBgUP|HuCy|9|}d@&CvFAOC;+|MCCF{~!N<{QvR)$NwMyfBgUP|HuCy z|9|}d@&CvFAOC;+|MCCF{~!N<{QvR)$NwMyfBgUP|HuCy|9|}d@&CvFAOC;+|MCCF z{~!N<{QvR)$NwMyfBgUP|HuCy|9|}d@&CvFAOC;+|MCCF{~!N<{QvR)$NwMyfBgUP z|HuCy|9|}d{Z9YC-|7GNJN^HDr#~P6fBgUP|HuE|@AUuso&JBn)Bo>x`v3h-|G(eq z|Mxrn|9+?c-|zJQ`HqgT{r`Ta|KIQQ|NEW(f4|fJ?|1tD z{Z9YC-|7GNJN^HDr~lvY^ymAX{(QgFpYM12^ZibLzTfH3_dEUhey2a*@AT*Uo&J2k z)1U8m`t$uxf4<-8&-Xk1`F^KA-|zJ2`Cg8&{rP^UKi}{4 z=lh-he81D5?|1t1{Z4(6ifIsbqB|MCCF{~!N<{QvR) z$NwMyfBgUP|HuCy|9|}d@&CvFAOC;+|MCCF{~!N<{QvR)$N%50Kfm?oxBmRr|KIxm zTmOIS|8M>Otv|o@=ePd+)}P<{^ILy@>(6if`K>>{_2;+#{MMh}`tw_Ve(TR~{rRmw zzxC(0{`}UT-}>`ge}3!FZ~ghB|9|xVkN*GB|3CJB?El#RvHzq0fAs&4{{PYcKl=Yi z|NrR!AN~KM|9|xVkN*GB|3CWwNB{rm{~!JTqyK;O|BwFv(f>dC|40A-=>H%6KmULH z|2_8S|L?K?WBso|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@`_I80+_;WJK@fC(50dD}eA2Sca$~`8q43bB?BM?&{{P|sAO8R0{~!MU;r}20 z|Ka~1{{P|sAO8R0{~!MU;r}20|Ka~1{{P|sAO8R0{~!MU;r}20|Ka~1{{P|sAO8R0 z{~!MU;r}20|Ka~1{{P|sAO8R0{~!MU;r}20|Ka~1{{P|sAO8R0{~!MU;r}20|Ka~1 z{{P|sAO8R0{~!MU;r}20|Ka~1{{P|sAO8R0{~!MU;r}20|Ka~1{{P|sAO8R0{~!MU z;r}20|Ka~1{{P|sAO8R0{~!MU;r}20|Ka~1{{P|sAO8R0{~!MU;r}20|Ka~1{{P|s zAO8R0{~!MU;r}20|Ka~1{{P|sAO8R0{~!MU;r}20|Ka~1{{P|sAO8R0{~!MU;r}20 z|Ka~1{{P|sAO8R0{~!MU;r}20|Ka~1{{P|sAO8R0{~!MU;r}20|Ka~1{{P|sAO8R0 z{~!MU;r}20|Ka~1{{P|sAO8R0{~!MU;r}20|Ka~1{{P|sAO8R0{~!MU;r}20|Ka~1 z{{P|sAO8R0{~!MU;r}20|Ka~1{{P|sAO8R0{~!MU;s3|~kN+S4KmLFG|M>s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$mpSM5n^Y-U`-u}GL z+n@J&`}00;f8OWq&-=Xnd7roc@ALNm@&Eh0{eS%b`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zr1?*DTCm;1lGKbQNz-2dhNFZa*?kN+S4KmLFG|M>s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|M&ObTRZ>h z&;Rt#{Qvm>@&Duh$N%q7fBvUG|I?rU>CgZ4=YRV1KmGZi{`^mW{-;0x)1Uw8&;Ru2 zfBN%3{rR8%{7--Wr$7JGpa1F4|Mcg7`tv{i`Jeur{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuFDpZ@uu{`sH&ng1XEKmLFG|M>s?)Bpd||Nqnf|I`2f)Bpd||Nqnf z|I`2f)Bpd||Nqnf|I`2f)Bpd||Nqnf|I`2f)Bpd||Nqnf|I`2f)Bpd||Nqnf|I`29 z?*DfGxBI{K|F{1C*8ku7|6BimyZ_t$-|qi*|F`?U-T&?WZ})$@|J(iF?*DfGxBI`{ z|Ly*7_kX+p+x_3}|91bk`@h})?f!4~&;O7AAOF8we}3!FZ~ghLKfm?o{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2|3Ci!`2XYokN-dZ|M>so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@~l+yC$P_W%36{r`S%|G(ec|L^zq|NFiD|9)@(zu(*c z@Avlq`@Q}DesBN3-`oH1_xAt$z5V}wZ~wpF+yC$P_W%36{r`S%|G(ec|L^zq|NFiD z|9)@(zu()R@AvlS`@Q}7es6!i-`k(>_x9)ez5V%qZ-2hu+n?|E_UHS({rP@xf4<+_ zpYQkf=li|=`F?MIzTexQ@AvlS`@Q}7es6!i-`k(>_x9)ez5V%qZ-2hu+n?|E_UHS( z{rP@xf4<+_pYQkf=li|=`F?MIzRUiX{jc}`#jdyi-}UzYyWakP*W3T^di(!f_P^|Z z+5fWtW&g|mm;EpMU-rN3f7$=C|7HKn{+InP`(O6I?0?z+vj1iO%l?=BFZ*Bi=l_rY zKmPyt|KtCU|3Ci!F8g2hzwCe6|FZvO|I7ZD{V)4p_P^|Z+5fWtW&g|mm;EpMU-rN3 zf7$=C|7HKn{+Ipv|KtCU|3Ci!`2XYokN-dZ|M>so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ 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 z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJfBI+sfBgUW z|MCCh|HuE2|KFef{7--Wr$7JGpa1F4|Mcg7|GhQ!pZ@$$fBvUG|I?rU>CgZ4=YRV1 zKmGZi{`^mW{-;0x)1Uw8&;Ru2fBN%3{rR8%oc|yHKmLFG|M>s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$;G^4|E>SO_5Zj2|JMKC?*DfGxBI`{|Ly*7_kX+p+x_3}|91bk`@h})?f!4~f4l$N z{on5YcK^5gzuo`s{%`kxyZ_t$^Z&c`=ePd+)}P<{^ILy@>(6ifIsZTYfBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|G&rnkNqF}KlXp@ z|JeVrKmR}efBgUW|MCCh|HuFDu|NMm{(t=c`2X?$s$|KtD1 z|BwIQs$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ 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 zUGD#K|Cjr}yg&T^`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8e}DS(KmGZi{`^mW{`cQoJOAm=|MbuN|NivnfBN%3 z{rR8%{7--Wr$7JGpa1F4|Mcg7`tv{i`Jev$Pk;WWKmXI8|LM>9|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c{^|e!>Hq)f|NrU#|LLFq z>7W1UpZWj&)Bpd||Nqnf|I`2f)Bpd||Nqnf|I`2f)Bpd||Nqnf|I`2f)Bpd||Nqnf z|I`29`u|)1f9wBm{r|21zxDsO{{Pnh-|qi*|F`?U-T&?WZ})$@|6BimyZ_t$-|qi* z|F`?U-T&?WZ})$@|J(iF?*DfGxBI`{|Ly*7_kZipZ~ghLKfm?oxBmRrpWpiPTYt{~ zkN+S4KmLFG|M>s$|GV|){Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(q1C zANxP{f9(I*|FQpL|HuCP|M>s$|KtD1|L?Is|G&rn{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(q1CANxP{f9(I*|FQpL|HuB1`+wa3@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 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 zZ~ghLKY#51*#EKrWBdC|40A-=>H%4KlXq0|BwFv(f>dC z|40A-=>H%6|D*qZ^#70k|Iz$Iux1h zl8hcH!{V6=fds#t#{Yl(|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d z$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-Q zfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu) z|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT) z|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD- z{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d z$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-Q zfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu) z|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT) z|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD- z{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d z$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-Q zfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu) z|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT) z|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD- z{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d z$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|HuD-{Qt-Q zfBgT)|9|}d$Nzu)|HuD-{Qt-QfBgT)|9|}d$Nzu)|M>s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$(igd|L^P5pZE3Y&-?oH z=Y4(p^S(a)d0(IYysuAx-q)u;@9Wc__x0(|`}*|feSP}#zCQhVU!VTGuTOv8*QY=4 z>(ih2_36*!|HuE2{~!N9{(t=c`2X?$`}*|%eSP}>zCQhbU!VRz{(oPe{y+YI{Qtf_ z{eNGd{=ctJ|KHcA|L^P5|M&Ij|NHv%|9yS>|Gqx`e_x;ezpqdK-`A)A@9We5_x0)j z`}*|%eSP}>`2X?${r|ZCANT*`{(s#6kNfBU$N!K2AOF7}_y6s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8f4}bk*Zu#x|6lk2>;8Y;|F8T1b^rYT`2YR7|6lk2 z>;8YeKfmt(*ZuSVs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|NW;w|4)DZ-`A&h{!f4YpZ=NuAOAo8fB)&v|I?rU zr$7HsfBv8T{6GEqfBN(P^ymNS&;Qe(|EE9yPk;WO{`^1v`G5NJ|Mchl|M>s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ|I`2fPyhcv{qz6y z&;Qdu^Z(=j$N%qt`v3pw|Np1||DXQHq(y|No!<|9|@b|LOn#r~m(-{{Mga z|NrU#|EK@|pZ@=!{{Nr;|DXQ|9|fPpZovk{{OlEfA0UE`~Rmu z|EE9yr$7IvKmVsc|EE9yr$7IvKj;6)|BwG4|3ChJ|Mcho^ymNd=luWp|MCCh|HuE2 z{~!N9{(t=c`2X?$@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(pb=|Fi#}{r~L$ zXa7I@|Jnb~{(tWO&;9?o|3CNt=l=if|7ZU{`~SKBKllIV{{P(npZouF|9|fP&;9?o z|3CNt=l=iP|DXH+bN_$t|IhvN|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@spZ`Dp|M>so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@ zso|BwGa{{Q&@so|BwGa{{Q&@so|BwGa z{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so z|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@so|BwGa{{Q&@!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~Cz zPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;- zKmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V z|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd z|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U z{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va z`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{Qs< zr~g0w|LOlv|9|@b)Bm6T|MdT-|3Cfz>HkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24a zpZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmv zfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>! z|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^ z|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y z{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ< z^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~Cz zPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;- zKmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V z|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd z|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U z{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va z`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{Qs< zr~g0w|LOlv|9|@b)Bm6T|MdT-|3Cfz>HkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24a zpZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmv zfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>! z|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^ z|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y z{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ< z^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~Cz zPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;- zKmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V z|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd z|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U z{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va z`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{Qs< zr~g0w|LOlv|9|@b)Bm6T|MdT-|3Cfz>HkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24a zpZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmv zfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>! z|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^ z|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y z{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ< z^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~Cz zPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;- zKmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V z|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd z|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U z{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va z`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{Qs< zr~g0w|LOlv|9|@b)Bm6T|MdT-|3Cfz>HkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24a zpZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmv zfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24apZ@>! z|EK>y{r~CzPyc`V|I`1U{{QsHkmvfBOH^ z|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHqKlB;89^R&A4L(aLE*{9g|cMQ#d;3JM}U+AEuIh#8gK zBQi(cR@7b|XL$dAc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR z|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@ ze|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Y zc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR z|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@ ze|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Y zc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR z|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@ ze|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Y zc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR z|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@ ze|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Y zc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR z|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@ ze|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Y zc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR z|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@ ze|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Y zc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR z|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@ ze|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Y zc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR z|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@ ze|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Y zc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jNR|9^P@e|Z0Yc>jOw`~S1?$Bwh{$Bwh{ z$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{ z$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{$Bwh{ z$Bwh{$Bwh{$Bwh{$Bwh{-;T5K-;T5K-;T5K-;T5K-;T5K-;T5K-;T5K-;T5K$Bwh{ z$Bwh{$BwgG|8e}c<81u5<81u5<81u5<81t~<81t~<81t~<81t~<81t~<81t~<81t~ z<81t~<81t~<81t~<81t~<81t~<81t~<81t~<81t~<81t~>gZ>}%|DgW|{XgjcLH`f>f6)Jf{vY)Jp#KN`Kj{BK{}1|q(Eo$}AN2pA{|Eg) z=>I|g5Bh)5|AYP?^#7p$2mL?j|3Uu``hU>>gZ>}%|DgW|{XgjcLH`f>f6)Jf{vY)J zp#KN`Kj{BK{}1|q(Eo$}AN2pA{|Eg)=>I|g5Bh)5|6Kob{m=D3*Z*AqbN$ctKiB_U z|8xD%^*`7DT>o?Z&-Fjo|6Kob{m=D3*Z*AqbN$ctKiB_U|8xD%^*`7DT>o?Z&-Fjo z|6Kob{m=D3*Z*AqbN$ctKiB_U|8xD%^*`7DT>o?Z&-Fjo|6Kob{m=D3*Z*AqbN$ct zKiB_U|8xD%^*`7DT>o?Z&-Fjo|D*mN_5Y~RYANBvJ|402l>i<#ykNSVq|D*mN_5Y~< zNBuwQ|55*s`hV2_qy8WD|ET{*{XgpeQU8znf7Jh@{vY-KsQ*X(KkENc|Bw2A)c>RY zANBvJ|402l>i<#ykNSVq|C9co^#7#)C;dO^|4IK(`hU{@lm4Id|D^vX{XgmdN&ip! zf71Vx{-5;!r2i-VKk5HT|4;gV(*KkGpY;Ev|0n%F>HkUpPx^n-|C9co^#7#)C;dO^ z|4IK(`hU{@lm4Id|D^vX{XgmdN&ip!f71Vx{-5;!r2i-VKk5HT|4;gV(*KkGpY;Ev z|0n%F>HkUpPx^n-|3d!@{V(*t(EmdJ3;i$jztI0e{|o&u^uN&mLjMc>FZ93A|3d!@ z{V(*t(EmdJ3;i$jztI0e{|o&u^uN&mLjMc>FZ93A|3d!@{V(*t(EmdJ3;i$jztI0e z{|o&u^uN&mLjMc>FZ93A|3d!@{V(*t(EmdJ3;i$jztI0e{|o&u^uN&mLjMc>FZ93A z|Fiy|_5ZB@XZ=6x|5^Xf`hV8{v;Lp;|E&LK{XgsfS^v-af7buA{-5>#tp8{IKkNTl z|Ihk=*8j8qpY{K&|7ZO_>;GB*&-#DX|Fiy|_5ZB@XZ=6x|5^Xf`hV8{v;Lp;|E&LK z{XgsfS^v-af7buA{-5>#tp8{IKkNTl|Ihk=*8j8qpY{K&|7ZO_>;GB*&-#DX|5E=; z{V(;u)c;cdOZ_kPztsOy|4aQZ^}p2rQvXZ+FZI9F|5E=;{V(;u)c;cdOZ_kPztsOy z|4aQZ^}p2rQvXZ+FZI9F|5E=;{V(;u)c;cdOZ_kPztsOy|4aQZ^}p2rQvXZ+FZI9F z|5E=;{V(;u)c;cdOZ_kPztsOy|4aQZ^}p2rQvXZ+FZI9F|4RQW{jc=D(*H{TEB&wZ zztaCo|115k^uN;oO8+bUuk^pt|4RQW{jc=D(*H{TEB&wZztaCo|115k^uN;oO8+bU zuk^pt|4RQW{jc=D(*H{TEB&wZztaCo|115k^uN;oO8+bUuk^pt|4RQW{jc=D(*H{T zEB&wZztaCo|115k^uN;oO8+bUuk^pt|62cR{jc@E*8f`nYyGeFzt;a+|7-oP^}p8t zTK{YPul2vy|62cR{jc@E*8f`nYyGeFzt;a+|7-oP^}p8tTK{YPul2vy|62cR{jc@E z*8f`nYyGeFzt;a+|7-oP^}p8tTK{YPul2vy|62cR{jc@E*8f`nYyGeFzt;a+|7-oP z^}p8tTK{YPul2vy|3?2C{crTY(f>yO8~tzeztR6j{~P^p^uN*nM*kcAZ}h*>|3?2C z{crTY(f>yO8~tzeztR6j{~P^p^uN*nM*kcAZ}h*>|3?2C{crTY(f>yO8~tzeztR6j z{~P^p^uN*nM*kcAZ}h*>|3?2C{crTY(f>yO8~tzeztR6j{~P^p^uN*nM*kcAZ}h*> z|5pE7{crWZ)&ExiTm5hKzt#U%|6BcU^}p5sR{vZ5Z}q>`|5pE7{crWZ)&ExiTm5hK zzt#U%|6BcU^}p5sR{vZ5Z}q>`|5pE7{crWZ)&ExiTm5hKzt#U%|6BcU^}p5sR{vZ5 zZ}q>`|5pE7{crWZ)&ExiTm5hKzt#U%|6BcU^}p5sR{vZ5Z}q>`|BL=#^#7v&7yZBJ z|3&{V`hU^?i~e8q|DyjF{lDn{MgK4Qf6@Po{$KR}qW>5Dzv%x(|1bJ~(f^D7U-bW? z{}=tg=>J9kFZzGc|BL=#^#7v&7yZBJ|3&{V`hU^?i~e8q|DyjF{lDn{MgK4Qf6@Po z{$KR}qW>5Dzv%x(|1bJ~(f^D7U-bW?{}=tg=>J9kFZzGc|EvCA_5Z5>SN*^0|5g95 z`hV5`tNvg0|Em92{lDt}RsXO0f7So1{$KU~s{dF0zv};0|F8Og)&HyhU-kd0|5yFL z>i<>$ulj%0|EvCA_5Z5>SN*^0|5g95`hV5`tNvg0|Em92{lDt}RsXO0f7So1{$KU~ zs{dF0zv};0|F8Og)&HyhU-kd0|5yFL>i<>$ulj%0|4#oq{qOX@)BjHYJN@tUztjIt z|2zHf^uN>pPX9ao@ASXZ|4#oq{qOX@)BjHYJN@tUztjIt|2zHf^uN>pPX9ao@ASXZ z|4#oq{qOX@)BjHYJN@tUztjIt|2zHf^uN>pPX9ao@ASXZ|4#oq{qOX@)BjHYJN@tU zztjIt|2zHf^uN>pPX9ao@ASXZ|6c!l{qOa^*Z*Gsd;RbAzt{g>|9k!K^}pBuUjKXj z@Abde|6c!l{qOa^*Z*Gsd;RbAzt{g>|9k!K^}pBuUjKXj@Abde|6c!l{qOa^*Z*Gs zd;RbAzt{g>|9k!K^}pBuUjKXj@Abde|6c!l{qOa^*Z*Gsd;RbAzt{g>|9k!K^}pBu zUjKXj@Abde|C|2b^#7*+H~qiq|4sjI`hU~^oBrSQ|EB*p{lDq|P5*EDf7Ab){@?Wf zrvEqnzv=%?|8M$#)Bl_P-}L{c|2O@=>HkgtZ~A}J|C|2b^#7*+H~qiq|4sjI`hU~^ zoBrSQ|EB*p{lDq|P5*EDf7Ab){@?WfrvEqnzv=%?|8M$#)Bl_P-}L{c|2O@=>Hkgt zZ~A}J|GWO*_5ZH_cm2QX|6Tv@`hVB|yZ+zx|E~Xc{lDw~UH|X;f7k!J{@?ZguK#!a zzw7^9|L^*L*Z;fz-}V2l|9Abr>;GN<@A`k&|GWO*_5ZH_cm2QX|6Tv@`hVB|yZ+zx z|E~Xc{lDw~UH|X;f7k!J{@?ZguK#!azw7^9|L^*L*Z;fz-}V2l|9Abr>;GN<@A`k& z|3Uu;{U7vy(EmaI2mK%Pf6)Iy{|Ega^ncL*LH`H+AM}6F|3Uu;{U7vy(EmaI2mK%P zf6)Iy{|Ega^ncL*LH`H+AM}6F|3Uu;{U7vy(EmaI2mK%Pf6)Iy{|Ega^ncL*LH`H+ zAM}6F|3Uu;{U7vy(EmaI2mK%Pf6)Iy{|Ega^ncL*LH`H+AM}6F|A+oR^#7s%5B-1W z|3m*D`v1`XhyFkG|Dpd6{eS5HL;oN8|Iq)3{y+5pq5lv4f9U^1{~!AQ(Eo@2KlJ~h z{}26t=>J3iANv2$|A+oR^#7s%5B-1W|3m*D`v1`XhyFkG|Dpd6{eS5HL;oN8|Iq)3 z{y+5pq5lv4f9U^1{~!AQ(Eo@2KlJ~h{}26t=>J3iANv2$|EK;x_5Z2=PyK)D|5N{; z`v27br~W_n|Ed2^{eSBJQ~#g(|J47d{y+8qssB&?f9n5J|DXE*)c>dcKlT5q|4;pY z>i<*!pZfpQ|EK;x_5Z2=PyK)D|5N{;`v27br~W_n|Ed2^{eSBJQ~#g(|J47d{y+8q zssB&?f9n5J|DXE*)c>dcKlT5q|4;pY>i<*!pZfpQ|Cj#1^#7&*Fa3Y%|4aX0`v21Z zm;S%>|E2#g{eS8IOaEW`|I+`L{=fA9rT;Jef9d~A|6lt5(*KwKzx4m5|1bT2>Hkar zU;6*j|Cj#1^#7&*Fa3Y%|4aX0`v21Zm;S%>|E2#g{eS8IOaEW`|I+`L{=fA9rT;Je zf9d~A|6lt5(*KwKzx4m5|1bT2>HkarU;6*j|55)({U7yz)c;ZcNBtl5f7Jg`|402F z^?%g=QU6E%AN7CK|55)({U7yz)c;ZcNBtl5f7Jg`|402F^?%g=QU6E%AN7CK|55)( z{U7yz)c;ZcNBtl5f7Jg`|402F^?%g=QU6E%AN7CK|55)({U7yz)c;ZcNBtl5f7Jg` z|402F^?%g=QU6E%AN7CK|4IKR{h#!I(*H^SC;gxFf71U+|0n&Q^ncR-N&hGPpY(sy z|4IKR{h#!I(*H^SC;gxFf71U+|0n&Q^ncR-N&hGPpY(sy|4IKR{h#!I(*H^SC;gxF zf71U+|0n&Q^ncR-N&hGPpY(sy|4IKR{h#!I(*H^SC;gxFf71U+|0n&Q^ncR-N&hGP zpY(sy|F{0X_5ZE^Z~cGk|6Bjx`v2DdxBkEN|E>RT{eSEKTmRqs|JMJv{=fDAt^aTR zf9wBS|KIxm*8jKuzxDsE|8M<&>;GH--}?X7|F{0X_5ZE^Z~cGk|6Bjx`v2DdxBkEN z|E>RT{eSEKTmRqs|JMJv{=fDAt^aTRf9wBS|KIxm*8jKuzxDsE|8M<&>;GH--}?X7 z|BwEE^#7y(AN~L6|408n`v1}YkN$u3|D*pO{r~9yNB=+i|Iz=C{(toUqyHcM|LFfm z|3CWw(f^PBfAs&O{~!JT=>JFmKl=aC|BwEE^#7y(AN~L6|408n`v1}YkN$u3|D*pO z{r~9yNB=+i|Iz=C{(toUqyHcM|LFfm|3CWw(f^PBfAs&O{~!JT=>JFmKl=aC|5^WM z{h#%J*8f@mXZ@e`f7bt5|7ZQ5^?%m?S^sDKpY?y%|5^WM{h#%J*8f@mXZ@e`f7bt5 z|7ZQ5^?%m?S^sDKpY?y%|5^WM{h#%J*8f@mXZ@e`f7bt5|7ZQ5^?%m?S^sDKpY?y% z|5^WM{h#%J*8f@mXZ@e`f7bt5|7ZQ5^?%m?S^sDKpY?y%|3&{7{a^Hd(f>vN7yV!K zf6@O%{}=sV^ncO+MgJH5U-W;`|3&{7{a^Hd(f>vN7yV!Kf6@O%{}=sV^ncO+MgJH5 zU-W;`|3&{7{a^Hd(f>vN7yV!Kf6@O%{}=sV^ncO+MgJH5U-W;`|3&{7{a^Hd(f>vN z7yV!Kf6@O%{}=sV^ncO+MgJH5U-W;`|F8ak_5Z8?U;Y2;|5yLN`v2Acul|4a|EvFB z{r~F!SO35I|JDDm{(trVtN&m9|LXr&|G)bG)&H;lfA#;X|6l$8>i<{&zxw~x|F8ak z_5Z8?U;Y2;|5yLN`v2Acul|4a|EvFB{r~F!SO35I|JDDm{(trVtN&m9|LXr&|G)bG z)&H;lfA#;X|6l$8>i<{&zxw~x|5g82{a^Ke)&EuhSN&i0f7Sn0|5yEA^?%j>RsUE0 zU-f_0|5g82{a^Ke)&EuhSN&i0f7Sn0|5yEA^?%j>RsUE0U-f_0|5g82{a^Ke)&Euh zSN&i0f7Sn0|5yEA^?%j>RsUE0U-f_0|5g82{a^Ke)&EuhSN&i0f7Sn0|5yEA^?%j> zRsUE0U-f_0|DXQ<^#7;-KmGsd|4;va`v24apZ@>!|EK>y{r~CzPyc`V|I`1U{{Qs< zr~g0w|LOlv|9|@b)Bm6T|MdT-|3Cfz>HkmvfBOH^|DXQ<^#7;-KmGsd|4;va`v24a zpZ@>!|EK>y{r~CzPyc`V|I`1U{{QsHkmv zfBOH^|4sil{onL|)BjEXH~ruAf7Aa>|2O^L^ncU;P5(Fj-}Hae|4sil{onL|)BjEX zH~ruAf7Aa>|2O^L^ncU;P5(Fj-}Hae|4sil{onL|)BjEXH~ruAf7Aa>|2O^L^ncU; zP5(Fj-}Hae|4sil{onL|)BjEXH~ruAf7Aa>|2O^L^ncU;P5(Fj-}HZ*{_+3g|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2U^E@6Vmg@6Yl7 z z@&Duh$N!K2AOAo8fBgSW=lB0k=lB0k=lB0k=lB0k=lB0k=lB0k=lB0k=lB0k^*`1B zbbkNubbkNubbkNubbkNubbkNubbkMj{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N%qCfBt{`|M>s$|KtD1|BwIQ>HPlR>HPlR>HPlR z>HPlR>HPlR>HPlR>HPlR>HPlR>HPlR>HPlR>HPlR>HPlR>HPlR>HPlR>HPlRso($k z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duhcjx{2o%iQ=-k;xje}3ov`JMOYcix}hd4JCT zkN@AD_vd%spWk_Ze&_x9o%iQ=-ks$|KtD1|BwG4|3ChJ z{Qvm>-Fg3i=l%bk_y2d^|KEB4f9L)Go%jED-v8fue|~p8FTn4-|G)G8|IY89ci#Ws zdH;Xs{r{c!=Xc(p-+6z2=l%Je_vd%spWk_Ze&_x9o%iQ=-k;xje}3ov`JMOYcix}h zd4GQA{rSEA_xj)Kf3N?&{`dOd>wmBRz4!n3-v8h0f3N?&{`dOd>wmBRy?=jk@84hC z`}Y_3{{6+he}8fB-(TGO_ZRp6{l&e1e{t{MU)=lm7x(`C#l3%jaqr(>-23+z_x}CG zz5e(5-|K&`|GobA`rqq+um8RN{QvItzt{g>|9k!K^}pAj{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c z`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW z|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm> z@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$ z|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$ zs$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh z|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh z$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1 z|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2 z{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2 zAOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4 z|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9 z{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8 zfBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ z{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c`2X?$s$|KtD1|BwG4|3ChJ{Qvm>@&Duh$N!K2AOAo8fBgUW|MCCh|HuE2{~!N9{(t=c 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 z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq 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 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 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 z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?A_kKKO#*zMPk-G2Sp z?bnape*M_(uRs3#pa0!{{n+i-kKKO#*zMPk-G2Sp?bnape*M_(*N@$P{n+i-kKKO# z*zMPk-G2Sp?bnape*M_(*N@$P{n+vUj{kT2^<%eRKX&`|W4B*FcKh{Xw_iVY{J-P> z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYqPk;2&AN{`mZ@;hq z+wbfD_WSz3{l5Nhzpww>@9Y2e`})8AzW#5&um9Wc>;Lxq`oI0Y{%^mp|J(2D|MvU( zzw!UZ|J(2D|MvU(zx}@cZ@;hq+wbfD_S65({muQ&{muQ&{muQ&{muQ&{muQ&{muQ& z{muQ&{muQ&{muQ&{muQ&{muQ&{muQ&e*5~(&Hc^&&Hc^&&Hc^&@&CsE8~<{@?h2Ne?4FS*Yov%Jzqc8^Ywo{U;o$h^?yBI|JU>Ne?4FS*Yov%JzxLV^Ywo{U;o$h z^?yBI|JU>Ne?4FS*Yov%JzxLV^Ywo{U;o$h^?yBI|JU>Ne?4FS*Yov%JzxLV^Yvpr zUq9CK^Ki2d0V?AF#*7NmaJzqc8^YvprUq9CK^Ki2d0V?AF#*7NmaJzqc8 z^YvprUq9CK^Ki2d0V?AF#*7NmaJzqc8^YvprUq9CK^Ki2d0V?AF#*7Nma zJzqc8Yrofiul-*8z4m+U_uB8Z-)q0uey{yr`@Qyi?f2U6wcl&M*M6`4Ui-cFd+qny z@3r4+zt?`R{a*XM_IvI3+V8dBYrofiul-*8z4m+U_u7yD*K5Dmey{yr`@Qyi?f2U6 zwcl&M*M6`4Ui-cFd+qny@3r4+zt?`R{a*XM_IvI3+V8a=|1bVu{J;2r@&Drg#s7={ z7ymE*U;MxLfARm~|Hc1{{}=x+{$KpR_HpII zrT|1bVu{J;2r@&DrgmHqgC@&Drg#s7={7ymE*U;MxLfARm~|Hc1{{}=x+ z{$KpR_&Nc-`muYy ze(avFAG_!4$L{(1v3tIL?4GY5yXWi2?)mz$d%k|`p06Lf=j+Gr`TDVYzJBbUuOGYT z>&Nc-`muYye(avF|GVew|L*zvzk9y^@1C#!yXWiwj{kSh*Z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kRm?(fh2{kgwC|C9fB z{J-P>9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYqHq%pe}DSFKmFgI z{_ju!_ox5+)BpYH|NiuUfBL^a{okMdZ|-mIZ|-mIZ|-mIZ|-mUzq!A;zq!A;zq!A; zzq!A;zq!A;zq!A;zq!A;zq!A;zq!A;zq!A;zq!A;zq!A;KmOnNf8+m+|2O{M_{@?h2Ne?4FS*Yovb@&Drg^?dzb&)5I; zeEna~*Z=i={a?@5|Mh(RU(eV7^?dzb&)5I;eEna~*Z=i={a?@5|Mh(RU(eV7^?dzb z&)5I;eEna~*Z=i={a?@5|Mh(RU(eV7^?dzU&)1LjeEnF@*N^pl{aDY}kM(^0SkKpw z^?dzU&)1LjeEnF@*N^pl{aDY}kM(^0SkKpw^?dzU&)1LjeEnF@*N^pl{aDY}kM(^0 zSkKpw^?dzU&)1LjeEnF@*N^pl{aDY}kM(^0SkKpw_1f>X-)q0uey{yr`@LVk+57c> zz4m+U_uB8Z-)q0uey{yr`@Qyi?f2U6wcl&M*M6`4Ui-cFd+qny@3r4+zt?`R{a*XM z_IvI3+V8dBYd`*9{J;2rz4m+U_uB8Z-)q0uey{yr`@Qyi?f2U6wcl&M*M6`4Ui-cF zd+qny@3r4+zt?`R{a*X=|Kk6}|BL?@|1bVu{J;2r@&Drg#s7={7ymE*U;MxLfARm~ z|Hc1{{}=x+{$KpR_|2O^E^kdVHO+PmM*z{x5k4--|{n+$l(~nI*HvQQ2 zW7CgKKQ{f?^kdVHO+PmM*z{x5k4-<8{xAJs`oHvl>HpIIWxwo~{xAJs`oHvl>HpII zrT9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-#uSHcF)(3-ShQh_k8`>Jzqa|{J(p?e(avFAG_!4$L{(1v3tIL?4GY5yXWi2 z?)mz$d%k|`p06Lf=j+Gr`TDVYzJBbUuOGYT>&Nc-`muYye(avFAG_!4$L{(1v3tIL z?4GY5yXWi2?)mz$d%k|`p06Lf=j;FO`TD9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9Ah~-#_>F z&;9-LKmWPEf9{X}cl^KO{~iDD_9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq08~<Hq%pe}DSFKmFgI{_ju!_ox5+)BpYH z|NiuUfBL^a{okMdZ|-mIZ|-mIZ|-mUzv=&`|C{@p`X-)q0ue(%?B_I~|e@7MqJe*Iss{a*XM_IvI3+V8dBYrofiul-*8z4m+U_uB8Z z-)q0uey{yr`@Qyi?f2U6wcl&M*M6`4Ui-cFHpIIrT9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@*=cKX%X8kKOb2W5@ry=j+Gr`TDVYzJBbUuOGYT>&Nc-`muYye(avFAG_!4 z$L{(1v3tIL?4GY5yXWi2?)mz$d%k|`p06Lf=j+Gr`TDVYzJBbUuOGYT>&Nc-`muYy ze(avFAG_!4$L{(1v3tIL?4GY5yXWiw?)mz^ z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq zBoNhv7dhIryu+2$A0>;pMLD8AN%RYe)_SWe(a|o`{~Di`mvvW?57|5>BoNh zv7dhIryu+2$A0>;pMLD8ALIXx|2O{M_Hq%pe}DSFKmFgI{_ju!_ox5+)Bnx=&Hc^&P5(Fj z-}Hae|4sil_c!-9_c!-9_c!-9_c!-9_c!-9_c!-9_c!-9_c!-9_c!-9_c!-9_c!-9 z_c!;){~P~r{J%{-qY>p0EGw`TD<}um9`$`oEs9 z|Lghszn-uE>-qY>p0EGw`TD<}um9`$`oEs9|Lghszn-uE>-qY>p0EGw`TD<}um9`$ z`oEs9AM5%0v7WCV>-qYzp06M4`TDV*uOI9A`mvs`AM5%0v7WCV>-qYzp06M4`TDV* zuOI9A`mvs`AM5%0v7WCV>-qYzp06M4`TDV*uOI9A`mvs`AM5%0v7WCV>-qYzp06M4 z`TDV*uOI9A`mtX7z4m**ezW)M|9ZdvulMW!dcXd!_v`<9?f2U6wcl&M*M6`4Ui-cF zd+qny@3r4+zt?`R{a*XM_IvI3+V8dBYrofiul-*8z4m+U$N!7}7ymE*U;MxLfARl% z?f2U6wcl&M*M6`4Ui-cFd+qny@3r4+zt?`R{a*XM_IvI3+V8dBYrofiul-*8z4qh( z#s7={7ymE*U;MxLfARm~|Hc1{{}=x+{$KpR_BpuYn|^HivFXRAADez``myQ9rXQPrZ2Gb3$EF{fer)=&>BpuY zn|^HivFXRs|E2%Se%UYkWxwo~{nG!X|4aXu{xAJs`oHvl>HpIIrT*^mDh|1bVu{J;2r@&Drg#s7={ z7ymE*U;MxLfARm~|Hc1{{}=x+{$KpR_9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYqJzqa|&)1LL z^Yvr*eErxxUq5!w*N@%v^<(#Z{n$NUKX%X8kKOb2WA}Xh*gaoAcF)(3-ShQh_k8`> zJzqa|&)1LL^YvrL|GVew|BnB6{J-P>9slq6f5-p3=j;FO`TD;LZg z`oDX={_mcz|GVew|L*zvzk9y^@1C#!yXWiw?)mz^d%phfp0EGA=j;FO`TD;LZg`oDX={_mcz|2zKQ@&Athcl^KO{~iDD_o@N|_xGRs`_KLT=l=e4fB(5Z{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYqg{ z_xI2J{d0f(zvKTM|L^#J$NxM2-~Drc|J)z{@A!Ym|2zKQ@&Athcl^KO{~iDD_9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYqh=`l|Be4Q{@?h2{mbbs~`K-kNxV$e)VI&`mtaA*sp%Hq%pe}DSFKmFg_-}Hae|4sil{onL|)BjEXH}^O9H}^O9H}^O9H}^O9H}^O9H}^O9 zH}^O9H}^O9H}^O9H}^O9H}^O9H}^O9$N$^(W7CgKKQ{f?^kdVHO+Uu}8~<-qY>p0EGw`TD<}uOI9A z`oEs9|Lghszn-uE>-qY>p0EGw`TD<}um9`$`oEs9|Lghszn-uE>-qY>p0EGw`TD<} zum9`$`mvs`AM5%0v7WCV>-qYzp06M4`TDV*uOI9A`mvs`AM5%0v7WCV>-qYzp06M4 z`TDV*uOI9A`mvs`AM5%0v7WCV>-qYzp06M4`TDV*uOI9A`mvs`AM5%0v7WCV>-qYz zp06M4`TDV*uOI9E`pw?2|LgtwzuvF^>;3w_-mm}b{rbP&um9_{-)q0uey{yr`@Qyi z?f2U6wcl&M*M6`4Ui-cFd+qny@3r4+zt?`R{a*XM_IvI3+K>Mi|1bVu{J;2r@&Drg z#sBNI-)q0uey{yr`@Qyi?Z^M?wcl&M*M6`4Ui-cFd+qny@3r4+zt?`R{a*XM_IvI3 z+K>Mi|1bVu{J;2r@&Drg#s7={7ymE*U;MxLfARm~|Hc1{{}=x+{$KpR_BpuYn|^HivFXRAADe!R{}=x+{$KpR z_BpuYoBnV5vFXRAADez``myQ9rXQPrZ2Gb3$EF{f zer)=&>BpuYn|>_&Wxwo~{jy*7%YNA}{a^aO^ndC9(*LFZOaGVtFa2Nozx03U|I+`Z z|4aXu{xAJs`oHvl>HpIIrT9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq&K4&chA?4-ShQh_k8`>Jzqa| z&)1LL^Yvr*eErxxUq5!w*N@%v^<(#Z{n$NUKX%X8kKOb2WA}Xh*gaoAcKpBN{~iDD z_;LZg`oDX={_mcz|GVew|L*zvzk9y^@1C#!yXWiwj{kT3 zzvKTM|L^#J$NxM2-|_$Mwcl&M*M6`4Ui-cF;LZk`oDX>{_oze|GW3=|L*F z&;9*#fB)RyKlk^~{rz)){J-P>9slq6f5-nj{@?v`fB(LI^Z0+q|2zKQ@&Athcl^KO z{~iDD_9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slos+~1G;`*D9i?(fI_{kXp$_xI!e_9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq{gc@WdNBqD2 z>c@WdW54>bU;Wsxe(YC2_NyQJ)sOw^$A0x=zxuIX{n)R5>{mbbs~`K-kMaM;{~P~r z{J-)4#{V1tZ~VXU|Hl6t|8M-i@&CsE8~<Hq%pe}DSFKmFgI{^(DC^rt`K|Lsrz_ox5+)BpYH|NiuUfBL^a{okMd?@#~tr~muY z|NZIz{`7x;`oBN@-=F?(`oHP_rvID%Z~DLK|EB+&{%`JY?r-jI?r-jI?r-jI`oFoq zxxcx;xxcx;xxcx;xxcx;xxcx;xxcx;xxcx;xxeYhrXQPrZ2Gb3$EF{fer)Ne?4FS*Yov%JzxLV^Yvr#|Kk7keEna~*Z=i={a?@5|Mh(R zU(eV7^?dzb&)5I;eEna~*Z=i={a?@5|Mh(RU(eV7^?dzb&)5I;eEnF@*N^pl{aDY} zkM(^0SkKpw^?dzU&)1LjeEnF@*N^pl{aDY}kM(^0SkKpw^?dzU&)1LjeEnF@*N^pl z{aDY}kM(^0SkKpw^?dzU&)1LjeEnF@*N^pl{aDY}kM(^0SkKpw^?dzU&)1Lje*ItX z*Z=i?{a^3b|Mhrd^?v_IvI3+V8dBYrofiul-*8z4m+U_uB8Z-)q0uey{yr`|HpIIWxwo~{xAJs`oHvl>HpIIrT*)RKLzwF2Vi~kq@FaBTIkN;Qp%YOX7_9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq&Nc-`muYye(avFAG_!4$L{(1v3tIL?4GY5yXWi2?)mz$d%k|`p06Lf=j+Gr z`TDVYzJBbUuOB=9-|_#B|9AYq-D|(s zey{yr`@Qyi?f2U6wcl&M*M6`4Ui-cFd+qny@3r6i^?&z%{olP`|99`#|K0obfA@a< z-@RY|ckkE#-D|(sey{yr`@LWPcl^J5zy9yuum8K(ey{yr`@Qyi?f2U6wcl&M*M6`4 zUi-cFd+qny@3r4+zklxUpZojg{{FeYf9~&}`}^nq{<%N?-|_#B|9AYq`{(}tef{SB zbASKbAOG+8f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYqc@WdWBkAI|Hl6t|8M-i z@&CsE8~<HntxoBnV5zv=&`|C|1A`oHP_=KkjX=KkjX=KiMtoBnV5zq!A;zq!A; zzq!A;zq!A;zq!A;zq!A;zq!A;zq!A;zv;)OADez``myQ9rXQPrZ2B?&-}ryy|Be4Q z{@rd^?v&B zUi-cFd+qmr{buji|Mhrd_1f>X-)q0uey{yr`@Qyi?f2U6wcl&M*M6`4Ui-cF zd+o>ni~kq@FaBTrzxaRg|Kk7k+V8dBYd`*9{J;2r@&Drg_1f>X-)q0uey{yr`@Qyi z?f2U6wcl&M*M6`4Ui-cFd+o>ni~kq@FaBTrzxaRg|Kk6}|BL?@|1bVu{J;2r@&Drg z#s7={7ymE*U;MxLfARm~|Hc1{{}=x+{$KpR_|2O^L^ncTjO+PmM*z|wX|4sil{onL|(~nI*HvQQ2 zW7CgKKQ{f?^kdVHO+PmM*z{x5k4--|{n+$l*)RKLzwDR&vS0Sge(C?x|E2#+|Cjx; zU-rv>>HpIIrT9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKVi^Yvr*eErxxUq5!w*N@%v^<(#Z{n$NUKX%X8kKOb2WA}Xh*gaoAcKpA4zJBbU zuOGYT>&Nc-`muYye(avFAG_!4$L{(1v3tIL?4GY5yXWi2?)mz$d%k|`p06Lf=j+Gr z`TDVYzJBbUuOGYT>&Nc-`my8x9slq6f5-nj{@?Ncj{kT3zk9y^@1C#!JO1B2U;lUf zzvKTM|L^#J_k8`|JzxKK&)5Im^YwrCeEr`&U;lT{*Z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq|B`eE zHKGK_5d|-1XcT7RQ}-VpGx-YILRhH-L#pcb6yyJm|2O{M_c@WdW54>bU;WsxevJP&{@?h2{J-)4#{V1tZ~VXU|Hl6t|8M-i@&CsE8~<;HPb{;%ij z|9ZauujlLkdcOXz=j;D^zW%T0>;HPb{;%ij|9ZZDtmo^;dcJ&JS& zeyr!~$9legtmo^;dcJ&JS&eyr!~$9legtmo^;dcJ&JS&eyr!~$9legtmo^;dcJ&JS&eyr!~$9lj1ulMW!dcXd!_v`<9 zzy7cH>;HPc{;&7z|9b8B+VB1P&EBv7>;3w_-mm}b{rbP&um9_{-)q0uey{yr`@Qyi z?f2U6wcl&M*M6`4Ui-cFd+qnykN+3{FaBTrzxaRg|Kk6}|Le6M|1bVu{J;2r@&Drg z#sBNI-)q0uey{yr`@Qyi?f2U6wcl&M*M6`4Ui-cFd+qnykN+3{FaBTrzxaRg|Kk6} z|BL?@|1bVu{J;2r@&Drg#s7={7ymE*U;MxLfARm~|Hc1{{}=x+{$KpR_BpuYn|_S{7yqy6$EF{fer)=&>BpuYHntxn|^Hizv=&` z|C|1A`oHP_rvICMZ2Gb3$EF{fer)=&>BpuYn|^HivFXRAADez``myQ9rXS0G*)RKL zzwDR&vS0Q~|CjzR`(?lEm;JI|_Dlbl{xAJs`oHvl>HpIIrT9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq&Nc-`muYye(avFA3OfvJzqa|&)1LL^Yvr*eErxx zUq5!w*N@%v^<(#Z{n$NUKX%X8kKOb2WA}Xh*gaoAcF)(3-ShQh_k8`>Jzqa|&)1LL z^Yvr*eErxxUq5!w*N+|l@A!Ym|2zKQ@&Athcl^KO{~iDDp0EEq{@?Ncj{kT3zvKTM z|L>l!|GVew|L*zvzk9y^@1C#!yXWiw?)mz^d%phfp0EGA=j;FO`TD;LZg`oDX={_psI$NxM2-|_#B|9AYqF@9Q`3pZojg z{{FeYf9~&}`}^nq_9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?w$zaRJa z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq`y=T zryu*%kNxS#{`5zG`msO#*q?svPe1mjAN$jf{prX4^kaYeG5+89f8+m+|2O{M_HntxoBnV5zv=&`|C|1A{x|*K^ncU;P5(Fj-}Hae|IPpAfAhcj-~4a> zH~*Xe&Hv_q^S}Au{BQm@|C|3!KQ{f?^kdVHO+PmM*z{x5kMaLD{n+$l(~nI*HvQQ2 zW7CiE|Hl6t|8M-i@&CsE8~<;!AOCOszw!UZ{~P~r{J-)4#{XOP%YNA}`(?lEm;JII z|8LnZ`(?lEm;JI|_T&GJ|2O{M_<$w8K{+IvdfB7H( zZ~VXU|Hl6t|8M-i@&CsE8~<-qY>p0EGw`TD<}um9`$`oEs9|Lghszn-rj>-qY>p0EGw`TD<} zum9`$`oEs9|Lghszn-uE>-qYzp06M4`TDV*uOI9A`mvs`AM5%0v7WCV>-qYzp06M4 z`TDV*uOI9A`mvs`AM5%0v7WCV>-qYzp06M4`TDV*uOI9A`mvs`AM5%0v7WCV>-qYz zp06M4`TDV*uOI9A`mvs`AM5%0v7WCV>;3w_-mm}b{rbP&um9`)`oG?<|LgtwzuvF^ z>;3x8-mm}b{rbP&um9`)`oG?<|LgtwzuvF^>$Tr&zt?`R{a*XM_IvI3+V8dBYrofi zul-*8z4m+U_u7yD7ymE*U;MxLfARm~|Hc1{{}=x+{$KpR_$Tr&zt?`R z{a*XM_T&G>|Le8iYrofiul-*8z4m+U_u7yD7ymE*U;MxLfARm~|Hc1{{}=x+{$KpR z_BpuYn|_S{7ymE*U;MxLfARmCevJPY z|1bVu{J;2r@&Drg#s7={*YtnW|4sil{onL|)BjEXH~ruAf7Aa>|2O^L^ncU;P5(Fj z-}GbCk4--|{n+$l(~nL6H~ruAW7CgKKQ{f?^kdVHO+PmMSoX_)*)RKLzwDR&vS0Sg ze%UYkWxwo~{jy*Bzx03U|I+`Z|4aXu{nG!X|4aXu{xAJs`oHvl>HpIIWxwo~{jy*7 z%YNA}`(?lEm;JI|_RD_RFZ=QT;{V0}i~kq@FaBTIkN+3{FaBTrzxaRg|Kk6}|BL?@ z|1bVu{J;2r@&Drg#s7={7ymE*U;MxLfARm~|Hc1{{}=x+{$KpR_9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM 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 z z9slq6f5-nj{@=a!d+qny@3kNQ@A!Ym|2zKQz4m+U_uB8Z-)q0uey{yr`@LWPckkE# z-TU=__kR7~yof5-p3_v`=e{rbOq?f2U6wcl&M*M6`4Ui-cF`}yC`|9<}W^S__} z{rvCee?R~G`QOj~e*X9Kzn}m8{O{*~KmX(Z9slq6fB#9kgBytfAckT6|C2`ctf}vS zum;0Vf#d(}@xSNmH~0A8wmBRz5e(5-|K&` z|GobA`rqq+{J-)4_WIxJf3N?&Uq8Lq|6c#&|Be4Q{@?h2BoNhv7dhIryu+2$A0=T{@?h2 zHq%pe}DSF zKmFgI{_ju!_ox4x{%`uf>HntxoBnV5zv=&`|C|1A`oHP_rvID%Z~DLK|EB+&|IPpA zfAhcj-}Hae|4sil|C|5K|K@-5zxm(%Z~iy^*z{x5k4--|{n+$l(~nI*HvQQ2W7CgK zKQ{f?^kdVHO+Uu}8~<{J-)4#{XOP*)RKLzwDR&vS0Sge%UYkWxwo~|K)%AU-nD?m;JI|_RIhBzx*%%%m4Df z{4f9G|Be4Q{@?h2Ne?4FS*Yov%JzxLV^YvprUq9CK^Ki2d0 zV?AF#*7NmaJzqc8^YvprUq9CK^Ki2d0V?AF#*7NmaJzqc8^YvprUq9CK^ zKi2d0V?AF#*7NmaJzqc8^YvprUq9CK^Ki2d0V?AF#*7NmaJzqc8`}KdlU;o$p z^?$uz|JVEVf4yJ-*ZcKN+U;MxLfARm~|Hc1{|JU??)BjEXH~ruA zf7Aa>|2O^L^ncU;P5(Fj-}Hae|4sil{onLs(~nL6H~ruAf7Aa>|2O^L^kdVHO+PmM z*z{x5k4--|{aE(Pe%UYkWxwo~{jy*7%YNA}`(?lEm;JI|`oHvl>HpIIWxwo~{jy*B zzx03U|I+`Z|4aXu{xAJs_RD_RFZ*S`?3ewrU-rv>*)RKLzwDR&vLF91{$JUT|5x_Q ze%UYk@&Drg#s7={7ymE*U;MxLfARm~|Hc1{{}=x+{$KpR_9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc 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 z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^{fq&v8k0LzUa zc#(&)LLT++hWwbRq)}_a0xxVRkhete|Hl6t|8M-i@&CsE8~<&Nza{n$RQAKT~kWBa^*Y@gSU?eqGveO^Dd&+EtbdHvWvuOA!# zZ~VXU|Hl6t|8M-i@&CsE8~<;Lxm`oI0X{%?P;|J&c| z|MvI#zx}=bZ-1}<+u!T|_V@a~{k{Hgf3N@B-|PSO_xiv6z5Z{1um9WM>;Lv=zd!r^ z+3(MOfA;&cAOCOszkS``*ZqCn-`D+p-QU;!ecj*J{e9iv*ZqCn-`D+p-QU;!ecj*J z{e9iv*ZqCn-`D+p-QU;!ecj*J{qg_C{~P~r{J-)4#{b*be&5$`j{i6Q-}ryy|Be4Q z{@?h2HntxoBnV5zv=&`|C|1A z`oHP_rvID%Z~DLK|EB+&{%`uf>Hp^b=KkjX=KlD9oBNyoZ~DLK$EF{fer)=&>BpuY zn|^HivFXRAADez``myQ9rXQPrZ2Gb3$EF{fer)=&>BpuYn|^HiG5+89f8+m+|2O{M z_*)RKLzwDR&vS0Sge%UYkWk3Gk_*)R8( z`^)|1{`h~({bj%G$NwAuZ~VXU|Hl6t|8M-i@&CsE8~<;L+`{;%)r|Kk7kef?kjzxaQBUq9CO^<#ZsKi2p4 zV|`yg*7x;eeP2J;_w{3aUq9CO^<#ZsKi2p4V|`yg*7x;eeP2J;_w{3aUq9CO^<#Zs zKi2p4V|`yg*7x;eeP2J;_w{3aUq9CO^<#ZsKi2p4V|`!0+4uEheP2J;_w{4_UjNtc z^?&_d|JU#JfBjzn*YEXz{a*jq@AZHEUjNtc^?&_d|JU#JfBjzn*YEXz{a*jq@AZHE zUjNtc^?&_d|JU#JfBjzn*YEXz{a*jq@AZHE?Dw|2O^L^ncU;P5(Fj-}Hae|4sil{onL| z)BjEXH~ruAW7CgKKQ{f?^ncU;P5(FjU-rv>*)RKLzwDR&vS0Sge%UYkWxwo~{jy*7 z%YNA}`(?lEm;JI|`oHvl>HpIIrT*)RKLzwDR& zvS0Sge%UYkWxwo~{jwkbFaBTrzxaRg|Kk6Z{jwkbFaBTrzxaRg|Kk6}|BL?@|1bVu z{J;2r@&Drg#s7={7ymE*U;MxLfARm~|Hc1{{}=x+{$KpR_9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq&Nza{n$RQAKT~kWBa^*Y@gSU?eqGv zeO^Dd&+EtbdHvWvuOHjz^<(?Ier%uDkL~mNv3*`Yw$JOw_Idr-KCd6!=k;Uzynbw- z*N^S<`mudpKQ{i~_<#Gner%uDkB$E~{@?h2;Lxm`oI0X{%?P;|J&c||MvI#zx}=bZ-1}<+u!T|_V@a~{k{Hgf3N@B-|PSO_xiv6 zz5Z{1um9WM>;Lv=zd!r^+3(MO{J-)4_V@a~{k{HgU-$QQe_!|ab$?&?_jP|?_xE*w zU-$QQe_!|ab$?&?_jP|?_xE*wU-$QQe_!|ab$?&?_jP|?_xE*w{J-)4#{V1tZ(sX; zU%$Dp`}?{-{@?h2HntxoBnV5zv=&`|C|1A z`oHP_rvID%Z~DLK|EB+&{%`uf>HntxoBnV5zv=&`|C|1A`oFoqxj+8j=KiMtoBnV5 zzv=&`ADez``myQ9rXQPrZ2Gb3$EF{fer)=&>BpuYn|^HivFXRAADez``myQ9rXQPr zZ2Gb3$M}Ea|Be4Q{@*)RKLzwDR&vS0Sge%UYkWxwo~{jy*7 z%YNA}`(?lEm;LyE*)RKLzwDR&vS0Sge%UYkWxwo~{jy*7%YNA} z`(?lEm;JI|_RD_RFZY-G|2O^L^ncU;P5(Fj-}Hae|4sil{onL|)BjEX zH~ruAf76dmKQ{f}^ncU;P5(Fj-}HakFZ*S`?3ewrU-rv>*)RKLzwDR&vS0Sge%UYk zWxwo~{jy*7%YNzq(*LFZOaGVsvS0Sge%UYkWxwo~{jy*7%YNA}`(?lEm;JI|_RD_R zFZ*S`?3ewrU-rv>{J;2r@&DrgmHo0`_RD_!zxaRg|Kk6}|BL?@|1bVu{J;2r@&Drg z#s7={7ymE*U;MxLfARm~|Hc1{{}=x+{$KpR_0|BnB6{J-P>9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 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 z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 zzvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM z|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J z$NxM2-|_#B|9AYq z9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2 z-|_#B|9AYq9slq6 zf5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B z|9AYq9slq6f5-nj z{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq z9slq6f5-nj{@?Nc zj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3zvKTM|L^#J$NxM2-|_#B|9AYq9slq6f5-nj{@?Ncj{kT3 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 AasU7T diff --git a/src/json.hpp b/src/json.hpp index b1f42acd..409d3894 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -4445,7 +4445,7 @@ namespace nlohmann { namespace detail { -/// proxy class for the iterator_wrapper functions +/// proxy class for the items() function template class iteration_proxy { private: @@ -8498,14 +8498,15 @@ class serializer { if (codepoint <= 0xFFFF) { - std::snprintf(string_buffer.data() + bytes, 7, "\\u%04x", codepoint); + std::snprintf(string_buffer.data() + bytes, 7, "\\u%04x", + static_cast(codepoint)); bytes += 6; } else { std::snprintf(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x", - (0xD7C0 + (codepoint >> 10)), - (0xDC00 + (codepoint & 0x3FF))); + static_cast(0xD7C0 + (codepoint >> 10)), + static_cast(0xDC00 + (codepoint & 0x3FF))); bytes += 12; } } @@ -8745,7 +8746,7 @@ class serializer codep = (state != UTF8_ACCEPT) ? (byte & 0x3fu) | (codep << 6) - : (0xff >> type) & (byte); + : static_cast(0xff >> type) & (byte); state = utf8d[256u + state * 16u + type]; return state; @@ -13308,18 +13309,24 @@ class basic_json @note The name of this function is not yet final and may change in the future. + + @deprecated This stream operator is deprecated and will be removed in + future 4.0.0 of the library. Please use @ref items() instead; + that is, replace `json::iterator_wrapper(j)` with `j.items()`. */ + JSON_DEPRECATED static iteration_proxy iterator_wrapper(reference ref) noexcept { - return iteration_proxy(ref); + return ref.items(); } /*! @copydoc iterator_wrapper(reference) */ + JSON_DEPRECATED static iteration_proxy iterator_wrapper(const_reference ref) noexcept { - return iteration_proxy(ref); + return ref.items(); } /*! @@ -14955,8 +14962,8 @@ class basic_json /*! @brief serialize to stream - @deprecated This stream operator is deprecated and will be removed in a - future version of the library. Please use + @deprecated This stream operator is deprecated and will be removed in + future 4.0.0 of the library. Please use @ref operator<<(std::ostream&, const basic_json&) instead; that is, replace calls like `j >> o;` with `o << j;`. @since version 1.0.0; deprecated since version 3.0.0 @@ -15141,8 +15148,8 @@ class basic_json /*! @brief deserialize from stream - @deprecated This stream operator is deprecated and will be removed in a - future version of the library. Please use + @deprecated This stream operator is deprecated and will be removed in + version 4.0.0 of the library. Please use @ref operator>>(std::istream&, basic_json&) instead; that is, replace calls like `j << i;` with `i >> j;`. @since version 1.0.0; deprecated since version 3.0.0 diff --git a/test/Makefile b/test/Makefile index feee7bfb..c7b72303 100644 --- a/test/Makefile +++ b/test/Makefile @@ -25,7 +25,7 @@ SOURCES = src/unit.cpp \ src/unit-element_access1.cpp \ src/unit-element_access2.cpp \ src/unit-inspection.cpp \ - src/unit-iterator_wrapper.cpp \ + src/unit-items.cpp \ src/unit-iterators1.cpp \ src/unit-iterators2.cpp \ src/unit-merge_patch.cpp \ diff --git a/test/src/unit-iterator_wrapper.cpp b/test/src/unit-items.cpp similarity index 100% rename from test/src/unit-iterator_wrapper.cpp rename to test/src/unit-items.cpp diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index cb19ca7e..886392b1 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -843,7 +843,7 @@ TEST_CASE("regression tests") { json j = json::parse("166020696663385964490"); CHECK(j.is_number_float()); - CHECK(j.get() == static_cast(166020696663385964490.0)); + CHECK(j.get() == 166020696663385964490.0); } SECTION("issue #405 - Heap-buffer-overflow (OSS-Fuzz issue 342)") From 355c1e946bb991564f7dfd8611ae6f3901b2ea74 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 23 Jan 2018 18:00:12 +0100 Subject: [PATCH 081/106] :construction_worker: added task to check amalgamation #906 - Builds and runs test cases from individual sources rather than from amalgamation. - Checks whether amalgamation would create the same single-header file as checked in. --- .travis.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.travis.yml b/.travis.yml index 6391c088..6c284754 100644 --- a/.travis.yml +++ b/.travis.yml @@ -74,6 +74,20 @@ matrix: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-4.9', 'ninja-build'] + # check amalgamation + - os: linux + compiler: gcc + env: + - COMPILER=g++-4.9 + - SPECIAL=amalgamation + - CMAKE_OPTIONS=-DJSON_MultipleHeader=ON + addons: + apt: + sources: ['ubuntu-toolchain-r-test'] + packages: ['g++-4.9', 'astyle', 'ninja-build'] + after_success: + - make check-amalgamation + # Coveralls (http://gronlier.fr/blog/2015/01/adding-code-coverage-to-your-c-project/) - os: linux From 95cf1fefaa0470dff69721fd78eae063b7447b94 Mon Sep 17 00:00:00 2001 From: zerodefect Date: Thu, 25 Jan 2018 12:51:48 +0000 Subject: [PATCH 082/106] Removed compiler warning about unused variable 'kMinExp'. --- develop/detail/conversions/to_chars.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/develop/detail/conversions/to_chars.hpp b/develop/detail/conversions/to_chars.hpp index 73d3a087..549ff01e 100644 --- a/develop/detail/conversions/to_chars.hpp +++ b/develop/detail/conversions/to_chars.hpp @@ -204,7 +204,7 @@ boundaries compute_boundaries(FloatType value) const bool is_denormal = (E == 0); const diyfp v = is_denormal - ? diyfp(F, 1 - kBias) + ? diyfp(F, kMinExp) : diyfp(F + kHiddenBit, static_cast(E) - kBias); // Compute the boundaries m- and m+ of the floating-point value From 1be3935e9d7f83da6e397007bfe0797eabeb10b2 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sat, 27 Jan 2018 17:43:44 +0100 Subject: [PATCH 083/106] :memo: cleanup after #936 --- README.md | 1 + doc/avatars.png | Bin 589278 -> 595449 bytes src/json.hpp | 2 +- 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index eeed96a7..ebf2b52f 100644 --- a/README.md +++ b/README.md @@ -934,6 +934,7 @@ I deeply appreciate the help of the following people. - [Eren Okka](https://github.com/erengy) fixed some MSVC warnings. - [abolz](https://github.com/abolz) integrated the Grisu2 algorithm for proper floating-point formatting, allowing more roundtrip checks to succeed. - [Vadim Evard](https://github.com/Pipeliner) fixed a Markdown issue in the README. +- [zerodefect](https://github.com/zerodefect) fixed a compiler warning. Thanks a lot for helping out! Please [let me know](mailto:mail@nlohmann.me) if I forgot someone. diff --git a/doc/avatars.png b/doc/avatars.png index b24204bd40b801c3360760a7a2a9a28561f10af5..1ef578756b1618a70983fff188067185efa37cf9 100644 GIT binary patch delta 427913 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