add 'bitwise-bit-set?' and 'in-value' (v4.0.2.6)

svn: r10971
This commit is contained in:
Matthew Flatt 2008-07-29 19:27:33 +00:00
parent 1ca888a934
commit 8140b3644e
13 changed files with 427 additions and 299 deletions

View File

@ -40,11 +40,6 @@
(loop (arithmetic-shift b -1) (add1 pos))
pos))))
(define (bitwise-bit-set? b n)
(unless (exact-nonnegative-integer? n)
(raise-type-error 'bitwise-bit-set? "exact nonnegative integer" n))
(eq? 1 (bitwise-and (arithmetic-shift b (- n)) 1)))
(define (bitwise-copy-bit b n bit)
(unless (exact-nonnegative-integer? n)
(raise-type-error 'bitwise-copy-bit "exact nonnegative integer" n))

View File

@ -42,6 +42,7 @@
stop-before
stop-after
(rename *in-indexed in-indexed)
(rename *in-value in-value)
sequence?
sequence-generate
@ -553,6 +554,15 @@
(lambda (val idx) (pre-cont? val))
(lambda (pos val idx) (post-cont? pos val)))))))
(define (in-value v)
(make-do-sequence (lambda ()
(values (lambda (pos) v)
(lambda (pos) #f)
#t
(lambda (pos) pos)
(lambda (val) #t)
(lambda (pos val) #t)))))
;; ----------------------------------------
(define (in-parallel . sequences)
@ -1016,4 +1026,13 @@
(lambda (stx)
(syntax-case stx ()
[((id1 id2) (_ gen-expr))
#'[(id1 id2) (in-parallel gen-expr (*in-naturals))]]))))
#'[(id1 id2) (in-parallel gen-expr (*in-naturals))]])))
(define-sequence-syntax *in-value
(lambda () #'in-value)
(lambda (stx)
(syntax-case stx ()
[((id) (_ expr))
#'[(id)
(:do-in ([(id) expr])
#t () #t () #t #f ())]]))))

View File

@ -400,6 +400,7 @@ fast-seq (in-range expr expr)
(in-vector expr)
(in-string expr)
(in-bytes expr)
(in-value expr)
(stop-before fast-seq predicate-expr)
(stop-after fast-seq predicate-expr)
]

View File

@ -49,7 +49,7 @@
(y . < . height)))
(define (clear? board pos)
(zero? (bitwise-and board (arithmetic-shift 1 pos))))
(not (bitwise-bit-set? board pos)))
(define (set board pos)
(bitwise-ior board (arithmetic-shift 1 pos)))
@ -146,15 +146,15 @@
(for ([piece (in-list pieces)]
[color (in-naturals)])
(let loop ([masks (sort (all-bitmasks piece color) >)]
[cell-mask (arithmetic-shift 1 (sub1 (* width height)))]
[cell-bit (sub1 (* width height))]
[cell-counter (sub1 (* width height))])
(if (null? masks)
masks-at-cell
(if (= (bitwise-and (car masks) cell-mask) cell-mask)
(if (bitwise-bit-set? (car masks) cell-bit)
(let ([vec (vector-ref masks-at-cell cell-counter)])
(vector-set! vec color (cons (car masks) (vector-ref vec color)))
(loop (cdr masks) cell-mask cell-counter))
(loop masks (arithmetic-shift cell-mask -1) (sub1 cell-counter))))))
(loop (cdr masks) cell-bit cell-counter))
(loop masks (sub1 cell-bit) (sub1 cell-counter))))))
(for ([v (in-vector masks-at-cell)])
(for ([j (in-naturals)]
[val (in-vector v)])

View File

@ -158,5 +158,10 @@
(for/and (((a b) (in-parallel '(#f 1) '(#t #f))))
a))
(test '(11) 'in-value (for/list ([i (in-value 11)]) i))
(let-values ([(more? next) (sequence-generate (in-value 13))])
(test #t more?)
(test 13 next)
(test #f more?))
(report-errs)

View File

@ -307,6 +307,19 @@
(un-exact (- (expt 2 30)) 'bitwise-not (sub1 (expt 2 30)))
(un-exact (- -1 (expt 2 32)) 'bitwise-not (expt 2 32))
(bin-exact #t 'bitwise-bit-set? 1 0)
(bin-exact #f 'bitwise-bit-set? 1 1)
(bin-exact #t 'bitwise-bit-set? 2 1)
(bin-exact #t 'bitwise-bit-set? 200 7)
(bin-exact #f 'bitwise-bit-set? 127 7)
(bin-exact #f 'bitwise-bit-set? 383 7)
(bin-exact #f 'bitwise-bit-set? 10 128)
(bin-exact #t 'bitwise-bit-set? -10 128)
(bin-exact #t 'bitwise-bit-set? (expt 2 30) 30)
(bin-exact #t 'bitwise-bit-set? (expt 2 40) 40)
(bin-exact #f 'bitwise-bit-set? (expt 2 40) 41)
(bin-exact #t 'bitwise-bit-set? (- (expt 2 40)) 41)
(bin-exact #t 'char=? #\a #\a)
(bin-exact #t 'char=? #\u1034 #\u1034)
(bin-exact #f 'char=? #\a #\b)

View File

@ -4,6 +4,8 @@ Changed namespaces to have a base phase; for example, calling
Added logging facilities: make-logger, etc.
Added "inheritance" to structure type properties, and change
prop:procedure from scheme/base to better support keywords
Added bitwise-bit-set?
Added in-value
Version 4.0, June 2008
>> See MzScheme_4.txt

View File

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

View File

@ -2854,6 +2854,7 @@ static int generate_arith(mz_jit_state *jitter, Scheme_Object *rator, Scheme_Obj
cmp = 0 -> = or zero?
cmp = +/-1 -> >=/<=
cmp = +/-2 -> >/< or positive/negative?
cmp = 3 -> bitwise-bit-test?
*/
{
GC_CAN_IGNORE jit_insn *ref, *ref2, *ref3, *ref4, *refd = NULL, *refdt = NULL, *refslow;
@ -2866,7 +2867,10 @@ static int generate_arith(mz_jit_state *jitter, Scheme_Object *rator, Scheme_Obj
&& SCHEME_INT_SMALL_ENOUGH(rand2)
&& ((arith != 6)
|| ((SCHEME_INT_VAL(rand2) <= MAX_TRY_SHIFT)
&& (SCHEME_INT_VAL(rand2) >= -MAX_TRY_SHIFT)))) {
&& (SCHEME_INT_VAL(rand2) >= -MAX_TRY_SHIFT)))
&& ((cmp != 3)
|| ((SCHEME_INT_VAL(rand2) <= MAX_TRY_SHIFT)
&& (SCHEME_INT_VAL(rand2) >= 0)))) {
/* Second is constant, so use constant mode.
For arithmetic shift, only do this if the constant
is in range. */
@ -2874,7 +2878,8 @@ static int generate_arith(mz_jit_state *jitter, Scheme_Object *rator, Scheme_Obj
rand2 = NULL;
} else if (SCHEME_INTP(rand)
&& SCHEME_INT_SMALL_ENOUGH(rand)
&& (arith != 6)) {
&& (arith != 6)
&& (cmp != 3)) {
/* First is constant; swap argument order and use constant mode. */
v = SCHEME_INT_VAL(rand);
cmp = -cmp;
@ -3250,7 +3255,23 @@ static int generate_arith(mz_jit_state *jitter, Scheme_Object *rator, Scheme_Obj
} else {
/* If second is constant, first arg is in JIT_R0. */
/* Otherwise, first arg is in JIT_R1, second is in JIT_R0 */
/* Jump to ref3 to produce false */
switch (cmp) {
case -3:
if (rand2) {
(void)jit_blti_l(refslow, JIT_R1, 0);
(void)jit_bgti_l(refslow, JIT_R1, (long)scheme_make_integer(MAX_TRY_SHIFT));
jit_rshi_l(JIT_R1, JIT_R1, 1);
jit_addi_l(JIT_V1, JIT_R1, 1);
jit_movi_l(JIT_R2, 1);
jit_lshr_l(JIT_R2, JIT_R2, JIT_V1);
ref3 = jit_bmcr_l(jit_forward(), JIT_R0, JIT_R2);
} else {
/* shouldn't get here */
scheme_signal_error("bitwise-bit-test? constant in wrong position");
ref3 = NULL;
}
break;
case -2:
if (rand2) {
ref3 = jit_bger_l(jit_forward(), JIT_R1, JIT_R0);
@ -3280,13 +3301,26 @@ static int generate_arith(mz_jit_state *jitter, Scheme_Object *rator, Scheme_Obj
}
break;
case 2:
default:
if (rand2) {
ref3 = jit_bler_l(jit_forward(), JIT_R1, JIT_R0);
} else {
ref3 = jit_blei_l(jit_forward(), JIT_R0, (long)scheme_make_integer(v));
}
break;
default:
case 3:
if (rand2) {
(void)jit_blti_l(refslow, JIT_R0, 0);
(void)jit_bgti_l(refslow, JIT_R0, (long)scheme_make_integer(MAX_TRY_SHIFT));
jit_rshi_l(JIT_R0, JIT_R0, 1);
jit_addi_l(JIT_R0, JIT_R0, 1);
jit_movi_l(JIT_V1, 1);
jit_lshr_l(JIT_R0, JIT_V1, JIT_R0);
ref3 = jit_bmcr_l(jit_forward(), JIT_R1, JIT_R0);
} else {
ref3 = jit_bmci_l(jit_forward(), JIT_R0, 1 << (v+1));
}
break;
}
if (refdt)
@ -4092,6 +4126,9 @@ static int generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i
} else if (IS_NAMED_PRIM(rator, ">")) {
generate_arith(jitter, rator, app->rand1, app->rand2, 2, 0, 2, 0, for_branch, branch_short);
return 1;
} else if (IS_NAMED_PRIM(rator, "bitwise-bit-set?")) {
generate_arith(jitter, rator, app->rand1, app->rand2, 2, 0, 3, 0, for_branch, branch_short);
return 1;
} else if (IS_NAMED_PRIM(rator, "char=?")) {
generate_binary_char(jitter, app, for_branch, branch_short);
return 1;

View File

@ -444,8 +444,8 @@ static int jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX };
#define jit_bler_ui(label, s1, s2) jit_bra_r((s1), (s2), JBEm(label,0,0,0) )
#define jit_bgtr_ui(label, s1, s2) jit_bra_r((s1), (s2), JAm(label, 0,0,0) )
#define jit_bger_ui(label, s1, s2) jit_bra_r((s1), (s2), JAEm(label,0,0,0) )
#define jit_bmsr_i(label, s1, s2) (TESTLrr((s1), (s2)), JNZm(label,0,0,0), _jit.x.pc)
#define jit_bmcr_i(label, s1, s2) (TESTLrr((s1), (s2)), JZm(label,0,0,0), _jit.x.pc)
#define jit_bmsr_i(label, s1, s2) (TESTQrr((s1), (s2)), JNZm(label,0,0,0), _jit.x.pc)
#define jit_bmcr_i(label, s1, s2) (TESTQrr((s1), (s2)), JZm(label,0,0,0), _jit.x.pc)
#define jit_boaddr_i(label, s1, s2) (ADDLrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)
#define jit_bosubr_i(label, s1, s2) (SUBLrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)
#define jit_boaddr_ui(label, s1, s2) (ADDLrr((s2), (s1)), JCm(label,0,0,0), _jit.x.pc)

View File

@ -71,6 +71,7 @@ static Scheme_Object *even_p (int argc, Scheme_Object *argv[]);
static Scheme_Object *bitwise_or (int argc, Scheme_Object *argv[]);
static Scheme_Object *bitwise_xor (int argc, Scheme_Object *argv[]);
static Scheme_Object *bitwise_not (int argc, Scheme_Object *argv[]);
static Scheme_Object *bitwise_bit_set_p (int argc, Scheme_Object *argv[]);
static Scheme_Object *integer_length (int argc, Scheme_Object *argv[]);
static Scheme_Object *gcd (int argc, Scheme_Object *argv[]);
static Scheme_Object *lcm (int argc, Scheme_Object *argv[]);
@ -308,6 +309,10 @@ scheme_init_number (Scheme_Env *env)
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED;
scheme_add_global_constant("bitwise-not", p, env);
p = scheme_make_folding_prim(bitwise_bit_set_p, "bitwise-bit-set?", 2, 2, 1);
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_BINARY_INLINED;
scheme_add_global_constant("bitwise-bit-set?", p, env);
p = scheme_make_folding_prim(scheme_bitwise_shift, "arithmetic-shift", 2, 2, 1);
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_BINARY_INLINED;
scheme_add_global_constant("arithmetic-shift", p, env);
@ -2490,6 +2495,57 @@ scheme_bitwise_shift(int argc, Scheme_Object *argv[])
return scheme_bignum_shift(v, shift);
}
static Scheme_Object *bitwise_bit_set_p (int argc, Scheme_Object *argv[])
{
Scheme_Object *so, *sb;
so = argv[0];
if (!SCHEME_EXACT_INTEGERP(so)) {
scheme_wrong_type("bitwise-bit-set?", "exact integer", 0, argc, argv);
ESCAPED_BEFORE_HERE;
}
sb = argv[1];
if (SCHEME_INTP(sb)) {
long v;
v = SCHEME_INT_VAL(sb);
if (v < 0) {
scheme_wrong_type("bitwise-bit-set?", "nonnegative exact integer", 1, argc, argv);
ESCAPED_BEFORE_HERE;
}
if (SCHEME_INTP(so)) {
if (v < (sizeof(long) * 8))
return ((((long)1 << v) & SCHEME_INT_VAL(so)) ? scheme_true : scheme_false);
else
return ((SCHEME_INT_VAL(so) < 0) ? scheme_true : scheme_false);
} else {
bigdig d;
long vd, vb;
vd = v / (sizeof(bigdig) * 8);
vb = v & ((sizeof(bigdig) * 8) - 1);
if (vd >= ((Scheme_Bignum *)so)->len)
return (SCHEME_BIGPOS(so) ? scheme_false : scheme_true);
if (SCHEME_BIGPOS(so)) {
d = ((Scheme_Bignum *)so)->digits[vd];
return ((((bigdig)1 << vb) & d) ? scheme_true : scheme_false);
} else {
/* Testing a bit in a negative bignum. Just use the slow way for now. */
Scheme_Object *bit;
bit = scheme_bignum_shift(scheme_make_bignum(1), v);
bit = scheme_bignum_and(bit, so);
return (SAME_OBJ(bit, scheme_make_integer(0)) ? scheme_false : scheme_true);
}
}
} else if (SCHEME_BIGNUMP(sb) && SCHEME_BIGPOS(sb)) {
if (SCHEME_INTP(so))
return ((SCHEME_INT_VAL(so) < 0) ? scheme_true : scheme_false);
else
return (SCHEME_BIGPOS(so) ? scheme_false : scheme_true);
} else {
scheme_wrong_type("bitwise-bit-set?", "nonnegative exact integer", 1, argc, argv);
ESCAPED_BEFORE_HERE;
}
}
static Scheme_Object *
integer_length(int argc, Scheme_Object *argv[])
{

View File

@ -13,7 +13,7 @@
#define USE_COMPILED_STARTUP 1
#define EXPECTED_PRIM_COUNT 925
#define EXPECTED_PRIM_COUNT 926
#ifdef MZSCHEME_SOMETHING_OMITTED
# undef USE_COMPILED_STARTUP

View File

@ -13,12 +13,12 @@
consistently.)
*/
#define MZSCHEME_VERSION "4.0.2.5"
#define MZSCHEME_VERSION "4.0.2.6"
#define MZSCHEME_VERSION_X 4
#define MZSCHEME_VERSION_Y 0
#define MZSCHEME_VERSION_Z 2
#define MZSCHEME_VERSION_W 5
#define MZSCHEME_VERSION_W 6
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)