add chaperone-evt

This commit is contained in:
Matthew Flatt 2010-07-01 14:54:29 -06:00
parent 3d347f117b
commit 3de7dbd2fd
7 changed files with 531 additions and 283 deletions

View File

@ -135,7 +135,7 @@ or override chaperone-property values of @scheme[proc].}
(one-of/c struct-info))]
[redirect-proc procedure?] ... ...
[prop chaperone-property?]
[val any] ... ...)
[prop-val any] ... ...)
any/c]{
Returns a chaperoned value like @scheme[v], but with certain
@ -173,7 +173,7 @@ indicate a distinct operation. If no @scheme[orig-proc]s are supplied,
then no @scheme[prop]s must be supplied, and @scheme[v] is returned
unchaperoned.
Pairs of @scheme[prop-val] and @scheme[val] (the number of arguments
Pairs of @scheme[prop] and @scheme[prop-val] (the number of arguments
to @scheme[chaperone-procedure] must be even) add chaperone properties
or override chaperone-property values of @scheme[v].}
@ -181,7 +181,7 @@ or override chaperone-property values of @scheme[v].}
[ref-proc (vector? exact-nonnegative-integer? any/c . -> . any/c)]
[set-proc (vector? exact-nonnegative-integer? any/c . -> . any/c)]
[prop chaperone-property?]
[val any] ... ...)
[prop-val any] ... ...)
(and/c vector? chaperone?)]{
Returns a chaperoned value like @scheme[vec], but with
@ -201,7 +201,7 @@ with @scheme[vector-set!] on the original @scheme[vec] to install the
value. The @scheme[set-proc] will not be used if @scheme[vec] is
immutable.
Pairs of @scheme[prop-val] and @scheme[val] (the number of arguments
Pairs of @scheme[prop] and @scheme[prop-val] (the number of arguments
to @scheme[chaperone-vector] must be odd) add chaperone properties
or override chaperone-property values of @scheme[vec].}
@ -209,7 +209,7 @@ or override chaperone-property values of @scheme[vec].}
[unbox-proc (box? any/c . -> . any/c)]
[set-proc (box? any/c . -> . any/c)]
[prop chaperone-property?]
[val any] ... ...)
[prop-val any] ... ...)
(and/c box? chaperone?)]{
Returns a chaperoned value like @scheme[bx], but with
@ -227,7 +227,7 @@ the value, which is used with @scheme[set-box!] on the original
@scheme[bx] to install the value. The @scheme[set-proc] will not be
used if @scheme[bx] is immutable.
Pairs of @scheme[prop-val] and @scheme[val] (the number of arguments
Pairs of @scheme[prop] and @scheme[prop-val] (the number of arguments
to @scheme[chaperone-box] must be odd) add chaperone properties
or override chaperone-property values of @scheme[bx].}
@ -240,7 +240,7 @@ or override chaperone-property values of @scheme[bx].}
[remove-proc (hash? any/c . -> . any/c)]
[key-proc (hash? any/c . -> . any/c)]
[prop chaperone-property?]
[val any] ... ...)
[prop-val any] ... ...)
(and/c hash? chaperone?)]{
Returns a chaperoned value like @scheme[hash], but with
@ -284,7 +284,7 @@ other operations that use @scheme[hash-iterate-key] internally); it
must produce the same key or a chaperone of the key, which is then
reported as a key extracted from the table.
Pairs of @scheme[prop-val] and @scheme[val] (the number of arguments
Pairs of @scheme[prop] and @scheme[prop-val] (the number of arguments
to @scheme[chaperone-hash] must be odd) add chaperone properties
or override chaperone-property values of @scheme[hash].}
@ -293,7 +293,7 @@ or override chaperone-property values of @scheme[hash].}
[make-constructor-proc (procedure? . -> . procedure?)]
[guard-proc procedure?]
[prop chaperone-property?]
[val any] ... ...)
[prop-val any] ... ...)
(and/c struct-type? chaperone?)]{
Returns a chaperoned value like @scheme[struct-type], but with
@ -322,10 +322,32 @@ each the same or a chaperone of the corresponding argument. The
@scheme[guard-proc] is added as a constructor guard when a subtype is
created of the chaperoned structure type.
Pairs of @scheme[prop-val] and @scheme[val] (the number of arguments
Pairs of @scheme[prop] and @scheme[prop-val] (the number of arguments
to @scheme[chaperone-struct-type] must be even) add chaperone properties
or override chaperone-property values of @scheme[struct-type].}
@defproc[(chaperone-evt [evt evt?]
[proc (evt? . -> . (values evt? (any/c . -> . any/c)))]
[prop chaperone-property?]
[prop-val any] ... ...)
(and/c evt? chaperone?)]{
Returns a chaperoned value like @scheme[evt], but with @scheme[proc]
as an event generator when the result is synchronized with functions
like @racket[sync].
The @racket[proc] generator is called on synchronization, much like
the procedure passed to @racket[guard-evt], except that @racket[proc]
is given @scheme[evt]. The @racket[proc] must return two values: a
@tech{synchronizable event} that is a chaperone of @racket[evt], and a
procedure that is used to check the event's result if it is chosen in
a selection. The latter procedure accepts the result of @racket[evt],
and it must return a chaperone of that value.
Pairs of @scheme[prop] and @scheme[prop-val] (the number of arguments
to @scheme[chaperone-struct-type] must be even) add chaperone properties
or override chaperone-property values of @scheme[evt].}
@; ------------------------------------------------------------
@section{Chaperone Properties}

View File

@ -765,4 +765,64 @@
;; ----------------------------------------
;; evt chaperones
(test #t evt? (chaperone-evt always-evt void))
(test #t chaperone-of? (chaperone-evt always-evt void) always-evt)
(test #f chaperone-of? (chaperone-evt always-evt void) (chaperone-evt always-evt void))
(test #t chaperone-of? (chaperone-evt (chaperone-evt always-evt void) void) always-evt)
(test always-evt sync (chaperone-evt always-evt (lambda (e) (values e values))))
(test #f sync/timeout 0 (chaperone-evt never-evt (lambda (e) (values e (lambda (v) (error "bad"))))))
(err/rt-test (chaperone-evt always-evt (lambda () 0)))
(test #t evt? (chaperone-evt always-evt (lambda (x) x)))
(err/rt-test (sync (chaperone-evt never-evt (lambda (x) x))))
(err/rt-test (sync (chaperone-evt never-evt (lambda (x) (values x (lambda () 10))))))
(test #f sync/timeout 0 (chaperone-evt never-evt (lambda (x) (values x (lambda (v) 10)))))
(err/rt-test (sync/timeout 0 (chaperone-evt always-evt (lambda (x) (values x (lambda (v) 10))))))
(test #t chaperone-of?
(sync/timeout 0 (chaperone-evt always-evt (lambda (x) (values x (lambda (v)
(chaperone-evt always-evt void))))))
always-evt)
(let ([did-0 #f]
[did-1 #f]
[did-2 #f]
[did-3 #f]
[v 0])
(define (val) (begin0 v (set! v (add1 v))))
(test always-evt sync (chaperone-evt always-evt
(lambda (e)
(set! did-0 (val))
(values
(chaperone-evt e (lambda (e)
(set! did-1 (val))
(values e (lambda (x)
(set! did-2 (val))
x))))
(lambda (x)
(set! did-3 (val))
x)))))
(test '(0 1 2 3) list did-0 did-1 did-2 did-3))
(let ()
(define-struct e (val)
#:property prop:procedure (lambda (self x)
(check self)
(+ x x))
#:property prop:evt (lambda (self)
(check self)
always-evt))
(define (check self) (unless (e? self) (error "bad self!")))
(define an-e (make-e 0))
(test always-evt sync (make-e 0))
(test 14 (make-e 0) 7)
(test #t evt? an-e)
(test #t evt? (chaperone-evt an-e void))
(test #t chaperone-of? (chaperone-evt an-e void) an-e)
(test 18 (chaperone-evt an-e void) 9))
;; ----------------------------------------
(report-errs)

View File

@ -1,28 +1,28 @@
{
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,48,46,51,51,0,0,0,1,0,0,10,0,13,0,
22,0,27,0,34,0,38,0,42,0,45,0,52,0,59,0,64,0,77,0,82,
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,48,46,52,51,0,0,0,1,0,0,10,0,13,0,
22,0,27,0,34,0,38,0,51,0,55,0,58,0,65,0,72,0,77,0,82,
0,88,0,102,0,116,0,119,0,125,0,129,0,131,0,142,0,144,0,158,0,
165,0,187,0,189,0,203,0,14,1,43,1,54,1,65,1,75,1,111,1,144,
1,177,1,236,1,46,2,124,2,190,2,195,2,215,2,106,3,126,3,177,3,
243,3,128,4,14,5,66,5,89,5,168,5,0,0,109,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,64,99,
111,110,100,66,108,101,116,114,101,99,63,97,110,100,63,108,101,116,62,111,114,
66,100,101,102,105,110,101,66,117,110,108,101,115,115,64,108,101,116,42,72,112,
97,114,97,109,101,116,101,114,105,122,101,64,119,104,101,110,65,113,117,111,116,
111,110,100,66,108,101,116,114,101,99,63,97,110,100,72,112,97,114,97,109,101,
116,101,114,105,122,101,63,108,101,116,62,111,114,66,100,101,102,105,110,101,66,
117,110,108,101,115,115,64,108,101,116,42,64,119,104,101,110,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,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,180,74,0,0,95,
102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,218,81,0,0,95,
159,2,16,36,36,159,2,15,36,36,159,2,15,36,36,16,20,2,4,2,2,
2,6,2,2,2,7,2,2,2,5,2,2,2,9,2,2,2,8,2,2,2,
10,2,2,2,11,2,2,2,12,2,2,2,13,2,2,97,37,11,8,240,180,
74,0,0,93,159,2,15,36,37,16,2,2,3,161,2,2,37,2,3,2,2,
2,3,96,38,11,8,240,180,74,0,0,16,0,96,11,11,8,240,180,74,0,
2,6,2,2,2,7,2,2,2,8,2,2,2,5,2,2,2,10,2,2,2,
9,2,2,2,11,2,2,2,12,2,2,2,13,2,2,97,37,11,8,240,218,
81,0,0,93,159,2,15,36,37,16,2,2,3,161,2,2,37,2,3,2,2,
2,3,96,38,11,8,240,218,81,0,0,16,0,96,11,11,8,240,218,81,0,
0,16,0,13,16,4,36,29,11,11,2,2,11,18,16,2,99,64,104,101,114,
101,8,32,8,31,8,30,8,29,8,28,93,8,224,187,74,0,0,95,9,8,
224,187,74,0,0,2,2,27,248,22,147,4,195,249,22,140,4,80,158,39,36,
101,8,32,8,31,8,30,8,29,8,28,93,8,224,225,81,0,0,95,9,8,
224,225,81,0,0,2,2,27,248,22,147,4,195,249,22,140,4,80,158,39,36,
251,22,81,2,17,248,22,96,199,12,249,22,71,2,18,248,22,98,201,27,248,
22,147,4,195,249,22,140,4,80,158,39,36,251,22,81,2,17,248,22,96,199,
249,22,71,2,18,248,22,98,201,12,27,248,22,73,248,22,147,4,196,28,248,
@ -30,15 +30,15 @@
249,22,140,4,80,158,39,36,251,22,81,2,17,248,22,72,199,249,22,71,2,
6,248,22,73,201,11,18,16,2,101,10,8,32,8,31,8,30,8,29,8,28,
16,4,11,11,2,19,3,1,8,101,110,118,49,50,56,51,55,16,4,11,11,
2,20,3,1,8,101,110,118,49,50,56,51,56,93,8,224,188,74,0,0,95,
9,8,224,188,74,0,0,2,2,27,248,22,73,248,22,147,4,196,28,248,22,
2,20,3,1,8,101,110,118,49,50,56,51,56,93,8,224,226,81,0,0,95,
9,8,224,226,81,0,0,2,2,27,248,22,73,248,22,147,4,196,28,248,22,
79,193,20,15,159,37,36,37,28,248,22,79,248,22,73,194,248,22,72,193,249,
22,140,4,80,158,39,36,250,22,81,2,21,248,22,81,249,22,81,248,22,81,
2,22,248,22,72,201,251,22,81,2,17,2,22,2,22,249,22,71,2,8,248,
2,22,248,22,72,201,251,22,81,2,17,2,22,2,22,249,22,71,2,9,248,
22,73,204,18,16,2,101,11,8,32,8,31,8,30,8,29,8,28,16,4,11,
11,2,19,3,1,8,101,110,118,49,50,56,52,48,16,4,11,11,2,20,3,
1,8,101,110,118,49,50,56,52,49,93,8,224,189,74,0,0,95,9,8,224,
189,74,0,0,2,2,248,22,147,4,193,27,248,22,147,4,194,249,22,71,248,
1,8,101,110,118,49,50,56,52,49,93,8,224,227,81,0,0,95,9,8,224,
227,81,0,0,2,2,248,22,147,4,193,27,248,22,147,4,194,249,22,71,248,
22,81,248,22,72,196,248,22,73,195,27,248,22,73,248,22,147,4,23,197,1,
249,22,140,4,80,158,39,36,28,248,22,56,248,22,141,4,248,22,72,23,198,
2,27,249,22,2,32,0,89,162,8,44,37,43,9,222,33,40,248,22,147,4,
@ -52,7 +52,7 @@
37,47,9,222,33,43,248,22,147,4,248,22,72,201,248,22,73,198,27,248,22,
73,248,22,147,4,196,27,248,22,147,4,248,22,72,195,249,22,140,4,80,158,
40,36,28,248,22,79,195,250,22,82,2,21,9,248,22,73,199,250,22,81,2,
7,248,22,81,248,22,72,199,250,22,82,2,11,248,22,73,201,248,22,73,202,
8,248,22,81,248,22,72,199,250,22,82,2,12,248,22,73,201,248,22,73,202,
27,248,22,73,248,22,147,4,23,197,1,27,249,22,1,22,85,249,22,2,22,
147,4,248,22,147,4,248,22,72,199,249,22,140,4,80,158,40,36,251,22,81,
1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,
@ -68,8 +68,8 @@
72,200,64,101,108,115,101,10,248,22,72,197,250,22,82,2,21,9,248,22,73,
200,249,22,71,2,4,248,22,73,202,100,8,32,8,31,8,30,8,29,8,28,
16,4,11,11,2,19,3,1,8,101,110,118,49,50,56,54,51,16,4,11,11,
2,20,3,1,8,101,110,118,49,50,56,54,52,93,8,224,190,74,0,0,18,
16,2,158,94,10,64,118,111,105,100,8,48,95,9,8,224,190,74,0,0,2,
2,20,3,1,8,101,110,118,49,50,56,54,52,93,8,224,228,81,0,0,18,
16,2,158,94,10,64,118,111,105,100,8,48,95,9,8,224,228,81,0,0,2,
2,27,248,22,73,248,22,147,4,196,249,22,140,4,80,158,39,36,28,248,22,
56,248,22,141,4,248,22,72,197,250,22,81,2,27,248,22,81,248,22,72,199,
248,22,96,198,27,248,22,141,4,248,22,72,197,250,22,81,2,27,248,22,81,
@ -81,25 +81,25 @@
11,11,11,11,16,10,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,
11,2,12,2,13,36,46,37,11,11,11,16,0,16,0,16,0,36,36,11,11,
11,11,16,0,16,0,16,0,36,36,16,11,16,5,2,3,20,15,159,36,36,
36,36,20,105,159,36,16,0,16,1,33,33,10,16,5,2,10,89,162,8,44,
36,36,20,105,159,36,16,0,16,1,33,33,10,16,5,2,11,89,162,8,44,
37,53,9,223,0,33,34,36,20,105,159,36,16,1,2,3,16,0,11,16,5,
2,13,89,162,8,44,37,53,9,223,0,33,35,36,20,105,159,36,16,1,2,
3,16,0,11,16,5,2,6,89,162,8,44,37,53,9,223,0,33,36,36,20,
105,159,36,16,1,2,3,16,1,33,37,11,16,5,2,8,89,162,8,44,37,
105,159,36,16,1,2,3,16,1,33,37,11,16,5,2,9,89,162,8,44,37,
56,9,223,0,33,38,36,20,105,159,36,16,1,2,3,16,1,33,39,11,16,
5,2,7,89,162,8,44,37,58,9,223,0,33,42,36,20,105,159,36,16,1,
5,2,8,89,162,8,44,37,58,9,223,0,33,42,36,20,105,159,36,16,1,
2,3,16,0,11,16,5,2,5,89,162,8,44,37,53,9,223,0,33,44,36,
20,105,159,36,16,1,2,3,16,0,11,16,5,2,11,89,162,8,44,37,54,
9,223,0,33,45,36,20,105,159,36,16,1,2,3,16,0,11,16,5,2,12,
20,105,159,36,16,1,2,3,16,0,11,16,5,2,12,89,162,8,44,37,54,
9,223,0,33,45,36,20,105,159,36,16,1,2,3,16,0,11,16,5,2,7,
89,162,8,44,37,55,9,223,0,33,46,36,20,105,159,36,16,1,2,3,16,
0,11,16,5,2,4,89,162,8,44,37,58,9,223,0,33,47,36,20,105,159,
36,16,1,2,3,16,1,33,49,11,16,5,2,9,89,162,8,44,37,54,9,
36,16,1,2,3,16,1,33,49,11,16,5,2,10,89,162,8,44,37,54,9,
223,0,33,50,36,20,105,159,36,16,1,2,3,16,0,11,16,0,94,2,15,
2,16,93,2,15,9,9,36,0};
EVAL_ONE_SIZED_STR((char *)expr, 2024);
}
{
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,48,46,51,65,0,0,0,1,0,0,8,0,21,0,
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,48,46,52,65,0,0,0,1,0,0,8,0,21,0,
26,0,43,0,58,0,76,0,92,0,102,0,120,0,140,0,156,0,174,0,205,
0,234,0,0,1,14,1,20,1,34,1,39,1,49,1,57,1,85,1,117,1,
123,1,168,1,213,1,237,1,20,2,22,2,188,2,22,4,63,4,136,5,222,
@ -132,231 +132,231 @@
111,114,32,98,121,116,101,32,115,116,114,105,110,103,6,36,36,99,97,110,110,
111,116,32,97,100,100,32,97,32,115,117,102,102,105,120,32,116,111,32,97,32,
114,111,111,116,32,112,97,116,104,58,32,5,0,27,20,14,159,80,159,37,51,
38,250,80,159,40,52,38,249,22,27,11,80,159,42,51,38,22,155,13,10,248,
38,250,80,159,40,52,38,249,22,27,11,80,159,42,51,38,22,156,13,10,248,
22,174,5,23,196,2,28,248,22,171,6,23,194,2,12,87,94,248,22,189,8,
23,194,1,27,20,14,159,80,159,38,51,38,250,80,159,41,52,38,249,22,27,
11,80,159,43,51,38,22,155,13,10,248,22,174,5,23,197,2,28,248,22,171,
11,80,159,43,51,38,22,156,13,10,248,22,174,5,23,197,2,28,248,22,171,
6,23,194,2,12,87,94,248,22,189,8,23,194,1,27,20,14,159,80,159,39,
51,38,250,80,159,42,52,38,249,22,27,11,80,159,44,51,38,22,155,13,10,
51,38,250,80,159,42,52,38,249,22,27,11,80,159,44,51,38,22,156,13,10,
248,22,174,5,23,198,2,28,248,22,171,6,23,194,2,12,87,94,248,22,189,
8,23,194,1,248,80,159,40,54,37,197,28,248,22,79,23,195,2,9,27,248,
22,72,23,196,2,27,28,248,22,139,14,23,195,2,23,194,1,28,248,22,138,
14,23,195,2,249,22,140,14,23,196,1,250,80,158,43,49,248,22,155,14,2,
20,11,10,250,80,158,41,49,248,22,155,14,2,20,23,197,1,10,28,23,193,
2,249,22,71,248,22,142,14,249,22,140,14,23,198,1,247,22,156,14,27,248,
22,72,23,196,2,27,28,248,22,140,14,23,195,2,23,194,1,28,248,22,139,
14,23,195,2,249,22,141,14,23,196,1,250,80,158,43,49,248,22,156,14,2,
20,11,10,250,80,158,41,49,248,22,156,14,2,20,23,197,1,10,28,23,193,
2,249,22,71,248,22,143,14,249,22,141,14,23,198,1,247,22,157,14,27,248,
22,73,23,200,1,28,248,22,79,23,194,2,9,27,248,22,72,23,195,2,27,
28,248,22,139,14,23,195,2,23,194,1,28,248,22,138,14,23,195,2,249,22,
140,14,23,196,1,250,80,158,48,49,248,22,155,14,2,20,11,10,250,80,158,
46,49,248,22,155,14,2,20,23,197,1,10,28,23,193,2,249,22,71,248,22,
142,14,249,22,140,14,23,198,1,247,22,156,14,248,80,159,46,53,37,248,22,
28,248,22,140,14,23,195,2,23,194,1,28,248,22,139,14,23,195,2,249,22,
141,14,23,196,1,250,80,158,48,49,248,22,156,14,2,20,11,10,250,80,158,
46,49,248,22,156,14,2,20,23,197,1,10,28,23,193,2,249,22,71,248,22,
143,14,249,22,141,14,23,198,1,247,22,157,14,248,80,159,46,53,37,248,22,
73,23,199,1,87,94,23,193,1,248,80,159,44,53,37,248,22,73,23,197,1,
87,94,23,193,1,27,248,22,73,23,198,1,28,248,22,79,23,194,2,9,27,
248,22,72,23,195,2,27,28,248,22,139,14,23,195,2,23,194,1,28,248,22,
138,14,23,195,2,249,22,140,14,23,196,1,250,80,158,46,49,248,22,155,14,
2,20,11,10,250,80,158,44,49,248,22,155,14,2,20,23,197,1,10,28,23,
193,2,249,22,71,248,22,142,14,249,22,140,14,23,198,1,247,22,156,14,248,
248,22,72,23,195,2,27,28,248,22,140,14,23,195,2,23,194,1,28,248,22,
139,14,23,195,2,249,22,141,14,23,196,1,250,80,158,46,49,248,22,156,14,
2,20,11,10,250,80,158,44,49,248,22,156,14,2,20,23,197,1,10,28,23,
193,2,249,22,71,248,22,143,14,249,22,141,14,23,198,1,247,22,157,14,248,
80,159,44,53,37,248,22,73,23,199,1,248,80,159,42,53,37,248,22,73,196,
27,248,22,179,13,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,
176,6,23,195,2,27,248,22,137,14,195,28,192,192,248,22,138,14,195,11,87,
94,28,28,248,22,180,13,23,195,2,10,28,248,22,179,13,23,195,2,10,28,
248,22,176,6,23,195,2,28,248,22,137,14,23,195,2,10,248,22,138,14,23,
27,248,22,180,13,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,
176,6,23,195,2,27,248,22,138,14,195,28,192,192,248,22,139,14,195,11,87,
94,28,28,248,22,181,13,23,195,2,10,28,248,22,180,13,23,195,2,10,28,
248,22,176,6,23,195,2,28,248,22,138,14,23,195,2,10,248,22,139,14,23,
195,2,11,12,250,22,153,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,180,13,23,195,2,249,22,
183,8,248,22,181,13,23,197,2,2,21,249,22,183,8,247,22,132,8,2,21,
27,28,248,22,176,6,23,196,2,23,195,2,248,22,186,7,248,22,184,13,23,
197,2,28,249,22,170,14,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,176,6,195,248,22,187,
13,195,194,27,248,22,151,7,23,195,1,249,22,188,13,248,22,189,7,250,22,
178,14,0,6,35,114,120,34,47,34,28,249,22,170,14,0,22,35,114,120,34,
32,115,116,114,105,110,103,23,197,2,28,28,248,22,181,13,23,195,2,249,22,
183,8,248,22,182,13,23,197,2,2,21,249,22,183,8,247,22,132,8,2,21,
27,28,248,22,176,6,23,196,2,23,195,2,248,22,186,7,248,22,185,13,23,
197,2,28,249,22,171,14,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,176,6,195,248,22,188,
13,195,194,27,248,22,151,7,23,195,1,249,22,189,13,248,22,189,7,250,22,
179,14,0,6,35,114,120,34,47,34,28,249,22,171,14,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,178,14,0,19,35,114,120,34,91,32,46,93,43,40,91,47,
23,199,1,250,22,179,14,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,
21,28,248,22,176,6,194,248,22,187,13,194,193,87,94,28,28,248,22,179,13,
23,195,2,10,28,248,22,176,6,23,195,2,28,248,22,137,14,23,195,2,10,
248,22,138,14,23,195,2,11,12,250,22,153,9,23,196,2,2,22,23,197,2,
28,248,22,137,14,23,195,2,12,248,22,131,12,249,22,137,11,248,22,141,7,
21,28,248,22,176,6,194,248,22,188,13,194,193,87,94,28,28,248,22,180,13,
23,195,2,10,28,248,22,176,6,23,195,2,28,248,22,138,14,23,195,2,10,
248,22,139,14,23,195,2,11,12,250,22,153,9,23,196,2,2,22,23,197,2,
28,248,22,138,14,23,195,2,12,248,22,132,12,249,22,138,11,248,22,141,7,
250,22,160,7,2,23,23,200,1,23,201,1,247,22,23,87,94,28,28,248,22,
179,13,23,195,2,10,28,248,22,176,6,23,195,2,28,248,22,137,14,23,195,
2,10,248,22,138,14,23,195,2,11,12,250,22,153,9,23,196,2,2,22,23,
197,2,28,248,22,137,14,23,195,2,12,248,22,131,12,249,22,137,11,248,22,
180,13,23,195,2,10,28,248,22,176,6,23,195,2,28,248,22,138,14,23,195,
2,10,248,22,139,14,23,195,2,11,12,250,22,153,9,23,196,2,2,22,23,
197,2,28,248,22,138,14,23,195,2,12,248,22,132,12,249,22,138,11,248,22,
141,7,250,22,160,7,2,23,23,200,1,23,201,1,247,22,23,87,94,87,94,
28,28,248,22,179,13,23,195,2,10,28,248,22,176,6,23,195,2,28,248,22,
137,14,23,195,2,10,248,22,138,14,23,195,2,11,12,250,22,153,9,195,2,
22,23,197,2,28,248,22,137,14,23,195,2,12,248,22,131,12,249,22,137,11,
28,28,248,22,180,13,23,195,2,10,28,248,22,176,6,23,195,2,28,248,22,
138,14,23,195,2,10,248,22,139,14,23,195,2,11,12,250,22,153,9,195,2,
22,23,197,2,28,248,22,138,14,23,195,2,12,248,22,132,12,249,22,138,11,
248,22,141,7,250,22,160,7,2,23,199,23,201,1,247,22,23,249,22,3,89,
162,8,44,37,50,9,223,2,33,35,196,87,94,28,28,248,22,179,13,23,194,
2,10,28,248,22,176,6,23,194,2,28,248,22,137,14,23,194,2,10,248,22,
138,14,23,194,2,11,12,250,22,153,9,2,7,2,22,23,196,2,28,248,22,
137,14,23,194,2,12,248,22,131,12,249,22,137,11,248,22,141,7,250,22,160,
162,8,44,37,50,9,223,2,33,35,196,87,94,28,28,248,22,180,13,23,194,
2,10,28,248,22,176,6,23,194,2,28,248,22,138,14,23,194,2,10,248,22,
139,14,23,194,2,11,12,250,22,153,9,2,7,2,22,23,196,2,28,248,22,
138,14,23,194,2,12,248,22,132,12,249,22,138,11,248,22,141,7,250,22,160,
7,2,23,2,7,23,200,1,247,22,23,32,38,89,162,8,44,40,55,2,24,
222,33,39,28,248,22,79,23,197,2,87,94,23,196,1,248,22,131,12,249,22,
170,11,251,22,160,7,2,25,2,7,28,248,22,79,23,203,2,87,94,23,202,
1,23,201,1,250,22,1,22,133,14,23,204,1,23,205,1,23,200,1,247,22,
23,27,249,22,133,14,248,22,72,23,200,2,23,197,2,28,248,22,128,14,23,
194,2,27,250,22,1,22,133,14,23,197,1,199,28,248,22,128,14,193,192,251,
222,33,39,28,248,22,79,23,197,2,87,94,23,196,1,248,22,132,12,249,22,
171,11,251,22,160,7,2,25,2,7,28,248,22,79,23,203,2,87,94,23,202,
1,23,201,1,250,22,1,22,134,14,23,204,1,23,205,1,23,200,1,247,22,
23,27,249,22,134,14,248,22,72,23,200,2,23,197,2,28,248,22,129,14,23,
194,2,27,250,22,1,22,134,14,23,197,1,199,28,248,22,129,14,193,192,251,
2,38,198,199,200,248,22,73,202,251,2,38,197,198,199,248,22,73,201,87,94,
87,94,87,94,28,28,248,22,179,13,193,10,28,248,22,176,6,193,28,248,22,
137,14,193,10,248,22,138,14,193,11,12,250,22,153,9,2,7,2,22,195,28,
248,22,137,14,193,12,248,22,131,12,249,22,137,11,248,22,141,7,250,22,160,
87,94,87,94,28,28,248,22,180,13,193,10,28,248,22,176,6,193,28,248,22,
138,14,193,10,248,22,139,14,193,11,12,250,22,153,9,2,7,2,22,195,28,
248,22,138,14,193,12,248,22,132,12,249,22,138,11,248,22,141,7,250,22,160,
7,2,23,2,7,199,247,22,23,249,22,3,32,0,89,162,8,44,37,49,9,
222,33,37,195,27,247,22,157,14,251,2,38,196,197,198,196,32,41,89,162,44,
222,33,37,195,27,247,22,158,14,251,2,38,196,197,198,196,32,41,89,162,44,
42,59,2,24,222,33,42,28,248,22,79,23,199,2,87,94,23,198,1,248,23,
196,1,251,22,160,7,2,25,23,199,1,28,248,22,79,23,203,2,87,94,23,
202,1,23,201,1,250,22,1,22,133,14,23,204,1,23,205,1,23,198,1,27,
249,22,133,14,248,22,72,23,202,2,23,199,2,28,248,22,128,14,23,194,2,
27,250,22,1,22,133,14,23,197,1,23,202,2,28,248,22,128,14,23,194,2,
202,1,23,201,1,250,22,1,22,134,14,23,204,1,23,205,1,23,198,1,27,
249,22,134,14,248,22,72,23,202,2,23,199,2,28,248,22,129,14,23,194,2,
27,250,22,1,22,134,14,23,197,1,23,202,2,28,248,22,129,14,23,194,2,
192,87,94,23,193,1,27,248,22,73,23,202,1,28,248,22,79,23,194,2,87,
94,23,193,1,248,23,199,1,251,22,160,7,2,25,23,202,1,28,248,22,79,
23,206,2,87,94,23,205,1,23,204,1,250,22,1,22,133,14,23,207,1,23,
208,1,23,201,1,27,249,22,133,14,248,22,72,23,197,2,23,202,2,28,248,
22,128,14,23,194,2,27,250,22,1,22,133,14,23,197,1,204,28,248,22,128,
23,206,2,87,94,23,205,1,23,204,1,250,22,1,22,134,14,23,207,1,23,
208,1,23,201,1,27,249,22,134,14,248,22,72,23,197,2,23,202,2,28,248,
22,129,14,23,194,2,27,250,22,1,22,134,14,23,197,1,204,28,248,22,129,
14,193,192,253,2,41,203,204,205,206,23,15,248,22,73,201,253,2,41,202,203,
204,205,206,248,22,73,200,87,94,23,193,1,27,248,22,73,23,201,1,28,248,
22,79,23,194,2,87,94,23,193,1,248,23,198,1,251,22,160,7,2,25,23,
201,1,28,248,22,79,23,205,2,87,94,23,204,1,23,203,1,250,22,1,22,
133,14,23,206,1,23,207,1,23,200,1,27,249,22,133,14,248,22,72,23,197,
2,23,201,2,28,248,22,128,14,23,194,2,27,250,22,1,22,133,14,23,197,
1,203,28,248,22,128,14,193,192,253,2,41,202,203,204,205,206,248,22,73,201,
253,2,41,201,202,203,204,205,248,22,73,200,27,247,22,157,14,253,2,41,198,
199,200,201,202,198,87,95,28,28,248,22,180,13,23,194,2,10,28,248,22,179,
13,23,194,2,10,28,248,22,176,6,23,194,2,28,248,22,137,14,23,194,2,
10,248,22,138,14,23,194,2,11,12,252,22,153,9,23,200,2,2,26,36,23,
134,14,23,206,1,23,207,1,23,200,1,27,249,22,134,14,248,22,72,23,197,
2,23,201,2,28,248,22,129,14,23,194,2,27,250,22,1,22,134,14,23,197,
1,203,28,248,22,129,14,193,192,253,2,41,202,203,204,205,206,248,22,73,201,
253,2,41,201,202,203,204,205,248,22,73,200,27,247,22,158,14,253,2,41,198,
199,200,201,202,198,87,95,28,28,248,22,181,13,23,194,2,10,28,248,22,180,
13,23,194,2,10,28,248,22,176,6,23,194,2,28,248,22,138,14,23,194,2,
10,248,22,139,14,23,194,2,11,12,252,22,153,9,23,200,2,2,26,36,23,
198,2,23,199,2,28,28,248,22,176,6,23,195,2,10,248,22,165,7,23,195,
2,87,94,23,194,1,12,252,22,153,9,23,200,2,2,27,37,23,198,2,23,
199,1,91,159,39,11,90,161,39,36,11,248,22,136,14,23,197,2,87,94,23,
199,1,91,159,39,11,90,161,39,36,11,248,22,137,14,23,197,2,87,94,23,
195,1,87,94,28,192,12,250,22,154,9,23,201,1,2,28,23,199,1,249,22,
7,194,195,91,159,38,11,90,161,38,36,11,87,95,28,28,248,22,180,13,23,
196,2,10,28,248,22,179,13,23,196,2,10,28,248,22,176,6,23,196,2,28,
248,22,137,14,23,196,2,10,248,22,138,14,23,196,2,11,12,252,22,153,9,
7,194,195,91,159,38,11,90,161,38,36,11,87,95,28,28,248,22,181,13,23,
196,2,10,28,248,22,180,13,23,196,2,10,28,248,22,176,6,23,196,2,28,
248,22,138,14,23,196,2,10,248,22,139,14,23,196,2,11,12,252,22,153,9,
2,10,2,26,36,23,200,2,23,201,2,28,28,248,22,176,6,23,197,2,10,
248,22,165,7,23,197,2,12,252,22,153,9,2,10,2,27,37,23,200,2,23,
201,2,91,159,39,11,90,161,39,36,11,248,22,136,14,23,199,2,87,94,23,
201,2,91,159,39,11,90,161,39,36,11,248,22,137,14,23,199,2,87,94,23,
195,1,87,94,28,192,12,250,22,154,9,2,10,2,28,23,201,2,249,22,7,
194,195,27,249,22,189,13,250,22,177,14,0,20,35,114,120,35,34,40,63,58,
91,46,93,91,94,46,93,42,124,41,36,34,248,22,185,13,23,201,1,28,248,
194,195,27,249,22,190,13,250,22,178,14,0,20,35,114,120,35,34,40,63,58,
91,46,93,91,94,46,93,42,124,41,36,34,248,22,186,13,23,201,1,28,248,
22,176,6,23,203,2,249,22,189,7,23,204,1,8,63,23,202,1,28,248,22,
180,13,23,199,2,248,22,181,13,23,199,1,87,94,23,198,1,247,22,182,13,
28,248,22,179,13,194,249,22,133,14,195,194,192,91,159,38,11,90,161,38,36,
11,87,95,28,28,248,22,180,13,23,196,2,10,28,248,22,179,13,23,196,2,
10,28,248,22,176,6,23,196,2,28,248,22,137,14,23,196,2,10,248,22,138,
181,13,23,199,2,248,22,182,13,23,199,1,87,94,23,198,1,247,22,183,13,
28,248,22,180,13,194,249,22,134,14,195,194,192,91,159,38,11,90,161,38,36,
11,87,95,28,28,248,22,181,13,23,196,2,10,28,248,22,180,13,23,196,2,
10,28,248,22,176,6,23,196,2,28,248,22,138,14,23,196,2,10,248,22,139,
14,23,196,2,11,12,252,22,153,9,2,11,2,26,36,23,200,2,23,201,2,
28,28,248,22,176,6,23,197,2,10,248,22,165,7,23,197,2,12,252,22,153,
9,2,11,2,27,37,23,200,2,23,201,2,91,159,39,11,90,161,39,36,11,
248,22,136,14,23,199,2,87,94,23,195,1,87,94,28,192,12,250,22,154,9,
2,11,2,28,23,201,2,249,22,7,194,195,27,249,22,189,13,249,22,175,7,
250,22,178,14,0,9,35,114,120,35,34,91,46,93,34,248,22,185,13,23,203,
248,22,137,14,23,199,2,87,94,23,195,1,87,94,28,192,12,250,22,154,9,
2,11,2,28,23,201,2,249,22,7,194,195,27,249,22,190,13,249,22,175,7,
250,22,179,14,0,9,35,114,120,35,34,91,46,93,34,248,22,186,13,23,203,
1,6,1,1,95,28,248,22,176,6,23,202,2,249,22,189,7,23,203,1,8,
63,23,201,1,28,248,22,180,13,23,199,2,248,22,181,13,23,199,1,87,94,
23,198,1,247,22,182,13,28,248,22,179,13,194,249,22,133,14,195,194,192,249,
63,23,201,1,28,248,22,181,13,23,199,2,248,22,182,13,23,199,1,87,94,
23,198,1,247,22,183,13,28,248,22,180,13,194,249,22,134,14,195,194,192,249,
247,22,143,5,194,11,249,80,159,38,47,37,9,9,249,80,159,38,47,37,195,
9,27,247,22,159,14,249,80,158,39,48,28,23,195,2,27,248,22,130,8,6,
9,27,247,22,160,14,249,80,158,39,48,28,23,195,2,27,248,22,130,8,6,
11,11,80,76,84,67,79,76,76,69,67,84,83,28,192,192,6,0,0,6,0,
0,27,28,23,196,1,250,22,133,14,248,22,155,14,69,97,100,100,111,110,45,
0,27,28,23,196,1,250,22,134,14,248,22,156,14,69,97,100,100,111,110,45,
100,105,114,247,22,128,8,6,8,8,99,111,108,108,101,99,116,115,11,27,248,
80,159,42,53,37,250,22,85,23,203,1,248,22,81,248,22,155,14,72,99,111,
80,159,42,53,37,250,22,85,23,203,1,248,22,81,248,22,156,14,72,99,111,
108,108,101,99,116,115,45,100,105,114,23,204,1,28,193,249,22,71,195,194,192,
32,51,89,162,8,44,39,8,31,2,19,222,33,52,27,249,22,166,14,23,197,
32,51,89,162,8,44,39,8,31,2,19,222,33,52,27,249,22,167,14,23,197,
2,23,198,2,28,23,193,2,87,94,23,196,1,27,248,22,96,23,195,2,27,
27,248,22,105,23,197,1,27,249,22,166,14,23,201,2,23,196,2,28,23,193,
27,248,22,105,23,197,1,27,249,22,167,14,23,201,2,23,196,2,28,23,193,
2,87,94,23,194,1,27,248,22,96,23,195,2,27,27,248,22,105,23,197,1,
27,249,22,166,14,23,205,2,23,196,2,28,23,193,2,87,94,23,194,1,27,
248,22,96,23,195,2,27,27,248,22,105,23,197,1,27,249,22,166,14,23,209,
27,249,22,167,14,23,205,2,23,196,2,28,23,193,2,87,94,23,194,1,27,
248,22,96,23,195,2,27,27,248,22,105,23,197,1,27,249,22,167,14,23,209,
2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,96,23,195,2,27,
27,248,22,105,23,197,1,27,249,22,166,14,23,213,2,23,196,2,28,23,193,
27,248,22,105,23,197,1,27,249,22,167,14,23,213,2,23,196,2,28,23,193,
2,87,94,23,194,1,27,248,22,96,23,195,2,27,250,2,51,23,215,2,23,
216,1,248,22,105,23,199,1,28,249,22,171,7,23,196,2,2,29,249,22,85,
23,214,2,194,249,22,71,248,22,188,13,23,197,1,194,87,95,23,211,1,23,
23,214,2,194,249,22,71,248,22,189,13,23,197,1,194,87,95,23,211,1,23,
193,1,28,249,22,171,7,23,196,2,2,29,249,22,85,23,212,2,9,249,22,
71,248,22,188,13,23,197,1,9,28,249,22,171,7,23,196,2,2,29,249,22,
85,23,210,2,194,249,22,71,248,22,188,13,23,197,1,194,87,94,23,193,1,
71,248,22,189,13,23,197,1,9,28,249,22,171,7,23,196,2,2,29,249,22,
85,23,210,2,194,249,22,71,248,22,189,13,23,197,1,194,87,94,23,193,1,
28,249,22,171,7,23,196,2,2,29,249,22,85,23,208,2,9,249,22,71,248,
22,188,13,23,197,1,9,28,249,22,171,7,23,196,2,2,29,249,22,85,23,
206,2,194,249,22,71,248,22,188,13,23,197,1,194,87,94,23,193,1,28,249,
22,171,7,23,196,2,2,29,249,22,85,23,204,2,9,249,22,71,248,22,188,
22,189,13,23,197,1,9,28,249,22,171,7,23,196,2,2,29,249,22,85,23,
206,2,194,249,22,71,248,22,189,13,23,197,1,194,87,94,23,193,1,28,249,
22,171,7,23,196,2,2,29,249,22,85,23,204,2,9,249,22,71,248,22,189,
13,23,197,1,9,28,249,22,171,7,23,196,2,2,29,249,22,85,23,202,2,
194,249,22,71,248,22,188,13,23,197,1,194,87,94,23,193,1,28,249,22,171,
7,23,196,2,2,29,249,22,85,23,200,2,9,249,22,71,248,22,188,13,23,
194,249,22,71,248,22,189,13,23,197,1,194,87,94,23,193,1,28,249,22,171,
7,23,196,2,2,29,249,22,85,23,200,2,9,249,22,71,248,22,189,13,23,
197,1,9,28,249,22,171,7,23,196,2,2,29,249,22,85,197,194,87,94,23,
196,1,249,22,71,248,22,188,13,23,197,1,194,87,94,23,193,1,28,249,22,
196,1,249,22,71,248,22,189,13,23,197,1,194,87,94,23,193,1,28,249,22,
171,7,23,198,2,2,29,249,22,85,195,9,87,94,23,194,1,249,22,71,248,
22,188,13,23,199,1,9,87,95,28,28,248,22,165,7,194,10,248,22,176,6,
22,189,13,23,199,1,9,87,95,28,28,248,22,165,7,194,10,248,22,176,6,
194,12,250,22,153,9,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,80,195,249,22,4,
22,179,13,196,11,12,250,22,153,9,2,14,6,13,13,108,105,115,116,32,111,
22,180,13,196,11,12,250,22,153,9,2,14,6,13,13,108,105,115,116,32,111,
102,32,112,97,116,104,115,197,250,2,51,197,195,28,248,22,176,6,197,248,22,
188,7,197,196,32,54,89,162,8,44,39,53,70,102,111,117,110,100,45,101,120,
101,99,222,33,57,32,55,89,162,8,44,40,58,64,110,101,120,116,222,33,56,
27,248,22,141,14,23,196,2,28,249,22,185,8,23,195,2,23,197,1,11,28,
248,22,137,14,23,194,2,27,249,22,133,14,23,197,1,23,196,1,28,23,197,
2,91,159,39,11,90,161,39,36,11,248,22,136,14,23,197,2,87,95,23,195,
1,23,194,1,27,28,23,202,2,27,248,22,141,14,23,199,2,28,249,22,185,
8,23,195,2,23,200,2,11,28,248,22,137,14,23,194,2,250,2,54,23,205,
2,23,206,2,249,22,133,14,23,200,2,23,198,1,250,2,54,23,205,2,23,
206,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,179,
13,23,196,2,27,249,22,133,14,23,198,2,23,205,2,28,28,248,22,128,14,
193,10,248,22,191,13,193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,
23,203,2,11,27,248,22,141,14,23,200,2,28,249,22,185,8,23,195,2,23,
201,1,11,28,248,22,137,14,23,194,2,250,2,54,23,206,1,23,207,1,249,
22,133,14,23,201,1,23,198,1,250,2,54,205,206,195,192,87,94,23,194,1,
28,23,196,2,91,159,39,11,90,161,39,36,11,248,22,136,14,23,197,2,87,
95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,141,14,23,199,2,28,
249,22,185,8,23,195,2,23,200,2,11,28,248,22,137,14,23,194,2,250,2,
54,23,204,2,23,205,2,249,22,133,14,23,200,2,23,198,1,250,2,54,23,
27,248,22,142,14,23,196,2,28,249,22,185,8,23,195,2,23,197,1,11,28,
248,22,138,14,23,194,2,27,249,22,134,14,23,197,1,23,196,1,28,23,197,
2,91,159,39,11,90,161,39,36,11,248,22,137,14,23,197,2,87,95,23,195,
1,23,194,1,27,28,23,202,2,27,248,22,142,14,23,199,2,28,249,22,185,
8,23,195,2,23,200,2,11,28,248,22,138,14,23,194,2,250,2,54,23,205,
2,23,206,2,249,22,134,14,23,200,2,23,198,1,250,2,54,23,205,2,23,
206,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,180,
13,23,196,2,27,249,22,134,14,23,198,2,23,205,2,28,28,248,22,129,14,
193,10,248,22,128,14,193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,
23,203,2,11,27,248,22,142,14,23,200,2,28,249,22,185,8,23,195,2,23,
201,1,11,28,248,22,138,14,23,194,2,250,2,54,23,206,1,23,207,1,249,
22,134,14,23,201,1,23,198,1,250,2,54,205,206,195,192,87,94,23,194,1,
28,23,196,2,91,159,39,11,90,161,39,36,11,248,22,137,14,23,197,2,87,
95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,142,14,23,199,2,28,
249,22,185,8,23,195,2,23,200,2,11,28,248,22,138,14,23,194,2,250,2,
54,23,204,2,23,205,2,249,22,134,14,23,200,2,23,198,1,250,2,54,23,
204,2,23,205,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27,28,
248,22,179,13,23,196,2,27,249,22,133,14,23,198,2,23,204,2,28,28,248,
22,128,14,193,10,248,22,191,13,193,192,11,11,28,23,193,2,192,87,94,23,
193,1,28,23,202,2,11,27,248,22,141,14,23,200,2,28,249,22,185,8,23,
195,2,23,201,1,11,28,248,22,137,14,23,194,2,250,2,54,23,205,1,23,
206,1,249,22,133,14,23,201,1,23,198,1,250,2,54,204,205,195,192,28,23,
193,2,91,159,39,11,90,161,39,36,11,248,22,136,14,23,199,2,87,95,23,
248,22,180,13,23,196,2,27,249,22,134,14,23,198,2,23,204,2,28,28,248,
22,129,14,193,10,248,22,128,14,193,192,11,11,28,23,193,2,192,87,94,23,
193,1,28,23,202,2,11,27,248,22,142,14,23,200,2,28,249,22,185,8,23,
195,2,23,201,1,11,28,248,22,138,14,23,194,2,250,2,54,23,205,1,23,
206,1,249,22,134,14,23,201,1,23,198,1,250,2,54,204,205,195,192,28,23,
193,2,91,159,39,11,90,161,39,36,11,248,22,137,14,23,199,2,87,95,23,
195,1,23,194,1,27,28,23,198,2,251,2,55,23,198,2,23,203,2,23,201,
2,23,202,2,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,179,13,
195,27,249,22,133,14,197,200,28,28,248,22,128,14,193,10,248,22,191,13,193,
2,23,202,2,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,180,13,
195,27,249,22,134,14,197,200,28,28,248,22,129,14,193,10,248,22,128,14,193,
192,11,11,28,192,192,28,198,11,251,2,55,198,203,201,202,194,32,58,89,162,
8,44,40,8,31,2,19,222,33,59,28,248,22,79,23,197,2,11,27,248,22,
140,14,248,22,72,23,199,2,27,249,22,133,14,23,196,1,23,197,2,28,248,
22,191,13,23,194,2,250,2,54,198,199,195,87,94,23,193,1,27,248,22,73,
23,200,1,28,248,22,79,23,194,2,11,27,248,22,140,14,248,22,72,23,196,
2,27,249,22,133,14,23,196,1,23,200,2,28,248,22,191,13,23,194,2,250,
141,14,248,22,72,23,199,2,27,249,22,134,14,23,196,1,23,197,2,28,248,
22,128,14,23,194,2,250,2,54,198,199,195,87,94,23,193,1,27,248,22,73,
23,200,1,28,248,22,79,23,194,2,11,27,248,22,141,14,248,22,72,23,196,
2,27,249,22,134,14,23,196,1,23,200,2,28,248,22,128,14,23,194,2,250,
2,54,201,202,195,87,94,23,193,1,27,248,22,73,23,197,1,28,248,22,79,
23,194,2,11,27,248,22,140,14,248,22,72,23,196,2,27,249,22,133,14,23,
196,1,23,203,2,28,248,22,191,13,23,194,2,250,2,54,204,205,195,87,94,
23,194,2,11,27,248,22,141,14,248,22,72,23,196,2,27,249,22,134,14,23,
196,1,23,203,2,28,248,22,128,14,23,194,2,250,2,54,204,205,195,87,94,
23,193,1,27,248,22,73,23,197,1,28,248,22,79,23,194,2,11,27,248,22,
140,14,248,22,72,23,196,2,27,249,22,133,14,23,196,1,23,206,2,28,248,
22,191,13,23,194,2,250,2,54,23,15,23,16,195,87,94,23,193,1,27,248,
22,73,23,197,1,28,248,22,79,23,194,2,11,27,248,22,140,14,248,22,72,
23,196,2,27,249,22,133,14,23,196,1,23,209,2,28,248,22,191,13,23,194,
141,14,248,22,72,23,196,2,27,249,22,134,14,23,196,1,23,206,2,28,248,
22,128,14,23,194,2,250,2,54,23,15,23,16,195,87,94,23,193,1,27,248,
22,73,23,197,1,28,248,22,79,23,194,2,11,27,248,22,141,14,248,22,72,
23,196,2,27,249,22,134,14,23,196,1,23,209,2,28,248,22,128,14,23,194,
2,250,2,54,23,18,23,19,195,87,94,23,193,1,27,248,22,73,23,197,1,
28,248,22,79,23,194,2,11,27,248,22,140,14,248,22,72,195,27,249,22,133,
14,23,196,1,23,19,28,248,22,191,13,193,250,2,54,23,21,23,22,195,251,
2,58,23,21,23,22,23,23,248,22,73,199,87,95,28,28,248,22,179,13,23,
195,2,10,28,248,22,176,6,23,195,2,28,248,22,137,14,23,195,2,10,248,
22,138,14,23,195,2,11,12,250,22,153,9,2,15,6,25,25,112,97,116,104,
28,248,22,79,23,194,2,11,27,248,22,141,14,248,22,72,195,27,249,22,134,
14,23,196,1,23,19,28,248,22,128,14,193,250,2,54,23,21,23,22,195,251,
2,58,23,21,23,22,23,23,248,22,73,199,87,95,28,28,248,22,180,13,23,
195,2,10,28,248,22,176,6,23,195,2,28,248,22,138,14,23,195,2,10,248,
22,139,14,23,195,2,11,12,250,22,153,9,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,28,248,22,179,13,23,196,2,10,28,248,22,
176,6,23,196,2,28,248,22,137,14,23,196,2,10,248,22,138,14,23,196,2,
11,248,22,137,14,23,196,2,11,10,12,250,22,153,9,2,15,6,29,29,35,
23,197,2,28,28,23,195,2,28,28,248,22,180,13,23,196,2,10,28,248,22,
176,6,23,196,2,28,248,22,138,14,23,196,2,10,248,22,139,14,23,196,2,
11,248,22,138,14,23,196,2,11,10,12,250,22,153,9,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,137,14,23,195,2,91,159,
39,11,90,161,39,36,11,248,22,136,14,23,198,2,249,22,183,8,194,68,114,
32,115,116,114,105,110,103,23,198,2,28,28,248,22,138,14,23,195,2,91,159,
39,11,90,161,39,36,11,248,22,137,14,23,198,2,249,22,183,8,194,68,114,
101,108,97,116,105,118,101,11,27,248,22,130,8,6,4,4,80,65,84,72,27,
28,23,194,2,27,249,80,159,41,48,38,23,197,1,9,28,249,22,183,8,247,
22,132,8,2,21,249,22,71,248,22,188,13,5,1,46,194,192,87,94,23,194,
1,9,28,248,22,79,23,194,2,11,27,248,22,140,14,248,22,72,23,196,2,
27,249,22,133,14,23,196,1,23,200,2,28,248,22,191,13,23,194,2,250,2,
22,132,8,2,21,249,22,71,248,22,189,13,5,1,46,194,192,87,94,23,194,
1,9,28,248,22,79,23,194,2,11,27,248,22,141,14,248,22,72,23,196,2,
27,249,22,134,14,23,196,1,23,200,2,28,248,22,128,14,23,194,2,250,2,
54,201,202,195,87,94,23,193,1,27,248,22,73,23,197,1,28,248,22,79,23,
194,2,11,27,248,22,140,14,248,22,72,23,196,2,27,249,22,133,14,23,196,
1,23,203,2,28,248,22,191,13,23,194,2,250,2,54,204,205,195,87,94,23,
193,1,27,248,22,73,23,197,1,28,248,22,79,23,194,2,11,27,248,22,140,
14,248,22,72,195,27,249,22,133,14,23,196,1,205,28,248,22,191,13,193,250,
194,2,11,27,248,22,141,14,248,22,72,23,196,2,27,249,22,134,14,23,196,
1,23,203,2,28,248,22,128,14,23,194,2,250,2,54,204,205,195,87,94,23,
193,1,27,248,22,73,23,197,1,28,248,22,79,23,194,2,11,27,248,22,141,
14,248,22,72,195,27,249,22,134,14,23,196,1,205,28,248,22,128,14,193,250,
2,54,23,15,23,16,195,251,2,58,23,15,23,16,23,17,248,22,73,199,27,
248,22,140,14,23,196,1,28,248,22,191,13,193,250,2,54,198,199,195,11,250,
248,22,141,14,23,196,1,28,248,22,128,14,193,250,2,54,198,199,195,11,250,
80,159,39,49,37,196,197,11,250,80,159,39,49,37,196,11,11,87,94,249,22,
167,6,247,22,139,5,195,248,22,129,6,249,22,184,3,36,249,22,168,3,197,
198,27,28,23,197,2,87,95,23,196,1,23,195,1,23,197,1,87,94,23,197,
1,27,248,22,155,14,2,20,27,249,80,159,41,49,37,23,196,1,11,27,27,
1,27,248,22,156,14,2,20,27,249,80,159,41,49,37,23,196,1,11,27,27,
248,22,187,3,23,200,1,28,192,192,36,27,27,248,22,187,3,23,202,1,28,
192,192,36,249,22,170,5,23,197,1,83,158,40,20,100,95,89,162,8,44,36,
48,9,224,3,2,33,63,23,195,1,23,196,1,27,248,22,155,5,23,195,1,
@ -388,7 +388,7 @@
33,47,80,159,36,46,37,83,158,36,16,2,83,158,39,20,99,96,2,13,89,
162,44,36,44,9,223,0,33,48,89,162,44,37,45,9,223,0,33,49,89,162,
44,38,55,9,223,0,33,50,80,159,36,47,37,83,158,36,16,2,27,248,22,
162,14,248,22,188,7,27,28,249,22,183,8,247,22,132,8,2,21,6,1,1,
163,14,248,22,188,7,27,28,249,22,183,8,247,22,132,8,2,21,6,1,1,
59,6,1,1,58,250,22,160,7,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,38,48,2,14,223,0,
33,53,80,159,36,48,37,83,158,36,16,2,83,158,39,20,99,96,2,15,89,
@ -400,13 +400,13 @@
EVAL_ONE_SIZED_STR((char *)expr, 6245);
}
{
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,48,46,51,9,0,0,0,1,0,0,10,0,16,0,
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,48,46,52,9,0,0,0,1,0,0,10,0,16,0,
29,0,44,0,58,0,72,0,86,0,128,0,0,0,57,1,0,0,69,35,37,
98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2,67,35,37,117,
116,105,108,115,11,29,94,2,2,69,35,37,110,101,116,119,111,114,107,11,29,
94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2,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,58,75,0,0,98,159,2,3,36,36,159,2,4,36,36,159,2,
36,11,8,240,96,82,0,0,98,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,7,36,36,16,0,159,
36,20,105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29,
11,11,11,11,11,18,96,11,44,44,44,36,80,158,36,36,20,105,159,36,16,
@ -420,7 +420,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 352);
}
{
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,48,46,51,74,0,0,0,1,0,0,7,0,18,0,
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,48,46,48,46,52,74,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,162,0,180,0,200,
0,212,0,228,0,251,0,7,1,38,1,45,1,50,1,55,1,60,1,65,1,
70,1,79,1,84,1,88,1,94,1,101,1,107,1,115,1,124,1,145,1,166,
@ -446,40 +446,40 @@
109,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,6,3,3,46,115,115,6,4,4,46,114,107,
116,5,4,46,114,107,116,67,105,103,110,111,114,101,100,249,22,14,195,80,159,
38,46,38,250,22,133,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198,
1,2,23,250,22,133,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198,
1,2,24,252,22,133,14,23,199,1,23,201,1,2,25,247,22,133,8,249,80,
159,45,39,38,23,200,1,80,159,45,36,38,252,22,133,14,23,199,1,23,201,
38,46,38,250,22,134,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198,
1,2,23,250,22,134,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198,
1,2,24,252,22,134,14,23,199,1,23,201,1,2,25,247,22,133,8,249,80,
159,45,39,38,23,200,1,80,159,45,36,38,252,22,134,14,23,199,1,23,201,
1,2,25,247,22,133,8,249,80,159,45,39,38,23,200,1,80,159,45,36,38,
27,252,22,133,14,23,200,1,23,202,1,2,25,247,22,133,8,249,80,159,46,
39,38,23,201,1,80,159,46,36,38,27,250,22,150,14,196,11,32,0,89,162,
8,44,36,41,9,222,11,28,192,249,22,71,195,194,11,27,252,22,133,14,23,
27,252,22,134,14,23,200,1,23,202,1,2,25,247,22,133,8,249,80,159,46,
39,38,23,201,1,80,159,46,36,38,27,250,22,151,14,196,11,32,0,89,162,
8,44,36,41,9,222,11,28,192,249,22,71,195,194,11,27,252,22,134,14,23,
200,1,23,202,1,2,25,247,22,133,8,249,80,159,46,39,38,23,201,1,80,
159,46,36,38,27,250,22,150,14,196,11,32,0,89,162,8,44,36,41,9,222,
11,28,192,249,22,71,195,194,11,27,250,22,133,14,23,198,1,23,200,1,249,
80,159,44,39,38,23,199,1,2,23,27,250,22,150,14,196,11,32,0,89,162,
8,44,36,41,9,222,11,28,192,249,22,71,195,194,11,27,250,22,133,14,23,
198,1,23,200,1,249,80,159,44,39,38,23,199,1,2,24,27,250,22,150,14,
159,46,36,38,27,250,22,151,14,196,11,32,0,89,162,8,44,36,41,9,222,
11,28,192,249,22,71,195,194,11,27,250,22,134,14,23,198,1,23,200,1,249,
80,159,44,39,38,23,199,1,2,23,27,250,22,151,14,196,11,32,0,89,162,
8,44,36,41,9,222,11,28,192,249,22,71,195,194,11,27,250,22,134,14,23,
198,1,23,200,1,249,80,159,44,39,38,23,199,1,2,24,27,250,22,151,14,
196,11,32,0,89,162,8,44,36,41,9,222,11,28,192,249,22,71,195,194,11,
87,94,28,248,80,159,37,38,38,23,195,2,12,250,22,153,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,91,159,46,11,90,161,37,36,11,28,248,22,139,14,23,205,2,23,
204,2,27,247,22,144,5,28,23,193,2,249,22,140,14,23,207,2,23,195,1,
23,205,2,90,161,39,37,11,248,22,136,14,23,205,1,87,94,23,196,1,90,
161,38,40,11,28,23,205,2,27,248,22,184,13,23,197,2,27,248,22,168,7,
23,197,2,91,159,46,11,90,161,37,36,11,28,248,22,140,14,23,205,2,23,
204,2,27,247,22,144,5,28,23,193,2,249,22,141,14,23,207,2,23,195,1,
23,205,2,90,161,39,37,11,248,22,137,14,23,205,1,87,94,23,196,1,90,
161,38,40,11,28,23,205,2,27,248,22,185,13,23,197,2,27,248,22,168,7,
23,195,2,28,28,249,22,180,3,23,195,2,40,249,22,171,7,5,4,46,114,
107,116,249,22,174,7,23,198,2,249,22,168,3,23,199,2,40,11,249,22,7,
23,199,2,248,22,188,13,249,22,175,7,250,22,174,7,23,202,1,36,249,22,
23,199,2,248,22,189,13,249,22,175,7,250,22,174,7,23,202,1,36,249,22,
168,3,23,203,1,40,5,3,46,115,115,249,22,7,23,199,2,11,249,22,7,
23,197,2,11,90,161,37,42,11,28,249,22,183,8,23,199,2,23,197,2,23,
193,2,249,22,133,14,23,196,2,23,199,2,90,161,37,43,11,28,23,198,2,
193,2,249,22,134,14,23,196,2,23,199,2,90,161,37,43,11,28,23,198,2,
28,249,22,183,8,23,200,2,23,197,1,23,193,1,87,94,23,193,1,249,22,
133,14,23,196,2,23,200,2,87,94,23,195,1,11,90,161,37,44,11,28,249,
134,14,23,196,2,23,200,2,87,94,23,195,1,11,90,161,37,44,11,28,249,
22,183,8,23,196,2,68,114,101,108,97,116,105,118,101,87,94,23,194,1,2,
22,23,194,1,90,161,37,45,11,247,22,158,14,27,27,250,22,150,14,23,204,
22,23,194,1,90,161,37,45,11,247,22,159,14,27,27,250,22,151,14,23,204,
2,11,32,0,89,162,8,44,36,41,9,222,11,28,192,249,22,71,23,203,2,
194,11,27,28,23,202,2,28,23,194,2,11,27,250,22,150,14,23,206,2,11,
194,11,27,28,23,202,2,28,23,194,2,11,27,250,22,151,14,23,206,2,11,
32,0,89,162,8,44,36,41,9,222,11,28,192,249,22,71,23,205,2,194,11,
11,27,28,23,195,2,23,195,2,23,194,2,27,89,162,44,37,50,62,122,111,
225,14,12,8,33,33,27,89,162,44,37,50,66,97,108,116,45,122,111,225,15,
@ -494,8 +494,8 @@
23,199,1,23,198,1,23,196,1,23,195,1,23,194,1,20,14,159,80,159,56,
40,38,250,80,159,59,41,38,249,22,27,11,80,159,8,25,40,38,22,168,4,
11,20,14,159,80,159,56,40,38,250,80,159,59,41,38,249,22,27,11,80,159,
8,25,40,38,22,144,5,28,248,22,179,13,23,215,2,23,214,1,87,94,23,
214,1,247,22,156,14,249,247,22,161,14,248,22,72,195,23,24,87,94,23,193,
8,25,40,38,22,144,5,28,248,22,180,13,23,215,2,23,214,1,87,94,23,
214,1,247,22,157,14,249,247,22,162,14,248,22,72,195,23,24,87,94,23,193,
1,27,28,23,195,2,28,23,197,1,27,249,22,5,89,162,8,44,37,53,9,
225,24,22,19,33,38,23,216,2,27,28,23,204,2,11,193,28,192,192,28,193,
28,203,28,249,22,180,3,248,22,73,196,248,22,73,206,193,11,11,11,11,87,
@ -503,8 +503,8 @@
208,1,23,201,1,23,200,1,23,199,1,23,196,1,23,195,1,20,14,159,80,
159,57,40,38,250,80,159,8,24,41,38,249,22,27,11,80,159,8,26,40,38,
22,168,4,23,214,1,20,14,159,80,159,57,40,38,250,80,159,8,24,41,38,
249,22,27,11,80,159,8,26,40,38,22,144,5,28,248,22,179,13,23,216,2,
23,215,1,87,94,23,215,1,247,22,156,14,249,247,22,161,14,248,22,72,195,
249,22,27,11,80,159,8,26,40,38,22,144,5,28,248,22,180,13,23,216,2,
23,215,1,87,94,23,215,1,247,22,157,14,249,247,22,162,14,248,22,72,195,
23,25,87,94,23,193,1,27,28,23,197,2,28,23,201,1,27,249,22,5,83,
158,40,20,100,94,89,162,8,44,37,51,9,225,25,23,19,33,39,23,212,1,
23,217,2,27,28,23,204,2,11,193,28,192,192,28,193,28,23,204,2,28,249,
@ -513,8 +513,8 @@
211,1,23,210,1,23,202,1,23,200,1,23,197,1,23,196,1,20,14,159,80,
159,58,40,38,250,80,159,8,25,41,38,249,22,27,11,80,159,8,27,40,38,
22,168,4,11,20,14,159,80,159,58,40,38,250,80,159,8,25,41,38,249,22,
27,11,80,159,8,27,40,38,22,144,5,28,248,22,179,13,23,217,2,23,216,
1,87,94,23,216,1,247,22,156,14,249,247,22,142,5,248,22,72,195,23,26,
27,11,80,159,8,27,40,38,22,144,5,28,248,22,180,13,23,217,2,23,216,
1,87,94,23,216,1,247,22,157,14,249,247,22,142,5,248,22,72,195,23,26,
87,94,23,193,1,27,28,23,197,1,28,23,201,1,27,249,22,5,83,158,40,
20,100,94,89,162,8,44,37,51,9,225,26,24,21,33,40,23,214,1,23,218,
1,27,28,23,205,2,11,193,28,192,192,28,193,28,204,28,249,22,180,3,248,
@ -522,21 +522,21 @@
87,94,23,201,1,11,28,23,193,2,87,95,23,212,1,23,198,1,20,14,159,
80,159,59,40,38,250,80,159,8,26,41,38,249,22,27,11,80,159,8,28,40,
38,22,168,4,23,216,1,20,14,159,80,159,59,40,38,250,80,159,8,26,41,
38,249,22,27,11,80,159,8,28,40,38,22,144,5,28,248,22,179,13,23,218,
2,23,217,1,87,94,23,217,1,247,22,156,14,249,247,22,142,5,248,22,72,
38,249,22,27,11,80,159,8,28,40,38,22,144,5,28,248,22,180,13,23,218,
2,23,217,1,87,94,23,217,1,247,22,157,14,249,247,22,142,5,248,22,72,
195,23,27,87,94,23,193,1,27,28,23,199,2,87,94,23,214,1,23,213,1,
87,94,23,213,1,23,214,1,20,14,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,168,4,28,23,29,28,23,
202,1,11,195,87,94,23,202,1,11,20,14,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,144,5,28,248,22,
179,13,23,219,2,23,218,1,87,94,23,218,1,247,22,156,14,249,247,22,142,
180,13,23,219,2,23,218,1,87,94,23,218,1,247,22,157,14,249,247,22,142,
5,194,23,28,0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,
36,34,32,43,89,162,8,44,37,59,2,26,222,33,44,27,249,22,166,14,2,
36,34,32,43,89,162,8,44,37,59,2,26,222,33,44,27,249,22,167,14,2,
42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196,
2,27,248,22,105,23,197,1,27,249,22,166,14,2,42,23,196,2,28,23,193,
2,27,248,22,105,23,197,1,27,249,22,167,14,2,42,23,196,2,28,23,193,
2,87,94,23,194,1,249,22,71,248,22,96,23,196,2,27,248,22,105,23,197,
1,27,249,22,166,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,
22,71,248,22,96,23,196,2,27,248,22,105,23,197,1,27,249,22,166,14,2,
1,27,249,22,167,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,
22,71,248,22,96,23,196,2,27,248,22,105,23,197,1,27,249,22,167,14,2,
42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196,
2,248,2,43,248,22,105,23,197,1,248,22,81,194,248,22,81,194,248,22,81,
194,248,22,81,194,32,45,89,162,44,37,55,2,26,222,33,46,28,248,22,79,
@ -546,12 +546,12 @@
79,248,22,73,23,195,2,249,22,7,9,248,22,72,195,91,159,38,11,90,161,
38,36,11,248,2,45,248,22,73,196,249,22,7,249,22,71,248,22,72,199,196,
195,249,22,7,249,22,71,248,22,72,199,196,195,249,22,7,249,22,71,248,22,
72,199,196,195,27,27,249,22,166,14,2,42,23,197,2,28,23,193,2,87,94,
72,199,196,195,27,27,249,22,167,14,2,42,23,197,2,28,23,193,2,87,94,
23,195,1,249,22,71,248,22,96,23,196,2,27,248,22,105,23,197,1,27,249,
22,166,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,
22,96,23,196,2,27,248,22,105,23,197,1,27,249,22,166,14,2,42,23,196,
22,167,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,
22,96,23,196,2,27,248,22,105,23,197,1,27,249,22,167,14,2,42,23,196,
2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196,2,27,248,
22,105,23,197,1,27,249,22,166,14,2,42,23,196,2,28,23,193,2,87,94,
22,105,23,197,1,27,249,22,167,14,2,42,23,196,2,28,23,193,2,87,94,
23,194,1,249,22,71,248,22,96,23,196,2,248,2,43,248,22,105,23,197,1,
248,22,81,194,248,22,81,194,248,22,81,194,248,22,81,195,28,23,195,1,192,
28,248,22,79,248,22,73,23,195,2,249,22,7,9,248,22,72,195,91,159,38,
@ -563,31 +563,31 @@
22,71,248,22,72,199,196,195,87,95,28,248,22,186,4,195,12,250,22,153,9,
2,18,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,150,2,80,159,42,43,38,248,22,191,14,247,22,159,12,11,28,23,
27,250,22,150,2,80,159,42,43,38,248,22,128,15,247,22,160,12,11,28,23,
193,2,192,87,94,23,193,1,27,247,22,130,2,87,94,250,22,148,2,80,159,
43,43,38,248,22,191,14,247,22,159,12,195,192,250,22,148,2,195,198,66,97,
43,43,38,248,22,128,15,247,22,160,12,195,192,250,22,148,2,195,198,66,97,
116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,152,9,11,196,195,248,
22,150,9,194,32,51,89,162,44,37,52,2,26,222,33,52,28,248,22,79,248,
22,73,23,195,2,249,22,7,9,248,22,72,195,91,159,38,11,90,161,38,36,
11,27,248,22,73,196,28,248,22,79,248,22,73,23,195,2,249,22,7,9,248,
22,72,195,91,159,38,11,90,161,38,36,11,248,2,51,248,22,73,196,249,22,
7,249,22,71,248,22,72,199,196,195,249,22,7,249,22,71,248,22,72,199,196,
195,32,53,89,162,8,44,37,55,2,26,222,33,54,27,249,22,166,14,2,42,
195,32,53,89,162,8,44,37,55,2,26,222,33,54,27,249,22,167,14,2,42,
23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196,2,
27,248,22,105,23,197,1,27,249,22,166,14,2,42,23,196,2,28,23,193,2,
27,248,22,105,23,197,1,27,249,22,167,14,2,42,23,196,2,28,23,193,2,
87,94,23,194,1,249,22,71,248,22,96,23,196,2,27,248,22,105,23,197,1,
27,249,22,166,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,
27,249,22,167,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,
71,248,22,96,23,196,2,248,2,53,248,22,105,23,197,1,248,22,81,194,248,
22,81,194,248,22,81,194,32,55,89,162,44,37,52,2,26,222,33,56,28,248,
22,79,248,22,73,23,195,2,249,22,7,9,248,22,72,195,91,159,38,11,90,
161,38,36,11,27,248,22,73,196,28,248,22,79,248,22,73,23,195,2,249,22,
7,9,248,22,72,195,91,159,38,11,90,161,38,36,11,248,2,55,248,22,73,
196,249,22,7,249,22,71,248,22,72,199,196,195,249,22,7,249,22,71,248,22,
72,199,196,195,32,57,89,162,8,44,37,55,2,26,222,33,58,27,249,22,166,
72,199,196,195,32,57,89,162,8,44,37,55,2,26,222,33,58,27,249,22,167,
14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,96,
23,196,2,27,248,22,105,23,197,1,27,249,22,166,14,2,42,23,196,2,28,
23,196,2,27,248,22,105,23,197,1,27,249,22,167,14,2,42,23,196,2,28,
23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196,2,27,248,22,105,
23,197,1,27,249,22,166,14,2,42,23,196,2,28,23,193,2,87,94,23,194,
23,197,1,27,249,22,167,14,2,42,23,196,2,28,23,193,2,87,94,23,194,
1,249,22,71,248,22,96,23,196,2,248,2,57,248,22,105,23,197,1,248,22,
81,194,248,22,81,194,248,22,81,194,28,249,22,182,6,194,6,1,1,46,2,
22,28,249,22,182,6,194,6,2,2,46,46,62,117,112,192,0,11,35,114,120,
@ -597,26 +597,26 @@
22,7,9,248,22,72,195,91,159,38,11,90,161,38,36,11,248,2,61,248,22,
73,196,249,22,7,249,22,71,248,22,72,199,196,195,249,22,7,249,22,71,248,
22,72,199,196,195,32,63,89,162,8,44,37,55,2,26,222,33,64,27,249,22,
166,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,
96,23,196,2,27,248,22,105,23,197,1,27,249,22,166,14,2,42,23,196,2,
167,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,
96,23,196,2,27,248,22,105,23,197,1,27,249,22,167,14,2,42,23,196,2,
28,23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196,2,27,248,22,
105,23,197,1,27,249,22,166,14,2,42,23,196,2,28,23,193,2,87,94,23,
105,23,197,1,27,249,22,167,14,2,42,23,196,2,28,23,193,2,87,94,23,
194,1,249,22,71,248,22,96,23,196,2,248,2,63,248,22,105,23,197,1,248,
22,81,194,248,22,81,194,248,22,81,194,32,65,89,162,8,44,37,55,2,26,
222,33,66,27,249,22,166,14,2,42,23,196,2,28,23,193,2,87,94,23,194,
1,249,22,71,248,22,96,23,196,2,27,248,22,105,23,197,1,27,249,22,166,
222,33,66,27,249,22,167,14,2,42,23,196,2,28,23,193,2,87,94,23,194,
1,249,22,71,248,22,96,23,196,2,27,248,22,105,23,197,1,27,249,22,167,
14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,71,248,22,96,
23,196,2,27,248,22,105,23,197,1,27,249,22,166,14,2,42,23,196,2,28,
23,196,2,27,248,22,105,23,197,1,27,249,22,167,14,2,42,23,196,2,28,
23,193,2,87,94,23,194,1,249,22,71,248,22,96,23,196,2,248,2,65,248,
22,105,23,197,1,248,22,81,194,248,22,81,194,248,22,81,194,27,248,2,65,
23,195,1,192,28,249,22,185,8,248,22,73,23,200,2,23,197,1,28,249,22,
183,8,248,22,72,23,200,2,23,196,1,251,22,150,9,2,18,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,73,248,22,86,249,22,71,23,206,1,
23,202,1,12,12,247,192,20,14,159,80,159,40,45,38,249,22,71,248,22,191,
14,247,22,159,12,23,197,1,20,14,159,80,159,40,40,38,250,80,159,43,41,
23,202,1,12,12,247,192,20,14,159,80,159,40,45,38,249,22,71,248,22,128,
15,247,22,160,12,23,197,1,20,14,159,80,159,40,40,38,250,80,159,43,41,
38,249,22,27,11,80,159,45,40,38,22,167,4,23,196,1,249,247,22,143,5,
23,198,1,248,22,59,248,22,183,13,23,198,1,87,94,28,28,248,22,179,13,
23,198,1,248,22,59,248,22,184,13,23,198,1,87,94,28,28,248,22,180,13,
23,196,2,10,248,22,130,5,23,196,2,12,28,23,197,2,250,22,152,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,153,9,2,18,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32,
@ -630,77 +630,77 @@
252,212,199,200,201,202,80,158,42,50,87,94,23,193,1,27,89,162,8,44,37,
46,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,
223,5,33,50,27,28,248,22,56,23,198,2,27,250,22,150,2,80,159,43,44,
38,249,22,71,23,203,2,247,22,157,14,11,28,23,193,2,192,87,94,23,193,
38,249,22,71,23,203,2,247,22,158,14,11,28,23,193,2,192,87,94,23,193,
1,91,159,38,11,90,161,38,36,11,27,248,22,62,23,202,2,248,2,51,248,
2,53,23,195,1,27,251,80,159,47,54,38,2,18,23,202,1,28,248,22,79,
23,199,2,23,199,2,248,22,72,23,199,2,28,248,22,79,23,199,2,9,248,
22,73,23,199,2,249,22,133,14,23,195,1,28,248,22,79,23,197,1,87,94,
22,73,23,199,2,249,22,134,14,23,195,1,28,248,22,79,23,197,1,87,94,
23,197,1,6,8,8,109,97,105,110,46,114,107,116,249,22,135,7,23,199,1,
6,4,4,46,114,107,116,28,248,22,176,6,23,198,2,87,94,23,194,1,27,
27,28,23,200,2,28,249,22,183,8,23,202,2,80,158,43,47,80,158,41,48,
27,248,22,188,4,23,202,2,28,248,22,179,13,23,194,2,91,159,39,11,90,
161,39,36,11,248,22,136,14,23,197,1,87,95,83,160,38,11,80,158,45,47,
27,248,22,188,4,23,202,2,28,248,22,180,13,23,194,2,91,159,39,11,90,
161,39,36,11,248,22,137,14,23,197,1,87,95,83,160,38,11,80,158,45,47,
23,204,2,83,160,38,11,80,158,45,48,192,192,11,11,28,23,193,2,192,87,
94,23,193,1,27,247,22,144,5,28,23,193,2,192,87,94,23,193,1,247,22,
156,14,27,250,22,150,2,80,159,44,44,38,249,22,71,23,204,2,23,199,2,
157,14,27,250,22,150,2,80,159,44,44,38,249,22,71,23,204,2,23,199,2,
11,28,23,193,2,192,87,94,23,193,1,91,159,38,11,90,161,38,36,11,248,
2,55,248,2,57,23,203,2,250,22,1,22,133,14,23,199,1,249,22,85,249,
2,55,248,2,57,23,203,2,250,22,1,22,134,14,23,199,1,249,22,85,249,
22,2,32,0,89,162,8,44,37,44,9,222,33,59,23,200,1,248,22,81,27,
248,22,179,6,23,202,2,28,249,22,180,3,194,39,28,249,22,182,6,2,28,
249,22,134,7,204,249,22,168,3,198,39,249,22,135,7,250,22,134,7,205,36,
249,22,168,3,199,39,2,29,200,200,28,248,22,179,13,23,198,2,87,94,23,
194,1,28,248,22,138,14,23,198,2,27,248,22,142,14,23,199,2,91,159,39,
11,90,161,39,36,11,248,22,136,14,23,197,2,87,95,23,195,1,23,193,1,
28,249,22,166,14,2,60,248,22,184,13,23,197,1,249,80,159,45,53,38,23,
249,22,168,3,199,39,2,29,200,200,28,248,22,180,13,23,198,2,87,94,23,
194,1,28,248,22,139,14,23,198,2,27,248,22,143,14,23,199,2,91,159,39,
11,90,161,39,36,11,248,22,137,14,23,197,2,87,95,23,195,1,23,193,1,
28,249,22,167,14,2,60,248,22,185,13,23,197,1,249,80,159,45,53,38,23,
198,1,2,30,195,248,22,81,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,183,8,
248,22,72,23,200,2,2,27,27,250,22,150,2,80,159,43,44,38,249,22,71,
23,203,2,247,22,157,14,11,28,23,193,2,192,87,94,23,193,1,91,159,39,
23,203,2,247,22,158,14,11,28,23,193,2,192,87,94,23,193,1,91,159,39,
11,90,161,38,36,11,27,248,22,96,23,203,2,248,2,61,248,2,63,23,195,
1,90,161,37,38,11,28,248,22,79,248,22,98,23,203,2,28,248,22,79,23,
194,2,249,22,170,14,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10,
194,2,249,22,171,14,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10,
27,27,28,23,197,2,249,22,85,28,248,22,79,248,22,98,23,207,2,21,93,
6,5,5,109,122,108,105,98,249,22,1,22,85,249,22,2,32,0,89,162,8,
44,37,44,9,222,33,67,248,22,98,23,210,2,23,197,2,28,248,22,79,23,
196,2,248,22,81,23,197,2,23,195,2,251,80,159,49,54,38,2,18,23,204,
1,248,22,72,23,198,2,248,22,73,23,198,1,249,22,133,14,23,195,1,28,
1,248,22,72,23,198,2,248,22,73,23,198,1,249,22,134,14,23,195,1,28,
23,198,1,87,94,23,196,1,27,248,22,179,6,23,199,2,28,249,22,180,3,
194,39,28,249,22,182,6,2,28,249,22,134,7,201,249,22,168,3,198,39,249,
22,135,7,250,22,134,7,202,36,249,22,168,3,199,39,2,29,197,197,28,248,
22,79,23,197,1,87,94,23,197,1,6,8,8,109,97,105,110,46,114,107,116,
28,249,22,170,14,0,8,35,114,120,34,91,46,93,34,23,199,2,27,248,22,
28,249,22,171,14,0,8,35,114,120,34,91,46,93,34,23,199,2,27,248,22,
179,6,23,199,2,28,249,22,180,3,194,39,28,249,22,182,6,2,28,249,22,
134,7,201,249,22,168,3,198,39,249,22,135,7,250,22,134,7,202,36,249,22,
168,3,199,39,2,29,197,197,249,22,135,7,23,199,1,6,4,4,46,114,107,
116,28,249,22,183,8,248,22,72,23,200,2,64,102,105,108,101,27,248,22,142,
14,249,22,140,14,248,22,144,14,248,22,96,23,203,2,27,28,23,203,2,28,
116,28,249,22,183,8,248,22,72,23,200,2,64,102,105,108,101,27,248,22,143,
14,249,22,141,14,248,22,145,14,248,22,96,23,203,2,27,28,23,203,2,28,
249,22,183,8,23,205,2,80,158,46,47,80,158,44,48,27,248,22,188,4,23,
205,2,28,248,22,179,13,23,194,2,91,159,39,11,90,161,39,36,11,248,22,
136,14,23,197,1,87,95,83,160,38,11,80,158,48,47,23,207,2,83,160,38,
205,2,28,248,22,180,13,23,194,2,91,159,39,11,90,161,39,36,11,248,22,
137,14,23,197,1,87,95,83,160,38,11,80,158,48,47,23,207,2,83,160,38,
11,80,158,48,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,
22,144,5,28,23,193,2,192,87,94,23,193,1,247,22,156,14,91,159,39,11,
90,161,39,36,11,248,22,136,14,23,197,2,87,95,23,195,1,23,193,1,28,
249,22,166,14,2,60,248,22,184,13,23,197,1,249,80,159,45,53,38,23,198,
1,2,30,195,12,87,94,28,28,248,22,179,13,23,194,2,10,248,22,135,8,
22,144,5,28,23,193,2,192,87,94,23,193,1,247,22,157,14,91,159,39,11,
90,161,39,36,11,248,22,137,14,23,197,2,87,95,23,195,1,23,193,1,28,
249,22,167,14,2,60,248,22,185,13,23,197,1,249,80,159,45,53,38,23,198,
1,2,30,195,12,87,94,28,28,248,22,180,13,23,194,2,10,248,22,135,8,
23,194,2,87,94,23,199,1,12,28,23,199,2,250,22,152,9,67,114,101,113,
117,105,114,101,249,22,160,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,72,23,199,2,6,0,0,23,
202,1,87,94,23,199,1,250,22,153,9,2,18,249,22,160,7,6,13,13,109,
111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,72,23,199,
2,6,0,0,23,200,2,27,28,248,22,135,8,23,195,2,249,22,140,8,23,
196,2,36,249,22,142,14,248,22,143,14,23,197,2,11,27,28,248,22,135,8,
196,2,36,249,22,143,14,248,22,144,14,23,197,2,11,27,28,248,22,135,8,
23,196,2,249,22,140,8,23,197,2,37,248,80,159,42,55,38,23,195,2,91,
159,39,11,90,161,39,36,11,28,248,22,135,8,23,199,2,250,22,7,2,31,
249,22,140,8,23,203,2,38,2,31,248,22,136,14,23,198,2,87,95,23,195,
249,22,140,8,23,203,2,38,2,31,248,22,137,14,23,198,2,87,95,23,195,
1,23,193,1,27,28,248,22,135,8,23,200,2,249,22,140,8,23,201,2,39,
249,80,159,47,53,38,23,197,2,5,0,27,28,248,22,135,8,23,201,2,249,
22,140,8,23,202,2,40,248,22,187,4,23,200,2,27,27,250,22,150,2,80,
159,51,43,38,248,22,191,14,247,22,159,12,11,28,23,193,2,192,87,94,23,
193,1,27,247,22,130,2,87,94,250,22,148,2,80,159,52,43,38,248,22,191,
14,247,22,159,12,195,192,87,95,28,23,208,1,27,250,22,150,2,23,197,2,
159,51,43,38,248,22,128,15,247,22,160,12,11,28,23,193,2,192,87,94,23,
193,1,27,247,22,130,2,87,94,250,22,148,2,80,159,52,43,38,248,22,128,
15,247,22,160,12,195,192,87,95,28,23,208,1,27,250,22,150,2,23,197,2,
197,11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,159,51,46,38,80,
159,50,46,38,247,22,19,250,22,25,248,22,23,23,197,2,80,159,53,45,38,
23,196,1,27,248,22,191,14,247,22,159,12,249,22,3,83,158,40,20,100,94,
23,196,1,27,248,22,128,15,247,22,160,12,249,22,3,83,158,40,20,100,94,
89,162,8,44,37,55,9,226,12,11,2,3,33,68,23,195,1,23,196,1,248,
28,248,22,17,80,159,50,46,38,32,0,89,162,44,37,42,9,222,33,69,80,
159,49,59,37,89,162,44,36,51,9,227,13,9,8,4,3,33,70,250,22,148,
@ -709,14 +709,14 @@
22,183,8,248,22,72,23,208,2,2,27,11,250,22,148,2,80,159,50,44,38,
28,248,22,176,6,23,209,2,249,22,71,23,210,1,27,28,23,212,2,28,249,
22,183,8,23,214,2,80,158,55,47,87,94,23,212,1,80,158,53,48,27,248,
22,188,4,23,214,2,28,248,22,179,13,23,194,2,91,159,39,11,90,161,39,
36,11,248,22,136,14,23,197,1,87,95,83,160,38,11,80,158,57,47,23,23,
22,188,4,23,214,2,28,248,22,180,13,23,194,2,91,159,39,11,90,161,39,
36,11,248,22,137,14,23,197,1,87,95,83,160,38,11,80,158,57,47,23,23,
83,160,38,11,80,158,57,48,192,192,11,11,28,23,193,2,192,87,94,23,193,
1,27,247,22,144,5,28,23,193,2,192,87,94,23,193,1,247,22,156,14,249,
22,71,23,210,1,247,22,157,14,252,22,137,8,23,208,1,23,207,1,23,205,
1,27,247,22,144,5,28,23,193,2,192,87,94,23,193,1,247,22,157,14,249,
22,71,23,210,1,247,22,158,14,252,22,137,8,23,208,1,23,207,1,23,205,
1,23,203,1,201,12,193,87,96,83,160,38,11,80,158,36,50,248,80,159,37,
58,38,249,22,27,11,80,159,39,52,38,248,22,166,4,80,159,37,51,38,248,
22,143,5,80,159,37,37,37,248,22,150,13,80,159,37,42,37,83,160,38,11,
22,143,5,80,159,37,37,37,248,22,151,13,80,159,37,42,37,83,160,38,11,
80,158,36,50,248,80,159,37,58,38,249,22,27,11,80,159,39,52,38,159,36,
20,105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29,11,
11,11,11,11,10,38,80,158,36,36,20,105,159,37,16,23,2,2,2,3,30,

View File

@ -9438,6 +9438,10 @@ scheme_do_eval(Scheme_Object *obj, int num_rands, Scheme_Object **rands,
/* Chaperone is for struct fields, not function arguments */
obj = ((Scheme_Chaperone *)obj)->prev;
goto apply_top;
} else if (SAME_TYPE(SCHEME_TYPE(((Scheme_Chaperone *)obj)->redirects), scheme_nack_guard_evt_type)) {
/* Chaperone is for evt, not function arguments */
obj = ((Scheme_Chaperone *)obj)->prev;
goto apply_top;
} else {
/* Chaperone is for function arguments */
VACATE_TAIL_BUFFER_USE_RUNSTACK();

View File

@ -13,7 +13,7 @@
#define USE_COMPILED_STARTUP 1
#define EXPECTED_PRIM_COUNT 997
#define EXPECTED_PRIM_COUNT 998
#define EXPECTED_UNSAFE_COUNT 66
#define EXPECTED_FLFXNUM_COUNT 55

View File

@ -13,12 +13,12 @@
consistently.)
*/
#define MZSCHEME_VERSION "5.0.0.3"
#define MZSCHEME_VERSION "5.0.0.4"
#define MZSCHEME_VERSION_X 5
#define MZSCHEME_VERSION_Y 0
#define MZSCHEME_VERSION_Z 0
#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)

View File

@ -102,6 +102,7 @@ static Scheme_Object *make_struct_field_mutator(int argc, Scheme_Object *argv[])
static Scheme_Object *nack_evt(int argc, Scheme_Object *argv[]);
static Scheme_Object *handle_evt(int argc, Scheme_Object *argv[]);
static Scheme_Object *chaperone_evt(int argc, Scheme_Object *argv[]);
static Scheme_Object *handle_evt_p(int argc, Scheme_Object *argv[]);
static Scheme_Object *struct_p(int argc, Scheme_Object *argv[]);
@ -141,6 +142,9 @@ static int nack_guard_evt_is_ready(Scheme_Object *o, Scheme_Schedule_Info *sinfo
static int nack_evt_is_ready(Scheme_Object *o, Scheme_Schedule_Info *sinfo);
static int poll_evt_is_ready(Scheme_Object *o, Scheme_Schedule_Info *sinfo);
static int chaperone_evt_is_ready(Scheme_Object *o, Scheme_Schedule_Info *sinfo);
static int is_chaperone_evt(Scheme_Object *o);
Scheme_Object *make_special_comment(int argc, Scheme_Object **argv);
Scheme_Object *special_comment_value(int argc, Scheme_Object **argv);
Scheme_Object *special_comment_p(int argc, Scheme_Object **argv);
@ -408,6 +412,14 @@ scheme_init_struct (Scheme_Env *env)
scheme_add_evt(scheme_handle_evt_type,
(Scheme_Ready_Fun)wrapped_evt_is_ready,
NULL, NULL, 1);
scheme_add_evt(scheme_chaperone_type,
(Scheme_Ready_Fun)chaperone_evt_is_ready,
NULL,
is_chaperone_evt, 1);
scheme_add_evt(scheme_proc_chaperone_type,
(Scheme_Ready_Fun)chaperone_evt_is_ready,
NULL,
is_chaperone_evt, 1);
scheme_add_evt(scheme_nack_guard_evt_type,
(Scheme_Ready_Fun)nack_guard_evt_is_ready,
NULL, NULL, 1);
@ -458,6 +470,11 @@ scheme_init_struct (Scheme_Env *env)
"handle-evt",
2, 2),
env);
scheme_add_global_constant("chaperone-evt",
scheme_make_prim_w_arity(chaperone_evt,
"chaperone-evt",
2, -1),
env);
scheme_add_global_constant("nack-guard-evt",
scheme_make_prim_w_arity(nack_evt,
"nack-guard-evt",
@ -2994,6 +3011,151 @@ Scheme_Object *handle_evt_p(int argc, Scheme_Object *argv[])
return NULL;
}
static Scheme_Object *chaperone_result_guard_proc(void *data, int argc, Scheme_Object *argv[])
{
Scheme_Object *proc = (Scheme_Object *)data, *o, *a[1];
a[0] = argv[0];
o = _scheme_apply(proc, 1, a);
if (!scheme_chaperone_of(o, a[0]))
scheme_raise_exn(MZEXN_FAIL_CONTRACT,
"evt result chaperone: chaperone produced a value: %V that is not a chaperone of the original result: %V",
o,
a[0]);
return o;
}
static Scheme_Object *chaperone_guard_proc(void *data, int argc, Scheme_Object *argv[])
{
Scheme_Object *evt = SCHEME_CAR((Scheme_Object *)data);
Scheme_Object *proc = SCHEME_CDR((Scheme_Object *)data);
Scheme_Object *a[2], *o, **vals;
int cnt;
Scheme_Thread *p;
a[0] = evt;
o = _scheme_apply_multi(proc, 1, a);
if (SAME_OBJ(o, SCHEME_MULTIPLE_VALUES)) {
p = scheme_current_thread;
cnt = p->ku.multiple.count;
vals = p->ku.multiple.array;
p->ku.multiple.array = NULL;
if (SAME_OBJ(vals, p->values_buffer))
p->values_buffer = NULL;
p = NULL;
} else {
vals = NULL;
cnt = 1;
}
if (cnt != 2)
scheme_raise_exn(MZEXN_FAIL_CONTRACT_ARITY,
"evt chaperone: %V: returned %d values, expected 2",
proc,
cnt);
if (!scheme_chaperone_of(vals[0], evt))
scheme_raise_exn(MZEXN_FAIL_CONTRACT,
"evt chaperone: chaperone produced a value: %V that is not a chaperone of the original event: %V",
vals[0],
evt);
if (!scheme_check_proc_arity(NULL, 1, 1, 1, vals))
scheme_raise_exn(MZEXN_FAIL_CONTRACT,
"evt chaperone: expected a value of type <procedure (arity 2)> as second chaprone result, received: %V",
vals[1]);
a[0] = vals[0];
o = scheme_make_closed_prim_w_arity(chaperone_result_guard_proc,
(void *)vals[1],
"evt-result-chaperone",
1, 1);
a[1] = o;
return scheme_wrap_evt(1, a);
}
static Scheme_Object *chaperone_evt(int argc, Scheme_Object *argv[])
{
Scheme_Chaperone *px;
Scheme_Object *o, *val, *a[1];
Scheme_Hash_Tree *props;
val = argv[0];
if (SCHEME_CHAPERONEP(val))
val = SCHEME_CHAPERONE_VAL(val);
if (!scheme_is_evt(val))
scheme_wrong_type("chaperone-evt", "evt", 0, argc, argv);
scheme_check_proc_arity("chaperone-evt", 1, 1, argc, argv);
props = scheme_parse_chaperone_props("chaperone-evt", 2, argc, argv);
o = scheme_make_pair(argv[0], argv[1]);
o = scheme_make_closed_prim_w_arity(chaperone_guard_proc,
(void *)o,
"evt-chaperone",
1, 1);
a[0] = o;
o = nack_evt(1, a);
px = MALLOC_ONE_TAGGED(Scheme_Chaperone);
if (SCHEME_PROCP(val))
px->so.type = scheme_proc_chaperone_type;
else
px->so.type = scheme_chaperone_type;
px->val = val;
px->prev = argv[0];
px->props = props;
px->redirects = o;
return (Scheme_Object *)px;
}
static int chaperone_evt_is_ready(Scheme_Object *o, Scheme_Schedule_Info *sinfo)
{
Scheme_Chaperone *px;
while (SCHEME_CHAPERONEP(o)) {
px = (Scheme_Chaperone *)o;
if (SAME_TYPE(SCHEME_TYPE(px->redirects), scheme_nack_guard_evt_type)) {
o = px->redirects;
break;
}
o = px->prev;
}
scheme_set_sync_target(sinfo, o, NULL, NULL, 0, 1, NULL);
return 0;
}
static Scheme_Object *is_chaperone_evt_k(void)
{
Scheme_Thread *p = scheme_current_thread;
Scheme_Object *o = (Scheme_Object *)p->ku.k.p1;
int c;
p->ku.k.p1 = NULL;
c = is_chaperone_evt(o);
return scheme_make_integer(c);
}
static int is_chaperone_evt(Scheme_Object *o)
{
#include "mzstkchk.h"
{
scheme_current_thread->ku.k.p1 = (void *)o;
return SCHEME_INT_VAL(scheme_handle_stack_overflow(is_chaperone_evt_k));
}
return scheme_is_evt(SCHEME_CHAPERONE_VAL(o));
}
static Scheme_Object *nack_evt(int argc, Scheme_Object *argv[])
{
Nack_Guard_Evt *nw;