( begin ( define ( ZED* ZEDnumber1 ZEDnumber2) ( cond ( #t ( * ZEDnumber1 ZEDnumber2) ) ( else err) ) ) ( define ( ZED+ ZEDnumber1 ZEDnumber2) ( cond ( #t ( + ZEDnumber1 ZEDnumber2) ) ( else err) ) ) ( define ( ZED- ZEDnumber1 ZEDnumber2) ( cond ( #t ( - ZEDnumber1 ZEDnumber2) ) ( else err) ) ) ( define ( ZED/ ZEDnumber1 ZEDnumber2) ( cond ( #t ( / ZEDnumber1 ZEDnumber2) ) ( else err) ) ) ( define ( ZED= value1 value2) ( cond ( #t ( eqv? value1 value2) ) ( else err) ) ) ( define ( ZEDadd- between! item list collect) ( cond ( ( null? list ) collect) ( ( null? ( cdr list ) ) ( cons ( car list ) collect) ) ( #t ( ZEDadd- between! item ( cdr list ) ( cons item ( cons ( car list ) collect) ) ) ) ( else err) ) ) ( define ( ZEDadd- between item list ) ( cond ( #t ( reverse ( ZEDadd- between! item list ( quote ( ) ) ) ) ) ( else err) ) ) ( define ( ZEDadd- between- ra list item) ( cond ( #t ( reverse ( ZEDadd- between! item list ( quote ( ) ) ) ) ) ( else err) ) ) ( define ( ZEDalpha) ( cond ( #t ( ZEDwrite- all ( ZEDrd ( quote ( ) ) append ( ZEDrd ( quote ( ) ) append ( ZEDnewlines ( ZEDby- four ( ZEDfunction- sort ( ZEDsentences ( ZEDleading- newline ( ZEDspace- newline ( ZEDtab- replace ( ZEDnewline- space- tab- repeats ( ZEDnewline- space ( ZEDfilter ZEDnot- return ? ( ZEDreplace- trailing- white- space ( ZEDread- all) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ( else err) ) ) ( define ( ZEDapplication? expression) ( cond ( #t ( and ( not ( null? expression) ) ( pair? ( car expression) ) ( null? ( cdar expression) ) ) ) ( else err) ) ) ( define ( ZEDarity arity- hash function) ( cond ( #t ( cdr ( assoc function arity- hash) ) ) ( else err) ) ) ( define ( ZEDarity- hash! clause) ( cond ( #t ( cons ( ZEDclause- name clause) ( ZEDclause- arity clause) ) ) ( else err) ) ) ( define ( ZEDarity- hash program) ( cond ( #t ( append ( map ZEDarity- hash! program) ( append ( list ( cons ( quote ZED1) 1 ) ( cons ( quote ZED! ) 1 ) ( cons ( quote ZED001) 1 ) ( cons ( quote or ) 2 ) ( cons ( quote and ) 2 ) ( cons ( quote begin ) 2 ) ( cons ( quote ZEDc) 2 ) ( cons ( quote quote ) 1 ) ) ( list ( cons ( quote ZED002) 2 ) ( cons ( quote ZED003) 3 ) ( cons ( quote ZED004) 4 ) ( cons ( quote ZED005) 5 ) ( cons ( quote ZED006) 6 ) ( cons ( quote ZED007) 7 ) ( cons ( quote ZED008) 8 ) ( cons ( quote ZED009) 9 ) ( cons ( quote ZED010) 10 ) ( cons ( quote ZED011) 11 ) ( cons ( quote ZED012) 12 ) ( cons ( quote ZED013) 13 ) ( cons ( quote ZED014) 14 ) ( cons ( quote ZED015) 15 ) ( cons ( quote ZED016) 16 ) ( cons ( quote ZED017) 17 ) ( cons ( quote ZED018) 18 ) ( cons ( quote ZED019) 19 ) ( cons ( quote ZED020) 20 ) ( cons ( quote ZED021) 21 ) ( cons ( quote ZED022) 22 ) ( cons ( quote ZED023) 23 ) ( cons ( quote ZED024) 24 ) ( cons ( quote ZED025) 25 ) ( cons ( quote ZED026) 26 ) ( cons ( quote ZED027) 27 ) ( cons ( quote ZED028) 28 ) ( cons ( quote ZED029) 29 ) ( cons ( quote ZED030) 30 ) ( cons ( quote ZED031) 31 ) ( cons ( quote ZED032) 32 ) ( cons ( quote ZED033) 33 ) ( cons ( quote ZED034) 34 ) ( cons ( quote ZED035) 35 ) ( cons ( quote ZED036) 36 ) ( cons ( quote ZED037) 37 ) ( cons ( quote ZED038) 38 ) ( cons ( quote ZED039) 39 ) ( cons ( quote ZED040) 40 ) ( cons ( quote ZED041) 41 ) ( cons ( quote ZED042) 42 ) ( cons ( quote ZED043) 43 ) ( cons ( quote ZED044) 44 ) ( cons ( quote ZED045) 45 ) ( cons ( quote ZED046) 46 ) ( cons ( quote ZED047) 47 ) ( cons ( quote ZED048) 48 ) ( cons ( quote ZED049) 49 ) ( cons ( quote ZED050) 50 ) ( cons ( quote ZED051) 51 ) ( cons ( quote ZED052) 52 ) ( cons ( quote ZED053) 53 ) ( cons ( quote ZED054) 54 ) ( cons ( quote ZED055) 55 ) ( cons ( quote ZED056) 56 ) ( cons ( quote ZED057) 57 ) ( cons ( quote ZED058) 58 ) ( cons ( quote ZED059) 59 ) ( cons ( quote ZED060) 60 ) ( cons ( quote ZED061) 61 ) ( cons ( quote ZED062) 62 ) ( cons ( quote ZED063) 63 ) ( cons ( quote ZED064) 64 ) ( cons ( quote ZED065) 65 ) ( cons ( quote ZED066) 66 ) ( cons ( quote ZED067) 67 ) ( cons ( quote ZED068) 68 ) ( cons ( quote ZED069) 69 ) ( cons ( quote ZED070) 70 ) ( cons ( quote ZED071) 71 ) ( cons ( quote ZED072) 72 ) ( cons ( quote ZED073) 73 ) ( cons ( quote ZED074) 74 ) ( cons ( quote ZED075) 75 ) ( cons ( quote ZED076) 76 ) ( cons ( quote ZED077) 77 ) ( cons ( quote ZED078) 78 ) ( cons ( quote ZED079) 79 ) ( cons ( quote ZED080) 80 ) ( cons ( quote ZED081) 81 ) ( cons ( quote ZED082) 82 ) ( cons ( quote ZED083) 83 ) ( cons ( quote ZED084) 84 ) ( cons ( quote ZED085) 85 ) ( cons ( quote ZED086) 86 ) ( cons ( quote ZED087) 87 ) ( cons ( quote ZED088) 88 ) ( cons ( quote ZED089) 89 ) ( cons ( quote ZED090) 90 ) ( cons ( quote ZED091) 91 ) ( cons ( quote ZED092) 92 ) ( cons ( quote ZED093) 93 ) ( cons ( quote ZED094) 94 ) ( cons ( quote ZED095) 95 ) ( cons ( quote ZED096) 96 ) ( cons ( quote ZED097) 97 ) ( cons ( quote ZED098) 98 ) ( cons ( quote ZED099) 99 ) ) ) ) ) ( else err) ) ) ( define ( ZEDby- four! sentences collect) ( cond ( ( null? sentences) collect) ( #t ( ZEDby- four! ( cddddr sentences) ( cons ( list ( car sentences) ( cadr sentences) ( caddr sentences) ( cadddr sentences) ) collect) ) ) ( else err) ) ) ( define ( ZEDby- four sentences) ( cond ( #t ( reverse ( ZEDby- four! sentences ( quote ( ) ) ) ) ) ( else err) ) ) ( define ( ZEDby- three! sentences collect) ( cond ( ( null? sentences) collect) ( #t ( ZEDby- three! ( cdddr sentences) ( cons ( list ( car sentences) ( cadr sentences) ( caddr sentences) ) collect) ) ) ( else err) ) ) ( define ( ZEDby- three sentences) ( cond ( #t ( reverse ( ZEDby- three! sentences ( quote ( ) ) ) ) ) ( else err) ) ) ( define ( ZEDcharacter- less? character1 character2) ( cond ( #t ( < ( char-> integer character1) ( char-> integer character2) ) ) ( else err) ) ) ( define ( ZEDclause- arguments clause) ( cond ( #t ( cadr clause) ) ( else err) ) ) ( define ( ZEDclause- arguments- agree clause1 clause2) ( cond ( ( equal? ( ZEDclause- arguments clause1) ( ZEDclause- arguments clause2) ) ( ZEDclause- arguments clause1) ) ( else err) ) ) ( define ( ZEDclause- arity clause) ( cond ( #t ( length ( ZEDclause- arguments clause) ) ) ( else err) ) ) ( define ( ZEDclause- body clause) ( cond ( #t ( cddr clause) ) ( else err) ) ) ( define ( ZEDclause- less? clause1 clause2) ( cond ( #t ( ZEDsentence- less? ( car clause1) ( car clause2) ) ) ( else err) ) ) ( define ( ZEDclause- name clause) ( cond ( #t ( car clause) ) ( else err) ) ) ( define ( ZEDclause- name- agree clause1 clause2) ( cond ( ( eq? ( ZEDclause- name clause1) ( ZEDclause- name clause2) ) ( ZEDclause- name clause1) ) ( else err) ) ) ( define ( ZEDcombine- all! program collect) ( cond ( ( null? program) collect) ( ( null? ( cdr program) ) ( cons ( car program) collect) ) ( ( eq? ( ZEDclause- name ( car program) ) ( ZEDclause- name ( cadr program) ) ) ( ZEDcombine- all! ( ZEDcombine- head- clauses program) collect) ) ( #t ( ZEDcombine- all! ( cdr program) ( cons ( car program) collect) ) ) ( else err) ) ) ( define ( ZEDcombine- all program) ( cond ( #t ( reverse ( ZEDcombine- all! program ( quote ( ) ) ) ) ) ( else err) ) ) ( define ( ZEDcombine- clauses clause1 clause2) ( cond ( #t ( cons ( ZEDclause- name- agree clause1 clause2) ( cons ( ZEDclause- arguments- agree clause1 clause2) ( append ( ZEDclause- body clause1) ( ZEDclause- body clause2) ) ) ) ) ( else err) ) ) ( define ( ZEDcombine- head- clauses program) ( cond ( #t ( cons ( ZEDcombine- clauses ( car program) ( cadr program) ) ( cddr program) ) ) ( else err) ) ) ( define ( ZEDcombine- program- clauses program) ( cond ( #t ( ZEDcombine- all ( ZEDready- program program) ) ) ( else err) ) ) ( define ( ZEDcomp! ) ( cond ( #t ( ZEDcomp! a ( ZEDcombine- program- clauses ( ZEDby- three ( ZEDread- sentences ( ZEDdiscard- comments ( ZEDfunction- sort ( ZEDsentences ( ZEDleading- newline ( ZEDspace- newline ( ZEDtab- replace ( ZEDnewline- space- tab- repeats ( ZEDnewline- space ( ZEDfilter ZEDnot- return ? ( ZEDreplace- trailing- white- space ( ZEDread- all) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ( else err) ) ) ( define ( ZEDcomp! a combined) ( cond ( #t ( ZEDcomp! aa ( ZEDprogramize combined ( ZEDarity- hash combined) ) ) ) ( else err) ) ) ( define ( ZEDcomp! aa programized) ( cond ( #t ( write programized) ) ( else err) ) ) ( define ( ZEDcomp) ( cond ( #t ( ZEDcomp! ) ) ( else err) ) ) ( define ( ZEDcondefy! expressions collect) ( cond ( ( null? expressions) collect) ( #t ( ZEDcondefy! ( cddr expressions) ( cons ( append ( car expressions) ( cadr expressions) ) collect) ) ) ( else err) ) ) ( define ( ZEDcondefy expressions) ( cond ( #t ( reverse ( ZEDcondefy! expressions ( quote ( ) ) ) ) ) ( else err) ) ) ( define ( ZEDcons ZEDvalue1 ZEDvalue2) ( cond ( #t ( cons ZEDvalue1 ZEDvalue2) ) ( else err) ) ) ( define ( ZEDcount ZEDnumber) ( cond ( #t ( cons ( delay ZEDnumber) ( delay ( ZEDcount ( ZED+ ZEDnumber 1 ) ) ) ) ) ( else err) ) ) ( define ( ZEDcount- by ZEDstep ZEDnumber) ( cond ( #t ( cons ( delay ZEDnumber) ( delay ( ZEDcount- by ZEDstep ( ZED+ ZEDnumber ZEDstep) ) ) ) ) ( else err) ) ) ( define ( ZEDdelay- wrap expression) ( cond ( #t ( list ( quote delay ) expression) ) ( else err) ) ) ( define ( ZEDdigit? character) ( cond ( #t ( or ( eqv? #\0 character) ( eqv? #\1 character) ( eqv? #\2 character) ( eqv? #\3 character) ( eqv? #\4 character) ( eqv? #\5 character) ( eqv? #\6 character) ( eqv? #\7 character) ( eqv? #\8 character) ( eqv? #\9 character) ) ) ( else err) ) ) ( define ( ZEDdiscard- comments! program collect) ( cond ( ( null? program) collect) ( #t ( ZEDdiscard- comments! ( cddddr program) ( cons ( cadddr program) ( cons ( caddr program) ( cons ( car program) collect) ) ) ) ) ( else err) ) ) ( define ( ZEDdiscard- comments program) ( cond ( #t ( reverse ( ZEDdiscard- comments! program ( quote ( ) ) ) ) ) ( else err) ) ) ( define ( ZEDdr! value) ( cond ( ( pair? value) ( ZEDmp ZEDdr! ( ZEDfirst 64 value) ) ) ( #t value) ( else err) ) ) ( define ( ZEDdr value) ( cond ( #t ( begin ( display ( ZEDpr ( ZEDdr! value) ) ) ( newline ) ( newline ) value) ) ( else err) ) ) ( define ( ZEDdrr value) ( cond ( #t ( begin ( display ( ZEDpr value) ) ( newline ) ( newline ) value) ) ( else err) ) ) ( define ( ZEDfalse? noun- list ) ( cond ( #t ( equal? noun- list ( list #\# #\f #\a #\l #\s #\e ) ) ) ( else err) ) ) ( define ( ZEDfi function list ) ( cond ( ( null? list ) ( quote ( ) ) ) ( ( function ( if ( promise? ( car list ) ) ( force ( car list ) ) ( car list ) ) ) ( cons ( delay ( if ( promise? ( car list ) ) ( force ( car list ) ) ( car list ) ) ) ( delay ( ZEDfi function ( if ( promise? ( cdr list ) ) ( force ( cdr list ) ) ( cdr list ) ) ) ) ) ) ( #t ( ZEDfi function ( if ( promise? ( cdr list ) ) ( force ( cdr list ) ) ( cdr list ) ) ) ) ( else err) ) ) ( define ( ZEDfilter! predicate list collect) ( cond ( ( null? list ) collect) ( ( predicate ( car list ) ) ( ZEDfilter! predicate ( cdr list ) ( cons ( car list ) collect) ) ) ( #t ( ZEDfilter! predicate ( cdr list ) collect) ) ( else err) ) ) ( define ( ZEDfilter predicate list ) ( cond ( #t ( reverse ( ZEDfilter! predicate list ( quote ( ) ) ) ) ) ( else err) ) ) ( define ( ZEDfirst! integer list collect) ( cond ( ( or ( zero? integer) ( null? list ) ) ( reverse collect) ) ( ( not ( pair? list ) ) ( reverse ( cons list collect) ) ) ( ( > integer 0 ) ( ZEDfirst! ( - integer 1 ) ( if ( promise? ( cdr list ) ) ( force ( cdr list ) ) ( cdr list ) ) ( cons ( if ( promise? ( car list ) ) ( force ( car list ) ) ( car list ) ) collect) ) ) ( else err) ) ) ( define ( ZEDfirst integer list ) ( cond ( ( not ( pair? list ) ) list ) ( #t ( ZEDfirst! integer list ( quote ( ) ) ) ) ( else err) ) ) ( define ( ZEDflatten! ZEDlist ZEDsub- list- found? ZEDcollect) ( cond ( ( and ( ZEDnull? ZEDlist) ( ZEDnot ZEDsub- list- found?) ) ( ZEDreverse ZEDcollect) ) ( ( ZEDnull? ZEDlist) ( ZEDflatten! ( ZEDreverse ZEDcollect) #f ( quote ( ) ) ) ) ( ( ZEDnot ( ZEDpair? ZEDlist) ) ( ZEDflatten! ( quote ( ) ) ZEDsub- list- found? ( ZEDcons ZEDlist ZEDcollect) ) ) ( ( ZEDpair? ( if ( promise? ( car ZEDlist) ) ( force ( car ZEDlist) ) ( car ZEDlist) ) ) ( ZEDflatten! ( if ( promise? ( cdr ZEDlist) ) ( force ( cdr ZEDlist) ) ( cdr ZEDlist) ) #t ( ZEDcons ( if ( promise? ( cdr ( if ( promise? ( car ZEDlist) ) ( force ( car ZEDlist) ) ( car ZEDlist) ) ) ) ( force ( cdr ( if ( promise? ( car ZEDlist) ) ( force ( car ZEDlist) ) ( car ZEDlist) ) ) ) ( cdr ( if ( promise? ( car ZEDlist) ) ( force ( car ZEDlist) ) ( car ZEDlist) ) ) ) ( ZEDcons ( if ( promise? ( car ( if ( promise? ( car ZEDlist) ) ( force ( car ZEDlist) ) ( car ZEDlist) ) ) ) ( force ( car ( if ( promise? ( car ZEDlist) ) ( force ( car ZEDlist) ) ( car ZEDlist) ) ) ) ( car ( if ( promise? ( car ZEDlist) ) ( force ( car ZEDlist) ) ( car ZEDlist) ) ) ) ZEDcollect) ) ) ) ( ( ZEDnull? ( if ( promise? ( car ZEDlist) ) ( force ( car ZEDlist) ) ( car ZEDlist) ) ) ( ZEDflatten! ( if ( promise? ( cdr ZEDlist) ) ( force ( cdr ZEDlist) ) ( cdr ZEDlist) ) ZEDsub- list- found? ZEDcollect) ) ( #t ( ZEDflatten! ( if ( promise? ( cdr ZEDlist) ) ( force ( cdr ZEDlist) ) ( cdr ZEDlist) ) ZEDsub- list- found? ( ZEDcons ( if ( promise? ( car ZEDlist) ) ( force ( car ZEDlist) ) ( car ZEDlist) ) ZEDcollect) ) ) ( else err) ) ) ( define ( ZEDflatten ZEDlist) ( cond ( #t ( ZEDflatten! ZEDlist #f ( quote ( ) ) ) ) ( else err) ) ) ( define ( ZEDfor- each ZEDeffect ZEDlist) ( cond ( #t ( for-each ZEDeffect ZEDlist) ) ( else err) ) ) ( define ( ZEDfunction expression) ( cond ( #t ( caar expression) ) ( else err) ) ) ( define ( ZEDfunction- sort sentences) ( cond ( #t ( ZEDrd ( quote ( ) ) append ( ZEDsort ZEDclause- less? ( ZEDby- four sentences) ) ) ) ( else err) ) ) ( define ( ZEDfunctionize clause arity- hash) ( cond ( #t ( list ( quote define ) ( cons ( ZEDclause- name clause) ( ZEDclause- arguments clause) ) ( cons ( quote cond ) ( append ( ZEDcondefy ( ZEDmap- with ZEDschemefy ( ZEDclause- body clause) arity- hash) ) ( list ( list ( quote else ) ( quote err) ) ) ) ) ) ) ( else err) ) ) ( define ( ZEDgather- count?! candidate) ( cond ( #t ( and ( = 6 ( length candidate) ) ( eqv? #\Z ( car candidate) ) ( eqv? #\E ( cadr candidate) ) ( eqv? #\D ( caddr candidate) ) ( eqv? #\0 ( cadddr candidate) ) ( ZEDdigit? ( car ( cddddr candidate) ) ) ( ZEDdigit? ( cadr ( cddddr candidate) ) ) ) ) ( else err) ) ) ( define ( ZEDgather- count? symbol) ( cond ( #t ( ZEDgather- count?! ( string-> list ( symbol-> string symbol) ) ) ) ( else err) ) ) ( define ( ZEDgather- noun sentence) ( cond ( ( null? sentence) ( quote ( ) ) ) ( ( eqv? #\space ( car sentence) ) ( quote ( ) ) ) ( #t ( cons ( car sentence) ( ZEDgather- noun ( cdr sentence) ) ) ) ( else err) ) ) ( define ( ZEDgather- verb sentence) ( cond ( ( eqv? #\) ( car sentence) ) ( quote ( ) ) ) ( #t ( cons ( car sentence) ( ZEDgather- verb ( cdr sentence) ) ) ) ( else err) ) ) ( define ( ZEDgr garbage value) ( cond ( #t ( begin ( ZEDdr garbage) value) ) ( else err) ) ) ( define ( ZEDgrr garbage value) ( cond ( #t ( begin ( ZEDdrr garbage) value) ) ( else err) ) ) ( define ( ZEDleading- newline program) ( cond ( ( null? program) ( quote ( ) ) ) ( ( eqv? #\newline ( car program) ) ( cdr program) ) ( #t program) ( else err) ) ) ( define ( ZEDliteral? literal- list ) ( cond ( #t ( eqv? #\" (car literal-list))) (else err))) (define (ZEDmake-ZED ZED-list) (cond ((equal? ZED-list (list #\e #\r #\r )) " 'err") ((equal? ZED-list (list #\n #\i #\l )) " '( ) ") ((equal? ZED-list (list #\a #\n #\d )) " and ") ((equal? ZED-list (list #\o #\r )) " or ") ((equal? ZED-list (list #\q #\u #\o #\t #\e )) " quote ") ((equal? ZED-list (list #\s #\e )) " begin ") (#t (list->string (append (list #\Z #\E #\D ) ZED-list))) (else err))) (define (ZEDmake-character noun-list) (cond (#t (list->string (cons #\# (cons #\\ (cdr noun-list))))) (else err))) (define (ZEDmake-exact exact-list) (cond (#t (list->string (append (list #\# #\e ) exact-list))) (else err))) (define (ZEDmake-literal literal-list) (cond (#t (list->string (cdr (reverse (cdr (reverse literal-list)))))) (else err))) (define (ZEDmake-number-character noun-list) (cond (#t (list->string (list #\# #\\ (integer->char (string->number (list->string (cddr noun-list))))))) (else err))) (define (ZEDmap-with! function list extra collect) (cond ((null? list) collect) (#t (ZEDmap-with! function (cdr list) extra (cons (function (car list) extra) collect))) (else err))) (define (ZEDmap-with function list extra) (cond (#t (reverse (ZEDmap-with! function list extra (quote ())))) (else err))) (define (ZEDmerge! comparator list1 list2 collect) (cond ((null? list2) (append (reverse collect) list1)) ((null? list1) (append (reverse collect) list2)) ((comparator (car list2) (car list1)) (ZEDmerge! comparator list1 (cdr list2) (cons (car list2) collect))) (#t (ZEDmerge! comparator (cdr list1) list2 (cons (car list1) collect))) (else err))) (define (ZEDmerge comparator list1 list2) (cond (#t (ZEDmerge! comparator list1 list2 (quote ()))) (else err))) (define (ZEDmp function list) (cond ((null? list) (quote ())) ((pair? list) (cons (delay (function (if (promise? (car list)) (force (car list)) (car list)))) (delay (ZEDmp function (if (promise? (cdr list)) (force (cdr list)) (cdr list)))))) (#t (function list)) (else err))) (define (ZEDnewline-space! program) (cond (#t (cons #\n ewline (ZEDnewline-space!a program))) (else err))) (define (ZEDnewline-space!a program) (cond (#t (ZEDnewline-space!aa program (reverse (ZEDnewline-space!ab program (quote ()))))) (else err))) (define (ZEDnewline-space!aa program transformed) (cond ((equal? program transformed) program) (#t (ZEDnewline-space!a transformed)) (else err))) (define (ZEDnewline-space!ab program collect) (cond ((null? program) collect) ((null? (cdr program)) (cons (car program) collect)) ((and (eqv? #\n ewline (car program)) (or (eqv? #\s pace (cadr program)) (eqv? #\h t (cadr program)))) (ZEDnewline-space!ab (cdr program) collect)) (#t (ZEDnewline-space!ab (cdr program) (cons (car program) collect))) (else err))) (define (ZEDnewline-space program) (cond (#t (ZEDnewline-space! program)) (else err))) (define (ZEDnewline-space-tab-repeats! program collect) (cond ((or (null? program) (null? (cdr program))) (append program collect)) ((and (eqv? #\n ewline (car program)) (eqv? #\n ewline (cadr program))) (ZEDnewline-space-tab-repeats! (cdr program) collect)) ((and (or (eqv? #\s pace (car program)) (eqv? #\h t (car program))) (or (eqv? #\s pace (cadr program)) (eqv? #\h t (cadr program)))) (ZEDnewline-space-tab-repeats! (cdr program) collect)) (#t (ZEDnewline-space-tab-repeats! (cdr program) (cons (car program) collect))) (else err))) (define (ZEDnewline-space-tab-repeats program) (cond (#t (reverse (ZEDnewline-space-tab-repeats! program (quote ())))) (else err))) (define (ZEDnewlines clauses) (cond (#t (ZEDadd-between-ra (ZEDmap-with ZEDadd-between-ra clauses (list #\n ewline)) (list (list #\n ewline #\n ewline)))) (else err))) (define (ZEDnormal-character? noun-list) (cond (#t (eqv? (car noun-list) #\# )) (else err))) (define (ZEDnot ZEDvalue) (cond (#t (not ZEDvalue)) (else err))) (define (ZEDnot-return? character) (cond (#t (not (eqv? #\c r character))) (else err))) (define (ZEDnoun! noun-list number?) (cond (number? (ZEDmake-exact noun-list)) ((ZEDliteral? noun-list) (ZEDmake-literal noun-list)) ((ZEDtrue? noun-list) " #t") ((ZEDfalse? noun-list) " #f") ((ZEDnumber-character? noun-list) (ZEDmake-number-character noun-list)) ((ZEDnormal-character? noun-list) (ZEDmake-character noun-list)) (#t (ZEDmake-ZED noun-list)) (else err))) (define (ZEDnoun noun-list) (cond (#t (ZEDnoun! noun-list (string->number (list->string noun-list)))) (else err))) (define (ZEDnull? ZEDvalue) (cond (#t (null? ZEDvalue)) (else err))) (define (ZEDnumber-character? noun-list) (cond (#t (and (eqv? (car noun-list) #\# ) (eqv? (cadr noun-list) #\0 ) (not (null? (cddr noun-list))))) (else err))) (define (ZEDpair? ZEDvalue) (cond (#t (pair? ZEDvalue)) (else err))) (define (ZEDpop stack) (cond (#t (cdr stack)) (else err))) (define (ZEDpr! value output-string) (cond (#t (begin (display (ZEDpr!a value (quote ())) output-string) (ZEDpr!b output-string (get-output-string output-string)))) (else err))) (define (ZEDpr!a value collect) (cond ((char? value) (ZEDpr!aa (list->string (list #\# value)) collect)) ((string? value) (ZEDpr!aa (string-append " \"" value "\" " ) collect) ) ( ( symbol? value) ( ZEDpr! aa ( symbol-> string value) collect) ) ( ( number? value) ( ZEDpr! aa ( number-> string value) collect) ) ( ( and ( boolean? value) value) ( ZEDpr! aa "#true" collect) ) ( ( boolean? value) ( ZEDpr! aa "#false" collect) ) ( ( null? value) ( reverse collect) ) ( #t ( ZEDpr! a ( if ( promise? ( cdr value) ) ( force ( cdr value) ) ( cdr value) ) ( cons ( ZEDpr! a ( if ( promise? ( car value) ) ( force ( car value) ) ( car value) ) ( quote ( ) ) ) collect) ) ) ( else err) ) ) ( define ( ZEDpr! aa string collect) ( cond ( ( null? collect) string ) ( #t ( reverse ( cons string ( cons "." collect) ) ) ) ( else err) ) ) ( define ( ZEDpr! b output- string value) ( cond ( #t ( begin ( close-output-port output- string ) value) ) ( else err) ) ) ( define ( ZEDpr value) ( cond ( #t ( ZEDpr! value ( open- output- string ) ) ) ( else err) ) ) ( define ( ZEDprogramize program arity- hash) ( cond ( #t ( cons ( quote begin ) ( ZEDmap- with ZEDfunctionize program arity- hash) ) ) ( else err) ) ) ( define ( ZEDpush object stack) ( cond ( #t ( cons object stack) ) ( else err) ) ) ( define ( ZEDrd! function list ) ( cond ( ( null? ( if ( promise? ( cdr list ) ) ( force ( cdr list ) ) ( cdr list ) ) ) ( if ( promise? ( car list ) ) ( force ( car list ) ) ( car list ) ) ) ( #t ( ZEDrd! function ( cons ( function ( if ( promise? ( car ( if ( promise? ( cdr list ) ) ( force ( cdr list ) ) ( cdr list ) ) ) ) ( force ( car ( if ( promise? ( cdr list ) ) ( force ( cdr list ) ) ( cdr list ) ) ) ) ( car ( if ( promise? ( cdr list ) ) ( force ( cdr list ) ) ( cdr list ) ) ) ) ( if ( promise? ( car list ) ) ( force ( car list ) ) ( car list ) ) ) ( if ( promise? ( cdr ( if ( promise? ( cdr list ) ) ( force ( cdr list ) ) ( cdr list ) ) ) ) ( force ( cdr ( if ( promise? ( cdr list ) ) ( force ( cdr list ) ) ( cdr list ) ) ) ) ( cdr ( if ( promise? ( cdr list ) ) ( force ( cdr list ) ) ( cdr list ) ) ) ) ) ) ) ( else err) ) ) ( define ( ZEDrd final function list ) ( cond ( #t ( ZEDrd! function ( cons final ( reverse list ) ) ) ) ( else err) ) ) ( define ( ZEDread- all! collect) ( cond ( #t ( ZEDread- all! a ( read-char ) collect) ) ( else err) ) ) ( define ( ZEDread- all! a character collect) ( cond ( ( eof-object? character) collect) ( #t ( ZEDread- all! ( cons character collect) ) ) ( else err) ) ) ( define ( ZEDread- all) ( cond ( #t ( reverse ( ZEDread- all! ( quote ( ) ) ) ) ) ( else err) ) ) ( define ( ZEDread- sentence! a sentence collect) ( cond ( ( null? sentence) collect) ( ( eqv? #\space ( car sentence) ) ( ZEDread- sentence! a ( cdr sentence) collect) ) ( ( eqv? #\( ( car sentence) ) ( ZEDread- sentence! aa sentence ( ZEDgather- verb ( cdr sentence) ) collect) ) ( #t ( ZEDread- sentence! ab sentence ( ZEDgather- noun sentence) collect) ) ( else err) ) ) ( define ( ZEDread- sentence! aa sentence gather- verb collect) ( cond ( #t ( ZEDread- sentence! a ( ZEDtails ( + 2 ( length gather- verb) ) sentence) ( cons ( ZEDverb gather- verb) collect) ) ) ( else err) ) ) ( define ( ZEDread- sentence! ab sentence gather- noun collect) ( cond ( #t ( ZEDread- sentence! a ( ZEDtails ( length gather- noun) sentence) ( cons ( ZEDnoun gather- noun) collect) ) ) ( else err) ) ) ( define ( ZEDread- sentence! b list output- string ) ( cond ( #t ( begin ( display list output- string ) ( ZEDread- sentence! ba output- string ( get- output- string output- string ) ) ) ) ( else err) ) ) ( define ( ZEDread- sentence! ba output- string get- output- string ) ( cond ( #t ( begin ( close-output-port output- string ) ( ZEDread- sentence! baa ( open- input- string get- output- string ) ) ) ) ( else err) ) ) ( define ( ZEDread- sentence! baa input- string ) ( cond ( #t ( ZEDread- sentence! baaa input- string ( read input- string ) ) ) ( else err) ) ) ( define ( ZEDread- sentence! baaa input- string answer) ( cond ( #t ( begin ( close-input-port input- string ) answer) ) ( else err) ) ) ( define ( ZEDread- sentence sentence) ( cond ( #t ( ZEDread- sentence! b ( reverse ( ZEDread- sentence! a sentence ( quote ( ) ) ) ) ( open- output- string ) ) ) ( else err) ) ) ( define ( ZEDread- sentences sentences) ( cond ( #t ( map ZEDread- sentence sentences) ) ( else err) ) ) ( define ( ZEDready- clause clause) ( cond ( #t ( cons ( caaar clause) ( cons ( cdar clause) ( cdr clause) ) ) ) ( else err) ) ) ( define ( ZEDready- program program) ( cond ( #t ( map ZEDready- clause program) ) ( else err) ) ) ( define ( ZEDreplace- trailing- white- space! program) ( cond ( ( null? program) ( quote ( ) ) ) ( ( or ( eqv? ( car program) #\space) ( eqv? ( car program) #\ht) ( eqv? ( car program) #\cr) ( eqv? ( car program) #\newline ) ) ( ZEDreplace- trailing- white- space! ( cdr program) ) ) ( #t ( cons #\newline program) ) ( else err) ) ) ( define ( ZEDreplace- trailing- white- space program) ( cond ( #t ( reverse ( ZEDreplace- trailing- white- space! ( reverse program) ) ) ) ( else err) ) ) ( define ( ZEDreverse ZEDlist) ( cond ( #t ( reverse ZEDlist) ) ( else err) ) ) ( define ( ZEDschemefy! expression arity- hash stack) ( cond ( ( null? expression) ( ZEDtop stack) ) ( ( ZEDapplication? expression) ( ZEDschemefy! a expression arity- hash stack ( ZEDfunction expression) ) ) ( #t ( ZEDschemefy! ( cdr expression) arity- hash ( ZEDpush ( car expression) stack) ) ) ( else err) ) ) ( define ( ZEDschemefy! a expression arity- hash stack function) ( cond ( #t ( ZEDschemefy! aa expression arity- hash stack function ( ZEDarity arity- hash function) ) ) ( else err) ) ) ( define ( ZEDschemefy! aa expression arity- hash stack function arity) ( cond ( ( ZEDgather- count? function) ( ZEDschemefy! ( cdr expression) arity- hash ( ZEDpush ( ZEDfirst arity stack) ( ZEDtails arity stack) ) ) ) ( ( eq? function ( quote ZED1) ) ( ZEDschemefy! ( cdr expression) arity- hash ( ZEDpush ( list ( quote if ) ( list ( quote promise?) ( cons ( quote car ) ( ZEDfirst arity stack) ) ) ( list ( quote force ) ( cons ( quote car ) ( ZEDfirst arity stack) ) ) ( cons ( quote car ) ( ZEDfirst arity stack) ) ) ( ZEDtails arity stack) ) ) ) ( ( eq? function ( quote ZED! ) ) ( ZEDschemefy! ( cdr expression) arity- hash ( ZEDpush ( list ( quote if ) ( list ( quote promise?) ( cons ( quote cdr ) ( ZEDfirst arity stack) ) ) ( list ( quote force ) ( cons ( quote cdr ) ( ZEDfirst arity stack) ) ) ( cons ( quote cdr ) ( ZEDfirst arity stack) ) ) ( ZEDtails arity stack) ) ) ) ( ( eq? function ( quote ZEDc) ) ( ZEDschemefy! ( cdr expression) arity- hash ( ZEDpush ( cons ( quote cons ) ( map ZEDdelay- wrap ( ZEDfirst arity stack) ) ) ( ZEDtails arity stack) ) ) ) ( #t ( ZEDschemefy! ( cdr expression) arity- hash ( ZEDpush ( cons function ( ZEDfirst arity stack) ) ( ZEDtails arity stack) ) ) ) ( else err) ) ) ( define ( ZEDschemefy expression arity- hash) ( cond ( #t ( list ( ZEDschemefy! ( reverse expression) arity- hash ( ZEDstack) ) ) ) ( else err) ) ) ( define ( ZEDsentence- less? sentence1 sentence2) ( cond ( ( null? sentence2) #f) ( ( null? sentence1) #t) ( ( ZEDcharacter- less? ( car sentence1) ( car sentence2) ) #t) ( ( ZEDcharacter- less? ( car sentence2) ( car sentence1) ) #f) ( #t ( ZEDsentence- less? ( cdr sentence1) ( cdr sentence2) ) ) ( else err) ) ) ( define ( ZEDsentences! program collect1 collect2) ( cond ( ( null? program) collect2) ( ( eqv? #\newline ( car program) ) ( ZEDsentences! ( cdr program) ( quote ( ) ) ( cons ( reverse collect1) collect2) ) ) ( #t ( ZEDsentences! ( cdr program) ( cons ( car program) collect1) collect2) ) ( else err) ) ) ( define ( ZEDsentences program) ( cond ( #t ( reverse ( ZEDsentences! program ( quote ( ) ) ( quote ( ) ) ) ) ) ( else err) ) ) ( define ( ZEDsort! a jumble) ( cond ( #t ( map list jumble) ) ( else err) ) ) ( define ( ZEDsort! b comparator jumble) ( cond ( ( null? jumble) ( quote ( ) ) ) ( ( null? ( cdr jumble) ) jumble) ( #t ( ZEDsort! b comparator ( cons ( ZEDmerge comparator ( car jumble) ( cadr jumble) ) ( ZEDsort! b comparator ( cddr jumble) ) ) ) ) ( else err) ) ) ( define ( ZEDsort comparator jumble) ( cond ( #t ( car ( ZEDsort! b comparator ( ZEDsort! a jumble) ) ) ) ( else err) ) ) ( define ( ZEDspace- newline ! program collect) ( cond ( ( or ( null? program) ( null? ( cdr program) ) ) ( append program collect) ) ( ( and ( eqv? #\space ( car program) ) ( eqv? #\newline ( cadr program) ) ) ( ZEDspace- newline ! ( cdr program) collect) ) ( #t ( ZEDspace- newline ! ( cdr program) ( cons ( car program) collect) ) ) ( else err) ) ) ( define ( ZEDspace- newline program) ( cond ( #t ( reverse ( ZEDspace- newline ! program ( quote ( ) ) ) ) ) ( else err) ) ) ( define ( ZEDstack) ( cond ( #t ( quote ( ) ) ) ( else err) ) ) ( define ( ZEDtab- replace! program collect) ( cond ( ( null? program) collect) ( ( eqv? #\ht ( car program) ) ( ZEDtab- replace! ( cdr program) ( cons #\space collect) ) ) ( #t ( ZEDtab- replace! ( cdr program) ( cons ( car program) collect) ) ) ( else err) ) ) ( define ( ZEDtab- replace program) ( cond ( #t ( reverse ( ZEDtab- replace! program ( quote ( ) ) ) ) ) ( else err) ) ) ( define ( ZEDtails number list ) ( cond ( ( null? list ) ( quote ( ) ) ) ( ( zero? number) list ) ( ( > number 0 ) ( ZEDtails ( - number 1 ) ( cdr list ) ) ) ( else err) ) ) ( define ( ZEDtop stack) ( cond ( #t ( car stack) ) ( else err) ) ) ( define ( ZEDtrue? noun- list ) ( cond ( #t ( equal? noun- list ( list #\# #\t #\r #\u #\e ) ) ) ( else err) ) ) ( define ( ZEDverb verb- list ) ( cond ( ( ZEDliteral? verb- list ) ( list ( ZEDmake- literal verb- list ) ) ) ( #t ( list ( ZEDmake- ZED verb- list ) ) ) ( else err) ) ) ( define ( ZEDwrite- all program) ( cond ( ( null? program) ( quote err) ) ( #t ( ZEDwrite- all ( begin ( write-char ( car program) ) ( cdr program) ) ) ) ( else err) ) ) ( define ( ZEDzed-> scheme! value collect) ( cond ( ( null? value) ( reverse collect) ) ( #t ( ZEDzed-> scheme! ( if ( promise? ( cdr value) ) ( force ( cdr value) ) ( cdr value) ) ( cons ( ZEDzed-> scheme ( if ( promise? ( car value) ) ( force ( car value) ) ( car value) ) ) collect) ) ) ( else err) ) ) ( define ( ZEDzed-> scheme value) ( cond ( ( not ( pair? value) ) value) ( #t ( ZEDzed-> scheme! value ( quote ( ) ) ) ) ( else err) ) ) )
( ZEDcomp)
KGJlZ2luIChkZWZpbmUgKFpFRCogWkVEbnVtYmVyMSBaRURudW1iZXIyKSAoY29uZCAoI3QgKCogWkVEbnVtYmVyMSBaRURudW1iZXIyKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRCsgWkVEbnVtYmVyMSBaRURudW1iZXIyKSAoY29uZCAoI3QgKCsgWkVEbnVtYmVyMSBaRURudW1iZXIyKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRC0gWkVEbnVtYmVyMSBaRURudW1iZXIyKSAoY29uZCAoI3QgKC0gWkVEbnVtYmVyMSBaRURudW1iZXIyKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRC8gWkVEbnVtYmVyMSBaRURudW1iZXIyKSAoY29uZCAoI3QgKC8gWkVEbnVtYmVyMSBaRURudW1iZXIyKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRD0gdmFsdWUxIHZhbHVlMikgKGNvbmQgKCN0IChlcXY/IHZhbHVlMSB2YWx1ZTIpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEYWRkLWJldHdlZW4hIGl0ZW0gbGlzdCBjb2xsZWN0KSAoY29uZCAoKG51bGw/IGxpc3QpIGNvbGxlY3QpICgobnVsbD8gKGNkciBsaXN0KSkgKGNvbnMgKGNhciBsaXN0KSBjb2xsZWN0KSkgKCN0IChaRURhZGQtYmV0d2VlbiEgaXRlbSAoY2RyIGxpc3QpIChjb25zIGl0ZW0gKGNvbnMgKGNhciBsaXN0KSBjb2xsZWN0KSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEYWRkLWJldHdlZW4gaXRlbSBsaXN0KSAoY29uZCAoI3QgKHJldmVyc2UgKFpFRGFkZC1iZXR3ZWVuISBpdGVtIGxpc3QgKHF1b3RlICgpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEYWRkLWJldHdlZW4tcmEgbGlzdCBpdGVtKSAoY29uZCAoI3QgKHJldmVyc2UgKFpFRGFkZC1iZXR3ZWVuISBpdGVtIGxpc3QgKHF1b3RlICgpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEYWxwaGEpIChjb25kICgjdCAoWkVEd3JpdGUtYWxsIChaRURyZCAocXVvdGUgKCkpIGFwcGVuZCAoWkVEcmQgKHF1b3RlICgpKSBhcHBlbmQgKFpFRG5ld2xpbmVzIChaRURieS1mb3VyIChaRURmdW5jdGlvbi1zb3J0IChaRURzZW50ZW5jZXMgKFpFRGxlYWRpbmctbmV3bGluZSAoWkVEc3BhY2UtbmV3bGluZSAoWkVEdGFiLXJlcGxhY2UgKFpFRG5ld2xpbmUtc3BhY2UtdGFiLXJlcGVhdHMgKFpFRG5ld2xpbmUtc3BhY2UgKFpFRGZpbHRlciBaRURub3QtcmV0dXJuPyAoWkVEcmVwbGFjZS10cmFpbGluZy13aGl0ZS1zcGFjZSAoWkVEcmVhZC1hbGwpKSkpKSkpKSkpKSkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURhcHBsaWNhdGlvbj8gZXhwcmVzc2lvbikgKGNvbmQgKCN0IChhbmQgKG5vdCAobnVsbD8gZXhwcmVzc2lvbikpIChwYWlyPyAoY2FyIGV4cHJlc3Npb24pKSAobnVsbD8gKGNkYXIgZXhwcmVzc2lvbikpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGFyaXR5IGFyaXR5LWhhc2ggZnVuY3Rpb24pIChjb25kICgjdCAoY2RyIChhc3NvYyBmdW5jdGlvbiBhcml0eS1oYXNoKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURhcml0eS1oYXNoISBjbGF1c2UpIChjb25kICgjdCAoY29ucyAoWkVEY2xhdXNlLW5hbWUgY2xhdXNlKSAoWkVEY2xhdXNlLWFyaXR5IGNsYXVzZSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEYXJpdHktaGFzaCBwcm9ncmFtKSAoY29uZCAoI3QgKGFwcGVuZCAobWFwIFpFRGFyaXR5LWhhc2ghIHByb2dyYW0pIChhcHBlbmQgKGxpc3QgKGNvbnMgKHF1b3RlIFpFRDEpIDEpIChjb25zIChxdW90ZSBaRUQhKSAxKSAoY29ucyAocXVvdGUgWkVEMDAxKSAxKSAoY29ucyAocXVvdGUgb3IpIDIpIChjb25zIChxdW90ZSBhbmQpIDIpIChjb25zIChxdW90ZSBiZWdpbikgMikgKGNvbnMgKHF1b3RlIFpFRGMpIDIpIChjb25zIChxdW90ZSBxdW90ZSkgMSkpIChsaXN0IChjb25zIChxdW90ZSBaRUQwMDIpIDIpIChjb25zIChxdW90ZSBaRUQwMDMpIDMpIChjb25zIChxdW90ZSBaRUQwMDQpIDQpIChjb25zIChxdW90ZSBaRUQwMDUpIDUpIChjb25zIChxdW90ZSBaRUQwMDYpIDYpIChjb25zIChxdW90ZSBaRUQwMDcpIDcpIChjb25zIChxdW90ZSBaRUQwMDgpIDgpIChjb25zIChxdW90ZSBaRUQwMDkpIDkpIChjb25zIChxdW90ZSBaRUQwMTApIDEwKSAoY29ucyAocXVvdGUgWkVEMDExKSAxMSkgKGNvbnMgKHF1b3RlIFpFRDAxMikgMTIpIChjb25zIChxdW90ZSBaRUQwMTMpIDEzKSAoY29ucyAocXVvdGUgWkVEMDE0KSAxNCkgKGNvbnMgKHF1b3RlIFpFRDAxNSkgMTUpIChjb25zIChxdW90ZSBaRUQwMTYpIDE2KSAoY29ucyAocXVvdGUgWkVEMDE3KSAxNykgKGNvbnMgKHF1b3RlIFpFRDAxOCkgMTgpIChjb25zIChxdW90ZSBaRUQwMTkpIDE5KSAoY29ucyAocXVvdGUgWkVEMDIwKSAyMCkgKGNvbnMgKHF1b3RlIFpFRDAyMSkgMjEpIChjb25zIChxdW90ZSBaRUQwMjIpIDIyKSAoY29ucyAocXVvdGUgWkVEMDIzKSAyMykgKGNvbnMgKHF1b3RlIFpFRDAyNCkgMjQpIChjb25zIChxdW90ZSBaRUQwMjUpIDI1KSAoY29ucyAocXVvdGUgWkVEMDI2KSAyNikgKGNvbnMgKHF1b3RlIFpFRDAyNykgMjcpIChjb25zIChxdW90ZSBaRUQwMjgpIDI4KSAoY29ucyAocXVvdGUgWkVEMDI5KSAyOSkgKGNvbnMgKHF1b3RlIFpFRDAzMCkgMzApIChjb25zIChxdW90ZSBaRUQwMzEpIDMxKSAoY29ucyAocXVvdGUgWkVEMDMyKSAzMikgKGNvbnMgKHF1b3RlIFpFRDAzMykgMzMpIChjb25zIChxdW90ZSBaRUQwMzQpIDM0KSAoY29ucyAocXVvdGUgWkVEMDM1KSAzNSkgKGNvbnMgKHF1b3RlIFpFRDAzNikgMzYpIChjb25zIChxdW90ZSBaRUQwMzcpIDM3KSAoY29ucyAocXVvdGUgWkVEMDM4KSAzOCkgKGNvbnMgKHF1b3RlIFpFRDAzOSkgMzkpIChjb25zIChxdW90ZSBaRUQwNDApIDQwKSAoY29ucyAocXVvdGUgWkVEMDQxKSA0MSkgKGNvbnMgKHF1b3RlIFpFRDA0MikgNDIpIChjb25zIChxdW90ZSBaRUQwNDMpIDQzKSAoY29ucyAocXVvdGUgWkVEMDQ0KSA0NCkgKGNvbnMgKHF1b3RlIFpFRDA0NSkgNDUpIChjb25zIChxdW90ZSBaRUQwNDYpIDQ2KSAoY29ucyAocXVvdGUgWkVEMDQ3KSA0NykgKGNvbnMgKHF1b3RlIFpFRDA0OCkgNDgpIChjb25zIChxdW90ZSBaRUQwNDkpIDQ5KSAoY29ucyAocXVvdGUgWkVEMDUwKSA1MCkgKGNvbnMgKHF1b3RlIFpFRDA1MSkgNTEpIChjb25zIChxdW90ZSBaRUQwNTIpIDUyKSAoY29ucyAocXVvdGUgWkVEMDUzKSA1MykgKGNvbnMgKHF1b3RlIFpFRDA1NCkgNTQpIChjb25zIChxdW90ZSBaRUQwNTUpIDU1KSAoY29ucyAocXVvdGUgWkVEMDU2KSA1NikgKGNvbnMgKHF1b3RlIFpFRDA1NykgNTcpIChjb25zIChxdW90ZSBaRUQwNTgpIDU4KSAoY29ucyAocXVvdGUgWkVEMDU5KSA1OSkgKGNvbnMgKHF1b3RlIFpFRDA2MCkgNjApIChjb25zIChxdW90ZSBaRUQwNjEpIDYxKSAoY29ucyAocXVvdGUgWkVEMDYyKSA2MikgKGNvbnMgKHF1b3RlIFpFRDA2MykgNjMpIChjb25zIChxdW90ZSBaRUQwNjQpIDY0KSAoY29ucyAocXVvdGUgWkVEMDY1KSA2NSkgKGNvbnMgKHF1b3RlIFpFRDA2NikgNjYpIChjb25zIChxdW90ZSBaRUQwNjcpIDY3KSAoY29ucyAocXVvdGUgWkVEMDY4KSA2OCkgKGNvbnMgKHF1b3RlIFpFRDA2OSkgNjkpIChjb25zIChxdW90ZSBaRUQwNzApIDcwKSAoY29ucyAocXVvdGUgWkVEMDcxKSA3MSkgKGNvbnMgKHF1b3RlIFpFRDA3MikgNzIpIChjb25zIChxdW90ZSBaRUQwNzMpIDczKSAoY29ucyAocXVvdGUgWkVEMDc0KSA3NCkgKGNvbnMgKHF1b3RlIFpFRDA3NSkgNzUpIChjb25zIChxdW90ZSBaRUQwNzYpIDc2KSAoY29ucyAocXVvdGUgWkVEMDc3KSA3NykgKGNvbnMgKHF1b3RlIFpFRDA3OCkgNzgpIChjb25zIChxdW90ZSBaRUQwNzkpIDc5KSAoY29ucyAocXVvdGUgWkVEMDgwKSA4MCkgKGNvbnMgKHF1b3RlIFpFRDA4MSkgODEpIChjb25zIChxdW90ZSBaRUQwODIpIDgyKSAoY29ucyAocXVvdGUgWkVEMDgzKSA4MykgKGNvbnMgKHF1b3RlIFpFRDA4NCkgODQpIChjb25zIChxdW90ZSBaRUQwODUpIDg1KSAoY29ucyAocXVvdGUgWkVEMDg2KSA4NikgKGNvbnMgKHF1b3RlIFpFRDA4NykgODcpIChjb25zIChxdW90ZSBaRUQwODgpIDg4KSAoY29ucyAocXVvdGUgWkVEMDg5KSA4OSkgKGNvbnMgKHF1b3RlIFpFRDA5MCkgOTApIChjb25zIChxdW90ZSBaRUQwOTEpIDkxKSAoY29ucyAocXVvdGUgWkVEMDkyKSA5MikgKGNvbnMgKHF1b3RlIFpFRDA5MykgOTMpIChjb25zIChxdW90ZSBaRUQwOTQpIDk0KSAoY29ucyAocXVvdGUgWkVEMDk1KSA5NSkgKGNvbnMgKHF1b3RlIFpFRDA5NikgOTYpIChjb25zIChxdW90ZSBaRUQwOTcpIDk3KSAoY29ucyAocXVvdGUgWkVEMDk4KSA5OCkgKGNvbnMgKHF1b3RlIFpFRDA5OSkgOTkpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEYnktZm91ciEgc2VudGVuY2VzIGNvbGxlY3QpIChjb25kICgobnVsbD8gc2VudGVuY2VzKSBjb2xsZWN0KSAoI3QgKFpFRGJ5LWZvdXIhIChjZGRkZHIgc2VudGVuY2VzKSAoY29ucyAobGlzdCAoY2FyIHNlbnRlbmNlcykgKGNhZHIgc2VudGVuY2VzKSAoY2FkZHIgc2VudGVuY2VzKSAoY2FkZGRyIHNlbnRlbmNlcykpIGNvbGxlY3QpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGJ5LWZvdXIgc2VudGVuY2VzKSAoY29uZCAoI3QgKHJldmVyc2UgKFpFRGJ5LWZvdXIhIHNlbnRlbmNlcyAocXVvdGUgKCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURieS10aHJlZSEgc2VudGVuY2VzIGNvbGxlY3QpIChjb25kICgobnVsbD8gc2VudGVuY2VzKSBjb2xsZWN0KSAoI3QgKFpFRGJ5LXRocmVlISAoY2RkZHIgc2VudGVuY2VzKSAoY29ucyAobGlzdCAoY2FyIHNlbnRlbmNlcykgKGNhZHIgc2VudGVuY2VzKSAoY2FkZHIgc2VudGVuY2VzKSkgY29sbGVjdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEYnktdGhyZWUgc2VudGVuY2VzKSAoY29uZCAoI3QgKHJldmVyc2UgKFpFRGJ5LXRocmVlISBzZW50ZW5jZXMgKHF1b3RlICgpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY2hhcmFjdGVyLWxlc3M/IGNoYXJhY3RlcjEgY2hhcmFjdGVyMikgKGNvbmQgKCN0ICg8IChjaGFyLT5pbnRlZ2VyIGNoYXJhY3RlcjEpIChjaGFyLT5pbnRlZ2VyIGNoYXJhY3RlcjIpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNsYXVzZS1hcmd1bWVudHMgY2xhdXNlKSAoY29uZCAoI3QgKGNhZHIgY2xhdXNlKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNsYXVzZS1hcmd1bWVudHMtYWdyZWUgY2xhdXNlMSBjbGF1c2UyKSAoY29uZCAoKGVxdWFsPyAoWkVEY2xhdXNlLWFyZ3VtZW50cyBjbGF1c2UxKSAoWkVEY2xhdXNlLWFyZ3VtZW50cyBjbGF1c2UyKSkgKFpFRGNsYXVzZS1hcmd1bWVudHMgY2xhdXNlMSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjbGF1c2UtYXJpdHkgY2xhdXNlKSAoY29uZCAoI3QgKGxlbmd0aCAoWkVEY2xhdXNlLWFyZ3VtZW50cyBjbGF1c2UpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNsYXVzZS1ib2R5IGNsYXVzZSkgKGNvbmQgKCN0IChjZGRyIGNsYXVzZSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjbGF1c2UtbGVzcz8gY2xhdXNlMSBjbGF1c2UyKSAoY29uZCAoI3QgKFpFRHNlbnRlbmNlLWxlc3M/IChjYXIgY2xhdXNlMSkgKGNhciBjbGF1c2UyKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjbGF1c2UtbmFtZSBjbGF1c2UpIChjb25kICgjdCAoY2FyIGNsYXVzZSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjbGF1c2UtbmFtZS1hZ3JlZSBjbGF1c2UxIGNsYXVzZTIpIChjb25kICgoZXE/IChaRURjbGF1c2UtbmFtZSBjbGF1c2UxKSAoWkVEY2xhdXNlLW5hbWUgY2xhdXNlMikpIChaRURjbGF1c2UtbmFtZSBjbGF1c2UxKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNvbWJpbmUtYWxsISBwcm9ncmFtIGNvbGxlY3QpIChjb25kICgobnVsbD8gcHJvZ3JhbSkgY29sbGVjdCkgKChudWxsPyAoY2RyIHByb2dyYW0pKSAoY29ucyAoY2FyIHByb2dyYW0pIGNvbGxlY3QpKSAoKGVxPyAoWkVEY2xhdXNlLW5hbWUgKGNhciBwcm9ncmFtKSkgKFpFRGNsYXVzZS1uYW1lIChjYWRyIHByb2dyYW0pKSkgKFpFRGNvbWJpbmUtYWxsISAoWkVEY29tYmluZS1oZWFkLWNsYXVzZXMgcHJvZ3JhbSkgY29sbGVjdCkpICgjdCAoWkVEY29tYmluZS1hbGwhIChjZHIgcHJvZ3JhbSkgKGNvbnMgKGNhciBwcm9ncmFtKSBjb2xsZWN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjb21iaW5lLWFsbCBwcm9ncmFtKSAoY29uZCAoI3QgKHJldmVyc2UgKFpFRGNvbWJpbmUtYWxsISBwcm9ncmFtIChxdW90ZSAoKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNvbWJpbmUtY2xhdXNlcyBjbGF1c2UxIGNsYXVzZTIpIChjb25kICgjdCAoY29ucyAoWkVEY2xhdXNlLW5hbWUtYWdyZWUgY2xhdXNlMSBjbGF1c2UyKSAoY29ucyAoWkVEY2xhdXNlLWFyZ3VtZW50cy1hZ3JlZSBjbGF1c2UxIGNsYXVzZTIpIChhcHBlbmQgKFpFRGNsYXVzZS1ib2R5IGNsYXVzZTEpIChaRURjbGF1c2UtYm9keSBjbGF1c2UyKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNvbWJpbmUtaGVhZC1jbGF1c2VzIHByb2dyYW0pIChjb25kICgjdCAoY29ucyAoWkVEY29tYmluZS1jbGF1c2VzIChjYXIgcHJvZ3JhbSkgKGNhZHIgcHJvZ3JhbSkpIChjZGRyIHByb2dyYW0pKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNvbWJpbmUtcHJvZ3JhbS1jbGF1c2VzIHByb2dyYW0pIChjb25kICgjdCAoWkVEY29tYmluZS1hbGwgKFpFRHJlYWR5LXByb2dyYW0gcHJvZ3JhbSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY29tcCEpIChjb25kICgjdCAoWkVEY29tcCFhIChaRURjb21iaW5lLXByb2dyYW0tY2xhdXNlcyAoWkVEYnktdGhyZWUgKFpFRHJlYWQtc2VudGVuY2VzIChaRURkaXNjYXJkLWNvbW1lbnRzIChaRURmdW5jdGlvbi1zb3J0IChaRURzZW50ZW5jZXMgKFpFRGxlYWRpbmctbmV3bGluZSAoWkVEc3BhY2UtbmV3bGluZSAoWkVEdGFiLXJlcGxhY2UgKFpFRG5ld2xpbmUtc3BhY2UtdGFiLXJlcGVhdHMgKFpFRG5ld2xpbmUtc3BhY2UgKFpFRGZpbHRlciBaRURub3QtcmV0dXJuPyAoWkVEcmVwbGFjZS10cmFpbGluZy13aGl0ZS1zcGFjZSAoWkVEcmVhZC1hbGwpKSkpKSkpKSkpKSkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjb21wIWEgY29tYmluZWQpIChjb25kICgjdCAoWkVEY29tcCFhYSAoWkVEcHJvZ3JhbWl6ZSBjb21iaW5lZCAoWkVEYXJpdHktaGFzaCBjb21iaW5lZCkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNvbXAhYWEgcHJvZ3JhbWl6ZWQpIChjb25kICgjdCAod3JpdGUgcHJvZ3JhbWl6ZWQpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY29tcCkgKGNvbmQgKCN0IChaRURjb21wISkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjb25kZWZ5ISBleHByZXNzaW9ucyBjb2xsZWN0KSAoY29uZCAoKG51bGw/IGV4cHJlc3Npb25zKSBjb2xsZWN0KSAoI3QgKFpFRGNvbmRlZnkhIChjZGRyIGV4cHJlc3Npb25zKSAoY29ucyAoYXBwZW5kIChjYXIgZXhwcmVzc2lvbnMpIChjYWRyIGV4cHJlc3Npb25zKSkgY29sbGVjdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY29uZGVmeSBleHByZXNzaW9ucykgKGNvbmQgKCN0IChyZXZlcnNlIChaRURjb25kZWZ5ISBleHByZXNzaW9ucyAocXVvdGUgKCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURjb25zIFpFRHZhbHVlMSBaRUR2YWx1ZTIpIChjb25kICgjdCAoY29ucyBaRUR2YWx1ZTEgWkVEdmFsdWUyKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGNvdW50IFpFRG51bWJlcikgKGNvbmQgKCN0IChjb25zIChkZWxheSBaRURudW1iZXIpIChkZWxheSAoWkVEY291bnQgKFpFRCsgWkVEbnVtYmVyIDEpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY291bnQtYnkgWkVEc3RlcCBaRURudW1iZXIpIChjb25kICgjdCAoY29ucyAoZGVsYXkgWkVEbnVtYmVyKSAoZGVsYXkgKFpFRGNvdW50LWJ5IFpFRHN0ZXAgKFpFRCsgWkVEbnVtYmVyIFpFRHN0ZXApKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZGVsYXktd3JhcCBleHByZXNzaW9uKSAoY29uZCAoI3QgKGxpc3QgKHF1b3RlIGRlbGF5KSBleHByZXNzaW9uKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGRpZ2l0PyBjaGFyYWN0ZXIpIChjb25kICgjdCAob3IgKGVxdj8gI1wwIGNoYXJhY3RlcikgKGVxdj8gI1wxIGNoYXJhY3RlcikgKGVxdj8gI1wyIGNoYXJhY3RlcikgKGVxdj8gI1wzIGNoYXJhY3RlcikgKGVxdj8gI1w0IGNoYXJhY3RlcikgKGVxdj8gI1w1IGNoYXJhY3RlcikgKGVxdj8gI1w2IGNoYXJhY3RlcikgKGVxdj8gI1w3IGNoYXJhY3RlcikgKGVxdj8gI1w4IGNoYXJhY3RlcikgKGVxdj8gI1w5IGNoYXJhY3RlcikpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZGlzY2FyZC1jb21tZW50cyEgcHJvZ3JhbSBjb2xsZWN0KSAoY29uZCAoKG51bGw/IHByb2dyYW0pIGNvbGxlY3QpICgjdCAoWkVEZGlzY2FyZC1jb21tZW50cyEgKGNkZGRkciBwcm9ncmFtKSAoY29ucyAoY2FkZGRyIHByb2dyYW0pIChjb25zIChjYWRkciBwcm9ncmFtKSAoY29ucyAoY2FyIHByb2dyYW0pIGNvbGxlY3QpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZGlzY2FyZC1jb21tZW50cyBwcm9ncmFtKSAoY29uZCAoI3QgKHJldmVyc2UgKFpFRGRpc2NhcmQtY29tbWVudHMhIHByb2dyYW0gKHF1b3RlICgpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZHIhIHZhbHVlKSAoY29uZCAoKHBhaXI/IHZhbHVlKSAoWkVEbXAgWkVEZHIhIChaRURmaXJzdCA2NCB2YWx1ZSkpKSAoI3QgdmFsdWUpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURkciB2YWx1ZSkgKGNvbmQgKCN0IChiZWdpbiAoZGlzcGxheSAoWkVEcHIgKFpFRGRyISB2YWx1ZSkpKSAobmV3bGluZSkgKG5ld2xpbmUpIHZhbHVlKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGRyciB2YWx1ZSkgKGNvbmQgKCN0IChiZWdpbiAoZGlzcGxheSAoWkVEcHIgdmFsdWUpKSAobmV3bGluZSkgKG5ld2xpbmUpIHZhbHVlKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGZhbHNlPyBub3VuLWxpc3QpIChjb25kICgjdCAoZXF1YWw/IG5vdW4tbGlzdCAobGlzdCAjXCMgI1xmICNcYSAjXGwgI1xzICNcZSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZmkgZnVuY3Rpb24gbGlzdCkgKGNvbmQgKChudWxsPyBsaXN0KSAocXVvdGUgKCkpKSAoKGZ1bmN0aW9uIChpZiAocHJvbWlzZT8gKGNhciBsaXN0KSkgKGZvcmNlIChjYXIgbGlzdCkpIChjYXIgbGlzdCkpKSAoY29ucyAoZGVsYXkgKGlmIChwcm9taXNlPyAoY2FyIGxpc3QpKSAoZm9yY2UgKGNhciBsaXN0KSkgKGNhciBsaXN0KSkpIChkZWxheSAoWkVEZmkgZnVuY3Rpb24gKGlmIChwcm9taXNlPyAoY2RyIGxpc3QpKSAoZm9yY2UgKGNkciBsaXN0KSkgKGNkciBsaXN0KSkpKSkpICgjdCAoWkVEZmkgZnVuY3Rpb24gKGlmIChwcm9taXNlPyAoY2RyIGxpc3QpKSAoZm9yY2UgKGNkciBsaXN0KSkgKGNkciBsaXN0KSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZmlsdGVyISBwcmVkaWNhdGUgbGlzdCBjb2xsZWN0KSAoY29uZCAoKG51bGw/IGxpc3QpIGNvbGxlY3QpICgocHJlZGljYXRlIChjYXIgbGlzdCkpIChaRURmaWx0ZXIhIHByZWRpY2F0ZSAoY2RyIGxpc3QpIChjb25zIChjYXIgbGlzdCkgY29sbGVjdCkpKSAoI3QgKFpFRGZpbHRlciEgcHJlZGljYXRlIChjZHIgbGlzdCkgY29sbGVjdCkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURmaWx0ZXIgcHJlZGljYXRlIGxpc3QpIChjb25kICgjdCAocmV2ZXJzZSAoWkVEZmlsdGVyISBwcmVkaWNhdGUgbGlzdCAocXVvdGUgKCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURmaXJzdCEgaW50ZWdlciBsaXN0IGNvbGxlY3QpIChjb25kICgob3IgKHplcm8/IGludGVnZXIpIChudWxsPyBsaXN0KSkgKHJldmVyc2UgY29sbGVjdCkpICgobm90IChwYWlyPyBsaXN0KSkgKHJldmVyc2UgKGNvbnMgbGlzdCBjb2xsZWN0KSkpICgoPiBpbnRlZ2VyIDApIChaRURmaXJzdCEgKC0gaW50ZWdlciAxKSAoaWYgKHByb21pc2U/IChjZHIgbGlzdCkpIChmb3JjZSAoY2RyIGxpc3QpKSAoY2RyIGxpc3QpKSAoY29ucyAoaWYgKHByb21pc2U/IChjYXIgbGlzdCkpIChmb3JjZSAoY2FyIGxpc3QpKSAoY2FyIGxpc3QpKSBjb2xsZWN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURmaXJzdCBpbnRlZ2VyIGxpc3QpIChjb25kICgobm90IChwYWlyPyBsaXN0KSkgbGlzdCkgKCN0IChaRURmaXJzdCEgaW50ZWdlciBsaXN0IChxdW90ZSAoKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZmxhdHRlbiEgWkVEbGlzdCBaRURzdWItbGlzdC1mb3VuZD8gWkVEY29sbGVjdCkgKGNvbmQgKChhbmQgKFpFRG51bGw/IFpFRGxpc3QpIChaRURub3QgWkVEc3ViLWxpc3QtZm91bmQ/KSkgKFpFRHJldmVyc2UgWkVEY29sbGVjdCkpICgoWkVEbnVsbD8gWkVEbGlzdCkgKFpFRGZsYXR0ZW4hIChaRURyZXZlcnNlIFpFRGNvbGxlY3QpICNmIChxdW90ZSAoKSkpKSAoKFpFRG5vdCAoWkVEcGFpcj8gWkVEbGlzdCkpIChaRURmbGF0dGVuISAocXVvdGUgKCkpIFpFRHN1Yi1saXN0LWZvdW5kPyAoWkVEY29ucyBaRURsaXN0IFpFRGNvbGxlY3QpKSkgKChaRURwYWlyPyAoaWYgKHByb21pc2U/IChjYXIgWkVEbGlzdCkpIChmb3JjZSAoY2FyIFpFRGxpc3QpKSAoY2FyIFpFRGxpc3QpKSkgKFpFRGZsYXR0ZW4hIChpZiAocHJvbWlzZT8gKGNkciBaRURsaXN0KSkgKGZvcmNlIChjZHIgWkVEbGlzdCkpIChjZHIgWkVEbGlzdCkpICN0IChaRURjb25zIChpZiAocHJvbWlzZT8gKGNkciAoaWYgKHByb21pc2U/IChjYXIgWkVEbGlzdCkpIChmb3JjZSAoY2FyIFpFRGxpc3QpKSAoY2FyIFpFRGxpc3QpKSkpIChmb3JjZSAoY2RyIChpZiAocHJvbWlzZT8gKGNhciBaRURsaXN0KSkgKGZvcmNlIChjYXIgWkVEbGlzdCkpIChjYXIgWkVEbGlzdCkpKSkgKGNkciAoaWYgKHByb21pc2U/IChjYXIgWkVEbGlzdCkpIChmb3JjZSAoY2FyIFpFRGxpc3QpKSAoY2FyIFpFRGxpc3QpKSkpIChaRURjb25zIChpZiAocHJvbWlzZT8gKGNhciAoaWYgKHByb21pc2U/IChjYXIgWkVEbGlzdCkpIChmb3JjZSAoY2FyIFpFRGxpc3QpKSAoY2FyIFpFRGxpc3QpKSkpIChmb3JjZSAoY2FyIChpZiAocHJvbWlzZT8gKGNhciBaRURsaXN0KSkgKGZvcmNlIChjYXIgWkVEbGlzdCkpIChjYXIgWkVEbGlzdCkpKSkgKGNhciAoaWYgKHByb21pc2U/IChjYXIgWkVEbGlzdCkpIChmb3JjZSAoY2FyIFpFRGxpc3QpKSAoY2FyIFpFRGxpc3QpKSkpIFpFRGNvbGxlY3QpKSkpICgoWkVEbnVsbD8gKGlmIChwcm9taXNlPyAoY2FyIFpFRGxpc3QpKSAoZm9yY2UgKGNhciBaRURsaXN0KSkgKGNhciBaRURsaXN0KSkpIChaRURmbGF0dGVuISAoaWYgKHByb21pc2U/IChjZHIgWkVEbGlzdCkpIChmb3JjZSAoY2RyIFpFRGxpc3QpKSAoY2RyIFpFRGxpc3QpKSBaRURzdWItbGlzdC1mb3VuZD8gWkVEY29sbGVjdCkpICgjdCAoWkVEZmxhdHRlbiEgKGlmIChwcm9taXNlPyAoY2RyIFpFRGxpc3QpKSAoZm9yY2UgKGNkciBaRURsaXN0KSkgKGNkciBaRURsaXN0KSkgWkVEc3ViLWxpc3QtZm91bmQ/IChaRURjb25zIChpZiAocHJvbWlzZT8gKGNhciBaRURsaXN0KSkgKGZvcmNlIChjYXIgWkVEbGlzdCkpIChjYXIgWkVEbGlzdCkpIFpFRGNvbGxlY3QpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGZsYXR0ZW4gWkVEbGlzdCkgKGNvbmQgKCN0IChaRURmbGF0dGVuISBaRURsaXN0ICNmIChxdW90ZSAoKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZm9yLWVhY2ggWkVEZWZmZWN0IFpFRGxpc3QpIChjb25kICgjdCAoZm9yLWVhY2ggWkVEZWZmZWN0IFpFRGxpc3QpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZnVuY3Rpb24gZXhwcmVzc2lvbikgKGNvbmQgKCN0IChjYWFyIGV4cHJlc3Npb24pKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZnVuY3Rpb24tc29ydCBzZW50ZW5jZXMpIChjb25kICgjdCAoWkVEcmQgKHF1b3RlICgpKSBhcHBlbmQgKFpFRHNvcnQgWkVEY2xhdXNlLWxlc3M/IChaRURieS1mb3VyIHNlbnRlbmNlcykpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGZ1bmN0aW9uaXplIGNsYXVzZSBhcml0eS1oYXNoKSAoY29uZCAoI3QgKGxpc3QgKHF1b3RlIGRlZmluZSkgKGNvbnMgKFpFRGNsYXVzZS1uYW1lIGNsYXVzZSkgKFpFRGNsYXVzZS1hcmd1bWVudHMgY2xhdXNlKSkgKGNvbnMgKHF1b3RlIGNvbmQpIChhcHBlbmQgKFpFRGNvbmRlZnkgKFpFRG1hcC13aXRoIFpFRHNjaGVtZWZ5IChaRURjbGF1c2UtYm9keSBjbGF1c2UpIGFyaXR5LWhhc2gpKSAobGlzdCAobGlzdCAocXVvdGUgZWxzZSkgKHF1b3RlIGVycikpKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGdhdGhlci1jb3VudD8hIGNhbmRpZGF0ZSkgKGNvbmQgKCN0IChhbmQgKD0gNiAobGVuZ3RoIGNhbmRpZGF0ZSkpIChlcXY/ICNcWiAoY2FyIGNhbmRpZGF0ZSkpIChlcXY/ICNcRSAoY2FkciBjYW5kaWRhdGUpKSAoZXF2PyAjXEQgKGNhZGRyIGNhbmRpZGF0ZSkpIChlcXY/ICNcMCAoY2FkZGRyIGNhbmRpZGF0ZSkpIChaRURkaWdpdD8gKGNhciAoY2RkZGRyIGNhbmRpZGF0ZSkpKSAoWkVEZGlnaXQ/IChjYWRyIChjZGRkZHIgY2FuZGlkYXRlKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGdhdGhlci1jb3VudD8gc3ltYm9sKSAoY29uZCAoI3QgKFpFRGdhdGhlci1jb3VudD8hIChzdHJpbmctPmxpc3QgKHN5bWJvbC0+c3RyaW5nIHN5bWJvbCkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGdhdGhlci1ub3VuIHNlbnRlbmNlKSAoY29uZCAoKG51bGw/IHNlbnRlbmNlKSAocXVvdGUgKCkpKSAoKGVxdj8gI1xzcGFjZSAoY2FyIHNlbnRlbmNlKSkgKHF1b3RlICgpKSkgKCN0IChjb25zIChjYXIgc2VudGVuY2UpIChaRURnYXRoZXItbm91biAoY2RyIHNlbnRlbmNlKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEZ2F0aGVyLXZlcmIgc2VudGVuY2UpIChjb25kICgoZXF2PyAjXCkgKGNhciBzZW50ZW5jZSkpIChxdW90ZSAoKSkpICgjdCAoY29ucyAoY2FyIHNlbnRlbmNlKSAoWkVEZ2F0aGVyLXZlcmIgKGNkciBzZW50ZW5jZSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGdyIGdhcmJhZ2UgdmFsdWUpIChjb25kICgjdCAoYmVnaW4gKFpFRGRyIGdhcmJhZ2UpIHZhbHVlKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGdyciBnYXJiYWdlIHZhbHVlKSAoY29uZCAoI3QgKGJlZ2luIChaRURkcnIgZ2FyYmFnZSkgdmFsdWUpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbGVhZGluZy1uZXdsaW5lIHByb2dyYW0pIChjb25kICgobnVsbD8gcHJvZ3JhbSkgKHF1b3RlICgpKSkgKChlcXY/ICNcbmV3bGluZSAoY2FyIHByb2dyYW0pKSAoY2RyIHByb2dyYW0pKSAoI3QgcHJvZ3JhbSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRGxpdGVyYWw/IGxpdGVyYWwtbGlzdCkgKGNvbmQgKCN0IChlcXY/ICNcIiAoY2FyIGxpdGVyYWwtbGlzdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbWFrZS1aRUQgWkVELWxpc3QpIChjb25kICgoZXF1YWw/IFpFRC1saXN0IChsaXN0ICNcZSAjXHIgI1xyKSkgIidlcnIiKSAoKGVxdWFsPyBaRUQtbGlzdCAobGlzdCAjXG4gI1xpICNcbCkpICInKCkiKSAoKGVxdWFsPyBaRUQtbGlzdCAobGlzdCAjXGEgI1xuICNcZCkpICJhbmQiKSAoKGVxdWFsPyBaRUQtbGlzdCAobGlzdCAjXG8gI1xyKSkgIm9yIikgKChlcXVhbD8gWkVELWxpc3QgKGxpc3QgI1xxICNcdSAjXG8gI1x0ICNcZSkpICJxdW90ZSIpICgoZXF1YWw/IFpFRC1saXN0IChsaXN0ICNccyAjXGUpKSAiYmVnaW4iKSAoI3QgKGxpc3QtPnN0cmluZyAoYXBwZW5kIChsaXN0ICNcWiAjXEUgI1xEKSBaRUQtbGlzdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbWFrZS1jaGFyYWN0ZXIgbm91bi1saXN0KSAoY29uZCAoI3QgKGxpc3QtPnN0cmluZyAoY29ucyAjXCMgKGNvbnMgI1xcIChjZHIgbm91bi1saXN0KSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG1ha2UtZXhhY3QgZXhhY3QtbGlzdCkgKGNvbmQgKCN0IChsaXN0LT5zdHJpbmcgKGFwcGVuZCAobGlzdCAjXCMgI1xlKSBleGFjdC1saXN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURtYWtlLWxpdGVyYWwgbGl0ZXJhbC1saXN0KSAoY29uZCAoI3QgKGxpc3QtPnN0cmluZyAoY2RyIChyZXZlcnNlIChjZHIgKHJldmVyc2UgbGl0ZXJhbC1saXN0KSkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURtYWtlLW51bWJlci1jaGFyYWN0ZXIgbm91bi1saXN0KSAoY29uZCAoI3QgKGxpc3QtPnN0cmluZyAobGlzdCAjXCMgI1xcIChpbnRlZ2VyLT5jaGFyIChzdHJpbmctPm51bWJlciAobGlzdC0+c3RyaW5nIChjZGRyIG5vdW4tbGlzdCkpKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG1hcC13aXRoISBmdW5jdGlvbiBsaXN0IGV4dHJhIGNvbGxlY3QpIChjb25kICgobnVsbD8gbGlzdCkgY29sbGVjdCkgKCN0IChaRURtYXAtd2l0aCEgZnVuY3Rpb24gKGNkciBsaXN0KSBleHRyYSAoY29ucyAoZnVuY3Rpb24gKGNhciBsaXN0KSBleHRyYSkgY29sbGVjdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbWFwLXdpdGggZnVuY3Rpb24gbGlzdCBleHRyYSkgKGNvbmQgKCN0IChyZXZlcnNlIChaRURtYXAtd2l0aCEgZnVuY3Rpb24gbGlzdCBleHRyYSAocXVvdGUgKCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURtZXJnZSEgY29tcGFyYXRvciBsaXN0MSBsaXN0MiBjb2xsZWN0KSAoY29uZCAoKG51bGw/IGxpc3QyKSAoYXBwZW5kIChyZXZlcnNlIGNvbGxlY3QpIGxpc3QxKSkgKChudWxsPyBsaXN0MSkgKGFwcGVuZCAocmV2ZXJzZSBjb2xsZWN0KSBsaXN0MikpICgoY29tcGFyYXRvciAoY2FyIGxpc3QyKSAoY2FyIGxpc3QxKSkgKFpFRG1lcmdlISBjb21wYXJhdG9yIGxpc3QxIChjZHIgbGlzdDIpIChjb25zIChjYXIgbGlzdDIpIGNvbGxlY3QpKSkgKCN0IChaRURtZXJnZSEgY29tcGFyYXRvciAoY2RyIGxpc3QxKSBsaXN0MiAoY29ucyAoY2FyIGxpc3QxKSBjb2xsZWN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURtZXJnZSBjb21wYXJhdG9yIGxpc3QxIGxpc3QyKSAoY29uZCAoI3QgKFpFRG1lcmdlISBjb21wYXJhdG9yIGxpc3QxIGxpc3QyIChxdW90ZSAoKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbXAgZnVuY3Rpb24gbGlzdCkgKGNvbmQgKChudWxsPyBsaXN0KSAocXVvdGUgKCkpKSAoKHBhaXI/IGxpc3QpIChjb25zIChkZWxheSAoZnVuY3Rpb24gKGlmIChwcm9taXNlPyAoY2FyIGxpc3QpKSAoZm9yY2UgKGNhciBsaXN0KSkgKGNhciBsaXN0KSkpKSAoZGVsYXkgKFpFRG1wIGZ1bmN0aW9uIChpZiAocHJvbWlzZT8gKGNkciBsaXN0KSkgKGZvcmNlIChjZHIgbGlzdCkpIChjZHIgbGlzdCkpKSkpKSAoI3QgKGZ1bmN0aW9uIGxpc3QpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbmV3bGluZS1zcGFjZSEgcHJvZ3JhbSkgKGNvbmQgKCN0IChjb25zICNcbmV3bGluZSAoWkVEbmV3bGluZS1zcGFjZSFhIHByb2dyYW0pKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG5ld2xpbmUtc3BhY2UhYSBwcm9ncmFtKSAoY29uZCAoI3QgKFpFRG5ld2xpbmUtc3BhY2UhYWEgcHJvZ3JhbSAocmV2ZXJzZSAoWkVEbmV3bGluZS1zcGFjZSFhYiBwcm9ncmFtIChxdW90ZSAoKSkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURuZXdsaW5lLXNwYWNlIWFhIHByb2dyYW0gdHJhbnNmb3JtZWQpIChjb25kICgoZXF1YWw/IHByb2dyYW0gdHJhbnNmb3JtZWQpIHByb2dyYW0pICgjdCAoWkVEbmV3bGluZS1zcGFjZSFhIHRyYW5zZm9ybWVkKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG5ld2xpbmUtc3BhY2UhYWIgcHJvZ3JhbSBjb2xsZWN0KSAoY29uZCAoKG51bGw/IHByb2dyYW0pIGNvbGxlY3QpICgobnVsbD8gKGNkciBwcm9ncmFtKSkgKGNvbnMgKGNhciBwcm9ncmFtKSBjb2xsZWN0KSkgKChhbmQgKGVxdj8gI1xuZXdsaW5lIChjYXIgcHJvZ3JhbSkpIChvciAoZXF2PyAjXHNwYWNlIChjYWRyIHByb2dyYW0pKSAoZXF2PyAjXGh0IChjYWRyIHByb2dyYW0pKSkpIChaRURuZXdsaW5lLXNwYWNlIWFiIChjZHIgcHJvZ3JhbSkgY29sbGVjdCkpICgjdCAoWkVEbmV3bGluZS1zcGFjZSFhYiAoY2RyIHByb2dyYW0pIChjb25zIChjYXIgcHJvZ3JhbSkgY29sbGVjdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbmV3bGluZS1zcGFjZSBwcm9ncmFtKSAoY29uZCAoI3QgKFpFRG5ld2xpbmUtc3BhY2UhIHByb2dyYW0pKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbmV3bGluZS1zcGFjZS10YWItcmVwZWF0cyEgcHJvZ3JhbSBjb2xsZWN0KSAoY29uZCAoKG9yIChudWxsPyBwcm9ncmFtKSAobnVsbD8gKGNkciBwcm9ncmFtKSkpIChhcHBlbmQgcHJvZ3JhbSBjb2xsZWN0KSkgKChhbmQgKGVxdj8gI1xuZXdsaW5lIChjYXIgcHJvZ3JhbSkpIChlcXY/ICNcbmV3bGluZSAoY2FkciBwcm9ncmFtKSkpIChaRURuZXdsaW5lLXNwYWNlLXRhYi1yZXBlYXRzISAoY2RyIHByb2dyYW0pIGNvbGxlY3QpKSAoKGFuZCAob3IgKGVxdj8gI1xzcGFjZSAoY2FyIHByb2dyYW0pKSAoZXF2PyAjXGh0IChjYXIgcHJvZ3JhbSkpKSAob3IgKGVxdj8gI1xzcGFjZSAoY2FkciBwcm9ncmFtKSkgKGVxdj8gI1xodCAoY2FkciBwcm9ncmFtKSkpKSAoWkVEbmV3bGluZS1zcGFjZS10YWItcmVwZWF0cyEgKGNkciBwcm9ncmFtKSBjb2xsZWN0KSkgKCN0IChaRURuZXdsaW5lLXNwYWNlLXRhYi1yZXBlYXRzISAoY2RyIHByb2dyYW0pIChjb25zIChjYXIgcHJvZ3JhbSkgY29sbGVjdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbmV3bGluZS1zcGFjZS10YWItcmVwZWF0cyBwcm9ncmFtKSAoY29uZCAoI3QgKHJldmVyc2UgKFpFRG5ld2xpbmUtc3BhY2UtdGFiLXJlcGVhdHMhIHByb2dyYW0gKHF1b3RlICgpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbmV3bGluZXMgY2xhdXNlcykgKGNvbmQgKCN0IChaRURhZGQtYmV0d2Vlbi1yYSAoWkVEbWFwLXdpdGggWkVEYWRkLWJldHdlZW4tcmEgY2xhdXNlcyAobGlzdCAjXG5ld2xpbmUpKSAobGlzdCAobGlzdCAjXG5ld2xpbmUgI1xuZXdsaW5lKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbm9ybWFsLWNoYXJhY3Rlcj8gbm91bi1saXN0KSAoY29uZCAoI3QgKGVxdj8gKGNhciBub3VuLWxpc3QpICNcIykpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURub3QgWkVEdmFsdWUpIChjb25kICgjdCAobm90IFpFRHZhbHVlKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG5vdC1yZXR1cm4/IGNoYXJhY3RlcikgKGNvbmQgKCN0IChub3QgKGVxdj8gI1xjciBjaGFyYWN0ZXIpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG5vdW4hIG5vdW4tbGlzdCBudW1iZXI/KSAoY29uZCAobnVtYmVyPyAoWkVEbWFrZS1leGFjdCBub3VuLWxpc3QpKSAoKFpFRGxpdGVyYWw/IG5vdW4tbGlzdCkgKFpFRG1ha2UtbGl0ZXJhbCBub3VuLWxpc3QpKSAoKFpFRHRydWU/IG5vdW4tbGlzdCkgIiN0IikgKChaRURmYWxzZT8gbm91bi1saXN0KSAiI2YiKSAoKFpFRG51bWJlci1jaGFyYWN0ZXI/IG5vdW4tbGlzdCkgKFpFRG1ha2UtbnVtYmVyLWNoYXJhY3RlciBub3VuLWxpc3QpKSAoKFpFRG5vcm1hbC1jaGFyYWN0ZXI/IG5vdW4tbGlzdCkgKFpFRG1ha2UtY2hhcmFjdGVyIG5vdW4tbGlzdCkpICgjdCAoWkVEbWFrZS1aRUQgbm91bi1saXN0KSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG5vdW4gbm91bi1saXN0KSAoY29uZCAoI3QgKFpFRG5vdW4hIG5vdW4tbGlzdCAoc3RyaW5nLT5udW1iZXIgKGxpc3QtPnN0cmluZyBub3VuLWxpc3QpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURudWxsPyBaRUR2YWx1ZSkgKGNvbmQgKCN0IChudWxsPyBaRUR2YWx1ZSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURudW1iZXItY2hhcmFjdGVyPyBub3VuLWxpc3QpIChjb25kICgjdCAoYW5kIChlcXY/IChjYXIgbm91bi1saXN0KSAjXCMpIChlcXY/IChjYWRyIG5vdW4tbGlzdCkgI1wwKSAobm90IChudWxsPyAoY2RkciBub3VuLWxpc3QpKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcGFpcj8gWkVEdmFsdWUpIChjb25kICgjdCAocGFpcj8gWkVEdmFsdWUpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcG9wIHN0YWNrKSAoY29uZCAoI3QgKGNkciBzdGFjaykpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURwciEgdmFsdWUgb3V0cHV0LXN0cmluZykgKGNvbmQgKCN0IChiZWdpbiAoZGlzcGxheSAoWkVEcHIhYSB2YWx1ZSAocXVvdGUgKCkpKSBvdXRwdXQtc3RyaW5nKSAoWkVEcHIhYiBvdXRwdXQtc3RyaW5nIChnZXQtb3V0cHV0LXN0cmluZyBvdXRwdXQtc3RyaW5nKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcHIhYSB2YWx1ZSBjb2xsZWN0KSAoY29uZCAoKGNoYXI/IHZhbHVlKSAoWkVEcHIhYWEgKGxpc3QtPnN0cmluZyAobGlzdCAjXCMgdmFsdWUpKSBjb2xsZWN0KSkgKChzdHJpbmc/IHZhbHVlKSAoWkVEcHIhYWEgKHN0cmluZy1hcHBlbmQgIlwiIiB2YWx1ZSAiXCIiKSBjb2xsZWN0KSkgKChzeW1ib2w/IHZhbHVlKSAoWkVEcHIhYWEgKHN5bWJvbC0+c3RyaW5nIHZhbHVlKSBjb2xsZWN0KSkgKChudW1iZXI/IHZhbHVlKSAoWkVEcHIhYWEgKG51bWJlci0+c3RyaW5nIHZhbHVlKSBjb2xsZWN0KSkgKChhbmQgKGJvb2xlYW4/IHZhbHVlKSB2YWx1ZSkgKFpFRHByIWFhICIjdHJ1ZSIgY29sbGVjdCkpICgoYm9vbGVhbj8gdmFsdWUpIChaRURwciFhYSAiI2ZhbHNlIiBjb2xsZWN0KSkgKChudWxsPyB2YWx1ZSkgKHJldmVyc2UgY29sbGVjdCkpICgjdCAoWkVEcHIhYSAoaWYgKHByb21pc2U/IChjZHIgdmFsdWUpKSAoZm9yY2UgKGNkciB2YWx1ZSkpIChjZHIgdmFsdWUpKSAoY29ucyAoWkVEcHIhYSAoaWYgKHByb21pc2U/IChjYXIgdmFsdWUpKSAoZm9yY2UgKGNhciB2YWx1ZSkpIChjYXIgdmFsdWUpKSAocXVvdGUgKCkpKSBjb2xsZWN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURwciFhYSBzdHJpbmcgY29sbGVjdCkgKGNvbmQgKChudWxsPyBjb2xsZWN0KSBzdHJpbmcpICgjdCAocmV2ZXJzZSAoY29ucyBzdHJpbmcgKGNvbnMgIi4iIGNvbGxlY3QpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURwciFiIG91dHB1dC1zdHJpbmcgdmFsdWUpIChjb25kICgjdCAoYmVnaW4gKGNsb3NlLW91dHB1dC1wb3J0IG91dHB1dC1zdHJpbmcpIHZhbHVlKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHByIHZhbHVlKSAoY29uZCAoI3QgKFpFRHByISB2YWx1ZSAob3Blbi1vdXRwdXQtc3RyaW5nKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURwcm9ncmFtaXplIHByb2dyYW0gYXJpdHktaGFzaCkgKGNvbmQgKCN0IChjb25zIChxdW90ZSBiZWdpbikgKFpFRG1hcC13aXRoIFpFRGZ1bmN0aW9uaXplIHByb2dyYW0gYXJpdHktaGFzaCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcHVzaCBvYmplY3Qgc3RhY2spIChjb25kICgjdCAoY29ucyBvYmplY3Qgc3RhY2spKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmQhIGZ1bmN0aW9uIGxpc3QpIChjb25kICgobnVsbD8gKGlmIChwcm9taXNlPyAoY2RyIGxpc3QpKSAoZm9yY2UgKGNkciBsaXN0KSkgKGNkciBsaXN0KSkpIChpZiAocHJvbWlzZT8gKGNhciBsaXN0KSkgKGZvcmNlIChjYXIgbGlzdCkpIChjYXIgbGlzdCkpKSAoI3QgKFpFRHJkISBmdW5jdGlvbiAoY29ucyAoZnVuY3Rpb24gKGlmIChwcm9taXNlPyAoY2FyIChpZiAocHJvbWlzZT8gKGNkciBsaXN0KSkgKGZvcmNlIChjZHIgbGlzdCkpIChjZHIgbGlzdCkpKSkgKGZvcmNlIChjYXIgKGlmIChwcm9taXNlPyAoY2RyIGxpc3QpKSAoZm9yY2UgKGNkciBsaXN0KSkgKGNkciBsaXN0KSkpKSAoY2FyIChpZiAocHJvbWlzZT8gKGNkciBsaXN0KSkgKGZvcmNlIChjZHIgbGlzdCkpIChjZHIgbGlzdCkpKSkgKGlmIChwcm9taXNlPyAoY2FyIGxpc3QpKSAoZm9yY2UgKGNhciBsaXN0KSkgKGNhciBsaXN0KSkpIChpZiAocHJvbWlzZT8gKGNkciAoaWYgKHByb21pc2U/IChjZHIgbGlzdCkpIChmb3JjZSAoY2RyIGxpc3QpKSAoY2RyIGxpc3QpKSkpIChmb3JjZSAoY2RyIChpZiAocHJvbWlzZT8gKGNkciBsaXN0KSkgKGZvcmNlIChjZHIgbGlzdCkpIChjZHIgbGlzdCkpKSkgKGNkciAoaWYgKHByb21pc2U/IChjZHIgbGlzdCkpIChmb3JjZSAoY2RyIGxpc3QpKSAoY2RyIGxpc3QpKSkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURyZCBmaW5hbCBmdW5jdGlvbiBsaXN0KSAoY29uZCAoI3QgKFpFRHJkISBmdW5jdGlvbiAoY29ucyBmaW5hbCAocmV2ZXJzZSBsaXN0KSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmVhZC1hbGwhIGNvbGxlY3QpIChjb25kICgjdCAoWkVEcmVhZC1hbGwhYSAocmVhZC1jaGFyKSBjb2xsZWN0KSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJlYWQtYWxsIWEgY2hhcmFjdGVyIGNvbGxlY3QpIChjb25kICgoZW9mLW9iamVjdD8gY2hhcmFjdGVyKSBjb2xsZWN0KSAoI3QgKFpFRHJlYWQtYWxsISAoY29ucyBjaGFyYWN0ZXIgY29sbGVjdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmVhZC1hbGwpIChjb25kICgjdCAocmV2ZXJzZSAoWkVEcmVhZC1hbGwhIChxdW90ZSAoKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJlYWQtc2VudGVuY2UhYSBzZW50ZW5jZSBjb2xsZWN0KSAoY29uZCAoKG51bGw/IHNlbnRlbmNlKSBjb2xsZWN0KSAoKGVxdj8gI1xzcGFjZSAoY2FyIHNlbnRlbmNlKSkgKFpFRHJlYWQtc2VudGVuY2UhYSAoY2RyIHNlbnRlbmNlKSBjb2xsZWN0KSkgKChlcXY/ICNcKCAoY2FyIHNlbnRlbmNlKSkgKFpFRHJlYWQtc2VudGVuY2UhYWEgc2VudGVuY2UgKFpFRGdhdGhlci12ZXJiIChjZHIgc2VudGVuY2UpKSBjb2xsZWN0KSkgKCN0IChaRURyZWFkLXNlbnRlbmNlIWFiIHNlbnRlbmNlIChaRURnYXRoZXItbm91biBzZW50ZW5jZSkgY29sbGVjdCkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURyZWFkLXNlbnRlbmNlIWFhIHNlbnRlbmNlIGdhdGhlci12ZXJiIGNvbGxlY3QpIChjb25kICgjdCAoWkVEcmVhZC1zZW50ZW5jZSFhIChaRUR0YWlscyAoKyAyIChsZW5ndGggZ2F0aGVyLXZlcmIpKSBzZW50ZW5jZSkgKGNvbnMgKFpFRHZlcmIgZ2F0aGVyLXZlcmIpIGNvbGxlY3QpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJlYWQtc2VudGVuY2UhYWIgc2VudGVuY2UgZ2F0aGVyLW5vdW4gY29sbGVjdCkgKGNvbmQgKCN0IChaRURyZWFkLXNlbnRlbmNlIWEgKFpFRHRhaWxzIChsZW5ndGggZ2F0aGVyLW5vdW4pIHNlbnRlbmNlKSAoY29ucyAoWkVEbm91biBnYXRoZXItbm91bikgY29sbGVjdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmVhZC1zZW50ZW5jZSFiIGxpc3Qgb3V0cHV0LXN0cmluZykgKGNvbmQgKCN0IChiZWdpbiAoZGlzcGxheSBsaXN0IG91dHB1dC1zdHJpbmcpIChaRURyZWFkLXNlbnRlbmNlIWJhIG91dHB1dC1zdHJpbmcgKGdldC1vdXRwdXQtc3RyaW5nIG91dHB1dC1zdHJpbmcpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURyZWFkLXNlbnRlbmNlIWJhIG91dHB1dC1zdHJpbmcgZ2V0LW91dHB1dC1zdHJpbmcpIChjb25kICgjdCAoYmVnaW4gKGNsb3NlLW91dHB1dC1wb3J0IG91dHB1dC1zdHJpbmcpIChaRURyZWFkLXNlbnRlbmNlIWJhYSAob3Blbi1pbnB1dC1zdHJpbmcgZ2V0LW91dHB1dC1zdHJpbmcpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURyZWFkLXNlbnRlbmNlIWJhYSBpbnB1dC1zdHJpbmcpIChjb25kICgjdCAoWkVEcmVhZC1zZW50ZW5jZSFiYWFhIGlucHV0LXN0cmluZyAocmVhZCBpbnB1dC1zdHJpbmcpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJlYWQtc2VudGVuY2UhYmFhYSBpbnB1dC1zdHJpbmcgYW5zd2VyKSAoY29uZCAoI3QgKGJlZ2luIChjbG9zZS1pbnB1dC1wb3J0IGlucHV0LXN0cmluZykgYW5zd2VyKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJlYWQtc2VudGVuY2Ugc2VudGVuY2UpIChjb25kICgjdCAoWkVEcmVhZC1zZW50ZW5jZSFiIChyZXZlcnNlIChaRURyZWFkLXNlbnRlbmNlIWEgc2VudGVuY2UgKHF1b3RlICgpKSkpIChvcGVuLW91dHB1dC1zdHJpbmcpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJlYWQtc2VudGVuY2VzIHNlbnRlbmNlcykgKGNvbmQgKCN0IChtYXAgWkVEcmVhZC1zZW50ZW5jZSBzZW50ZW5jZXMpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmVhZHktY2xhdXNlIGNsYXVzZSkgKGNvbmQgKCN0IChjb25zIChjYWFhciBjbGF1c2UpIChjb25zIChjZGFyIGNsYXVzZSkgKGNkciBjbGF1c2UpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURyZWFkeS1wcm9ncmFtIHByb2dyYW0pIChjb25kICgjdCAobWFwIFpFRHJlYWR5LWNsYXVzZSBwcm9ncmFtKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJlcGxhY2UtdHJhaWxpbmctd2hpdGUtc3BhY2UhIHByb2dyYW0pIChjb25kICgobnVsbD8gcHJvZ3JhbSkgKHF1b3RlICgpKSkgKChvciAoZXF2PyAoY2FyIHByb2dyYW0pICNcc3BhY2UpIChlcXY/IChjYXIgcHJvZ3JhbSkgI1xodCkgKGVxdj8gKGNhciBwcm9ncmFtKSAjXGNyKSAoZXF2PyAoY2FyIHByb2dyYW0pICNcbmV3bGluZSkpIChaRURyZXBsYWNlLXRyYWlsaW5nLXdoaXRlLXNwYWNlISAoY2RyIHByb2dyYW0pKSkgKCN0IChjb25zICNcbmV3bGluZSBwcm9ncmFtKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJlcGxhY2UtdHJhaWxpbmctd2hpdGUtc3BhY2UgcHJvZ3JhbSkgKGNvbmQgKCN0IChyZXZlcnNlIChaRURyZXBsYWNlLXRyYWlsaW5nLXdoaXRlLXNwYWNlISAocmV2ZXJzZSBwcm9ncmFtKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEcmV2ZXJzZSBaRURsaXN0KSAoY29uZCAoI3QgKHJldmVyc2UgWkVEbGlzdCkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURzY2hlbWVmeSEgZXhwcmVzc2lvbiBhcml0eS1oYXNoIHN0YWNrKSAoY29uZCAoKG51bGw/IGV4cHJlc3Npb24pIChaRUR0b3Agc3RhY2spKSAoKFpFRGFwcGxpY2F0aW9uPyBleHByZXNzaW9uKSAoWkVEc2NoZW1lZnkhYSBleHByZXNzaW9uIGFyaXR5LWhhc2ggc3RhY2sgKFpFRGZ1bmN0aW9uIGV4cHJlc3Npb24pKSkgKCN0IChaRURzY2hlbWVmeSEgKGNkciBleHByZXNzaW9uKSBhcml0eS1oYXNoIChaRURwdXNoIChjYXIgZXhwcmVzc2lvbikgc3RhY2spKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHNjaGVtZWZ5IWEgZXhwcmVzc2lvbiBhcml0eS1oYXNoIHN0YWNrIGZ1bmN0aW9uKSAoY29uZCAoI3QgKFpFRHNjaGVtZWZ5IWFhIGV4cHJlc3Npb24gYXJpdHktaGFzaCBzdGFjayBmdW5jdGlvbiAoWkVEYXJpdHkgYXJpdHktaGFzaCBmdW5jdGlvbikpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEc2NoZW1lZnkhYWEgZXhwcmVzc2lvbiBhcml0eS1oYXNoIHN0YWNrIGZ1bmN0aW9uIGFyaXR5KSAoY29uZCAoKFpFRGdhdGhlci1jb3VudD8gZnVuY3Rpb24pIChaRURzY2hlbWVmeSEgKGNkciBleHByZXNzaW9uKSBhcml0eS1oYXNoIChaRURwdXNoIChaRURmaXJzdCBhcml0eSBzdGFjaykgKFpFRHRhaWxzIGFyaXR5IHN0YWNrKSkpKSAoKGVxPyBmdW5jdGlvbiAocXVvdGUgWkVEMSkpIChaRURzY2hlbWVmeSEgKGNkciBleHByZXNzaW9uKSBhcml0eS1oYXNoIChaRURwdXNoIChsaXN0IChxdW90ZSBpZikgKGxpc3QgKHF1b3RlIHByb21pc2U/KSAoY29ucyAocXVvdGUgY2FyKSAoWkVEZmlyc3QgYXJpdHkgc3RhY2spKSkgKGxpc3QgKHF1b3RlIGZvcmNlKSAoY29ucyAocXVvdGUgY2FyKSAoWkVEZmlyc3QgYXJpdHkgc3RhY2spKSkgKGNvbnMgKHF1b3RlIGNhcikgKFpFRGZpcnN0IGFyaXR5IHN0YWNrKSkpIChaRUR0YWlscyBhcml0eSBzdGFjaykpKSkgKChlcT8gZnVuY3Rpb24gKHF1b3RlIFpFRCEpKSAoWkVEc2NoZW1lZnkhIChjZHIgZXhwcmVzc2lvbikgYXJpdHktaGFzaCAoWkVEcHVzaCAobGlzdCAocXVvdGUgaWYpIChsaXN0IChxdW90ZSBwcm9taXNlPykgKGNvbnMgKHF1b3RlIGNkcikgKFpFRGZpcnN0IGFyaXR5IHN0YWNrKSkpIChsaXN0IChxdW90ZSBmb3JjZSkgKGNvbnMgKHF1b3RlIGNkcikgKFpFRGZpcnN0IGFyaXR5IHN0YWNrKSkpIChjb25zIChxdW90ZSBjZHIpIChaRURmaXJzdCBhcml0eSBzdGFjaykpKSAoWkVEdGFpbHMgYXJpdHkgc3RhY2spKSkpICgoZXE/IGZ1bmN0aW9uIChxdW90ZSBaRURjKSkgKFpFRHNjaGVtZWZ5ISAoY2RyIGV4cHJlc3Npb24pIGFyaXR5LWhhc2ggKFpFRHB1c2ggKGNvbnMgKHF1b3RlIGNvbnMpIChtYXAgWkVEZGVsYXktd3JhcCAoWkVEZmlyc3QgYXJpdHkgc3RhY2spKSkgKFpFRHRhaWxzIGFyaXR5IHN0YWNrKSkpKSAoI3QgKFpFRHNjaGVtZWZ5ISAoY2RyIGV4cHJlc3Npb24pIGFyaXR5LWhhc2ggKFpFRHB1c2ggKGNvbnMgZnVuY3Rpb24gKFpFRGZpcnN0IGFyaXR5IHN0YWNrKSkgKFpFRHRhaWxzIGFyaXR5IHN0YWNrKSkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEc2NoZW1lZnkgZXhwcmVzc2lvbiBhcml0eS1oYXNoKSAoY29uZCAoI3QgKGxpc3QgKFpFRHNjaGVtZWZ5ISAocmV2ZXJzZSBleHByZXNzaW9uKSBhcml0eS1oYXNoIChaRURzdGFjaykpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHNlbnRlbmNlLWxlc3M/IHNlbnRlbmNlMSBzZW50ZW5jZTIpIChjb25kICgobnVsbD8gc2VudGVuY2UyKSAjZikgKChudWxsPyBzZW50ZW5jZTEpICN0KSAoKFpFRGNoYXJhY3Rlci1sZXNzPyAoY2FyIHNlbnRlbmNlMSkgKGNhciBzZW50ZW5jZTIpKSAjdCkgKChaRURjaGFyYWN0ZXItbGVzcz8gKGNhciBzZW50ZW5jZTIpIChjYXIgc2VudGVuY2UxKSkgI2YpICgjdCAoWkVEc2VudGVuY2UtbGVzcz8gKGNkciBzZW50ZW5jZTEpIChjZHIgc2VudGVuY2UyKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURzZW50ZW5jZXMhIHByb2dyYW0gY29sbGVjdDEgY29sbGVjdDIpIChjb25kICgobnVsbD8gcHJvZ3JhbSkgY29sbGVjdDIpICgoZXF2PyAjXG5ld2xpbmUgKGNhciBwcm9ncmFtKSkgKFpFRHNlbnRlbmNlcyEgKGNkciBwcm9ncmFtKSAocXVvdGUgKCkpIChjb25zIChyZXZlcnNlIGNvbGxlY3QxKSBjb2xsZWN0MikpKSAoI3QgKFpFRHNlbnRlbmNlcyEgKGNkciBwcm9ncmFtKSAoY29ucyAoY2FyIHByb2dyYW0pIGNvbGxlY3QxKSBjb2xsZWN0MikpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURzZW50ZW5jZXMgcHJvZ3JhbSkgKGNvbmQgKCN0IChyZXZlcnNlIChaRURzZW50ZW5jZXMhIHByb2dyYW0gKHF1b3RlICgpKSAocXVvdGUgKCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURzb3J0IWEganVtYmxlKSAoY29uZCAoI3QgKG1hcCBsaXN0IGp1bWJsZSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURzb3J0IWIgY29tcGFyYXRvciBqdW1ibGUpIChjb25kICgobnVsbD8ganVtYmxlKSAocXVvdGUgKCkpKSAoKG51bGw/IChjZHIganVtYmxlKSkganVtYmxlKSAoI3QgKFpFRHNvcnQhYiBjb21wYXJhdG9yIChjb25zIChaRURtZXJnZSBjb21wYXJhdG9yIChjYXIganVtYmxlKSAoY2FkciBqdW1ibGUpKSAoWkVEc29ydCFiIGNvbXBhcmF0b3IgKGNkZHIganVtYmxlKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHNvcnQgY29tcGFyYXRvciBqdW1ibGUpIChjb25kICgjdCAoY2FyIChaRURzb3J0IWIgY29tcGFyYXRvciAoWkVEc29ydCFhIGp1bWJsZSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHNwYWNlLW5ld2xpbmUhIHByb2dyYW0gY29sbGVjdCkgKGNvbmQgKChvciAobnVsbD8gcHJvZ3JhbSkgKG51bGw/IChjZHIgcHJvZ3JhbSkpKSAoYXBwZW5kIHByb2dyYW0gY29sbGVjdCkpICgoYW5kIChlcXY/ICNcc3BhY2UgKGNhciBwcm9ncmFtKSkgKGVxdj8gI1xuZXdsaW5lIChjYWRyIHByb2dyYW0pKSkgKFpFRHNwYWNlLW5ld2xpbmUhIChjZHIgcHJvZ3JhbSkgY29sbGVjdCkpICgjdCAoWkVEc3BhY2UtbmV3bGluZSEgKGNkciBwcm9ncmFtKSAoY29ucyAoY2FyIHByb2dyYW0pIGNvbGxlY3QpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHNwYWNlLW5ld2xpbmUgcHJvZ3JhbSkgKGNvbmQgKCN0IChyZXZlcnNlIChaRURzcGFjZS1uZXdsaW5lISBwcm9ncmFtIChxdW90ZSAoKSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHN0YWNrKSAoY29uZCAoI3QgKHF1b3RlICgpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHRhYi1yZXBsYWNlISBwcm9ncmFtIGNvbGxlY3QpIChjb25kICgobnVsbD8gcHJvZ3JhbSkgY29sbGVjdCkgKChlcXY/ICNcaHQgKGNhciBwcm9ncmFtKSkgKFpFRHRhYi1yZXBsYWNlISAoY2RyIHByb2dyYW0pIChjb25zICNcc3BhY2UgY29sbGVjdCkpKSAoI3QgKFpFRHRhYi1yZXBsYWNlISAoY2RyIHByb2dyYW0pIChjb25zIChjYXIgcHJvZ3JhbSkgY29sbGVjdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEdGFiLXJlcGxhY2UgcHJvZ3JhbSkgKGNvbmQgKCN0IChyZXZlcnNlIChaRUR0YWItcmVwbGFjZSEgcHJvZ3JhbSAocXVvdGUgKCkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRUR0YWlscyBudW1iZXIgbGlzdCkgKGNvbmQgKChudWxsPyBsaXN0KSAocXVvdGUgKCkpKSAoKHplcm8/IG51bWJlcikgbGlzdCkgKCg+IG51bWJlciAwKSAoWkVEdGFpbHMgKC0gbnVtYmVyIDEpIChjZHIgbGlzdCkpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEdG9wIHN0YWNrKSAoY29uZCAoI3QgKGNhciBzdGFjaykpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRUR0cnVlPyBub3VuLWxpc3QpIChjb25kICgjdCAoZXF1YWw/IG5vdW4tbGlzdCAobGlzdCAjXCMgI1x0ICNcciAjXHUgI1xlKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRUR2ZXJiIHZlcmItbGlzdCkgKGNvbmQgKChaRURsaXRlcmFsPyB2ZXJiLWxpc3QpIChsaXN0IChaRURtYWtlLWxpdGVyYWwgdmVyYi1saXN0KSkpICgjdCAobGlzdCAoWkVEbWFrZS1aRUQgdmVyYi1saXN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRUR3cml0ZS1hbGwgcHJvZ3JhbSkgKGNvbmQgKChudWxsPyBwcm9ncmFtKSAocXVvdGUgZXJyKSkgKCN0IChaRUR3cml0ZS1hbGwgKGJlZ2luICh3cml0ZS1jaGFyIChjYXIgcHJvZ3JhbSkpIChjZHIgcHJvZ3JhbSkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHplZC0+c2NoZW1lISB2YWx1ZSBjb2xsZWN0KSAoY29uZCAoKG51bGw/IHZhbHVlKSAocmV2ZXJzZSBjb2xsZWN0KSkgKCN0IChaRUR6ZWQtPnNjaGVtZSEgKGlmIChwcm9taXNlPyAoY2RyIHZhbHVlKSkgKGZvcmNlIChjZHIgdmFsdWUpKSAoY2RyIHZhbHVlKSkgKGNvbnMgKFpFRHplZC0+c2NoZW1lIChpZiAocHJvbWlzZT8gKGNhciB2YWx1ZSkpIChmb3JjZSAoY2FyIHZhbHVlKSkgKGNhciB2YWx1ZSkpKSBjb2xsZWN0KSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRUR6ZWQtPnNjaGVtZSB2YWx1ZSkgKGNvbmQgKChub3QgKHBhaXI/IHZhbHVlKSkgdmFsdWUpICgjdCAoWkVEemVkLT5zY2hlbWUhIHZhbHVlIChxdW90ZSAoKSkpKSAoZWxzZSBlcnIpKSkpCihaRURjb21wKQ==
stdin
KCopIG51bWJlcjEgbnVtYmVyMgpjb21tZW50OgojdHJ1ZQooMDAzKSAmcXVvdDsqJnF1b3Q7IG51bWJlcjEgbnVtYmVyMgoKKCspIG51bWJlcjEgbnVtYmVyMgpjb21tZW50OgojdHJ1ZQooMDAzKSAmcXVvdDsrJnF1b3Q7IG51bWJlcjEgbnVtYmVyMgoKKC0pIG51bWJlcjEgbnVtYmVyMgpjb21tZW50OgojdHJ1ZQooMDAzKSAmcXVvdDstJnF1b3Q7IG51bWJlcjEgbnVtYmVyMgoKKC8pIG51bWJlcjEgbnVtYmVyMgpjb21tZW50OgojdHJ1ZQooMDAzKSAmcXVvdDsvJnF1b3Q7IG51bWJlcjEgbnVtYmVyMgoKKD0pICZxdW90O3ZhbHVlMSZxdW90OyAmcXVvdDt2YWx1ZTImcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAmcXVvdDt2YWx1ZTEmcXVvdDsgJnF1b3Q7dmFsdWUyJnF1b3Q7CgooYWRkLWJldHdlZW4hKSAmcXVvdDtpdGVtJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7CiZxdW90O2NvbGxlY3QmcXVvdDsKCihhZGQtYmV0d2VlbiEpICZxdW90O2l0ZW0mcXVvdDsgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDIpICZxdW90O251bGw/JnF1b3Q7ICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7CigwMDMpICZxdW90O2NvbnMmcXVvdDsgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKGFkZC1iZXR3ZWVuISkgJnF1b3Q7aXRlbSZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKI3RydWUKKGFkZC1iZXR3ZWVuISkgJnF1b3Q7aXRlbSZxdW90OyAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7bGlzdCZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90O2l0ZW0mcXVvdDsgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CgooYWRkLWJldHdlZW4pICZxdW90O2l0ZW0mcXVvdDsgJnF1b3Q7bGlzdCZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7IChhZGQtYmV0d2VlbiEpICZxdW90O2l0ZW0mcXVvdDsgJnF1b3Q7bGlzdCZxdW90OyBuaWwKCihhZGQtYmV0d2Vlbi1yYSkgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDtpdGVtJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O3JldmVyc2UmcXVvdDsgKGFkZC1iZXR3ZWVuISkgJnF1b3Q7aXRlbSZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7IG5pbAoKKGFscGhhKQpjb21tZW50OgojdHJ1ZQood3JpdGUtYWxsKSAocmQpIG5pbCAmcXVvdDthcHBlbmQmcXVvdDsgKHJkKSBuaWwgJnF1b3Q7YXBwZW5kJnF1b3Q7IChuZXdsaW5lcykgKGJ5LWZvdXIpIChmdW5jdGlvbi1zb3J0KSAoc2VudGVuY2VzKSAobGVhZGluZy1uZXdsaW5lKSAoc3BhY2UtbmV3bGluZSkgKHRhYi1yZXBsYWNlKSAobmV3bGluZS1zcGFjZS10YWItcmVwZWF0cykgKG5ld2xpbmUtc3BhY2UpIChmaWx0ZXIpIG5vdC1yZXR1cm4/IChyZXBsYWNlLXRyYWlsaW5nLXdoaXRlLXNwYWNlKSAocmVhZC1hbGwpCgooYXBwbGljYXRpb24/KSAmcXVvdDtleHByZXNzaW9uJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDQpICZxdW90O2FuZCZxdW90OyAoMDAyKSAmcXVvdDtub3QmcXVvdDsgKDAwMikgJnF1b3Q7bnVsbD8mcXVvdDsgJnF1b3Q7ZXhwcmVzc2lvbiZxdW90OyAoMDAyKSAmcXVvdDtwYWlyPyZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7ZXhwcmVzc2lvbiZxdW90OyAoMDAyKSAmcXVvdDtudWxsPyZxdW90OyAoMDAyKSAmcXVvdDtjZGFyJnF1b3Q7ICZxdW90O2V4cHJlc3Npb24mcXVvdDsKCihhcml0eSkgJnF1b3Q7YXJpdHktaGFzaCZxdW90OyAmcXVvdDtmdW5jdGlvbiZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtjZHImcXVvdDsgKDAwMykgJnF1b3Q7YXNzb2MmcXVvdDsgJnF1b3Q7ZnVuY3Rpb24mcXVvdDsgJnF1b3Q7YXJpdHktaGFzaCZxdW90OwoKKGFyaXR5LWhhc2ghKSAmcXVvdDtjbGF1c2UmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAoY2xhdXNlLW5hbWUpICZxdW90O2NsYXVzZSZxdW90OyAoY2xhdXNlLWFyaXR5KSAmcXVvdDtjbGF1c2UmcXVvdDsKCihhcml0eS1oYXNoKSAmcXVvdDtwcm9ncmFtJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDMpICZxdW90O2FwcGVuZCZxdW90OyAoMDAzKSAmcXVvdDttYXAmcXVvdDsgYXJpdHktaGFzaCEgJnF1b3Q7cHJvZ3JhbSZxdW90OyAoMDAzKSAmcXVvdDthcHBlbmQmcXVvdDsgKDAwOSkgJnF1b3Q7bGlzdCZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQxJnF1b3Q7IDEgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEISZxdW90OyAxICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAwMSZxdW90OyAxICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J29yJnF1b3Q7IDIgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnYW5kJnF1b3Q7IDIgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnYmVnaW4mcXVvdDsgMiAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRURjJnF1b3Q7IDIgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsncXVvdGUmcXVvdDsgMSAoMDk5KSAmcXVvdDtsaXN0JnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAwMiZxdW90OyAyICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAwMyZxdW90OyAzICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAwNCZxdW90OyA0ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAwNSZxdW90OyA1ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAwNiZxdW90OyA2ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAwNyZxdW90OyA3ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAwOCZxdW90OyA4ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAwOSZxdW90OyA5ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAxMCZxdW90OyAxMCAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwMTEmcXVvdDsgMTEgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDEyJnF1b3Q7IDEyICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAxMyZxdW90OyAxMyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwMTQmcXVvdDsgMTQgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDE1JnF1b3Q7IDE1ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAxNiZxdW90OyAxNiAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwMTcmcXVvdDsgMTcgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDE4JnF1b3Q7IDE4ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAxOSZxdW90OyAxOSAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwMjAmcXVvdDsgMjAgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDIxJnF1b3Q7IDIxICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAyMiZxdW90OyAyMiAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwMjMmcXVvdDsgMjMgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDI0JnF1b3Q7IDI0ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAyNSZxdW90OyAyNSAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwMjYmcXVvdDsgMjYgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDI3JnF1b3Q7IDI3ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAyOCZxdW90OyAyOCAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwMjkmcXVvdDsgMjkgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDMwJnF1b3Q7IDMwICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAzMSZxdW90OyAzMSAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwMzImcXVvdDsgMzIgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDMzJnF1b3Q7IDMzICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAzNCZxdW90OyAzNCAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwMzUmcXVvdDsgMzUgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDM2JnF1b3Q7IDM2ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDAzNyZxdW90OyAzNyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwMzgmcXVvdDsgMzggKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDM5JnF1b3Q7IDM5ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA0MCZxdW90OyA0MCAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwNDEmcXVvdDsgNDEgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDQyJnF1b3Q7IDQyICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA0MyZxdW90OyA0MyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwNDQmcXVvdDsgNDQgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDQ1JnF1b3Q7IDQ1ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA0NiZxdW90OyA0NiAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwNDcmcXVvdDsgNDcgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDQ4JnF1b3Q7IDQ4ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA0OSZxdW90OyA0OSAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwNTAmcXVvdDsgNTAgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDUxJnF1b3Q7IDUxICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA1MiZxdW90OyA1MiAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwNTMmcXVvdDsgNTMgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDU0JnF1b3Q7IDU0ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA1NSZxdW90OyA1NSAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwNTYmcXVvdDsgNTYgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDU3JnF1b3Q7IDU3ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA1OCZxdW90OyA1OCAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwNTkmcXVvdDsgNTkgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDYwJnF1b3Q7IDYwICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA2MSZxdW90OyA2MSAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwNjImcXVvdDsgNjIgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDYzJnF1b3Q7IDYzICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA2NCZxdW90OyA2NCAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwNjUmcXVvdDsgNjUgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDY2JnF1b3Q7IDY2ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA2NyZxdW90OyA2NyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwNjgmcXVvdDsgNjggKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDY5JnF1b3Q7IDY5ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA3MCZxdW90OyA3MCAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwNzEmcXVvdDsgNzEgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDcyJnF1b3Q7IDcyICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA3MyZxdW90OyA3MyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwNzQmcXVvdDsgNzQgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDc1JnF1b3Q7IDc1ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA3NiZxdW90OyA3NiAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwNzcmcXVvdDsgNzcgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDc4JnF1b3Q7IDc4ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA3OSZxdW90OyA3OSAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwODAmcXVvdDsgODAgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDgxJnF1b3Q7IDgxICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA4MiZxdW90OyA4MiAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwODMmcXVvdDsgODMgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDg0JnF1b3Q7IDg0ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA4NSZxdW90OyA4NSAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwODYmcXVvdDsgODYgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDg3JnF1b3Q7IDg3ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA4OCZxdW90OyA4OCAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwODkmcXVvdDsgODkgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDkwJnF1b3Q7IDkwICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA5MSZxdW90OyA5MSAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwOTImcXVvdDsgOTIgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDkzJnF1b3Q7IDkzICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA5NCZxdW90OyA5NCAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwOTUmcXVvdDsgOTUgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDk2JnF1b3Q7IDk2ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J1pFRDA5NyZxdW90OyA5NyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydaRUQwOTgmcXVvdDsgOTggKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnWkVEMDk5JnF1b3Q7IDk5CgooYnktZm91ciEpICZxdW90O3NlbnRlbmNlcyZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDIpICZxdW90O251bGw/JnF1b3Q7ICZxdW90O3NlbnRlbmNlcyZxdW90OwomcXVvdDtjb2xsZWN0JnF1b3Q7CgooYnktZm91ciEpICZxdW90O3NlbnRlbmNlcyZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihieS1mb3VyISkgKDAwMikgJnF1b3Q7Y2RkZGRyJnF1b3Q7ICZxdW90O3NlbnRlbmNlcyZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICgwMDUpICZxdW90O2xpc3QmcXVvdDsgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O3NlbnRlbmNlcyZxdW90OyAoMDAyKSAmcXVvdDtjYWRyJnF1b3Q7ICZxdW90O3NlbnRlbmNlcyZxdW90OyAoMDAyKSAmcXVvdDtjYWRkciZxdW90OyAmcXVvdDtzZW50ZW5jZXMmcXVvdDsgKDAwMikgJnF1b3Q7Y2FkZGRyJnF1b3Q7ICZxdW90O3NlbnRlbmNlcyZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CgooYnktZm91cikgJnF1b3Q7c2VudGVuY2VzJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O3JldmVyc2UmcXVvdDsgKGJ5LWZvdXIhKSAmcXVvdDtzZW50ZW5jZXMmcXVvdDsgbmlsCgooYnktdGhyZWUhKSAmcXVvdDtzZW50ZW5jZXMmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtzZW50ZW5jZXMmcXVvdDsKJnF1b3Q7Y29sbGVjdCZxdW90OwoKKGJ5LXRocmVlISkgJnF1b3Q7c2VudGVuY2VzJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKI3RydWUKKGJ5LXRocmVlISkgKDAwMikgJnF1b3Q7Y2RkZHImcXVvdDsgJnF1b3Q7c2VudGVuY2VzJnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgKDAwNCkgJnF1b3Q7bGlzdCZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7c2VudGVuY2VzJnF1b3Q7ICgwMDIpICZxdW90O2NhZHImcXVvdDsgJnF1b3Q7c2VudGVuY2VzJnF1b3Q7ICgwMDIpICZxdW90O2NhZGRyJnF1b3Q7ICZxdW90O3NlbnRlbmNlcyZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CgooYnktdGhyZWUpICZxdW90O3NlbnRlbmNlcyZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7IChieS10aHJlZSEpICZxdW90O3NlbnRlbmNlcyZxdW90OyBuaWwKCihjaGFyYWN0ZXItbGVzcz8pICZxdW90O2NoYXJhY3RlcjEmcXVvdDsgJnF1b3Q7Y2hhcmFjdGVyMiZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAzKSAmcXVvdDsmbHQ7JnF1b3Q7ICgwMDIpICZxdW90O2NoYXItJmd0O2ludGVnZXImcXVvdDsgJnF1b3Q7Y2hhcmFjdGVyMSZxdW90OyAoMDAyKSAmcXVvdDtjaGFyLSZndDtpbnRlZ2VyJnF1b3Q7ICZxdW90O2NoYXJhY3RlcjImcXVvdDsKCihjbGF1c2UtYXJndW1lbnRzKSAmcXVvdDtjbGF1c2UmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMikgJnF1b3Q7Y2FkciZxdW90OyAmcXVvdDtjbGF1c2UmcXVvdDsKCihjbGF1c2UtYXJndW1lbnRzLWFncmVlKSAmcXVvdDtjbGF1c2UxJnF1b3Q7ICZxdW90O2NsYXVzZTImcXVvdDsKY29tbWVudDoKKDAwMykgJnF1b3Q7ZXF1YWw/JnF1b3Q7IChjbGF1c2UtYXJndW1lbnRzKSAmcXVvdDtjbGF1c2UxJnF1b3Q7IChjbGF1c2UtYXJndW1lbnRzKSAmcXVvdDtjbGF1c2UyJnF1b3Q7CihjbGF1c2UtYXJndW1lbnRzKSAmcXVvdDtjbGF1c2UxJnF1b3Q7CgooY2xhdXNlLWFyaXR5KSAmcXVvdDtjbGF1c2UmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMikgJnF1b3Q7bGVuZ3RoJnF1b3Q7IChjbGF1c2UtYXJndW1lbnRzKSAmcXVvdDtjbGF1c2UmcXVvdDsKCihjbGF1c2UtYm9keSkgJnF1b3Q7Y2xhdXNlJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O2NkZHImcXVvdDsgJnF1b3Q7Y2xhdXNlJnF1b3Q7CgooY2xhdXNlLWxlc3M/KSAmcXVvdDtjbGF1c2UxJnF1b3Q7ICZxdW90O2NsYXVzZTImcXVvdDsKY29tbWVudDoKI3RydWUKKHNlbnRlbmNlLWxlc3M/KSAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7Y2xhdXNlMSZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7Y2xhdXNlMiZxdW90OwoKKGNsYXVzZS1uYW1lKSAmcXVvdDtjbGF1c2UmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O2NsYXVzZSZxdW90OwoKKGNsYXVzZS1uYW1lLWFncmVlKSAmcXVvdDtjbGF1c2UxJnF1b3Q7ICZxdW90O2NsYXVzZTImcXVvdDsKY29tbWVudDoKKDAwMykgJnF1b3Q7ZXE/JnF1b3Q7IChjbGF1c2UtbmFtZSkgJnF1b3Q7Y2xhdXNlMSZxdW90OyAoY2xhdXNlLW5hbWUpICZxdW90O2NsYXVzZTImcXVvdDsKKGNsYXVzZS1uYW1lKSAmcXVvdDtjbGF1c2UxJnF1b3Q7CgooY29tYmluZS1hbGwhKSAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKKDAwMikgJnF1b3Q7bnVsbD8mcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OwomcXVvdDtjb2xsZWN0JnF1b3Q7CgooY29tYmluZS1hbGwhKSAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKKDAwMikgJnF1b3Q7bnVsbD8mcXVvdDsgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsKKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CgooY29tYmluZS1hbGwhKSAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKKDAwMykgJnF1b3Q7ZXE/JnF1b3Q7IChjbGF1c2UtbmFtZSkgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgKGNsYXVzZS1uYW1lKSAoMDAyKSAmcXVvdDtjYWRyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsKKGNvbWJpbmUtYWxsISkgKGNvbWJpbmUtaGVhZC1jbGF1c2VzKSAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihjb21iaW5lLWFsbCEpICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgojdHJ1ZQooY29tYmluZS1hbGwhKSAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihjb21iaW5lLWFsbCkgJnF1b3Q7cHJvZ3JhbSZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7IChjb21iaW5lLWFsbCEpICZxdW90O3Byb2dyYW0mcXVvdDsgbmlsCgooY29tYmluZS1jbGF1c2VzKSAmcXVvdDtjbGF1c2UxJnF1b3Q7ICZxdW90O2NsYXVzZTImcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAoY2xhdXNlLW5hbWUtYWdyZWUpICZxdW90O2NsYXVzZTEmcXVvdDsgJnF1b3Q7Y2xhdXNlMiZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7IChjbGF1c2UtYXJndW1lbnRzLWFncmVlKSAmcXVvdDtjbGF1c2UxJnF1b3Q7ICZxdW90O2NsYXVzZTImcXVvdDsgKDAwMykgJnF1b3Q7YXBwZW5kJnF1b3Q7IChjbGF1c2UtYm9keSkgJnF1b3Q7Y2xhdXNlMSZxdW90OyAoY2xhdXNlLWJvZHkpICZxdW90O2NsYXVzZTImcXVvdDsKCihjb21iaW5lLWhlYWQtY2xhdXNlcykgJnF1b3Q7cHJvZ3JhbSZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAzKSAmcXVvdDtjb25zJnF1b3Q7IChjb21iaW5lLWNsYXVzZXMpICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICgwMDIpICZxdW90O2NhZHImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OyAoMDAyKSAmcXVvdDtjZGRyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsKCihjb21iaW5lLXByb2dyYW0tY2xhdXNlcykgJnF1b3Q7cHJvZ3JhbSZxdW90Owpjb21tZW50OgojdHJ1ZQooY29tYmluZS1hbGwpIChyZWFkeS1wcm9ncmFtKSAmcXVvdDtwcm9ncmFtJnF1b3Q7CgooY29tcCEpCmNvbW1lbnQ6CiN0cnVlCihjb21wIWEpIChjb21iaW5lLXByb2dyYW0tY2xhdXNlcykgKGJ5LXRocmVlKSAocmVhZC1zZW50ZW5jZXMpIChkaXNjYXJkLWNvbW1lbnRzKSAoZnVuY3Rpb24tc29ydCkgKHNlbnRlbmNlcykgKGxlYWRpbmctbmV3bGluZSkgKHNwYWNlLW5ld2xpbmUpICh0YWItcmVwbGFjZSkgKG5ld2xpbmUtc3BhY2UtdGFiLXJlcGVhdHMpIChuZXdsaW5lLXNwYWNlKSAoZmlsdGVyKSBub3QtcmV0dXJuPyAocmVwbGFjZS10cmFpbGluZy13aGl0ZS1zcGFjZSkgKHJlYWQtYWxsKQoKKGNvbXAhYSkgJnF1b3Q7Y29tYmluZWQmcXVvdDsKY29tbWVudDoKI3RydWUKKGNvbXAhYWEpIChwcm9ncmFtaXplKSAmcXVvdDtjb21iaW5lZCZxdW90OyAoYXJpdHktaGFzaCkgJnF1b3Q7Y29tYmluZWQmcXVvdDsKCihjb21wIWFhKSAmcXVvdDtwcm9ncmFtaXplZCZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDt3cml0ZSZxdW90OyAmcXVvdDtwcm9ncmFtaXplZCZxdW90OwoKKGNvbXApCmNvbW1lbnQ6CiN0cnVlCihjb21wISkKCihjb25kZWZ5ISkgJnF1b3Q7ZXhwcmVzc2lvbnMmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtleHByZXNzaW9ucyZxdW90OwomcXVvdDtjb2xsZWN0JnF1b3Q7CgooY29uZGVmeSEpICZxdW90O2V4cHJlc3Npb25zJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKI3RydWUKKGNvbmRlZnkhKSAoMDAyKSAmcXVvdDtjZGRyJnF1b3Q7ICZxdW90O2V4cHJlc3Npb25zJnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgKDAwMykgJnF1b3Q7YXBwZW5kJnF1b3Q7ICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtleHByZXNzaW9ucyZxdW90OyAoMDAyKSAmcXVvdDtjYWRyJnF1b3Q7ICZxdW90O2V4cHJlc3Npb25zJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihjb25kZWZ5KSAmcXVvdDtleHByZXNzaW9ucyZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7IChjb25kZWZ5ISkgJnF1b3Q7ZXhwcmVzc2lvbnMmcXVvdDsgbmlsCgooY29ucykgdmFsdWUxIHZhbHVlMgpjb21tZW50OgojdHJ1ZQooMDAzKSAmcXVvdDtjb25zJnF1b3Q7IHZhbHVlMSB2YWx1ZTIKCihjb3VudCkgbnVtYmVyCmNvbW1lbnQ6CiN0cnVlCihjKSBudW1iZXIgKGNvdW50KSAoKykgbnVtYmVyIDEKCihjb3VudC1ieSkgc3RlcCBudW1iZXIKY29tbWVudDoKI3RydWUKKGMpIG51bWJlciAoY291bnQtYnkpIHN0ZXAgKCspIG51bWJlciBzdGVwCgooZGVsYXktd3JhcCkgJnF1b3Q7ZXhwcmVzc2lvbiZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAzKSAmcXVvdDtsaXN0JnF1b3Q7ICZxdW90OydkZWxheSZxdW90OyAmcXVvdDtleHByZXNzaW9uJnF1b3Q7CgooZGlnaXQ/KSAmcXVvdDtjaGFyYWN0ZXImcXVvdDsKY29tbWVudDoKI3RydWUKKDAxMSkgJnF1b3Q7b3ImcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjMCAmcXVvdDtjaGFyYWN0ZXImcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjMSAmcXVvdDtjaGFyYWN0ZXImcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjMiAmcXVvdDtjaGFyYWN0ZXImcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjMyAmcXVvdDtjaGFyYWN0ZXImcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjNCAmcXVvdDtjaGFyYWN0ZXImcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjNSAmcXVvdDtjaGFyYWN0ZXImcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjNiAmcXVvdDtjaGFyYWN0ZXImcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjNyAmcXVvdDtjaGFyYWN0ZXImcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjOCAmcXVvdDtjaGFyYWN0ZXImcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjOSAmcXVvdDtjaGFyYWN0ZXImcXVvdDsKCihkaXNjYXJkLWNvbW1lbnRzISkgJnF1b3Q7cHJvZ3JhbSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDIpICZxdW90O251bGw/JnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsKJnF1b3Q7Y29sbGVjdCZxdW90OwoKKGRpc2NhcmQtY29tbWVudHMhKSAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKI3RydWUKKGRpc2NhcmQtY29tbWVudHMhKSAoMDAyKSAmcXVvdDtjZGRkZHImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICgwMDIpICZxdW90O2NhZGRkciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgKDAwMikgJnF1b3Q7Y2FkZHImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihkaXNjYXJkLWNvbW1lbnRzKSAmcXVvdDtwcm9ncmFtJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O3JldmVyc2UmcXVvdDsgKGRpc2NhcmQtY29tbWVudHMhKSAmcXVvdDtwcm9ncmFtJnF1b3Q7IG5pbAoKKGRyISkgJnF1b3Q7dmFsdWUmcXVvdDsKY29tbWVudDoKKDAwMikgJnF1b3Q7cGFpcj8mcXVvdDsgJnF1b3Q7dmFsdWUmcXVvdDsKKG1wKSBkciEgKGZpcnN0KSA2NCAmcXVvdDt2YWx1ZSZxdW90OwoKKGRyISkgJnF1b3Q7dmFsdWUmcXVvdDsKY29tbWVudDoKI3RydWUKJnF1b3Q7dmFsdWUmcXVvdDsKCihkcikgJnF1b3Q7dmFsdWUmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwNSkgJnF1b3Q7YmVnaW4mcXVvdDsgKDAwMikgJnF1b3Q7ZGlzcGxheSZxdW90OyAocHIpIChkciEpICZxdW90O3ZhbHVlJnF1b3Q7ICgwMDEpICZxdW90O25ld2xpbmUmcXVvdDsgKDAwMSkgJnF1b3Q7bmV3bGluZSZxdW90OyAmcXVvdDt2YWx1ZSZxdW90OwoKKGRycikgJnF1b3Q7dmFsdWUmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwNSkgJnF1b3Q7YmVnaW4mcXVvdDsgKDAwMikgJnF1b3Q7ZGlzcGxheSZxdW90OyAocHIpICZxdW90O3ZhbHVlJnF1b3Q7ICgwMDEpICZxdW90O25ld2xpbmUmcXVvdDsgKDAwMSkgJnF1b3Q7bmV3bGluZSZxdW90OyAmcXVvdDt2YWx1ZSZxdW90OwoKKGZhbHNlPykgJnF1b3Q7bm91bi1saXN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDMpICZxdW90O2VxdWFsPyZxdW90OyAmcXVvdDtub3VuLWxpc3QmcXVvdDsgKDAwNykgJnF1b3Q7bGlzdCZxdW90OyAjIyAjZiAjYSAjbCAjcyAjZQoKKGZpKSAmcXVvdDtmdW5jdGlvbiZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7CmNvbW1lbnQ6CigwMDIpICZxdW90O251bGw/JnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsKbmlsCgooZmkpICZxdW90O2Z1bmN0aW9uJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsKY29tbWVudDoKKDAwMikgJnF1b3Q7ZnVuY3Rpb24mcXVvdDsgKDEpICZxdW90O2xpc3QmcXVvdDsKKGMpICgxKSAmcXVvdDtsaXN0JnF1b3Q7IChmaSkgJnF1b3Q7ZnVuY3Rpb24mcXVvdDsgKCEpICZxdW90O2xpc3QmcXVvdDsKCihmaSkgJnF1b3Q7ZnVuY3Rpb24mcXVvdDsgJnF1b3Q7bGlzdCZxdW90Owpjb21tZW50OgojdHJ1ZQooZmkpICZxdW90O2Z1bmN0aW9uJnF1b3Q7ICghKSAmcXVvdDtsaXN0JnF1b3Q7CgooZmlsdGVyISkgJnF1b3Q7cHJlZGljYXRlJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7CiZxdW90O2NvbGxlY3QmcXVvdDsKCihmaWx0ZXIhKSAmcXVvdDtwcmVkaWNhdGUmcXVvdDsgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDIpICZxdW90O3ByZWRpY2F0ZSZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7bGlzdCZxdW90OwooZmlsdGVyISkgJnF1b3Q7cHJlZGljYXRlJnF1b3Q7ICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKGZpbHRlciEpICZxdW90O3ByZWRpY2F0ZSZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKI3RydWUKKGZpbHRlciEpICZxdW90O3ByZWRpY2F0ZSZxdW90OyAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CgooZmlsdGVyKSAmcXVvdDtwcmVkaWNhdGUmcXVvdDsgJnF1b3Q7bGlzdCZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7IChmaWx0ZXIhKSAmcXVvdDtwcmVkaWNhdGUmcXVvdDsgJnF1b3Q7bGlzdCZxdW90OyBuaWwKCihmaXJzdCEpICZxdW90O2ludGVnZXImcXVvdDsgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDMpICZxdW90O29yJnF1b3Q7ICgwMDIpICZxdW90O3plcm8/JnF1b3Q7ICZxdW90O2ludGVnZXImcXVvdDsgKDAwMikgJnF1b3Q7bnVsbD8mcXVvdDsgJnF1b3Q7bGlzdCZxdW90OwooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihmaXJzdCEpICZxdW90O2ludGVnZXImcXVvdDsgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDIpICZxdW90O25vdCZxdW90OyAoMDAyKSAmcXVvdDtwYWlyPyZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7CigwMDIpICZxdW90O3JldmVyc2UmcXVvdDsgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihmaXJzdCEpICZxdW90O2ludGVnZXImcXVvdDsgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDMpICZxdW90OyZndDsmcXVvdDsgJnF1b3Q7aW50ZWdlciZxdW90OyAwCihmaXJzdCEpICgwMDMpICZxdW90Oy0mcXVvdDsgJnF1b3Q7aW50ZWdlciZxdW90OyAxICghKSAmcXVvdDtsaXN0JnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgKDEpICZxdW90O2xpc3QmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKGZpcnN0KSAmcXVvdDtpbnRlZ2VyJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsKY29tbWVudDoKKDAwMikgJnF1b3Q7bm90JnF1b3Q7ICgwMDIpICZxdW90O3BhaXI/JnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsKJnF1b3Q7bGlzdCZxdW90OwoKKGZpcnN0KSAmcXVvdDtpbnRlZ2VyJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsKY29tbWVudDoKI3RydWUKKGZpcnN0ISkgJnF1b3Q7aW50ZWdlciZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7IG5pbAoKKGZsYXR0ZW4hKSBsaXN0IHN1Yi1saXN0LWZvdW5kPyBjb2xsZWN0CmNvbW1lbnQ6CihhbmQpIChudWxsPykgbGlzdCAobm90KSBzdWItbGlzdC1mb3VuZD8KKHJldmVyc2UpIGNvbGxlY3QKCihmbGF0dGVuISkgbGlzdCBzdWItbGlzdC1mb3VuZD8gY29sbGVjdApjb21tZW50OgoobnVsbD8pIGxpc3QKKGZsYXR0ZW4hKSAocmV2ZXJzZSkgY29sbGVjdCAjZmFsc2UgbmlsCgooZmxhdHRlbiEpIGxpc3Qgc3ViLWxpc3QtZm91bmQ/IGNvbGxlY3QKY29tbWVudDoKKG5vdCkgKHBhaXI/KSBsaXN0CihmbGF0dGVuISkgbmlsIHN1Yi1saXN0LWZvdW5kPyAoY29ucykgbGlzdCBjb2xsZWN0CgooZmxhdHRlbiEpIGxpc3Qgc3ViLWxpc3QtZm91bmQ/IGNvbGxlY3QKY29tbWVudDoKKHBhaXI/KSAoMSkgbGlzdAooZmxhdHRlbiEpICghKSBsaXN0ICN0cnVlIChjb25zKSAoISkgKDEpIGxpc3QgKGNvbnMpICgxKSAoMSkgbGlzdCBjb2xsZWN0CgooZmxhdHRlbiEpIGxpc3Qgc3ViLWxpc3QtZm91bmQ/IGNvbGxlY3QKY29tbWVudDoKKG51bGw/KSAoMSkgbGlzdAooZmxhdHRlbiEpICghKSBsaXN0IHN1Yi1saXN0LWZvdW5kPyBjb2xsZWN0CgooZmxhdHRlbiEpIGxpc3Qgc3ViLWxpc3QtZm91bmQ/IGNvbGxlY3QKY29tbWVudDoKI3RydWUKKGZsYXR0ZW4hKSAoISkgbGlzdCBzdWItbGlzdC1mb3VuZD8gKGNvbnMpICgxKSBsaXN0IGNvbGxlY3QKCihmbGF0dGVuKSBsaXN0CmNvbW1lbnQ6CiN0cnVlCihmbGF0dGVuISkgbGlzdCAjZmFsc2UgbmlsCgooZm9yLWVhY2gpIGVmZmVjdCBsaXN0CmNvbW1lbnQ6CiN0cnVlCigwMDMpICZxdW90O2Zvci1lYWNoJnF1b3Q7IGVmZmVjdCBsaXN0CgooZnVuY3Rpb24pICZxdW90O2V4cHJlc3Npb24mcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMikgJnF1b3Q7Y2FhciZxdW90OyAmcXVvdDtleHByZXNzaW9uJnF1b3Q7CgooZnVuY3Rpb24tc29ydCkgJnF1b3Q7c2VudGVuY2VzJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihyZCkgbmlsICZxdW90O2FwcGVuZCZxdW90OyAoc29ydCkgY2xhdXNlLWxlc3M/IChieS1mb3VyKSAmcXVvdDtzZW50ZW5jZXMmcXVvdDsKCihmdW5jdGlvbml6ZSkgJnF1b3Q7Y2xhdXNlJnF1b3Q7ICZxdW90O2FyaXR5LWhhc2gmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwNCkgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDsnZGVmaW5lJnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgKGNsYXVzZS1uYW1lKSAmcXVvdDtjbGF1c2UmcXVvdDsgKGNsYXVzZS1hcmd1bWVudHMpICZxdW90O2NsYXVzZSZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90Oydjb25kJnF1b3Q7ICgwMDMpICZxdW90O2FwcGVuZCZxdW90OyAoY29uZGVmeSkgKG1hcC13aXRoKSBzY2hlbWVmeSAoY2xhdXNlLWJvZHkpICZxdW90O2NsYXVzZSZxdW90OyAmcXVvdDthcml0eS1oYXNoJnF1b3Q7ICgwMDIpICZxdW90O2xpc3QmcXVvdDsgKDAwMykgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDsnZWxzZSZxdW90OyBlcnIKCihnYXRoZXItY291bnQ/ISkgJnF1b3Q7Y2FuZGlkYXRlJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDgpICZxdW90O2FuZCZxdW90OyAoMDAzKSAmcXVvdDs9JnF1b3Q7IDYgKDAwMikgJnF1b3Q7bGVuZ3RoJnF1b3Q7ICZxdW90O2NhbmRpZGF0ZSZxdW90OyAoMDAzKSAmcXVvdDtlcXY/JnF1b3Q7ICNaICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtjYW5kaWRhdGUmcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjRSAoMDAyKSAmcXVvdDtjYWRyJnF1b3Q7ICZxdW90O2NhbmRpZGF0ZSZxdW90OyAoMDAzKSAmcXVvdDtlcXY/JnF1b3Q7ICNEICgwMDIpICZxdW90O2NhZGRyJnF1b3Q7ICZxdW90O2NhbmRpZGF0ZSZxdW90OyAoMDAzKSAmcXVvdDtlcXY/JnF1b3Q7ICMwICgwMDIpICZxdW90O2NhZGRkciZxdW90OyAmcXVvdDtjYW5kaWRhdGUmcXVvdDsgKGRpZ2l0PykgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICgwMDIpICZxdW90O2NkZGRkciZxdW90OyAmcXVvdDtjYW5kaWRhdGUmcXVvdDsgKGRpZ2l0PykgKDAwMikgJnF1b3Q7Y2FkciZxdW90OyAoMDAyKSAmcXVvdDtjZGRkZHImcXVvdDsgJnF1b3Q7Y2FuZGlkYXRlJnF1b3Q7CgooZ2F0aGVyLWNvdW50PykgJnF1b3Q7c3ltYm9sJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihnYXRoZXItY291bnQ/ISkgKDAwMikgJnF1b3Q7c3RyaW5nLSZndDtsaXN0JnF1b3Q7ICgwMDIpICZxdW90O3N5bWJvbC0mZ3Q7c3RyaW5nJnF1b3Q7ICZxdW90O3N5bWJvbCZxdW90OwoKKGdhdGhlci1ub3VuKSAmcXVvdDtzZW50ZW5jZSZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtzZW50ZW5jZSZxdW90OwpuaWwKCihnYXRoZXItbm91bikgJnF1b3Q7c2VudGVuY2UmcXVvdDsKY29tbWVudDoKKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjc3BhY2UgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O3NlbnRlbmNlJnF1b3Q7Cm5pbAoKKGdhdGhlci1ub3VuKSAmcXVvdDtzZW50ZW5jZSZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtzZW50ZW5jZSZxdW90OyAoZ2F0aGVyLW5vdW4pICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtzZW50ZW5jZSZxdW90OwoKKGdhdGhlci12ZXJiKSAmcXVvdDtzZW50ZW5jZSZxdW90Owpjb21tZW50OgooMDAzKSAmcXVvdDtlcXY/JnF1b3Q7ICMpICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtzZW50ZW5jZSZxdW90OwpuaWwKCihnYXRoZXItdmVyYikgJnF1b3Q7c2VudGVuY2UmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7c2VudGVuY2UmcXVvdDsgKGdhdGhlci12ZXJiKSAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7c2VudGVuY2UmcXVvdDsKCihncikgJnF1b3Q7Z2FyYmFnZSZxdW90OyAmcXVvdDt2YWx1ZSZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAzKSAmcXVvdDtiZWdpbiZxdW90OyAoZHIpICZxdW90O2dhcmJhZ2UmcXVvdDsgJnF1b3Q7dmFsdWUmcXVvdDsKCihncnIpICZxdW90O2dhcmJhZ2UmcXVvdDsgJnF1b3Q7dmFsdWUmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMykgJnF1b3Q7YmVnaW4mcXVvdDsgKGRycikgJnF1b3Q7Z2FyYmFnZSZxdW90OyAmcXVvdDt2YWx1ZSZxdW90OwoKKGxlYWRpbmctbmV3bGluZSkgJnF1b3Q7cHJvZ3JhbSZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7Cm5pbAoKKGxlYWRpbmctbmV3bGluZSkgJnF1b3Q7cHJvZ3JhbSZxdW90Owpjb21tZW50OgooMDAzKSAmcXVvdDtlcXY/JnF1b3Q7ICNuZXdsaW5lICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7CigwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7CgoobGVhZGluZy1uZXdsaW5lKSAmcXVvdDtwcm9ncmFtJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCiZxdW90O3Byb2dyYW0mcXVvdDsKCihsaXRlcmFsPykgJnF1b3Q7bGl0ZXJhbC1saXN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDMpICZxdW90O2Vxdj8mcXVvdDsgIyZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7bGl0ZXJhbC1saXN0JnF1b3Q7CgoobWFrZS1aRUQpICZxdW90O1pFRC1saXN0JnF1b3Q7CmNvbW1lbnQ6CigwMDMpICZxdW90O2VxdWFsPyZxdW90OyAmcXVvdDtaRUQtbGlzdCZxdW90OyAoMDA0KSAmcXVvdDtsaXN0JnF1b3Q7ICNlICNyICNyCiZxdW90OyZxdW90OydlcnImcXVvdDsmcXVvdDsKCihtYWtlLVpFRCkgJnF1b3Q7WkVELWxpc3QmcXVvdDsKY29tbWVudDoKKDAwMykgJnF1b3Q7ZXF1YWw/JnF1b3Q7ICZxdW90O1pFRC1saXN0JnF1b3Q7ICgwMDQpICZxdW90O2xpc3QmcXVvdDsgI24gI2kgI2wKJnF1b3Q7JnF1b3Q7JygpJnF1b3Q7JnF1b3Q7CgoobWFrZS1aRUQpICZxdW90O1pFRC1saXN0JnF1b3Q7CmNvbW1lbnQ6CigwMDMpICZxdW90O2VxdWFsPyZxdW90OyAmcXVvdDtaRUQtbGlzdCZxdW90OyAoMDA0KSAmcXVvdDtsaXN0JnF1b3Q7ICNhICNuICNkCiZxdW90OyZxdW90O2FuZCZxdW90OyZxdW90OwoKKG1ha2UtWkVEKSAmcXVvdDtaRUQtbGlzdCZxdW90Owpjb21tZW50OgooMDAzKSAmcXVvdDtlcXVhbD8mcXVvdDsgJnF1b3Q7WkVELWxpc3QmcXVvdDsgKDAwMykgJnF1b3Q7bGlzdCZxdW90OyAjbyAjcgomcXVvdDsmcXVvdDtvciZxdW90OyZxdW90OwoKKG1ha2UtWkVEKSAmcXVvdDtaRUQtbGlzdCZxdW90Owpjb21tZW50OgooMDAzKSAmcXVvdDtlcXVhbD8mcXVvdDsgJnF1b3Q7WkVELWxpc3QmcXVvdDsgKDAwNikgJnF1b3Q7bGlzdCZxdW90OyAjcSAjdSAjbyAjdCAjZQomcXVvdDsmcXVvdDtxdW90ZSZxdW90OyZxdW90OwoKKG1ha2UtWkVEKSAmcXVvdDtaRUQtbGlzdCZxdW90Owpjb21tZW50OgooMDAzKSAmcXVvdDtlcXVhbD8mcXVvdDsgJnF1b3Q7WkVELWxpc3QmcXVvdDsgKDAwMykgJnF1b3Q7bGlzdCZxdW90OyAjcyAjZQomcXVvdDsmcXVvdDtiZWdpbiZxdW90OyZxdW90OwoKKG1ha2UtWkVEKSAmcXVvdDtaRUQtbGlzdCZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtsaXN0LSZndDtzdHJpbmcmcXVvdDsgKDAwMykgJnF1b3Q7YXBwZW5kJnF1b3Q7ICgwMDQpICZxdW90O2xpc3QmcXVvdDsgI1ogI0UgI0QgJnF1b3Q7WkVELWxpc3QmcXVvdDsKCihtYWtlLWNoYXJhY3RlcikgJnF1b3Q7bm91bi1saXN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O2xpc3QtJmd0O3N0cmluZyZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICMjICgwMDMpICZxdW90O2NvbnMmcXVvdDsgI1wgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICZxdW90O25vdW4tbGlzdCZxdW90OwoKKG1ha2UtZXhhY3QpICZxdW90O2V4YWN0LWxpc3QmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMikgJnF1b3Q7bGlzdC0mZ3Q7c3RyaW5nJnF1b3Q7ICgwMDMpICZxdW90O2FwcGVuZCZxdW90OyAoMDAzKSAmcXVvdDtsaXN0JnF1b3Q7ICMjICNlICZxdW90O2V4YWN0LWxpc3QmcXVvdDsKCihtYWtlLWxpdGVyYWwpICZxdW90O2xpdGVyYWwtbGlzdCZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtsaXN0LSZndDtzdHJpbmcmcXVvdDsgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICgwMDIpICZxdW90O3JldmVyc2UmcXVvdDsgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICgwMDIpICZxdW90O3JldmVyc2UmcXVvdDsgJnF1b3Q7bGl0ZXJhbC1saXN0JnF1b3Q7CgoobWFrZS1udW1iZXItY2hhcmFjdGVyKSAmcXVvdDtub3VuLWxpc3QmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMikgJnF1b3Q7bGlzdC0mZ3Q7c3RyaW5nJnF1b3Q7ICgwMDQpICZxdW90O2xpc3QmcXVvdDsgIyMgI1wgKDAwMikgJnF1b3Q7aW50ZWdlci0mZ3Q7Y2hhciZxdW90OyAoMDAyKSAmcXVvdDtzdHJpbmctJmd0O251bWJlciZxdW90OyAoMDAyKSAmcXVvdDtsaXN0LSZndDtzdHJpbmcmcXVvdDsgKDAwMikgJnF1b3Q7Y2RkciZxdW90OyAmcXVvdDtub3VuLWxpc3QmcXVvdDsKCihtYXAtd2l0aCEpICZxdW90O2Z1bmN0aW9uJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsgJnF1b3Q7ZXh0cmEmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7CiZxdW90O2NvbGxlY3QmcXVvdDsKCihtYXAtd2l0aCEpICZxdW90O2Z1bmN0aW9uJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsgJnF1b3Q7ZXh0cmEmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgojdHJ1ZQoobWFwLXdpdGghKSAmcXVvdDtmdW5jdGlvbiZxdW90OyAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDtleHRyYSZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICgwMDMpICZxdW90O2Z1bmN0aW9uJnF1b3Q7ICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7ICZxdW90O2V4dHJhJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihtYXAtd2l0aCkgJnF1b3Q7ZnVuY3Rpb24mcXVvdDsgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDtleHRyYSZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7IChtYXAtd2l0aCEpICZxdW90O2Z1bmN0aW9uJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsgJnF1b3Q7ZXh0cmEmcXVvdDsgbmlsCgoobWVyZ2UhKSAmcXVvdDtjb21wYXJhdG9yJnF1b3Q7ICZxdW90O2xpc3QxJnF1b3Q7ICZxdW90O2xpc3QyJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKKDAwMikgJnF1b3Q7bnVsbD8mcXVvdDsgJnF1b3Q7bGlzdDImcXVvdDsKKDAwMykgJnF1b3Q7YXBwZW5kJnF1b3Q7ICgwMDIpICZxdW90O3JldmVyc2UmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OyAmcXVvdDtsaXN0MSZxdW90OwoKKG1lcmdlISkgJnF1b3Q7Y29tcGFyYXRvciZxdW90OyAmcXVvdDtsaXN0MSZxdW90OyAmcXVvdDtsaXN0MiZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDIpICZxdW90O251bGw/JnF1b3Q7ICZxdW90O2xpc3QxJnF1b3Q7CigwMDMpICZxdW90O2FwcGVuZCZxdW90OyAoMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsgJnF1b3Q7bGlzdDImcXVvdDsKCihtZXJnZSEpICZxdW90O2NvbXBhcmF0b3ImcXVvdDsgJnF1b3Q7bGlzdDEmcXVvdDsgJnF1b3Q7bGlzdDImcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAzKSAmcXVvdDtjb21wYXJhdG9yJnF1b3Q7ICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtsaXN0MiZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7bGlzdDEmcXVvdDsKKG1lcmdlISkgJnF1b3Q7Y29tcGFyYXRvciZxdW90OyAmcXVvdDtsaXN0MSZxdW90OyAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7bGlzdDImcXVvdDsgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7bGlzdDImcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKG1lcmdlISkgJnF1b3Q7Y29tcGFyYXRvciZxdW90OyAmcXVvdDtsaXN0MSZxdW90OyAmcXVvdDtsaXN0MiZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihtZXJnZSEpICZxdW90O2NvbXBhcmF0b3ImcXVvdDsgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICZxdW90O2xpc3QxJnF1b3Q7ICZxdW90O2xpc3QyJnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O2xpc3QxJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihtZXJnZSkgJnF1b3Q7Y29tcGFyYXRvciZxdW90OyAmcXVvdDtsaXN0MSZxdW90OyAmcXVvdDtsaXN0MiZxdW90Owpjb21tZW50OgojdHJ1ZQoobWVyZ2UhKSAmcXVvdDtjb21wYXJhdG9yJnF1b3Q7ICZxdW90O2xpc3QxJnF1b3Q7ICZxdW90O2xpc3QyJnF1b3Q7IG5pbAoKKG1wKSAmcXVvdDtmdW5jdGlvbiZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7CmNvbW1lbnQ6CigwMDIpICZxdW90O251bGw/JnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsKbmlsCgoobXApICZxdW90O2Z1bmN0aW9uJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsKY29tbWVudDoKKDAwMikgJnF1b3Q7cGFpcj8mcXVvdDsgJnF1b3Q7bGlzdCZxdW90OwooYykgKDAwMikgJnF1b3Q7ZnVuY3Rpb24mcXVvdDsgKDEpICZxdW90O2xpc3QmcXVvdDsgKG1wKSAmcXVvdDtmdW5jdGlvbiZxdW90OyAoISkgJnF1b3Q7bGlzdCZxdW90OwoKKG1wKSAmcXVvdDtmdW5jdGlvbiZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O2Z1bmN0aW9uJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsKCihuZXdsaW5lLXNwYWNlISkgJnF1b3Q7cHJvZ3JhbSZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICNuZXdsaW5lIChuZXdsaW5lLXNwYWNlIWEpICZxdW90O3Byb2dyYW0mcXVvdDsKCihuZXdsaW5lLXNwYWNlIWEpICZxdW90O3Byb2dyYW0mcXVvdDsKY29tbWVudDoKI3RydWUKKG5ld2xpbmUtc3BhY2UhYWEpICZxdW90O3Byb2dyYW0mcXVvdDsgKDAwMikgJnF1b3Q7cmV2ZXJzZSZxdW90OyAobmV3bGluZS1zcGFjZSFhYikgJnF1b3Q7cHJvZ3JhbSZxdW90OyBuaWwKCihuZXdsaW5lLXNwYWNlIWFhKSAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O3RyYW5zZm9ybWVkJnF1b3Q7CmNvbW1lbnQ6CigwMDMpICZxdW90O2VxdWFsPyZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O3RyYW5zZm9ybWVkJnF1b3Q7CiZxdW90O3Byb2dyYW0mcXVvdDsKCihuZXdsaW5lLXNwYWNlIWFhKSAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O3RyYW5zZm9ybWVkJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihuZXdsaW5lLXNwYWNlIWEpICZxdW90O3RyYW5zZm9ybWVkJnF1b3Q7CgoobmV3bGluZS1zcGFjZSFhYikgJnF1b3Q7cHJvZ3JhbSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDIpICZxdW90O251bGw/JnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsKJnF1b3Q7Y29sbGVjdCZxdW90OwoKKG5ld2xpbmUtc3BhY2UhYWIpICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OwooMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihuZXdsaW5lLXNwYWNlIWFiKSAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKKDAwMykgJnF1b3Q7YW5kJnF1b3Q7ICgwMDMpICZxdW90O2Vxdj8mcXVvdDsgI25ld2xpbmUgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgKDAwMykgJnF1b3Q7b3ImcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjc3BhY2UgKDAwMikgJnF1b3Q7Y2FkciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICgwMDMpICZxdW90O2Vxdj8mcXVvdDsgI3RhYiAoMDAyKSAmcXVvdDtjYWRyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsKKG5ld2xpbmUtc3BhY2UhYWIpICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihuZXdsaW5lLXNwYWNlIWFiKSAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKI3RydWUKKG5ld2xpbmUtc3BhY2UhYWIpICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKG5ld2xpbmUtc3BhY2UpICZxdW90O3Byb2dyYW0mcXVvdDsKY29tbWVudDoKI3RydWUKKG5ld2xpbmUtc3BhY2UhKSAmcXVvdDtwcm9ncmFtJnF1b3Q7CgoobmV3bGluZS1zcGFjZS10YWItcmVwZWF0cyEpICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAzKSAmcXVvdDtvciZxdW90OyAoMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICgwMDIpICZxdW90O251bGw/JnF1b3Q7ICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7CigwMDMpICZxdW90O2FwcGVuZCZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihuZXdsaW5lLXNwYWNlLXRhYi1yZXBlYXRzISkgJnF1b3Q7cHJvZ3JhbSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDMpICZxdW90O2FuZCZxdW90OyAoMDAzKSAmcXVvdDtlcXY/JnF1b3Q7ICNuZXdsaW5lICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICgwMDMpICZxdW90O2Vxdj8mcXVvdDsgI25ld2xpbmUgKDAwMikgJnF1b3Q7Y2FkciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7CihuZXdsaW5lLXNwYWNlLXRhYi1yZXBlYXRzISkgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKG5ld2xpbmUtc3BhY2UtdGFiLXJlcGVhdHMhKSAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKKDAwMykgJnF1b3Q7YW5kJnF1b3Q7ICgwMDMpICZxdW90O29yJnF1b3Q7ICgwMDMpICZxdW90O2Vxdj8mcXVvdDsgI3NwYWNlICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICgwMDMpICZxdW90O2Vxdj8mcXVvdDsgI3RhYiAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OyAoMDAzKSAmcXVvdDtvciZxdW90OyAoMDAzKSAmcXVvdDtlcXY/JnF1b3Q7ICNzcGFjZSAoMDAyKSAmcXVvdDtjYWRyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjdGFiICgwMDIpICZxdW90O2NhZHImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OwoobmV3bGluZS1zcGFjZS10YWItcmVwZWF0cyEpICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihuZXdsaW5lLXNwYWNlLXRhYi1yZXBlYXRzISkgJnF1b3Q7cHJvZ3JhbSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihuZXdsaW5lLXNwYWNlLXRhYi1yZXBlYXRzISkgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CgoobmV3bGluZS1zcGFjZS10YWItcmVwZWF0cykgJnF1b3Q7cHJvZ3JhbSZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7IChuZXdsaW5lLXNwYWNlLXRhYi1yZXBlYXRzISkgJnF1b3Q7cHJvZ3JhbSZxdW90OyBuaWwKCihuZXdsaW5lcykgJnF1b3Q7Y2xhdXNlcyZxdW90Owpjb21tZW50OgojdHJ1ZQooYWRkLWJldHdlZW4tcmEpIChtYXAtd2l0aCkgYWRkLWJldHdlZW4tcmEgJnF1b3Q7Y2xhdXNlcyZxdW90OyAoMDAyKSAmcXVvdDtsaXN0JnF1b3Q7ICNuZXdsaW5lICgwMDIpICZxdW90O2xpc3QmcXVvdDsgKDAwMykgJnF1b3Q7bGlzdCZxdW90OyAjbmV3bGluZSAjbmV3bGluZQoKKG5vcm1hbC1jaGFyYWN0ZXI/KSAmcXVvdDtub3VuLWxpc3QmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7bm91bi1saXN0JnF1b3Q7ICMjCgoobm90KSB2YWx1ZQpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtub3QmcXVvdDsgdmFsdWUKCihub3QtcmV0dXJuPykgJnF1b3Q7Y2hhcmFjdGVyJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O25vdCZxdW90OyAoMDAzKSAmcXVvdDtlcXY/JnF1b3Q7ICNyZXR1cm4gJnF1b3Q7Y2hhcmFjdGVyJnF1b3Q7Cgoobm91biEpICZxdW90O25vdW4tbGlzdCZxdW90OyAmcXVvdDtudW1iZXI/JnF1b3Q7CmNvbW1lbnQ6CiZxdW90O251bWJlcj8mcXVvdDsKKG1ha2UtZXhhY3QpICZxdW90O25vdW4tbGlzdCZxdW90OwoKKG5vdW4hKSAmcXVvdDtub3VuLWxpc3QmcXVvdDsgJnF1b3Q7bnVtYmVyPyZxdW90Owpjb21tZW50OgoobGl0ZXJhbD8pICZxdW90O25vdW4tbGlzdCZxdW90OwoobWFrZS1saXRlcmFsKSAmcXVvdDtub3VuLWxpc3QmcXVvdDsKCihub3VuISkgJnF1b3Q7bm91bi1saXN0JnF1b3Q7ICZxdW90O251bWJlcj8mcXVvdDsKY29tbWVudDoKKHRydWU/KSAmcXVvdDtub3VuLWxpc3QmcXVvdDsKJnF1b3Q7JnF1b3Q7I3QmcXVvdDsmcXVvdDsKCihub3VuISkgJnF1b3Q7bm91bi1saXN0JnF1b3Q7ICZxdW90O251bWJlcj8mcXVvdDsKY29tbWVudDoKKGZhbHNlPykgJnF1b3Q7bm91bi1saXN0JnF1b3Q7CiZxdW90OyZxdW90OyNmJnF1b3Q7JnF1b3Q7Cgoobm91biEpICZxdW90O25vdW4tbGlzdCZxdW90OyAmcXVvdDtudW1iZXI/JnF1b3Q7CmNvbW1lbnQ6CihudW1iZXItY2hhcmFjdGVyPykgJnF1b3Q7bm91bi1saXN0JnF1b3Q7CihtYWtlLW51bWJlci1jaGFyYWN0ZXIpICZxdW90O25vdW4tbGlzdCZxdW90OwoKKG5vdW4hKSAmcXVvdDtub3VuLWxpc3QmcXVvdDsgJnF1b3Q7bnVtYmVyPyZxdW90Owpjb21tZW50Ogoobm9ybWFsLWNoYXJhY3Rlcj8pICZxdW90O25vdW4tbGlzdCZxdW90OwoobWFrZS1jaGFyYWN0ZXIpICZxdW90O25vdW4tbGlzdCZxdW90OwoKKG5vdW4hKSAmcXVvdDtub3VuLWxpc3QmcXVvdDsgJnF1b3Q7bnVtYmVyPyZxdW90Owpjb21tZW50OgojdHJ1ZQoobWFrZS1aRUQpICZxdW90O25vdW4tbGlzdCZxdW90OwoKKG5vdW4pICZxdW90O25vdW4tbGlzdCZxdW90Owpjb21tZW50OgojdHJ1ZQoobm91biEpICZxdW90O25vdW4tbGlzdCZxdW90OyAoMDAyKSAmcXVvdDtzdHJpbmctJmd0O251bWJlciZxdW90OyAoMDAyKSAmcXVvdDtsaXN0LSZndDtzdHJpbmcmcXVvdDsgJnF1b3Q7bm91bi1saXN0JnF1b3Q7CgoobnVsbD8pIHZhbHVlCmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O251bGw/JnF1b3Q7IHZhbHVlCgoobnVtYmVyLWNoYXJhY3Rlcj8pICZxdW90O25vdW4tbGlzdCZxdW90Owpjb21tZW50OgojdHJ1ZQooMDA0KSAmcXVvdDthbmQmcXVvdDsgKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7bm91bi1saXN0JnF1b3Q7ICMjICgwMDMpICZxdW90O2Vxdj8mcXVvdDsgKDAwMikgJnF1b3Q7Y2FkciZxdW90OyAmcXVvdDtub3VuLWxpc3QmcXVvdDsgIzAgKDAwMikgJnF1b3Q7bm90JnF1b3Q7ICgwMDIpICZxdW90O251bGw/JnF1b3Q7ICgwMDIpICZxdW90O2NkZHImcXVvdDsgJnF1b3Q7bm91bi1saXN0JnF1b3Q7CgoocGFpcj8pIHZhbHVlCmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O3BhaXI/JnF1b3Q7IHZhbHVlCgoocG9wKSAmcXVvdDtzdGFjayZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7c3RhY2smcXVvdDsKCihwciEpICZxdW90O3ZhbHVlJnF1b3Q7ICZxdW90O291dHB1dC1zdHJpbmcmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMykgJnF1b3Q7YmVnaW4mcXVvdDsgKDAwMykgJnF1b3Q7ZGlzcGxheSZxdW90OyAocHIhYSkgJnF1b3Q7dmFsdWUmcXVvdDsgbmlsICZxdW90O291dHB1dC1zdHJpbmcmcXVvdDsgKHByIWIpICZxdW90O291dHB1dC1zdHJpbmcmcXVvdDsgKDAwMikgJnF1b3Q7Z2V0LW91dHB1dC1zdHJpbmcmcXVvdDsgJnF1b3Q7b3V0cHV0LXN0cmluZyZxdW90OwoKKHByIWEpICZxdW90O3ZhbHVlJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKKDAwMikgJnF1b3Q7Y2hhcj8mcXVvdDsgJnF1b3Q7dmFsdWUmcXVvdDsKKHByIWFhKSAoMDAyKSAmcXVvdDtsaXN0LSZndDtzdHJpbmcmcXVvdDsgKDAwMykgJnF1b3Q7bGlzdCZxdW90OyAjIyAmcXVvdDt2YWx1ZSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CgoocHIhYSkgJnF1b3Q7dmFsdWUmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtzdHJpbmc/JnF1b3Q7ICZxdW90O3ZhbHVlJnF1b3Q7CihwciFhYSkgKDAwNCkgJnF1b3Q7c3RyaW5nLWFwcGVuZCZxdW90OyAmcXVvdDsmcXVvdDtcJnF1b3Q7JnF1b3Q7JnF1b3Q7ICZxdW90O3ZhbHVlJnF1b3Q7ICZxdW90OyZxdW90O1wmcXVvdDsmcXVvdDsmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKHByIWEpICZxdW90O3ZhbHVlJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKKDAwMikgJnF1b3Q7c3ltYm9sPyZxdW90OyAmcXVvdDt2YWx1ZSZxdW90OwoocHIhYWEpICgwMDIpICZxdW90O3N5bWJvbC0mZ3Q7c3RyaW5nJnF1b3Q7ICZxdW90O3ZhbHVlJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihwciFhKSAmcXVvdDt2YWx1ZSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDIpICZxdW90O251bWJlcj8mcXVvdDsgJnF1b3Q7dmFsdWUmcXVvdDsKKHByIWFhKSAoMDAyKSAmcXVvdDtudW1iZXItJmd0O3N0cmluZyZxdW90OyAmcXVvdDt2YWx1ZSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CgoocHIhYSkgJnF1b3Q7dmFsdWUmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAzKSAmcXVvdDthbmQmcXVvdDsgKDAwMikgJnF1b3Q7Ym9vbGVhbj8mcXVvdDsgJnF1b3Q7dmFsdWUmcXVvdDsgJnF1b3Q7dmFsdWUmcXVvdDsKKHByIWFhKSAmcXVvdDsmcXVvdDsjdHJ1ZSZxdW90OyZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CgoocHIhYSkgJnF1b3Q7dmFsdWUmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtib29sZWFuPyZxdW90OyAmcXVvdDt2YWx1ZSZxdW90OwoocHIhYWEpICZxdW90OyZxdW90OyNmYWxzZSZxdW90OyZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CgoocHIhYSkgJnF1b3Q7dmFsdWUmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDt2YWx1ZSZxdW90OwooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihwciFhKSAmcXVvdDt2YWx1ZSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihwciFhKSAoISkgJnF1b3Q7dmFsdWUmcXVvdDsgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAocHIhYSkgKDEpICZxdW90O3ZhbHVlJnF1b3Q7IG5pbCAmcXVvdDtjb2xsZWN0JnF1b3Q7CgoocHIhYWEpICZxdW90O3N0cmluZyZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDIpICZxdW90O251bGw/JnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKJnF1b3Q7c3RyaW5nJnF1b3Q7CgoocHIhYWEpICZxdW90O3N0cmluZyZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O3JldmVyc2UmcXVvdDsgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDtzdHJpbmcmcXVvdDsgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsmcXVvdDsuJnF1b3Q7JnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihwciFiKSAmcXVvdDtvdXRwdXQtc3RyaW5nJnF1b3Q7ICZxdW90O3ZhbHVlJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDMpICZxdW90O2JlZ2luJnF1b3Q7ICgwMDIpICZxdW90O2Nsb3NlLW91dHB1dC1wb3J0JnF1b3Q7ICZxdW90O291dHB1dC1zdHJpbmcmcXVvdDsgJnF1b3Q7dmFsdWUmcXVvdDsKCihwcikgJnF1b3Q7dmFsdWUmcXVvdDsKY29tbWVudDoKI3RydWUKKHByISkgJnF1b3Q7dmFsdWUmcXVvdDsgKDAwMSkgJnF1b3Q7b3Blbi1vdXRwdXQtc3RyaW5nJnF1b3Q7CgoocHJvZ3JhbWl6ZSkgJnF1b3Q7cHJvZ3JhbSZxdW90OyAmcXVvdDthcml0eS1oYXNoJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J2JlZ2luJnF1b3Q7IChtYXAtd2l0aCkgZnVuY3Rpb25pemUgJnF1b3Q7cHJvZ3JhbSZxdW90OyAmcXVvdDthcml0eS1oYXNoJnF1b3Q7CgoocHVzaCkgJnF1b3Q7b2JqZWN0JnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7b2JqZWN0JnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7CgoocmQhKSAmcXVvdDtmdW5jdGlvbiZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7CmNvbW1lbnQ6CigwMDIpICZxdW90O251bGw/JnF1b3Q7ICghKSAmcXVvdDtsaXN0JnF1b3Q7CigxKSAmcXVvdDtsaXN0JnF1b3Q7CgoocmQhKSAmcXVvdDtmdW5jdGlvbiZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihyZCEpICZxdW90O2Z1bmN0aW9uJnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgKDAwMykgJnF1b3Q7ZnVuY3Rpb24mcXVvdDsgKDEpICghKSAmcXVvdDtsaXN0JnF1b3Q7ICgxKSAmcXVvdDtsaXN0JnF1b3Q7ICghKSAoISkgJnF1b3Q7bGlzdCZxdW90OwoKKHJkKSAmcXVvdDtmaW5hbCZxdW90OyAmcXVvdDtmdW5jdGlvbiZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihyZCEpICZxdW90O2Z1bmN0aW9uJnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7ZmluYWwmcXVvdDsgKDAwMikgJnF1b3Q7cmV2ZXJzZSZxdW90OyAmcXVvdDtsaXN0JnF1b3Q7CgoocmVhZC1hbGwhKSAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihyZWFkLWFsbCFhKSAoMDAxKSAmcXVvdDtyZWFkLWNoYXImcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKHJlYWQtYWxsIWEpICZxdW90O2NoYXJhY3RlciZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDIpICZxdW90O2VvZi1vYmplY3Q/JnF1b3Q7ICZxdW90O2NoYXJhY3RlciZxdW90OwomcXVvdDtjb2xsZWN0JnF1b3Q7CgoocmVhZC1hbGwhYSkgJnF1b3Q7Y2hhcmFjdGVyJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKI3RydWUKKHJlYWQtYWxsISkgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDtjaGFyYWN0ZXImcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKHJlYWQtYWxsKQpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7IChyZWFkLWFsbCEpIG5pbAoKKHJlYWQtc2VudGVuY2UhYSkgJnF1b3Q7c2VudGVuY2UmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtzZW50ZW5jZSZxdW90OwomcXVvdDtjb2xsZWN0JnF1b3Q7CgoocmVhZC1zZW50ZW5jZSFhKSAmcXVvdDtzZW50ZW5jZSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDMpICZxdW90O2Vxdj8mcXVvdDsgI3NwYWNlICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtzZW50ZW5jZSZxdW90OwoocmVhZC1zZW50ZW5jZSFhKSAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7c2VudGVuY2UmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKHJlYWQtc2VudGVuY2UhYSkgJnF1b3Q7c2VudGVuY2UmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAzKSAmcXVvdDtlcXY/JnF1b3Q7ICMoICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtzZW50ZW5jZSZxdW90OwoocmVhZC1zZW50ZW5jZSFhYSkgJnF1b3Q7c2VudGVuY2UmcXVvdDsgKGdhdGhlci12ZXJiKSAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7c2VudGVuY2UmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKHJlYWQtc2VudGVuY2UhYSkgJnF1b3Q7c2VudGVuY2UmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgojdHJ1ZQoocmVhZC1zZW50ZW5jZSFhYikgJnF1b3Q7c2VudGVuY2UmcXVvdDsgKGdhdGhlci1ub3VuKSAmcXVvdDtzZW50ZW5jZSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CgoocmVhZC1zZW50ZW5jZSFhYSkgJnF1b3Q7c2VudGVuY2UmcXVvdDsgJnF1b3Q7Z2F0aGVyLXZlcmImcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgojdHJ1ZQoocmVhZC1zZW50ZW5jZSFhKSAodGFpbHMpICgwMDMpICZxdW90OysmcXVvdDsgMiAoMDAyKSAmcXVvdDtsZW5ndGgmcXVvdDsgJnF1b3Q7Z2F0aGVyLXZlcmImcXVvdDsgJnF1b3Q7c2VudGVuY2UmcXVvdDsgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAodmVyYikgJnF1b3Q7Z2F0aGVyLXZlcmImcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKHJlYWQtc2VudGVuY2UhYWIpICZxdW90O3NlbnRlbmNlJnF1b3Q7ICZxdW90O2dhdGhlci1ub3VuJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKI3RydWUKKHJlYWQtc2VudGVuY2UhYSkgKHRhaWxzKSAoMDAyKSAmcXVvdDtsZW5ndGgmcXVvdDsgJnF1b3Q7Z2F0aGVyLW5vdW4mcXVvdDsgJnF1b3Q7c2VudGVuY2UmcXVvdDsgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAobm91bikgJnF1b3Q7Z2F0aGVyLW5vdW4mcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKHJlYWQtc2VudGVuY2UhYikgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDtvdXRwdXQtc3RyaW5nJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDMpICZxdW90O2JlZ2luJnF1b3Q7ICgwMDMpICZxdW90O2Rpc3BsYXkmcXVvdDsgJnF1b3Q7bGlzdCZxdW90OyAmcXVvdDtvdXRwdXQtc3RyaW5nJnF1b3Q7IChyZWFkLXNlbnRlbmNlIWJhKSAmcXVvdDtvdXRwdXQtc3RyaW5nJnF1b3Q7ICgwMDIpICZxdW90O2dldC1vdXRwdXQtc3RyaW5nJnF1b3Q7ICZxdW90O291dHB1dC1zdHJpbmcmcXVvdDsKCihyZWFkLXNlbnRlbmNlIWJhKSAmcXVvdDtvdXRwdXQtc3RyaW5nJnF1b3Q7ICZxdW90O2dldC1vdXRwdXQtc3RyaW5nJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDMpICZxdW90O2JlZ2luJnF1b3Q7ICgwMDIpICZxdW90O2Nsb3NlLW91dHB1dC1wb3J0JnF1b3Q7ICZxdW90O291dHB1dC1zdHJpbmcmcXVvdDsgKHJlYWQtc2VudGVuY2UhYmFhKSAoMDAyKSAmcXVvdDtvcGVuLWlucHV0LXN0cmluZyZxdW90OyAmcXVvdDtnZXQtb3V0cHV0LXN0cmluZyZxdW90OwoKKHJlYWQtc2VudGVuY2UhYmFhKSAmcXVvdDtpbnB1dC1zdHJpbmcmcXVvdDsKY29tbWVudDoKI3RydWUKKHJlYWQtc2VudGVuY2UhYmFhYSkgJnF1b3Q7aW5wdXQtc3RyaW5nJnF1b3Q7ICgwMDIpICZxdW90O3JlYWQmcXVvdDsgJnF1b3Q7aW5wdXQtc3RyaW5nJnF1b3Q7CgoocmVhZC1zZW50ZW5jZSFiYWFhKSAmcXVvdDtpbnB1dC1zdHJpbmcmcXVvdDsgJnF1b3Q7YW5zd2VyJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDMpICZxdW90O2JlZ2luJnF1b3Q7ICgwMDIpICZxdW90O2Nsb3NlLWlucHV0LXBvcnQmcXVvdDsgJnF1b3Q7aW5wdXQtc3RyaW5nJnF1b3Q7ICZxdW90O2Fuc3dlciZxdW90OwoKKHJlYWQtc2VudGVuY2UpICZxdW90O3NlbnRlbmNlJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihyZWFkLXNlbnRlbmNlIWIpICgwMDIpICZxdW90O3JldmVyc2UmcXVvdDsgKHJlYWQtc2VudGVuY2UhYSkgJnF1b3Q7c2VudGVuY2UmcXVvdDsgbmlsICgwMDEpICZxdW90O29wZW4tb3V0cHV0LXN0cmluZyZxdW90OwoKKHJlYWQtc2VudGVuY2VzKSAmcXVvdDtzZW50ZW5jZXMmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMykgJnF1b3Q7bWFwJnF1b3Q7IHJlYWQtc2VudGVuY2UgJnF1b3Q7c2VudGVuY2VzJnF1b3Q7CgoocmVhZHktY2xhdXNlKSAmcXVvdDtjbGF1c2UmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAoMDAyKSAmcXVvdDtjYWFhciZxdW90OyAmcXVvdDtjbGF1c2UmcXVvdDsgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAoMDAyKSAmcXVvdDtjZGFyJnF1b3Q7ICZxdW90O2NsYXVzZSZxdW90OyAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7Y2xhdXNlJnF1b3Q7CgoocmVhZHktcHJvZ3JhbSkgJnF1b3Q7cHJvZ3JhbSZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAzKSAmcXVvdDttYXAmcXVvdDsgcmVhZHktY2xhdXNlICZxdW90O3Byb2dyYW0mcXVvdDsKCihyZXBsYWNlLXRyYWlsaW5nLXdoaXRlLXNwYWNlISkgJnF1b3Q7cHJvZ3JhbSZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7Cm5pbAoKKHJlcGxhY2UtdHJhaWxpbmctd2hpdGUtc3BhY2UhKSAmcXVvdDtwcm9ncmFtJnF1b3Q7CmNvbW1lbnQ6CigwMDUpICZxdW90O29yJnF1b3Q7ICgwMDMpICZxdW90O2Vxdj8mcXVvdDsgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgI3NwYWNlICgwMDMpICZxdW90O2Vxdj8mcXVvdDsgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgI3RhYiAoMDAzKSAmcXVvdDtlcXY/JnF1b3Q7ICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICNyZXR1cm4gKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OyAjbmV3bGluZQoocmVwbGFjZS10cmFpbGluZy13aGl0ZS1zcGFjZSEpICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7CgoocmVwbGFjZS10cmFpbGluZy13aGl0ZS1zcGFjZSEpICZxdW90O3Byb2dyYW0mcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAjbmV3bGluZSAmcXVvdDtwcm9ncmFtJnF1b3Q7CgoocmVwbGFjZS10cmFpbGluZy13aGl0ZS1zcGFjZSkgJnF1b3Q7cHJvZ3JhbSZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7IChyZXBsYWNlLXRyYWlsaW5nLXdoaXRlLXNwYWNlISkgKDAwMikgJnF1b3Q7cmV2ZXJzZSZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7CgoocmV2ZXJzZSkgbGlzdApjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7IGxpc3QKCihzY2hlbWVmeSEpICZxdW90O2V4cHJlc3Npb24mcXVvdDsgJnF1b3Q7YXJpdHktaGFzaCZxdW90OyAmcXVvdDtzdGFjayZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtleHByZXNzaW9uJnF1b3Q7Cih0b3ApICZxdW90O3N0YWNrJnF1b3Q7Cgooc2NoZW1lZnkhKSAmcXVvdDtleHByZXNzaW9uJnF1b3Q7ICZxdW90O2FyaXR5LWhhc2gmcXVvdDsgJnF1b3Q7c3RhY2smcXVvdDsKY29tbWVudDoKKGFwcGxpY2F0aW9uPykgJnF1b3Q7ZXhwcmVzc2lvbiZxdW90Owooc2NoZW1lZnkhYSkgJnF1b3Q7ZXhwcmVzc2lvbiZxdW90OyAmcXVvdDthcml0eS1oYXNoJnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7IChmdW5jdGlvbikgJnF1b3Q7ZXhwcmVzc2lvbiZxdW90OwoKKHNjaGVtZWZ5ISkgJnF1b3Q7ZXhwcmVzc2lvbiZxdW90OyAmcXVvdDthcml0eS1oYXNoJnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihzY2hlbWVmeSEpICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtleHByZXNzaW9uJnF1b3Q7ICZxdW90O2FyaXR5LWhhc2gmcXVvdDsgKHB1c2gpICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtleHByZXNzaW9uJnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7Cgooc2NoZW1lZnkhYSkgJnF1b3Q7ZXhwcmVzc2lvbiZxdW90OyAmcXVvdDthcml0eS1oYXNoJnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7ICZxdW90O2Z1bmN0aW9uJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihzY2hlbWVmeSFhYSkgJnF1b3Q7ZXhwcmVzc2lvbiZxdW90OyAmcXVvdDthcml0eS1oYXNoJnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7ICZxdW90O2Z1bmN0aW9uJnF1b3Q7IChhcml0eSkgJnF1b3Q7YXJpdHktaGFzaCZxdW90OyAmcXVvdDtmdW5jdGlvbiZxdW90OwoKKHNjaGVtZWZ5IWFhKSAmcXVvdDtleHByZXNzaW9uJnF1b3Q7ICZxdW90O2FyaXR5LWhhc2gmcXVvdDsgJnF1b3Q7c3RhY2smcXVvdDsgJnF1b3Q7ZnVuY3Rpb24mcXVvdDsgJnF1b3Q7YXJpdHkmcXVvdDsKY29tbWVudDoKKGdhdGhlci1jb3VudD8pICZxdW90O2Z1bmN0aW9uJnF1b3Q7CihzY2hlbWVmeSEpICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtleHByZXNzaW9uJnF1b3Q7ICZxdW90O2FyaXR5LWhhc2gmcXVvdDsgKHB1c2gpIChmaXJzdCkgJnF1b3Q7YXJpdHkmcXVvdDsgJnF1b3Q7c3RhY2smcXVvdDsgKHRhaWxzKSAmcXVvdDthcml0eSZxdW90OyAmcXVvdDtzdGFjayZxdW90OwoKKHNjaGVtZWZ5IWFhKSAmcXVvdDtleHByZXNzaW9uJnF1b3Q7ICZxdW90O2FyaXR5LWhhc2gmcXVvdDsgJnF1b3Q7c3RhY2smcXVvdDsgJnF1b3Q7ZnVuY3Rpb24mcXVvdDsgJnF1b3Q7YXJpdHkmcXVvdDsKY29tbWVudDoKKDAwMykgJnF1b3Q7ZXE/JnF1b3Q7ICZxdW90O2Z1bmN0aW9uJnF1b3Q7ICZxdW90OydaRUQxJnF1b3Q7CihzY2hlbWVmeSEpICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtleHByZXNzaW9uJnF1b3Q7ICZxdW90O2FyaXR5LWhhc2gmcXVvdDsgKHB1c2gpICgwMDUpICZxdW90O2xpc3QmcXVvdDsgJnF1b3Q7J2lmJnF1b3Q7ICgwMDMpICZxdW90O2xpc3QmcXVvdDsgJnF1b3Q7J3Byb21pc2U/JnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J2NhciZxdW90OyAoZmlyc3QpICZxdW90O2FyaXR5JnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7ICgwMDMpICZxdW90O2xpc3QmcXVvdDsgJnF1b3Q7J2ZvcmNlJnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J2NhciZxdW90OyAoZmlyc3QpICZxdW90O2FyaXR5JnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7J2NhciZxdW90OyAoZmlyc3QpICZxdW90O2FyaXR5JnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7ICh0YWlscykgJnF1b3Q7YXJpdHkmcXVvdDsgJnF1b3Q7c3RhY2smcXVvdDsKCihzY2hlbWVmeSFhYSkgJnF1b3Q7ZXhwcmVzc2lvbiZxdW90OyAmcXVvdDthcml0eS1oYXNoJnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7ICZxdW90O2Z1bmN0aW9uJnF1b3Q7ICZxdW90O2FyaXR5JnF1b3Q7CmNvbW1lbnQ6CigwMDMpICZxdW90O2VxPyZxdW90OyAmcXVvdDtmdW5jdGlvbiZxdW90OyAmcXVvdDsnWkVEISZxdW90Owooc2NoZW1lZnkhKSAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7ZXhwcmVzc2lvbiZxdW90OyAmcXVvdDthcml0eS1oYXNoJnF1b3Q7IChwdXNoKSAoMDA1KSAmcXVvdDtsaXN0JnF1b3Q7ICZxdW90OydpZiZxdW90OyAoMDAzKSAmcXVvdDtsaXN0JnF1b3Q7ICZxdW90Oydwcm9taXNlPyZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydjZHImcXVvdDsgKGZpcnN0KSAmcXVvdDthcml0eSZxdW90OyAmcXVvdDtzdGFjayZxdW90OyAoMDAzKSAmcXVvdDtsaXN0JnF1b3Q7ICZxdW90Oydmb3JjZSZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydjZHImcXVvdDsgKGZpcnN0KSAmcXVvdDthcml0eSZxdW90OyAmcXVvdDtzdGFjayZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICZxdW90OydjZHImcXVvdDsgKGZpcnN0KSAmcXVvdDthcml0eSZxdW90OyAmcXVvdDtzdGFjayZxdW90OyAodGFpbHMpICZxdW90O2FyaXR5JnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7Cgooc2NoZW1lZnkhYWEpICZxdW90O2V4cHJlc3Npb24mcXVvdDsgJnF1b3Q7YXJpdHktaGFzaCZxdW90OyAmcXVvdDtzdGFjayZxdW90OyAmcXVvdDtmdW5jdGlvbiZxdW90OyAmcXVvdDthcml0eSZxdW90Owpjb21tZW50OgooMDAzKSAmcXVvdDtlcT8mcXVvdDsgJnF1b3Q7ZnVuY3Rpb24mcXVvdDsgJnF1b3Q7J1pFRGMmcXVvdDsKKHNjaGVtZWZ5ISkgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICZxdW90O2V4cHJlc3Npb24mcXVvdDsgJnF1b3Q7YXJpdHktaGFzaCZxdW90OyAocHVzaCkgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAmcXVvdDsnY29ucyZxdW90OyAoMDAzKSAmcXVvdDttYXAmcXVvdDsgZGVsYXktd3JhcCAoZmlyc3QpICZxdW90O2FyaXR5JnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7ICh0YWlscykgJnF1b3Q7YXJpdHkmcXVvdDsgJnF1b3Q7c3RhY2smcXVvdDsKCihzY2hlbWVmeSFhYSkgJnF1b3Q7ZXhwcmVzc2lvbiZxdW90OyAmcXVvdDthcml0eS1oYXNoJnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7ICZxdW90O2Z1bmN0aW9uJnF1b3Q7ICZxdW90O2FyaXR5JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCihzY2hlbWVmeSEpICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtleHByZXNzaW9uJnF1b3Q7ICZxdW90O2FyaXR5LWhhc2gmcXVvdDsgKHB1c2gpICgwMDMpICZxdW90O2NvbnMmcXVvdDsgJnF1b3Q7ZnVuY3Rpb24mcXVvdDsgKGZpcnN0KSAmcXVvdDthcml0eSZxdW90OyAmcXVvdDtzdGFjayZxdW90OyAodGFpbHMpICZxdW90O2FyaXR5JnF1b3Q7ICZxdW90O3N0YWNrJnF1b3Q7Cgooc2NoZW1lZnkpICZxdW90O2V4cHJlc3Npb24mcXVvdDsgJnF1b3Q7YXJpdHktaGFzaCZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtsaXN0JnF1b3Q7IChzY2hlbWVmeSEpICgwMDIpICZxdW90O3JldmVyc2UmcXVvdDsgJnF1b3Q7ZXhwcmVzc2lvbiZxdW90OyAmcXVvdDthcml0eS1oYXNoJnF1b3Q7IChzdGFjaykKCihzZW50ZW5jZS1sZXNzPykgJnF1b3Q7c2VudGVuY2UxJnF1b3Q7ICZxdW90O3NlbnRlbmNlMiZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtzZW50ZW5jZTImcXVvdDsKJnF1b3Q7I2YmcXVvdDsKCihzZW50ZW5jZS1sZXNzPykgJnF1b3Q7c2VudGVuY2UxJnF1b3Q7ICZxdW90O3NlbnRlbmNlMiZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtzZW50ZW5jZTEmcXVvdDsKJnF1b3Q7I3QmcXVvdDsKCihzZW50ZW5jZS1sZXNzPykgJnF1b3Q7c2VudGVuY2UxJnF1b3Q7ICZxdW90O3NlbnRlbmNlMiZxdW90Owpjb21tZW50OgooY2hhcmFjdGVyLWxlc3M/KSAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7c2VudGVuY2UxJnF1b3Q7ICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtzZW50ZW5jZTImcXVvdDsKJnF1b3Q7I3QmcXVvdDsKCihzZW50ZW5jZS1sZXNzPykgJnF1b3Q7c2VudGVuY2UxJnF1b3Q7ICZxdW90O3NlbnRlbmNlMiZxdW90Owpjb21tZW50OgooY2hhcmFjdGVyLWxlc3M/KSAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7c2VudGVuY2UyJnF1b3Q7ICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtzZW50ZW5jZTEmcXVvdDsKJnF1b3Q7I2YmcXVvdDsKCihzZW50ZW5jZS1sZXNzPykgJnF1b3Q7c2VudGVuY2UxJnF1b3Q7ICZxdW90O3NlbnRlbmNlMiZxdW90Owpjb21tZW50OgojdHJ1ZQooc2VudGVuY2UtbGVzcz8pICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtzZW50ZW5jZTEmcXVvdDsgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICZxdW90O3NlbnRlbmNlMiZxdW90OwoKKHNlbnRlbmNlcyEpICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdDEmcXVvdDsgJnF1b3Q7Y29sbGVjdDImcXVvdDsKY29tbWVudDoKKDAwMikgJnF1b3Q7bnVsbD8mcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OwomcXVvdDtjb2xsZWN0MiZxdW90OwoKKHNlbnRlbmNlcyEpICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdDEmcXVvdDsgJnF1b3Q7Y29sbGVjdDImcXVvdDsKY29tbWVudDoKKDAwMykgJnF1b3Q7ZXF2PyZxdW90OyAjbmV3bGluZSAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90Owooc2VudGVuY2VzISkgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgbmlsICgwMDMpICZxdW90O2NvbnMmcXVvdDsgKDAwMikgJnF1b3Q7cmV2ZXJzZSZxdW90OyAmcXVvdDtjb2xsZWN0MSZxdW90OyAmcXVvdDtjb2xsZWN0MiZxdW90OwoKKHNlbnRlbmNlcyEpICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdDEmcXVvdDsgJnF1b3Q7Y29sbGVjdDImcXVvdDsKY29tbWVudDoKI3RydWUKKHNlbnRlbmNlcyEpICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdDEmcXVvdDsgJnF1b3Q7Y29sbGVjdDImcXVvdDsKCihzZW50ZW5jZXMpICZxdW90O3Byb2dyYW0mcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMikgJnF1b3Q7cmV2ZXJzZSZxdW90OyAoc2VudGVuY2VzISkgJnF1b3Q7cHJvZ3JhbSZxdW90OyBuaWwgbmlsCgooc29ydCFhKSAmcXVvdDtqdW1ibGUmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMykgJnF1b3Q7bWFwJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsgJnF1b3Q7anVtYmxlJnF1b3Q7Cgooc29ydCFiKSAmcXVvdDtjb21wYXJhdG9yJnF1b3Q7ICZxdW90O2p1bWJsZSZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtqdW1ibGUmcXVvdDsKbmlsCgooc29ydCFiKSAmcXVvdDtjb21wYXJhdG9yJnF1b3Q7ICZxdW90O2p1bWJsZSZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7anVtYmxlJnF1b3Q7CiZxdW90O2p1bWJsZSZxdW90OwoKKHNvcnQhYikgJnF1b3Q7Y29tcGFyYXRvciZxdW90OyAmcXVvdDtqdW1ibGUmcXVvdDsKY29tbWVudDoKI3RydWUKKHNvcnQhYikgJnF1b3Q7Y29tcGFyYXRvciZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7IChtZXJnZSkgJnF1b3Q7Y29tcGFyYXRvciZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7anVtYmxlJnF1b3Q7ICgwMDIpICZxdW90O2NhZHImcXVvdDsgJnF1b3Q7anVtYmxlJnF1b3Q7IChzb3J0IWIpICZxdW90O2NvbXBhcmF0b3ImcXVvdDsgKDAwMikgJnF1b3Q7Y2RkciZxdW90OyAmcXVvdDtqdW1ibGUmcXVvdDsKCihzb3J0KSAmcXVvdDtjb21wYXJhdG9yJnF1b3Q7ICZxdW90O2p1bWJsZSZxdW90Owpjb21tZW50OgojdHJ1ZQooMDAyKSAmcXVvdDtjYXImcXVvdDsgKHNvcnQhYikgJnF1b3Q7Y29tcGFyYXRvciZxdW90OyAoc29ydCFhKSAmcXVvdDtqdW1ibGUmcXVvdDsKCihzcGFjZS1uZXdsaW5lISkgJnF1b3Q7cHJvZ3JhbSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CigwMDMpICZxdW90O29yJnF1b3Q7ICgwMDIpICZxdW90O251bGw/JnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgKDAwMikgJnF1b3Q7bnVsbD8mcXVvdDsgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsKKDAwMykgJnF1b3Q7YXBwZW5kJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKHNwYWNlLW5ld2xpbmUhKSAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKKDAwMykgJnF1b3Q7YW5kJnF1b3Q7ICgwMDMpICZxdW90O2Vxdj8mcXVvdDsgI3NwYWNlICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICgwMDMpICZxdW90O2Vxdj8mcXVvdDsgI25ld2xpbmUgKDAwMikgJnF1b3Q7Y2FkciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7CihzcGFjZS1uZXdsaW5lISkgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKHNwYWNlLW5ld2xpbmUhKSAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKI3RydWUKKHNwYWNlLW5ld2xpbmUhKSAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OyAoMDAzKSAmcXVvdDtjb25zJnF1b3Q7ICgwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCihzcGFjZS1uZXdsaW5lKSAmcXVvdDtwcm9ncmFtJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O3JldmVyc2UmcXVvdDsgKHNwYWNlLW5ld2xpbmUhKSAmcXVvdDtwcm9ncmFtJnF1b3Q7IG5pbAoKKHN0YWNrKQpjb21tZW50OgojdHJ1ZQpuaWwKCih0YWItcmVwbGFjZSEpICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7CiZxdW90O2NvbGxlY3QmcXVvdDsKCih0YWItcmVwbGFjZSEpICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAzKSAmcXVvdDtlcXY/JnF1b3Q7ICN0YWIgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsKKHRhYi1yZXBsYWNlISkgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgKDAwMykgJnF1b3Q7Y29ucyZxdW90OyAjc3BhY2UgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKHRhYi1yZXBsYWNlISkgJnF1b3Q7cHJvZ3JhbSZxdW90OyAmcXVvdDtjb2xsZWN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCih0YWItcmVwbGFjZSEpICgwMDIpICZxdW90O2NkciZxdW90OyAmcXVvdDtwcm9ncmFtJnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgKDAwMikgJnF1b3Q7Y2FyJnF1b3Q7ICZxdW90O3Byb2dyYW0mcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKHRhYi1yZXBsYWNlKSAmcXVvdDtwcm9ncmFtJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O3JldmVyc2UmcXVvdDsgKHRhYi1yZXBsYWNlISkgJnF1b3Q7cHJvZ3JhbSZxdW90OyBuaWwKCih0YWlscykgJnF1b3Q7bnVtYmVyJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsKY29tbWVudDoKKDAwMikgJnF1b3Q7bnVsbD8mcXVvdDsgJnF1b3Q7bGlzdCZxdW90OwpuaWwKCih0YWlscykgJnF1b3Q7bnVtYmVyJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsKY29tbWVudDoKKDAwMikgJnF1b3Q7emVybz8mcXVvdDsgJnF1b3Q7bnVtYmVyJnF1b3Q7CiZxdW90O2xpc3QmcXVvdDsKCih0YWlscykgJnF1b3Q7bnVtYmVyJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsKY29tbWVudDoKKDAwMykgJnF1b3Q7Jmd0OyZxdW90OyAmcXVvdDtudW1iZXImcXVvdDsgMAoodGFpbHMpICgwMDMpICZxdW90Oy0mcXVvdDsgJnF1b3Q7bnVtYmVyJnF1b3Q7IDEgKDAwMikgJnF1b3Q7Y2RyJnF1b3Q7ICZxdW90O2xpc3QmcXVvdDsKCih0b3ApICZxdW90O3N0YWNrJnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O2NhciZxdW90OyAmcXVvdDtzdGFjayZxdW90OwoKKHRydWU/KSAmcXVvdDtub3VuLWxpc3QmcXVvdDsKY29tbWVudDoKI3RydWUKKDAwMykgJnF1b3Q7ZXF1YWw/JnF1b3Q7ICZxdW90O25vdW4tbGlzdCZxdW90OyAoMDA2KSAmcXVvdDtsaXN0JnF1b3Q7ICMjICN0ICNyICN1ICNlCgoodmVyYikgJnF1b3Q7dmVyYi1saXN0JnF1b3Q7CmNvbW1lbnQ6CihsaXRlcmFsPykgJnF1b3Q7dmVyYi1saXN0JnF1b3Q7CigwMDIpICZxdW90O2xpc3QmcXVvdDsgKG1ha2UtbGl0ZXJhbCkgJnF1b3Q7dmVyYi1saXN0JnF1b3Q7CgoodmVyYikgJnF1b3Q7dmVyYi1saXN0JnF1b3Q7CmNvbW1lbnQ6CiN0cnVlCigwMDIpICZxdW90O2xpc3QmcXVvdDsgKG1ha2UtWkVEKSAmcXVvdDt2ZXJiLWxpc3QmcXVvdDsKCih3cml0ZS1hbGwpICZxdW90O3Byb2dyYW0mcXVvdDsKY29tbWVudDoKKDAwMikgJnF1b3Q7bnVsbD8mcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OwplcnIKCih3cml0ZS1hbGwpICZxdW90O3Byb2dyYW0mcXVvdDsKY29tbWVudDoKI3RydWUKKHdyaXRlLWFsbCkgKDAwMykgJnF1b3Q7YmVnaW4mcXVvdDsgKDAwMikgJnF1b3Q7d3JpdGUtY2hhciZxdW90OyAoMDAyKSAmcXVvdDtjYXImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OyAoMDAyKSAmcXVvdDtjZHImcXVvdDsgJnF1b3Q7cHJvZ3JhbSZxdW90OwoKKHplZC0mZ3Q7c2NoZW1lISkgJnF1b3Q7dmFsdWUmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtudWxsPyZxdW90OyAmcXVvdDt2YWx1ZSZxdW90OwooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKCih6ZWQtJmd0O3NjaGVtZSEpICZxdW90O3ZhbHVlJnF1b3Q7ICZxdW90O2NvbGxlY3QmcXVvdDsKY29tbWVudDoKI3RydWUKKHplZC0mZ3Q7c2NoZW1lISkgKCEpICZxdW90O3ZhbHVlJnF1b3Q7ICgwMDMpICZxdW90O2NvbnMmcXVvdDsgKHplZC0mZ3Q7c2NoZW1lKSAoMSkgJnF1b3Q7dmFsdWUmcXVvdDsgJnF1b3Q7Y29sbGVjdCZxdW90OwoKKHplZC0mZ3Q7c2NoZW1lKSAmcXVvdDt2YWx1ZSZxdW90Owpjb21tZW50OgooMDAyKSAmcXVvdDtub3QmcXVvdDsgKDAwMikgJnF1b3Q7cGFpcj8mcXVvdDsgJnF1b3Q7dmFsdWUmcXVvdDsKJnF1b3Q7dmFsdWUmcXVvdDsKCih6ZWQtJmd0O3NjaGVtZSkgJnF1b3Q7dmFsdWUmcXVvdDsKY29tbWVudDoKI3RydWUKKHplZC0mZ3Q7c2NoZW1lISkgJnF1b3Q7dmFsdWUmcXVvdDsgbmls
(*) number1 number2
comment:
#true
(003) "*" number1 number2
(+) number1 number2
comment:
#true
(003) "+" number1 number2
(-) number1 number2
comment:
#true
(003) "-" number1 number2
(/) number1 number2
comment:
#true
(003) "/" number1 number2
(=) "value1" "value2"
comment:
#true
(003) "eqv?" "value1" "value2"
(add-between!) "item" "list" "collect"
comment:
(002) "null?" "list"
"collect"
(add-between!) "item" "list" "collect"
comment:
(002) "null?" (002) "cdr" "list"
(003) "cons" (002) "car" "list" "collect"
(add-between!) "item" "list" "collect"
comment:
#true
(add-between!) "item" (002) "cdr" "list" (003) "cons" "item" (003) "cons" (002) "car" "list" "collect"
(add-between) "item" "list"
comment:
#true
(002) "reverse" (add-between!) "item" "list" nil
(add-between-ra) "list" "item"
comment:
#true
(002) "reverse" (add-between!) "item" "list" nil
(alpha)
comment:
#true
(write-all) (rd) nil "append" (rd) nil "append" (newlines) (by-four) (function-sort) (sentences) (leading-newline) (space-newline) (tab-replace) (newline-space-tab-repeats) (newline-space) (filter) not-return? (replace-trailing-white-space) (read-all)
(application?) "expression"
comment:
#true
(004) "and" (002) "not" (002) "null?" "expression" (002) "pair?" (002) "car" "expression" (002) "null?" (002) "cdar" "expression"
(arity) "arity-hash" "function"
comment:
#true
(002) "cdr" (003) "assoc" "function" "arity-hash"
(arity-hash!) "clause"
comment:
#true
(003) "cons" (clause-name) "clause" (clause-arity) "clause"
(arity-hash) "program"
comment:
#true
(003) "append" (003) "map" arity-hash! "program" (003) "append" (009) "list" (003) "cons" "'ZED1" 1 (003) "cons" "'ZED!" 1 (003) "cons" "'ZED001" 1 (003) "cons" "'or" 2 (003) "cons" "'and" 2 (003) "cons" "'begin" 2 (003) "cons" "'ZEDc" 2 (003) "cons" "'quote" 1 (099) "list" (003) "cons" "'ZED002" 2 (003) "cons" "'ZED003" 3 (003) "cons" "'ZED004" 4 (003) "cons" "'ZED005" 5 (003) "cons" "'ZED006" 6 (003) "cons" "'ZED007" 7 (003) "cons" "'ZED008" 8 (003) "cons" "'ZED009" 9 (003) "cons" "'ZED010" 10 (003) "cons" "'ZED011" 11 (003) "cons" "'ZED012" 12 (003) "cons" "'ZED013" 13 (003) "cons" "'ZED014" 14 (003) "cons" "'ZED015" 15 (003) "cons" "'ZED016" 16 (003) "cons" "'ZED017" 17 (003) "cons" "'ZED018" 18 (003) "cons" "'ZED019" 19 (003) "cons" "'ZED020" 20 (003) "cons" "'ZED021" 21 (003) "cons" "'ZED022" 22 (003) "cons" "'ZED023" 23 (003) "cons" "'ZED024" 24 (003) "cons" "'ZED025" 25 (003) "cons" "'ZED026" 26 (003) "cons" "'ZED027" 27 (003) "cons" "'ZED028" 28 (003) "cons" "'ZED029" 29 (003) "cons" "'ZED030" 30 (003) "cons" "'ZED031" 31 (003) "cons" "'ZED032" 32 (003) "cons" "'ZED033" 33 (003) "cons" "'ZED034" 34 (003) "cons" "'ZED035" 35 (003) "cons" "'ZED036" 36 (003) "cons" "'ZED037" 37 (003) "cons" "'ZED038" 38 (003) "cons" "'ZED039" 39 (003) "cons" "'ZED040" 40 (003) "cons" "'ZED041" 41 (003) "cons" "'ZED042" 42 (003) "cons" "'ZED043" 43 (003) "cons" "'ZED044" 44 (003) "cons" "'ZED045" 45 (003) "cons" "'ZED046" 46 (003) "cons" "'ZED047" 47 (003) "cons" "'ZED048" 48 (003) "cons" "'ZED049" 49 (003) "cons" "'ZED050" 50 (003) "cons" "'ZED051" 51 (003) "cons" "'ZED052" 52 (003) "cons" "'ZED053" 53 (003) "cons" "'ZED054" 54 (003) "cons" "'ZED055" 55 (003) "cons" "'ZED056" 56 (003) "cons" "'ZED057" 57 (003) "cons" "'ZED058" 58 (003) "cons" "'ZED059" 59 (003) "cons" "'ZED060" 60 (003) "cons" "'ZED061" 61 (003) "cons" "'ZED062" 62 (003) "cons" "'ZED063" 63 (003) "cons" "'ZED064" 64 (003) "cons" "'ZED065" 65 (003) "cons" "'ZED066" 66 (003) "cons" "'ZED067" 67 (003) "cons" "'ZED068" 68 (003) "cons" "'ZED069" 69 (003) "cons" "'ZED070" 70 (003) "cons" "'ZED071" 71 (003) "cons" "'ZED072" 72 (003) "cons" "'ZED073" 73 (003) "cons" "'ZED074" 74 (003) "cons" "'ZED075" 75 (003) "cons" "'ZED076" 76 (003) "cons" "'ZED077" 77 (003) "cons" "'ZED078" 78 (003) "cons" "'ZED079" 79 (003) "cons" "'ZED080" 80 (003) "cons" "'ZED081" 81 (003) "cons" "'ZED082" 82 (003) "cons" "'ZED083" 83 (003) "cons" "'ZED084" 84 (003) "cons" "'ZED085" 85 (003) "cons" "'ZED086" 86 (003) "cons" "'ZED087" 87 (003) "cons" "'ZED088" 88 (003) "cons" "'ZED089" 89 (003) "cons" "'ZED090" 90 (003) "cons" "'ZED091" 91 (003) "cons" "'ZED092" 92 (003) "cons" "'ZED093" 93 (003) "cons" "'ZED094" 94 (003) "cons" "'ZED095" 95 (003) "cons" "'ZED096" 96 (003) "cons" "'ZED097" 97 (003) "cons" "'ZED098" 98 (003) "cons" "'ZED099" 99
(by-four!) "sentences" "collect"
comment:
(002) "null?" "sentences"
"collect"
(by-four!) "sentences" "collect"
comment:
#true
(by-four!) (002) "cddddr" "sentences" (003) "cons" (005) "list" (002) "car" "sentences" (002) "cadr" "sentences" (002) "caddr" "sentences" (002) "cadddr" "sentences" "collect"
(by-four) "sentences"
comment:
#true
(002) "reverse" (by-four!) "sentences" nil
(by-three!) "sentences" "collect"
comment:
(002) "null?" "sentences"
"collect"
(by-three!) "sentences" "collect"
comment:
#true
(by-three!) (002) "cdddr" "sentences" (003) "cons" (004) "list" (002) "car" "sentences" (002) "cadr" "sentences" (002) "caddr" "sentences" "collect"
(by-three) "sentences"
comment:
#true
(002) "reverse" (by-three!) "sentences" nil
(character-less?) "character1" "character2"
comment:
#true
(003) "<" (002) "char->integer" "character1" (002) "char->integer" "character2"
(clause-arguments) "clause"
comment:
#true
(002) "cadr" "clause"
(clause-arguments-agree) "clause1" "clause2"
comment:
(003) "equal?" (clause-arguments) "clause1" (clause-arguments) "clause2"
(clause-arguments) "clause1"
(clause-arity) "clause"
comment:
#true
(002) "length" (clause-arguments) "clause"
(clause-body) "clause"
comment:
#true
(002) "cddr" "clause"
(clause-less?) "clause1" "clause2"
comment:
#true
(sentence-less?) (002) "car" "clause1" (002) "car" "clause2"
(clause-name) "clause"
comment:
#true
(002) "car" "clause"
(clause-name-agree) "clause1" "clause2"
comment:
(003) "eq?" (clause-name) "clause1" (clause-name) "clause2"
(clause-name) "clause1"
(combine-all!) "program" "collect"
comment:
(002) "null?" "program"
"collect"
(combine-all!) "program" "collect"
comment:
(002) "null?" (002) "cdr" "program"
(003) "cons" (002) "car" "program" "collect"
(combine-all!) "program" "collect"
comment:
(003) "eq?" (clause-name) (002) "car" "program" (clause-name) (002) "cadr" "program"
(combine-all!) (combine-head-clauses) "program" "collect"
(combine-all!) "program" "collect"
comment:
#true
(combine-all!) (002) "cdr" "program" (003) "cons" (002) "car" "program" "collect"
(combine-all) "program"
comment:
#true
(002) "reverse" (combine-all!) "program" nil
(combine-clauses) "clause1" "clause2"
comment:
#true
(003) "cons" (clause-name-agree) "clause1" "clause2" (003) "cons" (clause-arguments-agree) "clause1" "clause2" (003) "append" (clause-body) "clause1" (clause-body) "clause2"
(combine-head-clauses) "program"
comment:
#true
(003) "cons" (combine-clauses) (002) "car" "program" (002) "cadr" "program" (002) "cddr" "program"
(combine-program-clauses) "program"
comment:
#true
(combine-all) (ready-program) "program"
(comp!)
comment:
#true
(comp!a) (combine-program-clauses) (by-three) (read-sentences) (discard-comments) (function-sort) (sentences) (leading-newline) (space-newline) (tab-replace) (newline-space-tab-repeats) (newline-space) (filter) not-return? (replace-trailing-white-space) (read-all)
(comp!a) "combined"
comment:
#true
(comp!aa) (programize) "combined" (arity-hash) "combined"
(comp!aa) "programized"
comment:
#true
(002) "write" "programized"
(comp)
comment:
#true
(comp!)
(condefy!) "expressions" "collect"
comment:
(002) "null?" "expressions"
"collect"
(condefy!) "expressions" "collect"
comment:
#true
(condefy!) (002) "cddr" "expressions" (003) "cons" (003) "append" (002) "car" "expressions" (002) "cadr" "expressions" "collect"
(condefy) "expressions"
comment:
#true
(002) "reverse" (condefy!) "expressions" nil
(cons) value1 value2
comment:
#true
(003) "cons" value1 value2
(count) number
comment:
#true
(c) number (count) (+) number 1
(count-by) step number
comment:
#true
(c) number (count-by) step (+) number step
(delay-wrap) "expression"
comment:
#true
(003) "list" "'delay" "expression"
(digit?) "character"
comment:
#true
(011) "or" (003) "eqv?" #0 "character" (003) "eqv?" #1 "character" (003) "eqv?" #2 "character" (003) "eqv?" #3 "character" (003) "eqv?" #4 "character" (003) "eqv?" #5 "character" (003) "eqv?" #6 "character" (003) "eqv?" #7 "character" (003) "eqv?" #8 "character" (003) "eqv?" #9 "character"
(discard-comments!) "program" "collect"
comment:
(002) "null?" "program"
"collect"
(discard-comments!) "program" "collect"
comment:
#true
(discard-comments!) (002) "cddddr" "program" (003) "cons" (002) "cadddr" "program" (003) "cons" (002) "caddr" "program" (003) "cons" (002) "car" "program" "collect"
(discard-comments) "program"
comment:
#true
(002) "reverse" (discard-comments!) "program" nil
(dr!) "value"
comment:
(002) "pair?" "value"
(mp) dr! (first) 64 "value"
(dr!) "value"
comment:
#true
"value"
(dr) "value"
comment:
#true
(005) "begin" (002) "display" (pr) (dr!) "value" (001) "newline" (001) "newline" "value"
(drr) "value"
comment:
#true
(005) "begin" (002) "display" (pr) "value" (001) "newline" (001) "newline" "value"
(false?) "noun-list"
comment:
#true
(003) "equal?" "noun-list" (007) "list" ## #f #a #l #s #e
(fi) "function" "list"
comment:
(002) "null?" "list"
nil
(fi) "function" "list"
comment:
(002) "function" (1) "list"
(c) (1) "list" (fi) "function" (!) "list"
(fi) "function" "list"
comment:
#true
(fi) "function" (!) "list"
(filter!) "predicate" "list" "collect"
comment:
(002) "null?" "list"
"collect"
(filter!) "predicate" "list" "collect"
comment:
(002) "predicate" (002) "car" "list"
(filter!) "predicate" (002) "cdr" "list" (003) "cons" (002) "car" "list" "collect"
(filter!) "predicate" "list" "collect"
comment:
#true
(filter!) "predicate" (002) "cdr" "list" "collect"
(filter) "predicate" "list"
comment:
#true
(002) "reverse" (filter!) "predicate" "list" nil
(first!) "integer" "list" "collect"
comment:
(003) "or" (002) "zero?" "integer" (002) "null?" "list"
(002) "reverse" "collect"
(first!) "integer" "list" "collect"
comment:
(002) "not" (002) "pair?" "list"
(002) "reverse" (003) "cons" "list" "collect"
(first!) "integer" "list" "collect"
comment:
(003) ">" "integer" 0
(first!) (003) "-" "integer" 1 (!) "list" (003) "cons" (1) "list" "collect"
(first) "integer" "list"
comment:
(002) "not" (002) "pair?" "list"
"list"
(first) "integer" "list"
comment:
#true
(first!) "integer" "list" nil
(flatten!) list sub-list-found? collect
comment:
(and) (null?) list (not) sub-list-found?
(reverse) collect
(flatten!) list sub-list-found? collect
comment:
(null?) list
(flatten!) (reverse) collect #false nil
(flatten!) list sub-list-found? collect
comment:
(not) (pair?) list
(flatten!) nil sub-list-found? (cons) list collect
(flatten!) list sub-list-found? collect
comment:
(pair?) (1) list
(flatten!) (!) list #true (cons) (!) (1) list (cons) (1) (1) list collect
(flatten!) list sub-list-found? collect
comment:
(null?) (1) list
(flatten!) (!) list sub-list-found? collect
(flatten!) list sub-list-found? collect
comment:
#true
(flatten!) (!) list sub-list-found? (cons) (1) list collect
(flatten) list
comment:
#true
(flatten!) list #false nil
(for-each) effect list
comment:
#true
(003) "for-each" effect list
(function) "expression"
comment:
#true
(002) "caar" "expression"
(function-sort) "sentences"
comment:
#true
(rd) nil "append" (sort) clause-less? (by-four) "sentences"
(functionize) "clause" "arity-hash"
comment:
#true
(004) "list" "'define" (003) "cons" (clause-name) "clause" (clause-arguments) "clause" (003) "cons" "'cond" (003) "append" (condefy) (map-with) schemefy (clause-body) "clause" "arity-hash" (002) "list" (003) "list" "'else" err
(gather-count?!) "candidate"
comment:
#true
(008) "and" (003) "=" 6 (002) "length" "candidate" (003) "eqv?" #Z (002) "car" "candidate" (003) "eqv?" #E (002) "cadr" "candidate" (003) "eqv?" #D (002) "caddr" "candidate" (003) "eqv?" #0 (002) "cadddr" "candidate" (digit?) (002) "car" (002) "cddddr" "candidate" (digit?) (002) "cadr" (002) "cddddr" "candidate"
(gather-count?) "symbol"
comment:
#true
(gather-count?!) (002) "string->list" (002) "symbol->string" "symbol"
(gather-noun) "sentence"
comment:
(002) "null?" "sentence"
nil
(gather-noun) "sentence"
comment:
(003) "eqv?" #space (002) "car" "sentence"
nil
(gather-noun) "sentence"
comment:
#true
(003) "cons" (002) "car" "sentence" (gather-noun) (002) "cdr" "sentence"
(gather-verb) "sentence"
comment:
(003) "eqv?" #) (002) "car" "sentence"
nil
(gather-verb) "sentence"
comment:
#true
(003) "cons" (002) "car" "sentence" (gather-verb) (002) "cdr" "sentence"
(gr) "garbage" "value"
comment:
#true
(003) "begin" (dr) "garbage" "value"
(grr) "garbage" "value"
comment:
#true
(003) "begin" (drr) "garbage" "value"
(leading-newline) "program"
comment:
(002) "null?" "program"
nil
(leading-newline) "program"
comment:
(003) "eqv?" #newline (002) "car" "program"
(002) "cdr" "program"
(leading-newline) "program"
comment:
#true
"program"
(literal?) "literal-list"
comment:
#true
(003) "eqv?" #" (002) "car" "literal-list"
(make-ZED) "ZED-list"
comment:
(003) "equal?" "ZED-list" (004) "list" #e #r #r
""'err""
(make-ZED) "ZED-list"
comment:
(003) "equal?" "ZED-list" (004) "list" #n #i #l
""'()""
(make-ZED) "ZED-list"
comment:
(003) "equal?" "ZED-list" (004) "list" #a #n #d
""and""
(make-ZED) "ZED-list"
comment:
(003) "equal?" "ZED-list" (003) "list" #o #r
""or""
(make-ZED) "ZED-list"
comment:
(003) "equal?" "ZED-list" (006) "list" #q #u #o #t #e
""quote""
(make-ZED) "ZED-list"
comment:
(003) "equal?" "ZED-list" (003) "list" #s #e
""begin""
(make-ZED) "ZED-list"
comment:
#true
(002) "list->string" (003) "append" (004) "list" #Z #E #D "ZED-list"
(make-character) "noun-list"
comment:
#true
(002) "list->string" (003) "cons" ## (003) "cons" #\ (002) "cdr" "noun-list"
(make-exact) "exact-list"
comment:
#true
(002) "list->string" (003) "append" (003) "list" ## #e "exact-list"
(make-literal) "literal-list"
comment:
#true
(002) "list->string" (002) "cdr" (002) "reverse" (002) "cdr" (002) "reverse" "literal-list"
(make-number-character) "noun-list"
comment:
#true
(002) "list->string" (004) "list" ## #\ (002) "integer->char" (002) "string->number" (002) "list->string" (002) "cddr" "noun-list"
(map-with!) "function" "list" "extra" "collect"
comment:
(002) "null?" "list"
"collect"
(map-with!) "function" "list" "extra" "collect"
comment:
#true
(map-with!) "function" (002) "cdr" "list" "extra" (003) "cons" (003) "function" (002) "car" "list" "extra" "collect"
(map-with) "function" "list" "extra"
comment:
#true
(002) "reverse" (map-with!) "function" "list" "extra" nil
(merge!) "comparator" "list1" "list2" "collect"
comment:
(002) "null?" "list2"
(003) "append" (002) "reverse" "collect" "list1"
(merge!) "comparator" "list1" "list2" "collect"
comment:
(002) "null?" "list1"
(003) "append" (002) "reverse" "collect" "list2"
(merge!) "comparator" "list1" "list2" "collect"
comment:
(003) "comparator" (002) "car" "list2" (002) "car" "list1"
(merge!) "comparator" "list1" (002) "cdr" "list2" (003) "cons" (002) "car" "list2" "collect"
(merge!) "comparator" "list1" "list2" "collect"
comment:
#true
(merge!) "comparator" (002) "cdr" "list1" "list2" (003) "cons" (002) "car" "list1" "collect"
(merge) "comparator" "list1" "list2"
comment:
#true
(merge!) "comparator" "list1" "list2" nil
(mp) "function" "list"
comment:
(002) "null?" "list"
nil
(mp) "function" "list"
comment:
(002) "pair?" "list"
(c) (002) "function" (1) "list" (mp) "function" (!) "list"
(mp) "function" "list"
comment:
#true
(002) "function" "list"
(newline-space!) "program"
comment:
#true
(003) "cons" #newline (newline-space!a) "program"
(newline-space!a) "program"
comment:
#true
(newline-space!aa) "program" (002) "reverse" (newline-space!ab) "program" nil
(newline-space!aa) "program" "transformed"
comment:
(003) "equal?" "program" "transformed"
"program"
(newline-space!aa) "program" "transformed"
comment:
#true
(newline-space!a) "transformed"
(newline-space!ab) "program" "collect"
comment:
(002) "null?" "program"
"collect"
(newline-space!ab) "program" "collect"
comment:
(002) "null?" (002) "cdr" "program"
(003) "cons" (002) "car" "program" "collect"
(newline-space!ab) "program" "collect"
comment:
(003) "and" (003) "eqv?" #newline (002) "car" "program" (003) "or" (003) "eqv?" #space (002) "cadr" "program" (003) "eqv?" #tab (002) "cadr" "program"
(newline-space!ab) (002) "cdr" "program" "collect"
(newline-space!ab) "program" "collect"
comment:
#true
(newline-space!ab) (002) "cdr" "program" (003) "cons" (002) "car" "program" "collect"
(newline-space) "program"
comment:
#true
(newline-space!) "program"
(newline-space-tab-repeats!) "program" "collect"
comment:
(003) "or" (002) "null?" "program" (002) "null?" (002) "cdr" "program"
(003) "append" "program" "collect"
(newline-space-tab-repeats!) "program" "collect"
comment:
(003) "and" (003) "eqv?" #newline (002) "car" "program" (003) "eqv?" #newline (002) "cadr" "program"
(newline-space-tab-repeats!) (002) "cdr" "program" "collect"
(newline-space-tab-repeats!) "program" "collect"
comment:
(003) "and" (003) "or" (003) "eqv?" #space (002) "car" "program" (003) "eqv?" #tab (002) "car" "program" (003) "or" (003) "eqv?" #space (002) "cadr" "program" (003) "eqv?" #tab (002) "cadr" "program"
(newline-space-tab-repeats!) (002) "cdr" "program" "collect"
(newline-space-tab-repeats!) "program" "collect"
comment:
#true
(newline-space-tab-repeats!) (002) "cdr" "program" (003) "cons" (002) "car" "program" "collect"
(newline-space-tab-repeats) "program"
comment:
#true
(002) "reverse" (newline-space-tab-repeats!) "program" nil
(newlines) "clauses"
comment:
#true
(add-between-ra) (map-with) add-between-ra "clauses" (002) "list" #newline (002) "list" (003) "list" #newline #newline
(normal-character?) "noun-list"
comment:
#true
(003) "eqv?" (002) "car" "noun-list" ##
(not) value
comment:
#true
(002) "not" value
(not-return?) "character"
comment:
#true
(002) "not" (003) "eqv?" #return "character"
(noun!) "noun-list" "number?"
comment:
"number?"
(make-exact) "noun-list"
(noun!) "noun-list" "number?"
comment:
(literal?) "noun-list"
(make-literal) "noun-list"
(noun!) "noun-list" "number?"
comment:
(true?) "noun-list"
""#t""
(noun!) "noun-list" "number?"
comment:
(false?) "noun-list"
""#f""
(noun!) "noun-list" "number?"
comment:
(number-character?) "noun-list"
(make-number-character) "noun-list"
(noun!) "noun-list" "number?"
comment:
(normal-character?) "noun-list"
(make-character) "noun-list"
(noun!) "noun-list" "number?"
comment:
#true
(make-ZED) "noun-list"
(noun) "noun-list"
comment:
#true
(noun!) "noun-list" (002) "string->number" (002) "list->string" "noun-list"
(null?) value
comment:
#true
(002) "null?" value
(number-character?) "noun-list"
comment:
#true
(004) "and" (003) "eqv?" (002) "car" "noun-list" ## (003) "eqv?" (002) "cadr" "noun-list" #0 (002) "not" (002) "null?" (002) "cddr" "noun-list"
(pair?) value
comment:
#true
(002) "pair?" value
(pop) "stack"
comment:
#true
(002) "cdr" "stack"
(pr!) "value" "output-string"
comment:
#true
(003) "begin" (003) "display" (pr!a) "value" nil "output-string" (pr!b) "output-string" (002) "get-output-string" "output-string"
(pr!a) "value" "collect"
comment:
(002) "char?" "value"
(pr!aa) (002) "list->string" (003) "list" ## "value" "collect"
(pr!a) "value" "collect"
comment:
(002) "string?" "value"
(pr!aa) (004) "string-append" ""\""" "value" ""\""" "collect"
(pr!a) "value" "collect"
comment:
(002) "symbol?" "value"
(pr!aa) (002) "symbol->string" "value" "collect"
(pr!a) "value" "collect"
comment:
(002) "number?" "value"
(pr!aa) (002) "number->string" "value" "collect"
(pr!a) "value" "collect"
comment:
(003) "and" (002) "boolean?" "value" "value"
(pr!aa) ""#true"" "collect"
(pr!a) "value" "collect"
comment:
(002) "boolean?" "value"
(pr!aa) ""#false"" "collect"
(pr!a) "value" "collect"
comment:
(002) "null?" "value"
(002) "reverse" "collect"
(pr!a) "value" "collect"
comment:
#true
(pr!a) (!) "value" (003) "cons" (pr!a) (1) "value" nil "collect"
(pr!aa) "string" "collect"
comment:
(002) "null?" "collect"
"string"
(pr!aa) "string" "collect"
comment:
#true
(002) "reverse" (003) "cons" "string" (003) "cons" ""."" "collect"
(pr!b) "output-string" "value"
comment:
#true
(003) "begin" (002) "close-output-port" "output-string" "value"
(pr) "value"
comment:
#true
(pr!) "value" (001) "open-output-string"
(programize) "program" "arity-hash"
comment:
#true
(003) "cons" "'begin" (map-with) functionize "program" "arity-hash"
(push) "object" "stack"
comment:
#true
(003) "cons" "object" "stack"
(rd!) "function" "list"
comment:
(002) "null?" (!) "list"
(1) "list"
(rd!) "function" "list"
comment:
#true
(rd!) "function" (003) "cons" (003) "function" (1) (!) "list" (1) "list" (!) (!) "list"
(rd) "final" "function" "list"
comment:
#true
(rd!) "function" (003) "cons" "final" (002) "reverse" "list"
(read-all!) "collect"
comment:
#true
(read-all!a) (001) "read-char" "collect"
(read-all!a) "character" "collect"
comment:
(002) "eof-object?" "character"
"collect"
(read-all!a) "character" "collect"
comment:
#true
(read-all!) (003) "cons" "character" "collect"
(read-all)
comment:
#true
(002) "reverse" (read-all!) nil
(read-sentence!a) "sentence" "collect"
comment:
(002) "null?" "sentence"
"collect"
(read-sentence!a) "sentence" "collect"
comment:
(003) "eqv?" #space (002) "car" "sentence"
(read-sentence!a) (002) "cdr" "sentence" "collect"
(read-sentence!a) "sentence" "collect"
comment:
(003) "eqv?" #( (002) "car" "sentence"
(read-sentence!aa) "sentence" (gather-verb) (002) "cdr" "sentence" "collect"
(read-sentence!a) "sentence" "collect"
comment:
#true
(read-sentence!ab) "sentence" (gather-noun) "sentence" "collect"
(read-sentence!aa) "sentence" "gather-verb" "collect"
comment:
#true
(read-sentence!a) (tails) (003) "+" 2 (002) "length" "gather-verb" "sentence" (003) "cons" (verb) "gather-verb" "collect"
(read-sentence!ab) "sentence" "gather-noun" "collect"
comment:
#true
(read-sentence!a) (tails) (002) "length" "gather-noun" "sentence" (003) "cons" (noun) "gather-noun" "collect"
(read-sentence!b) "list" "output-string"
comment:
#true
(003) "begin" (003) "display" "list" "output-string" (read-sentence!ba) "output-string" (002) "get-output-string" "output-string"
(read-sentence!ba) "output-string" "get-output-string"
comment:
#true
(003) "begin" (002) "close-output-port" "output-string" (read-sentence!baa) (002) "open-input-string" "get-output-string"
(read-sentence!baa) "input-string"
comment:
#true
(read-sentence!baaa) "input-string" (002) "read" "input-string"
(read-sentence!baaa) "input-string" "answer"
comment:
#true
(003) "begin" (002) "close-input-port" "input-string" "answer"
(read-sentence) "sentence"
comment:
#true
(read-sentence!b) (002) "reverse" (read-sentence!a) "sentence" nil (001) "open-output-string"
(read-sentences) "sentences"
comment:
#true
(003) "map" read-sentence "sentences"
(ready-clause) "clause"
comment:
#true
(003) "cons" (002) "caaar" "clause" (003) "cons" (002) "cdar" "clause" (002) "cdr" "clause"
(ready-program) "program"
comment:
#true
(003) "map" ready-clause "program"
(replace-trailing-white-space!) "program"
comment:
(002) "null?" "program"
nil
(replace-trailing-white-space!) "program"
comment:
(005) "or" (003) "eqv?" (002) "car" "program" #space (003) "eqv?" (002) "car" "program" #tab (003) "eqv?" (002) "car" "program" #return (003) "eqv?" (002) "car" "program" #newline
(replace-trailing-white-space!) (002) "cdr" "program"
(replace-trailing-white-space!) "program"
comment:
#true
(003) "cons" #newline "program"
(replace-trailing-white-space) "program"
comment:
#true
(002) "reverse" (replace-trailing-white-space!) (002) "reverse" "program"
(reverse) list
comment:
#true
(002) "reverse" list
(schemefy!) "expression" "arity-hash" "stack"
comment:
(002) "null?" "expression"
(top) "stack"
(schemefy!) "expression" "arity-hash" "stack"
comment:
(application?) "expression"
(schemefy!a) "expression" "arity-hash" "stack" (function) "expression"
(schemefy!) "expression" "arity-hash" "stack"
comment:
#true
(schemefy!) (002) "cdr" "expression" "arity-hash" (push) (002) "car" "expression" "stack"
(schemefy!a) "expression" "arity-hash" "stack" "function"
comment:
#true
(schemefy!aa) "expression" "arity-hash" "stack" "function" (arity) "arity-hash" "function"
(schemefy!aa) "expression" "arity-hash" "stack" "function" "arity"
comment:
(gather-count?) "function"
(schemefy!) (002) "cdr" "expression" "arity-hash" (push) (first) "arity" "stack" (tails) "arity" "stack"
(schemefy!aa) "expression" "arity-hash" "stack" "function" "arity"
comment:
(003) "eq?" "function" "'ZED1"
(schemefy!) (002) "cdr" "expression" "arity-hash" (push) (005) "list" "'if" (003) "list" "'promise?" (003) "cons" "'car" (first) "arity" "stack" (003) "list" "'force" (003) "cons" "'car" (first) "arity" "stack" (003) "cons" "'car" (first) "arity" "stack" (tails) "arity" "stack"
(schemefy!aa) "expression" "arity-hash" "stack" "function" "arity"
comment:
(003) "eq?" "function" "'ZED!"
(schemefy!) (002) "cdr" "expression" "arity-hash" (push) (005) "list" "'if" (003) "list" "'promise?" (003) "cons" "'cdr" (first) "arity" "stack" (003) "list" "'force" (003) "cons" "'cdr" (first) "arity" "stack" (003) "cons" "'cdr" (first) "arity" "stack" (tails) "arity" "stack"
(schemefy!aa) "expression" "arity-hash" "stack" "function" "arity"
comment:
(003) "eq?" "function" "'ZEDc"
(schemefy!) (002) "cdr" "expression" "arity-hash" (push) (003) "cons" "'cons" (003) "map" delay-wrap (first) "arity" "stack" (tails) "arity" "stack"
(schemefy!aa) "expression" "arity-hash" "stack" "function" "arity"
comment:
#true
(schemefy!) (002) "cdr" "expression" "arity-hash" (push) (003) "cons" "function" (first) "arity" "stack" (tails) "arity" "stack"
(schemefy) "expression" "arity-hash"
comment:
#true
(002) "list" (schemefy!) (002) "reverse" "expression" "arity-hash" (stack)
(sentence-less?) "sentence1" "sentence2"
comment:
(002) "null?" "sentence2"
"#f"
(sentence-less?) "sentence1" "sentence2"
comment:
(002) "null?" "sentence1"
"#t"
(sentence-less?) "sentence1" "sentence2"
comment:
(character-less?) (002) "car" "sentence1" (002) "car" "sentence2"
"#t"
(sentence-less?) "sentence1" "sentence2"
comment:
(character-less?) (002) "car" "sentence2" (002) "car" "sentence1"
"#f"
(sentence-less?) "sentence1" "sentence2"
comment:
#true
(sentence-less?) (002) "cdr" "sentence1" (002) "cdr" "sentence2"
(sentences!) "program" "collect1" "collect2"
comment:
(002) "null?" "program"
"collect2"
(sentences!) "program" "collect1" "collect2"
comment:
(003) "eqv?" #newline (002) "car" "program"
(sentences!) (002) "cdr" "program" nil (003) "cons" (002) "reverse" "collect1" "collect2"
(sentences!) "program" "collect1" "collect2"
comment:
#true
(sentences!) (002) "cdr" "program" (003) "cons" (002) "car" "program" "collect1" "collect2"
(sentences) "program"
comment:
#true
(002) "reverse" (sentences!) "program" nil nil
(sort!a) "jumble"
comment:
#true
(003) "map" "list" "jumble"
(sort!b) "comparator" "jumble"
comment:
(002) "null?" "jumble"
nil
(sort!b) "comparator" "jumble"
comment:
(002) "null?" (002) "cdr" "jumble"
"jumble"
(sort!b) "comparator" "jumble"
comment:
#true
(sort!b) "comparator" (003) "cons" (merge) "comparator" (002) "car" "jumble" (002) "cadr" "jumble" (sort!b) "comparator" (002) "cddr" "jumble"
(sort) "comparator" "jumble"
comment:
#true
(002) "car" (sort!b) "comparator" (sort!a) "jumble"
(space-newline!) "program" "collect"
comment:
(003) "or" (002) "null?" "program" (002) "null?" (002) "cdr" "program"
(003) "append" "program" "collect"
(space-newline!) "program" "collect"
comment:
(003) "and" (003) "eqv?" #space (002) "car" "program" (003) "eqv?" #newline (002) "cadr" "program"
(space-newline!) (002) "cdr" "program" "collect"
(space-newline!) "program" "collect"
comment:
#true
(space-newline!) (002) "cdr" "program" (003) "cons" (002) "car" "program" "collect"
(space-newline) "program"
comment:
#true
(002) "reverse" (space-newline!) "program" nil
(stack)
comment:
#true
nil
(tab-replace!) "program" "collect"
comment:
(002) "null?" "program"
"collect"
(tab-replace!) "program" "collect"
comment:
(003) "eqv?" #tab (002) "car" "program"
(tab-replace!) (002) "cdr" "program" (003) "cons" #space "collect"
(tab-replace!) "program" "collect"
comment:
#true
(tab-replace!) (002) "cdr" "program" (003) "cons" (002) "car" "program" "collect"
(tab-replace) "program"
comment:
#true
(002) "reverse" (tab-replace!) "program" nil
(tails) "number" "list"
comment:
(002) "null?" "list"
nil
(tails) "number" "list"
comment:
(002) "zero?" "number"
"list"
(tails) "number" "list"
comment:
(003) ">" "number" 0
(tails) (003) "-" "number" 1 (002) "cdr" "list"
(top) "stack"
comment:
#true
(002) "car" "stack"
(true?) "noun-list"
comment:
#true
(003) "equal?" "noun-list" (006) "list" ## #t #r #u #e
(verb) "verb-list"
comment:
(literal?) "verb-list"
(002) "list" (make-literal) "verb-list"
(verb) "verb-list"
comment:
#true
(002) "list" (make-ZED) "verb-list"
(write-all) "program"
comment:
(002) "null?" "program"
err
(write-all) "program"
comment:
#true
(write-all) (003) "begin" (002) "write-char" (002) "car" "program" (002) "cdr" "program"
(zed->scheme!) "value" "collect"
comment:
(002) "null?" "value"
(002) "reverse" "collect"
(zed->scheme!) "value" "collect"
comment:
#true
(zed->scheme!) (!) "value" (003) "cons" (zed->scheme) (1) "value" "collect"
(zed->scheme) "value"
comment:
(002) "not" (002) "pair?" "value"
"value"
(zed->scheme) "value"
comment:
#true
(zed->scheme!) "value" nil