diff --git a/collects/compiler/embed-unit.rkt b/collects/compiler/embed-unit.rkt index 994deafa9d..3f8cf7c972 100644 --- a/collects/compiler/embed-unit.rkt +++ b/collects/compiler/embed-unit.rkt @@ -799,7 +799,7 @@ ;; into an executable). The bundle is written to the current output port. (define (do-write-module-bundle outp verbose? modules config? literal-files literal-expressions collects-dest on-extension program-name compiler expand-namespace - src-filter get-extra-imports) + src-filter get-extra-imports on-decls-done) (let* ([module-paths (map cadr modules)] [resolve-one-path (lambda (mp) (let ([f (resolve-module-path mp #f)]) @@ -998,6 +998,7 @@ ;; Remove `module' binding before we start running user code: (write (compile-using-kernel '(namespace-set-variable-value! 'module #f #t)) outp) (write (compile-using-kernel '(namespace-undefine-variable! 'module)) outp) + (on-decls-done outp) (newline outp) (when config-infos (for ([config-info (in-list config-infos)]) @@ -1032,7 +1033,8 @@ on-extension "?" ; program-name compiler expand-namespace - src-filter get-extra-imports)) + src-filter get-extra-imports + void)) ;; The old interface: @@ -1175,6 +1177,7 @@ (update-dll-dir dest (build-path orig-dir dir)))))))) (let ([write-module (lambda (s) + (define pos #f) (do-write-module-bundle s verbose? modules config? literal-files literal-expressions collects-dest on-extension @@ -1182,11 +1185,14 @@ compiler expand-namespace src-filter - get-extra-imports))] + get-extra-imports + (lambda (outp) (set! pos (file-position outp)))) + pos)] [make-full-cmdline - (lambda (start end) + (lambda (start decl-end end) (let ([start-s (number->string start)] - [end-s (number->string end)]) + [decl-end-s (number->string decl-end)] + [end-s (number->string end)]) (append (if launcher? (if (and (eq? 'windows (system-type)) keep-exe?) @@ -1197,7 +1203,7 @@ exe))) ;; No argv[0]: null) - (list "-k" start-s end-s)) + (list "-k" start-s decl-end-s end-s)) cmdline)))] [make-starter-cmdline (lambda (full-cmdline) @@ -1219,20 +1225,21 @@ dir) ""))) full-cmdline))))]) - (let-values ([(start end cmdline-end) + (let-values ([(start decl-end end cmdline-end) (if (and (eq? (system-type) 'macosx) (not unix-starter?)) ;; For Mach-O, we know how to add a proper segment (let ([s (open-output-bytes)]) - (write-module s) + (define decl-len (write-module s)) (let ([s (get-output-bytes s)]) (let ([start (add-plt-segment dest-exe s)]) (values start + (+ start decl-len) (+ start (bytes-length s)) #f)))) ;; Unix starter: Maybe ELF, in which case we ;; can add a proper section - (let-values ([(s e p) + (let-values ([(s e dl p) (if unix-starter? (add-racket-section orig-exe @@ -1240,25 +1247,28 @@ (if launcher? #".rackcmdl" #".rackprog") (lambda (start) (let ([s (open-output-bytes)]) - (write-module s) + (define decl-len (write-module s)) (let ([p (file-position s)]) (display (make-starter-cmdline - (make-full-cmdline start (+ start p))) + (make-full-cmdline start + (+ start decl-len) + (+ start p))) s) - (values (get-output-bytes s) p))))) - (values #f #f #f))]) + (values (get-output-bytes s) decl-len p))))) + (values #f #f #f #f))]) (if (and s e) ;; ELF succeeded: - (values s (+ s p) e) + (values s (+ s dl) (+ s p) e) ;; Otherwise, just add to the end of the file: (let ([start (file-size dest-exe)]) - (call-with-output-file* dest-exe write-module - #:exists 'append) - (values start (file-size dest-exe) #f)))))]) + (define decl-end + (call-with-output-file* dest-exe write-module + #:exists 'append)) + (values start decl-end (file-size dest-exe) #f)))))]) (when verbose? (fprintf (current-error-port) "Setting command line\n")) (let () - (let ([full-cmdline (make-full-cmdline start end)]) + (let ([full-cmdline (make-full-cmdline start decl-end end)]) (when collects-path-bytes (when verbose? (fprintf (current-error-port) "Setting collection path\n")) @@ -1298,6 +1308,7 @@ (file-position out (+ numpos 7)) (write-bytes #"!" out) (write-num start) + (write-num decl-end) (write-num end) (write-num cmdline-end) (write-num (length full-cmdline)) diff --git a/collects/compiler/private/elf.rkt b/collects/compiler/private/elf.rkt index bdfc2f841a..4f2bddd2cd 100644 --- a/collects/compiler/private/elf.rkt +++ b/collects/compiler/private/elf.rkt @@ -203,7 +203,7 @@ new-str-pos new-str-delta) (values new-str-pos new-str-delta new-sec-pos new-sec-delta))] - [(data mid) (get-data (+ total-size new-str-delta new-sec-delta))]) + [(data decl-len mid) (get-data (+ total-size new-str-delta new-sec-delta))]) (call-with-output-file* dest-file #:exists 'truncate @@ -313,4 +313,4 @@ (file-position out dest) (write-bytes data out) - (values dest (+ dest (bytes-length data)) mid)))))))))))) + (values dest (+ dest (bytes-length data)) decl-len mid)))))))))))) diff --git a/collects/racket/place.rkt b/collects/racket/place.rkt index ec0f3c28b3..f2847d976e 100644 --- a/collects/racket/place.rkt +++ b/collects/racket/place.rkt @@ -182,8 +182,9 @@ (raise-type-error who "output-port or #f" out)) (unless (or (not err) (output-port? err) (eq? err 'stdout)) (raise-type-error who "output-port, #f, or 'stdout" err)) - (when (and (pair? module-path) (eq? (car module-path) 'quote)) - (raise-mismatch-error who "not a filesystem module-path: " module-path)) + (when (and (pair? module-path) (eq? (car module-path) 'quote) + (not (module-predefined? module-path))) + (raise-mismatch-error who "not a filesystem or predefined module-path: " module-path)) (when (and (input-port? in) (port-closed? in)) (raise-mismatch-error who "input port is closed: " in)) (when (and (output-port? out) (port-closed? out)) @@ -261,6 +262,7 @@ (resolved-module-path-name (variable-reference->resolved-module-path vr))) - (when (symbol? name) - (error who "the current module-path-name is not a file path")) - (start-place-func who name func-name in out err)) + (when (and (symbol? name) + (not (module-predefined? `(quote ,name)))) + (error who "the enclosing module's resolved name is not a path or predefined")) + (start-place-func who (if (symbol? name) `(quote ,name) name) func-name in out err)) diff --git a/collects/scribblings/reference/module-reflect.scrbl b/collects/scribblings/reference/module-reflect.scrbl index 0d0e401152..28113dd71e 100644 --- a/collects/scribblings/reference/module-reflect.scrbl +++ b/collects/scribblings/reference/module-reflect.scrbl @@ -1,5 +1,6 @@ #lang scribble/doc -@(require "mz.rkt") +@(require "mz.rkt" + (for-label compiler/embed)) @title{Module Names and Loading} @@ -417,3 +418,13 @@ Like @racket[module-compiled-imports], but produces the imports of Like @racket[module-compiled-exports], but produces the exports of @racket[mod], which must be declared (but not necessarily @tech{instantiate}d or @tech{visit}ed) in the current namespace.} + +@defproc[(module-predefined? + [mod (or/c module-path? path? resolved-module-path?)]) + boolean?]{ + +Reports whether @racket[mod] refers to a module that is predefined for +the running Racket instance. Predefined modules always have a symbolic +resolved module path, and they may be predefined always or +specifically within a particular executable (such as one created by +@exec{raco exe} or @racket[create-embedding-executable]).} diff --git a/collects/scribblings/reference/places.scrbl b/collects/scribblings/reference/places.scrbl index 911f98f214..a45dd972af 100644 --- a/collects/scribblings/reference/places.scrbl +++ b/collects/scribblings/reference/places.scrbl @@ -148,7 +148,11 @@ are simulated using @racket[thread].} place. If the output ports are @tech{file-stream ports}, then the connected ports in the places share the underlying stream, otherwise a @tech{thread} in the creating place pumps bytes to the current - ports in the creating place.} + ports in the creating place. + + The @racket[module-path] argument must not be a module path of the + form @racket[(#,(racket quote) _sym)] unless the module is predefined (see + @racket[module-predefined?]).} @defproc[(dynamic-place* [module-path (or/c module-path? path?)] diff --git a/collects/scribblings/reference/startup.scrbl b/collects/scribblings/reference/startup.scrbl index 815fdc8f06..290f04768d 100644 --- a/collects/scribblings/reference/startup.scrbl +++ b/collects/scribblings/reference/startup.scrbl @@ -166,10 +166,14 @@ flags: all further command-line elements to be treated as non-flag arguments.} - @item{@FlagFirst{k} @nonterm{n} @nonterm{m} : Loads code embedded in - the executable from file position @nonterm{n} to - @nonterm{m}. This option is normally embedded in a stand-alone - binary that also embeds Racket code.} + @item{@FlagFirst{k} @nonterm{n} @nonterm{m} @nonterm{p} : Loads code + embedded in the executable from file position @nonterm{n} to + @nonterm{m} and from @nonterm{m} to @nonterm{p}. The first + range is loaded in every new @tech{place}, and any modules + declared in that range are considered predefined in the sense + of @racket[module-predefined?]. This option is normally + embedded in a stand-alone binary that also embeds Racket + code.} @item{@FlagFirst{m} or @DFlagFirst{main} : Evaluates a call to @racketidfont{main} as bound in the top-level environment. All diff --git a/doc/release-notes/racket/HISTORY.txt b/doc/release-notes/racket/HISTORY.txt index 853c6d02df..4c720db7e9 100644 --- a/doc/release-notes/racket/HISTORY.txt +++ b/doc/release-notes/racket/HISTORY.txt @@ -1,4 +1,8 @@ -Version 5.2.2 +Version 5.2.0.3 +Added module-predefined? +Changed the raacket -k command-line flag + +Version 5.2.0.2 Added port-closed-evt Changed I/O scheduling to use epoll()/kqueue() when available diff --git a/src/racket/cmdline.inc b/src/racket/cmdline.inc index c8a403ce51..aa746a891b 100644 --- a/src/racket/cmdline.inc +++ b/src/racket/cmdline.inc @@ -142,6 +142,7 @@ enum { mzcmd_REQUIRE_LIB = 4, mzcmd_REQUIRE_PLANET = 5, mzcmd_EMBEDDED = 6, + mzcmd_EMBEDDED_REG = 7, }; /* To avoid having to create a specific mark procedure for @@ -283,7 +284,8 @@ static int finish_cmd_line_run(FinishArgs *fa, Repl_Proc repl) || (fa->eval_kind[i] == mzcmd_REQUIRE_FILE) || (fa->eval_kind[i] == mzcmd_REQUIRE_LIB) || (fa->eval_kind[i] == mzcmd_REQUIRE_PLANET) - || (fa->eval_kind[i] == mzcmd_EMBEDDED)) { + || (fa->eval_kind[i] == mzcmd_EMBEDDED) + || (fa->eval_kind[i] == mzcmd_EMBEDDED_REG)) { Scheme_Thread * volatile p; p = scheme_get_current_thread(); save = p->error_buf; @@ -295,15 +297,11 @@ static int finish_cmd_line_run(FinishArgs *fa, Repl_Proc repl) } else if (fa->eval_kind[i] == mzcmd_LOAD) { /* eval from stdin */ scheme_eval_all_with_prompt(NULL, fa->global_env, 2); + } else if (fa->eval_kind[i] == mzcmd_EMBEDDED_REG) { + scheme_register_embedded_load(fa->evals_and_loads[i]); + scheme_embedded_load(fa->evals_and_loads[i], 1); } else if (fa->eval_kind[i] == mzcmd_EMBEDDED) { - Scheme_Object *s, *e, *a[3], *eload; - eload = scheme_builtin_value("embedded-load"); - s = scheme_make_utf8_string(fa->evals_and_loads[i]); - e = scheme_make_utf8_string(fa->evals_and_loads[i] + strlen(fa->evals_and_loads[i]) + 1); - a[0] = s; - a[1] = e; - a[2] = scheme_make_false(); - scheme_apply(eload, 3, a); + scheme_embedded_load(fa->evals_and_loads[i], 0); } else { Scheme_Object *a[1], *nsreq; char *name; @@ -990,11 +988,11 @@ static int run_from_cmd_line(int argc, char *_argv[], if (!init_ns) no_init_ns = 1; break; - case 'k': - if (argc < 3) { + case 'k': + if (argc < 4) { PRINTF("%s: missing %s after %s switch\n", prog, - (argc < 2) ? "starting and ending offsets" : "ending offset", + (argc < 2) ? "starting and ending offsets" : "second ending offset", real_switch); goto show_need_help; } @@ -1004,6 +1002,11 @@ static int run_from_cmd_line(int argc, char *_argv[], evals_and_loads[num_enl] = se; argv++; --argc; + eval_kind[num_enl++] = mzcmd_EMBEDDED_REG; + se = make_embedded_load(argv[0], argv[1]); + evals_and_loads[num_enl] = se; + argv++; + --argc; eval_kind[num_enl++] = mzcmd_EMBEDDED; break; case 'N': @@ -1348,7 +1351,7 @@ static int run_from_cmd_line(int argc, char *_argv[], " -p : Like -e '(require (planet \"\")'\n" " -r , --script : Same as -f -N --\n" " -u , --require-script : Same as -t -N --\n" - " -k : Load executable-embedded code from file offset to \n" + " -k

: Load executable-embedded code from offset to

\n" " -m, --main : Call `main' with command-line arguments, print results\n" " Interaction options:\n" " -i, --repl : Run interactive read-eval-print loop; implies -v\n" diff --git a/src/racket/dynsrc/ustart.c b/src/racket/dynsrc/ustart.c index 5f2209d2eb..109a181e39 100644 --- a/src/racket/dynsrc/ustart.c +++ b/src/racket/dynsrc/ustart.c @@ -16,7 +16,8 @@ of little-endian 4-byte ints: start - offset into the binary prog_end - offset; start to prog_end is the program region - end - offset; prog_end to end is the command region + decl_end - offset; prog_end to decl_end is the module-command region + end - offset; prog_end to end is the complete command region count - number of cmdline args in command region x11? - non-zero => launches GRacket for X @@ -25,10 +26,10 @@ dll_path - DLL directory if non-empty (relative is w.r.t. executable) cmdline_arg ... - For ELF binaries, the absolute values of `start', `prog_end', and - `end' are ignored if a ".rackcmdl" (starter) or ".rackprog" + For ELF binaries, the absolute values of `start', `decl_end', `prog_end', + and `end' are ignored if a ".rackcmdl" (starter) or ".rackprog" (embedding) section is found. The `start' value is set to match the - section offset, and `prog_end' and `end' are correspondingly + section offset, and `decl_end', `prog_end', and `end' are correspondingly adjusted. Using a seciton offset allows linking tools (such as `strip') to move the data in the executable. */ @@ -266,7 +267,7 @@ typedef struct ELF__Xword sh_entsize; } Elf__Shdr; -static int try_elf_section(const char *me, int *_start, int *_prog_end, int *_end) +static int try_elf_section(const char *me, int *_start, int *_decl_end, int *_prog_end, int *_end) { int fd, i; ELF__Header e; @@ -303,6 +304,7 @@ static int try_elf_section(const char *me, int *_start, int *_prog_end, int *_en } if (!strcmp(strs + s.sh_name, ".rackcmdl") || !strcmp(strs + s.sh_name, ".rackprog")) { + *_decl_end = (*_decl_end - *_start) + s.sh_offset; *_prog_end = (*_prog_end - *_start) + s.sh_offset; *_start = s.sh_offset; *_end = s.sh_offset + s.sh_size; @@ -321,7 +323,7 @@ int main(int argc, char **argv) { char *me = argv[0], *data, **new_argv; char *exe_path, *lib_path, *dll_path; - int start, prog_end, end, count, fd, v, en, x11; + int start, decl_end, prog_end, end, count, fd, v, en, x11; int argpos, inpos, collcount = 1, fix_argv; if (config[7] == '[') { @@ -401,12 +403,13 @@ int main(int argc, char **argv) } start = as_int(config + 8); - prog_end = as_int(config + 12); - end = as_int(config + 16); - count = as_int(config + 20); - x11 = as_int(config + 24); + decl_end = as_int(config + 12); + prog_end = as_int(config + 16); + end = as_int(config + 20); + count = as_int(config + 24); + x11 = as_int(config + 28); - fix_argv = try_elf_section(me, &start, &prog_end, &end); + fix_argv = try_elf_section(me, &start, &decl_end, &prog_end, &end); { int offset, len; @@ -503,7 +506,7 @@ int main(int argc, char **argv) if (fix_argv) { /* next three args are "-k" and numbers; fix - the numbers to match start and prog_end */ + the numbers to match start, decl_end, and prog_end */ fix_argv = argpos + 1; } @@ -522,7 +525,8 @@ int main(int argc, char **argv) if (fix_argv) { new_argv[fix_argv] = num_to_string(start); - new_argv[fix_argv+1] = num_to_string(prog_end); + new_argv[fix_argv+1] = num_to_string(decl_end); + new_argv[fix_argv+2] = num_to_string(prog_end); } /* Execute the original binary: */ diff --git a/src/racket/include/scheme.h b/src/racket/include/scheme.h index 200a1e5492..ab9726155e 100644 --- a/src/racket/include/scheme.h +++ b/src/racket/include/scheme.h @@ -1772,6 +1772,8 @@ XFORM_NONGCING MZ_EXTERN intptr_t scheme_get_multiple_count(); XFORM_NONGCING MZ_EXTERN Scheme_Object **scheme_get_multiple_array(); XFORM_NONGCING MZ_EXTERN void scheme_set_current_thread_ran_some(); +MZ_EXTERN void scheme_embedded_load(const char *s, int predefined); +MZ_EXTERN void scheme_register_embedded_load(const char *s); /* Set these global hooks (optionally): */ typedef void (*Scheme_Exit_Proc)(int v); diff --git a/src/racket/include/schthread.h b/src/racket/include/schthread.h index f911a0e6eb..c716f9c2e6 100644 --- a/src/racket/include/schthread.h +++ b/src/racket/include/schthread.h @@ -123,6 +123,7 @@ typedef struct Thread_Local_Variables { uintptr_t GC_gen0_alloc_page_end_; int GC_gen0_alloc_only_; uintptr_t force_gc_for_place_accounting_; + int scheme_starting_up_; void *bignum_cache_[BIGNUM_CACHE_SIZE]; int cache_count_; struct Scheme_Hash_Table *toplevels_ht_; @@ -469,6 +470,7 @@ XFORM_GC_VARIABLE_STACK_THROUGH_THREAD_LOCAL; #define GC_gen0_alloc_only XOA (scheme_get_thread_local_variables()->GC_gen0_alloc_only_) #define GC_variable_stack XOA (scheme_get_thread_local_variables()->GC_variable_stack_) #define force_gc_for_place_accounting XOA (scheme_get_thread_local_variables()->force_gc_for_place_accounting_) +#define scheme_starting_up XOA (scheme_get_thread_local_variables()->scheme_starting_up_) #define bignum_cache XOA (scheme_get_thread_local_variables()->bignum_cache_) #define cache_count XOA (scheme_get_thread_local_variables()->cache_count_) #define toplevels_ht XOA (scheme_get_thread_local_variables()->toplevels_ht_) diff --git a/src/racket/src/cstartup.inc b/src/racket/src/cstartup.inc index abd06f2881..0123a2d4a2 100644 --- a/src/racket/src/cstartup.inc +++ b/src/racket/src/cstartup.inc @@ -1,24 +1,24 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,50,46,48,46,50,0,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,50,46,48,46,51,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,13,0,18, -0,25,0,28,0,35,0,42,0,46,0,59,0,64,0,68,0,73,0,82,0, +0,25,0,30,0,33,0,40,0,53,0,58,0,62,0,66,0,73,0,82,0, 85,0,91,0,105,0,119,0,122,0,128,0,132,0,134,0,145,0,147,0,161, 0,168,0,190,0,192,0,206,0,17,1,46,1,57,1,68,1,93,1,126,1, 159,1,218,1,17,2,95,2,150,2,155,2,175,2,68,3,88,3,140,3,206, 3,95,4,237,4,34,5,45,5,124,5,0,0,83,7,0,0,69,35,37,109, -105,110,45,115,116,120,29,11,11,64,99,111,110,100,66,108,101,116,114,101,99, -62,111,114,66,117,110,108,101,115,115,66,100,101,102,105,110,101,63,97,110,100, -72,112,97,114,97,109,101,116,101,114,105,122,101,64,108,101,116,42,63,108,101, -116,64,119,104,101,110,68,104,101,114,101,45,115,116,120,29,11,11,65,113,117, +105,110,45,115,116,120,29,11,11,64,119,104,101,110,66,100,101,102,105,110,101, +64,99,111,110,100,62,111,114,66,108,101,116,114,101,99,72,112,97,114,97,109, +101,116,101,114,105,122,101,64,108,101,116,42,63,108,101,116,63,97,110,100,66, +117,110,108,101,115,115,68,104,101,114,101,45,115,116,120,29,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,85,76,0, -0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,16,20,2,10, -2,2,2,3,2,2,2,5,2,2,2,6,2,2,2,7,2,2,2,8,2, -2,2,9,2,2,2,4,2,2,2,11,2,2,2,12,2,2,97,37,11,8, +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,9,2,2,2,10,2,2,2,11,2,2,2,12,2,2,97,37,11,8, 240,85,76,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,85,76,0,0,16,0,96,11,11,8,240,85, 76,0,0,16,0,18,98,64,104,101,114,101,13,16,5,36,2,14,2,2,11, @@ -28,13 +28,13 @@ 98,199,249,22,73,2,19,248,22,100,201,12,27,248,22,75,248,22,155,4,196, 28,248,22,81,193,20,14,159,37,36,37,28,248,22,81,248,22,75,194,248,22, 74,193,249,22,148,4,80,158,39,36,251,22,83,2,18,248,22,74,199,249,22, -73,2,8,248,22,75,201,11,18,100,10,13,16,5,36,2,14,2,2,11,11, +73,2,11,248,22,75,201,11,18,100,10,13,16,5,36,2,14,2,2,11,11, 8,32,8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49, 52,57,55,48,16,4,11,11,2,21,3,1,8,101,110,118,49,52,57,55,49, 27,248,22,75,248,22,155,4,196,28,248,22,81,193,20,14,159,37,36,37,28, 248,22,81,248,22,75,194,248,22,74,193,249,22,148,4,80,158,39,36,250,22, 83,2,22,248,22,83,249,22,83,248,22,83,2,23,248,22,74,201,251,22,83, -2,18,2,23,2,23,249,22,73,2,5,248,22,75,204,18,100,11,13,16,5, +2,18,2,23,2,23,249,22,73,2,6,248,22,75,204,18,100,11,13,16,5, 36,2,14,2,2,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2,20, 3,1,8,101,110,118,49,52,57,55,51,16,4,11,11,2,21,3,1,8,101, 110,118,49,52,57,55,52,248,22,155,4,193,27,248,22,155,4,194,249,22,73, @@ -51,7 +51,7 @@ 163,8,36,37,47,11,9,222,33,43,248,22,155,4,248,22,74,201,248,22,75, 198,27,248,22,75,248,22,155,4,196,27,248,22,155,4,248,22,74,195,249,22, 148,4,80,158,40,36,28,248,22,81,195,250,22,84,2,22,9,248,22,75,199, -250,22,83,2,11,248,22,83,248,22,74,199,250,22,84,2,10,248,22,75,201, +250,22,83,2,10,248,22,83,248,22,74,199,250,22,84,2,9,248,22,75,201, 248,22,75,202,27,248,22,75,248,22,155,4,23,197,1,27,249,22,1,22,87, 249,22,2,22,155,4,248,22,155,4,248,22,74,199,248,22,175,4,249,22,148, 4,80,158,41,36,251,22,83,1,22,119,105,116,104,45,99,111,110,116,105,110, @@ -61,11 +61,11 @@ 115,101,116,45,102,105,114,115,116,11,2,26,202,250,22,84,2,22,9,248,22, 75,204,27,248,22,75,248,22,155,4,196,28,248,22,81,193,20,14,159,37,36, 37,249,22,148,4,80,158,39,36,27,248,22,155,4,248,22,74,197,28,249,22, -138,9,62,61,62,248,22,149,4,248,22,98,196,250,22,83,2,22,248,22,83, -249,22,83,21,93,2,27,248,22,74,199,250,22,84,2,3,249,22,83,2,27, +139,9,62,61,62,248,22,149,4,248,22,98,196,250,22,83,2,22,248,22,83, +249,22,83,21,93,2,27,248,22,74,199,250,22,84,2,5,249,22,83,2,27, 249,22,83,248,22,107,203,2,27,248,22,75,202,251,22,83,2,18,28,249,22, -138,9,248,22,149,4,248,22,74,200,64,101,108,115,101,10,248,22,74,197,250, -22,84,2,22,9,248,22,75,200,249,22,73,2,3,248,22,75,202,99,13,16, +139,9,248,22,149,4,248,22,74,200,64,101,108,115,101,10,248,22,74,197,250, +22,84,2,22,9,248,22,75,200,249,22,73,2,5,248,22,75,202,99,13,16, 5,36,2,14,2,2,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2, 20,3,1,8,101,110,118,49,52,57,57,54,16,4,11,11,2,21,3,1,8, 101,110,118,49,52,57,57,55,18,158,94,10,64,118,111,105,100,8,48,27,248, @@ -81,25 +81,25 @@ 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,112,159,36,16,1,2,13,16,1,33,33,10,16,5,2, -6,88,163,8,36,37,53,37,9,223,0,33,34,36,20,112,159,36,16,1,2, -13,16,0,11,16,5,2,12,88,163,8,36,37,53,37,9,223,0,33,35,36, -20,112,159,36,16,1,2,13,16,0,11,16,5,2,8,88,163,8,36,37,53, +12,88,163,8,36,37,53,37,9,223,0,33,34,36,20,112,159,36,16,1,2, +13,16,0,11,16,5,2,3,88,163,8,36,37,53,37,9,223,0,33,35,36, +20,112,159,36,16,1,2,13,16,0,11,16,5,2,11,88,163,8,36,37,53, 37,9,223,0,33,36,36,20,112,159,36,16,1,2,13,16,1,33,37,11,16, -5,2,5,88,163,8,36,37,56,37,9,223,0,33,38,36,20,112,159,36,16, -1,2,13,16,1,33,39,11,16,5,2,11,88,163,8,36,37,58,37,9,223, -0,33,42,36,20,112,159,36,16,1,2,13,16,0,11,16,5,2,4,88,163, +5,2,6,88,163,8,36,37,56,37,9,223,0,33,38,36,20,112,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,112,159,36,16,1,2,13,16,0,11,16,5,2,7,88,163, 8,36,37,53,37,9,223,0,33,44,36,20,112,159,36,16,1,2,13,16,0, -11,16,5,2,10,88,163,8,36,37,54,37,9,223,0,33,45,36,20,112,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,112,159,36,16,1,2,13,16,0,11,16,5,2,3,88,163, +11,16,5,2,9,88,163,8,36,37,54,37,9,223,0,33,45,36,20,112,159, +36,16,1,2,13,16,0,11,16,5,2,8,88,163,8,36,37,56,37,9,223, +0,33,46,36,20,112,159,36,16,1,2,13,16,0,11,16,5,2,5,88,163, 8,36,37,58,37,9,223,0,33,47,36,20,112,159,36,16,1,2,13,16,1, -33,49,11,16,5,2,7,88,163,8,36,37,54,37,9,223,0,33,50,36,20, +33,49,11,16,5,2,4,88,163,8,36,37,54,37,9,223,0,33,50,36,20, 112,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, 2018); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,50,46,48,46,50,0,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,50,46,48,46,51,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,109,0,0,0,1,0,0,8,0,21,0,26, 0,43,0,65,0,94,0,109,0,127,0,143,0,157,0,179,0,195,0,212,0, 234,0,245,0,251,0,4,1,11,1,18,1,30,1,46,1,70,1,102,1,120, @@ -150,251 +150,251 @@ 11,80,76,84,67,79,76,76,69,67,84,83,6,0,0,6,0,0,69,97,100, 100,111,110,45,100,105,114,6,8,8,99,111,108,108,101,99,116,115,27,20,13, 159,80,159,37,51,37,250,80,159,40,52,37,249,22,27,11,80,159,42,51,37, -22,128,14,10,248,22,191,5,23,196,2,28,248,22,187,6,23,194,2,12,86, -94,248,22,146,9,23,194,1,27,20,13,159,80,159,38,51,37,250,80,159,41, -52,37,249,22,27,11,80,159,43,51,37,22,128,14,10,248,22,191,5,23,197, -2,28,248,22,187,6,23,194,2,12,86,94,248,22,146,9,23,194,1,27,20, +22,129,14,10,248,22,128,6,23,196,2,28,248,22,188,6,23,194,2,12,86, +94,248,22,147,9,23,194,1,27,20,13,159,80,159,38,51,37,250,80,159,41, +52,37,249,22,27,11,80,159,43,51,37,22,129,14,10,248,22,128,6,23,197, +2,28,248,22,188,6,23,194,2,12,86,94,248,22,147,9,23,194,1,27,20, 13,159,80,159,39,51,37,250,80,159,42,52,37,249,22,27,11,80,159,44,51, -37,22,128,14,10,248,22,191,5,23,198,2,28,248,22,187,6,23,194,2,12, -86,94,248,22,146,9,23,194,1,248,80,159,40,8,31,39,197,28,248,22,81, -23,195,2,9,27,248,22,74,23,196,2,27,28,248,22,177,14,23,195,2,23, -194,1,28,248,22,176,14,23,195,2,249,22,178,14,23,196,1,250,80,159,43, -39,39,248,22,129,15,2,31,11,10,250,80,159,41,39,39,248,22,129,15,2, -31,23,197,1,10,28,23,193,2,249,22,73,248,22,180,14,249,22,178,14,23, -198,1,247,22,130,15,27,248,22,75,23,200,1,28,248,22,81,23,194,2,9, -27,248,22,74,23,195,2,27,28,248,22,177,14,23,195,2,23,194,1,28,248, -22,176,14,23,195,2,249,22,178,14,23,196,1,250,80,159,48,39,39,248,22, -129,15,2,31,11,10,250,80,159,46,39,39,248,22,129,15,2,31,23,197,1, -10,28,23,193,2,249,22,73,248,22,180,14,249,22,178,14,23,198,1,247,22, -130,15,248,80,159,46,8,30,39,248,22,75,23,199,1,86,94,23,193,1,248, +37,22,129,14,10,248,22,128,6,23,198,2,28,248,22,188,6,23,194,2,12, +86,94,248,22,147,9,23,194,1,248,80,159,40,8,31,39,197,28,248,22,81, +23,195,2,9,27,248,22,74,23,196,2,27,28,248,22,178,14,23,195,2,23, +194,1,28,248,22,177,14,23,195,2,249,22,179,14,23,196,1,250,80,159,43, +39,39,248,22,130,15,2,31,11,10,250,80,159,41,39,39,248,22,130,15,2, +31,23,197,1,10,28,23,193,2,249,22,73,248,22,181,14,249,22,179,14,23, +198,1,247,22,131,15,27,248,22,75,23,200,1,28,248,22,81,23,194,2,9, +27,248,22,74,23,195,2,27,28,248,22,178,14,23,195,2,23,194,1,28,248, +22,177,14,23,195,2,249,22,179,14,23,196,1,250,80,159,48,39,39,248,22, +130,15,2,31,11,10,250,80,159,46,39,39,248,22,130,15,2,31,23,197,1, +10,28,23,193,2,249,22,73,248,22,181,14,249,22,179,14,23,198,1,247,22, +131,15,248,80,159,46,8,30,39,248,22,75,23,199,1,86,94,23,193,1,248, 80,159,44,8,30,39,248,22,75,23,197,1,86,94,23,193,1,27,248,22,75, 23,198,1,28,248,22,81,23,194,2,9,27,248,22,74,23,195,2,27,28,248, -22,177,14,23,195,2,23,194,1,28,248,22,176,14,23,195,2,249,22,178,14, -23,196,1,250,80,159,46,39,39,248,22,129,15,2,31,11,10,250,80,159,44, -39,39,248,22,129,15,2,31,23,197,1,10,28,23,193,2,249,22,73,248,22, -180,14,249,22,178,14,23,198,1,247,22,130,15,248,80,159,44,8,30,39,248, +22,178,14,23,195,2,23,194,1,28,248,22,177,14,23,195,2,249,22,179,14, +23,196,1,250,80,159,46,39,39,248,22,130,15,2,31,11,10,250,80,159,44, +39,39,248,22,130,15,2,31,23,197,1,10,28,23,193,2,249,22,73,248,22, +181,14,249,22,179,14,23,198,1,247,22,131,15,248,80,159,44,8,30,39,248, 22,75,23,199,1,248,80,159,42,8,30,39,248,22,75,196,28,248,22,81,23, -195,2,9,27,248,22,74,23,196,2,27,28,248,22,177,14,23,195,2,23,194, -1,28,248,22,176,14,23,195,2,249,22,178,14,23,196,1,250,80,159,43,39, -39,248,22,129,15,2,31,11,10,250,80,159,41,39,39,248,22,129,15,2,31, -23,197,1,10,28,23,193,2,249,22,73,248,22,180,14,249,22,178,14,23,198, -1,247,22,130,15,248,80,159,41,8,29,39,248,22,75,23,200,1,248,80,159, +195,2,9,27,248,22,74,23,196,2,27,28,248,22,178,14,23,195,2,23,194, +1,28,248,22,177,14,23,195,2,249,22,179,14,23,196,1,250,80,159,43,39, +39,248,22,130,15,2,31,11,10,250,80,159,41,39,39,248,22,130,15,2,31, +23,197,1,10,28,23,193,2,249,22,73,248,22,181,14,249,22,179,14,23,198, +1,247,22,131,15,248,80,159,41,8,29,39,248,22,75,23,200,1,248,80,159, 39,8,29,39,248,22,75,197,28,248,22,81,23,195,2,9,27,248,22,74,23, -196,2,27,28,248,22,177,14,23,195,2,23,194,1,28,248,22,176,14,23,195, -2,249,22,178,14,23,196,1,250,80,159,43,39,39,248,22,129,15,2,31,11, -10,250,80,159,41,39,39,248,22,129,15,2,31,23,197,1,10,28,23,193,2, -249,22,73,248,22,180,14,249,22,178,14,23,198,1,247,22,130,15,248,80,159, +196,2,27,28,248,22,178,14,23,195,2,23,194,1,28,248,22,177,14,23,195, +2,249,22,179,14,23,196,1,250,80,159,43,39,39,248,22,130,15,2,31,11, +10,250,80,159,41,39,39,248,22,130,15,2,31,23,197,1,10,28,23,193,2, +249,22,73,248,22,181,14,249,22,179,14,23,198,1,247,22,131,15,248,80,159, 41,8,28,39,248,22,75,23,200,1,248,80,159,39,8,28,39,248,22,75,197, -27,248,22,153,14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22, -128,7,23,195,2,27,248,22,175,14,195,28,192,192,248,22,176,14,195,11,86, -94,28,28,248,22,154,14,23,195,2,10,28,248,22,153,14,23,195,2,10,28, -248,22,128,7,23,195,2,28,248,22,175,14,23,195,2,10,248,22,176,14,23, -195,2,11,12,250,22,174,9,76,110,111,114,109,97,108,45,112,97,116,104,45, +27,248,22,154,14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22, +129,7,23,195,2,27,248,22,176,14,195,28,192,192,248,22,177,14,195,11,86, +94,28,28,248,22,155,14,23,195,2,10,28,248,22,154,14,23,195,2,10,28, +248,22,129,7,23,195,2,28,248,22,176,14,23,195,2,10,248,22,177,14,23, +195,2,11,12,250,22,175,9,76,110,111,114,109,97,108,45,112,97,116,104,45, 99,97,115,101,6,42,42,112,97,116,104,32,40,102,111,114,32,97,110,121,32, 115,121,115,116,101,109,41,32,111,114,32,118,97,108,105,100,45,112,97,116,104, -32,115,116,114,105,110,103,23,197,2,28,28,248,22,154,14,23,195,2,249,22, -138,9,248,22,155,14,23,197,2,2,32,249,22,138,9,247,22,150,8,2,32, -27,28,248,22,128,7,23,196,2,23,195,2,248,22,140,8,248,22,158,14,23, -197,2,28,249,22,145,15,0,21,35,114,120,34,94,91,92,92,93,91,92,92, -93,91,63,93,91,92,92,93,34,23,195,2,28,248,22,128,7,195,248,22,161, -14,195,194,27,248,22,167,7,23,195,1,249,22,162,14,248,22,143,8,250,22, -153,15,0,6,35,114,120,34,47,34,28,249,22,145,15,0,22,35,114,120,34, +32,115,116,114,105,110,103,23,197,2,28,28,248,22,155,14,23,195,2,249,22, +139,9,248,22,156,14,23,197,2,2,32,249,22,139,9,247,22,151,8,2,32, +27,28,248,22,129,7,23,196,2,23,195,2,248,22,141,8,248,22,159,14,23, +197,2,28,249,22,146,15,0,21,35,114,120,34,94,91,92,92,93,91,92,92, +93,91,63,93,91,92,92,93,34,23,195,2,28,248,22,129,7,195,248,22,162, +14,195,194,27,248,22,168,7,23,195,1,249,22,163,14,248,22,144,8,250,22, +154,15,0,6,35,114,120,34,47,34,28,249,22,146,15,0,22,35,114,120,34, 91,47,92,92,93,91,46,32,93,43,91,47,92,92,93,42,36,34,23,201,2, -23,199,1,250,22,153,15,0,19,35,114,120,34,91,32,46,93,43,40,91,47, +23,199,1,250,22,154,15,0,19,35,114,120,34,91,32,46,93,43,40,91,47, 92,92,93,42,41,36,34,23,202,1,6,2,2,92,49,80,159,44,37,38,2, -32,28,248,22,128,7,194,248,22,161,14,194,193,32,56,88,163,8,36,39,53, +32,28,248,22,129,7,194,248,22,162,14,194,193,32,56,88,163,8,36,39,53, 11,70,102,111,117,110,100,45,101,120,101,99,222,33,59,32,57,88,163,8,36, -40,58,11,64,110,101,120,116,222,33,58,27,248,22,179,14,23,196,2,28,249, -22,140,9,23,195,2,23,197,1,11,28,248,22,175,14,23,194,2,27,249,22, -171,14,23,197,1,23,196,1,28,23,197,2,90,159,39,11,89,161,39,36,11, -248,22,174,14,23,197,2,86,95,23,195,1,23,194,1,27,28,23,202,2,27, -248,22,179,14,23,199,2,28,249,22,140,9,23,195,2,23,200,2,11,28,248, -22,175,14,23,194,2,250,2,56,23,205,2,23,206,2,249,22,171,14,23,200, +40,58,11,64,110,101,120,116,222,33,58,27,248,22,180,14,23,196,2,28,249, +22,141,9,23,195,2,23,197,1,11,28,248,22,176,14,23,194,2,27,249,22, +172,14,23,197,1,23,196,1,28,23,197,2,90,159,39,11,89,161,39,36,11, +248,22,175,14,23,197,2,86,95,23,195,1,23,194,1,27,28,23,202,2,27, +248,22,180,14,23,199,2,28,249,22,141,9,23,195,2,23,200,2,11,28,248, +22,176,14,23,194,2,250,2,56,23,205,2,23,206,2,249,22,172,14,23,200, 2,23,198,1,250,2,56,23,205,2,23,206,2,23,196,1,11,28,23,193,2, -192,86,94,23,193,1,27,28,248,22,153,14,23,196,2,27,249,22,171,14,23, -198,2,23,205,2,28,28,248,22,166,14,193,10,248,22,165,14,193,192,11,11, -28,23,193,2,192,86,94,23,193,1,28,23,203,2,11,27,248,22,179,14,23, -200,2,28,249,22,140,9,23,195,2,23,201,1,11,28,248,22,175,14,23,194, -2,250,2,56,23,206,1,23,207,1,249,22,171,14,23,201,1,23,198,1,250, +192,86,94,23,193,1,27,28,248,22,154,14,23,196,2,27,249,22,172,14,23, +198,2,23,205,2,28,28,248,22,167,14,193,10,248,22,166,14,193,192,11,11, +28,23,193,2,192,86,94,23,193,1,28,23,203,2,11,27,248,22,180,14,23, +200,2,28,249,22,141,9,23,195,2,23,201,1,11,28,248,22,176,14,23,194, +2,250,2,56,23,206,1,23,207,1,249,22,172,14,23,201,1,23,198,1,250, 2,56,205,206,195,192,86,94,23,194,1,28,23,196,2,90,159,39,11,89,161, -39,36,11,248,22,174,14,23,197,2,86,95,23,195,1,23,194,1,27,28,23, -201,2,27,248,22,179,14,23,199,2,28,249,22,140,9,23,195,2,23,200,2, -11,28,248,22,175,14,23,194,2,250,2,56,23,204,2,23,205,2,249,22,171, +39,36,11,248,22,175,14,23,197,2,86,95,23,195,1,23,194,1,27,28,23, +201,2,27,248,22,180,14,23,199,2,28,249,22,141,9,23,195,2,23,200,2, +11,28,248,22,176,14,23,194,2,250,2,56,23,204,2,23,205,2,249,22,172, 14,23,200,2,23,198,1,250,2,56,23,204,2,23,205,2,23,196,1,11,28, -23,193,2,192,86,94,23,193,1,27,28,248,22,153,14,23,196,2,27,249,22, -171,14,23,198,2,23,204,2,28,28,248,22,166,14,193,10,248,22,165,14,193, +23,193,2,192,86,94,23,193,1,27,28,248,22,154,14,23,196,2,27,249,22, +172,14,23,198,2,23,204,2,28,28,248,22,167,14,193,10,248,22,166,14,193, 192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,202,2,11,27,248,22, -179,14,23,200,2,28,249,22,140,9,23,195,2,23,201,1,11,28,248,22,175, -14,23,194,2,250,2,56,23,205,1,23,206,1,249,22,171,14,23,201,1,23, +180,14,23,200,2,28,249,22,141,9,23,195,2,23,201,1,11,28,248,22,176, +14,23,194,2,250,2,56,23,205,1,23,206,1,249,22,172,14,23,201,1,23, 198,1,250,2,56,204,205,195,192,28,23,193,2,90,159,39,11,89,161,39,36, -11,248,22,174,14,23,199,2,86,95,23,195,1,23,194,1,27,28,23,198,2, +11,248,22,175,14,23,199,2,86,95,23,195,1,23,194,1,27,28,23,198,2, 251,2,57,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,153,14,195,27,249,22,171,14,197,200,28,28, -248,22,166,14,193,10,248,22,165,14,193,192,11,11,28,192,192,28,198,11,251, +86,94,23,193,1,27,28,248,22,154,14,195,27,249,22,172,14,197,200,28,28, +248,22,167,14,193,10,248,22,166,14,193,192,11,11,28,192,192,28,198,11,251, 2,57,198,203,201,202,194,32,60,88,163,8,36,40,58,11,2,30,222,33,61, -28,248,22,81,23,197,2,11,27,248,22,178,14,248,22,74,23,199,2,27,249, -22,171,14,23,196,1,23,197,2,28,248,22,165,14,23,194,2,250,2,56,198, +28,248,22,81,23,197,2,11,27,248,22,179,14,248,22,74,23,199,2,27,249, +22,172,14,23,196,1,23,197,2,28,248,22,166,14,23,194,2,250,2,56,198, 199,195,86,94,23,193,1,27,248,22,75,23,200,1,28,248,22,81,23,194,2, -11,27,248,22,178,14,248,22,74,23,196,2,27,249,22,171,14,23,196,1,23, -200,2,28,248,22,165,14,23,194,2,250,2,56,201,202,195,86,94,23,193,1, -27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,178,14,248, -22,74,195,27,249,22,171,14,23,196,1,202,28,248,22,165,14,193,250,2,56, -204,205,195,251,2,60,204,205,206,248,22,75,199,86,95,28,28,248,22,153,14, -23,195,2,10,28,248,22,128,7,23,195,2,28,248,22,175,14,23,195,2,10, -248,22,176,14,23,195,2,11,12,250,22,174,9,2,5,6,25,25,112,97,116, +11,27,248,22,179,14,248,22,74,23,196,2,27,249,22,172,14,23,196,1,23, +200,2,28,248,22,166,14,23,194,2,250,2,56,201,202,195,86,94,23,193,1, +27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,179,14,248, +22,74,195,27,249,22,172,14,23,196,1,202,28,248,22,166,14,193,250,2,56, +204,205,195,251,2,60,204,205,206,248,22,75,199,86,95,28,28,248,22,154,14, +23,195,2,10,28,248,22,129,7,23,195,2,28,248,22,176,14,23,195,2,10, +248,22,177,14,23,195,2,11,12,250,22,175,9,2,5,6,25,25,112,97,116, 104,32,111,114,32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,108, -41,23,197,2,28,28,23,195,2,28,28,248,22,153,14,23,196,2,10,28,248, -22,128,7,23,196,2,28,248,22,175,14,23,196,2,10,248,22,176,14,23,196, -2,11,248,22,175,14,23,196,2,11,10,12,250,22,174,9,2,5,6,29,29, +41,23,197,2,28,28,23,195,2,28,28,248,22,154,14,23,196,2,10,28,248, +22,129,7,23,196,2,28,248,22,176,14,23,196,2,10,248,22,177,14,23,196, +2,11,248,22,176,14,23,196,2,11,10,12,250,22,175,9,2,5,6,29,29, 35,102,32,111,114,32,114,101,108,97,116,105,118,101,32,112,97,116,104,32,111, -114,32,115,116,114,105,110,103,23,198,2,28,28,248,22,175,14,23,195,2,90, -159,39,11,89,161,39,36,11,248,22,174,14,23,198,2,249,22,138,9,194,2, -33,11,27,248,22,148,8,6,4,4,80,65,84,72,27,28,23,194,2,27,249, -80,158,41,40,23,197,1,9,28,249,22,138,9,247,22,150,8,2,32,249,22, -73,248,22,162,14,5,1,46,194,192,86,94,23,194,1,9,28,248,22,81,23, -194,2,11,27,248,22,178,14,248,22,74,23,196,2,27,249,22,171,14,23,196, -1,23,200,2,28,248,22,165,14,23,194,2,250,2,56,201,202,195,86,94,23, -193,1,27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,178, -14,248,22,74,23,196,2,27,249,22,171,14,23,196,1,23,203,2,28,248,22, -165,14,23,194,2,250,2,56,204,205,195,86,94,23,193,1,27,248,22,75,23, -197,1,28,248,22,81,23,194,2,11,27,248,22,178,14,248,22,74,195,27,249, -22,171,14,23,196,1,205,28,248,22,165,14,193,250,2,56,23,15,23,16,195, -251,2,60,23,15,23,16,23,17,248,22,75,199,27,248,22,178,14,23,196,1, -28,248,22,165,14,193,250,2,56,198,199,195,11,250,80,159,39,39,39,196,197, +114,32,115,116,114,105,110,103,23,198,2,28,28,248,22,176,14,23,195,2,90, +159,39,11,89,161,39,36,11,248,22,175,14,23,198,2,249,22,139,9,194,2, +33,11,27,248,22,149,8,6,4,4,80,65,84,72,27,28,23,194,2,27,249, +80,158,41,40,23,197,1,9,28,249,22,139,9,247,22,151,8,2,32,249,22, +73,248,22,163,14,5,1,46,194,192,86,94,23,194,1,9,28,248,22,81,23, +194,2,11,27,248,22,179,14,248,22,74,23,196,2,27,249,22,172,14,23,196, +1,23,200,2,28,248,22,166,14,23,194,2,250,2,56,201,202,195,86,94,23, +193,1,27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,179, +14,248,22,74,23,196,2,27,249,22,172,14,23,196,1,23,203,2,28,248,22, +166,14,23,194,2,250,2,56,204,205,195,86,94,23,193,1,27,248,22,75,23, +197,1,28,248,22,81,23,194,2,11,27,248,22,179,14,248,22,74,195,27,249, +22,172,14,23,196,1,205,28,248,22,166,14,193,250,2,56,23,15,23,16,195, +251,2,60,23,15,23,16,23,17,248,22,75,199,27,248,22,179,14,23,196,1, +28,248,22,166,14,193,250,2,56,198,199,195,11,250,80,159,39,39,39,196,197, 11,250,80,159,39,39,39,196,11,11,32,65,88,163,8,36,39,57,11,2,30, -222,33,67,0,8,35,114,120,35,34,92,34,34,27,249,22,141,15,23,197,2, +222,33,67,0,8,35,114,120,35,34,92,34,34,27,249,22,142,15,23,197,2, 23,198,2,28,23,193,2,86,94,23,196,1,27,248,22,98,23,195,2,27,27, -248,22,107,23,197,1,27,249,22,141,15,23,201,2,23,196,2,28,23,193,2, +248,22,107,23,197,1,27,249,22,142,15,23,201,2,23,196,2,28,23,193,2, 86,94,23,194,1,27,248,22,98,23,195,2,27,250,2,65,23,203,2,23,204, -1,248,22,107,23,199,1,28,249,22,189,7,23,196,2,2,34,249,22,87,23, -202,2,194,249,22,73,248,22,162,14,28,249,22,138,9,247,22,150,8,2,32, -250,22,153,15,2,66,23,200,1,2,35,23,197,1,194,86,95,23,199,1,23, -193,1,28,249,22,189,7,23,196,2,2,34,249,22,87,23,200,2,9,249,22, -73,248,22,162,14,28,249,22,138,9,247,22,150,8,2,32,250,22,153,15,2, -66,23,200,1,2,35,23,197,1,9,28,249,22,189,7,23,196,2,2,34,249, -22,87,197,194,86,94,23,196,1,249,22,73,248,22,162,14,28,249,22,138,9, -247,22,150,8,2,32,250,22,153,15,2,66,23,200,1,2,35,23,197,1,194, -86,94,23,193,1,28,249,22,189,7,23,198,2,2,34,249,22,87,195,9,86, -94,23,194,1,249,22,73,248,22,162,14,28,249,22,138,9,247,22,150,8,2, -32,250,22,153,15,2,66,23,202,1,2,35,23,199,1,9,86,95,28,28,248, -22,181,7,194,10,248,22,128,7,194,12,250,22,174,9,2,6,6,21,21,98, +1,248,22,107,23,199,1,28,249,22,190,7,23,196,2,2,34,249,22,87,23, +202,2,194,249,22,73,248,22,163,14,28,249,22,139,9,247,22,151,8,2,32, +250,22,154,15,2,66,23,200,1,2,35,23,197,1,194,86,95,23,199,1,23, +193,1,28,249,22,190,7,23,196,2,2,34,249,22,87,23,200,2,9,249,22, +73,248,22,163,14,28,249,22,139,9,247,22,151,8,2,32,250,22,154,15,2, +66,23,200,1,2,35,23,197,1,9,28,249,22,190,7,23,196,2,2,34,249, +22,87,197,194,86,94,23,196,1,249,22,73,248,22,163,14,28,249,22,139,9, +247,22,151,8,2,32,250,22,154,15,2,66,23,200,1,2,35,23,197,1,194, +86,94,23,193,1,28,249,22,190,7,23,198,2,2,34,249,22,87,195,9,86, +94,23,194,1,249,22,73,248,22,163,14,28,249,22,139,9,247,22,151,8,2, +32,250,22,154,15,2,66,23,202,1,2,35,23,199,1,9,86,95,28,28,248, +22,182,7,194,10,248,22,129,7,194,12,250,22,175,9,2,6,6,21,21,98, 121,116,101,32,115,116,114,105,110,103,32,111,114,32,115,116,114,105,110,103,196, -28,28,248,22,82,195,249,22,4,22,153,14,196,11,12,250,22,174,9,2,6, +28,28,248,22,82,195,249,22,4,22,154,14,196,11,12,250,22,175,9,2,6, 6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,197,250,2,65,197, -195,28,248,22,128,7,197,248,22,142,8,197,196,86,94,28,28,248,22,153,14, -23,195,2,10,28,248,22,128,7,23,195,2,28,248,22,175,14,23,195,2,10, -248,22,176,14,23,195,2,11,12,250,22,174,9,23,196,2,2,36,23,197,2, -28,248,22,175,14,23,195,2,12,248,22,168,12,249,22,171,11,248,22,157,7, -250,22,176,7,2,37,23,200,1,23,201,1,247,22,23,86,94,28,28,248,22, -153,14,23,195,2,10,28,248,22,128,7,23,195,2,28,248,22,175,14,23,195, -2,10,248,22,176,14,23,195,2,11,12,250,22,174,9,23,196,2,2,36,23, -197,2,28,248,22,175,14,23,195,2,12,248,22,168,12,249,22,171,11,248,22, -157,7,250,22,176,7,2,37,23,200,1,23,201,1,247,22,23,86,94,86,94, -28,28,248,22,153,14,23,195,2,10,28,248,22,128,7,23,195,2,28,248,22, -175,14,23,195,2,10,248,22,176,14,23,195,2,11,12,250,22,174,9,195,2, -36,23,197,2,28,248,22,175,14,23,195,2,12,248,22,168,12,249,22,171,11, -248,22,157,7,250,22,176,7,2,37,199,23,201,1,247,22,23,249,22,3,88, -163,8,36,37,50,11,9,223,2,33,70,196,86,94,28,28,248,22,153,14,23, -194,2,10,28,248,22,128,7,23,194,2,28,248,22,175,14,23,194,2,10,248, -22,176,14,23,194,2,11,12,250,22,174,9,2,9,2,36,23,196,2,28,248, -22,175,14,23,194,2,12,248,22,168,12,249,22,171,11,248,22,157,7,250,22, -176,7,2,37,2,9,23,200,1,247,22,23,248,22,168,12,249,22,143,12,23, -196,1,247,22,23,86,94,86,94,86,94,28,28,248,22,153,14,194,10,28,248, -22,128,7,194,28,248,22,175,14,194,10,248,22,176,14,194,11,12,250,22,174, -9,2,9,2,36,196,28,248,22,175,14,194,12,248,22,168,12,249,22,171,11, -248,22,157,7,250,22,176,7,2,37,2,9,200,247,22,23,249,22,3,32,0, +195,28,248,22,129,7,197,248,22,143,8,197,196,86,94,28,28,248,22,154,14, +23,195,2,10,28,248,22,129,7,23,195,2,28,248,22,176,14,23,195,2,10, +248,22,177,14,23,195,2,11,12,250,22,175,9,23,196,2,2,36,23,197,2, +28,248,22,176,14,23,195,2,12,248,22,169,12,249,22,172,11,248,22,158,7, +250,22,177,7,2,37,23,200,1,23,201,1,247,22,23,86,94,28,28,248,22, +154,14,23,195,2,10,28,248,22,129,7,23,195,2,28,248,22,176,14,23,195, +2,10,248,22,177,14,23,195,2,11,12,250,22,175,9,23,196,2,2,36,23, +197,2,28,248,22,176,14,23,195,2,12,248,22,169,12,249,22,172,11,248,22, +158,7,250,22,177,7,2,37,23,200,1,23,201,1,247,22,23,86,94,86,94, +28,28,248,22,154,14,23,195,2,10,28,248,22,129,7,23,195,2,28,248,22, +176,14,23,195,2,10,248,22,177,14,23,195,2,11,12,250,22,175,9,195,2, +36,23,197,2,28,248,22,176,14,23,195,2,12,248,22,169,12,249,22,172,11, +248,22,158,7,250,22,177,7,2,37,199,23,201,1,247,22,23,249,22,3,88, +163,8,36,37,50,11,9,223,2,33,70,196,86,94,28,28,248,22,154,14,23, +194,2,10,28,248,22,129,7,23,194,2,28,248,22,176,14,23,194,2,10,248, +22,177,14,23,194,2,11,12,250,22,175,9,2,9,2,36,23,196,2,28,248, +22,176,14,23,194,2,12,248,22,169,12,249,22,172,11,248,22,158,7,250,22, +177,7,2,37,2,9,23,200,1,247,22,23,248,22,169,12,249,22,144,12,23, +196,1,247,22,23,86,94,86,94,86,94,28,28,248,22,154,14,194,10,28,248, +22,129,7,194,28,248,22,176,14,194,10,248,22,177,14,194,11,12,250,22,175, +9,2,9,2,36,196,28,248,22,176,14,194,12,248,22,169,12,249,22,172,11, +248,22,158,7,250,22,177,7,2,37,2,9,200,247,22,23,249,22,3,32,0, 88,163,8,36,37,49,11,9,222,33,72,196,252,80,158,41,44,2,9,32,0, -88,163,8,36,37,45,11,9,222,33,73,198,199,11,86,94,28,28,248,22,153, -14,23,194,2,10,28,248,22,128,7,23,194,2,28,248,22,175,14,23,194,2, -10,248,22,176,14,23,194,2,11,12,250,22,174,9,2,11,2,36,23,196,2, -28,248,22,175,14,23,194,2,12,248,22,168,12,249,22,171,11,248,22,157,7, -250,22,176,7,2,37,2,11,23,200,1,247,22,23,248,22,168,12,249,22,143, -12,23,196,1,247,22,23,86,95,86,94,28,28,248,22,153,14,194,10,28,248, -22,128,7,194,28,248,22,175,14,194,10,248,22,176,14,194,11,12,250,22,174, -9,2,11,2,36,196,28,248,22,175,14,194,12,248,22,168,12,249,22,171,11, -248,22,157,7,250,22,176,7,2,37,2,11,200,247,22,23,86,94,86,94,28, -28,248,22,153,14,23,196,2,10,28,248,22,128,7,23,196,2,28,248,22,175, -14,23,196,2,10,248,22,176,14,23,196,2,11,12,250,22,174,9,2,11,2, -36,23,198,2,28,248,22,175,14,23,196,2,12,248,22,168,12,249,22,171,11, -248,22,157,7,250,22,176,7,2,37,2,11,23,202,2,247,22,23,249,22,3, -32,0,88,163,8,36,37,49,11,9,222,33,75,23,198,2,249,22,171,14,252, +88,163,8,36,37,45,11,9,222,33,73,198,199,11,86,94,28,28,248,22,154, +14,23,194,2,10,28,248,22,129,7,23,194,2,28,248,22,176,14,23,194,2, +10,248,22,177,14,23,194,2,11,12,250,22,175,9,2,11,2,36,23,196,2, +28,248,22,176,14,23,194,2,12,248,22,169,12,249,22,172,11,248,22,158,7, +250,22,177,7,2,37,2,11,23,200,1,247,22,23,248,22,169,12,249,22,144, +12,23,196,1,247,22,23,86,95,86,94,28,28,248,22,154,14,194,10,28,248, +22,129,7,194,28,248,22,176,14,194,10,248,22,177,14,194,11,12,250,22,175, +9,2,11,2,36,196,28,248,22,176,14,194,12,248,22,169,12,249,22,172,11, +248,22,158,7,250,22,177,7,2,37,2,11,200,247,22,23,86,94,86,94,28, +28,248,22,154,14,23,196,2,10,28,248,22,129,7,23,196,2,28,248,22,176, +14,23,196,2,10,248,22,177,14,23,196,2,11,12,250,22,175,9,2,11,2, +36,23,198,2,28,248,22,176,14,23,196,2,12,248,22,169,12,249,22,172,11, +248,22,158,7,250,22,177,7,2,37,2,11,23,202,2,247,22,23,249,22,3, +32,0,88,163,8,36,37,49,11,9,222,33,75,23,198,2,249,22,172,14,252, 80,158,43,44,2,11,32,0,88,163,8,36,37,45,11,9,222,33,76,23,202, -1,23,203,1,200,195,0,6,45,105,110,102,46,48,27,248,22,129,15,2,38, -27,28,248,22,176,14,23,195,2,193,20,13,159,80,159,38,51,37,250,80,159, -41,52,37,249,22,27,11,80,159,43,51,37,22,130,15,248,22,129,15,68,111, -114,105,103,45,100,105,114,27,248,22,129,15,2,31,250,80,159,42,39,39,23, -196,1,23,198,1,11,28,192,250,22,171,14,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,27,247,22,129, -10,28,249,22,186,9,23,195,2,2,39,251,22,189,9,23,197,1,2,39,250, -22,176,7,2,40,28,23,202,1,80,159,46,46,38,80,159,46,49,38,248,22, -163,11,23,205,1,247,22,23,12,248,193,247,22,133,2,2,78,86,95,27,247, -22,129,10,28,249,22,186,9,23,195,2,2,39,251,22,189,9,23,197,1,2, -39,250,22,176,7,2,40,28,202,80,159,47,46,38,80,159,47,49,38,248,22, -163,11,23,206,1,247,22,23,12,28,192,28,194,86,94,20,18,159,11,80,158, +1,23,203,1,200,195,0,6,45,105,110,102,46,48,27,248,22,130,15,2,38, +27,28,248,22,177,14,23,195,2,193,20,13,159,80,159,38,51,37,250,80,159, +41,52,37,249,22,27,11,80,159,43,51,37,22,131,15,248,22,130,15,68,111, +114,105,103,45,100,105,114,27,248,22,130,15,2,31,250,80,159,42,39,39,23, +196,1,23,198,1,11,28,192,250,22,172,14,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,27,247,22,130, +10,28,249,22,187,9,23,195,2,2,39,251,22,190,9,23,197,1,2,39,250, +22,177,7,2,40,28,23,202,1,80,159,46,46,38,80,159,46,49,38,248,22, +164,11,23,205,1,247,22,23,12,248,193,247,22,133,2,2,78,86,95,27,247, +22,130,10,28,249,22,187,9,23,195,2,2,39,251,22,190,9,23,197,1,2, +39,250,22,177,7,2,40,28,202,80,159,47,46,38,80,159,47,49,38,248,22, +164,11,23,206,1,247,22,23,12,28,192,28,194,86,94,20,18,159,11,80,158, 39,47,247,22,133,2,20,18,159,11,80,158,39,48,192,86,94,20,18,159,11, 80,158,39,53,247,22,133,2,20,18,159,11,80,158,39,54,192,12,248,194,247, -22,133,2,20,20,94,248,22,191,5,23,194,2,28,248,22,187,6,248,22,191, -5,23,195,1,12,248,22,171,9,6,30,30,101,120,112,101,99,116,101,100,32, +22,133,2,20,20,94,248,22,128,6,23,194,2,28,248,22,188,6,248,22,128, +6,23,195,1,12,248,22,172,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,179,5,193,28,248,22,82,23,194,2,28,28,249,22,184,3,38,248,22, -86,23,196,2,10,249,22,184,3,39,248,22,86,23,196,2,28,28,248,22,128, -7,248,22,74,23,195,2,10,249,22,138,9,64,114,111,111,116,248,22,74,23, -196,2,28,27,248,22,98,194,28,248,22,153,14,23,194,2,10,28,248,22,128, -7,23,194,2,28,248,22,175,14,23,194,2,10,248,22,176,14,23,194,1,11, -27,248,22,81,248,22,100,195,28,192,192,248,22,154,15,248,22,107,195,11,11, +248,22,180,5,193,28,248,22,82,23,194,2,28,28,249,22,184,3,38,248,22, +86,23,196,2,10,249,22,184,3,39,248,22,86,23,196,2,28,28,248,22,129, +7,248,22,74,23,195,2,10,249,22,139,9,64,114,111,111,116,248,22,74,23, +196,2,28,27,248,22,98,194,28,248,22,154,14,23,194,2,10,28,248,22,129, +7,23,194,2,28,248,22,176,14,23,194,2,10,248,22,177,14,23,194,1,11, +27,248,22,81,248,22,100,195,28,192,192,248,22,155,15,248,22,107,195,11,11, 11,11,250,22,151,2,196,197,249,22,73,197,200,28,28,248,22,81,248,22,100, -23,197,2,10,249,22,145,15,248,22,107,23,198,2,247,22,146,8,27,248,22, -180,14,249,22,178,14,248,22,98,23,200,2,23,198,1,28,248,22,58,248,22, +23,197,2,10,249,22,146,15,248,22,107,23,198,2,247,22,147,8,27,248,22, +181,14,249,22,179,14,248,22,98,23,200,2,23,198,1,28,248,22,58,248,22, 74,23,198,2,86,94,23,196,1,86,94,28,250,22,153,2,196,11,11,12,250, 22,151,2,196,11,9,249,22,157,2,195,88,163,8,36,38,50,11,9,224,3, 2,33,86,27,248,22,61,248,22,74,23,199,1,250,22,151,2,23,198,2,23, 196,2,249,22,73,248,22,125,23,200,1,250,22,153,2,23,203,1,23,201,1, 9,12,250,22,151,2,195,196,248,22,88,198,20,13,159,80,159,37,56,37,88, -163,36,37,54,8,128,144,9,225,1,0,2,33,80,27,250,22,188,14,28,23, +163,36,37,54,8,128,144,9,225,1,0,2,33,80,27,250,22,189,14,28,23, 197,2,80,159,41,46,38,80,159,41,49,38,11,32,0,88,163,8,36,36,41, 11,9,222,33,81,28,249,22,186,3,23,195,2,28,23,196,2,80,158,40,48, 80,158,40,54,20,13,159,80,159,38,56,37,20,20,94,88,163,36,37,55,8, 240,0,60,6,0,9,226,2,1,3,0,33,82,23,196,1,20,13,159,80,159, 38,51,37,26,29,80,159,8,31,52,37,249,22,27,11,80,159,8,33,51,37, -22,188,13,10,22,189,13,10,22,190,13,10,22,129,14,10,22,128,14,10,22, -130,14,10,22,191,13,10,22,131,14,10,22,132,14,10,22,133,14,10,22,134, -14,10,22,135,14,10,22,136,14,11,22,186,13,11,27,249,22,170,5,28,196, +22,189,13,10,22,190,13,10,22,191,13,10,22,130,14,10,22,129,14,10,22, +131,14,10,22,128,14,10,22,132,14,10,22,133,14,10,22,134,14,10,22,135, +14,10,22,136,14,10,22,137,14,11,22,187,13,11,27,249,22,171,5,28,196, 80,159,41,46,38,80,159,41,49,38,66,98,105,110,97,114,121,27,250,22,40, 22,31,88,163,8,36,36,44,11,9,223,4,33,83,20,20,94,88,163,36,36, 43,11,9,223,4,33,84,23,197,1,86,94,28,28,248,22,82,23,194,2,249, 22,4,32,0,88,163,8,36,37,45,11,9,222,33,85,23,195,2,11,12,248, -22,171,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,133,2,27,90,159,39,11,89,161,39,36,11,248,22,174, +22,172,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,133,2,27,90,159,39,11,89,161,39,36,11,248,22,175, 14,28,201,80,159,46,46,38,80,159,46,49,38,192,86,96,249,22,3,20,20, 94,88,163,8,36,37,54,11,9,224,2,3,33,87,23,195,1,23,197,1,249, 22,157,2,195,88,163,8,36,38,48,11,9,223,3,33,88,28,197,86,94,20, 18,159,11,80,158,42,47,193,20,18,159,11,80,158,42,48,196,86,94,20,18, 159,11,80,158,42,53,193,20,18,159,11,80,158,42,54,196,193,28,193,80,158, 38,47,80,158,38,53,248,22,9,88,163,8,32,37,8,40,8,240,0,188,23, -0,9,224,1,2,33,89,0,7,35,114,120,34,47,43,34,28,248,22,128,7, -23,195,2,27,249,22,143,15,2,91,196,28,192,28,249,22,184,3,248,22,97, -195,248,22,174,3,248,22,131,7,198,249,22,7,250,22,150,7,199,36,248,22, -97,198,197,249,22,7,250,22,150,7,199,36,248,22,97,198,249,22,73,249,22, -150,7,200,248,22,99,199,199,249,22,7,196,197,90,159,39,11,89,161,39,36, -11,248,22,174,14,23,198,1,86,94,23,195,1,28,249,22,138,9,23,195,2, -2,33,249,22,7,195,199,27,249,22,73,23,197,1,23,201,1,28,248,22,128, -7,23,195,2,27,249,22,143,15,2,91,196,28,192,28,249,22,184,3,248,22, -97,195,248,22,174,3,248,22,131,7,198,249,22,7,250,22,150,7,199,36,248, -22,97,198,195,249,22,7,250,22,150,7,199,36,248,22,97,198,249,22,73,249, -22,150,7,200,248,22,99,199,197,249,22,7,196,195,90,159,39,11,89,161,39, -36,11,248,22,174,14,23,198,1,28,249,22,138,9,194,2,33,249,22,7,195, +0,9,224,1,2,33,89,0,7,35,114,120,34,47,43,34,28,248,22,129,7, +23,195,2,27,249,22,144,15,2,91,196,28,192,28,249,22,184,3,248,22,97, +195,248,22,174,3,248,22,132,7,198,249,22,7,250,22,151,7,199,36,248,22, +97,198,197,249,22,7,250,22,151,7,199,36,248,22,97,198,249,22,73,249,22, +151,7,200,248,22,99,199,199,249,22,7,196,197,90,159,39,11,89,161,39,36, +11,248,22,175,14,23,198,1,86,94,23,195,1,28,249,22,139,9,23,195,2, +2,33,249,22,7,195,199,27,249,22,73,23,197,1,23,201,1,28,248,22,129, +7,23,195,2,27,249,22,144,15,2,91,196,28,192,28,249,22,184,3,248,22, +97,195,248,22,174,3,248,22,132,7,198,249,22,7,250,22,151,7,199,36,248, +22,97,198,195,249,22,7,250,22,151,7,199,36,248,22,97,198,249,22,73,249, +22,151,7,200,248,22,99,199,197,249,22,7,196,195,90,159,39,11,89,161,39, +36,11,248,22,175,14,23,198,1,28,249,22,139,9,194,2,33,249,22,7,195, 197,249,80,159,45,57,39,194,249,22,73,197,199,32,93,88,163,36,44,8,36, 11,65,99,108,111,111,112,222,33,98,32,94,88,163,8,36,37,55,11,2,30, 222,33,95,28,248,22,81,248,22,75,23,195,2,248,22,83,27,248,22,74,23, -196,1,28,248,22,153,14,23,194,2,248,22,157,14,23,194,1,192,250,22,84, -27,248,22,74,23,198,2,28,248,22,153,14,23,194,2,248,22,157,14,23,194, +196,1,28,248,22,154,14,23,194,2,248,22,158,14,23,194,1,192,250,22,84, +27,248,22,74,23,198,2,28,248,22,154,14,23,194,2,248,22,158,14,23,194, 1,192,2,41,27,248,22,75,23,198,1,28,248,22,81,248,22,75,23,195,2, -248,22,83,27,248,22,74,23,196,1,28,248,22,153,14,23,194,2,248,22,157, -14,23,194,1,192,250,22,84,27,248,22,74,23,198,2,28,248,22,153,14,23, -194,2,248,22,157,14,23,194,1,192,2,41,27,248,22,75,23,198,1,28,248, +248,22,83,27,248,22,74,23,196,1,28,248,22,154,14,23,194,2,248,22,158, +14,23,194,1,192,250,22,84,27,248,22,74,23,198,2,28,248,22,154,14,23, +194,2,248,22,158,14,23,194,1,192,2,41,27,248,22,75,23,198,1,28,248, 22,81,248,22,75,23,195,2,248,22,83,27,248,22,74,23,196,1,28,248,22, -153,14,23,194,2,248,22,157,14,23,194,1,192,250,22,84,27,248,22,74,23, -198,2,28,248,22,153,14,23,194,2,248,22,157,14,23,194,1,192,2,41,248, +154,14,23,194,2,248,22,158,14,23,194,1,192,250,22,84,27,248,22,74,23, +198,2,28,248,22,154,14,23,194,2,248,22,158,14,23,194,1,192,2,41,248, 2,94,248,22,75,23,198,1,32,96,88,163,8,36,38,57,11,66,102,105,108, 116,101,114,222,33,97,28,248,22,81,23,195,2,9,28,248,23,194,2,248,22, 74,23,196,2,249,22,73,248,22,74,23,197,2,27,248,22,75,23,198,1,28, @@ -431,29 +431,29 @@ 28,248,23,197,2,248,22,74,23,195,2,249,22,73,248,22,74,23,196,2,249, 2,96,23,200,1,248,22,75,23,198,1,249,2,96,197,248,22,75,195,28,248, 22,81,23,200,2,86,95,23,199,1,23,198,1,28,23,200,2,199,86,94,23, -200,1,27,28,248,22,81,23,197,2,6,0,0,249,22,1,22,151,7,248,2, -94,23,199,2,248,23,199,1,252,22,176,7,6,44,44,126,97,58,32,99,111, +200,1,27,28,248,22,81,23,197,2,6,0,0,249,22,1,22,152,7,248,2, +94,23,199,2,248,23,199,1,252,22,177,7,6,44,44,126,97,58,32,99,111, 108,108,101,99,116,105,111,110,32,110,111,116,32,102,111,117,110,100,58,32,126, 115,32,105,110,32,97,110,121,32,111,102,58,32,126,115,126,97,23,203,1,28, -248,22,81,23,203,1,28,248,22,153,14,23,202,2,248,22,157,14,23,202,1, -23,201,1,250,22,151,7,28,248,22,153,14,23,205,2,248,22,157,14,23,205, +248,22,81,23,203,1,28,248,22,154,14,23,202,2,248,22,158,14,23,202,1, +23,201,1,250,22,152,7,28,248,22,154,14,23,205,2,248,22,158,14,23,205, 1,23,204,1,6,1,1,47,23,202,2,28,248,22,81,23,201,2,9,28,248, -22,153,14,248,22,74,23,202,2,249,22,73,248,22,74,23,203,2,27,248,22, -75,23,204,2,28,248,22,81,23,194,2,9,28,248,22,153,14,248,22,74,23, +22,154,14,248,22,74,23,202,2,249,22,73,248,22,74,23,203,2,27,248,22, +75,23,204,2,28,248,22,81,23,194,2,9,28,248,22,154,14,248,22,74,23, 195,2,249,22,73,248,22,74,23,196,2,27,248,22,75,23,197,1,28,248,22, -81,23,194,2,9,28,248,22,153,14,248,22,74,23,195,2,249,22,73,248,22, -74,23,196,2,249,2,96,22,153,14,248,22,75,23,198,1,249,2,96,22,153, +81,23,194,2,9,28,248,22,154,14,248,22,74,23,195,2,249,22,73,248,22, +74,23,196,2,249,2,96,22,154,14,248,22,75,23,198,1,249,2,96,22,154, 14,248,22,75,23,196,1,27,248,22,75,23,195,1,28,248,22,81,23,194,2, -9,28,248,22,153,14,248,22,74,23,195,2,249,22,73,248,22,74,23,196,2, -249,2,96,22,153,14,248,22,75,23,198,1,249,2,96,22,153,14,248,22,75, +9,28,248,22,154,14,248,22,74,23,195,2,249,22,73,248,22,74,23,196,2, +249,2,96,22,154,14,248,22,75,23,198,1,249,2,96,22,154,14,248,22,75, 23,196,1,27,248,22,75,23,202,2,28,248,22,81,23,194,2,9,28,248,22, -153,14,248,22,74,23,195,2,249,22,73,248,22,74,23,196,2,27,248,22,75, -23,197,1,28,248,22,81,23,194,2,9,28,248,22,153,14,248,22,74,23,195, -2,249,22,73,248,22,74,23,196,2,249,2,96,22,153,14,248,22,75,23,198, -1,249,2,96,22,153,14,248,22,75,23,196,1,27,248,22,75,23,195,1,28, -248,22,81,23,194,2,9,28,248,22,153,14,248,22,74,23,195,2,249,22,73, -248,22,74,23,196,2,249,2,96,22,153,14,248,22,75,23,198,1,249,2,96, -22,153,14,248,22,75,23,196,1,28,249,22,5,22,127,23,202,2,250,22,176, +154,14,248,22,74,23,195,2,249,22,73,248,22,74,23,196,2,27,248,22,75, +23,197,1,28,248,22,81,23,194,2,9,28,248,22,154,14,248,22,74,23,195, +2,249,22,73,248,22,74,23,196,2,249,2,96,22,154,14,248,22,75,23,198, +1,249,2,96,22,154,14,248,22,75,23,196,1,27,248,22,75,23,195,1,28, +248,22,81,23,194,2,9,28,248,22,154,14,248,22,74,23,195,2,249,22,73, +248,22,74,23,196,2,249,2,96,22,154,14,248,22,75,23,198,1,249,2,96, +22,154,14,248,22,75,23,196,1,28,249,22,5,22,127,23,202,2,250,22,177, 7,6,21,21,32,111,114,58,32,126,115,32,105,110,32,97,110,121,32,111,102, 58,32,126,115,23,202,1,249,22,2,22,128,2,28,248,22,81,23,206,2,86, 94,23,205,1,9,28,248,22,127,248,22,74,23,207,2,249,22,73,248,22,74, @@ -471,77 +471,77 @@ 22,127,248,22,75,23,196,1,27,248,22,75,23,195,1,28,248,22,81,23,194, 2,9,28,248,22,127,248,22,74,23,195,2,249,22,73,248,22,74,23,196,2, 249,2,96,22,127,248,22,75,23,198,1,249,2,96,22,127,248,22,75,23,196, -1,86,94,23,199,1,6,0,0,27,248,22,74,23,201,2,27,28,248,22,153, -14,23,195,2,249,22,171,14,23,196,1,23,198,2,248,22,128,2,23,195,1, -28,28,248,22,153,14,248,22,74,23,203,2,248,22,166,14,23,194,2,10,27, -250,22,1,22,171,14,23,197,1,23,201,2,28,28,248,22,81,23,199,2,10, -248,22,166,14,23,194,2,28,23,201,2,28,28,248,22,165,14,249,22,171,14, -195,203,10,27,28,248,22,153,14,202,248,22,157,14,202,201,27,248,22,131,7, -23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,134,7,6,4,4, -46,114,107,116,249,22,150,7,23,199,2,249,22,176,3,23,200,2,40,249,22, -151,7,250,22,150,7,23,200,1,36,249,22,176,3,23,201,1,40,6,3,3, -46,115,115,86,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,165,14, -249,22,171,14,198,23,196,1,11,192,26,8,2,93,203,204,205,206,23,15,23, +1,86,94,23,199,1,6,0,0,27,248,22,74,23,201,2,27,28,248,22,154, +14,23,195,2,249,22,172,14,23,196,1,23,198,2,248,22,128,2,23,195,1, +28,28,248,22,154,14,248,22,74,23,203,2,248,22,167,14,23,194,2,10,27, +250,22,1,22,172,14,23,197,1,23,201,2,28,28,248,22,81,23,199,2,10, +248,22,167,14,23,194,2,28,23,201,2,28,28,248,22,166,14,249,22,172,14, +195,203,10,27,28,248,22,154,14,202,248,22,158,14,202,201,27,248,22,132,7, +23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,135,7,6,4,4, +46,114,107,116,249,22,151,7,23,199,2,249,22,176,3,23,200,2,40,249,22, +152,7,250,22,151,7,23,200,1,36,249,22,176,3,23,201,1,40,6,3,3, +46,115,115,86,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,166,14, +249,22,172,14,198,23,196,1,11,192,26,8,2,93,203,204,205,206,23,15,23, 16,248,22,75,23,18,28,23,18,23,18,200,192,26,8,2,93,203,204,205,206, 23,15,23,16,248,22,75,23,18,23,18,26,8,2,93,202,203,204,205,206,23, 15,248,22,75,23,17,23,17,90,159,38,11,89,161,38,36,11,249,80,159,40, -57,39,23,200,1,23,201,1,27,248,22,61,28,248,22,153,14,195,248,22,157, -14,195,194,27,247,22,134,15,27,250,22,87,28,23,197,2,28,247,22,133,15, +57,39,23,200,1,23,201,1,27,248,22,61,28,248,22,154,14,195,248,22,158, +14,195,194,27,247,22,135,15,27,250,22,87,28,23,197,2,28,247,22,134,15, 27,248,80,159,46,55,39,10,27,250,22,153,2,23,197,2,23,203,2,11,28, 23,193,2,192,86,94,23,193,1,250,22,153,2,23,197,1,11,9,9,9,28, 23,197,1,28,80,159,44,49,38,27,248,80,159,46,55,39,11,27,250,22,153, 2,23,197,2,23,203,1,11,28,23,193,2,192,86,94,23,193,1,250,22,153, -2,23,197,1,11,9,86,94,23,198,1,9,9,247,22,131,15,26,8,2,93, -200,203,204,206,23,15,23,18,200,11,86,95,28,28,248,22,154,14,23,194,2, -10,28,248,22,153,14,23,194,2,10,28,248,22,128,7,23,194,2,28,248,22, -175,14,23,194,2,10,248,22,176,14,23,194,2,11,12,252,22,174,9,23,200, -2,2,42,36,23,198,2,23,199,2,28,28,248,22,128,7,23,195,2,10,248, -22,181,7,23,195,2,86,94,23,194,1,12,252,22,174,9,23,200,2,2,43, -37,23,198,2,23,199,1,90,159,39,11,89,161,39,36,11,248,22,174,14,23, -197,2,86,94,23,195,1,86,94,28,192,12,250,22,175,9,23,201,1,2,44, +2,23,197,1,11,9,86,94,23,198,1,9,9,247,22,132,15,26,8,2,93, +200,203,204,206,23,15,23,18,200,11,86,95,28,28,248,22,155,14,23,194,2, +10,28,248,22,154,14,23,194,2,10,28,248,22,129,7,23,194,2,28,248,22, +176,14,23,194,2,10,248,22,177,14,23,194,2,11,12,252,22,175,9,23,200, +2,2,42,36,23,198,2,23,199,2,28,28,248,22,129,7,23,195,2,10,248, +22,182,7,23,195,2,86,94,23,194,1,12,252,22,175,9,23,200,2,2,43, +37,23,198,2,23,199,1,90,159,39,11,89,161,39,36,11,248,22,175,14,23, +197,2,86,94,23,195,1,86,94,28,192,12,250,22,176,9,23,201,1,2,44, 23,199,1,249,22,7,194,195,90,159,38,11,89,161,38,36,11,86,95,28,28, -248,22,154,14,23,196,2,10,28,248,22,153,14,23,196,2,10,28,248,22,128, -7,23,196,2,28,248,22,175,14,23,196,2,10,248,22,176,14,23,196,2,11, -12,252,22,174,9,2,25,2,42,36,23,200,2,23,201,2,28,28,248,22,128, -7,23,197,2,10,248,22,181,7,23,197,2,12,252,22,174,9,2,25,2,43, -37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,174,14,23, -199,2,86,94,23,195,1,86,94,28,192,12,250,22,175,9,2,25,2,44,23, -201,2,249,22,7,194,195,27,249,22,163,14,250,22,152,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,159,14, -23,201,1,28,248,22,128,7,23,203,2,249,22,143,8,23,204,1,8,63,23, -202,1,28,248,22,154,14,23,199,2,248,22,155,14,23,199,1,86,94,23,198, -1,247,22,156,14,28,248,22,153,14,194,249,22,171,14,195,194,192,90,159,38, -11,89,161,38,36,11,86,95,28,28,248,22,154,14,23,196,2,10,28,248,22, -153,14,23,196,2,10,28,248,22,128,7,23,196,2,28,248,22,175,14,23,196, -2,10,248,22,176,14,23,196,2,11,12,252,22,174,9,2,26,2,42,36,23, -200,2,23,201,2,28,28,248,22,128,7,23,197,2,10,248,22,181,7,23,197, -2,12,252,22,174,9,2,26,2,43,37,23,200,2,23,201,2,90,159,39,11, -89,161,39,36,11,248,22,174,14,23,199,2,86,94,23,195,1,86,94,28,192, -12,250,22,175,9,2,26,2,44,23,201,2,249,22,7,194,195,27,249,22,163, -14,249,22,129,8,250,22,153,15,0,9,35,114,120,35,34,91,46,93,34,248, -22,159,14,23,203,1,6,1,1,95,28,248,22,128,7,23,202,2,249,22,143, -8,23,203,1,8,63,23,201,1,28,248,22,154,14,23,199,2,248,22,155,14, -23,199,1,86,94,23,198,1,247,22,156,14,28,248,22,153,14,194,249,22,171, -14,195,194,192,249,247,22,159,5,194,11,27,247,22,133,15,249,80,159,39,40, -38,28,23,195,2,27,248,22,148,8,2,45,28,192,192,2,46,2,47,27,28, -23,196,1,250,22,171,14,248,22,129,15,2,48,247,22,146,8,2,49,11,27, -248,80,159,42,8,28,39,250,22,87,9,248,22,83,248,22,129,15,2,38,9, -28,193,249,22,73,195,194,192,27,247,22,133,15,249,80,159,39,40,38,28,23, -195,2,27,248,22,148,8,2,45,28,192,192,2,46,2,47,27,28,23,196,1, -250,22,171,14,248,22,129,15,2,48,247,22,146,8,2,49,11,27,248,80,159, -42,8,29,39,250,22,87,23,203,1,248,22,83,248,22,129,15,2,38,9,28, -193,249,22,73,195,194,192,27,247,22,133,15,249,80,159,39,40,38,28,23,195, -2,27,248,22,148,8,2,45,28,192,192,2,46,2,47,27,28,23,196,1,250, -22,171,14,248,22,129,15,2,48,247,22,146,8,2,49,11,27,248,80,159,42, -8,30,39,250,22,87,23,203,1,248,22,83,248,22,129,15,2,38,23,204,1, -28,193,249,22,73,195,194,192,86,94,249,22,181,6,247,22,155,5,195,248,22, -142,6,249,22,128,4,36,249,22,176,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,129,15,2,31,27, +248,22,155,14,23,196,2,10,28,248,22,154,14,23,196,2,10,28,248,22,129, +7,23,196,2,28,248,22,176,14,23,196,2,10,248,22,177,14,23,196,2,11, +12,252,22,175,9,2,25,2,42,36,23,200,2,23,201,2,28,28,248,22,129, +7,23,197,2,10,248,22,182,7,23,197,2,12,252,22,175,9,2,25,2,43, +37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,175,14,23, +199,2,86,94,23,195,1,86,94,28,192,12,250,22,176,9,2,25,2,44,23, +201,2,249,22,7,194,195,27,249,22,164,14,250,22,153,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,160,14, +23,201,1,28,248,22,129,7,23,203,2,249,22,144,8,23,204,1,8,63,23, +202,1,28,248,22,155,14,23,199,2,248,22,156,14,23,199,1,86,94,23,198, +1,247,22,157,14,28,248,22,154,14,194,249,22,172,14,195,194,192,90,159,38, +11,89,161,38,36,11,86,95,28,28,248,22,155,14,23,196,2,10,28,248,22, +154,14,23,196,2,10,28,248,22,129,7,23,196,2,28,248,22,176,14,23,196, +2,10,248,22,177,14,23,196,2,11,12,252,22,175,9,2,26,2,42,36,23, +200,2,23,201,2,28,28,248,22,129,7,23,197,2,10,248,22,182,7,23,197, +2,12,252,22,175,9,2,26,2,43,37,23,200,2,23,201,2,90,159,39,11, +89,161,39,36,11,248,22,175,14,23,199,2,86,94,23,195,1,86,94,28,192, +12,250,22,176,9,2,26,2,44,23,201,2,249,22,7,194,195,27,249,22,164, +14,249,22,130,8,250,22,154,15,0,9,35,114,120,35,34,91,46,93,34,248, +22,160,14,23,203,1,6,1,1,95,28,248,22,129,7,23,202,2,249,22,144, +8,23,203,1,8,63,23,201,1,28,248,22,155,14,23,199,2,248,22,156,14, +23,199,1,86,94,23,198,1,247,22,157,14,28,248,22,154,14,194,249,22,172, +14,195,194,192,249,247,22,160,5,194,11,27,247,22,134,15,249,80,159,39,40, +38,28,23,195,2,27,248,22,149,8,2,45,28,192,192,2,46,2,47,27,28, +23,196,1,250,22,172,14,248,22,130,15,2,48,247,22,147,8,2,49,11,27, +248,80,159,42,8,28,39,250,22,87,9,248,22,83,248,22,130,15,2,38,9, +28,193,249,22,73,195,194,192,27,247,22,134,15,249,80,159,39,40,38,28,23, +195,2,27,248,22,149,8,2,45,28,192,192,2,46,2,47,27,28,23,196,1, +250,22,172,14,248,22,130,15,2,48,247,22,147,8,2,49,11,27,248,80,159, +42,8,29,39,250,22,87,23,203,1,248,22,83,248,22,130,15,2,38,9,28, +193,249,22,73,195,194,192,27,247,22,134,15,249,80,159,39,40,38,28,23,195, +2,27,248,22,149,8,2,45,28,192,192,2,46,2,47,27,28,23,196,1,250, +22,172,14,248,22,130,15,2,48,247,22,147,8,2,49,11,27,248,80,159,42, +8,30,39,250,22,87,23,203,1,248,22,83,248,22,130,15,2,38,23,204,1, +28,193,249,22,73,195,194,192,86,94,249,22,182,6,247,22,156,5,195,248,22, +143,6,249,22,128,4,36,249,22,176,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,130,15,2,31,27, 250,80,159,42,39,39,23,197,1,11,11,27,248,22,131,4,23,199,1,27,28, 23,194,2,23,194,1,86,94,23,194,1,36,27,248,22,131,4,23,202,1,27, -28,23,194,2,23,194,1,86,94,23,194,1,36,249,22,186,5,23,199,1,20, +28,23,194,2,23,194,1,86,94,23,194,1,36,249,22,187,5,23,199,1,20, 20,95,88,163,8,36,36,48,11,9,224,4,2,33,107,23,195,1,23,197,1, -27,248,22,171,5,23,195,1,248,80,159,39,8,31,39,193,159,36,20,112,159, +27,248,22,172,5,23,195,1,248,80,159,39,8,31,39,193,159,36,20,112,159, 36,16,1,11,16,0,20,26,141,2,1,2,1,29,11,11,11,11,11,10,43, 80,158,36,36,20,112,159,40,16,28,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,30,2,18,76, @@ -564,19 +564,19 @@ 223,0,33,52,80,159,36,8,29,39,20,15,16,2,88,163,8,36,37,51,16, 2,44,8,128,64,2,30,223,0,33,53,80,159,36,8,28,39,20,15,16,2, 32,0,88,163,36,37,45,11,2,2,222,33,54,80,159,36,36,37,20,15,16, -2,249,22,130,7,7,92,7,92,80,159,36,37,37,20,15,16,2,88,163,36, +2,249,22,131,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,55,80,159,36,38,37,20,15,16,2,20,25,96, 2,5,88,163,8,36,39,8,24,52,9,223,0,33,62,88,163,36,38,47,44, 9,223,0,33,63,88,163,36,37,46,44,9,223,0,33,64,80,159,36,39,37, -20,15,16,2,27,248,22,137,15,248,22,142,8,27,28,249,22,138,9,247,22, -150,8,2,32,6,1,1,59,6,1,1,58,250,22,176,7,6,14,14,40,91, +20,15,16,2,27,248,22,138,15,248,22,143,8,27,28,249,22,139,9,247,22, +151,8,2,32,6,1,1,59,6,1,1,58,250,22,177,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,6,223,0,33,68,80,159,36,40,37,20,15,16,2,32,0, 88,163,8,36,38,50,11,2,7,222,33,69,80,159,36,41,37,20,15,16,2, 32,0,88,163,8,36,39,51,11,2,8,222,33,71,80,159,36,42,37,20,15, 16,2,88,163,45,38,51,8,128,4,2,9,223,0,33,74,80,159,36,43,37, 20,15,16,2,88,163,45,39,52,8,128,4,2,11,223,0,33,77,80,159,36, -45,37,20,15,16,2,248,22,129,15,70,108,105,110,107,115,45,102,105,108,101, +45,37,20,15,16,2,248,22,130,15,70,108,105,110,107,115,45,102,105,108,101, 80,159,36,46,37,20,15,16,2,247,22,133,2,80,158,36,47,20,15,16,2, 2,78,80,158,36,48,20,15,16,2,248,80,159,37,50,37,88,163,36,36,49, 8,240,8,128,1,0,9,223,1,33,79,80,159,36,49,37,20,15,16,2,247, @@ -599,7 +599,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 10420); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,50,46,48,46,50,0,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,50,46,48,46,51,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,12,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,0,0,175,1, 0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,23,115,116, @@ -617,7 +617,7 @@ 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,2,20,15,16, -6,253,22,179,10,2,3,11,38,36,11,248,22,83,249,22,73,22,167,10,88, +6,253,22,180,10,2,3,11,38,36,11,248,22,83,249,22,73,22,168,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,3,249,22,7, 88,163,36,37,45,44,9,223,2,33,10,88,163,36,37,45,44,9,223,2,33, @@ -626,7 +626,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 496); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,50,46,48,46,50,0,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,50,46,48,46,51,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,65,0,0,0,1,0,0,7,0,18,0,45, 0,51,0,64,0,73,0,80,0,102,0,124,0,150,0,158,0,170,0,185,0, 201,0,219,0,239,0,251,0,11,1,34,1,46,1,77,1,84,1,89,1,94, @@ -654,55 +654,55 @@ 101,5,3,46,122,111,5,3,46,122,111,6,6,6,110,97,116,105,118,101,64, 108,111,111,112,63,108,105,98,67,105,103,110,111,114,101,100,249,22,14,195,80, 159,38,49,38,249,80,159,38,52,39,195,10,90,159,39,11,89,161,39,36,11, -248,22,174,14,197,86,95,23,195,1,23,193,1,28,249,22,141,15,0,11,35, -114,120,34,91,46,93,115,115,36,34,248,22,158,14,23,197,1,249,80,159,41, -56,39,198,5,4,46,114,107,116,196,27,28,23,195,2,28,249,22,138,9,23, +248,22,175,14,197,86,95,23,195,1,23,193,1,28,249,22,142,15,0,11,35, +114,120,34,91,46,93,115,115,36,34,248,22,159,14,23,197,1,249,80,159,41, +56,39,198,5,4,46,114,107,116,196,27,28,23,195,2,28,249,22,139,9,23, 197,2,80,158,39,50,86,94,23,195,1,80,158,37,51,27,248,22,138,5,23, -197,2,28,248,22,153,14,23,194,2,90,159,39,11,89,161,39,36,11,248,22, -174,14,23,197,1,86,95,20,18,159,11,80,158,41,50,198,20,18,159,11,80, -158,41,51,192,192,11,11,28,23,193,2,192,86,94,23,193,1,27,247,22,160, -5,28,192,192,247,22,130,15,250,22,171,14,23,197,1,23,199,1,249,80,159, -43,39,39,23,198,1,2,26,250,22,171,14,23,197,1,23,199,1,249,80,159, -43,39,39,23,198,1,2,27,252,22,171,14,23,199,1,23,201,1,2,28,247, -22,151,8,249,80,159,45,39,39,23,200,1,80,159,45,36,38,252,22,171,14, -23,199,1,23,201,1,2,28,247,22,151,8,249,80,159,45,39,39,23,200,1, -80,159,45,36,38,27,252,22,171,14,23,200,1,23,202,1,2,28,247,22,151, -8,249,80,159,46,39,39,23,201,1,80,159,46,36,38,27,250,22,188,14,196, +197,2,28,248,22,154,14,23,194,2,90,159,39,11,89,161,39,36,11,248,22, +175,14,23,197,1,86,95,20,18,159,11,80,158,41,50,198,20,18,159,11,80, +158,41,51,192,192,11,11,28,23,193,2,192,86,94,23,193,1,27,247,22,161, +5,28,192,192,247,22,131,15,250,22,172,14,23,197,1,23,199,1,249,80,159, +43,39,39,23,198,1,2,26,250,22,172,14,23,197,1,23,199,1,249,80,159, +43,39,39,23,198,1,2,27,252,22,172,14,23,199,1,23,201,1,2,28,247, +22,152,8,249,80,159,45,39,39,23,200,1,80,159,45,36,38,252,22,172,14, +23,199,1,23,201,1,2,28,247,22,152,8,249,80,159,45,39,39,23,200,1, +80,159,45,36,38,27,252,22,172,14,23,200,1,23,202,1,2,28,247,22,152, +8,249,80,159,46,39,39,23,201,1,80,159,46,36,38,27,250,22,189,14,196, 11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,73,195,194,11, -27,252,22,171,14,23,200,1,23,202,1,2,28,247,22,151,8,249,80,159,46, -39,39,23,201,1,80,159,46,36,38,27,250,22,188,14,196,11,32,0,88,163, -8,36,36,41,11,9,222,11,28,192,249,22,73,195,194,11,27,250,22,171,14, -23,198,1,23,200,1,249,80,159,44,39,39,23,199,1,2,26,27,250,22,188, +27,252,22,172,14,23,200,1,23,202,1,2,28,247,22,152,8,249,80,159,46, +39,39,23,201,1,80,159,46,36,38,27,250,22,189,14,196,11,32,0,88,163, +8,36,36,41,11,9,222,11,28,192,249,22,73,195,194,11,27,250,22,172,14, +23,198,1,23,200,1,249,80,159,44,39,39,23,199,1,2,26,27,250,22,189, 14,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,73,195, -194,11,27,250,22,171,14,23,198,1,23,200,1,249,80,159,44,39,39,23,199, -1,2,27,27,250,22,188,14,196,11,32,0,88,163,8,36,36,41,11,9,222, +194,11,27,250,22,172,14,23,198,1,23,200,1,249,80,159,44,39,39,23,199, +1,2,27,27,250,22,189,14,196,11,32,0,88,163,8,36,36,41,11,9,222, 11,28,192,249,22,73,195,194,11,86,94,28,248,80,159,37,38,39,23,195,2, -12,250,22,174,9,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108, +12,250,22,175,9,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108, 101,100,6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45,112,97, 116,104,32,115,116,114,105,110,103,23,197,2,90,159,46,11,89,161,37,36,11, -28,248,22,177,14,23,205,2,23,204,2,27,247,22,160,5,28,23,193,2,249, -22,178,14,23,207,2,23,195,1,23,205,2,89,161,39,37,11,248,22,174,14, -23,205,1,86,94,23,196,1,89,161,38,40,11,28,23,205,2,27,248,22,158, -14,23,197,2,27,248,22,186,7,23,195,2,28,28,249,22,188,3,23,195,2, -40,249,22,189,7,5,4,46,114,107,116,249,22,128,8,23,198,2,249,22,176, -3,23,199,2,40,11,249,22,7,23,199,2,248,22,162,14,249,22,129,8,250, -22,128,8,23,202,1,36,249,22,176,3,23,203,1,40,5,3,46,115,115,249, +28,248,22,178,14,23,205,2,23,204,2,27,247,22,161,5,28,23,193,2,249, +22,179,14,23,207,2,23,195,1,23,205,2,89,161,39,37,11,248,22,175,14, +23,205,1,86,94,23,196,1,89,161,38,40,11,28,23,205,2,27,248,22,159, +14,23,197,2,27,248,22,187,7,23,195,2,28,28,249,22,188,3,23,195,2, +40,249,22,190,7,5,4,46,114,107,116,249,22,129,8,23,198,2,249,22,176, +3,23,199,2,40,11,249,22,7,23,199,2,248,22,163,14,249,22,130,8,250, +22,129,8,23,202,1,36,249,22,176,3,23,203,1,40,5,3,46,115,115,249, 22,7,23,199,2,11,249,22,7,23,197,2,11,89,161,37,42,11,28,249,22, -138,9,23,199,2,23,197,2,23,193,2,249,22,171,14,23,196,2,23,199,2, -89,161,37,43,11,28,23,198,2,28,249,22,138,9,23,200,2,23,197,1,23, -193,1,86,94,23,193,1,249,22,171,14,23,196,2,23,200,2,86,94,23,195, -1,11,89,161,37,44,11,28,249,22,138,9,23,196,2,68,114,101,108,97,116, -105,118,101,86,94,23,194,1,2,25,23,194,1,89,161,37,45,11,247,22,132, -15,27,250,22,188,14,23,203,2,11,32,0,88,163,8,36,36,41,11,9,222, +139,9,23,199,2,23,197,2,23,193,2,249,22,172,14,23,196,2,23,199,2, +89,161,37,43,11,28,23,198,2,28,249,22,139,9,23,200,2,23,197,1,23, +193,1,86,94,23,193,1,249,22,172,14,23,196,2,23,200,2,86,94,23,195, +1,11,89,161,37,44,11,28,249,22,139,9,23,196,2,68,114,101,108,97,116, +105,118,101,86,94,23,194,1,2,25,23,194,1,89,161,37,45,11,247,22,133, +15,27,250,22,189,14,23,203,2,11,32,0,88,163,8,36,36,41,11,9,222, 11,27,28,23,194,2,249,22,73,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,188,14,23,207,2,11,32,0, +27,28,23,203,2,28,23,194,2,11,27,250,22,189,14,23,207,2,11,32,0, 88,163,8,36,36,41,11,9,222,11,28,192,249,22,73,23,206,2,194,11,11, 27,28,23,195,2,23,195,2,23,194,2,27,88,163,36,37,50,44,62,122,111, 225,15,13,9,33,36,27,88,163,36,37,50,44,66,97,108,116,45,122,111,225, 16,14,11,33,37,27,88,163,36,37,52,45,9,225,17,15,11,33,38,27,88, 163,36,37,52,45,9,225,18,16,13,33,39,27,28,23,200,2,23,200,2,248, -22,136,9,23,200,2,27,28,23,208,2,28,23,200,2,86,94,23,201,1,23, -200,2,248,22,136,9,23,202,1,11,27,28,23,195,2,28,23,197,1,27,249, +22,137,9,23,200,2,27,28,23,208,2,28,23,200,2,86,94,23,201,1,23, +200,2,248,22,137,9,23,202,1,11,27,28,23,195,2,28,23,197,1,27,249, 22,5,88,163,8,36,37,53,45,9,225,24,22,18,33,40,23,216,2,27,28, 23,202,2,11,193,28,192,192,28,193,28,23,202,2,28,249,22,188,3,248,22, 75,196,248,22,75,23,205,2,193,11,11,11,11,86,94,23,197,1,11,28,23, @@ -710,8 +710,8 @@ 1,23,200,1,23,199,1,23,198,1,23,196,1,23,195,1,23,194,1,20,13, 159,80,159,57,40,37,250,80,159,8,24,41,37,249,22,27,11,80,159,8,26, 40,37,22,181,4,11,20,13,159,80,159,57,40,37,250,80,159,8,24,41,37, -249,22,27,11,80,159,8,26,40,37,22,160,5,28,248,22,153,14,23,216,2, -23,215,1,86,94,23,215,1,247,22,130,15,249,247,22,136,15,248,22,74,195, +249,22,27,11,80,159,8,26,40,37,22,161,5,28,248,22,154,14,23,216,2, +23,215,1,86,94,23,215,1,247,22,131,15,249,247,22,137,15,248,22,74,195, 23,25,86,94,23,193,1,27,28,23,195,2,28,23,197,1,27,249,22,5,88, 163,8,36,37,53,45,9,225,25,23,20,33,41,23,217,2,27,28,23,204,2, 11,193,28,192,192,28,193,28,203,28,249,22,188,3,248,22,75,196,248,22,75, @@ -719,9 +719,9 @@ 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,58,40,37,250,80,159,8,25,41,37,249,22,27, 11,80,159,8,27,40,37,22,181,4,23,215,1,20,13,159,80,159,58,40,37, -250,80,159,8,25,41,37,249,22,27,11,80,159,8,27,40,37,22,160,5,28, -248,22,153,14,23,217,2,23,216,1,86,94,23,216,1,247,22,130,15,249,247, -22,136,15,248,22,74,195,23,26,86,94,23,193,1,27,28,23,197,2,28,23, +250,80,159,8,25,41,37,249,22,27,11,80,159,8,27,40,37,22,161,5,28, +248,22,154,14,23,217,2,23,216,1,86,94,23,216,1,247,22,131,15,249,247, +22,137,15,248,22,74,195,23,26,86,94,23,193,1,27,28,23,197,2,28,23, 201,1,27,249,22,5,20,20,94,88,163,8,36,37,51,44,9,225,26,24,20, 33,42,23,213,1,23,218,2,27,28,23,204,2,11,193,28,192,192,28,193,28, 23,204,2,28,249,22,188,3,248,22,75,196,248,22,75,23,207,2,193,11,11, @@ -729,8 +729,8 @@ 1,23,213,1,23,212,1,23,211,1,23,202,1,23,200,1,23,197,1,23,196, 1,20,13,159,80,159,59,40,37,250,80,159,8,26,41,37,249,22,27,11,80, 159,8,28,40,37,22,181,4,11,20,13,159,80,159,59,40,37,250,80,159,8, -26,41,37,249,22,27,11,80,159,8,28,40,37,22,160,5,28,248,22,153,14, -23,218,2,23,217,1,86,94,23,217,1,247,22,130,15,249,247,22,158,5,248, +26,41,37,249,22,27,11,80,159,8,28,40,37,22,161,5,28,248,22,154,14, +23,218,2,23,217,1,86,94,23,217,1,247,22,131,15,249,247,22,159,5,248, 22,74,195,23,27,86,94,23,193,1,27,28,23,197,1,28,23,201,1,27,249, 22,5,20,20,94,88,163,8,36,37,51,44,9,225,27,25,22,33,43,23,215, 1,23,219,1,27,28,23,205,2,11,193,28,192,192,28,193,28,204,28,249,22, @@ -738,27 +738,27 @@ 212,1,11,86,94,23,201,1,11,28,23,193,2,86,95,23,213,1,23,198,1, 20,13,159,80,159,8,24,40,37,250,80,159,8,27,41,37,249,22,27,11,80, 159,8,29,40,37,22,181,4,23,217,1,20,13,159,80,159,8,24,40,37,250, -80,159,8,27,41,37,249,22,27,11,80,159,8,29,40,37,22,160,5,28,248, -22,153,14,23,219,2,23,218,1,86,94,23,218,1,247,22,130,15,249,247,22, -158,5,248,22,74,195,23,28,86,94,23,193,1,27,28,23,199,2,86,94,23, +80,159,8,27,41,37,249,22,27,11,80,159,8,29,40,37,22,161,5,28,248, +22,154,14,23,219,2,23,218,1,86,94,23,218,1,247,22,131,15,249,247,22, +159,5,248,22,74,195,23,28,86,94,23,193,1,27,28,23,199,2,86,94,23, 215,1,23,214,1,86,94,23,214,1,23,215,1,20,13,159,80,159,8,25,40, 37,250,80,159,8,28,41,37,249,22,27,11,80,159,8,30,40,37,22,181,4, 28,23,30,28,23,202,1,11,195,86,94,23,202,1,11,20,13,159,80,159,8, 25,40,37,250,80,159,8,28,41,37,249,22,27,11,80,159,8,30,40,37,22, -160,5,28,248,22,153,14,23,220,2,23,219,1,86,94,23,219,1,247,22,130, -15,249,247,22,158,5,194,23,29,27,249,22,158,8,80,159,39,45,38,249,22, +161,5,28,248,22,154,14,23,220,2,23,219,1,86,94,23,219,1,247,22,131, +15,249,247,22,159,5,194,23,29,27,249,22,159,8,80,159,39,45,38,249,22, 183,3,248,22,179,3,248,22,166,2,200,8,128,8,27,28,193,248,22,169,2, 194,11,28,192,27,249,22,96,198,195,28,192,248,22,75,193,11,11,27,249,22, -183,3,248,22,179,3,248,22,166,2,198,8,128,8,27,249,22,158,8,80,159, -40,45,38,195,27,28,193,248,22,169,2,194,11,250,22,159,8,80,159,42,45, +183,3,248,22,179,3,248,22,166,2,198,8,128,8,27,249,22,159,8,80,159, +40,45,38,195,27,28,193,248,22,169,2,194,11,250,22,160,8,80,159,42,45, 38,197,248,22,168,2,249,22,73,249,22,73,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,48,88,163,8, -36,37,59,11,2,29,222,33,49,27,249,22,141,15,2,47,23,196,2,28,23, +36,37,59,11,2,29,222,33,49,27,249,22,142,15,2,47,23,196,2,28,23, 193,2,86,94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23, -197,1,27,249,22,141,15,2,47,23,196,2,28,23,193,2,86,94,23,194,1, -249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,141,15, +197,1,27,249,22,142,15,2,47,23,196,2,28,23,193,2,86,94,23,194,1, +249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,142,15, 2,47,23,196,2,28,23,193,2,86,94,23,194,1,249,22,73,248,22,98,23, -196,2,27,248,22,107,23,197,1,27,249,22,141,15,2,47,23,196,2,28,23, +196,2,27,248,22,107,23,197,1,27,249,22,142,15,2,47,23,196,2,28,23, 193,2,86,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,48,248,22, 107,23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,248,22,83,194,32, 50,88,163,36,37,55,11,2,29,222,33,51,28,248,22,81,248,22,75,23,195, @@ -768,12 +768,12 @@ 195,2,249,22,7,9,248,22,74,195,90,159,38,11,89,161,38,36,11,248,2, 50,248,22,75,196,249,22,7,249,22,73,248,22,74,199,196,195,249,22,7,249, 22,73,248,22,74,199,196,195,249,22,7,249,22,73,248,22,74,199,196,195,27, -27,249,22,141,15,2,47,23,197,2,28,23,193,2,86,94,23,195,1,249,22, -73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,141,15,2,47, +27,249,22,142,15,2,47,23,197,2,28,23,193,2,86,94,23,195,1,249,22, +73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,142,15,2,47, 23,196,2,28,23,193,2,86,94,23,194,1,249,22,73,248,22,98,23,196,2, -27,248,22,107,23,197,1,27,249,22,141,15,2,47,23,196,2,28,23,193,2, +27,248,22,107,23,197,1,27,249,22,142,15,2,47,23,196,2,28,23,193,2, 86,94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1, -27,249,22,141,15,2,47,23,196,2,28,23,193,2,86,94,23,194,1,249,22, +27,249,22,142,15,2,47,23,196,2,28,23,193,2,86,94,23,194,1,249,22, 73,248,22,98,23,196,2,248,2,48,248,22,107,23,197,1,248,22,83,194,248, 22,83,194,248,22,83,194,248,22,83,195,28,23,195,1,192,28,248,22,81,248, 22,75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,90,159,38, @@ -782,32 +782,32 @@ 248,22,75,23,197,2,249,22,7,9,248,22,74,197,90,159,38,11,89,161,38, 36,11,248,2,50,248,22,75,198,249,22,7,249,22,73,248,22,74,201,196,195, 249,22,7,249,22,73,248,22,74,202,196,195,249,22,7,249,22,73,248,22,74, -200,196,195,86,95,28,248,22,136,5,195,12,250,22,174,9,2,21,6,20,20, +200,196,195,86,95,28,248,22,136,5,195,12,250,22,175,9,2,21,6,20,20, 114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104,197, 28,24,193,2,248,24,194,1,195,86,94,23,193,1,12,27,250,22,153,2,80, -159,41,43,38,248,22,166,15,247,22,132,13,11,27,28,23,194,2,193,86,94, +159,41,43,38,248,22,167,15,247,22,133,13,11,27,28,23,194,2,193,86,94, 23,194,1,27,247,22,133,2,86,94,250,22,151,2,80,159,43,43,38,248,22, -166,15,247,22,132,13,195,192,250,22,151,2,195,199,66,97,116,116,97,99,104, -251,211,197,198,199,10,28,192,250,22,173,9,11,196,195,248,22,171,9,194,28, -249,22,134,7,194,6,1,1,46,2,25,28,249,22,134,7,194,6,2,2,46, +167,15,247,22,133,13,195,192,250,22,151,2,195,199,66,97,116,116,97,99,104, +251,211,197,198,199,10,28,192,250,22,174,9,11,196,195,248,22,172,9,194,28, +249,22,135,7,194,6,1,1,46,2,25,28,249,22,135,7,194,6,2,2,46, 46,62,117,112,192,32,57,88,163,8,36,37,50,11,67,115,115,45,62,114,107, -116,222,33,58,27,248,22,131,7,194,28,249,22,188,3,194,39,28,249,22,134, -7,6,3,3,46,115,115,249,22,150,7,197,249,22,176,3,198,39,249,22,151, -7,250,22,150,7,198,36,249,22,176,3,199,39,6,4,4,46,114,107,116,193, -193,28,249,22,140,9,248,22,75,23,200,2,23,197,1,28,249,22,138,9,248, -22,74,23,200,2,23,196,1,251,22,171,9,2,21,6,28,28,99,121,99,108, +116,222,33,58,27,248,22,132,7,194,28,249,22,188,3,194,39,28,249,22,135, +7,6,3,3,46,115,115,249,22,151,7,197,249,22,176,3,198,39,249,22,152, +7,250,22,151,7,198,36,249,22,176,3,199,39,6,4,4,46,114,107,116,193, +193,28,249,22,141,9,248,22,75,23,200,2,23,197,1,28,249,22,139,9,248, +22,74,23,200,2,23,196,1,251,22,172,9,2,21,6,28,28,99,121,99,108, 101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,46,115,58,32, 126,46,115,23,200,1,249,22,2,22,75,248,22,88,249,22,73,23,206,1,23, 202,1,12,12,247,192,20,13,159,80,159,41,48,38,249,22,73,249,22,73,248, -22,166,15,247,22,132,13,23,200,1,23,195,1,20,13,159,80,159,41,40,37, +22,167,15,247,22,133,13,23,200,1,23,195,1,20,13,159,80,159,41,40,37, 250,80,159,44,41,37,249,22,27,11,80,159,46,40,37,22,180,4,23,197,1, -249,247,22,159,5,23,199,1,248,22,61,248,22,157,14,23,199,1,86,94,28, -28,248,22,153,14,23,196,2,10,248,22,144,5,23,196,2,12,28,23,197,2, -250,22,173,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,174,9,2,21,6,19,19,109,111,100,117,108,101,45, +249,247,22,160,5,23,199,1,248,22,61,248,22,158,14,23,199,1,86,94,28, +28,248,22,154,14,23,196,2,10,248,22,145,5,23,196,2,12,28,23,197,2, +250,22,174,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,175,9,2,21,6,19,19,109,111,100,117,108,101,45, 112,97,116,104,32,111,114,32,112,97,116,104,23,198,2,28,28,248,22,71,23, -196,2,249,22,138,9,248,22,74,23,198,2,2,4,11,248,22,137,5,248,22, -98,196,28,28,248,22,71,23,196,2,249,22,138,9,248,22,74,23,198,2,66, +196,2,249,22,139,9,248,22,74,23,198,2,2,4,11,248,22,137,5,248,22, +98,196,28,28,248,22,71,23,196,2,249,22,139,9,248,22,74,23,198,2,66, 112,108,97,110,101,116,11,86,94,28,207,12,20,13,159,80,159,37,55,37,80, 158,37,53,89,161,37,36,10,249,22,182,4,21,94,2,30,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, @@ -815,69 +815,69 @@ 108,118,101,114,12,252,212,199,200,201,202,80,158,42,53,86,94,23,193,1,27, 88,163,8,36,37,46,11,79,115,104,111,119,45,99,111,108,108,101,99,116,105, 111,110,45,101,114,114,223,5,33,55,27,28,248,22,58,23,198,2,27,248,80, -159,41,46,39,249,22,73,23,201,2,247,22,131,15,28,23,193,2,192,86,94, +159,41,46,39,249,22,73,23,201,2,247,22,132,15,28,23,193,2,192,86,94, 23,193,1,90,159,38,11,89,161,38,36,11,249,80,159,44,52,39,248,22,64, 23,203,2,11,27,28,248,22,81,23,195,2,6,8,8,109,97,105,110,46,114, -107,116,249,22,151,7,23,197,2,6,4,4,46,114,107,116,27,252,80,159,49, +107,116,249,22,152,7,23,197,2,6,4,4,46,114,107,116,27,252,80,159,49, 57,39,2,21,23,204,1,28,248,22,81,23,201,2,23,201,1,86,94,23,201, 1,248,22,74,23,201,2,28,248,22,81,23,201,2,86,94,23,200,1,9,248, -22,75,23,201,1,23,199,2,249,22,171,14,23,195,1,23,196,1,28,248,22, -128,7,23,198,2,86,94,23,194,1,27,248,80,159,41,8,26,39,23,200,2, +22,75,23,201,1,23,199,2,249,22,172,14,23,195,1,23,196,1,28,248,22, +129,7,23,198,2,86,94,23,194,1,27,248,80,159,41,8,26,39,23,200,2, 27,248,80,159,42,46,39,249,22,73,23,202,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,45,52,39,23, -203,2,11,250,22,1,22,171,14,23,199,1,249,22,87,249,22,2,32,0,88, +203,2,11,250,22,1,22,172,14,23,199,1,249,22,87,249,22,2,32,0,88, 163,8,36,37,44,11,9,222,33,56,23,200,1,248,22,83,248,2,57,23,201, -1,28,248,22,153,14,23,198,2,86,94,23,194,1,28,248,22,176,14,23,198, -2,248,80,159,40,8,27,39,248,22,180,14,23,199,2,248,22,83,6,26,26, +1,28,248,22,154,14,23,198,2,86,94,23,194,1,28,248,22,177,14,23,198, +2,248,80,159,40,8,27,39,248,22,181,14,23,199,2,248,22,83,6,26,26, 32,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32,97,98,115,111, -108,117,116,101,41,28,249,22,138,9,248,22,74,23,200,2,2,30,27,248,80, -159,41,46,39,249,22,73,23,201,2,247,22,131,15,28,23,193,2,192,86,94, +108,117,116,101,41,28,249,22,139,9,248,22,74,23,200,2,2,30,27,248,80, +159,41,46,39,249,22,73,23,201,2,247,22,132,15,28,23,193,2,192,86,94, 23,193,1,90,159,39,11,89,161,38,36,11,249,80,159,45,52,39,248,22,98, 23,204,2,11,89,161,37,38,11,28,248,22,81,248,22,100,23,203,2,28,248, -22,81,23,194,2,249,22,145,15,0,8,35,114,120,34,91,46,93,34,23,196, +22,81,23,194,2,249,22,146,15,0,8,35,114,120,34,91,46,93,34,23,196, 2,11,10,27,28,23,196,2,248,2,57,23,196,2,28,248,22,81,23,195,2, -6,8,8,109,97,105,110,46,114,107,116,28,249,22,145,15,0,8,35,114,120, -34,91,46,93,34,23,197,2,248,2,57,23,196,2,249,22,151,7,23,197,2, +6,8,8,109,97,105,110,46,114,107,116,28,249,22,146,15,0,8,35,114,120, +34,91,46,93,34,23,197,2,248,2,57,23,196,2,249,22,152,7,23,197,2, 6,4,4,46,114,107,116,27,28,23,197,1,86,94,23,196,1,249,22,87,28, 248,22,81,248,22,100,23,207,2,21,93,6,5,5,109,122,108,105,98,249,22, 1,22,87,249,22,2,80,159,51,8,28,39,248,22,100,23,210,2,23,197,1, 28,248,22,81,23,196,2,86,94,23,195,1,248,22,83,23,197,1,86,94,23, 196,1,23,195,1,27,252,80,159,51,57,39,2,21,23,206,1,248,22,74,23, -200,2,248,22,75,23,200,1,23,200,2,249,22,171,14,23,195,1,23,197,1, -28,249,22,138,9,248,22,74,23,200,2,64,102,105,108,101,248,80,159,40,8, -27,39,248,22,180,14,249,22,178,14,248,22,182,14,248,22,98,23,203,2,248, -80,159,44,8,26,39,23,203,2,12,86,94,28,28,248,22,153,14,23,194,2, -10,248,22,153,8,23,194,2,86,94,23,199,1,12,28,23,199,2,250,22,173, -9,67,114,101,113,117,105,114,101,249,22,176,7,6,17,17,98,97,100,32,109, +200,2,248,22,75,23,200,1,23,200,2,249,22,172,14,23,195,1,23,197,1, +28,249,22,139,9,248,22,74,23,200,2,64,102,105,108,101,248,80,159,40,8, +27,39,248,22,181,14,249,22,179,14,248,22,183,14,248,22,98,23,203,2,248, +80,159,44,8,26,39,23,203,2,12,86,94,28,28,248,22,154,14,23,194,2, +10,248,22,154,8,23,194,2,86,94,23,199,1,12,28,23,199,2,250,22,174, +9,67,114,101,113,117,105,114,101,249,22,177,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,74,23,199, -2,6,0,0,23,202,1,86,94,23,199,1,250,22,174,9,2,21,249,22,176, +2,6,0,0,23,202,1,86,94,23,199,1,250,22,175,9,2,21,249,22,177, 7,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2, -248,22,74,23,199,2,6,0,0,23,200,2,27,28,248,22,153,8,23,195,2, -249,22,158,8,23,196,2,36,249,22,180,14,248,22,181,14,23,197,2,11,27, -28,248,22,153,8,23,196,2,249,22,158,8,23,197,2,37,248,80,159,42,58, -39,23,195,2,90,159,39,11,89,161,39,36,11,28,248,22,153,8,23,199,2, -250,22,7,2,31,249,22,158,8,23,203,2,38,2,31,248,22,174,14,23,198, -2,86,95,23,195,1,23,193,1,27,28,248,22,153,8,23,200,2,249,22,158, -8,23,201,2,39,249,80,159,47,56,39,23,197,2,5,0,27,28,248,22,153, -8,23,201,2,249,22,158,8,23,202,2,40,248,22,137,5,23,200,2,27,27, -250,22,153,2,80,159,51,43,38,248,22,166,15,247,22,132,13,11,28,23,193, +248,22,74,23,199,2,6,0,0,23,200,2,27,28,248,22,154,8,23,195,2, +249,22,159,8,23,196,2,36,249,22,181,14,248,22,182,14,23,197,2,11,27, +28,248,22,154,8,23,196,2,249,22,159,8,23,197,2,37,248,80,159,42,58, +39,23,195,2,90,159,39,11,89,161,39,36,11,28,248,22,154,8,23,199,2, +250,22,7,2,31,249,22,159,8,23,203,2,38,2,31,248,22,175,14,23,198, +2,86,95,23,195,1,23,193,1,27,28,248,22,154,8,23,200,2,249,22,159, +8,23,201,2,39,249,80,159,47,56,39,23,197,2,5,0,27,28,248,22,154, +8,23,201,2,249,22,159,8,23,202,2,40,248,22,137,5,23,200,2,27,27, +250,22,153,2,80,159,51,43,38,248,22,167,15,247,22,133,13,11,28,23,193, 2,192,86,94,23,193,1,27,247,22,133,2,86,94,250,22,151,2,80,159,52, -43,38,248,22,166,15,247,22,132,13,195,192,86,95,28,23,208,1,27,250,22, +43,38,248,22,167,15,247,22,133,13,195,192,86,95,28,23,208,1,27,250,22, 153,2,23,197,2,197,11,28,23,193,1,12,86,94,27,27,28,248,22,17,80, 159,51,49,38,80,159,50,49,38,247,22,19,251,22,27,11,80,159,54,48,38, -9,23,197,1,27,248,22,166,15,247,22,132,13,86,94,249,22,3,20,20,94, +9,23,197,1,27,248,22,167,15,247,22,133,13,86,94,249,22,3,20,20,94, 88,163,8,36,37,55,11,9,226,12,11,2,3,33,59,23,195,1,23,196,2, 248,28,248,22,17,80,159,52,49,38,32,0,88,163,36,37,42,11,9,222,33, 60,80,159,51,8,29,39,20,20,94,88,163,36,36,52,8,176,64,9,228,15, 11,10,6,5,2,33,61,23,195,1,250,22,151,2,23,197,1,197,10,12,28, -28,248,22,153,8,23,202,1,11,28,248,22,128,7,23,206,2,10,28,248,22, -58,23,206,2,10,28,248,22,71,23,206,2,249,22,138,9,248,22,74,23,208, -2,2,30,11,249,80,159,49,47,39,28,248,22,128,7,23,208,2,249,22,73, +28,248,22,154,8,23,202,1,11,28,248,22,129,7,23,206,2,10,28,248,22, +58,23,206,2,10,28,248,22,71,23,206,2,249,22,139,9,248,22,74,23,208, +2,2,30,11,249,80,159,49,47,39,28,248,22,129,7,23,208,2,249,22,73, 23,209,1,248,80,159,52,8,26,39,23,211,1,86,94,23,208,1,249,22,73, -23,209,1,247,22,131,15,252,22,155,8,23,207,1,23,206,1,23,204,1,23, +23,209,1,247,22,132,15,252,22,156,8,23,207,1,23,206,1,23,204,1,23, 202,1,200,12,193,86,96,20,18,159,11,80,158,36,53,248,80,159,37,8,25, 37,249,22,27,11,80,159,39,55,37,248,22,179,4,80,159,37,54,38,248,22, -159,5,80,159,37,37,39,248,22,187,13,80,159,37,42,39,20,18,159,11,80, +160,5,80,159,37,37,39,248,22,188,13,80,159,37,42,39,20,18,159,11,80, 158,36,53,248,80,159,37,8,25,37,249,22,27,11,80,159,39,55,37,159,36, 20,112,159,36,16,1,11,16,0,20,26,141,2,1,2,1,29,11,11,11,11, 11,10,38,80,158,36,36,20,112,159,40,16,26,2,2,2,3,30,2,5,72, @@ -900,11 +900,11 @@ 8,240,0,0,16,0,72,112,97,116,104,45,115,115,45,62,114,107,116,223,0, 33,34,80,159,36,8,27,39,20,15,16,2,88,163,36,37,49,8,240,0,192, 0,0,67,103,101,116,45,100,105,114,223,0,33,35,80,159,36,8,26,39,20, -15,16,2,248,22,150,8,69,115,111,45,115,117,102,102,105,120,80,159,36,36, +15,16,2,248,22,151,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,38,8,61,2,3,223,0,33,44,80,159, 36,37,37,20,15,16,2,32,0,88,163,8,36,37,42,11,2,9,222,192,80, 159,36,42,37,20,15,16,2,247,22,136,2,80,159,36,43,37,20,15,16,2, -8,128,8,80,159,36,44,37,20,15,16,2,249,22,154,8,8,128,8,11,80, +8,128,8,80,159,36,44,37,20,15,16,2,249,22,155,8,8,128,8,11,80, 159,36,45,37,20,15,16,2,88,163,8,36,37,50,8,128,8,2,13,223,0, 33,45,80,159,36,46,37,20,15,16,2,88,163,8,36,38,55,8,128,8,2, 14,223,0,33,46,80,159,36,47,37,20,15,16,2,247,22,69,80,159,36,48, @@ -923,7 +923,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 6168); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,50,46,48,46,50,0,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,50,46,48,46,51,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,94,1,0,0, 69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2,67, diff --git a/src/racket/src/env.c b/src/racket/src/env.c index 168355b75c..a2292c2d7d 100644 --- a/src/racket/src/env.c +++ b/src/racket/src/env.c @@ -43,7 +43,7 @@ SHARED_OK int scheme_allow_set_undefined; void scheme_set_allow_set_undefined(int v) { scheme_allow_set_undefined = v; } int scheme_get_allow_set_undefined() { return scheme_allow_set_undefined; } -SHARED_OK int scheme_starting_up; +THREAD_LOCAL_DECL(int scheme_starting_up); /* globals READ-ONLY SHARED */ Scheme_Object *scheme_varref_const_p_proc; @@ -489,13 +489,14 @@ static Scheme_Env *place_instance_init(void *stack_base, int initial_main_os_thr scheme_init_foreign(env); + scheme_starting_up = 1; /* in case it's not set already */ + scheme_add_embedded_builtins(env); boot_module_resolver(); scheme_save_initial_module_set(env); - scheme_starting_up = 0; --scheme_current_thread->suspend_break; /* created with breaks suspended */ diff --git a/src/racket/src/eval.c b/src/racket/src/eval.c index 975b4b8a1b..fcc36a80e1 100644 --- a/src/racket/src/eval.c +++ b/src/racket/src/eval.c @@ -5078,6 +5078,22 @@ Scheme_Object *scheme_eval_string_multi_with_prompt(const char *str, Scheme_Env return do_eval_string_all(NULL, str, env, 0, 1); } +void scheme_embedded_load(const char *desc, int predefined) +{ + Scheme_Object *s, *e, *a[3], *eload; + eload = scheme_builtin_value("embedded-load"); + s = scheme_make_utf8_string(desc); + e = scheme_make_utf8_string(desc XFORM_OK_PLUS strlen(desc) XFORM_OK_PLUS 1); + a[0] = s; + a[1] = e; + a[2] = scheme_false; + if (predefined) + scheme_starting_up = 1; + (void)scheme_apply(eload, 3, a); + if (predefined) + scheme_starting_up = 0; +} + void scheme_init_collection_paths_post(Scheme_Env *global_env, Scheme_Object *extra_dirs, Scheme_Object *post_dirs) { mz_jmp_buf * volatile save, newbuf; diff --git a/src/racket/src/marshal.c b/src/racket/src/marshal.c index 09d7dd8a63..2328c53b22 100644 --- a/src/racket/src/marshal.c +++ b/src/racket/src/marshal.c @@ -1326,6 +1326,7 @@ static Scheme_Object *read_module(Scheme_Object *obj) m = MALLOC_ONE_TAGGED(Scheme_Module); m->so.type = scheme_module_type; + m->predefined = scheme_starting_up; me = scheme_make_module_exports(); m->me = me; diff --git a/src/racket/src/module.c b/src/racket/src/module.c index 86aeb2e957..6454824340 100644 --- a/src/racket/src/module.c +++ b/src/racket/src/module.c @@ -63,6 +63,7 @@ static Scheme_Object *module_to_namespace(int argc, Scheme_Object *argv[]); static Scheme_Object *module_to_lang_info(int argc, Scheme_Object *argv[]); static Scheme_Object *module_to_imports(int argc, Scheme_Object *argv[]); static Scheme_Object *module_to_exports(int argc, Scheme_Object *argv[]); +static Scheme_Object *module_is_predefined(int argc, Scheme_Object *argv[]); static Scheme_Object *module_path_index_p(int argc, Scheme_Object *argv[]); static Scheme_Object *module_path_index_resolve(int argc, Scheme_Object *argv[]); @@ -408,6 +409,7 @@ void scheme_init_module(Scheme_Env *env) GLOBAL_PRIM_W_ARITY("module->language-info", module_to_lang_info, 1, 2, env); GLOBAL_PRIM_W_ARITY("module->imports", module_to_imports, 1, 1, env); GLOBAL_PRIM_W_ARITY2("module->exports", module_to_exports, 1, 1, 2, 2, env); + GLOBAL_PRIM_W_ARITY("module-predefined?", module_is_predefined, 1, 1, env); GLOBAL_PRIM_W_ARITY("module-path?", is_module_path, 1, 1, env); } @@ -458,6 +460,7 @@ void scheme_finish_kernel(Scheme_Env *env) kernel = MALLOC_ONE_TAGGED(Scheme_Module); kernel->so.type = scheme_module_type; + kernel->predefined = 1; env->module = kernel; { @@ -2739,7 +2742,7 @@ static Scheme_Object *module_to_namespace(int argc, Scheme_Object *argv[]) return scheme_module_to_namespace(argv[0], env); } -static Scheme_Module *module_to_(const char *who, int argc, Scheme_Object *argv[]) +static Scheme_Module *module_to_(const char *who, int argc, Scheme_Object *argv[], int unknown_ok) { Scheme_Env *env; Scheme_Object *name; @@ -2764,7 +2767,7 @@ static Scheme_Module *module_to_(const char *who, int argc, Scheme_Object *argv[ m = (Scheme_Module *)scheme_hash_get(env->module_registry->loaded, name); } - if (!m) + if (!m && !unknown_ok) scheme_arg_mismatch(who, "unknown module in the current namespace: ", name); @@ -2776,11 +2779,31 @@ static Scheme_Object *module_to_lang_info(int argc, Scheme_Object *argv[]) { Scheme_Module *m; - m = module_to_("module->language-info", argc, argv); + m = module_to_("module->language-info", argc, argv, 0); return (m->lang_info ? m->lang_info : scheme_false); } +static Scheme_Object *module_is_predefined(int argc, Scheme_Object *argv[]) +{ + Scheme_Module *m; + + m = module_to_("module-predefined?", argc, argv, 1); + + return ((m && m->predefined) ? scheme_true : scheme_false); +} + +int scheme_is_predefined_module_p(Scheme_Object *name) +{ + Scheme_Object *a[1]; + Scheme_Module *m; + + a[0] = name; + m = module_to_("module-predefined?", 1, a, 1); + + return m && m->predefined; +} + static Scheme_Object *extract_compiled_imports(Scheme_Module *m) { Scheme_Object *l; @@ -2882,7 +2905,7 @@ static Scheme_Object *module_to_imports(int argc, Scheme_Object *argv[]) { Scheme_Module *m; - m = module_to_("module->imports", argc, argv); + m = module_to_("module->imports", argc, argv, 0); return extract_compiled_imports(m); } @@ -2891,7 +2914,7 @@ static Scheme_Object *module_to_exports(int argc, Scheme_Object *argv[]) { Scheme_Module *m; - m = module_to_("module->exports", argc, argv); + m = module_to_("module->exports", argc, argv, 0); return extract_compiled_exports(m); } @@ -4963,6 +4986,7 @@ Scheme_Env *scheme_primitive_module(Scheme_Object *name, Scheme_Env *for_env) m = MALLOC_ONE_TAGGED(Scheme_Module); m->so.type = scheme_module_type; + m->predefined = scheme_starting_up; env = scheme_new_module_env(for_env, m, 0); @@ -5657,6 +5681,7 @@ static Scheme_Object *do_module(Scheme_Object *form, Scheme_Comp_Env *env, m = MALLOC_ONE_TAGGED(Scheme_Module); m->so.type = scheme_module_type; + m->predefined = scheme_starting_up; /* must set before calling new_module_env: */ rmp = SCHEME_STX_VAL(nm); diff --git a/src/racket/src/place.c b/src/racket/src/place.c index f6c86c62a5..43d43c2d1b 100644 --- a/src/racket/src/place.c +++ b/src/racket/src/place.c @@ -24,7 +24,8 @@ static Scheme_Object* scheme_place_enabled(int argc, Scheme_Object *args[]); static Scheme_Object* scheme_place_shared(int argc, Scheme_Object *args[]); THREAD_LOCAL_DECL(int scheme_current_place_id); -ROSYM static Scheme_Object *quote_symbol; + +SHARED_OK static const char *embedded_load; #ifdef MZ_USE_PLACES @@ -37,6 +38,8 @@ ROSYM static Scheme_Object *quote_symbol; READ_ONLY static Scheme_Object *scheme_def_place_exit_proc; SHARED_OK static int scheme_places_enabled = 1; +ROSYM static Scheme_Object *quote_symbol; + static int id_counter; static mzrt_mutex *id_counter_mutex; @@ -112,6 +115,7 @@ static void register_traversers(void) { } /*========================================================================*/ /* initialization */ /*========================================================================*/ + void scheme_init_place(Scheme_Env *env) { Scheme_Env *plenv; @@ -157,10 +161,10 @@ void scheme_init_places_once() { mzrt_mutex_create(&id_counter_mutex); REGISTER_SO(scheme_def_place_exit_proc); scheme_def_place_exit_proc = scheme_make_prim_w_arity(def_place_exit_handler_proc, "default-place-exit-handler", 1, 1); -#endif REGISTER_SO(quote_symbol); quote_symbol = scheme_intern_symbol("quote"); +#endif } int scheme_get_place_id(void) @@ -172,6 +176,11 @@ int scheme_get_place_id(void) #endif } +void scheme_register_embedded_load(const char *s) +{ + embedded_load = s; +} + #ifdef MZ_USE_PLACES /************************************************************************/ @@ -316,8 +325,10 @@ Scheme_Object *scheme_place(int argc, Scheme_Object *args[]) { scheme_wrong_type("dynamic-place", "file-stream-output-port or #f", 4, argc, args); } - if (SCHEME_PAIRP(args[0]) && SAME_OBJ(SCHEME_CAR(args[0]), quote_symbol)) { - scheme_arg_mismatch("dynamic-place", "not only a filesystem module-path: ", args[0]); + if (SCHEME_PAIRP(args[0]) + && SAME_OBJ(SCHEME_CAR(args[0]), quote_symbol) + && !scheme_is_predefined_module_p(args[0])) { + scheme_arg_mismatch("dynamic-place", "not a filesystem or predefined module-path: ", args[0]); } so = places_deep_copy_to_master(args[0]); @@ -2199,7 +2210,33 @@ static Scheme_Object *def_place_exit_handler_proc(int argc, Scheme_Object *argv[ return scheme_void; /* Never get here */ } - + +static int do_embedded_load() +{ + if (embedded_load) { + Scheme_Thread * volatile p; + mz_jmp_buf * volatile save, newbuf; + volatile int rc; + + p = scheme_get_current_thread(); + save = p->error_buf; + p->error_buf = &newbuf; + + if (!scheme_setjmp(newbuf)) { + scheme_embedded_load(embedded_load, 1); + rc = 1; + } else { + rc = 0; + } + + p->error_buf = save; + + return rc; + } + + return 1; +} + static void *place_start_proc_after_stack(void *data_arg, void *stack_base) { Place_Start_Data *place_data; Scheme_Place_Object *place_obj; @@ -2285,10 +2322,9 @@ static void *place_start_proc_after_stack(void *data_arg, void *stack_base) { scheme_set_root_param(MZCONFIG_EXIT_HANDLER, scheme_def_place_exit_proc); - scheme_log(NULL, SCHEME_LOG_DEBUG, 0, "place %d: started", scheme_current_place_id); - { + if (do_embedded_load()) { Scheme_Thread * volatile p; mz_jmp_buf * volatile saved_error_buf; mz_jmp_buf new_error_buf; @@ -2313,6 +2349,8 @@ static void *place_start_proc_after_stack(void *data_arg, void *stack_base) { p->error_buf = saved_error_buf; place_set_result(rc); + } else { + place_set_result(scheme_make_integer(1)); } scheme_log(NULL, SCHEME_LOG_DEBUG, 0, "place %d: exiting", scheme_current_place_id); diff --git a/src/racket/src/schminc.h b/src/racket/src/schminc.h index 951c37c7fa..1c0515a881 100644 --- a/src/racket/src/schminc.h +++ b/src/racket/src/schminc.h @@ -13,7 +13,7 @@ #define USE_COMPILED_STARTUP 1 -#define EXPECTED_PRIM_COUNT 1039 +#define EXPECTED_PRIM_COUNT 1040 #define EXPECTED_UNSAFE_COUNT 78 #define EXPECTED_FLFXNUM_COUNT 68 #define EXPECTED_FUTURES_COUNT 11 diff --git a/src/racket/src/schpriv.h b/src/racket/src/schpriv.h index 2e90e060da..266f26277b 100644 --- a/src/racket/src/schpriv.h +++ b/src/racket/src/schpriv.h @@ -179,7 +179,7 @@ void scheme_clear_ephemerons(void); /* initialization */ /*========================================================================*/ -extern int scheme_starting_up; +THREAD_LOCAL_DECL(extern int scheme_starting_up); void scheme_init_finalization(void); void scheme_init_portable_case(void); @@ -1096,6 +1096,8 @@ void scheme_populate_pt_ht(struct Scheme_Module_Phase_Exports * pt); Scheme_Object *scheme_transfer_srcloc(Scheme_Object *to, Scheme_Object *from); +int scheme_is_predefined_module_p(Scheme_Object *name); + /*========================================================================*/ /* syntax run-time structures */ /*========================================================================*/ @@ -2994,6 +2996,7 @@ typedef struct Scheme_Module_Export_Info { typedef struct Scheme_Module { Scheme_Object so; /* scheme_module_type */ + short predefined; Scheme_Object *code_key; diff --git a/src/racket/src/schvers.h b/src/racket/src/schvers.h index 370ba8153c..b35ffebb89 100644 --- a/src/racket/src/schvers.h +++ b/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "5.2.0.2" +#define MZSCHEME_VERSION "5.2.0.3" #define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_Y 2 #define MZSCHEME_VERSION_Z 0 -#define MZSCHEME_VERSION_W 2 +#define MZSCHEME_VERSION_W 3 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)