From 39a96dd699a7bb287668cf97d76698fcbb3df1aa Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 7 Aug 2011 13:16:32 -0600 Subject: [PATCH] add `prop:liberal-define-context' --- collects/racket/block.rkt | 8 +- collects/racket/package.rkt | 9 +- collects/racket/private/kw.rkt | 5 +- .../scribblings/reference/stx-trans.scrbl | 34 +- collects/syntax/context.rkt | 10 +- src/racket/src/compile.c | 3 +- src/racket/src/cstartup.inc | 708 +++++++++--------- src/racket/src/schminc.h | 2 +- src/racket/src/schpriv.h | 2 + src/racket/src/schvers.h | 4 +- src/racket/src/struct.c | 67 +- 11 files changed, 477 insertions(+), 375 deletions(-) diff --git a/collects/racket/block.rkt b/collects/racket/block.rkt index 26f1c41cf4..efe9b3f087 100644 --- a/collects/racket/block.rkt +++ b/collects/racket/block.rkt @@ -13,12 +13,18 @@ (#%provide block) +(define-values-for-syntax (make-context) + (let-values ([(struct: mk ? ref set) + (make-struct-type 'in-liberal-define-context #f 0 0 #f + (list (cons prop:liberal-define-context #t)))]) + mk)) + (define-syntax (block stx) ;; Body can have mixed exprs and defns. Wrap expressions with ;; `(define-values () ... (values))' as needed, and add a (void) ;; at the end if needed. (let* ([def-ctx (syntax-local-make-definition-context)] - [ctx (list (gensym 'intdef))] + [ctx (list (make-context))] ;; [kernel-forms (kernel-form-identifier-list)] [stoplist (list #'begin #'define-syntaxes #'define-values)] [init-exprs (let ([v (syntax->list stx)]) diff --git a/collects/racket/package.rkt b/collects/racket/package.rkt index 3052588932..73943bb421 100644 --- a/collects/racket/package.rkt +++ b/collects/racket/package.rkt @@ -4,7 +4,8 @@ syntax/kerncase syntax/boundmap syntax/define - syntax/flatten-begin)) + syntax/flatten-begin + syntax/context)) (provide define-package package-begin @@ -141,11 +142,7 @@ stx exports)])]) (let* ([def-ctx (syntax-local-make-definition-context)] - [ctx (cons (gensym 'intdef) - (let ([orig-ctx (syntax-local-context)]) - (if (pair? orig-ctx) - orig-ctx - null)))] + [ctx (generate-expand-context #t)] [pre-package-id (lambda (id def-ctxes) (identifier-remove-from-definition-context id diff --git a/collects/racket/private/kw.rkt b/collects/racket/private/kw.rkt index e0976864cb..4709f742f7 100644 --- a/collects/racket/private/kw.rkt +++ b/collects/racket/private/kw.rkt @@ -785,7 +785,10 @@ (define #,id #,rhs)))]) (syntax-case rhs () [(lam-id . _) - (and (memq (syntax-local-context) '(top-level module module-begin)) + (and (let ([ctx (syntax-local-context)]) + (or (memq ctx '(top-level module module-begin)) + (and (list? ctx) + (andmap liberal-define-context? ctx)))) (identifier? #'lam-id) (or (free-identifier=? #'lam-id #'new-lambda) (free-identifier=? #'lam-id #'new-λ))) diff --git a/collects/scribblings/reference/stx-trans.scrbl b/collects/scribblings/reference/stx-trans.scrbl index f823a8d59b..a94a3fa884 100644 --- a/collects/scribblings/reference/stx-trans.scrbl +++ b/collects/scribblings/reference/stx-trans.scrbl @@ -194,9 +194,8 @@ with an empty context is used, instead.} Expands @racket[stx] in the lexical context of the expression currently being expanded. The @racket[context-v] argument is used as the result of @racket[syntax-local-context] for immediate expansions; -for a particular @tech{internal-definition context}, generate a unique -value and @racket[cons] it onto the current result of -@racket[syntax-local-context] if it is a list. +a list indicates an @tech{internal-definition context}, and more +information on the form of the list is below. When an identifier in @racket[stop-ids] is encountered by the expander in a sub-expression, expansions stops for the sub-expression. If @@ -226,6 +225,17 @@ internal definitions is added to @racket[stx] before it is expanded also added to the expansion result (because the expansion might introduce bindings or references to internal-definition bindings). +For a particular @tech{internal-definition context}, generate a unique +value and put it into a list for @racket[context-v]. To allow +@tech{liberal expansion} of @racket[define] forms, the generated value +should be an instance of a structure with a true value for +@racket[prop:liberal-define-context]. If the internal-definition +context is meant to be self-contained, the list for @racket[context-c] +should contain only the generated value; if the internal-definition +context is meant to splice into an immediately enclosing context, then +when @racket[syntax-local-context] produces a list, @racket[cons] the +generated value onto that list. + @transform-time[] @examples[#:eval stx-eval @@ -777,6 +787,24 @@ includes the identifier by its internal name. Use @racket[identifier-binding] to obtain more information about the identifier.} +@deftogether[( +@defthing[prop:liberal-define-context struct-type-property?] +@defproc[(liberal-define-context? [v any/c]) boolean?] +)]{ + +An instance of a structure type with a true value for the +@racket[prop:liberal-define-context] property can be used as an +element of an @tech{internal-definition context} representation in the +result of @racket[syntax-local-context] for the second argument of +@racket[local-expand]. Such a value indicates that the context +supports @deftech{liberal expansion} of @racket[define] forms into +potentially multiple @racket[define-values] and +@racket[define-syntaxes] forms. + +The @racket[liberal-define-context?] predicate returns @racket[#t] if +@arcket[v] is an instance of a structure with a true value for the +@racket[prop:liberal-define-context] property, @racket[#f] otherwise.} + @; ---------------------------------------------------------------------- @section[#:tag "require-trans"]{@racket[require] Transformers} diff --git a/collects/syntax/context.rkt b/collects/syntax/context.rkt index 934c4512bd..5a970657cf 100644 --- a/collects/syntax/context.rkt +++ b/collects/syntax/context.rkt @@ -1,4 +1,4 @@ -#lang scheme/base +#lang racket/base (provide build-expand-context generate-expand-context) @@ -9,6 +9,10 @@ (cons v c) (list v)))) -(define (generate-expand-context) - (build-expand-context (gensym 'internal-define))) +(struct in-liberal-define-context () + #:property prop:liberal-define-context #t) +(define (generate-expand-context [liberal-definitions? #f]) + (build-expand-context (if liberal-definitions? + (in-liberal-define-context) + (gensym 'internal-define)))) diff --git a/src/racket/src/compile.c b/src/racket/src/compile.c index 28698e77f2..913c245c70 100644 --- a/src/racket/src/compile.c +++ b/src/racket/src/compile.c @@ -5369,7 +5369,8 @@ compile_expand_block(Scheme_Object *forms, Scheme_Comp_Env *env, d[0] = env; SCHEME_PTR1_VAL(ctx) = d; SCHEME_PTR2_VAL(ctx) = rib; - ectx = scheme_make_pair(ctx, scheme_null); + ectx = scheme_make_pair(scheme_make_struct_instance(scheme_liberal_def_ctx_type, 0, NULL), + scheme_null); scheme_begin_dup_symbol_check(&r, env); try_again: diff --git a/src/racket/src/cstartup.inc b/src/racket/src/cstartup.inc index bb42950e2d..5f909c6d3d 100644 --- a/src/racket/src/cstartup.inc +++ b/src/racket/src/cstartup.inc @@ -1,43 +1,43 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,50,46,51,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,49,46,50,46,52,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,22, -0,26,0,31,0,38,0,45,0,50,0,55,0,59,0,72,0,79,0,82,0, +0,26,0,31,0,38,0,51,0,58,0,63,0,68,0,72,0,79,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,69,7,0,0,69,35,37,109, 105,110,45,115,116,120,29,11,11,68,104,101,114,101,45,115,116,120,63,108,101, -116,64,99,111,110,100,66,117,110,108,101,115,115,66,100,101,102,105,110,101,64, -119,104,101,110,64,108,101,116,42,63,97,110,100,72,112,97,114,97,109,101,116, -101,114,105,122,101,66,108,101,116,114,101,99,62,111,114,29,11,11,65,113,117, +116,64,99,111,110,100,66,117,110,108,101,115,115,72,112,97,114,97,109,101,116, +101,114,105,122,101,66,100,101,102,105,110,101,64,119,104,101,110,64,108,101,116, +42,63,97,110,100,66,108,101,116,114,101,99,62,111,114,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,91,74,0, +100,101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,148,75,0, 0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,16,20,2,4, 2,2,2,6,2,2,2,7,2,2,2,8,2,2,2,9,2,2,2,10,2, -2,2,5,2,2,2,11,2,2,2,12,2,2,2,13,2,2,97,37,11,8, -240,91,74,0,0,93,159,2,16,36,37,16,2,2,3,161,2,2,37,2,3, -2,2,2,3,96,38,11,8,240,91,74,0,0,16,0,96,11,11,8,240,91, -74,0,0,16,0,18,98,64,104,101,114,101,13,16,5,36,2,14,2,2,11, +2,2,11,2,2,2,5,2,2,2,12,2,2,2,13,2,2,97,37,11,8, +240,148,75,0,0,93,159,2,16,36,37,16,2,2,3,161,2,2,37,2,3, +2,2,2,3,96,38,11,8,240,148,75,0,0,16,0,96,11,11,8,240,148, +75,0,0,16,0,18,98,64,104,101,114,101,13,16,5,36,2,14,2,2,11, 11,8,32,8,31,8,30,8,29,27,248,22,155,4,195,249,22,148,4,80,158, 39,36,251,22,83,2,18,248,22,98,199,12,249,22,73,2,19,248,22,100,201, 27,248,22,155,4,195,249,22,148,4,80,158,39,36,251,22,83,2,18,248,22, 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,10,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,49,49,52,16,4,11,11,2,21,3,1,8,101,110,118,49,52,49,49,53, +52,53,53,50,16,4,11,11,2,21,3,1,8,101,110,118,49,52,53,53,51, 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,13,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,49,49,55,16,4,11,11,2,21,3,1,8,101, -110,118,49,52,49,49,56,248,22,155,4,193,27,248,22,155,4,194,249,22,73, +3,1,8,101,110,118,49,52,53,53,53,16,4,11,11,2,21,3,1,8,101, +110,118,49,52,53,53,54,248,22,155,4,193,27,248,22,155,4,194,249,22,73, 248,22,83,248,22,74,196,248,22,75,195,27,248,22,75,248,22,155,4,23,197, 1,249,22,148,4,80,158,39,36,28,248,22,58,248,22,149,4,248,22,74,23, 198,2,27,249,22,2,32,0,88,163,8,36,37,43,11,9,222,33,40,248,22, @@ -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,4,248,22,83,248,22,74,199,250,22,84,2,9,248,22,75,201, +250,22,83,2,4,248,22,83,248,22,74,199,250,22,84,2,10,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,174,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, @@ -67,8 +67,8 @@ 140,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,49,52,48,16,4,11,11,2,21,3,1,8, -101,110,118,49,52,49,52,49,18,158,94,10,64,118,111,105,100,8,48,27,248, +20,3,1,8,101,110,118,49,52,53,55,56,16,4,11,11,2,21,3,1,8, +101,110,118,49,52,53,55,57,18,158,94,10,64,118,111,105,100,8,48,27,248, 22,75,248,22,155,4,196,249,22,148,4,80,158,39,36,28,248,22,58,248,22, 149,4,248,22,74,197,250,22,83,2,28,248,22,83,248,22,74,199,248,22,98, 198,27,248,22,149,4,248,22,74,197,250,22,83,2,28,248,22,83,248,22,74, @@ -81,24 +81,24 @@ 37,11,11,16,0,16,0,16,0,36,36,11,11,11,16,0,16,0,16,0,36, 36,16,11,16,5,2,3,20,14,159,36,36,36,36,20,112,159,36,16,0,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,3,16,0,11,16,5,2,8,88,163,8,36,37,53, +20,112,159,36,16,1,2,3,16,0,11,16,5,2,9,88,163,8,36,37,53, 37,9,223,0,33,35,36,20,112,159,36,16,1,2,3,16,0,11,16,5,2, -10,88,163,8,36,37,53,37,9,223,0,33,36,36,20,112,159,36,16,1,2, +11,88,163,8,36,37,53,37,9,223,0,33,36,36,20,112,159,36,16,1,2, 3,16,1,33,37,11,16,5,2,13,88,163,8,36,37,56,37,9,223,0,33, 38,36,20,112,159,36,16,1,2,3,16,1,33,39,11,16,5,2,4,88,163, 8,36,37,58,37,9,223,0,33,42,36,20,112,159,36,16,1,2,3,16,0, 11,16,5,2,12,88,163,8,36,37,53,37,9,223,0,33,44,36,20,112,159, -36,16,1,2,3,16,0,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,3,16,0,11,16,5,2,11,88,163, +36,16,1,2,3,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,3,16,0,11,16,5,2,7,88,163, 8,36,37,56,37,9,223,0,33,46,36,20,112,159,36,16,1,2,3,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,3,16,1,33,49,11,16,5,2,7,88,163,8,36,37,54,37, +36,16,1,2,3,16,1,33,49,11,16,5,2,8,88,163,8,36,37,54,37, 9,223,0,33,50,36,20,112,159,36,16,1,2,3,16,0,11,16,0,94,2, 16,2,17,93,2,16,9,9,36,0}; EVAL_ONE_SIZED_STR((char *)expr, 2004); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,50,46,51,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,49,46,50,46,52,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,82,0,0,0,1,0,0,8,0,21,0,26, 0,43,0,58,0,76,0,92,0,106,0,128,0,146,0,166,0,182,0,200,0, 231,0,4,1,26,1,40,1,46,1,60,1,65,1,75,1,83,1,111,1,143, @@ -138,411 +138,411 @@ 11,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,72,99, 111,108,108,101,99,116,115,45,100,105,114,5,0,5,0,27,20,13,159,80,159, -37,52,38,250,80,159,40,53,38,249,22,27,11,80,159,42,52,38,22,184,13, +37,52,38,250,80,159,40,53,38,249,22,27,11,80,159,42,52,38,22,186,13, 10,248,22,190,5,23,196,2,28,248,22,189,6,23,194,2,12,86,94,248,22, 148,9,23,194,1,27,20,13,159,80,159,38,52,38,250,80,159,41,53,38,249, -22,27,11,80,159,43,52,38,22,184,13,10,248,22,190,5,23,197,2,28,248, +22,27,11,80,159,43,52,38,22,186,13,10,248,22,190,5,23,197,2,28,248, 22,189,6,23,194,2,12,86,94,248,22,148,9,23,194,1,27,20,13,159,80, -159,39,52,38,250,80,159,42,53,38,249,22,27,11,80,159,44,52,38,22,184, +159,39,52,38,250,80,159,42,53,38,249,22,27,11,80,159,44,52,38,22,186, 13,10,248,22,190,5,23,198,2,28,248,22,189,6,23,194,2,12,86,94,248, 22,148,9,23,194,1,248,80,159,40,57,37,197,28,248,22,81,23,195,2,9, -27,248,22,74,23,196,2,27,28,248,22,170,14,23,195,2,23,194,1,28,248, -22,169,14,23,195,2,249,22,171,14,23,196,1,250,80,158,43,50,248,22,186, -14,2,21,11,10,250,80,158,41,50,248,22,186,14,2,21,23,197,1,10,28, -23,193,2,249,22,73,248,22,173,14,249,22,171,14,23,198,1,247,22,187,14, +27,248,22,74,23,196,2,27,28,248,22,172,14,23,195,2,23,194,1,28,248, +22,171,14,23,195,2,249,22,173,14,23,196,1,250,80,158,43,50,248,22,188, +14,2,21,11,10,250,80,158,41,50,248,22,188,14,2,21,23,197,1,10,28, +23,193,2,249,22,73,248,22,175,14,249,22,173,14,23,198,1,247,22,189,14, 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,170,14,23,195,2,23,194,1,28,248,22,169,14,23,195,2, -249,22,171,14,23,196,1,250,80,158,48,50,248,22,186,14,2,21,11,10,250, -80,158,46,50,248,22,186,14,2,21,23,197,1,10,28,23,193,2,249,22,73, -248,22,173,14,249,22,171,14,23,198,1,247,22,187,14,248,80,159,46,56,37, +2,27,28,248,22,172,14,23,195,2,23,194,1,28,248,22,171,14,23,195,2, +249,22,173,14,23,196,1,250,80,158,48,50,248,22,188,14,2,21,11,10,250, +80,158,46,50,248,22,188,14,2,21,23,197,1,10,28,23,193,2,249,22,73, +248,22,175,14,249,22,173,14,23,198,1,247,22,189,14,248,80,159,46,56,37, 248,22,75,23,199,1,86,94,23,193,1,248,80,159,44,56,37,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,170,14,23,195,2,23,194,1,28, -248,22,169,14,23,195,2,249,22,171,14,23,196,1,250,80,158,46,50,248,22, -186,14,2,21,11,10,250,80,158,44,50,248,22,186,14,2,21,23,197,1,10, -28,23,193,2,249,22,73,248,22,173,14,249,22,171,14,23,198,1,247,22,187, +9,27,248,22,74,23,195,2,27,28,248,22,172,14,23,195,2,23,194,1,28, +248,22,171,14,23,195,2,249,22,173,14,23,196,1,250,80,158,46,50,248,22, +188,14,2,21,11,10,250,80,158,44,50,248,22,188,14,2,21,23,197,1,10, +28,23,193,2,249,22,73,248,22,175,14,249,22,173,14,23,198,1,247,22,189, 14,248,80,159,44,56,37,248,22,75,23,199,1,248,80,159,42,56,37,248,22, 75,196,28,248,22,81,23,195,2,9,27,248,22,74,23,196,2,27,28,248,22, -170,14,23,195,2,23,194,1,28,248,22,169,14,23,195,2,249,22,171,14,23, -196,1,250,80,158,43,50,248,22,186,14,2,21,11,10,250,80,158,41,50,248, -22,186,14,2,21,23,197,1,10,28,23,193,2,249,22,73,248,22,173,14,249, -22,171,14,23,198,1,247,22,187,14,248,80,159,41,55,37,248,22,75,23,200, +172,14,23,195,2,23,194,1,28,248,22,171,14,23,195,2,249,22,173,14,23, +196,1,250,80,158,43,50,248,22,188,14,2,21,11,10,250,80,158,41,50,248, +22,188,14,2,21,23,197,1,10,28,23,193,2,249,22,73,248,22,175,14,249, +22,173,14,23,198,1,247,22,189,14,248,80,159,41,55,37,248,22,75,23,200, 1,248,80,159,39,55,37,248,22,75,197,28,248,22,81,23,195,2,9,27,248, -22,74,23,196,2,27,28,248,22,170,14,23,195,2,23,194,1,28,248,22,169, -14,23,195,2,249,22,171,14,23,196,1,250,80,158,43,50,248,22,186,14,2, -21,11,10,250,80,158,41,50,248,22,186,14,2,21,23,197,1,10,28,23,193, -2,249,22,73,248,22,173,14,249,22,171,14,23,198,1,247,22,187,14,248,80, +22,74,23,196,2,27,28,248,22,172,14,23,195,2,23,194,1,28,248,22,171, +14,23,195,2,249,22,173,14,23,196,1,250,80,158,43,50,248,22,188,14,2, +21,11,10,250,80,158,41,50,248,22,188,14,2,21,23,197,1,10,28,23,193, +2,249,22,73,248,22,175,14,249,22,173,14,23,198,1,247,22,189,14,248,80, 159,41,54,37,248,22,75,23,200,1,248,80,159,39,54,37,248,22,75,197,27, -248,22,146,14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,130, -7,23,195,2,27,248,22,168,14,195,28,192,192,248,22,169,14,195,11,86,94, -28,28,248,22,147,14,23,195,2,10,28,248,22,146,14,23,195,2,10,28,248, -22,130,7,23,195,2,28,248,22,168,14,23,195,2,10,248,22,169,14,23,195, +248,22,148,14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,130, +7,23,195,2,27,248,22,170,14,195,28,192,192,248,22,171,14,195,11,86,94, +28,28,248,22,149,14,23,195,2,10,28,248,22,148,14,23,195,2,10,28,248, +22,130,7,23,195,2,28,248,22,170,14,23,195,2,10,248,22,171,14,23,195, 2,11,12,250,22,176,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,147,14,23,195,2,249,22,140, -9,248,22,148,14,23,197,2,2,22,249,22,140,9,247,22,152,8,2,22,27, -28,248,22,130,7,23,196,2,23,195,2,248,22,142,8,248,22,151,14,23,197, -2,28,249,22,137,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,130,7,195,248,22,154,14, -195,194,27,248,22,169,7,23,195,1,249,22,155,14,248,22,145,8,250,22,145, -15,0,6,35,114,120,34,47,34,28,249,22,137,15,0,22,35,114,120,34,91, +115,116,114,105,110,103,23,197,2,28,28,248,22,149,14,23,195,2,249,22,140, +9,248,22,150,14,23,197,2,2,22,249,22,140,9,247,22,152,8,2,22,27, +28,248,22,130,7,23,196,2,23,195,2,248,22,142,8,248,22,153,14,23,197, +2,28,249,22,139,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,130,7,195,248,22,156,14, +195,194,27,248,22,169,7,23,195,1,249,22,157,14,248,22,145,8,250,22,147, +15,0,6,35,114,120,34,47,34,28,249,22,139,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,145,15,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92, +199,1,250,22,147,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,22, -28,248,22,130,7,194,248,22,154,14,194,193,86,94,28,28,248,22,146,14,23, -195,2,10,28,248,22,130,7,23,195,2,28,248,22,168,14,23,195,2,10,248, -22,169,14,23,195,2,11,12,250,22,176,9,23,196,2,2,23,23,197,2,28, -248,22,168,14,23,195,2,12,248,22,160,12,249,22,166,11,248,22,159,7,250, -22,178,7,2,24,23,200,1,23,201,1,247,22,23,86,94,28,28,248,22,146, -14,23,195,2,10,28,248,22,130,7,23,195,2,28,248,22,168,14,23,195,2, -10,248,22,169,14,23,195,2,11,12,250,22,176,9,23,196,2,2,23,23,197, -2,28,248,22,168,14,23,195,2,12,248,22,160,12,249,22,166,11,248,22,159, +28,248,22,130,7,194,248,22,156,14,194,193,86,94,28,28,248,22,148,14,23, +195,2,10,28,248,22,130,7,23,195,2,28,248,22,170,14,23,195,2,10,248, +22,171,14,23,195,2,11,12,250,22,176,9,23,196,2,2,23,23,197,2,28, +248,22,170,14,23,195,2,12,248,22,162,12,249,22,168,11,248,22,159,7,250, +22,178,7,2,24,23,200,1,23,201,1,247,22,23,86,94,28,28,248,22,148, +14,23,195,2,10,28,248,22,130,7,23,195,2,28,248,22,170,14,23,195,2, +10,248,22,171,14,23,195,2,11,12,250,22,176,9,23,196,2,2,23,23,197, +2,28,248,22,170,14,23,195,2,12,248,22,162,12,249,22,168,11,248,22,159, 7,250,22,178,7,2,24,23,200,1,23,201,1,247,22,23,86,94,86,94,28, -28,248,22,146,14,23,195,2,10,28,248,22,130,7,23,195,2,28,248,22,168, -14,23,195,2,10,248,22,169,14,23,195,2,11,12,250,22,176,9,195,2,23, -23,197,2,28,248,22,168,14,23,195,2,12,248,22,160,12,249,22,166,11,248, +28,248,22,148,14,23,195,2,10,28,248,22,130,7,23,195,2,28,248,22,170, +14,23,195,2,10,248,22,171,14,23,195,2,11,12,250,22,176,9,195,2,23, +23,197,2,28,248,22,170,14,23,195,2,12,248,22,162,12,249,22,168,11,248, 22,159,7,250,22,178,7,2,24,199,23,201,1,247,22,23,249,22,3,88,163, -8,36,37,50,11,9,223,2,33,47,196,86,94,28,28,248,22,146,14,23,194, -2,10,28,248,22,130,7,23,194,2,28,248,22,168,14,23,194,2,10,248,22, -169,14,23,194,2,11,12,250,22,176,9,2,7,2,23,23,196,2,28,248,22, -168,14,23,194,2,12,248,22,160,12,249,22,166,11,248,22,159,7,250,22,178, +8,36,37,50,11,9,223,2,33,47,196,86,94,28,28,248,22,148,14,23,194, +2,10,28,248,22,130,7,23,194,2,28,248,22,170,14,23,194,2,10,248,22, +171,14,23,194,2,11,12,250,22,176,9,2,7,2,23,23,196,2,28,248,22, +170,14,23,194,2,12,248,22,162,12,249,22,168,11,248,22,159,7,250,22,178, 7,2,24,2,7,23,200,1,247,22,23,32,50,88,163,8,36,41,56,11,2, 26,222,33,51,28,248,22,81,23,197,2,86,94,23,196,1,28,23,197,2,196, -86,94,23,197,1,248,22,160,12,249,22,135,12,251,22,178,7,2,25,2,7, -28,248,22,81,23,203,2,86,94,23,202,1,23,201,1,250,22,1,22,164,14, -23,204,1,23,205,1,23,200,1,247,22,23,27,249,22,164,14,248,22,74,23, -200,2,23,197,2,28,248,22,159,14,23,194,2,27,250,22,1,22,164,14,23, -197,1,199,28,248,22,159,14,193,192,252,2,50,199,200,201,248,22,75,203,203, +86,94,23,197,1,248,22,162,12,249,22,137,12,251,22,178,7,2,25,2,7, +28,248,22,81,23,203,2,86,94,23,202,1,23,201,1,250,22,1,22,166,14, +23,204,1,23,205,1,23,200,1,247,22,23,27,249,22,166,14,248,22,74,23, +200,2,23,197,2,28,248,22,161,14,23,194,2,27,250,22,1,22,166,14,23, +197,1,199,28,248,22,161,14,193,192,252,2,50,199,200,201,248,22,75,203,203, 252,2,50,198,199,200,248,22,75,202,202,86,94,86,94,86,94,28,28,248,22, -146,14,23,194,2,10,28,248,22,130,7,23,194,2,28,248,22,168,14,23,194, -2,10,248,22,169,14,23,194,2,11,12,250,22,176,9,2,7,2,23,23,196, -2,28,248,22,168,14,23,194,2,12,248,22,160,12,249,22,166,11,248,22,159, +148,14,23,194,2,10,28,248,22,130,7,23,194,2,28,248,22,170,14,23,194, +2,10,248,22,171,14,23,194,2,11,12,250,22,176,9,2,7,2,23,23,196, +2,28,248,22,170,14,23,194,2,12,248,22,162,12,249,22,168,11,248,22,159, 7,250,22,178,7,2,24,2,7,23,200,2,247,22,23,249,22,3,32,0,88, -163,8,36,37,49,11,9,222,33,49,23,196,2,27,247,22,188,14,28,248,22, -81,23,194,2,248,22,160,12,249,22,135,12,251,22,178,7,2,25,2,7,28, -248,22,81,23,203,2,86,94,23,202,1,23,201,1,250,22,1,22,164,14,23, -204,1,23,205,1,23,200,1,247,22,23,27,249,22,164,14,248,22,74,23,197, -2,23,197,2,28,248,22,159,14,23,194,2,27,250,22,1,22,164,14,23,197, -1,199,28,248,22,159,14,193,192,252,2,50,199,200,201,248,22,75,200,11,252, -2,50,198,199,200,248,22,75,199,11,86,94,28,28,248,22,146,14,23,194,2, -10,28,248,22,130,7,23,194,2,28,248,22,168,14,23,194,2,10,248,22,169, -14,23,194,2,11,12,250,22,176,9,2,9,2,23,23,196,2,28,248,22,168, -14,23,194,2,12,248,22,160,12,249,22,166,11,248,22,159,7,250,22,178,7, +163,8,36,37,49,11,9,222,33,49,23,196,2,27,247,22,190,14,28,248,22, +81,23,194,2,248,22,162,12,249,22,137,12,251,22,178,7,2,25,2,7,28, +248,22,81,23,203,2,86,94,23,202,1,23,201,1,250,22,1,22,166,14,23, +204,1,23,205,1,23,200,1,247,22,23,27,249,22,166,14,248,22,74,23,197, +2,23,197,2,28,248,22,161,14,23,194,2,27,250,22,1,22,166,14,23,197, +1,199,28,248,22,161,14,193,192,252,2,50,199,200,201,248,22,75,200,11,252, +2,50,198,199,200,248,22,75,199,11,86,94,28,28,248,22,148,14,23,194,2, +10,28,248,22,130,7,23,194,2,28,248,22,170,14,23,194,2,10,248,22,171, +14,23,194,2,11,12,250,22,176,9,2,9,2,23,23,196,2,28,248,22,170, +14,23,194,2,12,248,22,162,12,249,22,168,11,248,22,159,7,250,22,178,7, 2,24,2,9,23,200,1,247,22,23,32,54,88,163,8,36,42,59,11,2,26, 222,33,55,28,248,22,81,23,198,2,86,95,23,197,1,23,194,1,28,23,198, -2,197,86,94,23,198,1,248,22,160,12,249,22,135,12,251,22,178,7,2,25, +2,197,86,94,23,198,1,248,22,162,12,249,22,137,12,251,22,178,7,2,25, 2,9,28,248,22,81,23,204,2,86,94,23,203,1,23,202,1,250,22,1,22, -164,14,23,205,1,23,206,1,23,200,1,247,22,23,27,249,22,164,14,248,22, -74,23,201,2,23,198,2,28,248,22,159,14,23,194,2,27,250,22,1,22,164, -14,23,197,1,23,201,2,28,248,22,159,14,23,194,2,28,23,196,2,28,28, -248,22,158,14,249,22,164,14,195,198,10,27,28,248,22,146,14,197,248,22,150, +166,14,23,205,1,23,206,1,23,200,1,247,22,23,27,249,22,166,14,248,22, +74,23,201,2,23,198,2,28,248,22,161,14,23,194,2,27,250,22,1,22,166, +14,23,197,1,23,201,2,28,248,22,161,14,23,194,2,28,23,196,2,28,28, +248,22,160,14,249,22,166,14,195,198,10,27,28,248,22,148,14,197,248,22,152, 14,197,196,27,248,22,133,7,23,195,2,27,28,249,22,188,3,23,196,2,40, 28,249,22,136,7,2,27,249,22,152,7,23,199,2,249,22,176,3,23,200,2, 40,249,22,153,7,250,22,152,7,23,200,1,36,249,22,176,3,23,201,1,40, -2,28,86,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,158,14,249, -22,164,14,198,23,196,1,11,192,253,2,54,200,201,202,203,248,22,75,205,28, +2,28,86,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,160,14,249, +22,166,14,198,23,196,1,11,192,253,2,54,200,201,202,203,248,22,75,205,28, 205,205,198,192,253,2,54,200,201,202,203,248,22,75,205,205,253,2,54,199,200, -201,202,248,22,75,204,204,86,95,86,94,28,28,248,22,146,14,193,10,28,248, -22,130,7,193,28,248,22,168,14,193,10,248,22,169,14,193,11,12,250,22,176, -9,2,9,2,23,195,28,248,22,168,14,193,12,248,22,160,12,249,22,166,11, +201,202,248,22,75,204,204,86,95,86,94,28,28,248,22,148,14,193,10,28,248, +22,130,7,193,28,248,22,170,14,193,10,248,22,171,14,193,11,12,250,22,176, +9,2,9,2,23,195,28,248,22,170,14,193,12,248,22,162,12,249,22,168,11, 248,22,159,7,250,22,178,7,2,24,2,9,199,247,22,23,86,94,86,94,28, -28,248,22,146,14,23,195,2,10,28,248,22,130,7,23,195,2,28,248,22,168, -14,23,195,2,10,248,22,169,14,23,195,2,11,12,250,22,176,9,2,9,2, -23,23,197,2,28,248,22,168,14,23,195,2,12,248,22,160,12,249,22,166,11, +28,248,22,148,14,23,195,2,10,28,248,22,130,7,23,195,2,28,248,22,170, +14,23,195,2,10,248,22,171,14,23,195,2,11,12,250,22,176,9,2,9,2, +23,23,197,2,28,248,22,170,14,23,195,2,12,248,22,162,12,249,22,168,11, 248,22,159,7,250,22,178,7,2,24,2,9,23,201,2,247,22,23,249,22,3, -32,0,88,163,8,36,37,49,11,9,222,33,53,23,197,2,249,22,164,14,27, -247,22,188,14,253,2,54,23,199,2,201,23,203,1,23,204,1,23,199,1,11, +32,0,88,163,8,36,37,49,11,9,222,33,53,23,197,2,249,22,166,14,27, +247,22,190,14,253,2,54,23,199,2,201,23,203,1,23,204,1,23,199,1,11, 194,32,57,88,163,36,44,8,29,11,2,26,222,33,58,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,248,23, 196,1,251,22,178,7,2,25,23,199,1,28,248,22,81,23,203,2,86,94,23, -202,1,23,201,1,250,22,1,22,164,14,23,204,1,23,205,1,23,198,1,27, -249,22,164,14,248,22,74,23,203,2,23,199,2,28,248,22,159,14,23,194,2, -27,250,22,1,22,164,14,23,197,1,23,202,2,28,248,22,159,14,23,194,2, -28,23,200,2,28,28,248,22,158,14,249,22,164,14,23,196,2,23,203,2,10, -27,28,248,22,146,14,23,202,2,248,22,150,14,23,202,2,23,201,2,27,248, +202,1,23,201,1,250,22,1,22,166,14,23,204,1,23,205,1,23,198,1,27, +249,22,166,14,248,22,74,23,203,2,23,199,2,28,248,22,161,14,23,194,2, +27,250,22,1,22,166,14,23,197,1,23,202,2,28,248,22,161,14,23,194,2, +28,23,200,2,28,28,248,22,160,14,249,22,166,14,23,196,2,23,203,2,10, +27,28,248,22,148,14,23,202,2,248,22,152,14,23,202,2,23,201,2,27,248, 22,133,7,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,136,7, 2,27,249,22,152,7,23,199,2,249,22,176,3,23,200,2,40,249,22,153,7, 250,22,152,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,86,95,23, -195,1,23,194,1,11,11,28,23,193,2,248,22,158,14,249,22,164,14,23,199, +195,1,23,194,1,11,11,28,23,193,2,248,22,160,14,249,22,166,14,23,199, 2,23,196,1,11,192,27,248,22,75,23,203,1,27,28,23,204,2,86,94,23, 195,1,23,204,1,86,94,23,204,1,23,195,1,28,248,22,81,23,195,2,86, 95,23,202,1,23,194,1,28,23,193,2,192,86,94,23,193,1,248,23,200,1, 251,22,178,7,2,25,23,203,1,28,248,22,81,23,207,2,86,94,23,206,1, -23,205,1,250,22,1,22,164,14,23,208,1,23,209,1,23,202,1,27,249,22, -164,14,248,22,74,23,198,2,23,203,2,28,248,22,159,14,23,194,2,27,250, -22,1,22,164,14,23,197,1,23,206,2,28,248,22,159,14,23,194,2,28,23, -204,2,28,28,248,22,158,14,249,22,164,14,195,206,10,27,28,248,22,146,14, -205,248,22,150,14,205,204,27,248,22,133,7,23,195,2,27,28,249,22,188,3, +23,205,1,250,22,1,22,166,14,23,208,1,23,209,1,23,202,1,27,249,22, +166,14,248,22,74,23,198,2,23,203,2,28,248,22,161,14,23,194,2,27,250, +22,1,22,166,14,23,197,1,23,206,2,28,248,22,161,14,23,194,2,28,23, +204,2,28,28,248,22,160,14,249,22,166,14,195,206,10,27,28,248,22,148,14, +205,248,22,152,14,205,204,27,248,22,133,7,23,195,2,27,28,249,22,188,3, 23,196,2,40,28,249,22,136,7,2,27,249,22,152,7,23,199,2,249,22,176, 3,23,200,2,40,249,22,153,7,250,22,152,7,23,200,1,36,249,22,176,3, 23,201,1,40,2,28,86,95,23,195,1,23,194,1,11,11,28,23,193,2,248, -22,158,14,249,22,164,14,198,23,196,1,11,192,26,8,2,57,206,23,15,23, +22,160,14,249,22,166,14,198,23,196,1,11,192,26,8,2,57,206,23,15,23, 16,23,17,23,18,23,19,248,22,75,204,28,202,202,200,192,26,8,2,57,206, 23,15,23,16,23,17,23,18,23,19,248,22,75,204,202,26,8,2,57,205,206, 23,15,23,16,23,17,23,18,248,22,75,203,201,192,27,248,22,75,23,203,1, 28,248,22,81,23,194,2,86,95,23,201,1,23,193,1,28,23,203,2,202,86, 94,23,203,1,248,23,199,1,251,22,178,7,2,25,23,202,1,28,248,22,81, -23,206,2,86,94,23,205,1,23,204,1,250,22,1,22,164,14,23,207,1,23, -208,1,23,201,1,27,249,22,164,14,248,22,74,23,197,2,23,202,2,28,248, -22,159,14,23,194,2,27,250,22,1,22,164,14,23,197,1,23,205,2,28,248, -22,159,14,23,194,2,28,23,203,2,28,28,248,22,158,14,249,22,164,14,195, -205,10,27,28,248,22,146,14,204,248,22,150,14,204,203,27,248,22,133,7,23, +23,206,2,86,94,23,205,1,23,204,1,250,22,1,22,166,14,23,207,1,23, +208,1,23,201,1,27,249,22,166,14,248,22,74,23,197,2,23,202,2,28,248, +22,161,14,23,194,2,27,250,22,1,22,166,14,23,197,1,23,205,2,28,248, +22,161,14,23,194,2,28,23,203,2,28,28,248,22,160,14,249,22,166,14,195, +205,10,27,28,248,22,148,14,204,248,22,152,14,204,203,27,248,22,133,7,23, 195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,136,7,2,27,249,22, 152,7,23,199,2,249,22,176,3,23,200,2,40,249,22,153,7,250,22,152,7, 23,200,1,36,249,22,176,3,23,201,1,40,2,28,86,95,23,195,1,23,194, -1,11,11,28,23,193,2,248,22,158,14,249,22,164,14,198,23,196,1,11,192, +1,11,11,28,23,193,2,248,22,160,14,249,22,166,14,198,23,196,1,11,192, 26,8,2,57,205,206,23,15,23,16,23,17,23,18,248,22,75,203,28,23,20, 23,20,200,192,26,8,2,57,205,206,23,15,23,16,23,17,23,18,248,22,75, 203,23,20,26,8,2,57,204,205,206,23,15,23,16,23,17,248,22,75,202,23, 19,86,94,23,193,1,27,248,22,75,23,202,1,28,248,22,81,23,194,2,86, 95,23,200,1,23,193,1,28,23,202,2,201,86,94,23,202,1,248,23,198,1, 251,22,178,7,2,25,23,201,1,28,248,22,81,23,205,2,86,94,23,204,1, -23,203,1,250,22,1,22,164,14,23,206,1,23,207,1,23,200,1,27,249,22, -164,14,248,22,74,23,197,2,23,201,2,28,248,22,159,14,23,194,2,27,250, -22,1,22,164,14,23,197,1,23,204,2,28,248,22,159,14,23,194,2,28,23, -202,2,28,28,248,22,158,14,249,22,164,14,195,204,10,27,28,248,22,146,14, -203,248,22,150,14,203,202,27,248,22,133,7,23,195,2,27,28,249,22,188,3, +23,203,1,250,22,1,22,166,14,23,206,1,23,207,1,23,200,1,27,249,22, +166,14,248,22,74,23,197,2,23,201,2,28,248,22,161,14,23,194,2,27,250, +22,1,22,166,14,23,197,1,23,204,2,28,248,22,161,14,23,194,2,28,23, +202,2,28,28,248,22,160,14,249,22,166,14,195,204,10,27,28,248,22,148,14, +203,248,22,152,14,203,202,27,248,22,133,7,23,195,2,27,28,249,22,188,3, 23,196,2,40,28,249,22,136,7,2,27,249,22,152,7,23,199,2,249,22,176, 3,23,200,2,40,249,22,153,7,250,22,152,7,23,200,1,36,249,22,176,3, 23,201,1,40,2,28,86,95,23,195,1,23,194,1,11,11,28,23,193,2,248, -22,158,14,249,22,164,14,198,23,196,1,11,192,26,8,2,57,204,205,206,23, +22,160,14,249,22,166,14,198,23,196,1,11,192,26,8,2,57,204,205,206,23, 15,23,16,23,17,248,22,75,203,28,23,19,23,19,200,192,26,8,2,57,204, 205,206,23,15,23,16,23,17,248,22,75,203,23,19,26,8,2,57,203,204,205, -206,23,15,23,16,248,22,75,202,23,18,27,247,22,188,14,28,248,22,81,23, +206,23,15,23,16,248,22,75,202,23,18,27,247,22,190,14,28,248,22,81,23, 194,2,86,94,23,198,1,248,23,196,1,251,22,178,7,2,25,23,199,1,28, -248,22,81,23,203,2,86,94,23,202,1,23,201,1,250,22,1,22,164,14,23, -204,1,23,205,1,23,198,1,27,249,22,164,14,248,22,74,23,197,2,23,199, -2,28,248,22,159,14,23,194,2,27,250,22,1,22,164,14,23,197,1,23,202, -2,28,248,22,159,14,23,194,2,28,23,200,2,28,28,248,22,158,14,249,22, -164,14,195,202,10,27,28,248,22,146,14,201,248,22,150,14,201,200,27,248,22, +248,22,81,23,203,2,86,94,23,202,1,23,201,1,250,22,1,22,166,14,23, +204,1,23,205,1,23,198,1,27,249,22,166,14,248,22,74,23,197,2,23,199, +2,28,248,22,161,14,23,194,2,27,250,22,1,22,166,14,23,197,1,23,202, +2,28,248,22,161,14,23,194,2,28,23,200,2,28,28,248,22,160,14,249,22, +166,14,195,202,10,27,28,248,22,148,14,201,248,22,152,14,201,200,27,248,22, 133,7,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,136,7,2, 27,249,22,152,7,23,199,2,249,22,176,3,23,200,2,40,249,22,153,7,250, 22,152,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,86,95,23,195, -1,23,194,1,11,11,28,23,193,2,248,22,158,14,249,22,164,14,198,23,196, +1,23,194,1,11,11,28,23,193,2,248,22,160,14,249,22,166,14,198,23,196, 1,11,192,26,8,2,57,202,203,204,205,206,23,15,248,22,75,203,200,192,26, 8,2,57,202,203,204,205,206,23,15,248,22,75,203,11,26,8,2,57,201,202, -203,204,205,206,248,22,75,202,11,86,95,28,28,248,22,147,14,23,194,2,10, -28,248,22,146,14,23,194,2,10,28,248,22,130,7,23,194,2,28,248,22,168, -14,23,194,2,10,248,22,169,14,23,194,2,11,12,252,22,176,9,23,200,2, +203,204,205,206,248,22,75,202,11,86,95,28,28,248,22,149,14,23,194,2,10, +28,248,22,148,14,23,194,2,10,28,248,22,130,7,23,194,2,28,248,22,170, +14,23,194,2,10,248,22,171,14,23,194,2,11,12,252,22,176,9,23,200,2, 2,29,36,23,198,2,23,199,2,28,28,248,22,130,7,23,195,2,10,248,22, 183,7,23,195,2,86,94,23,194,1,12,252,22,176,9,23,200,2,2,30,37, -23,198,2,23,199,1,90,159,39,11,89,161,39,36,11,248,22,167,14,23,197, +23,198,2,23,199,1,90,159,39,11,89,161,39,36,11,248,22,169,14,23,197, 2,86,94,23,195,1,86,94,28,192,12,250,22,177,9,23,201,1,2,31,23, 199,1,249,22,7,194,195,90,159,38,11,89,161,38,36,11,86,95,28,28,248, -22,147,14,23,196,2,10,28,248,22,146,14,23,196,2,10,28,248,22,130,7, -23,196,2,28,248,22,168,14,23,196,2,10,248,22,169,14,23,196,2,11,12, +22,149,14,23,196,2,10,28,248,22,148,14,23,196,2,10,28,248,22,130,7, +23,196,2,28,248,22,170,14,23,196,2,10,248,22,171,14,23,196,2,11,12, 252,22,176,9,2,11,2,29,36,23,200,2,23,201,2,28,28,248,22,130,7, 23,197,2,10,248,22,183,7,23,197,2,12,252,22,176,9,2,11,2,30,37, -23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,167,14,23,199, +23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,169,14,23,199, 2,86,94,23,195,1,86,94,28,192,12,250,22,177,9,2,11,2,31,23,201, -2,249,22,7,194,195,27,249,22,156,14,250,22,144,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,152,14,23, +2,249,22,7,194,195,27,249,22,158,14,250,22,146,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,154,14,23, 201,1,28,248,22,130,7,23,203,2,249,22,145,8,23,204,1,8,63,23,202, -1,28,248,22,147,14,23,199,2,248,22,148,14,23,199,1,86,94,23,198,1, -247,22,149,14,28,248,22,146,14,194,249,22,164,14,195,194,192,90,159,38,11, -89,161,38,36,11,86,95,28,28,248,22,147,14,23,196,2,10,28,248,22,146, -14,23,196,2,10,28,248,22,130,7,23,196,2,28,248,22,168,14,23,196,2, -10,248,22,169,14,23,196,2,11,12,252,22,176,9,2,12,2,29,36,23,200, +1,28,248,22,149,14,23,199,2,248,22,150,14,23,199,1,86,94,23,198,1, +247,22,151,14,28,248,22,148,14,194,249,22,166,14,195,194,192,90,159,38,11, +89,161,38,36,11,86,95,28,28,248,22,149,14,23,196,2,10,28,248,22,148, +14,23,196,2,10,28,248,22,130,7,23,196,2,28,248,22,170,14,23,196,2, +10,248,22,171,14,23,196,2,11,12,252,22,176,9,2,12,2,29,36,23,200, 2,23,201,2,28,28,248,22,130,7,23,197,2,10,248,22,183,7,23,197,2, 12,252,22,176,9,2,12,2,30,37,23,200,2,23,201,2,90,159,39,11,89, -161,39,36,11,248,22,167,14,23,199,2,86,94,23,195,1,86,94,28,192,12, -250,22,177,9,2,12,2,31,23,201,2,249,22,7,194,195,27,249,22,156,14, -249,22,131,8,250,22,145,15,0,9,35,114,120,35,34,91,46,93,34,248,22, -152,14,23,203,1,6,1,1,95,28,248,22,130,7,23,202,2,249,22,145,8, -23,203,1,8,63,23,201,1,28,248,22,147,14,23,199,2,248,22,148,14,23, -199,1,86,94,23,198,1,247,22,149,14,28,248,22,146,14,194,249,22,164,14, -195,194,192,249,247,22,158,5,194,11,27,247,22,190,14,249,80,158,39,49,28, +161,39,36,11,248,22,169,14,23,199,2,86,94,23,195,1,86,94,28,192,12, +250,22,177,9,2,12,2,31,23,201,2,249,22,7,194,195,27,249,22,158,14, +249,22,131,8,250,22,147,15,0,9,35,114,120,35,34,91,46,93,34,248,22, +154,14,23,203,1,6,1,1,95,28,248,22,130,7,23,202,2,249,22,145,8, +23,203,1,8,63,23,201,1,28,248,22,149,14,23,199,2,248,22,150,14,23, +199,1,86,94,23,198,1,247,22,151,14,28,248,22,148,14,194,249,22,166,14, +195,194,192,249,247,22,158,5,194,11,27,247,22,128,15,249,80,158,39,49,28, 23,195,2,27,248,22,150,8,2,32,28,192,192,2,33,2,34,27,28,23,196, -1,250,22,164,14,248,22,186,14,2,35,247,22,148,8,2,36,11,27,248,80, -159,42,54,37,250,22,87,9,248,22,83,248,22,186,14,2,37,9,28,193,249, -22,73,195,194,192,27,247,22,190,14,249,80,158,39,49,28,23,195,2,27,248, -22,150,8,2,32,28,192,192,2,33,2,34,27,28,23,196,1,250,22,164,14, -248,22,186,14,2,35,247,22,148,8,2,36,11,27,248,80,159,42,55,37,250, -22,87,23,203,1,248,22,83,248,22,186,14,2,37,9,28,193,249,22,73,195, -194,192,27,247,22,190,14,249,80,158,39,49,28,23,195,2,27,248,22,150,8, -2,32,28,192,192,2,33,2,34,27,28,23,196,1,250,22,164,14,248,22,186, +1,250,22,166,14,248,22,188,14,2,35,247,22,148,8,2,36,11,27,248,80, +159,42,54,37,250,22,87,9,248,22,83,248,22,188,14,2,37,9,28,193,249, +22,73,195,194,192,27,247,22,128,15,249,80,158,39,49,28,23,195,2,27,248, +22,150,8,2,32,28,192,192,2,33,2,34,27,28,23,196,1,250,22,166,14, +248,22,188,14,2,35,247,22,148,8,2,36,11,27,248,80,159,42,55,37,250, +22,87,23,203,1,248,22,83,248,22,188,14,2,37,9,28,193,249,22,73,195, +194,192,27,247,22,128,15,249,80,158,39,49,28,23,195,2,27,248,22,150,8, +2,32,28,192,192,2,33,2,34,27,28,23,196,1,250,22,166,14,248,22,188, 14,2,35,247,22,148,8,2,36,11,27,248,80,159,42,56,37,250,22,87,23, -203,1,248,22,83,248,22,186,14,2,37,23,204,1,28,193,249,22,73,195,194, +203,1,248,22,83,248,22,188,14,2,37,23,204,1,28,193,249,22,73,195,194, 192,32,67,88,163,8,36,39,8,45,11,2,20,222,33,69,0,8,35,114,120, -35,34,92,34,34,27,249,22,133,15,23,197,2,23,198,2,28,23,193,2,86, +35,34,92,34,34,27,249,22,135,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,133,15,23,201,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22, -98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,133,15,23,205,2,23, +22,135,15,23,201,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22, +98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,135,15,23,205,2,23, 196,2,28,23,193,2,86,94,23,194,1,27,248,22,98,23,195,2,27,27,248, -22,107,23,197,1,27,249,22,133,15,23,209,2,23,196,2,28,23,193,2,86, +22,107,23,197,1,27,249,22,135,15,23,209,2,23,196,2,28,23,193,2,86, 94,23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249, -22,133,15,23,213,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22, -98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,133,15,23,217,2,23, +22,135,15,23,213,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22, +98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,135,15,23,217,2,23, 196,2,28,23,193,2,86,94,23,194,1,27,248,22,98,23,195,2,27,27,248, -22,107,23,197,1,27,249,22,133,15,23,221,2,23,196,2,28,23,193,2,86, +22,107,23,197,1,27,249,22,135,15,23,221,2,23,196,2,28,23,193,2,86, 94,23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249, -22,133,15,23,224,33,0,0,0,2,23,196,2,28,23,193,2,86,94,23,194, +22,135,15,23,224,33,0,0,0,2,23,196,2,28,23,193,2,86,94,23,194, 1,27,248,22,98,23,195,2,27,250,2,67,23,224,35,0,0,0,2,23,224, 36,0,0,0,1,248,22,107,23,199,1,28,249,22,191,7,23,196,2,2,38, -249,22,87,23,224,34,0,0,0,2,194,249,22,73,248,22,155,14,28,249,22, -140,9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197, +249,22,87,23,224,34,0,0,0,2,194,249,22,73,248,22,157,14,28,249,22, +140,9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197, 1,194,86,95,23,223,1,23,193,1,28,249,22,191,7,23,196,2,2,38,249, -22,87,23,224,32,0,0,0,2,9,249,22,73,248,22,155,14,28,249,22,140, -9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197,1, +22,87,23,224,32,0,0,0,2,9,249,22,73,248,22,157,14,28,249,22,140, +9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,191,7,23,196,2,2,38,249,22,87,23,222,2,194,249,22,73, -248,22,155,14,28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68, +248,22,157,14,28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68, 23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,191,7,23,196, -2,2,38,249,22,87,23,220,2,9,249,22,73,248,22,155,14,28,249,22,140, -9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197,1, +2,2,38,249,22,87,23,220,2,9,249,22,73,248,22,157,14,28,249,22,140, +9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,191,7,23,196,2,2,38,249,22,87,23,218,2,194,249,22,73, -248,22,155,14,28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68, +248,22,157,14,28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68, 23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,191,7,23,196, -2,2,38,249,22,87,23,216,2,9,249,22,73,248,22,155,14,28,249,22,140, -9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197,1, +2,2,38,249,22,87,23,216,2,9,249,22,73,248,22,157,14,28,249,22,140, +9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,191,7,23,196,2,2,38,249,22,87,23,214,2,194,249,22,73, -248,22,155,14,28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68, +248,22,157,14,28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68, 23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,191,7,23,196, -2,2,38,249,22,87,23,212,2,9,249,22,73,248,22,155,14,28,249,22,140, -9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197,1, +2,2,38,249,22,87,23,212,2,9,249,22,73,248,22,157,14,28,249,22,140, +9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,191,7,23,196,2,2,38,249,22,87,23,210,2,194,249,22,73, -248,22,155,14,28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68, +248,22,157,14,28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68, 23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,191,7,23,196, -2,2,38,249,22,87,23,208,2,9,249,22,73,248,22,155,14,28,249,22,140, -9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197,1, +2,2,38,249,22,87,23,208,2,9,249,22,73,248,22,157,14,28,249,22,140, +9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,191,7,23,196,2,2,38,249,22,87,23,206,2,194,249,22,73, -248,22,155,14,28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68, +248,22,157,14,28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68, 23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,191,7,23,196, -2,2,38,249,22,87,23,204,2,9,249,22,73,248,22,155,14,28,249,22,140, -9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197,1, +2,2,38,249,22,87,23,204,2,9,249,22,73,248,22,157,14,28,249,22,140, +9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,191,7,23,196,2,2,38,249,22,87,23,202,2,194,249,22,73, -248,22,155,14,28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68, +248,22,157,14,28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68, 23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,191,7,23,196, -2,2,38,249,22,87,23,200,2,9,249,22,73,248,22,155,14,28,249,22,140, -9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197,1, +2,2,38,249,22,87,23,200,2,9,249,22,73,248,22,157,14,28,249,22,140, +9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197,1, 9,28,249,22,191,7,23,196,2,2,38,249,22,87,197,194,86,94,23,196,1, -249,22,73,248,22,155,14,28,249,22,140,9,247,22,152,8,2,22,250,22,145, +249,22,73,248,22,157,14,28,249,22,140,9,247,22,152,8,2,22,250,22,147, 15,2,68,23,200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,191, 7,23,198,2,2,38,249,22,87,195,9,86,94,23,194,1,249,22,73,248,22, -155,14,28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68,23,202, +157,14,28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68,23,202, 1,2,39,23,199,1,9,86,95,28,28,248,22,183,7,23,195,2,10,248,22, 130,7,23,195,2,12,250,22,176,9,2,15,6,21,21,98,121,116,101,32,115, 116,114,105,110,103,32,111,114,32,115,116,114,105,110,103,23,197,2,28,28,248, -22,82,23,196,2,249,22,4,22,146,14,23,197,2,11,12,250,22,176,9,2, +22,82,23,196,2,249,22,4,22,148,14,23,197,2,11,12,250,22,176,9,2, 15,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,23,198,2,27, 28,248,22,130,7,23,196,2,248,22,144,8,23,196,1,23,195,1,27,249,22, -133,15,23,197,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98, -23,195,2,27,27,248,22,107,23,197,1,27,249,22,133,15,23,201,2,23,196, +135,15,23,197,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98, +23,195,2,27,27,248,22,107,23,197,1,27,249,22,135,15,23,201,2,23,196, 2,28,23,193,2,86,94,23,194,1,27,248,22,98,23,195,2,27,27,248,22, -107,23,197,1,27,249,22,133,15,23,205,2,23,196,2,28,23,193,2,86,94, +107,23,197,1,27,249,22,135,15,23,205,2,23,196,2,28,23,193,2,86,94, 23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249,22, -133,15,23,209,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98, -23,195,2,27,27,248,22,107,23,197,1,27,249,22,133,15,23,213,2,23,196, +135,15,23,209,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98, +23,195,2,27,27,248,22,107,23,197,1,27,249,22,135,15,23,213,2,23,196, 2,28,23,193,2,86,94,23,194,1,27,248,22,98,23,195,2,27,27,248,22, -107,23,197,1,27,249,22,133,15,23,217,2,23,196,2,28,23,193,2,86,94, +107,23,197,1,27,249,22,135,15,23,217,2,23,196,2,28,23,193,2,86,94, 23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249,22, -133,15,23,221,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98, -23,195,2,27,27,248,22,107,23,197,1,27,249,22,133,15,23,224,33,0,0, +135,15,23,221,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98, +23,195,2,27,27,248,22,107,23,197,1,27,249,22,135,15,23,224,33,0,0, 0,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,98,23,195,2, 27,250,2,67,23,224,38,0,0,0,2,23,224,36,0,0,0,1,248,22,107, 23,199,1,28,249,22,191,7,23,196,2,2,38,249,22,87,23,224,37,0,0, -0,2,194,249,22,73,248,22,155,14,28,249,22,140,9,247,22,152,8,2,22, -250,22,145,15,2,68,23,200,1,2,39,23,197,1,194,86,95,23,223,1,23, +0,2,194,249,22,73,248,22,157,14,28,249,22,140,9,247,22,152,8,2,22, +250,22,147,15,2,68,23,200,1,2,39,23,197,1,194,86,95,23,223,1,23, 193,1,28,249,22,191,7,23,196,2,2,38,249,22,87,23,224,35,0,0,0, -2,9,249,22,73,248,22,155,14,28,249,22,140,9,247,22,152,8,2,22,250, -22,145,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22,191,7,23,196, -2,2,38,249,22,87,23,224,33,0,0,0,2,194,249,22,73,248,22,155,14, -28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2, +2,9,249,22,73,248,22,157,14,28,249,22,140,9,247,22,152,8,2,22,250, +22,147,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22,191,7,23,196, +2,2,38,249,22,87,23,224,33,0,0,0,2,194,249,22,73,248,22,157,14, +28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2, 39,23,197,1,194,86,94,23,193,1,28,249,22,191,7,23,196,2,2,38,249, -22,87,23,223,2,9,249,22,73,248,22,155,14,28,249,22,140,9,247,22,152, -8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, -191,7,23,196,2,2,38,249,22,87,23,221,2,194,249,22,73,248,22,155,14, -28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2, +22,87,23,223,2,9,249,22,73,248,22,157,14,28,249,22,140,9,247,22,152, +8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, +191,7,23,196,2,2,38,249,22,87,23,221,2,194,249,22,73,248,22,157,14, +28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2, 39,23,197,1,194,86,94,23,193,1,28,249,22,191,7,23,196,2,2,38,249, -22,87,23,219,2,9,249,22,73,248,22,155,14,28,249,22,140,9,247,22,152, -8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, -191,7,23,196,2,2,38,249,22,87,23,217,2,194,249,22,73,248,22,155,14, -28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2, +22,87,23,219,2,9,249,22,73,248,22,157,14,28,249,22,140,9,247,22,152, +8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, +191,7,23,196,2,2,38,249,22,87,23,217,2,194,249,22,73,248,22,157,14, +28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2, 39,23,197,1,194,86,94,23,193,1,28,249,22,191,7,23,196,2,2,38,249, -22,87,23,215,2,9,249,22,73,248,22,155,14,28,249,22,140,9,247,22,152, -8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, -191,7,23,196,2,2,38,249,22,87,23,213,2,194,249,22,73,248,22,155,14, -28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2, +22,87,23,215,2,9,249,22,73,248,22,157,14,28,249,22,140,9,247,22,152, +8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, +191,7,23,196,2,2,38,249,22,87,23,213,2,194,249,22,73,248,22,157,14, +28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2, 39,23,197,1,194,86,94,23,193,1,28,249,22,191,7,23,196,2,2,38,249, -22,87,23,211,2,9,249,22,73,248,22,155,14,28,249,22,140,9,247,22,152, -8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, -191,7,23,196,2,2,38,249,22,87,23,209,2,194,249,22,73,248,22,155,14, -28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2, +22,87,23,211,2,9,249,22,73,248,22,157,14,28,249,22,140,9,247,22,152, +8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, +191,7,23,196,2,2,38,249,22,87,23,209,2,194,249,22,73,248,22,157,14, +28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2, 39,23,197,1,194,86,94,23,193,1,28,249,22,191,7,23,196,2,2,38,249, -22,87,23,207,2,9,249,22,73,248,22,155,14,28,249,22,140,9,247,22,152, -8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, -191,7,23,196,2,2,38,249,22,87,23,205,2,194,249,22,73,248,22,155,14, -28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2, +22,87,23,207,2,9,249,22,73,248,22,157,14,28,249,22,140,9,247,22,152, +8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, +191,7,23,196,2,2,38,249,22,87,23,205,2,194,249,22,73,248,22,157,14, +28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2, 39,23,197,1,194,86,94,23,193,1,28,249,22,191,7,23,196,2,2,38,249, -22,87,23,203,2,9,249,22,73,248,22,155,14,28,249,22,140,9,247,22,152, -8,2,22,250,22,145,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, +22,87,23,203,2,9,249,22,73,248,22,157,14,28,249,22,140,9,247,22,152, +8,2,22,250,22,147,15,2,68,23,200,1,2,39,23,197,1,9,28,249,22, 191,7,23,196,2,2,38,249,22,87,200,194,86,94,23,199,1,249,22,73,248, -22,155,14,28,249,22,140,9,247,22,152,8,2,22,250,22,145,15,2,68,23, +22,157,14,28,249,22,140,9,247,22,152,8,2,22,250,22,147,15,2,68,23, 200,1,2,39,23,197,1,194,86,94,23,193,1,28,249,22,191,7,23,196,2, -2,38,249,22,87,198,9,86,94,23,197,1,249,22,73,248,22,155,14,28,249, -22,140,9,247,22,152,8,2,22,250,22,145,15,2,68,23,200,1,2,39,23, +2,38,249,22,87,198,9,86,94,23,197,1,249,22,73,248,22,157,14,28,249, +22,140,9,247,22,152,8,2,22,250,22,147,15,2,68,23,200,1,2,39,23, 197,1,9,32,71,88,163,8,36,39,53,11,70,102,111,117,110,100,45,101,120, 101,99,222,33,74,32,72,88,163,8,36,40,58,11,64,110,101,120,116,222,33, -73,27,248,22,172,14,23,196,2,28,249,22,142,9,23,195,2,23,197,1,11, -28,248,22,168,14,23,194,2,27,249,22,164,14,23,197,1,23,196,1,28,23, -197,2,90,159,39,11,89,161,39,36,11,248,22,167,14,23,197,2,86,95,23, -195,1,23,194,1,27,28,23,202,2,27,248,22,172,14,23,199,2,28,249,22, -142,9,23,195,2,23,200,2,11,28,248,22,168,14,23,194,2,250,2,71,23, -205,2,23,206,2,249,22,164,14,23,200,2,23,198,1,250,2,71,23,205,2, +73,27,248,22,174,14,23,196,2,28,249,22,142,9,23,195,2,23,197,1,11, +28,248,22,170,14,23,194,2,27,249,22,166,14,23,197,1,23,196,1,28,23, +197,2,90,159,39,11,89,161,39,36,11,248,22,169,14,23,197,2,86,95,23, +195,1,23,194,1,27,28,23,202,2,27,248,22,174,14,23,199,2,28,249,22, +142,9,23,195,2,23,200,2,11,28,248,22,170,14,23,194,2,250,2,71,23, +205,2,23,206,2,249,22,166,14,23,200,2,23,198,1,250,2,71,23,205,2, 23,206,2,23,196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22, -146,14,23,196,2,27,249,22,164,14,23,198,2,23,205,2,28,28,248,22,159, -14,193,10,248,22,158,14,193,192,11,11,28,23,193,2,192,86,94,23,193,1, -28,23,203,2,11,27,248,22,172,14,23,200,2,28,249,22,142,9,23,195,2, -23,201,1,11,28,248,22,168,14,23,194,2,250,2,71,23,206,1,23,207,1, -249,22,164,14,23,201,1,23,198,1,250,2,71,205,206,195,192,86,94,23,194, -1,28,23,196,2,90,159,39,11,89,161,39,36,11,248,22,167,14,23,197,2, -86,95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,172,14,23,199,2, -28,249,22,142,9,23,195,2,23,200,2,11,28,248,22,168,14,23,194,2,250, -2,71,23,204,2,23,205,2,249,22,164,14,23,200,2,23,198,1,250,2,71, +148,14,23,196,2,27,249,22,166,14,23,198,2,23,205,2,28,28,248,22,161, +14,193,10,248,22,160,14,193,192,11,11,28,23,193,2,192,86,94,23,193,1, +28,23,203,2,11,27,248,22,174,14,23,200,2,28,249,22,142,9,23,195,2, +23,201,1,11,28,248,22,170,14,23,194,2,250,2,71,23,206,1,23,207,1, +249,22,166,14,23,201,1,23,198,1,250,2,71,205,206,195,192,86,94,23,194, +1,28,23,196,2,90,159,39,11,89,161,39,36,11,248,22,169,14,23,197,2, +86,95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,174,14,23,199,2, +28,249,22,142,9,23,195,2,23,200,2,11,28,248,22,170,14,23,194,2,250, +2,71,23,204,2,23,205,2,249,22,166,14,23,200,2,23,198,1,250,2,71, 23,204,2,23,205,2,23,196,1,11,28,23,193,2,192,86,94,23,193,1,27, -28,248,22,146,14,23,196,2,27,249,22,164,14,23,198,2,23,204,2,28,28, -248,22,159,14,193,10,248,22,158,14,193,192,11,11,28,23,193,2,192,86,94, -23,193,1,28,23,202,2,11,27,248,22,172,14,23,200,2,28,249,22,142,9, -23,195,2,23,201,1,11,28,248,22,168,14,23,194,2,250,2,71,23,205,1, -23,206,1,249,22,164,14,23,201,1,23,198,1,250,2,71,204,205,195,192,28, -23,193,2,90,159,39,11,89,161,39,36,11,248,22,167,14,23,199,2,86,95, +28,248,22,148,14,23,196,2,27,249,22,166,14,23,198,2,23,204,2,28,28, +248,22,161,14,193,10,248,22,160,14,193,192,11,11,28,23,193,2,192,86,94, +23,193,1,28,23,202,2,11,27,248,22,174,14,23,200,2,28,249,22,142,9, +23,195,2,23,201,1,11,28,248,22,170,14,23,194,2,250,2,71,23,205,1, +23,206,1,249,22,166,14,23,201,1,23,198,1,250,2,71,204,205,195,192,28, +23,193,2,90,159,39,11,89,161,39,36,11,248,22,169,14,23,199,2,86,95, 23,195,1,23,194,1,27,28,23,198,2,251,2,72,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,146, -14,195,27,249,22,164,14,197,200,28,28,248,22,159,14,193,10,248,22,158,14, +201,2,23,202,2,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,148, +14,195,27,249,22,166,14,197,200,28,28,248,22,161,14,193,10,248,22,160,14, 193,192,11,11,28,192,192,28,198,11,251,2,72,198,203,201,202,194,32,75,88, 163,8,36,40,58,11,2,20,222,33,76,28,248,22,81,23,197,2,11,27,248, -22,171,14,248,22,74,23,199,2,27,249,22,164,14,23,196,1,23,197,2,28, -248,22,158,14,23,194,2,250,2,71,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,171,14,248,22,74,23, -196,2,27,249,22,164,14,23,196,1,23,200,2,28,248,22,158,14,23,194,2, +22,173,14,248,22,74,23,199,2,27,249,22,166,14,23,196,1,23,197,2,28, +248,22,160,14,23,194,2,250,2,71,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,173,14,248,22,74,23, +196,2,27,249,22,166,14,23,196,1,23,200,2,28,248,22,160,14,23,194,2, 250,2,71,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,171,14,248,22,74,195,27,249,22,164,14,23,196, -1,202,28,248,22,158,14,193,250,2,71,204,205,195,251,2,75,204,205,206,248, -22,75,199,86,95,28,28,248,22,146,14,23,195,2,10,28,248,22,130,7,23, -195,2,28,248,22,168,14,23,195,2,10,248,22,169,14,23,195,2,11,12,250, +81,23,194,2,11,27,248,22,173,14,248,22,74,195,27,249,22,166,14,23,196, +1,202,28,248,22,160,14,193,250,2,71,204,205,195,251,2,75,204,205,206,248, +22,75,199,86,95,28,28,248,22,148,14,23,195,2,10,28,248,22,130,7,23, +195,2,28,248,22,170,14,23,195,2,10,248,22,171,14,23,195,2,11,12,250, 22,176,9,2,16,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,146,14,23,196,2,10,28,248,22,130,7,23,196,2,28,248,22,168, -14,23,196,2,10,248,22,169,14,23,196,2,11,248,22,168,14,23,196,2,11, +28,248,22,148,14,23,196,2,10,28,248,22,130,7,23,196,2,28,248,22,170, +14,23,196,2,10,248,22,171,14,23,196,2,11,248,22,170,14,23,196,2,11, 10,12,250,22,176,9,2,16,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,168,14,23,195,2,90,159,39,11,89,161,39,36,11,248,22, -167,14,23,198,2,249,22,140,9,194,68,114,101,108,97,116,105,118,101,11,27, +2,28,28,248,22,170,14,23,195,2,90,159,39,11,89,161,39,36,11,248,22, +169,14,23,198,2,249,22,140,9,194,68,114,101,108,97,116,105,118,101,11,27, 248,22,150,8,6,4,4,80,65,84,72,27,28,23,194,2,27,249,80,159,41, 49,38,23,197,1,9,28,249,22,140,9,247,22,152,8,2,22,249,22,73,248, -22,155,14,5,1,46,194,192,86,94,23,194,1,9,28,248,22,81,23,194,2, -11,27,248,22,171,14,248,22,74,23,196,2,27,249,22,164,14,23,196,1,23, -200,2,28,248,22,158,14,23,194,2,250,2,71,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,171,14,248, -22,74,23,196,2,27,249,22,164,14,23,196,1,23,203,2,28,248,22,158,14, +22,157,14,5,1,46,194,192,86,94,23,194,1,9,28,248,22,81,23,194,2, +11,27,248,22,173,14,248,22,74,23,196,2,27,249,22,166,14,23,196,1,23, +200,2,28,248,22,160,14,23,194,2,250,2,71,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,173,14,248, +22,74,23,196,2,27,249,22,166,14,23,196,1,23,203,2,28,248,22,160,14, 23,194,2,250,2,71,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,171,14,248,22,74,195,27,249,22,164, -14,23,196,1,205,28,248,22,158,14,193,250,2,71,23,15,23,16,195,251,2, -75,23,15,23,16,23,17,248,22,75,199,27,248,22,171,14,23,196,1,28,248, -22,158,14,193,250,2,71,198,199,195,11,250,80,159,39,50,37,196,197,11,250, +28,248,22,81,23,194,2,11,27,248,22,173,14,248,22,74,195,27,249,22,166, +14,23,196,1,205,28,248,22,160,14,193,250,2,71,23,15,23,16,195,251,2, +75,23,15,23,16,23,17,248,22,75,199,27,248,22,173,14,23,196,1,28,248, +22,160,14,193,250,2,71,198,199,195,11,250,80,159,39,50,37,196,197,11,250, 80,159,39,50,37,196,11,11,86,94,249,22,183,6,247,22,154,5,195,248,22, 145,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,186,14,2,21,27, +196,1,23,195,1,23,197,1,86,94,23,197,1,27,248,22,188,14,2,21,27, 250,80,159,42,50,37,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,185,5,23,199,1,20, @@ -580,7 +580,7 @@ 20,25,96,2,14,88,163,36,36,53,8,240,0,32,4,0,9,223,0,33,64, 88,163,36,37,54,8,240,0,32,8,0,9,223,0,33,65,88,163,36,38,55, 8,240,0,32,16,0,9,223,0,33,66,80,159,36,48,37,20,15,16,2,27, -248,22,129,15,248,22,144,8,27,28,249,22,140,9,247,22,152,8,2,22,6, +248,22,131,15,248,22,144,8,27,28,249,22,140,9,247,22,152,8,2,22,6, 1,1,59,6,1,1,58,250,22,178,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,8,46,11, 2,15,223,0,33,70,80,159,36,49,37,20,15,16,2,20,25,96,2,16,88, @@ -593,7 +593,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 10320); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,50,46,51,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,49,46,50,46,52,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,178,1, 0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,23,115,116, @@ -611,7 +611,7 @@ 39,36,11,11,16,5,2,3,2,7,2,8,2,4,2,2,16,5,11,11,11, 11,11,16,5,2,3,2,7,2,8,2,4,2,2,41,41,37,11,11,16,0, 16,0,16,0,36,36,11,11,11,16,0,16,0,16,0,36,36,16,0,16,2, -20,15,16,6,253,22,174,10,2,3,11,38,36,11,248,22,83,249,22,73,22, +20,15,16,6,253,22,176,10,2,3,11,38,36,11,248,22,83,249,22,73,22, 164,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, @@ -620,7 +620,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 499); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,50,46,51,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,49,46,50,46,52,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, @@ -648,48 +648,48 @@ 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,37,195,10,90,159,39,11,89,161,39,36,11, -248,22,167,14,197,86,95,23,195,1,23,193,1,28,249,22,133,15,0,11,35, -114,120,34,91,46,93,115,115,36,34,248,22,151,14,23,197,1,249,80,159,41, +248,22,169,14,197,86,95,23,195,1,23,193,1,28,249,22,135,15,0,11,35, +114,120,34,91,46,93,115,115,36,34,248,22,153,14,23,197,1,249,80,159,41, 56,38,198,5,4,46,114,107,116,196,27,28,23,195,2,28,249,22,140,9,23, 197,2,80,158,39,50,86,94,23,195,1,80,158,37,51,27,248,22,137,5,23, -197,2,28,248,22,146,14,23,194,2,90,159,39,11,89,161,39,36,11,248,22, -167,14,23,197,1,86,95,20,18,159,11,80,158,41,50,198,20,18,159,11,80, +197,2,28,248,22,148,14,23,194,2,90,159,39,11,89,161,39,36,11,248,22, +169,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,159, -5,28,192,192,247,22,187,14,250,22,164,14,23,197,1,23,199,1,249,80,159, -43,39,38,23,198,1,2,26,250,22,164,14,23,197,1,23,199,1,249,80,159, -43,39,38,23,198,1,2,27,252,22,164,14,23,199,1,23,201,1,2,28,247, -22,153,8,249,80,159,45,39,38,23,200,1,80,159,45,36,38,252,22,164,14, +5,28,192,192,247,22,189,14,250,22,166,14,23,197,1,23,199,1,249,80,159, +43,39,38,23,198,1,2,26,250,22,166,14,23,197,1,23,199,1,249,80,159, +43,39,38,23,198,1,2,27,252,22,166,14,23,199,1,23,201,1,2,28,247, +22,153,8,249,80,159,45,39,38,23,200,1,80,159,45,36,38,252,22,166,14, 23,199,1,23,201,1,2,28,247,22,153,8,249,80,159,45,39,38,23,200,1, -80,159,45,36,38,27,252,22,164,14,23,200,1,23,202,1,2,28,247,22,153, -8,249,80,159,46,39,38,23,201,1,80,159,46,36,38,27,250,22,181,14,196, +80,159,45,36,38,27,252,22,166,14,23,200,1,23,202,1,2,28,247,22,153, +8,249,80,159,46,39,38,23,201,1,80,159,46,36,38,27,250,22,183,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,164,14,23,200,1,23,202,1,2,28,247,22,153,8,249,80,159,46, -39,38,23,201,1,80,159,46,36,38,27,250,22,181,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,164,14, -23,198,1,23,200,1,249,80,159,44,39,38,23,199,1,2,26,27,250,22,181, +27,252,22,166,14,23,200,1,23,202,1,2,28,247,22,153,8,249,80,159,46, +39,38,23,201,1,80,159,46,36,38,27,250,22,183,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,166,14, +23,198,1,23,200,1,249,80,159,44,39,38,23,199,1,2,26,27,250,22,183, 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,164,14,23,198,1,23,200,1,249,80,159,44,39,38,23,199, -1,2,27,27,250,22,181,14,196,11,32,0,88,163,8,36,36,41,11,9,222, +194,11,27,250,22,166,14,23,198,1,23,200,1,249,80,159,44,39,38,23,199, +1,2,27,27,250,22,183,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,38,23,195,2, 12,250,22,176,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,170,14,23,205,2,23,204,2,27,247,22,159,5,28,23,193,2,249, -22,171,14,23,207,2,23,195,1,23,205,2,89,161,39,37,11,248,22,167,14, -23,205,1,86,94,23,196,1,89,161,38,40,11,28,23,205,2,27,248,22,151, +28,248,22,172,14,23,205,2,23,204,2,27,247,22,159,5,28,23,193,2,249, +22,173,14,23,207,2,23,195,1,23,205,2,89,161,39,37,11,248,22,169,14, +23,205,1,86,94,23,196,1,89,161,38,40,11,28,23,205,2,27,248,22,153, 14,23,197,2,27,248,22,188,7,23,195,2,28,28,249,22,188,3,23,195,2, 40,249,22,191,7,5,4,46,114,107,116,249,22,130,8,23,198,2,249,22,176, -3,23,199,2,40,11,249,22,7,23,199,2,248,22,155,14,249,22,131,8,250, +3,23,199,2,40,11,249,22,7,23,199,2,248,22,157,14,249,22,131,8,250, 22,130,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, -140,9,23,199,2,23,197,2,23,193,2,249,22,164,14,23,196,2,23,199,2, +140,9,23,199,2,23,197,2,23,193,2,249,22,166,14,23,196,2,23,199,2, 89,161,37,43,11,28,23,198,2,28,249,22,140,9,23,200,2,23,197,1,23, -193,1,86,94,23,193,1,249,22,164,14,23,196,2,23,200,2,86,94,23,195, +193,1,86,94,23,193,1,249,22,166,14,23,196,2,23,200,2,86,94,23,195, 1,11,89,161,37,44,11,28,249,22,140,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,189, -14,27,250,22,181,14,23,203,2,11,32,0,88,163,8,36,36,41,11,9,222, +105,118,101,86,94,23,194,1,2,25,23,194,1,89,161,37,45,11,247,22,191, +14,27,250,22,183,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,181,14,23,207,2,11,32,0, +27,28,23,203,2,28,23,194,2,11,27,250,22,183,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, @@ -704,8 +704,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,38,250,80,159,8,24,41,38,249,22,27,11,80,159,8,26, 40,38,22,180,4,11,20,13,159,80,159,57,40,38,250,80,159,8,24,41,38, -249,22,27,11,80,159,8,26,40,38,22,159,5,28,248,22,146,14,23,216,2, -23,215,1,86,94,23,215,1,247,22,187,14,249,247,22,128,15,248,22,74,195, +249,22,27,11,80,159,8,26,40,38,22,159,5,28,248,22,148,14,23,216,2, +23,215,1,86,94,23,215,1,247,22,189,14,249,247,22,130,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, @@ -714,8 +714,8 @@ 23,195,1,20,13,159,80,159,58,40,38,250,80,159,8,25,41,38,249,22,27, 11,80,159,8,27,40,38,22,180,4,23,215,1,20,13,159,80,159,58,40,38, 250,80,159,8,25,41,38,249,22,27,11,80,159,8,27,40,38,22,159,5,28, -248,22,146,14,23,217,2,23,216,1,86,94,23,216,1,247,22,187,14,249,247, -22,128,15,248,22,74,195,23,26,86,94,23,193,1,27,28,23,197,2,28,23, +248,22,148,14,23,217,2,23,216,1,86,94,23,216,1,247,22,189,14,249,247, +22,130,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, @@ -723,8 +723,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,38,250,80,159,8,26,41,38,249,22,27,11,80, 159,8,28,40,38,22,180,4,11,20,13,159,80,159,59,40,38,250,80,159,8, -26,41,38,249,22,27,11,80,159,8,28,40,38,22,159,5,28,248,22,146,14, -23,218,2,23,217,1,86,94,23,217,1,247,22,187,14,249,247,22,157,5,248, +26,41,38,249,22,27,11,80,159,8,28,40,38,22,159,5,28,248,22,148,14, +23,218,2,23,217,1,86,94,23,217,1,247,22,189,14,249,247,22,157,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, @@ -733,13 +733,13 @@ 20,13,159,80,159,8,24,40,38,250,80,159,8,27,41,38,249,22,27,11,80, 159,8,29,40,38,22,180,4,23,217,1,20,13,159,80,159,8,24,40,38,250, 80,159,8,27,41,38,249,22,27,11,80,159,8,29,40,38,22,159,5,28,248, -22,146,14,23,219,2,23,218,1,86,94,23,218,1,247,22,187,14,249,247,22, +22,148,14,23,219,2,23,218,1,86,94,23,218,1,247,22,189,14,249,247,22, 157,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, 38,250,80,159,8,28,41,38,249,22,27,11,80,159,8,30,40,38,22,180,4, 28,23,30,28,23,202,1,11,195,86,94,23,202,1,11,20,13,159,80,159,8, 25,40,38,250,80,159,8,28,41,38,249,22,27,11,80,159,8,30,40,38,22, -159,5,28,248,22,146,14,23,220,2,23,219,1,86,94,23,219,1,247,22,187, +159,5,28,248,22,148,14,23,220,2,23,219,1,86,94,23,219,1,247,22,189, 14,249,247,22,157,5,194,23,29,27,249,22,160,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, @@ -747,12 +747,12 @@ 40,45,38,195,27,28,193,248,22,169,2,194,11,250,22,161,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,133,15,2,47,23,196,2,28,23, +36,37,59,11,2,29,222,33,49,27,249,22,135,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,133,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,133,15, +197,1,27,249,22,135,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,135,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,133,15,2,47,23,196,2,28,23, +196,2,27,248,22,107,23,197,1,27,249,22,135,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,8,40,11,2,29,222,33,51,28,248,22,81,248,22,75,23, @@ -776,12 +776,12 @@ 22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249, 22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249, 22,7,249,22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201, -196,195,249,22,7,249,22,73,248,22,74,200,196,195,27,27,249,22,133,15,2, +196,195,249,22,7,249,22,73,248,22,74,200,196,195,27,27,249,22,135,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,133,15,2,47,23,196,2,28,23,193, +2,27,248,22,107,23,197,1,27,249,22,135,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,133,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,133,15,2, +1,27,249,22,135,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,135,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, @@ -808,9 +808,9 @@ 22,7,249,22,73,248,22,74,200,196,195,86,95,28,248,22,135,5,195,12,250, 22,176,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,158,15,247,22,188,12,11, +1,12,27,250,22,153,2,80,159,41,43,38,248,22,160,15,247,22,190,12,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,158,15,247,22,188,12,195,192,250,22,151,2,195, +2,80,159,43,43,38,248,22,160,15,247,22,190,12,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,175,9,11, 196,195,248,22,173,9,194,28,249,22,136,7,194,6,1,1,46,2,25,28,249, 22,136,7,194,6,2,2,46,46,62,117,112,192,32,57,88,163,8,36,37,50, @@ -822,10 +822,10 @@ 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,40,48, -38,249,22,73,248,22,158,15,247,22,188,12,23,197,1,20,13,159,80,159,40, +38,249,22,73,248,22,160,15,247,22,190,12,23,197,1,20,13,159,80,159,40, 40,38,250,80,159,43,41,38,249,22,27,11,80,159,45,40,38,22,179,4,23, -196,1,249,247,22,158,5,23,198,1,248,22,61,248,22,150,14,23,198,1,86, -94,28,28,248,22,146,14,23,196,2,10,248,22,143,5,23,196,2,12,28,23, +196,1,249,247,22,158,5,23,198,1,248,22,61,248,22,152,14,23,198,1,86, +94,28,28,248,22,148,14,23,196,2,10,248,22,143,5,23,196,2,12,28,23, 197,2,250,22,175,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,176,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, @@ -838,57 +838,57 @@ 115,111,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,37,249,22,73,23,201,2,247,22,188,14,28,23,193,2,192, +248,80,159,41,46,37,249,22,73,23,201,2,247,22,190,14,28,23,193,2,192, 86,94,23,193,1,90,159,38,11,89,161,38,36,11,249,80,159,44,52,37,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,153,7,23,197,2,6,4,4,46,114,107,116,27,252,80, 159,49,57,38,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,164,14,23,195,1,23,196,1,28, +9,248,22,75,23,201,1,23,199,2,249,22,166,14,23,195,1,23,196,1,28, 248,22,130,7,23,198,2,86,94,23,194,1,27,248,80,159,41,8,26,37,23, 200,2,27,248,80,159,42,46,37,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, -37,23,203,2,11,250,22,1,22,164,14,23,199,1,249,22,87,249,22,2,32, +37,23,203,2,11,250,22,1,22,166,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,146,14,23,198,2,86,94,23,194,1,28,248,22,169,14, -23,198,2,248,80,159,40,8,27,37,248,22,173,14,23,199,2,248,22,83,6, +23,201,1,28,248,22,148,14,23,198,2,86,94,23,194,1,28,248,22,171,14, +23,198,2,248,80,159,40,8,27,37,248,22,175,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,140,9,248,22,74,23,200,2,2,30,27, -248,80,159,41,46,37,249,22,73,23,201,2,247,22,188,14,28,23,193,2,192, +248,80,159,41,46,37,249,22,73,23,201,2,247,22,190,14,28,23,193,2,192, 86,94,23,193,1,90,159,39,11,89,161,38,36,11,249,80,159,45,52,37,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,137,15,0,8,35,114,120,34,91,46,93,34, +28,248,22,81,23,194,2,249,22,139,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,137,15,0,8,35, +195,2,6,8,8,109,97,105,110,46,114,107,116,28,249,22,139,15,0,8,35, 114,120,34,91,46,93,34,23,197,2,248,2,57,23,196,2,249,22,153,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,37,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,38,2,21,23,206,1,248,22, -74,23,200,2,248,22,75,23,200,1,23,200,2,249,22,164,14,23,195,1,23, +74,23,200,2,248,22,75,23,200,1,23,200,2,249,22,166,14,23,195,1,23, 197,1,28,249,22,140,9,248,22,74,23,200,2,64,102,105,108,101,248,80,159, -40,8,27,37,248,22,173,14,249,22,171,14,248,22,175,14,248,22,98,23,203, -2,248,80,159,44,8,26,37,23,203,2,12,86,94,28,28,248,22,146,14,23, +40,8,27,37,248,22,175,14,249,22,173,14,248,22,177,14,248,22,98,23,203, +2,248,80,159,44,8,26,37,23,203,2,12,86,94,28,28,248,22,148,14,23, 194,2,10,248,22,155,8,23,194,2,86,94,23,199,1,12,28,23,199,2,250, 22,175,9,67,114,101,113,117,105,114,101,249,22,178,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,176,9,2,21,249, 22,178,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,155,8,23, -195,2,249,22,160,8,23,196,2,36,249,22,173,14,248,22,174,14,23,197,2, +195,2,249,22,160,8,23,196,2,36,249,22,175,14,248,22,176,14,23,197,2, 11,27,28,248,22,155,8,23,196,2,249,22,160,8,23,197,2,37,248,80,159, 42,58,38,23,195,2,90,159,39,11,89,161,39,36,11,28,248,22,155,8,23, -199,2,250,22,7,2,31,249,22,160,8,23,203,2,38,2,31,248,22,167,14, +199,2,250,22,7,2,31,249,22,160,8,23,203,2,38,2,31,248,22,169,14, 23,198,2,86,95,23,195,1,23,193,1,27,28,248,22,155,8,23,200,2,249, 22,160,8,23,201,2,39,249,80,159,47,56,38,23,197,2,5,0,27,28,248, 22,155,8,23,201,2,249,22,160,8,23,202,2,40,248,22,136,5,23,200,2, -27,27,250,22,153,2,80,159,51,43,38,248,22,158,15,247,22,188,12,11,28, +27,27,250,22,153,2,80,159,51,43,38,248,22,160,15,247,22,190,12,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,158,15,247,22,188,12,195,192,86,95,28,23,208,1,27, +159,52,43,38,248,22,160,15,247,22,190,12,195,192,86,95,28,23,208,1,27, 250,22,153,2,23,197,2,197,11,28,23,193,1,12,86,95,27,27,28,248,22, 17,80,159,51,49,38,80,159,50,49,38,247,22,19,250,22,25,248,22,23,23, -197,2,80,159,53,48,38,23,196,1,27,248,22,158,15,247,22,188,12,249,22, +197,2,80,159,53,48,38,23,196,1,27,248,22,160,15,247,22,190,12,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,1,248,28,248,22,17,80,159,50,49,38,32,0,88,163,36,37,42, 11,9,222,33,60,80,159,49,8,29,37,88,163,36,36,51,8,176,64,9,227, @@ -896,7 +896,7 @@ 155,8,23,202,1,11,28,248,22,130,7,23,206,2,10,28,248,22,58,23,206, 2,10,28,248,22,71,23,206,2,249,22,140,9,248,22,74,23,208,2,2,30, 11,27,28,248,22,130,7,23,207,2,249,22,73,23,208,1,248,80,159,51,8, -26,37,23,210,1,86,94,23,207,1,249,22,73,23,208,1,247,22,188,14,27, +26,37,23,210,1,86,94,23,207,1,249,22,73,23,208,1,247,22,190,14,27, 249,22,183,3,248,22,179,3,248,22,166,2,23,198,2,8,128,8,27,249,22, 160,8,80,159,52,45,38,23,196,2,27,28,23,194,2,248,22,169,2,23,195, 1,86,94,23,194,1,11,250,22,161,8,80,159,54,45,38,23,198,1,248,22, @@ -904,7 +904,7 @@ 23,214,1,23,212,1,23,18,28,23,199,2,23,199,1,86,94,23,199,1,9, 12,193,86,96,20,18,159,11,80,158,36,53,248,80,159,37,8,25,38,249,22, 27,11,80,159,39,55,38,248,22,178,4,80,159,37,54,38,248,22,158,5,80, -159,37,37,37,248,22,179,13,80,159,37,42,37,20,18,159,11,80,158,36,53, +159,37,37,37,248,22,181,13,80,159,37,42,37,20,18,159,11,80,158,36,53, 248,80,159,37,8,25,38,249,22,27,11,80,159,39,55,38,159,36,20,112,159, 36,16,1,11,16,0,20,26,142,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,112,97,116, @@ -950,7 +950,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 6861); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,50,46,51,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,49,46,50,46,52,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,97,1,0,0, 69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2,67, @@ -958,7 +958,7 @@ 107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2,74, 35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2,66,35, 37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115,11,29, -94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,223,75,0, +94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,24,77,0, 0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2,6,36, 36,159,2,7,36,36,159,2,8,36,36,159,2,9,36,36,159,2,9,36,36, 16,0,159,36,20,112,159,36,16,1,11,16,0,20,26,142,2,1,2,1,29, diff --git a/src/racket/src/schminc.h b/src/racket/src/schminc.h index a31a9156e4..aa5555dec5 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 1027 +#define EXPECTED_PRIM_COUNT 1029 #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 a3faf80835..9b94e5758b 100644 --- a/src/racket/src/schpriv.h +++ b/src/racket/src/schpriv.h @@ -388,6 +388,8 @@ extern Scheme_Object *scheme_raise_arity_error_proc; extern Scheme_Object *scheme_date; #endif +extern Scheme_Object *scheme_liberal_def_ctx_type; + extern Scheme_Object *scheme_module_stx; extern Scheme_Object *scheme_begin_stx; extern Scheme_Object *scheme_module_begin_stx; diff --git a/src/racket/src/schvers.h b/src/racket/src/schvers.h index bf96e9cd3a..d665cd4e2e 100644 --- a/src/racket/src/schvers.h +++ b/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "5.1.2.3" +#define MZSCHEME_VERSION "5.1.2.4" #define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_Y 1 #define MZSCHEME_VERSION_Z 2 -#define MZSCHEME_VERSION_W 3 +#define MZSCHEME_VERSION_W 4 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) diff --git a/src/racket/src/struct.c b/src/racket/src/struct.c index 72128a1a4d..5e46c9a5b1 100644 --- a/src/racket/src/struct.c +++ b/src/racket/src/struct.c @@ -40,6 +40,7 @@ READ_ONLY Scheme_Object *scheme_recur_symbol; READ_ONLY Scheme_Object *scheme_display_symbol; READ_ONLY Scheme_Object *scheme_write_special_symbol; READ_ONLY Scheme_Object *scheme_app_mark_impersonator_property; +READ_ONLY Scheme_Object *scheme_liberal_def_ctx_type;; READ_ONLY static Scheme_Object *location_struct; READ_ONLY static Scheme_Object *write_property; @@ -99,6 +100,8 @@ static Scheme_Object *check_rename_transformer_property_value_ok(int argc, Schem static Scheme_Object *check_set_transformer_property_value_ok(int argc, Scheme_Object *argv[]); static Scheme_Object *check_checked_proc_property_value_ok(int argc, Scheme_Object *argv[]); +static Scheme_Object *unary_acc(int argc, Scheme_Object **argv, Scheme_Object *self); + static Scheme_Object *make_struct_type(int argc, Scheme_Object *argv[]); static Scheme_Object *make_struct_field_accessor(int argc, Scheme_Object *argv[]); @@ -171,6 +174,8 @@ static Scheme_Object *make_chaperone_property(int argc, Scheme_Object *argv[]); static Scheme_Object *make_chaperone_property_from_c(Scheme_Object *name); +static Scheme_Object *is_liberal_def_ctx(int argc, Scheme_Object **argv, Scheme_Object *self); + #define PRE_REDIRECTS 2 #ifdef MZ_PRECISE_GC @@ -294,7 +299,13 @@ scheme_init_struct (Scheme_Env *env) scheme_struct_property_type); scheme_add_global_constant("prop:custom-write", write_property, env); scheme_add_global_constant("custom-write?", pred, env); - scheme_add_global_constant("custom-write-accessor", access, env); + + a[0] = access; + scheme_add_global_constant("custom-write-accessor", + scheme_make_prim_closure_w_arity(unary_acc, 1, a, + "custom-write-accessor", + 1, 1), + env); } REGISTER_SO(print_attribute_property); @@ -310,7 +321,13 @@ scheme_init_struct (Scheme_Env *env) scheme_struct_property_type); scheme_add_global_constant("prop:custom-print-quotable", print_attribute_property, env); scheme_add_global_constant("custom-print-quotable?", pred, env); - scheme_add_global_constant("custom-print-quotable-accessor", access, env); + + a[0] = access; + scheme_add_global_constant("custom-print-quotable-accessor", + scheme_make_prim_closure_w_arity(unary_acc, 1, a, + "custom-print-quotable-accessor", + 1, 1), + env); } REGISTER_SO(evt_property); @@ -419,6 +436,27 @@ scheme_init_struct (Scheme_Env *env) scheme_add_global_constant("prop:checked-procedure", scheme_checked_proc_property, env); } + REGISTER_SO(scheme_liberal_def_ctx_type); + { + Scheme_Object *a[1], *prop, *pred, *access; + + a[0] = scheme_intern_symbol("liberal-define-context"); + prop = make_struct_type_property_from_c(1, a, &pred, &access, + scheme_struct_property_type); + scheme_add_global_constant("prop:liberal-define-context", prop, env); + + a[0] = prop; + scheme_add_global_constant("liberal-define-context?", + scheme_make_prim_closure_w_arity(is_liberal_def_ctx, 1, a, + "liberal-define-context?", + 1, 1), + env); + + scheme_liberal_def_ctx_type = scheme_make_struct_type_from_string("liberal-define-context", NULL, 0, + cons(cons(prop, scheme_true), scheme_null), + NULL, 1); + } + REGISTER_SO(not_free_id_symbol); not_free_id_symbol = scheme_intern_symbol("not-free-identifier=?"); @@ -1107,7 +1145,7 @@ static Scheme_Object *make_struct_type_property_from_c(int argc, Scheme_Object * memcpy(name, SCHEME_SYM_VAL(argv[0]), len); memcpy(name + len, "-accessor", 10); - v = scheme_make_folding_prim_closure(prop_accessor, 1, a, name, 1, 2, 0); + v = scheme_make_prim_closure_w_arity(prop_accessor, 1, a, name, 1, 2); ((Scheme_Closed_Primitive_Proc *)v)->pp.flags |= (SCHEME_PRIM_IS_STRUCT_OTHER | SCHEME_PRIM_TYPE_STRUCT_PROP_GETTER); @@ -1602,6 +1640,13 @@ Scheme_Object *scheme_print_attribute_ref(Scheme_Object *s) return scheme_struct_type_property_ref(print_attribute_property, s); } +static Scheme_Object *unary_acc(int argc, Scheme_Object **argv, Scheme_Object *self) +{ + Scheme_Object *acc = SCHEME_PRIM_CLOSURE_ELS(self)[0]; + + return _scheme_apply(acc, argc, argv); +} + /*========================================================================*/ /* rename and set! transformer properties */ /*========================================================================*/ @@ -1788,6 +1833,22 @@ Scheme_Object *scheme_extract_checked_procedure(int argc, Scheme_Object **argv) return _scheme_apply(argv[2], 3, a); } +/*========================================================================*/ +/* liberal-define */ +/*========================================================================*/ + +static Scheme_Object *is_liberal_def_ctx(int argc, Scheme_Object **argv, Scheme_Object *self) +{ + Scheme_Object *prop = SCHEME_PRIM_CLOSURE_ELS(self)[0], *val; + + val = scheme_struct_type_property_ref(prop, argv[0]); + + if (!val || SCHEME_FALSEP(val)) + return scheme_false; + else + return scheme_true; +} + /*========================================================================*/ /* struct ops */ /*========================================================================*/