From 1c1771280c3924f738f2e9db36753a1800db582c Mon Sep 17 00:00:00 2001 From: tony Date: Tue, 1 Sep 2015 22:22:15 +0800 Subject: [PATCH] +added support for user customized routine by DEF/ENDDEF --- HISTORY | 7 +- README.md | 2 +- core/my_basic.c | 561 ++++++++++++++++++++++++++++++++++++------- core/my_basic.h | 2 + output/my_basic.exe | Bin 69632 -> 72704 bytes output/my_basic_mac | Bin 94200 -> 94888 bytes resource/my_basic.rc | 8 +- shell/main.c | 10 +- 8 files changed, 499 insertions(+), 91 deletions(-) diff --git a/HISTORY b/HISTORY index 70b138e..5e23844 100755 --- a/HISTORY +++ b/HISTORY @@ -1,3 +1,6 @@ +Sep. 1 2015 +Added support for user customized routine by DEF/ENDDEF + Aug. 26 2015 Added a memory pool to interpreter shell in main.c @@ -203,12 +206,12 @@ Apr. 15 2011 Fixed garbage collection and _label_t disposing bugs Apr. 14 2011 -Fixed some list / comparison operator bugs +Fixed some list/comparison operator bugs Feb. 15 2011 Improved portability on Cocoa Improved portability on VC++ 6.0 -Fixed a suspend / resume bug +Fixed a suspend/resume bug Feb. 9 2011 Fixed struct mb_interpreter_t declaration warnings on gcc diff --git a/README.md b/README.md index c6e02d6..fdc6286 100755 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Copyright (C) 2011 - 2015 [Wang Renxin](https://twitter.com/wangrenxin) ## Introduction -MY-BASIC is a tiny cross-platform easy extendable BASIC interpreter written in pure C with about 6000 lines of source code. Its grammar is similar to structured BASIC in early era, but without line number. It is aimed to be either an embeddable scripting language or a standalone interpreter. The core is pretty light; all in a C source file and an associated header file. You can combine MY-BASIC with an existing C, C++, Objective-C, etc. project easily, scripting driven can make your projects more powerful, elegant and neat. +MY-BASIC is a tiny cross-platform easy extendable BASIC interpreter written in pure C with about 7000 lines of source code. Its grammar is similar to structured BASIC in early era, but without line number. It is aimed to be either an embeddable scripting language or a standalone interpreter. The core is pretty light; all in a C source file and an associated header file. You can combine MY-BASIC with an existing C, C++, Objective-C, etc. project easily, scripting driven can make your projects more powerful, elegant and neat. ## Main features diff --git a/core/my_basic.c b/core/my_basic.c index af6256c..fea9f6a 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -78,7 +78,7 @@ extern "C" { /** Macros */ #define _VER_MAJOR 1 #define _VER_MINOR 1 -#define _VER_REVISION 64 +#define _VER_REVISION 65 #define _MB_VERSION ((_VER_MAJOR * 0x01000000) + (_VER_MINOR * 0x00010000) + (_VER_REVISION)) /* Uncomment this line to treat warnings as error */ @@ -111,8 +111,10 @@ extern "C" { #define _IS_EOS(__o) (__o && ((_object_t*)(__o))->type == _DT_EOS) #define _IS_SEP(__o, __c) (((_object_t*)(__o))->type == _DT_SEP && ((_object_t*)(__o))->data.separator == __c) #define _IS_FUNC(__o, __f) (((_object_t*)(__o))->type == _DT_FUNC && ((_object_t*)(__o))->data.func->pointer == __f) +#define _IS_ROUTINE(__o) (__o && ((_object_t*)(__o))->type == _DT_ROUTINE) /* Hash table size */ +#define _HT_ARRAY_SIZE_TINY 1 #define _HT_ARRAY_SIZE_SMALL 193 #define _HT_ARRAY_SIZE_MID 1543 #define _HT_ARRAY_SIZE_BIG 12289 @@ -205,6 +207,8 @@ static const char* _ERR_DESC[] = { "MOD by zero", "Invalid expression", "Out of memory", + "Don't suspend in a routine", + "Routine expected", /** Extended abort */ "Extended abort" }; @@ -224,7 +228,7 @@ typedef enum _data_e { _DT_ARRAY, _DT_LABEL, /* Label type, used for GOTO, GOSUB statement */ _DT_ROUTINE, /* User defined sub routine in script */ - _DT_PROTOTYPE, /* Object prototype */ + _DT_CLASS, /* Object instance */ _DT_SEP, /* Separator */ _DT_EOS /* End of statement */ } _data_e; @@ -256,18 +260,18 @@ typedef struct _label_t { _ls_node_t* node; } _label_t; -typedef struct _obj_t { +typedef struct _class_t { char* name; struct _running_context_t* scope; -} _obj_t; +} _class_t; -typedef struct _routing_t { +typedef struct _routine_t { char* name; - _obj_t* obj; + _class_t* instance; struct _running_context_t* scope; _ls_node_t* entry; _ls_node_t* parameters; -} _routing_t; +} _routine_t; typedef union _raw_u { int_t i; real_t r; void* p; } _raw_u; @@ -284,8 +288,8 @@ typedef struct _object_t { _var_t* variable; _array_t* array; _label_t* label; - _routing_t* routine; - _obj_t* prototype; + _routine_t* routine; + _class_t* instance; char separator; _raw_t raw; } data; @@ -311,6 +315,8 @@ const size_t MB_SIZEOF_FUN = _MB_MEM_TAG_SIZE + sizeof(_func_t); const size_t MB_SIZEOF_ARR = _MB_MEM_TAG_SIZE + sizeof(_array_t); const size_t MB_SIZEOF_VAR = _MB_MEM_TAG_SIZE + sizeof(_var_t); const size_t MB_SIZEOF_LBL = _MB_MEM_TAG_SIZE + sizeof(_label_t); +const size_t MB_SIZEOF_RTN = _MB_MEM_TAG_SIZE + sizeof(_routine_t); +const size_t MB_SIZEOF_CLS = _MB_MEM_TAG_SIZE + sizeof(_class_t); #else /* MB_ENABLE_ALLOC_STAT */ const size_t MB_SIZEOF_INT = sizeof(int); const size_t MB_SIZEOF_PTR = sizeof(intptr_t); @@ -321,6 +327,8 @@ const size_t MB_SIZEOF_FUN = sizeof(_func_t); const size_t MB_SIZEOF_ARR = sizeof(_array_t); const size_t MB_SIZEOF_VAR = sizeof(_var_t); const size_t MB_SIZEOF_LBL = sizeof(_label_t); +const size_t MB_SIZEOF_RTN = sizeof(_routine_t); +const size_t MB_SIZEOF_CLS = sizeof(_class_t); #endif /* MB_ENABLE_ALLOC_STAT */ #ifdef MB_ENABLE_SOURCE_TRACE @@ -362,11 +370,8 @@ typedef struct _parsing_context_t { /* Running context */ typedef struct _running_context_t { + struct _running_context_t* prev; _ht_node_t* var_dict; - _ls_node_t* temp_values; - _ls_node_t* suspent_point; - int schedule_suspend_tag; - _ls_node_t* sub_stack; _var_t* next_loop_var; mb_value_t intermediate_value; } _running_context_t; @@ -385,7 +390,10 @@ typedef struct mb_interpreter_t { _ls_node_t* ast; _parsing_context_t* parsing_context; _running_context_t* running_context; - _running_context_t* scope_context; + _ls_node_t* sub_stack; + _ls_node_t* temp_values; + _ls_node_t* suspent_point; + int schedule_suspend_tag; int_t no_eat_comma_mark; _ls_node_t* skip_to_eoi; _ls_node_t* in_neg_expr; @@ -660,6 +668,7 @@ static int _get_priority_index(mb_func_t op); static _object_t* _operate_operand(mb_interpreter_t* s, _object_t* optr, _object_t* opnd1, _object_t* opnd2, int* status); static bool_t _is_expression_terminal(mb_interpreter_t* s, _object_t* obj); static int _calc_expression(mb_interpreter_t* s, _ls_node_t** l, _object_t** val); +static int _eval_routine(mb_interpreter_t* s, _ls_node_t** l, _routine_t* r); static bool_t _is_print_terminal(mb_interpreter_t* s, _object_t* obj); /** Others */ @@ -735,6 +744,10 @@ static bool_t _is_array(void* obj); static bool_t _is_string(void* obj); static char* _extract_string(_object_t* obj); static bool_t _is_internal_object(_object_t* obj); +static void _init_instance(mb_interpreter_t* s, _class_t* instance, char* n); +static void _init_routine(mb_interpreter_t* s, _routine_t* routine, char* n); +static void _end_of_scope(mb_interpreter_t* s); +static _ls_node_t* _search_var_in_scope_chain(mb_interpreter_t* s, char* n); static int _dispose_object(_object_t* obj); static int _destroy_object(void* data, void* extra); static int _destroy_object_non_syntax(void* data, void* extra); @@ -753,6 +766,8 @@ static int _skip_if_chunk(mb_interpreter_t* s, _ls_node_t** l); static int _skip_struct(mb_interpreter_t* s, _ls_node_t** l, mb_func_t open_func, mb_func_t close_func); static _parsing_context_t* _reset_parsing_context(_parsing_context_t* context); +static int _clear_scope_chain(mb_interpreter_t* s); +static int _dispose_scope_chain(mb_interpreter_t* s); static int _register_func(mb_interpreter_t* s, const char* n, mb_func_t f, bool_t local); static int _remove_func(mb_interpreter_t* s, const char* n, bool_t local); @@ -829,8 +844,8 @@ static int _core_call(mb_interpreter_t* s, void** l); static int _core_var(mb_interpreter_t* s, void** l); static int _core_def(mb_interpreter_t* s, void** l); static int _core_enddef(mb_interpreter_t* s, void** l); -static int _core_obj(mb_interpreter_t* s, void** l); -static int _core_endobj(mb_interpreter_t* s, void** l); +static int _core_class(mb_interpreter_t* s, void** l); +static int _core_endclass(mb_interpreter_t* s, void** l); #ifdef MB_ENABLE_ALLOC_STAT static int _core_mem(mb_interpreter_t* s, void** l); #endif /* MB_ENABLE_ALLOC_STAT */ @@ -915,8 +930,8 @@ static const _func_t _core_libs[] = { { "VAR", _core_var }, { "DEF", _core_def }, { "ENDDEF", _core_enddef }, - { "OBJ", _core_obj }, - { "ENDOBJ", _core_endobj }, + { "CLASS", _core_class }, + { "ENDCLASS", _core_endclass }, #ifdef MB_ENABLE_ALLOC_STAT { "MEM", _core_mem }, @@ -1712,6 +1727,24 @@ int _calc_expression(mb_interpreter_t* s, _ls_node_t** l, _object_t** val) { } _ls_pushback(opnd, c); f++; + } else if(c->type == _DT_ROUTINE) { + ast = ast->prev; + result = _eval_routine(s, &ast, c->data.routine); + ast = ast->prev; + if(result != MB_FUNC_OK) { + _handle_error_on_obj(s, SE_RN_CALCULATION_ERROR, DON(ast), MB_FUNC_ERR, _exit, result); + } + c = (_object_t*)mb_malloc(sizeof(_object_t)); + memset(c, 0, sizeof(_object_t)); + _ls_pushback(garbage, c); + result = _public_value_to_internal_object(&running->intermediate_value, c); + if(result != MB_FUNC_OK) + goto _exit; + if(f) { + _handle_error_on_obj(s, SE_RN_OPERATOR_EXPECTED, DON(ast), MB_FUNC_ERR, _exit, result); + } + _ls_pushback(opnd, c); + f++; } else if(c->type == _DT_VAR && c->data.variable->data->type == _DT_ARRAY) { ast = ast->prev; result = _get_array_index(s, &ast, &arr_idx); @@ -1851,6 +1884,85 @@ _exit: return result; } +int _eval_routine(mb_interpreter_t* s, _ls_node_t** l, _routine_t* r) { + /* Evaluate a routine */ + int result = MB_FUNC_OK; + _ls_node_t* ast = 0; + mb_value_t arg; + _ls_node_t* pars = 0; + _var_t* var = 0; + _running_context_t* running = 0; + + mb_assert(s && l && r); + + running = s->running_context; + + mb_check(mb_attempt_open_bracket(s, (void**)l)); + + pars = r->parameters; + if(pars) { + pars = pars->next; + while(pars) { + mb_check(mb_pop_value(s, (void**)l, &arg)); + + var = (_var_t*)(pars->data); + pars = pars->next; + + result = _public_value_to_internal_object(&arg, var->data); + if(result != MB_FUNC_OK) + goto _exit; + } + } + + mb_check(mb_attempt_close_bracket(s, (void**)l)); + + ast = (_ls_node_t*)(*l); + _ls_pushback(s->sub_stack, ast); + + r->scope->prev = s->running_context; + running = s->running_context = r->scope; + + *l = r->entry; + + do { + result = _execute_statement(s, l); + if(result == MB_SUB_RETURN) { + result = MB_FUNC_OK; + + break; + } + if(result == MB_FUNC_SUSPEND && s->error_handler) { + s->last_error = SE_RN_DONT_SUSPEND_IN_A_ROUTINE; + (s->error_handler)(s, s->last_error, (char*)mb_get_error_desc(s->last_error), + s->last_error_pos, + s->last_error_row, + s->last_error_col, + result); + + goto _exit; + } + if(result != MB_FUNC_OK && s->error_handler) { + if(result >= MB_EXTENDED_ABORT) + s->last_error = SE_EA_EXTENDED_ABORT; + (s->error_handler)(s, s->last_error, (char*)mb_get_error_desc(s->last_error), + s->last_error_pos, + s->last_error_row, + s->last_error_col, + result); + + goto _exit; + } + } while(ast); + + s->running_context = running->prev; + running->prev = 0; + + s->running_context->intermediate_value = running->intermediate_value; + +_exit: + return result; +} + bool_t _is_print_terminal(mb_interpreter_t* s, _object_t* obj) { /* Determine whether an object is a PRINT termination */ bool_t result = false; @@ -2034,7 +2146,7 @@ int _create_symbol(mb_interpreter_t* s, _ls_node_t* l, char* sym, _object_t** ob /* Create a syntax symbol */ int result = MB_FUNC_OK; _data_e type; - union { _func_t* func; _array_t* array; _var_t* var; _label_t* label; real_t float_point; int_t integer; _raw_t any; } tmp; + union { _func_t* func; _array_t* array; _class_t* instance; _routine_t* routine; _var_t* var; _label_t* label; real_t float_point; int_t integer; _raw_t any; } tmp; _raw_t value; unsigned int ul = 0; _parsing_context_t* context = 0; @@ -2097,7 +2209,7 @@ int _create_symbol(mb_interpreter_t* s, _ls_node_t* l, char* sym, _object_t** ob break; case _DT_ARRAY: - glbsyminscope = _ht_find(running->var_dict, sym); + glbsyminscope = _search_var_in_scope_chain(s, sym); if(glbsyminscope && ((_object_t*)(glbsyminscope->data))->type == _DT_ARRAY) { (*obj)->data.array = ((_object_t*)(glbsyminscope->data))->data.array; (*obj)->ref = true; @@ -2119,9 +2231,53 @@ int _create_symbol(mb_interpreter_t* s, _ls_node_t* l, char* sym, _object_t** ob (*obj)->ref = true; } + break; + case _DT_CLASS: + glbsyminscope = _search_var_in_scope_chain(s, sym); + if(glbsyminscope && ((_object_t*)(glbsyminscope->data))->type == _DT_CLASS) { + (*obj)->data.instance = ((_object_t*)(glbsyminscope->data))->data.instance; + (*obj)->ref = true; + *delsym = true; + } else { + tmp.instance = (_class_t*)mb_malloc(sizeof(_class_t)); + _init_instance(s, tmp.instance, sym); + (*obj)->data.instance = tmp.instance; + + ul = _ht_set_or_insert(running->var_dict, sym, *obj); + mb_assert(ul); + + *obj = (_object_t*)mb_malloc(sizeof(_object_t)); + memset(*obj, 0, sizeof(_object_t)); + (*obj)->type = type; + (*obj)->data.instance = tmp.instance; + (*obj)->ref = true; + } + + break; + case _DT_ROUTINE: + glbsyminscope = _search_var_in_scope_chain(s, sym); + if(glbsyminscope && ((_object_t*)(glbsyminscope->data))->type == _DT_ROUTINE) { + (*obj)->data.routine = ((_object_t*)(glbsyminscope->data))->data.routine; + (*obj)->ref = true; + *delsym = true; + } else { + tmp.routine = (_routine_t*)mb_malloc(sizeof(_routine_t)); + _init_routine(s, tmp.routine, sym); + (*obj)->data.routine = tmp.routine; + + ul = _ht_set_or_insert(running->var_dict, sym, *obj); + mb_assert(ul); + + *obj = (_object_t*)mb_malloc(sizeof(_object_t)); + memset(*obj, 0, sizeof(_object_t)); + (*obj)->type = type; + (*obj)->data.routine = tmp.routine; + (*obj)->ref = true; + } + break; case _DT_VAR: - glbsyminscope = _ht_find(running->var_dict, sym); + glbsyminscope = _search_var_in_scope_chain(s, sym); if(glbsyminscope && ((_object_t*)(glbsyminscope->data))->type == _DT_VAR) { (*obj)->data.variable = ((_object_t*)(glbsyminscope->data))->data.variable; (*obj)->ref = true; @@ -2237,7 +2393,7 @@ _data_e _get_symbol_type(mb_interpreter_t* s, char* sym, _raw_t* value) { goto _exit; } /* _array_t */ - glbsyminscope = _ht_find(running->var_dict, sym); + glbsyminscope = _search_var_in_scope_chain(s, sym); if(glbsyminscope && ((_object_t*)(glbsyminscope->data))->type == _DT_ARRAY) { tmp.obj = (_object_t*)(glbsyminscope->data); memcpy(*value, &(tmp.obj->data.array->type), sizeof(tmp.obj->data.array->type)); @@ -2247,7 +2403,7 @@ _data_e _get_symbol_type(mb_interpreter_t* s, char* sym, _raw_t* value) { goto _exit; } if(context->last_symbol && context->last_symbol->type == _DT_FUNC) { - if(strcmp("DIM", context->last_symbol->data.func->name) == 0) { + if(context->last_symbol->data.func->pointer == _core_dim) { #ifdef MB_SIMPLE_ARRAY en = (sym[_sl - 1] == '$' ? _DT_STRING : _DT_REAL); #else /* MB_SIMPLE_ARRAY */ @@ -2260,6 +2416,60 @@ _data_e _get_symbol_type(mb_interpreter_t* s, char* sym, _raw_t* value) { goto _exit; } } + /* _class_t */ + if(context->last_symbol && context->last_symbol->type == _DT_FUNC) { + if(context->last_symbol->data.func->pointer == _core_class) { + glbsyminscope = _search_var_in_scope_chain(s, sym); + if(glbsyminscope && ((_object_t*)(glbsyminscope->data))->type == _DT_VAR) { + tmp.obj = (_object_t*)(glbsyminscope->data); + if(!tmp.obj->ref) { + _ht_remove(running->var_dict, sym, _ls_cmp_extra_string); + _dispose_object(tmp.obj); + } + tmp.obj->type = _DT_CLASS; + tmp.obj->data.instance = (_class_t*)mb_malloc(sizeof(_class_t)); + _init_instance(s, tmp.obj->data.instance, sym); + _ht_set_or_insert(running->var_dict, sym, tmp.obj); + } + + result = _DT_CLASS; + + goto _exit; + } + } + /* _routine_t */ + if(context->last_symbol && context->last_symbol->type == _DT_FUNC) { + glbsyminscope = _search_var_in_scope_chain(s, sym); + if(glbsyminscope && ((_object_t*)glbsyminscope->data)->type == _DT_ROUTINE) { + result = _DT_ROUTINE; + + goto _exit; + } + if(context->last_symbol->data.func->pointer == _core_def || context->last_symbol->data.func->pointer == _core_call) { + if(!_is_identifier_char(sym[0])) { + result = _DT_NIL; + + goto _exit; + } + if(glbsyminscope && ((_object_t*)(glbsyminscope->data))->type == _DT_VAR) { + tmp.obj = (_object_t*)(glbsyminscope->data); + if(!tmp.obj->ref) { + _ht_remove(running->var_dict, sym, _ls_cmp_extra_string); + _dispose_object(tmp.obj); + } + tmp.obj->type = _DT_ROUTINE; + tmp.obj->data.routine = (_routine_t*)mb_malloc(sizeof(_routine_t)); + _init_routine(s, tmp.obj->data.routine, sym); + _ht_set_or_insert(running->var_dict, sym, tmp.obj); + } + + result = _DT_ROUTINE; + + goto _exit; + } else if(context->last_symbol->data.func->pointer == _core_enddef) { + _end_of_scope(s); + } + } /* _func_t */ if(!context->last_symbol || (context->last_symbol && ((context->last_symbol->type == _DT_FUNC && context->last_symbol->data.func->pointer != _core_close_bracket) || @@ -2299,7 +2509,7 @@ _data_e _get_symbol_type(mb_interpreter_t* s, char* sym, _raw_t* value) { goto _exit; } /* _var_t */ - glbsyminscope = _ht_find(running->var_dict, sym); + glbsyminscope = _search_var_in_scope_chain(s, sym); if(glbsyminscope) { if(((_object_t*)glbsyminscope->data)->type != _DT_LABEL) { memcpy(*value, &glbsyminscope->data, sizeof(glbsyminscope->data)); @@ -2312,7 +2522,7 @@ _data_e _get_symbol_type(mb_interpreter_t* s, char* sym, _raw_t* value) { /* _label_t */ if(context->current_char == ':') { if(!context->last_symbol || _IS_EOS(context->last_symbol)) { - glbsyminscope = _ht_find(running->var_dict, sym); + glbsyminscope = _search_var_in_scope_chain(s, sym); if(glbsyminscope) { memcpy(*value, &glbsyminscope->data, sizeof(glbsyminscope->data)); } @@ -2822,6 +3032,61 @@ bool_t _is_internal_object(_object_t* obj) { return result; } +void _init_instance(mb_interpreter_t* s, _class_t* instance, char* n) { + /* Initialize an instance */ + mb_assert(s && instance && n); + + memset(instance, 0, sizeof(_class_t)); + instance->name = n; + instance->scope = (_running_context_t*)mb_malloc(sizeof(_running_context_t)); + memset(instance->scope, 0, sizeof(_running_context_t)); +} + +void _init_routine(mb_interpreter_t* s, _routine_t* routine, char* n) { + /* Initialize a routine */ + _running_context_t* running = 0; + + mb_assert(s && routine && n); + + running = s->running_context; + + memset(routine, 0, sizeof(_routine_t)); + routine->name = n; + routine->scope = (_running_context_t*)mb_malloc(sizeof(_running_context_t)); + memset(routine->scope, 0, sizeof(_running_context_t)); + routine->scope->var_dict = _ht_create(0, _ht_cmp_string, _ht_hash_string, 0); + + routine->scope->prev = running; + s->running_context = routine->scope; +} + +void _end_of_scope(mb_interpreter_t* s) { + /* Finish encapsule a scope */ + _running_context_t* running = 0; + + mb_assert(s); + + running = s->running_context; + s->running_context = running->prev; + running->prev = 0; +} + +_ls_node_t* _search_var_in_scope_chain(mb_interpreter_t* s, char* n) { + /* Try to search a variable in a scope chain */ + _ls_node_t* result = 0; + _running_context_t* running = 0; + + mb_assert(s && n); + + running = s->running_context; + while(running && !result) { + result = _ht_find(running->var_dict, n); + running = running->prev; + } + + return result; +} + int _dispose_object(_object_t* obj) { /* Dispose a syntax object */ int result = 0; @@ -2866,8 +3131,28 @@ int _dispose_object(_object_t* obj) { safe_free(obj->data.label); } + break; + case _DT_ROUTINE: + if(!obj->ref) { + safe_free(obj->data.routine->name); + _ht_foreach(obj->data.routine->scope->var_dict, _destroy_object); + _ht_destroy(obj->data.routine->scope->var_dict); + safe_free(obj->data.routine->scope); + if(obj->data.routine->parameters) + _ls_destroy(obj->data.routine->parameters); + safe_free(obj->data.routine); + } + + break; + case _DT_CLASS: + if(!obj->ref) { + safe_free(obj->data.instance->scope); + safe_free(obj->data.instance); + } + break; case _DT_NIL: /* Fall through */ + case _DT_ANY: /* Fall through */ case _DT_INT: /* Fall through */ case _DT_REAL: /* Fall through */ case _DT_SEP: /* Fall through */ @@ -3159,11 +3444,11 @@ int _execute_statement(mb_interpreter_t* s, _ls_node_t** l) { break; } - if(running->schedule_suspend_tag) { - if(running->schedule_suspend_tag == MB_FUNC_SUSPEND) + if(s->schedule_suspend_tag) { + if(s->schedule_suspend_tag == MB_FUNC_SUSPEND) mb_suspend(s, (void**)(&ast)); - result = running->schedule_suspend_tag; - running->schedule_suspend_tag = 0; + result = s->schedule_suspend_tag; + s->schedule_suspend_tag = 0; } if(result != MB_FUNC_OK && result != MB_FUNC_SUSPEND && result != MB_SUB_RETURN) @@ -3185,7 +3470,7 @@ int _execute_statement(mb_interpreter_t* s, _ls_node_t** l) { } } - if(skip_to_eoi && s->skip_to_eoi && s->skip_to_eoi == _ls_back(running->sub_stack)) { + if(skip_to_eoi && s->skip_to_eoi && s->skip_to_eoi == _ls_back(s->sub_stack)) { s->skip_to_eoi = 0; obj = (_object_t*)(ast->data); if(obj->type != _DT_EOS) { @@ -3295,6 +3580,57 @@ _parsing_context_t* _reset_parsing_context(_parsing_context_t* context) { return context; } +int _clear_scope_chain(mb_interpreter_t* s) { + /* Clear a scope chain */ + int result = 0; + _running_context_t* running = 0; + _running_context_t* prev = 0; + _ht_node_t* global_scope = 0; + + mb_assert(s); + + running = s->running_context; + while(running) { + prev = running->prev; + + global_scope = running->var_dict; + _ht_foreach(global_scope, _destroy_object); + _ht_clear(global_scope); + + result++; + running = prev; + } + + return result; +} + +int _dispose_scope_chain(mb_interpreter_t* s) { + /* Dispose a scope chain */ + int result = 0; + _running_context_t* running = 0; + _running_context_t* prev = 0; + _ht_node_t* global_scope = 0; + + mb_assert(s); + + running = s->running_context; + while(running) { + prev = running->prev; + + global_scope = running->var_dict; + _ht_foreach(global_scope, _destroy_object); + _ht_clear(global_scope); + _ht_destroy(global_scope); + mb_dispose_value(s, running->intermediate_value); + safe_free(running); + + result++; + running = prev; + } + + return result; +} + int _register_func(mb_interpreter_t* s, const char* n, mb_func_t f, bool_t local) { /* Register a function to a MY-BASIC environment */ int result = 0; @@ -3537,7 +3873,6 @@ int mb_open(struct mb_interpreter_t** s) { int result = MB_FUNC_OK; _ht_node_t* local_scope = 0; _ht_node_t* global_scope = 0; - _ls_node_t* ast = 0; _parsing_context_t* context = 0; _running_context_t* running = 0; @@ -3554,18 +3889,17 @@ int mb_open(struct mb_interpreter_t** s) { (*s)->parsing_context = context = _reset_parsing_context((*s)->parsing_context); + (*s)->temp_values = _ls_create(); + running = (_running_context_t*)mb_malloc(sizeof(_running_context_t)); memset(running, 0, sizeof(_running_context_t)); - - running->temp_values = _ls_create(); - running->sub_stack = _ls_create(); (*s)->running_context = running; - global_scope = _ht_create(0, _ht_cmp_string, _ht_hash_string, 0); running->var_dict = global_scope; - ast = _ls_create(); - (*s)->ast = ast; + (*s)->sub_stack = _ls_create(); + + (*s)->ast = _ls_create(); _open_core_lib(*s); _open_std_lib(*s); @@ -3583,12 +3917,10 @@ int mb_close(struct mb_interpreter_t** s) { _ht_node_t* global_scope = 0; _ls_node_t* ast; _parsing_context_t* context = 0; - _running_context_t* running = 0; mb_assert(s); context = (*s)->parsing_context; - running = (*s)->running_context; _close_std_lib(*s); _close_core_lib(*s); @@ -3597,16 +3929,12 @@ int mb_close(struct mb_interpreter_t** s) { _ls_foreach(ast, _destroy_object); _ls_destroy(ast); - global_scope = running->var_dict; - _ht_foreach(global_scope, _destroy_object); - _ht_destroy(global_scope); + _ls_destroy((*s)->sub_stack); - mb_dispose_value(*s, running->intermediate_value); - _ls_destroy(running->sub_stack); - _ls_foreach(running->temp_values, _destroy_object); - _ls_destroy(running->temp_values); + _dispose_scope_chain(*s); - safe_free(running); + _ls_foreach((*s)->temp_values, _destroy_object); + _ls_destroy((*s)->temp_values); if(context) { safe_free(context); @@ -3644,8 +3972,8 @@ int mb_reset(struct mb_interpreter_t** s, bool_t clrf/* = false*/) { (*s)->last_error = SE_NO_ERR; running = (*s)->running_context; - _ls_clear(running->sub_stack); - running->suspent_point = 0; + _ls_clear((*s)->sub_stack); + (*s)->suspent_point = 0; running->next_loop_var = 0; memset(&(running->intermediate_value), 0, sizeof(mb_value_t)); @@ -3655,9 +3983,7 @@ int mb_reset(struct mb_interpreter_t** s, bool_t clrf/* = false*/) { _ls_foreach(ast, _destroy_object); _ls_clear(ast); - global_scope = running->var_dict; - _ht_foreach(global_scope, _destroy_object); - _ht_clear(global_scope); + _clear_scope_chain(*s); if(clrf) { global_scope = (*s)->global_func_dict; @@ -3925,12 +4251,12 @@ int mb_pop_value(struct mb_interpreter_t* s, void** l, mb_value_t* val) { goto _exit; if(val_ptr->type == _DT_STRING && !val_ptr->ref) { - _ls_foreach(running->temp_values, _destroy_object); - _ls_clear(running->temp_values); + _ls_foreach(s->temp_values, _destroy_object); + _ls_clear(s->temp_values); val_ptr = (_object_t*)mb_malloc(sizeof(_object_t)); memcpy(val_ptr, &val_obj, sizeof(_object_t)); - _ls_pushback(running->temp_values, val_ptr); + _ls_pushback(s->temp_values, val_ptr); } if(s->no_eat_comma_mark < _NO_EAT_COMMA && (!inep || (inep && !(*inep)))) { @@ -4203,6 +4529,11 @@ int mb_load_string(struct mb_interpreter_t* s, const char* l) { }; status = _parse_char(s, MB_EOS, context->parsing_pos, context->parsing_row, context->parsing_col); + if(s->running_context->prev) { + while(s->running_context->prev) + s->running_context = s->running_context->prev; + } + _exit: context->parsing_state = _PS_NORMAL; @@ -4264,10 +4595,10 @@ int mb_run(struct mb_interpreter_t* s) { if(s->parsing_context) safe_free(s->parsing_context); - if(running->suspent_point) { - ast = running->suspent_point; + if(s->suspent_point) { + ast = s->suspent_point; ast = ast->next; - running->suspent_point = 0; + s->suspent_point = 0; } else { mb_assert(!s->no_eat_comma_mark); ast = s->ast; @@ -4304,8 +4635,8 @@ int mb_run(struct mb_interpreter_t* s) { } while(ast); _exit: - _ls_foreach(running->temp_values, _destroy_object); - _ls_clear(running->temp_values); + _ls_foreach(s->temp_values, _destroy_object); + _ls_clear(s->temp_values); return result; } @@ -4318,7 +4649,7 @@ int mb_suspend(struct mb_interpreter_t* s, void** l) { mb_assert(s && l && *l); ast = (_ls_node_t*)(*l); - s->running_context->suspent_point = ast; + s->suspent_point = ast; return result; } @@ -4331,7 +4662,7 @@ int mb_schedule_suspend(struct mb_interpreter_t* s, int t) { if(t == MB_FUNC_OK) t = MB_FUNC_SUSPEND; - s->running_context->schedule_suspend_tag = t; + s->schedule_suspend_tag = t; return result; } @@ -4348,7 +4679,7 @@ int mb_debug_get(struct mb_interpreter_t* s, const char* n, mb_value_t* val) { running = s->running_context; - v = _ht_find(running->var_dict, (void*)n); + v = _search_var_in_scope_chain(s, (char*)n); if(v) { obj = (_object_t*)(v->data); mb_assert(obj->type == _DT_VAR); @@ -4376,7 +4707,7 @@ int mb_debug_set(struct mb_interpreter_t* s, const char* n, mb_value_t val) { running = s->running_context; - v = _ht_find(running->var_dict, (void*)n); + v = _search_var_in_scope_chain(s, (char*)n); if(v) { obj = (_object_t*)(v->data); mb_assert(obj->type == _DT_VAR); @@ -5081,7 +5412,7 @@ _elseif: if(ast && ast->next && _IS_EOS(ast->next->data)) multi_line = true; - s->skip_to_eoi = _ls_back(running->sub_stack); + s->skip_to_eoi = _ls_back(s->sub_stack); do { ast = ast->next; result = _execute_statement(s, &ast); @@ -5603,7 +5934,7 @@ int _core_gosub(mb_interpreter_t* s, void** l) { ast = (_ls_node_t*)(*l); result = _core_goto(s, l); if(result == MB_FUNC_OK) - _ls_pushback(running->sub_stack, ast); + _ls_pushback(s->sub_stack, ast); return result; } @@ -5612,12 +5943,22 @@ int _core_return(mb_interpreter_t* s, void** l) { /* RETURN statement */ int result = MB_SUB_RETURN; _ls_node_t* ast = 0; + _ls_node_t* sub_stack = 0; _running_context_t* running = 0; + mb_value_t arg; mb_assert(s && l); running = s->running_context; - ast = (_ls_node_t*)_ls_popback(running->sub_stack); + sub_stack = s->sub_stack; + + if(running->prev) { + ast = (_ls_node_t*)(*l); + ast = ast->next; + mb_check(mb_pop_value(s, (void**)(&ast), &arg)); + mb_check(mb_push_value(s, (void**)(&ast), arg)); + } + ast = (_ls_node_t*)_ls_popback(sub_stack); if(!ast) { _handle_error_on_obj(s, SE_RN_NO_RETURN_POINT, DON(ast), MB_FUNC_ERR, _exit, result); } @@ -5630,11 +5971,23 @@ _exit: int _core_call(mb_interpreter_t* s, void** l) { /* CALL statement */ int result = MB_FUNC_OK; - mb_unrefvar(s); - mb_unrefvar(l); + _ls_node_t* ast = 0; + _object_t* obj = 0; + _routine_t* routine = 0; - mb_assert(0 && "Not implemented"); - _do_nothing; + mb_assert(s && l); + + ast = (_ls_node_t*)(*l); + ast = ast->next; + + obj = (_object_t*)(ast->data); + routine = (_routine_t*)(obj->data.routine); + + _eval_routine(s, &ast, routine); + + ast = ast->prev; + + *l = ast; return result; } @@ -5654,28 +6007,72 @@ int _core_var(mb_interpreter_t* s, void** l) { int _core_def(mb_interpreter_t* s, void** l) { /* DEF statement */ int result = MB_FUNC_OK; - mb_unrefvar(s); - mb_unrefvar(l); + _ls_node_t* ast = 0; + _object_t* obj = 0; + _var_t* var = 0; + _routine_t* routine = 0; + _running_context_t* scope = 0; - mb_assert(0 && "Not implemented"); - _do_nothing; + mb_assert(s && l); + + scope = s->running_context; + + ast = (_ls_node_t*)(*l); + ast = ast->next; + obj = (_object_t*)(ast->data); + if(!_IS_ROUTINE(obj)) { + _handle_error_on_obj(s, SE_RN_ROUTINE_EXPECTED, DON(ast), MB_FUNC_ERR, _exit, result); + } + routine = (_routine_t*)(((_object_t*)(ast->data))->data.routine); + ast = ast->next; + obj = (_object_t*)(ast->data); + if(!_IS_FUNC(obj, _core_open_bracket)) { + _handle_error_on_obj(s, SE_RN_OPEN_BRACKET_EXPECTED, DON(ast), MB_FUNC_ERR, _exit, result); + } + ast = ast->next; + obj = (_object_t*)(ast->data); + while(!_IS_FUNC(obj, _core_close_bracket)) { + var = obj->data.variable; + routine->parameters = _ls_create(); + _ls_pushback(routine->parameters, var); + + ast = ast->next; + obj = (_object_t*)(ast->data); + } + ast = ast->next; + routine->entry = ast; + + _skip_to(s, &ast, _core_enddef, _DT_NIL); + + ast = ast->next; + +_exit: + *l = ast; return result; } int _core_enddef(mb_interpreter_t* s, void** l) { /* ENDDEF statement */ - int result = MB_FUNC_OK; - mb_unrefvar(s); - mb_unrefvar(l); + int result = MB_SUB_RETURN; + _ls_node_t* ast = 0; + _ls_node_t* sub_stack = 0; - mb_assert(0 && "Not implemented"); - _do_nothing; + mb_assert(s && l); + sub_stack = s->sub_stack; + + ast = (_ls_node_t*)_ls_popback(sub_stack); + if(!ast) { + _handle_error_on_obj(s, SE_RN_NO_RETURN_POINT, DON(ast), MB_FUNC_ERR, _exit, result); + } + *l = ast; + +_exit: return result; } -int _core_obj(mb_interpreter_t* s, void** l) { +int _core_class(mb_interpreter_t* s, void** l) { /* OBJ statement */ int result = MB_FUNC_OK; mb_unrefvar(s); @@ -5687,7 +6084,7 @@ int _core_obj(mb_interpreter_t* s, void** l) { return result; } -int _core_endobj(mb_interpreter_t* s, void** l) { +int _core_endclass(mb_interpreter_t* s, void** l) { /* ENDOBJ statement */ int result = MB_FUNC_OK; mb_unrefvar(s); diff --git a/core/my_basic.h b/core/my_basic.h index 608a053..116deb8 100755 --- a/core/my_basic.h +++ b/core/my_basic.h @@ -215,6 +215,8 @@ typedef enum mb_error_e { SE_RN_MOD_BY_ZERO, SE_RN_INVALID_EXPRESSION, SE_RN_OUT_OF_MEMORY, + SE_RN_DONT_SUSPEND_IN_A_ROUTINE, + SE_RN_ROUTINE_EXPECTED, /** Extended abort */ SE_EA_EXTENDED_ABORT, /** Extra */ diff --git a/output/my_basic.exe b/output/my_basic.exe index b70d667da96c7dc25332c49f3c6fbc6a9d6a5ad3..aa25a73941a624f818b08273c402f9ed3f98e27a 100755 GIT binary patch delta 28663 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 Cn8_vp diff --git a/output/my_basic_mac b/output/my_basic_mac index 09bb9cc0967fd52416628f219901198681c7880a..7b291ac2097c02c0f4c4a0814d4c2d7cc9cc7e58 100755 GIT binary patch literal 94888 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 literal 94200 zcmeFad3aPs_BY;vBs5EN0|pGT7$GVk3Q?j&h@>SAx2405qJlvX#2ukqPX9^0%c{h{eda7lSxO{@8eGuy=Hdx67fU^r%ewmlYfd{*^Ft| z&zv?3DM!=Wy-U%nvgtAYuj@B;wtv<&H(s5j-?Y6eK2!9*B7^ad@pKiG|C`W8N?F;| zn{J%l$iSoPxBMqXucw`n@l<*#q$OBZ7PxWFH8);WcFm2`ZxZ@V>sR@UqL*dUWBlkk zrP3@bn>M3t`m8H&n5I&Xu3v3j(d%btVjQx2+<#=tcJR8ati(Oeor;zwav}mR$w1;i z4gmb4ypb+tkN?WbZoIy1_N_Nex#{|{nf_VFrDtbHju1xOU^kQTRC;W0eiM2}%SluIEl;!gXA3^# z|5{F_%x)ZIzi#jH7K+}?lscr+v#XtiHtHpxcf@c{i8rBBvg~?Iwowu1zlJguXFF4A zb%)*)SppvWE(_nu3RV7}i8%F^)jrLUixkRk4*mvYr#TLTf%^C~$I6o&j@C#Ug+Kn= zjCB67oVW1pE2+o+Z~NFZ$HZfR+9E9%e{JyBH!yov-|MfL()X%cufGa${_BiC)}!{_ z?l*KAac<`A;rV@@IKjCr4{2z#-*4gY$gz060wnEH?948R{@YJ9#4_NO(L zjq=CdI@>?(hO;g_3-!2WipqT&J}l39LYgB74en*fbHN|}qs$Y|IBEa(?>7$o#)02B z@EZqyBXe&fJz95_A)#_Prx?n~SkyT`l7jn$Xz&4FLR zYaDPJaox-q_B9+4rb9P8^?ImiDtrf4KlnejORBYA6^*ZwYTsW{-*^ukU4ll1ty z;Nh0@zl>$+M!CS^>y55|+lMv<548-`_@@5DXMCmCe3fopUyDQ|<8i<|6?+y=(#??2 zGMsv(*hzi_e`+>=D3Z66U51{8ba7%J-G5ea{V(}-F&Fq>Ce&-3@wasIUKd%c8{_m` zJyN2>-vVd)&cF_I%vcTOg$ly>STBunIM&iJVtpB5E!OLm#AJ$Y3~{bqjDYo)fST(@ z*KfWk z=mjcw0`4_$aatb@LuISAiXynPkbV==t;4#*5$%Hnpr>gS?GUokU4RFRMgZ>6$_F6H z7y27{=L@}1|8qR42XPpug!hiIXGL^EBpgtFVI7p|YbCE6K@);yq~%SME*KPSy+e1|4gK$NVR%xQdQ zO(ZyN`{FmGMPN`C2CFahltdN&JmPl;9_m;=hF~FcHIrLQvdu}Y;yJVc5^G(xQP_cY zSL|Ha4pO({8;7H0;AE$E_YbI)v|%AQ%Qid(+~`bXwCWKW5xS}$>iHGwIhL%y2x*kK zik(`y6J?XxBar4bHs&7))BDGia|LUc)n6bRFxHG+KI2=f8{?t*d1+Q3Vz2>$mJWw( zXy``7XMC<3J3z{cZcv2k@Ex+Lp%$d&M5r}yv z*dR?3zWxf^(gYHQ1cTt5TxbTInl-D#60IU>$%?)tWDFWHdq_iOV_wJd8kPimgevDn(2AE z*?+qpSqIG+r_A-Vk<5}jXGo71zUA-M2t~&qMqgRYQ;@(-2=w1dE56an+oN3Fl85xLVlm|rFA8XJTrl?iR>G} zB>1^iLAf^K0Hns+O5VZ5>d7+ExP3Li{vy#5jm&hBzz!tI%{*Gw75H0@zr~oQ zXQDsxnXEpe)TdZ|`l(N@`fyU@^sYXfW)b6jj1T8WsnK0h$#1PcpfXk5kkCVq$mB`= zI$Zkd_fdWvBh0I;26FUKpz5KSR2Y_@VbgV!ptQWmD2X!<5O!oux$Qf zQYZw}p;f$y!lKDH~gGx>Tuxl^+Q?WdSL9?2+*m1%hpof9hfJ(DkJOx~!H?_l!jjmeib2sTB{%4$sB zen^t1F!|7%s+C6$v)7AuL#t3LRyW6>T1IOrRHTy|uLCa;enEvNGW~HCp2_fiDqPO6 zp~8P;c!3H(&+yGEypQ2&Dx8OrWL>JlI>V(Zd>6xR6|QEuK!x`(+)ITU81AaVU7(Px zb}HPD;S3cnVffG+Xwd7>5@A&6Db1tATEinHpyj$@ZIKespQ!8FX z`fFh>IIK%hw@|PnxE*Xr*KR)nm7@LB8sAtuROlb9?*JfKUqN0#?Uj%Dap(g*^?__C z<0TuoX1m-y(LKq1g}ZFhdh14*5XjjHoepv7EFaf-_=NKyTUL<*9~K4`{45_=KZ4IA zxSIms!oeRZ_(Xvj3y(nstaw<6yA`-ffj?#LvkBg z?<9B z|47%(l9Qb7Hi>$(WG!3h}NU8D;`+en*m}#%@>UZDtg*@ z$Lc|M@o%fyft6s>L^TY>ig2Z(`(|n)@;CG z)Rj)uD-g(!L%%Q8!^X~^A_-W;nfu`AQuhA+?QHQVIrMwc2r zxWSns&uH)KB9jH9V$IPe!)RupX)@#!YxU-lTCQ+DB~wHvmt zy25qy_c1-(TlF`nX0C_?KAq2!83~VDO_CA{dI{@TS zQZ7oGf}nW`a8c9&ecuE-ec^T6x{|ADvSH#u@Dp8_=#-nk42onuj)lB zmd#29I@{42Xg@^TtZjiNS`UCgeszMMb*iJDp&*1@)$FKiA;wnSDu-h^t5;dcPEPi;HgG1uB8FBk6g?2%wU)kbt~TL%Ja4Adrjy+?5m@x43HZtF1dg4j!dpL=A4p zO3*7BPhwidhbVGw4uV#1s7APAE+As0m|hTmMFe!akIal*KqGP@OLXDR!qP2R^cSR} z%0rS>oNmY3)gU6_H2CIC6Lhma$i7KCx$YDA* z6{jae*vx2obo#h4<2{PKZ=qMfsjoiahjif1Ff+DG6x=e4>G3)a*I!A&iqJ4~M2hKj zp#$gE$;Ro_<>tq%kz$(Tqo%fDjG<0)84#(*A%nM@q_zkz~7 z1rNx_wF;l`5*O+}?Nz21%~9aF3j7qoCc#4$c!C07s=yBs{4l|%1Iz(Bb`(^Awt78Q z7J+m0(7a~o&=WrfWvH<9czrCx3Xzb^k7-?9fJ`@Xpy-+HHHxFhMJSCt3VlSPjVVF*AHC11#emVx`KPnXx93WLI|!(Wyv4^sxjishUEP zVpq4CsP`&VKLL%^oyI6jUqhUk#EE41kjQ_aTqHw?Jc$h50l%M61R(bI|5w7S`e zB)huQ!xj(Sf@s5z1bU*FFD1pU?(;&V%{-~ z)KJ07*ZFasfLQo%6x4+)nNW04(hGj4z*yQj!m9`_Q{e3iJWGK;!za9&;9>=SU4h3c z@H&Dk2|h)EA5!4{Dd05(H&ftw3fw_~%kc@nN$@{jlB!Kq-~*W1QF9tV;VObRC~%Pi zf2hDi30_O^(+b>8fh!gGbb_l1zC(fIl3wtj0-sCpdV;T3;N1#*n*vAi32!7=SKt~2 zzFdJf6TFGwUJCq#0uNH)zY-iFxRnA26}YPc-$igO!7&(>GIA^8{yc5T_>lo|(<>grM`HZ-=8Yp^jeU`rDC#xB3vQJX8O+>bw_m7or zabvb;(fq(CTzcJy5Us+AYDtRm`b#aShYCLX8$YfGV8De7DLXGc&xE3S1zxAXa|s?x z@N$4DS`>$|SjQY$+Y=43#=wi=HLwyn4`$#bqCP6Q{aV3s>FET;xxe7oS|SnI?T zZ*`Ge!*bohML7u(~V1DfA8>`m*nb3`erU4%W`IYFzPs zS1|%Z-I@fv>5VmLWCu?Q)8;i z96hptctssl)jF!GZNVpeGW%-JUmE*L?I#EK_VgNYh@Dox5E4;po}Rx`7N7SZ=EdSO zM>jmxrRMc{xxP?ArHEz!b2vv~;r^A?xdqBo61f6tfzKNW+<-W;JpB$uG9`Nr#RUbRFn4^*4v1w zsyWe&f5OcuRXbp1*mdB7KoGzpuBENLcAa}C0CNXff0WV&%T)Rx%CT-C*$CLi;fG%9 z*>oL!qS$~16U7j7wMQ(R-WJ(tL?~zHxZ@xA%&A$yhIrs4-5dg@PtJl!`7^xIIq1|`80GGG1c^T5AA#Buqajrf zEm76DR8?aUV&Ni=tJCdjB*v9LmjW{LMy_@JaCPspP6AySpN*Doo+8#p5nEFQViQ_} z*hkN(HVHB7Zgwe}fVl%60xtcd?}&4@XnVErWXnon*+7s9&thdBvhydj9=tbkw>c~a zRq2tx(^gmJpv`1b8w$r7c*2Rm&9_;qkVe%dD|_*dTNVk#Kv@H<4yd>{GBlSGhTL5DN7Gbe;>u`` z%lz(&&}cu6Gy2%>@=%}0XXr=oLtjFo# zjtl`~Y^fIKNvP;WVSB;died>V4#)zfP2ic9!`0s&9vb+I-u5=lI1Q5u>|slkgM=QdvMj5| z0hC*@6GaEUYn1$kH%Ydjy`p{@=j$oxAZzzi_GqRzNn~z-*BlDrsrL6(Qif?amd-R| z2jr~Q;?873&fuPt={n&~nyX5A{sn1+AF*&3%FJzcDfxAixGUJGKX{4>R>B8f<3}uG zQEjap^B_FD=v{0`huFN(5NAc5u6fq`%v{Ve-0>(t*RhIP6^5$J3{N2tyOR5@U!pA9 zYdj^e%i6I|3=h~#$fp}0Srq`gm$fLb_MhwxjZ9m*Zt=Ruv{l=JhfkW_EPeMqKdD-p zzwOwqPB!@)Y4RRv^1F#9Z&OX~hf&KWUw8(na{>D}5ZKNmpx)Td@4q{$osR(gpS4q_ zdjnL(-@I7JqsSxHyS+tcAn1-?oMlwQI`x_tQ`@Y=@u7dtC-jJQ!mTLC*x>0ky$h|< zr}kqb#8uTCWXS(E;97~X``1i6Z4J3qums%=rkw}gg?XCD8uXE*1D}Si~?v+`&P48G+WN=Ax|lkbe2qv5{4s?CRZs zFRkoTIVI&{@J=`Nj?>Li*=BK;F+`tkjP*@7hL5O>p*^vj$PgX)Fw=(koDwl1tDr@|k{eaN z^@xQ>!8EW2+4(pHv|+v$@sVhT~GT6H3W zXzO^$6-DCAe^Mg`Z)YeUByEoQ_ta&6g{bR&4VT zwz*dV1tJ08e;mGllV?w`OV$Ht4$OAJ!)^SXf`>B#m=s2%Lks?j-qQ~F|~ElO=qyMb)cQL%9|cM)F*(2Ofk-~dg?JR z>1JSs^*r)}aJ|>iz~%u>R}QpDQPJ*VTDis{7S@4p?L&*u8|TZqy`Z@Q4}THh2~@9J z0Y19#FJ#{rvF`^+-;aQ#qwn(?`#uYOuO<7w^?t3lXYYQkU6cObB}End4kH`VwjQzY zKI#8slz28vJd-8Dyo9uU3=;|^W~(9=Sk3@W)p+*OZ;~QmhAN@2D&b0&ps~rn{OQ+i zI=Y10jw&JRm?adb65hs0MH@uf_GSrxvP)=`;U#-53YPH!#n^ac1_xinvy##l@n95# z0QbdD#Ed7x+?D}zNUm;F^aQTYJWDtJ#sgkHFDVN1P|JjaS>0{Hd@t^rorEGPzwkwAO$z9 zXG+|9x(&Zi^URvGY61h>u%R!pe#{UQ4)lq+N{p`o@R`y!kJ%^B9sDIDFkH=0aBqhS zs=-hwDC;YDO<>zWM4+$XS27*J0U3c)P$Su8z}}0ESd~E3%9mw|#U3aYs{L%L*yjnk z?xN*hSPM-Wa`|DcBOEv_bYZ+=n|AlP$Y!jIwQ?JOk8VcG_aZ&`(+OJ8 zL_nYVmi|Zmy1En4Id{U0*VDFYRq4)P!v$J-9r_~JP=v$TFjvU#Zw3JYeFMum(LG?P zZb~Ji&tf3sxF;*@Ha6lAEX9Dn7rjUm=Nk-M@+QK5WL3t@HbS&74%@ZrPs!y=j| zZY~EgrB@e2(w8$a;#r)5j~E=P@tnq0$w;kmq6R8Vq}-^5^cM z%HM=Fb{5-=uTy;?D5Ui!hbou+f5D(IJrBE$Ostw@)F2kG4K_5_?&Kl~!ge)K^r`7f z^t9UeZuZ}q13A7oq0$`DoR~UGN`%2I32p?pD_N9?)>0JiGk$UhFUZg;9zsOc6mNq8 zsY@eqZ+ae<&Syp##v)p0=>~x+(j^4<(M?r<$Z4I~W5zx>2MZa{VzFoLZY>$oAL? zjj}DfjHXi3Uelj9;sG?ZKJGfebb&q!YN2r|4JX;V*P8cTUo=0-f|GIgC(F*ek%%uy{ zxkJ)%oDvux2Z!0*HlLzJjD`vxyt=W}2Q6loirb0~i!d^1K-CFSxx_qXJqOp1QUi{Z z{{5BrqR-L!ZbrW2tymisF{dw><1m;|N1r(d&U@HoG9UPd;gDhsE>n8-4_bc_t??S4(S3oJ`nAXS~-l!ep3 z<#PXkR`D9FnCMsdFWAr`a7(fmTN`o>V!{~qo9;VwmRMg_nBAFjOz>kZu@N+O$tY`0LLXq{ffY&JS ze#F8r5Ns&$0}A}G0zX9XHw0g+z;hLNfdW?${4K%56}Vp3Sp`=paF0I#JUA2JJ_`J@ z0uNT;O2oovw*c6sz?~KGTm`-dpKuy;e;a}#TmAu*?k@b@V*hQz_g(x=xBp}j%%fFY zg`URk-XEu+spfDT8iF&rRQ@H* zFZXSi+4++Wfl;N#J095G#un5DMk!bS_ttPqxp%!7?mI!)S?k;mGY26r`V;@$Z<6c5 z!|DF)%9~GQ$f;F4Api)KV{IS&XC3^I8fbmwzdDvuVqAx#o+N^8tN6m6qFkm9&%q5S zV{DF5Vs-wkZ1;vI=hdT?GFN1#JQoqdT6=|W18A=&(R zjczcSe|08&qI6QhatvdL3}fLp$m=VXDPCjO(;jZc<~*l08Z)Ka*ksPjM)#Gf@}{}9 zmyTGO(%>QRgjf5sO0<_|XUlcd1J+5Pl-P;NU%_Gux~tOWb0FRZy=v_&_RQD(xiz{`rbWgl4 zzdCrRxvbmgxOjOj)Zs~}Ni%zy+vupeOs=GWL!St13O>V_LU;Wc`YRk~rC(aw$bw;H z0o;Sz{6%2F*@Yu==AVg$Vco($`B(u~o9SUxy7R!2sxAvUp#J`J^k20ej}*S^Hmc|E zj%8G`p~9o9&_m$(ELGez_Sb7IQCzWIoQ$M#V@t8pHjw*$9hX1sk+f4r5=PZJvSkcL zQGLKyQaCmHmT43uCnjo?y8*hpjXBmCJls6cRyWg~UZX`N2S6-4c(_^MQfSw7CszzD zDmmz|Oi$g?c?8N6)q4*k9Nc(}so1a~9&b_Fg|;QJK#ZrG^d zfdo$lnBt@aK(;~SjlHjx0}%^&*j|tv#~Ml+rC^??aA?ka7$LA8u-zrye=Q7zHPZRj zb1z57XSvO+;9+f1$Jb$(LT@zl_ktP;obWo^7V8>3oP{v8X$(6B&OnRTg%cUCvpFn-dj3vdsB{l41eEgwM2yRj}qB;mcyEy>PcIw9L4pv1N&)MLDI$ zyQRhkxABf_DquOww;|b!<*gAA`Z0ltCYAIgu>Ez$$S$au31lO6iyd_*vQJ^6L{+hRSY zmzZ)a4PWzNv_BritOsQ5mc%zfI?VA~v{jkGhF1Qpa;)~&1E{U4<<0xH<=gzZ2xEV} za5K){8G(9jwW3iI@oWL21J`YkIz28WgkOXEr7K2kgsWwu!%2V(epw#ZFPBmuRblY%{72mO8{Vw=P8}zd8~G zcjX@x=TW`)cVT?NQ!qoIE zjQ89)9Klht5`)xdF3J&=@FXJcWtwMcU$=QDYl4yB9|%bfOazDOjY;pjwW=R6omh{J z=g8TF=MXjq8@dN>!R4a&vB{*Z#wgom2Hv-3m!cm!xsPn5XHBr$&KdQ3nvP~aSu=a6 zJ0kSi)L0?iTRcctveZh)xrypv!%4H#-HSKwRvBCRGlC7dfjpLhzgjqRJAgU}ld(;0 z0^`$?rC%ReCx_XF#38g{`R?ze_{`y#Q2`Ac*ke6pJQo@7zgx%mKa|u z9P0%j;CM#tK~P=1?tLMv&1tnJt(xt4Z`M^z|NMxg_w-*JY&c!3Am32Z9#z_pCC2A= zX_He+y8@*d9!xnX?OTOo4F-bE7^+m$^M14|rBGY_Py97V)qf~44zcPd5LY^5m(^Zs zzA;gAqFDQfv*uRxV_A20FEQ2!`jCOzYOFGTvfc-{syhl{%eRe9mWx4(OR>n~t$fKb z6Om%LCLZ8a5j+fi2BQPL6kS|{Zo(qtB<=QiB4uqNsab8&3N#=#2fHX0 zd8oT|lYR6CG-q8Q38)&+;>;R_YWast5~_rxRogEN61zko4@m~suXI+%+pr$e!ojL}*&jdDfk5&9B z)yy1yy2rShD!y!lyNU-xqPg6RP?XszjSY`Ij?q2^Jponz04y0OgSurH?Y(H)Ok2c+ zq9F=ASAi!W7UnxD)=&k`Q{YP#xI4j92|gWQ>WW~z?`#dHl0f-!&@;}-3~Ss3dS1#o;ZL@jX60Wa#|3yAbTgVM)rF#i-F3tZb)nT zUQDK7?XuDZ()eD?w&c8zSn-80&Q)lJtZ4s`p~V1i=v~tj)PK z_MJ5t%hXu=DjG0=S3}7cS0i;vrWa80-mfnXw3wI+lXML z=5Og<6947|92CHw|AOsM8$ShhMC(9p%{QD70K`WtUyT%y#C(V8@fkz_>D9yGn13@i zpGwX`LKXjuU03DAhhRexa2W>%SvF%UNQa^vF#`V$^_3WdcwsqSkM?-Y z`8c#4DmeLlIH~?XL1cn;=mT^lFyl zF_-H#yI}*Z-e;bH!{`q25;vbcxT+6w(9?Eg2iJ8w{Vgf`6?}Ha4QWWQx+G8Wx+IUx zUMs5QP2j*>4(W$+tY&swNCeM+Sa(Aw#X4e_4f~&gcG$zm_K85S0|iNeeQRFG)5oV3 zQ62&vY$&(6WE(}`kqbpkZOQ6r3yEbH#bhmao}PUHh+@hWsz5_M|xMX&jv$C|+7j@KDkI9a;tl~_Xzbzkb@vk@x zc+B)DqjEfE4vdSDxAWu5hIR}OMuAq>Ta~m@0l`~#fZno97KayXM&{B_X}jC*6*(_x zs|frKvGAuHEFaHpB+#MaK&7Y<4|bhL=HfK8o%tq}dFv7>{Z7ybf6dH~*_l&Mi(SsD zTuhf6E_qrQby($LyHA*v8JGwz$esv#o~QOdm8MRLevHFYm6vuV@=kv{<(!JO1ZOR) z1|WqcFEIpJhk~K1DhCk@|HP_fqbgA2I~4eI1>Qw)Gg{X_&S@OgJanwikRR}uaMN$F z%rOVt@k`{OEBI#OVFUAW?p0K>r|AftmxC2IP@Fg}U~CWUMwM`gJK-^T0u4pAURunL z>k-7l@1~>N1$MdY8XTdEV*uEkxeAh6LMyLYf?1B^7ur4S7?QW&OeHHjCg1Zs?%PooS6^ByXKg;$#FF8by&Z1L-hqOg~ zpkDm_d6ut8`JPj}%@-^=MDKE7KqRvT>JmFGcql7yhH^^BIz=+mkZ8NAPY51z2C^cV z&5?vwrh20x&>hwl$?C;*$@d=;HJck1b7N{~N*kw#n_&?L)2)SM%zL)r$kHVj9;}28# zTNM87#2-iehmOLZVdI~s@E=zAV~Afy{A+D|b$P|icoeHv-ORF{M>>ZJROBwJD;mmY z)oMP^)n8{5sUomDpw}FNg`3?PHgO<*Q+jJSW7YE%X2uAigW0oa4Wz#cy^Bo`{AVoy zVL8BVoo5%F@Hrjf4X*=!I4g1HJ8nH!Ly_dsd5AjS0~yaMC5$N%bh}%UIG=m-tVL%v26@!%L&&SO$S+e=xq|WEjCaJ zVrn*0ahXvE63wS!YGxnCiTzEni~3eU(+Pp-RuX9HM;gXy34RN=F>-{;z#_axCf14Q z?k3m7?DWDtci z-oU)C7e=@v6msR|pxnZD;m&sA6`_oplNcq;Sqtbk$V&?JL&#qW^yHJ9K)amM1RAbq zF-gjgQQ{gY|02jqXjxv9yf2^DgtD_&6KL5PO`xw~v7JIWr(YB3AMzWa^d0R^yexx* zfKUM{BbwR~@|sfJ-V#kR;)15oF-@V}`3I15S#!LNfX~dt zK9g4d1j2YYiI16S<@XT)n-c~`Z=EOFFYw_+l9?0yDI?I<2W^*M?d933^w>4|)rIsd z1?pp0aJb})l03uKT?efRZ$mteQb}h(SCL8tzPNKjc{C17vZn==u32oSB8|5q=(cCALhx>=EiyuuXq)f4UR`X8}V#l z$+#nU7t6)@{$OF6*LYj2_&J?%t^o()NPjxk_cv1!vSwARE7f&HwK;x+R=!i>obmB) z3Bp)PXce27h@A{apmp?H(DLD^Gbd!sg~;j-4$cVRRLw}(hB!nP>OiNVUbt1Jc}->} zUm>1GUQ8;u@5jm&e((1q+{+HnKzV`Z*zxB|$M;M2W*Hna|FYwIqS~>ZN&LRRKX&g+ zbt<;GwfnFLg0EScXN=zXKxv>o=px?3-E0BgV)z>@Cz8^Z9YNcA}R73C+QQ*-B42u8*NzSjwn#=Q*?*c=sga zT9qt!6sd-~-p&M6-Cil;mdi(0d%Po%FkN~9&1X)-9riYPW*XMB*Ud;d6&8IB7^UV_c{s_)0@L%@hzu@g zqc(%BgE$w(HF++zGkHQutzfa{WSse$R*%WwKbIVU=Y!5J#ewI+czniZv145$!+=bfM5P$R7&tPPn&asA*S!791 z+{EGfzk9H-jcliK?3Qdr_s2A%nCYidN@LC7CNWE&g(!F7*z_7BV8(-Is0}OfSDfZb zbThS<9^#1h)KgN(R(1#Yh9!{A=O>Y1mTo}FgJG;fY1H{==(yQ+enw!3ZqCAZneOB& zdln?Th=QXRE_C`m@KPY5V4x(-at2O}oo!zw>Z`62ozI&Qpl6h_UOaD~)mXLiYrwbI z8Ep4y(wlAkI5&1sj|@}(4m8I0b6A(b9g7C}j6+e5Is~KKhDK$cgzbYWJS}#S>rq-l zTWJZ+p275@as|FafrsA!@OpyBDR5AMuU6oB@NR^k<7`j>uriy9&QmBQ3S~dc@^Jrb zptNs9X`xU~Q7H99DJIHyS0}0L5KFD#$V}GC^#W0RMA_1a@)w1&Q=u#)$^@c3XQRlm z1lvP6qp61wlhYs3gS@@AoL`x}%b?K3V7?dudX_M5FiTO};8-MeJd9w(|A_Aje3#Rc zh>KyFff4AhrKRQqS@qDzba{$_d@a?Ah%~OA+x|!7O1cJJJU}K_97j~0g1W>qs`Bt5 znd>&%3a|xeh)e!RVz3{j0FUyOMZXigA)={8f?s9=+hTYY+xq#BC?a+O9Da-ON6%#< z-P!`hn-~s%O_qo&Z;f}4{A?BP9>H^zaZgZ)uS9UZ3Sy*XT%&?3VrM3%c&W+hAlO*g za;q$*unSmNXwnL=@d>sPpp#uf0}uYg8^Qh4j@Sah%o?b)E>+d z2R{y}h$0BQ8ZA@F1~9d9zD^9BWsE4(!Yo~ii9ytNOJ8AwR>3#W^oW~X3?Uol=K8suAG9!GTO<*%V8kuHA@JweJ>}LuZd) zEU9&pS_g79LIIagYqd)d?_CG-T15!kaoVyw@xOYG59hF=x2D9P*rmwmRY(+L2IHYS zibdyGm*Xk@W>O$MrRI zRrm&Kt^HGyy04!?X{JzKz6mIw5v9HnrI|w6b)8VTn<(E9<%I+a+(v!vOV7~M0nY!$i^#+gjMaCRUZw=Ub1Fyj9TGB|GD1$l8LxIVa` z68q)fA(5ASHMzo&GKl2>zprqn)8AR#6JJ`pzfhF?JC^*!vFhI%1Ly|mH<%n>vOMb> zs8y~Q{7=M+m;A)e55SGop)t9YR>3S^Lj-hxhy0yPPVOYctsmv$2ImJ@ z7RNGHLLDM9>AK)rO46JHns~P31<1mwvzc7b=~{kVpH2h2J9GfMznaX1qD%!oe2st~ zn+0$l!Lvy(OpyTUpbhpwa>l06j-p@hU_ zkpj!UpLjB$d?$R21HJXO;_&+3Wm3sgN< zioNO#Tq=_;ENNc9C%Rt)Atz7G#a4#K1{0o#Au6Tu1b)YG>n|0i33fL>%L071qoN{GZlvemU;7Dm;s!c9l}k zExaLal7jKmrH@X6q71*m%Jx8I6aEoC5_iDgkNWrw91_d*nde%6fH+b518~?b!s{#t ztW$AtqKPvf5->(lKM2(T33%g5P~T1J8z0Z*Rq$}TS)cWV65JGwKL{B196Qzc(Lw!VBGvSc$z z3d>W4eRP#Dr#oWdHt8tr*~?Q|pV&;~(SAzuz4%e3Z7_*8VbO*cZ^01f_G0Hg<=nwz zUa}R#Bh2P(%$nR5G&8y3&?_OjdSN}5v$%JT9})oNaWL<;S(2^{hw0W!^&Y zrvSebYa?X=;T^5#4!g+r=9~&M)!zcw;DN_lrv(t9Vfqg1QFBYmf%kP{{}e32Uxrmi zWOPMK=(8DtEXQ_HsX-ybp;1%gwx5YpB79Wcn`L$k9?lG8=@2*gXq>?d(y-WyVb?Y- zkp4;^ zAXkaC6$CD^w#td5K@1$R^VAnBsg6M06w8jJq01e(Ifzs57s3wZ%8K&Jg;uRBscL0O zrL}WI&im9W$=$3*P(>DUXv?^bm828>S1NBN^~Jdj++o59?9SHrdI$gW zZ|i<-qP++`$*mTfu>v~)R-HiPSUV(;S8iiwdhGmEJ|&l)6J_aHOh%=wJp-=WS|{^z z$3^Cl1!6fD+%E=~>vE{S@ZZRvtH!7B$4c;L*Z(qqdZ5X5+DkTbdT-jVU0S1^RgYD= zH^HEujSNazl_z8;$&*X}3!apTIa+W#EEvelFbwu^HF+{>oUPw*8%)kw+7G&E<=r6F zqUE?%NUxa*;Ta_YRAP2=(;;-%4F=JkNes4CWX}OF_ytaKwC%G;+o?wFg9qaf zDd-Y{djmF6Y z!yvkt9sHlj)fvnSxw`nJeW@=J1QqouieOsKFe52xBGDtaZ>3X20N( zU(MkhEJrwptHEN=;cpe^?suyrcG{|+sB3T%ruVx2+GW+T6Y)Yh73?}00g{#&6v+wt zvO2344fp~0bbb!y4D_qfAxHA~5=!GQ{m`+8l~z00NZ`f?W5JCt$ceeY1n0!w>@P`JGBXG4%{&#y78b!YBDvKOY0iGN z#sg?uiWeaW6HqrcSvhDQ{F$=aF@~gzS6s5|S<3c^xRtF5jd-4D#Qdbi_AnQ4EGkta zHocb@9fPuy8LmTyW1D!<-oO)DVyR$E{r_R9r1;B+6uv_@I#w1LU13sT-GTepmu!PT zyrZ49Rr}L=%n{}91(1dgXYy9uTVZUsx0TEDbLY$Oy%2aEUwL ziQ}+iCyT(XfRO`%n>HE(cOF~=){Va72wbm(z^UD4k)|)(HWj!JB(9b3mZ2&r>m|v5 zk@OSt;2N%Z;`zN0-1g_Gra5*{(F=hpeQwOjYP5jFwel|-1#F5W zHEOgmDt>H@76i~1u(=4@0yY#?f<}9+8dlO#QkD)ZJ`-b(wgn7$_X!>>Q*8M|!4*3E zjS6nfGykQOEklO?hotN=k+LG#X^^r-wv>Ge0fJckdnw!0C}l@0w4{`McGdr+l+6}X zvS7z3k+Mg9kg}U8WzP)zFQn|`R!yZ$lXw#;`?)1i8l`NniXU6bx+1?VW$h8PrEE8< z1nGJ77*h7AQ2Wny*?9V8{>?PnM3?0u!~a84_NYkNhf_q#79Oq3n*D#%WzDF|=8^XQ zm@fNS%(8;nBSgvuTm&gwPAPMHjw5A!k4JP_k49bgdW)t~_MF7E@_#hyvil_o@2RkF zF?2`+RBVz*-GIn;O zjE&D|Dq|jrH(3FkElG`0BeOY_TVH zUy#xh>cvj(tb8gEg<2xl7pA8NpJH!!N z0LAICVqnt?2NP3PzU+wqn@*?{BeEbgR61b{^lo@RJK^%8L?^`kr{QuY3&uNLe%!sK z{|W9WoMIQZc5~$wk!^+N6t%&M+C7McKZ7x7xl*W|XST?%<5g(5#uW`j2Q&nD2Aeg?L@#?aijlBzSHx9t_qF*-73ayCYHT=Me zDjW=OL?02}WCpI_=~>jBrw>~M;J6B`kQASJB|J&<$gN^4g%nq;q2~$Ji zD5oZGvCG2Bm;8B?DGzbp;8~*LtXPL+fpmusOM+6pN=BofUF{p5nxxec8IIu*Rhx$R z$p#!{T%jAS;JI#c@Ej+y;dw;WaUA?r@((B4@HGB599H1*IyojR=SuAcxjv8v;hF35 zzK|I?h46P&m}iIN6x!8~$qy&s^x%R@BtC2P#~ce*&ow>IqL8I`pb*71IuaX5>8d4P7fVY{K`eX$TT+Sp#c1dk!=<5bDR5`R!fgqDP=Plo@bfm< z4e)6M-=@INC~!!Df5s==k>JY}c&P&4sKCn*3!g~vAO(I_fk!Iva|H7}GOMcsU!=hO z6!>0Yf4(q#)<+2{`PRiq#dA8+k%=yP^&;tmVT1W`J&suTA@ZSvYUsTR+*5%c zz$d(#-~$C}sK(z7#+%R9^r;c#ei^$$X8IDDPiLr%-@zgR#DdKl{vB1on|4MX)auO2 zcEr<`8YkvHGIg4_;*eoHuovPnR*`sKkr;r)%7AC`bm#s-yx zNjQs)$DWT^_oHN)R0n}5E-tRb^$`B1180*z;z)HZNb z8A4P{jEf7=zCWN!GKCS+RUn@F#e7`;4sZ@r2pn8E1=d~T19}oi*5%r&k~BPr(>-t- zUPfA;cFXLkprDa^nx_9Ja0^n(4u7 z-6gq4?4SLMn$5s+Q1R4~D*F$=DvN`j(7~wV%5qF^Gk{WReC0I<<34+}^?RItl!-hp zb;PvYLaW#>;o@}IayBXS3R*B}sr*_hvR$sS@$DALQvNUoj(X^~Eow{BXag@O^h8eF zj4a8^O$0daN{XmBf}AQPJx{(y|2(NR(o2nLsQN%m@YW8P1ggVdSVVUGs}6Uty3x;2 zCGJ0B4=BkJG#;jSmZz4Rk~Ui&41z5qq|1V|G{6o&Pih}(?RN(cWdz3IhZp8Tg4jWP z&p{sN3>AGl3?nA{9Pt2@-;1(fnSS$oRILyd$CK>L;?Kcos{^9&`m3`Q@{=q?(d5)3 z{r;)t49nQy{KX4Ahj7{vR}1x)HU2gj8D7n^0lbdgEK*~W*D4BAC9RcKafGDJL^HJV zPNFAH`Y-iYvIo1W+S?T7+#EJm@Y->AOV+6%}Nyn3l zuvN48==B*wtqI9kb0SHg_Ty?+*5;i9$* z+vu3xCoK)&CFN>=3kpV?z$uBmW9+;I=p1q?)`wU#iIow+5kGZW4vPB4ttbS)*3<^! z?{H6>r)F`|#N(jwgICZOi$!0YuT}6NHP~iG&4thwMYZ^y9dA4W6V(}rfx7z54dB<} zIvMYVqjDq!t%Vlihqp04*Q{1eI#tGJW}qu;!d?Ml8&J0uM*hy|7DQCHj-O8f+(miB z*geL$?2@MjU>`xGlppoet_fj)7Hfe%LgjOy>hjcLFjV5ePapX5ocsj@WR`PA)J4-U zq6S0cIm-8=ZmN*TJl5u4j&e4b*%NINiKB2=RKOI7uEKvjB;BZV?V1E@n?>_}qBqUs z;FKNx5fR0M(NZcDLsRiqFMx@NM^6V?g`6kIzvh(Ee*N=Ov=_|3x$fbA?WB(!8c+^xSoVv6&9}@hq0(Vup zUsB*)#KKRYL~DTpf1q+NSKv54;dTUH0Whs7S{67wIxI(@y7YEbR1Y3nG{0RHwS%?E z#M4-mu9&NMso$9vUrY@9c;SVL@Og?bD<6K6)yl95^Qr~kyZR98LoCu^V)%X34Z|=g z@=k#DniA;@pD`eIx=M_X#WPrVF*}z(EloRO@1qJS-)GFsi4W=0^dxvoRfX3$SL1dQ z91!6zpa!km`v~K{b_?U~Q{ZnA3x7xORDi{RL=6+Jgr2gB{l#Y%-CBy?G6(a=sKhKf z7Yq;$dnN)99QA{bgAw67KK!A_HDHRvkK5O{MQuuIMYT$E#vSh0aFm#@N3zYeSSMh> zSJWbdx*sOVvqLKRWhC2}L9DAh<$L_i;;r$^J*MY1zLC`eEpaT4wZNlUfzuCeH$1PI zo=VXecu2><4?p613N*H%_s1ZCzR~-{%8ok1*G&~+#ZZ%99pQs2=L10YkMqQOR3)(A z1U3X$N9Ln`lqbL1H*i5cpM`AlI*`@w4Cw-{2e|%&af2TEurIoxwfO&f3%IwE-Tjz# z0Uih!kNQ2x8i3hD@=(>Cuqu2ygBe)^Zy&)FFEvBlS4J;@pfn z_mn7M&aHqBY6{JaBytM$B#9z#wX>GzJTbFLHJd3p-V1vIB-)7JnsKKe&t%8THWKH!}}St@Jnrce+n}ah9lUF z;rOjP{yxqlSXkl8)g=h>aM>>UiWx7Dfe5Rp}_#N4Xq~AM~`_Sa_Z~fS^_=?3vTqGr7UR&G{nM z(A?nMK2AC%;Wiwo_Y2_1*D;Rm%Q@F8>VL@>4o*fP;S(_xSaWUaB1mlRX~B6}4!ZYt zS!?8#2|oU|%bIp8DozGB%Fdw+gv*yGl9{aVb>#A?i3)S?;6|u{N^%4Jc6ETA{jOGi z2@=8FkZUtuWt9{U(eOvKE5&dCT0bT>Q;FA$1%X6PEb{vRz`PExkViWV)!FT^v{v^H-YuRXDVTOCD_euWxG_u_{z2_AqRIMQ4N1dC7ofwxQ!R* zkZ?{VtxqKE|4JovuWY9hF6IXq?JC==gb{}YBXEigmvYrJZ$g_O_cFx7tHB7%JdFuO z(-ino1-_Bs-2`6`u&8}?#yjQA;S!WWX`as~Ct$0ef`t`E!&OkxyX~ZUFcV3m?dTq0 zn4aCihV(!uoP_l3fmT-s2R(Ztp55%#SbJU$as?OcaU?;eXAj&Dxe+(_(H(}nAH*c( z81YA#!7#A*Ku@7z&p}Cr(AJ;{mZ0z^fzf{KVz@m^O& zZR@4#XIrm)R#B;OIg?FNV_pCEuYWCea`wzKGtZux zch7Clo;|O9_I?2t>~DuniJ(0Th4ltzb7>hjcECg7Wk7swF#-xGM^vuVJ&p3pi7QL6 zLVO7~7U4j6W%bes8UoCxKMfw<+w;3IoezE%(s29SyiZTNo!d>Y*@BrYA$I%~pnqS`L_IjO?pso^?17~-?n0|;_25+AG>X;<&$c+~+~o{*71SeZ9&{4~G zc6H^xgCNpnJ1qDP>dJy|qOP1bMC!`2iEm*%f$DU*3vwAp7bUwPNOK{`y)H=F1v!mD zc4Uyrg&-HYAayQCEraaEAbS^r9PfgRbU_Yckl_sS*?#%7jB-J~;eu?(AY&Qi4}~Ca zPq4{-8`T~;`ZLg~$qaIr1hLz)=}>wCtI1)u@BT;kX=mHUX^6n-cE)DFRo}yfFqZaP z8=cJTba9>T;yMZ~%Bt@(t}2a-gLixhGu*Y37#258VdKGJ@dn!ra3!^EZa%}ElUA_^ z5p#IE9!_XGSBvvys8)1dRS5a0gk&p$q3Y7gH5}g#9EP%d_L55MaKs_*$R!Vd@=|Hd z+9fmA;NjTrQf`&QV%Ml?80Ws|#<}ZI@G#EhQX)L5>!&LFxVXBDAsV~NsAroI*jG+N z|NbmC0KIKOZpXPBa@(W1#x9t4v2pjPFta&ve|Kv~WAugl_R;>3Wh-U*`M!PiH(X|G zWw$LXBBaLXe%|GWt;hNHZkH~87*5g$9mqMbw=ke|p9vM6v4h<) z%8qDCr$4-;&?)W1PH6;`GEret)(=+4U_E=MKBap5g0CXgvk|&4srudDvqv!NUjq9EAOatrRE zVDp8t6mQ{Ie^h!jemkLLev2jZFue0GxS`AB;OsvxqY=!%^uLTAjL>~a6VGCSGP-1M z3UgwIeV;h)LOVj*p$<*gs#_`A+3@atOw^4Wx#2`XKtm8UMfoV4yfS*1$c_Drl;%H4 z$gAOG%V<${Zw{6YvIVuf9MSRvl0w1UVr0~3**h4sH2s%WF+%qxEx+td8E?y80wXPy zz0vzYKu=LXhwt@O1QbGSy$EQ96hTiwk4VTq1oZiy|G9v6#6wvB1@tDKeEK7x-R5YYP+&~8X+?>f z?ZOf?#16OrlY;Z<{I4RHClR_oa^d?uG+JZOT0t&yo?MQXQu1GgkV`~@*TPBU5~f^6+nR+hsRx{R*neJjp64tJdeXoUyN~Yj zX9(RN89i>Nf5r_$vjZ8eN9A922xas#27y|3^b4?T6J(P;N!pPs=Ta`YYJu&DuzNNn zTXj`cV(o7~ScdV*lT{DDa}+iw-#@he)FJ)SWRj+9lC~HCMZep#uc0y_dmH)4F6j#)eY}l-bGK3ZniX=-UMbwh zMy~fX z`)m)9qW8J`5E|nKg{`pHqs3Siv-ckjNbeo{$A^EpurEVWdJ*;kQk6Vm&$6Y+O}q9c z?8}gjK7~Ec_x!rT&St-gu%{t(|AqbIU9GT>vJ+P0u0u!tR!keU7xuTueYvn#At}8GyG9DUC+stjMTYE4*w^BbI4{pl zfo9}v-}CDV`x-3F>whznMCksP>@}DKgRtxEyx6$kp#6ZbFNB;|JxO7&fOqf0z8w?) zUskebASt~F`wfw-C+xv;Tly0A2&AJ=VGr^>zpk)Hb$%6LZ%%y`Ve?~a2>X?hG{((F z`vGC^jYe?QyA<{T@a|pMlMnfFVQ)ZEdJ%S7Bc8`}acKaEG#N1|tj{(QaxcU}EjmLl~cr@x3r=x89 zkSi0IPTCNdk*@46eQ>+QPuS`GEau|v6F?D$*-NSduUnq86HViC7;_+PM=)(!ri}}D zZ9(wUX1CLENsBRQ5s7%POWJfK?Oky?%--PKSb=|VA%;D~M07ti8;cenhwZ`{?_Piz za{D%DJ7BzE4W#ctm%iWIp~eo^piNt~jOn{^`(DzA6_DMyih&|;8g`EMDp>3z$|bN! zYEC}I3TmDw%8zY3VPAK>C807-ocg+J7m+{a4Xs?EYyGgz4_7t+PxlAMq6l%Ld%Qbt zp7j>rrCx*NRW(<>^;k)4W zH`T`ZiKmeB@yh2Z_`IS#*w1ZuNRreZ|uF^OcL=nqLhG zyx4sta#H@?H47$`V-Z^O=I&9)xLeqqd%mhT_abg1rqti)eh%+}aU0k5b{k)@dsX&O zi5ayML*s^Hn1h@79%}!p7bv%X;NJVKDpvg3yvK??}Wt`*PCELmN?n{ zU#+~mrHhv^P~mlKxhtP@;q5Nyk$X2-`J8>3XDOoLv8<@{g zHlMRzts1eeDujhPD9*2UzkpOD^RJdaRA5_QLs6YbQ`xY2gpw8KYe zJXZaKIsbgy-g3_MkymXm zG%`<*-u*(+-DJEVY5B2Lj`b2m%j9V7%GoEDK}8GOaD-b0~=D0tO>Ri1Rtrzg4?n z3a9&3q^U>As9qxVX@g6XQ*?{Bf~AXYgNrR1GDFA;b6H&L#X0cxYSR8%FOo)H4Bd5S2wnWaVdw~4zbWQi*9g-*5Q5M{Untx`mJ@@&V3g) zAvfIPTk;vW)0@}#`2!#8~sceoabhT@abMZ4R$;ka}zH6ZS8J^od?Xfsjw%pWC(cp6^rFEmjeiE}rl&tcN8<+K4eP*`{OB zP`Yz&o%eUqi$IcRY>>}gNe4d&L159j-BKLd2Z*==`?V;Cc73Z2EZi)tlE>ETN7-e{BTPy6MmdF?_L+%ts_PIf2P#U+LhcOHd)#F}ms{ zgQ1jQ)2$HUBX)LW-0#qGpe9|4M6WuIHR(sTLQK5ZdEeo@pXP+u6olzM6W-dsxQcep zyL;efxs{$(OZUEn4foPLt^Sk87q5l1kWyFa_5;^0`rL!H#x365ehw=H)nS(|{v)m< z&M(2)uCf_w7u`IAOO&5`ahx9ziZ$1#u=Jj%&$+BHh)v~*pUh2sBYxe@AG5=XAG$mFo zwVAP>u5d2T?Z{fS?AN@cFuRWg$u(>?fs?Th7q&<8sEa>9@;7oY`5>AMrlR|v2>2L( zjYLkVtElG&^#0mWm&J{@gV_7JQ3-Gn0#q&SvOD_j*8RrO6s4pG>pM%}YaXHux-XbP zFZuKqLuITn*KkYcmsmM<{}7=IqWtDk6{XF$h;p+hN^C`f?SKE(Jq!_WK_u3jLv1n& z#@zi}!I*H;y4BVLQQG-Uc_b5eon}x3O8+_$qCvhGyflw2h~2Ep0Pt zdyuvmZFkYuN!zWook`nD+Ag5&3fiuq4b^9J+YPi~&B^ArJ88rFfX!_W(1yo?&23N6 z7NhO=v>i_yOZmo`wEc~?X|#nxupLPo>+HruXxp2%;k0p+zK#3PHlDU!Xq!gcK-y-} zW@wAj_7Bv%Hhu)M@m<=^rtMAImeR&%y6qa;o~G?q+Sbr^FKw%6TSMEOv^`JT&uC-s zz42Pw_>slNOKB@YrQUb}Z9CC+7HwhLvb2@aMqOELR7SLM4sA1NJBGFsX{(`)pOkH! z0-G_BSSpfCbi_^BtV}$eDLeJlOj$)db80r#S=QcEmT8M8lV$DEM91i6(-h5^FzP{N z%}g`3roq%!9&74n)tY8A&`de5($rKpG@8na>P9oF+Kj3;{ zc6P=)VlKMoR4g7o;DB&;e%4gPlksdk+>%Jf!$XE;hJ-V@=H_@N(~?UjyYN`Hg?~#F zL1XZl8tv#vWy6{1T#r7`G!Vy99r4lOVX-i?XM>QjrB^2J7vXgxOor)BzM=#na(o$yhj*%Z5`e;igosgV}@AN%jQwEY%%zqsfHizZn6tWJsW4nSsW} zWo8^VYD#%S_0({6M>d}BOygFh!wtOe;ZfmX8H8_&$2(1i;z*jxbUKwjVqh4@2{qNV zl_x>MBf}?5t*fy%=P|XeLOo_wHZ+t^C(0mL`INf)#;|%L*mqv_UMd%Po?p`&+9O?7sq6RmC8@bIZ4!iS7G_+X?G#<=jY(T>(|eY|5n%4)bA zsjp|S44hD~=i=Vjt4vF!!|kbbJe=rgNu}GP*+i;iWH=L#hugB*&dd>IWvz*9Tdrwz zbE>_pGn$OX5*?$mW$j%Nl>S6>nY&6MLDe0dxC5*b;b=!J+?Ifpk!*-Cn+nfO#OH+} z$xc7E(PnC@y&ZuwN8mEyFlrKnIVwDrcRrkHPRHXNh3kjIsAZmib1t36^~0U%RBJlg z4nAt2^{>x$goD1kK5C}*KRTDlA|3gA?BWQAS!)@8O(K)s@&cgBF)I^ojUVBHpO6fn z&~eg9Bg4sX0`(^wO=n#-b0u?RxP$Jt;@N`d=Z6ghl#DQ89bK@O0 z0li$ckL%U*dM@>Hy)$~lnBwAl;t+O+4dLEv44u*X&CkiQIXCX$$rc6lj_F?mr&$iirC{U%#2Lo`Cl+Z#+n$W48IqDoMl;z+oZY6nSir8Y z*}xi}G%;+8EbT{zhi4L}$5SoCBbD{_k&4O&^m1ikaXZj+9Wlb@4-vS_d9hO1ohTn@ z>NQM)-4tLY(}BvsZmktvJH(ZaW6*&DpD&WG{#2yG7+Rq}YehrZj!KqEG+}(!7Ei}f zhb*l}33pDhTsyi-smryguuYq(!#xP+#~E()X3E2?OYDEc^U&pnvuzxuwPSR{lh)h# zd~{2hUIW{3u~a<6goY)cjmnNBC7On=_NG)44PgqyFjN^G6*ad-Q8y`*T8$4 zHXbvTsO4Sx?zN$-BO9GB*-&aMnvI5SeQRXl$R`1#iRLy_olM4Cqe(X;GmVJ1J=fe8 zjwLXh$so5GiX&|Y9$`sih5CivFwGy-nL2NTXKJEN@nj)Jn`vYKcQl(zcZ54rY(1u? zkW&bxGmiYl+;Ag|+n$NHCz^Zum9tWZ6EO@a5-kagTJkI_NNK(bu2Wf3!dp1I%Vcs* z7``Mrc{3#LhHN_5jHKbNLdvL{ogC`N%rw3A`H;s%(}^fc7!qn*ie6JyZhMJv%1RI+ z^K?XnqFTVUZit-suSRWX_48MWeuN_zH0vBs_2ybzIlHkp_gS@#)iu3&)TC0K zXuKs)`Kx~~*WMXU+MAen%jZ1rq6N*nFFB6Bq~!Sdo*GRy=aQ~8xyn|NmMHVfy)Gg`$Hu~_rK{ccmZoxk7OiC*s@+rn4!@ULcX}Fp)NNjtMli7@EWB)OZ&=<#;oi9kh%hW<2Sfn&`xp3>rn-e`K;~ z<;&9nr3ZUne?EpKE&@Cc zC6Z!~;R3i}@WAtFXExol*{`l`l!T*uLUHzb6BNV_J0@UeTrM1c_v1b2-?%9zOuY# z1d}-2(R=zLf8_P%Wr>n5WG2y~_9O>gwik%Qns-Mdj-p`Q;f4Xk7BPt=6D^VEwp_=l z64+%K`9g=LzMdyY>s#KelBno>E z2MHuG(Oaw%p=EWZ=7}pFQp6TZXi06)Y2j(dSkT2CjcGWva%Q4&J?X5DeD8vuQ^!40 zgV02bn#2x81hrpbq~X|FXW8G7E)UGMi8MGPYCC1%9PEgLqlHKcx2iBOL&c2G_sXrq zk!-rl267`kB#C7Nz=~C_$T1j(2)Kh?p}fM(M@xyzW%HHt{F%=+*GY(g@&KSru^ zxSwK|AOhXsud5wl?7hqfLkq*9O)8Cch$CLpl(U0tmuY*gi0zgmnPhlUc#Ns2o?%AG zz3GUzx_K6xt%x0l+L(Yf*H$VRgTZOkB=_Lz$*?yHnJ&tLtT9${l9nr@On3w6!nJJ@ z_p>-1MNtbht`wHv{<@|R<8s>;vRxGMu+2jz(Gl<|NE`N{W`t>trkl`hFp>F!BjqlD zBOR#@$eDv3!_sJM(QqZprmH<3OQ2rKaGkNU?6@ah+b}bd=5{n@u5U&GWFL*%Y=xXc zqiT5S*&a-rRXf!cQ;b(r=|r{*fez-SQk{pGL~Q=S{)l*HedW~3ipof1`IMT(oYz3(!aR^eKEkcH(yhR`@=ev>daSbSKf6jf}(Dl4YXTE1QW@ma_MG> z!u6JHs|t50f>sJm2P&JB5E?a#)wXM{q`HAUi<6rmbW=a_EMZ9q@t;3FXd+#Qg~}y& z6J{%VTC|~gA2(CzdiFN-Ehw~j7PMuMjSq5epCHgPp{vITl!F0jscfjcU7IhJ2r|rB zmng=~?A_g+FI)~CLNd{04l)OtGLB@-$!54Y(o8Z(PBfDynjs(cDre9t_a8$kv7y66KBc(u zDFe?@cpm2TAm<@$X<-0oL+Dss``3aE9fSlx4c9IQ4-;^-GS6f=quyl7r!<&`>9wZe z=z24)rVhECT3KCVrd7{2^>wq5x_bN?s*#zx2Gdwxi&r)PN<8P(ucPp@i(?CK$f8Z)z=BckfsnX@=9Lj3mW(pl|uC+338uvRk+1s6r$ zIu%O0W!OH3RE($`(N5|*YkLAsrp*@z6VB3tLPcA1n}mDl?E*s#M3Rm)k>ehDwy zY%32uF?lO)dC$CG-Yd<)2QQW8bh@*)B<4FybDYCP`nF)KD5=PtrWVXySZzDP^0Ls0DMrZjfW_P{-CEObg|wXxi-52ZNbTKGL_ND5RRDWSuyKF7ftA zHrg7=o;ZY4uYBCiFx2QF1|w;m{oB&Sn;^rtu-oCcqxHsCkjCJ*b_yY0{o4bpTkJ7J zOr3wk%XoWWRhT_=eq6DdL*a|JSiK%}@5^t}q$7Du>T&eq1pi>DUYro5mr#>>T;5*% z$Rj6)#gdOb?59CI!xIak#5QS?n_*?>|1BpM58^At_-~xNbV&k{UEBkf11$@@AA8}) z`#%;x9yD2AaD>*+9uV5k6oo=26pDt5LpyC>61o}dY-`}j-)pZkn6nqd9Ar8SUvlCI zT{_qlU4d0oFP56nBRiU+J$Ew2OR%_Zo1INj5(Q?5-AwT%SWkTUx6Oc`>}5)ZVg1M5 zdz<2!`9HYIhBn$Rw|aXdn& z*CXRQhISmZ?RLv?Kl^fbp}+e1gEw4T@R^t;8yp@i<{n}W5p$%Nhlx2^%Z35Oaf=?}+)anEw)UyFa@8>@4P9Vjdvo z7%`6!vqH>TF=va}BxX{~xneF9^FlE%6Vu4?`6d_tfOnnwZ84{d*(v5ZV*XIf8^!#E zm=B5hl$fuJ`8P4md+z$Xh&fEmDPq=%851)r=DA{CC+7WPJ|pJaVr~|5_xD{qBgCu| zvrWwTVqPHT)nfia%*VxiL(EUbEX8WR5M(w~%yDAYiaAHjw3z3JxlGKJV%{O9%D?OH z?z)GMbY|tJ&b)20Gtc?hnX^&98UJ+gpTET6YQYy>=jeMxVuz0weC;HM z&ye_+ALVd9UB7hrpMP`a7neA*LHHe)Iy_78GnYAhtl)81I()p~A6@P6NrE?{ZDM}r z2u`DIB900E{5pqQ1$W-(@Tr2!(LOT#0+G-7`yEb+|J7JKME|tlo8~$^Pw|8!)fiXKx zjzlm|ir4v=$~`sGnv14m=IHc}%bj}+Z!|iM0?aGZZYPjiV2gDnIb)n_iZtJN{%kZB=J7_%dmG^I~M3hAJ8rn(14#>7;kUx?4s|&BKY#nIqVl$I~Stage|u) zhc!}or2+4&1lvrkB(U!b;d8SESnkM4Zs0qKMaK78dlt6?>lN_65#FoS$-%V>U5eHT z>kgkV=bn=D zLo+5%`&sC;&7qT92E7v+w6>`9_R#pTYePfVhlZZmadC0Fsp*+L8*T|5HLZN|4vFcgSlsW5L1PakI6p*f#~-Z ze&j2r8~G));GjXikIA1j%=uv&$?_F5Jo!`b#!fO$axuK;HGKRZzVcNy;FUxy0B{40jl<{#hC+Jl(# z^D**kIC10)zgKq zSouQ(d>@m4{74u7#llyt{3`?L_c8e&mO1`4!dI;Pnn3(MCV%1>$G=hdij`jqcOJyG zIQf|TnnRr5ZNgWq{Btb3!1povzY{+7R;^6LV8ACrFo zDkQ_cBz(onKRm$qG5IG6f1~gfD}O?O?_=_>5`GBxnfcFS@YsIN3GjVP{-?sldc`I!9ChdIAJg|Aro=UaAx?_=`s7XEPID^~uD0N=;t7eSy5`(5EHR{rDw z-^b)n5kBiR<)>Kr(*k@SlYfEm8-%Y|`9BNreN6u7@h<&ygs)inrv>;vCjUC&r-iRr z`I`fLACv#%@4EQU6ux5RpB&)(nEcO$f4=Y)E59Yc_c8fR_^6O!FBQIG<)e$T2XQS< zJ|@3I_&*W8V&(he4f1_V{%lkzhP_Mpik0uj*IWEC;jaNJoJ%|~% z{&m7vto(~@nltnjA^ zU$OEh2lzfFe`g4kVUH2M;{NjMh2JK8#meUnOFU@Q;^bq-e^#UOn8nf35KE z7rtWUzZT&8nEb9|UHnf9U$OFE4)A?Ue#30Xe@*y`m478IIB3-3jHcqlYds5i~kqGSFC(I-rIw? z7AGH*e~0j&5x!#O`{OR4B-%t38m5<@6J&2iqACrI3DK7sbg|Aroy9M|@CSTX7O%=Xk z<(C!rjNixPcecCuYlW{^`QM-g2Mwm*$K-cmKuW(8g|C=yY(Kco84nud`?8`93CJ*X^Aye8tN5$NP-m$K>lezw?Bz zxW9Z|7kHWQ75A5~>j+m0UvYo=y6*6H;VV}DJtaNm=VRty*C|pREc-9T%J=2foBVWL z<0HaX++V(~gM3=}ij|Myi9LuJzmJ)IT{ro%@D(fnVp?#}Am7L2>pIK72wyS7v;2Ko z{&ijEN5WUE{MTv0L4)!8nDOtr(D{8Ke8mjkpZLcMf8ciR{wY?z-`+ERA2a@>@OKlw zV&%`E1qTiCeN4WtD;*+y#SG8%`}0-g`j<#uUPqET0Fjw$=7w}ONFmk`Ftle_UnbOSownjd>@mq>)vk@zGCGMrUeI$TAX}LzOH+}SNMt< zp7K8}5WkPf*LCu1gs)in(E#7a>>!h4u**YCPE3tzGFlL7hrnDW=}z6N4p5$nHV<#SyX4;r;N`IvnDPHY$9D`t4M zAJw$rph3Qm$se)W`RyZo#SBmW3AEs#LB5a4*YD7V3tutAlfNG=IB1aXWAcCci1QmO ze8mjkAO2&HI{s0@SFC)0zJ~GpnDOg(an-_CtbE=R9yG}JG5Pu(-7MiNW_YH51%5n~ z?_=`yySs?+6)V4;7LV^^8~<8&?S#fJxW9b;t}i2e#r@^$cYq6oueiT_{ci9A;VbSh zU%xY4A$-OCvxh52w$=C zR|fb#CSSj+d`$R?mA@gt_c8hU9p-xBD^~vH0ltsP*Y7r85x!#OkEaC(jar<1Oul~S z`DfuPW_Z@W&+y}+d>@mq--UiCe8tKS)8g@cOul|c`cL62R{kfJU5MYu;^W`D8e)u)PJ7SG5^SV*+2Ll}bm>9o1W&QBB zSXV*3PVg>*UlhE*;0=Pu3GNnLCHMou#|r*bFw+p@Nsboy?*pvs?UTTRfpxw7T*12j z{T#u%p8XQRx<36{!Mfi34#B#9`~ktb9{dTxy1x5)!Ma}iWniXH*FV20Sl2UuC|K7g ze_>s_;g zb^Yo^f^|LWwZKe|t}p$W`0IMnUkTRrpKAo`dd~HNb$#aRf_1&+CSYD)*H3;SSl2^t zTk7Pa>l=3#tm_r`1}0zEAC`%~t|vT7{B?a`o%ri|zmvpY*YC|0tn2ZXNqAjfcfI)Q zdbxW9>-x86B)qO?`;++V`m`^^U)P)MyrWCMt{>Y+aOq@MpAQtgK=63Mx?ZbN{inF_ zje>PORUDY*OV>xu6Rhi<77Nz(OE(E$*CX8}Sl1UlDp=PGtrx88fBq;~*YkWNSl8zi z?c~y<>upMbdH;0%%zlD(J(w{&oGpx5Z!A z0~{&-`hNd-!TP?wU9i4?KUc86PhTNe-;duYSl@TwCRpEJ-z!+(M?Vd0%g-sUe7z)C z-xvQyu)hEOP_Vww{ik4kKRe)??t1#Zbtl34{&Zi#`abj^!TNr4ykLD_Nv+FFpT2*b zAz0rh9w%7e55@)S`@XbbeSdeBV0|BVf#6*iy8K@*c)Z~21t$gHE?D1ZtrD#7r`8JA z_f5|U*7rvn1nc{t_XX?w9e%;a{ObFf?FH-mm)!*G`;`3z>-&+Bg7tmJ;ez%3#T3E% zKB7*rzF#;&u)Z%iMX=8QpD9@9^M5E<=j(3}tn=-+3)cDbdj+3!y_5H&f^~lTdBHkg z{kCA8fBrR*X=4;=ikDDbw2Gd!8$)yE?DQgW(d~# ztJ#8eKB`%;&M%!NSm%q*6s+?<7Yf$-oXZ94{LFQNb-v{m!6R0?`~54yIv?_oV4dH1 zQn1cfJTF-1A2tZq`Gj`_>-@mS>Mzgx{}Qav@7wL}+@iXV12&p6s*r{XA0Kmuk!@!^VD*|`h0Y)V13@X z8F(K&Kdkwh44C&8Zz4huH&d{PEH z*n6ItBv_wkW(d~jnUjdU=b1La`aDBD?DW^?nX`%U{G#7aE)uNYPo6JWzn@$oSihgV zTChG3-6mL{hwc}w&qGfL*5{#@1?%(BdxG_O=ySpPJhc6{@U1`ygD4zm_RYS)Fln{N zr~p1JfGY#|*Z@8yfO7$Sb^tF6;1vOUbpT%%z&8c(?E!pO0N)?L4+Zd=0DdZfp9|nu z0{G1U-Wb4t4d8zS@D~9*;M+a#&%glQIe@<%!21U9cLI1!03Q~>M+R_Z0Dmulj|t$D z1GpuCI|6ua0G}1W=LPV^0lXrBe-yyK#XQba`27yQr}5+WR?p%0Jbu5&?*;t+fZvPw zy@cP(_`QPPtN6W!-|P6jf!_xF{)pe3`27jLxA6NjesAOV7yP>M+lb#g`0<;pckz1< zzxVO`D}Eo~_aT0N!|x;fKF06w`27RFPw@K`zyHAx$K+>VuETFVe!S-YPk9LUp-jyw z=rp3C(^KMElYo|2{m z6WPq^EiFwgZLwVI+|G`smUvg$lw2YiE32mZ7tsWe>A@b|WCPSgM*{Zc=*_Fn?tz~f z)j_R`$+G$54~rZ&)@c@n;uEIdL?Tc^V7EWP7BOw9d68@aJ9?`E32GAraykjD8cyuE zVb#_|>_#EbP5^Ilv0G)^>xot_xwuus1^sQ*xK(`{UEuZe`Ue=hDjcv$%li~^q&hC(;?)1y2%HK8mmR0`!20*lln~UMU_(%&rD#%s zzlRFGjD{*oB^W$0p%y6;8B!7@ILeiY84K7j#g%>gi!8ePd6{HQz#G!9dJZ& z)mO;KRbippogx`U*mek8=1VZIh>?}oHi%RORF_zJQ(d9cbn@kjQ5XXi7GkF%7hOSn zp^crekQO38F~o(`;98!xmPii(zk-?t$@xfix5uMjWbsbg~e z75ZGK$>~c}Iceu8x%V|eIa#6VS=CIab5ww&DW{qvn{q^CWt?wR-Hot1YMd1fe7>w$ zeKrz;>TaA>mESmImEz<*JcJqz1~sWzH7nMZq2?85qcRq26Adla?)0`eXXU9W zx{SQQP|oGU^70 zcUH9H7^EW89Gv12gT)0xR{gRrzJji34?A7XcpSj^h`R_W z&mk_Cw%01;*21kr@xpj=>rh-2e&xsKC^uV&;#5Ru)sC}XZyk!qw+_X%H`zKA-#QeB zHs`HFam?LOU8EahZ5@hZoWFG_{*{N~eNL9M-z^MV|5pa-y==6NP365U-+|m_@7!zN z+vdH;*7J6Q_Z}{8GkWXf_MvxH?m};E`7Pkx=I^3Y)M*>V1BO*Cj|rs&-YVGL-BIK4 zJmcK$v!U$Z9%;cq1wQsE70)y+oRNiLcWIZo^cK4>d!)r~$R25NJF(j>*z@!9co^oU z>vp$w-6J2