From 3bc95ec87dfa3f837863b1ce785cfff6dc58078f Mon Sep 17 00:00:00 2001 From: Hyan1ce Date: Sat, 16 Mar 2024 14:01:52 +0800 Subject: [PATCH 1/3] new file: .vscode/c_cpp_properties.json new file: .vscode/launch.json new file: .vscode/settings.json modified: tutorial01/leptjson.c modified: tutorial01/leptjson.h --- .vscode/c_cpp_properties.json | 18 ++++++++++++++ .vscode/launch.json | 24 +++++++++++++++++++ .vscode/settings.json | 43 +++++++++++++++++++++++++++++++++ tutorial01/leptjson.c | 45 +++++++++++++++++++++++------------ tutorial01/leptjson.h | 23 +++++++++++++----- 5 files changed, 132 insertions(+), 21 deletions(-) create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 00000000..b1880ec9 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "windows-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "D:/mingw64/bin/gcc.exe", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "windows-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..a37c1ac5 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": true, + "cwd": "d:/GitRepo/Hyan1ce-json-tutorial", + "program": "d:/GitRepo/Hyan1ce-json-tutorial/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..d9421535 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,43 @@ +{ + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", + "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wconversion", + "-Wnull-dereference", + "-Wsign-conversion" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "files.associations": { + "cmath": "c", + "type_traits": "c", + "limits": "c", + "typeinfo": "c" + } +} \ No newline at end of file diff --git a/tutorial01/leptjson.c b/tutorial01/leptjson.c index 5299fe1d..76735828 100644 --- a/tutorial01/leptjson.c +++ b/tutorial01/leptjson.c @@ -1,21 +1,29 @@ #include "leptjson.h" -#include /* assert() */ -#include /* NULL */ +#include /* assert() */ +#include /* NULL */ -#define EXPECT(c, ch) do { assert(*c->json == (ch)); c->json++; } while(0) +#define EXPECT(c, ch) \ + do \ + { \ + assert(*c->json == (ch)); \ + c->json++; \ + } while (0) -typedef struct { - const char* json; -}lept_context; +typedef struct +{ + const char *json; +} lept_context; -static void lept_parse_whitespace(lept_context* c) { +static void lept_parse_whitespace(lept_context *c) +{ const char *p = c->json; while (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r') p++; c->json = p; } -static int lept_parse_null(lept_context* c, lept_value* v) { +static int lept_parse_null(lept_context *c, lept_value *v) +{ EXPECT(c, 'n'); if (c->json[0] != 'u' || c->json[1] != 'l' || c->json[2] != 'l') return LEPT_PARSE_INVALID_VALUE; @@ -24,15 +32,21 @@ static int lept_parse_null(lept_context* c, lept_value* v) { return LEPT_PARSE_OK; } -static int lept_parse_value(lept_context* c, lept_value* v) { - switch (*c->json) { - case 'n': return lept_parse_null(c, v); - case '\0': return LEPT_PARSE_EXPECT_VALUE; - default: return LEPT_PARSE_INVALID_VALUE; +static int lept_parse_value(lept_context *c, lept_value *v) +{ + switch (*c->json) + { + case 'n': + return lept_parse_null(c, v); + case '\0': + return LEPT_PARSE_EXPECT_VALUE; + default: + return LEPT_PARSE_INVALID_VALUE; } } -int lept_parse(lept_value* v, const char* json) { +int lept_parse(lept_value *v, const char *json) +{ lept_context c; assert(v != NULL); c.json = json; @@ -41,7 +55,8 @@ int lept_parse(lept_value* v, const char* json) { return lept_parse_value(&c, v); } -lept_type lept_get_type(const lept_value* v) { +lept_type lept_get_type(const lept_value *v) +{ assert(v != NULL); return v->type; } diff --git a/tutorial01/leptjson.h b/tutorial01/leptjson.h index 9b65d22a..7b9f53d4 100644 --- a/tutorial01/leptjson.h +++ b/tutorial01/leptjson.h @@ -1,21 +1,32 @@ #ifndef LEPTJSON_H__ #define LEPTJSON_H__ -typedef enum { LEPT_NULL, LEPT_FALSE, LEPT_TRUE, LEPT_NUMBER, LEPT_STRING, LEPT_ARRAY, LEPT_OBJECT } lept_type; +typedef enum +{ + LEPT_NULL, + LEPT_FALSE, + LEPT_TRUE, + LEPT_NUMBER, + LEPT_STRING, + LEPT_ARRAY, + LEPT_OBJECT +} lept_type; -typedef struct { +typedef struct +{ lept_type type; -}lept_value; +} lept_value; -enum { +enum +{ LEPT_PARSE_OK = 0, LEPT_PARSE_EXPECT_VALUE, LEPT_PARSE_INVALID_VALUE, LEPT_PARSE_ROOT_NOT_SINGULAR }; -int lept_parse(lept_value* v, const char* json); +int lept_parse(lept_value *v, const char *json); -lept_type lept_get_type(const lept_value* v); +lept_type lept_get_type(const lept_value *v); #endif /* LEPTJSON_H__ */ From 3ecfca44e521cbb9631c721947715e2a8a39c4d5 Mon Sep 17 00:00:00 2001 From: Hyan1ce Date: Sat, 16 Mar 2024 15:54:36 +0800 Subject: [PATCH 2/3] new file: .vscode/tasks.json modified: tutorial01/leptjson.c modified: tutorial01/test.c new file: tutorial01/test.exe --- .vscode/tasks.json | 29 +++++++++++++++++++++ tutorial01/leptjson.c | 39 +++++++++++++++++++++++++--- tutorial01/test.c | 59 ++++++++++++++++++++++++++++++------------ tutorial01/test.exe | Bin 0 -> 66218 bytes 4 files changed, 108 insertions(+), 19 deletions(-) create mode 100644 .vscode/tasks.json create mode 100644 tutorial01/test.exe diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..454f27a3 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,29 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: gcc.exe 生成活动文件", + "command": "D:/mingw64/bin/gcc.exe", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}\\${fileBasenameNoExtension}.exe", + "" + ], + "options": { + "cwd": "D:/mingw64/bin" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "调试器生成的任务。" + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/tutorial01/leptjson.c b/tutorial01/leptjson.c index 76735828..877c53b0 100644 --- a/tutorial01/leptjson.c +++ b/tutorial01/leptjson.c @@ -32,14 +32,38 @@ static int lept_parse_null(lept_context *c, lept_value *v) return LEPT_PARSE_OK; } +static int lept_parse_true(lept_context *c, lept_value *v) +{ + EXPECT(c, 't'); + if (c->json[0] != 'r' || c->json[1] != 'u' || c->json[2] != 'e') + return LEPT_PARSE_INVALID_VALUE; + c->json += 3; + v->type = LEPT_TRUE; + return LEPT_PARSE_OK; +} + +static int lept_parse_false(lept_context *c, lept_value *v) +{ + EXPECT(c, 'f'); + if (c->json[0] != 'a' || c->json[1] != 'l' || c->json[2] != 's' || c->json[3] != 'e') + return LEPT_PARSE_INVALID_VALUE; + c->json += 4; + v->type = LEPT_FALSE; + return LEPT_PARSE_OK; +} + static int lept_parse_value(lept_context *c, lept_value *v) { switch (*c->json) { - case 'n': + case 'n': // null return lept_parse_null(c, v); - case '\0': + case '\0': // whitespace return LEPT_PARSE_EXPECT_VALUE; + case 't': + return lept_parse_true(c, v); + case 'f': + return lept_parse_false(c, v); default: return LEPT_PARSE_INVALID_VALUE; } @@ -48,11 +72,20 @@ static int lept_parse_value(lept_context *c, lept_value *v) int lept_parse(lept_value *v, const char *json) { lept_context c; + int ret; assert(v != NULL); c.json = json; v->type = LEPT_NULL; lept_parse_whitespace(&c); - return lept_parse_value(&c, v); + if ((ret = lept_parse_value(&c, v)) == LEPT_PARSE_OK) + { + lept_parse_whitespace(&c); + if (*c.json != '\0') + { + ret = LEPT_PARSE_ROOT_NOT_SINGULAR; + } + } + return ret; } lept_type lept_get_type(const lept_value *v) diff --git a/tutorial01/test.c b/tutorial01/test.c index e7672181..10a080c3 100644 --- a/tutorial01/test.c +++ b/tutorial01/test.c @@ -2,32 +2,53 @@ #include #include #include "leptjson.h" +#include "leptjson.c" static int main_ret = 0; static int test_count = 0; static int test_pass = 0; -#define EXPECT_EQ_BASE(equality, expect, actual, format) \ - do {\ - test_count++;\ - if (equality)\ - test_pass++;\ - else {\ - fprintf(stderr, "%s:%d: expect: " format " actual: " format "\n", __FILE__, __LINE__, expect, actual);\ - main_ret = 1;\ - }\ - } while(0) +#define EXPECT_EQ_BASE(equality, expect, actual, format) \ + do \ + { \ + test_count++; \ + if (equality) \ + test_pass++; \ + else \ + { \ + fprintf(stderr, "%s:%d: expect: " format " actual: " format "\n", __FILE__, __LINE__, expect, actual); \ + main_ret = 1; \ + } \ + } while (0) #define EXPECT_EQ_INT(expect, actual) EXPECT_EQ_BASE((expect) == (actual), expect, actual, "%d") -static void test_parse_null() { +static void test_parse_null() +{ lept_value v; v.type = LEPT_FALSE; EXPECT_EQ_INT(LEPT_PARSE_OK, lept_parse(&v, "null")); EXPECT_EQ_INT(LEPT_NULL, lept_get_type(&v)); } -static void test_parse_expect_value() { +static void test_parse_true() +{ + lept_value v; + v.type = LEPT_FALSE; + EXPECT_EQ_INT(LEPT_PARSE_OK, lept_parse(&v, "true")); + EXPECT_EQ_INT(LEPT_TRUE, lept_get_type(&v)); +} + +static void test_parse_false() +{ + lept_value v; + v.type = LEPT_FALSE; + EXPECT_EQ_INT(LEPT_PARSE_OK, lept_parse(&v, "false")); + EXPECT_EQ_INT(LEPT_FALSE, lept_get_type(&v)); +} + +static void test_parse_expect_value() +{ lept_value v; v.type = LEPT_FALSE; @@ -39,7 +60,8 @@ static void test_parse_expect_value() { EXPECT_EQ_INT(LEPT_NULL, lept_get_type(&v)); } -static void test_parse_invalid_value() { +static void test_parse_invalid_value() +{ lept_value v; v.type = LEPT_FALSE; EXPECT_EQ_INT(LEPT_PARSE_INVALID_VALUE, lept_parse(&v, "nul")); @@ -50,21 +72,26 @@ static void test_parse_invalid_value() { EXPECT_EQ_INT(LEPT_NULL, lept_get_type(&v)); } -static void test_parse_root_not_singular() { +static void test_parse_root_not_singular() +{ lept_value v; v.type = LEPT_FALSE; EXPECT_EQ_INT(LEPT_PARSE_ROOT_NOT_SINGULAR, lept_parse(&v, "null x")); EXPECT_EQ_INT(LEPT_NULL, lept_get_type(&v)); } -static void test_parse() { +static void test_parse() +{ test_parse_null(); + test_parse_true(); + test_parse_false(); test_parse_expect_value(); test_parse_invalid_value(); test_parse_root_not_singular(); } -int main() { +int main() +{ test_parse(); printf("%d/%d (%3.2f%%) passed\n", test_pass, test_count, test_pass * 100.0 / test_count); return main_ret; diff --git a/tutorial01/test.exe b/tutorial01/test.exe new file mode 100644 index 0000000000000000000000000000000000000000..0bd57ba272775569b5911849d6a7756f50078265 GIT binary patch literal 66218 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 Y{wL?^hMFvQV|Z!R^5EU&N`vQzKVIzpxBvhE literal 0 HcmV?d00001 From c801ff299992b175b34f8cd718658080c2e8edbd Mon Sep 17 00:00:00 2001 From: Hyan1ce Date: Sat, 16 Mar 2024 20:46:45 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=85=B3=E4=BA=8E=20tutorial2=20=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E8=BF=99=E4=B8=AA=20=E2=80=9C0123=E2=80=9D=E8=BF=99?= =?UTF-8?q?=E4=B8=AA=E5=AD=97=E7=AC=A6=E4=B8=B2=E7=9A=84=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=20Fixes=20#254?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 3 +- tutorial02/leptjson.c | 154 ++++++++++++++++++++++++++++++------- tutorial02/test.c | 95 +++++++++++++---------- tutorial02/test.exe | Bin 0 -> 108194 bytes tutorial02_answer/test.c | 1 + tutorial02_answer/test.exe | Bin 0 -> 111675 bytes 6 files changed, 182 insertions(+), 71 deletions(-) create mode 100644 tutorial02/test.exe create mode 100644 tutorial02_answer/test.exe diff --git a/.vscode/settings.json b/.vscode/settings.json index d9421535..30577de5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -38,6 +38,7 @@ "cmath": "c", "type_traits": "c", "limits": "c", - "typeinfo": "c" + "typeinfo": "c", + "cstdlib": "c" } } \ No newline at end of file diff --git a/tutorial02/leptjson.c b/tutorial02/leptjson.c index 7693e43b..53940099 100644 --- a/tutorial02/leptjson.c +++ b/tutorial02/leptjson.c @@ -1,21 +1,34 @@ #include "leptjson.h" -#include /* assert() */ -#include /* NULL, strtod() */ +#include /* assert() */ +#include /* NULL, strtod() */ +#include /* errno, ERANGE */ +#include /* HUGE_VAL */ -#define EXPECT(c, ch) do { assert(*c->json == (ch)); c->json++; } while(0) +#define EXPECT(c, ch) \ + do \ + { \ + assert(*c->json == (ch)); \ + c->json++; \ + } while (0) -typedef struct { - const char* json; -}lept_context; +#define ISDIGIT(ch) ((ch) >= '0' && (ch) <= '9') +#define ISDIGIT1TO9(ch) ((ch) >= '1' && (ch) <= '9') -static void lept_parse_whitespace(lept_context* c) { +typedef struct +{ + const char *json; +} lept_context; + +static void lept_parse_whitespace(lept_context *c) +{ const char *p = c->json; while (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r') p++; c->json = p; } -static int lept_parse_true(lept_context* c, lept_value* v) { +static int lept_parse_true(lept_context *c, lept_value *v) +{ EXPECT(c, 't'); if (c->json[0] != 'r' || c->json[1] != 'u' || c->json[2] != 'e') return LEPT_PARSE_INVALID_VALUE; @@ -24,7 +37,8 @@ static int lept_parse_true(lept_context* c, lept_value* v) { return LEPT_PARSE_OK; } -static int lept_parse_false(lept_context* c, lept_value* v) { +static int lept_parse_false(lept_context *c, lept_value *v) +{ EXPECT(c, 'f'); if (c->json[0] != 'a' || c->json[1] != 'l' || c->json[2] != 's' || c->json[3] != 'e') return LEPT_PARSE_INVALID_VALUE; @@ -33,7 +47,8 @@ static int lept_parse_false(lept_context* c, lept_value* v) { return LEPT_PARSE_OK; } -static int lept_parse_null(lept_context* c, lept_value* v) { +static int lept_parse_null(lept_context *c, lept_value *v) +{ EXPECT(c, 'n'); if (c->json[0] != 'u' || c->json[1] != 'l' || c->json[2] != 'l') return LEPT_PARSE_INVALID_VALUE; @@ -42,37 +57,118 @@ static int lept_parse_null(lept_context* c, lept_value* v) { return LEPT_PARSE_OK; } -static int lept_parse_number(lept_context* c, lept_value* v) { - char* end; - /* \TODO validate number */ - v->n = strtod(c->json, &end); - if (c->json == end) +static int lept_parse_literal(lept_context *c, lept_value *v) +{ + switch (*c->json) + { + case 'n': + { + if (c->json[0] != 'u' || c->json[1] != 'l' || c->json[2] != 'l') + return LEPT_PARSE_INVALID_VALUE; + c->json += 3; + v->type = LEPT_NULL; + } + case 't': + { + if (c->json[0] != 'r' || c->json[1] != 'u' || c->json[2] != 'e') + return LEPT_PARSE_INVALID_VALUE; + c->json += 3; + v->type = LEPT_TRUE; + } + case 'f': + { + if (c->json[0] != 'a' || c->json[1] != 'l' || c->json[2] != 's' || c->json[3] != 'e') + return LEPT_PARSE_INVALID_VALUE; + c->json += 4; + v->type = LEPT_FALSE; + } + default: return LEPT_PARSE_INVALID_VALUE; - c->json = end; + return LEPT_PARSE_OK; + } +} + +static int lept_parse_number(lept_context *c, lept_value *v) +{ + const char *p = c->json; + // 加减号 + if (*p == '-') + p++; + // 数字0 + if (*p == '0') + { + p++; + } + else + { + if (!ISDIGIT1TO9(*p)) + return LEPT_PARSE_INVALID_VALUE; + p++; + while (ISDIGIT(*p)) + p++; + } + // 判断小数点 + if (*p == '.') + { + p++; + if (!ISDIGIT(*p)) + return LEPT_PARSE_INVALID_VALUE; + p++; + while (ISDIGIT(*p)) + p++; + } + // 判断e,E + if (*p == 'e' || *p == 'E') + { + p++; + if (*p == '-' || *p == '+') + p++; + if (!(ISDIGIT(*p))) + return LEPT_PARSE_INVALID_VALUE; + p++; + while (ISDIGIT(*p)) + p++; + } + + errno = 0; + v->n = strtod(c->json, NULL); + if (errno == ERANGE && (v->n == HUGE_VAL || v->n == -HUGE_VAL)) + return LEPT_PARSE_NUMBER_TOO_BIG; v->type = LEPT_NUMBER; + c->json = p; return LEPT_PARSE_OK; } -static int lept_parse_value(lept_context* c, lept_value* v) { - switch (*c->json) { - case 't': return lept_parse_true(c, v); - case 'f': return lept_parse_false(c, v); - case 'n': return lept_parse_null(c, v); - default: return lept_parse_number(c, v); - case '\0': return LEPT_PARSE_EXPECT_VALUE; +static int lept_parse_value(lept_context *c, lept_value *v) +{ + switch (*c->json) + { + case 't': + return lept_parse_true(c, v); + case 'f': + return lept_parse_false(c, v); + case 'n': + return lept_parse_null(c, v); + default: + return lept_parse_number(c, v); + case '\0': + return LEPT_PARSE_EXPECT_VALUE; } } -int lept_parse(lept_value* v, const char* json) { +int lept_parse(lept_value *v, const char *json) +{ lept_context c; int ret; assert(v != NULL); c.json = json; v->type = LEPT_NULL; lept_parse_whitespace(&c); - if ((ret = lept_parse_value(&c, v)) == LEPT_PARSE_OK) { + if ((ret = lept_parse_value(&c, v)) == LEPT_PARSE_OK) + { lept_parse_whitespace(&c); - if (*c.json != '\0') { + if (*c.json != '\0') + { v->type = LEPT_NULL; ret = LEPT_PARSE_ROOT_NOT_SINGULAR; } @@ -80,12 +176,14 @@ int lept_parse(lept_value* v, const char* json) { return ret; } -lept_type lept_get_type(const lept_value* v) { +lept_type lept_get_type(const lept_value *v) +{ assert(v != NULL); return v->type; } -double lept_get_number(const lept_value* v) { +double lept_get_number(const lept_value *v) +{ assert(v != NULL && v->type == LEPT_NUMBER); return v->n; } diff --git a/tutorial02/test.c b/tutorial02/test.c index eaa5db69..e3200aad 100644 --- a/tutorial02/test.c +++ b/tutorial02/test.c @@ -2,55 +2,63 @@ #include #include #include "leptjson.h" +#include "leptjson.c" static int main_ret = 0; static int test_count = 0; static int test_pass = 0; -#define EXPECT_EQ_BASE(equality, expect, actual, format) \ - do {\ - test_count++;\ - if (equality)\ - test_pass++;\ - else {\ - fprintf(stderr, "%s:%d: expect: " format " actual: " format "\n", __FILE__, __LINE__, expect, actual);\ - main_ret = 1;\ - }\ - } while(0) +#define EXPECT_EQ_BASE(equality, expect, actual, format) \ + do \ + { \ + test_count++; \ + if (equality) \ + test_pass++; \ + else \ + { \ + fprintf(stderr, "%s:%d: expect: " format " actual: " format "\n", __FILE__, __LINE__, expect, actual); \ + main_ret = 1; \ + } \ + } while (0) #define EXPECT_EQ_INT(expect, actual) EXPECT_EQ_BASE((expect) == (actual), expect, actual, "%d") #define EXPECT_EQ_DOUBLE(expect, actual) EXPECT_EQ_BASE((expect) == (actual), expect, actual, "%.17g") -static void test_parse_null() { +static void test_parse_null() +{ lept_value v; v.type = LEPT_FALSE; EXPECT_EQ_INT(LEPT_PARSE_OK, lept_parse(&v, "null")); EXPECT_EQ_INT(LEPT_NULL, lept_get_type(&v)); } -static void test_parse_true() { +static void test_parse_true() +{ lept_value v; v.type = LEPT_FALSE; EXPECT_EQ_INT(LEPT_PARSE_OK, lept_parse(&v, "true")); EXPECT_EQ_INT(LEPT_TRUE, lept_get_type(&v)); } -static void test_parse_false() { +static void test_parse_false() +{ lept_value v; v.type = LEPT_TRUE; EXPECT_EQ_INT(LEPT_PARSE_OK, lept_parse(&v, "false")); EXPECT_EQ_INT(LEPT_FALSE, lept_get_type(&v)); } -#define TEST_NUMBER(expect, json)\ - do {\ - lept_value v;\ - EXPECT_EQ_INT(LEPT_PARSE_OK, lept_parse(&v, json));\ - EXPECT_EQ_INT(LEPT_NUMBER, lept_get_type(&v));\ - EXPECT_EQ_DOUBLE(expect, lept_get_number(&v));\ - } while(0) - -static void test_parse_number() { +#define TEST_NUMBER(expect, json) \ + do \ + { \ + lept_value v; \ + EXPECT_EQ_INT(LEPT_PARSE_OK, lept_parse(&v, json)); \ + EXPECT_EQ_INT(LEPT_NUMBER, lept_get_type(&v)); \ + EXPECT_EQ_DOUBLE(expect, lept_get_number(&v)); \ + } while (0) + +static void test_parse_number() +{ TEST_NUMBER(0.0, "0"); TEST_NUMBER(0.0, "-0"); TEST_NUMBER(0.0, "-0.0"); @@ -70,26 +78,30 @@ static void test_parse_number() { TEST_NUMBER(1.234E+10, "1.234E+10"); TEST_NUMBER(1.234E-10, "1.234E-10"); TEST_NUMBER(0.0, "1e-10000"); /* must underflow */ + TEST_NUMBER(1.0000000000000002, "1.0000000000000002"); /* the smallest number > 1 */ + TEST_NUMBER(4.9406564584124654e-324, "4.9406564584124654e-324"); /* minimum denormal */ } -#define TEST_ERROR(error, json)\ - do {\ - lept_value v;\ - v.type = LEPT_FALSE;\ - EXPECT_EQ_INT(error, lept_parse(&v, json));\ - EXPECT_EQ_INT(LEPT_NULL, lept_get_type(&v));\ - } while(0) - -static void test_parse_expect_value() { +#define TEST_ERROR(error, json) \ + do \ + { \ + lept_value v; \ + v.type = LEPT_FALSE; \ + EXPECT_EQ_INT(error, lept_parse(&v, json)); \ + EXPECT_EQ_INT(LEPT_NULL, lept_get_type(&v)); \ + } while (0) + +static void test_parse_expect_value() +{ TEST_ERROR(LEPT_PARSE_EXPECT_VALUE, ""); TEST_ERROR(LEPT_PARSE_EXPECT_VALUE, " "); } -static void test_parse_invalid_value() { +static void test_parse_invalid_value() +{ TEST_ERROR(LEPT_PARSE_INVALID_VALUE, "nul"); TEST_ERROR(LEPT_PARSE_INVALID_VALUE, "?"); -#if 0 /* invalid number */ TEST_ERROR(LEPT_PARSE_INVALID_VALUE, "+0"); TEST_ERROR(LEPT_PARSE_INVALID_VALUE, "+1"); @@ -99,28 +111,26 @@ static void test_parse_invalid_value() { TEST_ERROR(LEPT_PARSE_INVALID_VALUE, "inf"); TEST_ERROR(LEPT_PARSE_INVALID_VALUE, "NAN"); TEST_ERROR(LEPT_PARSE_INVALID_VALUE, "nan"); -#endif } -static void test_parse_root_not_singular() { +static void test_parse_root_not_singular() +{ TEST_ERROR(LEPT_PARSE_ROOT_NOT_SINGULAR, "null x"); -#if 0 /* invalid number */ TEST_ERROR(LEPT_PARSE_ROOT_NOT_SINGULAR, "0123"); /* after zero should be '.' , 'E' , 'e' or nothing */ TEST_ERROR(LEPT_PARSE_ROOT_NOT_SINGULAR, "0x0"); TEST_ERROR(LEPT_PARSE_ROOT_NOT_SINGULAR, "0x123"); -#endif } -static void test_parse_number_too_big() { -#if 0 +static void test_parse_number_too_big() +{ TEST_ERROR(LEPT_PARSE_NUMBER_TOO_BIG, "1e309"); TEST_ERROR(LEPT_PARSE_NUMBER_TOO_BIG, "-1e309"); -#endif } -static void test_parse() { +static void test_parse() +{ test_parse_null(); test_parse_true(); test_parse_false(); @@ -131,7 +141,8 @@ static void test_parse() { test_parse_number_too_big(); } -int main() { +int main() +{ test_parse(); printf("%d/%d (%3.2f%%) passed\n", test_pass, test_count, test_pass * 100.0 / test_count); return main_ret; diff --git a/tutorial02/test.exe b/tutorial02/test.exe new file mode 100644 index 0000000000000000000000000000000000000000..8094a1b5638719440c563c9c40c1169f26668134 GIT binary patch literal 108194 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 u6xVrUR;X8G~tpR1WjEO#3L-j^v!w~P46r5q zbrA!UniEU8zuI#o*9j!cJ!G(1kjRmEq>}qVkP4t31lht}W902J5YbY>aCwUIzX#6s zmQel}X8ow!YC1sh#Z39BjZ*nZP|RD$KnU4skR5jx%Yb>PGIthhZS8PM&iY6eejfx@ zn>qISmfz*Wm_Nl=jj)6Cl>qr2=Gy@IX9057OtR2O2;~+UA@#UGAf#Hs>l3{54@hSf zNvW4#k z++i#MPC>1?!&qY*k5h73wk&M{!CDss*GZI*x2{rOipMTRap^Gu^EwW5F&$97jSrHQ zUaXTaSAb$Lp8^4xEvV9d!Q1qe^jM|j@`7L21j7QR?;u=wtSv0C{s4k`tcAqXr>MU%MSVK+m{8w?s~;)U zubob&cnY$(`X{CM#UP~m=OH}qF_r-9P;2fn*5b$rZnTgGvf5EgG<+=+j3#O6DCPAbb_k-4npcs}hAQ%=1zYZXT#|Fv! z{XsB~HIe#G;7A0FUX>g$++#xhEUx}VI-p#8rvAH+rTRmlnEHJnr23<%8~2!a1WuW- z2_6%t)a>?<$6l4CSAamDL8gR~H%0ll$0GCM9!q}yEg&{8WftlsAWoV}78(GF+(IQ% z$qgW&q88R%B6z3olis>ia^-3YY=>Y z1z*BrD<4fZ8TZ%-?y)CB%w%CYz+_i2EEb65Skk1HQ|kp5Ff~KC@Ywgb%sl!P2 zB2?*vf2Ch_;k9$m?8*g9q9A*ZJOOFYd(-t!;HPQhHObq7NA99#Ac*TJB49Wdy zShjqlunOjFa5nO4tOqBv(z_s7;Dz$~h$Y3@IZ?8+a5{Q z4z&sG4z7K=(EizE(*Eu`u06hy@ikmv7I^`Li19*U-F=_MEwWIuRf32I`57VmZ7?P* zQvYx=CT@|txJ6cBnvKTsB^_W9m0{`zk=!C(rIuU}GRlrYxY++DZ=YH#EW*NQdy01F z!^zsYMTGWix%NAR_WFCtA}>G|X{ViMqj}_1AK8NoiQv&Vx_RJarkVu;=t@wNGeXu| zpOUHAKEiR5?G_NsRK&PjFfIUN!c@y2N(P$-t?Jqe{6+8tF#Silx9I>=bzxwCUL#F) z925f+0l~n4sUE_)slJf6cYt8QQ$kW+OwoQ(igu_?Xm8K8UnjILzlTgU3$n-*4bHyY zA`eI{lRyAO5da?*MgHC#x5yC5rh;G=A;yh@(F4YWMQB|mu@=lN0_9|pnV9jT-1Brm zT`UaK!4ITGT0k+2d;x-i0n^(M&MmS@-d+!aS)_=h)TC(7NYTzMBDDXqkZJEOv@d|0 zF#droZjm0`B4eeN5g-7f0D!*|MS{EI7U?V5t^vU;LX7VT#))7|Sj02?T#MYtEpivf z6ruy_a{O+>)U;Y!WCti_kxd{N7%)8#;oKtc%G2z!?cfpEN+o}ZV{K%QUU@Xa!_Q4DDu#*xJ9mzY+XSxixA^K1Y;Q(6Bd~`D;X1y zk^8wtZswRCp#$pDGKnnm(fiUO>p?M#ybFSX0aFOVxkX-(x0i!p7RezgQ&O~l>rK|q zEh4n_E%uO88{Q^-_IoadC-jnut0~E8zOCZErKqX{zb37sM>LB9F7DHszLDN4b_Ei#o`q$|hd5}5w$F0#mCh~!`%lUk}lFfaf< z7Q(qjrpenCAecp3sAhjk(f-bib1fpYKR=&YWE&k&u83*x2w9}P!MTTnuu3gw-)111 zP|>Fa;6B^q7CDH!%sqQSFpCi5bitSf#)L&KO~J%1f;lC%nGPJ&4Fc1%6UZVDLnH?? zM{1b{0v2f^;4TQ~78x&Zj|9Oi!Wep_XkYQ*xfT)HL)FY8Yv};Nmon{VS4oRBau7e^ z0;}p_5CBn&iUtMXKYS9mNRwo10KqImj1vXp>21jt$x6YL23x4KEofD)6caCE|K;}xb|1*fO1(( z`{B2wMb>Z--{1nX$Q}>?u?iJ^Q~>UTii$k)kz{)x1hWV+juec>)?`elrzK2!hJiZCWB39V9`sHsn%l}4h04s0JfBY?Fo_GR5q!l00aX=HG*(% zs*duu6+|Mz>`l==d}^|GsD-J7_CIs&_X+Jg$C0Vtd{YLGNH8zs0<*|7AOM2$#!zA1 zPaESFsg`VWK*STwWrFc_FeWUr;eljK+#(onlSN*8lv(6+I-s&QGE5gjB)7-~QcFh= z3=EhI2o*FIWk-!PUe@(g5=_V`Ts38_T~0T8vY z2(u-y)HTE{GEK5ofQToUJYnsp!I-ef>r>9P2qtS}k>!~9L%~KmK!J^6Y7ddzB37w| z@5KigFntc;+#-ix7Z&*jL?XewpQ62Yigs=hq5UGReUQ-p`t4*99kRGZM1rZ3T4sZQ zMJR6+2_vrB9Jk1L$u<&1Ji)XVj0?e-u*lQ*pKB3J=*c1raD;+)=zz*zz%c#tnzYDI zpm_cV!N7oNBZPB{?2)&3f=DEomr}G}oT8muL}<_8+OHSdpB_UNnGIQF5t=E_k=foK9a2$h(oWkzF+0_PU|_)XEQE7At&+E20g;HDM^d!^G&xy2)F!mIpiM!0 zmeBqn(|$8#r9{pksii*%5jkn1qO&%}E%FD+b`gkp#AjbBnk+ zra5##Wxu+OEb`$>X_2*{m_=5BkdgBkgma5LCvQIqA`v;0Q?!3`Z?bl75utqtX3((6 zX*xjrolJXw$dZx6)>!CM7QQ0|#&ZyB)WX`vA%v#U4mr$FvB%Jubqs&{;}t05ufO8^ z8sc4CS*$yR86U*(l^yG`S7?p!s#>fUW)Fd>jw@rr*!#_|HXc{*2nX{v<1A?1h`+R2 z8FuMgTzaEh-%{biYreQNbuXyOu&OuV4eL<$R9McKdMlM#gfd(=ed2?CpJ>!QxWvCh z(-r%TgH{J!2$f}M^cu3B*N0AF%R?yFqdw{TA^6e`laT#V6-nsiI~~)TJa)Y4U7*+b z46_!xWS3?G0MD*A`jSYjv*wFtX!f7HzW`JvYD*Hw-Vtg3kiHFs5B5aU^d?8B#5}~; zFKlw_b>7zK+llX$1g-o2iO-_cdfM?XEj3s-LcTemc3%Q`p0yw`l8t5I?w5+^QebiZ|NQ zrwe#ae>X{^SL&_xoNSBb=_DhRJ%d(+@}9*>Ebq6?Ceu19j@A~-n}cgc`bd&MUk9+Z zl9G@UacK>Jj64FHN`F%{`c9{NE(q-QbY^`Vi`e-0a*S8!U1?vB7JM+{xI@WN3xMb$`gp{HIs5};`$ix?Iq0R?BA5On!UuTfB0jK_ zndInUoTH%_SAnla=>f&XwMq}Bx(8GP^c-dsO!4spb!}Mqi7u7je+qTYg!;%__?YnH z{$x6zk~lA>^KpsuQz##CC(ftQ{eC#77}0e=If}NFKh-+5Brba zy=Z=hinxG}UHV4FKY|PT{uQ#o^{ch;_vxCs)vZq`K{Djynj&1( z%wZ^hhsx;gqWoCiw2e%n;{P6ZgN{N+sO+ro;2BSb&nWS=eC(a*v(5vz*%!;0X)8I= zU{TmRJ%N}fM_KJO;Y!+~bS3Z<$@Xn56G=~R^ZkG?8;!KKp&X(wy=}%fzJIk9*CN5! zqJwbfne1(vp4EBAv1p@~-lscMsB20{2mlwLWMN-KhNcfg>05JRdA0SF!Ii*N_#~Eh z70%H7pMlr(I^&b!K<+f@F+Dx#=zmss+;}!J9c;xXB8~KIhZsJv)&I8&T>mXH8rNZf zw^>%prhQc^bm7Boj-q_S2SE^f1gmD6zR&RBv<5A2lzN+bD}5x6z7gj;(pOF+gIy;= zOklsKlNP#r4Qftb^HT3n?;Ky>U>%5ClroHt9UyJF7P3^~chjZJPA#p*4R8)V7q<#s zY=iY8Fw+md{Ph-%R%{!!5MC%pvdX|6H@X2^tLAHKU-?)3?GWsuEJ1R{XT=o%%Q(92 z-z&a{P%(FCR))*BvAsLkdnJhpJ-V{g_OmN|Bz;(D()StB^Z570T)xd2!C@AaeW^v$ zPY2t%^%HJ$B;Bk#R~moDFr(D|y?1ZWx)7PN_ykZ6sAJY&k_#p1&w|zmDV>^I@nnrY z;nq0@uKVsLehaM1k4$FFt||HWPot%Co!UMo44Y-Oe@{`abxsZ8bxf*VzxVW z&4%wZKJk{}{ij3uzzlwrFV*W@)muq>1?pU?Xmu`IZK)ZDXu1A>J$W@pNYjHioYKSb~Dx#|5PN;$NiTv+3%y^>>K(& z!A_nfxqkuaod%iY62mHFdZtmYHJV+F%j*9mcs-N*|CNgLLlFxV**#RkScFpsgS4=l z@uD^TyHeS0{TI{Wig>?@ZjR$yM@Hlrsv*$0dJ5oD?Lo>DU2v7a8?VAeWVKvby8@ATMSqux(HZ;9Nbw1Ds%KsxsR!^SOLyq< zV`$%N3m}Al+tOt_0wQ|#=JuIr4`{gcSq}XkOHj+whyI+dA^o;#zJ?6VX6OUY>O*nz zTY=|V`l_P09mC+=qy^{Iga2c!K`3+JJFFAvqZB2=+ticn?o$wT#d;-paZc9UWHjtkmZm=1@T zC_VxT5kc#o75v zr};?1*m!)M7+^u_x&hadZt{RW#sXRi+=rVosDITUk%7ij4j$A)aa#m66A^um$Mh#G zrjgE}<5_}yPYU{dygq{)Oitt$6s!@gmS0f`Np0j$I7oR(k$x9S8fQ-+-4uf% zDUdbX@HNIFY4OWE{>9}e!decmYuL9{X~q}I?u59Ae^`!49#{G<|dI3p9X^2rf^i795B`{E=pvV{=f%`z2&;qT*~Kc;|Rb;Rc~7@86`p zp!G4Z6rTvx>e~_H-VXQ#sNk<(mk(R>58Hk=m|0!Z>plH-0y%{Q>vJ+sihiF>iUfn5BT zD{u`Vbx|1BAT~cj0uqU;-GajH~^)SF&G|< zp2y~o#+jcH%4YELI1gH{Wn4;NKCa=LO*ljR!YRS*9MC|FAyIHljxmt{;e)OEUhfa6 zLT9?!U^S@a;-|s-y`W-wMQefV8ScNJbvLd9MVAKaMo^?VNj>J%*;{ZKaYTjo*BH+r zrA0h2zUc4DReYZ~TwGgiFLRnq9&>$hZAJA%`5n^mHBlP5SKIM<n zYrMSjftrh9m^okhz|{^_viTyI>165dkh`&mBUqBw83ztm}Jd_A{Q#_y9-KkJJ3%1*BiJnu8i<3I}A(YJ^@QK^{A*JTe$6Eth>y}NXPPzeb+TMWdR*jT+o&h+z%W2fU+5A9L5Ggpiiw0<|>mG--;nj@Od47f}wu zCE6#)n}_nKuC%y^KGny*uT97`Ce3r?f3SRUvgM`xe`Eigq*!EXf+d9~o5Dsnp%Y<} zs6V%7SMLMNo;Q}>uIgL7qumIncQBwuJh)xu17XiS!I~P>7IwN3-~2|~aAzPmODH(6 ziU+47jJ7cx@vys8Z<>+mNLMr5_PQAW6oys9-h;wAZu35G$LMitc`CWZSC< zeQ-b)B<{hdwZ8hRP%cz04WyiDs)|DS=DHu7g&s8vVUnJ?3%^=1^iJNsXnEv(_< z=rJj?^BR_)OR!@8?Ff>Abu0FTa0GMV^+qcOV3?yGZ0|eWZgx*(ngjQMsXX^_&Ac^s zP~@j^h5cxPN-sgS&eOt&3bf4Tl^LEqG&6m_7B&hnw=-2~;TGJer)AZ8)S!e02vxXY z($G`UPuo2HJ@w-K(J*Gc*F$E%(9_phOr~nQG4w+$d?+`wnTgl;1+i!YEz#v@AE5jF z?sB!1**Y&WBc2F_$>Lu(FT=n|)3HXmW38zKjZfcbtiX|F=uL`$BQRC?ZiG#&nN(}V zu?M}cLZ1c4^*_^fE5F`ayaiJl=7Pb820z8!3x8^ht$1 zVC4(u4N(mMSs;4-%2Pffi2itz-(JBCErWaw;LtkK>V4~j5~bRTRaari?{IjsTiPV4Rc{-XMnQWoo(`O@g5x#vJAs*JwsWofOkCc z#{VAx@edXJS-9;z2KJ%FSoZy~0w0dXO2tLUdo(0J{%68MgWJAjtH?o|BmZNSwN=XY zzFdPajfNA=NvvnO%Ux*FDi%w(mFkT{LRpKVT{vFk5=%qLSy&E>m*H6j!5pmEdm_F% zGihh7lh!%ocpWzm%zE@<70*_1*P##09njzi=8N$I*6r&tnhR-W!RR4t5y85}P zRT~aFA`I=+5xg3HfE)TbY=_NFf!$b(?h8luQ&QFoZt)NN?;L01Y+yTaFO{zah{G|Ci^eR-Y_s1_fbzg zV<1jEg>s@gx+La73 z368uBPBwnodvc%A?m89`>_!kb6753|hfi6x@-0DkFkg8otju45&Yv_~2MtWLpF|5? z>c=^xr#9#)CS&eIcc>&^-vzVy4tDe0gw&{Gd{Mr| zg)D@T<*YmxM5@R^Boh~A{{V>{*eZr?m)d+U`&@Foe@!Vndn2-8(b#%~LoZ`SZ$#Bz zw4^gw~ja2iLEW-0Y9_@|B9bkMId3HU+3vdI>SfBLF2f!k5U_=Sw{td(@ z>#3jmh_15XPOu~g)$pkJxOb?m$#*&v(^HdaR&iuE4vvsz^?;D4qzR)$Gc6zMiN}OGEc_>UeP=Q%clypK^O`XO35_gkif$!+S8Lehgkz&xuvSI8z#)@;AYBh=tWy`t!9Fd9RR|kweVPztk|P5{NYu5{DUFo+#pI zCuW<7qYP!?VtB|MM?sW!Y zPQ@9H{EGbVYjY|7fvA2(jdYC64M{DU)lb97gc6X+(^=M?>`#|8y*;x1X!Q6QzQwG) zXOvPX#PGyG!#ILmi5y;H+)KR^E>Hj%V|$?Oe92h+EHtzRm374k$8maJNc2ER;AIS+ zSr_ixT7u?9*~DnPUUsb#b!0qRk$_Af9hk1*@ib3;j-F@;ST1lN;-<5xYf0C`4%=RA zN=0`z3IEI^G!za?XD65k^8fz=&Pf=;;%(Ky{teU}9@ntb1^;vCOVxKaM^%O$!7&pL zjd^0Nyb>!>UG6lQLe7&Yw1v30YRj=B#)2oyqv`1~XY^tA(nneP2yjAxqAYz76fRCT zDgM1^E6S1_XhZ#{``WrFOYfkQWh{5Q%WE+mdU34DG$3fHq9<|d;X7sh)^%unCfim3 zcoNOg+{7NnufjE7TOS8ZKS_Cx{-e$D0R#s1DsYEHQws56o*Ng79O$lk#9_LH=g7pA z=;AH$I2Pu}GxQ7$i?|;^4f=bhvf5Ed$yxCa0%FIXR4hk($-TaCn#;E_4ga4CF$>D< z?3rk2gg%0!9-2}Ql>KA3afDo15Br0M>v^1oAp4{+kena68FID#HvS)Eif1 z(l16u$LxGp7%}2tK)$ls+4`F|7UgX}BA?C(8G0RY+NHu15 zrZ8@Y>avkUAd`(Bc{Z2Qh#71dSS6oM8rB+7*ZYS{4ri0*|63Fx6Fc9yL^W*Wa;a){3khQ`A=z<}143_@ zNu=U`jK=T5JPTk~C_NgBx2!aKkd4NiC;nktUB<39Z`6+paHQW+o7}gTa`^CBQKs5_7!k*5eP+6MU$La^`xqf^pB9897(phkxC9uYrt7;@nXRP*Fli59tT42mST$UA=5 zBK=cQBH`DCs2dFQ7Zm$9e*OQOKbNdyft&a3=>OKAk)Fu96wffC113WaMFZoueF>Ku zN^OHI4d#aug9gbL4YGL%e;DBaGx|k*ZYvM|~ewtsGdbD{$&9#=W%i zfR2yWVc`3Fi)(*!D3#XXqfq4Z$$eM`a5X8ehT@~>n99H~K?@DSqK%_)4x*+cG{=lJ z4UM=7jdL+{#O^f`CE0McLr4$xyLc zvMj^*V>enb+4|^Zln?F8SOQc6?U4I?Jf6)CeF}z@u)iBCU(358!C~T6gCqV|VxWzu z%@x3q?q_NJMn~aD?~RTi24%?go?^7mKKG4e9&R|UjI$2o^o|Nuxs6`oZ&ViCi?Khb z-;{-wpd7(Tg$^32``@RO4yAv9G8oagm?=MHbY|y!jSh6gPS1OT!!nHDy3)zW!a01I zt3fLtlvw7vuqWLV<8Up**u|Ka@zg7q#RlZUI5}>)H1^$9u;#O@PAtDTf-kcMZoCJz zF1^7VRc%KC`;|ovG@-zF%K<189HCzM4)dX&;|fdQigD0c1>5NRY+D_+7IU3_uX1yp z8X9LcspicN`%hR?Qij#5_DvXEZ3@&@X4vXg+h*0ai3DPJ+1st3!q%%73djO@^n^X2 z4MsVuKXz?73N@qMrBpRg2q|0CcLpQhLe|k`!kzy*pZ-Or8J=;M-=E_qmc0!F z(Vw98JpxW>nnbON_OGC+EWHv(%KT=1lcV^k!)_@4iAeKMr})p{9@2cDKa8N+$WhUe zLOC^cjYQ&-ABO_`B8&e9Ypwu^MD{Wc<~qb$2^z}CM?0LLcBl9!BOGa5vWyqlOkHEy_q z*(h5X&e}+$GXF_IuE!OzavCLQ1Bdc=RjQ(3x(091NU2fQSdB4Sc)LeP-(9p=0`Schp zn5L|6Y&KN;7ClW_x)!W(5Y+>H02V2cy{VFDJtcY_PFCQ=coVM)$RJ?(7G`o#7=H?f zpg5JFVH_JL!m??`{TETwI%SmOh^A$XrE_G3dyV1j&R)aCuJAbr7e`X3u!l!{fn77DNBrXvs-=NbW{9mp?6IIWZN3`aPxgYnSDQoERpp6IFsdICFdaII%-^6a_yK3f zm0k^)N1njz6|I!pVE;+j@PJ<9H^u+8nd*;q;z1w~|K6)nuzzbQ7Pkt0U^cUTw^SUl zqxIzSA?dhKReUtE0pkr6+N>;C4*L?gS5X||H**a0$?CjdCO20kpN%~Ts>yT`Jvsh= zADU3436k(U-h)Yw7z8@?pH0| z&~?Kt%7%Hsl(@|EA{8jWFKfCdu#b-V<9O4&1(0M39}h$`j;viq2EjRed~y=|6R5!# zQVkBGuBi1X#rH9)2=yx$t#R}-8{6sCGCyu^0cB=TZXmBg4PI*pQl5Rm8 zd59Xns4I%UjN()b;2a=nR795|pHUvDkyj(1W8)Lerzxpj$J6T6sf(9jqo;^aX#X*p+*9iN4uDm@}yTDjKqru>9*a0*8Bz`Fox&Ir7z>cX&~q)>frtDfRY$kyz0* z=%0TPI{!DQ5=9&afmm7@L)n$rUv>!kE*G9-@P|9tDYOW?NM>HH`sU=vaQzZbUgUC= z;m=2WbI!(;KpxJ)G~*~9d+577=lizCnh$o!!MFtfV>@sX`VzJz6C~NwrI+MV9g@ry za^%EhBp*T~vz0g2FHQUj8>A*v=wdAn9hHALT^NlEG{Go|%%TLdm`$D6VRh0}y~Tu$ z6w3N7wylwC;ZZZ?d)obbJ^(w+-$Xm%g#$H&RVMQZdn4Xt@>~F4WmHDkHD6oKya*QO z&AX!q9ia(W&daF09&1Nfs#BI45ErsMp@woxB42`*%SM{>82D#8Uwj z3tc}T@($zV4j~T`A8J1i&xFvE$AhK}q_n^ZjYNdX$^4_Qg)(fQ(p)j4TA60oyeCyc_I5`m>LF@guv zKSZ9{p*SZMdT1AhCvphaQ0W#_n)V!7@U2sLeFe&-jw9J4Ye!AKzV+ljM5eE`o4pPX zp7B(Ua|=MEEV2|bvB0llF)`8^ITHH{=v9gM9?Su`c5I{5cj5v4+;;SSnf?W4MOd^j zzC*g#%5TMF=uQ|&!^VSpcW79?jv;ONU_4OlSB;&})Ssw$!^ju5V4WSm^%iIFmb2Ir zR*R3|JCzR(tKq{rPP5@KH#yBMScj}|=;~Rzh$|Jk`WvEC4db7G+jq`h9UPQvGqmOI z&?O7q_PsN2!g4ExzVTMGx?AvB2`NmtaJl#VB z%-G}5;P^{Ec__XiLjH4iJb&fe9e$xjkpHmVp%cyf@Q4N59d-z_L|>6xG*X^V;{6jB zJ%hx{ME=4WD8!xz;~=_rygTyJU?jj`QB`FT#_9`@x?OlJ#?@dc1RJ)aXlYfau+Y>S z<1~z)(rNDg_7epXgDgQW`|j`^`w<+RHB4^>%Krv$EpG_~)3eo52M;28<24%Ffy+{MTQ ztZJT2+n#Vs8nQ;AT6LyO@z0@BRcEFv{;7lp`xf=_s7Gfis_(&m7+V`g)AT}3Hv0En zZNQF`c_)nF9jRcY8I!S1c*KX8M9-}F@4_HoWs~iwwW0=ZJPxdy+YwAiRo)-53sYGz z7#u@GxgDLw``s9R^*~*sSBUj(2d!aZbz`*!FWQ{JVqVfE8ABp`b ztu!>qqWHfe@OYQS+u#bJrRbNc>tHwdc{6d+8h!Ep;w{ltaGswW3ufAB^95AmO<3T= zjv!cP2)1b6ZXQt8ucOI()Jaa;jOIyu;{E#(8f3r7CS0NYp==Wm+cG3yVXD{krm9nA zXp@la=~{Jax+kA6GfJalOa>G~X}wvvf!_y6_9*W|RIOic{uECMkV|nV4Gka-ssUNj+icHYCwnO>xvQmpS3G3CN;&ameokQammTI0kQ}bqoJy^_?;6Cw&J1RBzkW=E>&q4sT;U_LMOx3nPRRF5Ob7 z&&jR4G&Bq&qcWr-_o7Q0XkR;?m(*FXo7MZHs-LuU93BUDzjeavx$DJ@ZzF8GehTL(hj~D!f(M9U;yP+!GgAaQ9&ZJoZP_!?!Jm zX45?J_bNoHDb$N1{V2BL@rF$zgUs~wZzBpIhom8n)B6rIdoGCl16TO|2s8qg6q+C% z2s6>%akz+{{~dq;Y!a=n>emJR$P1`7Hk%_^ccu$2z1iCuS&WPE_|SiXB^|bU@(=Q- z4fah=pOG?D&k>p#L+zZ*QEsd>iC@ z1HcF#N+vYJD~#-gv!5*@f*<&WkX z*Jd+-*oLyIdg0|yqR+bD#;tSo%8plg`-bdE^4ENxKNH5$H zt)12nKf>imKCbCo$v9rY9YS3`MmsY_7J&+mGJSX%PH3tBxDvPt>h$Bh(ds{92VwDk zG+GQe(PV3sW%a)L?vabZ(*P@@lqu2^@X_F?(->=xOvEkuJ%-Rj`S^f^hHa~Q6C%hS zR+h|12}IGsZkqlp26;>IC5eTKpO)hs!Orf`K#RJ*04L~=ZJ(;mhfD4Cvu@Dz-_#%$ zM!v!8Zx~(TB}lXhFJj=ofe_7{^#N z+YeeemKGht^Sde@z~YF+BDYl0%O-w0HM#6q@c4Sx9(n!`m;I;Nr}6O!Z0o(46yR}6 zAg1aM<$Bih?O510m%LxUoL)>Bp6?D>=3{UD%xi+K{Nh^d4b6&PK=~{Qwr;{O#~i_78aT-5tvI-iV$?;B|xs;KhhKvtyA3YhVj*a074SlwLz#NYA_- z_5;e2pKwL9ADcM}E4}UK-K=iNz=a@oHxm2M7K4`%c_sm^-$LQ;Pykg%x>xG6v z%v#uW?mK1?V_|$YzMBI=LsQR++p2yB#?tg-WVf`c(*?5?w%%bTbU2;$6InJ;25`8N z<~w+x>hx$OP=fQSIq3z;f=Eg>J z*mx+ju`}3C{gAB8OzgC6W7a*C=CB>m>$rV~TcmlL$h>8g!n;BeCp8 zi`dvFLaUt>HC%Lei01my>-1xoV5vzk_u#b6+p3|HNjzcc5BKQ2F;zf>z56_^K^U zEC12c7xozK!#jbO(tDoO;#JF7bI^L=L1Hp{j)4SJ-H1Yd*yE7j$WIkeD{X*-L;32bINLJuVVAa;3r=*=KCarteXvC4tCDRREVbVoO?>{no;-yf$S>oyCdnhAw zUT>IUGXh8}za<0Seq6AC_VgevJh{sEpc?KF`bhEqjT*G*n(|hihBwRfdR506GN2ZY7T9;pJILOK z`qh(XpPf~CxmLcJUW(U$)yFN&*JneX0ksHOeB&eDK7)fZ=yjGn_!cI|qLpV4d)CiZ zv2IH|xbKCz1|GX<`VU3~yz~M>75ReMN8iTZM&3zgf#c58N9SX46UOBgO?tnEe~d)b zvOp_;DA!$nAE2Qd`P^au;n9wGNTz@0D*x4`@4#cm0ijE-Dc)iqpQSt-PA|?Dx)DsaL8GVM2@)h<1RgdUNdT`DFqE-&Y+4B)wOQrt#GNiwKO!t zQfl5)s@FR)(sIH0ZmiIKDr7nJ+by$K1@>27=0wb&b%jP2p2gCDr(?7e^(TidY>Z>| zMX~;(k4Bne@4AlXs~0?~6YVd)8d;ztu6F3ncyy@*@MQ^8_zX4||AJT0M`*$RpOvH1 z)Vu7!9egO^fd_D|{}NSpoxukWf;Z5c=zTT)vK8Maa=0UDqeA59g{;G8lJ#@VnD*t1V-AV->_%eeNDOnd*M6Iney-F*Fr69RlA zfi>Rjxj4gjv>rh}^(*Sd3*Cf4K8xxG&!v1${~&UvruY9RiP5o8+dw(T6nz_Sb}zv- z`oUv6k|5&yck!xk*FRVF&x5WENAQ7MtkPh{tD1jNL*vc%`pOO!HRf70M|=IelSUmO z7N0w!EfQL2PCmAX`~mY57lJ(Gc*=s7ukvcr*xhBXMPC(~`;(VUoA4jW(=`@q@cqD6r+CZ4RoD#1P5WLh4)Gf&E7iubJe#g z4YB9Y2U}Fd`4wUgo>sA2JlD7k#-XqC#QjWfU)5u{&^l`m{hj@Dv}Lb*%~OQb)i97GKYjlo|hlB;+>Y6c@)rFO>oZ%uSkJ^nfVu!CG-Nps%U9X?cs(31c=_0Rr!RszieU-b?R`BFW&U9>(zc{~ zFw=x-`3E;>8D68c_t819k2^FTa|>Dt>-V^Z*G0=m;UPw^ztGnJsz?nw0Hjm47Ow_p zp2dL0q6UYb)ojPzwmN+GhTJ;>P1-0>vA@P`|7!MjwC!2_OZ8^f-%v830<@T)C~-?t ziJi0eYqp(O55#=yFqTC}J^^iqEqF1l6Z}o28ayA4z!2p)Z~pO=jQ;FH0;%X-D5~{V z)>mRgio6_2$0d3n(wI!MO5~GG=nrL%4-DA$KISL8KU==QTt zWkXoSvH+Z^`r6LZ)8?t{a~cl4v3R$`7H&4OX)7wd`-^Gb%yw#UL>mT{AuUgB{zlE* z<<4xR7lLcYCg*dX(Sex9BFc#0Ge+MAd01q`q6*fE@rvGFCRJ_5>$G7zt8S#{ ziP%|-RDm}h8j*4Db13Wg(*lV9O_XMq1}EMGz;XaaP9ENM+P0O} zYL~2oiP)&Ocnji_=f^ta#}|LWaPrqoclpbORbWXB87d#qLU&|3LJyo67V=zu9;U0v zad;N^(V*D6^T3G>BdX6RGIn8ygWG<>`wey=^)hSbX8RA7*Z6)gV?iV2xzQ~8Bdq?R z=)lyXe??LHa3R)BWG~0EUq#K3(6}oyH)KLhbQO)Pv92|O8lJS5s5$yleC7qM9ILnn zEfo>f3%QlW82#C7JV+}@gL8X2bLqT}{)Dk8o{n*FPrO!*Eri!1@WL&*`UwiX&?OoC zb^M>eIhDP7zm>jx3W)6Kh8P);C@Mq4*#cXg7Cu;@Wp0gblld)Zj$Vkl5cVpM{us}t zk;cwkq$&gI9QZ24Wo%_b`Dh3xYS`9=m6p$#XWY6uX?+D=N^U>+ssmE!^n5IWQD1~5 z3L074H>1XnTV`GbE3n?;wA)sTTzw&5Wcq*Fdl$est1@r=%uJF_(p#Fer7aYv&_cN+ zou+ANYk`^EnxVN2nWQ(0ZzeO7WawmOn3=R`5r`GFC~6Q^stXcX#IAD5uIN{V)rjs| zSy(Hgq91C!tzB`~h^W1N!xr~zyJ4ryzQHF&U2pgJkNQ~bMEIo)A9~% zK0Lc`0meIDF8Z2Z&NrXkKZ#2{Ec8Wl6ou+KFM3BSI+d*deLgf? zK}=8w@f(-8(&OtO=W71LH=E!2T%3o4*-=WSoW zYFh5Ijqk%*`-VGDeCs4u$DZLC_HTM2_W%U(3ClFKXZh<(Z>(B2NOzIFv8qhEf69sQ zFQxl^={_snFG%-O(*3A(-z(jN(!EK#yQO=bbT>=)a_KIUZkcrdl$HFY`+{_zk?!A1 z_aW)NSGotKdy{mplkR5jD*Kk>`IDVgCBKJRQ2-WJgqtyWP5H_QE-J7JlTe{atce8Xa z=dQYCkv>bovy=*3YNLC-21&(|_!IMDxW+%vmcg<`dPE-=}df zZNrLN9`@2GozA=Cl=9@sK}4QBi9c$89W(8p-}rBjL==QNPkM&`&Ij7YBcOB_@40=b zK{h{Qr{PO-nDH$EM3BPF&w2#@1)bzSyTqw1io-sQ{^ZjeF7@ki$#&k~+g;V}U( zm##wcl%wUZ5h7;Ks^MXY_a`oD)`V4#um9Z)>{#Se1T2{4|t*u@U2Y=R8udQ9X zfvs&^i7cRnaxj(dt#}s%v^zt-8#U4rjA5Xo^3g{rUCn(v{VI@>&r) z`6c0=lHpTd`sB&x>Ni%D`T+N6qt3dg{^7gd`_bF~=hZU&j12z+!bh)oy`=7F{r1TC z?oUF1E8tdSd&r;Z8ytuw zbDn5wARJG6Vwp@T<5}I%-s%suUB>k2Y&_XFmq+%`vhluTyf+>RCnGV>>R?NID8wmsrgBqa zb?R7*b@s;T^>XP*!=c}@-SM^=#S=D!$$Fn*U%k2v%u0{a%(Q+qtZ4bZk#_M?Jz<&YW zEAei@+X}txuiC$%){_}b=Hde}Pj5J$7|g^r3&Zk9qmU@;S(WzmhqIn!$`c<5_r8*AK=r2Y6!0-itDTt@a#1RriE*p0G|um7tz3m`UY8OQqZ&&-HsE zsc6jO9a=R6J@FjM@nFo1 zujHyuN5i?W3gJlFkvHDB1Me8#ui{PP_2MNsVQpc9EQudjO|lf*kH6OdMwQIZviKKc z8J1&l#6eT6mxbX^02*a0SQ-8W5uajx_#0*eY%_3Hfl3xJXdO7F0lN~hEr2GGp6~`a zg+?~S(nufU`~)W>4cbjfk7T8%l~dTtc7R3)m!0Gr;56+rGlnKAoU4wTmUNrosN43K`$R~UgFqLsM*+23x-u{b^J>hz0 zi^Ld~F7wybH#9b}a8D!}>*d`;?fMN@ZQP{dN$#b1Z&iSTuHwJaC!%G0?fakzAO4DP zZ#u=@;XA7RgmJ)hdN%sfyLQy>t7pgC`UbxI>3ZDb+x@ehKd$%P_1U52Pb_K( z{`x21`Ps5<4Ilb;Ysohzhp|#8o~Q48>At^z;r=b_K6&)p7ymx6>FQ6u*6?5RKT-3* zeRqAs{e>G=)u$eft}Z#Qs=Z2PxRU>Q$>Ps`_Sij5zx(60|K@7n*jlsP`^V<}hjwrI zQug*Av@gQkv+xrf_gNx_^TH!}C);cmw}1b;W&r|}NMPi`-+M!XAtaxcQ+ z$|LZT`yAef;V1V(G(KbSllyx#kjLOBcldn9z6w9N%g|_^fS=qD-k0Gg_Yu4&;V1X` z<&3=sKe@ldhBNz(aF=_KNBGIT5v{@!_{qJm33-H{+{pE4ZQv*O%Uw8I13$U{xdZuw zpWK?AjO~G++{f|u!#@W1=Xi7QPr}{43qMH!e>dFQ@g9bM818%U-Ua^%T)L)U1pZOD z`*t&SFX6x)x&b;NKintqJ_-LA+>7@>m+*VxuETpAejnU-;C&AM5xDo`eG&dq^54kV zOXP?9H+U!EAA|cO-q+wChx=8$r{F&U_W_MD_p88%dqWTO1AjMM3^AA&esX_>cO(3h zaKGCNdw_oe?sa|85Bx#6-@w}q{|UJ1e!TFLdtDrPBOJI%yu$>CdkF6x@Q=WK5$|F6 zC*Tg;1YHph+@Ik+0{b;N=elOey@g9YL6z+HNj=?_x_h!r{kHJ3-_mTnR75+5b zP!f8BzZ>p-*xWw>|0vwSG5l0{#iO>mG;h;rGG)7TzKFPdvfcukpSe{zF<^*V)Zw znJPWO(FSlji%Z$!!zHYIsF=;}FJdJmT|OV;-y`9~^Ft<{OUmB0#8uui$2+^bEL}Q2 z>qPN{Ytn&oleR+mH75LGCo8UTcpdIy=B_L9y1JcdQKoreg{NG~uX^!W$gCQk%e2l% z@jIPM^fKT-cNUxLxQ-c;fj-I9W0J|N_wrI!en{pr=pHXQQ8eM4lrj;`4$!=^oLzZ% z9=mvGE<3+}4y$y$h2^Jk%$ddJ)R}7xXb^3sK{M@=Vyk>A|5M3gmRIS`Ty_eUuX_cb z=VtS2%DkoB?)0o+$#~HT=LEMgbNLm*A-VEtIvmX51>9U#gjXnizTOGX>143tG%s@{ zpUS^-WgSQG&F8;a13?d!gm}tVJJ`mH9Bj!71NJar>|zI74Y+!q1gw0e5ms<=JrcfA zx3&hVFGzPn zy01%j-X+%jTqwgEq}wFj4(WDFH!a;m(*3Y>N2U9?bdO2*8RCg}_mp(m zr9!SU=~hVh0_m=lu2;I7rQ0ms4(aZZZm)Ec(jAiSA?e;F-6PUfW&2QG_|0+__XyVZ*-|?!5M|3v z(9Zr$EF1-p^$@froXs`TMhoV^6mCsL2NSWTcp}yo9*AMK{Q^NlIqaPbrUS{|l%KuA zAqTR#*gz+C8T?toCLf#S0&ZtKvbR2k9SF>NTmdXNW6uRE^!ef+bG5|6`)pv=RK&L* zg4oMRWd>+(h7*fr*!@Kvxdb*bng)}6!=f|XlZdeg2wERb=djUHpMs)>a_nJ(wWLye z2h$1}D$E>U?9&t@w>i3!`{POIp}sg2%XKCD!^vnO7Hu4gVDA-M5Xcp@&aN*GC1SBO z>n`q$Wd`EOa4x2l&2q(^i7c|bJ)FP}=b_>$iLi%@B~zrOJrb;xCa{F3 zP-#y}6VjkmIsosBnTFk|WD2uf z_$czfnASUhjU9Xo@8Ha!r~wvnYN;fTA9HHiY?6r|5r5N zUEnL2yu4h%hj$f@SNre7Hx!O9Nc2tMn;Lji1OLC!z?G1~$t7{~zuk*`+-HfIJ0@{j~$)jk{s+S3zHVmr{s8JkVb=_rZxhcnFe zK}0#-vl6LfAI?VM&tQ^%1*&K5{`c6a%SQ0?y zdW^&@Rpc=Kjxg6!2T?Ku_c7OU$4>w(cAw;biHnY~AIX5R0?Y7(QO5rkn@C_JAJ5?Y zmFrSYL?zs>!>{B?6+GQHkj_E28V4~`(ESR0m4i4aa4MTlgmW~LVy-QYcXQqgOvzGN z9JpdGKaWz0FfHQHrhMo?_$EvgUE6H%c#_~j4llthq9?Hzr?Obldg4_!tB9PEBD$Pt zwmfx82UCT=$=?!cWDXJN?C5G_PKCsern*EZ)Y%be+scYW$luZ7-^GeWpuO(8#`;cH z!iwnFteESR6rDn5=aiR}+ykz2ldNRcRtUl7@|jSHn`Cjz1UO!Y>03!@7BCl~D~V@s zM12)Jg8q(Bqt?F78gASf1ZQo#zXf8;EC|d%8-RfZ86|ThqB`2!aqbpx2pQ^X@pmwp zMG-Ad15VU5e4}URR5^J6C2GO1KfOX5`rQJFIrxn8h&8&@`o_w5ph zce4a5@u~qNmiv@=-;xNN<@Ftc2nAThJ7q|vy-B7$pv3*T3B58BGN=738B%FKDbpUL zw643yZm;}<3BPi%)0BAO2)L7ww+Q6X+bc_@mbsMgF$JuOL9>CSo~S13lQVi>lOX$C z87Sg$+`qFF89OS$O1S!2f?uyvO4(K)$LH)0n*yxj3o@kA-Y(PjDWzP{Y)bo4Q-D=G zCqpXj(=zQ%x>BkGro@k$0<7YPGNcm!Q6}E2E6I1ADe)Ig0ah_7L%2(jKN~QhBMm1+ z;*r}cgWF7rpECtm#h+zJan8!b10wP8?Umgvro=xq1z1IStB6vG$7JH9NIZF4WkzCf zWlx#{tm2|JYvO;GiBlr+#BG&#NDQ9X*=~rzDr#j&alRZyPkBy@#3yd6{IChXa$(Sv zcwsja$Tth*@!Kkon&K-jG1VHY35qWelm))+#s)#vXfBM!zvz^Aw}qq zl8}!G@kV6cN&~<09&=#RDkFwfBxUG1nYa4cB5!^{2`$XOnD8q@ml%mF9hVvbR#-Df4GCP4|c?@<$e9Xl%n(lN$EO4Y2>!boW$U{`>i=}&jy1mdKVc|lrEhoa<@%T8osUa zlB*2-%1@XBjT?;^R&kpQDM~j>N-cuYQQM0Pf1Fx zg3`pTm4_t;&t36bO_ct|6kruE%aD?(c)rM8o1k>!*2)cAOo=~h4s=~@#K6X7NKtB+ zl-dQQ@mniTn(!<8t}zl<&brnJunM0HJuY+i5lJa1D2?4(`B4*o6hxHFKb^&WK^W)u&dwL!=zJwenA<_{szI26E+6Qzv8XE5x^Q z&MSU*p+KjD0rWWTPob+I`c*`qdaCGKd_0O5;7?5f%aE0Sf#7q!ZH+$AiBD z;_&$*8z0pZ{ahw`kUU_ySj?p!q`8#yZuh(hb9|iUSkAk<=h6Jh@et8*-kpGKl=Jg= z-Z&3A7IA!lFn+&GaC)!Ksip#%1Gx{7hd3dl9}ryKAVy5g#N;T#aRX7iaH*j7l5QT4 zNNP8jsNEo`%}X=KjUog6m1!x+B3NwYgQfsmViG-p-M0+3&>UNc-E-#&b{#sqUrTmd zOzgHO;jLn0i_1|%R4$TKJ_SELj{DbF3Ki6tsMHjqBC3UBHIeCE?4#7|Y5teUyj_x6 zZ6dR}5E)(>92XLmrx*EndPA6JB$W$IR4!ChmYQ_4zaPrUro)jKb1YWtYkPEQ$lj@3 z7fU*%{UuWS{Oco*>FzjR?yXA4^%4I0k&`_JCA%GiWsIq1-<|;>D{3qY;C&FUW4LiS zEh>JQW1q#MBGwi8|8}f5s<$_ps)|Q(n7~uj+k?*|qF6wzO2m8mA`w6knazbGd#mu7 z1nppB!Dmi&^&0d4Y$mb>$W{FNi8UgnbZYRCaJ^iUylS0ykNheFUh|h3Ic?v1{(Z(C z&VP?iOyOfavx={4uEQtNTrxHZ73oWvw5)bEOPPaMn8acl7Bd~&Dv(xR+jR8YNTjA) z+jM0K!?M6h?2FxP{I7_e(E_J+HM78ar&55>0Ig{f@UE4o#l=}BrSH|!v7K%9YL&fI#)RE<8cr0zjvE3 z)Ox1#QcgrA)YmzkSMsC^E*CVNH4b8?plY4dd6k1WD6nar)49d56islk`vDVgvCirA z^C*=_u5&t@@}Xj#)49zC=j)u#AcvdQIbG|C7fJ=6(hkyh$yho|?TyD+(XI5AbxA6X z^D}*{_+nBRh3MQ#@mf+kg=nd{c!LT7z=}6hsMtLhe_bylHzis$d>|3;>(8;0gB(+f zW^+C9aF&(aay!w{=!@TjIDo-Q-cA5+0+*rt;3nW8go8;O>0u?eE(NsAptsmT1j~%{ zOC3a@OyMtcPy(m3SgiB&Jpg<_+>d1*RGe9tQ{IdEbKxEwTFLgaS!<2}z1aOR{GGiI ze;&g-hyDQg88~wVa_nX{Yr|I%E_Qz%e`k{rKY)j$3j7kCs+LZHFP5rjJ@p>oh=|zD z2Kb9l0z41LJJ4vQ(posthjS;~0+xTF7`HtoQ<{oI2yF+QMZxiVe5S48L+#%9khWH% zkDPH)o(WbfU@kLkqkt97Po%&}rYhzkRx*DunMoyZj!2_eHf#Pq-d2i`dwv4Pt+;Td z%rzHsxqpJfeHNZ_=K2zxGVFEW2#}OD%iP->6f42|4EWs~zCh)PB5*RP?*N-q`kcQ6 z>j|{!QTqHrD3w)^HcJ16^iWihOks_#FUd;3K?-*>*Pj74=m0g#YD>Rv->PGw z^I(jX{xcC^6(VrrgFq-^ZsJ8=Ze=d!qI8w$BIq<)Dua5E&1KnYN9nisp`EV4$K$N@ zJ3^>LEX+#3Oa7vYY=68LjX!pyN?#&~TSBm2jeVKY?-6WH#Q;9F7iXJFzyCgvD;E%a z1I|icCX|&G(fB@eVXX8A6u-J+Ahj!h;hF z<+-rZQU~3Gc9Oz43ddx4a$y$LADfuj+yHHJkT_*LcuFoJD|qA_k&@R`Za6ZwlE;>d*g>3bLrpfv zFXZtHl{|)^i+IEm$0F3IsFn-wjU_cpX)NXl7f1x!-6(*xgd^ctnCo6tb2pVA)iYlA zi8)}(*dW=vz2^nIg zd1%Y_=VxDQLl%V_^8}>$_U9>)DCj)UM90 z?brj={2h>Eu7MNmXm4rX+SRCa(H5x&l{K z>zXYvz(l_VMUGfjVSpRjyXq9U(f}*$_8?nmKov5eiwtPc-=Kw>+dDe7rmnX7&Omz` zTWpQ(Xzc9jXbZ9P3~*C>SBG|87Ye&2&>HAuON=NKSLY6Y2W0JNY-)t1kY?%{+Zvk! z^{{ES)Ie>i4@xsyW&lxm4bWsmplKI7-vE=c0&TdMqMlt~KvBYtTN^vHh9;zFPU+#KcK+Qlw3K>qFR*zShjwWjtC&EL?_!QNuThHwLq7C^b2=uu>WR@h0^ zR9K3WOoP(Y(ca3D))hp8@^JZ62vsk{Y7Gq0a$8Ia&6Plg zqSqUkWDSr38PUub8wz6R1gHS0G_Rm^Xl2GLs5TP&DsYc}d7d$kcG+qfNp&St9H>>4A=-?GEM zE2K4{V?sCP2LcS2U27n8wV^q0p{m!?*v5QDM5sB?)VUVFy`uMIyBn!u?(9U*tO;Ii z4XnAQ)nRE^_f0*fVPN-p~zXKyN>Wt(NQ-*_7C~{0`25qdv(gK+s2kxX= zBnFN=To>Bm56W>O2XLYBF*ON2se~?)LUYLsq33d;%7#E(pP6Bn$4W17Qu6b(D9(Lp z`0Pi^;VT;rm(9gA#?c3QWB9^~mEuP!7t@e@CH^kX#QL-dRx0$d^|i&JCCFr3yRcg} zAL9_pVgotO`Ss+u=GT!^G(Qv|w|IU7cT47@?*Sl$0c(9rdmS#DL_fj-?)ldXPbnz3 zX);hYzq2KzZEf$Y^TWV7;_UeWjMR6Ez?}Ilja&U_YIxM#`R2|LgG4^?3{oVUPk|7u z8jT5s%je@BK))QbFPKk#WK*C6hDMPUB6mA^f67T$at!WWIKOc__)`iVUNpZ>&QD0iVb9qttn22{PAC_{*X_ zLpU$khr_ZsoHr0ov(o);LZXNbwRurPA}YHtQ>)n%9^kQ@%{LUA*;oW4YGlYDH;|>{ zx%=?V85Xx-k*OY>3B<~pk^t597B?kcY%DnOy+E<@S30}2|9qG&TAF$cNYIIMTM5)# zV1acTH^7t)q(ChIP7?t0#LhrhD=geVYVmKwT%xTL_HF%mi=thjuh#6gb-it7~t=7iKMN zjtLeDv|v!gWuI#TZ)Z(SqJ`Aurp|(uR+SbnRVx(K60_236NIbgF_>%i<=sOfi=UjUTyVr=asa~RvfKTG-b6Z_aQb3vMPA~xhv2kLczI&1II zA?Bm@IC-x%VXaKiHgF7}`z?^*@9^@Ryun-_haWpI=~SAZFUC4k51akEgHQmDBn}FQ z(@Bsb`m|M}^X_vlpO5_>_m2Sl6W(&#Zs8;ImH?V?jm=r}Yk&c4py9d#dI`9M63pFH zTIy0){4JS}ZPU4%0Xh12J}hegMIOfj$0~Q_Y?u3d_X0=7tn%|vGAr5a+1CJslDdQi zu=iZFn7Q1WXTNne1#rq{Husd&>dM;G$HsM?{(U%E6TkJNx`t|Y)MG5~XMEMVm&NaS$MJAdA)d6l&F zVJg7?wZdD(E`<)=stik28J6Xj;p{~Y$}Z()PBFKSxtBnYc}38)wQ%RF!Yy9`gawsA zFv_^XTE>+;wpdxfLKzFoAq!Y!3L@8wExd|Jl=IF*$&eK;sbyQqyo#xS-h57@ft#^@ z?PUK5EQjMi=gq}mT=0Vc{x@u1Bd>;E(_H9k_%+7W@C>-})2=mQoJ3bXt5Xqc(61y0 z>C1dNsv>WY2M79m0Y@<4%jTlk{jBbXC`^1uFZ}rI8`siiML?#G9Cnnz0>dvKS^YsuK- zy9z-i%!n+A^>g>nIpVAM%T=*!@G;Va^U_7`i^RX(@!wHoNv_2G&UZfcl>3gSpwp}4 zPwBux?st^n8=j(~FStKevf}GSPS=lad-SD2KpZ8`ODYK0T~Xrfs^kziY2HyntesWP zw#s)+jrp^gV!GxWatm(G%Oro0Dst|mK(X^;a!TCv*X_KXoKmNsoHCMg$NvE-1G=;~ zoTaogPibiAY_io3n<&m}bOr5{3VJi4+j;Jlvx@YL>dlLz zlbm8+!Bugz5~$R9H93~r^?yKdbp9nRrO zKXFC{dCpZjl_E@%z3Yr5JB>Qb^xnBkKKl>t+U0y(WuLPIL(KgcVLDlRp+Tql=q~&P zPw(QmNN>DvO`I0VSmZz-j!agEXiP}MKXo$Mb=cv!=%T(|-ob5secr2EF1pC+0PDX2 znv>Czhi$xDFUPPr|EmVEQym4?2fKXGtB-HZ6s(e~5wOf2ok+&fV?l=aS+Nnj#+=Ei zG39yVGte3|r4Oc&dws+WzdquIUoKi=IE?_lgTTR0F|?+Wm;y=%DzQEyz;sltil2xJ zCv!AV$I(G582E7Zk$hDkK@kWFX=@O`9Ime?QAH=VDGosu7r`gz{11wabX(_*x|-*dj5=LaE4id=NKz$d{>RZqx`ugau7Vj{LlK0 zbX(_5I>0aO`g|Erh$SLCieKb<9}lZL5{z^W^F}CLxvQ;+r^82>cvQOls~^ni3dyPL zF#m=Lo(}aXlV=b4H&rM+=YD~>5V91iw^ssw3~jLL25U%YJV<}Y2|F2fCFhlo`{%iz z5pWF`EoN|lSzXw820e+nYg(gszyCcS($LpK{*b4px@J@LS|Rb9f6t``d{u(lk!s<7 zRJyN9H=oyXuYmkWx<8ignkh=>UpEWoQCo(z!^cmH68a)0>_Kj(BYE^l}{rNzF}YArS8WOrtl)=-aS`D1;)8MoL2eSl| zR(Aq2aT<-?4jkWUD1Q<-<M4AUlJYGQP8#5FKv{s$aV#(-!_M8qOoXx-XLr%M8 zPN(X3egGW0c+F^${vD8BWWj*^8IX%GCo&-OAlh>l$O=F%L~CQGa`2spcDJMhGXou(U9PrZ zsJi?JprS5g0h7!lZxH!0&>2(KVi%XCt2eFNh~FnCNqHN^xr`yzq)Nph&j2zy&8Pr( ztkRW_tUI7Alal=iseEunjZvmY09M8cWq%;fQcj*!RFWDqNMHuC%v@P#~d`VdDY4RJWF zS5OE-Kc2$+k)sqthh!I4MJgTo5Od}-7s!{ijk|Q)D1ak>GkjRL4c@}=yr@6b^&Oon zcLwUIW|EZ_8l|Z6dJ*wLKlqUcnk<;~LqEYX<)X&Hn=!bMj+H*My=ts_Te}#CF_dXot9!#fkOSCEb?2pv8Op|vc z#~D0~sNoi>J4zF)firm;oNd4vzRui6y$z6Vq=Lg|6pW?d^+6^BatPiruqI9}z0Vag zQ{L&~B^)F*Ju@o{{BU62qx#%?^|J8fVHkbx5xp!5jQwPvtLK9EO{7iZQMO9Gx+pI# z8QV|4?_!jevcq9aAixfJH_|KL+2nmf>A6rFF70O-cnEoNi7f2LkVbI452YjI@f4JY zupXfj4KemvN`=OrmuZ1@5=|S5YGI6}keb(S{ALay2N|~(0U^rIfsVIDS(IHr zp8<}wSkFd3le&J&iJ9e5wn3{E#9_KVZVWi0o~{HYvTb@qJJ!V4DU zNE;hhHN`;`^YYH=H03Mb&W6#x|&d!vDf_xPIz) zlhsVGpL#!WpB^W$+k1K(Keakj(vkYPTG!72Zad1a$@raYWJu@-^|XL~NY?+LOsl*T zfW3~;h+YRV6wTq&w#=vwv1^{jd^EN;o|$Q$@@sumt)!JcQ7fs&Ssyj>d=WTP)=F8M zJZPXq8|4Fb-e_5BwFNQ4>QL-jZ+flQ&@6)ZpfQ#k#d0&vJqu}7qA(rD=;L@QvN4ju z`kal%sQ;#7D`@j_yfKMf2#t|WtdG*zDc}f=%>jZ{Ce?r4plgF46~SkYiF6ES9wL%t zC6qWejW!7FV&IG`990WhLjR{+vze=n@u~ zzpJ&2Zg3z?xEzJ*6JxJHW}#KWi35}LVtxJuoY(bICVRF&Whnd$^inQh^U_+}z!7z4 zwT+0XJG38gI%_$kTgy;xC|7vw*WE#7O8K&}(&z8gFN0lS9J!M0RhBT#*pIFrl>I5T z%;k?E8pg|(K|eyC!Yvy~SW6YC(`<*=0n)6v6AIf!bWk2tO2Wb;1hL=@05Yl5QC4SY zV?UHT^I3pT@p6ok;w+EqQ@na9do1x3P^IkCOPOi_jaQ6ES#KJqBCHo#&U;k5@o8Q2 z82;q?%?k`X#U0Sb#P;dijfa6lA{bizdrF1ZfQ%y)++i-A9{_UFf-{NG2@4K>wwt9f zKoo6@DhnYGS=~+0!ljm+olOg%OUOsC7BWngMNlsb8XH+3RTfdbEC|P1!Rq&wvbLQ_5<+Mk#*>l@lnYM_F$-V5ie+5J`Fc zDpbm{zZeD)(O)#1xCpPZ-g|)~`imh%Txh{lrSq?P>Ga|*ISUF8&>B9i+>15*YQXF* z4z1zS%02Jh3XH6X5Ust_CCGE(cR6msUu))+WqNNEF)oKXg+-~wbFOqq)M!tE>hyGb z3bYqc4ji!;@Bk&VJ+#hGtNSz;aq-qh*r!5Ndj7qxXXDVWjw9Dj(|X=jjNzWkyi=Ld zuM3JY4WP@jw>VU$U)Ia?E!M)4Vv!EJ;TJmez-LFJa;F_|QSNk7!}=)w(D+A;6L0}) zE)`8?jAbHR$ID?tKZVB$z3F&$ZOsO6H^@^7Q18f?2b}d(`YgcE^G|h5j*dTeJ=4hC z`l#0UOzP=z2m=+sHqZs;J*qb!1_H_Ja$JDF*7~LD@*E(Dx?ErkDQA)8x(>y>Nlv4A zf28VH_uEwc$`b}bmG@!zxeg1B>*UyP+Pq77R_OBV#~m~=OV6lDkdUWvnQ9^x8^u8? zYfEe7f^NxPX32`m#fY8@OEeFhQ3=ZV`>0+z6E;F>EO7!-h*Dl@$B}crC3*=?J=fc! zYfM;tpJ^;XgxA2Hhr6XVY;}pT%s%>IJG5+JfkRfs*tJMC9#uLdNIM{t7RcL(a?Fg= z4@ep>(a7H!ftdU`g!pb4EXU!Hy8td!eV zWi?yZOAr%;yhqhRIyofjAnk`!uV6fST}H<(@;(gFslPNH)z)2Sl=9#}UI`QS*GPxM zvMdUeveJ*hA^kK1izG9ibFH6dWJ*{#I*z>)An%{n^Iou`uuaJO zI0gYUawxRYMOmcZuRBp;Ud^CW)e{!Tjev~YE$MK*qzFesoU9i&@zJji4_i{bol*gt zbcxL1c{d=#YG%hFA0j#*QuUNT9|I(Kj~VhPAnaZ<JqHIi* z1=-lepm7D4LH)7Y7>$;#6MSA`zjF0+k<57AZ1&CW_0eO_3eU+zQg=j|eB}N6c1{3L1dfo#ZYUNyx0;49` zK2PvmP))H(sGnled1yZ{N*|b1596?Y*B=?gu;(ou4 z`zct0g;y=j$SjZzciFg4&WQUF8}~^YcbZdMxgWA|KQ$xn_u9Chv~ec`vvMD@ai`zD zA`?8jav!mApRjSKeMT$yq>a0KM%?eRaev9iopwU4+u#Ni(8~2ko?t5(9 zm&}Me?HO3|wf?w``-F{qhmE^uM%;&O+{bO)=_Hp$!VS$f?yG0S{p~jH$86kB*tl=D zare%M`;d)0ea~RYY3*?vcdw26#u;(X*|^gP&B}e;#(kxYyKhF^(>Cs-Htxr4+%K?k zZ=MnNgpK8~0OKfw6M$pAq*xHts_o#{JlgxUaTxFSl`DZR1Wq`(@Sq%($<#ad+Fe zdu-e{*tn0+DDNH{cV^?h#K!$XgS*`AdH|`!I)LSN5Pf}rH)iW6xP*mwyVU$$;Lv>e zEtnaBvFWkRj`PmF6YAN_-`}p!-=T!ON6p{qM?l5=9T_0im>#vG@r0gtiku`w%X1ST zlQQpx*5c&3FlNm0DftIXsW6$u^B7Sc6)PS>l5d(I#@CdB7wPbPBoJxg;g8bc7(x^y zzVge%k-MC_JcV{|<<8L^XQ0D}bsbK<*8L@2hqzOnu9z8!Cd>=EbFhV8J}OsxtY*RU zMSqq6hxWWlH-+}>l#K~GgoCBHDQs*UF+x9N8&-zO#)4`Z<0E`gujykNqT1 zKmWmC*oWSZ_2&BVqp(8R);8SBbx3(fY~G{l&II5h?|BFao{?>c9=3*dhd6hBYACPV z1x~FYv%bm)#3^Lf*AFK^nM-JwN39lKwZ+!*Z!{=N?m=B+lKX}a8!f+_-RK%SEACg? zxG%AB_u9C37~EyQLyfcOckJb^>bq}L)Zo8Bnbvxsc2TAU`V={`azp0R;9T{v(hqN= zP@Ja6mantY{FtJwEMa}Ql1D*m>8!Q1F(LDYhY*wysd>5$VJgk58fVZ^HO|CK+D~xw zFIGA=tD!}qd8&JbYn&mos&OWnW!}F!P2N@M`~~w>>s94dsHc`zw?vil)Hqi?scd5! ztJCv!R#rDhQC2p#ep1P-Ahm8=eV=F4cWEs*ab zUS#7wVdH*ES*Fs)h6x+@{uyy+HtsLkxKG-+zhL8@o)P!gjdnxYA)OYp=(+Z!jr$jE z+=phw{gjRSaU1su8~4xIxDU^W`)fAt<2LRu*|;CEaX&mG?vpm|$86kb6lW=m4R_eM zkIabsuWa1MY}}9AxZh;seq=`6PujR2wQ(P}ao=v^J~|`rKeKTkwQ)aY76YFu}Tjr-V)xW8=UK4Rm3)W&_Djr*|~aev9i{jiNY2Bkm_`+=p!3M{L|_ZiR$o39^qnF(dADFP5Yu+xfJO z`(YdR&)K-YG$ZcEZQT29+=p%4M{V3EX2kugHtyXv?n5^2H1m}jlbSy{Bktoi?mKPV z(>Cr0ZQLhk#QkX-_n?h?zm0p;#{JZcxF54|Z?ovX?2GhLfT(6uEd1N1} zG*i#x44KtD&Lp$U`!A-+yJ`>rg88Z~S96f5=VYt)HRR$z}20WxQkS680>-I!@OR23a`cG=K?(Q zpL1n(L^rL=Lso}H)Vwue!nqAN_aa{y%m4?9D)77?I4=SR|AAv)@1-R71Lp|OyP{*w z9B%T7&`mz&z$Gp)2t0p_RAX4srd16AISz>Gg$3k?fDFs>5|Cd4qO3(gO60{N6cUg{ zfE<duA#FqoLu20rj_UD6sviP! zeAF!A?*UP_7zv!Y`1HllvlbCI-;P-Fz5+OOmf9!_pZs7($OAFhPJ*Ba4am)ah|?M# znXk74;^p!v$a?@$>$F0izal!!W1{l}AY_9E<$tDBfEaoI0YN}Oln&QV6t@akaQ+CK zV}KAJ=nx;$(`~^-!_fSN$iXOrMow!1367d|=m%s8QW@MsfT*1ak&Avne3o)Q0EkuQ zI{{Ir5k#sF15$1&_s0RDM@Tpj8;GP2fV-u1J`Wr<&J=W>Bg%3&M?n6S=vYed4}gqY za=Ls0WJb$||6E6mZ2)8^2pBfs4oJ67NBnLMO3NZo5;$t~1wGRxIIW#5D5(m04gsfs z)U4GH0Ft&q9t4CQL!QS7V$texKn&|8>{kF888uUO;w-<_GM53;ZOIpYZA-uRTS$ms z=VPN5UM+x(SyIIT@xcrXYsmq!)586ofT;U+1mzDA4n#8S=V3rbER??l$Z8AD^MI&5 zaY5%NfOz$?05W?WkYNj*`LF_?Zc*VLT=oaNZcBN2fiq^Ygx!EplWvrIA0URznudE5 z@$1g?7`1XgrLsWo0%XV{&!-5-()NA{kYNBRPa22b3*3 zOe56Y}7I~Tg8L^aUC(*Is z^b;LCMlKEkG7Kq2-qB*mX$;^6j=}u{!0}lme4OZ5wE7Q#jE|bj{aH$7fqVxL4-y)= z_zys=ZTO!78MUOUSd7xK*r68?pRQF9WZM9tb#;*o`pNfj0$@v7YzIy^?A0jc0YK<6 za(X);YNqMLZb5??T8W3Yl0%Ud@Ak7v!?*n84=%QZmaSLhzwFx5c8VymXr7c%u0HX6L zq#D;#_3jr(<@Tk%Tua)8ano^EWA=SAQk<&{6 z5$E)jR@Vb^T$hk!_5(5wmr{sSAwb4PO}rvBrlrRy_kQ4bEi&H@2&uy;_alJpw50kJ zAV?%}G=91SbWj0}I(Q5?M=Toq3Luk6Wk@&y$V--7yb8#vQ6)2wSrS3ZBUO7C=twlzF*F81sRik@xF?gJP%VPHOCJfE*n)bKeKZq)rEj>`p-XE!;l> z$ZL8VML1)Cc;S*P^y1e809j&5^*kWQERY`pvf7ft6Oa+EE4*GGo)fHSV+kn~lQ%F^$20HRhVMS1lDaui;}GKT>%bVzg_0;Ji3^94YL zE#>t!Kt?UxzXOQTBJGnyH1TC3$(#wtvoL4o)^keV9TPvF4x!M$g3bh7p|Mj4RYzkz zgMC^!6HfNUvMLx)_NJ6S+|!eZ?NgydJQ-8|-b{Ev4?vL$E@|OM1Mpic`|)M|zHlNQ z4T8r&EEmf(hm+AnEQ4i{m=@vR?KAO3?aJy*tT&y@RI7CHTq2i^W>Pt=HhElB?C21B0%f}4z(!79;f)a(@cr$;Ah70+tiQFLl|Y`Ql%`f@w)GTmY9Q33l8#aCgL$ zt$E6lzx1>p(`7LogkUC2*#OxiGAT4INxWG!RD<~82CG0Mx0Xw#w4QjMDMmGOQ#X=%t*Nzb zHMgL=(G>Od;6WIoXpB{9M^jo~BGnU4Xi@rAXBdS6;lJ~2GbydUv%N!W34}V)L{V*v zqvbsqi?V?OS^~c*y-zeExH2sk8N?9ifUJ_K)ZRF?afPyJ3JK!Q`%BE~DDBGrB!3I#S z2BK+8pkBxnq9x(IqPi{|Eo2vN8EeJm;f)!hDsXUh_8`EjE^1N88jWdbAq>N8$r@Jq z#Gr-C#s`ub)=^WL1Jy9YT(uXi!%zr@h`Nu=q+|4x-C72QkKg-7ax|%7$``IUv^HwNP-9m^yVlXz(q1o$wy~|j-UDgc)CtgCQ8`o(CKK_!vBUv+ z%c&{M?;tY5N;{#(W*VNQGI}GXVt7*?Q(tCKUT`OSta?-JrcGWJ8yM8Ytw!V%UqWbw z8%0SEH_(!bw7szd!q}BAP4ST|Q_&h-se&@p_HU>a1xWq%Tr|}H>ya0^|>M$VCrM1N{ttp<21{v=0`CEPd^gJ8f3HtJF_Es$+XCCNm?J&9N#SwEP` zptf=Zoo);bDaJOu_Tu)*OgM7@9sB?WgNid+Dcre;U_2Rt&OkwHsG&XzmBkW9Wum!6 zRz{0-eRk8%#gYQ27h{cVPdtZ#XWpoV+FTvY7KxG00X-HC7IGjYLWhHE!+5}!2oceE zpG3@L`{TVTA33xXiGwmmXj>w4GZ&-*!5vB*39U?642`(2J|vn|5rDQ)h)l=PB8gZy ziLsWZ)$yfXP9lva12fg39PJM7gDp`TLMSwFSCR}Sa%9tjf4rv01ee})YXABHpz&bZ zyS{q;x(!!t0-c08e^~mH_|bT8uk`lRD9TZtGD<9>P_sHTgE3)Brb0s*>6iXUDt&+o zPX@!u11NnJu>1zL&?yQBibD4skJ5NW%m$2>W%_8nxt@*$8Q|0$ri`IFZG2T_w?#hS z6rWrPM6m#5voMY);;dsdO^l0qBP@s3stwkIq6yZ6yo0aauzvlz_24;e<4#kPG}Zl( z7_|p5d!y<}P_aV;dx-a-sl?yCu}m_SSXZNkp()Y$P`58e{ODG|tHCsg5LD!>MFcu> ziS2RB9>R&Pd)qD7+cmlmSbSb8E8u|xQ^&`>b#)srU`WLE$1TSNyrOf6qpKkmW-;i}QoWRi$X*&J4PfGfh-^|W zty1ZzABdL<(Cy2bn10pKTI}FZ81vDJgAf`goSGqG?q5Y+{@Sc_p`Mv7o26+zFAB%O&Yz!)@OCe?{i zC~9ObCZmxhd}pd_R_aKr*Rq)9#Czirqvf2gc@Tp|)Y%pc<_FVFgGoLzZA|8P0V-qb zkA+bqbwgDxicy_(ty$I+sFe9qlMru8HhO0*?FV_xVTdd%qrPsU3?rSF?Uq=0UjZu? znog62KwAYgql7k!M6K@VrPvvd>=gqlg*;`+8wgVyj!?ItF86wkOet%JIH<>|tfc~z zDq#!-+bon;EMu$1(=8eqvSJ@J4DH0Nt5>p3m9r<5TYWg4!?aCK*?0o9$g;X-#dJnP z*WH)o13+qWWP6OQdtT*G4YH{u;Cf#}Gb?jXL(Mv1Mpc1{n}&H)b|Qs}FW~Q#TUkQc z@+ix6Re@wCEhD!WT&tSUNn>NZ@~YhfX_@IrTA3H`B~=M>yBC`XFg$yIsrAM9QX78w z5#wl7uBf3EqX&jORK*2RRbobFt&5-N70shwn2KS#t!PeYDv}zamQa?*;tB3DcD$F;G=teswcRr%};47atA(dbb#(%#`BIa7|UQp zfJNU3>JKLR821Qb7*Esgg4N7LlsxLB8XMJbB}4tG{ph-M`{Rw9F8WlHXgW2TS35~x z0euO`)_7QzYc|*E5)o0^CXiR{L?DM^Y*L_2Lv~dUu2H467QZ|nD0DJq10bT$WSl8# zkEuf;G1Uf_b!dwUU>(QmS{B12V?c&+QXWNd07i&qo;pm?QE?$?yhSad8iyFeMBe$D z2YRBaU|o_1^kPJ*5BkuGg-s(VG|gfqPb}717v+erd5mGJY$!OJRFp^^0unhyGW&Ro z(DHh7^mNn?i1uvynvpk-OCqnOR{fXJJ6O9>ZrNO7!9i@p2|ubnKXQ{t($q>BRMotPYXNtApv+DA5;aTo z-{uj2A{EA7fYzG`W{9SZ zZOv9S=F|f6rgduab5b!Ov8L(j(4z%-lIB@@Tq)o?SX50CPi2=@O0pmm%- literal 0 HcmV?d00001 diff --git a/tutorial02_answer/test.c b/tutorial02_answer/test.c index ac0186d1..0fbd29a2 100644 --- a/tutorial02_answer/test.c +++ b/tutorial02_answer/test.c @@ -1,6 +1,7 @@ #include #include #include +#include "leptjson.c" #include "leptjson.h" static int main_ret = 0; diff --git a/tutorial02_answer/test.exe b/tutorial02_answer/test.exe new file mode 100644 index 0000000000000000000000000000000000000000..42342d7313857ab3c1532892754d3f5a1fc9519f GIT binary patch literal 111675 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