diff --git a/collects/scribblings/reference/memory.scrbl b/collects/scribblings/reference/memory.scrbl index 5b2794f3e1..77ccc491a7 100644 --- a/collects/scribblings/reference/memory.scrbl +++ b/collects/scribblings/reference/memory.scrbl @@ -252,3 +252,50 @@ information in a dump. The information that is available depends on your Racket build; check the end of a dump from a particular build to see if it offers additional information; otherwise, all @racket[v]s are ignored.} + +@;------------------------------------------------------------------------ +@section[#:tag "phantom-bytes"]{Phantom Byte Strings} + +A @deftech{phantom byte string} is a small Racket value that is +treated by the Racket memory manager as having an arbitrary size, +which is specified when the @tech{phantom byte string} is created or +when it is changed via @racket[set-phantom-bytes!]. + +A @tech{phantom byte string} acts as a hint to Racket's memory +manager that memory is allocated within the process but through a +separate allocator, such as through a foreign library that is accessed +via @racketmodname[ffi/unsafe]. This hint is used to trigger +@tech{garbage collections} or to compute the result of +@racket[current-memory-use]. Currently, the hint is used only in +Racket 3m (the main variant of Racket). + +@defproc[(phantom-bytes? [v any/c]) boolean?]{ + +Returns @racket[#t] if @racket[v] is a @tech{phantom byte string}, +@racket[#f] otherwise.} + + +@defproc[(make-phantom-bytes [k exact-nonnegative-integer?]) + phantom-bytes?]{ + +Creates a @tech{phantom byte string} that is treated by the Racket +memory manager as being @racket[k] bytes in size. For a large enough +@racket[k], the @exnraise[exn:fail:out-of-memory]---either because the +size is implausibly large, or because a memory limit has been +installed with @racket[custodian-limit-memory].} + + +@defproc[(set-phantom-bytes! [phantom-bstr phantom-bytes?] + [k exact-nonnegative-integer?]) + phantom-bytes?]{ + +Adjusts the size of a @tech{phantom byte string} as it is treated by +the Racket memory manager. + +For example, if the memory that @racket[phantom-bstr] represents is +released through a foreign library, then @racket[(set-phantom-bytes! +phantom-bstr 0)] can reflect the change in memory use. + +When @racket[k] is larger than the current size of +@racket[phantom-bstr], then this function can raise +@racket[exn:fail:out-of-memory], like @racket[make-phantom-bytes].} diff --git a/collects/tests/racket/will.rktl b/collects/tests/racket/will.rktl index e87a5ddd5c..27d46c72f1 100644 --- a/collects/tests/racket/will.rktl +++ b/collects/tests/racket/will.rktl @@ -185,6 +185,39 @@ (num-or (ephemeron-value (cdr p) 0) 1)))) (test #t < n 50)) +;; ---------------------------------------- +;; Phantom bytes: + +(when (eq? '3m (system-type 'gc)) + (define s (make-semaphore)) + (define c (make-custodian)) + (define t (parameterize ([current-custodian c]) + (thread (lambda () + (semaphore-wait s) + (define b (make-phantom-bytes (expt 2 29))) + (test #t phantom-bytes? b) + (test #f phantom-bytes? 0) + (semaphore-wait s) + (set-phantom-bytes! b 0) + (semaphore-wait s))))) + (sync (system-idle-evt)) + (collect-garbage) + (define m (current-memory-use)) + (define mc (current-memory-use c)) + (semaphore-post s) + (sync (system-idle-evt)) + (test #t > (current-memory-use) (+ m (expt 2 28))) + (collect-garbage) + (test #t > (current-memory-use) (+ m (expt 2 28))) + (test #t > (current-memory-use c) (+ mc (expt 2 28))) + (semaphore-post s) + (sync (system-idle-evt)) + (test #t < (current-memory-use) (+ m (expt 2 28))) + (collect-garbage) + (test #t < (current-memory-use) (+ m (expt 2 28))) + (test #t < (current-memory-use c) (+ mc (expt 2 28))) + (semaphore-post s)) + ;; ---------------------------------------- (report-errs) diff --git a/doc/release-notes/racket/HISTORY.txt b/doc/release-notes/racket/HISTORY.txt index 0aefd14db2..9a6001cf86 100644 --- a/doc/release-notes/racket/HISTORY.txt +++ b/doc/release-notes/racket/HISTORY.txt @@ -1,3 +1,6 @@ +Version 5.3.1.10 +Added phantom byte strings + Version 5.3.1.9 Changed case to use equal? instead of eqv? r5rs, r6rs: fixed case and cond to disallow internal definitions diff --git a/src/racket/gc2/gc2.h b/src/racket/gc2/gc2.h index 4139bb6b1f..bf0404b937 100644 --- a/src/racket/gc2/gc2.h +++ b/src/racket/gc2/gc2.h @@ -91,7 +91,8 @@ GC2_EXTERN void GC_add_roots(void *start, void *end); `start' (inclusive) and `end' (exclusive) contains pointers. */ GC2_EXTERN void GC_init_type_tags(int count, int pair, int mutable_pair, int weakbox, - int ephemeron, int weakarray, int custbox); + int ephemeron, int weakarray, int custbox, + int phantom); /* Called by Racket to indicate the number of different type tags it uses, starting from 0. `count' is always less than 256. The weakbox @@ -276,6 +277,11 @@ GC2_EXTERN int GC_is_on_allocated_page(void *p); the GC allocates objects (although p may or may not be a valid pointer to the start of an alloctaed object). */ +GC2_EXTERN int GC_allocate_phantom_bytes(intptr_t); +/* + Returns 0 if allocation should fail due to a memory limit, + 1 otherwise. */ + /***************************************************************************/ /* Memory tracing */ /***************************************************************************/ diff --git a/src/racket/gc2/mem_account.c b/src/racket/gc2/mem_account.c index b1daa2ea75..9fb5314aad 100644 --- a/src/racket/gc2/mem_account.c +++ b/src/racket/gc2/mem_account.c @@ -447,6 +447,9 @@ static void BTC_do_accounting(NewGC *gc) last = cur; while(cur) { int owner = custodian_to_owner_set(gc, cur); + uintptr_t save_count = gc->phantom_count; + + gc->phantom_count = 0; gc->current_mark_owner = owner; GCDEBUG((DEBUGOUTF,"MARKING THREADS OF OWNER %i (CUST %p)\n", owner, cur)); @@ -458,6 +461,10 @@ static void BTC_do_accounting(NewGC *gc) last = cur; box = cur->global_next; cur = box ? SCHEME_PTR1_VAL(box) : NULL; + + owner_table[owner]->memory_use = add_no_overflow(owner_table[owner]->memory_use, + gcBYTES_TO_WORDS(gc->phantom_count)); + gc->phantom_count = save_count; } /* walk backward folding totals int parent */ @@ -470,7 +477,8 @@ static void BTC_do_accounting(NewGC *gc) int powner = custodian_to_owner_set(gc, parent); owner_table = gc->owner_table; - owner_table[powner]->memory_use += owner_table[owner]->memory_use; + owner_table[powner]->memory_use = add_no_overflow(owner_table[powner]->memory_use, + owner_table[owner]->memory_use); owner_table[powner]->master_memory_use += owner_table[owner]->master_memory_use; } diff --git a/src/racket/gc2/newgc.c b/src/racket/gc2/newgc.c index cf5667295a..d48d9649a6 100644 --- a/src/racket/gc2/newgc.c +++ b/src/racket/gc2/newgc.c @@ -1492,6 +1492,44 @@ intptr_t GC_alloc_alignment() intptr_t GC_malloc_stays_put_threshold() { return MAX_OBJECT_SIZE; } +uintptr_t add_no_overflow(uintptr_t a, uintptr_t b) +{ + uintptr_t c = a + b; + + if (c < a) + c = (uintptr_t)-1; + + return c; +} + +int GC_allocate_phantom_bytes(intptr_t request_size_bytes) +{ +#ifdef NEWGC_BTC_ACCOUNT + NewGC *gc = GC_get_GC(); + + if (premaster_or_place_gc(gc)) { + if (BTC_single_allocation_limit(gc, request_size_bytes)) + return 0; + } +#endif + + if ((request_size_bytes > 0) + && ((gc->phantom_count + request_size_bytes) < gc->phantom_count)) + /* overflow */ + return 1; + + gc->phantom_count += request_size_bytes; + /* adjust `gc->memory_in_use', but protect against {over,under}flow: */ + if (request_size_bytes < 0) { + request_size_bytes = -request_size_bytes; + if (gc->memory_in_use > request_size_bytes) + gc->memory_in_use -= request_size_bytes; + } else + gc->memory_in_use = add_no_overflow(gc->memory_in_use, request_size_bytes); + + return 1; +} + void GC_create_message_allocator() { NewGC *gc = GC_get_GC(); Allocator *a; @@ -1769,8 +1807,10 @@ inline static void master_set_max_size(NewGC *gc) inline static void reset_nursery(NewGC *gc) { uintptr_t new_gen0_size; + new_gen0_size = NUM((GEN0_SIZE_FACTOR * (float)gc->memory_in_use) + GEN0_SIZE_ADDITION); - if(new_gen0_size > GEN0_MAX_SIZE) + if ((new_gen0_size > GEN0_MAX_SIZE) + || (gc->memory_in_use > GEN0_MAX_SIZE)) /* => overflow */ new_gen0_size = GEN0_MAX_SIZE; resize_gen0(gc, new_gen0_size); @@ -2206,6 +2246,34 @@ inline static void check_finalizers(NewGC *gc, int level) #undef is_marked #undef weak_box_resolve +/*****************************************************************************/ +/* phantom bytes and accounting */ +/*****************************************************************************/ + +typedef struct { + short tag; + intptr_t count; +} Phantom_Bytes; + +static int size_phantom(void *p, struct NewGC *gc) +{ + return gcBYTES_TO_WORDS(sizeof(Phantom_Bytes)); +} + +static int mark_phantom(void *p, struct NewGC *gc) +{ + Phantom_Bytes *pb = (Phantom_Bytes *)p; + + gc->phantom_count = add_no_overflow(gc->phantom_count, pb->count); + + return gcBYTES_TO_WORDS(sizeof(Phantom_Bytes)); +} + +static int fixup_phantom(void *p, struct NewGC *gc) +{ + return gcBYTES_TO_WORDS(sizeof(Phantom_Bytes)); +} + /*****************************************************************************/ /* Internal Stack Routines */ /*****************************************************************************/ @@ -2729,7 +2797,9 @@ static void NewGC_initialize(NewGC *newgc, NewGC *inheritgc, NewGC *parentgc) { /* NOTE This method sets the constructed GC as the new Thread Specific GC. */ static NewGC *init_type_tags_worker(NewGC *inheritgc, NewGC *parentgc, - int count, int pair, int mutable_pair, int weakbox, int ephemeron, int weakarray, int custbox) + int count, int pair, int mutable_pair, int weakbox, + int ephemeron, int weakarray, + int custbox, int phantom) { NewGC *gc; @@ -2744,6 +2814,7 @@ static NewGC *init_type_tags_worker(NewGC *inheritgc, NewGC *parentgc, # ifdef NEWGC_BTC_ACCOUNT gc->cust_box_tag = custbox; # endif + gc->phantom_tag = phantom; NewGC_initialize(gc, inheritgc, parentgc); @@ -2763,6 +2834,7 @@ static NewGC *init_type_tags_worker(NewGC *inheritgc, NewGC *parentgc, GC_register_traversers2(gc->weak_box_tag, size_weak_box, mark_weak_box, fixup_weak_box, 0, 0); GC_register_traversers2(gc->ephemeron_tag, size_ephemeron, mark_ephemeron, fixup_ephemeron, 0, 0); GC_register_traversers2(gc->weak_array_tag, size_weak_array, mark_weak_array, fixup_weak_array, 0, 0); + GC_register_traversers2(gc->phantom_tag, size_phantom, mark_phantom, fixup_phantom, 0, 0); } initialize_signal_handler(gc); GC_add_roots(&gc->park, (char *)&gc->park + sizeof(gc->park) + 1); @@ -2771,13 +2843,15 @@ static NewGC *init_type_tags_worker(NewGC *inheritgc, NewGC *parentgc, return gc; } -void GC_init_type_tags(int count, int pair, int mutable_pair, int weakbox, int ephemeron, int weakarray, int custbox) +void GC_init_type_tags(int count, int pair, int mutable_pair, int weakbox, int ephemeron, int weakarray, + int custbox, int phantom) { static int initialized = 0; if (!initialized) { initialized = 1; - init_type_tags_worker(NULL, NULL, count, pair, mutable_pair, weakbox, ephemeron, weakarray, custbox); + init_type_tags_worker(NULL, NULL, count, pair, mutable_pair, weakbox, ephemeron, weakarray, + custbox, phantom); } else { GCPRINT(GCOUTF, "GC_init_type_tags should only be called once!\n"); abort(); @@ -2791,7 +2865,8 @@ struct NewGC *GC_get_current_instance() { #ifdef MZ_USE_PLACES void GC_construct_child_gc(struct NewGC *parent_gc, intptr_t limit) { NewGC *gc = MASTERGC; - NewGC *newgc = init_type_tags_worker(gc, parent_gc, 0, 0, 0, gc->weak_box_tag, gc->ephemeron_tag, gc->weak_array_tag, gc->cust_box_tag); + NewGC *newgc = init_type_tags_worker(gc, parent_gc, 0, 0, 0, gc->weak_box_tag, gc->ephemeron_tag, + gc->weak_array_tag, gc->cust_box_tag, gc->phantom_tag); newgc->primoridal_gc = MASTERGC; newgc->dont_master_gc_until_child_registers = 1; if (limit) @@ -2972,19 +3047,20 @@ void GC_register_traversers(short tag, Size_Proc size, Mark_Proc mark, intptr_t GC_get_memory_use(void *o) { NewGC *gc = GC_get_GC(); - intptr_t amt; + uintptr_t amt; #ifdef NEWGC_BTC_ACCOUNT - if(o) { + if (o) { return BTC_get_memory_use(gc, o); } #endif - amt = gen0_size_in_use(gc) + gc->memory_in_use; + amt = add_no_overflow(gen0_size_in_use(gc), gc->memory_in_use); #ifdef MZ_USE_PLACES mzrt_mutex_lock(gc->child_total_lock); - amt += gc->child_gc_total; + amt = add_no_overflow(amt, gc->child_gc_total); mzrt_mutex_unlock(gc->child_total_lock); #endif - return amt; + + return (intptr_t)amt; } /*****************************************************************************/ @@ -4255,7 +4331,7 @@ inline static void gen0_free_big_pages(NewGC *gc) { static void clean_up_heap(NewGC *gc) { int i; - size_t memory_in_use = 0; + uintptr_t memory_in_use = 0; PageMap pagemap = gc->page_maps; gen0_free_big_pages(gc); @@ -4346,6 +4422,8 @@ static void clean_up_heap(NewGC *gc) gc->med_freelist_pages[i] = prev; } + memory_in_use = add_no_overflow(memory_in_use, gc->phantom_count); + gc->memory_in_use = memory_in_use; cleanup_vacated_pages(gc); } @@ -4533,6 +4611,9 @@ static void garbage_collect(NewGC *gc, int force_full, int switching_master, Log gc->in_unsafe_allocation_mode = 1; gc->unsafe_allocation_abort = out_of_memory_gc; + if (gc->gc_full) + gc->phantom_count = 0; + TIME_INIT(); /* inform the system (if it wants us to) that we're starting collection */ @@ -4811,7 +4892,7 @@ intptr_t GC_propagate_hierarchy_memory_use() } #endif - return gc->memory_in_use + gc->child_gc_total; + return add_no_overflow(gc->memory_in_use, gc->child_gc_total); } #if MZ_GC_BACKTRACE diff --git a/src/racket/gc2/newgc.h b/src/racket/gc2/newgc.h index ebc75e5d87..cbb8a7362b 100644 --- a/src/racket/gc2/newgc.h +++ b/src/racket/gc2/newgc.h @@ -231,6 +231,9 @@ typedef struct NewGC { unsigned short weak_box_tag; unsigned short ephemeron_tag; unsigned short cust_box_tag; + unsigned short phantom_tag; + + uintptr_t phantom_count; Roots roots; GC_Weak_Array *weak_arrays; @@ -246,7 +249,7 @@ typedef struct NewGC { intptr_t previously_reported_total; /* how much we previously reported to the parent */ mzrt_mutex *child_total_lock; /* lock on `child_gc_total' */ #endif - intptr_t child_gc_total; + uintptr_t child_gc_total; uintptr_t place_memory_limit; /* set to propagate a custodian limit from a parent place */ diff --git a/src/racket/src/cstartup.inc b/src/racket/src/cstartup.inc index ec757c4e0c..9139ac5620 100644 --- a/src/racket/src/cstartup.inc +++ b/src/racket/src/cstartup.inc @@ -1,1046 +1,1046 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,57,84,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,14,0, -21,0,28,0,33,0,37,0,40,0,45,0,58,0,62,0,67,0,74,0,83, -0,87,0,93,0,107,0,121,0,124,0,130,0,134,0,136,0,147,0,149,0, -163,0,170,0,192,0,194,0,208,0,19,1,48,1,59,1,70,1,96,1,129, -1,162,1,224,1,24,2,105,2,161,2,166,2,187,2,84,3,105,3,158,3, -225,3,114,4,2,5,56,5,67,5,150,5,0,0,112,7,0,0,69,35,37, -109,105,110,45,115,116,120,29,11,11,11,66,100,101,102,105,110,101,66,108,101, -116,114,101,99,64,108,101,116,42,63,97,110,100,62,111,114,64,119,104,101,110, -72,112,97,114,97,109,101,116,101,114,105,122,101,63,108,101,116,64,99,111,110, -100,66,117,110,108,101,115,115,68,104,101,114,101,45,115,116,120,29,11,11,11, -65,113,117,111,116,101,29,94,2,15,68,35,37,107,101,114,110,101,108,11,29, -94,2,15,68,35,37,112,97,114,97,109,122,11,62,105,102,65,98,101,103,105, -110,63,115,116,120,61,115,70,108,101,116,45,118,97,108,117,101,115,61,120,73, -108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,97,109,98,100,97,1, -20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121, -61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240, -110,88,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,16, -20,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,2, -2,8,2,2,2,11,2,2,2,10,2,2,2,9,2,2,2,12,2,2,97, -37,11,8,240,110,88,0,0,93,159,2,16,36,37,16,2,2,13,161,2,2, -37,2,13,2,2,2,13,96,38,11,8,240,110,88,0,0,16,0,96,11,11, -8,240,110,88,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2,14, -2,2,11,11,11,8,32,8,31,8,30,8,29,27,248,22,163,4,195,249,22, -156,4,80,158,39,36,251,22,89,2,18,248,22,104,199,12,249,22,79,2,19, -248,22,106,201,27,248,22,163,4,195,249,22,156,4,80,158,39,36,251,22,89, -2,18,248,22,104,199,249,22,79,2,19,248,22,106,201,12,27,248,22,81,248, -22,163,4,196,28,248,22,87,193,20,14,159,37,36,37,28,248,22,87,248,22, -81,194,248,22,164,17,193,249,22,156,4,80,158,39,36,251,22,89,2,18,248, -22,164,17,199,249,22,79,2,6,248,22,165,17,201,11,18,100,10,13,16,6, -36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2, -20,3,1,8,101,110,118,49,55,51,51,57,16,4,11,11,2,21,3,1,8, -101,110,118,49,55,51,52,48,27,248,22,81,248,22,163,4,196,28,248,22,87, -193,20,14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,164,17,193,249, -22,156,4,80,158,39,36,250,22,89,2,22,248,22,89,249,22,89,248,22,89, -2,23,248,22,164,17,201,251,22,89,2,18,2,23,2,23,249,22,79,2,7, -248,22,165,17,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,32, -8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,55,51, -52,50,16,4,11,11,2,21,3,1,8,101,110,118,49,55,51,52,51,248,22, -163,4,193,27,248,22,163,4,194,249,22,79,248,22,89,248,22,80,196,248,22, -165,17,195,27,248,22,81,248,22,163,4,23,197,1,249,22,156,4,80,158,39, -36,28,248,22,64,248,22,157,4,248,22,80,23,198,2,27,249,22,2,32,0, -88,163,8,36,37,43,11,9,222,33,40,248,22,163,4,248,22,104,23,200,2, -250,22,89,2,24,248,22,89,249,22,89,248,22,89,248,22,164,17,23,204,2, -250,22,90,2,25,249,22,2,22,80,23,204,2,248,22,106,23,206,2,249,22, -79,248,22,164,17,23,202,1,249,22,2,22,104,23,200,1,250,22,90,2,22, -249,22,2,32,0,88,163,8,36,37,47,11,9,222,33,41,248,22,163,4,248, -22,164,17,201,248,22,165,17,198,27,248,22,163,4,194,249,22,79,248,22,89, -248,22,80,196,248,22,165,17,195,27,248,22,81,248,22,163,4,23,197,1,249, -22,156,4,80,158,39,36,250,22,90,2,24,249,22,2,32,0,88,163,8,36, -37,47,11,9,222,33,43,248,22,163,4,248,22,80,201,248,22,165,17,198,27, -248,22,81,248,22,163,4,196,27,248,22,163,4,248,22,80,195,249,22,156,4, -80,158,40,36,28,248,22,87,195,250,22,90,2,22,9,248,22,81,199,250,22, -89,2,10,248,22,89,248,22,80,199,250,22,90,2,5,248,22,165,17,201,248, -22,81,202,27,248,22,81,248,22,163,4,23,197,1,27,249,22,1,22,93,249, -22,2,22,163,4,248,22,163,4,248,22,80,199,248,22,183,4,249,22,156,4, -80,158,41,36,251,22,89,1,22,119,105,116,104,45,99,111,110,116,105,110,117, -97,116,105,111,110,45,109,97,114,107,2,26,250,22,90,1,23,101,120,116,101, -110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,21,95, -1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,45,115, -101,116,45,102,105,114,115,116,11,2,26,202,250,22,90,2,22,9,248,22,81, -204,27,248,22,81,248,22,163,4,196,28,248,22,87,193,20,14,159,37,36,37, -249,22,156,4,80,158,39,36,27,248,22,163,4,248,22,80,197,28,249,22,152, -9,62,61,62,248,22,157,4,248,22,104,196,250,22,89,2,22,248,22,89,249, -22,89,21,93,2,27,248,22,80,199,250,22,90,2,11,249,22,89,2,27,249, -22,89,248,22,113,203,2,27,248,22,81,202,251,22,89,2,18,28,249,22,152, -9,248,22,157,4,248,22,80,200,64,101,108,115,101,10,248,22,164,17,197,250, -22,90,2,22,9,248,22,165,17,200,249,22,79,2,11,248,22,81,202,99,13, -16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11, -11,2,20,3,1,8,101,110,118,49,55,51,54,53,16,4,11,11,2,21,3, -1,8,101,110,118,49,55,51,54,54,18,158,94,10,64,118,111,105,100,8,48, -27,248,22,81,248,22,163,4,196,249,22,156,4,80,158,39,36,28,248,22,64, -248,22,157,4,248,22,80,197,250,22,89,2,28,248,22,89,248,22,164,17,199, -248,22,104,198,27,248,22,157,4,248,22,164,17,197,250,22,89,2,28,248,22, -89,248,22,80,197,250,22,90,2,25,248,22,165,17,199,248,22,165,17,202,159, -36,20,113,159,36,16,1,11,16,0,20,26,149,9,2,1,2,1,2,2,9, -9,11,11,11,10,36,80,158,36,36,20,113,159,36,16,0,16,0,38,39,36, -16,0,36,16,0,36,11,11,11,16,10,2,3,2,4,2,5,2,6,2,7, -2,8,2,9,2,10,2,11,2,12,16,10,11,11,11,11,11,11,11,11,11, -11,16,10,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11, -2,12,36,46,37,16,0,36,16,1,2,13,37,11,11,11,16,0,16,0,16, -0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,11,16,5,11,20, -15,16,2,20,14,159,36,36,37,80,158,36,36,36,20,113,159,36,16,1,2, -13,16,1,33,33,10,16,5,2,12,88,163,8,36,37,53,37,9,223,0,33, -34,36,20,113,159,36,16,1,2,13,16,0,11,16,5,2,8,88,163,8,36, -37,53,37,9,223,0,33,35,36,20,113,159,36,16,1,2,13,16,0,11,16, -5,2,6,88,163,8,36,37,53,37,9,223,0,33,36,36,20,113,159,36,16, -1,2,13,16,1,33,37,11,16,5,2,7,88,163,8,36,37,56,37,9,223, -0,33,38,36,20,113,159,36,16,1,2,13,16,1,33,39,11,16,5,2,10, -88,163,8,36,37,58,37,9,223,0,33,42,36,20,113,159,36,16,1,2,13, -16,0,11,16,5,2,4,88,163,8,36,37,53,37,9,223,0,33,44,36,20, -113,159,36,16,1,2,13,16,0,11,16,5,2,5,88,163,8,36,37,54,37, -9,223,0,33,45,36,20,113,159,36,16,1,2,13,16,0,11,16,5,2,9, -88,163,8,36,37,56,37,9,223,0,33,46,36,20,113,159,36,16,1,2,13, -16,0,11,16,5,2,11,88,163,8,36,37,58,37,9,223,0,33,47,36,20, -113,159,36,16,1,2,13,16,1,33,49,11,16,5,2,3,88,163,8,36,37, -54,37,9,223,0,33,50,36,20,113,159,36,16,1,2,13,16,0,11,16,0, -94,2,16,2,17,93,2,16,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2048); + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,49,46,49,48,84,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,14, +0,21,0,28,0,33,0,37,0,40,0,45,0,58,0,62,0,67,0,74,0, +83,0,87,0,93,0,107,0,121,0,124,0,130,0,134,0,136,0,147,0,149, +0,163,0,170,0,192,0,194,0,208,0,19,1,48,1,59,1,70,1,96,1, +129,1,162,1,224,1,24,2,105,2,161,2,166,2,187,2,84,3,105,3,158, +3,225,3,114,4,2,5,56,5,67,5,150,5,0,0,112,7,0,0,69,35, +37,109,105,110,45,115,116,120,29,11,11,11,66,100,101,102,105,110,101,66,108, +101,116,114,101,99,64,108,101,116,42,63,97,110,100,62,111,114,64,119,104,101, +110,72,112,97,114,97,109,101,116,101,114,105,122,101,63,108,101,116,64,99,111, +110,100,66,117,110,108,101,115,115,68,104,101,114,101,45,115,116,120,29,11,11, +11,65,113,117,111,116,101,29,94,2,15,68,35,37,107,101,114,110,101,108,11, +29,94,2,15,68,35,37,112,97,114,97,109,122,11,62,105,102,65,98,101,103, +105,110,63,115,116,120,61,115,70,108,101,116,45,118,97,108,117,101,115,61,120, +73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,97,109,98,100,97, +1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101, +121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8, +240,132,88,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36, +16,20,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2, +2,2,8,2,2,2,11,2,2,2,10,2,2,2,9,2,2,2,12,2,2, +97,37,11,8,240,132,88,0,0,93,159,2,16,36,37,16,2,2,13,161,2, +2,37,2,13,2,2,2,13,96,38,11,8,240,132,88,0,0,16,0,96,11, +11,8,240,132,88,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2, +14,2,2,11,11,11,8,32,8,31,8,30,8,29,27,248,22,163,4,195,249, +22,156,4,80,158,39,36,251,22,89,2,18,248,22,104,199,12,249,22,79,2, +19,248,22,106,201,27,248,22,163,4,195,249,22,156,4,80,158,39,36,251,22, +89,2,18,248,22,104,199,249,22,79,2,19,248,22,106,201,12,27,248,22,81, +248,22,163,4,196,28,248,22,87,193,20,14,159,37,36,37,28,248,22,87,248, +22,81,194,248,22,167,17,193,249,22,156,4,80,158,39,36,251,22,89,2,18, +248,22,167,17,199,249,22,79,2,6,248,22,168,17,201,11,18,100,10,13,16, +6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,11, +2,20,3,1,8,101,110,118,49,55,51,55,55,16,4,11,11,2,21,3,1, +8,101,110,118,49,55,51,55,56,27,248,22,81,248,22,163,4,196,28,248,22, +87,193,20,14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,167,17,193, +249,22,156,4,80,158,39,36,250,22,89,2,22,248,22,89,249,22,89,248,22, +89,2,23,248,22,167,17,201,251,22,89,2,18,2,23,2,23,249,22,79,2, +7,248,22,168,17,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8, +32,8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,55, +51,56,48,16,4,11,11,2,21,3,1,8,101,110,118,49,55,51,56,49,248, +22,163,4,193,27,248,22,163,4,194,249,22,79,248,22,89,248,22,80,196,248, +22,168,17,195,27,248,22,81,248,22,163,4,23,197,1,249,22,156,4,80,158, +39,36,28,248,22,64,248,22,157,4,248,22,80,23,198,2,27,249,22,2,32, +0,88,163,8,36,37,43,11,9,222,33,40,248,22,163,4,248,22,104,23,200, +2,250,22,89,2,24,248,22,89,249,22,89,248,22,89,248,22,167,17,23,204, +2,250,22,90,2,25,249,22,2,22,80,23,204,2,248,22,106,23,206,2,249, +22,79,248,22,167,17,23,202,1,249,22,2,22,104,23,200,1,250,22,90,2, +22,249,22,2,32,0,88,163,8,36,37,47,11,9,222,33,41,248,22,163,4, +248,22,167,17,201,248,22,168,17,198,27,248,22,163,4,194,249,22,79,248,22, +89,248,22,80,196,248,22,168,17,195,27,248,22,81,248,22,163,4,23,197,1, +249,22,156,4,80,158,39,36,250,22,90,2,24,249,22,2,32,0,88,163,8, +36,37,47,11,9,222,33,43,248,22,163,4,248,22,80,201,248,22,168,17,198, +27,248,22,81,248,22,163,4,196,27,248,22,163,4,248,22,80,195,249,22,156, +4,80,158,40,36,28,248,22,87,195,250,22,90,2,22,9,248,22,81,199,250, +22,89,2,10,248,22,89,248,22,80,199,250,22,90,2,5,248,22,168,17,201, +248,22,81,202,27,248,22,81,248,22,163,4,23,197,1,27,249,22,1,22,93, +249,22,2,22,163,4,248,22,163,4,248,22,80,199,248,22,183,4,249,22,156, +4,80,158,41,36,251,22,89,1,22,119,105,116,104,45,99,111,110,116,105,110, +117,97,116,105,111,110,45,109,97,114,107,2,26,250,22,90,1,23,101,120,116, +101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,21, +95,1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,45, +115,101,116,45,102,105,114,115,116,11,2,26,202,250,22,90,2,22,9,248,22, +81,204,27,248,22,81,248,22,163,4,196,28,248,22,87,193,20,14,159,37,36, +37,249,22,156,4,80,158,39,36,27,248,22,163,4,248,22,80,197,28,249,22, +152,9,62,61,62,248,22,157,4,248,22,104,196,250,22,89,2,22,248,22,89, +249,22,89,21,93,2,27,248,22,80,199,250,22,90,2,11,249,22,89,2,27, +249,22,89,248,22,113,203,2,27,248,22,81,202,251,22,89,2,18,28,249,22, +152,9,248,22,157,4,248,22,80,200,64,101,108,115,101,10,248,22,167,17,197, +250,22,90,2,22,9,248,22,168,17,200,249,22,79,2,11,248,22,81,202,99, +13,16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4, +11,11,2,20,3,1,8,101,110,118,49,55,52,48,51,16,4,11,11,2,21, +3,1,8,101,110,118,49,55,52,48,52,18,158,94,10,64,118,111,105,100,8, +48,27,248,22,81,248,22,163,4,196,249,22,156,4,80,158,39,36,28,248,22, +64,248,22,157,4,248,22,80,197,250,22,89,2,28,248,22,89,248,22,167,17, +199,248,22,104,198,27,248,22,157,4,248,22,167,17,197,250,22,89,2,28,248, +22,89,248,22,80,197,250,22,90,2,25,248,22,168,17,199,248,22,168,17,202, +159,36,20,113,159,36,16,1,11,16,0,20,26,149,9,2,1,2,1,2,2, +9,9,11,11,11,10,36,80,158,36,36,20,113,159,36,16,0,16,0,38,39, +36,16,0,36,16,0,36,11,11,11,16,10,2,3,2,4,2,5,2,6,2, +7,2,8,2,9,2,10,2,11,2,12,16,10,11,11,11,11,11,11,11,11, +11,11,16,10,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2, +11,2,12,36,46,37,16,0,36,16,1,2,13,37,11,11,11,16,0,16,0, +16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,11,16,5,11, +20,15,16,2,20,14,159,36,36,37,80,158,36,36,36,20,113,159,36,16,1, +2,13,16,1,33,33,10,16,5,2,12,88,163,8,36,37,53,37,9,223,0, +33,34,36,20,113,159,36,16,1,2,13,16,0,11,16,5,2,8,88,163,8, +36,37,53,37,9,223,0,33,35,36,20,113,159,36,16,1,2,13,16,0,11, +16,5,2,6,88,163,8,36,37,53,37,9,223,0,33,36,36,20,113,159,36, +16,1,2,13,16,1,33,37,11,16,5,2,7,88,163,8,36,37,56,37,9, +223,0,33,38,36,20,113,159,36,16,1,2,13,16,1,33,39,11,16,5,2, +10,88,163,8,36,37,58,37,9,223,0,33,42,36,20,113,159,36,16,1,2, +13,16,0,11,16,5,2,4,88,163,8,36,37,53,37,9,223,0,33,44,36, +20,113,159,36,16,1,2,13,16,0,11,16,5,2,5,88,163,8,36,37,54, +37,9,223,0,33,45,36,20,113,159,36,16,1,2,13,16,0,11,16,5,2, +9,88,163,8,36,37,56,37,9,223,0,33,46,36,20,113,159,36,16,1,2, +13,16,0,11,16,5,2,11,88,163,8,36,37,58,37,9,223,0,33,47,36, +20,113,159,36,16,1,2,13,16,1,33,49,11,16,5,2,3,88,163,8,36, +37,54,37,9,223,0,33,50,36,20,113,159,36,16,1,2,13,16,0,11,16, +0,94,2,16,2,17,93,2,16,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2049); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,57,84,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,126,0,0,0,1,0,0,8,0,21,0, -26,0,43,0,55,0,77,0,106,0,121,0,139,0,151,0,167,0,181,0,203, -0,219,0,236,0,2,1,13,1,19,1,28,1,35,1,42,1,54,1,70,1, -94,1,126,1,144,1,164,1,180,1,198,1,229,1,243,1,4,2,48,2,56, -2,61,2,105,2,112,2,122,2,137,2,146,2,151,2,153,2,177,2,198,2, -211,2,221,2,227,2,16,3,19,3,23,3,32,3,56,3,95,3,109,3,119, -3,130,3,171,3,194,3,202,3,226,3,247,3,191,4,221,4,90,8,113,8, -130,8,78,10,181,10,195,10,99,11,22,13,31,13,40,13,54,13,64,13,105, -14,208,14,7,15,62,15,149,15,170,15,227,15,80,16,137,16,47,17,55,17, -161,17,236,17,238,17,106,18,166,18,171,18,39,19,50,19,188,19,198,19,124, -21,146,21,155,21,148,22,166,22,180,22,201,22,213,22,5,23,12,23,30,23, -81,23,94,23,157,25,68,26,213,26,198,27,180,28,187,28,194,28,56,29,174, -29,18,31,99,31,182,31,11,32,202,32,228,32,101,33,0,0,22,38,0,0, -67,35,37,117,116,105,108,115,72,112,97,116,104,45,115,116,114,105,110,103,63, -64,98,115,98,115,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116, -104,71,114,101,114,111,111,116,45,112,97,116,104,1,20,102,105,110,100,45,101, -120,101,99,117,116,97,98,108,101,45,112,97,116,104,1,27,112,97,116,104,45, -108,105,115,116,45,115,116,114,105,110,103,45,62,112,97,116,104,45,108,105,115, -116,74,45,99,104,101,99,107,45,114,101,108,112,97,116,104,77,45,99,104,101, -99,107,45,99,111,108,108,101,99,116,105,111,110,71,45,99,104,101,99,107,45, -102,97,105,108,75,99,111,108,108,101,99,116,105,111,110,45,112,97,116,104,73, -102,105,110,100,45,99,111,108,45,102,105,108,101,1,20,99,111,108,108,101,99, -116,105,111,110,45,102,105,108,101,45,112,97,116,104,75,117,115,101,114,45,108, -105,110,107,115,45,112,97,116,104,76,117,115,101,114,45,108,105,110,107,115,45, -99,97,99,104,101,1,20,117,115,101,114,45,108,105,110,107,115,45,116,105,109, -101,115,116,97,109,112,70,108,105,110,107,115,45,112,97,116,104,65,113,117,111, -116,101,68,35,37,112,97,114,97,109,122,29,94,2,18,2,19,11,29,94,2, -18,2,19,11,71,108,105,110,107,115,45,99,97,99,104,101,75,108,105,110,107, -115,45,116,105,109,101,115,116,97,109,112,1,22,103,101,116,45,108,105,110,107, -101,100,45,99,111,108,108,101,99,116,105,111,110,115,1,30,110,111,114,109,97, -108,105,122,101,45,99,111,108,108,101,99,116,105,111,110,45,114,101,102,101,114, -101,110,99,101,77,99,104,101,99,107,45,115,117,102,102,105,120,45,99,97,108, -108,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120, -75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,77,108,111,97,100, -47,117,115,101,45,99,111,109,112,105,108,101,100,1,29,102,105,110,100,45,108, -105,98,114,97,114,121,45,99,111,108,108,101,99,116,105,111,110,45,112,97,116, -104,115,73,101,109,98,101,100,100,101,100,45,108,111,97,100,76,110,111,114,109, -97,108,45,112,97,116,104,45,99,97,115,101,6,41,41,40,111,114,47,99,32, -112,97,116,104,45,102,111,114,45,115,111,109,101,45,115,121,115,116,101,109,63, -32,112,97,116,104,45,115,116,114,105,110,103,63,41,67,119,105,110,100,111,119, -115,6,2,2,92,49,6,41,41,40,111,114,47,99,32,112,97,116,104,45,115, -116,114,105,110,103,63,32,112,97,116,104,45,102,111,114,45,115,111,109,101,45, -115,121,115,116,101,109,63,41,6,4,4,112,97,116,104,5,8,92,92,63,92, -82,69,76,92,6,12,12,112,97,116,104,45,115,116,114,105,110,103,63,68,114, -101,108,97,116,105,118,101,64,108,111,111,112,5,0,6,21,21,105,110,118,97, -108,105,100,32,114,101,108,97,116,105,118,101,32,112,97,116,104,6,18,18,40, -97,110,121,47,99,32,46,32,45,62,32,46,32,97,110,121,41,72,99,111,108, -108,101,99,116,115,45,100,105,114,69,101,120,101,99,45,102,105,108,101,65,101, -114,114,111,114,6,42,42,101,114,114,111,114,32,114,101,97,100,105,110,103,32, -99,111,108,108,101,99,116,105,111,110,32,108,105,110,107,115,32,102,105,108,101, -32,126,115,58,32,126,97,6,0,0,6,1,1,47,6,6,6,10,32,32,32, -126,97,6,21,21,40,111,114,47,99,32,115,116,114,105,110,103,63,32,98,121, -116,101,115,63,41,6,36,36,99,97,110,110,111,116,32,97,100,100,32,97,32, -115,117,102,102,105,120,32,116,111,32,97,32,114,111,111,116,32,112,97,116,104, -58,32,6,11,11,80,76,84,67,79,76,76,69,67,84,83,69,97,100,100,111, -110,45,100,105,114,6,8,8,99,111,108,108,101,99,116,115,27,248,22,184,14, -23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,142,7,23,195,2, -27,248,22,142,15,195,28,192,192,248,22,143,15,195,11,0,21,35,114,120,34, -94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,93,34,0,6,35,114, -120,34,47,34,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91, -47,92,92,93,42,36,34,0,19,35,114,120,34,91,32,46,93,43,40,91,47, -92,92,93,42,41,36,34,86,94,28,28,248,22,185,14,23,195,2,10,28,248, -22,184,14,23,195,2,10,28,248,22,142,7,23,195,2,28,248,22,142,15,23, -195,2,10,248,22,143,15,23,195,2,11,12,250,22,189,9,2,32,2,33,23, -197,2,28,28,248,22,185,14,23,195,2,249,22,152,9,248,22,186,14,23,197, -2,2,34,249,22,152,9,247,22,164,8,2,34,27,28,248,22,142,7,23,196, -2,23,195,2,248,22,154,8,248,22,189,14,23,197,2,28,249,22,177,15,2, -58,23,195,2,28,248,22,142,7,195,248,22,128,15,195,194,27,248,22,181,7, -23,195,1,249,22,129,15,248,22,157,8,250,22,185,15,2,59,28,249,22,177, -15,2,60,23,201,2,23,199,1,250,22,185,15,2,61,23,202,1,2,35,80, -159,44,37,38,2,34,28,248,22,142,7,194,248,22,128,15,194,193,0,28,35, -114,120,34,94,92,92,92,92,92,92,92,92,91,63,93,92,92,92,92,85,78, -67,92,92,92,92,34,86,95,28,28,28,248,22,184,14,23,195,2,10,28,248, -22,142,7,23,195,2,28,248,22,142,15,23,195,2,10,248,22,143,15,23,195, -2,11,10,248,22,185,14,23,195,2,12,252,22,189,9,2,5,2,36,36,23, -199,2,23,200,2,28,28,28,248,22,184,14,23,196,2,10,28,248,22,142,7, -23,196,2,28,248,22,142,15,23,196,2,10,248,22,143,15,23,196,2,11,10, -248,22,185,14,23,196,2,12,252,22,189,9,2,5,2,36,37,23,199,2,23, -200,2,27,28,248,22,185,14,23,196,2,248,22,186,14,23,196,2,247,22,187, -14,86,95,28,28,248,22,144,15,23,196,2,10,249,22,152,9,247,22,187,14, -23,195,2,12,253,22,191,9,2,5,6,54,54,112,97,116,104,32,105,115,32, -110,111,116,32,99,111,109,112,108,101,116,101,32,97,110,100,32,110,111,116,32, -116,104,101,32,112,108,97,116,102,111,114,109,39,115,32,99,111,110,118,101,110, -116,105,111,110,2,37,23,201,2,6,24,24,112,108,97,116,102,111,114,109,32, -99,111,110,118,101,110,116,105,111,110,32,116,121,112,101,247,22,187,14,28,249, -22,152,9,28,248,22,185,14,23,199,2,248,22,186,14,23,199,2,247,22,187, -14,23,195,2,12,253,22,191,9,2,5,6,37,37,103,105,118,101,110,32,112, -97,116,104,115,32,117,115,101,32,100,105,102,102,101,114,101,110,116,32,99,111, -110,118,101,110,116,105,111,110,115,2,37,23,201,2,6,9,9,114,111,111,116, -32,112,97,116,104,23,202,2,27,27,248,22,148,15,28,248,22,144,15,23,199, -2,23,198,1,248,22,145,15,23,199,1,86,94,28,28,248,22,185,14,23,194, -2,10,28,248,22,184,14,23,194,2,10,28,248,22,142,7,23,194,2,28,248, -22,142,15,23,194,2,10,248,22,143,15,23,194,2,11,12,250,22,189,9,2, -32,2,33,23,196,2,28,28,248,22,185,14,23,194,2,249,22,152,9,248,22, -186,14,23,196,2,2,34,249,22,152,9,247,22,164,8,2,34,27,28,248,22, -142,7,23,195,2,23,194,2,248,22,154,8,248,22,189,14,23,196,2,28,249, -22,177,15,2,58,23,195,2,86,94,23,193,1,28,248,22,142,7,23,195,2, -248,22,128,15,23,195,1,193,27,248,22,181,7,23,195,1,249,22,129,15,248, -22,157,8,250,22,185,15,2,59,28,249,22,177,15,2,60,23,201,2,23,199, -1,250,22,185,15,2,61,23,202,1,2,35,80,159,47,37,38,2,34,28,248, -22,142,7,23,194,2,248,22,128,15,23,194,1,192,27,248,22,189,14,23,195, -2,28,249,22,152,9,23,197,2,64,117,110,105,120,28,249,22,139,8,23,195, -1,5,1,47,28,248,22,185,14,198,197,248,22,128,15,198,249,22,138,15,23, -200,1,249,22,129,15,249,22,142,8,248,22,189,14,23,201,1,37,23,199,1, -28,249,22,152,9,23,197,2,2,34,249,22,138,15,23,200,1,249,22,129,15, -28,249,22,177,15,0,27,35,114,120,34,94,92,92,92,92,92,92,92,92,91, -63,93,92,92,92,92,91,97,45,122,93,58,34,23,199,2,251,22,143,8,2, -38,250,22,142,8,23,204,2,40,41,5,1,92,249,22,142,8,23,203,1,42, -28,249,22,177,15,2,63,23,199,2,249,22,143,8,2,38,249,22,142,8,23, -201,1,40,28,249,22,177,15,2,63,23,199,2,249,22,143,8,2,38,249,22, -142,8,23,201,1,40,28,249,22,177,15,0,14,35,114,120,34,94,92,92,92, -92,92,92,92,92,34,23,199,2,249,22,143,8,5,4,85,78,67,92,249,22, -142,8,23,201,1,38,28,249,22,177,15,0,12,35,114,120,34,94,91,97,45, -122,93,58,34,23,199,2,249,22,143,8,250,22,142,8,23,202,2,36,37,249, -22,142,8,23,201,1,38,86,94,23,197,1,12,23,199,1,12,32,65,88,163, -8,36,39,53,11,70,102,111,117,110,100,45,101,120,101,99,222,33,68,32,66, -88,163,8,36,40,58,11,64,110,101,120,116,222,33,67,27,248,22,146,15,23, -196,2,28,249,22,154,9,23,195,2,23,197,1,11,28,248,22,142,15,23,194, -2,27,249,22,138,15,23,197,1,23,196,1,28,23,197,2,90,159,39,11,89, -161,39,36,11,248,22,141,15,23,197,2,86,95,23,195,1,23,194,1,27,28, -23,202,2,27,248,22,146,15,23,199,2,28,249,22,154,9,23,195,2,23,200, -2,11,28,248,22,142,15,23,194,2,250,2,65,23,205,2,23,206,2,249,22, -138,15,23,200,2,23,198,1,250,2,65,23,205,2,23,206,2,23,196,1,11, -28,23,193,2,192,86,94,23,193,1,27,28,248,22,184,14,23,196,2,27,249, -22,138,15,23,198,2,23,205,2,28,28,248,22,133,15,193,10,248,22,132,15, -193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,203,2,11,27,248, -22,146,15,23,200,2,28,249,22,154,9,23,195,2,23,201,1,11,28,248,22, -142,15,23,194,2,250,2,65,23,206,1,23,207,1,249,22,138,15,23,201,1, -23,198,1,250,2,65,205,206,195,192,86,94,23,194,1,28,23,196,2,90,159, -39,11,89,161,39,36,11,248,22,141,15,23,197,2,86,95,23,195,1,23,194, -1,27,28,23,201,2,27,248,22,146,15,23,199,2,28,249,22,154,9,23,195, -2,23,200,2,11,28,248,22,142,15,23,194,2,250,2,65,23,204,2,23,205, -2,249,22,138,15,23,200,2,23,198,1,250,2,65,23,204,2,23,205,2,23, -196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,184,14,23,196, -2,27,249,22,138,15,23,198,2,23,204,2,28,28,248,22,133,15,193,10,248, -22,132,15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,202,2, -11,27,248,22,146,15,23,200,2,28,249,22,154,9,23,195,2,23,201,1,11, -28,248,22,142,15,23,194,2,250,2,65,23,205,1,23,206,1,249,22,138,15, -23,201,1,23,198,1,250,2,65,204,205,195,192,28,23,193,2,90,159,39,11, -89,161,39,36,11,248,22,141,15,23,199,2,86,95,23,195,1,23,194,1,27, -28,23,198,2,251,2,66,23,198,2,23,203,2,23,201,2,23,202,2,11,28, -23,193,2,192,86,94,23,193,1,27,28,248,22,184,14,195,27,249,22,138,15, -197,200,28,28,248,22,133,15,193,10,248,22,132,15,193,192,11,11,28,192,192, -28,198,11,251,2,66,198,203,201,202,194,32,69,88,163,8,36,40,58,11,2, -41,222,33,70,28,248,22,87,23,197,2,11,27,248,22,145,15,248,22,80,23, -199,2,27,249,22,138,15,23,196,1,23,197,2,28,248,22,132,15,23,194,2, -250,2,65,198,199,195,86,94,23,193,1,27,248,22,81,23,200,1,28,248,22, -87,23,194,2,11,27,248,22,145,15,248,22,80,23,196,2,27,249,22,138,15, -23,196,1,23,200,2,28,248,22,132,15,23,194,2,250,2,65,201,202,195,86, -94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27,248, -22,145,15,248,22,80,195,27,249,22,138,15,23,196,1,202,28,248,22,132,15, -193,250,2,65,204,205,195,251,2,69,204,205,206,248,22,81,199,86,95,28,28, -248,22,184,14,23,195,2,10,28,248,22,142,7,23,195,2,28,248,22,142,15, -23,195,2,10,248,22,143,15,23,195,2,11,12,250,22,189,9,2,6,2,39, -23,197,2,28,28,23,195,2,28,28,248,22,184,14,23,196,2,10,28,248,22, -142,7,23,196,2,28,248,22,142,15,23,196,2,10,248,22,143,15,23,196,2, -11,248,22,142,15,23,196,2,11,10,12,250,22,189,9,2,6,6,45,45,40, -111,114,47,99,32,35,102,32,40,97,110,100,47,99,32,112,97,116,104,45,115, -116,114,105,110,103,63,32,114,101,108,97,116,105,118,101,45,112,97,116,104,63, -41,41,23,198,2,28,28,248,22,142,15,23,195,2,90,159,39,11,89,161,39, -36,11,248,22,141,15,23,198,2,249,22,152,9,194,2,40,11,27,248,22,162, -8,6,4,4,80,65,84,72,27,28,23,194,2,249,80,158,40,41,23,196,1, -9,86,94,23,194,1,9,27,28,249,22,152,9,247,22,164,8,2,34,249,22, -79,248,22,129,15,5,1,46,23,196,1,23,194,1,28,248,22,87,23,194,2, -11,27,248,22,145,15,248,22,80,23,196,2,27,249,22,138,15,23,196,1,23, -201,2,28,248,22,132,15,23,194,2,250,2,65,202,203,195,86,94,23,193,1, -27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27,248,22,145,15,248, -22,80,23,196,2,27,249,22,138,15,23,196,1,23,204,2,28,248,22,132,15, -23,194,2,250,2,65,205,206,195,86,94,23,193,1,27,248,22,81,23,197,1, -28,248,22,87,23,194,2,11,27,248,22,145,15,248,22,80,195,27,249,22,138, -15,23,196,1,206,28,248,22,132,15,193,250,2,65,23,16,23,17,195,251,2, -69,23,16,23,17,23,18,248,22,81,199,27,248,22,145,15,23,196,1,28,248, -22,132,15,193,250,2,65,198,199,195,11,250,80,159,39,40,39,196,197,11,250, -80,159,39,40,39,196,11,11,32,74,88,163,8,36,39,57,11,2,41,222,33, -76,0,8,35,114,120,35,34,92,34,34,27,249,22,173,15,23,197,2,23,198, -2,28,23,193,2,86,94,23,196,1,27,248,22,104,23,195,2,27,27,248,22, -113,23,197,1,27,249,22,173,15,23,201,2,23,196,2,28,23,193,2,86,94, -23,194,1,27,248,22,104,23,195,2,27,250,2,74,23,203,2,23,204,1,248, -22,113,23,199,1,28,249,22,139,8,23,196,2,2,42,249,22,93,23,202,2, -194,249,22,79,248,22,129,15,28,249,22,152,9,247,22,164,8,2,34,250,22, -185,15,2,75,23,200,1,2,42,23,197,1,194,86,95,23,199,1,23,193,1, -28,249,22,139,8,23,196,2,2,42,249,22,93,23,200,2,9,249,22,79,248, -22,129,15,28,249,22,152,9,247,22,164,8,2,34,250,22,185,15,2,75,23, -200,1,2,42,23,197,1,9,28,249,22,139,8,23,196,2,2,42,249,22,93, -197,194,86,94,23,196,1,249,22,79,248,22,129,15,28,249,22,152,9,247,22, -164,8,2,34,250,22,185,15,2,75,23,200,1,2,42,23,197,1,194,86,94, -23,193,1,28,249,22,139,8,23,198,2,2,42,249,22,93,195,9,86,94,23, -194,1,249,22,79,248,22,129,15,28,249,22,152,9,247,22,164,8,2,34,250, -22,185,15,2,75,23,202,1,2,42,23,199,1,9,86,95,28,28,248,22,131, -8,194,10,248,22,142,7,194,12,250,22,189,9,2,7,6,21,21,40,111,114, -47,99,32,98,121,116,101,115,63,32,115,116,114,105,110,103,63,41,196,28,28, -248,22,88,195,249,22,4,22,184,14,196,11,12,250,22,189,9,2,7,6,14, -14,40,108,105,115,116,111,102,32,112,97,116,104,63,41,197,250,2,74,197,195, -28,248,22,142,7,197,248,22,156,8,197,196,86,94,28,28,248,22,184,14,194, -10,28,248,22,142,7,194,28,248,22,142,15,194,10,248,22,143,15,194,11,12, -250,22,189,9,195,2,39,196,28,248,22,142,15,194,12,251,22,191,9,196,2, -43,2,37,197,86,94,28,28,248,22,184,14,194,10,28,248,22,142,7,194,28, -248,22,142,15,194,10,248,22,143,15,194,11,12,250,22,189,9,195,2,39,196, -28,248,22,142,15,194,12,251,22,191,9,196,2,43,2,37,197,86,94,86,94, -28,28,248,22,184,14,23,195,2,10,28,248,22,142,7,23,195,2,28,248,22, -142,15,23,195,2,10,248,22,143,15,23,195,2,11,12,250,22,189,9,195,2, -39,23,197,2,28,248,22,142,15,23,195,2,12,251,22,191,9,196,2,43,2, -37,23,198,1,249,22,3,88,163,8,36,37,47,11,9,223,2,33,79,196,28, -28,248,22,0,194,249,22,50,195,37,11,12,250,22,189,9,195,2,44,196,86, -94,28,28,248,22,184,14,193,10,28,248,22,142,7,193,28,248,22,142,15,193, -10,248,22,143,15,193,11,12,250,22,189,9,2,11,2,39,195,28,248,22,142, -15,193,12,251,22,191,9,2,11,2,43,2,37,196,86,95,86,94,86,94,28, -28,248,22,184,14,195,10,28,248,22,142,7,195,28,248,22,142,15,195,10,248, -22,143,15,195,11,12,250,22,189,9,2,11,2,39,197,28,248,22,142,15,195, -12,251,22,191,9,2,11,2,43,2,37,198,249,22,3,32,0,88,163,8,36, -37,46,11,9,222,33,82,197,28,28,248,22,0,194,249,22,50,195,37,11,12, -250,22,189,9,2,11,2,44,196,251,80,158,40,46,197,198,199,11,86,94,28, -28,248,22,184,14,193,10,28,248,22,142,7,193,28,248,22,142,15,193,10,248, -22,143,15,193,11,12,250,22,189,9,2,13,2,39,195,28,248,22,142,15,193, -12,251,22,191,9,2,13,2,43,2,37,196,86,96,86,94,28,28,248,22,184, -14,195,10,28,248,22,142,7,195,28,248,22,142,15,195,10,248,22,143,15,195, -11,12,250,22,189,9,2,13,2,39,197,28,248,22,142,15,195,12,251,22,191, -9,2,13,2,43,2,37,198,86,94,86,94,28,28,248,22,184,14,196,10,28, -248,22,142,7,196,28,248,22,142,15,196,10,248,22,143,15,196,11,12,250,22, -189,9,2,13,2,39,198,28,248,22,142,15,196,12,251,22,191,9,2,13,2, -43,2,37,199,249,22,3,32,0,88,163,8,36,37,46,11,9,222,33,84,198, -28,28,248,22,0,194,249,22,50,195,37,11,12,250,22,189,9,2,13,2,44, -196,251,80,158,40,46,197,199,200,198,0,6,45,105,110,102,46,48,27,248,22, -160,15,2,45,27,28,248,22,143,15,23,195,2,193,20,13,159,80,159,38,53, -37,250,80,159,41,54,37,249,22,33,11,80,159,43,53,37,22,161,15,248,22, -160,15,68,111,114,105,103,45,100,105,114,27,248,22,160,15,2,46,250,80,159, -42,40,39,23,196,1,23,198,1,11,28,192,250,22,138,15,195,6,6,6,99, -111,110,102,105,103,6,10,10,108,105,110,107,115,46,114,107,116,100,11,86,94, -28,248,22,188,11,196,27,247,22,148,10,28,249,22,140,10,23,195,2,2,47, -251,22,144,10,23,197,1,2,47,250,22,190,7,2,48,28,23,202,1,80,159, -46,48,38,80,159,46,51,38,248,22,184,11,204,247,22,29,12,12,28,248,22, -188,11,196,248,193,247,22,140,2,195,2,86,86,95,28,248,22,188,11,197,27, -247,22,148,10,28,249,22,140,10,23,195,2,2,47,251,22,144,10,23,197,1, -2,47,250,22,190,7,2,48,28,202,80,159,47,48,38,80,159,47,51,38,248, -22,184,11,205,247,22,29,12,12,28,192,28,194,86,94,20,18,159,11,80,158, -39,49,247,22,140,2,20,18,159,11,80,158,39,50,192,86,94,20,18,159,11, -80,158,39,55,247,22,140,2,20,18,159,11,80,158,39,56,192,12,28,248,22, -188,11,197,248,194,247,22,140,2,196,20,20,94,248,22,139,6,23,194,2,28, -248,22,137,7,248,22,139,6,23,195,1,12,248,22,185,9,6,30,30,101,120, -112,101,99,116,101,100,32,97,32,115,105,110,103,108,101,32,83,45,101,120,112, -114,101,115,115,105,111,110,248,22,191,5,193,28,248,22,88,23,194,2,28,28, -249,22,191,3,38,248,22,92,23,196,2,10,249,22,191,3,39,248,22,92,23, -196,2,28,28,248,22,142,7,248,22,80,23,195,2,10,249,22,152,9,64,114, -111,111,116,248,22,164,17,23,196,2,28,27,248,22,104,194,28,248,22,184,14, -23,194,2,10,28,248,22,142,7,23,194,2,28,248,22,142,15,23,194,2,10, -248,22,143,15,23,194,1,11,27,248,22,87,248,22,106,195,28,192,192,248,22, -186,15,248,22,113,195,11,11,11,11,250,22,158,2,196,197,249,22,79,197,200, -28,28,248,22,87,248,22,106,23,197,2,10,249,22,177,15,248,22,113,23,198, -2,247,22,160,8,27,248,22,147,15,249,22,145,15,248,22,104,23,200,2,23, -198,1,28,248,22,64,248,22,80,23,198,2,86,94,23,196,1,86,94,28,250, -22,160,2,196,11,11,12,250,22,158,2,196,11,9,249,22,164,2,195,88,163, -8,36,38,50,11,9,224,3,2,33,94,27,248,22,67,248,22,164,17,23,199, -1,250,22,158,2,23,198,2,23,196,2,249,22,79,248,22,131,2,23,200,1, -250,22,160,2,23,203,1,23,201,1,9,12,250,22,158,2,195,196,248,22,94, -198,20,13,159,80,159,37,58,37,88,163,36,37,54,8,240,0,144,0,0,9, -225,1,0,2,33,88,27,250,22,155,15,28,23,197,2,80,159,41,48,38,80, -159,41,51,38,11,32,0,88,163,8,36,36,41,11,9,222,33,89,28,249,22, -129,4,23,195,2,28,23,196,2,80,158,40,50,80,158,40,56,20,13,159,80, -159,38,58,37,20,20,94,88,163,36,37,55,8,240,0,240,24,0,9,226,2, -1,3,0,33,90,23,196,1,20,13,159,80,159,38,53,37,26,29,80,159,8, -31,54,37,249,22,33,11,80,159,8,33,53,37,22,154,14,10,22,155,14,10, -22,156,14,10,22,159,14,10,22,158,14,10,22,160,14,10,22,157,14,10,22, -161,14,10,22,162,14,10,22,163,14,10,22,164,14,10,22,165,14,10,22,166, -14,11,22,152,14,11,27,249,22,182,5,28,196,80,159,41,48,38,80,159,41, -51,38,66,98,105,110,97,114,121,27,250,22,46,22,37,88,163,8,36,36,44, -11,9,223,4,33,91,20,20,94,88,163,36,36,43,11,9,223,4,33,92,23, -197,1,86,94,28,28,248,22,88,23,194,2,249,22,4,32,0,88,163,8,36, -37,45,11,9,222,33,93,23,195,2,11,12,248,22,185,9,6,18,18,105,108, -108,45,102,111,114,109,101,100,32,99,111,110,116,101,110,116,27,247,22,140,2, -27,90,159,39,11,89,161,39,36,11,248,22,141,15,28,201,80,159,46,48,38, -80,159,46,51,38,192,86,96,249,22,3,20,20,94,88,163,8,36,37,54,11, -9,224,2,3,33,95,23,195,1,23,197,1,249,22,164,2,195,88,163,8,36, -38,48,11,9,223,3,33,96,28,197,86,94,20,18,159,11,80,158,42,49,193, -20,18,159,11,80,158,42,50,196,86,94,20,18,159,11,80,158,42,55,193,20, -18,159,11,80,158,42,56,196,193,28,193,80,158,38,49,80,158,38,55,248,22, -9,88,163,8,32,37,8,40,8,240,0,240,94,0,9,224,1,2,33,97,0, -7,35,114,120,34,47,43,34,28,248,22,142,7,23,195,2,27,249,22,175,15, -2,99,196,28,192,28,249,22,191,3,248,22,103,195,248,22,181,3,248,22,145, -7,198,249,22,7,250,22,164,7,199,36,248,22,103,198,197,249,22,7,250,22, -164,7,199,36,248,22,103,198,249,22,79,249,22,164,7,200,248,22,105,199,199, -249,22,7,196,197,90,159,39,11,89,161,39,36,11,248,22,141,15,23,198,1, -86,94,23,195,1,28,249,22,152,9,23,195,2,2,40,249,22,7,195,199,27, -249,22,79,23,197,1,23,201,1,28,248,22,142,7,23,195,2,27,249,22,175, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,49,46,49,48,84,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,126,0,0,0,1,0,0,8,0,21, +0,26,0,43,0,55,0,77,0,106,0,121,0,139,0,151,0,167,0,181,0, +203,0,219,0,236,0,2,1,13,1,19,1,28,1,35,1,42,1,54,1,70, +1,94,1,126,1,144,1,164,1,180,1,198,1,229,1,243,1,4,2,48,2, +56,2,61,2,105,2,112,2,122,2,137,2,146,2,151,2,153,2,177,2,198, +2,211,2,221,2,227,2,16,3,19,3,23,3,32,3,56,3,95,3,109,3, +119,3,130,3,171,3,194,3,202,3,226,3,247,3,191,4,221,4,90,8,113, +8,130,8,78,10,181,10,195,10,99,11,22,13,31,13,40,13,54,13,64,13, +105,14,208,14,7,15,62,15,149,15,170,15,227,15,80,16,137,16,47,17,55, +17,161,17,236,17,238,17,106,18,166,18,171,18,39,19,50,19,188,19,198,19, +124,21,146,21,155,21,148,22,166,22,180,22,201,22,213,22,5,23,12,23,30, +23,81,23,94,23,157,25,68,26,213,26,198,27,180,28,187,28,194,28,56,29, +174,29,18,31,99,31,182,31,11,32,202,32,228,32,101,33,0,0,22,38,0, +0,67,35,37,117,116,105,108,115,72,112,97,116,104,45,115,116,114,105,110,103, +63,64,98,115,98,115,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97, +116,104,71,114,101,114,111,111,116,45,112,97,116,104,1,20,102,105,110,100,45, +101,120,101,99,117,116,97,98,108,101,45,112,97,116,104,1,27,112,97,116,104, +45,108,105,115,116,45,115,116,114,105,110,103,45,62,112,97,116,104,45,108,105, +115,116,74,45,99,104,101,99,107,45,114,101,108,112,97,116,104,77,45,99,104, +101,99,107,45,99,111,108,108,101,99,116,105,111,110,71,45,99,104,101,99,107, +45,102,97,105,108,75,99,111,108,108,101,99,116,105,111,110,45,112,97,116,104, +73,102,105,110,100,45,99,111,108,45,102,105,108,101,1,20,99,111,108,108,101, +99,116,105,111,110,45,102,105,108,101,45,112,97,116,104,75,117,115,101,114,45, +108,105,110,107,115,45,112,97,116,104,76,117,115,101,114,45,108,105,110,107,115, +45,99,97,99,104,101,1,20,117,115,101,114,45,108,105,110,107,115,45,116,105, +109,101,115,116,97,109,112,70,108,105,110,107,115,45,112,97,116,104,65,113,117, +111,116,101,68,35,37,112,97,114,97,109,122,29,94,2,18,2,19,11,29,94, +2,18,2,19,11,71,108,105,110,107,115,45,99,97,99,104,101,75,108,105,110, +107,115,45,116,105,109,101,115,116,97,109,112,1,22,103,101,116,45,108,105,110, +107,101,100,45,99,111,108,108,101,99,116,105,111,110,115,1,30,110,111,114,109, +97,108,105,122,101,45,99,111,108,108,101,99,116,105,111,110,45,114,101,102,101, +114,101,110,99,101,77,99,104,101,99,107,45,115,117,102,102,105,120,45,99,97, +108,108,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105, +120,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,77,108,111,97, +100,47,117,115,101,45,99,111,109,112,105,108,101,100,1,29,102,105,110,100,45, +108,105,98,114,97,114,121,45,99,111,108,108,101,99,116,105,111,110,45,112,97, +116,104,115,73,101,109,98,101,100,100,101,100,45,108,111,97,100,76,110,111,114, +109,97,108,45,112,97,116,104,45,99,97,115,101,6,41,41,40,111,114,47,99, +32,112,97,116,104,45,102,111,114,45,115,111,109,101,45,115,121,115,116,101,109, +63,32,112,97,116,104,45,115,116,114,105,110,103,63,41,67,119,105,110,100,111, +119,115,6,2,2,92,49,6,41,41,40,111,114,47,99,32,112,97,116,104,45, +115,116,114,105,110,103,63,32,112,97,116,104,45,102,111,114,45,115,111,109,101, +45,115,121,115,116,101,109,63,41,6,4,4,112,97,116,104,5,8,92,92,63, +92,82,69,76,92,6,12,12,112,97,116,104,45,115,116,114,105,110,103,63,68, +114,101,108,97,116,105,118,101,64,108,111,111,112,5,0,6,21,21,105,110,118, +97,108,105,100,32,114,101,108,97,116,105,118,101,32,112,97,116,104,6,18,18, +40,97,110,121,47,99,32,46,32,45,62,32,46,32,97,110,121,41,72,99,111, +108,108,101,99,116,115,45,100,105,114,69,101,120,101,99,45,102,105,108,101,65, +101,114,114,111,114,6,42,42,101,114,114,111,114,32,114,101,97,100,105,110,103, +32,99,111,108,108,101,99,116,105,111,110,32,108,105,110,107,115,32,102,105,108, +101,32,126,115,58,32,126,97,6,0,0,6,1,1,47,6,6,6,10,32,32, +32,126,97,6,21,21,40,111,114,47,99,32,115,116,114,105,110,103,63,32,98, +121,116,101,115,63,41,6,36,36,99,97,110,110,111,116,32,97,100,100,32,97, +32,115,117,102,102,105,120,32,116,111,32,97,32,114,111,111,116,32,112,97,116, +104,58,32,6,11,11,80,76,84,67,79,76,76,69,67,84,83,69,97,100,100, +111,110,45,100,105,114,6,8,8,99,111,108,108,101,99,116,115,27,248,22,187, +14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,142,7,23,195, +2,27,248,22,145,15,195,28,192,192,248,22,146,15,195,11,0,21,35,114,120, +34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,93,34,0,6,35, +114,120,34,47,34,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43, +91,47,92,92,93,42,36,34,0,19,35,114,120,34,91,32,46,93,43,40,91, +47,92,92,93,42,41,36,34,86,94,28,28,248,22,188,14,23,195,2,10,28, +248,22,187,14,23,195,2,10,28,248,22,142,7,23,195,2,28,248,22,145,15, +23,195,2,10,248,22,146,15,23,195,2,11,12,250,22,189,9,2,32,2,33, +23,197,2,28,28,248,22,188,14,23,195,2,249,22,152,9,248,22,189,14,23, +197,2,2,34,249,22,152,9,247,22,164,8,2,34,27,28,248,22,142,7,23, +196,2,23,195,2,248,22,154,8,248,22,128,15,23,197,2,28,249,22,180,15, +2,58,23,195,2,28,248,22,142,7,195,248,22,131,15,195,194,27,248,22,181, +7,23,195,1,249,22,132,15,248,22,157,8,250,22,188,15,2,59,28,249,22, +180,15,2,60,23,201,2,23,199,1,250,22,188,15,2,61,23,202,1,2,35, +80,159,44,37,38,2,34,28,248,22,142,7,194,248,22,131,15,194,193,0,28, +35,114,120,34,94,92,92,92,92,92,92,92,92,91,63,93,92,92,92,92,85, +78,67,92,92,92,92,34,86,95,28,28,28,248,22,187,14,23,195,2,10,28, +248,22,142,7,23,195,2,28,248,22,145,15,23,195,2,10,248,22,146,15,23, +195,2,11,10,248,22,188,14,23,195,2,12,252,22,189,9,2,5,2,36,36, +23,199,2,23,200,2,28,28,28,248,22,187,14,23,196,2,10,28,248,22,142, +7,23,196,2,28,248,22,145,15,23,196,2,10,248,22,146,15,23,196,2,11, +10,248,22,188,14,23,196,2,12,252,22,189,9,2,5,2,36,37,23,199,2, +23,200,2,27,28,248,22,188,14,23,196,2,248,22,189,14,23,196,2,247,22, +190,14,86,95,28,28,248,22,147,15,23,196,2,10,249,22,152,9,247,22,190, +14,23,195,2,12,253,22,191,9,2,5,6,54,54,112,97,116,104,32,105,115, +32,110,111,116,32,99,111,109,112,108,101,116,101,32,97,110,100,32,110,111,116, +32,116,104,101,32,112,108,97,116,102,111,114,109,39,115,32,99,111,110,118,101, +110,116,105,111,110,2,37,23,201,2,6,24,24,112,108,97,116,102,111,114,109, +32,99,111,110,118,101,110,116,105,111,110,32,116,121,112,101,247,22,190,14,28, +249,22,152,9,28,248,22,188,14,23,199,2,248,22,189,14,23,199,2,247,22, +190,14,23,195,2,12,253,22,191,9,2,5,6,37,37,103,105,118,101,110,32, +112,97,116,104,115,32,117,115,101,32,100,105,102,102,101,114,101,110,116,32,99, +111,110,118,101,110,116,105,111,110,115,2,37,23,201,2,6,9,9,114,111,111, +116,32,112,97,116,104,23,202,2,27,27,248,22,151,15,28,248,22,147,15,23, +199,2,23,198,1,248,22,148,15,23,199,1,86,94,28,28,248,22,188,14,23, +194,2,10,28,248,22,187,14,23,194,2,10,28,248,22,142,7,23,194,2,28, +248,22,145,15,23,194,2,10,248,22,146,15,23,194,2,11,12,250,22,189,9, +2,32,2,33,23,196,2,28,28,248,22,188,14,23,194,2,249,22,152,9,248, +22,189,14,23,196,2,2,34,249,22,152,9,247,22,164,8,2,34,27,28,248, +22,142,7,23,195,2,23,194,2,248,22,154,8,248,22,128,15,23,196,2,28, +249,22,180,15,2,58,23,195,2,86,94,23,193,1,28,248,22,142,7,23,195, +2,248,22,131,15,23,195,1,193,27,248,22,181,7,23,195,1,249,22,132,15, +248,22,157,8,250,22,188,15,2,59,28,249,22,180,15,2,60,23,201,2,23, +199,1,250,22,188,15,2,61,23,202,1,2,35,80,159,47,37,38,2,34,28, +248,22,142,7,23,194,2,248,22,131,15,23,194,1,192,27,248,22,128,15,23, +195,2,28,249,22,152,9,23,197,2,64,117,110,105,120,28,249,22,139,8,23, +195,1,5,1,47,28,248,22,188,14,198,197,248,22,131,15,198,249,22,141,15, +23,200,1,249,22,132,15,249,22,142,8,248,22,128,15,23,201,1,37,23,199, +1,28,249,22,152,9,23,197,2,2,34,249,22,141,15,23,200,1,249,22,132, +15,28,249,22,180,15,0,27,35,114,120,34,94,92,92,92,92,92,92,92,92, +91,63,93,92,92,92,92,91,97,45,122,93,58,34,23,199,2,251,22,143,8, +2,38,250,22,142,8,23,204,2,40,41,5,1,92,249,22,142,8,23,203,1, +42,28,249,22,180,15,2,63,23,199,2,249,22,143,8,2,38,249,22,142,8, +23,201,1,40,28,249,22,180,15,2,63,23,199,2,249,22,143,8,2,38,249, +22,142,8,23,201,1,40,28,249,22,180,15,0,14,35,114,120,34,94,92,92, +92,92,92,92,92,92,34,23,199,2,249,22,143,8,5,4,85,78,67,92,249, +22,142,8,23,201,1,38,28,249,22,180,15,0,12,35,114,120,34,94,91,97, +45,122,93,58,34,23,199,2,249,22,143,8,250,22,142,8,23,202,2,36,37, +249,22,142,8,23,201,1,38,86,94,23,197,1,12,23,199,1,12,32,65,88, +163,8,36,39,53,11,70,102,111,117,110,100,45,101,120,101,99,222,33,68,32, +66,88,163,8,36,40,58,11,64,110,101,120,116,222,33,67,27,248,22,149,15, +23,196,2,28,249,22,154,9,23,195,2,23,197,1,11,28,248,22,145,15,23, +194,2,27,249,22,141,15,23,197,1,23,196,1,28,23,197,2,90,159,39,11, +89,161,39,36,11,248,22,144,15,23,197,2,86,95,23,195,1,23,194,1,27, +28,23,202,2,27,248,22,149,15,23,199,2,28,249,22,154,9,23,195,2,23, +200,2,11,28,248,22,145,15,23,194,2,250,2,65,23,205,2,23,206,2,249, +22,141,15,23,200,2,23,198,1,250,2,65,23,205,2,23,206,2,23,196,1, +11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,187,14,23,196,2,27, +249,22,141,15,23,198,2,23,205,2,28,28,248,22,136,15,193,10,248,22,135, +15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,203,2,11,27, +248,22,149,15,23,200,2,28,249,22,154,9,23,195,2,23,201,1,11,28,248, +22,145,15,23,194,2,250,2,65,23,206,1,23,207,1,249,22,141,15,23,201, +1,23,198,1,250,2,65,205,206,195,192,86,94,23,194,1,28,23,196,2,90, +159,39,11,89,161,39,36,11,248,22,144,15,23,197,2,86,95,23,195,1,23, +194,1,27,28,23,201,2,27,248,22,149,15,23,199,2,28,249,22,154,9,23, +195,2,23,200,2,11,28,248,22,145,15,23,194,2,250,2,65,23,204,2,23, +205,2,249,22,141,15,23,200,2,23,198,1,250,2,65,23,204,2,23,205,2, +23,196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,187,14,23, +196,2,27,249,22,141,15,23,198,2,23,204,2,28,28,248,22,136,15,193,10, +248,22,135,15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,202, +2,11,27,248,22,149,15,23,200,2,28,249,22,154,9,23,195,2,23,201,1, +11,28,248,22,145,15,23,194,2,250,2,65,23,205,1,23,206,1,249,22,141, +15,23,201,1,23,198,1,250,2,65,204,205,195,192,28,23,193,2,90,159,39, +11,89,161,39,36,11,248,22,144,15,23,199,2,86,95,23,195,1,23,194,1, +27,28,23,198,2,251,2,66,23,198,2,23,203,2,23,201,2,23,202,2,11, +28,23,193,2,192,86,94,23,193,1,27,28,248,22,187,14,195,27,249,22,141, +15,197,200,28,28,248,22,136,15,193,10,248,22,135,15,193,192,11,11,28,192, +192,28,198,11,251,2,66,198,203,201,202,194,32,69,88,163,8,36,40,58,11, +2,41,222,33,70,28,248,22,87,23,197,2,11,27,248,22,148,15,248,22,80, +23,199,2,27,249,22,141,15,23,196,1,23,197,2,28,248,22,135,15,23,194, +2,250,2,65,198,199,195,86,94,23,193,1,27,248,22,81,23,200,1,28,248, +22,87,23,194,2,11,27,248,22,148,15,248,22,80,23,196,2,27,249,22,141, +15,23,196,1,23,200,2,28,248,22,135,15,23,194,2,250,2,65,201,202,195, +86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27, +248,22,148,15,248,22,80,195,27,249,22,141,15,23,196,1,202,28,248,22,135, +15,193,250,2,65,204,205,195,251,2,69,204,205,206,248,22,81,199,86,95,28, +28,248,22,187,14,23,195,2,10,28,248,22,142,7,23,195,2,28,248,22,145, +15,23,195,2,10,248,22,146,15,23,195,2,11,12,250,22,189,9,2,6,2, +39,23,197,2,28,28,23,195,2,28,28,248,22,187,14,23,196,2,10,28,248, +22,142,7,23,196,2,28,248,22,145,15,23,196,2,10,248,22,146,15,23,196, +2,11,248,22,145,15,23,196,2,11,10,12,250,22,189,9,2,6,6,45,45, +40,111,114,47,99,32,35,102,32,40,97,110,100,47,99,32,112,97,116,104,45, +115,116,114,105,110,103,63,32,114,101,108,97,116,105,118,101,45,112,97,116,104, +63,41,41,23,198,2,28,28,248,22,145,15,23,195,2,90,159,39,11,89,161, +39,36,11,248,22,144,15,23,198,2,249,22,152,9,194,2,40,11,27,248,22, +162,8,6,4,4,80,65,84,72,27,28,23,194,2,249,80,158,40,41,23,196, +1,9,86,94,23,194,1,9,27,28,249,22,152,9,247,22,164,8,2,34,249, +22,79,248,22,132,15,5,1,46,23,196,1,23,194,1,28,248,22,87,23,194, +2,11,27,248,22,148,15,248,22,80,23,196,2,27,249,22,141,15,23,196,1, +23,201,2,28,248,22,135,15,23,194,2,250,2,65,202,203,195,86,94,23,193, +1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27,248,22,148,15, +248,22,80,23,196,2,27,249,22,141,15,23,196,1,23,204,2,28,248,22,135, +15,23,194,2,250,2,65,205,206,195,86,94,23,193,1,27,248,22,81,23,197, +1,28,248,22,87,23,194,2,11,27,248,22,148,15,248,22,80,195,27,249,22, +141,15,23,196,1,206,28,248,22,135,15,193,250,2,65,23,16,23,17,195,251, +2,69,23,16,23,17,23,18,248,22,81,199,27,248,22,148,15,23,196,1,28, +248,22,135,15,193,250,2,65,198,199,195,11,250,80,159,39,40,39,196,197,11, +250,80,159,39,40,39,196,11,11,32,74,88,163,8,36,39,57,11,2,41,222, +33,76,0,8,35,114,120,35,34,92,34,34,27,249,22,176,15,23,197,2,23, +198,2,28,23,193,2,86,94,23,196,1,27,248,22,104,23,195,2,27,27,248, +22,113,23,197,1,27,249,22,176,15,23,201,2,23,196,2,28,23,193,2,86, +94,23,194,1,27,248,22,104,23,195,2,27,250,2,74,23,203,2,23,204,1, +248,22,113,23,199,1,28,249,22,139,8,23,196,2,2,42,249,22,93,23,202, +2,194,249,22,79,248,22,132,15,28,249,22,152,9,247,22,164,8,2,34,250, +22,188,15,2,75,23,200,1,2,42,23,197,1,194,86,95,23,199,1,23,193, +1,28,249,22,139,8,23,196,2,2,42,249,22,93,23,200,2,9,249,22,79, +248,22,132,15,28,249,22,152,9,247,22,164,8,2,34,250,22,188,15,2,75, +23,200,1,2,42,23,197,1,9,28,249,22,139,8,23,196,2,2,42,249,22, +93,197,194,86,94,23,196,1,249,22,79,248,22,132,15,28,249,22,152,9,247, +22,164,8,2,34,250,22,188,15,2,75,23,200,1,2,42,23,197,1,194,86, +94,23,193,1,28,249,22,139,8,23,198,2,2,42,249,22,93,195,9,86,94, +23,194,1,249,22,79,248,22,132,15,28,249,22,152,9,247,22,164,8,2,34, +250,22,188,15,2,75,23,202,1,2,42,23,199,1,9,86,95,28,28,248,22, +131,8,194,10,248,22,142,7,194,12,250,22,189,9,2,7,6,21,21,40,111, +114,47,99,32,98,121,116,101,115,63,32,115,116,114,105,110,103,63,41,196,28, +28,248,22,88,195,249,22,4,22,187,14,196,11,12,250,22,189,9,2,7,6, +14,14,40,108,105,115,116,111,102,32,112,97,116,104,63,41,197,250,2,74,197, +195,28,248,22,142,7,197,248,22,156,8,197,196,86,94,28,28,248,22,187,14, +194,10,28,248,22,142,7,194,28,248,22,145,15,194,10,248,22,146,15,194,11, +12,250,22,189,9,195,2,39,196,28,248,22,145,15,194,12,251,22,191,9,196, +2,43,2,37,197,86,94,28,28,248,22,187,14,194,10,28,248,22,142,7,194, +28,248,22,145,15,194,10,248,22,146,15,194,11,12,250,22,189,9,195,2,39, +196,28,248,22,145,15,194,12,251,22,191,9,196,2,43,2,37,197,86,94,86, +94,28,28,248,22,187,14,23,195,2,10,28,248,22,142,7,23,195,2,28,248, +22,145,15,23,195,2,10,248,22,146,15,23,195,2,11,12,250,22,189,9,195, +2,39,23,197,2,28,248,22,145,15,23,195,2,12,251,22,191,9,196,2,43, +2,37,23,198,1,249,22,3,88,163,8,36,37,47,11,9,223,2,33,79,196, +28,28,248,22,0,194,249,22,50,195,37,11,12,250,22,189,9,195,2,44,196, +86,94,28,28,248,22,187,14,193,10,28,248,22,142,7,193,28,248,22,145,15, +193,10,248,22,146,15,193,11,12,250,22,189,9,2,11,2,39,195,28,248,22, +145,15,193,12,251,22,191,9,2,11,2,43,2,37,196,86,95,86,94,86,94, +28,28,248,22,187,14,195,10,28,248,22,142,7,195,28,248,22,145,15,195,10, +248,22,146,15,195,11,12,250,22,189,9,2,11,2,39,197,28,248,22,145,15, +195,12,251,22,191,9,2,11,2,43,2,37,198,249,22,3,32,0,88,163,8, +36,37,46,11,9,222,33,82,197,28,28,248,22,0,194,249,22,50,195,37,11, +12,250,22,189,9,2,11,2,44,196,251,80,158,40,46,197,198,199,11,86,94, +28,28,248,22,187,14,193,10,28,248,22,142,7,193,28,248,22,145,15,193,10, +248,22,146,15,193,11,12,250,22,189,9,2,13,2,39,195,28,248,22,145,15, +193,12,251,22,191,9,2,13,2,43,2,37,196,86,96,86,94,28,28,248,22, +187,14,195,10,28,248,22,142,7,195,28,248,22,145,15,195,10,248,22,146,15, +195,11,12,250,22,189,9,2,13,2,39,197,28,248,22,145,15,195,12,251,22, +191,9,2,13,2,43,2,37,198,86,94,86,94,28,28,248,22,187,14,196,10, +28,248,22,142,7,196,28,248,22,145,15,196,10,248,22,146,15,196,11,12,250, +22,189,9,2,13,2,39,198,28,248,22,145,15,196,12,251,22,191,9,2,13, +2,43,2,37,199,249,22,3,32,0,88,163,8,36,37,46,11,9,222,33,84, +198,28,28,248,22,0,194,249,22,50,195,37,11,12,250,22,189,9,2,13,2, +44,196,251,80,158,40,46,197,199,200,198,0,6,45,105,110,102,46,48,27,248, +22,163,15,2,45,27,28,248,22,146,15,23,195,2,193,20,13,159,80,159,38, +53,37,250,80,159,41,54,37,249,22,33,11,80,159,43,53,37,22,164,15,248, +22,163,15,68,111,114,105,103,45,100,105,114,27,248,22,163,15,2,46,250,80, +159,42,40,39,23,196,1,23,198,1,11,28,192,250,22,141,15,195,6,6,6, +99,111,110,102,105,103,6,10,10,108,105,110,107,115,46,114,107,116,100,11,86, +94,28,248,22,188,11,196,27,247,22,148,10,28,249,22,140,10,23,195,2,2, +47,251,22,144,10,23,197,1,2,47,250,22,190,7,2,48,28,23,202,1,80, +159,46,48,38,80,159,46,51,38,248,22,184,11,204,247,22,29,12,12,28,248, +22,188,11,196,248,193,247,22,140,2,195,2,86,86,95,28,248,22,188,11,197, +27,247,22,148,10,28,249,22,140,10,23,195,2,2,47,251,22,144,10,23,197, +1,2,47,250,22,190,7,2,48,28,202,80,159,47,48,38,80,159,47,51,38, +248,22,184,11,205,247,22,29,12,12,28,192,28,194,86,94,20,18,159,11,80, +158,39,49,247,22,140,2,20,18,159,11,80,158,39,50,192,86,94,20,18,159, +11,80,158,39,55,247,22,140,2,20,18,159,11,80,158,39,56,192,12,28,248, +22,188,11,197,248,194,247,22,140,2,196,20,20,94,248,22,139,6,23,194,2, +28,248,22,137,7,248,22,139,6,23,195,1,12,248,22,185,9,6,30,30,101, +120,112,101,99,116,101,100,32,97,32,115,105,110,103,108,101,32,83,45,101,120, +112,114,101,115,115,105,111,110,248,22,191,5,193,28,248,22,88,23,194,2,28, +28,249,22,191,3,38,248,22,92,23,196,2,10,249,22,191,3,39,248,22,92, +23,196,2,28,28,248,22,142,7,248,22,80,23,195,2,10,249,22,152,9,64, +114,111,111,116,248,22,167,17,23,196,2,28,27,248,22,104,194,28,248,22,187, +14,23,194,2,10,28,248,22,142,7,23,194,2,28,248,22,145,15,23,194,2, +10,248,22,146,15,23,194,1,11,27,248,22,87,248,22,106,195,28,192,192,248, +22,189,15,248,22,113,195,11,11,11,11,250,22,158,2,196,197,249,22,79,197, +200,28,28,248,22,87,248,22,106,23,197,2,10,249,22,180,15,248,22,113,23, +198,2,247,22,160,8,27,248,22,150,15,249,22,148,15,248,22,104,23,200,2, +23,198,1,28,248,22,64,248,22,80,23,198,2,86,94,23,196,1,86,94,28, +250,22,160,2,196,11,11,12,250,22,158,2,196,11,9,249,22,164,2,195,88, +163,8,36,38,50,11,9,224,3,2,33,94,27,248,22,67,248,22,167,17,23, +199,1,250,22,158,2,23,198,2,23,196,2,249,22,79,248,22,131,2,23,200, +1,250,22,160,2,23,203,1,23,201,1,9,12,250,22,158,2,195,196,248,22, +94,198,20,13,159,80,159,37,58,37,88,163,36,37,54,8,240,0,144,0,0, +9,225,1,0,2,33,88,27,250,22,158,15,28,23,197,2,80,159,41,48,38, +80,159,41,51,38,11,32,0,88,163,8,36,36,41,11,9,222,33,89,28,249, +22,129,4,23,195,2,28,23,196,2,80,158,40,50,80,158,40,56,20,13,159, +80,159,38,58,37,20,20,94,88,163,36,37,55,8,240,0,240,24,0,9,226, +2,1,3,0,33,90,23,196,1,20,13,159,80,159,38,53,37,26,29,80,159, +8,31,54,37,249,22,33,11,80,159,8,33,53,37,22,157,14,10,22,158,14, +10,22,159,14,10,22,162,14,10,22,161,14,10,22,163,14,10,22,160,14,10, +22,164,14,10,22,165,14,10,22,166,14,10,22,167,14,10,22,168,14,10,22, +169,14,11,22,155,14,11,27,249,22,182,5,28,196,80,159,41,48,38,80,159, +41,51,38,66,98,105,110,97,114,121,27,250,22,46,22,37,88,163,8,36,36, +44,11,9,223,4,33,91,20,20,94,88,163,36,36,43,11,9,223,4,33,92, +23,197,1,86,94,28,28,248,22,88,23,194,2,249,22,4,32,0,88,163,8, +36,37,45,11,9,222,33,93,23,195,2,11,12,248,22,185,9,6,18,18,105, +108,108,45,102,111,114,109,101,100,32,99,111,110,116,101,110,116,27,247,22,140, +2,27,90,159,39,11,89,161,39,36,11,248,22,144,15,28,201,80,159,46,48, +38,80,159,46,51,38,192,86,96,249,22,3,20,20,94,88,163,8,36,37,54, +11,9,224,2,3,33,95,23,195,1,23,197,1,249,22,164,2,195,88,163,8, +36,38,48,11,9,223,3,33,96,28,197,86,94,20,18,159,11,80,158,42,49, +193,20,18,159,11,80,158,42,50,196,86,94,20,18,159,11,80,158,42,55,193, +20,18,159,11,80,158,42,56,196,193,28,193,80,158,38,49,80,158,38,55,248, +22,9,88,163,8,32,37,8,40,8,240,0,240,94,0,9,224,1,2,33,97, +0,7,35,114,120,34,47,43,34,28,248,22,142,7,23,195,2,27,249,22,178, 15,2,99,196,28,192,28,249,22,191,3,248,22,103,195,248,22,181,3,248,22, -145,7,198,249,22,7,250,22,164,7,199,36,248,22,103,198,195,249,22,7,250, +145,7,198,249,22,7,250,22,164,7,199,36,248,22,103,198,197,249,22,7,250, 22,164,7,199,36,248,22,103,198,249,22,79,249,22,164,7,200,248,22,105,199, -197,249,22,7,196,195,90,159,39,11,89,161,39,36,11,248,22,141,15,23,198, -1,28,249,22,152,9,194,2,40,249,22,7,195,197,249,80,159,45,59,39,194, -249,22,79,197,199,32,101,88,163,36,43,8,27,11,65,99,108,111,111,112,222, -33,110,32,102,88,163,8,36,37,47,11,2,41,222,33,105,32,103,88,163,36, -37,43,11,69,116,111,45,115,116,114,105,110,103,222,33,104,28,248,22,184,14, -193,248,22,188,14,193,192,28,248,22,87,248,22,81,23,195,2,248,22,89,248, -2,103,248,22,164,17,23,196,1,250,22,90,248,2,103,248,22,164,17,23,198, -2,2,50,248,2,102,248,22,165,17,23,198,1,249,22,190,7,2,51,194,32, -107,88,163,36,38,48,11,66,102,105,108,116,101,114,222,33,108,28,248,22,87, -23,195,2,9,28,248,23,194,2,248,22,80,23,196,2,249,22,79,248,22,164, -17,23,197,2,249,2,107,23,197,1,248,22,165,17,23,199,1,249,2,107,194, -248,22,165,17,196,249,22,190,7,2,51,248,22,134,2,23,196,1,28,248,22, -87,23,199,2,86,94,23,198,1,28,23,199,2,28,196,249,22,138,15,200,198, -198,27,28,248,22,87,23,197,2,2,49,249,22,1,22,165,7,248,2,102,23, -199,2,248,23,198,1,251,22,190,7,6,70,70,99,111,108,108,101,99,116,105, -111,110,32,110,111,116,32,102,111,117,110,100,10,32,32,99,111,108,108,101,99, -116,105,111,110,58,32,126,115,10,32,32,105,110,32,99,111,108,108,101,99,116, -105,111,110,32,100,105,114,101,99,116,111,114,105,101,115,58,126,97,126,97,28, -248,22,87,23,202,1,248,2,103,23,201,1,250,22,165,7,248,2,103,23,204, -1,2,50,23,201,2,249,22,1,22,165,7,249,22,2,32,0,88,163,8,36, -37,44,11,9,222,33,106,249,2,107,22,184,14,23,205,2,28,249,22,5,22, -133,2,23,201,2,250,22,190,7,6,49,49,10,32,32,32,115,117,98,45,99, -111,108,108,101,99,116,105,111,110,58,32,126,115,10,32,32,105,110,32,112,97, -114,101,110,116,32,100,105,114,101,99,116,111,114,105,101,115,58,126,97,23,201, -1,249,22,1,22,165,7,249,22,2,32,0,88,163,8,36,37,45,11,9,222, -33,109,249,2,107,22,133,2,23,208,1,86,95,23,199,1,23,198,1,2,49, -27,248,22,80,23,200,2,27,28,248,22,184,14,23,195,2,249,22,138,15,23, -196,1,23,198,2,248,22,134,2,23,195,1,28,28,248,22,184,14,248,22,80, -23,202,2,248,22,133,15,23,194,2,10,27,250,22,1,22,138,15,23,197,1, -23,201,2,28,28,248,22,87,23,199,2,10,248,22,133,15,23,194,2,28,23, -200,2,28,28,248,22,132,15,249,22,138,15,195,202,10,27,28,248,22,184,14, -201,248,22,188,14,201,200,19,248,22,145,7,23,195,2,27,28,249,22,131,4, -23,196,4,40,28,249,22,148,7,6,4,4,46,114,107,116,249,22,164,7,23, -199,2,249,22,183,3,23,200,4,40,249,22,165,7,250,22,164,7,23,200,1, -36,249,22,183,3,23,201,4,40,6,3,3,46,115,115,86,95,23,195,1,23, -194,1,11,11,28,23,193,2,248,22,132,15,249,22,138,15,198,23,196,1,11, -2,28,199,249,22,138,15,194,201,192,254,2,101,202,203,204,205,206,248,22,81, -23,16,28,23,16,23,16,199,28,199,249,22,138,15,194,201,192,254,2,101,202, -203,204,205,206,248,22,81,23,16,23,16,254,2,101,201,202,203,204,205,248,22, -81,23,15,23,15,90,159,38,11,89,161,38,36,11,249,80,159,40,59,39,23, -199,1,23,200,1,27,248,22,67,28,248,22,184,14,195,248,22,188,14,195,194, -27,247,22,166,15,27,250,22,93,28,23,197,2,28,247,22,165,15,27,248,80, -159,46,57,39,10,27,250,22,160,2,23,197,2,23,203,2,11,28,23,193,2, -192,86,94,23,193,1,250,22,160,2,23,197,1,11,9,9,9,28,23,197,1, -28,80,159,44,51,38,27,248,80,159,46,57,39,11,27,250,22,160,2,23,197, -2,23,203,1,11,28,23,193,2,192,86,94,23,193,1,250,22,160,2,23,197, -1,11,9,86,94,23,198,1,9,9,247,22,162,15,254,2,101,199,202,203,205, -23,16,199,11,86,95,28,28,248,22,185,14,23,194,2,10,28,248,22,184,14, -23,194,2,10,28,248,22,142,7,23,194,2,28,248,22,142,15,23,194,2,10, -248,22,143,15,23,194,2,11,12,252,22,189,9,23,200,2,2,33,36,23,198, -2,23,199,2,28,28,248,22,142,7,23,195,2,10,248,22,131,8,23,195,2, -86,94,23,194,1,12,252,22,189,9,23,200,2,2,52,37,23,198,2,23,199, -1,90,159,39,11,89,161,39,36,11,248,22,141,15,23,197,2,86,94,23,195, -1,86,94,28,192,12,250,22,128,10,23,201,1,2,53,23,199,1,249,22,7, -194,195,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,185,14,23,196, -2,10,28,248,22,184,14,23,196,2,10,28,248,22,142,7,23,196,2,28,248, -22,142,15,23,196,2,10,248,22,143,15,23,196,2,11,12,252,22,189,9,2, -27,2,33,36,23,200,2,23,201,2,28,28,248,22,142,7,23,197,2,10,248, -22,131,8,23,197,2,12,252,22,189,9,2,27,2,52,37,23,200,2,23,201, -2,90,159,39,11,89,161,39,36,11,248,22,141,15,23,199,2,86,94,23,195, -1,86,94,28,192,12,250,22,128,10,2,27,2,53,23,201,2,249,22,7,194, -195,27,249,22,130,15,250,22,184,15,0,20,35,114,120,35,34,40,63,58,91, -46,93,91,94,46,93,42,124,41,36,34,248,22,190,14,23,201,1,28,248,22, -142,7,23,203,2,249,22,157,8,23,204,1,8,63,23,202,1,28,248,22,185, -14,23,199,2,248,22,186,14,23,199,1,86,94,23,198,1,247,22,187,14,28, -248,22,184,14,194,249,22,138,15,195,194,192,90,159,38,11,89,161,38,36,11, -86,95,28,28,248,22,185,14,23,196,2,10,28,248,22,184,14,23,196,2,10, -28,248,22,142,7,23,196,2,28,248,22,142,15,23,196,2,10,248,22,143,15, -23,196,2,11,12,252,22,189,9,2,28,2,33,36,23,200,2,23,201,2,28, -28,248,22,142,7,23,197,2,10,248,22,131,8,23,197,2,12,252,22,189,9, -2,28,2,52,37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248, -22,141,15,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,128,10,2, -28,2,53,23,201,2,249,22,7,194,195,27,249,22,130,15,249,22,143,8,250, -22,185,15,0,9,35,114,120,35,34,91,46,93,34,248,22,190,14,23,203,1, -6,1,1,95,28,248,22,142,7,23,202,2,249,22,157,8,23,203,1,8,63, -23,201,1,28,248,22,185,14,23,199,2,248,22,186,14,23,199,1,86,94,23, -198,1,247,22,187,14,28,248,22,184,14,194,249,22,138,15,195,194,192,249,247, -22,171,5,194,11,249,247,22,171,5,194,11,28,248,22,87,23,195,2,9,27, -248,22,80,23,196,2,27,28,248,22,144,15,23,195,2,23,194,1,28,248,22, -143,15,23,195,2,249,22,145,15,23,196,1,250,80,159,43,40,39,248,22,160, -15,2,46,11,10,250,80,159,41,40,39,248,22,160,15,2,46,23,197,1,10, -28,23,193,2,249,22,79,248,22,147,15,249,22,145,15,23,198,1,247,22,161, -15,248,80,159,41,8,30,39,248,22,81,23,200,1,248,80,159,39,8,30,39, -248,22,81,197,28,248,22,87,23,195,2,9,27,248,22,80,23,196,2,27,28, -248,22,144,15,23,195,2,23,194,1,28,248,22,143,15,23,195,2,249,22,145, -15,23,196,1,250,80,159,43,40,39,248,22,160,15,2,46,11,10,250,80,159, -41,40,39,248,22,160,15,2,46,23,197,1,10,28,23,193,2,249,22,79,248, -22,147,15,249,22,145,15,23,198,1,247,22,161,15,248,80,159,41,8,31,39, -248,22,81,23,200,1,248,80,159,39,8,31,39,248,22,81,197,28,248,22,87, -23,195,2,9,27,248,22,80,23,196,2,27,28,248,22,144,15,23,195,2,23, -194,1,28,248,22,143,15,23,195,2,249,22,145,15,23,196,1,250,80,159,43, -40,39,248,22,160,15,2,46,11,10,250,80,159,41,40,39,248,22,160,15,2, -46,23,197,1,10,28,23,193,2,249,22,79,248,22,147,15,249,22,145,15,23, -198,1,247,22,161,15,27,248,22,81,23,200,1,28,248,22,87,23,194,2,9, -27,248,22,80,23,195,2,27,28,248,22,144,15,23,195,2,23,194,1,28,248, -22,143,15,23,195,2,249,22,145,15,23,196,1,250,80,159,48,40,39,248,22, -160,15,2,46,11,10,250,80,159,46,40,39,248,22,160,15,2,46,23,197,1, -10,28,23,193,2,249,22,79,248,22,147,15,249,22,145,15,23,198,1,247,22, -161,15,248,80,159,46,8,32,39,248,22,81,23,199,1,86,94,23,193,1,248, -80,159,44,8,32,39,248,22,81,23,197,1,86,94,23,193,1,27,248,22,81, -23,198,1,28,248,22,87,23,194,2,9,27,248,22,80,23,195,2,27,28,248, -22,144,15,23,195,2,23,194,1,28,248,22,143,15,23,195,2,249,22,145,15, -23,196,1,250,80,159,46,40,39,248,22,160,15,2,46,11,10,250,80,159,44, -40,39,248,22,160,15,2,46,23,197,1,10,28,23,193,2,249,22,79,248,22, -147,15,249,22,145,15,23,198,1,247,22,161,15,248,80,159,44,8,32,39,248, -22,81,23,199,1,248,80,159,42,8,32,39,248,22,81,196,27,247,22,165,15, -249,80,159,39,41,38,28,23,195,2,27,248,22,162,8,2,54,28,192,192,2, -49,2,49,27,28,23,196,1,250,22,138,15,248,22,160,15,2,55,247,22,160, -8,2,56,11,27,248,80,159,42,8,30,39,250,22,93,9,248,22,89,248,22, -160,15,2,45,9,28,193,249,22,79,195,194,192,27,247,22,165,15,249,80,159, +199,249,22,7,196,197,90,159,39,11,89,161,39,36,11,248,22,144,15,23,198, +1,86,94,23,195,1,28,249,22,152,9,23,195,2,2,40,249,22,7,195,199, +27,249,22,79,23,197,1,23,201,1,28,248,22,142,7,23,195,2,27,249,22, +178,15,2,99,196,28,192,28,249,22,191,3,248,22,103,195,248,22,181,3,248, +22,145,7,198,249,22,7,250,22,164,7,199,36,248,22,103,198,195,249,22,7, +250,22,164,7,199,36,248,22,103,198,249,22,79,249,22,164,7,200,248,22,105, +199,197,249,22,7,196,195,90,159,39,11,89,161,39,36,11,248,22,144,15,23, +198,1,28,249,22,152,9,194,2,40,249,22,7,195,197,249,80,159,45,59,39, +194,249,22,79,197,199,32,101,88,163,36,43,8,27,11,65,99,108,111,111,112, +222,33,110,32,102,88,163,8,36,37,47,11,2,41,222,33,105,32,103,88,163, +36,37,43,11,69,116,111,45,115,116,114,105,110,103,222,33,104,28,248,22,187, +14,193,248,22,191,14,193,192,28,248,22,87,248,22,81,23,195,2,248,22,89, +248,2,103,248,22,167,17,23,196,1,250,22,90,248,2,103,248,22,167,17,23, +198,2,2,50,248,2,102,248,22,168,17,23,198,1,249,22,190,7,2,51,194, +32,107,88,163,36,38,48,11,66,102,105,108,116,101,114,222,33,108,28,248,22, +87,23,195,2,9,28,248,23,194,2,248,22,80,23,196,2,249,22,79,248,22, +167,17,23,197,2,249,2,107,23,197,1,248,22,168,17,23,199,1,249,2,107, +194,248,22,168,17,196,249,22,190,7,2,51,248,22,134,2,23,196,1,28,248, +22,87,23,199,2,86,94,23,198,1,28,23,199,2,28,196,249,22,141,15,200, +198,198,27,28,248,22,87,23,197,2,2,49,249,22,1,22,165,7,248,2,102, +23,199,2,248,23,198,1,251,22,190,7,6,70,70,99,111,108,108,101,99,116, +105,111,110,32,110,111,116,32,102,111,117,110,100,10,32,32,99,111,108,108,101, +99,116,105,111,110,58,32,126,115,10,32,32,105,110,32,99,111,108,108,101,99, +116,105,111,110,32,100,105,114,101,99,116,111,114,105,101,115,58,126,97,126,97, +28,248,22,87,23,202,1,248,2,103,23,201,1,250,22,165,7,248,2,103,23, +204,1,2,50,23,201,2,249,22,1,22,165,7,249,22,2,32,0,88,163,8, +36,37,44,11,9,222,33,106,249,2,107,22,187,14,23,205,2,28,249,22,5, +22,133,2,23,201,2,250,22,190,7,6,49,49,10,32,32,32,115,117,98,45, +99,111,108,108,101,99,116,105,111,110,58,32,126,115,10,32,32,105,110,32,112, +97,114,101,110,116,32,100,105,114,101,99,116,111,114,105,101,115,58,126,97,23, +201,1,249,22,1,22,165,7,249,22,2,32,0,88,163,8,36,37,45,11,9, +222,33,109,249,2,107,22,133,2,23,208,1,86,95,23,199,1,23,198,1,2, +49,27,248,22,80,23,200,2,27,28,248,22,187,14,23,195,2,249,22,141,15, +23,196,1,23,198,2,248,22,134,2,23,195,1,28,28,248,22,187,14,248,22, +80,23,202,2,248,22,136,15,23,194,2,10,27,250,22,1,22,141,15,23,197, +1,23,201,2,28,28,248,22,87,23,199,2,10,248,22,136,15,23,194,2,28, +23,200,2,28,28,248,22,135,15,249,22,141,15,195,202,10,27,28,248,22,187, +14,201,248,22,191,14,201,200,19,248,22,145,7,23,195,2,27,28,249,22,131, +4,23,196,4,40,28,249,22,148,7,6,4,4,46,114,107,116,249,22,164,7, +23,199,2,249,22,183,3,23,200,4,40,249,22,165,7,250,22,164,7,23,200, +1,36,249,22,183,3,23,201,4,40,6,3,3,46,115,115,86,95,23,195,1, +23,194,1,11,11,28,23,193,2,248,22,135,15,249,22,141,15,198,23,196,1, +11,2,28,199,249,22,141,15,194,201,192,254,2,101,202,203,204,205,206,248,22, +81,23,16,28,23,16,23,16,199,28,199,249,22,141,15,194,201,192,254,2,101, +202,203,204,205,206,248,22,81,23,16,23,16,254,2,101,201,202,203,204,205,248, +22,81,23,15,23,15,90,159,38,11,89,161,38,36,11,249,80,159,40,59,39, +23,199,1,23,200,1,27,248,22,67,28,248,22,187,14,195,248,22,191,14,195, +194,27,247,22,169,15,27,250,22,93,28,23,197,2,28,247,22,168,15,27,248, +80,159,46,57,39,10,27,250,22,160,2,23,197,2,23,203,2,11,28,23,193, +2,192,86,94,23,193,1,250,22,160,2,23,197,1,11,9,9,9,28,23,197, +1,28,80,159,44,51,38,27,248,80,159,46,57,39,11,27,250,22,160,2,23, +197,2,23,203,1,11,28,23,193,2,192,86,94,23,193,1,250,22,160,2,23, +197,1,11,9,86,94,23,198,1,9,9,247,22,165,15,254,2,101,199,202,203, +205,23,16,199,11,86,95,28,28,248,22,188,14,23,194,2,10,28,248,22,187, +14,23,194,2,10,28,248,22,142,7,23,194,2,28,248,22,145,15,23,194,2, +10,248,22,146,15,23,194,2,11,12,252,22,189,9,23,200,2,2,33,36,23, +198,2,23,199,2,28,28,248,22,142,7,23,195,2,10,248,22,131,8,23,195, +2,86,94,23,194,1,12,252,22,189,9,23,200,2,2,52,37,23,198,2,23, +199,1,90,159,39,11,89,161,39,36,11,248,22,144,15,23,197,2,86,94,23, +195,1,86,94,28,192,12,250,22,128,10,23,201,1,2,53,23,199,1,249,22, +7,194,195,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,188,14,23, +196,2,10,28,248,22,187,14,23,196,2,10,28,248,22,142,7,23,196,2,28, +248,22,145,15,23,196,2,10,248,22,146,15,23,196,2,11,12,252,22,189,9, +2,27,2,33,36,23,200,2,23,201,2,28,28,248,22,142,7,23,197,2,10, +248,22,131,8,23,197,2,12,252,22,189,9,2,27,2,52,37,23,200,2,23, +201,2,90,159,39,11,89,161,39,36,11,248,22,144,15,23,199,2,86,94,23, +195,1,86,94,28,192,12,250,22,128,10,2,27,2,53,23,201,2,249,22,7, +194,195,27,249,22,133,15,250,22,187,15,0,20,35,114,120,35,34,40,63,58, +91,46,93,91,94,46,93,42,124,41,36,34,248,22,129,15,23,201,1,28,248, +22,142,7,23,203,2,249,22,157,8,23,204,1,8,63,23,202,1,28,248,22, +188,14,23,199,2,248,22,189,14,23,199,1,86,94,23,198,1,247,22,190,14, +28,248,22,187,14,194,249,22,141,15,195,194,192,90,159,38,11,89,161,38,36, +11,86,95,28,28,248,22,188,14,23,196,2,10,28,248,22,187,14,23,196,2, +10,28,248,22,142,7,23,196,2,28,248,22,145,15,23,196,2,10,248,22,146, +15,23,196,2,11,12,252,22,189,9,2,28,2,33,36,23,200,2,23,201,2, +28,28,248,22,142,7,23,197,2,10,248,22,131,8,23,197,2,12,252,22,189, +9,2,28,2,52,37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,11, +248,22,144,15,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,128,10, +2,28,2,53,23,201,2,249,22,7,194,195,27,249,22,133,15,249,22,143,8, +250,22,188,15,0,9,35,114,120,35,34,91,46,93,34,248,22,129,15,23,203, +1,6,1,1,95,28,248,22,142,7,23,202,2,249,22,157,8,23,203,1,8, +63,23,201,1,28,248,22,188,14,23,199,2,248,22,189,14,23,199,1,86,94, +23,198,1,247,22,190,14,28,248,22,187,14,194,249,22,141,15,195,194,192,249, +247,22,171,5,194,11,249,247,22,171,5,194,11,28,248,22,87,23,195,2,9, +27,248,22,80,23,196,2,27,28,248,22,147,15,23,195,2,23,194,1,28,248, +22,146,15,23,195,2,249,22,148,15,23,196,1,250,80,159,43,40,39,248,22, +163,15,2,46,11,10,250,80,159,41,40,39,248,22,163,15,2,46,23,197,1, +10,28,23,193,2,249,22,79,248,22,150,15,249,22,148,15,23,198,1,247,22, +164,15,248,80,159,41,8,30,39,248,22,81,23,200,1,248,80,159,39,8,30, +39,248,22,81,197,28,248,22,87,23,195,2,9,27,248,22,80,23,196,2,27, +28,248,22,147,15,23,195,2,23,194,1,28,248,22,146,15,23,195,2,249,22, +148,15,23,196,1,250,80,159,43,40,39,248,22,163,15,2,46,11,10,250,80, +159,41,40,39,248,22,163,15,2,46,23,197,1,10,28,23,193,2,249,22,79, +248,22,150,15,249,22,148,15,23,198,1,247,22,164,15,248,80,159,41,8,31, +39,248,22,81,23,200,1,248,80,159,39,8,31,39,248,22,81,197,28,248,22, +87,23,195,2,9,27,248,22,80,23,196,2,27,28,248,22,147,15,23,195,2, +23,194,1,28,248,22,146,15,23,195,2,249,22,148,15,23,196,1,250,80,159, +43,40,39,248,22,163,15,2,46,11,10,250,80,159,41,40,39,248,22,163,15, +2,46,23,197,1,10,28,23,193,2,249,22,79,248,22,150,15,249,22,148,15, +23,198,1,247,22,164,15,27,248,22,81,23,200,1,28,248,22,87,23,194,2, +9,27,248,22,80,23,195,2,27,28,248,22,147,15,23,195,2,23,194,1,28, +248,22,146,15,23,195,2,249,22,148,15,23,196,1,250,80,159,48,40,39,248, +22,163,15,2,46,11,10,250,80,159,46,40,39,248,22,163,15,2,46,23,197, +1,10,28,23,193,2,249,22,79,248,22,150,15,249,22,148,15,23,198,1,247, +22,164,15,248,80,159,46,8,32,39,248,22,81,23,199,1,86,94,23,193,1, +248,80,159,44,8,32,39,248,22,81,23,197,1,86,94,23,193,1,27,248,22, +81,23,198,1,28,248,22,87,23,194,2,9,27,248,22,80,23,195,2,27,28, +248,22,147,15,23,195,2,23,194,1,28,248,22,146,15,23,195,2,249,22,148, +15,23,196,1,250,80,159,46,40,39,248,22,163,15,2,46,11,10,250,80,159, +44,40,39,248,22,163,15,2,46,23,197,1,10,28,23,193,2,249,22,79,248, +22,150,15,249,22,148,15,23,198,1,247,22,164,15,248,80,159,44,8,32,39, +248,22,81,23,199,1,248,80,159,42,8,32,39,248,22,81,196,27,247,22,168, +15,249,80,159,39,41,38,28,23,195,2,27,248,22,162,8,2,54,28,192,192, +2,49,2,49,27,28,23,196,1,250,22,141,15,248,22,163,15,2,55,247,22, +160,8,2,56,11,27,248,80,159,42,8,30,39,250,22,93,9,248,22,89,248, +22,163,15,2,45,9,28,193,249,22,79,195,194,192,27,247,22,168,15,249,80, +159,39,41,38,28,23,195,2,27,248,22,162,8,2,54,28,192,192,2,49,2, +49,27,28,23,196,1,250,22,141,15,248,22,163,15,2,55,247,22,160,8,2, +56,11,27,248,80,159,42,8,31,39,250,22,93,23,203,1,248,22,89,248,22, +163,15,2,45,9,28,193,249,22,79,195,194,192,27,247,22,168,15,249,80,159, 39,41,38,28,23,195,2,27,248,22,162,8,2,54,28,192,192,2,49,2,49, -27,28,23,196,1,250,22,138,15,248,22,160,15,2,55,247,22,160,8,2,56, -11,27,248,80,159,42,8,31,39,250,22,93,23,203,1,248,22,89,248,22,160, -15,2,45,9,28,193,249,22,79,195,194,192,27,247,22,165,15,249,80,159,39, -41,38,28,23,195,2,27,248,22,162,8,2,54,28,192,192,2,49,2,49,27, -28,23,196,1,250,22,138,15,248,22,160,15,2,55,247,22,160,8,2,56,11, -27,248,80,159,42,8,32,39,250,22,93,23,203,1,248,22,89,248,22,160,15, -2,45,23,204,1,28,193,249,22,79,195,194,192,27,20,13,159,80,159,37,53, -37,254,80,159,44,54,37,249,22,33,11,80,159,46,53,37,22,158,14,10,22, -165,14,10,22,166,14,10,248,22,139,6,23,196,2,28,248,22,137,7,23,194, -2,12,86,94,248,22,160,9,23,194,1,27,20,13,159,80,159,38,53,37,254, -80,159,45,54,37,249,22,33,11,80,159,47,53,37,22,158,14,10,22,165,14, -10,22,166,14,10,248,22,139,6,23,197,2,28,248,22,137,7,23,194,2,12, -86,94,248,22,160,9,23,194,1,27,20,13,159,80,159,39,53,37,254,80,159, -46,54,37,249,22,33,11,80,159,48,53,37,22,158,14,10,22,165,14,10,22, -166,14,10,248,22,139,6,23,198,2,28,248,22,137,7,23,194,2,12,86,94, -248,22,160,9,23,194,1,248,80,159,40,8,33,39,197,86,94,249,22,130,7, -247,22,167,5,195,248,22,154,6,249,22,135,4,36,249,22,183,3,197,198,27, -28,23,197,2,86,95,23,196,1,23,195,1,23,197,1,86,94,23,197,1,27, -248,22,160,15,2,46,27,250,80,159,42,40,39,23,197,1,11,11,27,248,22, -138,4,23,199,1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,27,248, -22,138,4,23,202,1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,249, -22,134,6,23,199,1,20,20,95,88,163,8,36,36,48,11,9,224,4,2,33, -124,23,195,1,23,197,1,27,248,22,183,5,23,195,1,248,80,159,39,8,33, -39,193,159,36,20,113,159,36,16,1,11,16,0,20,26,144,9,2,1,2,1, -29,11,11,11,9,9,11,11,11,10,43,80,158,36,36,20,113,159,40,16,30, -2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2, -12,2,13,2,14,2,15,2,16,2,17,30,2,20,76,102,105,110,100,45,108, -105,110,107,115,45,112,97,116,104,33,11,4,30,2,21,1,20,112,97,114,97, -109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,11,6,30,2,21, -1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97, -116,105,111,110,11,3,2,22,2,23,2,24,30,2,20,1,21,101,120,99,101, -112,116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,11,2,2,25, -2,26,2,27,2,28,2,29,2,30,2,31,16,0,37,39,36,16,0,36,16, -13,2,9,2,10,2,8,2,3,2,26,2,24,2,22,2,17,2,23,2,25, -2,15,2,14,2,16,49,11,11,11,16,13,2,13,2,11,2,31,2,12,2, -6,2,30,2,29,2,4,2,28,2,7,2,27,2,2,2,5,16,13,11,11, -11,11,11,11,11,11,11,11,11,11,11,16,13,2,13,2,11,2,31,2,12, -2,6,2,30,2,29,2,4,2,28,2,7,2,27,2,2,2,5,49,49,37, -12,11,11,16,0,16,0,16,0,36,36,11,12,11,11,16,0,16,0,16,0, -36,36,16,30,20,15,16,2,32,0,88,163,36,37,45,11,2,2,222,33,57, -80,159,36,36,37,20,15,16,2,249,22,144,7,7,92,7,92,80,159,36,37, -37,20,15,16,2,88,163,36,37,54,38,2,4,223,0,33,62,80,159,36,38, -37,20,15,16,2,88,163,36,38,58,38,2,5,223,0,33,64,80,159,36,39, -37,20,15,16,2,20,25,96,2,6,88,163,8,36,39,8,25,8,32,9,223, -0,33,71,88,163,36,38,47,52,9,223,0,33,72,88,163,36,37,46,52,9, -223,0,33,73,80,159,36,40,37,20,15,16,2,27,248,22,169,15,248,22,156, -8,27,28,249,22,152,9,247,22,164,8,2,34,6,1,1,59,6,1,1,58, -250,22,190,7,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41, -23,196,2,23,196,1,88,163,8,36,38,48,11,2,7,223,0,33,77,80,159, -36,41,37,20,15,16,2,32,0,88,163,8,36,38,47,11,2,8,222,33,78, -80,159,36,42,37,20,15,16,2,32,0,88,163,8,36,39,48,11,2,9,222, -33,80,80,159,36,43,37,20,15,16,2,32,0,88,163,8,36,38,46,11,2, -10,222,33,81,80,159,36,44,37,20,15,16,2,88,163,45,39,49,8,128,16, -2,11,223,0,33,83,80,159,36,45,37,20,15,16,2,88,163,45,40,50,8, -128,16,2,13,223,0,33,85,80,159,36,47,37,20,15,16,2,248,22,160,15, -70,108,105,110,107,115,45,102,105,108,101,80,159,36,48,37,20,15,16,2,247, -22,140,2,80,158,36,49,20,15,16,2,2,86,80,158,36,50,20,15,16,2, -248,80,159,37,52,37,88,163,36,36,49,8,240,16,0,6,0,9,223,1,33, -87,80,159,36,51,37,20,15,16,2,247,22,140,2,80,158,36,55,20,15,16, -2,2,86,80,158,36,56,20,15,16,2,88,163,36,37,44,8,240,0,240,94, -0,2,24,223,0,33,98,80,159,36,57,37,20,15,16,2,88,163,36,38,56, -8,240,0,0,128,0,2,25,223,0,33,100,80,159,36,59,37,20,15,16,2, -88,163,36,40,59,8,240,0,128,160,0,2,12,223,0,33,111,80,159,36,46, -37,20,15,16,2,32,0,88,163,36,39,50,11,2,26,222,33,112,80,159,36, -8,24,37,20,15,16,2,32,0,88,163,36,38,53,11,2,27,222,33,113,80, -159,36,8,25,37,20,15,16,2,32,0,88,163,36,38,54,11,2,28,222,33, -114,80,159,36,8,26,37,20,15,16,2,20,27,158,32,0,88,163,36,37,44, -11,2,29,222,33,115,32,0,88,163,36,37,44,11,2,29,222,33,116,80,159, -36,8,27,37,20,15,16,2,88,163,8,36,37,51,16,2,52,8,240,0,64, -0,0,2,41,223,0,33,117,80,159,36,8,30,39,20,15,16,2,88,163,8, -36,37,51,16,2,52,8,240,0,128,0,0,2,41,223,0,33,118,80,159,36, -8,31,39,20,15,16,2,88,163,8,36,37,56,16,4,52,36,37,36,2,41, -223,0,33,119,80,159,36,8,32,39,20,15,16,2,20,25,96,2,30,88,163, -36,36,53,16,2,8,32,8,240,0,64,0,0,9,223,0,33,120,88,163,36, -37,54,16,2,8,32,8,240,0,128,0,0,9,223,0,33,121,88,163,36,38, -55,16,4,8,32,36,37,36,9,223,0,33,122,80,159,36,8,28,37,20,15, -16,2,88,163,8,36,37,55,16,4,36,42,38,36,2,41,223,0,33,123,80, -159,36,8,33,39,20,15,16,2,88,163,8,36,39,54,16,4,52,36,38,36, -2,31,223,0,33,125,80,159,36,8,29,37,95,29,94,2,18,68,35,37,107, -101,114,110,101,108,11,29,94,2,18,69,35,37,109,105,110,45,115,116,120,11, -2,20,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 10044); +27,28,23,196,1,250,22,141,15,248,22,163,15,2,55,247,22,160,8,2,56, +11,27,248,80,159,42,8,32,39,250,22,93,23,203,1,248,22,89,248,22,163, +15,2,45,23,204,1,28,193,249,22,79,195,194,192,27,20,13,159,80,159,37, +53,37,254,80,159,44,54,37,249,22,33,11,80,159,46,53,37,22,161,14,10, +22,168,14,10,22,169,14,10,248,22,139,6,23,196,2,28,248,22,137,7,23, +194,2,12,86,94,248,22,160,9,23,194,1,27,20,13,159,80,159,38,53,37, +254,80,159,45,54,37,249,22,33,11,80,159,47,53,37,22,161,14,10,22,168, +14,10,22,169,14,10,248,22,139,6,23,197,2,28,248,22,137,7,23,194,2, +12,86,94,248,22,160,9,23,194,1,27,20,13,159,80,159,39,53,37,254,80, +159,46,54,37,249,22,33,11,80,159,48,53,37,22,161,14,10,22,168,14,10, +22,169,14,10,248,22,139,6,23,198,2,28,248,22,137,7,23,194,2,12,86, +94,248,22,160,9,23,194,1,248,80,159,40,8,33,39,197,86,94,249,22,130, +7,247,22,167,5,195,248,22,154,6,249,22,135,4,36,249,22,183,3,197,198, +27,28,23,197,2,86,95,23,196,1,23,195,1,23,197,1,86,94,23,197,1, +27,248,22,163,15,2,46,27,250,80,159,42,40,39,23,197,1,11,11,27,248, +22,138,4,23,199,1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,27, +248,22,138,4,23,202,1,27,28,23,194,2,23,194,1,86,94,23,194,1,36, +249,22,134,6,23,199,1,20,20,95,88,163,8,36,36,48,11,9,224,4,2, +33,124,23,195,1,23,197,1,27,248,22,183,5,23,195,1,248,80,159,39,8, +33,39,193,159,36,20,113,159,36,16,1,11,16,0,20,26,144,9,2,1,2, +1,29,11,11,11,9,9,11,11,11,10,43,80,158,36,36,20,113,159,40,16, +30,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11, +2,12,2,13,2,14,2,15,2,16,2,17,30,2,20,76,102,105,110,100,45, +108,105,110,107,115,45,112,97,116,104,33,11,4,30,2,21,1,20,112,97,114, +97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,11,6,30,2, +21,1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122, +97,116,105,111,110,11,3,2,22,2,23,2,24,30,2,20,1,21,101,120,99, +101,112,116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,11,2,2, +25,2,26,2,27,2,28,2,29,2,30,2,31,16,0,37,39,36,16,0,36, +16,13,2,9,2,10,2,8,2,3,2,26,2,24,2,22,2,17,2,23,2, +25,2,15,2,14,2,16,49,11,11,11,16,13,2,13,2,11,2,31,2,12, +2,6,2,30,2,29,2,4,2,28,2,7,2,27,2,2,2,5,16,13,11, +11,11,11,11,11,11,11,11,11,11,11,11,16,13,2,13,2,11,2,31,2, +12,2,6,2,30,2,29,2,4,2,28,2,7,2,27,2,2,2,5,49,49, +37,12,11,11,16,0,16,0,16,0,36,36,11,12,11,11,16,0,16,0,16, +0,36,36,16,30,20,15,16,2,32,0,88,163,36,37,45,11,2,2,222,33, +57,80,159,36,36,37,20,15,16,2,249,22,144,7,7,92,7,92,80,159,36, +37,37,20,15,16,2,88,163,36,37,54,38,2,4,223,0,33,62,80,159,36, +38,37,20,15,16,2,88,163,36,38,58,38,2,5,223,0,33,64,80,159,36, +39,37,20,15,16,2,20,25,96,2,6,88,163,8,36,39,8,25,8,32,9, +223,0,33,71,88,163,36,38,47,52,9,223,0,33,72,88,163,36,37,46,52, +9,223,0,33,73,80,159,36,40,37,20,15,16,2,27,248,22,172,15,248,22, +156,8,27,28,249,22,152,9,247,22,164,8,2,34,6,1,1,59,6,1,1, +58,250,22,190,7,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42, +41,23,196,2,23,196,1,88,163,8,36,38,48,11,2,7,223,0,33,77,80, +159,36,41,37,20,15,16,2,32,0,88,163,8,36,38,47,11,2,8,222,33, +78,80,159,36,42,37,20,15,16,2,32,0,88,163,8,36,39,48,11,2,9, +222,33,80,80,159,36,43,37,20,15,16,2,32,0,88,163,8,36,38,46,11, +2,10,222,33,81,80,159,36,44,37,20,15,16,2,88,163,45,39,49,8,128, +16,2,11,223,0,33,83,80,159,36,45,37,20,15,16,2,88,163,45,40,50, +8,128,16,2,13,223,0,33,85,80,159,36,47,37,20,15,16,2,248,22,163, +15,70,108,105,110,107,115,45,102,105,108,101,80,159,36,48,37,20,15,16,2, +247,22,140,2,80,158,36,49,20,15,16,2,2,86,80,158,36,50,20,15,16, +2,248,80,159,37,52,37,88,163,36,36,49,8,240,16,0,6,0,9,223,1, +33,87,80,159,36,51,37,20,15,16,2,247,22,140,2,80,158,36,55,20,15, +16,2,2,86,80,158,36,56,20,15,16,2,88,163,36,37,44,8,240,0,240, +94,0,2,24,223,0,33,98,80,159,36,57,37,20,15,16,2,88,163,36,38, +56,8,240,0,0,128,0,2,25,223,0,33,100,80,159,36,59,37,20,15,16, +2,88,163,36,40,59,8,240,0,128,160,0,2,12,223,0,33,111,80,159,36, +46,37,20,15,16,2,32,0,88,163,36,39,50,11,2,26,222,33,112,80,159, +36,8,24,37,20,15,16,2,32,0,88,163,36,38,53,11,2,27,222,33,113, +80,159,36,8,25,37,20,15,16,2,32,0,88,163,36,38,54,11,2,28,222, +33,114,80,159,36,8,26,37,20,15,16,2,20,27,158,32,0,88,163,36,37, +44,11,2,29,222,33,115,32,0,88,163,36,37,44,11,2,29,222,33,116,80, +159,36,8,27,37,20,15,16,2,88,163,8,36,37,51,16,2,52,8,240,0, +64,0,0,2,41,223,0,33,117,80,159,36,8,30,39,20,15,16,2,88,163, +8,36,37,51,16,2,52,8,240,0,128,0,0,2,41,223,0,33,118,80,159, +36,8,31,39,20,15,16,2,88,163,8,36,37,56,16,4,52,36,37,36,2, +41,223,0,33,119,80,159,36,8,32,39,20,15,16,2,20,25,96,2,30,88, +163,36,36,53,16,2,8,32,8,240,0,64,0,0,9,223,0,33,120,88,163, +36,37,54,16,2,8,32,8,240,0,128,0,0,9,223,0,33,121,88,163,36, +38,55,16,4,8,32,36,37,36,9,223,0,33,122,80,159,36,8,28,37,20, +15,16,2,88,163,8,36,37,55,16,4,36,42,38,36,2,41,223,0,33,123, +80,159,36,8,33,39,20,15,16,2,88,163,8,36,39,54,16,4,52,36,38, +36,2,31,223,0,33,125,80,159,36,8,29,37,95,29,94,2,18,68,35,37, +107,101,114,110,101,108,11,29,94,2,18,69,35,37,109,105,110,45,115,116,120, +11,2,20,9,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 10045); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,57,84,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,14,0,0,0,1,0,0,15,0,40,0, -57,0,75,0,97,0,120,0,140,0,162,0,169,0,176,0,183,0,190,0,197, -0,0,0,222,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99, -116,1,23,115,116,114,117,99,116,58,84,72,45,112,108,97,99,101,45,99,104, -97,110,110,101,108,76,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101, -108,77,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,63,1,20, -84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,114,101,102,1, -21,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,115,101,116, -33,79,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,105,110, -1,20,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,111,117, -116,249,80,158,38,39,195,36,249,80,158,38,39,195,36,249,80,158,38,39,195, -36,249,80,158,38,39,195,37,249,80,158,38,39,195,37,159,36,20,113,159,36, -16,1,11,16,0,20,26,144,9,2,1,2,1,29,11,11,11,9,9,11,11, -11,10,45,80,158,36,36,20,113,159,36,16,7,2,2,2,3,2,4,2,5, -2,6,2,7,2,8,16,0,37,39,36,16,0,36,16,2,2,5,2,6,38, -11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,16,5,11,11,11,11, -11,16,5,2,3,2,7,2,8,2,4,2,2,41,41,37,12,11,11,16,0, -16,0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,3,20, -15,16,6,253,22,135,11,2,3,11,38,36,11,248,22,89,249,22,79,22,186, -10,88,163,36,37,45,44,9,223,9,33,9,80,159,36,36,37,80,159,36,37, -37,80,159,36,38,37,80,159,36,39,37,80,159,36,40,37,20,15,16,2,20, -27,158,88,163,36,37,45,44,9,223,0,33,10,88,163,36,37,45,44,9,223, -0,33,11,80,159,36,41,37,20,15,16,2,20,27,158,88,163,36,37,45,44, -9,223,0,33,12,88,163,36,37,45,44,9,223,0,33,13,80,159,36,42,37, -93,29,94,65,113,117,111,116,101,68,35,37,107,101,114,110,101,108,11,9,9, -9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 548); + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,49,46,49,48,84,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,1,0,0,15,0,40, +0,57,0,75,0,97,0,120,0,140,0,162,0,169,0,176,0,183,0,190,0, +197,0,0,0,222,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117, +99,116,1,23,115,116,114,117,99,116,58,84,72,45,112,108,97,99,101,45,99, +104,97,110,110,101,108,76,84,72,45,112,108,97,99,101,45,99,104,97,110,110, +101,108,77,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,63,1, +20,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,114,101,102, +1,21,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,115,101, +116,33,79,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,105, +110,1,20,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,111, +117,116,249,80,158,38,39,195,36,249,80,158,38,39,195,36,249,80,158,38,39, +195,36,249,80,158,38,39,195,37,249,80,158,38,39,195,37,159,36,20,113,159, +36,16,1,11,16,0,20,26,144,9,2,1,2,1,29,11,11,11,9,9,11, +11,11,10,45,80,158,36,36,20,113,159,36,16,7,2,2,2,3,2,4,2, +5,2,6,2,7,2,8,16,0,37,39,36,16,0,36,16,2,2,5,2,6, +38,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,16,5,11,11,11, +11,11,16,5,2,3,2,7,2,8,2,4,2,2,41,41,37,12,11,11,16, +0,16,0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,3, +20,15,16,6,253,22,135,11,2,3,11,38,36,11,248,22,89,249,22,79,22, +186,10,88,163,36,37,45,44,9,223,9,33,9,80,159,36,36,37,80,159,36, +37,37,80,159,36,38,37,80,159,36,39,37,80,159,36,40,37,20,15,16,2, +20,27,158,88,163,36,37,45,44,9,223,0,33,10,88,163,36,37,45,44,9, +223,0,33,11,80,159,36,41,37,20,15,16,2,20,27,158,88,163,36,37,45, +44,9,223,0,33,12,88,163,36,37,45,44,9,223,0,33,13,80,159,36,42, +37,93,29,94,65,113,117,111,116,101,68,35,37,107,101,114,110,101,108,11,9, +9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 549); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,57,84,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,89,0,0,0,1,0,0,7,0,18,0, -45,0,51,0,60,0,67,0,89,0,102,0,128,0,145,0,167,0,175,0,187, -0,202,0,218,0,236,0,0,1,12,1,28,1,51,1,63,1,94,1,101,1, -106,1,111,1,129,1,135,1,140,1,145,1,154,1,159,1,163,1,178,1,185, -1,190,1,194,1,199,1,206,1,217,1,224,1,232,1,42,2,108,2,183,2, -2,3,105,3,126,3,229,3,250,3,88,4,109,4,203,4,224,4,123,12,141, -12,192,12,255,12,18,13,32,13,190,13,203,13,90,14,141,15,223,15,88,16, -145,16,153,16,162,16,186,17,192,17,220,17,233,17,142,18,149,18,203,18,225, -18,245,18,51,19,61,19,75,19,112,19,211,19,213,19,63,20,15,28,68,28, -92,28,116,28,0,0,114,32,0,0,66,35,37,98,111,111,116,70,100,108,108, -45,115,117,102,102,105,120,1,25,100,101,102,97,117,108,116,45,108,111,97,100, -47,117,115,101,45,99,111,109,112,105,108,101,100,65,113,117,111,116,101,68,35, -37,112,97,114,97,109,122,29,94,2,4,2,5,11,1,20,112,97,114,97,109, -101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,29,94,2,4,67,35, -37,117,116,105,108,115,11,1,24,45,109,111,100,117,108,101,45,104,97,115,104, -45,116,97,98,108,101,45,116,97,98,108,101,76,114,101,103,105,115,116,101,114, -45,122,111,45,112,97,116,104,1,20,100,101,102,97,117,108,116,45,114,101,97, -100,101,114,45,103,117,97,114,100,67,67,65,67,72,69,45,78,71,45,112,97, -116,104,45,99,97,99,104,101,74,112,97,116,104,45,99,97,99,104,101,45,103, -101,116,75,112,97,116,104,45,99,97,99,104,101,45,115,101,116,33,77,45,108, -111,97,100,105,110,103,45,102,105,108,101,110,97,109,101,79,45,108,111,97,100, -105,110,103,45,112,114,111,109,112,116,45,116,97,103,71,45,112,114,101,118,45, -114,101,108,116,111,75,45,112,114,101,118,45,114,101,108,116,111,45,100,105,114, -1,21,115,112,108,105,116,45,114,101,108,97,116,105,118,101,45,115,116,114,105, -110,103,71,111,114,105,103,45,112,97,114,97,109,122,1,29,115,116,97,110,100, -97,114,100,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108, -118,101,114,29,94,2,4,2,5,11,64,98,111,111,116,64,115,101,97,108,77, -108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,5,4,46,114, -107,116,64,115,97,109,101,5,3,46,122,111,6,6,6,110,97,116,105,118,101, -64,108,111,111,112,63,108,105,98,6,12,12,109,111,100,117,108,101,45,112,97, -116,104,63,66,115,117,98,109,111,100,6,2,2,46,46,6,1,1,46,64,102, -105,108,101,66,112,108,97,110,101,116,6,8,8,109,97,105,110,46,114,107,116, -6,4,4,46,114,107,116,67,105,103,110,111,114,101,100,250,22,138,15,28,249, -22,152,9,23,201,2,2,28,86,94,23,199,1,23,197,1,28,248,22,142,15, -23,200,2,249,22,138,15,23,199,1,23,201,1,249,80,159,43,42,39,23,199, -1,23,201,1,23,200,1,249,80,159,43,43,39,23,198,1,2,29,250,22,138, -15,28,249,22,152,9,23,201,2,2,28,86,94,23,199,1,23,197,1,28,248, -22,142,15,23,200,2,249,22,138,15,23,199,1,23,201,1,249,80,159,43,42, -39,23,199,1,23,201,1,23,200,1,249,80,159,43,43,39,23,198,1,2,29, -252,22,138,15,28,249,22,152,9,23,203,2,2,28,86,94,23,201,1,23,199, -1,28,248,22,142,15,23,202,2,249,22,138,15,23,201,1,23,203,1,249,80, -159,45,42,39,23,201,1,23,203,1,23,202,1,2,30,247,22,165,8,249,80, -159,45,43,39,23,200,1,80,159,45,36,38,252,22,138,15,28,249,22,152,9, -23,203,2,2,28,86,94,23,201,1,23,199,1,28,248,22,142,15,23,202,2, -249,22,138,15,23,201,1,23,203,1,249,80,159,45,42,39,23,201,1,23,203, -1,23,202,1,2,30,247,22,165,8,249,80,159,45,43,39,23,200,1,80,159, -45,36,38,27,252,22,138,15,28,249,22,152,9,23,201,2,2,28,86,94,23, -199,1,23,201,1,28,248,22,142,15,23,200,2,249,22,138,15,23,203,1,23, -201,1,249,80,159,47,42,39,23,203,1,23,201,1,23,203,1,2,30,247,22, -165,8,249,80,159,47,43,39,23,202,1,80,159,47,36,38,27,250,22,155,15, -196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,195,194, -11,249,22,5,88,163,8,36,37,54,8,129,3,9,226,5,3,2,6,33,46, -196,27,252,22,138,15,28,249,22,152,9,23,201,2,2,28,86,94,23,199,1, -23,201,1,28,248,22,142,15,23,200,2,249,22,138,15,23,203,1,23,201,1, -249,80,159,47,42,39,23,203,1,23,201,1,23,203,1,2,30,247,22,165,8, -249,80,159,47,43,39,23,202,1,80,159,47,36,38,27,250,22,155,15,196,11, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,49,46,49,48,84,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,89,0,0,0,1,0,0,7,0,18, +0,45,0,51,0,60,0,67,0,89,0,102,0,128,0,145,0,167,0,175,0, +187,0,202,0,218,0,236,0,0,1,12,1,28,1,51,1,63,1,94,1,101, +1,106,1,111,1,129,1,135,1,140,1,145,1,154,1,159,1,163,1,178,1, +185,1,190,1,194,1,199,1,206,1,217,1,224,1,232,1,42,2,108,2,183, +2,2,3,105,3,126,3,229,3,250,3,88,4,109,4,203,4,224,4,123,12, +141,12,192,12,255,12,18,13,32,13,190,13,203,13,90,14,141,15,223,15,88, +16,145,16,153,16,162,16,186,17,192,17,220,17,233,17,142,18,149,18,203,18, +225,18,245,18,51,19,61,19,75,19,112,19,211,19,213,19,63,20,15,28,68, +28,92,28,116,28,0,0,114,32,0,0,66,35,37,98,111,111,116,70,100,108, +108,45,115,117,102,102,105,120,1,25,100,101,102,97,117,108,116,45,108,111,97, +100,47,117,115,101,45,99,111,109,112,105,108,101,100,65,113,117,111,116,101,68, +35,37,112,97,114,97,109,122,29,94,2,4,2,5,11,1,20,112,97,114,97, +109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,29,94,2,4,67, +35,37,117,116,105,108,115,11,1,24,45,109,111,100,117,108,101,45,104,97,115, +104,45,116,97,98,108,101,45,116,97,98,108,101,76,114,101,103,105,115,116,101, +114,45,122,111,45,112,97,116,104,1,20,100,101,102,97,117,108,116,45,114,101, +97,100,101,114,45,103,117,97,114,100,67,67,65,67,72,69,45,78,71,45,112, +97,116,104,45,99,97,99,104,101,74,112,97,116,104,45,99,97,99,104,101,45, +103,101,116,75,112,97,116,104,45,99,97,99,104,101,45,115,101,116,33,77,45, +108,111,97,100,105,110,103,45,102,105,108,101,110,97,109,101,79,45,108,111,97, +100,105,110,103,45,112,114,111,109,112,116,45,116,97,103,71,45,112,114,101,118, +45,114,101,108,116,111,75,45,112,114,101,118,45,114,101,108,116,111,45,100,105, +114,1,21,115,112,108,105,116,45,114,101,108,97,116,105,118,101,45,115,116,114, +105,110,103,71,111,114,105,103,45,112,97,114,97,109,122,1,29,115,116,97,110, +100,97,114,100,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111, +108,118,101,114,29,94,2,4,2,5,11,64,98,111,111,116,64,115,101,97,108, +77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,5,4,46, +114,107,116,64,115,97,109,101,5,3,46,122,111,6,6,6,110,97,116,105,118, +101,64,108,111,111,112,63,108,105,98,6,12,12,109,111,100,117,108,101,45,112, +97,116,104,63,66,115,117,98,109,111,100,6,2,2,46,46,6,1,1,46,64, +102,105,108,101,66,112,108,97,110,101,116,6,8,8,109,97,105,110,46,114,107, +116,6,4,4,46,114,107,116,67,105,103,110,111,114,101,100,250,22,141,15,28, +249,22,152,9,23,201,2,2,28,86,94,23,199,1,23,197,1,28,248,22,145, +15,23,200,2,249,22,141,15,23,199,1,23,201,1,249,80,159,43,42,39,23, +199,1,23,201,1,23,200,1,249,80,159,43,43,39,23,198,1,2,29,250,22, +141,15,28,249,22,152,9,23,201,2,2,28,86,94,23,199,1,23,197,1,28, +248,22,145,15,23,200,2,249,22,141,15,23,199,1,23,201,1,249,80,159,43, +42,39,23,199,1,23,201,1,23,200,1,249,80,159,43,43,39,23,198,1,2, +29,252,22,141,15,28,249,22,152,9,23,203,2,2,28,86,94,23,201,1,23, +199,1,28,248,22,145,15,23,202,2,249,22,141,15,23,201,1,23,203,1,249, +80,159,45,42,39,23,201,1,23,203,1,23,202,1,2,30,247,22,165,8,249, +80,159,45,43,39,23,200,1,80,159,45,36,38,252,22,141,15,28,249,22,152, +9,23,203,2,2,28,86,94,23,201,1,23,199,1,28,248,22,145,15,23,202, +2,249,22,141,15,23,201,1,23,203,1,249,80,159,45,42,39,23,201,1,23, +203,1,23,202,1,2,30,247,22,165,8,249,80,159,45,43,39,23,200,1,80, +159,45,36,38,27,252,22,141,15,28,249,22,152,9,23,201,2,2,28,86,94, +23,199,1,23,201,1,28,248,22,145,15,23,200,2,249,22,141,15,23,203,1, +23,201,1,249,80,159,47,42,39,23,203,1,23,201,1,23,203,1,2,30,247, +22,165,8,249,80,159,47,43,39,23,202,1,80,159,47,36,38,27,250,22,158, +15,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,195, +194,11,249,22,5,88,163,8,36,37,54,8,129,3,9,226,5,3,2,6,33, +46,196,27,252,22,141,15,28,249,22,152,9,23,201,2,2,28,86,94,23,199, +1,23,201,1,28,248,22,145,15,23,200,2,249,22,141,15,23,203,1,23,201, +1,249,80,159,47,42,39,23,203,1,23,201,1,23,203,1,2,30,247,22,165, +8,249,80,159,47,43,39,23,202,1,80,159,47,36,38,27,250,22,158,15,196, +11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,195,194,11, +249,22,5,88,163,8,36,37,54,8,129,3,9,226,5,3,2,6,33,48,196, +27,250,22,141,15,28,249,22,152,9,23,199,2,2,28,86,94,23,197,1,23, +199,1,28,248,22,145,15,23,198,2,249,22,141,15,23,201,1,23,199,1,249, +80,159,45,42,39,23,201,1,23,199,1,23,201,1,249,80,159,45,43,39,23, +200,1,2,29,27,250,22,158,15,196,11,32,0,88,163,8,36,36,41,11,9, +222,11,28,192,249,22,79,195,194,11,249,22,5,88,163,8,36,37,52,8,128, +3,9,226,5,3,2,6,33,50,196,27,250,22,141,15,28,249,22,152,9,23, +199,2,2,28,86,94,23,197,1,23,199,1,28,248,22,145,15,23,198,2,249, +22,141,15,23,201,1,23,199,1,249,80,159,45,42,39,23,201,1,23,199,1, +23,201,1,249,80,159,45,43,39,23,200,1,2,29,27,250,22,158,15,196,11, 32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,195,194,11,249, -22,5,88,163,8,36,37,54,8,129,3,9,226,5,3,2,6,33,48,196,27, -250,22,138,15,28,249,22,152,9,23,199,2,2,28,86,94,23,197,1,23,199, -1,28,248,22,142,15,23,198,2,249,22,138,15,23,201,1,23,199,1,249,80, -159,45,42,39,23,201,1,23,199,1,23,201,1,249,80,159,45,43,39,23,200, -1,2,29,27,250,22,155,15,196,11,32,0,88,163,8,36,36,41,11,9,222, -11,28,192,249,22,79,195,194,11,249,22,5,88,163,8,36,37,52,8,128,3, -9,226,5,3,2,6,33,50,196,27,250,22,138,15,28,249,22,152,9,23,199, -2,2,28,86,94,23,197,1,23,199,1,28,248,22,142,15,23,198,2,249,22, -138,15,23,201,1,23,199,1,249,80,159,45,42,39,23,201,1,23,199,1,23, -201,1,249,80,159,45,43,39,23,200,1,2,29,27,250,22,155,15,196,11,32, -0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,195,194,11,249,22, -5,88,163,8,36,37,52,8,128,3,9,226,5,3,2,6,33,52,196,86,95, -28,248,80,159,37,40,39,23,195,2,12,250,22,189,9,2,26,6,12,12,112, -97,116,104,45,115,116,114,105,110,103,63,23,197,2,28,28,23,195,2,28,248, -22,64,23,196,2,10,28,248,22,88,23,196,2,28,249,22,129,4,248,22,92, -23,198,2,37,28,28,248,22,64,248,22,80,23,197,2,10,248,22,150,9,248, -22,164,17,23,197,2,249,22,4,22,64,248,22,165,17,23,198,2,11,11,11, -10,12,250,22,189,9,2,26,6,71,71,40,111,114,47,99,32,35,102,32,115, -121,109,98,111,108,63,32,40,99,111,110,115,47,99,32,40,111,114,47,99,32, -35,102,32,115,121,109,98,111,108,63,41,32,40,110,111,110,45,101,109,112,116, -121,45,108,105,115,116,111,102,32,115,121,109,98,111,108,63,41,41,41,23,197, -2,27,28,23,196,2,247,22,188,4,11,27,28,23,194,2,250,22,160,2,80, -158,41,41,248,22,134,16,247,22,159,13,11,11,27,28,23,194,2,250,22,160, -2,248,22,81,23,198,2,23,198,2,11,11,28,23,193,2,86,96,23,197,1, -23,195,1,23,194,1,20,13,159,80,159,39,38,37,250,80,159,42,39,37,249, -22,33,11,80,159,44,38,37,22,189,4,248,22,104,196,27,248,22,113,194,20, -13,159,80,159,40,38,37,250,80,159,43,39,37,249,22,33,11,80,159,45,38, -37,22,172,5,28,248,22,184,14,23,197,2,23,196,1,86,94,23,196,1,247, -22,161,15,249,247,22,170,5,248,22,80,196,200,86,94,23,193,1,90,159,47, -11,89,161,37,36,11,28,248,22,144,15,23,209,2,23,208,2,27,247,22,172, -5,28,23,193,2,249,22,145,15,23,211,2,23,195,1,23,209,2,89,161,39, -37,11,248,22,141,15,23,209,1,86,94,23,196,1,89,161,38,40,11,28,23, -209,2,27,248,22,189,14,23,197,2,19,248,22,136,8,23,195,2,28,28,249, -22,131,4,23,195,4,40,249,22,139,8,2,27,249,22,142,8,23,198,2,249, -22,183,3,23,199,4,40,11,249,22,7,23,199,2,248,22,129,15,249,22,143, -8,250,22,142,8,23,202,1,36,249,22,183,3,23,203,4,40,5,3,46,115, -115,249,22,7,23,199,2,11,2,249,22,7,23,197,2,11,89,161,37,42,11, -28,249,22,152,9,23,199,2,23,197,2,23,193,2,249,22,138,15,23,196,2, -23,199,2,89,161,37,43,11,28,23,198,2,28,249,22,152,9,23,200,2,23, -197,1,23,193,1,86,94,23,193,1,249,22,138,15,23,196,2,23,200,2,86, -94,23,195,1,11,89,161,37,44,11,28,249,22,152,9,23,196,2,68,114,101, -108,97,116,105,118,101,86,94,23,194,1,2,28,23,194,1,89,161,37,45,11, -247,22,163,15,89,161,37,46,11,247,22,164,15,27,250,22,155,15,23,203,2, -11,32,0,88,163,8,36,36,41,11,9,222,11,27,28,23,194,2,249,22,79, -23,203,2,23,196,1,86,94,23,194,1,11,27,28,23,203,2,28,23,194,2, -11,27,250,22,155,15,23,207,2,11,32,0,88,163,8,36,36,41,11,9,222, -11,28,192,249,22,79,23,206,2,194,11,11,27,28,23,195,2,23,195,2,23, -194,2,27,88,163,36,38,51,8,128,3,62,122,111,225,19,13,9,33,42,27, -88,163,36,38,51,8,128,3,66,97,108,116,45,122,111,225,20,14,11,33,43, -27,88,163,36,38,53,8,129,3,9,225,21,15,11,33,44,27,88,163,36,38, -53,8,129,3,9,225,22,16,13,33,45,27,28,23,200,2,23,200,2,248,22, -150,9,23,200,2,27,28,23,208,2,28,23,200,2,86,94,23,201,1,23,200, -2,248,22,150,9,23,202,1,11,27,28,23,195,2,28,23,197,1,27,249,22, -5,88,163,36,37,48,8,129,3,9,226,28,23,22,18,33,47,23,217,2,27, -28,23,202,2,11,193,28,192,192,28,193,28,23,202,2,28,249,22,131,4,248, -22,81,196,248,22,81,23,205,2,193,11,11,11,11,86,94,23,197,1,11,28, -23,193,2,86,108,23,217,1,23,216,1,23,214,1,23,213,1,23,211,1,23, -210,1,23,209,1,23,208,1,23,201,1,23,200,1,23,199,1,23,198,1,23, -196,1,23,195,1,23,194,1,20,13,159,80,159,8,25,38,37,250,80,159,8, -28,39,37,249,22,33,11,80,159,8,30,38,37,22,189,4,11,20,13,159,80, -159,8,25,38,37,250,80,159,8,28,39,37,249,22,33,11,80,159,8,30,38, -37,22,172,5,28,248,22,184,14,23,216,2,23,215,1,86,94,23,215,1,247, -22,161,15,249,247,22,168,15,248,22,80,195,23,29,86,94,23,193,1,27,28, -23,195,2,28,23,197,1,27,249,22,5,88,163,36,37,48,8,129,3,9,226, -29,24,23,20,33,49,23,218,2,27,28,23,204,2,11,193,28,192,192,28,193, -28,203,28,249,22,131,4,248,22,81,196,248,22,81,206,193,11,11,11,11,86, -94,23,197,1,11,28,23,193,2,86,105,23,218,1,23,217,1,23,215,1,23, -214,1,23,211,1,23,210,1,23,209,1,23,201,1,23,200,1,23,199,1,23, -196,1,23,195,1,20,13,159,80,159,8,26,38,37,250,80,159,8,29,39,37, -249,22,33,11,80,159,8,31,38,37,22,189,4,23,215,1,20,13,159,80,159, -8,26,38,37,250,80,159,8,29,39,37,249,22,33,11,80,159,8,31,38,37, -22,172,5,28,248,22,184,14,23,217,2,23,216,1,86,94,23,216,1,247,22, -161,15,249,247,22,168,15,248,22,80,195,23,30,86,94,23,193,1,27,28,23, -197,2,28,23,201,1,27,249,22,5,20,20,94,88,163,36,37,48,8,128,3, -9,226,30,25,24,20,33,51,23,213,1,23,219,2,27,28,23,204,2,11,193, -28,192,192,28,193,28,23,204,2,28,249,22,131,4,248,22,81,196,248,22,81, -23,207,2,193,11,11,11,86,94,23,210,1,11,86,94,23,201,1,11,28,23, -193,2,86,102,23,216,1,23,215,1,23,213,1,23,212,1,23,211,1,23,202, -1,23,200,1,23,197,1,23,196,1,86,94,27,248,22,80,194,28,23,219,2, -250,22,158,2,248,22,81,23,223,1,23,223,1,250,22,89,23,199,1,11,23, -221,2,12,20,13,159,80,159,8,27,38,37,250,80,159,8,30,39,37,249,22, -33,11,80,159,8,32,38,37,22,189,4,11,20,13,159,80,159,8,27,38,37, -250,80,159,8,30,39,37,249,22,33,11,80,159,8,32,38,37,22,172,5,28, -248,22,184,14,23,218,2,23,217,1,86,94,23,217,1,247,22,161,15,249,247, -22,170,5,248,22,164,17,195,23,31,86,94,23,193,1,27,28,23,197,1,28, -23,201,1,27,249,22,5,20,20,95,88,163,36,37,48,8,128,3,9,226,31, -26,25,22,33,53,23,215,1,23,219,1,23,220,1,27,28,23,205,2,11,193, -28,192,192,28,193,28,204,28,249,22,131,4,248,22,81,196,248,22,81,23,15, -193,11,11,11,86,96,23,217,1,23,216,1,23,212,1,11,86,94,23,201,1, -11,28,23,193,2,86,95,23,213,1,23,198,1,86,94,27,248,22,80,194,28, -23,220,2,250,22,158,2,248,22,81,23,224,32,0,0,0,1,23,224,32,0, -0,0,1,250,22,89,23,199,1,23,221,2,23,222,2,12,20,13,159,80,159, -8,28,38,37,250,80,159,8,31,39,37,249,22,33,11,80,159,8,33,38,37, -22,189,4,23,217,1,20,13,159,80,159,8,28,38,37,250,80,159,8,31,39, -37,249,22,33,11,80,159,8,33,38,37,22,172,5,28,248,22,184,14,23,219, -2,23,218,1,86,94,23,218,1,247,22,161,15,249,247,22,170,5,248,22,164, -17,195,23,32,86,94,23,193,1,28,28,248,22,77,23,224,32,0,0,0,2, -248,22,164,17,23,224,32,0,0,0,2,10,27,28,23,199,2,86,94,23,215, -1,23,214,1,86,94,23,214,1,23,215,1,28,28,248,22,77,23,224,33,0, -0,0,2,248,22,150,9,248,22,132,15,23,195,2,11,12,20,13,159,80,159, -8,29,38,37,250,80,159,8,32,39,37,249,22,33,11,80,159,8,34,38,37, -22,189,4,28,23,34,28,23,202,1,11,195,86,94,23,202,1,11,20,13,159, -80,159,8,29,38,37,250,80,159,8,32,39,37,249,22,33,11,80,159,8,34, -38,37,22,172,5,28,248,22,184,14,23,220,2,23,219,1,86,94,23,219,1, -247,22,161,15,249,247,22,170,5,194,23,33,12,28,193,250,22,158,2,248,22, -81,197,195,250,22,89,200,201,202,12,27,249,22,172,8,80,159,39,47,38,249, -22,190,3,248,22,186,3,248,22,173,2,200,8,128,8,27,28,193,248,22,176, -2,194,11,28,192,27,249,22,102,198,195,28,192,248,22,81,193,11,11,27,249, -22,190,3,248,22,186,3,248,22,173,2,198,8,128,8,27,249,22,172,8,80, -159,40,47,38,195,27,28,193,248,22,176,2,194,11,250,22,173,8,80,159,42, -47,38,197,248,22,175,2,249,22,79,249,22,79,204,205,28,198,198,9,0,17, -35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,59,88,163, -8,36,37,59,11,2,31,222,33,60,27,249,22,173,15,2,58,23,196,2,28, -23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,27,248,22,113, -23,197,1,27,249,22,173,15,2,58,23,196,2,28,23,193,2,86,94,23,194, -1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,173, -15,2,58,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248,22,104, -23,196,2,27,248,22,113,23,197,1,27,249,22,173,15,2,58,23,196,2,28, -23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,248,2,59,248, -22,113,23,197,1,248,22,89,194,248,22,89,194,248,22,89,194,248,22,89,194, -32,61,88,163,36,37,55,11,2,31,222,33,62,28,248,22,87,248,22,81,23, -195,2,249,22,7,9,248,22,164,17,195,90,159,38,11,89,161,38,36,11,27, -248,22,165,17,196,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248,22, -164,17,195,90,159,38,11,89,161,38,36,11,27,248,22,165,17,196,28,248,22, -87,248,22,81,23,195,2,249,22,7,9,248,22,164,17,195,90,159,38,11,89, -161,38,36,11,248,2,61,248,22,165,17,196,249,22,7,249,22,79,248,22,164, -17,199,196,195,249,22,7,249,22,79,248,22,164,17,199,196,195,249,22,7,249, -22,79,248,22,164,17,199,196,195,27,27,249,22,173,15,2,58,23,197,2,28, -23,193,2,86,94,23,195,1,249,22,79,248,22,104,23,196,2,27,248,22,113, -23,197,1,27,249,22,173,15,2,58,23,196,2,28,23,193,2,86,94,23,194, -1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,173, -15,2,58,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248,22,104, -23,196,2,27,248,22,113,23,197,1,27,249,22,173,15,2,58,23,196,2,28, -23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,248,2,59,248, -22,113,23,197,1,248,22,89,194,248,22,89,194,248,22,89,194,248,22,89,195, -28,23,195,1,192,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248,22, -164,17,195,27,248,22,165,17,194,90,159,38,11,89,161,38,36,11,28,248,22, -87,248,22,81,23,197,2,249,22,7,9,248,22,164,17,197,27,248,22,165,17, -196,90,159,38,11,89,161,38,36,11,28,248,22,87,248,22,81,23,197,2,249, -22,7,9,248,22,164,17,197,90,159,38,11,89,161,38,36,11,248,2,61,248, -22,165,17,198,249,22,7,249,22,79,248,22,164,17,201,196,195,249,22,7,249, -22,79,248,22,164,17,202,196,195,249,22,7,249,22,79,248,22,164,17,200,196, -195,28,24,194,2,12,20,13,159,80,159,36,57,37,80,158,36,55,89,161,37, -37,10,249,22,190,4,21,94,2,32,6,19,19,112,108,97,110,101,116,47,114, -101,115,111,108,118,101,114,46,114,107,116,1,27,112,108,97,110,101,116,45,109, -111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12,27, -28,23,195,2,28,249,22,152,9,23,197,2,80,158,39,52,86,94,23,195,1, -80,158,37,53,27,248,22,148,5,23,197,2,27,28,248,22,77,23,195,2,248, -22,164,17,23,195,1,23,194,1,28,248,22,184,14,23,194,2,90,159,39,11, -89,161,39,36,11,248,22,141,15,23,197,1,86,95,20,18,159,11,80,158,42, -52,199,20,18,159,11,80,158,42,53,192,192,11,11,28,23,193,2,192,86,94, -23,193,1,27,247,22,172,5,28,192,192,247,22,161,15,90,159,39,11,89,161, -39,36,11,248,22,141,15,197,86,95,23,195,1,23,193,1,28,249,22,173,15, -0,11,35,114,120,34,91,46,93,115,115,36,34,248,22,189,14,23,197,1,249, -80,159,41,58,39,198,2,27,196,249,80,159,38,54,39,195,10,249,22,14,195, -80,159,38,51,38,86,96,28,248,22,146,5,23,196,2,12,250,22,189,9,2, -22,6,21,21,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112, -97,116,104,63,23,198,2,28,28,23,196,2,248,22,160,13,23,197,2,10,12, -250,22,189,9,2,22,6,20,20,40,111,114,47,99,32,35,102,32,110,97,109, -101,115,112,97,99,101,63,41,23,199,2,28,24,193,2,248,24,194,1,23,196, -2,86,94,23,193,1,12,27,250,22,160,2,80,159,41,41,38,248,22,134,16, +22,5,88,163,8,36,37,52,8,128,3,9,226,5,3,2,6,33,52,196,86, +95,28,248,80,159,37,40,39,23,195,2,12,250,22,189,9,2,26,6,12,12, +112,97,116,104,45,115,116,114,105,110,103,63,23,197,2,28,28,23,195,2,28, +248,22,64,23,196,2,10,28,248,22,88,23,196,2,28,249,22,129,4,248,22, +92,23,198,2,37,28,28,248,22,64,248,22,80,23,197,2,10,248,22,150,9, +248,22,167,17,23,197,2,249,22,4,22,64,248,22,168,17,23,198,2,11,11, +11,10,12,250,22,189,9,2,26,6,71,71,40,111,114,47,99,32,35,102,32, +115,121,109,98,111,108,63,32,40,99,111,110,115,47,99,32,40,111,114,47,99, +32,35,102,32,115,121,109,98,111,108,63,41,32,40,110,111,110,45,101,109,112, +116,121,45,108,105,115,116,111,102,32,115,121,109,98,111,108,63,41,41,41,23, +197,2,27,28,23,196,2,247,22,188,4,11,27,28,23,194,2,250,22,160,2, +80,158,41,41,248,22,137,16,247,22,159,13,11,11,27,28,23,194,2,250,22, +160,2,248,22,81,23,198,2,23,198,2,11,11,28,23,193,2,86,96,23,197, +1,23,195,1,23,194,1,20,13,159,80,159,39,38,37,250,80,159,42,39,37, +249,22,33,11,80,159,44,38,37,22,189,4,248,22,104,196,27,248,22,113,194, +20,13,159,80,159,40,38,37,250,80,159,43,39,37,249,22,33,11,80,159,45, +38,37,22,172,5,28,248,22,187,14,23,197,2,23,196,1,86,94,23,196,1, +247,22,164,15,249,247,22,170,5,248,22,80,196,200,86,94,23,193,1,90,159, +47,11,89,161,37,36,11,28,248,22,147,15,23,209,2,23,208,2,27,247,22, +172,5,28,23,193,2,249,22,148,15,23,211,2,23,195,1,23,209,2,89,161, +39,37,11,248,22,144,15,23,209,1,86,94,23,196,1,89,161,38,40,11,28, +23,209,2,27,248,22,128,15,23,197,2,19,248,22,136,8,23,195,2,28,28, +249,22,131,4,23,195,4,40,249,22,139,8,2,27,249,22,142,8,23,198,2, +249,22,183,3,23,199,4,40,11,249,22,7,23,199,2,248,22,132,15,249,22, +143,8,250,22,142,8,23,202,1,36,249,22,183,3,23,203,4,40,5,3,46, +115,115,249,22,7,23,199,2,11,2,249,22,7,23,197,2,11,89,161,37,42, +11,28,249,22,152,9,23,199,2,23,197,2,23,193,2,249,22,141,15,23,196, +2,23,199,2,89,161,37,43,11,28,23,198,2,28,249,22,152,9,23,200,2, +23,197,1,23,193,1,86,94,23,193,1,249,22,141,15,23,196,2,23,200,2, +86,94,23,195,1,11,89,161,37,44,11,28,249,22,152,9,23,196,2,68,114, +101,108,97,116,105,118,101,86,94,23,194,1,2,28,23,194,1,89,161,37,45, +11,247,22,166,15,89,161,37,46,11,247,22,167,15,27,250,22,158,15,23,203, +2,11,32,0,88,163,8,36,36,41,11,9,222,11,27,28,23,194,2,249,22, +79,23,203,2,23,196,1,86,94,23,194,1,11,27,28,23,203,2,28,23,194, +2,11,27,250,22,158,15,23,207,2,11,32,0,88,163,8,36,36,41,11,9, +222,11,28,192,249,22,79,23,206,2,194,11,11,27,28,23,195,2,23,195,2, +23,194,2,27,88,163,36,38,51,8,128,3,62,122,111,225,19,13,9,33,42, +27,88,163,36,38,51,8,128,3,66,97,108,116,45,122,111,225,20,14,11,33, +43,27,88,163,36,38,53,8,129,3,9,225,21,15,11,33,44,27,88,163,36, +38,53,8,129,3,9,225,22,16,13,33,45,27,28,23,200,2,23,200,2,248, +22,150,9,23,200,2,27,28,23,208,2,28,23,200,2,86,94,23,201,1,23, +200,2,248,22,150,9,23,202,1,11,27,28,23,195,2,28,23,197,1,27,249, +22,5,88,163,36,37,48,8,129,3,9,226,28,23,22,18,33,47,23,217,2, +27,28,23,202,2,11,193,28,192,192,28,193,28,23,202,2,28,249,22,131,4, +248,22,81,196,248,22,81,23,205,2,193,11,11,11,11,86,94,23,197,1,11, +28,23,193,2,86,108,23,217,1,23,216,1,23,214,1,23,213,1,23,211,1, +23,210,1,23,209,1,23,208,1,23,201,1,23,200,1,23,199,1,23,198,1, +23,196,1,23,195,1,23,194,1,20,13,159,80,159,8,25,38,37,250,80,159, +8,28,39,37,249,22,33,11,80,159,8,30,38,37,22,189,4,11,20,13,159, +80,159,8,25,38,37,250,80,159,8,28,39,37,249,22,33,11,80,159,8,30, +38,37,22,172,5,28,248,22,187,14,23,216,2,23,215,1,86,94,23,215,1, +247,22,164,15,249,247,22,171,15,248,22,80,195,23,29,86,94,23,193,1,27, +28,23,195,2,28,23,197,1,27,249,22,5,88,163,36,37,48,8,129,3,9, +226,29,24,23,20,33,49,23,218,2,27,28,23,204,2,11,193,28,192,192,28, +193,28,203,28,249,22,131,4,248,22,81,196,248,22,81,206,193,11,11,11,11, +86,94,23,197,1,11,28,23,193,2,86,105,23,218,1,23,217,1,23,215,1, +23,214,1,23,211,1,23,210,1,23,209,1,23,201,1,23,200,1,23,199,1, +23,196,1,23,195,1,20,13,159,80,159,8,26,38,37,250,80,159,8,29,39, +37,249,22,33,11,80,159,8,31,38,37,22,189,4,23,215,1,20,13,159,80, +159,8,26,38,37,250,80,159,8,29,39,37,249,22,33,11,80,159,8,31,38, +37,22,172,5,28,248,22,187,14,23,217,2,23,216,1,86,94,23,216,1,247, +22,164,15,249,247,22,171,15,248,22,80,195,23,30,86,94,23,193,1,27,28, +23,197,2,28,23,201,1,27,249,22,5,20,20,94,88,163,36,37,48,8,128, +3,9,226,30,25,24,20,33,51,23,213,1,23,219,2,27,28,23,204,2,11, +193,28,192,192,28,193,28,23,204,2,28,249,22,131,4,248,22,81,196,248,22, +81,23,207,2,193,11,11,11,86,94,23,210,1,11,86,94,23,201,1,11,28, +23,193,2,86,102,23,216,1,23,215,1,23,213,1,23,212,1,23,211,1,23, +202,1,23,200,1,23,197,1,23,196,1,86,94,27,248,22,80,194,28,23,219, +2,250,22,158,2,248,22,81,23,223,1,23,223,1,250,22,89,23,199,1,11, +23,221,2,12,20,13,159,80,159,8,27,38,37,250,80,159,8,30,39,37,249, +22,33,11,80,159,8,32,38,37,22,189,4,11,20,13,159,80,159,8,27,38, +37,250,80,159,8,30,39,37,249,22,33,11,80,159,8,32,38,37,22,172,5, +28,248,22,187,14,23,218,2,23,217,1,86,94,23,217,1,247,22,164,15,249, +247,22,170,5,248,22,167,17,195,23,31,86,94,23,193,1,27,28,23,197,1, +28,23,201,1,27,249,22,5,20,20,95,88,163,36,37,48,8,128,3,9,226, +31,26,25,22,33,53,23,215,1,23,219,1,23,220,1,27,28,23,205,2,11, +193,28,192,192,28,193,28,204,28,249,22,131,4,248,22,81,196,248,22,81,23, +15,193,11,11,11,86,96,23,217,1,23,216,1,23,212,1,11,86,94,23,201, +1,11,28,23,193,2,86,95,23,213,1,23,198,1,86,94,27,248,22,80,194, +28,23,220,2,250,22,158,2,248,22,81,23,224,32,0,0,0,1,23,224,32, +0,0,0,1,250,22,89,23,199,1,23,221,2,23,222,2,12,20,13,159,80, +159,8,28,38,37,250,80,159,8,31,39,37,249,22,33,11,80,159,8,33,38, +37,22,189,4,23,217,1,20,13,159,80,159,8,28,38,37,250,80,159,8,31, +39,37,249,22,33,11,80,159,8,33,38,37,22,172,5,28,248,22,187,14,23, +219,2,23,218,1,86,94,23,218,1,247,22,164,15,249,247,22,170,5,248,22, +167,17,195,23,32,86,94,23,193,1,28,28,248,22,77,23,224,32,0,0,0, +2,248,22,167,17,23,224,32,0,0,0,2,10,27,28,23,199,2,86,94,23, +215,1,23,214,1,86,94,23,214,1,23,215,1,28,28,248,22,77,23,224,33, +0,0,0,2,248,22,150,9,248,22,135,15,23,195,2,11,12,20,13,159,80, +159,8,29,38,37,250,80,159,8,32,39,37,249,22,33,11,80,159,8,34,38, +37,22,189,4,28,23,34,28,23,202,1,11,195,86,94,23,202,1,11,20,13, +159,80,159,8,29,38,37,250,80,159,8,32,39,37,249,22,33,11,80,159,8, +34,38,37,22,172,5,28,248,22,187,14,23,220,2,23,219,1,86,94,23,219, +1,247,22,164,15,249,247,22,170,5,194,23,33,12,28,193,250,22,158,2,248, +22,81,197,195,250,22,89,200,201,202,12,27,249,22,172,8,80,159,39,47,38, +249,22,190,3,248,22,186,3,248,22,173,2,200,8,128,8,27,28,193,248,22, +176,2,194,11,28,192,27,249,22,102,198,195,28,192,248,22,81,193,11,11,27, +249,22,190,3,248,22,186,3,248,22,173,2,198,8,128,8,27,249,22,172,8, +80,159,40,47,38,195,27,28,193,248,22,176,2,194,11,250,22,173,8,80,159, +42,47,38,197,248,22,175,2,249,22,79,249,22,79,204,205,28,198,198,9,0, +17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,59,88, +163,8,36,37,59,11,2,31,222,33,60,27,249,22,176,15,2,58,23,196,2, +28,23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,27,248,22, +113,23,197,1,27,249,22,176,15,2,58,23,196,2,28,23,193,2,86,94,23, +194,1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,22, +176,15,2,58,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248,22, +104,23,196,2,27,248,22,113,23,197,1,27,249,22,176,15,2,58,23,196,2, +28,23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,248,2,59, +248,22,113,23,197,1,248,22,89,194,248,22,89,194,248,22,89,194,248,22,89, +194,32,61,88,163,36,37,55,11,2,31,222,33,62,28,248,22,87,248,22,81, +23,195,2,249,22,7,9,248,22,167,17,195,90,159,38,11,89,161,38,36,11, +27,248,22,168,17,196,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248, +22,167,17,195,90,159,38,11,89,161,38,36,11,27,248,22,168,17,196,28,248, +22,87,248,22,81,23,195,2,249,22,7,9,248,22,167,17,195,90,159,38,11, +89,161,38,36,11,248,2,61,248,22,168,17,196,249,22,7,249,22,79,248,22, +167,17,199,196,195,249,22,7,249,22,79,248,22,167,17,199,196,195,249,22,7, +249,22,79,248,22,167,17,199,196,195,27,27,249,22,176,15,2,58,23,197,2, +28,23,193,2,86,94,23,195,1,249,22,79,248,22,104,23,196,2,27,248,22, +113,23,197,1,27,249,22,176,15,2,58,23,196,2,28,23,193,2,86,94,23, +194,1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,22, +176,15,2,58,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248,22, +104,23,196,2,27,248,22,113,23,197,1,27,249,22,176,15,2,58,23,196,2, +28,23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,248,2,59, +248,22,113,23,197,1,248,22,89,194,248,22,89,194,248,22,89,194,248,22,89, +195,28,23,195,1,192,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248, +22,167,17,195,27,248,22,168,17,194,90,159,38,11,89,161,38,36,11,28,248, +22,87,248,22,81,23,197,2,249,22,7,9,248,22,167,17,197,27,248,22,168, +17,196,90,159,38,11,89,161,38,36,11,28,248,22,87,248,22,81,23,197,2, +249,22,7,9,248,22,167,17,197,90,159,38,11,89,161,38,36,11,248,2,61, +248,22,168,17,198,249,22,7,249,22,79,248,22,167,17,201,196,195,249,22,7, +249,22,79,248,22,167,17,202,196,195,249,22,7,249,22,79,248,22,167,17,200, +196,195,28,24,194,2,12,20,13,159,80,159,36,57,37,80,158,36,55,89,161, +37,37,10,249,22,190,4,21,94,2,32,6,19,19,112,108,97,110,101,116,47, +114,101,115,111,108,118,101,114,46,114,107,116,1,27,112,108,97,110,101,116,45, +109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12, +27,28,23,195,2,28,249,22,152,9,23,197,2,80,158,39,52,86,94,23,195, +1,80,158,37,53,27,248,22,148,5,23,197,2,27,28,248,22,77,23,195,2, +248,22,167,17,23,195,1,23,194,1,28,248,22,187,14,23,194,2,90,159,39, +11,89,161,39,36,11,248,22,144,15,23,197,1,86,95,20,18,159,11,80,158, +42,52,199,20,18,159,11,80,158,42,53,192,192,11,11,28,23,193,2,192,86, +94,23,193,1,27,247,22,172,5,28,192,192,247,22,164,15,90,159,39,11,89, +161,39,36,11,248,22,144,15,197,86,95,23,195,1,23,193,1,28,249,22,176, +15,0,11,35,114,120,34,91,46,93,115,115,36,34,248,22,128,15,23,197,1, +249,80,159,41,58,39,198,2,27,196,249,80,159,38,54,39,195,10,249,22,14, +195,80,159,38,51,38,86,96,28,248,22,146,5,23,196,2,12,250,22,189,9, +2,22,6,21,21,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45, +112,97,116,104,63,23,198,2,28,28,23,196,2,248,22,160,13,23,197,2,10, +12,250,22,189,9,2,22,6,20,20,40,111,114,47,99,32,35,102,32,110,97, +109,101,115,112,97,99,101,63,41,23,199,2,28,24,193,2,248,24,194,1,23, +196,2,86,94,23,193,1,12,27,250,22,160,2,80,159,41,41,38,248,22,137, +16,247,22,159,13,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249, +22,79,247,22,140,2,247,22,140,2,86,94,250,22,158,2,80,159,43,41,38, +248,22,137,16,247,22,159,13,195,192,86,94,250,22,158,2,248,22,80,23,197, +2,23,200,2,68,100,101,99,108,97,114,101,100,28,23,198,2,27,28,248,22, +77,248,22,148,5,23,200,2,248,22,147,5,248,22,80,248,22,148,5,23,201, +1,23,198,1,27,250,22,160,2,80,159,44,41,38,248,22,137,16,23,204,1, +11,28,23,193,2,27,250,22,160,2,248,22,81,23,198,1,197,11,28,192,250, +22,158,2,248,22,168,17,199,197,195,12,12,12,251,211,197,198,199,10,32,71, +88,163,36,38,47,11,76,102,108,97,116,116,101,110,45,115,117,98,45,112,97, +116,104,222,33,74,32,72,88,163,36,40,54,11,2,31,222,33,73,28,248,22, +87,23,197,2,28,248,22,87,195,192,249,22,79,194,248,22,94,197,28,249,22, +154,9,248,22,80,23,199,2,2,35,28,248,22,87,23,196,2,86,95,23,196, +1,23,195,1,250,22,185,9,2,22,6,37,37,116,111,111,32,109,97,110,121, +32,34,46,46,34,115,32,105,110,32,115,117,98,109,111,100,117,108,101,32,112, +97,116,104,58,32,126,46,115,250,22,90,2,34,28,249,22,154,9,23,201,2, +2,36,198,28,248,22,187,14,199,198,249,22,89,28,248,22,64,201,2,4,2, +37,200,199,251,2,72,196,197,248,22,81,199,248,22,168,17,200,251,2,72,196, +197,249,22,79,248,22,167,17,202,200,248,22,168,17,200,251,2,72,196,197,9, +197,27,249,22,165,7,6,31,31,115,116,97,110,100,97,114,100,45,109,111,100, +117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,58,32,196,28, +193,250,22,187,9,11,195,196,248,22,185,9,193,28,249,22,148,7,194,2,36, +2,28,28,249,22,148,7,194,2,35,62,117,112,192,32,77,88,163,8,36,37, +50,11,67,115,115,45,62,114,107,116,222,33,78,19,248,22,145,7,194,28,249, +22,131,4,23,195,4,39,28,249,22,148,7,6,3,3,46,115,115,249,22,164, +7,197,249,22,183,3,23,199,4,39,249,22,165,7,250,22,164,7,198,36,249, +22,183,3,23,200,4,39,2,40,193,193,2,0,8,35,114,120,34,91,46,93, +34,32,80,88,163,8,36,37,47,11,2,31,222,33,81,28,248,22,87,23,194, +2,9,250,22,90,6,4,4,10,32,32,32,248,22,191,14,248,22,105,23,198, +2,248,2,80,248,22,81,23,198,1,28,249,22,154,9,248,22,81,23,200,2, +23,197,1,28,249,22,152,9,248,22,167,17,23,200,1,23,196,1,251,22,185, +9,2,22,6,41,41,99,121,99,108,101,32,105,110,32,108,111,97,100,105,110, +103,10,32,32,97,116,32,112,97,116,104,58,32,126,97,10,32,32,112,97,116, +104,115,58,126,97,23,200,1,249,22,1,22,165,7,248,2,80,248,22,94,23, +201,1,12,12,247,192,20,13,159,80,159,43,50,38,249,22,79,249,22,79,248, +22,137,16,247,22,159,13,23,201,1,23,195,1,20,13,159,80,159,43,38,37, +250,80,159,46,39,37,249,22,33,11,80,159,48,38,37,22,188,4,23,198,2, +249,247,22,171,5,23,200,1,27,248,22,67,248,22,191,14,23,201,1,28,23, +202,2,28,250,22,160,2,248,22,80,23,201,1,23,201,1,11,249,22,79,11, +203,249,22,79,194,203,192,86,94,28,248,22,156,5,23,196,2,12,28,23,197, +2,250,22,187,9,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112, +97,116,104,23,200,2,250,22,189,9,2,22,2,33,23,198,2,28,28,248,22, +77,23,196,2,249,22,152,9,248,22,167,17,23,198,2,2,4,11,248,22,147, +5,248,22,104,196,28,28,248,22,77,23,196,2,28,249,22,152,9,248,22,167, +17,23,198,2,2,34,28,248,22,77,248,22,104,23,197,2,249,22,152,9,248, +22,108,23,198,2,2,4,11,11,11,86,97,23,198,1,23,197,1,23,196,1, +23,193,1,248,22,147,5,249,2,71,248,22,121,23,199,2,248,22,106,23,199, +1,28,28,248,22,77,23,196,2,28,249,22,152,9,248,22,167,17,23,198,2, +2,34,28,28,249,22,154,9,248,22,104,23,198,2,2,36,10,249,22,154,9, +248,22,104,23,198,2,2,35,28,23,196,2,27,248,22,148,5,23,198,2,28, +248,22,64,193,10,28,248,22,77,193,248,22,64,248,22,167,17,194,11,11,11, +11,11,86,96,23,198,1,23,197,1,23,193,1,27,248,22,148,5,23,198,1, +248,22,147,5,249,2,71,28,248,22,77,23,197,2,248,22,167,17,23,197,2, +23,196,2,27,28,249,22,154,9,248,22,104,23,203,2,2,35,248,22,168,17, +200,248,22,106,200,28,248,22,77,23,198,2,249,22,93,248,22,168,17,199,194, +192,28,28,248,22,77,23,196,2,249,22,152,9,248,22,167,17,23,198,2,2, +38,11,86,94,248,80,159,38,8,28,39,193,253,213,200,201,202,203,11,80,158, +43,55,28,28,248,22,77,23,196,2,28,249,22,152,9,248,22,167,17,23,198, +2,2,34,28,248,22,77,248,22,104,23,197,2,249,22,152,9,248,22,108,23, +198,2,2,38,11,11,11,86,94,248,80,159,38,8,28,39,193,253,213,248,22, +104,201,201,202,203,248,22,106,201,80,158,43,55,86,94,23,193,1,27,88,163, +8,36,37,47,11,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110, +45,101,114,114,223,5,33,75,27,28,248,22,77,23,198,2,28,249,22,152,9, +2,34,248,22,167,17,23,200,2,27,248,22,104,23,199,2,28,28,249,22,154, +9,23,195,2,2,36,10,249,22,154,9,23,195,2,2,35,86,94,23,193,1, +28,23,199,2,27,248,22,148,5,23,201,2,28,248,22,77,193,248,22,167,17, +193,192,250,22,185,9,2,22,6,45,45,110,111,32,98,97,115,101,32,112,97, +116,104,32,102,111,114,32,114,101,108,97,116,105,118,101,32,115,117,98,109,111, +100,117,108,101,32,112,97,116,104,58,32,126,46,115,23,201,2,192,23,197,2, +23,197,2,27,28,248,22,77,23,199,2,28,249,22,152,9,2,34,248,22,167, +17,23,201,2,27,28,28,28,249,22,154,9,248,22,104,23,202,2,2,36,10, +249,22,154,9,248,22,104,23,202,2,2,35,23,200,2,11,27,248,22,148,5, +23,202,2,27,28,249,22,154,9,248,22,104,23,204,2,2,35,248,22,168,17, +23,202,1,248,22,106,23,202,1,28,248,22,77,23,195,2,249,2,71,248,22, +167,17,23,197,2,249,22,93,248,22,168,17,23,199,1,23,197,1,249,2,71, +23,196,1,23,195,1,249,2,71,2,36,28,249,22,154,9,248,22,104,23,204, +2,2,35,248,22,168,17,23,202,1,248,22,106,23,202,1,28,248,22,77,193, +248,22,168,17,193,11,11,11,27,28,248,22,64,23,196,2,27,248,80,159,43, +48,39,249,22,79,23,199,2,247,22,165,15,28,23,193,2,192,86,94,23,193, +1,90,159,38,11,89,161,38,36,11,249,80,159,46,54,39,248,22,70,23,201, +2,11,27,28,248,22,87,23,195,2,2,39,249,22,165,7,23,197,2,2,40, +251,80,159,49,59,39,23,204,1,28,248,22,87,23,199,2,23,199,1,86,94, +23,199,1,248,22,80,23,199,2,28,248,22,87,23,199,2,86,94,23,198,1, +9,248,22,168,17,23,199,1,23,197,1,28,248,22,142,7,23,196,2,86,94, +23,196,1,27,248,80,159,43,8,29,39,23,202,2,27,248,80,159,44,48,39, +249,22,79,23,200,2,23,197,2,28,23,193,2,192,86,94,23,193,1,90,159, +38,11,89,161,38,36,11,249,80,159,47,54,39,23,201,2,11,250,22,1,22, +141,15,23,199,1,249,22,93,249,22,2,32,0,88,163,8,36,37,44,11,9, +222,33,76,23,200,1,248,22,89,248,2,77,23,201,1,28,248,22,187,14,23, +196,2,86,94,23,196,1,248,80,159,42,8,30,39,248,22,150,15,28,248,22, +147,15,23,198,2,23,197,2,249,22,148,15,23,199,2,248,80,159,46,8,29, +39,23,205,2,28,249,22,152,9,248,22,80,23,198,2,2,32,27,248,80,159, +43,48,39,249,22,79,23,199,2,247,22,165,15,28,23,193,2,192,86,94,23, +193,1,90,159,39,11,89,161,38,36,11,249,80,159,47,54,39,248,22,104,23, +202,2,11,89,161,37,38,11,28,248,22,87,248,22,106,23,201,2,28,248,22, +87,23,194,2,249,22,180,15,2,79,23,196,2,11,10,27,28,23,196,2,248, +2,77,23,196,2,28,248,22,87,23,195,2,2,39,28,249,22,180,15,2,79, +23,197,2,248,2,77,23,196,2,249,22,165,7,23,197,2,2,40,27,28,23, +197,1,86,94,23,196,1,249,22,93,28,248,22,87,248,22,106,23,205,2,21, +93,6,5,5,109,122,108,105,98,249,22,1,22,93,249,22,2,80,159,53,8, +31,39,248,22,106,23,208,2,23,197,1,28,248,22,87,23,196,2,86,94,23, +195,1,248,22,89,23,197,1,86,94,23,196,1,23,195,1,251,80,159,51,59, +39,23,206,1,248,22,80,23,198,2,248,22,168,17,23,198,1,23,198,1,28, +249,22,152,9,248,22,167,17,23,198,2,2,37,248,80,159,42,8,30,39,248, +22,150,15,249,22,148,15,248,22,152,15,248,22,104,23,201,2,248,80,159,46, +8,29,39,23,205,2,12,86,94,28,28,248,22,187,14,23,194,2,10,248,22, +167,8,23,194,2,86,94,23,201,1,12,28,23,201,2,250,22,187,9,67,114, +101,113,117,105,114,101,249,22,190,7,6,17,17,98,97,100,32,109,111,100,117, +108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,80,23,199,2,6,0, +0,23,204,1,86,94,23,201,1,250,22,189,9,2,22,2,33,23,198,2,27, +28,248,22,167,8,23,195,2,249,22,172,8,23,196,2,36,249,22,150,15,248, +22,151,15,23,197,2,11,27,28,248,22,167,8,23,196,2,249,22,172,8,23, +197,2,37,248,80,159,44,8,24,39,23,195,2,90,159,39,11,89,161,39,36, +11,28,248,22,167,8,23,199,2,250,22,7,2,41,249,22,172,8,23,203,2, +38,2,41,248,22,144,15,23,198,2,86,95,23,195,1,23,193,1,27,28,248, +22,167,8,23,200,2,249,22,172,8,23,201,2,39,249,80,159,49,58,39,23, +197,2,5,0,27,28,248,22,167,8,23,201,2,249,22,172,8,23,202,2,40, +248,22,147,5,23,200,2,27,250,22,160,2,80,159,52,41,38,248,22,137,16, 247,22,159,13,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,22, -79,247,22,140,2,247,22,140,2,86,94,250,22,158,2,80,159,43,41,38,248, -22,134,16,247,22,159,13,195,192,86,94,250,22,158,2,248,22,80,23,197,2, -23,200,2,68,100,101,99,108,97,114,101,100,28,23,198,2,27,28,248,22,77, -248,22,148,5,23,200,2,248,22,147,5,248,22,80,248,22,148,5,23,201,1, -23,198,1,27,250,22,160,2,80,159,44,41,38,248,22,134,16,23,204,1,11, -28,23,193,2,27,250,22,160,2,248,22,81,23,198,1,197,11,28,192,250,22, -158,2,248,22,165,17,199,197,195,12,12,12,251,211,197,198,199,10,32,71,88, -163,36,38,47,11,76,102,108,97,116,116,101,110,45,115,117,98,45,112,97,116, -104,222,33,74,32,72,88,163,36,40,54,11,2,31,222,33,73,28,248,22,87, -23,197,2,28,248,22,87,195,192,249,22,79,194,248,22,94,197,28,249,22,154, -9,248,22,80,23,199,2,2,35,28,248,22,87,23,196,2,86,95,23,196,1, -23,195,1,250,22,185,9,2,22,6,37,37,116,111,111,32,109,97,110,121,32, -34,46,46,34,115,32,105,110,32,115,117,98,109,111,100,117,108,101,32,112,97, -116,104,58,32,126,46,115,250,22,90,2,34,28,249,22,154,9,23,201,2,2, -36,198,28,248,22,184,14,199,198,249,22,89,28,248,22,64,201,2,4,2,37, -200,199,251,2,72,196,197,248,22,81,199,248,22,165,17,200,251,2,72,196,197, -249,22,79,248,22,164,17,202,200,248,22,165,17,200,251,2,72,196,197,9,197, -27,249,22,165,7,6,31,31,115,116,97,110,100,97,114,100,45,109,111,100,117, -108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,58,32,196,28,193, -250,22,187,9,11,195,196,248,22,185,9,193,28,249,22,148,7,194,2,36,2, -28,28,249,22,148,7,194,2,35,62,117,112,192,32,77,88,163,8,36,37,50, -11,67,115,115,45,62,114,107,116,222,33,78,19,248,22,145,7,194,28,249,22, -131,4,23,195,4,39,28,249,22,148,7,6,3,3,46,115,115,249,22,164,7, -197,249,22,183,3,23,199,4,39,249,22,165,7,250,22,164,7,198,36,249,22, -183,3,23,200,4,39,2,40,193,193,2,0,8,35,114,120,34,91,46,93,34, -32,80,88,163,8,36,37,47,11,2,31,222,33,81,28,248,22,87,23,194,2, -9,250,22,90,6,4,4,10,32,32,32,248,22,188,14,248,22,105,23,198,2, -248,2,80,248,22,81,23,198,1,28,249,22,154,9,248,22,81,23,200,2,23, -197,1,28,249,22,152,9,248,22,164,17,23,200,1,23,196,1,251,22,185,9, -2,22,6,41,41,99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103, -10,32,32,97,116,32,112,97,116,104,58,32,126,97,10,32,32,112,97,116,104, -115,58,126,97,23,200,1,249,22,1,22,165,7,248,2,80,248,22,94,23,201, -1,12,12,247,192,20,13,159,80,159,43,50,38,249,22,79,249,22,79,248,22, -134,16,247,22,159,13,23,201,1,23,195,1,20,13,159,80,159,43,38,37,250, -80,159,46,39,37,249,22,33,11,80,159,48,38,37,22,188,4,23,198,2,249, -247,22,171,5,23,200,1,27,248,22,67,248,22,188,14,23,201,1,28,23,202, -2,28,250,22,160,2,248,22,80,23,201,1,23,201,1,11,249,22,79,11,203, -249,22,79,194,203,192,86,94,28,248,22,156,5,23,196,2,12,28,23,197,2, -250,22,187,9,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97, -116,104,23,200,2,250,22,189,9,2,22,2,33,23,198,2,28,28,248,22,77, -23,196,2,249,22,152,9,248,22,164,17,23,198,2,2,4,11,248,22,147,5, -248,22,104,196,28,28,248,22,77,23,196,2,28,249,22,152,9,248,22,164,17, -23,198,2,2,34,28,248,22,77,248,22,104,23,197,2,249,22,152,9,248,22, -108,23,198,2,2,4,11,11,11,86,97,23,198,1,23,197,1,23,196,1,23, -193,1,248,22,147,5,249,2,71,248,22,121,23,199,2,248,22,106,23,199,1, -28,28,248,22,77,23,196,2,28,249,22,152,9,248,22,164,17,23,198,2,2, -34,28,28,249,22,154,9,248,22,104,23,198,2,2,36,10,249,22,154,9,248, -22,104,23,198,2,2,35,28,23,196,2,27,248,22,148,5,23,198,2,28,248, -22,64,193,10,28,248,22,77,193,248,22,64,248,22,164,17,194,11,11,11,11, -11,86,96,23,198,1,23,197,1,23,193,1,27,248,22,148,5,23,198,1,248, -22,147,5,249,2,71,28,248,22,77,23,197,2,248,22,164,17,23,197,2,23, -196,2,27,28,249,22,154,9,248,22,104,23,203,2,2,35,248,22,165,17,200, -248,22,106,200,28,248,22,77,23,198,2,249,22,93,248,22,165,17,199,194,192, -28,28,248,22,77,23,196,2,249,22,152,9,248,22,164,17,23,198,2,2,38, -11,86,94,248,80,159,38,8,28,39,193,253,213,200,201,202,203,11,80,158,43, -55,28,28,248,22,77,23,196,2,28,249,22,152,9,248,22,164,17,23,198,2, -2,34,28,248,22,77,248,22,104,23,197,2,249,22,152,9,248,22,108,23,198, -2,2,38,11,11,11,86,94,248,80,159,38,8,28,39,193,253,213,248,22,104, -201,201,202,203,248,22,106,201,80,158,43,55,86,94,23,193,1,27,88,163,8, -36,37,47,11,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45, -101,114,114,223,5,33,75,27,28,248,22,77,23,198,2,28,249,22,152,9,2, -34,248,22,164,17,23,200,2,27,248,22,104,23,199,2,28,28,249,22,154,9, -23,195,2,2,36,10,249,22,154,9,23,195,2,2,35,86,94,23,193,1,28, -23,199,2,27,248,22,148,5,23,201,2,28,248,22,77,193,248,22,164,17,193, -192,250,22,185,9,2,22,6,45,45,110,111,32,98,97,115,101,32,112,97,116, -104,32,102,111,114,32,114,101,108,97,116,105,118,101,32,115,117,98,109,111,100, -117,108,101,32,112,97,116,104,58,32,126,46,115,23,201,2,192,23,197,2,23, -197,2,27,28,248,22,77,23,199,2,28,249,22,152,9,2,34,248,22,164,17, -23,201,2,27,28,28,28,249,22,154,9,248,22,104,23,202,2,2,36,10,249, -22,154,9,248,22,104,23,202,2,2,35,23,200,2,11,27,248,22,148,5,23, -202,2,27,28,249,22,154,9,248,22,104,23,204,2,2,35,248,22,165,17,23, -202,1,248,22,106,23,202,1,28,248,22,77,23,195,2,249,2,71,248,22,164, -17,23,197,2,249,22,93,248,22,165,17,23,199,1,23,197,1,249,2,71,23, -196,1,23,195,1,249,2,71,2,36,28,249,22,154,9,248,22,104,23,204,2, -2,35,248,22,165,17,23,202,1,248,22,106,23,202,1,28,248,22,77,193,248, -22,165,17,193,11,11,11,27,28,248,22,64,23,196,2,27,248,80,159,43,48, -39,249,22,79,23,199,2,247,22,162,15,28,23,193,2,192,86,94,23,193,1, -90,159,38,11,89,161,38,36,11,249,80,159,46,54,39,248,22,70,23,201,2, -11,27,28,248,22,87,23,195,2,2,39,249,22,165,7,23,197,2,2,40,251, -80,159,49,59,39,23,204,1,28,248,22,87,23,199,2,23,199,1,86,94,23, -199,1,248,22,80,23,199,2,28,248,22,87,23,199,2,86,94,23,198,1,9, -248,22,165,17,23,199,1,23,197,1,28,248,22,142,7,23,196,2,86,94,23, -196,1,27,248,80,159,43,8,29,39,23,202,2,27,248,80,159,44,48,39,249, -22,79,23,200,2,23,197,2,28,23,193,2,192,86,94,23,193,1,90,159,38, -11,89,161,38,36,11,249,80,159,47,54,39,23,201,2,11,250,22,1,22,138, -15,23,199,1,249,22,93,249,22,2,32,0,88,163,8,36,37,44,11,9,222, -33,76,23,200,1,248,22,89,248,2,77,23,201,1,28,248,22,184,14,23,196, -2,86,94,23,196,1,248,80,159,42,8,30,39,248,22,147,15,28,248,22,144, -15,23,198,2,23,197,2,249,22,145,15,23,199,2,248,80,159,46,8,29,39, -23,205,2,28,249,22,152,9,248,22,80,23,198,2,2,32,27,248,80,159,43, -48,39,249,22,79,23,199,2,247,22,162,15,28,23,193,2,192,86,94,23,193, -1,90,159,39,11,89,161,38,36,11,249,80,159,47,54,39,248,22,104,23,202, -2,11,89,161,37,38,11,28,248,22,87,248,22,106,23,201,2,28,248,22,87, -23,194,2,249,22,177,15,2,79,23,196,2,11,10,27,28,23,196,2,248,2, -77,23,196,2,28,248,22,87,23,195,2,2,39,28,249,22,177,15,2,79,23, -197,2,248,2,77,23,196,2,249,22,165,7,23,197,2,2,40,27,28,23,197, -1,86,94,23,196,1,249,22,93,28,248,22,87,248,22,106,23,205,2,21,93, -6,5,5,109,122,108,105,98,249,22,1,22,93,249,22,2,80,159,53,8,31, -39,248,22,106,23,208,2,23,197,1,28,248,22,87,23,196,2,86,94,23,195, -1,248,22,89,23,197,1,86,94,23,196,1,23,195,1,251,80,159,51,59,39, -23,206,1,248,22,80,23,198,2,248,22,165,17,23,198,1,23,198,1,28,249, -22,152,9,248,22,164,17,23,198,2,2,37,248,80,159,42,8,30,39,248,22, -147,15,249,22,145,15,248,22,149,15,248,22,104,23,201,2,248,80,159,46,8, -29,39,23,205,2,12,86,94,28,28,248,22,184,14,23,194,2,10,248,22,167, -8,23,194,2,86,94,23,201,1,12,28,23,201,2,250,22,187,9,67,114,101, -113,117,105,114,101,249,22,190,7,6,17,17,98,97,100,32,109,111,100,117,108, -101,32,112,97,116,104,126,97,28,23,198,2,248,22,80,23,199,2,6,0,0, -23,204,1,86,94,23,201,1,250,22,189,9,2,22,2,33,23,198,2,27,28, -248,22,167,8,23,195,2,249,22,172,8,23,196,2,36,249,22,147,15,248,22, -148,15,23,197,2,11,27,28,248,22,167,8,23,196,2,249,22,172,8,23,197, -2,37,248,80,159,44,8,24,39,23,195,2,90,159,39,11,89,161,39,36,11, -28,248,22,167,8,23,199,2,250,22,7,2,41,249,22,172,8,23,203,2,38, -2,41,248,22,141,15,23,198,2,86,95,23,195,1,23,193,1,27,28,248,22, -167,8,23,200,2,249,22,172,8,23,201,2,39,249,80,159,49,58,39,23,197, -2,5,0,27,28,248,22,167,8,23,201,2,249,22,172,8,23,202,2,40,248, -22,147,5,23,200,2,27,250,22,160,2,80,159,52,41,38,248,22,134,16,247, -22,159,13,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,22,79, -247,22,140,2,247,22,140,2,86,94,250,22,158,2,80,159,54,41,38,248,22, -134,16,247,22,159,13,195,192,27,28,23,204,2,248,22,147,5,249,22,79,248, -22,148,5,23,200,2,23,207,2,23,196,2,86,95,28,23,212,1,27,250,22, -160,2,248,22,80,23,199,2,196,11,28,23,193,1,12,27,27,28,248,22,17, -80,159,55,51,38,80,159,54,51,38,247,22,19,251,22,33,11,80,159,58,50, -38,9,23,197,1,27,248,22,134,16,247,22,159,13,86,94,249,22,3,20,20, -94,88,163,8,36,37,54,11,9,226,14,13,2,3,33,82,23,195,1,23,196, -2,248,28,248,22,17,80,159,56,51,38,32,0,88,163,36,37,42,11,9,222, -33,83,80,159,55,8,32,39,20,20,96,88,163,36,36,56,8,240,12,64,0, -0,9,230,19,15,13,12,8,7,5,2,33,84,23,195,1,23,198,1,23,208, -1,12,28,28,248,22,167,8,23,204,1,11,28,248,22,142,7,23,206,2,10, -28,248,22,64,23,206,2,10,28,248,22,77,23,206,2,249,22,152,9,248,22, -164,17,23,208,2,2,32,11,249,80,159,53,49,39,28,248,22,142,7,23,208, -2,249,22,79,23,209,1,248,80,159,56,8,29,39,23,215,1,86,94,23,212, -1,249,22,79,23,209,1,247,22,162,15,252,22,169,8,23,209,1,23,208,1, -23,206,1,23,204,1,23,203,1,12,192,86,96,20,18,159,11,80,158,36,55, -248,80,159,37,8,27,37,249,22,33,11,80,159,39,57,37,248,22,187,4,80, -159,37,56,38,248,22,171,5,80,159,37,37,39,248,22,153,14,80,159,37,45, -39,20,18,159,11,80,158,36,55,248,80,159,37,8,27,37,249,22,33,11,80, -159,39,57,37,20,18,159,11,80,158,36,55,248,80,159,37,8,27,37,249,22, -33,11,80,159,39,57,37,159,36,20,113,159,36,16,1,11,16,0,20,26,144, -9,2,1,2,1,29,11,11,11,9,9,11,11,11,10,38,80,158,36,36,20, -113,159,41,16,28,2,2,2,3,30,2,6,2,7,11,6,30,2,6,1,23, -101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105, -111,110,11,3,30,2,8,72,112,97,116,104,45,115,116,114,105,110,103,63,38, -196,11,2,9,30,2,8,71,114,101,114,111,111,116,45,112,97,116,104,40,196, -12,30,2,8,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,40, -196,8,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2, -19,2,20,2,21,2,22,30,2,23,2,7,11,6,30,2,8,79,112,97,116, -104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,40,196,10,30,2, -8,73,102,105,110,100,45,99,111,108,45,102,105,108,101,44,196,3,30,2,8, -76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,38,196,7,2, -24,2,25,30,2,23,74,114,101,112,97,114,97,109,101,116,101,114,105,122,101, -11,7,16,0,37,39,36,16,0,36,16,15,2,16,2,17,2,9,2,13,2, -18,2,19,2,12,2,3,2,11,2,2,2,14,2,15,2,10,2,20,2,22, -51,11,11,11,16,3,2,24,2,21,2,25,16,3,11,11,11,16,3,2,24, -2,21,2,25,39,39,37,12,11,11,16,0,16,0,16,0,36,36,11,12,11, -11,16,0,16,0,16,0,36,36,16,23,20,15,16,2,248,22,164,8,69,115, -111,45,115,117,102,102,105,120,80,159,36,36,37,20,15,16,2,88,163,36,38, -8,43,8,189,3,2,3,223,0,33,54,80,159,36,37,37,20,15,16,2,32, -0,88,163,8,36,41,52,11,2,10,222,33,55,80,159,36,44,37,20,15,16, -2,20,27,158,32,0,88,163,8,36,37,42,11,2,11,222,192,32,0,88,163, -8,36,37,42,11,2,11,222,192,80,159,36,45,37,20,15,16,2,247,22,143, -2,80,159,36,41,37,20,15,16,2,8,128,8,80,159,36,46,37,20,15,16, -2,249,22,168,8,8,128,8,11,80,159,36,47,37,20,15,16,2,88,163,8, -36,37,50,8,128,32,2,14,223,0,33,56,80,159,36,48,37,20,15,16,2, -88,163,8,36,38,55,8,128,32,2,15,223,0,33,57,80,159,36,49,37,20, -15,16,2,247,22,75,80,159,36,50,37,20,15,16,2,248,22,18,74,109,111, -100,117,108,101,45,108,111,97,100,105,110,103,80,159,36,51,37,20,15,16,2, -11,80,158,36,52,20,15,16,2,11,80,158,36,53,20,15,16,2,32,0,88, -163,36,38,8,25,11,2,20,222,33,63,80,159,36,54,37,20,15,16,2,11, -80,158,36,55,20,15,16,2,88,164,8,34,37,45,8,240,0,0,40,0,1, -21,112,114,101,112,45,112,108,97,110,101,116,45,114,101,115,111,108,118,101,114, -33,37,224,1,0,33,64,80,159,36,8,28,39,20,15,16,2,88,163,36,37, -50,8,240,0,0,3,0,67,103,101,116,45,100,105,114,223,0,33,65,80,159, -36,8,29,39,20,15,16,2,88,163,36,37,49,8,240,0,0,64,0,72,112, -97,116,104,45,115,115,45,62,114,107,116,223,0,33,66,80,159,36,8,30,39, -20,15,16,2,88,163,8,36,37,45,8,240,0,0,4,0,9,223,0,33,67, -80,159,36,8,31,39,20,15,16,2,88,163,36,37,45,8,240,0,128,0,0, -9,223,0,33,68,80,159,36,8,32,39,20,15,16,2,27,11,20,19,158,36, -90,159,37,10,89,161,37,36,10,20,25,96,2,22,88,163,8,36,38,54,8, -32,9,224,2,1,33,69,88,163,36,39,49,11,9,223,0,33,70,88,163,36, -40,8,32,16,4,8,240,44,240,0,0,8,240,204,241,0,0,37,36,9,224, -2,1,33,85,207,80,159,36,56,37,20,15,16,2,88,163,36,36,45,16,2, -8,130,8,8,184,32,2,24,223,0,33,86,80,159,36,8,25,37,20,15,16, -2,20,27,158,88,163,8,36,36,45,16,2,36,8,168,32,2,25,223,0,33, -87,88,163,8,36,36,45,16,2,36,8,168,32,2,25,223,0,33,88,80,159, -36,8,26,37,96,29,94,2,4,68,35,37,107,101,114,110,101,108,11,29,94, -2,4,69,35,37,109,105,110,45,115,116,120,11,2,8,2,23,9,9,9,36, -0}; - EVAL_ONE_SIZED_STR((char *)expr, 8526); +79,247,22,140,2,247,22,140,2,86,94,250,22,158,2,80,159,54,41,38,248, +22,137,16,247,22,159,13,195,192,27,28,23,204,2,248,22,147,5,249,22,79, +248,22,148,5,23,200,2,23,207,2,23,196,2,86,95,28,23,212,1,27,250, +22,160,2,248,22,80,23,199,2,196,11,28,23,193,1,12,27,27,28,248,22, +17,80,159,55,51,38,80,159,54,51,38,247,22,19,251,22,33,11,80,159,58, +50,38,9,23,197,1,27,248,22,137,16,247,22,159,13,86,94,249,22,3,20, +20,94,88,163,8,36,37,54,11,9,226,14,13,2,3,33,82,23,195,1,23, +196,2,248,28,248,22,17,80,159,56,51,38,32,0,88,163,36,37,42,11,9, +222,33,83,80,159,55,8,32,39,20,20,96,88,163,36,36,56,8,240,12,64, +0,0,9,230,19,15,13,12,8,7,5,2,33,84,23,195,1,23,198,1,23, +208,1,12,28,28,248,22,167,8,23,204,1,11,28,248,22,142,7,23,206,2, +10,28,248,22,64,23,206,2,10,28,248,22,77,23,206,2,249,22,152,9,248, +22,167,17,23,208,2,2,32,11,249,80,159,53,49,39,28,248,22,142,7,23, +208,2,249,22,79,23,209,1,248,80,159,56,8,29,39,23,215,1,86,94,23, +212,1,249,22,79,23,209,1,247,22,165,15,252,22,169,8,23,209,1,23,208, +1,23,206,1,23,204,1,23,203,1,12,192,86,96,20,18,159,11,80,158,36, +55,248,80,159,37,8,27,37,249,22,33,11,80,159,39,57,37,248,22,187,4, +80,159,37,56,38,248,22,171,5,80,159,37,37,39,248,22,156,14,80,159,37, +45,39,20,18,159,11,80,158,36,55,248,80,159,37,8,27,37,249,22,33,11, +80,159,39,57,37,20,18,159,11,80,158,36,55,248,80,159,37,8,27,37,249, +22,33,11,80,159,39,57,37,159,36,20,113,159,36,16,1,11,16,0,20,26, +144,9,2,1,2,1,29,11,11,11,9,9,11,11,11,10,38,80,158,36,36, +20,113,159,41,16,28,2,2,2,3,30,2,6,2,7,11,6,30,2,6,1, +23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116, +105,111,110,11,3,30,2,8,72,112,97,116,104,45,115,116,114,105,110,103,63, +38,196,11,2,9,30,2,8,71,114,101,114,111,111,116,45,112,97,116,104,40, +196,12,30,2,8,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120, +40,196,8,2,10,2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18, +2,19,2,20,2,21,2,22,30,2,23,2,7,11,6,30,2,8,79,112,97, +116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,40,196,10,30, +2,8,73,102,105,110,100,45,99,111,108,45,102,105,108,101,44,196,3,30,2, +8,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,38,196,7, +2,24,2,25,30,2,23,74,114,101,112,97,114,97,109,101,116,101,114,105,122, +101,11,7,16,0,37,39,36,16,0,36,16,15,2,16,2,17,2,9,2,13, +2,18,2,19,2,12,2,3,2,11,2,2,2,14,2,15,2,10,2,20,2, +22,51,11,11,11,16,3,2,24,2,21,2,25,16,3,11,11,11,16,3,2, +24,2,21,2,25,39,39,37,12,11,11,16,0,16,0,16,0,36,36,11,12, +11,11,16,0,16,0,16,0,36,36,16,23,20,15,16,2,248,22,164,8,69, +115,111,45,115,117,102,102,105,120,80,159,36,36,37,20,15,16,2,88,163,36, +38,8,43,8,189,3,2,3,223,0,33,54,80,159,36,37,37,20,15,16,2, +32,0,88,163,8,36,41,52,11,2,10,222,33,55,80,159,36,44,37,20,15, +16,2,20,27,158,32,0,88,163,8,36,37,42,11,2,11,222,192,32,0,88, +163,8,36,37,42,11,2,11,222,192,80,159,36,45,37,20,15,16,2,247,22, +143,2,80,159,36,41,37,20,15,16,2,8,128,8,80,159,36,46,37,20,15, +16,2,249,22,168,8,8,128,8,11,80,159,36,47,37,20,15,16,2,88,163, +8,36,37,50,8,128,32,2,14,223,0,33,56,80,159,36,48,37,20,15,16, +2,88,163,8,36,38,55,8,128,32,2,15,223,0,33,57,80,159,36,49,37, +20,15,16,2,247,22,75,80,159,36,50,37,20,15,16,2,248,22,18,74,109, +111,100,117,108,101,45,108,111,97,100,105,110,103,80,159,36,51,37,20,15,16, +2,11,80,158,36,52,20,15,16,2,11,80,158,36,53,20,15,16,2,32,0, +88,163,36,38,8,25,11,2,20,222,33,63,80,159,36,54,37,20,15,16,2, +11,80,158,36,55,20,15,16,2,88,164,8,34,37,45,8,240,0,0,40,0, +1,21,112,114,101,112,45,112,108,97,110,101,116,45,114,101,115,111,108,118,101, +114,33,37,224,1,0,33,64,80,159,36,8,28,39,20,15,16,2,88,163,36, +37,50,8,240,0,0,3,0,67,103,101,116,45,100,105,114,223,0,33,65,80, +159,36,8,29,39,20,15,16,2,88,163,36,37,49,8,240,0,0,64,0,72, +112,97,116,104,45,115,115,45,62,114,107,116,223,0,33,66,80,159,36,8,30, +39,20,15,16,2,88,163,8,36,37,45,8,240,0,0,4,0,9,223,0,33, +67,80,159,36,8,31,39,20,15,16,2,88,163,36,37,45,8,240,0,128,0, +0,9,223,0,33,68,80,159,36,8,32,39,20,15,16,2,27,11,20,19,158, +36,90,159,37,10,89,161,37,36,10,20,25,96,2,22,88,163,8,36,38,54, +8,32,9,224,2,1,33,69,88,163,36,39,49,11,9,223,0,33,70,88,163, +36,40,8,32,16,4,8,240,44,240,0,0,8,240,204,241,0,0,37,36,9, +224,2,1,33,85,207,80,159,36,56,37,20,15,16,2,88,163,36,36,45,16, +2,8,130,8,8,184,32,2,24,223,0,33,86,80,159,36,8,25,37,20,15, +16,2,20,27,158,88,163,8,36,36,45,16,2,36,8,168,32,2,25,223,0, +33,87,88,163,8,36,36,45,16,2,36,8,168,32,2,25,223,0,33,88,80, +159,36,8,26,37,96,29,94,2,4,68,35,37,107,101,114,110,101,108,11,29, +94,2,4,69,35,37,109,105,110,45,115,116,120,11,2,8,2,23,9,9,9, +36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 8527); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,49,46,57,84,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0,16,0, -29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,98,1,0, -0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2, -67,35,37,117,116,105,108,115,11,29,94,2,2,69,35,37,110,101,116,119,111, -114,107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2, -74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2,66, -35,37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115,11, -29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,136,90, -0,0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2,6, -36,36,159,2,7,36,36,159,2,8,36,36,159,2,9,36,36,159,2,9,36, -36,16,0,159,36,20,113,159,36,16,1,11,16,0,20,26,144,9,2,1,2, -1,29,11,11,11,9,9,11,11,11,18,96,11,46,46,46,36,80,158,36,36, -20,113,159,36,16,0,16,0,37,39,36,16,0,36,16,0,36,11,11,11,16, -0,16,0,16,0,36,36,37,12,11,11,16,0,16,0,16,0,36,36,11,12, -11,11,16,0,16,0,16,0,36,36,16,0,104,2,9,2,8,29,94,2,2, -69,35,37,102,111,114,101,105,103,110,11,29,94,2,2,68,35,37,117,110,115, -97,102,101,11,29,94,2,2,69,35,37,102,108,102,120,110,117,109,11,2,7, -2,6,2,5,2,4,2,3,29,94,2,2,67,35,37,112,108,97,99,101,11, -29,94,2,2,69,35,37,102,117,116,117,114,101,115,11,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 418); + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,49,46,49,48,84,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0,16, +0,29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,98,1, +0,0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2, +2,67,35,37,117,116,105,108,115,11,29,94,2,2,69,35,37,110,101,116,119, +111,114,107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2, +2,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2, +66,35,37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115, +11,29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,158, +90,0,0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2, +6,36,36,159,2,7,36,36,159,2,8,36,36,159,2,9,36,36,159,2,9, +36,36,16,0,159,36,20,113,159,36,16,1,11,16,0,20,26,144,9,2,1, +2,1,29,11,11,11,9,9,11,11,11,18,96,11,46,46,46,36,80,158,36, +36,20,113,159,36,16,0,16,0,37,39,36,16,0,36,16,0,36,11,11,11, +16,0,16,0,16,0,36,36,37,12,11,11,16,0,16,0,16,0,36,36,11, +12,11,11,16,0,16,0,16,0,36,36,16,0,104,2,9,2,8,29,94,2, +2,69,35,37,102,111,114,101,105,103,110,11,29,94,2,2,68,35,37,117,110, +115,97,102,101,11,29,94,2,2,69,35,37,102,108,102,120,110,117,109,11,2, +7,2,6,2,5,2,4,2,3,29,94,2,2,67,35,37,112,108,97,99,101, +11,29,94,2,2,69,35,37,102,117,116,117,114,101,115,11,9,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 419); } diff --git a/src/racket/src/salloc.c b/src/racket/src/salloc.c index b2ba46f2e5..7918dbb636 100644 --- a/src/racket/src/salloc.c +++ b/src/racket/src/salloc.c @@ -113,7 +113,7 @@ void scheme_set_stack_base(void *base, int no_auto_statics) XFORM_SKIP_PROC GC_init_type_tags(_scheme_last_type_, scheme_pair_type, scheme_mutable_pair_type, scheme_weak_box_type, scheme_ephemeron_type, scheme_rt_weak_array, - scheme_cust_box_type); + scheme_cust_box_type, scheme_phantom_bytes_type); /* We want to be able to allocate symbols early. */ scheme_register_traversers(); #endif diff --git a/src/racket/src/schminc.h b/src/racket/src/schminc.h index 5c130612c0..b5e7f30f6d 100644 --- a/src/racket/src/schminc.h +++ b/src/racket/src/schminc.h @@ -14,7 +14,7 @@ #define USE_COMPILED_STARTUP 1 -#define EXPECTED_PRIM_COUNT 1073 +#define EXPECTED_PRIM_COUNT 1076 #define EXPECTED_UNSAFE_COUNT 80 #define EXPECTED_FLFXNUM_COUNT 69 #define EXPECTED_FUTURES_COUNT 15 diff --git a/src/racket/src/schvers.h b/src/racket/src/schvers.h index 845cc6511e..db975b930d 100644 --- a/src/racket/src/schvers.h +++ b/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "5.3.1.9" +#define MZSCHEME_VERSION "5.3.1.10" #define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_Y 3 #define MZSCHEME_VERSION_Z 1 -#define MZSCHEME_VERSION_W 9 +#define MZSCHEME_VERSION_W 10 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) diff --git a/src/racket/src/stypes.h b/src/racket/src/stypes.h index 99b6bf06ab..0e61944ac3 100644 --- a/src/racket/src/stypes.h +++ b/src/racket/src/stypes.h @@ -200,83 +200,84 @@ enum { scheme_port_closed_evt_type, /* 180 */ scheme_proc_shape_type, /* 181 */ scheme_struct_proc_shape_type, /* 182 */ + scheme_phantom_bytes_type, /* 183 */ #ifdef MZTAG_REQUIRED - _scheme_last_normal_type_, /* 183 */ + _scheme_last_normal_type_, /* 184 */ - scheme_rt_weak_array, /* 184 */ + scheme_rt_weak_array, /* 185 */ - scheme_rt_comp_env, /* 185 */ - scheme_rt_constant_binding, /* 186 */ - scheme_rt_resolve_info, /* 187 */ - scheme_rt_unresolve_info, /* 188 */ - scheme_rt_optimize_info, /* 189 */ - scheme_rt_compile_info, /* 190 */ - scheme_rt_cont_mark, /* 191 */ - scheme_rt_saved_stack, /* 192 */ - scheme_rt_reply_item, /* 193 */ - scheme_rt_closure_info, /* 194 */ - scheme_rt_overflow, /* 195 */ - scheme_rt_overflow_jmp, /* 196 */ - scheme_rt_meta_cont, /* 197 */ - scheme_rt_dyn_wind_cell, /* 198 */ - scheme_rt_dyn_wind_info, /* 199 */ - scheme_rt_dyn_wind, /* 200 */ - scheme_rt_dup_check, /* 201 */ - scheme_rt_thread_memory, /* 202 */ - scheme_rt_input_file, /* 203 */ - scheme_rt_input_fd, /* 204 */ - scheme_rt_oskit_console_input, /* 205 */ - scheme_rt_tested_input_file, /* 206 */ - scheme_rt_tested_output_file, /* 207 */ - scheme_rt_indexed_string, /* 208 */ - scheme_rt_output_file, /* 209 */ - scheme_rt_load_handler_data, /* 210 */ - scheme_rt_pipe, /* 211 */ - scheme_rt_beos_process, /* 212 */ - scheme_rt_system_child, /* 213 */ - scheme_rt_tcp, /* 214 */ - scheme_rt_write_data, /* 215 */ - scheme_rt_tcp_select_info, /* 216 */ - scheme_rt_param_data, /* 217 */ - scheme_rt_will, /* 218 */ - scheme_rt_linker_name, /* 219 */ - scheme_rt_param_map, /* 220 */ - scheme_rt_finalization, /* 221 */ - scheme_rt_finalizations, /* 222 */ - scheme_rt_cpp_object, /* 223 */ - scheme_rt_cpp_array_object, /* 224 */ - scheme_rt_stack_object, /* 225 */ - scheme_rt_preallocated_object, /* 226 */ - scheme_thread_hop_type, /* 227 */ - scheme_rt_srcloc, /* 228 */ - scheme_rt_evt, /* 229 */ - scheme_rt_syncing, /* 230 */ - scheme_rt_comp_prefix, /* 231 */ - scheme_rt_user_input, /* 232 */ - scheme_rt_user_output, /* 233 */ - scheme_rt_compact_port, /* 234 */ - scheme_rt_read_special_dw, /* 235 */ - scheme_rt_regwork, /* 236 */ - scheme_rt_rx_lazy_string, /* 237 */ - scheme_rt_buf_holder, /* 238 */ - scheme_rt_parameterization, /* 239 */ - scheme_rt_print_params, /* 240 */ - scheme_rt_read_params, /* 241 */ - scheme_rt_native_code, /* 242 */ - scheme_rt_native_code_plus_case, /* 243 */ - scheme_rt_jitter_data, /* 244 */ - scheme_rt_module_exports, /* 245 */ - scheme_rt_delay_load_info, /* 246 */ - scheme_rt_marshal_info, /* 247 */ - scheme_rt_unmarshal_info, /* 248 */ - scheme_rt_runstack, /* 249 */ - scheme_rt_sfs_info, /* 250 */ - scheme_rt_validate_clearing, /* 251 */ - scheme_rt_avl_node, /* 252 */ - scheme_rt_lightweight_cont, /* 253 */ - scheme_rt_export_info, /* 254 */ - scheme_rt_cont_jmp, /* 255 */ + scheme_rt_comp_env, /* 186 */ + scheme_rt_constant_binding, /* 187 */ + scheme_rt_resolve_info, /* 188 */ + scheme_rt_unresolve_info, /* 189 */ + scheme_rt_optimize_info, /* 190 */ + scheme_rt_compile_info, /* 191 */ + scheme_rt_cont_mark, /* 192 */ + scheme_rt_saved_stack, /* 193 */ + scheme_rt_reply_item, /* 194 */ + scheme_rt_closure_info, /* 195 */ + scheme_rt_overflow, /* 196 */ + scheme_rt_overflow_jmp, /* 197 */ + scheme_rt_meta_cont, /* 198 */ + scheme_rt_dyn_wind_cell, /* 199 */ + scheme_rt_dyn_wind_info, /* 200 */ + scheme_rt_dyn_wind, /* 201 */ + scheme_rt_dup_check, /* 202 */ + scheme_rt_thread_memory, /* 203 */ + scheme_rt_input_file, /* 204 */ + scheme_rt_input_fd, /* 205 */ + scheme_rt_oskit_console_input, /* 206 */ + scheme_rt_tested_input_file, /* 207 */ + scheme_rt_tested_output_file, /* 208 */ + scheme_rt_indexed_string, /* 209 */ + scheme_rt_output_file, /* 210 */ + scheme_rt_load_handler_data, /* 211 */ + scheme_rt_pipe, /* 212 */ + scheme_rt_beos_process, /* 213 */ + scheme_rt_system_child, /* 214 */ + scheme_rt_tcp, /* 215 */ + scheme_rt_write_data, /* 216 */ + scheme_rt_tcp_select_info, /* 217 */ + scheme_rt_param_data, /* 218 */ + scheme_rt_will, /* 219 */ + scheme_rt_linker_name, /* 220 */ + scheme_rt_param_map, /* 221 */ + scheme_rt_finalization, /* 222 */ + scheme_rt_finalizations, /* 223 */ + scheme_rt_cpp_object, /* 224 */ + scheme_rt_cpp_array_object, /* 225 */ + scheme_rt_stack_object, /* 226 */ + scheme_rt_preallocated_object, /* 227 */ + scheme_thread_hop_type, /* 228 */ + scheme_rt_srcloc, /* 229 */ + scheme_rt_evt, /* 230 */ + scheme_rt_syncing, /* 231 */ + scheme_rt_comp_prefix, /* 232 */ + scheme_rt_user_input, /* 233 */ + scheme_rt_user_output, /* 234 */ + scheme_rt_compact_port, /* 235 */ + scheme_rt_read_special_dw, /* 236 */ + scheme_rt_regwork, /* 237 */ + scheme_rt_rx_lazy_string, /* 238 */ + scheme_rt_buf_holder, /* 239 */ + scheme_rt_parameterization, /* 240 */ + scheme_rt_print_params, /* 241 */ + scheme_rt_read_params, /* 242 */ + scheme_rt_native_code, /* 243 */ + scheme_rt_native_code_plus_case, /* 244 */ + scheme_rt_jitter_data, /* 245 */ + scheme_rt_module_exports, /* 246 */ + scheme_rt_delay_load_info, /* 247 */ + scheme_rt_marshal_info, /* 248 */ + scheme_rt_unmarshal_info, /* 249 */ + scheme_rt_runstack, /* 250 */ + scheme_rt_sfs_info, /* 251 */ + scheme_rt_validate_clearing, /* 252 */ + scheme_rt_avl_node, /* 253 */ + scheme_rt_lightweight_cont, /* 254 */ + scheme_rt_export_info, /* 255 */ + scheme_rt_cont_jmp, /* 256 */ #endif _scheme_last_type_ diff --git a/src/racket/src/thread.c b/src/racket/src/thread.c index 9bc64459c9..f341034803 100644 --- a/src/racket/src/thread.c +++ b/src/racket/src/thread.c @@ -271,7 +271,7 @@ extern intptr_t GC_is_place(); #ifdef MZ_PRECISE_GC extern intptr_t GC_get_memory_use(void *c); #else -extern MZ_DLLIMPORT long GC_get_memory_use(); +extern MZ_DLLIMPORT intptr_t GC_get_memory_use(); #endif typedef struct Thread_Cell { @@ -316,6 +316,11 @@ SHARED_OK static Proc_Global_Rec *process_globals; static mzrt_mutex *process_global_lock; #endif +typedef struct { + Scheme_Object so; + intptr_t size; +} Scheme_Phantom_Bytes; + #ifdef MZ_PRECISE_GC static void register_traversers(void); #endif @@ -392,6 +397,10 @@ static Scheme_Object *current_thread_set(int argc, Scheme_Object *argv[]); static Scheme_Object *current_thread_initial_stack_size(int argc, Scheme_Object *argv[]); +static Scheme_Object *phantom_bytes_p(int argc, Scheme_Object *argv[]); +static Scheme_Object *make_phantom_bytes(int argc, Scheme_Object *argv[]); +static Scheme_Object *set_phantom_bytes(int argc, Scheme_Object *argv[]); + static void adjust_custodian_family(void *pr, void *ignored); static Scheme_Object *make_will_executor(int argc, Scheme_Object *args[]); @@ -579,6 +588,10 @@ void scheme_init_thread(Scheme_Env *env) GLOBAL_PRIM_W_ARITY("choice-evt" , evts_to_evt , 0, -1, env); GLOBAL_PARAMETER("current-thread-initial-stack-size", current_thread_initial_stack_size, MZCONFIG_THREAD_INIT_STACK_SIZE, env); + + GLOBAL_PRIM_W_ARITY("phantom-bytes?", phantom_bytes_p, 1, 1, env); + GLOBAL_PRIM_W_ARITY("make-phantom-bytes", make_phantom_bytes, 1, 1, env); + GLOBAL_PRIM_W_ARITY("set-phantom-bytes!", set_phantom_bytes, 2, 2, env); } void scheme_init_thread_places(void) { @@ -679,7 +692,7 @@ static Scheme_Object *collect_garbage(int c, Scheme_Object *p[]) static Scheme_Object *current_memory_use(int argc, Scheme_Object *args[]) { Scheme_Object *arg = NULL; - intptr_t retval = 0; + uintptr_t retval = 0; if (argc) { if (SCHEME_FALSEP(args[0])) { @@ -700,7 +713,7 @@ static Scheme_Object *current_memory_use(int argc, Scheme_Object *args[]) retval = GC_get_memory_use(); #endif - return scheme_make_integer_value(retval); + return scheme_make_integer_value_from_unsigned(retval); } @@ -7586,7 +7599,7 @@ Scheme_Object *scheme_param_config(char *name, Scheme_Object *pos, static Scheme_Object * exact_positive_integer_p (int argc, Scheme_Object *argv[]) { - Scheme_Object *n = argv[0]; + Scheme_Object *n = argv[argc-1]; if (SCHEME_INTP(n) && (SCHEME_INT_VAL(n) > 0)) return scheme_true; if (SCHEME_BIGNUMP(n) && SCHEME_BIGPOS(n)) @@ -7603,6 +7616,58 @@ static Scheme_Object *current_thread_initial_stack_size(int argc, Scheme_Object -1, exact_positive_integer_p, "exact positive integer", 0); } +static Scheme_Object *phantom_bytes_p(int argc, Scheme_Object *argv[]) +{ + return (SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_phantom_bytes_type) + ? scheme_true + : scheme_false); +} + +static Scheme_Object *make_phantom_bytes(int argc, Scheme_Object *argv[]) +{ + Scheme_Phantom_Bytes *pb; + + if (!scheme_nonneg_exact_p(argv[0])) + scheme_wrong_contract("make-phantom-bytes", "exact-nonnegative-integer?", 0, argc, argv); + + if (!SCHEME_INTP(argv[0])) + scheme_raise_out_of_memory("make-phantom-bytes", NULL); + + pb = MALLOC_ONE_TAGGED(Scheme_Phantom_Bytes); + pb->so.type = scheme_phantom_bytes_type; + pb->size = SCHEME_INT_VAL(argv[0]); + +# ifdef MZ_PRECISE_GC + if (!GC_allocate_phantom_bytes(pb->size)) + scheme_raise_out_of_memory("make-phantom-bytes", NULL); +# endif + + return (Scheme_Object *)pb; +} + +static Scheme_Object *set_phantom_bytes(int argc, Scheme_Object *argv[]) +{ + Scheme_Phantom_Bytes *pb; + intptr_t amt; + + if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_phantom_bytes_type)) + scheme_wrong_contract("set-phantom-bytes!", "phantom-bytes?", 0, argc, argv); + if (!scheme_nonneg_exact_p(argv[1])) + scheme_wrong_contract("set-phantom-bytes!", "exact-nonnegative-integer?", 1, argc, argv); + + pb = (Scheme_Phantom_Bytes *)argv[0]; + amt = SCHEME_INT_VAL(argv[1]); + +# ifdef MZ_PRECISE_GC + if (!GC_allocate_phantom_bytes(amt - pb->size)) + scheme_raise_out_of_memory("make-phantom-bytes", NULL); +# endif + + pb->size = amt; + + return scheme_void; +} + /*========================================================================*/ /* namespaces */ /*========================================================================*/ diff --git a/src/racket/src/type.c b/src/racket/src/type.c index f0a141ebf7..c23e09fce1 100644 --- a/src/racket/src/type.c +++ b/src/racket/src/type.c @@ -307,6 +307,8 @@ scheme_init_type () set_name(scheme_resolved_module_path_type, ""); + set_name(scheme_phantom_bytes_type, ""); + #ifdef MZ_GC_BACKTRACE set_name(scheme_rt_meta_cont, ""); #endif