( begin  ( define  ( ZEDappend ZEDlist1 ZEDlist2)  ( cond  ( #t ( append  ZEDlist1 ZEDlist2) )  ( else  err) ) )  ( define  ( ZEDcons ZEDitem ZEDlist)  ( cond  ( #t ( cons  ZEDitem ZEDlist) )  ( else  err) ) )  ( define  ( ZEDmain)  ( cond  ( #t ( display  ( ZEDsort >  ( list  4  3  5  6  8  7  1  2  9 ) ) ) )  ( else  err) ) )  ( define  ( ZEDmap ZEDfunction ZEDlist)  ( cond  ( #t ( map  ZEDfunction ZEDlist) )  ( else  err) ) )  ( define  ( ZEDmerge ZEDcomparator ZEDlist1 ZEDlist2)  ( cond  ( #t ( ZEDmerge01 ZEDcomparator ZEDlist1 ZEDlist2 ( quote  ( ) ) ) )  ( else  err) ) )  ( define  ( ZEDmerge01 ZEDcomparator ZEDlist1 ZEDlist2 ZEDcollect)  ( cond  ( ( ZEDnull? ZEDlist2)  ( ZEDappend ( ZEDreverse ZEDcollect)  ZEDlist1) )  ( ( ZEDnull? ZEDlist1)  ( ZEDappend ( ZEDreverse ZEDcollect)  ZEDlist2) )  ( ( ZEDcomparator ( if  ( promise? ( car  ZEDlist2) )  ( force  ( car  ZEDlist2) )  ( car  ZEDlist2) )  ( if  ( promise? ( car  ZEDlist1) )  ( force  ( car  ZEDlist1) )  ( car  ZEDlist1) ) )  ( ZEDmerge01 ZEDcomparator ZEDlist1 ( if  ( promise? ( cdr  ZEDlist2) )  ( force  ( cdr  ZEDlist2) )  ( cdr  ZEDlist2) )  ( ZEDcons ( if  ( promise? ( car  ZEDlist2) )  ( force  ( car  ZEDlist2) )  ( car  ZEDlist2) )  ZEDcollect) ) )  ( #t ( ZEDmerge01 ZEDcomparator ( if  ( promise? ( cdr  ZEDlist1) )  ( force  ( cdr  ZEDlist1) )  ( cdr  ZEDlist1) )  ZEDlist2 ( ZEDcons ( if  ( promise? ( car  ZEDlist1) )  ( force  ( car  ZEDlist1) )  ( car  ZEDlist1) )  ZEDcollect) ) )  ( else  err) ) )  ( define  ( ZEDnull? ZEDvalue)  ( cond  ( #t ( null?  ZEDvalue) )  ( else  err) ) )  ( define  ( ZEDreverse ZEDlist)  ( cond  ( #t ( reverse  ZEDlist) )  ( else  err) ) )  ( define  ( ZEDsort ZEDcomparator ZEDjumble)  ( cond  ( #t ( ZEDsort03 ZEDcomparator ( ZEDsort02 ZEDcomparator ( ZEDsort01 ZEDjumble) ) ) )  ( else  err) ) )  ( define  ( ZEDsort01 ZEDjumble)  ( cond  ( #t ( ZEDmap list  ZEDjumble) )  ( else  err) ) )  ( define  ( ZEDsort02 ZEDcomparator ZEDjumble)  ( cond  ( ( ZEDnull? ZEDjumble)  ( quote  ( ) ) )  ( ( ZEDnull? ( if  ( promise? ( cdr  ZEDjumble) )  ( force  ( cdr  ZEDjumble) )  ( cdr  ZEDjumble) ) )  ZEDjumble)  ( #t ( ZEDcons ( ZEDmerge ZEDcomparator ( if  ( promise? ( car  ZEDjumble) )  ( force  ( car  ZEDjumble) )  ( car  ZEDjumble) )  ( if  ( promise? ( car  ( if  ( promise? ( cdr  ZEDjumble) )  ( force  ( cdr  ZEDjumble) )  ( cdr  ZEDjumble) ) ) )  ( force  ( car  ( if  ( promise? ( cdr  ZEDjumble) )  ( force  ( cdr  ZEDjumble) )  ( cdr  ZEDjumble) ) ) )  ( car  ( if  ( promise? ( cdr  ZEDjumble) )  ( force  ( cdr  ZEDjumble) )  ( cdr  ZEDjumble) ) ) ) )  ( ZEDsort02 ZEDcomparator ( if  ( promise? ( cdr  ( if  ( promise? ( cdr  ZEDjumble) )  ( force  ( cdr  ZEDjumble) )  ( cdr  ZEDjumble) ) ) )  ( force  ( cdr  ( if  ( promise? ( cdr  ZEDjumble) )  ( force  ( cdr  ZEDjumble) )  ( cdr  ZEDjumble) ) ) )  ( cdr  ( if  ( promise? ( cdr  ZEDjumble) )  ( force  ( cdr  ZEDjumble) )  ( cdr  ZEDjumble) ) ) ) ) ) )  ( else  err) ) )  ( define  ( ZEDsort03 ZEDcomparator ZEDjumble)  ( cond  ( ( ZEDnull? ZEDjumble)  ( quote  ( ) ) )  ( ( ZEDnull? ( if  ( promise? ( cdr  ZEDjumble) )  ( force  ( cdr  ZEDjumble) )  ( cdr  ZEDjumble) ) )  ( if  ( promise? ( car  ZEDjumble) )  ( force  ( car  ZEDjumble) )  ( car  ZEDjumble) ) )  ( #t ( ZEDsort03 ZEDcomparator ( ZEDsort02 ZEDcomparator ZEDjumble) ) )  ( else  err) ) ) ) ( ZEDmain) 
KGJlZ2luIChkZWZpbmUgKFpFRGFwcGVuZCBaRURsaXN0MSBaRURsaXN0MikgKGNvbmQgKCN0IChhcHBlbmQgWkVEbGlzdDEgWkVEbGlzdDIpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEY29ucyBaRURpdGVtIFpFRGxpc3QpIChjb25kICgjdCAoY29ucyBaRURpdGVtIFpFRGxpc3QpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEbWFpbikgKGNvbmQgKCN0IChkaXNwbGF5IChaRURzb3J0ID4gKGxpc3QgNCAzIDUgNiA4IDcgMSAyIDkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURtYXAgWkVEZnVuY3Rpb24gWkVEbGlzdCkgKGNvbmQgKCN0IChtYXAgWkVEZnVuY3Rpb24gWkVEbGlzdCkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURtZXJnZSBaRURjb21wYXJhdG9yIFpFRGxpc3QxIFpFRGxpc3QyKSAoY29uZCAoI3QgKFpFRG1lcmdlMDEgWkVEY29tcGFyYXRvciBaRURsaXN0MSBaRURsaXN0MiAocXVvdGUgKCkpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG1lcmdlMDEgWkVEY29tcGFyYXRvciBaRURsaXN0MSBaRURsaXN0MiBaRURjb2xsZWN0KSAoY29uZCAoKFpFRG51bGw/IFpFRGxpc3QyKSAoWkVEYXBwZW5kIChaRURyZXZlcnNlIFpFRGNvbGxlY3QpIFpFRGxpc3QxKSkgKChaRURudWxsPyBaRURsaXN0MSkgKFpFRGFwcGVuZCAoWkVEcmV2ZXJzZSBaRURjb2xsZWN0KSBaRURsaXN0MikpICgoWkVEY29tcGFyYXRvciAoaWYgKHByb21pc2U/IChjYXIgWkVEbGlzdDIpKSAoZm9yY2UgKGNhciBaRURsaXN0MikpIChjYXIgWkVEbGlzdDIpKSAoaWYgKHByb21pc2U/IChjYXIgWkVEbGlzdDEpKSAoZm9yY2UgKGNhciBaRURsaXN0MSkpIChjYXIgWkVEbGlzdDEpKSkgKFpFRG1lcmdlMDEgWkVEY29tcGFyYXRvciBaRURsaXN0MSAoaWYgKHByb21pc2U/IChjZHIgWkVEbGlzdDIpKSAoZm9yY2UgKGNkciBaRURsaXN0MikpIChjZHIgWkVEbGlzdDIpKSAoWkVEY29ucyAoaWYgKHByb21pc2U/IChjYXIgWkVEbGlzdDIpKSAoZm9yY2UgKGNhciBaRURsaXN0MikpIChjYXIgWkVEbGlzdDIpKSBaRURjb2xsZWN0KSkpICgjdCAoWkVEbWVyZ2UwMSBaRURjb21wYXJhdG9yIChpZiAocHJvbWlzZT8gKGNkciBaRURsaXN0MSkpIChmb3JjZSAoY2RyIFpFRGxpc3QxKSkgKGNkciBaRURsaXN0MSkpIFpFRGxpc3QyIChaRURjb25zIChpZiAocHJvbWlzZT8gKGNhciBaRURsaXN0MSkpIChmb3JjZSAoY2FyIFpFRGxpc3QxKSkgKGNhciBaRURsaXN0MSkpIFpFRGNvbGxlY3QpKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRG51bGw/IFpFRHZhbHVlKSAoY29uZCAoI3QgKG51bGw/IFpFRHZhbHVlKSkgKGVsc2UgZXJyKSkpIChkZWZpbmUgKFpFRHJldmVyc2UgWkVEbGlzdCkgKGNvbmQgKCN0IChyZXZlcnNlIFpFRGxpc3QpKSAoZWxzZSBlcnIpKSkgKGRlZmluZSAoWkVEc29ydCBaRURjb21wYXJhdG9yIFpFRGp1bWJsZSkgKGNvbmQgKCN0IChaRURzb3J0MDMgWkVEY29tcGFyYXRvciAoWkVEc29ydDAyIFpFRGNvbXBhcmF0b3IgKFpFRHNvcnQwMSBaRURqdW1ibGUpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURzb3J0MDEgWkVEanVtYmxlKSAoY29uZCAoI3QgKFpFRG1hcCBsaXN0IFpFRGp1bWJsZSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURzb3J0MDIgWkVEY29tcGFyYXRvciBaRURqdW1ibGUpIChjb25kICgoWkVEbnVsbD8gWkVEanVtYmxlKSAocXVvdGUgKCkpKSAoKFpFRG51bGw/IChpZiAocHJvbWlzZT8gKGNkciBaRURqdW1ibGUpKSAoZm9yY2UgKGNkciBaRURqdW1ibGUpKSAoY2RyIFpFRGp1bWJsZSkpKSBaRURqdW1ibGUpICgjdCAoWkVEY29ucyAoWkVEbWVyZ2UgWkVEY29tcGFyYXRvciAoaWYgKHByb21pc2U/IChjYXIgWkVEanVtYmxlKSkgKGZvcmNlIChjYXIgWkVEanVtYmxlKSkgKGNhciBaRURqdW1ibGUpKSAoaWYgKHByb21pc2U/IChjYXIgKGlmIChwcm9taXNlPyAoY2RyIFpFRGp1bWJsZSkpIChmb3JjZSAoY2RyIFpFRGp1bWJsZSkpIChjZHIgWkVEanVtYmxlKSkpKSAoZm9yY2UgKGNhciAoaWYgKHByb21pc2U/IChjZHIgWkVEanVtYmxlKSkgKGZvcmNlIChjZHIgWkVEanVtYmxlKSkgKGNkciBaRURqdW1ibGUpKSkpIChjYXIgKGlmIChwcm9taXNlPyAoY2RyIFpFRGp1bWJsZSkpIChmb3JjZSAoY2RyIFpFRGp1bWJsZSkpIChjZHIgWkVEanVtYmxlKSkpKSkgKFpFRHNvcnQwMiBaRURjb21wYXJhdG9yIChpZiAocHJvbWlzZT8gKGNkciAoaWYgKHByb21pc2U/IChjZHIgWkVEanVtYmxlKSkgKGZvcmNlIChjZHIgWkVEanVtYmxlKSkgKGNkciBaRURqdW1ibGUpKSkpIChmb3JjZSAoY2RyIChpZiAocHJvbWlzZT8gKGNkciBaRURqdW1ibGUpKSAoZm9yY2UgKGNkciBaRURqdW1ibGUpKSAoY2RyIFpFRGp1bWJsZSkpKSkgKGNkciAoaWYgKHByb21pc2U/IChjZHIgWkVEanVtYmxlKSkgKGZvcmNlIChjZHIgWkVEanVtYmxlKSkgKGNkciBaRURqdW1ibGUpKSkpKSkpIChlbHNlIGVycikpKSAoZGVmaW5lIChaRURzb3J0MDMgWkVEY29tcGFyYXRvciBaRURqdW1ibGUpIChjb25kICgoWkVEbnVsbD8gWkVEanVtYmxlKSAocXVvdGUgKCkpKSAoKFpFRG51bGw/IChpZiAocHJvbWlzZT8gKGNkciBaRURqdW1ibGUpKSAoZm9yY2UgKGNkciBaRURqdW1ibGUpKSAoY2RyIFpFRGp1bWJsZSkpKSAoaWYgKHByb21pc2U/IChjYXIgWkVEanVtYmxlKSkgKGZvcmNlIChjYXIgWkVEanVtYmxlKSkgKGNhciBaRURqdW1ibGUpKSkgKCN0IChaRURzb3J0MDMgWkVEY29tcGFyYXRvciAoWkVEc29ydDAyIFpFRGNvbXBhcmF0b3IgWkVEanVtYmxlKSkpIChlbHNlIGVycikpKSkoWkVEbWFpbik=
				
				 
			
				
			
			
				
	 
KGFwcGVuZCkgbGlzdDEgbGlzdDIKPT09PT09PT09CiN0cnVlCigwMDMpICZxdW90O2FwcGVuZCZxdW90OyBsaXN0MSBsaXN0MgoKKGNvbnMpIGl0ZW0gbGlzdAo9PT09PT09PT0KI3RydWUKKDAwMykgJnF1b3Q7Y29ucyZxdW90OyBpdGVtIGxpc3QKCihtYXApIGZ1bmN0aW9uIGxpc3QKPT09PT09PT09CiN0cnVlCigwMDMpICZxdW90O21hcCZxdW90OyBmdW5jdGlvbiBsaXN0CiAKKG1lcmdlKSBjb21wYXJhdG9yIGxpc3QxIGxpc3QyCkJSSU5HIElOIENPTExFQ1QgQVJHVU1FTlQKI3RydWUKKG1lcmdlMDEpIGNvbXBhcmF0b3IgbGlzdDEgbGlzdDIgbmlsCiAKKG1lcmdlMDEpIGNvbXBhcmF0b3IgbGlzdDEgbGlzdDIgY29sbGVjdApMSVNUMiBFWEhBVVNURUQKKG51bGw/KSBsaXN0MgooYXBwZW5kKSAocmV2ZXJzZSkgY29sbGVjdCBsaXN0MQogCihtZXJnZTAxKSBjb21wYXJhdG9yIGxpc3QxIGxpc3QyIGNvbGxlY3QKTElTVDEgRVhIQVVTVEVECihudWxsPykgbGlzdDEKKGFwcGVuZCkgKHJldmVyc2UpIGNvbGxlY3QgbGlzdDIKIAoobWVyZ2UwMSkgY29tcGFyYXRvciBsaXN0MSBsaXN0MiBjb2xsZWN0CkNPTVBBUkFUT1IgQ0hPT1NFUyBMSVNUMgooMDAzKSBjb21wYXJhdG9yICgxKSBsaXN0MiAoMSkgbGlzdDEKKG1lcmdlMDEpIGNvbXBhcmF0b3IKICBsaXN0MQogICghKSBsaXN0MiAKICAoY29ucykgKDEpIGxpc3QyIGNvbGxlY3QKIAoobWVyZ2UwMSkgY29tcGFyYXRvciBsaXN0MSBsaXN0MiBjb2xsZWN0Ck5PVyBUQUtFIEZST00gTElTVDEgKFBSSU9SSVRZIFNUQUJJTElUWSkKI3RydWUKKG1lcmdlMDEpIGNvbXBhcmF0b3IKICAoISkgbGlzdDEgCiAgbGlzdDIKICAoY29ucykgKDEpIGxpc3QxIGNvbGxlY3QKIAoobnVsbD8pIHZhbHVlCj09PT09PT09PQojdHJ1ZQooMDAyKSAmcXVvdDtudWxsPyZxdW90OyB2YWx1ZQogCihyZXZlcnNlKSBsaXN0Cj09PT09PT09PQojdHJ1ZQooMDAyKSAmcXVvdDtyZXZlcnNlJnF1b3Q7IGxpc3QKIAooc29ydCkgY29tcGFyYXRvciBqdW1ibGUKUFJFUEFSRSBKVU1CTEUgQU5EIFBFUkZPUk0gTUVSR0UgUEFTU0VTCiN0cnVlCihzb3J0MDMpIGNvbXBhcmF0b3IgKHNvcnQwMikgY29tcGFyYXRvciAoc29ydDAxKSBqdW1ibGUKIAooc29ydDAxKSBqdW1ibGUKUFJFUEFSRSBKVU1CTEUKI3RydWUKKG1hcCkgJnF1b3Q7bGlzdCZxdW90OyBqdW1ibGUKIAooc29ydDAyKSBjb21wYXJhdG9yIGp1bWJsZQpFTVBUWSBKVU1CTEUKKG51bGw/KSBqdW1ibGUKbmlsCiAKKHNvcnQwMikgY29tcGFyYXRvciBqdW1ibGUKT05FIExJU1QgSlVNQkxFCihudWxsPykgKCEpIGp1bWJsZQpqdW1ibGUKIAooc29ydDAyKSBjb21wYXJhdG9yIGp1bWJsZQpQRVJGT1JNIE1FUkdFIFBBU1MKI3RydWUKKGNvbnMpIChtZXJnZSkgY29tcGFyYXRvciAoMSkganVtYmxlICgxKSAoISkganVtYmxlCiAgKHNvcnQwMikgY29tcGFyYXRvciAoISkgKCEpIGp1bWJsZQoKKHNvcnQwMykgY29tcGFyYXRvciBqdW1ibGUKRU1QVFkgSlVNQkxFCihudWxsPykganVtYmxlCm5pbAoKKHNvcnQwMykgY29tcGFyYXRvciBqdW1ibGUKT05FIExJU1QgSlVNQkxFCihudWxsPykgKCEpIGp1bWJsZQooMSkganVtYmxlCgooc29ydDAzKSBjb21wYXJhdG9yIGp1bWJsZQpQRVJGT1JNIE1FUkdFIFBBU1MgQU5EIFJFU1RBUlQKI3RydWUKKHNvcnQwMykgY29tcGFyYXRvciAoc29ydDAyKSBjb21wYXJhdG9yIGp1bWJsZQoKKG1haW4pCkVOVFJZIFBPSU5UCiN0cnVlCigwMDIpICZxdW90O2Rpc3BsYXkmcXVvdDsgKHNvcnQpICZxdW90OyZndDsmcXVvdDsgKDAxMCkgJnF1b3Q7bGlzdCZxdW90OyA0IDMgNSA2IDggNyAxIDIgOQ==
(append) list1 list2
=========
#true
(003) "append" list1 list2
(cons) item list
=========
#true
(003) "cons" item list
(map) function list
=========
#true
(003) "map" function list
 
(merge) comparator list1 list2
BRING IN COLLECT ARGUMENT
#true
(merge01) comparator list1 list2 nil
 
(merge01) comparator list1 list2 collect
LIST2 EXHAUSTED
(null?) list2
(append) (reverse) collect list1
 
(merge01) comparator list1 list2 collect
LIST1 EXHAUSTED
(null?) list1
(append) (reverse) collect list2
 
(merge01) comparator list1 list2 collect
COMPARATOR CHOOSES LIST2
(003) comparator (1) list2 (1) list1
(merge01) comparator
  list1
  (!) list2 
  (cons) (1) list2 collect
 
(merge01) comparator list1 list2 collect
NOW TAKE FROM LIST1 (PRIORITY STABILITY)
#true
(merge01) comparator
  (!) list1 
  list2
  (cons) (1) list1 collect
 
(null?) value
=========
#true
(002) "null?" value
 
(reverse) list
=========
#true
(002) "reverse" list
 
(sort) comparator jumble
PREPARE JUMBLE AND PERFORM MERGE PASSES
#true
(sort03) comparator (sort02) comparator (sort01) jumble
 
(sort01) jumble
PREPARE JUMBLE
#true
(map) "list" jumble
 
(sort02) comparator jumble
EMPTY JUMBLE
(null?) jumble
nil
 
(sort02) comparator jumble
ONE LIST JUMBLE
(null?) (!) jumble
jumble
 
(sort02) comparator jumble
PERFORM MERGE PASS
#true
(cons) (merge) comparator (1) jumble (1) (!) jumble
  (sort02) comparator (!) (!) jumble
(sort03) comparator jumble
EMPTY JUMBLE
(null?) jumble
nil
(sort03) comparator jumble
ONE LIST JUMBLE
(null?) (!) jumble
(1) jumble
(sort03) comparator jumble
PERFORM MERGE PASS AND RESTART
#true
(sort03) comparator (sort02) comparator jumble
(main)
ENTRY POINT
#true
(002) "display" (sort) ">" (010) "list" 4 3 5 6 8 7 1 2 9