diff --git a/collects/rnrs/arithmetic/bitwise-6.ss b/collects/rnrs/arithmetic/bitwise-6.ss index 788a2a5396..4c45015ad1 100644 --- a/collects/rnrs/arithmetic/bitwise-6.ss +++ b/collects/rnrs/arithmetic/bitwise-6.ss @@ -7,6 +7,7 @@ bitwise-if (rename-out [integer-length bitwise-length]) bitwise-first-bit-set + bitwise-bit-set? (rename-out [arithmetic-shift bitwise-arithmetic-shift]) bitwise-arithmetic-shift-left bitwise-arithmetic-shift-right @@ -17,6 +18,15 @@ (bitwise-ior (bitwise-and a b) (bitwise-and (bitwise-not a) c))) +(define (bitwise-bit-count i) + (if (negative? i) + (bitwise-not (bitwise-bit-count (bitwise-not i))) + (let loop ([i i][cnt 0]) + (if (zero? i) + cnt + (loop (arithmetic-shift i -1) + (+ cnt (if (eq? 1 (bitwise-and i 1)) 1 0))))))) + (define (bitwise-first-bit-set b) (if (zero? b) -1 @@ -25,14 +35,31 @@ (loop (arithmetic-shift b -1) (add1 pos)) pos)))) +(define (bitwise-bit-set? b n) + (eq? 1 (bitwise-and (arithmetic-shift b (- n)) 1))) + +(define (bitwise-copy-bit b n bit) + (unless (or (eq? bit 1) + (eq? bit 0)) + (raise-type-error 'bitwise-copy-bit "0 or 1" bit)) + (if (eq? bit 1) + (bitwise-ior b (arithmetic-shift 1 n)) + (bitwise-xor b (arithmetic-shift 1 n)))) + +(define (bitwise-bit-field b start end) + (bitwise-and (arithmetic-shift b (- start)) + (sub1 (arithmetic-shift 1 (- end start))))) + +(define (bitwise-copy-bit-field to start end from) + (let* ([mask1 (arithmetic-shift -1 start)] + [mask2 (bitwise-not (arithmetic-shift -1 end))] + [mask (bitwise-and mask1 mask2)]) + (bitwise-if mask + (arithmetic-shift from start) + to))) (define (bitwise-arithmetic-shift-left v s) (arithmetic-shift v s)) (define (bitwise-arithmetic-shift-right v s) (arithmetic-shift v (- s))) -(define (bitwise-copy-bit a b c) - (let ([mask (bitwise-arithmetic-shift-left 1 b)]) - (bitwise-if mask - (bitwise-arithmetic-shift-left c b) - a))) diff --git a/collects/rnrs/arithmetic/fixnums-6.ss b/collects/rnrs/arithmetic/fixnums-6.ss index 931c216329..d46ec40dbd 100644 --- a/collects/rnrs/arithmetic/fixnums-6.ss +++ b/collects/rnrs/arithmetic/fixnums-6.ss @@ -13,6 +13,7 @@ fixnum-width least-fixnum greatest-fixnum) +;; Many other provides from macros below (define (fixnum-width) 30) (define (least-fixnum) -1073741824) @@ -101,7 +102,10 @@ ([(a) (t1)]))] [(_ orig fx (a b) check) (define-an-fx orig fx check - ([(a b) (t1 t2)]))])) + ([(a b) (t1 t2)]))] + [(_ orig fx (a b c) check) + (define-an-fx orig fx check + ([(a b c) (t1 t2 t3)]))])) (define-fx = fx=? (a b c ...) nocheck) (define-fx > fx>? (a b c ...) nocheck) @@ -129,14 +133,23 @@ (define-fx div0 fxdiv0 (a b) nocheck) (define-fx mod0 fxmod0 (a b) nocheck) -(define (fx+/carry a b c) - '...) +(define-syntax-rule (define-carry fx/carry (a b c) expr) + (begin + (provide fx/carry) + (define (fx/carry a b c) + (unless (fixnum? a) + (raise-type-error 'fx/carry "fixnum" a)) + (unless (fixnum? a) + (raise-type-error 'fx/carry "fixnum" b)) + (unless (fixnum? a) + (raise-type-error 'fx/carry "fixnum" b)) + (let-values ([(d m) (div0-and-mod0 (+ a b c) + (arithmetic-shift 1 (fixnum-width)))]) + (values m d))))) -(define (fx-/carry a b c) - '...) - -(define (fx*/carry a b c) - '...) +(define-carry fx+/carry (a b c) (+ a b c)) +(define-carry fx-/carry (a b c) (- a b c)) +(define-carry fx*/carry (a b c) (* (+ a b) c)) (define-fx bitwise-not fxnot (a) nocheck) (define-fx bitwise-and fxand (a b ...) nocheck) @@ -145,9 +158,12 @@ (define-fx bitwise-first-bit-set fxfirst-bit-set (a) nocheck) (define-fx bitwise-copy-bit fxcopy-bit (a) nocheck) -(define (fxif a b c) - '... - (bitwise-if a b c)) +(define-syntax-rule (fixnum-bitwise-if a b c) + (bitwise-ior (bitwise-and a b) + (bitwise-and (bitwise-not a) c))) +(define-fx fixnum-bitwise-if fxif (a b c) nocheck) + + (define-syntax-rule (define-shifter fxarithmetic-shift r6rs:fxarithmetic-shift lower-bound bounds adjust) diff --git a/collects/rnrs/io/ports-6.ss b/collects/rnrs/io/ports-6.ss index 98042e111d..7341ab721d 100644 --- a/collects/rnrs/io/ports-6.ss +++ b/collects/rnrs/io/ports-6.ss @@ -830,7 +830,7 @@ (raise-type-error 'put-u8 "textual port" port)) (write-char ch port)) -(define (put-string port str [start 0] [count (- (bytes-length bytes) start)]) +(define (put-string port str [start 0] [count (- (string-length str) start)]) (unless (textual-port? port) (raise-type-error 'put-string "textual port" port)) (write-string (substring str start (+ start count)) port)) diff --git a/collects/scheme/private/reqprov.ss b/collects/scheme/private/reqprov.ss index e06961467b..2d33747afd 100644 --- a/collects/scheme/private/reqprov.ss +++ b/collects/scheme/private/reqprov.ss @@ -10,10 +10,10 @@ (#%provide lib file planet for-syntax for-template for-label for-meta require - only-in rename-in prefix-in except-in only-meta-in + only-in rename-in prefix-in except-in combine-in only-meta-in provide all-defined-out all-from-out - rename-out except-out prefix-out struct-out + rename-out except-out prefix-out struct-out combine-out protect-out) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -434,6 +434,19 @@ imports) sources))])))) + (define-syntax combine-in + (make-require-transformer + (lambda (stx) + (syntax-case stx () + [(_ in ...) + (let ([subs + (map (lambda (in) + (let-values ([(imports sources) (expand-import in)]) + (cons imports sources))) + (syntax->list #'(in ...)))]) + (values (apply append (map car subs)) + (apply append (map cdr subs))))])))) + (define-syntax only-meta-in (make-require-transformer (lambda (stx) @@ -886,6 +899,17 @@ stx id))))])))) + (define-syntax combine-out + (make-provide-transformer + (lambda (stx modes) + (syntax-case stx () + [(_ out ...) + (apply + append + (map (lambda (out) + (expand-export out modes)) + (syntax->list #'(out ...))))])))) + (define-syntax protect-out (make-provide-transformer (lambda (stx modes) diff --git a/collects/scheme/provide-syntax.ss b/collects/scheme/provide-syntax.ss new file mode 100644 index 0000000000..3499bc1f6f --- /dev/null +++ b/collects/scheme/provide-syntax.ss @@ -0,0 +1,21 @@ +#lang scheme/base + +(provide define-provide-syntax ) + +(require (for-syntax scheme/base + scheme/provide-transform)) + +(define-for-syntax (make-provide-macro cert proc) + (make-provide-transformer + (lambda (stx modes) + (let* ([i (make-syntax-introducer)] + [new-stx (cert (i (proc (i stx))) i)]) + (expand-export new-stx modes))))) + +(define-syntax (define-provide-syntax stx) + (syntax-case stx () + [(_ id proc) + (symbol? (syntax-e #'id)) + #'(define-syntax id + (let ([cert (syntax-local-provide-certifier)]) + (make-provide-macro cert proc)))])) diff --git a/collects/scheme/provide-transform.ss b/collects/scheme/provide-transform.ss index 304d3a750a..d53c2f22f0 100644 --- a/collects/scheme/provide-transform.ss +++ b/collects/scheme/provide-transform.ss @@ -7,7 +7,7 @@ "private/small-scheme.ss" "private/define.ss") - (#%provide expand-export + (#%provide expand-export syntax-local-provide-certifier make-provide-transformer prop:provide-transformer provide-transformer? ;; the export struct type: export struct:export make-export export? @@ -35,6 +35,18 @@ (define (make-provide-transformer proc) (make-pt proc)) + (define provide-cert-key (gensym 'prov)) + + (define (syntax-local-provide-certifier) + (let ([c (syntax-local-certifier)]) + (case-lambda + [(v) + (c v provide-cert-key)] + [(v mark) + (c v provide-cert-key mark)]))) + + (define current-recertify (make-parameter (lambda (x) x))) + ;; expand-export : stx -> (listof export) (define (expand-export stx modes) (if (identifier? stx) @@ -48,20 +60,26 @@ (syntax-case stx () [(id . rest) (identifier? #'id) - (let ([t (syntax-local-value #'id (lambda () #f))]) - (if (provide-transformer? t) - (let ([v (((provide-transformer-get-proc t) t) stx modes)]) - (unless (and (list? v) - (andmap export? v)) - (raise-syntax-error - #f - "result from provide transformer is not a list of exports" - stx)) - v) - (raise-syntax-error - #f - "not a provide sub-form" - stx)))] + (parameterize ([current-recertify (let ([prev (current-recertify)]) + (lambda (sub) + (syntax-recertify (prev sub) + stx + (current-code-inspector) + provide-cert-key)))]) + (let ([t (syntax-local-value ((current-recertify) #'id) (lambda () #f))]) + (if (provide-transformer? t) + (let ([v (((provide-transformer-get-proc t) t) stx modes)]) + (unless (and (list? v) + (andmap export? v)) + (raise-syntax-error + #f + "result from provide transformer is not a list of exports" + stx)) + v) + (raise-syntax-error + #f + "not a provide sub-form" + stx))))] [_ (raise-syntax-error #f diff --git a/collects/scheme/require-syntax.ss b/collects/scheme/require-syntax.ss new file mode 100644 index 0000000000..723dbf1590 --- /dev/null +++ b/collects/scheme/require-syntax.ss @@ -0,0 +1,21 @@ +#lang scheme/base + +(provide define-require-syntax) + +(require (for-syntax scheme/base + scheme/require-transform)) + +(define-for-syntax (make-require-macro cert proc) + (make-require-transformer + (lambda (stx) + (let* ([i (make-syntax-introducer)] + [new-stx (cert (i (proc (i stx))) i)]) + (expand-import new-stx))))) + +(define-syntax (define-require-syntax stx) + (syntax-case stx () + [(_ id proc) + (symbol? (syntax-e #'id)) + #'(define-syntax id + (let ([cert (syntax-local-require-certifier)]) + (make-require-macro cert proc)))])) diff --git a/collects/scheme/require-transform.ss b/collects/scheme/require-transform.ss index 2e474399d6..7f41dde845 100644 --- a/collects/scheme/require-transform.ss +++ b/collects/scheme/require-transform.ss @@ -6,9 +6,10 @@ "private/more-scheme.ss" "private/small-scheme.ss" "private/define.ss" - (for-template (only '#%kernel quote))) + (for-template (only '#%kernel quote)) + (for-syntax '#%kernel "private/stxcase-scheme.ss")) - (#%provide expand-import + (#%provide expand-import syntax-local-require-certifier make-require-transformer prop:require-transformer require-transformer? ;; the import struct type: import struct:import make-import import? @@ -16,7 +17,7 @@ ;; the import-source struct type: import-source struct:import-source make-import-source import-source? import-source-mod-path-stx import-source-mode) - + (define-struct* import (local-id src-sym src-mod-path mode req-mode orig-mode orig-stx) #:guard (lambda (i s path mode req-mode orig-mode stx info) (unless (identifier? i) @@ -62,7 +63,19 @@ (define (make-require-transformer proc) (make-rt proc)) - + + (define require-cert-key (gensym 'req)) + + (define (syntax-local-require-certifier) + (let ([c (syntax-local-certifier)]) + (case-lambda + [(v) + (c v require-cert-key)] + [(v mark) + (c v require-cert-key mark)]))) + + (define current-recertify (make-parameter (lambda (x) x))) + ;; expand-import : stx bool -> (listof import) (define (expand-import stx) (syntax-case stx () @@ -103,37 +116,43 @@ (list (make-import-source #'simple 0)))))] [(id . rest) (identifier? #'id) - (let ([t (syntax-local-value #'id (lambda () #f))]) - (if (require-transformer? t) - (call-with-values - (lambda () - (((require-transformer-get-proc t) t) stx)) - (case-lambda - [(v mods) - (unless (and (list? v) - (andmap import? v)) + (parameterize ([current-recertify (let ([prev (current-recertify)]) + (lambda (sub) + (syntax-recertify (prev sub) + stx + (current-code-inspector) + require-cert-key)))]) + (let ([t (syntax-local-value ((current-recertify) #'id) (lambda () #f))]) + (if (require-transformer? t) + (call-with-values + (lambda () + (((require-transformer-get-proc t) t) stx)) + (case-lambda + [(v mods) + (unless (and (list? v) + (andmap import? v)) + (raise-syntax-error + #f + "first result from require transformer is not a list of imports" + stx)) + (unless (and (list? mods) + (andmap import-source? mods)) + (raise-syntax-error + #f + "second result from require transformer is not a list of import-sources" + stx)) + (values v mods)] + [args (raise-syntax-error - #f - "first result from require transformer is not a list of imports" - stx)) - (unless (and (list? mods) - (andmap import-source? mods)) - (raise-syntax-error - #f - "second result from require transformer is not a list of import-sources" - stx)) - (values v mods)] - [args - (raise-syntax-error #f (format "require transformer did not produced ~a result~s instead of 2" (length args) (if (= 1 (length args)) "" "s")) stx)])) - (raise-syntax-error - #f - "not a require sub-form" - stx)))] + (raise-syntax-error + #f + "not a require sub-form" + stx))))] [_ (raise-syntax-error #f diff --git a/collects/scribblings/reference/stx-trans.scrbl b/collects/scribblings/reference/stx-trans.scrbl index 18f78fa6e2..dba87b7fee 100644 --- a/collects/scribblings/reference/stx-trans.scrbl +++ b/collects/scribblings/reference/stx-trans.scrbl @@ -2,7 +2,9 @@ @(require (except-in "mz.ss" import export) (for-syntax scheme/base) (for-label scheme/require-transform - scheme/provide-transform)) + scheme/require-syntax + scheme/provide-transform + scheme/provide-syntax)) @(define stx-eval (make-base-eval)) @interaction-eval[#:eval stx-eval (require (for-syntax scheme/base))] @@ -522,6 +524,8 @@ If the derived form contains a sub-form that is a transform the sub-@scheme[_require-spec] to lists of imports and import sources. +See also @scheme[define-require-syntax], which supports macro-style +@scheme[require] transformers. @defproc[(expand-import [stx syntax?]) (values (listof import?) @@ -607,6 +611,14 @@ instantiated or visited even if no binding is imported into a module. }} +@defproc[(syntax-local-require-certifier) (syntax? . -> . syntax?)]{ + +Like @scheme[syntax-local-certifier], but to certify @tech{syntax +objects} that correspond to @scheme[require] sub-forms, so that +@scheme[expand-import] can deconstruct the @tech{syntax object} as +necessary to expand it.} + + @; ---------------------------------------------------------------------- @section[#:tag "provide-trans"]{@scheme[provide] Transformers} @@ -627,6 +639,9 @@ If the derived form contains a sub-form that is a @scheme[_provide-spec], then it can call @scheme[expand-export] to transform the sub-@scheme[_provide-spec] to a lists of exports. +See also @scheme[define-provide-syntax], which supports macro-style +@scheme[provide] transformers. + @defproc[(expand-export [stx syntax?] [modes (listof (or/c exact-integer? false/c))]) (listof export?)]{ @@ -686,3 +701,11 @@ A structure representing a single imported identifier: exporting module.} }} + + +@defproc[(syntax-local-provide-certifier) (syntax? . -> . syntax?)]{ + +Like @scheme[syntax-local-certifier], but to certify @tech{syntax +objects} that correspond to @scheme[provide] sub-forms, so that +@scheme[expand-export] can deconstruct the @tech{syntax object} as +necessary to expand it.} diff --git a/collects/scribblings/reference/syntax.scrbl b/collects/scribblings/reference/syntax.scrbl index 2327aae60b..6f45e43ddb 100644 --- a/collects/scribblings/reference/syntax.scrbl +++ b/collects/scribblings/reference/syntax.scrbl @@ -1,5 +1,11 @@ #lang scribble/doc -@(require "mz.ss") +@(require "mz.ss" + (for-label (only-in scheme/require-transform + make-require-transformer) + scheme/require-syntax + (only-in scheme/provide-transform + make-provide-transformer) + scheme/provide-syntax)) @(define cvt (schemefont "CVT")) @@ -845,6 +851,38 @@ Like @scheme[define-for-syntax], but @scheme[expr] must produce as many value as supplied @scheme[id]s, and all of the @scheme[id]s are bound (at @tech{phase level} 1).} +@; ---------------------------------------------------------------------- + +@subsection[#:tag "require-syntax"]{@scheme[require] Macros} + +@note-lib-only[scheme/require-syntax] + +@defform[(define-require-syntax id proc-expr)]{ + +Like @scheme[define-syntax], but for a @scheme[require] sub-form. The +@scheme[proc-expr] must produce a procedure that accepts and returns a +syntax object representing a @scheme[require] sub-form. + +This form expands to @scheme[define-syntax] with a use of +@scheme[make-require-transformer]; see @secref["require-trans"] for +more information.} + +@; ---------------------------------------------------------------------- + +@subsection[#:tag "provide-syntax"]{@scheme[provide] Macros} + +@note-lib-only[scheme/provide-syntax] + +@defform[(define-provide-syntax id proc-expr)]{ + +Like @scheme[define-syntax], but for a @scheme[provide] sub-form. The +@scheme[proc-expr] must produce a procedure that accepts and returns a +syntax object representing a @scheme[provide] sub-form. + +This form expands to @scheme[define-syntax] with a use of +@scheme[make-provide-transformer]; see @secref["provide-trans"] for +more information.} + @;------------------------------------------------------------------------ @section[#:tag "begin"]{Sequencing: @scheme[begin], @scheme[begin0], and @scheme[begin-for-syntax]} @@ -1238,14 +1276,15 @@ Legal only in a @tech{module begin context}, and handled by the @guideintro["module-require"]{@scheme[require]} @defform/subs[#:literals (only-in prefix-in except-in rename-in lib file planet + - = - for-syntax for-template for-label for-meta only-meta-in quote) + for-syntax for-template for-label for-meta only-meta-in combine-in quote) (require require-spec ...) ([require-spec module-path (only-in require-spec id-maybe-renamed ...) (except-in require-spec id ...) (prefix-in prefix-id require-spec) (rename-in require-spec [orig-id bind-id] ...) - (only-meta-in require-spec ...) + (combine-in require-spec ...) + (only-meta-in phase-level require-spec ...) (for-syntax require-spec ...) (for-template require-spec ...) (for-label require-spec ...) @@ -1284,7 +1323,7 @@ identifier. Each identifier also binds at a particular @tech{phase level}. The syntax of @scheme[require-spec] can be extended via -@scheme[define-syntax] with @scheme[make-require-transformer], but the +@scheme[define-require-syntax], but the pre-defined forms are as follows. @specsubform[module-path]{ Imports all exported bindings from the @@ -1319,6 +1358,9 @@ pre-defined forms are as follows. @scheme[orig-id] is not in the set that @scheme[require-spec] describes, a syntax error is reported.} + @defsubform[(combine-in require-spec ...)]{ + The union of the @scheme[require-spec]s.} + @defsubform[(only-meta-in phase-level require-spec ...)]{ Like the combination of @scheme[require-spec]s, but removing any binding that is not for @scheme[phase-level], where @scheme[#f] for @@ -1343,8 +1385,8 @@ pre-defined forms are as follows. (for-label require-spec ...)]{Same as @scheme[(for-meta #f require-spec ...)].} - @specsubform[derived-require-spec]{See @secref["require-trans"] for - information on expanding the set of @scheme[require-spec] forms.} + @specsubform[derived-require-spec]{See @scheme[define-require-syntax] + for information on expanding the set of @scheme[require-spec] forms.} @guideintro["module-paths"]{module paths} @@ -1437,7 +1479,7 @@ an identifier can be either imported or defined for a given @guideintro["module-provide"]{@scheme[provide]} @defform/subs[#:literals (protect-out all-defined-out all-from-out rename-out - except-out prefix-out struct-out for-meta + except-out prefix-out struct-out for-meta combine-out for-syntax for-label for-template) (provide provide-spec ...) ([provide-spec id @@ -1447,6 +1489,7 @@ an identifier can be either imported or defined for a given (except-out provide-spec id ...) (prefix-out prefix-id provide-spec) (struct-out id) + (combine-out provide-spec ...) (protect-out provide-spec ...) (for-meta phase-level provide-spec ...) (for-syntax provide-spec ...) @@ -1465,8 +1508,8 @@ within the module. Also, each export is drawn from a particular @tech{phase level} and exported at the same @tech{phase level}. The syntax of @scheme[provide-spec] can be extended via -@scheme[define-syntax] with @scheme[make-provide-transformer], but the -pre-defined forms are as follows. +@scheme[define-provide-syntax], but the pre-defined forms are as +follows. @specsubform[id]{ Exports @scheme[id], which must be @tech{bound} within the module (i.e., either defined or imported) at the relevant @@ -1524,6 +1567,9 @@ pre-defined forms are as follows. accessor and mutator bindings of the super-type are @italic{not} included by @scheme[struct-out] for export.} + @defsubform[(combine-out provide-spec ...)]{ The union of the + @scheme[provide-spec]s.} + @defsubform[(protect-out provide-spec ...)]{ Like the union of the @scheme[provide-spec]s, except that the exports are protected; see @secref["modprotect"]. The @scheme[provide-spec] must specify only @@ -1551,8 +1597,8 @@ pre-defined forms are as follows. (for-label provide-spec ...)]{Same as @scheme[(for-meta #f provide-spec ...)].} - @specsubform[derived-provide-spec]{See @secref["provide-trans"] for - information on expanding the set of @scheme[provide-spec] forms.} + @specsubform[derived-provide-spec]{See @scheme[define-provide-syntax] + for information on expanding the set of @scheme[provide-spec] forms.} Each export specified within a module must have a distinct symbolic export name, though the same binding can be specified with the diff --git a/src/mzscheme/src/cstartup.inc b/src/mzscheme/src/cstartup.inc index e71bb53616..70e4e8a1e0 100644 --- a/src/mzscheme/src/cstartup.inc +++ b/src/mzscheme/src/cstartup.inc @@ -1,111 +1,112 @@ { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,51,50,0,0,0,1,0,0,6,0, -9,0,22,0,27,0,31,0,36,0,41,0,45,0,52,0,55,0,62,0,69, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,52,50,0,0,0,1,0,0,6,0, +9,0,14,0,18,0,23,0,28,0,32,0,39,0,52,0,55,0,62,0,69, 0,78,0,84,0,98,0,112,0,115,0,119,0,121,0,132,0,134,0,148,0, -155,0,177,0,179,0,193,0,250,0,17,1,23,1,29,1,39,1,56,1,95, -1,134,1,203,1,248,1,80,2,125,2,130,2,150,2,40,3,60,3,110,3, -176,3,61,4,219,4,6,5,17,5,96,5,0,0,117,7,0,0,65,98,101, -103,105,110,29,11,11,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,64,99,111,110,100,63,97,110,100, -66,108,101,116,114,101,99,62,111,114,66,100,101,102,105,110,101,66,117,110,108, +155,0,177,0,179,0,193,0,253,0,23,1,32,1,41,1,51,1,68,1,107, +1,146,1,215,1,4,2,92,2,137,2,142,2,162,2,53,3,73,3,124,3, +190,3,75,4,233,4,20,5,31,5,110,5,0,0,131,7,0,0,65,98,101, +103,105,110,29,11,11,64,108,101,116,42,63,108,101,116,64,119,104,101,110,64, +99,111,110,100,63,97,110,100,66,108,101,116,114,101,99,72,112,97,114,97,109, +101,116,101,114,105,122,101,62,111,114,66,100,101,102,105,110,101,66,117,110,108, 101,115,115,68,104,101,114,101,45,115,116,120,65,113,117,111,116,101,29,94,2, 14,68,35,37,107,101,114,110,101,108,11,29,94,2,14,68,35,37,112,97,114, 97,109,122,11,62,105,102,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,10,34,11,94,159,2,16,34,34,159,2,15,34,34,16,20,2,10,2, -2,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,11,2,2,2,12,2,2,96,35,11,93,159, -2,15,34,35,16,2,2,13,161,2,2,35,2,13,2,2,2,13,96,10,11, -11,16,0,96,10,36,11,16,0,13,16,4,34,29,11,11,2,2,11,18,98, -64,104,101,114,101,8,31,8,30,8,29,8,28,8,27,27,248,22,178,3,23, -196,1,249,22,171,3,80,158,37,34,251,22,73,2,17,248,22,88,23,200,2, -12,249,22,63,2,1,248,22,90,23,202,1,27,248,22,178,3,23,196,1,249, -22,171,3,80,158,37,34,251,22,73,2,17,248,22,88,23,200,2,249,22,63, -2,1,248,22,90,23,202,1,12,27,248,22,65,248,22,178,3,23,197,1,28, +115,98,10,34,11,8,143,183,94,159,2,16,34,34,159,2,15,34,34,16,20, +2,10,2,2,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2, +7,2,2,2,9,2,2,2,8,2,2,2,11,2,2,2,12,2,2,97,35, +11,8,143,183,93,159,2,15,34,35,16,2,2,13,161,2,2,35,2,13,2, +2,2,13,97,10,11,11,8,143,183,16,0,97,10,36,11,8,143,183,16,0, +13,16,4,34,29,11,11,2,2,11,18,98,64,104,101,114,101,8,31,8,30, +8,29,8,28,8,27,27,248,22,178,3,23,196,1,249,22,171,3,80,158,37, +34,251,22,73,2,17,248,22,88,23,200,2,12,249,22,63,2,1,248,22,90, +23,202,1,27,248,22,178,3,23,196,1,249,22,171,3,80,158,37,34,251,22, +73,2,17,248,22,88,23,200,2,249,22,63,2,1,248,22,90,23,202,1,12, +27,248,22,65,248,22,178,3,23,197,1,28,248,22,71,23,194,2,20,15,159, +35,34,35,28,248,22,71,248,22,65,23,195,2,248,22,64,193,249,22,171,3, +80,158,37,34,251,22,73,2,17,248,22,64,23,200,2,249,22,63,2,7,248, +22,65,23,202,1,11,18,100,10,8,31,8,30,8,29,8,28,8,27,16,4, +11,11,2,18,3,1,7,101,110,118,55,50,49,49,16,4,11,11,2,19,3, +1,7,101,110,118,55,50,49,50,27,248,22,65,248,22,178,3,23,197,1,28, 248,22,71,23,194,2,20,15,159,35,34,35,28,248,22,71,248,22,65,23,195, -2,248,22,64,193,249,22,171,3,80,158,37,34,251,22,73,2,17,248,22,64, -23,200,2,249,22,63,2,8,248,22,65,23,202,1,11,18,100,10,8,31,8, -30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,54,57, -56,55,16,4,11,11,2,19,3,1,7,101,110,118,54,57,56,56,27,248,22, -65,248,22,178,3,23,197,1,28,248,22,71,23,194,2,20,15,159,35,34,35, -28,248,22,71,248,22,65,23,195,2,248,22,64,193,249,22,171,3,80,158,37, -34,250,22,73,2,20,248,22,73,249,22,73,248,22,73,2,21,248,22,64,23, -202,2,251,22,73,2,17,2,21,2,21,249,22,63,2,10,248,22,65,23,205, -1,18,100,11,8,31,8,30,8,29,8,28,8,27,16,4,11,11,2,18,3, -1,7,101,110,118,54,57,57,48,16,4,11,11,2,19,3,1,7,101,110,118, -54,57,57,49,248,22,178,3,193,27,248,22,178,3,194,249,22,63,248,22,73, -248,22,64,196,248,22,65,195,27,248,22,65,248,22,178,3,23,197,1,249,22, -171,3,80,158,37,34,28,248,22,51,248,22,172,3,248,22,64,23,198,2,27, -249,22,2,32,0,89,162,8,44,35,41,9,222,33,39,248,22,178,3,248,22, -88,23,200,2,250,22,73,2,22,248,22,73,249,22,73,248,22,73,248,22,64, -23,204,2,250,22,74,2,23,249,22,2,22,64,23,204,2,248,22,90,23,206, -2,249,22,63,248,22,64,23,202,1,249,22,2,22,88,23,200,1,250,22,74, -2,20,249,22,2,32,0,89,162,42,35,45,9,222,33,40,248,22,178,3,248, -22,64,201,248,22,65,198,27,248,22,178,3,194,249,22,63,248,22,73,248,22, -64,196,248,22,65,195,27,248,22,65,248,22,178,3,23,197,1,249,22,171,3, -80,158,37,34,250,22,74,2,22,249,22,2,32,0,89,162,42,35,45,9,222, -33,42,248,22,178,3,248,22,64,201,248,22,65,198,27,248,22,65,248,22,178, -3,196,27,248,22,178,3,248,22,64,195,249,22,171,3,80,158,38,34,28,248, -22,71,195,250,22,74,2,20,9,248,22,65,199,250,22,73,2,5,248,22,73, -248,22,64,199,250,22,74,2,4,248,22,65,201,248,22,65,202,27,248,22,65, -248,22,178,3,23,197,1,27,249,22,1,22,77,249,22,2,22,178,3,248,22, -178,3,248,22,64,199,249,22,171,3,80,158,38,34,251,22,73,1,22,119,105, -116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,2, -24,250,22,74,1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101, -114,105,122,97,116,105,111,110,21,95,1,27,99,111,110,116,105,110,117,97,116, -105,111,110,45,109,97,114,107,45,115,101,116,45,102,105,114,115,116,11,2,24, -201,250,22,74,2,20,9,248,22,65,203,27,248,22,65,248,22,178,3,23,197, -1,28,248,22,71,23,194,2,20,15,159,35,34,35,249,22,171,3,80,158,37, -34,27,248,22,178,3,248,22,64,23,198,2,28,249,22,138,8,62,61,62,248, -22,172,3,248,22,88,23,197,2,250,22,73,2,20,248,22,73,249,22,73,21, -93,2,25,248,22,64,199,250,22,74,2,7,249,22,73,2,25,249,22,73,248, -22,97,203,2,25,248,22,65,202,251,22,73,2,17,28,249,22,138,8,248,22, -172,3,248,22,64,23,201,2,64,101,108,115,101,10,248,22,64,23,198,2,250, -22,74,2,20,9,248,22,65,23,201,1,249,22,63,2,7,248,22,65,23,203, -1,99,8,31,8,30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,7, -101,110,118,55,48,49,51,16,4,11,11,2,19,3,1,7,101,110,118,55,48, -49,52,18,158,94,10,64,118,111,105,100,8,47,27,248,22,65,248,22,178,3, -196,249,22,171,3,80,158,37,34,28,248,22,51,248,22,172,3,248,22,64,197, -250,22,73,2,26,248,22,73,248,22,64,199,248,22,88,198,27,248,22,172,3, -248,22,64,197,250,22,73,2,26,248,22,73,248,22,64,197,250,22,74,2,23, -248,22,65,199,248,22,65,202,159,34,20,103,159,34,16,1,20,24,2,1,16, -0,83,158,40,20,100,137,69,35,37,109,105,110,45,115,116,120,2,2,10,11, -10,34,80,158,34,34,20,103,159,34,16,0,16,0,11,11,16,0,34,11,37, -34,11,16,10,9,9,9,9,9,9,9,9,9,9,16,10,2,3,2,4,2, -5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,16,10,11,11,11,11, -11,11,11,11,11,11,16,10,2,3,2,4,2,5,2,6,2,7,2,8,2, -9,2,10,2,11,2,12,34,44,35,11,11,16,0,16,0,16,0,34,34,11, -11,11,16,0,16,0,16,0,34,34,16,11,16,5,93,2,13,20,15,159,34, -34,34,34,20,103,159,34,16,0,16,1,33,32,10,16,5,93,2,12,89,162, -8,44,35,51,9,223,0,33,33,34,20,103,159,34,16,1,20,25,159,35,2, -2,2,13,16,0,11,16,5,93,2,6,89,162,8,44,35,51,9,223,0,33, -34,34,20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,5, -93,2,8,89,162,8,44,35,51,9,223,0,33,35,34,20,103,159,34,16,1, -20,25,159,35,2,2,2,13,16,1,33,36,11,16,5,93,2,10,89,162,8, -44,35,54,9,223,0,33,37,34,20,103,159,34,16,1,20,25,159,35,2,2, -2,13,16,1,33,38,11,16,5,93,2,5,89,162,8,44,35,56,9,223,0, -33,41,34,20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16, -5,93,2,9,89,162,8,44,35,51,9,223,0,33,43,34,20,103,159,34,16, -1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,4,89,162,8,44, -35,52,9,223,0,33,44,34,20,103,159,34,16,1,20,25,159,35,2,2,2, -13,16,0,11,16,5,93,2,3,89,162,8,44,35,53,9,223,0,33,45,34, -20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2, -7,89,162,8,44,35,56,9,223,0,33,46,34,20,103,159,34,16,1,20,25, -159,35,2,2,2,13,16,1,33,48,11,16,5,93,2,11,89,162,8,44,35, -52,9,223,0,33,49,34,20,103,159,34,16,1,20,25,159,35,2,2,2,13, -16,0,11,16,0,94,2,15,2,16,93,2,15,9,9,34,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2032); +2,248,22,64,193,249,22,171,3,80,158,37,34,250,22,73,2,20,248,22,73, +249,22,73,248,22,73,2,21,248,22,64,23,202,2,251,22,73,2,17,2,21, +2,21,249,22,63,2,10,248,22,65,23,205,1,18,100,11,8,31,8,30,8, +29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,55,50,49,52, +16,4,11,11,2,19,3,1,7,101,110,118,55,50,49,53,248,22,178,3,193, +27,248,22,178,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27, +248,22,65,248,22,178,3,23,197,1,249,22,171,3,80,158,37,34,28,248,22, +51,248,22,172,3,248,22,64,23,198,2,27,249,22,2,32,0,89,162,8,44, +35,41,9,222,33,39,248,22,178,3,248,22,88,23,200,2,250,22,73,2,22, +248,22,73,249,22,73,248,22,73,248,22,64,23,204,2,250,22,74,2,23,249, +22,2,22,64,23,204,2,248,22,90,23,206,2,249,22,63,248,22,64,23,202, +1,249,22,2,22,88,23,200,1,250,22,74,2,20,249,22,2,32,0,89,162, +8,44,35,45,9,222,33,40,248,22,178,3,248,22,64,201,248,22,65,198,27, +248,22,178,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27,248, +22,65,248,22,178,3,23,197,1,249,22,171,3,80,158,37,34,250,22,74,2, +22,249,22,2,32,0,89,162,8,44,35,45,9,222,33,42,248,22,178,3,248, +22,64,201,248,22,65,198,27,248,22,65,248,22,178,3,196,27,248,22,178,3, +248,22,64,195,249,22,171,3,80,158,38,34,28,248,22,71,195,250,22,74,2, +20,9,248,22,65,199,250,22,73,2,4,248,22,73,248,22,64,199,250,22,74, +2,3,248,22,65,201,248,22,65,202,27,248,22,65,248,22,178,3,23,197,1, +27,249,22,1,22,77,249,22,2,22,178,3,248,22,178,3,248,22,64,199,249, +22,171,3,80,158,38,34,251,22,73,1,22,119,105,116,104,45,99,111,110,116, +105,110,117,97,116,105,111,110,45,109,97,114,107,2,24,250,22,74,1,23,101, +120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, +110,21,95,1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114, +107,45,115,101,116,45,102,105,114,115,116,11,2,24,201,250,22,74,2,20,9, +248,22,65,203,27,248,22,65,248,22,178,3,23,197,1,28,248,22,71,23,194, +2,20,15,159,35,34,35,249,22,171,3,80,158,37,34,27,248,22,178,3,248, +22,64,23,198,2,28,249,22,138,8,62,61,62,248,22,172,3,248,22,88,23, +197,2,250,22,73,2,20,248,22,73,249,22,73,21,93,2,25,248,22,64,199, +250,22,74,2,6,249,22,73,2,25,249,22,73,248,22,97,203,2,25,248,22, +65,202,251,22,73,2,17,28,249,22,138,8,248,22,172,3,248,22,64,23,201, +2,64,101,108,115,101,10,248,22,64,23,198,2,250,22,74,2,20,9,248,22, +65,23,201,1,249,22,63,2,6,248,22,65,23,203,1,99,8,31,8,30,8, +29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,55,50,51,55, +16,4,11,11,2,19,3,1,7,101,110,118,55,50,51,56,18,158,94,10,64, +118,111,105,100,8,47,27,248,22,65,248,22,178,3,196,249,22,171,3,80,158, +37,34,28,248,22,51,248,22,172,3,248,22,64,197,250,22,73,2,26,248,22, +73,248,22,64,199,248,22,88,198,27,248,22,172,3,248,22,64,197,250,22,73, +2,26,248,22,73,248,22,64,197,250,22,74,2,23,248,22,65,199,248,22,65, +202,159,34,20,103,159,34,16,1,20,24,2,1,16,0,83,158,40,20,100,137, +69,35,37,109,105,110,45,115,116,120,2,2,10,11,10,34,80,158,34,34,20, +103,159,34,16,0,16,0,11,11,16,0,34,11,37,34,11,16,10,9,9,9, +9,9,9,9,9,9,9,16,10,2,3,2,4,2,5,2,6,2,7,2,8, +2,9,2,10,2,11,2,12,16,10,11,11,11,11,11,11,11,11,11,11,16, +10,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12, +34,44,35,11,11,16,0,16,0,16,0,34,34,11,11,11,16,0,16,0,16, +0,34,34,16,11,16,5,93,2,13,20,15,159,34,34,34,34,20,103,159,34, +16,0,16,1,33,32,10,16,5,93,2,12,89,162,8,44,35,51,9,223,0, +33,33,34,20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16, +5,93,2,5,89,162,8,44,35,51,9,223,0,33,34,34,20,103,159,34,16, +1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,7,89,162,8,44, +35,51,9,223,0,33,35,34,20,103,159,34,16,1,20,25,159,35,2,2,2, +13,16,1,33,36,11,16,5,93,2,10,89,162,8,44,35,54,9,223,0,33, +37,34,20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,1,33,38,11, +16,5,93,2,4,89,162,8,44,35,56,9,223,0,33,41,34,20,103,159,34, +16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,8,89,162,8, +44,35,51,9,223,0,33,43,34,20,103,159,34,16,1,20,25,159,35,2,2, +2,13,16,0,11,16,5,93,2,3,89,162,8,44,35,52,9,223,0,33,44, +34,20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93, +2,9,89,162,8,44,35,53,9,223,0,33,45,34,20,103,159,34,16,1,20, +25,159,35,2,2,2,13,16,0,11,16,5,93,2,6,89,162,8,44,35,56, +9,223,0,33,46,34,20,103,159,34,16,1,20,25,159,35,2,2,2,13,16, +1,33,48,11,16,5,93,2,11,89,162,8,44,35,52,9,223,0,33,49,34, +20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,0,94,2, +15,2,16,93,2,15,9,9,34,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2046); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,51,61,0,0,0,1,0,0,3,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,52,61,0,0,0,1,0,0,3,0, 16,0,21,0,38,0,53,0,71,0,87,0,97,0,115,0,135,0,151,0,169, 0,200,0,229,0,251,0,9,1,15,1,29,1,34,1,44,1,52,1,80,1, 112,1,157,1,202,1,226,1,9,2,11,2,20,2,77,2,167,3,176,3,217, 3,51,5,155,5,3,6,119,6,133,6,176,6,192,6,42,8,56,8,219,8, -226,9,232,10,239,10,245,10,117,11,129,11,242,11,88,12,101,12,123,12,75, -13,235,13,50,15,58,15,66,15,92,15,193,15,0,0,251,18,0,0,29,11, +226,9,232,10,239,10,245,10,117,11,130,11,243,11,89,12,102,12,124,12,76, +13,236,13,51,15,59,15,67,15,93,15,195,15,0,0,0,19,0,0,29,11, 11,72,112,97,116,104,45,115,116,114,105,110,103,63,64,98,115,98,115,76,110, 111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,74,45,99,104,101,99, 107,45,114,101,108,112,97,116,104,77,45,99,104,101,99,107,45,99,111,108,108, @@ -245,125 +246,125 @@ 134,13,69,97,100,100,111,110,45,100,105,114,247,22,148,7,6,8,8,99,111, 108,108,101,99,116,115,11,27,248,80,159,40,52,35,249,22,77,23,202,1,248, 22,73,248,22,134,13,72,99,111,108,108,101,99,116,115,45,100,105,114,28,23, -194,2,249,22,63,23,196,1,23,195,1,192,32,49,89,162,42,37,49,2,19, -222,33,50,27,249,22,145,13,23,197,2,23,198,2,28,23,193,2,87,94,23, -196,1,27,248,22,88,23,195,2,27,250,2,49,23,199,2,23,200,1,248,22, -97,23,199,1,28,249,22,191,6,23,196,2,2,28,249,22,77,197,194,87,94, -23,196,1,249,22,63,248,22,168,12,23,197,1,194,87,95,23,195,1,23,193, -1,28,249,22,191,6,23,198,2,2,28,249,22,77,195,9,87,94,23,194,1, -249,22,63,248,22,168,12,23,199,1,9,87,95,28,28,248,22,185,6,194,10, -248,22,133,6,194,12,250,22,168,8,2,14,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,72, -195,249,22,4,22,159,12,196,11,12,250,22,168,8,2,14,6,13,13,108,105, -115,116,32,111,102,32,112,97,116,104,115,197,250,2,49,197,195,28,248,22,133, -6,197,248,22,144,7,197,196,32,52,89,162,8,44,38,56,2,19,222,33,55, -32,53,89,162,8,44,37,53,70,102,111,117,110,100,45,101,120,101,99,222,33, -54,28,23,193,2,91,159,37,11,90,161,37,34,11,248,22,180,12,23,199,2, -87,95,23,195,1,23,194,1,27,28,23,198,2,27,248,22,185,12,23,201,2, -28,249,22,140,8,23,195,2,23,202,2,11,28,248,22,181,12,23,194,2,250, -2,53,23,201,2,23,202,2,249,22,177,12,23,200,2,23,198,1,250,2,53, -23,201,2,23,202,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27, -28,248,22,159,12,23,196,2,27,249,22,177,12,23,198,2,23,201,2,28,28, -248,22,172,12,193,10,248,22,171,12,193,192,11,11,28,23,193,2,192,87,94, -23,193,1,28,23,199,2,11,27,248,22,185,12,23,202,2,28,249,22,140,8, -23,195,2,23,203,1,11,28,248,22,181,12,23,194,2,250,2,53,23,202,1, -23,203,1,249,22,177,12,23,201,1,23,198,1,250,2,53,201,202,195,194,28, -248,22,71,23,197,2,11,27,248,22,184,12,248,22,64,23,199,2,27,249,22, -177,12,23,196,1,23,197,2,28,248,22,171,12,23,194,2,250,2,53,198,199, -195,87,94,23,193,1,27,248,22,65,23,200,1,28,248,22,71,23,194,2,11, -27,248,22,184,12,248,22,64,23,196,2,27,249,22,177,12,23,196,1,23,200, -2,28,248,22,171,12,23,194,2,250,2,53,201,202,195,87,94,23,193,1,27, -248,22,65,23,197,1,28,248,22,71,23,194,2,11,27,248,22,184,12,248,22, -64,195,27,249,22,177,12,23,196,1,202,28,248,22,171,12,193,250,2,53,204, -205,195,251,2,52,204,205,206,248,22,65,199,87,95,28,27,248,22,159,12,23, -196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,133,6,23,196,2,27, -248,22,181,12,23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,182,12, -23,197,2,11,12,250,22,168,8,2,15,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,27,248,22,159,12,23,197,2,28,23,193,2,192,87,94, -23,193,1,28,248,22,133,6,23,197,2,27,248,22,181,12,23,198,2,28,23, -193,2,192,87,94,23,193,1,248,22,182,12,23,198,2,11,248,22,181,12,23, -196,2,11,10,12,250,22,168,8,2,15,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,181,12,23,195,2,91,159,37,11,90,161,37,34, -11,248,22,180,12,23,198,2,249,22,138,8,194,68,114,101,108,97,116,105,118, -101,11,27,248,22,150,7,6,4,4,80,65,84,72,251,2,52,23,199,1,23, -200,1,23,201,1,28,23,197,2,27,249,80,158,42,46,23,200,1,9,28,249, -22,138,8,247,22,152,7,2,21,249,22,63,248,22,168,12,5,1,46,23,195, -1,192,9,27,248,22,184,12,23,196,1,28,248,22,171,12,193,250,2,53,198, -199,195,11,250,80,158,37,47,196,197,11,250,80,158,37,47,196,11,11,87,94, -249,22,189,5,247,22,166,4,195,248,22,140,5,249,22,151,3,34,249,22,135, -3,197,198,27,248,22,134,13,2,20,27,249,80,158,38,47,23,196,1,11,27, -27,248,22,154,3,23,199,1,28,192,192,34,27,27,248,22,154,3,23,201,1, -28,192,192,34,27,249,22,183,4,23,198,1,83,158,38,20,97,95,89,162,42, -34,46,9,224,4,3,33,59,23,196,1,23,197,1,27,248,22,170,4,23,195, -1,87,94,248,22,134,4,21,94,2,17,2,29,248,80,159,41,53,35,193,159, -34,20,103,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20, -100,137,67,35,37,117,116,105,108,115,2,1,11,10,10,41,80,158,34,34,20, -103,159,37,16,17,30,2,1,2,2,193,30,2,1,2,3,193,30,2,1,2, -4,193,30,2,1,2,5,193,30,2,1,2,6,193,30,2,1,2,7,193,30, -2,1,2,8,193,30,2,1,2,9,193,30,2,1,2,10,193,30,2,1,2, -11,193,30,2,1,2,12,193,30,2,1,2,13,193,30,2,1,2,14,193,30, -2,1,2,15,193,30,2,1,2,16,193,30,2,18,1,20,112,97,114,97,109, -101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,4,30,2,18,1,23, -101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105, -111,110,3,16,0,11,11,16,4,2,6,2,5,2,3,2,9,38,11,37,34, -11,16,11,9,9,9,9,9,9,9,9,9,9,9,16,11,2,8,2,7,2, -16,2,15,2,13,2,12,2,4,2,11,2,14,2,10,2,2,16,11,11,11, -11,11,11,11,11,11,11,11,11,16,11,2,8,2,7,2,16,2,15,2,13, -2,12,2,4,2,11,2,14,2,10,2,2,45,45,35,11,11,16,0,16,0, -16,0,34,34,11,11,11,16,0,16,0,16,0,34,34,16,0,16,18,83,158, -34,16,2,89,162,42,35,47,2,19,223,0,33,30,80,159,34,53,35,83,158, -34,16,2,89,162,42,35,54,2,19,223,0,33,31,80,159,34,52,35,83,158, -34,16,2,89,162,8,44,35,43,9,223,0,33,32,80,159,34,51,35,83,158, -34,16,2,32,0,89,162,42,35,43,2,2,222,33,33,80,159,34,34,35,83, -158,34,16,2,249,22,135,6,7,92,7,92,80,159,34,35,35,83,158,34,16, -2,89,162,42,35,52,2,4,223,0,33,34,80,159,34,36,35,83,158,34,16, -2,32,0,89,162,42,36,48,2,5,222,33,35,80,159,34,37,35,83,158,34, -16,2,32,0,89,162,42,37,49,2,6,222,33,37,80,159,34,38,35,83,158, -34,16,2,89,162,8,45,36,46,2,7,223,0,33,39,80,159,34,39,35,83, -158,34,16,2,32,0,89,162,42,38,50,2,8,222,33,42,80,159,34,40,35, -83,158,34,16,2,32,0,89,162,42,37,48,2,9,222,33,43,80,159,34,41, -35,83,158,34,16,2,32,0,89,162,42,36,51,2,10,222,33,44,80,159,34, -42,35,83,158,34,16,2,32,0,89,162,42,36,52,2,11,222,33,45,80,159, -34,43,35,83,158,34,16,2,32,0,89,162,42,35,42,2,12,222,33,46,80, -159,34,44,35,83,158,34,16,2,83,158,37,20,96,95,2,13,89,162,42,34, -41,9,223,0,33,47,89,162,42,35,51,9,223,0,33,48,80,159,34,45,35, -83,158,34,16,2,27,248,22,141,13,248,22,144,7,27,28,249,22,138,8,247, -22,152,7,2,21,6,1,1,59,6,1,1,58,250,22,181,6,6,14,14,40, -91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,89,162, -42,36,46,2,14,223,0,33,51,80,159,34,46,35,83,158,34,16,2,83,158, -37,20,96,96,2,15,89,162,8,44,37,52,9,223,0,33,56,89,162,42,36, -45,9,223,0,33,57,89,162,42,35,44,9,223,0,33,58,80,159,34,47,35, -83,158,34,16,2,89,162,42,36,49,2,16,223,0,33,60,80,159,34,48,35, -94,29,94,2,17,2,29,11,29,94,2,17,69,35,37,109,105,110,45,115,116, -120,11,9,9,9,34,0}; - EVAL_ONE_SIZED_STR((char *)expr, 5004); +194,2,249,22,63,23,196,1,23,195,1,192,32,49,89,162,8,44,37,49,2, +19,222,33,50,27,249,22,145,13,23,197,2,23,198,2,28,23,193,2,87,94, +23,196,1,27,248,22,88,23,195,2,27,250,2,49,23,199,2,23,200,1,248, +22,97,23,199,1,28,249,22,191,6,23,196,2,2,28,249,22,77,197,194,87, +94,23,196,1,249,22,63,248,22,168,12,23,197,1,194,87,95,23,195,1,23, +193,1,28,249,22,191,6,23,198,2,2,28,249,22,77,195,9,87,94,23,194, +1,249,22,63,248,22,168,12,23,199,1,9,87,95,28,28,248,22,185,6,194, +10,248,22,133,6,194,12,250,22,168,8,2,14,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, +72,195,249,22,4,22,159,12,196,11,12,250,22,168,8,2,14,6,13,13,108, +105,115,116,32,111,102,32,112,97,116,104,115,197,250,2,49,197,195,28,248,22, +133,6,197,248,22,144,7,197,196,32,52,89,162,8,44,38,56,2,19,222,33, +55,32,53,89,162,8,44,37,53,70,102,111,117,110,100,45,101,120,101,99,222, +33,54,28,23,193,2,91,159,37,11,90,161,37,34,11,248,22,180,12,23,199, +2,87,95,23,195,1,23,194,1,27,28,23,198,2,27,248,22,185,12,23,201, +2,28,249,22,140,8,23,195,2,23,202,2,11,28,248,22,181,12,23,194,2, +250,2,53,23,201,2,23,202,2,249,22,177,12,23,200,2,23,198,1,250,2, +53,23,201,2,23,202,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1, +27,28,248,22,159,12,23,196,2,27,249,22,177,12,23,198,2,23,201,2,28, +28,248,22,172,12,193,10,248,22,171,12,193,192,11,11,28,23,193,2,192,87, +94,23,193,1,28,23,199,2,11,27,248,22,185,12,23,202,2,28,249,22,140, +8,23,195,2,23,203,1,11,28,248,22,181,12,23,194,2,250,2,53,23,202, +1,23,203,1,249,22,177,12,23,201,1,23,198,1,250,2,53,201,202,195,194, +28,248,22,71,23,197,2,11,27,248,22,184,12,248,22,64,23,199,2,27,249, +22,177,12,23,196,1,23,197,2,28,248,22,171,12,23,194,2,250,2,53,198, +199,195,87,94,23,193,1,27,248,22,65,23,200,1,28,248,22,71,23,194,2, +11,27,248,22,184,12,248,22,64,23,196,2,27,249,22,177,12,23,196,1,23, +200,2,28,248,22,171,12,23,194,2,250,2,53,201,202,195,87,94,23,193,1, +27,248,22,65,23,197,1,28,248,22,71,23,194,2,11,27,248,22,184,12,248, +22,64,195,27,249,22,177,12,23,196,1,202,28,248,22,171,12,193,250,2,53, +204,205,195,251,2,52,204,205,206,248,22,65,199,87,95,28,27,248,22,159,12, +23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,133,6,23,196,2, +27,248,22,181,12,23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,182, +12,23,197,2,11,12,250,22,168,8,2,15,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,27,248,22,159,12,23,197,2,28,23,193,2,192,87, +94,23,193,1,28,248,22,133,6,23,197,2,27,248,22,181,12,23,198,2,28, +23,193,2,192,87,94,23,193,1,248,22,182,12,23,198,2,11,248,22,181,12, +23,196,2,11,10,12,250,22,168,8,2,15,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,181,12,23,195,2,91,159,37,11,90,161,37, +34,11,248,22,180,12,23,198,2,249,22,138,8,194,68,114,101,108,97,116,105, +118,101,11,27,248,22,150,7,6,4,4,80,65,84,72,251,2,52,23,199,1, +23,200,1,23,201,1,28,23,197,2,27,249,80,158,42,46,23,200,1,9,28, +249,22,138,8,247,22,152,7,2,21,249,22,63,248,22,168,12,5,1,46,23, +195,1,192,9,27,248,22,184,12,23,196,1,28,248,22,171,12,193,250,2,53, +198,199,195,11,250,80,158,37,47,196,197,11,250,80,158,37,47,196,11,11,87, +94,249,22,189,5,247,22,166,4,195,248,22,140,5,249,22,151,3,34,249,22, +135,3,197,198,27,248,22,134,13,2,20,27,249,80,158,38,47,23,196,1,11, +27,27,248,22,154,3,23,199,1,28,192,192,34,27,27,248,22,154,3,23,201, +1,28,192,192,34,27,249,22,183,4,23,198,1,83,158,38,20,97,95,89,162, +8,44,34,46,9,224,4,3,33,59,23,196,1,23,197,1,27,248,22,170,4, +23,195,1,87,94,248,22,134,4,21,94,2,17,2,29,248,80,159,41,53,35, +193,159,34,20,103,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158, +40,20,100,137,67,35,37,117,116,105,108,115,2,1,11,10,10,41,80,158,34, +34,20,103,159,37,16,17,30,2,1,2,2,193,30,2,1,2,3,193,30,2, +1,2,4,193,30,2,1,2,5,193,30,2,1,2,6,193,30,2,1,2,7, +193,30,2,1,2,8,193,30,2,1,2,9,193,30,2,1,2,10,193,30,2, +1,2,11,193,30,2,1,2,12,193,30,2,1,2,13,193,30,2,1,2,14, +193,30,2,1,2,15,193,30,2,1,2,16,193,30,2,18,1,20,112,97,114, +97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,4,30,2,18, +1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97, +116,105,111,110,3,16,0,11,11,16,4,2,6,2,5,2,3,2,9,38,11, +37,34,11,16,11,9,9,9,9,9,9,9,9,9,9,9,16,11,2,8,2, +7,2,16,2,15,2,13,2,12,2,4,2,11,2,14,2,10,2,2,16,11, +11,11,11,11,11,11,11,11,11,11,11,16,11,2,8,2,7,2,16,2,15, +2,13,2,12,2,4,2,11,2,14,2,10,2,2,45,45,35,11,11,16,0, +16,0,16,0,34,34,11,11,11,16,0,16,0,16,0,34,34,16,0,16,18, +83,158,34,16,2,89,162,42,35,47,2,19,223,0,33,30,80,159,34,53,35, +83,158,34,16,2,89,162,8,44,35,54,2,19,223,0,33,31,80,159,34,52, +35,83,158,34,16,2,89,162,8,44,35,43,9,223,0,33,32,80,159,34,51, +35,83,158,34,16,2,32,0,89,162,42,35,43,2,2,222,33,33,80,159,34, +34,35,83,158,34,16,2,249,22,135,6,7,92,7,92,80,159,34,35,35,83, +158,34,16,2,89,162,42,35,52,2,4,223,0,33,34,80,159,34,36,35,83, +158,34,16,2,32,0,89,162,42,36,48,2,5,222,33,35,80,159,34,37,35, +83,158,34,16,2,32,0,89,162,8,44,37,49,2,6,222,33,37,80,159,34, +38,35,83,158,34,16,2,89,162,8,45,36,46,2,7,223,0,33,39,80,159, +34,39,35,83,158,34,16,2,32,0,89,162,42,38,50,2,8,222,33,42,80, +159,34,40,35,83,158,34,16,2,32,0,89,162,42,37,48,2,9,222,33,43, +80,159,34,41,35,83,158,34,16,2,32,0,89,162,42,36,51,2,10,222,33, +44,80,159,34,42,35,83,158,34,16,2,32,0,89,162,42,36,52,2,11,222, +33,45,80,159,34,43,35,83,158,34,16,2,32,0,89,162,42,35,42,2,12, +222,33,46,80,159,34,44,35,83,158,34,16,2,83,158,37,20,96,95,2,13, +89,162,42,34,41,9,223,0,33,47,89,162,42,35,51,9,223,0,33,48,80, +159,34,45,35,83,158,34,16,2,27,248,22,141,13,248,22,144,7,27,28,249, +22,138,8,247,22,152,7,2,21,6,1,1,59,6,1,1,58,250,22,181,6, +6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23, +196,1,89,162,8,44,36,46,2,14,223,0,33,51,80,159,34,46,35,83,158, +34,16,2,83,158,37,20,96,96,2,15,89,162,8,44,37,52,9,223,0,33, +56,89,162,42,36,45,9,223,0,33,57,89,162,42,35,44,9,223,0,33,58, +80,159,34,47,35,83,158,34,16,2,89,162,42,36,49,2,16,223,0,33,60, +80,159,34,48,35,94,29,94,2,17,2,29,11,29,94,2,17,69,35,37,109, +105,110,45,115,116,120,11,9,9,9,34,0}; + EVAL_ONE_SIZED_STR((char *)expr, 5009); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,51,8,0,0,0,1,0,0,6,0, -19,0,34,0,48,0,62,0,76,0,108,0,0,0,240,0,0,0,65,113,117, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,52,8,0,0,0,1,0,0,6,0, +19,0,34,0,48,0,62,0,76,0,111,0,0,0,243,0,0,0,65,113,117, 111,116,101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69, 35,37,110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97, 109,122,11,29,94,2,1,68,35,37,101,120,112,111,98,115,11,29,94,2,1, -68,35,37,107,101,114,110,101,108,11,97,10,34,11,97,159,2,2,34,34,159, -2,3,34,34,159,2,4,34,34,159,2,5,34,34,159,2,6,34,34,16,0, -159,34,20,103,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40, -20,100,137,69,35,37,98,117,105,108,116,105,110,29,11,11,10,10,18,96,11, -41,41,41,34,80,158,34,34,20,103,159,34,16,0,16,0,11,11,16,0,34, -11,37,34,11,11,16,0,16,0,16,0,34,34,35,11,11,16,0,16,0,16, -0,34,34,11,11,11,16,0,16,0,16,0,34,34,16,0,16,0,98,2,6, -2,5,29,94,2,1,69,35,37,102,111,114,101,105,103,110,11,2,4,2,3, -2,2,9,9,9,34,0}; - EVAL_ONE_SIZED_STR((char *)expr, 279); +68,35,37,107,101,114,110,101,108,11,98,10,34,11,8,144,185,97,159,2,2, +34,34,159,2,3,34,34,159,2,4,34,34,159,2,5,34,34,159,2,6,34, +34,16,0,159,34,20,103,159,34,16,1,20,24,65,98,101,103,105,110,16,0, +83,158,40,20,100,137,69,35,37,98,117,105,108,116,105,110,29,11,11,10,10, +18,96,11,41,41,41,34,80,158,34,34,20,103,159,34,16,0,16,0,11,11, +16,0,34,11,37,34,11,11,16,0,16,0,16,0,34,34,35,11,11,16,0, +16,0,16,0,34,34,11,11,11,16,0,16,0,16,0,34,34,16,0,16,0, +98,2,6,2,5,29,94,2,1,69,35,37,102,111,114,101,105,103,110,11,2, +4,2,3,2,2,9,9,9,34,0}; + EVAL_ONE_SIZED_STR((char *)expr, 282); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,51,52,0,0,0,1,0,0,3,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,52,52,0,0,0,1,0,0,3,0, 14,0,41,0,47,0,60,0,74,0,96,0,122,0,134,0,152,0,172,0,184, 0,200,0,223,0,3,1,8,1,13,1,18,1,23,1,54,1,58,1,66,1, 74,1,82,1,185,1,230,1,253,1,32,2,67,2,101,2,111,2,145,2,155, -2,162,2,65,4,77,4,96,4,215,4,227,4,131,5,145,5,6,6,12,6, -26,6,53,6,138,6,140,6,201,6,118,12,176,12,208,12,0,0,146,15,0, +2,162,2,68,4,81,4,100,4,219,4,231,4,135,5,149,5,10,6,16,6, +30,6,57,6,142,6,144,6,205,6,123,12,182,12,214,12,0,0,152,15,0, 0,29,11,11,70,100,108,108,45,115,117,102,102,105,120,1,25,100,101,102,97, 117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100, 65,113,117,111,116,101,29,94,2,4,67,35,37,117,116,105,108,115,11,29,94, @@ -405,154 +406,155 @@ 161,35,38,11,28,249,22,138,8,23,196,2,68,114,101,108,97,116,105,118,101, 87,94,23,194,1,2,17,23,194,1,90,161,35,39,11,247,22,137,13,27,89, 162,42,35,48,62,122,111,225,7,5,3,33,27,27,83,158,38,20,97,94,89, -162,42,35,50,9,225,8,6,4,33,28,23,197,1,27,249,22,5,89,162,42, -35,46,9,223,5,33,29,23,203,2,27,28,23,195,2,27,249,22,5,83,158, -38,20,97,94,89,162,42,35,46,9,223,5,33,30,23,198,1,23,205,2,27, -28,23,196,2,11,193,28,192,192,28,193,28,23,196,2,28,249,22,147,3,248, -22,65,196,248,22,65,23,199,2,193,11,11,11,87,94,23,195,1,11,28,23, -193,2,249,80,159,46,53,35,202,89,162,42,34,44,9,224,14,2,33,31,87, -94,23,193,1,27,28,23,197,2,27,249,22,5,83,158,38,20,97,94,89,162, -42,35,46,9,223,7,33,32,23,200,1,23,206,1,27,28,196,11,193,28,192, -192,28,193,28,196,28,249,22,147,3,248,22,65,196,248,22,65,199,193,11,11, -11,11,28,192,249,80,159,47,53,35,203,89,162,42,34,44,9,224,15,2,33, -33,249,80,159,47,53,35,203,89,162,42,34,43,9,224,15,7,33,34,32,36, -89,162,42,35,53,2,19,222,33,38,0,17,35,114,120,34,94,40,46,42,63, -41,47,40,46,42,41,36,34,27,249,22,145,13,2,37,23,196,2,28,23,193, -2,87,94,23,194,1,249,22,63,248,22,88,23,196,2,27,248,22,97,23,197, -1,27,249,22,145,13,2,37,23,196,2,28,23,193,2,87,94,23,194,1,249, -22,63,248,22,88,23,196,2,27,248,22,97,23,197,1,27,249,22,145,13,2, -37,23,196,2,28,23,193,2,87,94,23,194,1,249,22,63,248,22,88,23,196, -2,248,2,36,248,22,97,23,197,1,248,22,73,194,248,22,73,194,248,22,73, -194,32,39,89,162,42,35,53,2,19,222,33,40,28,248,22,71,248,22,65,23, -195,2,249,22,7,9,248,22,64,195,91,159,36,11,90,161,36,34,11,27,248, -22,65,23,197,2,28,248,22,71,248,22,65,23,195,2,249,22,7,9,248,22, -64,23,196,1,91,159,36,11,90,161,36,34,11,27,248,22,65,23,197,2,28, -248,22,71,248,22,65,23,195,2,249,22,7,9,248,22,64,23,196,1,91,159, -36,11,90,161,36,34,11,248,2,39,248,22,65,23,197,2,249,22,7,249,22, -63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7,249,22,63,248,22, -64,23,200,1,23,197,1,23,196,1,249,22,7,249,22,63,248,22,64,23,200, -1,23,197,1,195,27,248,2,36,23,195,1,28,194,192,248,2,39,193,87,95, -28,248,22,147,4,195,12,250,22,168,8,2,20,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,87,94,23,193,1,12,27,27,250,22,126,80,158,40,41,248,22, -163,13,247,22,147,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,120, -87,94,250,22,125,80,158,41,41,248,22,163,13,247,22,147,11,195,192,250,22, -125,195,198,66,97,116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,167, -8,11,196,195,248,22,165,8,194,28,249,22,139,6,194,6,1,1,46,2,17, -28,249,22,139,6,194,6,2,2,46,46,62,117,112,192,28,249,22,140,8,248, -22,65,23,200,2,23,197,1,28,249,22,138,8,248,22,64,23,200,2,23,196, -1,251,22,165,8,2,20,6,26,26,99,121,99,108,101,32,105,110,32,108,111, -97,100,105,110,103,32,97,116,32,126,101,58,32,126,101,23,200,1,249,22,2, -22,65,248,22,78,249,22,63,23,206,1,23,202,1,12,12,247,192,20,14,159, -80,158,38,43,249,22,63,247,22,147,11,23,197,1,20,14,159,80,158,38,38, -250,80,158,41,39,249,22,27,11,80,158,43,38,22,131,4,23,196,1,249,247, -22,184,5,23,198,1,248,22,52,248,22,163,12,23,198,1,87,94,28,28,248, -22,159,12,23,197,2,10,248,22,152,4,23,197,2,12,28,23,198,2,250,22, -167,8,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104, -23,201,2,250,22,168,8,2,20,6,19,19,109,111,100,117,108,101,45,112,97, -116,104,32,111,114,32,112,97,116,104,23,199,2,28,28,248,22,61,23,197,2, -249,22,138,8,248,22,64,23,199,2,2,4,11,248,22,148,4,248,22,88,197, -28,28,248,22,61,23,197,2,249,22,138,8,248,22,64,23,199,2,66,112,108, -97,110,101,116,11,87,94,28,207,12,20,14,159,80,158,36,38,250,80,158,39, -39,249,22,27,11,80,158,41,38,22,147,11,23,197,1,90,161,35,34,10,249, -22,132,4,21,94,2,21,6,18,18,112,108,97,110,101,116,47,114,101,115,111, -108,118,101,114,46,115,115,1,27,112,108,97,110,101,116,45,109,111,100,117,108, -101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12,251,211,199,200,201, -202,87,94,23,193,1,27,89,162,42,35,44,79,115,104,111,119,45,99,111,108, -108,101,99,116,105,111,110,45,101,114,114,223,6,33,44,27,28,248,22,51,23, -199,2,27,250,22,126,80,158,42,42,249,22,63,23,204,2,247,22,136,13,11, -28,23,193,2,192,87,94,23,193,1,91,159,36,11,90,161,36,34,11,249,80, -159,43,47,35,248,22,54,23,204,2,11,27,251,80,158,46,49,2,20,23,202, -1,28,248,22,71,23,199,2,23,199,2,248,22,64,23,199,2,28,248,22,71, -23,199,2,9,248,22,65,23,199,2,249,22,177,12,23,195,1,28,248,22,71, -23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115,115,249,22,156, -6,23,199,1,6,3,3,46,115,115,28,248,22,133,6,23,199,2,87,94,23, -194,1,27,248,80,159,40,54,35,23,201,2,27,250,22,126,80,158,43,42,249, -22,63,23,205,2,23,199,2,11,28,23,193,2,192,87,94,23,193,1,91,159, -36,11,90,161,36,34,11,249,80,159,44,47,35,23,204,2,11,250,22,1,22, -177,12,23,199,1,249,22,77,249,22,2,32,0,89,162,8,44,35,42,9,222, -33,45,23,200,1,248,22,73,23,200,1,28,248,22,159,12,23,199,2,87,94, -23,194,1,28,248,22,182,12,23,199,2,23,198,2,248,22,73,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,8,248,22,64,23,201,2,2,21,27,250,22,126, -80,158,42,42,249,22,63,23,204,2,247,22,136,13,11,28,23,193,2,192,87, -94,23,193,1,91,159,37,11,90,161,36,34,11,249,80,159,44,47,35,248,22, -88,23,205,2,11,90,161,35,36,11,28,248,22,71,248,22,90,23,204,2,28, -248,22,71,23,194,2,249,22,147,13,0,8,35,114,120,34,91,46,93,34,23, -196,2,11,10,27,27,28,23,197,2,249,22,77,28,248,22,71,248,22,90,23, -208,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,77,249,22,2,80, -159,50,55,35,248,22,90,23,211,2,23,197,2,28,248,22,71,23,196,2,248, -22,73,23,197,2,23,195,2,251,80,158,48,49,2,20,23,204,1,248,22,64, -23,198,2,248,22,65,23,198,1,249,22,177,12,23,195,1,28,23,198,1,87, -94,23,196,1,23,197,1,28,248,22,71,23,197,1,87,94,23,197,1,6,7, -7,109,97,105,110,46,115,115,28,249,22,147,13,0,8,35,114,120,34,91,46, -93,34,23,199,2,23,197,1,249,22,156,6,23,199,1,6,3,3,46,115,115, -28,249,22,138,8,248,22,64,23,201,2,64,102,105,108,101,249,22,184,12,248, -22,88,23,201,2,248,80,159,41,54,35,23,202,2,12,87,94,28,28,248,22, -159,12,23,194,2,10,248,22,155,7,23,194,2,87,94,23,200,1,12,28,23, -200,2,250,22,167,8,67,114,101,113,117,105,114,101,249,22,181,6,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,64,23,199,2,6,0,0,23,203,1,87,94,23,200,1,250,22,168,8, -2,20,249,22,181,6,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126, -97,28,23,198,2,248,22,64,23,199,2,6,0,0,23,201,2,27,28,248,22, -155,7,23,195,2,249,22,160,7,23,196,2,34,249,22,186,12,248,22,187,12, -23,197,2,11,27,28,248,22,155,7,23,196,2,249,22,160,7,23,197,2,35, -248,80,158,41,50,23,195,2,91,159,37,11,90,161,37,34,11,28,248,22,155, -7,23,199,2,250,22,7,2,22,249,22,160,7,23,203,2,36,2,22,248,22, -180,12,23,198,2,87,95,23,195,1,23,193,1,27,28,248,22,155,7,23,200, -2,249,22,160,7,23,201,2,37,249,80,158,46,51,23,197,2,5,0,27,28, -248,22,155,7,23,201,2,249,22,160,7,23,202,2,38,248,22,148,4,23,200, -2,27,27,250,22,126,80,158,50,41,248,22,163,13,247,22,147,11,11,28,23, -193,2,192,87,94,23,193,1,27,247,22,120,87,94,250,22,125,80,158,51,41, -248,22,163,13,247,22,147,11,195,192,87,95,28,23,209,1,27,250,22,126,23, -197,2,197,11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,158,50,44, -80,158,49,44,247,22,19,250,22,25,248,22,23,23,197,2,80,158,52,43,23, -196,1,27,247,22,147,11,249,22,3,83,158,38,20,97,94,89,162,42,35,53, -9,226,12,11,2,3,33,46,23,195,1,23,196,1,248,28,248,22,17,80,158, -49,44,32,0,89,162,42,35,40,9,222,33,47,80,159,48,56,35,89,162,42, -34,49,9,227,14,9,8,4,3,33,48,250,22,125,23,197,1,197,10,12,28, -28,248,22,155,7,23,202,1,11,27,248,22,133,6,23,208,2,28,192,192,28, -248,22,61,23,208,2,249,22,138,8,248,22,64,23,210,2,2,21,11,250,22, -125,80,158,49,42,28,248,22,133,6,23,210,2,249,22,63,23,211,1,248,80, -159,52,54,35,23,213,1,87,94,23,210,1,249,22,63,23,211,1,247,22,136, -13,252,22,157,7,23,208,1,23,207,1,23,205,1,23,203,1,201,12,193,91, -159,36,10,90,161,35,34,10,11,90,161,35,35,10,83,158,37,20,96,96,2, -20,89,162,42,35,49,9,224,2,0,33,42,89,162,42,37,47,9,223,1,33, -43,89,162,42,38,8,30,9,225,2,3,0,33,49,208,87,95,248,22,130,4, -248,80,158,36,48,247,22,147,11,248,22,184,5,80,158,35,35,248,22,133,12, -80,159,35,40,35,159,34,20,103,159,34,16,1,20,24,65,98,101,103,105,110, -16,0,83,158,40,20,100,137,66,35,37,98,111,111,116,2,1,11,10,10,36, -80,158,34,34,20,103,159,38,16,19,30,2,1,2,2,193,30,2,1,2,3, -193,30,2,5,72,112,97,116,104,45,115,116,114,105,110,103,63,10,30,2,5, -75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,7,30,2,6,1, -20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121, -4,30,2,6,1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101, -114,105,122,97,116,105,111,110,3,30,2,1,2,7,193,30,2,1,2,8,193, -30,2,1,2,9,193,30,2,1,2,10,193,30,2,1,2,11,193,30,2,1, -2,12,193,30,2,1,2,13,193,30,2,1,2,14,193,30,2,1,2,15,193, -30,2,5,69,45,102,105,110,100,45,99,111,108,0,30,2,5,76,110,111,114, -109,97,108,45,99,97,115,101,45,112,97,116,104,6,30,2,5,79,112,97,116, -104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,9,30,2,1,2, -16,193,16,0,11,11,16,11,2,10,2,11,2,8,2,9,2,12,2,13,2, -3,2,7,2,2,2,15,2,14,45,11,37,34,11,16,1,9,16,1,2,16, -16,1,11,16,1,2,16,35,35,35,11,11,16,0,16,0,16,0,34,34,11, -11,11,16,0,16,0,16,0,34,34,16,0,16,16,83,158,34,16,2,89,162, -42,35,43,9,223,0,33,23,80,159,34,56,35,83,158,34,16,2,89,162,8, -44,35,43,9,223,0,33,24,80,159,34,55,35,83,158,34,16,2,89,162,42, -35,47,67,103,101,116,45,100,105,114,223,0,33,25,80,159,34,54,35,83,158, -34,16,2,89,162,42,36,47,68,119,105,116,104,45,100,105,114,223,0,33,26, -80,159,34,53,35,83,158,34,16,2,248,22,152,7,69,115,111,45,115,117,102, -102,105,120,80,159,34,34,35,83,158,34,16,2,89,162,42,36,58,2,3,223, -0,33,35,80,159,34,35,35,83,158,34,16,2,32,0,89,162,8,44,35,40, -2,7,222,192,80,159,34,40,35,83,158,34,16,2,248,22,120,2,18,80,159, -34,41,35,83,158,34,16,2,249,22,120,2,18,65,101,113,117,97,108,80,159, -34,42,35,83,158,34,16,2,247,22,59,80,159,34,43,35,83,158,34,16,2, -248,22,18,74,109,111,100,117,108,101,45,108,111,97,100,105,110,103,80,159,34, -44,35,83,158,34,16,2,11,80,158,34,45,83,158,34,16,2,11,80,158,34, -46,83,158,34,16,2,32,0,89,162,42,36,43,2,14,222,33,41,80,159,34, -47,35,83,158,34,16,2,89,162,8,44,35,43,2,15,223,0,33,50,80,159, -34,48,35,83,158,34,16,2,89,162,42,34,42,2,16,223,0,33,51,80,159, -34,52,35,95,29,94,2,4,68,35,37,107,101,114,110,101,108,11,29,94,2, -4,69,35,37,109,105,110,45,115,116,120,11,2,5,9,9,9,34,0}; - EVAL_ONE_SIZED_STR((char *)expr, 4113); +162,42,35,50,9,225,8,6,4,33,28,23,197,1,27,249,22,5,89,162,8, +44,35,46,9,223,5,33,29,23,203,2,27,28,23,195,2,27,249,22,5,83, +158,38,20,97,94,89,162,8,44,35,46,9,223,5,33,30,23,198,1,23,205, +2,27,28,23,196,2,11,193,28,192,192,28,193,28,23,196,2,28,249,22,147, +3,248,22,65,196,248,22,65,23,199,2,193,11,11,11,87,94,23,195,1,11, +28,23,193,2,249,80,159,46,53,35,202,89,162,42,34,44,9,224,14,2,33, +31,87,94,23,193,1,27,28,23,197,2,27,249,22,5,83,158,38,20,97,94, +89,162,8,44,35,46,9,223,7,33,32,23,200,1,23,206,1,27,28,196,11, +193,28,192,192,28,193,28,196,28,249,22,147,3,248,22,65,196,248,22,65,199, +193,11,11,11,11,28,192,249,80,159,47,53,35,203,89,162,42,34,44,9,224, +15,2,33,33,249,80,159,47,53,35,203,89,162,42,34,43,9,224,15,7,33, +34,32,36,89,162,8,44,35,53,2,19,222,33,38,0,17,35,114,120,34,94, +40,46,42,63,41,47,40,46,42,41,36,34,27,249,22,145,13,2,37,23,196, +2,28,23,193,2,87,94,23,194,1,249,22,63,248,22,88,23,196,2,27,248, +22,97,23,197,1,27,249,22,145,13,2,37,23,196,2,28,23,193,2,87,94, +23,194,1,249,22,63,248,22,88,23,196,2,27,248,22,97,23,197,1,27,249, +22,145,13,2,37,23,196,2,28,23,193,2,87,94,23,194,1,249,22,63,248, +22,88,23,196,2,248,2,36,248,22,97,23,197,1,248,22,73,194,248,22,73, +194,248,22,73,194,32,39,89,162,42,35,53,2,19,222,33,40,28,248,22,71, +248,22,65,23,195,2,249,22,7,9,248,22,64,195,91,159,36,11,90,161,36, +34,11,27,248,22,65,23,197,2,28,248,22,71,248,22,65,23,195,2,249,22, +7,9,248,22,64,23,196,1,91,159,36,11,90,161,36,34,11,27,248,22,65, +23,197,2,28,248,22,71,248,22,65,23,195,2,249,22,7,9,248,22,64,23, +196,1,91,159,36,11,90,161,36,34,11,248,2,39,248,22,65,23,197,2,249, +22,7,249,22,63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7,249, +22,63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7,249,22,63,248, +22,64,23,200,1,23,197,1,195,27,248,2,36,23,195,1,28,194,192,248,2, +39,193,87,95,28,248,22,147,4,195,12,250,22,168,8,2,20,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,87,94,23,193,1,12,27,27,250,22,126,80,158, +40,41,248,22,163,13,247,22,147,11,11,28,23,193,2,192,87,94,23,193,1, +27,247,22,120,87,94,250,22,125,80,158,41,41,248,22,163,13,247,22,147,11, +195,192,250,22,125,195,198,66,97,116,116,97,99,104,251,211,197,198,199,10,28, +192,250,22,167,8,11,196,195,248,22,165,8,194,28,249,22,139,6,194,6,1, +1,46,2,17,28,249,22,139,6,194,6,2,2,46,46,62,117,112,192,28,249, +22,140,8,248,22,65,23,200,2,23,197,1,28,249,22,138,8,248,22,64,23, +200,2,23,196,1,251,22,165,8,2,20,6,26,26,99,121,99,108,101,32,105, +110,32,108,111,97,100,105,110,103,32,97,116,32,126,101,58,32,126,101,23,200, +1,249,22,2,22,65,248,22,78,249,22,63,23,206,1,23,202,1,12,12,247, +192,20,14,159,80,158,38,43,249,22,63,247,22,147,11,23,197,1,20,14,159, +80,158,38,38,250,80,158,41,39,249,22,27,11,80,158,43,38,22,131,4,23, +196,1,249,247,22,184,5,23,198,1,248,22,52,248,22,163,12,23,198,1,87, +94,28,28,248,22,159,12,23,197,2,10,248,22,152,4,23,197,2,12,28,23, +198,2,250,22,167,8,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32, +112,97,116,104,23,201,2,250,22,168,8,2,20,6,19,19,109,111,100,117,108, +101,45,112,97,116,104,32,111,114,32,112,97,116,104,23,199,2,28,28,248,22, +61,23,197,2,249,22,138,8,248,22,64,23,199,2,2,4,11,248,22,148,4, +248,22,88,197,28,28,248,22,61,23,197,2,249,22,138,8,248,22,64,23,199, +2,66,112,108,97,110,101,116,11,87,94,28,207,12,20,14,159,80,158,36,38, +250,80,158,39,39,249,22,27,11,80,158,41,38,22,147,11,23,197,1,90,161, +35,34,10,249,22,132,4,21,94,2,21,6,18,18,112,108,97,110,101,116,47, +114,101,115,111,108,118,101,114,46,115,115,1,27,112,108,97,110,101,116,45,109, +111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12,251, +211,199,200,201,202,87,94,23,193,1,27,89,162,42,35,44,79,115,104,111,119, +45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223,6,33,44,27,28, +248,22,51,23,199,2,27,250,22,126,80,158,42,42,249,22,63,23,204,2,247, +22,136,13,11,28,23,193,2,192,87,94,23,193,1,91,159,36,11,90,161,36, +34,11,249,80,159,43,47,35,248,22,54,23,204,2,11,27,251,80,158,46,49, +2,20,23,202,1,28,248,22,71,23,199,2,23,199,2,248,22,64,23,199,2, +28,248,22,71,23,199,2,9,248,22,65,23,199,2,249,22,177,12,23,195,1, +28,248,22,71,23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115, +115,249,22,156,6,23,199,1,6,3,3,46,115,115,28,248,22,133,6,23,199, +2,87,94,23,194,1,27,248,80,159,40,54,35,23,201,2,27,250,22,126,80, +158,43,42,249,22,63,23,205,2,23,199,2,11,28,23,193,2,192,87,94,23, +193,1,91,159,36,11,90,161,36,34,11,249,80,159,44,47,35,23,204,2,11, +250,22,1,22,177,12,23,199,1,249,22,77,249,22,2,32,0,89,162,8,44, +35,42,9,222,33,45,23,200,1,248,22,73,23,200,1,28,248,22,159,12,23, +199,2,87,94,23,194,1,28,248,22,182,12,23,199,2,23,198,2,248,22,73, +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,8,248,22,64,23,201,2,2,21, +27,250,22,126,80,158,42,42,249,22,63,23,204,2,247,22,136,13,11,28,23, +193,2,192,87,94,23,193,1,91,159,37,11,90,161,36,34,11,249,80,159,44, +47,35,248,22,88,23,205,2,11,90,161,35,36,11,28,248,22,71,248,22,90, +23,204,2,28,248,22,71,23,194,2,249,22,147,13,0,8,35,114,120,34,91, +46,93,34,23,196,2,11,10,27,27,28,23,197,2,249,22,77,28,248,22,71, +248,22,90,23,208,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,77, +249,22,2,80,159,50,55,35,248,22,90,23,211,2,23,197,2,28,248,22,71, +23,196,2,248,22,73,23,197,2,23,195,2,251,80,158,48,49,2,20,23,204, +1,248,22,64,23,198,2,248,22,65,23,198,1,249,22,177,12,23,195,1,28, +23,198,1,87,94,23,196,1,23,197,1,28,248,22,71,23,197,1,87,94,23, +197,1,6,7,7,109,97,105,110,46,115,115,28,249,22,147,13,0,8,35,114, +120,34,91,46,93,34,23,199,2,23,197,1,249,22,156,6,23,199,1,6,3, +3,46,115,115,28,249,22,138,8,248,22,64,23,201,2,64,102,105,108,101,249, +22,184,12,248,22,88,23,201,2,248,80,159,41,54,35,23,202,2,12,87,94, +28,28,248,22,159,12,23,194,2,10,248,22,155,7,23,194,2,87,94,23,200, +1,12,28,23,200,2,250,22,167,8,67,114,101,113,117,105,114,101,249,22,181, +6,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,64,23,199,2,6,0,0,23,203,1,87,94,23,200,1, +250,22,168,8,2,20,249,22,181,6,6,13,13,109,111,100,117,108,101,32,112, +97,116,104,126,97,28,23,198,2,248,22,64,23,199,2,6,0,0,23,201,2, +27,28,248,22,155,7,23,195,2,249,22,160,7,23,196,2,34,249,22,186,12, +248,22,187,12,23,197,2,11,27,28,248,22,155,7,23,196,2,249,22,160,7, +23,197,2,35,248,80,158,41,50,23,195,2,91,159,37,11,90,161,37,34,11, +28,248,22,155,7,23,199,2,250,22,7,2,22,249,22,160,7,23,203,2,36, +2,22,248,22,180,12,23,198,2,87,95,23,195,1,23,193,1,27,28,248,22, +155,7,23,200,2,249,22,160,7,23,201,2,37,249,80,158,46,51,23,197,2, +5,0,27,28,248,22,155,7,23,201,2,249,22,160,7,23,202,2,38,248,22, +148,4,23,200,2,27,27,250,22,126,80,158,50,41,248,22,163,13,247,22,147, +11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,120,87,94,250,22,125, +80,158,51,41,248,22,163,13,247,22,147,11,195,192,87,95,28,23,209,1,27, +250,22,126,23,197,2,197,11,28,23,193,1,12,87,95,27,27,28,248,22,17, +80,158,50,44,80,158,49,44,247,22,19,250,22,25,248,22,23,23,197,2,80, +158,52,43,23,196,1,27,247,22,147,11,249,22,3,83,158,38,20,97,94,89, +162,8,44,35,53,9,226,12,11,2,3,33,46,23,195,1,23,196,1,248,28, +248,22,17,80,158,49,44,32,0,89,162,42,35,40,9,222,33,47,80,159,48, +56,35,89,162,42,34,49,9,227,14,9,8,4,3,33,48,250,22,125,23,197, +1,197,10,12,28,28,248,22,155,7,23,202,1,11,27,248,22,133,6,23,208, +2,28,192,192,28,248,22,61,23,208,2,249,22,138,8,248,22,64,23,210,2, +2,21,11,250,22,125,80,158,49,42,28,248,22,133,6,23,210,2,249,22,63, +23,211,1,248,80,159,52,54,35,23,213,1,87,94,23,210,1,249,22,63,23, +211,1,247,22,136,13,252,22,157,7,23,208,1,23,207,1,23,205,1,23,203, +1,201,12,193,91,159,36,10,90,161,35,34,10,11,90,161,35,35,10,83,158, +37,20,96,96,2,20,89,162,8,44,35,49,9,224,2,0,33,42,89,162,42, +37,47,9,223,1,33,43,89,162,42,38,8,30,9,225,2,3,0,33,49,208, +87,95,248,22,130,4,248,80,158,36,48,247,22,147,11,248,22,184,5,80,158, +35,35,248,22,133,12,80,159,35,40,35,159,34,20,103,159,34,16,1,20,24, +65,98,101,103,105,110,16,0,83,158,40,20,100,137,66,35,37,98,111,111,116, +2,1,11,10,10,36,80,158,34,34,20,103,159,38,16,19,30,2,1,2,2, +193,30,2,1,2,3,193,30,2,5,72,112,97,116,104,45,115,116,114,105,110, +103,63,10,30,2,5,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105, +120,7,30,2,6,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105, +111,110,45,107,101,121,4,30,2,6,1,23,101,120,116,101,110,100,45,112,97, +114,97,109,101,116,101,114,105,122,97,116,105,111,110,3,30,2,1,2,7,193, +30,2,1,2,8,193,30,2,1,2,9,193,30,2,1,2,10,193,30,2,1, +2,11,193,30,2,1,2,12,193,30,2,1,2,13,193,30,2,1,2,14,193, +30,2,1,2,15,193,30,2,5,69,45,102,105,110,100,45,99,111,108,0,30, +2,5,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,6,30, +2,5,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105, +120,9,30,2,1,2,16,193,16,0,11,11,16,11,2,10,2,11,2,8,2, +9,2,12,2,13,2,3,2,7,2,2,2,15,2,14,45,11,37,34,11,16, +1,9,16,1,2,16,16,1,11,16,1,2,16,35,35,35,11,11,16,0,16, +0,16,0,34,34,11,11,11,16,0,16,0,16,0,34,34,16,0,16,16,83, +158,34,16,2,89,162,42,35,43,9,223,0,33,23,80,159,34,56,35,83,158, +34,16,2,89,162,8,44,35,43,9,223,0,33,24,80,159,34,55,35,83,158, +34,16,2,89,162,42,35,47,67,103,101,116,45,100,105,114,223,0,33,25,80, +159,34,54,35,83,158,34,16,2,89,162,42,36,47,68,119,105,116,104,45,100, +105,114,223,0,33,26,80,159,34,53,35,83,158,34,16,2,248,22,152,7,69, +115,111,45,115,117,102,102,105,120,80,159,34,34,35,83,158,34,16,2,89,162, +42,36,58,2,3,223,0,33,35,80,159,34,35,35,83,158,34,16,2,32,0, +89,162,8,44,35,40,2,7,222,192,80,159,34,40,35,83,158,34,16,2,248, +22,120,2,18,80,159,34,41,35,83,158,34,16,2,249,22,120,2,18,65,101, +113,117,97,108,80,159,34,42,35,83,158,34,16,2,247,22,59,80,159,34,43, +35,83,158,34,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111,97,100, +105,110,103,80,159,34,44,35,83,158,34,16,2,11,80,158,34,45,83,158,34, +16,2,11,80,158,34,46,83,158,34,16,2,32,0,89,162,42,36,43,2,14, +222,33,41,80,159,34,47,35,83,158,34,16,2,89,162,8,44,35,43,2,15, +223,0,33,50,80,159,34,48,35,83,158,34,16,2,89,162,42,34,42,2,16, +223,0,33,51,80,159,34,52,35,95,29,94,2,4,68,35,37,107,101,114,110, +101,108,11,29,94,2,4,69,35,37,109,105,110,45,115,116,120,11,2,5,9, +9,9,34,0}; + EVAL_ONE_SIZED_STR((char *)expr, 4119); } diff --git a/src/mzscheme/src/env.c b/src/mzscheme/src/env.c index d266da7039..76a652f9a6 100644 --- a/src/mzscheme/src/env.c +++ b/src/mzscheme/src/env.c @@ -1766,7 +1766,7 @@ Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Objec marks is relatively expensive, but we only do this once per definition. */ if (!bdg) - bdg = scheme_stx_moduleless_env(id, 0 /* renames currently don't depend on phase */); + bdg = scheme_stx_moduleless_env(id); marks = scheme_stx_extract_marks(id); if (SCHEME_NULLP(marks) && SCHEME_FALSEP(bdg)) return sym; @@ -1791,7 +1791,7 @@ Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Objec if (!bdg) { /* We need lexical binding, if any, too: */ - bdg = scheme_stx_moduleless_env(id, 0 /* renames currently don't depend on phase */); + bdg = scheme_stx_moduleless_env(id); } if (!marks) { @@ -1833,9 +1833,10 @@ Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Objec break; } } else { - if (!SCHEME_PAIRP(marks)) { + if (!SCHEME_PAIRP(marks)) { /* To be better than nothing, could only match exactly: */ - if (scheme_equal(amarks, marks)) { + if (scheme_equal(amarks, marks) + || SCHEME_NULLP(amarks)) { best_match = SCHEME_CDR(a); best_match_skipped = 0; } diff --git a/src/mzscheme/src/module.c b/src/mzscheme/src/module.c index 55c228b046..ce4dabe4b7 100644 --- a/src/mzscheme/src/module.c +++ b/src/mzscheme/src/module.c @@ -5480,7 +5480,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, all_simple_renames = 0; } else scheme_extend_module_rename(rn, self_modidx, name, name, self_modidx, name, 0, NULL, NULL, 0); - + vars = SCHEME_STX_CDR(vars); } diff --git a/src/mzscheme/src/mzmark.c b/src/mzscheme/src/mzmark.c index 81c769279e..66c6cb4b59 100644 --- a/src/mzscheme/src/mzmark.c +++ b/src/mzscheme/src/mzmark.c @@ -4842,6 +4842,7 @@ static int mark_rename_table_MARK(void *p) { gcMARK(rn->unmarshal_info); gcMARK(rn->shared_pes); gcMARK(rn->plus_kernel_nominal_source); + gcMARK(rn->set_identity); gcMARK(rn->marked_names); return gcBYTES_TO_WORDS(sizeof(Module_Renames)); @@ -4855,6 +4856,7 @@ static int mark_rename_table_FIXUP(void *p) { gcFIXUP(rn->unmarshal_info); gcFIXUP(rn->shared_pes); gcFIXUP(rn->plus_kernel_nominal_source); + gcFIXUP(rn->set_identity); gcFIXUP(rn->marked_names); return gcBYTES_TO_WORDS(sizeof(Module_Renames)); @@ -4875,6 +4877,7 @@ static int mark_rename_table_set_MARK(void *p) { gcMARK(rns->rt); gcMARK(rns->other_phases); gcMARK(rns->share_marked_names); + gcMARK(rns->set_identity); return gcBYTES_TO_WORDS(sizeof(Module_Renames_Set)); } @@ -4885,6 +4888,7 @@ static int mark_rename_table_set_FIXUP(void *p) { gcFIXUP(rns->rt); gcFIXUP(rns->other_phases); gcFIXUP(rns->share_marked_names); + gcFIXUP(rns->set_identity); return gcBYTES_TO_WORDS(sizeof(Module_Renames_Set)); } diff --git a/src/mzscheme/src/mzmarksrc.c b/src/mzscheme/src/mzmarksrc.c index 3254d720a5..0c73190276 100644 --- a/src/mzscheme/src/mzmarksrc.c +++ b/src/mzscheme/src/mzmarksrc.c @@ -1977,6 +1977,7 @@ mark_rename_table { gcMARK(rn->unmarshal_info); gcMARK(rn->shared_pes); gcMARK(rn->plus_kernel_nominal_source); + gcMARK(rn->set_identity); gcMARK(rn->marked_names); size: gcBYTES_TO_WORDS(sizeof(Module_Renames)); @@ -1989,6 +1990,7 @@ mark_rename_table_set { gcMARK(rns->rt); gcMARK(rns->other_phases); gcMARK(rns->share_marked_names); + gcMARK(rns->set_identity); size: gcBYTES_TO_WORDS(sizeof(Module_Renames_Set)); } diff --git a/src/mzscheme/src/schpriv.h b/src/mzscheme/src/schpriv.h index b3f6667a9f..9ceb4ec434 100644 --- a/src/mzscheme/src/schpriv.h +++ b/src/mzscheme/src/schpriv.h @@ -709,7 +709,7 @@ Scheme_Object *scheme_stx_module_name(Scheme_Object **name, Scheme_Object *phase Scheme_Object **mod_phase, Scheme_Object **src_phase_index, Scheme_Object **nominal_src_phase); -Scheme_Object *scheme_stx_moduleless_env(Scheme_Object *a, Scheme_Object *phase); +Scheme_Object *scheme_stx_moduleless_env(Scheme_Object *a); int scheme_stx_parallel_is_used(Scheme_Object *sym, Scheme_Object *stx); int scheme_stx_bound_eq(Scheme_Object *a, Scheme_Object *b, Scheme_Object *phase); diff --git a/src/mzscheme/src/schvers.h b/src/mzscheme/src/schvers.h index e1435fbfab..3cc77a91eb 100644 --- a/src/mzscheme/src/schvers.h +++ b/src/mzscheme/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "3.99.0.13" +#define MZSCHEME_VERSION "3.99.0.14" #define MZSCHEME_VERSION_X 3 #define MZSCHEME_VERSION_Y 99 #define MZSCHEME_VERSION_Z 0 -#define MZSCHEME_VERSION_W 13 +#define MZSCHEME_VERSION_W 14 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) diff --git a/src/mzscheme/src/stxobj.c b/src/mzscheme/src/stxobj.c index 27791d9362..c305ca339f 100644 --- a/src/mzscheme/src/stxobj.c +++ b/src/mzscheme/src/stxobj.c @@ -118,6 +118,7 @@ typedef struct Module_Renames { char plus_kernel, kind, needs_unmarshal, sealed; Scheme_Object *phase; Scheme_Object *plus_kernel_nominal_source; + Scheme_Object *set_identity; Scheme_Hash_Table *ht; /* localname -> modidx OR (cons modidx exportname) OR (cons modidx nominal_modidx) OR @@ -137,6 +138,7 @@ typedef struct Module_Renames { typedef struct Module_Renames_Set { Scheme_Object so; /* scheme_rename_table_set_type */ char kind, sealed; + Scheme_Object *set_identity; Module_Renames *rt, *et; Scheme_Hash_Table *other_phases; Scheme_Object *share_marked_names; /* a Module_Renames_Set */ @@ -1060,11 +1062,18 @@ static int same_phase(Scheme_Object *a, Scheme_Object *b) Scheme_Object *scheme_make_module_rename_set(int kind, Scheme_Object *share_marked_names) { Module_Renames_Set *mrns; + Scheme_Object *mk; + + if (share_marked_names) + mk = ((Module_Renames_Set *)share_marked_names)->set_identity; + else + mk = scheme_new_mark(); mrns = MALLOC_ONE_TAGGED(Module_Renames_Set); mrns->so.type = scheme_rename_table_set_type; mrns->kind = kind; mrns->share_marked_names = share_marked_names; + mrns->set_identity = mk; return (Scheme_Object *)mrns; } @@ -1074,6 +1083,8 @@ void scheme_add_module_rename_to_set(Scheme_Object *set, Scheme_Object *rn) Module_Renames_Set *mrns = (Module_Renames_Set *)set; Module_Renames *mrn = (Module_Renames *)rn; + mrn->set_identity = mrns->set_identity; + if (same_phase(mrn->phase, scheme_make_integer(0))) mrns->rt = mrn; else if (same_phase(mrn->phase, scheme_make_integer(1))) @@ -1144,6 +1155,9 @@ Scheme_Object *scheme_make_module_rename(Scheme_Object *phase, int kind, Scheme_ { Module_Renames *mr; Scheme_Hash_Table *ht; + Scheme_Object *mk; + + mk = scheme_new_mark(); mr = MALLOC_ONE_TAGGED(Module_Renames); mr->so.type = scheme_rename_table_type; @@ -1153,6 +1167,7 @@ Scheme_Object *scheme_make_module_rename(Scheme_Object *phase, int kind, Scheme_ mr->ht = ht; mr->phase = phase; mr->kind = kind; + mr->set_identity = mk; mr->marked_names = marked_names; mr->shared_pes = scheme_null; mr->unmarshal_info = scheme_null; @@ -2802,6 +2817,83 @@ int scheme_stx_has_empty_wraps(Scheme_Object *o) /* stx comparison */ /*========================================================================*/ +/* If no marks and no rename with this set's tag, + then it was an unmarked-but-actually-introduced id. */ + +static Scheme_Object *check_floating_id(Scheme_Object *stx) +{ + /* If `a' has a mzMOD_RENAME_MARKED rename with no following + mzMOD_RENAME_NORMAL using the same set tag, and if there are no + marks after the mzMOD_RENAME_MARKED rename, then we've hit a + corner case: an identifier that was introduced by macro expansion + but marked so that it appears to be original. To ensure that it + gets a generated symbol in the MOD_RENAME_MARKED table, give it a + "floating" binding: scheme_void. This is a rare case, and it more + likely indicates a buggy macro than anything else. */ + WRAP_POS awl; + Scheme_Object *cur_mark = NULL, *searching_identity = NULL, *a; + int no_mark_means_floating = 0; + + WRAP_POS_INIT(awl, ((Scheme_Stx *)stx)->wraps); + + while (!WRAP_POS_END_P(awl)) { + + a = WRAP_POS_FIRST(awl); + + if (SCHEME_RENAMESP(a) + || SCHEME_RENAMES_SETP(a)) { + int kind; + Scheme_Object *set_identity; + + if (SCHEME_RENAMESP(a)) { + Module_Renames *mrn = (Module_Renames *)a; + + kind = mrn->kind; + set_identity = mrn->set_identity; + } else { + Module_Renames_Set *mrns = (Module_Renames_Set *)a; + + kind = mrns->kind; + set_identity = mrns->set_identity; + } + + if (SAME_OBJ(set_identity, searching_identity)) + searching_identity = NULL; + + if (searching_identity) + no_mark_means_floating = 1; + + if (kind == mzMOD_RENAME_MARKED) + searching_identity = set_identity; + else + searching_identity = NULL; + + } else if (SCHEME_MARKP(a)) { + if (SAME_OBJ(a, cur_mark)) + cur_mark = 0; + else { + if (cur_mark) { + no_mark_means_floating = 0; + searching_identity = NULL; + } + cur_mark = a; + } + } + + WRAP_POS_INC(awl); + } + + if (cur_mark) { + no_mark_means_floating = 0; + searching_identity = NULL; + } + + if (searching_identity || no_mark_means_floating) + return scheme_void; + + return scheme_false; +} + XFORM_NONGCING static int same_marks(WRAP_POS *_awl, WRAP_POS *_bwl, Scheme_Object *barrier_env, Scheme_Object *ignore_rib) /* Compares the marks in two wraps lists. A result of 2 means that the @@ -3208,8 +3300,11 @@ static Scheme_Object *resolve_env(WRAP_POS *_wraps, if (mrn->marked_names) { /* Resolve based on rest of wraps: */ - if (!bdg) - bdg = resolve_env(NULL, a, orig_phase, 0, NULL, skip_ribs); + if (!bdg) { + bdg = resolve_env(&wraps, a, orig_phase, 0, NULL, skip_ribs); + if (SCHEME_FALSEP(bdg)) + bdg = check_floating_id(a); + } /* Remap id based on marks and rest-of-wraps resolution: */ glob_id = scheme_tl_id_sym((Scheme_Env *)mrn->marked_names, a, bdg, 0, NULL); if (SCHEME_TRUEP(bdg) @@ -3591,6 +3686,8 @@ static Scheme_Object *get_module_src_name(Scheme_Object *a, Scheme_Object *orig_ /* Resolve based on rest of wraps: */ if (!bdg) bdg = resolve_env(&wraps, a, orig_phase, 0, NULL, NULL); + if (SCHEME_FALSEP(bdg)) + bdg = check_floating_id(a); /* Remap id based on marks and rest-of-wraps resolution: */ glob_id = scheme_tl_id_sym((Scheme_Env *)mrn->marked_names, a, bdg, 0, NULL); } else @@ -3731,13 +3828,16 @@ Scheme_Object *scheme_stx_module_name(Scheme_Object **a, Scheme_Object *phase, return NULL; } -Scheme_Object *scheme_stx_moduleless_env(Scheme_Object *a, Scheme_Object *phase) +Scheme_Object *scheme_stx_moduleless_env(Scheme_Object *a) /* Returns either NULL or a lexical-rename symbol */ { if (SCHEME_STXP(a)) { Scheme_Object *r; - r = resolve_env(NULL, a, phase, 0, NULL, NULL); + r = resolve_env(NULL, a, scheme_make_integer(0), 0, NULL, NULL); + + if (SCHEME_FALSEP(r)) + r = check_floating_id(a); if (r) return r; @@ -4662,6 +4762,7 @@ static Scheme_Object *wraps_to_datum(Scheme_Object *w_in, if (SCHEME_PAIRP(mrn->unmarshal_info)) l = CONS(mrn->unmarshal_info, l); + l = CONS(mrn->set_identity, l); l = CONS((mrn->kind == mzMOD_RENAME_MARKED) ? scheme_true : scheme_false, l); l = CONS(mrn->phase, l); if (mrn->plus_kernel) { @@ -5246,7 +5347,7 @@ static Scheme_Object *datum_to_wraps(Scheme_Object *w, Module_Renames *mrn; Scheme_Object *p, *key; int plus_kernel, i, count, kind; - Scheme_Object *phase; + Scheme_Object *phase, *set_identity; if (!SCHEME_PAIRP(a)) return_NULL; @@ -5270,8 +5371,13 @@ static Scheme_Object *datum_to_wraps(Scheme_Object *w, kind = mzMOD_RENAME_NORMAL; a = SCHEME_CDR(a); + if (!SCHEME_PAIRP(a)) return_NULL; + set_identity = unmarshal_mark(SCHEME_CAR(a), ut); + a = SCHEME_CDR(a); + mrn = (Module_Renames *)scheme_make_module_rename(phase, kind, NULL); mrn->plus_kernel = plus_kernel; + mrn->set_identity = set_identity; if (!SCHEME_PAIRP(a)) return_NULL; mns = SCHEME_CDR(a);