sam.ps - sam - An updated version of the sam text editor.
 (HTM) git clone git://vernunftzentrum.de/sam.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
       sam.ps (320664B)
       ---
            1 %!PS
            2 %%Version: 3.3.2
            3 %%DocumentFonts: (atend)
            4 %%Pages: (atend)
            5 %%EndComments
            6 %
            7 % Version 3.3.2 prologue for troff files.
            8 %
            9 
           10 /#copies 1 store
           11 /aspectratio 1 def
           12 /formsperpage 1 def
           13 /landscape false def
           14 /linewidth .3 def
           15 /magnification 1 def
           16 /margin 0 def
           17 /orientation 0 def
           18 /resolution 720 def
           19 /rotation 1 def
           20 /xoffset 0 def
           21 /yoffset 0 def
           22 
           23 /roundpage true def
           24 /useclippath true def
           25 /pagebbox [0 0 612 792] def
           26 
           27 /R  /Times-Roman def
           28 /I  /Times-Italic def
           29 /B  /Times-Bold def
           30 /BI /Times-BoldItalic def
           31 /H  /Helvetica def
           32 /HI /Helvetica-Oblique def
           33 /HB /Helvetica-Bold def
           34 /HX /Helvetica-BoldOblique def
           35 /CW /Courier def
           36 /CO /Courier def
           37 /CI /Courier-Oblique def
           38 /CB /Courier-Bold def
           39 /CX /Courier-BoldOblique def
           40 /PA /Palatino-Roman def
           41 /PI /Palatino-Italic def
           42 /PB /Palatino-Bold def
           43 /PX /Palatino-BoldItalic def
           44 /Hr /Helvetica-Narrow def
           45 /Hi /Helvetica-Narrow-Oblique def
           46 /Hb /Helvetica-Narrow-Bold def
           47 /Hx /Helvetica-Narrow-BoldOblique def
           48 /KR /Bookman-Light def
           49 /KI /Bookman-LightItalic def
           50 /KB /Bookman-Demi def
           51 /KX /Bookman-DemiItalic def
           52 /AR /AvantGarde-Book def
           53 /AI /AvantGarde-BookOblique def
           54 /AB /AvantGarde-Demi def
           55 /AX /AvantGarde-DemiOblique def
           56 /NR /NewCenturySchlbk-Roman def
           57 /NI /NewCenturySchlbk-Italic def
           58 /NB /NewCenturySchlbk-Bold def
           59 /NX /NewCenturySchlbk-BoldItalic def
           60 /ZD /ZapfDingbats def
           61 /ZI /ZapfChancery-MediumItalic def
           62 /S  /S def
           63 /S1 /S1 def
           64 /GR /Symbol def
           65 
           66 /inch {72 mul} bind def
           67 /min {2 copy gt {exch} if pop} bind def
           68 
           69 /show {show} bind def                % so later references don't bind
           70 /widthshow {widthshow} bind def
           71 /stringwidth {stringwidth} bind def
           72 
           73 /setup {
           74         counttomark 2 idiv {def} repeat pop
           75 
           76         landscape {/orientation 90 orientation add def} if
           77         /scaling 72 resolution div def
           78         linewidth setlinewidth
           79         1 setlinecap
           80 
           81         pagedimensions
           82         xcenter ycenter translate
           83         orientation rotation mul rotate
           84         width 2 div neg height 2 div translate
           85         xoffset inch yoffset inch neg translate
           86         margin 2 div dup neg translate
           87         magnification dup aspectratio mul scale
           88         scaling scaling scale
           89 
           90         addmetrics
           91         0 0 moveto
           92 } def
           93 
           94 /pagedimensions {
           95         useclippath userdict /gotpagebbox known not and {
           96                 /pagebbox [clippath pathbbox newpath] def
           97                 roundpage currentdict /roundpagebbox known and {roundpagebbox} if
           98         } if
           99         pagebbox aload pop
          100         4 -1 roll exch 4 1 roll 4 copy
          101         landscape {4 2 roll} if
          102         sub /width exch def
          103         sub /height exch def
          104         add 2 div /xcenter exch def
          105         add 2 div /ycenter exch def
          106         userdict /gotpagebbox true put
          107 } def
          108 
          109 /addmetrics {
          110         /Symbol /S null Sdefs cf
          111         /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf
          112 } def
          113 
          114 /pagesetup {
          115         /page exch def
          116         currentdict /pagedict known currentdict page known and {
          117                 page load pagedict exch get cvx exec
          118         } if
          119 } def
          120 
          121 /decodingdefs [
          122         {counttomark 2 idiv {y moveto show} repeat}
          123         {neg /y exch def counttomark 2 idiv {y moveto show} repeat}
          124         {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat}
          125         {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat}
          126         {counttomark 2 idiv {y moveto show} repeat}
          127         {neg setfunnytext}
          128 ] def
          129 
          130 /setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def
          131 
          132 /w {neg moveto show} bind def
          133 /m {neg dup /y exch def moveto} bind def
          134 /done {/lastpage where {pop lastpage} if} def
          135 
          136 /f {
          137         dup /font exch def findfont exch
          138         dup /ptsize exch def scaling div dup /size exch def scalefont setfont
          139         linewidth ptsize mul scaling 10 mul div setlinewidth
          140         /spacewidth ( ) stringwidth pop def
          141 } bind def
          142 
          143 /changefont {
          144         /fontheight exch def
          145         /fontslant exch def
          146         currentfont [
          147                 1 0
          148                 fontheight ptsize div fontslant sin mul fontslant cos div
          149                 fontheight ptsize div
          150                 0 0
          151         ] makefont setfont
          152 } bind def
          153 
          154 /sf {f} bind def
          155 
          156 /cf {
          157         dup length 2 idiv
          158         /entries exch def
          159         /chtab exch def
          160         /newencoding exch def
          161         /newfont exch def
          162 
          163         findfont dup length 1 add dict
          164         /newdict exch def
          165         {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall
          166 
          167         newencoding type /arraytype eq {newdict /Encoding newencoding put} if
          168 
          169         newdict /Metrics entries dict put
          170         newdict /Metrics get
          171         begin
          172                 chtab aload pop
          173                 1 1 entries {pop def} for
          174                 newfont newdict definefont pop
          175         end
          176 } bind def
          177 
          178 %
          179 % A few arrays used to adjust reference points and character widths in some
          180 % of the printer resident fonts. If square roots are too high try changing
          181 % the lines describing /radical and /radicalex to,
          182 %
          183 %        /radical        [0 -75 550 0]
          184 %        /radicalex        [-50 -75 500 0]
          185 %
          186 % Move braceleftbt a bit - default PostScript character is off a bit.
          187 %
          188 
          189 /Sdefs [
          190         /bracketlefttp                [201 500]
          191         /bracketleftbt                [201 500]
          192         /bracketrighttp                [-81 380]
          193         /bracketrightbt                [-83 380]
          194         /braceleftbt                [203 490]
          195         /bracketrightex                [220 -125 500 0]
          196         /radical                [0 0 550 0]
          197         /radicalex                [-50 0 500 0]
          198         /parenleftex                [-20 -170 0 0]
          199         /integral                [100 -50 500 0]
          200         /infinity                [10 -75 730 0]
          201 ] def
          202 
          203 /S1defs [
          204         /underscore                [0 80 500 0]
          205         /endash                        [7 90 650 0]
          206 ] def
          207 %
          208 % Tries to round clipping path dimensions, as stored in array pagebbox, so they
          209 % match one of the known sizes in the papersizes array. Lower left coordinates
          210 % are always set to 0.
          211 %
          212 
          213 /roundpagebbox {
          214     7 dict begin
          215         /papersizes [8.5 inch 11 inch 14 inch 17 inch] def
          216 
          217         /mappapersize {
          218                 /val exch def
          219                 /slop .5 inch def
          220                 /diff slop def
          221                 /j 0 def
          222                 0 1 papersizes length 1 sub {
          223                         /i exch def
          224                         papersizes i get val sub abs
          225                         dup diff le {/diff exch def /j i def} {pop} ifelse
          226                 } for
          227                 diff slop lt {papersizes j get} {val} ifelse
          228         } def
          229 
          230         pagebbox 0 0 put
          231         pagebbox 1 0 put
          232         pagebbox dup 2 get mappapersize 2 exch put
          233         pagebbox dup 3 get mappapersize 3 exch put
          234     end
          235 } bind def
          236 
          237 %%EndProlog
          238 %%BeginSetup
          239 mark
          240 /linewidth 0.5 def
          241 /#copies 1 store
          242 /landscape false def
          243 /resolution 720 def
          244 setup
          245 2 setdecoding
          246 %%EndSetup
          247 %%Page: 1 1
          248 /saveobj save def
          249 mark
          250 1 pagesetup
          251 12 B f
          252 (The Text Editor)2 827 1 2343 1230 t
          253 12 CW f
          254 (sam)3200 1230 w
          255 10 I f
          256 (ROB PIKE)1 441 1 2659 1470 t
          257 10 R f
          258 (AT&T Bell Laboratories)2 993 1 2383 1650 t
          259 (Murray Hill, New Jersey 07974)4 1267 1 2246 1770 t
          260 10 I f
          261 (ABSTRACT)2643 2150 w
          262 10 CW f
          263 (Sam)1080 2446 w
          264 10 R f
          265 ( textual com-)2 541( A)1 129( text editor intended for bitmap displays.)6 1666(is an interactive multi-file)3 1053 4 1291 2446 t
          266 ( the mouse-driven, cut-and-paste interface to make complex)7 2450(mand language supplements)2 1150 2 1080 2566 t
          267 ( language is characterized by the composi-)6 1719( The)1 208( editing tasks easy to specify.)5 1186(or repetitive)1 487 4 1080 2686 t
          268 ( treat-)1 237( The)1 207( regular expressions to describe the structure of the text being modified.)11 2889(tion of)1 267 4 1080 2806 t
          269 (ment of files as a database, with changes logged as atomic transactions, guides the imple-)14 3600 1 1080 2926 t
          270 (mentation and makes a general `undo' mechanism straightforward.)7 2672 1 1080 3046 t
          271 10 CW f
          272 (Sam)1330 3202 w
          273 10 R f
          274 ( a low-bandwidth stream, one)4 1224(is implemented as two processes connected by)6 1912 2 1544 3202 t
          275 ( it can run)3 435( Therefore)1 453( the other the editing algorithms.)5 1360(process handling the display and)4 1352 4 1080 3322 t
          276 ( with both pro-)3 600(with the display process in a bitmap terminal and the editor on a local host,)14 3000 2 1080 3442 t
          277 ( process in the terminal and the edi-)7 1442(cesses on a bitmap-equipped host, or with the display)8 2158 2 1080 3562 t
          278 ( can even run without a bitmap)6 1243( suppressing the display process, it)5 1388( By)1 167(tor in a remote host.)4 802 4 1080 3682 t
          279 (terminal.)1080 3802 w
          280 ( 17, number)2 502(This paper is reprinted from Software\320Practice and Experience, Vol)8 2848 2 1330 3958 t
          281 (11, pp. 813-845.)2 658 1 1080 4078 t
          282 6 R f
          283 (KEY WORDS)1 354 1 1080 4318 t
          284 8 R f
          285 ( Undo)1 258( expressions)1 391( Caches Regular)2 642(Text editors)1 382 4 1494 4318 t
          286 10 B f
          287 (Introduction)720 4438 w
          288 10 CW f
          289 (Sam)720 4594 w
          290 10 R f
          291 ( that combines cut-and-paste interactive editing with an unusual command)9 3025(is an interactive text editor)4 1085 2 930 4594 t
          292 ( is written as two programs: one, the `host)8 1775( It)1 123( composition of regular expressions.)4 1499(language based on the)3 923 4 720 4714 t
          293 ( the command language and provides file access; the other,)9 2428(part,' runs on a Unix* system and implements)7 1892 2 720 4834 t
          294 ( bitmap display and supports the)5 1337(the `terminal part,' runs asynchronously on a machine with a mouse and)11 2983 2 720 4954 t
          295 ( host part may be even run in isolation on an ordinary terminal to edit)14 2859( The)1 211(display and interactive editing.)3 1250 3 720 5074 t
          296 ( command language, much like a traditional line editor, without assistance from a mouse or)14 3763(text using the)2 557 2 720 5194 t
          297 ( runs on a Blit)4 583( often, the terminal part)4 952(display. Most)1 573 3 720 5314 t
          298 6 R f
          299 (1)2828 5264 w
          300 10 R f
          301 (terminal \(actually on a Teletype DMD 5620, the pro-)8 2153 1 2887 5314 t
          302 ( Sun com-)2 423(duction version of the Blit\), whose host connection is an ordinary 9600 bps RS232 link; on the)16 3897 2 720 5434 t
          303 (puter the host and display processes run on a single machine, connected by a pipe.)14 3283 1 720 5554 t
          304 10 CW f
          305 (Sam)970 5710 w
          306 10 R f
          307 ( unlike)1 282( has no facilities for multiple fonts, graphics or tables,)9 2210( It)1 117(edits uninterpreted ASCII text.)3 1250 4 1181 5710 t
          308 (MacWrite,)720 5830 w
          309 6 R f
          310 (2)1149 5780 w
          311 10 R f
          312 (Bravo,)1211 5830 w
          313 6 R f
          314 (3)1480 5780 w
          315 10 R f
          316 (Tioga)1542 5830 w
          317 6 R f
          318 (4)1775 5780 w
          319 10 R f
          320 (or Lara.)1 322 1 1837 5830 t
          321 6 R f
          322 (5)2159 5780 w
          323 10 R f
          324 ( this)1 176( \(Throughout)1 561( has a rich command language.)5 1266(Also unlike them, it)3 816 4 2221 5830 t
          325 (paper, the phrase)2 708 1 720 5950 t
          326 10 I f
          327 (command language)1 800 1 1468 5950 t
          328 10 R f
          329 ( commands activated from the mouse)5 1575(refers to textual commands;)3 1157 2 2308 5950 t
          330 (form the)1 344 1 720 6070 t
          331 10 I f
          332 (mouse language.)1 679 1 1092 6070 t
          333 10 R f
          334 (\))1771 6070 w
          335 10 CW f
          336 (Sam)1856 6070 w
          337 10 R f
          338 (developed as an editor for use by programmers, and tries to join the styles)13 2977 1 2063 6070 t
          339 (of the Unix text editor)4 968 1 720 6190 t
          340 10 CW f
          341 (ed)1733 6190 w
          342 6 R f
          343 (6,7)1853 6140 w
          344 10 R f
          345 ( cut-and-paste editors by providing a comfortable)6 2100(with that of interactive)3 967 2 1973 6190 t
          346 ( The)1 214( language driven by regular expressions.)5 1658(mouse-driven interface to a program with a solid command)8 2448 3 720 6310 t
          347 ( language, and acquired a notation for describing the)8 2186(command language developed more than the mouse)6 2134 2 720 6430 t
          348 ( a dataflow-like syntax for specifying)5 1594(structure of files more richly than as a sequence of lines, using)11 2726 2 720 6550 t
          349 (changes.)720 6670 w
          350 (The interactive style was influenced by)5 1576 1 970 6826 t
          351 10 CW f
          352 (jim)2573 6826 w
          353 10 R f
          354 (,)2753 6826 w
          355 6 R f
          356 (1)2778 6776 w
          357 10 R f
          358 ( for the Blit, and by)5 798(an early cut-and-paste editor)3 1144 2 2835 6826 t
          359 10 CW f
          360 (mux)4805 6826 w
          361 10 R f
          362 (,)4985 6826 w
          363 6 R f
          364 (8)5010 6776 w
          365 10 R f
          366 (the Blit window system.)3 1000 1 720 6946 t
          367 10 CW f
          368 (Mux)1779 6946 w
          369 10 R f
          370 (merges the original Blit window system,)5 1662 1 1993 6946 t
          371 10 CW f
          372 (mpx)3688 6946 w
          373 10 R f
          374 (,)3868 6946 w
          375 6 R f
          376 (1)3893 6896 w
          377 10 R f
          378 (with cut-and-paste editing,)2 1084 1 3956 6946 t
          379 8 S1 f
          380 (__________________)720 7046 w
          381 8 R f
          382 (* Unix is a registered trademark of AT&T.)7 1365 1 720 7146 t
          383 cleartomark
          384 showpage
          385 saveobj restore
          386 %%EndPage: 1 1
          387 %%Page: 2 2
          388 /saveobj save def
          389 mark
          390 2 pagesetup
          391 10 R f
          392 (- 2 -)2 166 1 2797 480 t
          393 ( like a multiplexed version of)5 1199(forming something)1 768 2 720 840 t
          394 10 CW f
          395 (jim)2717 840 w
          396 10 R f
          397 (that edits the output of \(and input to\) command ses-)9 2113 1 2927 840 t
          398 (sions rather than files.)3 882 1 720 960 t
          399 ( paper describes the command language, then the mouse language, and explains)11 3251(The first part of this)4 819 2 970 1116 t
          400 ( first of the host part, then of the)8 1290( is followed by a description of the implementation,)8 2076( That)1 234(how they interact.)2 720 4 720 1236 t
          401 ( influenced the design of)4 991( principle that)2 555( A)1 122(terminal part.)1 538 4 720 1356 t
          402 10 CW f
          403 (sam)2952 1356 w
          404 10 R f
          405 (is that it should have no explicit limits, such as)9 1882 1 3158 1356 t
          406 ( honor these two)3 663( To)1 161( secondary consideration is that it be efficient.)7 1841( A)1 122( length.)1 300(upper limits on file size or line)6 1233 6 720 1476 t
          407 ( breaking them into)3 783(goals together requires a method for efficiently manipulating huge strings \(files\) without)11 3537 2 720 1596 t
          408 ( control of the command language.)5 1407(lines, perhaps while making thousands of changes under)7 2280 2 720 1716 t
          409 10 CW f
          410 (Sam)4460 1716 w
          411 10 R f
          412 ('s method)1 400 1 4640 1716 t
          413 ( updates may)2 541( These)1 295( as a transaction database, implementing changes as atomic updates.)9 2783(is to treat the file)4 701 4 720 1836 t
          414 ( is achieved through a collection of caches that minimizes)9 2328( Efficiency)1 467( easily to `undo' changes.)4 1031(be unwound)1 494 4 720 1956 t
          415 (disc traffic and data motion, both within the two parts of the program and between them.)15 3542 1 720 2076 t
          416 (The terminal part of)3 804 1 970 2232 t
          417 10 CW f
          418 (sam)1800 2232 w
          419 10 R f
          420 ( interesting is how the two halves of the edi-)9 1791( More)1 268(is fairly straightforward.)2 975 3 2006 2232 t
          421 ( data structure that)3 746( is achieved through a)4 888( This)1 231(tor stay synchronized when either half may initiate a change.)9 2455 4 720 2352 t
          422 (organizes the communications and is maintained in parallel by both halves.)10 3005 1 720 2472 t
          423 (The last part of the paper chronicles the writing of)9 2067 1 970 2628 t
          424 10 CW f
          425 (sam)3069 2628 w
          426 10 R f
          427 ( lessons that were learned)4 1057(and discusses the)2 702 2 3281 2628 t
          428 (through its development and use.)4 1324 1 720 2748 t
          429 ( is composed largely of two papers of reasonable length: a description of the)13 3164(The paper is long, but)4 906 2 970 2904 t
          430 (user interface of)2 653 1 720 3024 t
          431 10 CW f
          432 (sam)1401 3024 w
          433 10 R f
          434 ( are combined because the implementa-)5 1597( They)1 258(and a discussion of its implementation.)5 1576 3 1609 3024 t
          435 (tion is strongly influenced by the user interface, and vice versa.)10 2528 1 720 3144 t
          436 10 B f
          437 (The Interface)1 579 1 720 3384 t
          438 10 CW f
          439 (Sam)720 3540 w
          440 10 R f
          441 ( names may be provided when it is invoked:)8 1765( File)1 206(is a text editor for multiple files.)6 1291 3 925 3540 t
          442 9 CW f
          443 (sam file1 file2 ...)3 1026 1 1008 3710 t
          444 10 R f
          445 ( are not read until necessary to)6 1255( Files)1 251( files and discard unneeded ones.)5 1349(and there are commands to add new)6 1465 4 720 3890 t
          446 ( file is read; the)4 673( operations apply to an internal copy made when the)9 2214( Editing)1 359(complete some command.)2 1074 4 720 4010 t
          447 ( simplify the discussion, the)4 1124( To)1 162( is changed only by an explicit command.)7 1672(Unix file associated with the copy)5 1362 4 720 4130 t
          448 (internal copy is here called a)5 1144 1 720 4250 t
          449 10 I f
          450 (file)1889 4250 w
          451 10 R f
          452 (, while the disc-resident original is called a)7 1714 1 2017 4250 t
          453 10 I f
          454 (disc file.)1 339 1 3756 4250 t
          455 10 CW f
          456 (Sam)970 4406 w
          457 10 R f
          458 ( connected to a bitmap display that presents a cut-and-paste editor driven by the)13 3446(is usually)1 400 2 1194 4406 t
          459 ( special window, called the)4 1116( this mode, the command language is still available: text typed in a)12 2776(mouse. In)1 428 3 720 4526 t
          460 10 CW f
          461 (sam)720 4646 w
          462 10 I f
          463 (window,)930 4646 w
          464 10 R f
          465 ( editing may be)3 637( Cut-and-paste)1 616( as commands to be executed in the current file.)9 1961(is interpreted)1 529 4 1297 4646 t
          466 (used in any window \320 even in the)7 1467 1 720 4766 t
          467 10 CW f
          468 (sam)2223 4766 w
          469 10 R f
          470 ( mode of operation,)3 812( other)1 241( The)1 216(window to construct commands.)3 1332 4 2439 4766 t
          471 (invoked by starting)2 774 1 720 4886 t
          472 10 CW f
          473 (sam)1520 4886 w
          474 10 R f
          475 (with the option)2 608 1 1726 4886 t
          476 10 CW f
          477 (-d)2360 4886 w
          478 10 R f
          479 ( the mouse or bitmap display,)5 1193(\(for `no download'\), does not use)5 1341 2 2506 4886 t
          480 ( even on an ordinary terminal, interactively or)7 1849(but still permits editing using the textual command language,)8 2471 2 720 5006 t
          481 (from a script.)2 535 1 720 5126 t
          482 (The following sections describe first the command language \(under)8 2783 1 970 5282 t
          483 10 CW f
          484 (sam -d)1 360 1 3789 5282 t
          485 10 R f
          486 (and in the)2 418 1 4185 5282 t
          487 10 CW f
          488 (sam)4640 5282 w
          489 10 R f
          490 (win-)4857 5282 w
          491 ( two languages are nearly independent, but connect through the)9 2573( These)1 293( the mouse interface.)3 846(dow\), and then)2 608 4 720 5402 t
          492 10 I f
          493 (current text,)1 488 1 720 5522 t
          494 10 R f
          495 (described below.)1 676 1 1233 5522 t
          496 10 B f
          497 (The Command Language)2 1090 1 720 5762 t
          498 10 R f
          499 ( array of characters \(that is, a string\); the)8 1644(A file consists of its contents, which are an)8 1733 2 720 5918 t
          500 10 I f
          501 (name)4125 5918 w
          502 10 R f
          503 (of the associated)2 671 1 4369 5918 t
          504 (disc file; the)2 498 1 720 6038 t
          505 10 I f
          506 (modified bit)1 483 1 1245 6038 t
          507 10 R f
          508 ( those of the disc file; and a substring of the)10 1758(that states whether the contents match)5 1527 2 1755 6038 t
          509 (contents, called the)2 786 1 720 6158 t
          510 10 I f
          511 (current text)1 472 1 1540 6158 t
          512 10 R f
          513 (or)2046 6158 w
          514 10 I f
          515 (dot)2163 6158 w
          516 10 R f
          517 ( the current text is a null string, dot falls)9 1689( If)1 126( and 2\).)2 322(\(see Figures 1)2 578 4 2325 6158 t
          518 ( The)1 211(between characters.)1 791 2 720 6278 t
          519 10 I f
          520 (value)1753 6278 w
          521 10 R f
          522 ( the location of the current text; the)7 1441(of dot is)2 340 2 2000 6278 t
          523 10 I f
          524 (contents)3811 6278 w
          525 10 R f
          526 (of dot are the charac-)4 866 1 4174 6278 t
          527 (ters it contains.)2 610 1 720 6398 t
          528 10 CW f
          529 (Sam)1381 6398 w
          530 10 R f
          531 (imparts to the text no two-dimensional interpretation such as columns or fields; text is)13 3453 1 1587 6398 t
          532 ( the idea of a `line' of text as understood by most Unix programs \320 a)15 3037( Even)1 272(always one-dimensional.)1 1011 3 720 6518 t
          533 (sequence of characters terminated by a newline character \320 is only weakly supported.)12 3454 1 720 6638 t
          534 (The)970 6794 w
          535 10 I f
          536 (current file)1 453 1 1156 6794 t
          537 10 R f
          538 ( in the)2 264( current text is therefore dot)5 1141( The)1 211(is the file to which editing commands refer.)7 1784 4 1640 6794 t
          539 ( explicitly name a particular file or piece of text, the command is)12 2827( a command doesn't)3 870( If)1 137(current file.)1 486 4 720 6914 t
          540 ( presence of multiple files and consider)6 1629( the moment, ignore the)4 988( For)1 198(assumed to apply to the current text.)6 1505 4 720 7034 t
          541 (editing a single file.)3 794 1 720 7154 t
          542 ( for non-editing commands such as writing the file to disc,)10 2354( Except)1 329(Commands have one-letter names.)3 1387 3 970 7310 t
          543 cleartomark
          544 showpage
          545 saveobj restore
          546 %%EndPage: 2 2
          547 %%Page: 3 3
          548 /saveobj save def
          549 mark
          550 3 pagesetup
          551 10 R f
          552 (- 3 -)2 166 1 2797 480 t
          553 cleartomark
          554 saveobj restore
          555 %ps_include: begin
          556 save
          557 /ed {exch def} def
          558 {} /showpage ed
          559 {} /copypage ed
          560 {} /erasepage ed
          561 {} /letter ed
          562 currentdict /findfont known systemdict /findfont known and {
          563         /findfont systemdict /findfont get def
          564 } if
          565 36 dict dup /PS-include-dict-dw ed begin
          566 /context ed
          567 count array astore /o-stack ed
          568 %ps_include: variables begin
          569 /llx 24 def
          570 /lly 241 def
          571 /urx 587.76 def
          572 /ury 550.6 def
          573 /w 0 def
          574 /o 0 def
          575 /s 0 def
          576 /cx 2880 def
          577 /cy -2220 def
          578 /sx 4320 def
          579 /sy 2520 def
          580 /ax 0.5 def
          581 /ay 0.5 def
          582 /rot 0 def
          583 %ps_include: variables end
          584 {llx lly urx ury} /bbox ed
          585 {newpath 2 index exch 2 index exch dup 6 index exch
          586  moveto 3 {lineto} repeat closepath} /boxpath ed
          587 {dup mul exch dup mul add sqrt} /len ed
          588 {2 copy gt {exch} if pop} /min ed
          589 {2 copy lt {exch} if pop} /max ed
          590 {transform round exch round exch A itransform} /nice ed
          591 {6 array} /n ed
          592 n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed
          593 urx llx sub 0 A dtransform len /Sx ed
          594 0 ury lly sub A dtransform len /Sy ed
          595 llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed
          596 rot dup sin abs /S ed cos abs /C ed
          597 Sx S mul Sy C mul add /H ed
          598 Sx C mul Sy S mul add /W ed
          599 sy H div /Scaley ed
          600 sx W div /Scalex ed
          601 s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if
          602 sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed
          603 sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed
          604 urx llx sub 0 A dtransform exch atan rot exch sub /rot ed
          605 n currentmatrix initgraphics setmatrix
          606 cx cy translate
          607 Scalex Scaley scale
          608 rot rotate
          609 Cx neg Cy neg translate
          610 A concat
          611 bbox boxpath clip newpath
          612 w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if
          613 end
          614 gsave
          615 %ps_include: inclusion begin
          616 /picstr 98 string def
          617 24 241 translate
          618 563.76 309.60 scale
          619 
          620 783 430 1 [783 0 0 -430 0 430]
          621 {currentfile picstr readhexstring pop} image
          622 
          623 0000000000000000000000000000000000000000000000000000000000000000
          624 0000000000000000000000000000000000000000000000000000000000000000
          625 0000000000000000000000000000000000000000000000000000000000000000
          626 0001
          627 0000000000000000000000000000000000000000000000000000000000000000
          628 0000000000000000000000000000000000000000000000000000000000000000
          629 0000000000000000000000000000000000000000000000000000000000000000
          630 0001
          631 0000000000000000000000000000000000000000000000000000000000000000
          632 0000000000000000000000000000000000000000000000000000000000000000
          633 0000000000000000000000000000000000000000000000000000000000000000
          634 0001
          635 0000000000000000000000000000000000000000000000000000000000000000
          636 0000000000000000000000000000000000000000000000000000000000000000
          637 0000000000000000000000000000000000000000000000000000000000000000
          638 0001
          639 0000000000000000000000000000000000000000000000000000000000000000
          640 0000000000000000000000000000000000000000000000000000000000000000
          641 0000000000000000000000000000000000000000000000000000000000000000
          642 0001
          643 0000000000000000000000000000000000000000000000000000000000000000
          644 0000000000000000000000000000000000000000000000000000000000000000
          645 0000000000000000000000000000000000000000000000000000000000000000
          646 0001
          647 02001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          648 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          649 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          650 ff81
          651 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          652 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          653 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          654 ff81
          655 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          656 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          657 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          658 ff81
          659 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          660 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          661 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          662 ff81
          663 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          664 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          665 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          666 ff81
          667 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          668 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          669 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          670 ff81
          671 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          672 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          673 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          674 ff81
          675 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          676 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          677 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          678 ff81
          679 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          680 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          681 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          682 ff81
          683 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          684 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          685 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          686 ff81
          687 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          688 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          689 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          690 ff81
          691 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          692 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          693 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          694 ff81
          695 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          696 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          697 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          698 ff81
          699 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          700 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          701 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          702 ff81
          703 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          704 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          705 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          706 ff81
          707 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          708 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          709 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          710 ff81
          711 02ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          712 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          713 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          714 ff81
          715 02ffdfffffffe7fffffffe227ff0feffffffffffffff3ff87ff11ffcffffffff
          716 fffffffe7fe7ffffffffffffffffffffffffffffffffffffffffffffffffffff
          717 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          718 ff81
          719 02ffde01ffffe7fffffffe227fe7f9f833900fffffef3ff3e0711ffcffdffff1
          720 e0fffffe7fe7ffe7f3e0ffffffffffffffffffffffffffffffffffffffffffff
          721 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          722 ff81
          723 02ffdfcfffffe7fffffffe233fe7f3f3b39e7fffffcf9ff3e7311ffcff9fffe9
          724 ce7fffffffe7ffc7e3ce7fffffffffffffffffffffffffffffffffffffffffff
          725 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          726 ff81
          727 02ffdfcfe3ffe4f879cfff773f80f3e7f3de7f0e73019fc0673bbffc8e03ffe9
          728 ce7ff3907f07ffa7d3ce7fffffffffffffffffffffffffffffffffffffffffff
          729 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          730 ff81
          731 02ffdfcfe3ffe27339cfff779fe7e7e7f25e7e6673cfcff3e73bbffc479fffd9
          732 ce7ff3de7e67ff67b3fe7fffffffffffffffffffffffffffffffffffffffffff
          733 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          734 ff81
          735 02ffdfcfe3ffe7279cdfff779fe7e7e7f25e7ce737cfcff3e73bbffce79fffd9
          736 ce7ff25e7ce7ffe7f3fe7fffffffffffffffffffffffffffffffffffffffffff
          737 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          738 ff81
          739 02ffdfcfffffe7279c3fffffcfe7e7e7f25e7ce70fcfe7f3e67ffffce79fffb9
          740 ce7ff25e7ce7ffe7f3fcffffffffffffffffffffffffffffffffffffffffffff
          741 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          742 ff81
          743 02221fcfffffe7279f7fffffcfe7e7e7f93e7c07dfcfe7f3e0fffffce79fff80
          744 ce7ff25e7ce7ffe7f3f9ffffffffffffffffffffffffffffffffffffffffffff
          745 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          746 ff81
          747 02889fcfffffe7279e1fffffe7e7e7e7f93e7cff87cff3f3e7fffffce79fff80
          748 ce7ff93e7ce7ffe7f3f3ffffffffffffffffffffffffffffffffffffffffffff
          749 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          750 ff81
          751 02221fcfe3ffe7279d9fffffe7e7e7e7f93e7cff67cff3f3e7fffffce79ffff9
          752 ce7ff93e7ce7ffe7f3e7ffffffffffffffffffffffffffffffffffffffffffff
          753 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          754 ff81
          755 02889fcfe3ffe67339cffffff3e7e7f3b93e7e6673cff9f3e7fffffce79ffff9
          756 ce7ff93e7e47ffe7f3c07fffffffffffffffffffffffffffffffffffffffffff
          757 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          758 ff81
          759 02221fcfe3ffe0f879cffffff381f3f8393e7f0e73e1f9c0e7fffffce7c3ffe0
          760 e0fff9300f27ff81c0c07fffffffffffffffffffffffffffffffffffffffffff
          761 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          762 ff81
          763 02889ffffffffffffffffffff9fff3fffffffffffffffcffffffffffffffffff
          764 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          765 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          766 ff81
          767 02221ffffffffffffffffffff9fff9fffffffffffffffcffffffffffffffffff
          768 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          769 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          770 ff81
          771 02889ffffffffffffffffffffffffeffffffffffffffffffffffffffffffffff
          772 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          773 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          774 ff81
          775 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          776 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          777 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          778 ff81
          779 02889fffffffe7fffffffe227ff0feffffffffffffff3ff87ff11ffcffffffff
          780 fffffffe7fe7fffffffffffcfffcffffffffffffffffffefffffffffffffffff
          781 fffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffff
          782 ff81
          783 02221e07ffffe7fffffffe227fe7f9f833903fffffff3ff3e0711ffcffdffff1
          784 e0fffffe7fe7ff83c1fffffcff7cfffffffffffffeffff9c03ffffffffffff3e
          785 0fffff00ffffffffff3fffffffffffffffffffffffffffffffffffffffffffff
          786 ff81
          787 02889e73ffffe7fffffffe233fe7f3f3b3939fffffff9ff3e7311ffcff9fffe9
          788 ce7fffffffe7ff399cfffffffe7cfffffffffffffcffff3f9ffffffffffffe3c
          789 e7ffffe7ffffffffff9fffffffffffffffffffffffffffffffffffffffffffff
          790 ff81
          791 02221e73e3ffe4f879cfff773f80f3e7f3d39e0f07279fc0673bbffc8e03ffe9
          792 ce7ff3907f07ff399cffe720f80c8fffff9cfff0701fff3f9fffe1ffe73cfd3c
          793 ffffffe7fff87ff9cf9fffffffffffffffffffffffffffffffffffffffffffff
          794 ff81
          795 02889e73e3ffe27339cfff779fe7e7e7f2539ce67313cff3e73bbffc479fffd9
          796 ce7ff3de7e67ff399cffe7bcfe7c47ffff9effe73cfffe7f9fffccffe73cfb3c
          797 ffffffe7fff33ff9cfcfffffffffffffffffffffffffffffffffffffffffffff
          798 ff81
          799 02221e77e3ffe7279cdfff779fe7e7e7f253bfe67f39cff3e73bbffce79fffd9
          800 ce7ff25e7ce7ff399cffe4bcfe7ce7ffff92ffff3cfffe7f9fff9cfff37cff3c
          801 ffffffe7ffe73ff9efcfffffffffffffffffffffffffffffffffffffffffffff
          802 ff81
          803 02889e0fffffe7279c3fffffcfe7e7e7f2507fe63f39e7f3e67ffffce79fffb9
          804 ce7ff25e7ce7ff819cffe4bcfe7ce7ffff92ffff3cfffe7f9fff9cfff0e01f3c
          805 0fffffe7ffe73ffccfcfffffffffffffffffffffffffffffffffffffffffffff
          806 ff81
          807 02221e67ffffe7279f7fffffcfe7e7e7f9333e070739e7f3e0fffffce79fff80
          808 ce7ff25e7ce7fff99cffe4bcfe7ce7ffff92fff03cfffe7f9fff80fffde01f3c
          809 e7ffffe7ffe03ffcdfcfffffffffffffffffffffffffffffffffffffffffffff
          810 ff81
          811 02889e67ffffe7279e1fffffe7e7e7e7f9333ce7e339f3f3e7fffffce79fff80
          812 ce7ff93e7ce7fff99cfff27cfe7ce7ffffc9ffe73cfffe7f9fff9ffff87cff3c
          813 e7ffffe7ffe7fffcdfcfffffffffffffffffffffffffffffffffffffffffffff
          814 ff81
          815 02221e73e3ffe7279d9fffffe7e7e7e7f9339ce7f339f3f3e7fffffce79ffff9
          816 ce7ff93e7ce7fff99cfff27cfe7ce7ffc7c9ffe73cfffe7f9fc79ff1f67cff3c
          817 e78fffe7f1e7fc7e3fcfffffffffffffffffffffffffffffffffffffffffffff
          818 ff81
          819 02889e73e3ffe67339cffffff3e7e7f3b9339cc67333f9f3e7fffffce79ffff9
          820 ce7ff93e7e47ff399cfff27cfe7ce7ffc7c9ffe63cfffe7f9fc7ccf1e73cff3c
          821 e78fffe7f1f33c7e3fcfffffffffffffffffffffffffffffffffffffffffffff
          822 ff81
          823 02221e71e3ffe0f879cffffff381f3f839338e270707f9c0e7fffffce7c3ffe0
          824 e0fff9300f27ff83c1fff2601f0ce7ffc7c9fff13e1fff3f9fc7e1f1e73ffc0e
          825 0f8fffe7f1f87c7f3f9fffffffffffffffffffffffffffffffffffffffffffff
          826 ff81
          827 02889ffffffffffffffffffff9fff3ffffffffffff3ffcffffffffffffffffff
          828 ffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffff
          829 ffcfffffffffffff7f9fffffffffffffffffffffffffffffffffffffffffffff
          830 ff81
          831 02221ffffffffffffffffffff9fff9ffffffffffff3ffcffffffffffffffffff
          832 ffffffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffff
          833 ffcffffffffffffe7f3fffffffffffffffffffffffffffffffffffffffffffff
          834 ff81
          835 02889ffffffffffffffffffffffffeffffffffffff3fffffffffffffffffffff
          836 ffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffff
          837 ff9ffffffffffffc7effffffffffffffffffffffffffffffffffffffffffffff
          838 ff81
          839 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          840 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          841 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          842 ff81
          843 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          844 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          845 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          846 ff81
          847 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          848 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          849 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          850 ff81
          851 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          852 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          853 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          854 ff81
          855 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          856 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          857 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          858 ff81
          859 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          860 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          861 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          862 ff81
          863 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          864 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          865 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          866 ff81
          867 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          868 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          869 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          870 ff81
          871 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          872 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          873 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          874 ff81
          875 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          876 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          877 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          878 ff81
          879 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          880 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          881 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          882 ff81
          883 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          884 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          885 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          886 ff81
          887 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          888 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          889 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          890 ff81
          891 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          892 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          893 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          894 ff81
          895 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          896 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          897 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          898 ff81
          899 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          900 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          901 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          902 ff81
          903 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          904 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          905 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          906 ff81
          907 02889e0fe7ffffffff0fffffffffffffffffffffffffffffffffffffffffffff
          908 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          909 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          910 ff81
          911 02221fcfe7fffffffe7fffffffff807fffffffbfffff03ffffffffffffffffff
          912 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          913 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          914 ff81
          915 02889fcffffffffffe7ffffffffff3ffffffff3fffff39ffffffffffffffffff
          916 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          917 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          918 ff81
          919 02221fcf07c8f87ff80c670e5bfff3fffc3ffc070fff39ffe73fffffffffffff
          920 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          921 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          922 ff81
          923 02889fcfe7c4733ffe7e066601fff3fff99fff3e67ff39ffe7bfffffffffffff
          924 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          925 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          926 ff81
          927 02221fcfe7ce673ffe7e64f249fff3fff39fff3cf3ff3bffe4bfffffffffffff
          928 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          929 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          930 ff81
          931 02889fcfe7ce673ffe7e7cf249fff3fff39fff3cf3ff07ffe4bfffffffffffff
          932 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          933 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          934 ff81
          935 02221fcfe7ce603ffe7e7cf249fff3fff01fff3cf3ff33ffe4bfffffffffffff
          936 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          937 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          938 ff81
          939 02889fcfe7ce67fffe7e7cf249fff3fff3ffff3cf3ff33fff27fffffffffffff
          940 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          941 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          942 ff81
          943 02221fcfe7ce67fffe7e7cf249fff3f8f3ffff3cf3ff39f1f27fffffffffffff
          944 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          945 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          946 ff81
          947 02889fcfe7ce733ffe7e7e6649fff3f8f99fff3e67ff39f1f27fffffffffffff
          948 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          949 ffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff
          950 ff81
          951 02221e0100ce787ff81c1f0e49fff3f8fc3fff870fff38f1f27fffffffffffff
          952 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          953 ffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff
          954 ff81
          955 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          956 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          957 ffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff
          958 ff81
          959 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          960 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          961 ffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff
          962 ff81
          963 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          964 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          965 ffffff80000000800000ffffffffffffffffffffffffffffffffffffffffffff
          966 ff81
          967 02221c00000000001fffffffffffffffffffffffffffffffffffffffffffffff
          968 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          969 ffff3f80000001800000ffffffffffffffffffffffffffffffffffffffffffff
          970 ff81
          971 02889c00000000001fff87ffffffffffffffffffffcfffcfffffffffffffffff
          972 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          973 ffff0f80078c67f00000ffffffffffffffffffffffffffffffffffffffffffff
          974 ff81
          975 02221c00000000001fff3fffffffffc0ffffffffffcfffcffdfffc1f8fffffff
          976 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          977 ffff1f800ccc61800000ffffffffffffffffffffffffffffffffffffffffffff
          978 ff81
          979 02889c00000000001fff3fffffffffce7fffffffffffffcff9fff9cf4fffffff
          980 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          981 ffff3f8018cc61800000ffffffffffffffffffffffffffffffffffffffffffff
          982 ff81
          983 02221c7c73398f0c7ffc0633872dffce7ffe1ffe320fe0c8e03ff9cf4fffffff
          984 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          985 ffff7d80180c61800000ffffffffffffffffffffffffffffffffffffffffffff
          986 ff81
          987 02889cc63f1f998c3fff3f033300ffce7ffccfff03cfccc479ffffcecfffffff
          988 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          989 fffff980180c61800000ffffffffffffffffffffffffffffffffffffffffffff
          990 ff81
          991 02221c063319b0cdbfff3f327924ffcefff9cfff33cf9cce79ffffcecfffffff
          992 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          993 fffef080180c61800000ffffffffffffffffffffffffffffffffffffffffffff
          994 ff81
          995 02889c06301830cdbfff3f3e7924ffc1fff9cfff3fcf9cce79ffff9dcfffffff
          996 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          997 fffce080180c61800000ffffffffffffffffffffffffffffffffffffffffffff
          998 ff81
          999 02221c7e301830cdbfff3f3e7924ffccfff80fff3fcf9cce79ffff3c07ffffff
         1000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1001 fff8c0000ccee1800000ffffffffffffffffffffffffffffffffffffffffffff
         1002 ff81
         1003 02889cc6301830c6dfff3f3e7924ffccfff9ffff3fcf9cce79fffe7c07ffffff
         1004 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1005 fff08000078760f00000ffffffffffffffffffffffffffffffffffffffffffff
         1006 ff81
         1007 02221cc6301830c6dfff3f3e7924ffce7c79ffff3fcf9cce79fffcffcfffffff
         1008 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1009 ffe00000000000000000ffffffffffffffffffffffffffffffffffffffffffff
         1010 ff81
         1011 02889cce30181986dfff3f3f3324ffce7c7ccfff3fcfc8ce79fff80fcfffffff
         1012 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1013 ffc10000000000000000ffffffffffffffffffffffffffffffffffffffffffff
         1014 ff81
         1015 02221c767c3e0f06dffc0e0f8724ffce3c7e1ffe0e01e4ce7c3ff80f07ffffff
         1016 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1017 ff837ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1018 ff81
         1019 02889c00000000001ffffffffffffffffffffffffffffcffffffffffffffffff
         1020 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1021 ffc77ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1022 ff81
         1023 02221c00000000001fffffffffffffffffffffffffff9cffffffffffffffffff
         1024 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1025 ffef7ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1026 ff81
         1027 02889c00000000001fffffffffffffffffffffffffffc1ffffffffffffffffff
         1028 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1029 ffff7fffffffff7ffffeffffffffffffffffffffffffffffffffffffffffffff
         1030 ff81
         1031 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1032 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1033 ffff7ffffffffe7ffffeffffffffffffffffffffffffffffffffffffffffffff
         1034 ff81
         1035 02889f3ffffffffcffffff9fffffc47ffffffcffffffffc47ffffe7ffe7fffff
         1036 fffffffffffffffffcfffffe1ff83fffffffffffffffffffffffffffffffffff
         1037 ffff7fc9f078380f0ffeffffffffffffffffffffffffffffffffffffffffffff
         1038 ff81
         1039 02221f3ffffffffcffffff9fffffc47dfffffcfffffff7c47ffffe7fbe7fffff
         1040 ffffffff7ffffffffcfffffcffff3ffffff7ffffffffffffffffffffffffffff
         1041 ffff7fc4e7339e7e67feffffffffffffffffffffffffffffffffffffffffffff
         1042 ff81
         1043 02889f3fffffffffffffffffffffc479fffffcffffffe7c47fffffff3e7fffff
         1044 fffffffe7ffffffffcfffffcffff3fffffe7ffffffffffffffffffffffffffff
         1045 ffff7fce7f33fe7ce7feffffffffffffffffffffffffffffffffffffffffffff
         1046 ff81
         1047 02221f27c3ce7fe0f91ce41f83ffeee0387ffc8f0f8380eefff3907c0647ffff
         1048 ce7ff8380fff8723e0fff0f01fff3f078380fff07198ce1e73ffffffffffffff
         1049 ffff7fce7f31fe7ce7feffffffffffffffffffffffffffffffffffffffffffff
         1050 ff81
         1051 02889f1399ce7ffcf88ce79f39ffeef9f33ffc466739e7eefff3de7f3e23ffff
         1052 cf7ff39e7fff3311ccffe67cffff3e7339e7ffe7381c0cce7bffffffffffffff
         1053 ffff7fce70383e7c07feffffffffffffffffffffffffffffffffffffffffffff
         1054 ff81
         1055 02221f393ce6fffcf9ccf79f3fffeef9e79ffce4f33fe7eefff25e7f3e73ffff
         1056 c97fff9e7ffe73399cffcf3cffff3ff33fe7ffff399cc9e64bffffffffffffff
         1057 ffff7fce673f1e7cfffeffffffffffffffffffffffffffffffffffffffffffff
         1058 ff81
         1059 02889f393ce1fffcf9ce679f1ffffff9e79ffce4f31fe7fffff25e7f3e73ffff
         1060 c97fff9e7ffe73399cffcf3cffff3ff31fe7ffff39fcf9e64bffffffffffffff
         1061 ffff7fce673f9e7cfffeffffffffffffffffffffffffffffffffffffffffffff
         1062 ff81
         1063 02221f393cfbfffcf9ce6f9f83fffff9e79ffce4f383e7fffff25e7f3e73ffff
         1064 c97ff81e7ffe03399cffcf3cffff3f0383e7fff039fcf9e64bffffffffffffff
         1065 ffff7fcce6339e7e67feffffffffffffffffffffffffffffffffffffffffffff
         1066 ff81
         1067 02889f393cf0fffcf9ce6f9ff1fffff9e79ffce4f3f1e7fffff93e7f3e73ffff
         1068 e4fff39e7ffe7f399cffcf3cffff3e73f1e7ffe739fcf9e727ffffffffffffff
         1069 ffff7fc1f1383f0f0ffeffffffffffffffffffffffffffffffffffffffffffff
         1070 ff81
         1071 02221f393cecfffcf9cf1f9ff9fffff9e79ffce4f3f9e7fffff93e7f3e73ffe3
         1072 e4fff39e7ffe7f399cffcf3cffff3e73f9e7ffe739fcf9e727ffffffffffffff
         1073 ffff7fcffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1074 ff81
         1075 02889f3399ce7ffcf9cf1f9f39fffff9f33ffce66739e7fffff93e7f3e73ffe3
         1076 e4fff31e7fff3339c8ffe67cffff3e6339e7ffe639fcfccf27ffffffffffffff
         1077 ffff7fcffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1078 ff81
         1079 02221f07c3ce7fe019cf1c0383fffffc387ffce70f83f0fffff9300f8673ffe3
         1080 e4fff89f0fff8739e4fff0f03ff8071383f0fff130783e1f27ffffffffffffff
         1081 ffff7fcffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1082 ff81
         1083 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1084 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1085 ffff7ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1086 ff81
         1087 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1088 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1089 ffff7fffffffffff87feffffffffffffffffffffffffffffffffffffffffffff
         1090 ff81
         1091 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1092 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1093 ffff7fffffffffff3ffeffffffffffffffffffffffffffffffffffffffffffff
         1094 ff81
         1095 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1096 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1097 ffff7fffffffffff3ffeffffffffffffffffffffffffffffffffffffffffffff
         1098 ff81
         1099 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1100 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1101 ffff7fe0e47838cc07feffffffffffffffffffffffffffffffffffffffffffff
         1102 ff81
         1103 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1104 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1105 ffff7fce62339c0f3ffeffffffffffffffffffffffffffffffffffffffffffff
         1106 ff81
         1107 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1108 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1109 ffff7fcfe73f9ccf3ffeffffffffffffffffffffffffffffffffffffffffffff
         1110 ff81
         1111 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1112 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1113 ffff7fc7e73f9cff3ffeffffffffffffffffffffffffffffffffffffffffffff
         1114 ff81
         1115 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1116 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1117 ffff7fe0e7381cff3ffeffffffffffffffffffffffffffffffffffffffffffff
         1118 ff81
         1119 02221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1120 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1121 ffff7ffc67339cff3ffeffffffffffffffffffffffffffffffffffffffffffff
         1122 ff81
         1123 02889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1124 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1125 ffff7ffe67339cff3ffeffffffffffffffffffffffffffffffffffffffffffff
         1126 ff81
         1127 02001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1128 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1129 ffff7fce67331cff3ffeffffffffffffffffffffffffffffffffffffffffffff
         1130 ff81
         1131 0000000000000000000000000000000000000000000000000000000000000000
         1132 0000000000000000000000000000000000000000000000000000000000000000
         1133 00007fe0e738983c0ffe00000000000000000000000000000000000000000000
         1134 0001
         1135 0000000000000000000000000000000000000000000000000000000000000000
         1136 0000000000000000000000000000000000000000000000000000000000000000
         1137 00007ffffffffffffffe00000000000000000000000000000000000000000000
         1138 0001
         1139 0000000000000000000000000000000000000000000000000000000000000000
         1140 0000000000000000000000000000000000000000000000000000000000000000
         1141 00007ffffffffffffffe00000000000000000000000000000000000000000000
         1142 0001
         1143 0000000000000000000000000000000000000000000000000000000000000000
         1144 0000000000000000000000000000000000000000000000000000000000000000
         1145 00007ffffffffffffffe00000000000000000000000000000000000000000000
         1146 0001
         1147 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1148 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1149 ffff7ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1150 ffe1
         1151 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1152 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1153 ffff7ffc1fffffcffffeffffffffffffffffffffffffffffffffffffffffffff
         1154 ffe1
         1155 0e001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1156 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1157 ffff7fff9fffffcffffeffffffffffffffffffffffffffffffffffffffffffff
         1158 ffe1
         1159 0e221ffffffffffe1e7ffffffffff3ffffffffffffffffffffffffffffffffff
         1160 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1161 ffff7fff9fffffcffffeffffffffffffffffffffffffffffffffffffffffffff
         1162 ffe1
         1163 0e889ffffffffffcfe7fff03fffff3ffffffffffffffffffffffffffffffffff
         1164 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1165 ffff7fff9f87c3ce7ffeffffffffffffffffffffffffffffffffffffffffffff
         1166 ffe1
         1167 0e221ffffffffffcffffff03ffffffffffffffffffffffffffffffffffffffff
         1168 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1169 ffff7fff9f3399cefffeffffffffffffffffffffffffffffffffffffffffffff
         1170 ffe1
         1171 0e889ffffffffff0107f077fff9383f87fffffffffffffffffffffffffffffff
         1172 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1173 ffff7fff9e793ccdfffeffffffffffffffffffffffffffffffffffffffffffff
         1174 ffe1
         1175 0e221ffffffffffcfe7e677fff89f3f33fffffffffffffffffffffffffffffff
         1176 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1177 ffff7fff9e793ccbfffeffffffffffffffffffffffffffffffffffffffffffff
         1178 ffe1
         1179 0e889ffffffffffcfe7ce71fff9cf3e73fffffffffffffffffffffffffffffff
         1180 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1181 ffff7fff9e793cc3fffeffffffffffffffffffffffffffffffffffffffffffff
         1182 ffe1
         1183 0e221fff80fffffcfe7ce7c7ff9cf3e7ffffffffffffffffffffffffffffffff
         1184 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1185 ffff7fff9e793cc9fffeffffffffffffffffffffffffffffffffffffffffffff
         1186 ffe1
         1187 0e889fff80fffffcfe7ce7f3ff9cf3e7ffffffffffffffffffffffffffffffff
         1188 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1189 ffff7fff9e793cccfffeffffffffffffffffffffffffffffffffffffffffffff
         1190 ffe1
         1191 0e221ffffffffffcfe7ce7f3ff9cf3e7ffffffffffffffffffffffffffffffff
         1192 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1193 ffff7fff9f3399ce7ffeffffffffffffffffffffffffffffffffffffffffffff
         1194 ffe1
         1195 0e889ffffff1fffcfe7ce7f3c79cf3e7ffffffffffffffffffffffffffffffff
         1196 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1197 ffff7ffc0387c3ce7ffeffffffffffffffffffffffffffffffffffffffffffff
         1198 ffe1
         1199 0e221ffffff1fffcfe7e4673c799f3f33fffffffffffffffffffffffffffffff
         1200 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1201 ffff7ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1202 ffe1
         1203 0e889ffffff1fff0300f2707c78380787fffffffffffffffffffffffffffffff
         1204 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1205 ffff7ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1206 ffe1
         1207 0e221fffffffffffffffe7ffff9fffffffffffffffffffffffffffffffffffff
         1208 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1209 ffff7ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1210 ffe1
         1211 0e889ffffffffffffffce7ffff9fffffffffffffffffffffffffffffffffffff
         1212 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1213 ffff7ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1214 ffe1
         1215 0e221ffffffffffffffe0fffff9fffffffffffffffffffffffffffffffffffff
         1216 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1217 ffff7ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1218 ffe1
         1219 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1220 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1221 ffff7ffefffffffefffeffffffffffffffffffffffffffffffffffffffffffff
         1222 ffe1
         1223 0e221ff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1224 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1225 ffff7ffcfffffffe7ffeffffffffffffffffffffffffffffffffffffffffffff
         1226 ffe1
         1227 0e889ff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1228 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1229 ffff7ff9cb7399cf3ffeffffffffffffffffffffffffffffffffffffffffffff
         1230 ffe1
         1231 0e221ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1232 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1233 ffff7ff3c03399cf9ffeffffffffffffffffffffffffffffffffffffffffffff
         1234 ffe1
         1235 0e889ff3c1c6633879cfffffffffffffffffffffffffffffffffffffffffffff
         1236 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1237 ffff7fe7c9339cdfcffeffffffffffffffffffffffffffffffffffffffffffff
         1238 ffe1
         1239 0e221fe79ce0703339efffffffffffffffffffffffffffffffffffffffffffff
         1240 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1241 ffff7fc7c9339c3fc7feffffffffffffffffffffffffffffffffffffffffffff
         1242 ffe1
         1243 0e889fe7fce67327992fffffffffffffffffffffffffffffffffffffffffffff
         1244 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1245 ffff7fe7c9339f7fcffeffffffffffffffffffffffffffffffffffffffffffff
         1246 ffe1
         1247 0e221fcffce7f3e7992fffffffffffffffffffffffffffffffffffffffffffff
         1248 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1249 ffff7ff3c9339e1f9ffeffffffffffffffffffffffffffffffffffffffffffff
         1250 ffe1
         1251 0e889fcfc0e7f3e7992fffffffffffffffffffffffffffffffffffffffffffff
         1252 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1253 ffff7ff9c9339d9f3ffeffffffffffffffffffffffffffffffffffffffffffff
         1254 ffe1
         1255 0e221f9f9ce7f3e79c9fffffffffffffffffffffffffffffffffffffffffffff
         1256 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1257 ffff7ffcc93119ce7ffeffffffffffffffffffffffffffffffffffffffffffff
         1258 ffe1
         1259 0e889f9f9ce7f3e79c9fffffffffffffffffffffffffffffffffffffffffffff
         1260 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1261 ffff7ffec93899cefffeffffffffffffffffffffffffffffffffffffffffffff
         1262 ffe1
         1263 0e221f3f98e7f3f33c9fffffffffffffffffffffffffffffffffffffffffffff
         1264 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1265 ffff7ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1266 ffe1
         1267 0e889f3fc4c1e0f87c9fffffffffffffffffffffffffffffffffffffffffffff
         1268 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1269 ffff7ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1270 ffe1
         1271 0e221e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1272 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1273 ffff7ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1274 ffe1
         1275 0e889e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1276 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1277 ffff7ffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1278 ffe1
         1279 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1280 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1281 ffff7fe7fffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1282 ffe1
         1283 0e889dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1284 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1285 ffff7fe7fffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1286 ffe1
         1287 0e221dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1288 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1289 ffff7fcffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1290 ffe1
         1291 0e889dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1292 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1293 ffff7fcf07198ce1e73effffffffffffffffffffffffffffffffffffffffffff
         1294 ffe1
         1295 0e221dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1296 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1297 ffff7f9e7381c0cce7beffffffffffffffffffffffffffffffffffffffffffff
         1298 ffe1
         1299 0e889dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1300 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1301 ffff7f9ff399cc9e64beffffffffffffffffffffffffffffffffffffffffffff
         1302 ffe1
         1303 0e221dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1304 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1305 ffff7f3ff39fcf9e64beffffffffffffffffffffffffffffffffffffffffffff
         1306 ffe1
         1307 0e889dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1308 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1309 ffff7f3f039fcf9e64beffffffffffffffffffffffffffffffffffffffffffff
         1310 ffe1
         1311 0e221dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1312 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1313 ffff7e7e739fcf9e727effffffffffffffffffffffffffffffffffffffffffff
         1314 ffe1
         1315 0e889dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1316 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1317 ffff7e7e739fcf9e727effffffffffffffffffffffffffffffffffffffffffff
         1318 ffe1
         1319 0e221dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1320 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1321 ffff7cfe639fcfccf27effffffffffffffffffffffffffffffffffffffffffff
         1322 ffe1
         1323 0e889dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1324 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1325 ffff7cff130783e1f27effffffffffffffffffffffffffffffffffffffffffff
         1326 ffe1
         1327 0e221dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1328 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1329 ffff79fffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1330 ffe1
         1331 0e889dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1332 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1333 ffff79fffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
         1334 ffe1
         1335 0e221dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1336 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1337 ffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff
         1338 ffe1
         1339 0e889dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1340 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1341 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1342 ffe1
         1343 0e221dffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1344 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1345 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1346 ffe1
         1347 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1348 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1349 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1350 ffe1
         1351 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1352 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1353 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1354 ffe1
         1355 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1356 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1357 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1358 ffe1
         1359 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1360 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1361 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1362 ffe1
         1363 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1364 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1365 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1366 ffe1
         1367 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1368 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1369 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1370 ffe1
         1371 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1372 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1373 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1374 ffe1
         1375 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1376 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1377 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1378 ffe1
         1379 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1380 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1381 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1382 ffe1
         1383 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1384 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1385 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1386 ffe1
         1387 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1388 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1389 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1390 ffe1
         1391 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1392 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1393 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1394 ffe1
         1395 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1396 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1397 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1398 ffe1
         1399 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1400 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1401 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1402 ffe1
         1403 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1404 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1405 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1406 ffe1
         1407 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1408 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1409 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1410 ffe1
         1411 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1412 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1413 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1414 ffe1
         1415 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1416 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1417 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1418 ffe1
         1419 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1420 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1421 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1422 ffe1
         1423 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1424 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1425 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1426 ffe1
         1427 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1428 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1429 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1430 ffe1
         1431 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1432 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1433 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1434 ffe1
         1435 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1436 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1437 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1438 ffe1
         1439 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1440 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1441 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1442 ffe1
         1443 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1444 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1445 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1446 ffe1
         1447 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1448 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1449 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1450 ffe1
         1451 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1452 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1453 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1454 ffe1
         1455 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1456 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1457 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1458 ffe1
         1459 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1460 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1461 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1462 ffe1
         1463 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1464 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1465 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1466 ffe1
         1467 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1468 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1469 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1470 ffe1
         1471 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1472 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1473 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1474 ffe1
         1475 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1476 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1477 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1478 ffe1
         1479 0effdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1480 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1481 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1482 ffe1
         1483 0e001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1484 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1485 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1486 ffe1
         1487 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1488 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1489 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1490 ffe1
         1491 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1492 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1493 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1494 ffe1
         1495 0000000000000000000000000000000000000000000000000000000000000000
         1496 0000000000000000000000000000000000000000000000000000000000000000
         1497 0000000000000000000000000000000000000000000000000000000000000000
         1498 0001
         1499 00000000000000000000000000000000000000000000077fef81fffff3ffffff
         1500 fceec00c0303e633f060300060060fc77ffe7feffff8f07fffff3ff3fff3f9f0
         1501 7fffff3fdf3fffffffffffffffdfff80e07ff01c1f8ffffffffffffffe000000
         1502 0001
         1503 0ffffffffffffffffffffffffffffffffffffffffffff77fef9ffffff3ffffff
         1504 fcee600c060626330000300030060c677ffe7fcffff4e73ffffffff3ffe3f1e7
         1505 3fffffff9f3fffffffffffffff9fff80e07ff019cf4ffffffffffffffeffffff
         1506 ffe1
         1507 0ffffffffffffffffffffffffffffffffffffffffffff77fef9ff1fff27c3ce7
         1508 fc44603f860c061303e0301e301fcc622ffe4701fff4e73ff9c83f83ffd3e9e7
         1509 3ff9c83e0323ffffe4739ffe0e03fffeefffffd9cf4ffffffffffffffeffffff
         1510 ffe1
         1511 0e001ffffffffffffffffffffffffffffffffffffffff77fef9ff1fff1399ce7
         1512 fc44300c0c0c06d30060303318060c622ffe23cfffece73ff9ef3f33ffb3d9ff
         1513 3ff9ef3f9f11ffffe233dffce79ffffcefffff99cecffffffffffffffeffffff
         1514 ffe1
         1515 0e889ffffffffffffffffffffffffffffcffffe7fffff77fef9ff1fff393ce6f
         1516 fc44300c0c0c06d30060306318060c622ffe73cfffece73ff92f3e73fff3f9ff
         1517 3ff92f3f9f39ffffe7325fffe79ffff9e3ffff39cecffffffffffffffeffffff
         1518 ffe1
         1519 0e221fffffffffffffffbffffffffffffcffffe7fffff77fef83fffff393ce1f
         1520 fc00180c0c0c06d3e06030630c060cc00ffe73cfffdce73ff92f3e73fff3f9fe
         1521 7ff92f3f9f39ffffe7325fffe79ffff3f8fffe79cdcffffffffffffffeffffff
         1522 ffe1
         1523 0e889fffffffffffffff3fffffffffffffffffe7fffff77fef9ffffff393cfbf
         1524 fc00180c0c0c03630060307f0c060f800ffe73cfffc0673ff92f3e73fff3f9fc
         1525 fff92f3f9f39ffffe7325ffe079fffe7fe7ffcf9cc07fffffffffffffeffffff
         1526 ffe1
         1527 0e221f19e1f0673c3c1c0707ffc1ffe720f91f070f39f77fef9ffffff393cf0f
         1528 fc000c0c0c0c03630060306006060c000ffe73cfffc0673ffc9f3e73fff3f9f9
         1529 fffc9f3f9f39ffffe7393ffce79fffe7fe7ffcf9cc07fffffffffffffeffffff
         1530 ffe1
         1531 0e889f81cce6673999cf3e73ff9cffe7bcf88e66673df77fef9ff1fff393cecf
         1532 fc000c0c0c0c03630060306006060c000ffe73cffffce73ffc9f3e73fff3f9f3
         1533 fffc9f3f9f39fff1e7393ffce79fffcffe78f9f9cfcffffffffffffffeffffff
         1534 ffe1
         1535 0e221f999cce673399ff3e7ffffcffe4bcf9cce4f325f77fef9ff1fff3399ce7
         1536 fc00060c0c0623630060303303060c000ffe73cffffce73ffc9f3f23fff3f9e0
         1537 3ffc9f3f9f39fff1e7393ffcc79fffcfce78f9f9cfcffffffffffffffeffffff
         1538 ffe1
         1539 0e889f9f9cce673398ff3e3ffffcffe4bcf9cce4f325f77fef9ff1fff07c3ce7
         1540 fc00063f0603e36303fdfe1e031f8c000ffe73e1fff0707ffc980793ffc0e060
         1541 3ffc9807c339fff1e7393ffe27c3ffcfe0f8f9fc1f07fffffffffffffeffffff
         1542 ffe1
         1543 0e221f9f80ce67301c1f3f07ffc0ffe4bcf9cce4f325f77fefffffffffffffff
         1544 fc0003000600000000000000018000000fffffffffffffffffffffffffffffff
         1545 fffffffffffffffffffffffffffffffffffcfffffffffffffffffffffeffffff
         1546 ffe1
         1547 0e889f9f9fce6733ff8f3fe3ff9cfff27cf9cce4f393f77fefffffffffffffff
         1548 fc0003000300000000000000018000000fffffffffffffffffffffffffffffff
         1549 fffffffffffffffffffffffffffffffffffcfffffffffffffffffffffeffffff
         1550 ffe1
         1551 0e221f9f9fce6733ffcf3ff3ff9cfff27cf9cce4f393f77fefffffffffffffff
         1552 fc0000000080000000000000000000000fffffffffffffffffffffffffffffff
         1553 fffffffffffffffffffffffffffffffffff9fffffffffffffffffffffeffffff
         1554 ffe1
         1555 0e889f9fcce4623999cf3e73ff98fff27cf9ce466793f77fefffffffffffffff
         1556 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1557 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1558 ffe1
         1559 0e221f07e1f2713c3c1f8707ffc4fff26019cf270f93f77fefffffffffffffff
         1560 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1561 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1562 ffe1
         1563 0e889ffffffe7ffffffffffffffffffffffffffffffff77fefffffffffffffff
         1564 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1565 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1566 ffe1
         1567 0e221ffffffe7ffffffffffffffffffffffffffffffff77fefffffffffffffff
         1568 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1569 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1570 ffe1
         1571 0e889ffffffe7ffffffffffffffffffffffffffffffff7088fffffffffffffff
         1572 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1573 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1574 ffe1
         1575 0e221ffffffffffffffffffffffffffffffffffffffff7222fffffffffffffff
         1576 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1577 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1578 ffe1
         1579 0e889ffffffffffffffffffffffffffffffffffffffff7088fffffffffffffff
         1580 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1581 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1582 ffe1
         1583 0e221fffe0ce7ffffffffffffffffffffffffffffffff7222fffffffffffffff
         1584 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1585 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1586 ffe1
         1587 0e889fffcece7ffffffffffffffffffffffffffffffff7088fffffffffffffff
         1588 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1589 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1590 ffe1
         1591 0e221fff9fcf7ff23e1ce7fffffffffffffffffffffff7222fffffffffffffff
         1592 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1593 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1594 ffe1
         1595 0e889fff9fc97ff11cccf7fffffffffffffffffffffff7088fffffffffffffff
         1596 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1597 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1598 ffe1
         1599 0e221fff9fc97ff399cc97fffffffffffffffffffffff7222fffffffffffffff
         1600 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1601 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1602 ffe1
         1603 0e889fff9fc97ff399cc97fffffffffffffffffffffff7088fffffffffffffff
         1604 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1605 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1606 ffe1
         1607 0e221fff9fe4fff3980c97fffffffffffffffffffffff7222fffffffffffffff
         1608 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1609 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1610 ffe1
         1611 0e889fff9fe4fff399fe4ffffffffffffffffffffffff7088fffffffffffffff
         1612 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1613 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1614 ffe1
         1615 0e221fc79fe4fff399fe4fffc7fffffffffffffffffff7222fffffffffffffff
         1616 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1617 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1618 ffe1
         1619 0e889fc7cee4fff39cce4fffc7fffffffffffffffffff7088fffffffffffffff
         1620 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1621 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1622 ffe1
         1623 0e221fc7e0e4fff39e1e4fffc7fffffffffffffffffff7222f07f3ffffffff87
         1624 fffffffffffffffffffffffffffff3ffff87c3ffffffffffff0f87ffffffffff
         1625 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1626 ffe1
         1627 0e889fffffffffffffffffffe7fffffffffffffffffff7088fe7f3ffffffff3f
         1628 ffffffffe0f83fffffffefffffe733ffff3f9fffffffe07ffe7f3fffffffffff
         1629 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1630 ffe1
         1631 0e221fffffffffffffffffffe7fffffffffffffffffff7222fe7ffffffffff3f
         1632 ffffffffe6739fffffffcfffffe733ffff3f9fffffffe73ffe7f3fffffffffff
         1633 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1634 ffe1
         1635 0e889fffffffffffffffffffcffffffffffffffffffff7088fe783e47c3ffc06
         1636 33872dffe7339ffc8fff01c3ffe23279cc0603c38cffe733980c078719ffe0ff
         1637 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1638 ffe1
         1639 0e221ffffffffffffffffffffffffffffffffffffffff7222fe7f3e2399fff3f
         1640 033300ffe73f9ffc47ffcf99ffe23139cf3f9f99c0ffe7339e7f3f3381ffce7f
         1641 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1642 ffe1
         1643 0e889ffffffffffffffffffffffffffffffffffffffff7088fe7f3e7339fff3f
         1644 327924ffe73f9ffce7ffcf3cffe93399cf3f9f39ccffe7739e7f3e7399ffcfff
         1645 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1646 ffe1
         1647 0e221fffe0ce7ffffffffffffffffffffffffffffffff7222fe7f3e7339fff3f
         1648 3e7924ffe73f3ffce7ffcf3cffe93399cf3f9f39cfffe0f39e7f3e739fffc7ff
         1649 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1650 ffe1
         1651 0e889fffcece7ffffffffffffffffffffffffffffffff7088fe7f3e7301fff3f
         1652 3e7924ffe73e7ffce7ffcf3cffe93399cf3f9f01cfffe7739e7f3e039fffe0ff
         1653 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1654 ffe1
         1655 0e221fff9fcf7ff39e1c670f39fffffffffffffffffff7222fe7f3e733ffff3f
         1656 3e7924ffe73cfffce7ffcf3cffe93399cf3f9f3fcfffe7339e7f3e7f9ffffc7f
         1657 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1658 ffe1
         1659 0e889fff9fc97ff39cce066739fffffffffffffffffff7088fe7f3e733ffff3f
         1660 3e7924ffe739fe3ce7ffcf3cffef3399cf3f9f3fcff1e7339e7f3e7f9fe3fe7f
         1661 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1662 ffe1
         1663 0e221fff9fc97ff9b9ce64f39bfffffffffffffffffff7222fe7f3e7399fff3f
         1664 3f3324ffe6701e3ce7ffcf99ffef33388f3f9f99cff1e7311e7f3f339fe3ce7f
         1665 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1666 ffe1
         1667 0e889fff9fc97ff879ce7cf387fffffffffffffffffff7088f0080673c3ffc0e
         1668 0f8724ffe0f01e3ce7ffe1c3ffef307c4c0e07c383f1e078981c0f8707e3e0ff
         1669 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1670 ffe1
         1671 0e221fff9fe4fffef80e7cf3effffffffffffffffffff7222fffffffffffffff
         1672 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1673 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1674 ffe1
         1675 0e889fff9fe4fffc39fe7cf3c3fffffffffffffffffff7088fffffffffffffff
         1676 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1677 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1678 ffe1
         1679 0e221fc79fe4fffb39fe7cf3b3fffffffffffffffffff7222fffffffffffffff
         1680 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1681 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1682 ffe1
         1683 0e889fc7cee4fff39cce7e6739fffffffffffffffffff7088fffffffffffffff
         1684 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1685 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1686 ffe1
         1687 0e221fc7e0e4fff39e1c1f0f39fffffffffffffffffff7222fffffffffffffff
         1688 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1689 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1690 ffe1
         1691 0e889ffffffffffffffffffffffffffffffffffffffff7088fffffffffffffff
         1692 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1693 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1694 ffe1
         1695 0e221ffffffffffffffffffffffffffffffffffffffff7222fffffffffffffff
         1696 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1697 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1698 ffe1
         1699 0e889ffffffffffffffffffffffffffffffffffffffff7088fffffffffffffff
         1700 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1701 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1702 ffe1
         1703 0e221ffffffffffffffffffffffffffffffffffffffff7222fffffffffffffff
         1704 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1705 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1706 ffe1
         1707 0e889ffffffffffffffffffffffffffffffffffffffff7088fffffffffffffff
         1708 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1709 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1710 ffe1
         1711 0e221ffffffffffffffffffffffffffffffffffffffff7222fffffffffffffff
         1712 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1713 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1714 ffe1
         1715 0e889ffffffffffffffffffffffffffffffffffffffff7088fffffffffffffff
         1716 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1717 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1718 ffe1
         1719 0e221f878cfffffffffffffffffffffffffffffffffff7222fffffffffffffff
         1720 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1721 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1722 ffe1
         1723 0e889f33c0fffffffffffffffffffffffffffffffffff7088fffffffffffffff
         1724 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1725 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1726 ffe1
         1727 0e221e79ccfffffffffffffffffffffffffffffffffff7222fffffffffffffff
         1728 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1729 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1730 ffe1
         1731 0e889e79cffffffffffffffffffffffffffffffffffff7088fffffffffffffff
         1732 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1733 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1734 ffe1
         1735 0e221e79cffffffffffffffffffffffffffffffffffff7000fffffffffffffff
         1736 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1737 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1738 ffe1
         1739 0e889e79cffffffffffffffffffffffffffffffffffff7ffffffffffffffffff
         1740 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1741 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1742 ffe1
         1743 0e221e79cffffffffffffffffffffffffffffffffffff7ffffffffffffffffff
         1744 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1745 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
         1746 ffe1
         1747 0e889f33cffffffffffffffffffffffffffffffffffff0000000000000000000
         1748 0000000000000000000000000000000000000000000000000000000000000000
         1749 0000000000000000000000000000000000000000000000000000000000ffffff
         1750 ffe1
         1751 0e221f8783ffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1752 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1753 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1754 ffe1
         1755 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1756 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1757 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1758 ffe1
         1759 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1760 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1761 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1762 ffe1
         1763 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1764 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1765 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1766 ffe1
         1767 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1768 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1769 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1770 ffe1
         1771 0e889ffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffff
         1772 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1773 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1774 ffe1
         1775 0e221fffe0ce7ffffffffe7fffffffffffffffffffffffffffffffffffffffff
         1776 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1777 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1778 ffe1
         1779 0e889fffcece7ffffffffe7fffffffffffffffffffffffffffffffffffffffff
         1780 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1781 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1782 ffe1
         1783 0e221fff9fcf7ff19e1e0e478393f0ffffffffffffffffffffffffffffffffff
         1784 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1785 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1786 ffe1
         1787 0e889fff9fc97ff81ccce6233989e67fffffffffffffffffffffffffffffffff
         1788 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1789 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1790 ffe1
         1791 0effdfff9fc97ff999ccfe73f99cce7fffffffffffffffffffffffffffffffff
         1792 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1793 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1794 ffe1
         1795 0effdfff9fc97ff9f9cc7e73f99cce7fffffffffffffffffffffffffffffffff
         1796 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1797 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1798 ffe1
         1799 0e221fff9fe4fff9f80e0e73819cc07fffffffffffffffffffffffffffffffff
         1800 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1801 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1802 ffe1
         1803 0e889fff9fe4fff9f9ffc673399ccfffffffffffffffffffffffffffffffffff
         1804 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1805 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1806 ffe1
         1807 0e221fc79fe4fff9f9ffe673399ccffffc7fffffffffffffffffffffffffffff
         1808 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1809 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1810 ffe1
         1811 0e889fc7cee4fff9fccce6733199e67ffc7fffffffffffffffffffffffffffff
         1812 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1813 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1814 ffe1
         1815 0e221fc7e0e4fff07e1e0e738983f0fffc7fffffffffffffffffffffffffffff
         1816 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1817 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1818 ffe1
         1819 0e889fffffffffffffffffffff9ffffffe7fffffffffffffffffffffffffffff
         1820 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1821 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1822 ffe1
         1823 0e221fffffffffffffffffffff9ffffffe7fffffffffffffffffffffffffffff
         1824 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1825 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1826 ffe1
         1827 0e889fffffffffffffffffffff9ffffffcffffffffffffffffffffffffffffff
         1828 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1829 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1830 ffe1
         1831 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1832 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1833 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1834 ffe1
         1835 0e889fcffffffff3fffffffffffffffff3ffffffffffffffffffffffffffffff
         1836 fffffe1fffffffffffcfffffffffffffff07fffffffffffffffffffffffffffc
         1837 fffffffffff9fff9ffffffffffffffffffffffffffffffffffffffffffffffff
         1838 ffe1
         1839 0e221fcff7fffff3fffffffffffffffdf3ffffffffffffffffffffffffffffff
         1840 fffffcfffffffffff7cfffffffffffffffe7fffffffffffffffff7fffffffffc
         1841 fffffffffff9fef9ffffffffffffffffffffffffffffffffffffffffffffffff
         1842 ffe1
         1843 0e889fffe7fffff3fffffffffffffff9f3ffffffffffffffffffffffffffffff
         1844 fffffcffffffffffe7cfffffffffffffffe7ffffffffffffffffe7fffffffffc
         1845 fffffffffffffcf9ffffffffffffffffffffffffffffffffffffffffffffffff
         1846 ffe1
         1847 0e221e0f80fff8723c1c8f83c3c1ffe0323e1ffcb7879ce0f87ffe1ce63383c3
         1848 c67ff018ce1cb7ff80c8f87ff9ce0e7383e7fff07198ce1e73ff80e1fff83ffc
         1849 9f0f39ffce41f0191fffffffffffffffffffffffffffffffffffffffffffffff
         1850 ffe1
         1851 0e889fcfe7fff33119cc4733999cfff9f11ccffc03339cce733ffccce7033999
         1852 e07ffcfc0ccc03ffe7c4733ff9cce67339e7ffe7381c0cce7bffe7ccfff39ffc
         1853 4e6739ffcf79fcf88fffffffffffffffffffffffffffffffffffffffffffffff
         1854 ffe1
         1855 0e221fcfe7ffe7339fcce673399ffff9f399cffc92799ccfe73ff9cce7333f3c
         1856 e67ffcfcc9e493ffe7ce673ff9ccfe73f9e7ffff399cc9e64bffe79e7fff9ffc
         1857 e4f39bffc979fcf9cfffffffffffffffffffffffffffffffffffffffffffffff
         1858 ffe1
         1859 0e889fcfe7ffe7f39fcce673398ffff9f399cffc92799cc7e73ff9fce73f1f3c
         1860 e7fffcfcf9e493ffe7ce673ff9cc7e73f9e7ffff39fcf9e64bffe79e7fff9ffc
         1861 e4f387ffc979fcf9cfffffffffffffffffffffffffffffffffffffffffffffff
         1862 ffe1
         1863 0e221fcfe7ffe7f39c0ce67301c1fff9f3980ffc92799ce0e03ff9fce73f833c
         1864 e7fffcfcf9e493ffe7ce603ff9ce0e7381e7fff039fcf9e64bffe79e7ff81ffc
         1865 e4f3efffc979fcf9cfffffffffffffffffffffffffffffffffffffffffffffff
         1866 ffe1
         1867 0e889fcfe7ffe7f399cce6733ff8fff9f399fffc92799cfc67fff9fce73ff13c
         1868 e7fffcfcf9e493ffe7ce67fff9cfc67339e7ffe739fcf9e727ffe79e7ff39ffc
         1869 e4f3c3ffe4f9fcf9cfffffffffffffffffffffffffffffffffffffffffffffff
         1870 ffe1
         1871 0e221fcfe7ffe7f399cce6733ffcfff9f399fffc92799cfe67fff9fce73ff93c
         1872 e7fffcfcf9e493ffe7ce67fff9cfe67339e7ffe739fcf9e727ffe79e7ff39ffc
         1873 e4f3b3ffe4f9fcf9cfffffffffffffffffffffffffffffffffffffffffffffff
         1874 ffe1
         1875 0e889fcfe7fff333998ce723999cfff9f39ccffc933388ce733ffccc473f3999
         1876 e7fffcfcfccc93ffe7ce733ff88ce62331e7ffe639fcfccf27ffe7ccfff31ffc
         1877 ce6739ffe4f9fcf9cfffffffffffffffffffffffffffffffffffffffffffffff
         1878 ffe1
         1879 0e221e01f0fff8739c4ce793c3c1fffc339e1ffc9387c4e0f87ffe1e260f83c3
         1880 c1fff0383e1c93fff0ce787ffc4e0f138900fff130783e1f27fff0e1fff89ffc
         1881 1f0f39ffe4c03e19cfffffffffffffffffffffffffffffffffffffffffffffff
         1882 ffe1
         1883 0e889ffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffff
         1884 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1885 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1886 ffe1
         1887 0e221ffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff
         1888 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1889 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1890 ffe1
         1891 0e889fffffffffffffffff07ffffffffffffffffffffffffffffffffffffffff
         1892 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1893 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1894 ffe1
         1895 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1896 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1897 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1898 ffe1
         1899 0e889ffffffffffff0783fffffffffffffffffffffffffffffffffffffffffff
         1900 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1901 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1902 ffe1
         1903 0e221ffffffffffffe7f3fffffffffffffffffffffffffffffffffffffffffff
         1904 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1905 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1906 ffe1
         1907 0e889ffffffffffffe7f3fffffffffffffffffffffffffffffffffffffffffff
         1908 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1909 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1910 ffe1
         1911 0e221f83ffe0cb783e7f3fff838cc670f39fffffffffffffffffffffffffffff
         1912 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1913 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1914 ffe1
         1915 0e889f39ffce40339e7f3fff39c0e06673dfffffffffffffffffffffffffffff
         1916 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1917 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1918 ffe1
         1919 0e221ff9ffcfc93f9e7f3ffff9cce64f325fffffffffffffffffffffffffffff
         1920 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1921 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1922 ffe1
         1923 0e889ff9ffc7c93f9e7f3ffff9cfe7cf325fffffffffffffffffffffffffffff
         1924 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1925 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1926 ffe1
         1927 0e221f81ffe0c9381e7f3fff81cfe7cf325fffffffffffffffffffffffffffff
         1928 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1929 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1930 ffe1
         1931 0e889f39fffc49339e7f3fff39cfe7cf393fffffffffffffffffffffffffffff
         1932 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1933 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1934 ffe1
         1935 0e221f39fffe49339e7f3fff39cfe7cf393e3fffffffffffffffffffffffffff
         1936 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1937 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1938 ffe1
         1939 0e889f31ffce49331e7f3fff31cfe7e6793e3fffffffffffffffffffffffffff
         1940 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1941 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1942 ffe1
         1943 0e221f89ffe0c938900807ff8983c1f0f93e3fffffffffffffffffffffffffff
         1944 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1945 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1946 ffe1
         1947 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1948 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1949 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1950 ffe1
         1951 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1952 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1953 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1954 ffe1
         1955 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1956 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1957 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1958 ffe1
         1959 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         1960 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000
         1961 000000000000001fffffffffffffffffffffffffffffffffffffffffffffffff
         1962 ffe1
         1963 0e889ffffffffff3fe7fffffffffffffffffffffff3fffffffffffffffffffff
         1964 fffffff9ffffffffffffff3fffffffffcffffe79ffffffffffffffffffc00003
         1965 006000000000001ffffffffffffffffff07fffff3fffffffffffffffffffffff
         1966 ffe1
         1967 0e221f03fffffdf3fe7ffffffff7fffdffffffffdf3fffffffffffffffffffff
         1968 fffffff9ffffffffffffff3fff7fffffcffffe79ffffffbfffffffffffc00003
         1969 006010000000001ffffffffff7fffffffe7fffff3fffffffffffffffffffffff
         1970 ffe1
         1971 0e889fcffffff9f3ffffffffffe7fff9ffffffff9f3fffffffffffffffffffff
         1972 fffffff9ffffffffffffff3ffe7ffffffffffe7fffffff3fffffffffffc00003
         1973 000030000000001fffffffffe7fffffffe7fffff3fffffffffffffffffffffff
         1974 ffe1
         1975 0e221fcf91ffe032307e0fff8380e0e03c3ffffe0323e1ffcb7879ce0f87ff2d
         1976 e0e73ff93f0fff39c1f0f83ff80e1ffe0f91f041fc3c1c0787ffc1c8ffc7c733
         1977 63e0fe731f1ccc7ffc6787c380e0e47c1e7f0fff279cffffffffffffffffffff
         1978 ffe1
         1979 0e889fcf88fff9f11e7ce7ff39e7ce79f99fffff9f11ccffc03339cce733ff00
         1980 ce673ff89e67ff399ce6733ffe7ccfffcf88e679f999cf3f33ff9cc47fcc63f3
         1981 b060303f318fcc7ffe073399e7ce62399e7e67ff139cffffffffffffffffffff
         1982 ffe1
         1983 0e221fcf9cfff9f39e7cffff3fe7fe79f39fffff9f399cffc92799ccfe73ff24
         1984 fe67bff9cce7ff399fce673ffe79e7ffcf9cce79f39fcf3e73fffcce7fc06333
         1985 18603033018ccc3ffe667339e7fe67339e7ce7ff399effffffffffffffffffff
         1986 ffe1
         1987 0e889fcf9cfff9f39e7c7fff1fe7fe79f39fffff9f399cffc92799cc7e73ff24
         1988 fe733ff9cce7ff398fce673ffe79e7ffcf9cce79f3ffcf3e73fffcce7fc06303
         1989 18603030018c067ffe7e733fe7fe67339e7ce7ff39ccffffffffffffffffffff
         1990 ffe1
         1991 0e221fcf9cfff9f39e7e0fff83e7e079f01fffff9f3980ffc92799ce0e03ff24
         1992 e0737ff9cc07ff39c1c0673ffe79e7ffcf9cce79f3fc0f3e03ffc0ce7fc7e303
         1993 186030301f8c065ffe7e033fe7e067339e7c07ff39cdffffffffffffffffffff
         1994 ffe1
         1995 0e889fcf9cfff9f39e7fc7fff1e7ce79f3ffffff9f399fffc92799cfc67fff24
         1996 ce737ff9ccffff39f8cfe73ffe79e7ffcf9cce79f3f9cf3e7fff9cce7fcc6303
         1997 18603030318c065ffe7e7f3fe7ce67339e7cffff39cdffffffffffffffffffff
         1998 ffe1
         1999 0e221fcf9cfff9f39e7fe7fff9e7ce79f3fe3fff9f399fffc92799cfe67fff24
         2000 ce78fff9ccffff39fccfe73ffe79e7ffcf9cce79f3f9cf3e7fff9cce7fcc6303
         2001 18603030318c039ffe7e7f3fe7ce67339e7cffff39e3ffffffffffffffffffff
         2002 ffe1
         2003 0e889fcf9cfff9f39e7ce7ff39e7cc79f99e3fff9f39ccffc933388ce733ff24
         2004 cc78fff99e67ff119ce6723ffe7ccfffcf9ce479f9998f3f33ff98ce7fcce303
         2005 30603030338c039ffe7f3399e7cc67391e7e67ff33e3ffffffffffffffffffff
         2006 ffe1
         2007 0e221f039cfffc33900e0fff83f0e27c3c3e3fffc339e1ffc9387c4e0f87ff24
         2008 e27cfff83f0fff89c1f0f93fff0e1ffe019cf2403c3c4f8787ffc4ce7fc767c3
         2009 e3fc1e7c1d9f019ffc1f87c3f0e2673c900f0fff07f3ffffffffffffffffffff
         2010 ffe1
         2011 0e889fffffffffffffffffffffffffffffff3fffffffffffffffffffffffffff
         2012 fffdffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000
         2013 000000000000011fffffffffffffffff9ffffffffff7ffffffffffffffffffff
         2014 ffe1
         2015 0e221fffffffffffffffffffffffffffffff3fffffffffffffffffffffffffff
         2016 fff9ffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000
         2017 000000000000031ffffffffffffffff39fffffffffe7ffffffffffffffffffff
         2018 ffe1
         2019 0e889ffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffff
         2020 fff1ffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000
         2021 000000000000071ffffffffffffffff83fffffffffc7ffffffffffffffffffff
         2022 ffe1
         2023 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2024 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2025 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2026 ffe1
         2027 0e889ffffffffffffe7fffffff9fffffffffffffffffffffffffffffffffffff
         2028 fffffffffffffffffffe7ffffff83ffffffff3ffffffff3ffffffffffffff9ff
         2029 fffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffff
         2030 ffe1
         2031 0e221ffffffffffffe7fffffff9ffffdfeffffffff83fffffdffffffffffffff
         2032 fffffffffffffffffffe7fffffff3ffffffff3ffffffff3fdffffffbfffef9ff
         2033 fffffffffffffffe7fbfffffffffffffffffffffffffffffffffffffffffffff
         2034 ffe1
         2035 0e889fffffffffffffffffffff9ffff9fcffffffff39fffff9ffffffffffffff
         2036 fffffffffffffffffffe7fffffff3fffffffffffffffffff9ffffff3fffcf9ff
         2037 ffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffff
         2038 ffe1
         2039 0e221f278cf0f078307c8f83ff93ce60301c3c8fff39ffe0e03ffc3c8f87ffe1
         2040 e1e3323e1c67ff8391f07ff19e1f3f8783c183e47c1ff83e03ffc1c07ff0191f
         2041 0fff8793c9f0f8307c0787ffe1e1e3323e1c67ffffffffffffffffffffffffff
         2042 ffe1
         2043 0e889f13c0e667339e7c4733ff89ce79fcf99c47fff9ffce79fff99c4733ffcc
         2044 ccf0311cce07ff3988e67ff81ccf3f33399cf3e2399fff3f9fff9cf3fffcf88e
         2045 67ff3389c4e6739e7f3f33ffccccf0311cce07ffffffffffffffffffffffffff
         2046 ffe1
         2047 0e221f39ccce67f3fe7ce673ff9cce79fcf3cce7fff9fffe79fff3cce673ff9c
         2048 9e733399ce67fff99cce7ff999cf3e73f99ff3e7339fff3f9ffffcf3fffcf9cc
         2049 e7fe799cce4f33fe7f3e73ff9c9e733399ce67ffffffffffffffffffffffffff
         2050 ffe1
         2051 0e889f39cfce63f1fe7ce673ff9cce79fcf3cce7ffc7fffe79fff3cce673ff9f
         2052 9e73f399ce7ffff99cce7ff9f9cf3e73f98ff3e7339fff3f9ffffcf3fffcf9cc
         2053 e7fe799cce4f31fe7f3e73ff9f9e73f399ce7fffffffffffffffffffffffffff
         2054 ffe1
         2055 0e221f39cfc070783e7ce673ff9cce79fcf3cce7fff9ffe079fff3cce603ff9f
         2056 9e73f3980e7fff819cce7ff9f80f3e0381c1f3e7339fff3f9fffc0f3fffcf9cc
         2057 07fe799cce4f383e7f3e03ff9f9e73f3980e7fffffffffffffffffffffffffff
         2058 ffe1
         2059 0e889f39cfcffe3f1e7ce673ff9cce79fcf3cce7fff9ffce79fff3cce67fff9f
         2060 9e73f399fe7fff399cce7ff9f9ff3e7f39f8f3e7339fff3f9fff9cf3fffcf9cc
         2061 fffe799cce4f3f1e7f3e7fff9f9e73f399fe7fffffffffffffffffffffffffff
         2062 ffe1
         2063 0e221f39cfcfff3f9e7ce673ff9cce79fcf3cce7fff9ffce79fff3cce67fff9f
         2064 9e73f399fe7fff399cce7ff9f9ff3e7f39fcf3e7339fff3f9fff9cf3fffcf9cc
         2065 fffe799cce4f3f9e7f3e7fff9f9e73f399fe7f8fffffffffffffffffffffffff
         2066 ffe1
         2067 0e889f33cfe667339e7ce723ff99c479fcf99ce7ff39ffcc79fff99ce733ffcc
         2068 ccf3f39cce7fff319ce47ff9fccf3f33319cf3e7391fff3f9fff98f3fffcf9ce
         2069 67ff3399cce6739e7f3f33ffccccf3f39cce7f8fffffffffffffffffffffffff
         2070 ffe1
         2071 0e221f0783f0f078300ce793ff83e27c3e1c3ce7ff83ffe27c3ffc3ce787ffe1
         2072 e1e0f39e1c1fff899cf27ff07e18078789c180673c9ff807c3ffc4f87ffe19cf
         2073 0fff8783c1f0f8300f8787ffe1e1e0f39e1c1f8fffffffffffffffffffffffff
         2074 ffe1
         2075 0e889f3ffffffffffffffff3ffffffffffffffffffffffffffffffffffffffff
         2076 ffffffffffffffffffffffffffffffffffffffffff9fffffffffffffffffffff
         2077 ffffff9fcfffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2078 ffe1
         2079 0e221f3ffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff
         2080 fffffffffffffffffffffffffffffffffffffffff39fffffffffffffffffffff
         2081 ffffff9fcfffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2082 ffe1
         2083 0e889f3fffffffffffffff07ffffffffffffffffffffffffffffffffffffffff
         2084 fffffffffffffffffffffffffffffffffffffffff83fffffffffffffffffffff
         2085 ffffff9fcfffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2086 ffe1
         2087 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2088 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2089 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2090 ffe1
         2091 0e889ffffffffffffffffffffffffff9fffffffc1fffffffffffffffffffffff
         2092 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2093 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2094 ffe1
         2095 0e221f39fffffffffffffffffffffff9ffffffbf9fffffffffffffffffffffff
         2096 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2097 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2098 ffe1
         2099 0e889f39ffffffffffffffffffffffffffffff3f9fffffffffffffffffffffff
         2100 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2101 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2102 ffe1
         2103 0e221f11c3c6787ffe1e1e4739e1c8c1fc391c079f39ffffffffffffffffffff
         2104 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2105 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2106 ffe1
         2107 0e889f1199e0733ffcccce2339ccc479f9988f3f9f39ffffffffffffffffffff
         2108 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2109 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2110 ffe1
         2111 0e221f493ce6673ff9c9e6733d9cce79f399cf3f9f3dffffffffffffffffffff
         2112 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2113 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2114 ffe1
         2115 0e889f493ce7e73ff9f9e673999cce79f399cf3f9f99ffffffffffffffffffff
         2116 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2117 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2118 ffe1
         2119 0e221f493ce7e03ff9f9e6739b80ce79f019cf3f9f9bffffffffffffffffffff
         2120 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2121 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2122 ffe1
         2123 0e889f493ce7e7fff9f9e6739b9fce79f3f9cf3f9f9bffffffffffffffffffff
         2124 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2125 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2126 ffe1
         2127 0e221f793ce7e7fff9f9e673c79fce79f3f9cf3f9fc7e3ffffffffffffffffff
         2128 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2129 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2130 ffe1
         2131 0e889f7999e7f33ffcccce73c7ccce79f999cf3f9fc7e3ffffffffffffffffff
         2132 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2133 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2134 ffe1
         2135 0e221f79c3c1f87ffe1e1e73c7e1ce403c39cf8403e7e3ffffffffffffffffff
         2136 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2137 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2138 ffe1
         2139 0e889fffffffffffffffffffffffffffffffffffffeff3ffffffffffffffffff
         2140 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2141 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2142 ffe1
         2143 0e221fffffffffffffffffffffffffffffffffffffcff3ffffffffffffffffff
         2144 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2145 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2146 ffe1
         2147 0e889fffffffffffffffffffffffffffffffffffff8fe7ffffffffffffffffff
         2148 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2149 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2150 ffe1
         2151 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2152 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2153 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2154 ffe1
         2155 0e889f3fffffffffffffffffffffffffffffff3fffff07fffff3fffffffe0fe7
         2156 ffe7ffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2157 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2158 ffe1
         2159 0e221f3ffffbfdffffffff07ffffffffffffff3fffffe7fffff3ffffffffcfe7
         2160 ffe7ffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2161 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2162 ffe1
         2163 0e889f3ffff3f9fffffffe73ffffffffffffffffffffe7fffff3ffffffffcfff
         2164 ffe7ffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2165 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2166 ffe1
         2167 0e221f279cc06038791ffe73ff2de0e73ffc183cb727e7ce7ff27e1fff87cf07
         2168 f0e73c3e0fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2169 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2170 ffe1
         2171 0e889f139cf3f9f3388ffff3ff00ce673ff9cf3c0313e7ce7ff13ccfff33cfe7
         2172 e667799ccfffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2173 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2174 ffe1
         2175 0e221f399cf3f9e799cffff3ff24fe67bff9ff3c9339e7cf7ff399cffe73cfe7
         2176 ce66f399cfffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2177 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2178 ffe1
         2179 0e889f399cf3f9e799cfff8fff24fe733ff8ff3c9339e7e67ff399cffe7fcfe7
         2180 cfe5f399cfffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2181 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2182 ffe1
         2183 0e221f399cf3f9e799cffff3ff24e0737ffc1f3c9339e7e6fff3980ffe7fcfe7
         2184 cfe1f019cfffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2185 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2186 ffe1
         2187 0e889f399cf3f9e799cffff3ff24ce737fff8f3c9339e7e6fff399fffe7fcfe7
         2188 cfe4f3f9cfffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2189 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2190 ffe1
         2191 0e221f399cf3f9e799cffff3ff24ce78ffffcf3c9339e7f1fff399fffe7fcfe7
         2192 cfe673f9cf1fffffffffffffffffffffffffffffffffffffffffffffffffffff
         2193 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2194 ffe1
         2195 0e889f3388f3f9f339cffe73ff24cc78fff9cf3c9333e7f1fff33ccfff33cfe7
         2196 e667399c8f1fffffffffffffffffffffffffffffffffffffffffffffffffffff
         2197 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2198 ffe1
         2199 0e221f07c4f87c3879cfff07ff24e27cfffc1804930700f9fff07e1fff860100
         2200 f0e73c3e4f1fffffffffffffffffffffffffffffffffffffffffffffffffffff
         2201 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2202 ffe1
         2203 0e889ffffffffffffffffffffffffffdffffffffff3ffffbffffffffffffffff
         2204 ffffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffff
         2205 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2206 ffe1
         2207 0e221ffffffffffffffffffffffffff9ffffffffff3ffff3ffffffffffffffff
         2208 ffffffffff9fffffffffffffffffffffffffffffffffffffffffffffffffffff
         2209 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2210 ffe1
         2211 0e889ffffffffffffffffffffffffff1ffffffffff3fffe3ffffffffffffffff
         2212 ffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffff
         2213 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2214 ffe1
         2215 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2216 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2217 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2218 ffe1
         2219 0e889fff9fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2220 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2221 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2222 ffe1
         2223 0e221fff9fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2224 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2225 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2226 ffe1
         2227 0e889fff9fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2228 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2229 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2230 ffe1
         2231 0e221f3991f0e33c39cc9f0f23ffffffffffffffffffffffffffffffffffffff
         2232 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2233 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2234 ffe1
         2235 0e889f3d88e6703999cc4e6711ffffffffffffffffffffffffffffffffffffff
         2236 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2237 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2238 ffe1
         2239 0e221f259cce733399cce4f339ffffffffffffffffffffffffffffffffffffff
         2240 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2241 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2242 ffe1
         2243 0e889f259cce73f399cce4f339ffffffffffffffffffffffffffffffffffffff
         2244 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2245 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2246 ffe1
         2247 0e221f259cc073f019cce4f339ffffffffffffffffffffffffffffffffffffff
         2248 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2249 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2250 ffe1
         2251 0e889f939ccff3f3f9cce4f339ffffffffffffffffffffffffffffffffffffff
         2252 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2253 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2254 ffe1
         2255 0e221f939ccff3f3f9cce4f339ffffffffffffffffffffffffffffffffffffff
         2256 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2257 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2258 ffe1
         2259 0e889f939ce673f9988cce6739ffffffffffffffffffffffffffffffffffffff
         2260 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2261 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2262 ffe1
         2263 0e221f939cf0e0fc3c4c1f0f39ffffffffffffffffffffffffffffffffffffff
         2264 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2265 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2266 ffe1
         2267 0e889ffffffffffffffcffffffffffffffffffffffffffffffffffffffffffff
         2268 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2269 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2270 ffe1
         2271 0e221ffffffffffffffcffffffffffffffffffffffffffffffffffffffffffff
         2272 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2273 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2274 ffe1
         2275 0e889ffffffffffffffcffffffffffffffffffffffffffffffffffffffffffff
         2276 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2277 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2278 ffe1
         2279 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2280 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2281 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2282 ffe1
         2283 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2284 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2285 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2286 ffe1
         2287 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2288 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2289 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2290 ffe1
         2291 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2292 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2293 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2294 ffe1
         2295 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2296 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2297 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2298 ffe1
         2299 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2300 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2301 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2302 ffe1
         2303 0e221fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2304 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2305 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2306 ffe1
         2307 0e889fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2308 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2309 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2310 ffe1
         2311 0e001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2312 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2313 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2314 ffe1
         2315 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2316 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2317 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2318 ffe1
         2319 0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2320 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2321 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2322 ffe1
         2323 0000000000000000000000000000000000000000000000000000000000000000
         2324 0000000000000000000000000000000000000000000000000000000000000000
         2325 0000000000000000000000000000000000000000000000000000000000000000
         2326 0001
         2327 0000000000000000000000000000000000000000000000000000000000000000
         2328 0000000000000000000000000000000000000000000000000000000000000000
         2329 0000000000000000000000000000000000000000000000000000000000000000
         2330 0001
         2331 0000000000000000000000000000000000000000000000000000000000000000
         2332 0000000000000000000000000000000000000000000000000000000000000000
         2333 0000000000000000000000000000000000000000000000000000000000000000
         2334 0001
         2335 0000000000000000000000000000000000000000000000000000000000000000
         2336 0000000000000000000000000000000000000000000000000000000000000000
         2337 0000000000000000000000000000000000000000000000000000000000000000
         2338 0001
         2339 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2340 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2341 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         2342 ffff
         2343 showpage
         2344 %ps_include: inclusion end
         2345 grestore
         2346 PS-include-dict-dw begin
         2347 o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice
         2348         initgraphics 0.1 setlinewidth boxpath stroke grestore} if
         2349 clear o-stack aload pop
         2350 context end restore
         2351 %ps_include: end
         2352 /saveobj save def
         2353 mark
         2354 8 I f
         2355 (Figure 1. A typical)3 623 1 720 3580 t
         2356 8 CW f
         2357 (sam)1370 3580 w
         2358 8 I f
         2359 ( The)1 167(screen, with the editing menu presented.)5 1320 2 1541 3580 t
         2360 8 CW f
         2361 (sam)3055 3580 w
         2362 8 I f
         2363 (\(command language\) window is in the middle, with file)8 1814 1 3226 3580 t
         2364 ( partially obscured window is a)5 1029( The)1 164( user interface makes it easy to create these abutting windows.\))10 2059( \(The)1 191(windows above and below.)3 877 5 720 3680 t
         2365 ( Each)1 206( typing and mouse operations apply, as indicated by its heavy border.)11 2242( uppermost window is that to which)6 1143( The)1 161(third file window.)2 568 5 720 3780 t
         2366 ( The)1 162(window has its current text highlighted in reverse video.)8 1810 2 720 3880 t
         2367 8 CW f
         2368 (sam)2714 3880 w
         2369 8 I f
         2370 ( string on the last visible line, indi-)7 1121(window's current text is the null)5 1039 2 2880 3880 t
         2371 ( also Figure 2.)3 470( See)1 150(cated by a vertical bar.)4 740 3 720 3980 t
         2372 10 R f
         2373 ( and leave dot set to the text resulting from the change.)11 2202(most commands make some change to the text in dot)9 2118 2 720 4220 t
         2374 (For example, the delete command,)4 1389 1 720 4340 t
         2375 10 CW f
         2376 (d)2135 4340 w
         2377 10 R f
         2378 (, deletes the text in dot, replacing it by the null string and setting dot to)15 2845 1 2195 4340 t
         2379 ( change command,)2 767( The)1 213(the result.)1 402 3 720 4460 t
         2380 10 CW f
         2381 (c)2135 4460 w
         2382 10 R f
         2383 (, replaces dot by text delimited by an arbitrary punctuation character,)10 2845 1 2195 4460 t
         2384 ( Thus,)1 275(conventionally a slash.)2 913 2 720 4580 t
         2385 9 CW f
         2386 (c/Peter/)1008 4750 w
         2387 10 R f
         2388 (replaces the text in dot by the string)7 1429 1 720 4930 t
         2389 10 CW f
         2390 (Peter)2174 4930 w
         2391 10 R f
         2392 (. Similarly,)1 473 1 2474 4930 t
         2393 9 CW f
         2394 (a/Peter/)1008 5100 w
         2395 10 R f
         2396 (\(append\) adds the string after dot, and)6 1516 1 720 5280 t
         2397 9 CW f
         2398 (i/Peter/)1008 5450 w
         2399 10 R f
         2400 ( three leave dot set to the new text,)8 1389( All)1 178(\(insert\) inserts before dot.)3 1031 3 720 5630 t
         2401 10 CW f
         2402 (Peter)3343 5630 w
         2403 10 R f
         2404 (.)3643 5630 w
         2405 ( lexically terminates a command.)4 1335(Newlines are part of the syntax of commands: the newline character)10 2735 2 970 5786 t
         2406 ( it is often convenient to insert)6 1282( since)1 242( But)1 207(Within the inserted text, however, newlines are never implicit.)8 2589 4 720 5906 t
         2407 (multiple lines of text,)3 856 1 720 6026 t
         2408 10 CW f
         2409 (sam)1601 6026 w
         2410 10 R f
         2411 (has a special syntax for that case:)6 1330 1 1806 6026 t
         2412 9 CW f
         2413 (a)1008 6196 w
         2414 (some lines of text)3 972 1 1008 6306 t
         2415 (to be inserted in the file,)5 1458 1 1008 6416 t
         2416 (terminated by a period)3 1188 1 1008 6526 t
         2417 (on a line by itself)4 1026 1 1008 6636 t
         2418 (.)1008 6746 w
         2419 10 R f
         2420 (In the one-line syntax, a newline character may be specified by a C-like escape, so)14 3291 1 720 6926 t
         2421 9 CW f
         2422 (c/\\n/)1008 7096 w
         2423 10 R f
         2424 (replaces dot by a single newline character.)6 1692 1 720 7276 t
         2425 cleartomark
         2426 showpage
         2427 saveobj restore
         2428 %%EndPage: 3 3
         2429 %%Page: 4 4
         2430 /saveobj save def
         2431 mark
         2432 4 pagesetup
         2433 10 R f
         2434 (- 4 -)2 166 1 2797 480 t
         2435 10 CW f
         2436 (Sam)970 840 w
         2437 10 R f
         2438 (also has a substitute command,)4 1241 1 1175 840 t
         2439 10 CW f
         2440 (s)2441 840 w
         2441 10 R f
         2442 (:)2501 840 w
         2443 9 CW f
         2444 (s/)1008 1010 w
         2445 9 I f
         2446 (expression)1116 1010 w
         2447 9 CW f
         2448 (/)1501 1010 w
         2449 9 I f
         2450 (replacement)1555 1010 w
         2451 9 CW f
         2452 (/)2000 1010 w
         2453 10 R f
         2454 ( if dot is the)4 530( Thus,)1 288( expression.)1 490(substitutes the replacement text for the first match, in dot, of the regular)12 3012 4 720 1190 t
         2455 (string)720 1310 w
         2456 10 CW f
         2457 (Peter)973 1310 w
         2458 10 R f
         2459 (, the command)2 591 1 1273 1310 t
         2460 9 CW f
         2461 (s/t/st/)1008 1480 w
         2462 10 R f
         2463 (changes it to)2 517 1 720 1660 t
         2464 10 CW f
         2465 (Pester)1268 1660 w
         2466 10 R f
         2467 ( general,)1 349(. In)1 164 2 1628 1660 t
         2468 10 CW f
         2469 (s)2172 1660 w
         2470 10 R f
         2471 (is unnecessary, but it was inherited from)6 1653 1 2263 1660 t
         2472 10 CW f
         2473 (ed)3947 1660 w
         2474 10 R f
         2475 ( has some conve-)3 711(and it)1 231 2 4098 1660 t
         2476 ( instance, the replacement text may include the matched text, specified by)11 2947( For)1 189(nient variations.)1 644 3 720 1780 t
         2477 10 CW f
         2478 (&)4525 1780 w
         2479 10 R f
         2480 (:)4585 1780 w
         2481 9 CW f
         2482 (s/Peter/Oh, &, &, &, &!/)4 1296 1 1008 1950 t
         2483 10 R f
         2484 (There are also three commands that apply programs to text:)9 2376 1 970 2166 t
         2485 9 CW f
         2486 (<)1008 2336 w
         2487 9 I f
         2488 (Unix program)1 513 1 1116 2336 t
         2489 10 R f
         2490 ( the)1 149( Similarly,)1 450(replaces dot by the output of the Unix program.)8 1908 3 720 2516 t
         2491 10 CW f
         2492 (>)3254 2516 w
         2493 10 R f
         2494 (command runs the program with dot as its)7 1699 1 3341 2516 t
         2495 (standard input, and)2 763 1 720 2636 t
         2496 10 CW f
         2497 (|)1508 2636 w
         2498 10 R f
         2499 ( example,)1 388( For)1 189(does both.)1 411 3 1593 2636 t
         2500 9 CW f
         2501 (| sort)1 324 1 1008 2806 t
         2502 10 R f
         2503 ( special sig-)2 483( newlines have no)3 724( Again,)1 321(replaces dot by the result of applying the standard sorting utility to it.)12 2792 4 720 2986 t
         2504 ( these)1 235(nificance for)1 512 2 720 3106 t
         2505 10 CW f
         2506 (sam)1497 3106 w
         2507 10 R f
         2508 ( text acted upon and resulting from these commands is not neces-)11 2665(commands. The)1 668 2 1707 3106 t
         2509 (sarily bounded by newlines, although for connection with Unix programs, newlines may be necessary to)14 4320 1 720 3226 t
         2510 (obey conventions.)1 727 1 720 3346 t
         2511 (One more command:)2 843 1 970 3502 t
         2512 10 CW f
         2513 (p)1838 3502 w
         2514 10 R f
         2515 ( I summarizes)2 560( Table)1 277(prints the contents of dot.)4 1019 3 1923 3502 t
         2516 10 CW f
         2517 (sam)3804 3502 w
         2518 10 R f
         2519 ('s commands.)1 555 1 3984 3502 t
         2520 (The value of dot may be changed by specifying an)9 2015 1 970 3658 t
         2521 10 I f
         2522 (address)3010 3658 w
         2523 10 R f
         2524 ( simplest address is)3 778( The)1 206(for the command.)2 709 3 3347 3658 t
         2525 (a line number:)2 577 1 720 3778 t
         2526 9 CW f
         2527 (3)1008 3948 w
         2528 10 R f
         2529 (refers to the third line of the file, so)8 1417 1 720 4128 t
         2530 9 CW f
         2531 (3d)1008 4298 w
         2532 10 R f
         2533 ( 3.)1 111(deletes the third line of the file, and implicitly renumbers the lines so the old line 4 is now numbered)19 4209 2 720 4478 t
         2534 (\(This is one of the few places where)7 1485 1 720 4598 t
         2535 10 CW f
         2536 (sam)2236 4598 w
         2537 10 R f
         2538 ( Line)1 239(deals with lines directly.\))3 1028 2 2447 4598 t
         2539 10 CW f
         2540 (0)3745 4598 w
         2541 10 R f
         2542 ( string at the begin-)4 797(is the null)2 407 2 3836 4598 t
         2543 ( a command consists of only an address, a)8 1846( If)1 137(ning of the file.)3 679 3 720 4718 t
         2544 10 CW f
         2545 (p)3429 4718 w
         2546 10 R f
         2547 (command is assumed, so typing an)5 1504 1 3536 4718 t
         2548 (unadorned)720 4838 w
         2549 10 CW f
         2550 (3)1173 4838 w
         2551 10 R f
         2552 ( are a couple of other basic addresses: a period addresses)10 2325( There)1 288(prints line 3 on the terminal.)5 1163 3 1264 4838 t
         2553 (dot itself; and a dollar sign \()6 1127 1 720 4958 t
         2554 10 CW f
         2555 ($)1847 4958 w
         2556 10 R f
         2557 (\) addresses the null string at the end of the file.)10 1872 1 1907 4958 t
         2558 ( the address)2 477( Thus,)1 278( single substring of the file.)5 1109(An address is always a)4 917 4 970 5114 t
         2559 10 CW f
         2560 (3)3779 5114 w
         2561 10 R f
         2562 (addresses the characters after)3 1173 1 3867 5114 t
         2563 ( A)1 125( file.)1 186(the second newline of the file through the third newline of the)11 2515 3 720 5234 t
         2564 10 I f
         2565 (compound address)1 755 1 3574 5234 t
         2566 10 R f
         2567 (is constructed by)2 683 1 4357 5234 t
         2568 (the comma operator)2 798 1 720 5354 t
         2569 9 I f
         2570 (address1)1008 5524 w
         2571 9 CW f
         2572 (,)1333 5524 w
         2573 9 I f
         2574 (address2)1387 5524 w
         2575 10 R f
         2576 ( the substring of the file from the beginning of)9 1860(and addresses)1 551 2 720 5704 t
         2577 10 I f
         2578 (address1)3157 5704 w
         2579 10 R f
         2580 (to the end of)3 505 1 3544 5704 t
         2581 10 I f
         2582 (address2)4075 5704 w
         2583 10 R f
         2584 ( example,)1 389(. For)1 215 2 4436 5704 t
         2585 (the command)1 543 1 720 5824 t
         2586 10 CW f
         2587 (3,5p)1290 5824 w
         2588 10 R f
         2589 (prints the third through fifth lines of the file and)9 1936 1 1557 5824 t
         2590 10 CW f
         2591 (.,$d)3520 5824 w
         2592 10 R f
         2593 ( the begin-)2 429(deletes the text from)3 824 2 3787 5824 t
         2594 (ning of dot to the end of the file.)8 1296 1 720 5944 t
         2595 (These addresses are all absolute positions in the file, but)9 2247 1 970 6100 t
         2596 10 CW f
         2597 (sam)3242 6100 w
         2598 10 R f
         2599 ( indicated by)2 518(also has relative addresses,)3 1075 2 3447 6100 t
         2600 10 CW f
         2601 (+)720 6220 w
         2602 10 R f
         2603 (or)805 6220 w
         2604 10 CW f
         2605 (-)913 6220 w
         2606 10 R f
         2607 ( example,)1 388(. For)1 214 2 973 6220 t
         2608 9 CW f
         2609 ($-3)1008 6390 w
         2610 10 R f
         2611 (is the third line before the end of the file and)10 1780 1 720 6570 t
         2612 9 CW f
         2613 (.+1)1008 6740 w
         2614 10 R f
         2615 ( no address appears to the left of the)8 1457( If)1 118(is the line after dot.)4 782 3 720 6920 t
         2616 10 CW f
         2617 (+)3104 6920 w
         2618 10 R f
         2619 (or)3191 6920 w
         2620 10 CW f
         2621 (-)3301 6920 w
         2622 10 R f
         2623 (, dot is assumed; if nothing appears to the)8 1679 1 3361 6920 t
         2624 (right,)720 7040 w
         2625 10 CW f
         2626 (1)959 7040 w
         2627 10 R f
         2628 ( Therefore,)1 467(is assumed.)1 461 2 1044 7040 t
         2629 10 CW f
         2630 (.+1)1997 7040 w
         2631 10 R f
         2632 (may be abbreviated to just a plus sign.)7 1532 1 2202 7040 t
         2633 (The)970 7196 w
         2634 10 CW f
         2635 (+)1156 7196 w
         2636 10 R f
         2637 (operator acts relative to the end of its first argument, while the)11 2556 1 1247 7196 t
         2638 10 CW f
         2639 (-)3834 7196 w
         2640 10 R f
         2641 (operator acts relative to the)4 1114 1 3926 7196 t
         2642 (beginning. Thus)1 679 1 720 7316 t
         2643 10 CW f
         2644 (.+1)1428 7316 w
         2645 10 R f
         2646 ( first line after dot,)4 758(addresses the)1 533 2 1637 7316 t
         2647 10 CW f
         2648 (.-)2956 7316 w
         2649 10 R f
         2650 (addresses the first line before dot, and)6 1534 1 3104 7316 t
         2651 10 CW f
         2652 (+-)4666 7316 w
         2653 10 R f
         2654 (refers)4814 7316 w
         2655 cleartomark
         2656 showpage
         2657 saveobj restore
         2658 %%EndPage: 4 4
         2659 %%Page: 5 5
         2660 /saveobj save def
         2661 mark
         2662 5 pagesetup
         2663 10 R f
         2664 (- 5 -)2 166 1 2797 480 t
         2665 (Table I.)1 310 1 2393 900 t
         2666 10 CW f
         2667 (Sam)2728 900 w
         2668 10 R f
         2669 (commands)2933 900 w
         2670 10 S f
         2671 (_ ________________________________________________________________________)1 3605 1 1077 968 t
         2672 10 R f
         2673 (Text commands)1 641 1 1077 1136 t
         2674 10 S f
         2675 (_ ________________________________________________________________________)1 3605 1 1077 1204 t
         2676 10 CW f
         2677 (a/)1077 1372 w
         2678 10 I f
         2679 (text)1197 1372 w
         2680 10 CW f
         2681 (/)1341 1372 w
         2682 10 R f
         2683 (Append text after dot)3 851 1 2160 1372 t
         2684 10 CW f
         2685 (c/)1077 1492 w
         2686 10 I f
         2687 (text)1197 1492 w
         2688 10 CW f
         2689 (/)1341 1492 w
         2690 10 R f
         2691 (Change text in dot)3 736 1 2160 1492 t
         2692 10 CW f
         2693 (i/)1077 1612 w
         2694 10 I f
         2695 (text)1197 1612 w
         2696 10 CW f
         2697 (/)1341 1612 w
         2698 10 R f
         2699 (Insert text before dot)3 834 1 2160 1612 t
         2700 10 CW f
         2701 (d)1077 1732 w
         2702 10 R f
         2703 (Delete text in dot)3 691 1 2160 1732 t
         2704 10 CW f
         2705 (s/)1077 1852 w
         2706 10 I f
         2707 (regexp)1197 1852 w
         2708 10 CW f
         2709 (/)1468 1852 w
         2710 10 I f
         2711 (text)1528 1852 w
         2712 10 CW f
         2713 (/)1672 1852 w
         2714 10 R f
         2715 (Substitute text for match of regular expression in dot)8 2109 1 2160 1852 t
         2716 10 CW f
         2717 (m)1077 1972 w
         2718 10 I f
         2719 (address)1197 1972 w
         2720 10 R f
         2721 (Move text in dot after address)5 1195 1 2160 1972 t
         2722 10 CW f
         2723 (t)1077 2092 w
         2724 10 I f
         2725 (address)1197 2092 w
         2726 10 R f
         2727 (Copy text in dot after address)5 1179 1 2160 2092 t
         2728 10 S f
         2729 (_ ________________________________________________________________________)1 3605 1 1077 2160 t
         2730 10 R f
         2731 (Display commands)1 769 1 1077 2328 t
         2732 10 S f
         2733 (_ ________________________________________________________________________)1 3605 1 1077 2396 t
         2734 10 CW f
         2735 (p)1077 2540 w
         2736 10 R f
         2737 (Print contents of dot)3 814 1 2160 2540 t
         2738 10 CW f
         2739 (=)1077 2660 w
         2740 10 R f
         2741 (Print value \(line numbers and character numbers\) of dot)8 2234 1 2160 2660 t
         2742 10 S f
         2743 (_ ________________________________________________________________________)1 3605 1 1077 2728 t
         2744 10 R f
         2745 (File commands)1 614 1 1077 2896 t
         2746 10 S f
         2747 (_ ________________________________________________________________________)1 3605 1 1077 2964 t
         2748 10 CW f
         2749 (b)1077 3108 w
         2750 10 I f
         2751 (file-list)1197 3108 w
         2752 10 R f
         2753 (Set current file to first file in list that)8 1466 1 2160 3108 t
         2754 10 CW f
         2755 (sam)3651 3108 w
         2756 10 R f
         2757 (has in menu)2 483 1 3856 3108 t
         2758 10 CW f
         2759 (B)1077 3228 w
         2760 10 I f
         2761 (file-list)1197 3228 w
         2762 10 R f
         2763 (Same as)1 330 1 2160 3228 t
         2764 10 CW f
         2765 (b)2515 3228 w
         2766 10 R f
         2767 (, but load new files)4 763 1 2575 3228 t
         2768 10 CW f
         2769 (n)1077 3348 w
         2770 10 R f
         2771 (Print menu lines of all files)5 1086 1 2160 3348 t
         2772 10 CW f
         2773 (D)1077 3468 w
         2774 10 I f
         2775 (file-list)1197 3468 w
         2776 10 R f
         2777 (Delete named files from)3 967 1 2160 3468 t
         2778 10 CW f
         2779 (sam)3152 3468 w
         2780 10 S f
         2781 (_ ________________________________________________________________________)1 3605 1 1077 3536 t
         2782 10 R f
         2783 (I/O commands)1 591 1 1077 3704 t
         2784 10 S f
         2785 (_ ________________________________________________________________________)1 3605 1 1077 3772 t
         2786 10 CW f
         2787 (e)1077 3916 w
         2788 10 I f
         2789 (filename)1197 3916 w
         2790 10 R f
         2791 (Replace file with named disc file)5 1317 1 2160 3916 t
         2792 10 CW f
         2793 (r)1077 4036 w
         2794 10 I f
         2795 (filename)1197 4036 w
         2796 10 R f
         2797 (Replace dot by contents of named disc file)7 1700 1 2160 4036 t
         2798 10 CW f
         2799 (w)1077 4156 w
         2800 10 I f
         2801 (filename)1197 4156 w
         2802 10 R f
         2803 (Write file to named disc file)5 1123 1 2160 4156 t
         2804 10 CW f
         2805 (f)1077 4276 w
         2806 10 I f
         2807 (filename)1197 4276 w
         2808 10 R f
         2809 (Set file name and print new menu line)7 1523 1 2160 4276 t
         2810 10 CW f
         2811 (<)1077 4396 w
         2812 10 I f
         2813 (Unix-command)1197 4396 w
         2814 10 R f
         2815 (Replace dot by standard output of command)6 1770 1 2160 4396 t
         2816 10 CW f
         2817 (>)1077 4516 w
         2818 10 I f
         2819 (Unix-command)1197 4516 w
         2820 10 R f
         2821 (Send dot to standard input of command)6 1577 1 2160 4516 t
         2822 10 CW f
         2823 (|)1077 4636 w
         2824 10 I f
         2825 (Unix-command)1197 4636 w
         2826 10 R f
         2827 (Replace dot by result of command applied to dot)8 1948 1 2160 4636 t
         2828 10 CW f
         2829 (!)1077 4756 w
         2830 10 I f
         2831 (Unix-command)1197 4756 w
         2832 10 R f
         2833 (Run the command)2 733 1 2160 4756 t
         2834 10 S f
         2835 (_ ________________________________________________________________________)1 3605 1 1077 4824 t
         2836 10 R f
         2837 (Loops and conditionals)2 933 1 1077 4992 t
         2838 10 S f
         2839 (_ ________________________________________________________________________)1 3605 1 1077 5060 t
         2840 10 CW f
         2841 (x/)1077 5204 w
         2842 10 I f
         2843 (regexp)1197 5204 w
         2844 10 CW f
         2845 (/)1468 5204 w
         2846 10 I f
         2847 (command)1588 5204 w
         2848 10 R f
         2849 (For each match of regexp, set dot and run command)9 2079 1 2160 5204 t
         2850 10 CW f
         2851 (y/)1077 5324 w
         2852 10 I f
         2853 (regexp)1197 5324 w
         2854 10 CW f
         2855 (/)1468 5324 w
         2856 10 I f
         2857 (command)1588 5324 w
         2858 10 R f
         2859 (Between adjacent matches of regexp, set dot and run command)9 2522 1 2160 5324 t
         2860 10 CW f
         2861 (X/)1077 5444 w
         2862 10 I f
         2863 (regexp)1197 5444 w
         2864 10 CW f
         2865 (/)1468 5444 w
         2866 10 I f
         2867 (command)1588 5444 w
         2868 10 R f
         2869 (Run command in each file whose menu line matches regexp)9 2404 1 2160 5444 t
         2870 10 CW f
         2871 (Y/)1077 5564 w
         2872 10 I f
         2873 (regexp)1197 5564 w
         2874 10 CW f
         2875 (/)1468 5564 w
         2876 10 I f
         2877 (command)1588 5564 w
         2878 10 R f
         2879 (Run command in each file whose menu line does not match)10 2386 1 2160 5564 t
         2880 10 CW f
         2881 (g/)1077 5684 w
         2882 10 I f
         2883 (regexp)1197 5684 w
         2884 10 CW f
         2885 (/)1468 5684 w
         2886 10 I f
         2887 (command)1588 5684 w
         2888 10 R f
         2889 (If dot contains a match of regexp, run command)8 1921 1 2160 5684 t
         2890 10 CW f
         2891 (v/)1077 5804 w
         2892 10 I f
         2893 (regexp)1197 5804 w
         2894 10 CW f
         2895 (/)1468 5804 w
         2896 10 I f
         2897 (command)1588 5804 w
         2898 10 R f
         2899 (If dot does not contain a match of regexp, run command)10 2243 1 2160 5804 t
         2900 10 S f
         2901 (_ ________________________________________________________________________)1 3605 1 1077 5872 t
         2902 10 R f
         2903 (Miscellany)1077 6040 w
         2904 10 S f
         2905 (_ ________________________________________________________________________)1 3605 1 1077 6108 t
         2906 10 CW f
         2907 (k)1077 6252 w
         2908 10 R f
         2909 (Set address mark to value of dot)6 1287 1 2160 6252 t
         2910 10 CW f
         2911 (q)1077 6372 w
         2912 10 R f
         2913 (Quit)2160 6372 w
         2914 10 CW f
         2915 (u)1077 6492 w
         2916 10 I f
         2917 (n)1197 6492 w
         2918 10 R f
         2919 (Undo last)1 386 1 2160 6492 t
         2920 10 I f
         2921 (n)2571 6492 w
         2922 10 R f
         2923 (\(default 1\) changes)2 764 1 2646 6492 t
         2924 10 CW f
         2925 ({ })1 180 1 1077 6612 t
         2926 10 R f
         2927 (Braces group commands)2 987 1 2160 6612 t
         2928 10 S f
         2929 (_ ________________________________________________________________________)1 3605 1 1077 6668 t
         2930 cleartomark
         2931 showpage
         2932 saveobj restore
         2933 %%EndPage: 5 5
         2934 %%Page: 6 6
         2935 /saveobj save def
         2936 mark
         2937 6 pagesetup
         2938 10 R f
         2939 (- 6 -)2 166 1 2797 480 t
         2940 ( multiple lines, and)3 788( may span)2 417( \(Dot)1 239(to the line containing the end of dot.)7 1491 4 720 840 t
         2941 10 CW f
         2942 (+)3687 840 w
         2943 10 R f
         2944 (selects the line after the end of)6 1261 1 3779 840 t
         2945 (dot, then)1 350 1 720 960 t
         2946 10 CW f
         2947 (-)1095 960 w
         2948 10 R f
         2949 (backs up one line.\))3 754 1 1180 960 t
         2950 ( addresses the text matched by the expression.)7 1855(The final type of address is a regular expression, which)9 2215 2 970 1116 t
         2951 (The expression is enclosed in slashes, as in)7 1720 1 720 1236 t
         2952 9 CW f
         2953 (/)1008 1406 w
         2954 9 I f
         2955 (expression)1062 1406 w
         2956 9 CW f
         2957 (/)1447 1406 w
         2958 10 R f
         2959 ( the same as those in the Unix program)8 1647(The expressions are)2 812 2 720 1586 t
         2960 10 CW f
         2961 (egrep)3215 1586 w
         2962 10 R f
         2963 (,)3515 1586 w
         2964 6 R f
         2965 (6,7)3540 1536 w
         2966 10 R f
         2967 (and include closures, alternations,)3 1389 1 3651 1586 t
         2968 ( find the)2 335( They)1 256(and so on.)2 410 3 720 1706 t
         2969 10 I f
         2970 (leftmost longest)1 632 1 1747 1706 t
         2971 10 R f
         2972 ( match after the)3 623(string that matches the expression, that is, the first)8 2012 2 2405 1706 t
         2973 ( the search is started, and if more than one match begins at the same spot, the longest such)18 3834(point where)1 486 2 720 1826 t
         2974 ( assume familiarity with the syntax for regular expressions in Unix programs.)11 3096(match. \(I)1 385 2 720 1946 t
         2975 6 R f
         2976 (9)4201 1896 w
         2977 10 R f
         2978 (\) For example,)2 585 1 4231 1946 t
         2979 9 CW f
         2980 (/x/)1008 2116 w
         2981 10 R f
         2982 (matches the next)2 671 1 720 2296 t
         2983 10 CW f
         2984 (x)1416 2296 w
         2985 10 R f
         2986 (character in the file,)3 797 1 1501 2296 t
         2987 9 CW f
         2988 (/xx*/)1008 2466 w
         2989 10 R f
         2990 (matches the next run of one or more)7 1444 1 720 2646 t
         2991 10 CW f
         2992 (x)2189 2646 w
         2993 10 R f
         2994 ('s, and)1 266 1 2249 2646 t
         2995 9 CW f
         2996 (/x|Peter/)1008 2816 w
         2997 10 R f
         2998 (matches the next)2 677 1 720 2996 t
         2999 10 CW f
         3000 (x)1425 2996 w
         3001 10 R f
         3002 (or)1513 2996 w
         3003 10 CW f
         3004 (Peter)1624 2996 w
         3005 10 R f
         3006 ( character' operator, a)3 885( compatibility with other Unix programs, the `any)7 2014(. For)1 217 3 1924 2996 t
         3007 (period, does not match a newline, so)6 1459 1 720 3116 t
         3008 9 CW f
         3009 (/.*/)1008 3286 w
         3010 10 R f
         3011 ( from dot to the end of the line, but excludes the newline and so will not match across the)19 3663(matches the text)2 657 2 720 3466 t
         3012 (line boundary.)1 577 1 720 3586 t
         3013 ( is forwards by default, so)5 1222( direction)1 416( The)1 241(Regular expressions are always relative addresses.)5 2191 4 970 3742 t
         3014 10 CW f
         3015 (/Peter/)720 3862 w
         3016 10 R f
         3017 (is really an abbreviation for)4 1103 1 1165 3862 t
         3018 10 CW f
         3019 (+/Peter/)2293 3862 w
         3020 10 R f
         3021 ( search can be reversed with a minus sign, so)9 1796(. The)1 230 2 2773 3862 t
         3022 9 CW f
         3023 (-/Peter/)1008 4032 w
         3024 10 R f
         3025 (finds the first)2 595 1 720 4212 t
         3026 10 CW f
         3027 (Peter)1371 4212 w
         3028 10 R f
         3029 ( with other address forms, so)5 1314( expressions may be used)4 1139( Regular)1 397(before dot.)1 463 4 1727 4212 t
         3030 10 CW f
         3031 (0+/Peter/)720 4332 w
         3032 10 R f
         3033 (finds the first)2 539 1 1288 4332 t
         3034 10 CW f
         3035 (Peter)1855 4332 w
         3036 10 R f
         3037 (in the file and)3 561 1 2183 4332 t
         3038 10 CW f
         3039 ($-/Peter/)2772 4332 w
         3040 10 R f
         3041 ( II summarizes)2 599( Table)1 280(finds the last.)2 542 3 3340 4332 t
         3042 10 CW f
         3043 (sam)4788 4332 w
         3044 10 R f
         3045 ('s)4968 4332 w
         3046 (addresses.)720 4452 w
         3047 ( who use Unix text editors such as)7 1389(The language discussed so far will not seem novel to people)10 2422 2 970 4608 t
         3048 10 CW f
         3049 (ed)4809 4608 w
         3050 10 R f
         3051 (or)4957 4608 w
         3052 10 CW f
         3053 (vi)720 4728 w
         3054 10 R f
         3055 (.)840 4728 w
         3056 6 R f
         3057 (9)865 4678 w
         3058 10 R f
         3059 ( operations these commands allow, with the exception of regular expres-)10 2897(Moreover, the kinds of editing)4 1222 2 921 4728 t
         3060 ( Indeed,)1 351( a mouse-based interface.)3 1028(sions and line numbers, are clearly more conveniently handled by)9 2659 3 720 4848 t
         3061 10 CW f
         3062 (sam)4788 4848 w
         3063 10 R f
         3064 ('s)4968 4848 w
         3065 ( For)1 194( usually made.)2 590(mouse language \(discussed at length below\) is the means by which simple changes are)13 3536 3 720 4968 t
         3066 (large or repetitive changes, however, a textual language outperforms a manual interface.)11 3523 1 720 5088 t
         3067 (Imagine that, instead of deleting just one occurrence of the string)10 2708 1 970 5244 t
         3068 10 CW f
         3069 (Peter)3714 5244 w
         3070 10 R f
         3071 ( wanted to eliminate)3 849(, we)1 177 2 4014 5244 t
         3072 (every)720 5364 w
         3073 10 CW f
         3074 (Peter)970 5364 w
         3075 10 R f
         3076 ( some text.)2 442( needed is an iterator that runs a command for each occurrence of)12 2656(. What's)1 367 3 1270 5364 t
         3077 10 CW f
         3078 (Sam)4788 5364 w
         3079 10 R f
         3080 ('s)4968 5364 w
         3081 (iterator is called)2 643 1 720 5484 t
         3082 10 CW f
         3083 (x)1388 5484 w
         3084 10 R f
         3085 (, for extract:)2 490 1 1448 5484 t
         3086 9 CW f
         3087 (x/)1008 5654 w
         3088 9 I f
         3089 (expression)1116 5654 w
         3090 9 CW f
         3091 (/)1501 5654 w
         3092 9 I f
         3093 (command)1609 5654 w
         3094 10 R f
         3095 ( text matched)2 554(finds all matches in dot of the specified expression, and for each such match, sets dot to the)17 3766 2 720 5834 t
         3096 ( to delete all the)4 638( So)1 156(and runs the command.)3 932 3 720 5954 t
         3097 10 CW f
         3098 (Peters:)2471 5954 w
         3099 9 CW f
         3100 (0,$ x/Peter/ d)2 756 1 1008 6124 t
         3101 10 R f
         3102 ( are to improve readability;)4 1163(\(Blanks in these examples)3 1100 2 720 6304 t
         3103 10 CW f
         3104 (sam)3027 6304 w
         3105 10 R f
         3106 ( This)1 247(neither requires nor interprets them.\))4 1542 2 3251 6304 t
         3107 (searches the entire file \()4 964 1 720 6424 t
         3108 10 CW f
         3109 (0,$)1684 6424 w
         3110 10 R f
         3111 ( of the string)3 514(\) for occurrences)2 680 2 1864 6424 t
         3112 10 CW f
         3113 (Peter)3085 6424 w
         3114 10 R f
         3115 (, and runs the)3 544 1 3385 6424 t
         3116 10 CW f
         3117 (d)3956 6424 w
         3118 10 R f
         3119 (command with dot set to)4 997 1 4043 6424 t
         3120 ( contrast, the comparable)3 1003( \(By)1 200(each such occurrence.)2 876 3 720 6544 t
         3121 10 CW f
         3122 (ed)2824 6544 w
         3123 10 R f
         3124 (command would delete all)3 1057 1 2969 6544 t
         3125 10 I f
         3126 (lines)4051 6544 w
         3127 10 R f
         3128 (containing)4265 6544 w
         3129 10 CW f
         3130 (Peter)4712 6544 w
         3131 10 R f
         3132 (;)5012 6544 w
         3133 10 CW f
         3134 (sam)720 6664 w
         3135 10 R f
         3136 (deletes only the)2 653 1 938 6664 t
         3137 10 CW f
         3138 (Peters)1629 6664 w
         3139 10 R f
         3140 ( address)1 337(.\) The)1 276 2 1989 6664 t
         3141 10 CW f
         3142 (0,$)2640 6664 w
         3143 10 R f
         3144 ( be abbreviated to just a)5 1011(is commonly used, and may)4 1171 2 2858 6664 t
         3145 ( another example,)2 712(comma. As)1 480 2 720 6784 t
         3146 9 CW f
         3147 (, x/Peter/ p)2 648 1 1008 6954 t
         3148 10 R f
         3149 (prints a list of)3 556 1 720 7134 t
         3150 10 CW f
         3151 (Peters,)1303 7134 w
         3152 10 R f
         3153 (one for each appearance in the file, with no intervening text \(not even newlines to)14 3290 1 1750 7134 t
         3154 (separate the instances\).)2 922 1 720 7254 t
         3155 cleartomark
         3156 showpage
         3157 saveobj restore
         3158 %%EndPage: 6 6
         3159 %%Page: 7 7
         3160 /saveobj save def
         3161 mark
         3162 7 pagesetup
         3163 10 R f
         3164 (- 7 -)2 166 1 2797 480 t
         3165 (Table II.)1 343 1 2402 900 t
         3166 10 CW f
         3167 (Sam)2770 900 w
         3168 10 R f
         3169 (addresses)2975 900 w
         3170 10 S f
         3171 (_ _________________________________________________________________)1 3264 1 1248 968 t
         3172 10 R f
         3173 (Simple addresses)1 691 1 1248 1136 t
         3174 10 S f
         3175 (_ _________________________________________________________________)1 3264 1 1248 1204 t
         3176 10 CW f
         3177 (#)1248 1348 w
         3178 10 I f
         3179 (n)1308 1348 w
         3180 10 R f
         3181 (The empty string after character)4 1279 1 2250 1348 t
         3182 10 I f
         3183 (n)3554 1348 w
         3184 (n)1248 1468 w
         3185 10 R f
         3186 (Line)2250 1468 w
         3187 10 I f
         3188 (n)2458 1468 w
         3189 10 R f
         3190 (.)2508 1468 w
         3191 10 CW f
         3192 (/)1248 1588 w
         3193 10 I f
         3194 (regexp)1308 1588 w
         3195 10 CW f
         3196 (/)1579 1588 w
         3197 10 R f
         3198 (The first following match of the regular expression)7 2038 1 2250 1588 t
         3199 10 CW f
         3200 (-/)1248 1708 w
         3201 10 I f
         3202 (regexp)1368 1708 w
         3203 10 CW f
         3204 (/)1639 1708 w
         3205 10 R f
         3206 (The first previous match of the regular expression)7 1993 1 2250 1708 t
         3207 10 CW f
         3208 ($)1248 1828 w
         3209 10 R f
         3210 (The null string at the end of the file)8 1415 1 2250 1828 t
         3211 10 CW f
         3212 (.)1248 1948 w
         3213 10 R f
         3214 (Dot)2250 1948 w
         3215 10 CW f
         3216 (')1248 2068 w
         3217 10 R f
         3218 (The address mark, set by)4 995 1 2250 2068 t
         3219 10 CW f
         3220 (k)3270 2068 w
         3221 10 R f
         3222 (command)3355 2068 w
         3223 10 CW f
         3224 (")1248 2188 w
         3225 10 I f
         3226 (regexp)1308 2188 w
         3227 10 CW f
         3228 (")1579 2188 w
         3229 10 R f
         3230 (Dot in the file whose menu line matches regexp)8 1908 1 2250 2188 t
         3231 10 S f
         3232 (_ _________________________________________________________________)1 3264 1 1248 2256 t
         3233 10 R f
         3234 (Compound addresses)1 852 1 1248 2424 t
         3235 10 S f
         3236 (_ _________________________________________________________________)1 3264 1 1248 2492 t
         3237 10 I f
         3238 (a1)1248 2636 w
         3239 10 CW f
         3240 (+)1348 2636 w
         3241 10 I f
         3242 (a2)1408 2636 w
         3243 10 R f
         3244 (The address)1 479 1 2250 2636 t
         3245 10 I f
         3246 (a2)2754 2636 w
         3247 10 R f
         3248 (evaluated starting at right of)4 1126 1 2879 2636 t
         3249 10 I f
         3250 (a1)4030 2636 w
         3251 (a1)1248 2756 w
         3252 10 CW f
         3253 (-)1348 2756 w
         3254 10 I f
         3255 (a2 a2)1 942 1 1408 2756 t
         3256 10 R f
         3257 (evaluated in the reverse direction starting at left of)8 2012 1 2375 2756 t
         3258 10 I f
         3259 (a1)4412 2756 w
         3260 (a1)1248 2876 w
         3261 10 CW f
         3262 (,)1348 2876 w
         3263 10 I f
         3264 (a2)1408 2876 w
         3265 10 R f
         3266 (From the left of)3 630 1 2250 2876 t
         3267 10 I f
         3268 (a1)2905 2876 w
         3269 10 R f
         3270 (to the right of)3 547 1 3030 2876 t
         3271 10 I f
         3272 (a2)3602 2876 w
         3273 10 R f
         3274 (\(default)3727 2876 w
         3275 10 CW f
         3276 (0,$)4062 2876 w
         3277 10 R f
         3278 (\))4242 2876 w
         3279 10 I f
         3280 (a1)1248 2996 w
         3281 10 CW f
         3282 (;)1348 2996 w
         3283 10 I f
         3284 (a2)1408 2996 w
         3285 10 R f
         3286 (Like)2250 2996 w
         3287 10 CW f
         3288 (,)2458 2996 w
         3289 10 R f
         3290 (but sets dot after evaluating)4 1104 1 2543 2996 t
         3291 10 I f
         3292 (a1)3672 2996 w
         3293 10 S f
         3294 (_ _________________________________________________________________)1 3264 1 1248 3064 t
         3295 10 R f
         3296 (The operators)1 569 1 1440 3232 t
         3297 10 CW f
         3298 (+)2052 3232 w
         3299 10 R f
         3300 (and)2155 3232 w
         3301 10 CW f
         3302 (-)2342 3232 w
         3303 10 R f
         3304 (are high precedence, while)3 1122 1 2445 3232 t
         3305 10 CW f
         3306 (,)3610 3232 w
         3307 10 R f
         3308 (and)3713 3232 w
         3309 10 CW f
         3310 (;)3901 3232 w
         3311 10 R f
         3312 (are low)1 315 1 4005 3232 t
         3313 ( both)1 208(precedence. In)1 610 2 1440 3352 t
         3314 10 CW f
         3315 (+)2288 3352 w
         3316 10 R f
         3317 (and)2378 3352 w
         3318 10 CW f
         3319 (-)2552 3352 w
         3320 10 R f
         3321 (forms,)2642 3352 w
         3322 10 I f
         3323 (a2)2930 3352 w
         3324 10 R f
         3325 (defaults to 1 and)3 678 1 3060 3352 t
         3326 10 I f
         3327 (a1)3768 3352 w
         3328 10 R f
         3329 (defaults to)1 423 1 3897 3352 t
         3330 ( both)1 203(dot. If)1 269 2 1440 3472 t
         3331 10 I f
         3332 (a1)1937 3472 w
         3333 10 R f
         3334 (and)2062 3472 w
         3335 10 I f
         3336 (a2)2231 3472 w
         3337 10 R f
         3338 (are present,)1 459 1 2356 3472 t
         3339 10 CW f
         3340 (+)2840 3472 w
         3341 10 R f
         3342 (may be elided.)2 585 1 2925 3472 t
         3343 10 S f
         3344 (_ _________________________________________________________________)1 3264 1 1248 3552 t
         3345 10 R f
         3346 (Of course, the text extracted by)5 1267 1 970 3852 t
         3347 10 CW f
         3348 (x)2265 3852 w
         3349 10 R f
         3350 (may be selected by a regular expression, which complicates decid-)9 2687 1 2353 3852 t
         3351 ( is resolved by generating the matches)6 1597( This)1 240( matches is chosen \320 matches may overlap.)7 1853(ing what set of)3 630 4 720 3972 t
         3352 ( starting)1 338(starting from the beginning of dot using the leftmost-longest rule, and searching for each match)14 3982 2 720 4092 t
         3353 ( adja-)1 228( expressions may also match null strings, but a null match)10 2363( Regular)1 371(from the end of the previous one.)6 1358 4 720 4212 t
         3354 ( example,)1 388( For)1 189(cent to a non-null match is never selected; at least one character must intervene.)13 3187 3 720 4332 t
         3355 9 CW f
         3356 (, c/AAA/)1 432 1 1008 4502 t
         3357 (x/B*/ c/-/)1 540 1 1008 4612 t
         3358 (, p)1 162 1 1008 4722 t
         3359 10 R f
         3360 (produces as output)2 749 1 720 4902 t
         3361 9 CW f
         3362 (-A-A-A-)1008 5072 w
         3363 10 R f
         3364 (because the pattern)2 764 1 720 5252 t
         3365 10 CW f
         3366 (B*)1509 5252 w
         3367 10 R f
         3368 (matches the null strings separating the)5 1529 1 1654 5252 t
         3369 10 CW f
         3370 (A)3208 5252 w
         3371 10 R f
         3372 ('s.)3268 5252 w
         3373 (The)970 5408 w
         3374 10 CW f
         3375 (x)1150 5408 w
         3376 10 R f
         3377 (command has a complement,)3 1165 1 1235 5408 t
         3378 10 CW f
         3379 (y)2425 5408 w
         3380 10 R f
         3381 ( syntax, that executes the command with dot set to)9 2024(, with similar)2 531 2 2485 5408 t
         3382 (the text)1 297 1 720 5528 t
         3383 10 I f
         3384 (between)1042 5528 w
         3385 10 R f
         3386 ( example,)1 388( For)1 189(the matches of the expression.)4 1206 3 1394 5528 t
         3387 9 CW f
         3388 (, c/AAA/)1 432 1 1008 5698 t
         3389 (y/A/ c/-/)1 486 1 1008 5808 t
         3390 (, p)1 162 1 1008 5918 t
         3391 10 R f
         3392 (produces the same result as the example above.)7 1890 1 720 6098 t
         3393 (The)970 6254 w
         3394 10 CW f
         3395 (x)1158 6254 w
         3396 10 R f
         3397 (and)1251 6254 w
         3398 10 CW f
         3399 (y)1428 6254 w
         3400 10 R f
         3401 (commands are looping constructs, and)4 1566 1 1521 6254 t
         3402 10 CW f
         3403 (sam)3120 6254 w
         3404 10 R f
         3405 (has a pair of conditional commands to go)7 1707 1 3333 6254 t
         3406 ( have similar syntax:)3 830( They)1 255(with them.)1 428 3 720 6374 t
         3407 9 CW f
         3408 (g/)1008 6544 w
         3409 9 I f
         3410 (expression)1116 6544 w
         3411 9 CW f
         3412 (/)1501 6544 w
         3413 9 I f
         3414 (command)1609 6544 w
         3415 10 R f
         3416 ( is different from)3 688( This)1 231(\(guard\) runs the command exactly once if dot contains a match of the expression.)13 3288 3 720 6724 t
         3417 10 CW f
         3418 (x)4955 6724 w
         3419 10 R f
         3420 (,)5015 6724 w
         3421 (which runs the command for)4 1148 1 720 6844 t
         3422 10 I f
         3423 (each)1893 6844 w
         3424 10 R f
         3425 (match:)2106 6844 w
         3426 10 CW f
         3427 (x)2403 6844 w
         3428 10 R f
         3429 (loops;)2488 6844 w
         3430 10 CW f
         3431 (g)2758 6844 w
         3432 10 R f
         3433 ( Thus,)1 275(merely tests, without changing the value of dot.)7 1901 2 2843 6844 t
         3434 9 CW f
         3435 (, x/Peter/ d)2 648 1 1008 7014 t
         3436 10 R f
         3437 (deletes all occurrences of)3 1010 1 720 7194 t
         3438 10 CW f
         3439 (Peter)1755 7194 w
         3440 10 R f
         3441 (, but)1 178 1 2055 7194 t
         3442 cleartomark
         3443 showpage
         3444 saveobj restore
         3445 %%EndPage: 7 7
         3446 %%Page: 8 8
         3447 /saveobj save def
         3448 mark
         3449 8 pagesetup
         3450 10 R f
         3451 (- 8 -)2 166 1 2797 480 t
         3452 9 CW f
         3453 (, g/Peter/ d)2 648 1 1008 830 t
         3454 10 R f
         3455 ( string\) if)2 384(deletes the whole file \(reduces it to a null)8 1687 2 720 1010 t
         3456 10 CW f
         3457 (Peter)2822 1010 w
         3458 10 R f
         3459 ( complemen-)1 530( The)1 211(occurs anywhere in the text.)4 1146 3 3153 1010 t
         3460 (tary conditional is)2 722 1 720 1130 t
         3461 10 CW f
         3462 (v)1467 1130 w
         3463 10 R f
         3464 (, which runs the command if there is)7 1459 1 1527 1130 t
         3465 10 I f
         3466 (no)3011 1130 w
         3467 10 R f
         3468 (match of the expression.)3 976 1 3136 1130 t
         3469 ( For)1 190(These control-structure-like commands may be composed to construct more involved operations.)10 3880 2 970 1286 t
         3470 (example, to print those lines of text that contain the string)10 2307 1 720 1406 t
         3471 10 CW f
         3472 (Peter)3052 1406 w
         3473 10 R f
         3474 (:)3352 1406 w
         3475 9 CW f
         3476 (, x/.*\\n/ g/Peter/ p)3 1080 1 1008 1576 t
         3477 10 R f
         3478 (The)720 1756 w
         3479 10 CW f
         3480 (x)908 1756 w
         3481 10 R f
         3482 ( file into lines, the)4 761(breaks the)1 415 2 1001 1756 t
         3483 10 CW f
         3484 (g)2211 1756 w
         3485 10 R f
         3486 (selects those lines containing)3 1190 1 2305 1756 t
         3487 10 CW f
         3488 (Peter)3529 1756 w
         3489 10 R f
         3490 (, and the)2 359 1 3829 1756 t
         3491 10 CW f
         3492 (p)4222 1756 w
         3493 10 R f
         3494 ( This)1 237(prints them.)1 487 2 4316 1756 t
         3495 (command gives an address for the)5 1416 1 720 1876 t
         3496 10 CW f
         3497 (x)2172 1876 w
         3498 10 R f
         3499 (command \(the whole file\), but because)5 1607 1 2268 1876 t
         3500 10 CW f
         3501 (g)3911 1876 w
         3502 10 R f
         3503 (does not have an explicit)4 1033 1 4007 1876 t
         3504 ( the value of dot produced by the)7 1359(address, it applies to)3 831 2 720 1996 t
         3505 10 CW f
         3506 (x)2941 1996 w
         3507 10 R f
         3508 ( commands in)2 573( All)1 184(command, that is, to each line.)5 1251 3 3032 1996 t
         3509 10 CW f
         3510 (sam)720 2116 w
         3511 10 R f
         3512 (except for the command to write a file to disc use dot for the default address.)15 3066 1 925 2116 t
         3513 (Composition may be continued indefinitely.)4 1764 1 970 2272 t
         3514 9 CW f
         3515 (, x/.*\\n/ g/Peter/ v/SaltPeter/ p)4 1782 1 1008 2442 t
         3516 10 R f
         3517 (prints those lines containing)3 1125 1 720 2622 t
         3518 10 CW f
         3519 (Peter)1870 2622 w
         3520 10 R f
         3521 (but)2195 2622 w
         3522 10 I f
         3523 (not)2348 2622 w
         3524 10 R f
         3525 (those containing)1 658 1 2501 2622 t
         3526 10 CW f
         3527 (SaltPeter)3184 2622 w
         3528 10 R f
         3529 (.)3724 2622 w
         3530 10 B f
         3531 (Structural Regular Expressions)2 1350 1 720 2862 t
         3532 10 R f
         3533 ( non-interactive ones such as)4 1177(Unlike other Unix text editors, including the)6 1804 2 720 3018 t
         3534 10 CW f
         3535 (sed)3732 3018 w
         3536 10 R f
         3537 (and)3943 3018 w
         3538 10 CW f
         3539 (awk)4118 3018 w
         3540 10 R f
         3541 (,)4298 3018 w
         3542 6 R f
         3543 (7)4323 2968 w
         3544 10 CW f
         3545 (sam)4384 3018 w
         3546 10 R f
         3547 (is good for)2 445 1 4595 3018 t
         3548 ( on-line phone book composed of records,)6 1737( example is an)3 604( An)1 182(manipulating files with multi-line `records.')4 1797 4 720 3138 t
         3549 (separated by blank lines, of the form)6 1461 1 720 3258 t
         3550 9 CW f
         3551 (Herbert Tic)1 594 1 1008 3428 t
         3552 (44 Turnip Ave., Endive, NJ)4 1404 1 1008 3538 t
         3553 (201-5555642)1008 3648 w
         3554 (Norbert Twinge)1 756 1 1008 3868 t
         3555 (16 Potato St., Cabbagetown, NJ)4 1620 1 1008 3978 t
         3556 (201-5553145)1008 4088 w
         3557 (...)1008 4308 w
         3558 10 R f
         3559 (The format may be encoded as a regular expression:)8 2083 1 720 4488 t
         3560 9 CW f
         3561 (\(.+\\n\)+)1008 4658 w
         3562 10 R f
         3563 ( command to print Mr. Tic's entire record is then)9 1958( The)1 205(that is, a sequence of one or more non-blank lines.)9 2010 3 720 4838 t
         3564 9 CW f
         3565 (, x/\(.+\\n\)+/ g/\303Herbert Tic$/ p)4 1674 1 1008 5008 t
         3566 10 R f
         3567 (and that to extract just the phone number is)8 1726 1 720 5188 t
         3568 9 CW f
         3569 (, x/\(.+\\n\)+/ g/\303Herbert Tic$/ x/\303[0-9]*-[0-9]*\\n/ p)5 2754 1 1008 5358 t
         3570 10 R f
         3571 ( Tic's record, extracts the phone number from)7 1862(The latter command breaks the file into records, chooses Mr.)9 2458 2 720 5538 t
         3572 (the record, and finally prints the number.)6 1636 1 720 5658 t
         3573 (A more involved problem is that of renaming a particular variable, say)11 2927 1 970 5814 t
         3574 10 CW f
         3575 (n)3932 5814 w
         3576 10 R f
         3577 (, to)1 138 1 3992 5814 t
         3578 10 CW f
         3579 (num)4165 5814 w
         3580 10 R f
         3581 (in a C program.)3 660 1 4380 5814 t
         3582 (The obvious first attempt,)3 1033 1 720 5934 t
         3583 9 CW f
         3584 (, x/n/ c/num/)2 702 1 1008 6104 t
         3585 10 R f
         3586 ( flawed: it changes not only the variable)7 1628(is badly)1 317 2 720 6284 t
         3587 10 CW f
         3588 (n)2694 6284 w
         3589 10 R f
         3590 (but any letter)2 535 1 2783 6284 t
         3591 10 CW f
         3592 (n)3347 6284 w
         3593 10 R f
         3594 ( need to extract all the)5 904( We)1 192(that appears.)1 508 3 3436 6284 t
         3595 (variables, and select those that match)5 1486 1 720 6404 t
         3596 10 CW f
         3597 (n)2231 6404 w
         3598 10 R f
         3599 (and only)1 347 1 2316 6404 t
         3600 10 CW f
         3601 (n)2688 6404 w
         3602 10 R f
         3603 (:)2748 6404 w
         3604 9 CW f
         3605 (, x/[A-Za-z_][A-Za-z_0-9]*/ g/n/ v/../ c/num/)4 2430 1 1008 6574 t
         3606 10 R f
         3607 (The pattern)1 458 1 720 6754 t
         3608 10 CW f
         3609 ([A-Za-z_][A-Za-z_0-9]*)1204 6754 w
         3610 10 R f
         3611 ( Next)1 246(matches C identifiers.)2 876 2 2550 6754 t
         3612 10 CW f
         3613 (g/n/)3699 6754 w
         3614 10 R f
         3615 (selects those containing an)3 1074 1 3966 6754 t
         3616 10 CW f
         3617 (n)720 6874 w
         3618 10 R f
         3619 (. Then)1 303 1 780 6874 t
         3620 10 CW f
         3621 (v/../)1131 6874 w
         3622 10 R f
         3623 (rejects those containing two \(or more\) characters, and finally)8 2614 1 1479 6874 t
         3624 10 CW f
         3625 (c/num/)4141 6874 w
         3626 10 R f
         3627 (changes the)1 491 1 4549 6874 t
         3628 (remainder \(identifiers)1 871 1 720 6994 t
         3629 10 CW f
         3630 (n)1620 6994 w
         3631 10 R f
         3632 (\) to)1 140 1 1680 6994 t
         3633 10 CW f
         3634 (num)1849 6994 w
         3635 10 R f
         3636 ( version clearly works much better, but there may still be problems.)11 2754(. This)1 257 2 2029 6994 t
         3637 (For example, in C character and string constants, the sequence)9 2510 1 720 7114 t
         3638 10 CW f
         3639 (\\n)3257 7114 w
         3640 10 R f
         3641 ( and)1 170(is interpreted as a newline character,)5 1466 2 3404 7114 t
         3642 (we don't want to change it to)6 1165 1 720 7234 t
         3643 10 CW f
         3644 (\\num.)1910 7234 w
         3645 10 R f
         3646 (This problem can be forestalled with a)6 1536 1 2235 7234 t
         3647 10 CW f
         3648 (y)3796 7234 w
         3649 10 R f
         3650 (command:)3881 7234 w
         3651 cleartomark
         3652 showpage
         3653 saveobj restore
         3654 %%EndPage: 8 8
         3655 %%Page: 9 9
         3656 /saveobj save def
         3657 mark
         3658 9 pagesetup
         3659 10 R f
         3660 (- 9 -)2 166 1 2797 480 t
         3661 9 CW f
         3662 (, y/\\\\n/ x/[A-Za-z_][A-Za-z_0-9]*/ g/n/ v/../ c/num/)5 2808 1 1008 830 t
         3663 10 R f
         3664 (\(the second)1 464 1 720 1010 t
         3665 10 CW f
         3666 (\\)1216 1010 w
         3667 10 R f
         3668 ( reject)1 254(is necessary because of lexical conventions in regular expressions\), or we could even)12 3478 2 1308 1010 t
         3669 (character constants and strings outright:)4 1592 1 720 1130 t
         3670 9 CW f
         3671 (, y/'[\303']*'/ y/"[\303"]*"/ x/[A-Za-z_][A-Za-z_0-9]*/ g/n/ v/../ c/num/)6 3618 1 1008 1300 t
         3672 10 R f
         3673 (The)720 1480 w
         3674 10 CW f
         3675 (y)907 1480 w
         3676 10 R f
         3677 ( only)1 211( The)1 213( strings.)1 325(commands in this version exclude from consideration all character constants and)10 3292 4 999 1480 t
         3678 (remaining problem is to deal with the possible occurrence of)9 2439 1 720 1600 t
         3679 10 CW f
         3680 (\\')3186 1600 w
         3681 10 R f
         3682 (or)3332 1600 w
         3683 10 CW f
         3684 (\\")3441 1600 w
         3685 10 R f
         3686 (within these sequences, but it's easy)5 1453 1 3587 1600 t
         3687 (to see how to resolve this difficulty.)6 1435 1 720 1720 t
         3688 ( of the command)3 683( simple version)2 615( A)1 124(The point of these composed commands is successive refinement.)8 2648 4 970 1876 t
         3689 ( can be undone;)3 644( \(Mistakes)1 449( it can be honed by adding a clause or two.)10 1755(is tried, and if it's not good enough,)7 1472 4 720 1996 t
         3690 ( result-)1 283( The)1 208( the mouse language makes it unnecessary to retype the command each time.\))12 3138( Also,)1 267(see below.)1 424 5 720 2116 t
         3691 (ing chains of commands are somewhat reminiscent of shell pipelines.)9 2783 1 720 2236 t
         3692 6 R f
         3693 (7)3503 2186 w
         3694 10 R f
         3695 (Unlike pipelines, though, which pass)4 1481 1 3559 2236 t
         3696 (along modified)1 612 1 720 2356 t
         3697 10 I f
         3698 (data)1361 2356 w
         3699 10 R f
         3700 (,)1539 2356 w
         3701 10 CW f
         3702 (sam)1593 2356 w
         3703 10 R f
         3704 (commands pass a)2 707 1 1802 2356 t
         3705 10 I f
         3706 (view)2538 2356 w
         3707 10 R f
         3708 ( text at each step of the command is the)9 1623( The)1 210(of the data.)2 456 3 2751 2356 t
         3709 ( by step until the correct piece is available to the final)11 2237(same, but which pieces are selected is refined step)8 2083 2 720 2476 t
         3710 (step of the command line, which ultimately makes the change.)9 2494 1 720 2596 t
         3711 (In other Unix programs, regular expressions are used only for selection, as in the)13 3315 1 970 2752 t
         3712 10 CW f
         3713 (sam g)1 272 1 4317 2752 t
         3714 10 R f
         3715 (command,)4621 2752 w
         3716 (never for extraction as in the)5 1159 1 720 2872 t
         3717 10 CW f
         3718 (x)1907 2872 w
         3719 10 R f
         3720 (or)1995 2872 w
         3721 10 CW f
         3722 (y)2106 2872 w
         3723 10 R f
         3724 ( patterns in)2 448( example,)1 391(command. For)1 611 3 2194 2872 t
         3725 10 CW f
         3726 (awk)3671 2872 w
         3727 6 R f
         3728 (7)3851 2822 w
         3729 10 R f
         3730 (are used to select lines to be)6 1132 1 3908 2872 t
         3731 ( The)1 207( but cannot be used to describe the format of the input text, or to handle newline-free text.)17 3619(operated on,)1 494 3 720 2992 t
         3732 ( the structure of a piece of text rather than its contents, as in the)14 2671(use of regular expressions to describe)5 1554 2 720 3112 t
         3733 10 CW f
         3734 (x)4980 3112 w
         3735 10 R f
         3736 (command, has been given a name:)5 1455 1 720 3232 t
         3737 10 I f
         3738 (structural regular expressions.)2 1268 1 2216 3232 t
         3739 10 R f
         3740 (When they are composed, as in the)6 1490 1 3550 3232 t
         3741 ( use is discussed at greater length elsewhere.)7 1779( Their)1 266(above example, they are pleasantly expressive.)5 1870 3 720 3352 t
         3742 6 R f
         3743 (10)4635 3302 w
         3744 10 B f
         3745 (Multiple files)1 564 1 720 3628 t
         3746 10 CW f
         3747 (Sam)720 3784 w
         3748 10 R f
         3749 (has a few other commands, mostly relating to input and output.)10 2526 1 925 3784 t
         3750 9 CW f
         3751 (e discfilename)1 756 1 1008 3954 t
         3752 10 R f
         3753 (replaces the contents and name of the current file with those of the named disc file;)15 3318 1 720 4134 t
         3754 9 CW f
         3755 (w discfilename)1 756 1 1008 4304 t
         3756 10 R f
         3757 (writes the contents to the named disc file; and)8 1831 1 720 4484 t
         3758 9 CW f
         3759 (r discfilename)1 756 1 1008 4654 t
         3760 10 R f
         3761 ( file's name if)3 590( these commands use the current)5 1350( All)1 188(replaces dot with the contents of the named disc file.)9 2192 4 720 4834 t
         3762 ( Finally,)1 359(none is specified.)2 696 2 720 4954 t
         3763 9 CW f
         3764 (f discfilename)1 756 1 1008 5124 t
         3765 10 R f
         3766 (changes the name associated with the file and displays the result:)10 2596 1 720 5304 t
         3767 9 CW f
         3768 ('-. discfilename)1 864 1 1008 5474 t
         3769 10 R f
         3770 (This output is called the file's)5 1226 1 720 5654 t
         3771 10 I f
         3772 (menu line,)1 423 1 1978 5654 t
         3773 10 R f
         3774 ( contents of the file's line in the button 3 menu)10 1951(because it is the)3 656 2 2433 5654 t
         3775 ( The)1 205( first three characters are a concise notation for the state of the file.)13 2677( The)1 206(\(described in the next section\).)4 1232 4 720 5774 t
         3776 ( sign indicates the number of windows open on the)9 2052( minus)1 271( The)1 206(apostrophe signifies that the file is modified.)6 1791 4 720 5894 t
         3777 (file \(see the next section\):)4 1071 1 720 6014 t
         3778 10 CW f
         3779 (-)1826 6014 w
         3780 10 R f
         3781 (means none,)1 509 1 1921 6014 t
         3782 10 CW f
         3783 (+)2465 6014 w
         3784 10 R f
         3785 (means one, and)2 636 1 2560 6014 t
         3786 10 CW f
         3787 (*)3230 6014 w
         3788 10 R f
         3789 ( the period)2 445( Finally,)1 368(means more than one.)3 903 3 3324 6014 t
         3790 ( are useful for controlling the)5 1192( characters)1 432( These)1 292(indicates that this is the current file.)6 1453 4 720 6134 t
         3791 10 CW f
         3792 (X)4119 6134 w
         3793 10 R f
         3794 (command, described)1 831 1 4209 6134 t
         3795 (shortly.)720 6254 w
         3796 10 CW f
         3797 (Sam)970 6410 w
         3798 10 R f
         3799 ( \(such as all the source for a program\) by invoking it with a)13 2384(may be started with a set of disc files)8 1481 2 1175 6410 t
         3800 (list of file names as arguments, and more may be added or deleted on demand.)14 3133 1 720 6530 t
         3801 9 CW f
         3802 (B discfile1 discfile2 ...)3 1350 1 1008 6700 t
         3803 10 R f
         3804 (adds the named files to)4 921 1 720 6880 t
         3805 10 CW f
         3806 (sam)1666 6880 w
         3807 10 R f
         3808 ('s list, and)2 414 1 1846 6880 t
         3809 9 CW f
         3810 (D discfile1 discfile2 ...)3 1350 1 1008 7050 t
         3811 10 R f
         3812 (removes them from)2 790 1 720 7230 t
         3813 10 CW f
         3814 (sam)1539 7230 w
         3815 10 R f
         3816 ( these commands have a)4 990( Both)1 250('s memory \(without effect on associated disc files\).)7 2081 3 1719 7230 t
         3817 cleartomark
         3818 showpage
         3819 saveobj restore
         3820 %%EndPage: 9 9
         3821 %%Page: 10 10
         3822 /saveobj save def
         3823 mark
         3824 10 pagesetup
         3825 10 R f
         3826 (- 10 -)2 216 1 2772 480 t
         3827 (syntax for using the shell)4 1005 1 720 840 t
         3828 6 R f
         3829 (7)1725 790 w
         3830 10 R f
         3831 (\(the Unix command interpreter\) to generate the lists:)7 2099 1 1780 840 t
         3832 9 CW f
         3833 (B <echo *.c)2 594 1 1008 1010 t
         3834 10 R f
         3835 (will add all C source files, and)6 1218 1 720 1190 t
         3836 9 CW f
         3837 (B <grep -l variable *.c)4 1242 1 1008 1360 t
         3838 10 R f
         3839 ( files referencing a particular variable \(the Unix command)8 2377(will add all C source)4 851 2 720 1540 t
         3840 10 CW f
         3841 (grep -l)1 420 1 3980 1540 t
         3842 10 R f
         3843 (lists all files in)3 608 1 4432 1540 t
         3844 ( Finally,)1 379( the specified regular expression\).)4 1429(its arguments that contain matches of)5 1595 3 720 1660 t
         3845 10 CW f
         3846 (D)4168 1660 w
         3847 10 R f
         3848 (without arguments)1 767 1 4273 1660 t
         3849 (deletes the current file.)3 914 1 720 1780 t
         3850 (There are two ways to change which file is current:)9 2047 1 970 1936 t
         3851 9 CW f
         3852 (b filename)1 540 1 1008 2106 t
         3853 10 R f
         3854 ( The)1 213(makes the named file current.)4 1215 2 720 2286 t
         3855 10 CW f
         3856 (B)2181 2286 w
         3857 10 R f
         3858 ( but also adds any new files to)7 1270(command does the same,)3 1028 2 2274 2286 t
         3859 10 CW f
         3860 (sam)4606 2286 w
         3861 10 R f
         3862 ('s list.)1 254 1 4786 2286 t
         3863 ( The)1 208( mouse actions, not by textual commands.\))6 1728(\(In practice, of course, the current file is usually chosen by)10 2384 3 720 2406 t
         3864 (other way is to use a form of address that refers to files:)12 2223 1 720 2526 t
         3865 9 CW f
         3866 (")1008 2696 w
         3867 9 I f
         3868 (expression)1062 2696 w
         3869 9 CW f
         3870 (")1447 2696 w
         3871 9 I f
         3872 (address)1555 2696 w
         3873 10 R f
         3874 ( matches the expression \(there must be exactly)7 1923(refers to the address evaluated in the file whose menu line)10 2397 2 720 2876 t
         3875 ( example,)1 388( For)1 189(one match\).)1 471 3 720 2996 t
         3876 9 CW f
         3877 ("peter.c" 3)1 594 1 1008 3166 t
         3878 10 R f
         3879 ( whose name matches)3 885(refers to the third line of the file)7 1299 2 720 3346 t
         3880 10 CW f
         3881 (peter.c)2933 3346 w
         3882 10 R f
         3883 ( is most useful in the move \()7 1164(. This)1 257 2 3353 3346 t
         3884 10 CW f
         3885 (m)4774 3346 w
         3886 10 R f
         3887 (\) and)1 206 1 4834 3346 t
         3888 (copy \()1 252 1 720 3466 t
         3889 10 CW f
         3890 (t)972 3466 w
         3891 10 R f
         3892 (\) commands:)1 519 1 1032 3466 t
         3893 9 CW f
         3894 (0,$ t "peter.c" 0)3 918 1 1008 3636 t
         3895 10 R f
         3896 (makes a copy of the current file at the beginning of)10 2040 1 720 3816 t
         3897 10 CW f
         3898 (peter.c)2785 3816 w
         3899 10 R f
         3900 (.)3205 3816 w
         3901 (The)970 3972 w
         3902 10 CW f
         3903 (X)1150 3972 w
         3904 10 R f
         3905 (command is a looping construct, like)5 1477 1 1235 3972 t
         3906 10 CW f
         3907 (x)2737 3972 w
         3908 10 R f
         3909 (, that refers to files instead of strings:)7 1487 1 2797 3972 t
         3910 9 CW f
         3911 (X/)1008 4142 w
         3912 9 I f
         3913 (expression)1116 4142 w
         3914 9 CW f
         3915 (/)1501 4142 w
         3916 9 I f
         3917 (command)1609 4142 w
         3918 10 R f
         3919 ( best example is)3 641( The)1 205(runs the command in all files whose menu lines match the expression.)11 2797 3 720 4322 t
         3920 9 CW f
         3921 (X/'/ w)1 324 1 1008 4492 t
         3922 10 R f
         3923 (which writes to disc all modified files.)6 1571 1 720 4672 t
         3924 10 CW f
         3925 (Y)2347 4672 w
         3926 10 R f
         3927 (is the complement of)3 859 1 2438 4672 t
         3928 10 CW f
         3929 (X)3328 4672 w
         3930 10 R f
         3931 ( command on all files whose)5 1181(: it runs the)3 471 2 3388 4672 t
         3932 (menu lines don't match the expression:)5 1568 1 720 4792 t
         3933 9 CW f
         3934 (Y/\\.c/ D)1 432 1 1008 4962 t
         3935 10 R f
         3936 (deletes all files that don't have)5 1223 1 720 5142 t
         3937 10 CW f
         3938 (.c)1968 5142 w
         3939 10 R f
         3940 (in their names, that is, it keeps all C source files and deletes the rest.)14 2727 1 2113 5142 t
         3941 (Braces allow commands to be grouped, so)6 1689 1 970 5298 t
         3942 9 CW f
         3943 ({)1008 5468 w
         3944 9 I f
         3945 (command1)1440 5578 w
         3946 (command2)1440 5688 w
         3947 9 CW f
         3948 (})1008 5798 w
         3949 10 R f
         3950 ( Thus,)1 275(is syntactically a single command that runs two commands.)8 2379 2 720 5978 t
         3951 9 CW f
         3952 (X/\\.c/ ,g/variable/ {)2 1134 1 1008 6148 t
         3953 (f)1440 6258 w
         3954 (, x/.*\\n/ g/variable/ p)3 1242 1 1440 6368 t
         3955 (})1008 6478 w
         3956 10 R f
         3957 (finds all occurrences of)3 936 1 720 6658 t
         3958 10 CW f
         3959 (variable)1682 6658 w
         3960 10 R f
         3961 ( out the file names and lines of each match.)9 1748(in C source files, and prints)5 1104 2 2188 6658 t
         3962 (The precise semantics of compound operations is discussed in the implementation sections below.)12 3921 1 720 6778 t
         3963 (Finally, the undo command,)3 1152 1 970 6934 t
         3964 10 CW f
         3965 (u)2156 6934 w
         3966 10 R f
         3967 ( files were affected.)3 815(, undoes the last command, no matter how many)8 2009 2 2216 6934 t
         3968 (Multiple undo operations move further back in time, so)8 2212 1 720 7054 t
         3969 cleartomark
         3970 showpage
         3971 saveobj restore
         3972 %%EndPage: 10 10
         3973 %%Page: 11 11
         3974 /saveobj save def
         3975 mark
         3976 11 pagesetup
         3977 10 R f
         3978 (- 11 -)2 216 1 2772 480 t
         3979 9 CW f
         3980 (u)1008 830 w
         3981 (u)1008 940 w
         3982 10 R f
         3983 (\(which may be abbreviated)3 1086 1 720 1120 t
         3984 10 CW f
         3985 (u2)1832 1120 w
         3986 10 R f
         3987 ( be undone, however, nor)4 1022( undo may not)3 578( An)1 173(\) undoes the last two commands.)5 1315 4 1952 1120 t
         3988 ( though, including for example)4 1243( else is undoable,)3 697( Everything)1 497(may any command that adds or deletes files.)7 1796 4 720 1240 t
         3989 10 CW f
         3990 (e)4980 1240 w
         3991 10 R f
         3992 (commands:)720 1360 w
         3993 9 CW f
         3994 (e filename)1 540 1 1008 1530 t
         3995 (u)1008 1640 w
         3996 10 R f
         3997 ( of the undo,)3 538( Because)1 393( file completely, including its name, dot, and modified bit.)9 2429(restores the state of the)4 960 4 720 1820 t
         3998 ( Only)1 259(potentially dangerous commands are not guarded by confirmations.)7 2759 2 720 1940 t
         3999 10 CW f
         4000 (D)3772 1940 w
         4001 10 R f
         4002 ( informa-)1 382(, which destroys the)3 826 2 3832 1940 t
         4003 ( a modified file, but a second)6 1210( will not delete)3 618( It)1 118(tion necessary to restore itself, is protected.)6 1772 4 720 2060 t
         4004 10 CW f
         4005 (D)4471 2060 w
         4006 10 R f
         4007 (of the same)2 476 1 4564 2060 t
         4008 ( The)1 205(file will succeed regardless.)3 1108 2 720 2180 t
         4009 10 CW f
         4010 (q)2058 2180 w
         4011 10 R f
         4012 (command, which exits)2 902 1 2143 2180 t
         4013 10 CW f
         4014 (sam)3070 2180 w
         4015 10 R f
         4016 (, is similarly guarded.)3 869 1 3250 2180 t
         4017 10 B f
         4018 (Mouse Interface)1 695 1 720 2420 t
         4019 10 CW f
         4020 (Sam)720 2576 w
         4021 10 R f
         4022 ( dif-)1 173( only)1 206( The)1 208(is most commonly run connected to a bitmap display and mouse for interactive editing.)13 3525 4 928 2576 t
         4023 (ference in the command language between regular, mouse-driven)7 2637 1 720 2696 t
         4024 10 CW f
         4025 (sam)3386 2696 w
         4026 10 R f
         4027 (and)3595 2696 w
         4028 10 CW f
         4029 (sam -d)1 360 1 3768 2696 t
         4030 10 R f
         4031 (is that if an address is)5 883 1 4157 2696 t
         4032 (provided without a command,)3 1217 1 720 2816 t
         4033 10 CW f
         4034 (sam -d)1 360 1 1968 2816 t
         4035 10 R f
         4036 (will print the text referenced by the address, but regular)9 2280 1 2360 2816 t
         4037 10 CW f
         4038 (sam)4672 2816 w
         4039 10 R f
         4040 (will)4884 2816 w
         4041 (highlight it on the screen \320 in fact, dot is always highlighted \(see Figure 2\).)14 3053 1 720 2936 t
         4042 cleartomark
         4043 saveobj restore
         4044 %ps_include: begin
         4045 save
         4046 /ed {exch def} def
         4047 {} /showpage ed
         4048 {} /copypage ed
         4049 {} /erasepage ed
         4050 {} /letter ed
         4051 currentdict /findfont known systemdict /findfont known and {
         4052         /findfont systemdict /findfont get def
         4053 } if
         4054 36 dict dup /PS-include-dict-dw ed begin
         4055 /context ed
         4056 count array astore /o-stack ed
         4057 %ps_include: variables begin
         4058 /llx 80 def
         4059 /lly 322 def
         4060 /urx 531.44 def
         4061 /ury 468.88 def
         4062 /w 0 def
         4063 /o 0 def
         4064 /s 0 def
         4065 /cx 2880 def
         4066 /cy -3910 def
         4067 /sx 4320 def
         4068 /sy 1468 def
         4069 /ax 0.5 def
         4070 /ay 0.5 def
         4071 /rot 0 def
         4072 %ps_include: variables end
         4073 {llx lly urx ury} /bbox ed
         4074 {newpath 2 index exch 2 index exch dup 6 index exch
         4075  moveto 3 {lineto} repeat closepath} /boxpath ed
         4076 {dup mul exch dup mul add sqrt} /len ed
         4077 {2 copy gt {exch} if pop} /min ed
         4078 {2 copy lt {exch} if pop} /max ed
         4079 {transform round exch round exch A itransform} /nice ed
         4080 {6 array} /n ed
         4081 n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed
         4082 urx llx sub 0 A dtransform len /Sx ed
         4083 0 ury lly sub A dtransform len /Sy ed
         4084 llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed
         4085 rot dup sin abs /S ed cos abs /C ed
         4086 Sx S mul Sy C mul add /H ed
         4087 Sx C mul Sy S mul add /W ed
         4088 sy H div /Scaley ed
         4089 sx W div /Scalex ed
         4090 s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if
         4091 sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed
         4092 sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed
         4093 urx llx sub 0 A dtransform exch atan rot exch sub /rot ed
         4094 n currentmatrix initgraphics setmatrix
         4095 cx cy translate
         4096 Scalex Scaley scale
         4097 rot rotate
         4098 Cx neg Cy neg translate
         4099 A concat
         4100 bbox boxpath clip newpath
         4101 w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if
         4102 end
         4103 gsave
         4104 %ps_include: inclusion begin
         4105 /picstr 79 string def
         4106 80 322 translate
         4107 451.44 146.88 scale
         4108 
         4109 627 204 1 [627 0 0 -204 0 204]
         4110 {currentfile picstr readhexstring pop} image
         4111 
         4112 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4113 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4114 ffffffffffffffffffffffffffffff
         4115 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4116 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4117 ffffffffffffffffffffffffffffff
         4118 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4119 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4120 ffffffffffffffffffffffffffffff
         4121 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4122 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4123 ffffffffffffffffffffffffffffff
         4124 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4125 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4126 ffffffffffffffffffffffffffffff
         4127 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4128 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4129 ffffffffffffffffffffffffffffff
         4130 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4131 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4132 ffffffffffffffffffffffffffffff
         4133 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4134 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4135 ffffffffffffffffffffffffffffff
         4136 fe00000000000000000000000000000000000000000000000000000000000000
         4137 0000000000000000000000000000000000000000000000000000000000000000
         4138 000000000000000000000000003fff
         4139 fe00000000000000000000000000000000000000000000000000000000000000
         4140 0000000000000000000000000000000000000000000000000000000000000000
         4141 000000000000000000000000003fff
         4142 fe00000000000000000000000000000000000000000000000000000000000000
         4143 0000000000000000000000000000000000000000000000000000000000000000
         4144 000000000000000000000000003fff
         4145 fe2001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4146 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4147 fffffffffffffffffffffffffe3fff
         4148 fe2889fffffffffffffffffff3fffffff3cffffffffffffffffffffdfe7f3bff
         4149 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4150 fffffffffffffffffffffffffe3fff
         4151 fe2221fffffffffffffffffff3fffefff3cffffffff07ffffffffff3fe7f3cff
         4152 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4153 fffffffffffffffffffffffffe3fff
         4154 fe2889fffffffffffffffffff3fffe7ff3fffffffff33fffffffffe7fe7f3e7f
         4155 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4156 fffffffffffffffffffffffffe3fff
         4157 fe2221fffffffffffffffffff27fff3f820fc1f0fff39c3c9f8723e7f0783e7e
         4158 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4159 fffffffffffffffffffffffffe3fff
         4160 fe2889fffffffffffffffffff13fff9f33cf9ce66033999c4f3311cfe6733f3e
         4161 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4162 fffffffffffffffffffffffffe3fff
         4163 fe2221fffffffffffffffffff39fffce73cf9fce603393cce67339cfce673f3e
         4164 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4165 fffffffffffffffffffffffffe3fff
         4166 fe2889fffffffffffffffffff3980fc673cf8fcffff393cce67339cfce673f3f
         4167 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4168 fffffffffffffffffffffffffe3fff
         4169 fe2ffdfffffffffffffffffff3980fce73cfc1cffff393cce60339cfce673f3f
         4170 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4171 fffffffffffffffffffffffffe3fff
         4172 fe2ffdfffffffffffffffffff39fff9e73cff8cfe03393cce67f39cfce673f3f
         4173 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4174 fffffffffffffffffffffffffe3fff
         4175 fe2ffdfffffffffffffffffff39fff3e73cffccfe03393cce67f39cfce673f3e
         4176 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4177 fffffffffffffffffffffffffe3fff
         4178 fe2ffdfffffffffffffffffff33ffe7f23cf9ce67ff3399ccf3339cfe4723f3e
         4179 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4180 fffffffffffffffffffffffffe3fff
         4181 fe2ffdfffffffffffffffffff07ffeff9201c1f0fff07c3c1f8739e7f2793e7e
         4182 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4183 fffffffffffffffffffffffffe3fff
         4184 fe2ffdfffffffffffffffffffffffffffffffffffffffffcffffffe7fffffe7f
         4185 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4186 fffffffffffffffffffffffffe3fff
         4187 fe2ffdfffffffffffffffffffffffffffffffffffffffffcfffffff3fffffcff
         4188 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4189 fffffffffffffffffffffffffe3fff
         4190 fe2ffdfffffffffffffffffffffffffffffffffffffffffcfffffffdfffffbfe
         4191 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4192 fffffffffffffffffffffffffe3fff
         4193 fe2ffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4194 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4195 fffffffffffffffffffffffffe3fff
         4196 fe2ffdffffffffffffffffffffffffff9fffe7ffff7ff9ffffffffffffe7fffd
         4197 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4198 fffffffffffffffffffffffffe3fff
         4199 fe2221ffffffffffffffffffffff7fff9fffe7fbfcf0f9ffff7fffffffe7fffe
         4200 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4201 fffffffffffffffffffffffffe3fff
         4202 fe2889fffffffffffffffffffffe7ffffffffff3f9e679ffff3fffffffe7ffff
         4203 3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4204 fffffffffffffffffffffffffe3fff
         4205 fe2221fffffffffffffffffff8380c641f2307c079e6793fff9fc3c1f0e47c3f
         4206 3f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4207 fffffffffffffffffffffffffe3fff
         4208 fe2889fffffffffffffffffff39e7e079f11e7f3f3e6f89fffcf999ce662399f
         4209 9f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4210 fffffffffffffffffffffffffe3fff
         4211 fe2221fffffffffffffffffff3fe7e679f39e7f3f3f1f9cfffe739fcce67339f
         4212 9f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4213 fffffffffffffffffffffffffe3fff
         4214 fe2889fffffffffffffffffff1fe7e7f9f39e7f3f3f499cc07e33ffccfe7339f
         4215 9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4216 fffffffffffffffffffffffffe3fff
         4217 fe2221fffffffffffffffffff83e7e7f9f39e7f3f3e4b9cc07e73fc0cfe7301f
         4218 9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4219 fffffffffffffffffffffffffe3fff
         4220 fe2889ffffffffffffffffffff1e7e7f9f39e7f3f3e679cfffcf3f9ccfe733ff
         4221 9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4222 fffffffffffffffffffffffffe3fff
         4223 fe2221ffffffffffffffffffff9e7e7f9f39e7f3f3e679cfff9f3f9ccfe733ff
         4224 9f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4225 fffffffffffffffffffffffffe3fff
         4226 fe2889fffffffffffffffffff39e7e7f9f39e7f3f3e2399fff3f9998e667399f
         4227 9f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4228 fffffffffffffffffffffffffe3fff
         4229 fe2221fffffffffffffffffff83f0c1c033900f879f1183fff7fc3c4f0e73c3f
         4230 3f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4231 fffffffffffffffffffffffffe3fff
         4232 fe2889fffffffffffffffffffffffffffffffffff9ffffffffffffffffffffff
         4233 3f9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4234 fffffffffffffffffffffffffe3fff
         4235 fe2221fffffffffffffffffffffffffffffffffffcfffffffffffffffffffffe
         4236 7f9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4237 fffffffffffffffffffffffffe3fff
         4238 fe2889ffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffd
         4239 ff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4240 fffffffffffffffffffffffffe3fff
         4241 fe2221ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4242 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4243 fffffffffffffffffffffffffe3fff
         4244 fe2889ffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffff
         4245 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4246 fffffffffffffffffffffffffe3fff
         4247 fe2221ffffffffffffffffffffffffbfffffffffe7ffffffffffffffffffffff
         4248 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4249 fffffffffffffffffffffffffe3fff
         4250 fe2889ffffffffffffffffffffffff3fffffffffe7ffffffffffffffffffffff
         4251 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4252 fffffffffffffffffffffffffe3fff
         4253 fe2221fffffffffffffffffff19e1c06731991ffe4fc7fffffffffffffffffff
         4254 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4255 fffffffffffffffffffffffffe3fff
         4256 fe2889fffffffffffffffffff81ccf3e738188ffe27c7fffffffffffffffffff
         4257 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4258 fffffffffffffffffffffffffe3fff
         4259 fe2221fffffffffffffffffff999cf3e73999cffe73c7fffffffffffffffffff
         4260 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4261 fffffffffffffffffffffffffe3fff
         4262 fe2889fffffffffffffffffff9f9cf3e739f9cffe73fffffffffffffffffffff
         4263 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4264 fffffffffffffffffffffffffe3fff
         4265 fe2221fffffffffffffffffff9f80f3e739f9cffe73fffffffffffffffffffff
         4266 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4267 fffffffffffffffffffffffffe3fff
         4268 fe2889fffffffffffffffffff9f9ff3e739f9cffe73fffffffffffffffffffff
         4269 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4270 fffffffffffffffffffffffffe3fff
         4271 fe2221fffffffffffffffffff9f9ff3e739f9cffe73c7fffffffffffffffffff
         4272 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4273 fffffffffffffffffffffffffe3fff
         4274 fe2889fffffffffffffffffff9fccf3e239f9cffe67c7fffffffffffffffffff
         4275 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4276 fffffffffffffffffffffffffe3fff
         4277 fe2221fffffffffffffffffff07e1f8713079cffe0fc7fffffffffffffffffff
         4278 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4279 fffffffffffffffffffffffffe3fff
         4280 fe2889fffffffffffffffffffffffffffffffffffffe7fffffffffffffffffff
         4281 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4282 fffffffffffffffffffffffffe3fff
         4283 fe2221fffffffffffffffffffffffffffffffffffffe7fffffffffffffffffff
         4284 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4285 fffffffffffffffffffffffffe3fff
         4286 fe2889fffffffffffffffffffffffffffffffffffffcffffffffffffffffffff
         4287 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4288 fffffffffffffffffffffffffe3fff
         4289 fe2221ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4290 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4291 fffffffffffffffffffffffffe3fff
         4292 fe2889f8ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4293 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4294 fffffffffffffffffffffffffe3fff
         4295 fe2221fc7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4296 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4297 fffffffffffffffffffffffffe3fff
         4298 fe2889fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4299 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4300 fffffffffffffffffffffffffe3fff
         4301 fe2221fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4302 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4303 fffffffffffffffffffffffffe3fff
         4304 fe2889fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4305 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4306 fffffffffffffffffffffffffe3fff
         4307 fe2221fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4308 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4309 fffffffffffffffffffffffffe3fff
         4310 fe2889fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4311 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4312 fffffffffffffffffffffffffe3fff
         4313 fe2221fe3fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4314 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4315 fffffffffffffffffffffffffe3fff
         4316 fe2889fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4317 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4318 fffffffffffffffffffffffffe3fff
         4319 fe2221fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4320 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4321 fffffffffffffffffffffffffe3fff
         4322 fe2889fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4323 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4324 fffffffffffffffffffffffffe3fff
         4325 fe2221fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4326 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4327 fffffffffffffffffffffffffe3fff
         4328 fe2889fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4329 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4330 fffffffffffffffffffffffffe3fff
         4331 fe2221fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4332 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4333 fffffffffffffffffffffffffe3fff
         4334 fe2889f8ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4335 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4336 fffffffffffffffffffffffffe3fff
         4337 fe2221ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4338 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4339 fffffffffffffffffffffffffe3fff
         4340 fe2889fffff83ffffffffee7fbffffffffffffffffffffffffffffffffffffff
         4341 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4342 fffffffffffffffffffffffffe3fff
         4343 fe2221f03fff3ffffffff9e7fcffffffffffffffffffffffffffffffffffffff
         4344 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4345 fffffffffffffffffffffffffe3fff
         4346 fe2889f39fff3ffffffff3e7fe7fffffffffffffffffffffffffffffffffffff
         4347 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4348 fffffffffffffffffffffffffe3fff
         4349 fe2221f39e1f3f0f83e1f3e4fe7fffffffffffffffffffffffffffffffffffff
         4350 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4351 fffffffffffffffffffffffffe3fff
         4352 fe2889f39ccf3e6739cce7e27f3fffffffffffffffffffffffffffffffffffff
         4353 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4354 fffffffffffffffffffffffffe3fff
         4355 fe2221f3b9cf3cf33f9ce7e73f3fffffffffffffffffffffffffffffffffffff
         4356 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4357 fffffffffffffffffffffffffe3fff
         4358 fe2889f079ff3cf31f9ce7e73f3fffffffffffffffffffffffffffffffffffff
         4359 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4360 fffffffffffffffffffffffffe3fff
         4361 fe2221f3b9ff3cf38380e7e73f3fffffffffffffffffffffffffffffffffffff
         4362 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4363 fffffffffffffffffffffffffe3fff
         4364 fe2889f399ff3cf3f19fe7e73f3fffffffffffffffffffffffffffffffffffff
         4365 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4366 fffffffffffffffffffffffffe3fff
         4367 fe2221f399ff3cf3f99fe7e73f3fffffffffffffffffffffffffffffffffffff
         4368 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4369 fffffffffffffffffffffffffe3fff
         4370 fe2889f39ccf3e6739cce7e67f3fffffffffffffffffffffffffffffffffffff
         4371 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4372 fffffffffffffffffffffffffe3fff
         4373 fe2221f03e18070f83e1f3e0fe7fffffffffffffffffffffffffffffffffffff
         4374 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4375 fffffffffffffffffffffffffe3fff
         4376 fe2889fffffffffffffff3fffe7fffffffffffffffffffffffffffffffffffff
         4377 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4378 fffffffffffffffffffffffffe3fff
         4379 fe2221fffffffffffffff9fffcffffffffffffffffffffffffffffffffffffff
         4380 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4381 fffffffffffffffffffffffffe3fff
         4382 fe2889fffffffffffffffefffbffffffffffffffffffffffffffffffffffffff
         4383 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4384 fffffffffffffffffffffffffe3fff
         4385 fe2221ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4386 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4387 fffffffffffffffffffffffffe3fff
         4388 fe2889ffffffffffffffffffffffffff9fffffffffffffffffc3e1fffffffff9
         4389 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4390 fffffffffffffffffffffffffe3fff
         4391 fe2221ffffffffffffffffffffffffff9ffff7fffffff81fff9fcffffffffff9
         4392 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4393 fffffffffffffffffffffffffe3fff
         4394 fe2889ffffffffffffffffffffffffffffffe7fffffff9cfff9fcffffffffff9
         4395 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4396 fffffffffffffffffffffffffe3fff
         4397 fe2221fffffffffffffffffff19e1f041f8380f0e33ff9cce60301e1c67ffef9
         4398 3f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4399 fffffffffffffffffffffffffe3fff
         4400 fe2889fffffffffffffffffff81cce679f39e7e6703ff9cce79fcfcce07ffab8
         4401 9f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4402 fffffffffffffffffffffffffe3fff
         4403 fe2221fffffffffffffffffff999cce79f3fe7ce733ff9dce79fcf9ce67ffc79
         4404 cf1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4405 fffffffffffffffffffffffffe3fff
         4406 fe2889fffffffffffffffffff9f9cce79f1fe7ce73fff83ce79fcf9ce7fff119
         4407 cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4408 fffffffffffffffffffffffffe3fff
         4409 fe2221fffffffffffffffffff9f80ce79f83e7c073fff9dce79fcf80e7fffc79
         4410 cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4411 fffffffffffffffffffffffffe3fff
         4412 fe2889fffffffffffffffffff9f9fce79ff1e7cff3fff9cce79fcf9fe7fffab9
         4413 cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4414 fffffffffffffffffffffffffe3fff
         4415 fe2221fffffffffffffffffff9f9fce79ff9e7cff3fff9cce79fcf9fe7fffef9
         4416 cf1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4417 fffffffffffffffffffffffffe3fff
         4418 fe2889fffffffffffffffffff9fcce479f39e7e673fff9cc479fcfcce7fffff9
         4419 9f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4420 fffffffffffffffffffffffffe3fff
         4421 fe2221fffffffffffffffffff07e1f240383f0f0e0fff81e260703e1c1fffff8
         4422 3f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4423 fffffffffffffffffffffffffe3fff
         4424 fe2889ffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffff
         4425 ff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4426 fffffffffffffffffffffffffe3fff
         4427 fe2221fffffffffffffffffffffffce7ffffffffffffffffffffffffffffffff
         4428 ff9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4429 fffffffffffffffffffffffffe3fff
         4430 fe2889fffffffffffffffffffffffe0fffffffffffffffffffffffffffffffff
         4431 ff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4432 fffffffffffffffffffffffffe3fff
         4433 fe2221ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4434 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4435 fffffffffffffffffffffffffe3fff
         4436 fe2889fe3fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4437 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4438 fffffffffffffffffffffffffe3fff
         4439 fe2221fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4440 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4441 fffffffffffffffffffffffffe3fff
         4442 fe2889fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4443 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4444 fffffffffffffffffffffffffe3fff
         4445 fe2221fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4446 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4447 fffffffffffffffffffffffffe3fff
         4448 fe2889fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4449 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4450 fffffffffffffffffffffffffe3fff
         4451 fe2221fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4452 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4453 fffffffffffffffffffffffffe3fff
         4454 fe2889fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4455 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4456 fffffffffffffffffffffffffe3fff
         4457 fe2221f8ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4458 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4459 fffffffffffffffffffffffffe3fff
         4460 fe2889fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4461 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4462 fffffffffffffffffffffffffe3fff
         4463 fe2221fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4464 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4465 fffffffffffffffffffffffffe3fff
         4466 fe2889fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4467 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4468 fffffffffffffffffffffffffe3fff
         4469 fe2221fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4470 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4471 fffffffffffffffffffffffffe3fff
         4472 fe2889fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4473 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4474 fffffffffffffffffffffffffe3fff
         4475 fe2221fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4476 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4477 fffffffffffffffffffffffffe3fff
         4478 fe2889fe3fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4479 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4480 fffffffffffffffffffffffffe3fff
         4481 fe2221ffffffffffffffffffc000000000000000000000000000000000000000
         4482 0000000000000000000000000000000000000000000000000000000000000000
         4483 000000000000000000000000003fff
         4484 fe2889ffffffffffffffffffc00007c000000001180000001860000010000000
         4485 0000000000000000000000000000000000000000000000000000000000000000
         4486 000000000000000000000000003fff
         4487 fe2221ffffffffffffffffffcf8000c00000000618000200186000000c000000
         4488 0000000000000000000000000000000000000000000000000000000000000000
         4489 000000000000000000000000003fff
         4490 fe2889ffffffffffffffffffccc000c00000000c180003001800000006000000
         4491 0000000000000000000000000000000000000000000000000000000000000000
         4492 000000000000000000000000003fff
         4493 fe2221ffffffffffffffffffcc61e0c0f07c1e0c1b000180fbe07c1e06070000
         4494 0000000000000000000000000000000000000000000000000000000000000000
         4495 000000000000000000000000003fff
         4496 fe2889ffffffffffffffffffcc6330c198c633181d8000c19860c63303070000
         4497 0000000000000000000000000000000000000000000000000000000000000000
         4498 000000000000000000000000003fff
         4499 fe2221ffffffffffffffffffcc6630c30cc0631818c000631860c06303070000
         4500 0000000000000000000000000000000000000000000000000000000000000000
         4501 000000000000000000000000003fff
         4502 fe2889ffffffffffffffffffcc6600c30ce0631818cfe0731860e06003000000
         4503 0000000000000000000000000000000000000000000000000000000000000000
         4504 000000000000000000000000003fff
         4505 fe2221ffffffffffffffffffcc6600c30c7c7f1818cfe06318607c6003000000
         4506 0000000000000000000000000000000000000000000000000000000000000000
         4507 000000000000000000000000003fff
         4508 fe2889ffffffffffffffffffcc6600c30c0e601818c000c318600e6003000000
         4509 0000000000000000000000000000000000000000000000000000000000000000
         4510 000000000000000000000000003fff
         4511 fe2221ffffffffffffffffffcc6600c30c06601818c001831860066003070000
         4512 0000000000000000000000000000000000000000000000000000000000000000
         4513 000000000000000000000000003fff
         4514 fe2889ffffffffffffffffffccc330c198c6331819800301b860c63303070000
         4515 0000000000000000000000000000000000000000000000000000000000000000
         4516 000000000000000000000000003fff
         4517 fe2221ffffffffffffffffffcf81e7f8f07c1e0c1f000200dbfc7c1e06070000
         4518 0000000000000000000000000000000000000000000000000000000000000000
         4519 000000000000000000000000003fff
         4520 fe2889ffffffffffffffffffc00000000000000c000000000000000006030000
         4521 0000000000000000000000000000000000000000000000000000000000000000
         4522 000000000000000000000000003fff
         4523 fe2221ffffffffffffffffffc00000000000000600000000000000000c030000
         4524 0000000000000000000000000000000000000000000000000000000000000000
         4525 000000000000000000000000003fff
         4526 fe2889ffffffffffffffffffc000000000000001000000000000000010060000
         4527 0000000000000000000000000000000000000000000000000000000000000000
         4528 000000000000000000000000003fff
         4529 fe2221c000000000000000000000000000000000000000000000000000000000
         4530 0000000000000000000000000000000000000000000000000000000000000000
         4531 000000000000000000000000003fff
         4532 fe2889c000000000000000000000000001f00000000040030000000000000c00
         4533 0100000000000000000000000000000000000000000000000000000000000000
         4534 000000000000000000000000003fff
         4535 fe2221c000000000000000000000800000300000000187830000400000000c00
         4536 00c0000000000000000000000000000000000000000000000000000000000000
         4537 000000000000000000000000003fff
         4538 fe2889c00000000000000000000180000030000000030cc30000600000000c00
         4539 0060000000000000000000000000000000000000000000000000000000000000
         4540 000000000000000000000000003fff
         4541 fe2221c0000000000000000007c7f39878303c1f07830cc36000301e1f078dc1
         4542 e060700000000000000000000000000000000000000000000000000000000000
         4543 000000000000000000000000003fff
         4544 fe2889c000000000000000000c6181f8cc3066318cc60c83b0001833318ccee3
         4545 3030700000000000000000000000000000000000000000000000000000000000
         4546 000000000000000000000000003fff
         4547 fe2221c000000000000000000c0181998c30c33018c6070318000c630198cc66
         4548 3030700000000000000000000000000000000000000000000000000000000000
         4549 000000000000000000000000003fff
         4550 fe2889c000000000000000000e0181818030c33818c605b319fc0e6001980c66
         4551 3030000000000000000000000000000000000000000000000000000000000000
         4552 000000000000000000000000003fff
         4553 fe2221c0000000000000000007c181818030c31f1fc60da319fc0c601f980c67
         4554 f030000000000000000000000000000000000000000000000000000000000000
         4555 000000000000000000000000003fff
         4556 fe2889c0000000000000000000e181818030c30398060cc31800186031980c66
         4557 0030000000000000000000000000000000000000000000000000000000000000
         4558 000000000000000000000000003fff
         4559 fe2221c00000000000000000006181818030c30198060cc31800306031980c66
         4560 0030700000000000000000000000000000000000000000000000000000000000
         4561 000000000000000000000000003fff
         4562 fe2889c000000000000000000c618180cc3066318cc60ee330006033338ccc63
         4563 3030700000000000000000000000000000000000000000000000000000000000
         4564 000000000000000000000000003fff
         4565 fe2221c0000000000000000007c0f3e079fe3c1f07830773e000401e1d878c61
         4566 e060700000000000000000000000000000000000000000000000000000000000
         4567 000000000000000000000000003fff
         4568 fe2889c000000000000000000000000000000000000300000000000000000000
         4569 0060300000000000000000000000000000000000000000000000000000000000
         4570 000000000000000000000000003fff
         4571 fe2221c000000000000000000000000000000000000180000000000000000000
         4572 00c0300000000000000000000000000000000000000000000000000000000000
         4573 000000000000000000000000003fff
         4574 fe2889c000000000000000000000000000000000000040000000000000000000
         4575 0100600000000000000000000000000000000000000000000000000000000000
         4576 000000000000000000000000003fff
         4577 fe2221c00000000000000000000000000000000000000000000000000000001f
         4578 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4579 fffffffffffffffffffffffffe3fff
         4580 fe2889c0000000000000000001e0000000040200000c0000000000203008001f
         4581 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4582 fffffffffffffffffffffffffe3fff
         4583 fe2221c000000000000000000300000000180c00000c0000000000183006001f
         4584 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4585 fffffffffffffffffffffffffe3fff
         4586 fe2889c000000000000000000300000000301800000c00000000000c3003001f
         4587 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4588 fffffffffffffffffffffffffe3fff
         4589 fe2221c000000000000000000fe730f078301831878dc3e39800100c3603039f
         4590 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4591 fffffffffffffffffffffffffe3fff
         4592 fe2889c000000000000000000303f198cc6030318ccee631f80054063b01839f
         4593 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4594 fffffffffffffffffffffffffe3fff
         4595 fe2221c00000000000000000030333198c60303198cc6031980038063181839f
         4596 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4597 fffffffffffffffffffffffffe3fff
         4598 fe2889c00000000000000000030303198c603031980c60318000ee063181801f
         4599 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4600 fffffffffffffffffffffffffe3fff
         4601 fe2221c00000000000000000030303f9fc603031980c63f1800038063181801f
         4602 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4603 fffffffffffffffffffffffffe3fff
         4604 fe2889c000000000000000000303030180603031980c6631800054063181801f
         4605 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4606 fffffffffffffffffffffffffe3fff
         4607 fe2221c000000000000000000303030180603031980c6631800010063181839f
         4608 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4609 fffffffffffffffffffffffffe3fff
         4610 fe2889c0000000000000000003030198cc60303b8ccc6671800000063301839f
         4611 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4612 fffffffffffffffffffffffffe3fff
         4613 fe2221c000000000000000000fc7c0f07830181d878c63b3e000000c3e03039f
         4614 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4615 fffffffffffffffffffffffffe3fff
         4616 fe2889c000000000000000000000000000301800000000000000000c0003019f
         4617 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4618 fffffffffffffffffffffffffe3fff
         4619 fe2221c000000000000000000000000000180c0000000000000000180006019f
         4620 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4621 fffffffffffffffffffffffffe3fff
         4622 fe2889c00000000000000000000000000004020000000000000000200008031f
         4623 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4624 fffffffffffffffffffffffffe3fff
         4625 fe2221ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4626 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4627 fffffffffffffffffffffffffe3fff
         4628 fe2889f8ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4629 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4630 fffffffffffffffffffffffffe3fff
         4631 fe2221fc7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4632 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4633 fffffffffffffffffffffffffe3fff
         4634 fe2889fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4635 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4636 fffffffffffffffffffffffffe3fff
         4637 fe2221fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4638 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4639 fffffffffffffffffffffffffe3fff
         4640 fe2889fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4641 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4642 fffffffffffffffffffffffffe3fff
         4643 fe2221fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4644 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4645 fffffffffffffffffffffffffe3fff
         4646 fe2889fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4647 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4648 fffffffffffffffffffffffffe3fff
         4649 fe2221fe3fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4650 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4651 fffffffffffffffffffffffffe3fff
         4652 fe2889fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4653 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4654 fffffffffffffffffffffffffe3fff
         4655 fe2221fcffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4656 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4657 fffffffffffffffffffffffffe3fff
         4658 fe2889fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4659 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4660 fffffffffffffffffffffffffe3fff
         4661 fe2221fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4662 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4663 fffffffffffffffffffffffffe3fff
         4664 fe2889fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4665 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4666 fffffffffffffffffffffffffe3fff
         4667 fe2221fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4668 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4669 fffffffffffffffffffffffffe3fff
         4670 fe2889f8ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4671 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4672 fffffffffffffffffffffffffe3fff
         4673 fe2221ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4674 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4675 fffffffffffffffffffffffffe3fff
         4676 fe2889ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4677 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4678 fffffffffffffffffffffffffe3fff
         4679 fe2221ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4680 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4681 fffffffffffffffffffffffffe3fff
         4682 fe2889ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4683 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4684 fffffffffffffffffffffffffe3fff
         4685 fe2221ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4686 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4687 fffffffffffffffffffffffffe3fff
         4688 fe2001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4689 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4690 fffffffffffffffffffffffffe3fff
         4691 fe00000000000000000000000000000000000000000000000000000000000000
         4692 0000000000000000000000000000000000000000000000000000000000000000
         4693 000000000000000000000000003fff
         4694 fe00000000000000000000000000000000000000000000000000000000000000
         4695 0000000000000000000000000000000000000000000000000000000000000000
         4696 000000000000000000000000003fff
         4697 fe00000000000000000000000000000000000000000000000000000000000000
         4698 0000000000000000000000000000000000000000000000000000000000000000
         4699 000000000000000000000000003fff
         4700 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4701 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4702 ffffffffffffffffffffffffffffff
         4703 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4704 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4705 ffffffffffffffffffffffffffffff
         4706 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4707 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4708 ffffffffffffffffffffffffffffff
         4709 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4710 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4711 ffffffffffffffffffffffffffffff
         4712 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4713 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4714 ffffffffffffffffffffffffffffff
         4715 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4716 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4717 ffffffffffffffffffffffffffffff
         4718 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4719 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4720 ffffffffffffffffffffffffffffff
         4721 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4722 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
         4723 ffffffffffffffffffffffffffffff
         4724 showpage
         4725 %ps_include: inclusion end
         4726 grestore
         4727 PS-include-dict-dw begin
         4728 o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice
         4729         initgraphics 0.1 setlinewidth boxpath stroke grestore} if
         4730 clear o-stack aload pop
         4731 context end restore
         4732 %ps_include: end
         4733 /saveobj save def
         4734 mark
         4735 8 I f
         4736 (Figure 2. A)2 370 1 720 4744 t
         4737 8 CW f
         4738 (sam)1112 4744 w
         4739 8 I f
         4740 ( bar down the left represents the file, with the bubble showing the fraction visible in the window.)17 3127( scroll)1 203(window. The)1 432 3 1278 4744 t
         4741 ( current text, which is highlighted, need not fit on a)10 1703( The)1 167( be manipulated by the mouse for convenient browsing.)8 1821(The scroll bar may)3 629 4 720 4844 t
         4742 ( it consists of one partial line, one complete line, and final partial line.)13 2252(line. Here)1 338 2 720 4944 t
         4743 10 R f
         4744 ( in all)2 236( any time, only one window)5 1131( At)1 153(Each file may have zero or more windows open on the display.)11 2550 4 970 5220 t
         4745 (of)720 5340 w
         4746 10 CW f
         4747 (sam)830 5340 w
         4748 10 R f
         4749 (is the)1 216 1 1037 5340 t
         4750 10 I f
         4751 (current window,)1 658 1 1280 5340 t
         4752 10 R f
         4753 ( may be the)3 466(that is, the window to which typing and mouse actions refer; this)11 2609 2 1965 5340 t
         4754 10 CW f
         4755 (sam)720 5460 w
         4756 10 R f
         4757 ( a file has multiple)4 752( When)1 290( file windows.)2 573(window \(that in which commands may be typed\) or one of the)11 2499 4 926 5460 t
         4758 ( current file is the last file)6 1074( The)1 213(windows, the image of the file in each window is always kept up to date.)14 3033 3 720 5580 t
         4759 (affected by a command, so if the)6 1401 1 720 5700 t
         4760 10 CW f
         4761 (sam)2162 5700 w
         4762 10 R f
         4763 ( the)1 164(window is current, the current window is not a window on)10 2493 2 2383 5700 t
         4764 ( window on a file has its own value of dot, and when switching between)14 3148( each)1 227( However,)1 460(current file.)1 485 4 720 5820 t
         4765 ( flipping between)2 711( Thus,)1 281( file, the file's value of dot is changed to that of the window.)13 2494(windows on a single)3 834 4 720 5940 t
         4766 (windows behaves in the obvious, convenient way.)6 2003 1 720 6060 t
         4767 ( 3 has a list of commands to)7 1154( Button)1 328( numbered left to right.)4 944(The mouse on the Blit has three buttons,)7 1644 4 970 6216 t
         4768 ( as printed by the)4 708(manipulate windows, followed by a list of `menu lines' exactly)9 2579 2 720 6336 t
         4769 10 CW f
         4770 (f)4037 6336 w
         4771 10 R f
         4772 (command, one per file)3 913 1 4127 6336 t
         4773 ( the list is long, the Blit menu software)8 1577( If)1 119( file name.)2 430( menu lines are sorted by)5 1011( These)1 290(\(not one per window\).)3 893 6 720 6456 t
         4774 ( the)1 153( Using)1 295( manageable by generating a scrolling menu instead of an unwieldy long list.)12 3143(will make it more)3 729 4 720 6576 t
         4775 ( makes that file the current file, and the most recently current window in)13 2967(menu to select a file from the list)7 1353 2 720 6696 t
         4776 ( if that file is already current, selecting it in the menu cycles through the)14 2960( But)1 201( the current window.)3 844(that file)1 315 4 720 6816 t
         4777 ( is no)2 239( there)1 234( If)1 126(windows on the file; this simple trick avoids a special menu to choose windows on a file.)16 3721 4 720 6936 t
         4778 (window open on the file,)4 996 1 720 7056 t
         4779 10 CW f
         4780 (sam)1741 7056 w
         4781 10 R f
         4782 (changes the mouse cursor to prompt the user to create one.)10 2342 1 1946 7056 t
         4783 ( commands)1 465(The commands on the button 3 menu are straightforward \(see Figure 3\), and are like the)15 3605 2 970 7212 t
         4784 cleartomark
         4785 showpage
         4786 saveobj restore
         4787 %%EndPage: 11 11
         4788 %%Page: 12 12
         4789 /saveobj save def
         4790 mark
         4791 12 pagesetup
         4792 10 R f
         4793 (- 12 -)2 216 1 2772 480 t
         4794 (to manipulate windows in)3 1048 1 720 840 t
         4795 10 CW f
         4796 (mux)1797 840 w
         4797 10 R f
         4798 (,)1977 840 w
         4799 6 R f
         4800 (8)2002 790 w
         4801 10 R f
         4802 (the Blit's window system.)3 1057 1 2061 840 t
         4803 10 CW f
         4804 (New)3172 840 w
         4805 10 R f
         4806 ( empty)1 278(makes a new file, and gives it one)7 1381 2 3381 840 t
         4807 (window, whose size is determined by a rectangle swept by the mouse.)11 2820 1 720 960 t
         4808 10 CW f
         4809 (Xerox)3592 960 w
         4810 10 R f
         4811 ( a window to be)4 650(prompts for)1 471 2 3919 960 t
         4812 ( multiple windows are created on one file.)7 1848(selected, and makes a clone of that window; this is how)10 2472 2 720 1080 t
         4813 10 CW f
         4814 (Reshape)720 1200 w
         4815 10 R f
         4816 ( and)1 172(changes the size of the indicated window,)6 1678 2 1167 1200 t
         4817 10 CW f
         4818 (close)3045 1200 w
         4819 10 R f
         4820 ( that is the last window open)6 1162( If)1 119(deletes it.)1 386 3 3373 1200 t
         4821 (on the file,)2 434 1 720 1320 t
         4822 10 CW f
         4823 (close)1180 1320 w
         4824 10 R f
         4825 (first does a)2 440 1 1506 1320 t
         4826 10 CW f
         4827 (D)1972 1320 w
         4828 10 R f
         4829 (command on the file.)3 852 1 2058 1320 t
         4830 10 CW f
         4831 (Write)2961 1320 w
         4832 10 R f
         4833 (is identical to a)3 611 1 3287 1320 t
         4834 10 CW f
         4835 (w)3924 1320 w
         4836 10 R f
         4837 (command on the file; it is)5 1030 1 4010 1320 t
         4838 ( Finally,)1 373(in the menu purely for convenience.)5 1511 2 720 1440 t
         4839 10 CW f
         4840 (\304\304sam\304\304)2643 1440 w
         4841 10 R f
         4842 ( the com-)2 407(is a menu item that appears between)6 1531 2 3102 1440 t
         4843 ( it makes the)3 544( Selecting)1 434(mands and the file names.)4 1088 3 720 1560 t
         4844 10 CW f
         4845 (sam)2822 1560 w
         4846 10 R f
         4847 (window the current window, causing subsequent)5 2002 1 3038 1560 t
         4848 (typing to be interpreted as commands.)5 1526 1 720 1680 t
         4849 cleartomark
         4850 saveobj restore
         4851 %ps_include: begin
         4852 save
         4853 /ed {exch def} def
         4854 {} /showpage ed
         4855 {} /copypage ed
         4856 {} /erasepage ed
         4857 {} /letter ed
         4858 currentdict /findfont known systemdict /findfont known and {
         4859         /findfont systemdict /findfont get def
         4860 } if
         4861 36 dict dup /PS-include-dict-dw ed begin
         4862 /context ed
         4863 count array astore /o-stack ed
         4864 %ps_include: variables begin
         4865 /llx 242 def
         4866 /lly 297 def
         4867 /urx 369.44 def
         4868 /ury 494.28 def
         4869 /w 0 def
         4870 /o 0 def
         4871 /s 0 def
         4872 /cx 2880 def
         4873 /cy -2906 def
         4874 /sx 4320 def
         4875 /sy 1972 def
         4876 /ax 0.5 def
         4877 /ay 0.5 def
         4878 /rot 0 def
         4879 %ps_include: variables end
         4880 {llx lly urx ury} /bbox ed
         4881 {newpath 2 index exch 2 index exch dup 6 index exch
         4882  moveto 3 {lineto} repeat closepath} /boxpath ed
         4883 {dup mul exch dup mul add sqrt} /len ed
         4884 {2 copy gt {exch} if pop} /min ed
         4885 {2 copy lt {exch} if pop} /max ed
         4886 {transform round exch round exch A itransform} /nice ed
         4887 {6 array} /n ed
         4888 n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed
         4889 urx llx sub 0 A dtransform len /Sx ed
         4890 0 ury lly sub A dtransform len /Sy ed
         4891 llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed
         4892 rot dup sin abs /S ed cos abs /C ed
         4893 Sx S mul Sy C mul add /H ed
         4894 Sx C mul Sy S mul add /W ed
         4895 sy H div /Scaley ed
         4896 sx W div /Scalex ed
         4897 s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if
         4898 sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed
         4899 sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed
         4900 urx llx sub 0 A dtransform exch atan rot exch sub /rot ed
         4901 n currentmatrix initgraphics setmatrix
         4902 cx cy translate
         4903 Scalex Scaley scale
         4904 rot rotate
         4905 Cx neg Cy neg translate
         4906 A concat
         4907 bbox boxpath clip newpath
         4908 w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if
         4909 end
         4910 gsave
         4911 %ps_include: inclusion begin
         4912 /picstr 23 string def
         4913 242 297 translate
         4914 127.44 197.28 scale
         4915 
         4916 177 274 1 [177 0 0 -274 0 274]
         4917 {currentfile picstr readhexstring pop} image
         4918 
         4919 ffffffffffffffffffffffffffffffffffffffffffffff
         4920 ffffffffffffffffffffffffffffffffffffffffffffff
         4921 ffffffffffffffffffffffffffffffffffffffffffffff
         4922 ffffffffffffffffffffffffffffffffffffffffffffff
         4923 ffffffffffffffffffffffffffffffffffffffffffffff
         4924 ffffffffffffffffffffffffffffffffffffffffffffff
         4925 ffffffffffffffffffffffffffffffffffffffffffffff
         4926 ffffffffffffffffffffffffffffffffffffffffffffff
         4927 ffc00000000000000000000000000000000000000fffff
         4928 ffc0000fffffffffffffffffffffffffffffffffefffff
         4929 ffc0000fffffffffffffffffffffffffffffffffefffff
         4930 ffc0000fffffffffffffffffffffffffffffffffefffff
         4931 ffc0000fffffffffffffffffffffffffffffffffefffff
         4932 ffc0000fffffffffffffffffffffffffffffffffefffff
         4933 ffc0000fffffffffffffe47c39cfffffffffffffefffff
         4934 ffc0000fffffffffffffe23999efffffffffffffefffff
         4935 ffc0000fffffffffffffe733992fffffffffffffefffff
         4936 ffc0000fffffffffffffe733992fffffffffffffefffff
         4937 ffc0000fffffffffffffe730192fffffffffffffefffff
         4938 ffc0000fffffffffffffe733fc9fffffffffffffefffff
         4939 ffc0000fffffffffffffe733fc9fffffffffffffefffff
         4940 ffc0000fffffffffffffe7399c9fffffffffffffefffff
         4941 ffc0000fffffffffffffe73c3c9fffffffffffffefffff
         4942 ffc0000fffffffffffffffffffffffffffffffffefffff
         4943 ffc0000fffffffffffffffffffffffffffffffffefffff
         4944 ffc0000fffffffffffffffffffffffffffffffffefffff
         4945 ffc0000fffffffffffffffffffffffffffffffffefffff
         4946 ffc0000fffffffffffffffffffffffffffffffffefffff
         4947 ffc0000fffffffffffffffffffffffffffffffffefffff
         4948 ffc0000fffffffffffffffffffffffffffffffffefffff
         4949 ffc0000fffffffffffce78719c3ce7ffffffffffefffff
         4950 ffc0000fffffffffffce7338199ce7ffffffffffefffff
         4951 ffc0000fffffffffffe6e73993ce6fffffffffffefffff
         4952 ffc0000fffffffffffe1e739f3ce1fffffffffffefffff
         4953 ffc0000ffffffffffffbe039f3cfbfffffffffffefffff
         4954 ffc0000ffffffffffff0e7f9f3cf0fffffffffffefffff
         4955 ffc0000fffffffffffece7f9f3cecfffffffffffefffff
         4956 ffc0000fffffffffffce7339f99ce7ffffffffffefffff
         4957 ffc0000fffffffffffce78707c3ce7ffffffffffefffff
         4958 ffc0000fffffffffffffffffffffffffffffffffefffff
         4959 ffc0000fffffffffffffffffffffffffffffffffefffff
         4960 ffc0000fffffffffffffffffffffffffffffffffefffff
         4961 ffc0000fffffffffffffffffffffffffffffffffefffff
         4962 ffc0000ffffffffffffffff3ffffffffffffffffefffff
         4963 ffc0000ffffffffffffffff3ffffffffffffffffefffff
         4964 ffc0000ffffffffffffffff3ffffffffffffffffefffff
         4965 ffc0000fffffffff8cf0f0723c1c9f87ffffffffefffff
         4966 ffc0000fffffffffc0e6673119cc4f33ffffffffefffff
         4967 ffc0000fffffffffccce67f39fcce673ffffffffefffff
         4968 ffc0000fffffffffcfce63f39fcce673ffffffffefffff
         4969 ffc0000fffffffffcfc070739c0ce603ffffffffefffff
         4970 ffc0000fffffffffcfcffe3399cce67fffffffffefffff
         4971 ffc0000fffffffffcfcfff3399cce67fffffffffefffff
         4972 ffc0000fffffffffcfe66733998ccf33ffffffffefffff
         4973 ffc0000fffffffff83f0f0739c4c1f87ffffffffefffff
         4974 ffc0000ffffffffffffffffffffcffffffffffffefffff
         4975 ffc0000ffffffffffffffffffffcffffffffffffefffff
         4976 ffc0000ffffffffffffffffffffcffffffffffffefffff
         4977 ffc0000fffffffffffffffffffffffffffffffffefffff
         4978 ffc0000fffffffffffffc1ffffffffffffffffffefffff
         4979 ffc0000ffffffffffffff9ffffffffffffffffffefffff
         4980 ffc0000ffffffffffffff9ffffffffffffffffffefffff
         4981 ffc0000ffffffffffff0f9f87c1f0fffffffffffefffff
         4982 ffc0000fffffffffffe679f339ce67ffffffffffefffff
         4983 ffc0000fffffffffffce79e799fce7ffffffffffefffff
         4984 ffc0000fffffffffffcff9e798fce7ffffffffffefffff
         4985 ffc0000fffffffffffcff9e79c1c07ffffffffffefffff
         4986 ffc0000fffffffffffcff9e79f8cffffffffffffefffff
         4987 ffc0000fffffffffffcff9e79fccffffffffffffefffff
         4988 ffc0000fffffffffffe679f339ce67ffffffffffefffff
         4989 ffc0000ffffffffffff0c0387c1f0fffffffffffefffff
         4990 ffc0000fffffffffffffffffffffffffffffffffefffff
         4991 ffc0000fffffffffffffffffffffffffffffffffefffff
         4992 ffc00008000000000000000000000000000000000fffff
         4993 ffc00008000000000000000000000000000000000fffff
         4994 ffc00008000000000000000300000000000000000fffff
         4995 ffc00008000000000000000300800000000000000fffff
         4996 ffc00008000000000000000001800000000000000fffff
         4997 ffc000080000000000319cdf07f0f000000000000fffff
         4998 ffc000080000000000308fc301819800000000000fffff
         4999 ffc000080000000000368cc30183180000ff80000fffff
         5000 ffc000080000000000368c030183180000fe00000fffff
         5001 ffc000080000000000368c030183f80000f800000fffff
         5002 ffc0000800000000001b0c030183000000fc00000fffff
         5003 ffc0000800000000001b0c030183000000fe00000fffff
         5004 ffc0000800000000001b0c030181980000df00000fffff
         5005 ffc0000800000000001b1f1fe0f0f00000cf80000fffff
         5006 ffc000080000000000000000000000000087c0000fffff
         5007 ffc000080000000000000000000000000083e0000fffff
         5008 ffc0000ffffffffffffffffffffffffffffe0fffefffff
         5009 ffc0000fffffffffffffffffffffffffffff07ffefffff
         5010 ffc0000fffffffffffffffffffffffffffff83ffefffff
         5011 ffc0000fffffffffffffffffffffffffffffc1ffefffff
         5012 ffc0000fffffffffffffffffffffffffffffe0ffefffff
         5013 ffc0000ffffffffffffff07832dffffffffff1ffefffff
         5014 ffc0000fffffffffeef76733900f77bbfffffbffefffff
         5015 ffc0000fffffffffc6e367ff924e371bffffffffefffff
         5016 ffc0000fffffffff80c063ff924c0603ffffffffefffff
         5017 ffc0000fffffffffb1d8f078124d8ec7ffffffffefffff
         5018 ffc0000fffffffffbbddfe33924ddeefffffffffefffff
         5019 ffc0000fffffffffffffff33924fffffffffffffefffff
         5020 ffc0000fffffffffffffe733124fffffffffffffefffff
         5021 ffc0000ffffffffffffff078924fffffffffffffefffff
         5022 ffc0000fffffffffffffffffffffffffffffffffefffff
         5023 ffc0000fffffffffffffffffffffffffffffffffefffff
         5024 ffc0000fffffffffffffffffffffffffffffffffefffff
         5025 ffc0000fffffffffffffffffffffffffffffffffefffff
         5026 ffc0000ffffffffffffff3f9ffffffffffffffffefffff
         5027 ffc0000ffffffffffffff3f9ffffffffffffffffefffff
         5028 ffc0000ffffffffffffff3f9ffffffffffffffffefffff
         5029 ffc0000ffff9fffffe0f83c18cf0f0783fff0fffefffff
         5030 ffc0000ffff9fffffce73399c0e667339ffe67ffefffff
         5031 ffc0000ffff9ffffffe67339ccce67f3fffce7ffefffff
         5032 ffc0000fffc03fffffe67339cfce63f1fffcffffefffff
         5033 ffc0000fffc03ffffe067339cfc070783ffcffffefffff
         5034 ffc0000ffff9fffffce67339cfcffe3f1ffcffffefffff
         5035 ffc0000ffff9fc7ffce67339cfcfff3f9e3cffffefffff
         5036 ffc0000ffff9fc7ffcc72391cfe667339e3e67ffefffff
         5037 ffc0000ffffffc7ffe2793c983f0f0783e3f0fffefffff
         5038 ffc0000fffffffffffffffffffffffffffffffffefffff
         5039 ffc0000fffffffffffffffffffffffffffffffffefffff
         5040 ffc0000fffffffffffffffffffffffffffffffffefffff
         5041 ffc0000fffffffffffffffffffffffffffffffffefffff
         5042 ffc0000ffffffffffffc1e0fffffffffffffffffefffff
         5043 ffc0000fffffffffffff9fcfffffffffffffffffefffff
         5044 ffc0000fffffffffffff9fcfffffffffffffffffefffff
         5045 ffc0000ffffffffffe0f9fcfc3f0fffc3fffffffefffff
         5046 ffc0000ffffffffffce79fcf99e67ff99fffffffefffff
         5047 ffc0000fffffffffffe79fcf3cce7ff39fffffffefffff
         5048 ffc0000fffe03fffffe79fcf3ccffff3ffffffffefffff
         5049 ffc0000fffe03ffffe079fcf3ccffff3ffffffffefffff
         5050 ffc0000ffffffffffce79fcf3ccffff3ffffffffefffff
         5051 ffc0000ffffffffffce79fcf3ccff8f3ffffffffefffff
         5052 ffdffffffffffffffcc79fcf99e678f99fffffffefffff
         5053 ffdffffffffffffffe240201c3f0f8fc3fffffffefffff
         5054 ffdfffffffffffffffffffffffffffffffffffffefffff
         5055 ffdfffffffffffffffffffffffffffffffffffffefffff
         5056 ffdfffffffffffffffffffffffffffffffffffffefffff
         5057 ffdfffffffffffffffffffffffffffffffffffffefffff
         5058 ffdffffffffffffffcffffe1f0ffffffffffffffefffff
         5059 ffdffffffffffffffcffffcfe7ffffffffffffffefffff
         5060 ffdffffffffffffffcffffcfe7ffffffffffffffefffff
         5061 ffdffffffffdfffffc9e730180f0e33ffe1fffffefffff
         5062 ffdffffffff57ffffc4e73cfe7e6703ffccfffffefffff
         5063 ffdffffffff8fffffce673cfe7ce733ff9cfffffefffff
         5064 ffdfffffffe23ffffce673cfe7ce73fff9ffffffefffff
         5065 ffdffffffff8fffffce673cfe7c073fff9ffffffefffff
         5066 ffdffffffff57ffffce673cfe7cff3fff9ffffffefffff
         5067 ffdffffffffdfffffce673cfe7cff3fc79ffffffefffff
         5068 ffdffffffffffffffcce23cfe7e673fc7ccfffffefffff
         5069 ffdffffffffffffffc1f130381f0e0fc7e1fffffefffff
         5070 ffdfffffffffffffffffffffffffffffffffffffefffff
         5071 ffdfffffffffffffffffffffffffffffffffffffefffff
         5072 ffdfffffffffffffffffffffffffffffffffffffefffff
         5073 ffdfffffffffffffffffffffffffffffffffffffefffff
         5074 ffdffffffffffffffffffff9ffffffffffffffffefffff
         5075 ffdffffffffffffffffffff9ffffffffffffffffefffff
         5076 ffdffffffffffffffffffff9ffffffffffffffffefffff
         5077 ffdfffffffffffffff0cb7c1fff0ffffffffffffefffff
         5078 ffdffffffffffffffe640399ffe67fffffffffffefffff
         5079 ffdffffffffffffffce49339ffce7fffffffffffefffff
         5080 ffdfffffffe03ffffcfc9339ffcfffffffffffffefffff
         5081 ffdfffffffe03ffffcfc9339ffcfffffffffffffefffff
         5082 ffdffffffffffffffcfc9339ffcfffffffffffffefffff
         5083 ffdffffffffffffffcfc9339e3cfffffffffffffefffff
         5084 ffdffffffffffffffe649391e3e67fffffffffffefffff
         5085 ffdfffffffffffffff0c93c9e3f0ffffffffffffefffff
         5086 ffdfffffffffffffffffffffffffffffffffffffefffff
         5087 ffdfffffffffffffffffffffffffffffffffffffefffff
         5088 ffdfffffffffffffffffffffffffffffffffffffefffff
         5089 ffdfffffffffffffffffffffffffffffffffffffefffff
         5090 ffdffffff1ffffffffe79fffffffffffffffffffefffff
         5091 ffdffffff1ffffffffe79fffffffffffffffffffefffff
         5092 ffdffffff1ffffffffe7ffffffffffffffffffffefffff
         5093 ffdffffff9f9ffffff041f83e1fff87fffffffffefffff
         5094 ffdffffff9f9fffffe679f39ccfff33fffffffffefffff
         5095 ffdffffff3f9fffffce79f3f9cffe73fffffffffefffff
         5096 ffdfffffffc03ffffce79f1f9fffe7ffffffffffefffff
         5097 ffdfffffffc03ffffce79f839fffe7ffffffffffefffff
         5098 ffdffffffff9fffffce79ff19fffe7ffffffffffefffff
         5099 ffdffffffff9fffffce79ff99ff1e7ffffffffffefffff
         5100 ffdffffffff9fffffe479f39ccf1f33fffffffffefffff
         5101 ffdfffffffffffffff240383e1f1f87fffffffffefffff
         5102 ffdfffffffffffffffffffffffffffffffffffffefffff
         5103 ffdfffffffffffffffffffffffffffffffffffffefffff
         5104 ffdfffffffffffffffffffffffffffffffffffffefffff
         5105 ffdfffffffffffffffffffffffffffffffffffffefffff
         5106 ffdfffffffffffffffffffffffffffffffffffffefffff
         5107 ffdfffffffffffffffffffffffffffffffffffffefffff
         5108 ffdfffffffffffffffffffffffffffffffffffffefffff
         5109 ffdfffffffffffffff0e3319c3c67ffc3fffffffefffff
         5110 ffdffffffffffffffe67038199e07ff99fffffffefffff
         5111 ffdffffffffffffffce733993ce67ff39fffffffefffff
         5112 ffdfffffffe03ffffce73f9f3ce7fff3ffffffffefffff
         5113 ffdfffffffe03ffffc073f9f3ce7fff3ffffffffefffff
         5114 ffdffffffffffffffcff3f9f3ce7fff3ffffffffefffff
         5115 ffdffffffffffffffcff3f9f3ce7f8f3ffffffffefffff
         5116 ffdffffffffffffffe673f9f99e7f8f99fffffffefffff
         5117 ffdfffffffffffffff0e0f07c3c1f8fc3fffffffefffff
         5118 ffdfffffffffffffffffffffffffffffffffffffefffff
         5119 ffdfffffffffffffffffffffffffffffffffffffefffff
         5120 ffdfffffffffffffffffffffffffffffffffffffefffff
         5121 ffdfffffffffffffffffffffffffffffffffffffefffff
         5122 ffdffffffffffffffffffffffffffffff9ffffffefffff
         5123 ffdffffffffffffffffffffffffffffff9ffffffefffff
         5124 ffdffffffffffffffffffffffffffffff9ffffffefffff
         5125 ffdfffffffffffffff0e3319c3c6707ff91fffffefffff
         5126 ffdffffffffffffffe67038199e0673ff88fffffefffff
         5127 ffdffffffffffffffce733993ce667fff9cfffffefffff
         5128 ffdfffffffe03ffffce73f9f3ce7e3fff9cfffffefffff
         5129 ffdfffffffe03ffffc073f9f3ce7f07ff9cfffffefffff
         5130 ffdffffffffffffffcff3f9f3ce7fe3ff9cfffffefffff
         5131 ffdffffffffffffffcff3f9f3ce7ff3c79cfffffefffff
         5132 ffdffffffffffffffe673f9f99e7e73c79cfffffefffff
         5133 ffdfffffffffffffff0e0f07c3c1f07c79cfffffefffff
         5134 ffdfffffffffffffffffffffffffffffffffffffefffff
         5135 ffdfffffffffffffffffffffffffffffffffffffefffff
         5136 ffdfffffffffffffffffffffffffffffffffffffefffff
         5137 ffdfffffffffffffffffffffffffffffffffffffefffff
         5138 ffdfffffffffffffff879e0fffffffffffffffffefffff
         5139 ffdfffffffffffffff3f9fcfffffffffffffffffefffff
         5140 ffdfffffffffffffff3fffcfffffffffffffffffefffff
         5141 ffdffffffffffffffc041fcfe1fff87fffffffffefffff
         5142 ffdfffffffffffffff3f9fcfccfff33fffffffffefffff
         5143 ffdfffffffffffffff3f9fcf9cffe73fffffffffefffff
         5144 ffdfffffffe03fffff3f9fcf9cffe7ffffffffffefffff
         5145 ffdfffffffe03fffff3f9fcf80ffe7ffffffffffefffff
         5146 ffdfffffffffffffff3f9fcf9fffe7ffffffffffefffff
         5147 ffdfffffffffffffff3f9fcf9ff1e7ffffffffffefffff
         5148 ffdfffffffffffffff3f9fcfccf1f33fffffffffefffff
         5149 ffdffffffffffffffc0c0201e1f1f87fffffffffefffff
         5150 ffdfffffffffffffffffffffffffffffffffffffefffff
         5151 ffdfffffffffffffffffffffffffffffffffffffefffff
         5152 ffdfffffffffffffffffffffffffffffffffffffefffff
         5153 ffdfffffffffffffffffffffffffffffffffffffefffff
         5154 ffdfffffffffffffffffffff0783ffffffffffffefffff
         5155 ffdfffffffffffffffffffffe7f3ffffffffffffefffff
         5156 ffdfffffffffffffffffffffe7f3ffffffffffffefffff
         5157 ffdfffffffffffffff078783e7f3f0fc3fff0fffefffff
         5158 ffdffffffffffffffe673339e7f3e6799ffe67ffefffff
         5159 ffdffffffffffffffce673f9e7f3cf339ffce7ffefffff
         5160 ffdfffffffe03ffffce67ff9e7f3cf33fffcffffefffff
         5161 ffdfffffffe03ffffce67f81e7f3cf33fffcffffefffff
         5162 ffdffffffffffffffce67f39e7f3cf33fffcffffefffff
         5163 ffdffffffffffffffce67f39e7f3cf33fe3cffffefffff
         5164 ffdffffffffffffffe473331e7f3e6799e3e67ffefffff
         5165 ffdfffffffffffffff278789008070fc3e3f0fffefffff
         5166 ffdfffffffffffffffe7ffffffffffffffffffffefffff
         5167 ffdffffffffffffffce7ffffffffffffffffffffefffff
         5168 ffdffffffffffffffe0fffffffffffffffffffffefffff
         5169 ffdfffffffffffffffffffffffffffffffffffffefffff
         5170 ffdfffffffffffffff3fffffffffffffffffffffefffff
         5171 ffdfffffffffffffff3fffffffffffffffffffffefffff
         5172 ffdfffffffffffffffffffffffffffffffffffffefffff
         5173 ffdffffffffffffff83f0fffe1ffffffffffffffefffff
         5174 ffdfffffffffffffff3e67ffccffffffffffffffefffff
         5175 ffdfffffffffffffff3cf3ff9cffffffffffffffefffff
         5176 ffdfffffffe03fffff3cf3ff9fffffffffffffffefffff
         5177 ffdfffffffe03fffff3cf3ff9fffffffffffffffefffff
         5178 ffdfffffffffffffff3cf3ff9fffffffffffffffefffff
         5179 ffdfffffffffffffff3cf3c79fffffffffffffffefffff
         5180 ffdfffffffffffffff3e67c7ccffffffffffffffefffff
         5181 ffdffffffffffffff8070fc7e1ffffffffffffffefffff
         5182 ffdfffffffffffffffffffffffffffffffffffffefffff
         5183 ffdfffffffffffffffffffffffffffffffffffffefffff
         5184 ffc00000000000000000000000000000000000000fffff
         5185 ffffffffffffffffffffffffffffffffffffffffffffff
         5186 ffffffffffffffffffffffffffffffffffffffffffffff
         5187 ffffffffffffffffffffffffffffffffffffffffffffff
         5188 ffffffffffffffffffffffffffffffffffffffffffffff
         5189 ffffffffffffffffffffffffffffffffffffffffffffff
         5190 ffffffffffffffffffffffffffffffffffffffffffffff
         5191 ffffffffffffffffffffffffffffffffffffffffffffff
         5192 ffffffffffffffffffffffffffffffffffffffffffffff
         5193 showpage
         5194 %ps_include: inclusion end
         5195 grestore
         5196 PS-include-dict-dw begin
         5197 o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice
         5198         initgraphics 0.1 setlinewidth boxpath stroke grestore} if
         5199 clear o-stack aload pop
         5200 context end restore
         5201 %ps_include: end
         5202 /saveobj save def
         5203 mark
         5204 8 I f
         5205 ( prevent its)2 361( black rectangle on the left is a scroll bar; the menu is limited to the length shown to)18 2744( The)1 163(Figure 3. The menu on button 3.)6 1052 4 720 3992 t
         5206 ( the)1 121( Above)1 243(becoming unwieldy.)1 642 3 720 4092 t
         5207 8 CW f
         5208 (\304\304sam\304\304)1750 4092 w
         5209 8 I f
         5210 ( a list of files, presented exactly as with the)9 1397(line is a list of commands; beneath it is)8 1280 2 2110 4092 t
         5211 8 CW f
         5212 (f)4810 4092 w
         5213 8 I f
         5214 (com-)4881 4092 w
         5215 (mand.)720 4192 w
         5216 10 R f
         5217 (When)970 4468 w
         5218 10 CW f
         5219 (sam)1241 4468 w
         5220 10 R f
         5221 (requests that a window be swept, in response to)8 1972 1 1454 4468 t
         5222 10 CW f
         5223 (new)3460 4468 w
         5224 10 R f
         5225 (,)3640 4468 w
         5226 10 CW f
         5227 (xerox)3699 4468 w
         5228 10 R f
         5229 (or)4033 4468 w
         5230 10 CW f
         5231 (reshape)4150 4468 w
         5232 10 R f
         5233 (, it changes)2 470 1 4570 4468 t
         5234 ( may be used to)4 631( this state, the mouse)4 844( In)1 135(the mouse cursor from the usual arrow to a box with a small arrow.)13 2710 4 720 4588 t
         5235 ( one corner and releasing it at the opposite corner.)9 2103(indicate an arbitrary rectangle by pressing button 3 at)8 2217 2 720 4708 t
         5236 ( button 3 may simply be clicked, whereupon)7 1860(More conveniently,)1 795 2 720 4828 t
         5237 10 CW f
         5238 (sam)3412 4828 w
         5239 10 R f
         5240 (creates the maximal rectangle that)4 1411 1 3629 4828 t
         5241 ( the)1 155(contains the cursor and abuts)4 1187 2 720 4948 t
         5242 10 CW f
         5243 (sam)2095 4948 w
         5244 10 R f
         5245 ( placing the)2 482(window. By)1 522 2 2308 4948 t
         5246 10 CW f
         5247 (sam)3345 4948 w
         5248 10 R f
         5249 (window in the middle of the screen,)6 1482 1 3558 4948 t
         5250 ( stacked fully-overlapping windows can be)5 1721(the user can define two regions \(one above, one below\) in which)11 2599 2 720 5068 t
         5251 ( simple user interface trick makes window creation notice-)8 2403( This)1 236(created with minimal fuss \(see Figure 1\).)6 1681 3 720 5188 t
         5252 (ably easier.)1 454 1 720 5308 t
         5253 (The cut-and-paste editor is essentially the same as that in Smalltalk-80.)10 2944 1 970 5464 t
         5254 6 R f
         5255 (11)3914 5414 w
         5256 10 R f
         5257 ( always)1 313(The text in dot is)4 718 2 4009 5464 t
         5258 ( after the)2 358( a character is typed it replaces dot, and sets dot to the null string)14 2630( When)1 291(highlighted on the screen.)3 1041 4 720 5584 t
         5259 ( button, moving)2 657( 1 is used for selection: pressing the)7 1492( Button)1 332( ordinary typing inserts text.)4 1166(character. Thus,)1 673 5 720 5704 t
         5260 ( to\) the text between the points where the button was)10 2248(the mouse, and lifting the button selects \(sets dot)8 2072 2 720 5824 t
         5261 ( a null string; this is called clicking.)7 1477( and releasing at the same point selects)7 1592( Pressing)1 395(pressed and released.)2 856 4 720 5944 t
         5262 (Clicking twice quickly, or)3 1077 1 720 6064 t
         5263 10 I f
         5264 (double clicking,)1 648 1 1833 6064 t
         5265 10 R f
         5266 (selects larger objects; for example, double clicking in a word)9 2524 1 2516 6064 t
         5267 ( clicking just inside an opening bracket selects the text contained in the brackets)13 3328(selects the word, double)3 992 2 720 6184 t
         5268 ( double-clicking)1 656( The)1 209( similarly for parentheses, quotes, and so on.)7 1809(\(handling nested brackets correctly\), and)4 1646 4 720 6304 t
         5269 ( If)1 127(rules reflect a bias toward programmers.)5 1667 2 720 6424 t
         5270 10 CW f
         5271 (sam)2550 6424 w
         5272 10 R f
         5273 ( more for word processing, double-clicks)5 1701(were intended)1 573 2 2766 6424 t
         5274 (would probably select linguistic structures such as sentences.)7 2441 1 720 6544 t
         5275 ( is the)2 245( This)1 231( outside the current window, it makes the indicated window current.)10 2748(If button 1 is pressed)4 846 4 970 6700 t
         5276 (easiest way to switch between windows and files.)7 1980 1 720 6820 t
         5277 ( mostly apply to the)4 835( These)1 298( of editing functions \(see Figure 4\).)6 1472(Pressing button 2 brings up a menu)6 1465 4 970 6976 t
         5278 (selected text:)1 537 1 720 7096 t
         5279 10 CW f
         5280 (cut)1295 7096 w
         5281 10 R f
         5282 ( remembers it in a hidden buffer called the)8 1792(deletes the selected text, and)4 1191 2 1513 7096 t
         5283 10 I f
         5284 (snarf buffer,)1 507 1 4533 7096 t
         5285 10 CW f
         5286 (paste)720 7216 w
         5287 10 R f
         5288 (replaces the selected text by the contents of the snarf buffer,)10 2426 1 1047 7216 t
         5289 10 CW f
         5290 (snarf)3501 7216 w
         5291 10 R f
         5292 (just copies the selected text to)5 1211 1 3829 7216 t
         5293 cleartomark
         5294 showpage
         5295 saveobj restore
         5296 %%EndPage: 12 12
         5297 %%Page: 13 13
         5298 /saveobj save def
         5299 mark
         5300 13 pagesetup
         5301 10 R f
         5302 (- 13 -)2 216 1 2772 480 t
         5303 (the snarf buffer,)2 667 1 720 840 t
         5304 10 CW f
         5305 (look)1426 840 w
         5306 10 R f
         5307 ( next literal occurrence of the selected text, and)8 1990(searches forward for the)3 1007 2 1705 840 t
         5308 10 CW f
         5309 (<mux>)4740 840 w
         5310 10 R f
         5311 (exchanges snarf buffers with the window system in which)8 2510 1 720 960 t
         5312 10 CW f
         5313 (sam)3280 960 w
         5314 10 R f
         5315 ( the last regular)3 693( Finally,)1 384(is running.)1 453 3 3510 960 t
         5316 ( occurrence of a match for the)6 1291(expression used appears as a menu entry to search forward for the next)12 3029 2 720 1080 t
         5317 (expression.)720 1200 w
         5318 cleartomark
         5319 saveobj restore
         5320 %ps_include: begin
         5321 save
         5322 /ed {exch def} def
         5323 {} /showpage ed
         5324 {} /copypage ed
         5325 {} /erasepage ed
         5326 {} /letter ed
         5327 currentdict /findfont known systemdict /findfont known and {
         5328         /findfont systemdict /findfont get def
         5329 } if
         5330 36 dict dup /PS-include-dict-dw ed begin
         5331 /context ed
         5332 count array astore /o-stack ed
         5333 %ps_include: variables begin
         5334 /llx 268 def
         5335 /lly 352 def
         5336 /urx 342.16 def
         5337 /ury 438.4 def
         5338 /w 0 def
         5339 /o 0 def
         5340 /s 0 def
         5341 /cx 2880 def
         5342 /cy -1872 def
         5343 /sx 4320 def
         5344 /sy 864 def
         5345 /ax 0.5 def
         5346 /ay 0.5 def
         5347 /rot 0 def
         5348 %ps_include: variables end
         5349 {llx lly urx ury} /bbox ed
         5350 {newpath 2 index exch 2 index exch dup 6 index exch
         5351  moveto 3 {lineto} repeat closepath} /boxpath ed
         5352 {dup mul exch dup mul add sqrt} /len ed
         5353 {2 copy gt {exch} if pop} /min ed
         5354 {2 copy lt {exch} if pop} /max ed
         5355 {transform round exch round exch A itransform} /nice ed
         5356 {6 array} /n ed
         5357 n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed
         5358 urx llx sub 0 A dtransform len /Sx ed
         5359 0 ury lly sub A dtransform len /Sy ed
         5360 llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed
         5361 rot dup sin abs /S ed cos abs /C ed
         5362 Sx S mul Sy C mul add /H ed
         5363 Sx C mul Sy S mul add /W ed
         5364 sy H div /Scaley ed
         5365 sx W div /Scalex ed
         5366 s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if
         5367 sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed
         5368 sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed
         5369 urx llx sub 0 A dtransform exch atan rot exch sub /rot ed
         5370 n currentmatrix initgraphics setmatrix
         5371 cx cy translate
         5372 Scalex Scaley scale
         5373 rot rotate
         5374 Cx neg Cy neg translate
         5375 A concat
         5376 bbox boxpath clip newpath
         5377 w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if
         5378 end
         5379 gsave
         5380 %ps_include: inclusion begin
         5381 /picstr 13 string def
         5382 268 352 translate
         5383  74.16  86.40 scale
         5384 
         5385 103 120 1 [103 0 0 -120 0 120]
         5386 {currentfile picstr readhexstring pop} image
         5387 
         5388 ffffffffffffffffffffffffff
         5389 ffffffffffffffffffffffffff
         5390 ffffffffffffffffffffffffff
         5391 ffffffffffffffffffffffffff
         5392 ffffffffffffffffffffffffff
         5393 f800000000000000000001ffff
         5394 fbfffffffffffffffffffdffff
         5395 fbfffffffffffffffffffdffff
         5396 fbfffffffffffffffffffdffff
         5397 fbfffffffffffdfffffffdffff
         5398 fbfffffffffff9fffffffdffff
         5399 fbffffffe1ce603ffffffdffff
         5400 fbffffffccce79fffffffdffff
         5401 fbffffff9cce79fffffffdffff
         5402 fbffffff9fce79fffffffdffff
         5403 fbffffff9fce79fffffffdffff
         5404 fbffffff9fce79fffffffdffff
         5405 fbffffff9fce79fffffffdffff
         5406 fbffffffccc479fffffffdffff
         5407 fbffffffe1e27c3ffffffdffff
         5408 fbfffffffffffffffffffdffff
         5409 fbfffffffffffffffffffdffff
         5410 fbfffffffffffffffffffdffff
         5411 fbfffffffffffffffffffdffff
         5412 fbfffffffffffffffffffdffff
         5413 fbfffffffffffdfffffffdffff
         5414 fbfffffffffff9fffffffdffff
         5415 fbffff27c1e0e03c3ffffdffff
         5416 fbffff139cce79f99ffffdffff
         5417 fbffff39fccff9f39ffffdffff
         5418 fbffff39fcc7f9f39ffffdffff
         5419 fbffff39c0e0f9f01ffffdffff
         5420 fbffff399cfc79f3fffffdffff
         5421 fbffff399cfe79f3fffffdffff
         5422 fbffff3398ce79f99ffffdffff
         5423 fbffff07c4e0fc3c3ffffdffff
         5424 fbffff3ffffffffffffffdffff
         5425 fbffff3ffffffffffffffdffff
         5426 fbffff3ffffffffffffffdffff
         5427 fbfffffffffffffffffffdffff
         5428 fbfffffffffffffe1ffffdffff
         5429 fbfffffffffffffcfffffdffff
         5430 fbfffffffffffffcfffffdffff
         5431 fbffff8391e0e3301ffffdffff
         5432 fbffff3988ce703cfffffdffff
         5433 fbffff3f9cfe733cfffffdffff
         5434 fbffff1f9cfe73fcfffffdffff
         5435 fbffff839ce073fcfffffdffff
         5436 fbfffff19cce73fcfffffdffff
         5437 fbfffff99cce73fcfffffdffff
         5438 fbffff399ccc73fcfffffdffff
         5439 fbffff839ce260f03ffffdffff
         5440 fbfffffffffffffffffffdffff
         5441 fbfffffffffffffffffffdffff
         5442 fbfffffffffffffffffffdffff
         5443 fbfffffffffffffffffffdffff
         5444 fbfffff07fffff3ffffffdffff
         5445 fbfffffe7fffff3ffffffdffff
         5446 fbfffffe7fffff3ffffffdffff
         5447 fbfffffe7e1f0f39fffffdffff
         5448 fbfffffe7cce673bfffffdffff
         5449 fbfffffe79e4f337fffffdffff
         5450 fbfffffe79e4f32ffffffdffff
         5451 fbfffffe79e4f30ffffffdffff
         5452 fbfffffe79e4f327fffffdffff
         5453 fbfffffe79e4f333fffffdffff
         5454 fbfffffe7cce6739fffffdffff
         5455 fbfffff00e1f0f39fffffdffff
         5456 fbfffffffffffffffffffdffff
         5457 fbfffffffffffffffffffdffff
         5458 fbfffffffffffffffffffdffff
         5459 fbfffffffffffffffffffdffff
         5460 fbfffffffffffffffffffdffff
         5461 fbfffffbfffffffbfffffdffff
         5462 fbfffff3fffffff9fffffdffff
         5463 fbffffe72dce673cfffffdffff
         5464 fbffffcf00ce673e7ffffdffff
         5465 fbffff9f24ce737f3ffffdffff
         5466 fbffff1f24ce70ff1ffffdffff
         5467 fbffff9f24ce7dff3ffffdffff
         5468 fbffffcf24ce787e7ffffdffff
         5469 fbffffe724ce767cfffffdffff
         5470 fbfffff324c46739fffffdffff
         5471 fbfffffb24e2673bfffffdffff
         5472 fbfffffffffffffffffffdffff
         5473 fbfffffffffffffffffffdffff
         5474 f800000000000000000001ffff
         5475 f800000000000000000001ffff
         5476 f800c04000030000200001ffff
         5477 f800c18000030000180001ffff
         5478 f8018300000180000c0001ffff
         5479 f801830000c180dc0c0c01ffff
         5480 f803060000c0c0ee060c01ffff
         5481 f803060000c0c0c6060c01ffff
         5482 f806060007f860c6067f81ffff
         5483 f806060007f860c6067f81ffff
         5484 f80c060000c030c6060c01ffff
         5485 f80c0601c0c030c6060c01ffff
         5486 f8180601c0c018c6060c01ffff
         5487 f8180301c00018c60c001e0fff
         5488 f830030000000c000c001e3fff
         5489 f830018000000c0018001effff
         5490 f80000400000000020001e7fff
         5491 ffffffffffffffffffffe03fff
         5492 ffffffffffffffffffffe41fff
         5493 ffffffffffffffffffffe60fff
         5494 ffffffffffffffffffffef07ff
         5495 ffffffffffffffffffffef83ff
         5496 ffffffffffffffffffffffc1ff
         5497 ffffffffffffffffffffffe0ff
         5498 fffffffffffffffffffffff07f
         5499 fffffffffffffffffffffff83f
         5500 fffffffffffffffffffffffc1f
         5501 fffffffffffffffffffffffe3f
         5502 ffffffffffffffffffffffff7f
         5503 ffffffffffffffffffffffffff
         5504 ffffffffffffffffffffffffff
         5505 ffffffffffffffffffffffffff
         5506 ffffffffffffffffffffffffff
         5507 ffffffffffffffffffffffffff
         5508 showpage
         5509 %ps_include: inclusion end
         5510 grestore
         5511 PS-include-dict-dw begin
         5512 o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice
         5513         initgraphics 0.1 setlinewidth boxpath stroke grestore} if
         5514 clear o-stack aload pop
         5515 context end restore
         5516 %ps_include: end
         5517 /saveobj save def
         5518 mark
         5519 8 I f
         5520 ( bottom entry tracks the most recently used regular expression, which may be literal text.)14 2834( The)1 160(Figure 4. The menu on button 2.)6 1034 3 720 2404 t
         5521 10 R f
         5522 ( mouse language is entirely due to the equal-)8 1794(The relationship between the command language and the)7 2276 2 970 2680 t
         5523 ( example, to make a set of changes)7 1419( For)1 193( button 1 on the mouse.)5 959(ity of dot and the selected text chosen with)8 1749 4 720 2800 t
         5524 ( be set by double clicking on the left brace that begins the subroutine, which sets)15 3278(in a C subroutine, dot can)5 1042 2 720 2920 t
         5525 ( address-free command then typed in the)6 1660( An)1 178(dot for the command language.)4 1269 3 720 3040 t
         5526 10 CW f
         5527 (sam)3858 3040 w
         5528 10 R f
         5529 (window will apply only)3 971 1 4069 3040 t
         5530 ( idea is to select what you want, and)8 1453( The)1 206( text between the opening and closing braces of the function.)10 2436(to the)1 225 4 720 3160 t
         5531 ( of)1 108( And)1 222( want to do with it, whether invoked by a menu selection or by a typed command.)16 3263(then say what you)3 727 4 720 3280 t
         5532 ( relationship)1 516( This)1 247( command completes.)2 912(course, the value of dot is highlighted on the display after the)11 2645 4 720 3400 t
         5533 ( to explain, but comfortable, even natural, in)7 1859(between mouse interface and command language is clumsy)7 2461 2 720 3520 t
         5534 (practice.)720 3640 w
         5535 10 B f
         5536 (The Implementation)1 875 1 720 3880 t
         5537 10 R f
         5538 (The next few sections describe how)5 1447 1 720 4036 t
         5539 10 CW f
         5540 (sam)2196 4036 w
         5541 10 R f
         5542 ( together, first the host part, then the inter-component com-)9 2411(is put)1 224 2 2405 4036 t
         5543 ( dis-)1 181( explaining how the command language is implemented, the)8 2462( After)1 267(munication, then the terminal part.)4 1410 4 720 4156 t
         5544 ( presen-)1 320( The)1 207(cussion follows \(roughly\) the path of a character from the temporary file on disc to the screen.)16 3793 3 720 4276 t
         5545 ( because that is how the program was designed and because the algo-)12 2844(tation centers on the data structures,)5 1476 2 720 4396 t
         5546 (rithms are easy to provide, given the right data structures.)9 2299 1 720 4516 t
         5547 10 B f
         5548 (Parsing and execution)2 945 1 720 4756 t
         5549 10 R f
         5550 ( recursive descent)2 754(The command language is interpreted by parsing each command with a table-driven)11 3566 2 720 4912 t
         5551 ( editors instead)2 617( Most)1 262( top-down executor.)2 813(parser, and when a complete command is assembled, invoking a)9 2628 4 720 5032 t
         5552 ( and unambiguous to)3 875( of a parser makes it easy)6 1080( Use)1 217(employ a simple character-at-a-time lexical scanner.)5 2148 4 720 5152 t
         5553 ( conventions such as back-)4 1102( escape)1 299( First,)1 268(detect when a command is complete, which has two advantages.)9 2651 4 720 5272 t
         5554 ( the command isn't finished, the parser keeps)7 1850( if)1 117( multiple-line commands are unnecessary;)4 1710(slashes to quote)2 643 4 720 5392 t
         5555 ( example, a multiple-line append driven by an)7 1836(reading. For)1 513 2 720 5512 t
         5556 10 CW f
         5557 (x)3094 5512 w
         5558 10 R f
         5559 (command is straightforward:)2 1154 1 3179 5512 t
         5560 9 CW f
         5561 (x/.*\\n/ g/Peter/ a)2 972 1 1008 5682 t
         5562 (one line about Peter)3 1080 1 1008 5792 t
         5563 (another line about Peter)3 1296 1 1008 5902 t
         5564 (.)1008 6012 w
         5565 10 R f
         5566 (Other Unix editors would require a backslash after all but the last line.)12 2809 1 720 6192 t
         5567 ( advantage is specific to the two-process structure of)8 2167(The other)1 393 2 970 6348 t
         5568 10 CW f
         5569 (sam)3564 6348 w
         5570 10 R f
         5571 ( host process must decide)4 1057(. The)1 239 2 3744 6348 t
         5572 ( easily resolved)2 631( problem is)2 462( This)1 234(when a command is completed so the command interpreter can be called.)11 2993 4 720 6468 t
         5573 (by having the lexical analyzer read the single stream of events from the terminal, directly executing all typ-)17 4320 1 720 6588 t
         5574 (ing and mouse commands, but passing to the parser characters typed to the)12 3071 1 720 6708 t
         5575 10 CW f
         5576 (sam)3823 6708 w
         5577 10 R f
         5578 ( This)1 234(command window.)1 772 2 4034 6708 t
         5579 ( complicated by the availability of cut-and-paste editing in the)9 2510(scheme is slightly)2 721 2 720 6828 t
         5580 10 CW f
         5581 (sam)3979 6828 w
         5582 10 R f
         5583 (window, but that dif-)3 853 1 4187 6828 t
         5584 (ficulty is resolved by applying the rules used in)8 1925 1 720 6948 t
         5585 10 CW f
         5586 (mux)2674 6948 w
         5587 10 R f
         5588 (: when a newline is typed to the)7 1296 1 2854 6948 t
         5589 10 CW f
         5590 (sam)4179 6948 w
         5591 10 R f
         5592 (window, all text)2 653 1 4387 6948 t
         5593 ( permits arbi-)2 554( This)1 236( newline is made available to the parser.)7 1658(between the newline and the previously typed)6 1872 4 720 7068 t
         5594 (trary editing to be done to a command before typing newline and thereby requesting execution.)14 3796 1 720 7188 t
         5595 cleartomark
         5596 showpage
         5597 saveobj restore
         5598 %%EndPage: 13 13
         5599 %%Page: 14 14
         5600 /saveobj save def
         5601 mark
         5602 14 pagesetup
         5603 10 R f
         5604 (- 14 -)2 216 1 2772 480 t
         5605 ( and commands is regular enough to be)7 1574(The parser is driven by a table because the syntax of addresses)11 2496 2 970 840 t
         5606 ( replacement text in a substitution, so the syn-)8 1859( are few special cases, such as the)7 1373( There)1 286(encoded compactly.)1 802 4 720 960 t
         5607 ( include whether the command allows)5 1542( These)1 293( can be encoded with a few flags.)7 1364(tax of almost all commands)4 1121 4 720 1080 t
         5608 (an address \(for example,)3 989 1 720 1200 t
         5609 10 CW f
         5610 (e)1737 1200 w
         5611 10 R f
         5612 ( in)1 105(does not\), whether it takes a regular expression \(as)8 2044 2 1825 1200 t
         5613 10 CW f
         5614 (x)4001 1200 w
         5615 10 R f
         5616 (and)4088 1200 w
         5617 10 CW f
         5618 (s)4259 1200 w
         5619 10 R f
         5620 (\), whether it takes)3 721 1 4319 1200 t
         5621 (replacement text \(as in)3 915 1 720 1320 t
         5622 10 CW f
         5623 (c)1663 1320 w
         5624 10 R f
         5625 (or)1751 1320 w
         5626 10 CW f
         5627 (i)1862 1320 w
         5628 10 R f
         5629 ( syntax of regular expres-)4 1035( internal)1 333( The)1 208(\), which may be multi-line, and so on.)7 1542 4 1922 1320 t
         5630 ( Regular)1 377( parser; a regular expression is a leaf of the command parse tree.)12 2699(sions is handled by a separate)5 1244 3 720 1440 t
         5631 (expressions are discussed fully in the next section.)7 2014 1 720 1560 t
         5632 ( a com-)2 315(The parser table also has information about defaults, so the interpreter is always called with)14 3755 2 970 1716 t
         5633 ( example, the parser fills in the implicit)7 1676( For)1 204(plete tree.)1 408 3 720 1836 t
         5634 10 CW f
         5635 (0)3048 1836 w
         5636 10 R f
         5637 (and)3148 1836 w
         5638 10 CW f
         5639 ($)3332 1836 w
         5640 10 R f
         5641 (in the abbreviated address)3 1084 1 3432 1836 t
         5642 10 CW f
         5643 (,)4556 1836 w
         5644 10 R f
         5645 (\(comma\),)4655 1836 w
         5646 (inserts a)1 345 1 720 1956 t
         5647 10 CW f
         5648 (+)1105 1956 w
         5649 10 R f
         5650 ( default)1 318(to the left of an unadorned regular expression in an address, and provides the usual)14 3517 2 1205 1956 t
         5651 (address)720 2076 w
         5652 10 CW f
         5653 (.)1044 2076 w
         5654 10 R f
         5655 (\(dot\) for commands that expect an address but are not given one.)11 2589 1 1129 2076 t
         5656 ( address is evaluated left-to-right)4 1358( The)1 216( complete command is parsed, the evaluation is easy.)8 2207(Once a)1 289 4 970 2232 t
         5657 ( the)1 156( like many of)3 560( Addresses,)1 495(starting from the value of dot, with a mostly ordinary expression evaluator.)11 3109 4 720 2352 t
         5658 (data structures in)2 682 1 720 2472 t
         5659 10 CW f
         5660 (sam)1427 2472 w
         5661 10 R f
         5662 (, are held in a C structure and passed around by value:)11 2162 1 1607 2472 t
         5663 9 CW f
         5664 ( Position in a file */)5 1188( /*)1 270( Posn;)1 918(typedef long)1 648 4 1008 2642 t
         5665 (typedef struct Range{)2 1134 1 1008 2752 t
         5666 ( p2;)1 216(Posn p1,)1 1026 2 1440 2862 t
         5667 (}Range;)1008 2972 w
         5668 (typedef struct Address{)2 1242 1 1008 3082 t
         5669 (Range r;)1 540 1 1440 3192 t
         5670 (File *f;)1 1026 1 1440 3302 t
         5671 (}Address;)1008 3412 w
         5672 10 R f
         5673 ( encoded as a substring \(character positions)6 1795(An address is)2 556 2 720 3592 t
         5674 10 CW f
         5675 (p1)3106 3592 w
         5676 10 R f
         5677 (to)3261 3592 w
         5678 10 CW f
         5679 (p2)3374 3592 w
         5680 10 R f
         5681 (\) in a file)3 393 1 3494 3592 t
         5682 10 CW f
         5683 (f)3922 3592 w
         5684 10 R f
         5685 ( data type)2 408(. \(The)1 273 2 3982 3592 t
         5686 10 CW f
         5687 (File)4698 3592 w
         5688 10 R f
         5689 (is)4973 3592 w
         5690 (described in detail below.\))3 1059 1 720 3712 t
         5691 ( interpreter is an)3 690(The address)1 491 2 970 3868 t
         5692 10 CW f
         5693 (Address)2189 3868 w
         5694 10 R f
         5695 (-valued function that traverses the parse tree describing an)8 2431 1 2609 3868 t
         5696 (address \(the parse tree for the address has type)8 1855 1 720 3988 t
         5697 10 CW f
         5698 (Addrtree)2600 3988 w
         5699 10 R f
         5700 (\):)3080 3988 w
         5701 cleartomark
         5702 showpage
         5703 saveobj restore
         5704 %%EndPage: 14 14
         5705 %%Page: 15 15
         5706 /saveobj save def
         5707 mark
         5708 15 pagesetup
         5709 10 R f
         5710 (- 15 -)2 216 1 2772 480 t
         5711 9 CW f
         5712 (Address)1008 830 w
         5713 (address\(ap, a, sign\))2 1080 1 1008 940 t
         5714 (Addrtree *ap;)1 702 1 1440 1050 t
         5715 (Address a;)1 540 1 1440 1160 t
         5716 (int sign;)1 486 1 1440 1270 t
         5717 ({)1008 1380 w
         5718 (Address a2;)1 594 1 1440 1490 t
         5719 (do)1440 1600 w
         5720 (switch\(ap->type\){)1872 1710 w
         5721 (case '.':)1 486 1 1872 1820 t
         5722 (a=a.f->dot;)2304 1930 w
         5723 (break;)2304 2040 w
         5724 (case '$':)1 486 1 1872 2150 t
         5725 (a.r.p1=a.r.p2=a.f->nbytes;)2304 2260 w
         5726 (break;)2304 2370 w
         5727 (case '"':)1 486 1 1872 2480 t
         5728 (a=matchfile\(a, ap->aregexp\)->dot;)1 1782 1 2304 2590 t
         5729 (break;)2304 2700 w
         5730 (case ',':)1 486 1 1872 2810 t
         5731 (a2=address\(ap->right, a, 0\);)2 1512 1 2304 2920 t
         5732 (a=address\(ap->left, a, 0\);)2 1404 1 2304 3030 t
         5733 (if\(a.f!=a2.f || a2.r.p2<a.r.p1\))2 1674 1 2304 3140 t
         5734 (error\(Eorder\);)2736 3250 w
         5735 (a.r.p2=a2.r.p2;)2304 3360 w
         5736 (return a;)1 486 1 2304 3470 t
         5737 (/* and so on */)4 810 1 1872 3580 t
         5738 (})1872 3690 w
         5739 (while\(\(ap=ap->right\)!=0\);)1440 3800 w
         5740 (return a;)1 486 1 1440 3910 t
         5741 (})1008 4020 w
         5742 10 R f
         5743 ( non-local)1 408(Throughout, errors are handled by a)5 1460 2 970 4236 t
         5744 10 CW f
         5745 (goto)2869 4236 w
         5746 10 R f
         5747 (\(a)3140 4236 w
         5748 10 CW f
         5749 (setjmp/longjmp)3248 4236 w
         5750 10 R f
         5751 (in C terminology\) hid-)3 921 1 4119 4236 t
         5752 ( routine called)2 587(den in a)2 334 2 720 4356 t
         5753 10 CW f
         5754 (error)1674 4356 w
         5755 10 R f
         5756 (that immediately aborts the execution, retracts any partially made changes)9 3033 1 2007 4356 t
         5757 ( argument to)2 513( The)1 209( level of the parser.)4 783(\(see the section below on `undoing'\), and returns to the top)10 2390 4 720 4476 t
         5758 10 CW f
         5759 (error)4644 4476 w
         5760 10 R f
         5761 (is)4973 4476 w
         5762 ( possibly helpful message such as `?addresses out of)8 2179(an enumeration type that is translated to a terse but)9 2141 2 720 4596 t
         5763 ( common messages are kept short; for example the message for a failed regular expression)14 3790(order.' Very)1 530 2 720 4716 t
         5764 (search is `?search.')2 760 1 720 4836 t
         5765 (Character addresses such as)3 1125 1 970 4992 t
         5766 10 CW f
         5767 (#3)2126 4992 w
         5768 10 R f
         5769 (are trivial to implement, as the)5 1251 1 2277 4992 t
         5770 10 CW f
         5771 (File)3559 4992 w
         5772 10 R f
         5773 (data structure is accessible by)4 1210 1 3830 4992 t
         5774 ( However,)1 447(character number.)1 726 2 720 5112 t
         5775 10 CW f
         5776 (sam)1925 5112 w
         5777 10 R f
         5778 ( of newlines \320 it is too expen-)7 1277(keeps no information about the position)5 1626 2 2137 5112 t
         5779 ( Except)1 330( are computed by reading the file, counting newlines.)8 2148(sive to track dynamically \320 so line addresses)7 1842 3 720 5232 t
         5780 ( access is fast enough to make the technique practical, and)10 2325(in very large files, this has proven acceptable: file)8 1995 2 720 5352 t
         5781 (lines are not central to the structure of the command language.)10 2492 1 720 5472 t
         5782 (The command interpreter, called)3 1308 1 970 5628 t
         5783 10 CW f
         5784 (cmdexec)2305 5628 w
         5785 10 R f
         5786 ( parse table includes a func-)5 1131( The)1 208( also straightforward.)2 857(, is)1 119 4 2725 5628 t
         5787 ( as arguments the calculated address)5 1484( function receives)2 725( That)1 241(tion to call to interpret a particular command.)7 1870 4 720 5748 t
         5788 ( command and the command tree \(of type)7 1729(for the)1 271 2 720 5868 t
         5789 10 CW f
         5790 (Cmdtree)2754 5868 w
         5791 10 R f
         5792 (\), which may contain information such as the)7 1866 1 3174 5868 t
         5793 ( for example, is the function for the)7 1414( Here,)1 268(subtree for compound commands.)3 1359 3 720 5988 t
         5794 10 CW f
         5795 (g)3786 5988 w
         5796 10 R f
         5797 (and)3871 5988 w
         5798 10 CW f
         5799 (v)4040 5988 w
         5800 10 R f
         5801 (commands:)4125 5988 w
         5802 cleartomark
         5803 showpage
         5804 saveobj restore
         5805 %%EndPage: 15 15
         5806 %%Page: 16 16
         5807 /saveobj save def
         5808 mark
         5809 16 pagesetup
         5810 10 R f
         5811 (- 16 -)2 216 1 2772 480 t
         5812 9 CW f
         5813 (int)1008 830 w
         5814 (g_cmd\(a, cp\))1 648 1 1008 940 t
         5815 (Address a;)1 540 1 1440 1050 t
         5816 (Cmdtree *cp;)1 648 1 1440 1160 t
         5817 ({)1008 1270 w
         5818 (compile\(cp->regexp\);)1440 1380 w
         5819 (if\(execute\(a.f, a.r.p1, a.r.p2\) != \(cp->cmdchar=='v'\)\){)4 2970 1 1440 1490 t
         5820 (a.f->dot=a;)1872 1600 w
         5821 (return cmdexec\(a, cp->subcmd\);)2 1620 1 1872 1710 t
         5822 (})1440 1820 w
         5823 ( indicate that execution is to continue */)7 2268( /*)1 324(return TRUE;)1 648 3 1440 1930 t
         5824 (})1008 2040 w
         5825 10 R f
         5826 (\()720 2220 w
         5827 10 CW f
         5828 (Compile)753 2220 w
         5829 10 R f
         5830 (and)1202 2220 w
         5831 10 CW f
         5832 (execute)1375 2220 w
         5833 10 R f
         5834 ( Because)1 387(are part of the regular expression code, described in the next section.\))11 2828 2 1825 2220 t
         5835 (the parser and the)3 706 1 720 2340 t
         5836 10 CW f
         5837 (File)1451 2340 w
         5838 10 R f
         5839 (data structure do most of the work, most commands are similarly brief.)11 2838 1 1716 2340 t
         5840 10 B f
         5841 (Regular expressions)1 858 1 720 2580 t
         5842 10 R f
         5843 (The regular expression code in)4 1266 1 720 2736 t
         5844 10 CW f
         5845 (sam)2020 2736 w
         5846 10 R f
         5847 ( than compiled on-the-fly, implementation of)5 1854(is an interpreted, rather)3 952 2 2234 2736 t
         5848 (Thompson's non-deterministic finite automaton algorithm.)4 2392 1 720 2856 t
         5849 6 R f
         5850 (12)3112 2806 w
         5851 10 R f
         5852 ( the expressions)2 656(The syntax and semantics of)4 1177 2 3207 2856 t
         5853 (are as in the Unix program)5 1092 1 720 2976 t
         5854 10 CW f
         5855 (egrep)1842 2976 w
         5856 10 R f
         5857 ( only)1 209( The)1 211( alternation, closures, character classes, and so on.)7 2045(, including)1 433 4 2142 2976 t
         5858 (changes in the notation are two additions:)6 1755 1 720 3096 t
         5859 10 CW f
         5860 (\\n)2515 3096 w
         5861 10 R f
         5862 ( and)1 183(is translated to, and matches, a newline character,)7 2083 2 2675 3096 t
         5863 10 CW f
         5864 (@)4980 3096 w
         5865 10 R f
         5866 ( In)1 140(matches any character.)2 924 2 720 3216 t
         5867 10 CW f
         5868 (egrep)1816 3216 w
         5869 10 R f
         5870 (, the character)2 575 1 2116 3216 t
         5871 10 CW f
         5872 (.)2723 3216 w
         5873 10 R f
         5874 (matches any character except newline, and in)6 1856 1 2816 3216 t
         5875 10 CW f
         5876 (sam)4705 3216 w
         5877 10 R f
         5878 (the)4918 3216 w
         5879 (same rule seemed safest, to prevent idioms like)7 2033 1 720 3336 t
         5880 10 CW f
         5881 (.*)2799 3336 w
         5882 10 R f
         5883 (from spanning newlines.)2 1027 1 2965 3336 t
         5884 10 CW f
         5885 (Egrep)4063 3336 w
         5886 10 R f
         5887 (expressions are)1 632 1 4408 3336 t
         5888 ( certainly it would make sense if all the special charac-)10 2209(arguably too complicated for an interactive editor \320)7 2111 2 720 3456 t
         5889 ( wouldn't have peculiar mean-)4 1223(ters were two-character sequences, so that most of the punctuation characters)10 3097 2 720 3576 t
         5890 ( regular expressions are necessary, and)5 1660(ings \320 but for an interesting command language, full)8 2313 2 720 3696 t
         5891 10 CW f
         5892 (egrep)4740 3696 w
         5893 10 R f
         5894 ( it seemed superfluous to define a new)7 1568( Also,)1 269( Unix programs.)2 662(defines the full regular expression syntax for)6 1821 4 720 3816 t
         5895 (syntax, since various Unix programs \()5 1520 1 720 3936 t
         5896 10 CW f
         5897 (ed)2240 3936 w
         5898 10 R f
         5899 (,)2360 3936 w
         5900 10 CW f
         5901 (egrep)2410 3936 w
         5902 10 R f
         5903 (and)2735 3936 w
         5904 10 CW f
         5905 (vi)2904 3936 w
         5906 10 R f
         5907 (\) define too many already.)4 1050 1 3024 3936 t
         5908 (The expressions are compiled by a routine,)6 1812 1 970 4092 t
         5909 10 CW f
         5910 (compile)2823 4092 w
         5911 10 R f
         5912 ( the description of the non-)5 1164(, that generates)2 633 2 3243 4092 t
         5913 ( second routine,)2 669( A)1 139(deterministic finite state machine.)3 1405 3 720 4212 t
         5914 10 CW f
         5915 (execute)2975 4212 w
         5916 10 R f
         5917 (, interprets the machine to generate the)6 1645 1 3395 4212 t
         5918 ( else-)1 238( algorithm is described)3 985( The)1 229(leftmost-longest match of the expression in a substring of the file.)10 2868 4 720 4332 t
         5919 (where.)720 4452 w
         5920 6 R f
         5921 (12,13)988 4402 w
         5922 10 CW f
         5923 (Execute)1152 4452 w
         5924 10 R f
         5925 ( sets a global variable, of type)6 1213(reports whether a match was found, and)6 1617 2 1601 4452 t
         5926 10 CW f
         5927 (Range)4459 4452 w
         5928 10 R f
         5929 (, to the)2 281 1 4759 4452 t
         5930 (substring matched.)1 755 1 720 4572 t
         5931 ( such as when searching backwards for an)7 1752(A trick is required to evaluate the expression in reverse,)9 2318 2 970 4728 t
         5932 ( example,)1 388(expression. For)1 641 2 720 4848 t
         5933 9 CW f
         5934 (-/P.*r/)1008 5018 w
         5935 10 R f
         5936 ( expression, however, is defined for a)6 1532( The)1 211( file for a match of the expression.)7 1411(looks backwards through the)3 1166 4 720 5198 t
         5937 ( solution is to construct a machine identical to the machine for a forward search except)15 3492( The)1 207(forward search.)1 621 3 720 5318 t
         5938 ( the concatenation operators \(the other operators are symmetric under direction reversal\),)11 3562(for a reversal of all)4 758 2 720 5438 t
         5939 (to exchange the meaning of the operators)6 1652 1 720 5558 t
         5940 10 CW f
         5941 (\303)2398 5558 w
         5942 10 R f
         5943 (and)2484 5558 w
         5944 10 CW f
         5945 ($)2654 5558 w
         5946 10 R f
         5947 (, and then to read the file backwards, looking for the usual)11 2326 1 2714 5558 t
         5948 (earliest longest match.)2 896 1 720 5678 t
         5949 10 CW f
         5950 (Execute)970 5834 w
         5951 10 R f
         5952 ( as)1 118( interpret looping constructs such)4 1368( To)1 170(generates only one match each time it is called.)8 1960 4 1424 5834 t
         5953 (the)720 5954 w
         5954 10 CW f
         5955 (x)874 5954 w
         5956 10 R f
         5957 (command,)966 5954 w
         5958 10 CW f
         5959 (sam)1417 5954 w
         5960 10 R f
         5961 (must therefore synchronize between calls of)5 1794 1 1629 5954 t
         5962 10 CW f
         5963 (execute)3455 5954 w
         5964 10 R f
         5965 ( null)1 187(to avoid problems with)3 946 2 3907 5954 t
         5966 ( example, even given the leftmost-longest rule, the expression)8 2522(matches. For)1 547 2 720 6074 t
         5967 10 CW f
         5968 (a*)3820 6074 w
         5969 10 R f
         5970 ( in the)2 264(matches three times)2 805 2 3971 6074 t
         5971 (string)720 6194 w
         5972 10 CW f
         5973 (ab)978 6194 w
         5974 10 R f
         5975 (\(the character)1 549 1 1128 6194 t
         5976 10 CW f
         5977 (a)1706 6194 w
         5978 10 R f
         5979 (, the null string between the)5 1130 1 1766 6194 t
         5980 10 CW f
         5981 (a)2925 6194 w
         5982 10 R f
         5983 (and)3014 6194 w
         5984 10 CW f
         5985 (b)3187 6194 w
         5986 10 R f
         5987 ( returning a)2 468( After)1 264(, and the final null string\).)5 1061 3 3247 6194 t
         5988 (match for the)2 532 1 720 6314 t
         5989 10 CW f
         5990 (a)1277 6314 w
         5991 10 R f
         5992 (,)1337 6314 w
         5993 10 CW f
         5994 (sam)1387 6314 w
         5995 10 R f
         5996 (must not match the null string before the)7 1624 1 1592 6314 t
         5997 10 CW f
         5998 (b)3241 6314 w
         5999 10 R f
         6000 ( algorithm starts)2 650(. The)1 230 2 3301 6314 t
         6001 10 CW f
         6002 (execute)4206 6314 w
         6003 10 R f
         6004 ( end)1 170(at the)1 219 2 4651 6314 t
         6005 ( match, and if the match it returns is null and abuts the previous match, rejects the match and)18 3742(of its previous)2 578 2 720 6434 t
         6006 (advances the initial position one character.)5 1702 1 720 6554 t
         6007 10 B f
         6008 (Memory allocation)1 807 1 720 6794 t
         6009 10 R f
         6010 (The C language has no memory allocation primitives, although a standard library routine,)12 3699 1 720 6950 t
         6011 10 CW f
         6012 (malloc)4454 6950 w
         6013 10 R f
         6014 (, pro-)1 226 1 4814 6950 t
         6015 ( however, it can be better to write a custom)9 1769( specific uses,)2 569( For)1 195(vides adequate service for simple programs.)5 1787 4 720 7070 t
         6016 ( rather, pair of allocators\) described here work in both the terminal and host)13 3190( allocator \(or)2 539(allocator. The)1 591 3 720 7190 t
         6017 (parts of)1 325 1 720 7310 t
         6018 10 CW f
         6019 (sam)1093 7310 w
         6020 10 R f
         6021 ( are designed for efficient manipulation of strings, which are allocated and freed)12 3464(. They)1 303 2 1273 7310 t
         6022 cleartomark
         6023 showpage
         6024 saveobj restore
         6025 %%EndPage: 16 16
         6026 %%Page: 17 17
         6027 /saveobj save def
         6028 mark
         6029 17 pagesetup
         6030 10 R f
         6031 (- 17 -)2 216 1 2772 480 t
         6032 ( \(very large strings are written to disc\).)7 1643(frequently and vary in length from essentially zero to 32 Kbytes)10 2677 2 720 840 t
         6033 (More important, strings may be large and change size often, so to minimize memory usage it is helpful to)18 4320 1 720 960 t
         6034 (reclaim and to coalesce the unused portions of strings when they are truncated.)12 3146 1 720 1080 t
         6035 (Objects to be allocated in)4 1023 1 970 1236 t
         6036 10 CW f
         6037 (sam)2020 1236 w
         6038 10 R f
         6039 ( the first is C)4 529(are of two flavors:)3 740 2 2227 1236 t
         6040 10 CW f
         6041 (structs)3524 1236 w
         6042 10 R f
         6043 (, which are small and often)5 1096 1 3944 1236 t
         6044 ( integers whose base)3 868(addressed by pointer variables; the second is variable-sized arrays of characters or)11 3452 2 720 1356 t
         6045 ( memory allocator in)3 841( The)1 207( used to access them.)4 848(pointer is always)2 679 4 720 1476 t
         6046 10 CW f
         6047 (sam)3322 1476 w
         6048 10 R f
         6049 (is therefore in two parts: first, a tradi-)7 1511 1 3529 1476 t
         6050 (tional first-fit allocator that provides fixed storage for)7 2145 1 720 1596 t
         6051 10 CW f
         6052 (structs)2891 1596 w
         6053 10 R f
         6054 ( second, a garbage-compacting alloca-)4 1531(; and)1 198 2 3311 1596 t
         6055 ( two)1 190( The)1 220( reduces storage overhead for variable-sized objects, at the cost of some bookkeeping.)12 3610(tor that)1 300 4 720 1716 t
         6056 ( allocator controlling the)3 997(types of objects are allocated from adjoining arenas, with the garbage-compacting)10 3323 2 720 1836 t
         6057 ( prevents fragmentation)2 958( into two arenas simplifies compaction and)6 1739( Separating)1 481(arena with higher addresses.)3 1142 4 720 1956 t
         6058 ( garbage-compactable objects \(discussed in the next para-)7 2358( access rules for)3 666( The)1 214(due to immovable objects.)3 1082 4 720 2076 t
         6059 ( so when the first-fit arena needs space, it moves the garbage-compacted)11 2936(graph\) allow them to be relocated,)5 1384 2 720 2196 t
         6060 ( is therefore created only at successively higher addresses,)8 2340( Storage)1 357( higher addresses to make room.)5 1302(arena to)1 321 4 720 2316 t
         6061 (either when more garbage-compacted space is needed or when the first-fit arena pushes up the other arena.)16 4256 1 720 2436 t
         6062 ( the sole reposi-)3 647(Objects that may be compacted declare to the allocator a cell that is guaranteed to be)15 3423 2 970 2592 t
         6063 ( then update the)3 668( compactor can)2 633( The)1 217(tory of the address of the object whenever a compaction can occur.)11 2802 4 720 2712 t
         6064 ( type)1 199( example, the implementation of)4 1300( For)1 190(address when the object is moved.)5 1375 4 720 2832 t
         6065 10 CW f
         6066 (List)3811 2832 w
         6067 10 R f
         6068 (\(really a variable-length)2 962 1 4078 2832 t
         6069 (array\) is:)1 357 1 720 2952 t
         6070 9 CW f
         6071 (typedef struct List{)2 1080 1 1008 3122 t
         6072 (int nused;)1 1188 1 1440 3232 t
         6073 (long *ptr;)1 1134 1 1440 3342 t
         6074 (}List;)1008 3452 w
         6075 10 R f
         6076 (The)720 3632 w
         6077 10 CW f
         6078 (ptr)910 3632 w
         6079 10 R f
         6080 ( a)1 79( When)1 298(cell must always be used directly, and never copied.)8 2159 3 1125 3632 t
         6081 10 CW f
         6082 (List)3696 3632 w
         6083 10 R f
         6084 (is to be created the)4 792 1 3972 3632 t
         6085 10 CW f
         6086 (List)4800 3632 w
         6087 10 R f
         6088 (structure is allocated in the ordinary first-fit arena and its)9 2303 1 720 3752 t
         6089 10 CW f
         6090 (ptr)3051 3752 w
         6091 10 R f
         6092 (is allocated in the garbage-compacted arena.)5 1782 1 3258 3752 t
         6093 (A similar data type for strings, called)6 1520 1 720 3872 t
         6094 10 CW f
         6095 (String)2271 3872 w
         6096 10 R f
         6097 ( ele-)1 181(, stores variable-length character arrays of up to 32767)8 2228 2 2631 3872 t
         6098 (ments.)720 3992 w
         6099 ( matter of programming style:)4 1227(A related)1 374 2 970 4148 t
         6100 10 CW f
         6101 (sam)2603 4148 w
         6102 10 R f
         6103 (frequently passes structures by value, which simplifies)6 2225 1 2815 4148 t
         6104 ( programs have passed structures by reference, but implicit allocation on the)11 3220( C)1 109( Traditionally,)1 614(the code.)1 377 4 720 4268 t
         6105 ( passing is a relatively new feature of C \(it is not in the standard reference)15 3036( Structure)1 422( to use.)2 298(stack is easier)2 564 4 720 4388 t
         6106 (manual for C)2 537 1 720 4508 t
         6107 6 R f
         6108 (14)1257 4458 w
         6109 10 R f
         6110 ( convenient and expressive,)3 1115( It's)1 187( commercial C compilers.)3 1044(\), and is poorly supported in most)6 1377 4 1317 4508 t
         6111 (though, and simplifies memory management by avoiding the allocator altogether and eliminating pointer)12 4320 1 720 4628 t
         6112 (aliases.)720 4748 w
         6113 10 B f
         6114 (Data structures for manipulating files)4 1610 1 720 4988 t
         6115 10 R f
         6116 (Experience with)1 651 1 720 5144 t
         6117 10 CW f
         6118 (jim)1396 5144 w
         6119 10 R f
         6120 ( files)1 198( First,)1 260( requirements of the file data structure were few, but strict.)10 2354(showed that the)2 627 4 1601 5144 t
         6121 ( the implementation must)3 1026( Second,)1 371( read and written quickly; adding a fresh file must be painless.)11 2507(need to be)2 416 4 720 5264 t
         6122 ( should be practical to edit many files, and)8 1719( \(It)1 147( sizes of files.)3 558(place no arbitrary upper limit on the number or)8 1896 4 720 5384 t
         6123 ( implies that files be stored on disc, not)8 1593( This)1 231(files up to megabytes in length should be handled gracefully.\))9 2496 3 720 5504 t
         6124 ( of virtual memory may argue otherwise, but the implementation of virtual)11 3046( \(Aficionados)1 577( memory.)1 389(in main)1 308 4 720 5624 t
         6125 ( changes to files need)4 879( Third,)1 302( system is not something to depend on for good performance.\))10 2533(memory in our)2 606 4 720 5744 t
         6126 ( are inverses of each other, which simplifies)7 1785( These)1 292( only two primitives: deletion and insertion.)6 1777(be made by)2 466 4 720 5864 t
         6127 ( the file, either)3 609( it must be easy and efficient to access)8 1610( Finally,)1 369(the implementation of the undo operation.)5 1732 4 720 5984 t
         6128 (forwards or backwards, a byte at a time.)7 1598 1 720 6104 t
         6129 (The)970 6260 w
         6130 10 CW f
         6131 (File)1157 6260 w
         6132 10 R f
         6133 ( characters.)1 461(data type is constructed from three simpler data structures that hold arrays of)12 3150 2 1429 6260 t
         6134 ( has an insertion and deletion operator, and the insertion and deletion operators of the)14 3520(Each of these types)3 800 2 720 6380 t
         6135 10 CW f
         6136 (File)720 6500 w
         6137 10 R f
         6138 (type itself are constructed from them.)5 1497 1 985 6500 t
         6139 (The simplest type is the)4 950 1 970 6656 t
         6140 10 CW f
         6141 (String)1945 6656 w
         6142 10 R f
         6143 ( code that man-)3 621( The)1 206( hold strings in main memory.)5 1211(, which is used to)4 697 4 2305 6656 t
         6144 (ages)720 6776 w
         6145 10 CW f
         6146 (Strings)926 6776 w
         6147 10 R f
         6148 ( some moderate size, and in practice they are)8 1816(guarantees that they will never be longer than)7 1849 2 1375 6776 t
         6149 (rarely larger than 8 Kbytes.)4 1098 1 720 6896 t
         6150 10 CW f
         6151 (Strings)1869 6896 w
         6152 10 R f
         6153 ( little)1 211(have two purposes: they hold short strings like file names with)10 2514 2 2315 6896 t
         6154 ( are therefore used as)4 862( They)1 259( efficient to modify.)3 811(overhead, and because they are deliberately small, they are)8 2388 4 720 7016 t
         6155 (the data structure for in-memory caches.)5 1612 1 720 7136 t
         6156 (The disc copy of the file is managed by a data structure called a)13 2749 1 970 7292 t
         6157 10 CW f
         6158 (Disc)3760 7292 w
         6159 10 R f
         6160 ( corresponds to a)3 730(, which)1 310 2 4000 7292 t
         6161 cleartomark
         6162 showpage
         6163 saveobj restore
         6164 %%EndPage: 17 17
         6165 %%Page: 18 18
         6166 /saveobj save def
         6167 mark
         6168 18 pagesetup
         6169 10 R f
         6170 (- 18 -)2 216 1 2772 480 t
         6171 ( A)1 133(temporary file.)1 604 2 720 840 t
         6172 10 CW f
         6173 (Disc)1493 840 w
         6174 10 R f
         6175 ( storage in main memory other than bookkeeping information; the actual)10 3002(has no)1 269 2 1769 840 t
         6176 ( reduce the number of open files needed,)7 1665( To)1 167(data being held is all on the disc.)7 1352 3 720 960 t
         6177 10 CW f
         6178 (sam)3935 960 w
         6179 10 R f
         6180 (opens a dozen tempo-)3 894 1 4146 960 t
         6181 (rary Unix files and multiplexes the)5 1395 1 720 1080 t
         6182 10 CW f
         6183 (Discs)2141 1080 w
         6184 10 R f
         6185 ( many files to be edited; the entire)7 1362( permits)1 326( This)1 229(upon them.)1 451 4 2467 1080 t
         6186 10 CW f
         6187 (sam)4860 1080 w
         6188 10 R f
         6189 (source \(48 files\) may be edited comfortably with a single instance of)11 2819 1 720 1200 t
         6190 10 CW f
         6191 (sam)3571 1200 w
         6192 10 R f
         6193 ( temporary file)2 609( one)1 176(. Allocating)1 504 3 3751 1200 t
         6194 (per)720 1320 w
         6195 10 CW f
         6196 (Disc)874 1320 w
         6197 10 R f
         6198 ( spreading the traffic)3 831( Also,)1 265( on the number of open files.)6 1157(would strain the operating system's limit)5 1646 4 1141 1320 t
         6199 (among temporary files keeps the files shorter, and shorter files are more efficiently implemented by the)15 4320 1 720 1440 t
         6200 (Unix I/O subsystem.)2 825 1 720 1560 t
         6201 (A)970 1716 w
         6202 10 CW f
         6203 (Disc)1070 1716 w
         6204 10 R f
         6205 ( between 1 and 4096 characters of)6 1386(is an array of fixed-length blocks, each of which contains)9 2316 2 1338 1716 t
         6206 ( block addresses within the tempo-)5 1400( The)1 207( file system is 4096 bytes.\))5 1082( block size of our Unix)5 933( \(The)1 241(active data.)1 457 6 720 1836 t
         6207 ( stored in a)3 450(rary file and the length of each block are)8 1633 2 720 1956 t
         6208 10 CW f
         6209 (List)2831 1956 w
         6210 10 R f
         6211 ( changes are made the live part of blocks)8 1653(. When)1 316 2 3071 1956 t
         6212 ( to keep the sizes between 2048)6 1300( are created and coalesced when necessary to try)8 1987( Blocks)1 335(may change size.)2 698 4 720 2076 t
         6213 ( actively changing part of the)5 1172( An)1 173(and 4096 bytes.)2 632 3 720 2196 t
         6214 10 CW f
         6215 (Disc)2723 2196 w
         6216 10 R f
         6217 ( has about a kilobyte of slop that)7 1316(therefore typically)1 735 2 2989 2196 t
         6218 ( an)1 130( When)1 299( inserted or deleted without changing more than one block or affecting the block order.)14 3622(can be)1 269 4 720 2316 t
         6219 ( one is allocated to receive the overflow, and the)9 1970(insertion would overflow a block, the block is split, a new)10 2350 2 720 2436 t
         6220 (memory-resident list of blocks is rearranged to reflect the insertion of the new block.)13 3388 1 720 2556 t
         6221 ( data)1 200( The)1 214( modification to the file is prohibitively expensive.)7 2090(Obviously, going to the disc for every)6 1566 4 970 2712 t
         6222 (type)720 2832 w
         6223 10 CW f
         6224 (Buffer)921 2832 w
         6225 10 R f
         6226 (consists of a)2 502 1 1310 2832 t
         6227 10 CW f
         6228 (Disc)1841 2832 w
         6229 10 R f
         6230 (to hold the data and a)5 872 1 2109 2832 t
         6231 10 CW f
         6232 (String)3009 2832 w
         6233 10 R f
         6234 ( is the first of a)5 617( This)1 231(that acts as a cache.)4 795 3 3397 2832 t
         6235 ( throughout the data structures in)5 1378(series of caches)2 647 2 720 2952 t
         6236 10 CW f
         6237 (sam.)2782 2952 w
         6238 10 R f
         6239 (The caches not only improve performance, they)6 1981 1 3059 2952 t
         6240 ( the flow of data, particularly in the communication between the host and termi-)13 3260(provide a way to organize)4 1060 2 720 3072 t
         6241 ( idea is developed below, in the section on communications.)9 2406(nal. This)1 375 2 720 3192 t
         6242 ( traffic, changes to a)4 855(To reduce disc)2 607 2 970 3348 t
         6243 10 CW f
         6244 (Buffer)2468 3348 w
         6245 10 R f
         6246 (are mediated by a variable-length string, in memory,)7 2176 1 2864 3348 t
         6247 ( an insertion or deletion is made to a)8 1502( When)1 294(that acts as a cache.)4 807 3 720 3468 t
         6248 10 CW f
         6249 (Buffer)3354 3468 w
         6250 10 R f
         6251 ( can be accommo-)3 743(, if the change)3 583 2 3714 3468 t
         6252 ( cache becomes bigger than a block because of an insertion, some)11 2643( the)1 148( If)1 117(dated by the cache, it is done there.)7 1412 4 720 3588 t
         6253 ( written to the)3 558(of it is)2 258 2 720 3708 t
         6254 10 CW f
         6255 (Disc)1561 3708 w
         6256 10 R f
         6257 ( the change does not intersect the cache, the cache)9 1999( If)1 116(and deleted from the cache.)4 1099 3 1826 3708 t
         6258 ( the new position if the change is smaller than a block; otherwise, it)13 2749( cache is only loaded at)5 949( The)1 208(is flushed.)1 414 4 720 3828 t
         6259 ( the)1 158(is sent directly to)3 722 2 720 3948 t
         6260 10 CW f
         6261 (Disc)1636 3948 w
         6262 10 R f
         6263 ( is because large changes are typically sequential, whereupon the next)10 2900(. This)1 264 2 1876 3948 t
         6264 (change is unlikely to overlap the current one.)7 1802 1 720 4068 t
         6265 (A)970 4224 w
         6266 10 CW f
         6267 (File)1067 4224 w
         6268 10 R f
         6269 (comprises a)1 474 1 1332 4224 t
         6270 10 CW f
         6271 (String)1831 4224 w
         6272 10 R f
         6273 ( such as dot and the mod-)6 1027(to hold the file name and some ancillary data)8 1797 2 2216 4224 t
         6274 ( most important components, though, are a pair of)8 2006( The)1 206(ified bit.)1 340 3 720 4344 t
         6275 10 CW f
         6276 (Buffers)3298 4344 w
         6277 10 R f
         6278 (, one called the transcript and the)6 1322 1 3718 4344 t
         6279 ( use is described in the next section.)7 1437( Their)1 266(other the contents.)2 735 3 720 4464 t
         6280 ( times)1 243( it may seem that the data is touched many)9 1701( Although)1 428(The overall structure is shown in Figure 5.)7 1698 4 970 4620 t
         6281 (on its way from the)4 825 1 720 4740 t
         6282 10 CW f
         6283 (Disc)1582 4740 w
         6284 10 R f
         6285 ( \(by one Unix system call\) directly into the cache of the associated)12 2788(, it is read)3 430 2 1822 4740 t
         6286 10 CW f
         6287 (Buffer)720 4860 w
         6288 10 R f
         6289 ( the cache, the text is written directly from the)9 1922( when flushing)2 610( Similarly,)1 456(; no extra copy is done.)5 972 4 1080 4860 t
         6290 ( principle applied throughout)3 1172( A)1 125( operations act directly on the text in the cache.)9 1912( Most)1 260(cache to disc.)2 548 5 720 4980 t
         6291 10 CW f
         6292 (sam)4765 4980 w
         6293 10 R f
         6294 (is)4973 4980 w
         6295 (that the fewer times the data is copied, the faster the program will run \(see also the paper by Waite)19 3930 1 720 5100 t
         6296 6 R f
         6297 (15)4650 5050 w
         6298 10 R f
         6299 (\).)4710 5100 w
         6300 cleartomark
         6301 saveobj restore
         6302 %%BeginGlobal
         6303 %
         6304 % Version 3.3.2 drawing procedures for dpost. Automatically pulled in when
         6305 % needed.
         6306 %
         6307 
         6308 /inpath false def
         6309 /savematrix matrix def
         6310 
         6311 /Dl {
         6312         inpath
         6313                 {pop pop neg lineto}
         6314                 {newpath neg moveto neg lineto stroke}
         6315         ifelse
         6316 } bind def
         6317 
         6318 /De {
         6319         /y1 exch 2 div def
         6320         /x1 exch 2 div def
         6321         /savematrix savematrix currentmatrix def
         6322         neg exch x1 add exch translate
         6323         x1 y1 scale
         6324         0 0 1 0 360
         6325         inpath
         6326                 {1 0 moveto arc savematrix setmatrix}
         6327                 {newpath arc savematrix setmatrix stroke}
         6328         ifelse
         6329 } bind def
         6330 
         6331 /Da {
         6332         /dy2 exch def
         6333         /dx2 exch def
         6334         /dy1 exch def
         6335         /dx1 exch def
         6336         dy1 add neg exch dx1 add exch
         6337         dx1 dx1 mul dy1 dy1 mul add sqrt
         6338         dy1 dx1 neg atan
         6339         dy2 neg dx2 atan
         6340         inpath
         6341                 {arc}
         6342                 {newpath arc stroke}
         6343         ifelse
         6344 } bind def
         6345 
         6346 /DA {
         6347         /dy2 exch def
         6348         /dx2 exch def
         6349         /dy1 exch def
         6350         /dx1 exch def
         6351         dy1 add neg exch dx1 add exch
         6352         dx1 dx1 mul dy1 dy1 mul add sqrt
         6353         dy1 dx1 neg atan
         6354         dy2 neg dx2 atan
         6355         inpath
         6356                 {arcn}
         6357                 {newpath arcn stroke}
         6358         ifelse
         6359 } bind def
         6360 
         6361 /Ds {
         6362         /y2 exch def
         6363         /x2 exch def
         6364         /y1 exch def
         6365         /x1 exch def
         6366         /y0 exch def
         6367         /x0 exch def
         6368         x0 5 x1 mul add 6 div
         6369         y0 5 y1 mul add -6 div
         6370         x2 5 x1 mul add 6 div
         6371         y2 5 y1 mul add -6 div
         6372         x1 x2 add 2 div
         6373         y1 y2 add -2 div
         6374         inpath
         6375                 {curveto}
         6376                 {newpath x0 x1 add 2 div y0 y1 add -2 div moveto curveto stroke}
         6377         ifelse
         6378 } bind def
         6379 %%EndGlobal
         6380 /saveobj save def
         6381 mark
         6382 10 R f
         6383 2966 6183 2966 6471 Dl
         6384 3599 6183 2966 6183 Dl
         6385 3600 6471 3600 6183 Dl
         6386 2967 6471 3600 6471 Dl
         6387 10 CW f
         6388 (Disc)3163 6347 w
         6389 2966 6586 2966 6874 Dl
         6390 3599 6586 2966 6586 Dl
         6391 3600 6874 3600 6586 Dl
         6392 2967 6874 3600 6874 Dl
         6393 10 R f
         6394 (temp. file)1 383 1 3092 6750 t
         6395 3283 6471 3283 6586 Dl
         6396 1642 6183 1642 6471 Dl
         6397 2275 6183 1642 6183 Dl
         6398 2275 6471 2275 6183 Dl
         6399 1642 6471 2275 6471 Dl
         6400 10 CW f
         6401 (Disc)1838 6347 w
         6402 1642 6586 1642 6874 Dl
         6403 2275 6586 1642 6586 Dl
         6404 2275 6874 2275 6586 Dl
         6405 1642 6874 2275 6874 Dl
         6406 10 R f
         6407 (temp. file)1 383 1 1767 6750 t
         6408 1958 6471 1958 6586 Dl
         6409 1642 5722 1642 6010 Dl
         6410 2275 5722 1642 5722 Dl
         6411 2275 6010 2275 5722 Dl
         6412 1642 6010 2275 6010 Dl
         6413 10 CW f
         6414 (Buffer)1778 5826 w
         6415 10 R f
         6416 (\(transcript\))1737 5946 w
         6417 2390 5722 2390 6010 Dl
         6418 2793 5722 2390 5722 Dl
         6419 2794 6010 2794 5722 Dl
         6420 2391 6010 2794 6010 Dl
         6421 10 CW f
         6422 (String)2412 5826 w
         6423 10 R f
         6424 (\(cache\))2446 5946 w
         6425 2275 5866 2390 5866 Dl
         6426 2966 5722 2966 6010 Dl
         6427 3599 5722 2966 5722 Dl
         6428 3600 6010 3600 5722 Dl
         6429 2967 6010 3600 6010 Dl
         6430 10 CW f
         6431 (Buffer)3103 5826 w
         6432 10 R f
         6433 (\(contents\))3084 5946 w
         6434 3715 5722 3715 6010 Dl
         6435 4118 5722 3715 5722 Dl
         6436 4118 6010 4118 5722 Dl
         6437 3715 6010 4118 6010 Dl
         6438 10 CW f
         6439 (String)3737 5826 w
         6440 10 R f
         6441 (\(cache\))3771 5946 w
         6442 3600 5866 3715 5866 Dl
         6443 2182 5262 2182 5550 Dl
         6444 2988 5262 2182 5262 Dl
         6445 2988 5550 2988 5262 Dl
         6446 2182 5550 2988 5550 Dl
         6447 10 CW f
         6448 (File)2465 5426 w
         6449 1958 6011 1958 6183 Dl
         6450 3283 6011 3283 6183 Dl
         6451 1958 5636 1958 5722 Dl
         6452 2318 5636 1958 5636 Dl
         6453 2318 5550 2318 5636 Dl
         6454 3283 5636 3283 5722 Dl
         6455 2851 5636 3283 5636 Dl
         6456 2851 5550 2851 5636 Dl
         6457 8 I f
         6458 ( temporary files are stored in the standard repository for such files on the host system.)15 2752( The)1 160(Figure 5. File data structures.)4 965 3 720 7052 t
         6459 cleartomark
         6460 showpage
         6461 saveobj restore
         6462 %%EndPage: 18 18
         6463 %%Page: 19 19
         6464 /saveobj save def
         6465 mark
         6466 19 pagesetup
         6467 10 R f
         6468 (- 19 -)2 216 1 2772 480 t
         6469 ( a)1 73(The contents of)2 627 2 970 840 t
         6470 10 CW f
         6471 (File)1699 840 w
         6472 10 R f
         6473 (are accessed by a routine that copies to a buffer a substring of a file starting)15 3072 1 1968 840 t
         6474 ( read a byte at a time, a per-)8 1166( To)1 168(at a specified offset.)3 824 3 720 960 t
         6475 10 CW f
         6476 (File)2878 960 w
         6477 10 R f
         6478 ( a specified initial)3 731(array is loaded starting from)4 1159 2 3150 960 t
         6479 ( implementation is done by a macro similar to the)9 2012( The)1 208(position, and bytes may then be read from the array.)9 2100 3 720 1080 t
         6480 (C standard I/O)2 616 1 720 1200 t
         6481 10 CW f
         6482 (getc)1375 1200 w
         6483 10 R f
         6484 (macro.)1654 1200 w
         6485 6 R f
         6486 (14)1928 1150 w
         6487 10 R f
         6488 ( reading may be done at any address, a minor change to the)12 2520(Because the)1 493 2 2027 1200 t
         6489 ( array is read-only; there is no)6 1197( This)1 228(macro allows the file to be read backwards.)7 1734 3 720 1320 t
         6490 10 CW f
         6491 (putc)3904 1320 w
         6492 10 R f
         6493 (.)4144 1320 w
         6494 10 B f
         6495 (Doing and undoing)2 820 1 720 1560 t
         6496 10 CW f
         6497 (Sam)720 1716 w
         6498 10 R f
         6499 ( command language makes it easy to spec-)7 1733( The)1 209( to files.)2 333(has an unusual method for managing changes)6 1837 4 928 1716 t
         6500 ( variable-length changes to a file millions of bytes long, and such changes must be made effi-)16 3842(ify multiple)1 478 2 720 1836 t
         6501 ( usual techniques for inserting and deleting strings are inadequate)9 2633( The)1 207( to be practical.)3 621(ciently if the editor is)4 859 4 720 1956 t
         6502 ( The)1 207(under these conditions.)2 930 2 720 2076 t
         6503 10 CW f
         6504 (Buffer)1884 2076 w
         6505 10 R f
         6506 (and)2271 2076 w
         6507 10 CW f
         6508 (Disc)2442 2076 w
         6509 10 R f
         6510 (data structures are designed for efficient random access to)8 2331 1 2709 2076 t
         6511 ( be taken to avoid super-linear behavior when making many changes simultane-)11 3246(long strings, but care must)4 1074 2 720 2196 t
         6512 (ously.)720 2316 w
         6513 10 CW f
         6514 (Sam)970 2472 w
         6515 10 R f
         6516 (uses a two-pass algorithm for making changes, and treats each file as a database against which)15 3859 1 1181 2472 t
         6517 ( when a command is)4 865( Instead,)1 374( the contents.)2 552( are not made directly to)5 1033( Changes)1 406(transactions are registered.)2 1090 6 720 2592 t
         6518 (started, a `mark' containing a sequence number is placed in the transcript)11 2965 1 720 2712 t
         6519 10 CW f
         6520 (Buffer)3714 2712 w
         6521 10 R f
         6522 ( made)1 246(, and each change)3 720 2 4074 2712 t
         6523 ( name, is appended to the end of the tran-)9 1715(to the file, either an insertion or deletion or a change to the file)13 2605 2 720 2832 t
         6524 ( the command is complete, the transcript is rewound to the mark and applied to the contents.)16 3690(script. When)1 535 2 720 2952 t
         6525 ( is to simplify tracking the)5 1198(One reason for separating evaluation from application in this way)9 2872 2 970 3108 t
         6526 ( two-pass algorithm also allows all)5 1481( The)1 224(addresses of changes made in the middle of a long sequence.)10 2615 3 720 3228 t
         6527 (changes to apply to the)4 965 1 720 3348 t
         6528 10 I f
         6529 (original)1721 3348 w
         6530 10 R f
         6531 ( the same command.)3 857(data: no change can affect another change made in)8 2103 2 2080 3348 t
         6532 ( evaluating an)2 606(This is particularly important when)4 1506 2 720 3468 t
         6533 10 CW f
         6534 (x)2880 3468 w
         6535 10 R f
         6536 (command because it prevents regular expression)5 2052 1 2988 3468 t
         6537 ( is)1 114( the two-pass algorithm)3 1004( Also,)1 285(matches from stumbling over changes made earlier in the execution.)9 2917 4 720 3588 t
         6538 ( to affect each other; for example,)6 1366(cleaner than the way other Unix editors allow changes)8 2199 2 720 3708 t
         6539 10 CW f
         6540 (ed)4313 3708 w
         6541 10 R f
         6542 ('s idioms to do)3 607 1 4433 3708 t
         6543 ( Instead,)1 364( on the implementation.)3 953(things like delete every other line depend critically)7 2027 3 720 3828 t
         6544 10 CW f
         6545 (sam)4090 3828 w
         6546 10 R f
         6547 ('s simple model, in)3 770 1 4270 3828 t
         6548 (which all changes in a command occur effectively simultaneously, is easy to explain and to understand.)15 4135 1 720 3948 t
         6549 ( substring from locations 123 to 456'' and)7 1825(The records in the transcript are of the form ``delete)9 2245 2 970 4104 t
         6550 ( changes are not at monotonically)5 1370( is an error if the)5 692( \(It)1 150(``insert 11 characters `hello there' at location 789.'')7 2108 4 720 4224 t
         6551 ( the update is occurring, these numbers must be offset by earlier)11 2633( While)1 301(greater positions through the file.\))4 1386 3 720 4344 t
         6552 ( to the update routine; moreover, all the numbers have been)10 2466(changes, but that is straightforward and local)6 1854 2 720 4464 t
         6553 (computed before the first is examined.)5 1536 1 720 4584 t
         6554 ( it takes is to)4 566( All)1 193(Treating the file as a transaction system has another advantage: undo is trivial.)12 3311 3 970 4740 t
         6555 ( deletions and vice versa, and)5 1200(invert the transcript after it has been implemented, converting insertions into)10 3120 2 720 4860 t
         6556 (saving them in a holding)4 989 1 720 4980 t
         6557 10 CW f
         6558 (Buffer)1734 4980 w
         6559 10 R f
         6560 ( can then be deleted from the transcript)7 1567( `do' transcript)2 593(. The)1 230 3 2094 4980 t
         6561 10 CW f
         6562 (Buffer)4510 4980 w
         6563 10 R f
         6564 (and)4896 4980 w
         6565 ( an undo is requested, the transcript is rewound and the undo transcript)12 2862( If)1 119(replaced by the `undo' transcript.)4 1339 3 720 5100 t
         6566 ( the transcript)2 561(executed. Because)1 767 2 720 5220 t
         6567 10 CW f
         6568 (Buffer)2079 5220 w
         6569 10 R f
         6570 ( it accumulates successive)3 1066(is not truncated after each command,)5 1504 2 2470 5220 t
         6571 ( can therefore back up the file arbitrarily, which is more helpful)11 2626( sequence of undo commands)4 1217(changes. A)1 477 3 720 5340 t
         6572 ( \()1 87( form of undo.)3 589(than the more commonly implemented self-inverse)5 2054 3 720 5460 t
         6573 10 CW f
         6574 (Sam)3450 5460 w
         6575 10 R f
         6576 (provides no way to undo an undo,)6 1381 1 3659 5460 t
         6577 ( mark in the)3 495( Each)1 254( re-interpreting the `do' transcript.\))4 1419(but if it were desired, it would be easy to provide by)11 2152 4 720 5580 t
         6578 ( offset into the transcript of the previous mark, to aid in)11 2390(transcript contains a sequence number and the)6 1930 2 720 5700 t
         6579 ( also contain the value of dot and the modified bit so these can be restored)15 3004( Marks)1 308(unwinding the transcript.)2 1008 3 720 5820 t
         6580 ( merely demands undoing all files whose latest change has the)10 2625( multiple files is easy; it)5 1024(easily. Undoing)1 671 3 720 5940 t
         6581 (same sequence number as the current file.)6 1670 1 720 6060 t
         6582 ( encountered in the middle of a complicated com-)8 2017(Another benefit of having a transcript is that errors)8 2053 2 970 6216 t
         6583 ( rewinding the transcript to the mark beginning)7 1933( By)1 174( files in an intermediate state.)5 1211(mand need not leave the)4 1002 4 720 6336 t
         6584 (the command, the partial command can be trivially undone.)8 2380 1 720 6456 t
         6585 ( implemented, it was unacceptably slow, so a cache was added to)11 2614(When the update algorithm was first)5 1456 2 970 6612 t
         6586 ( reduced the number)3 820( This)1 229( small changes by a single larger one.)7 1504(coalesce nearby changes, replacing multiple)4 1767 4 720 6732 t
         6587 (of insertions into the transaction)4 1308 1 720 6852 t
         6588 10 CW f
         6589 (Buffer)2058 6852 w
         6590 10 R f
         6591 ( in performance, but made it)5 1161(, and made a dramatic improvement)5 1461 2 2418 6852 t
         6592 ( the caching method only works if changes)7 1718(impossible to handle changes in non-monotonic order in the file;)9 2602 2 720 6972 t
         6593 ( cache was added, the transaction could in principle be sorted if the changes were)14 3286( the)1 149( Before)1 323(don't overlap.)1 562 4 720 7092 t
         6594 ( therefore acceptable performance with a)5 1664( current status is)3 676( The)1 213(out of order, although this was never done.)7 1767 4 720 7212 t
         6595 cleartomark
         6596 showpage
         6597 saveobj restore
         6598 %%EndPage: 19 19
         6599 %%Page: 20 20
         6600 /saveobj save def
         6601 mark
         6602 20 pagesetup
         6603 10 R f
         6604 (- 20 -)2 216 1 2772 480 t
         6605 (minor restriction on global changes, which is sometimes, but rarely, an annoyance.)11 3309 1 720 840 t
         6606 ( simpler algorithms, but it is not pro-)7 1627(The update algorithm obviously paws the data more than)8 2443 2 970 996 t
         6607 ( principle of avoiding copying the data is still honored here,)10 2519( \(The)1 251( help.)1 235(hibitively expensive; the caches)3 1315 4 720 1116 t
         6608 ( through)1 343(although not as piously: the data is moved from contents' cache to the transcript's all at once and)17 3977 2 720 1236 t
         6609 ( dead start a hundred)4 839( read from a)3 493( To)1 164( figures confirm the efficiency.)4 1250( Performance)1 562(only one internal buffer.\))3 1012 6 720 1356 t
         6610 ( a VAX-11/750 takes 1.4 seconds of user time, 2.5 seconds of system time, and 5 seconds of)17 3709(kilobyte file on)2 611 2 720 1476 t
         6611 ( the same file in)4 670( Reading)1 391(real time.)1 385 3 720 1596 t
         6612 10 CW f
         6613 (ed)2199 1596 w
         6614 10 R f
         6615 ( of system time, and 8)5 918(takes 6.0 seconds of user time, 1.7 seconds)7 1770 2 2352 1596 t
         6616 (seconds of real time.)3 862 1 720 1716 t
         6617 10 CW f
         6618 (Sam)1644 1716 w
         6619 10 R f
         6620 ( stated)1 271( more interesting example is the one)6 1520( A)1 134(uses about half the CPU time.)5 1254 4 1861 1716 t
         6621 ( The)1 205(above: inserting a character between every pair of characters in the file.)11 2851 2 720 1836 t
         6622 10 CW f
         6623 (sam)3801 1836 w
         6624 10 R f
         6625 (command is)1 486 1 4006 1836 t
         6626 9 CW f
         6627 (,y/@/ a/x/)1 540 1 1008 2006 t
         6628 10 R f
         6629 ( 3 CPU seconds per kilobyte of input file, of which about a third is spent in the regular expression)19 3945(and takes)1 375 2 720 2186 t
         6630 ( translates to about 500 changes per second.)7 1759(code. This)1 442 2 720 2306 t
         6631 10 CW f
         6632 (Ed)2972 2306 w
         6633 10 R f
         6634 ( make a similar)3 613(takes 1.5 seconds per kilobyte to)5 1309 2 3118 2306 t
         6635 ( same example in)3 702( The)1 207(change \(ignoring newlines\), but cannot undo it.)6 1898 3 720 2426 t
         6636 10 CW f
         6637 (ex)3554 2426 w
         6638 10 R f
         6639 (,)3674 2426 w
         6640 6 R f
         6641 (9)3699 2376 w
         6642 10 R f
         6643 (a variant of)2 458 1 3756 2426 t
         6644 10 CW f
         6645 (ed)4241 2426 w
         6646 10 R f
         6647 (done at the Uni-)3 652 1 4388 2426 t
         6648 ( summary,)1 428( In)1 139( takes 3 seconds.)3 689(versity of California at Berkeley, which allows one level of undoing, again)11 3064 4 720 2546 t
         6649 10 CW f
         6650 (sam)720 2666 w
         6651 10 R f
         6652 ('s performance is comparable to that of other Unix editors, although it solves a harder problem.)15 3807 1 900 2666 t
         6653 10 B f
         6654 (Communications)720 2906 w
         6655 10 R f
         6656 (The discussion so far has described the implementation of the host part of)12 3138 1 720 3062 t
         6657 10 CW f
         6658 (sam)3899 3062 w
         6659 10 R f
         6660 (; the next few sections)4 961 1 4079 3062 t
         6661 ( machine with mouse and bitmap display can be engaged to improve interaction.)12 3263(explain how a)2 570 2 720 3182 t
         6662 10 CW f
         6663 (Sam)4607 3182 w
         6664 10 R f
         6665 (is not)1 224 1 4816 3182 t
         6666 (the first editor to be written as two processes,)8 1811 1 720 3302 t
         6667 6 R f
         6668 (16)2531 3252 w
         6669 10 R f
         6670 (but its implementation has some unusual aspects.)6 1969 1 2616 3302 t
         6671 (There are several ways)3 924 1 970 3458 t
         6672 10 CW f
         6673 (sam)1922 3458 w
         6674 10 R f
         6675 ( first and simplest is to)5 929( The)1 208('s host and terminal parts may be connected.)7 1801 3 2102 3458 t
         6676 ( This)1 229( command language to edit text on an ordinary terminal.)9 2256(forgo the terminal part and use the host part's)8 1835 3 720 3578 t
         6677 (mode is invoked by starting)4 1111 1 720 3698 t
         6678 10 CW f
         6679 (sam)1856 3698 w
         6680 10 R f
         6681 (with the)1 325 1 2061 3698 t
         6682 10 CW f
         6683 (-d)2412 3698 w
         6684 10 R f
         6685 ( no options,)2 472(option. With)1 532 2 2558 3698 t
         6686 10 CW f
         6687 (sam)3588 3698 w
         6688 10 R f
         6689 (runs separate host and terminal)4 1246 1 3794 3698 t
         6690 ( Typically,)1 458( over the physical connection that joins them.)7 1815(programs, communicating with a message protocol)5 2047 3 720 3818 t
         6691 ( display for)2 469(the connection is an RS-232 link between a Blit \(the prototypical)10 2658 2 720 3938 t
         6692 10 CW f
         6693 (sam)3879 3938 w
         6694 10 R f
         6695 (\) and a host running the)5 981 1 4059 3938 t
         6696 (Ninth Edition of the Unix operating system.)6 1782 1 720 4058 t
         6697 6 R f
         6698 (8)2502 4008 w
         6699 10 R f
         6700 (\(This is the version of the system used in the Computing Sci-)11 2480 1 2560 4058 t
         6701 ( are discussed in the)4 828( relevant aspects)2 669( Its)1 155(ences Research Center at AT&T Bell Laboratories, where I work.)9 2668 4 720 4178 t
         6702 (Blit paper.)1 432 1 720 4298 t
         6703 6 R f
         6704 (1)1152 4248 w
         6705 10 R f
         6706 ( implementation of)2 779(\) The)1 223 2 1182 4298 t
         6707 10 CW f
         6708 (sam)2218 4298 w
         6709 10 R f
         6710 (for the Sun computer runs both processes on the same machine)10 2608 1 2432 4298 t
         6711 (and connects them by a pipe.)5 1159 1 720 4418 t
         6712 ( division)1 351( The)1 208( of an RS-232 link necessitated the split between the two programs.)11 2730(The low bandwidth)2 781 4 970 4574 t
         6713 ( a self-contained one,)3 859(is a mixed blessing: a program in two parts is much harder to write and to debug than)17 3461 2 720 4694 t
         6714 ( terminal may be physically separated from)6 1736( The)1 206( configurations possible.)2 982(but the split makes several unusual)5 1396 4 720 4814 t
         6715 ( to be taken home while leaving the files)8 1628(the host, allowing the conveniences of a mouse and bitmap display)10 2692 2 720 4934 t
         6716 ( is also possible to run the host part on a remote machine:)12 2298( It)1 111(at work.)1 327 3 720 5054 t
         6717 9 CW f
         6718 (sam -r host)2 594 1 1008 5224 t
         6719 10 R f
         6720 ( the network to establish the host part)7 1503(connects to the terminal in the usual way, and then makes a call across)13 2817 2 720 5404 t
         6721 (of)720 5524 w
         6722 10 CW f
         6723 (sam)831 5524 w
         6724 10 R f
         6725 ( allows)1 288( This)1 230( parts.)1 246( it cross-connects the I/O to join the two)8 1628( Finally,)1 362(on the named machine.)3 935 6 1039 5524 t
         6726 10 CW f
         6727 (sam)4755 5524 w
         6728 10 R f
         6729 (to)4962 5524 w
         6730 (be run on machines that do not support bitmap displays; for example,)11 2869 1 720 5644 t
         6731 10 CW f
         6732 (sam)3623 5644 w
         6733 10 R f
         6734 ( our)1 168(is the editor of choice on)5 1035 2 3837 5644 t
         6735 (Cray X-MP/24.)1 632 1 720 5764 t
         6736 10 CW f
         6737 (Sam -r)1 334 1 1412 5764 t
         6738 10 R f
         6739 (involves)1780 5764 w
         6740 10 I f
         6741 (three)2153 5764 w
         6742 10 R f
         6743 ( The)1 214(machines: the remote host, the terminal, and the local host.)9 2434 2 2392 5764 t
         6744 (local host's job is simple but vital: it passes the data between the remote host and terminal.)16 3628 1 720 5884 t
         6745 ( exchange messages asynchronously \(rather than, say, as remote procedure)9 3145(The host and terminal)3 925 2 970 6040 t
         6746 ( correction because, whatever the configuration, the connection is)8 2709(calls\) but there is no error detection or)7 1611 2 720 6160 t
         6747 ( mundane interaction tasks such as popping up menus and interpret-)10 2763( the terminal handles)3 847(reliable. Because)1 710 3 720 6280 t
         6748 ( example, the host knows nothing about)6 1657( For)1 200( not actions.)2 508(ing the responses, the messages are about data,)7 1955 4 720 6400 t
         6749 ( says)1 211(what is displayed on the screen, and when the user types a character, the message sent to the host)18 4109 2 720 6520 t
         6750 ( position in the)3 601(``insert a one-byte string at location 123 in file 7,'' not ``a character was typed at the current)17 3719 2 720 6640 t
         6751 ( other words, the messages look very much like the transaction records in the transcripts.)14 3544( In)1 133(current file.'')1 531 3 720 6760 t
         6752 ( host or terminal part of)5 961(Either the)1 393 2 970 6916 t
         6753 10 CW f
         6754 (sam)2352 6916 w
         6755 10 R f
         6756 ( command language oper-)3 1048( The)1 208(may initiate a change to a file.)6 1224 3 2560 6916 t
         6757 ( mouse operations are executed directly in the terminal to optimize)10 2708(ates on the host, while typing and some)7 1612 2 720 7036 t
         6758 ( \(A)1 165( the terminal, and vice versa.)5 1200( initiated by the host program must be transmitted to)9 2178(response. Changes)1 777 4 720 7156 t
         6759 ( which means that characters typed while a time-)8 1999(token is exchanged to determine which end is in control,)9 2321 2 720 7276 t
         6760 cleartomark
         6761 showpage
         6762 saveobj restore
         6763 %%EndPage: 20 20
         6764 %%Page: 21 21
         6765 /saveobj save def
         6766 mark
         6767 21 pagesetup
         6768 10 R f
         6769 (- 21 -)2 216 1 2772 480 t
         6770 ( main-)1 264( To)1 167( buffered and do not appear until the command is complete.\))10 2475(consuming command runs must be)4 1414 4 720 840 t
         6771 ( track changes through a per-file data structure that records)9 2351(tain consistent information, the host and terminal)6 1969 2 720 960 t
         6772 ( data structure, called a)4 954( The)1 213(what portions of the file the terminal has received.)8 2074 3 720 1080 t
         6773 10 CW f
         6774 (Rasp)3994 1080 w
         6775 10 R f
         6776 (\(a weak pun: it's a)4 773 1 4267 1080 t
         6777 ( A)1 128(file with holes\) is held and updated by both the host and terminal.)12 2695 2 720 1200 t
         6778 10 CW f
         6779 (Rasp)3574 1200 w
         6780 10 R f
         6781 ( of)1 113(is a list)2 296 2 3845 1200 t
         6782 10 CW f
         6783 (Strings)4284 1200 w
         6784 10 R f
         6785 (holding)4734 1200 w
         6786 ( number of bytes in the interstices.)6 1415(those parts of the file known to the terminal, separated by counts of the)13 2905 2 720 1320 t
         6787 ( needs the lengths of the various pieces\),)7 1619(Of course, the host doesn't keep a separate copy of the data \(it only)13 2701 2 720 1440 t
         6788 (but the structure is the same on both ends.)8 1679 1 720 1560 t
         6789 (The)970 1716 w
         6790 10 CW f
         6791 (Rasp)1158 1716 w
         6792 10 R f
         6793 ( the terminal keeps the text for portions of the)9 1909( Since)1 280(in the terminal doubles as a cache.)6 1420 3 1431 1716 t
         6794 (file it has displayed, it need not request data from the host when revisiting old parts of the file or redrawing)20 4320 1 720 1836 t
         6795 (obscured windows, which speeds things up considerably over low-speed links.)9 3143 1 720 1956 t
         6796 (It's trivial for the terminal to maintain its)7 1683 1 970 2112 t
         6797 10 CW f
         6798 (Rasp)2684 2112 w
         6799 10 R f
         6800 ( on the terminal apply to)5 1015(, because all changes made)4 1101 2 2924 2112 t
         6801 ( made by the host are compared against the)8 1740( Changes)1 396( already loaded there.)3 864(parts of the file)3 616 4 720 2232 t
         6802 10 CW f
         6803 (Rasp)4363 2232 w
         6804 10 R f
         6805 (during the)1 410 1 4630 2232 t
         6806 ( changes to pieces of the file loaded in the terminal are sent in)13 2509( Small)1 287( each command.)2 657(update sequence after)2 867 4 720 2352 t
         6807 ( in the holes, are transmitted as messages with-)8 1894( changes, and changes that fall entirely)6 1567( Larger)1 318(their entirety.)1 541 4 720 2472 t
         6808 ( a command is)3 610( When)1 298( the lengths of the deleted and inserted strings are transmitted.)10 2577(out literal data: only)3 835 4 720 2592 t
         6809 ( in their)2 319(completed, the terminal examines its visible windows to see if any holes)11 2947 2 720 2712 t
         6810 10 CW f
         6811 (Rasps)4015 2712 w
         6812 10 R f
         6813 (intersect the visi-)2 696 1 4344 2712 t
         6814 ( 512 bytes of sur-)4 731( then requests the missing data from the host, along with up to)12 2569( It)1 118(ble portion of the file.)4 902 4 720 2832 t
         6815 ( technique)1 414( This)1 229( the file.)2 332(rounding data, to minimize the number of messages when visiting a new portion of)13 3345 4 720 2952 t
         6816 ( first level sends a minimum of informa-)7 1646( The)1 209(provides a kind of two-level lazy evaluation for the terminal.)9 2465 3 720 3072 t
         6817 ( the file not being edited interactively; the second level waits until a change is displayed)15 3575(tion about parts of)3 745 2 720 3192 t
         6818 ( is also helped by having the terminal respond)8 1933( course, performance)2 860( Of)1 166(before transmitting the new data.)4 1361 4 720 3312 t
         6819 ( for small changes to active pieces of the file,)9 1906( Except)1 338( and simple mouse requests.)4 1168(immediately to typing)2 908 4 720 3432 t
         6820 (which are transmitted to the terminal without negotiation, the terminal is wholly responsible for deciding)14 4320 1 720 3552 t
         6821 (what is displayed; the host uses the)6 1405 1 720 3672 t
         6822 10 CW f
         6823 (Rasp)2150 3672 w
         6824 10 R f
         6825 (only to tell the terminal what might be relevant.)8 1907 1 2415 3672 t
         6826 ( host, the messages to the terminal describing the change are gener-)11 2727(When a change is initiated by the)6 1343 2 970 3828 t
         6827 ( the transcript of the changes to the contents of the)10 2023(ated by the routine that applies)5 1239 2 720 3948 t
         6828 10 CW f
         6829 (File)4008 3948 w
         6830 10 R f
         6831 ( changes are)2 494(. Since)1 298 2 4248 3948 t
         6832 ( no extra code in the communications; the usual mes-)9 2173(undone by the same update routine, undoing requires)7 2147 2 720 4068 t
         6833 (sages describing changes to the file are sufficient to back up the screen image.)13 3120 1 720 4188 t
         6834 (The)970 4344 w
         6835 10 CW f
         6836 (Rasp)1164 4344 w
         6837 10 R f
         6838 (is a particularly good example of the way caches are used in)11 2556 1 1443 4344 t
         6839 10 CW f
         6840 (sam)4038 4344 w
         6841 10 R f
         6842 ( it facilitates)2 524(. First,)1 298 2 4218 4344 t
         6843 ( so doing, it provides)4 870( In)1 140( portion of the text by placing the busy text in main memory.)12 2519(access to the active)3 791 4 720 4464 t
         6844 ( be)1 138( the form of data is to)6 968( Since)1 290(efficient access to a large data structure that does not fit in memory.)12 2924 4 720 4584 t
         6845 ( characters will frequently be scanned sequentially,)6 2090(imposed by the user, not by the program, and because)9 2230 2 720 4704 t
         6846 ( help keep performance good and linear when working with such)10 2724( Caches)1 350(files are stored as flat objects.)5 1246 3 720 4824 t
         6847 (data.)720 4944 w
         6848 (Second, the)1 468 1 970 5100 t
         6849 10 CW f
         6850 (Rasp)1465 5100 w
         6851 10 R f
         6852 (and several of the other caches have some)7 1696 1 1732 5100 t
         6853 10 I f
         6854 (read-ahead;)3456 5100 w
         6855 10 R f
         6856 (that is, the cache is loaded)5 1063 1 3977 5100 t
         6857 ( manipulating linear struc-)3 1090( When)1 299( than is needed for the job immediately at hand.)9 2002(with more information)2 929 4 720 5220 t
         6858 ( time to access)3 588(tures, the accesses are usually sequential, and read-ahead can significantly reduce the average)12 3732 2 720 5340 t
         6859 ( mode for people as well as programs; con-)8 1764( access is a common)4 839( Sequential)1 478(the next element of the object.)5 1239 4 720 5460 t
         6860 (sider scrolling through a document while looking for something.)8 2579 1 720 5580 t
         6861 ( at least the implementation.)4 1158(Finally, like any good data structure, the cache guides the algorithm, or)11 2912 2 970 5736 t
         6862 (The)720 5856 w
         6863 10 CW f
         6864 (Rasp)906 5856 w
         6865 10 R f
         6866 ( between the host and terminal parts, but I)8 1718(was actually invented to control the communications)6 2145 2 1177 5856 t
         6867 ( caches were more explicitly intended to serve a)8 1957( Other)1 282( was also a form of cache.)6 1068(realized very early that it)4 1013 4 720 5976 t
         6868 (double purpose: for example, the caches in)6 1728 1 720 6096 t
         6869 10 CW f
         6870 (Files)2476 6096 w
         6871 10 R f
         6872 (that coalesce updates not only reduce traffic to the tran-)9 2237 1 2803 6096 t
         6873 (script and contents)2 749 1 720 6216 t
         6874 10 CW f
         6875 (Buffers)1494 6216 w
         6876 10 R f
         6877 ( clump screen updates so that complicated changes to the screen are)11 2718(, they also)2 408 2 1914 6216 t
         6878 ( not need to write)4 715( saved me considerable work: I did)6 1427( This)1 233(achieved in just a few messages to the terminal.)8 1945 4 720 6336 t
         6879 ( they)1 200( Also,)1 267( pay off in surprising ways.)5 1108( Caches)1 341( optimize the message traffic to the terminal.)7 1807(special code to)2 597 6 720 6456 t
         6880 (tend to be independent, so their performance improvements are multiplicative.)9 3131 1 720 6576 t
         6881 10 B f
         6882 (Data structures in the terminal)4 1320 1 720 6816 t
         6883 10 R f
         6884 (The terminal's job is to display and to maintain a consistent image of pieces of the files being edited.)18 4320 1 720 6972 t
         6885 ( text is always in memory, the data structures are considerably simpler than those in the host)16 3831(Because the)1 489 2 720 7092 t
         6886 (part.)720 7212 w
         6887 cleartomark
         6888 showpage
         6889 saveobj restore
         6890 %%EndPage: 21 21
         6891 %%Page: 22 22
         6892 /saveobj save def
         6893 mark
         6894 22 pagesetup
         6895 10 R f
         6896 (- 22 -)2 216 1 2772 480 t
         6897 10 CW f
         6898 (Sam)970 840 w
         6899 10 R f
         6900 ( does)1 211(typically has far more windows than)5 1466 2 1177 840 t
         6901 10 CW f
         6902 (mux)2882 840 w
         6903 10 R f
         6904 (, the window system within which its Blit imple-)8 1978 1 3062 840 t
         6905 (mentation runs.)1 633 1 720 960 t
         6906 10 CW f
         6907 (Mux)1414 960 w
         6908 10 R f
         6909 (has a fairly small number of asynchronously updated windows;)8 2618 1 1630 960 t
         6910 10 CW f
         6911 (sam)4284 960 w
         6912 10 R f
         6913 (needs a large)2 540 1 4500 960 t
         6914 ( different)1 376( The)1 213( static and often fully obscured.)5 1299(number of synchronously updated windows that are usually)7 2432 4 720 1080 t
         6915 (tradeoffs guided)1 670 1 720 1200 t
         6916 10 CW f
         6917 (sam)1434 1200 w
         6918 10 R f
         6919 ( windows, called)2 710(away from the memory-intensive implementation of)5 2184 2 1658 1200 t
         6920 10 CW f
         6921 (Layers)4595 1200 w
         6922 10 R f
         6923 (,)4955 1200 w
         6924 6 R f
         6925 (17)4980 1150 w
         6926 10 R f
         6927 (used in)1 297 1 720 1320 t
         6928 10 CW f
         6929 (mux.)1053 1320 w
         6930 10 R f
         6931 ( window,)1 384(Rather than depending on a complete bitmap image of the display for each)12 3110 2 1329 1320 t
         6932 10 CW f
         6933 (sam)4860 1320 w
         6934 10 R f
         6935 ( image from its in-memory text \(stored in the)8 1876(regenerates the)1 610 2 720 1440 t
         6936 10 CW f
         6937 (Rasp)3240 1440 w
         6938 10 R f
         6939 (\) when necessary, although it will use)6 1560 1 3480 1440 t
         6940 ( Like)1 243(such an image if it is available.)6 1300 2 720 1560 t
         6941 10 CW f
         6942 (Layers)2299 1560 w
         6943 10 R f
         6944 (, though,)1 364 1 2659 1560 t
         6945 10 CW f
         6946 (sam)3059 1560 w
         6947 10 R f
         6948 (uses the screen bitmap as active storage in)7 1765 1 3275 1560 t
         6949 (which to update the image using)5 1306 1 720 1680 t
         6950 10 CW f
         6951 (bitblt)2053 1680 w
         6952 10 R f
         6953 (.)2413 1680 w
         6954 6 R f
         6955 (18,19)2438 1630 w
         6956 10 R f
         6957 (The resulting organization, pictured in Figure 6, has a global)9 2440 1 2600 1680 t
         6958 (array of windows, called)3 989 1 720 1800 t
         6959 10 CW f
         6960 (Flayers)1735 1800 w
         6961 10 R f
         6962 ( structure)1 376(, each of which holds an image of a piece of text held in a data)15 2509 2 2155 1800 t
         6963 (called a)1 319 1 720 1920 t
         6964 10 CW f
         6965 (Frame)1076 1920 w
         6966 10 R f
         6967 ( rectangular window full of text displayed in some)8 2102(, which in turn represents a)5 1141 2 1376 1920 t
         6968 10 CW f
         6969 (Bitmap)4655 1920 w
         6970 10 R f
         6971 (.)5015 1920 w
         6972 (Each)720 2040 w
         6973 10 CW f
         6974 (Flayer)947 2040 w
         6975 10 R f
         6976 ( display, and simultaneously)3 1151(appears in a global list that orders them all front-to-back on the)11 2554 2 1335 2040 t
         6977 ( in the termi-)3 519( complement)1 520( The)1 206(as an element of a per-file array that holds all the open windows for that file.)15 3075 4 720 2160 t
         6978 (nal of the)2 377 1 720 2280 t
         6979 10 CW f
         6980 (File)1122 2280 w
         6981 10 R f
         6982 (on the host is called a)5 863 1 1387 2280 t
         6983 10 CW f
         6984 (Text)2275 2280 w
         6985 10 R f
         6986 (; each connects its)3 729 1 2515 2280 t
         6987 10 CW f
         6988 (Flayers)3269 2280 w
         6989 10 R f
         6990 (to the associated)2 660 1 3714 2280 t
         6991 10 CW f
         6992 (Rasp)4399 2280 w
         6993 10 R f
         6994 (.)4639 2280 w
         6995 1800 2478 1800 2766 Dl
         6996 2606 2478 1800 2478 Dl
         6997 2606 2766 2606 2478 Dl
         6998 1800 2766 2606 2766 Dl
         6999 10 CW f
         7000 (Text)2083 2642 w
         7001 2722 2478 2722 2766 Dl
         7002 3370 2478 2722 2478 Dl
         7003 3370 2766 3370 2478 Dl
         7004 2722 2766 3370 2766 Dl
         7005 (Rasp)2926 2642 w
         7006 2721 2622 2606 2622 Dl
         7007 3542 2622 3370 2622 Dl
         7008 3542 2622 3470 2640 Dl
         7009 3542 2622 3470 2604 Dl
         7010 10 R f
         7011 (to host)1 270 1 3677 2642 t
         7012 2203 2881 2203 2766 Dl
         7013 1987 2881 2203 2881 Dl
         7014 1987 3097 1987 2881 Dl
         7015 2102 3097 1987 3097 Dl
         7016 2102 2953 2102 3241 Dl
         7017 2642 2953 2102 2953 Dl
         7018 2642 3241 2642 2953 Dl
         7019 2102 3241 2642 3241 Dl
         7020 10 CW f
         7021 (Flayer)2192 3117 w
         7022 2642 2953 2642 3241 Dl
         7023 3182 2953 2642 2953 Dl
         7024 3182 3241 3182 2953 Dl
         7025 2642 3241 3182 3241 Dl
         7026 3182 2953 3182 3241 Dl
         7027 3722 2953 3182 2953 Dl
         7028 3722 3241 3722 2953 Dl
         7029 3182 3241 3722 3241 Dl
         7030 3722 2953 3722 3241 Dl
         7031 4262 2953 3722 2953 Dl
         7032 4262 3241 4262 2953 Dl
         7033 3722 3241 4262 3241 Dl
         7034 (...)3902 3117 w
         7035 (...)2822 3578 w
         7036 2102 3414 2102 3702 Dl
         7037 2642 3414 2102 3414 Dl
         7038 2642 3702 2642 3414 Dl
         7039 2102 3702 2642 3702 Dl
         7040 (Frame)2222 3578 w
         7041 2372 3413 2372 3241 Dl
         7042 2912 3413 2912 3241 Dl
         7043 3452 3413 3452 3241 Dl
         7044 3992 3413 3992 3241 Dl
         7045 1498 3414 1498 3702 Dl
         7046 1930 3414 1498 3414 Dl
         7047 1930 3702 1930 3414 Dl
         7048 1498 3702 1930 3702 Dl
         7049 (Bitmap)1534 3518 w
         7050 10 R f
         7051 (\(cache\))1568 3638 w
         7052 2102 3558 1930 3558 Dl
         7053 2372 3817 2372 3702 Dl
         7054 2012 3817 2372 3817 Dl
         7055 2012 4033 2012 3817 Dl
         7056 2127 4033 2012 4033 Dl
         7057 2128 3889 2128 4177 Dl
         7058 2452 3889 2128 3889 Dl
         7059 2452 4177 2452 3889 Dl
         7060 2128 4177 2452 4177 Dl
         7061 10 CW f
         7062 (Box)2200 4053 w
         7063 2452 3889 2452 4177 Dl
         7064 2776 3889 2452 3889 Dl
         7065 2776 4177 2776 3889 Dl
         7066 2452 4177 2776 4177 Dl
         7067 2776 3889 2776 4177 Dl
         7068 3100 3889 2776 3889 Dl
         7069 3100 4177 3100 3889 Dl
         7070 2776 4177 3100 4177 Dl
         7071 3100 3889 3100 4177 Dl
         7072 3424 3889 3100 3889 Dl
         7073 3424 4177 3424 3889 Dl
         7074 3100 4177 3424 4177 Dl
         7075 (...)3172 4053 w
         7076 8 I f
         7077 (Figure 6. Data structures in the terminal.)6 1360 1 720 4355 t
         7078 8 CW f
         7079 (Flayers)2126 4355 w
         7080 8 I f
         7081 (are also linked together into a front-to-back list.)7 1587 1 2488 4355 t
         7082 8 CW f
         7083 (Boxes)4122 4355 w
         7084 8 I f
         7085 (are discussed in the)3 651 1 4389 4355 t
         7086 (next section.)1 397 1 720 4455 t
         7087 10 R f
         7088 (The)970 4731 w
         7089 10 CW f
         7090 (Bitmap)1155 4731 w
         7091 10 R f
         7092 (for a)1 190 1 1545 4731 t
         7093 10 CW f
         7094 (Frame)1765 4731 w
         7095 10 R f
         7096 ( a fully visible window, the)5 1124( For)1 195(contains the image of the text.)5 1234 3 2096 4731 t
         7097 10 CW f
         7098 (Bitmap)4680 4731 w
         7099 10 R f
         7100 (will be the screen \(or at least the)7 1315 1 720 4851 t
         7101 10 CW f
         7102 (Layer)2063 4851 w
         7103 10 R f
         7104 (in which)1 350 1 2391 4851 t
         7105 10 CW f
         7106 (sam)2769 4851 w
         7107 10 R f
         7108 ( while for partially obscured windows)5 1527(is being run\),)2 536 2 2977 4851 t
         7109 (the)720 4971 w
         7110 10 CW f
         7111 (Bitmap)867 4971 w
         7112 10 R f
         7113 ( the window is fully obscured, the)6 1357( If)1 116(will be off-screen.)2 728 3 1252 4971 t
         7114 10 CW f
         7115 (Bitmap)3478 4971 w
         7116 10 R f
         7117 (will be null.)2 481 1 3863 4971 t
         7118 (The)970 5127 w
         7119 10 CW f
         7120 (Bitmap)1159 5127 w
         7121 10 R f
         7122 ( image)1 279( making changes to the display, most of the original)9 2152( When)1 297(is a kind of cache.)4 759 4 1553 5127 t
         7123 ( The)1 207( this.)1 197(will look the same in the final image, and the update algorithms exploit)12 2887 3 720 5247 t
         7124 10 CW f
         7125 (Frame)4038 5247 w
         7126 10 R f
         7127 (software updates)1 675 1 4365 5247 t
         7128 (the image in the)3 644 1 720 5367 t
         7129 10 CW f
         7130 (Bitmap)1390 5367 w
         7131 10 R f
         7132 (incrementally; the)1 725 1 1776 5367 t
         7133 10 CW f
         7134 (Bitmap)2528 5367 w
         7135 10 R f
         7136 (is not just an image, it is a data structure.)9 1653 1 2915 5367 t
         7137 6 R f
         7138 (18,19)4568 5317 w
         7139 10 R f
         7140 (The job)1 310 1 4730 5367 t
         7141 ( therefore to use as much as possible of the existing image \(con-)12 2622(of the software that updates the display is)7 1698 2 720 5487 t
         7142 ( a sort of two-dimensional string insertion)6 1713(verting the text from ASCII characters to pixels is expensive\) in)10 2607 2 720 5607 t
         7143 ( details of this process are described in the next section.)10 2221(algorithm. The)1 619 2 720 5727 t
         7144 (The)970 5883 w
         7145 10 CW f
         7146 (Frame)1173 5883 w
         7147 10 R f
         7148 (software has no code to support overlapping windows; its job is to keep a single)14 3519 1 1521 5883 t
         7149 10 CW f
         7150 (Bitmap)720 6003 w
         7151 10 R f
         7152 ( falls to the)3 471( It)1 119(up to date.)2 435 3 1113 6003 t
         7153 10 CW f
         7154 (Flayer)2171 6003 w
         7155 10 R f
         7156 (software to multiplex the various)4 1349 1 2564 6003 t
         7157 10 CW f
         7158 (Bitmaps)3945 6003 w
         7159 10 R f
         7160 (onto the screen.)2 643 1 4397 6003 t
         7161 (The problem of maintaining overlapping)4 1638 1 720 6123 t
         7162 10 CW f
         7163 (Flayers)2386 6123 w
         7164 10 R f
         7165 (is easier than for)3 671 1 2834 6123 t
         7166 10 CW f
         7167 (Layers)3533 6123 w
         7168 6 R f
         7169 (17)3893 6073 w
         7170 10 R f
         7171 ( are made)2 395(because changes)1 664 2 3981 6123 t
         7172 ( reconstructed from the data stored in the)7 1722(synchronously and because the contents of the window can be)9 2598 2 720 6243 t
         7173 10 CW f
         7174 (Frame)720 6363 w
         7175 10 R f
         7176 (; the)1 180 1 1020 6363 t
         7177 10 CW f
         7178 (Layers)1231 6363 w
         7179 10 R f
         7180 ( In)1 139(software makes no such assumptions.)4 1525 2 1622 6363 t
         7181 10 CW f
         7182 (sam)3317 6363 w
         7183 10 R f
         7184 (, the window being changed is almost)6 1543 1 3497 6363 t
         7185 ( when)1 247( However,)1 446(always fully visible, because the current window is always fully visible, by construction.)12 3627 3 720 6483 t
         7186 ( it may be necessary to)5 927(multi-file changes are being made, or when more than one window is open on a file,)15 3393 2 720 6603 t
         7187 (update partially obscured windows.)3 1420 1 720 6723 t
         7188 ( If)1 125( fully visible, invisible \(fully obscured\), or partially visible.)8 2446(There are three cases: the window is)6 1499 3 970 6879 t
         7189 (fully visible, the)2 687 1 720 6999 t
         7190 10 CW f
         7191 (Bitmap)1449 6999 w
         7192 10 R f
         7193 (is part of the screen, so when the)7 1427 1 1851 6999 t
         7194 10 CW f
         7195 (Flayer)3320 6999 w
         7196 10 R f
         7197 (update routine calls the)3 977 1 3722 6999 t
         7198 10 CW f
         7199 (Frame)4740 6999 w
         7200 10 R f
         7201 ( is invisible, there is no associated)6 1489( the window)2 534( If)1 136(update routine, the screen will be updated directly.)7 2161 4 720 7119 t
         7202 10 CW f
         7203 (Bitmap)720 7239 w
         7204 10 R f
         7205 ( necessary is to update the)5 1075(, and all that is)4 614 2 1080 7239 t
         7206 10 CW f
         7207 (Frame)2800 7239 w
         7208 10 R f
         7209 ( the window is)3 604( If)1 122(data structure, not the image.)4 1183 3 3131 7239 t
         7210 cleartomark
         7211 showpage
         7212 saveobj restore
         7213 %%EndPage: 22 22
         7214 %%Page: 23 23
         7215 /saveobj save def
         7216 mark
         7217 23 pagesetup
         7218 10 R f
         7219 (- 23 -)2 216 1 2772 480 t
         7220 (partially visible, the)2 817 1 720 840 t
         7221 10 CW f
         7222 (Frame)1572 840 w
         7223 10 R f
         7224 ( called to update the image in the off-screen)8 1839(routine is)1 385 2 1907 840 t
         7225 10 CW f
         7226 (Bitmap)4167 840 w
         7227 10 R f
         7228 (, which may)2 513 1 4527 840 t
         7229 ( The)1 207(require regenerating it from the text of the window.)8 2078 2 720 960 t
         7230 10 CW f
         7231 (Flayer)3032 960 w
         7232 10 R f
         7233 (code then clips this)3 775 1 3419 960 t
         7234 10 CW f
         7235 (Bitmap)4221 960 w
         7236 10 R f
         7237 (against the)1 432 1 4608 960 t
         7238 10 CW f
         7239 (Bitmaps)720 1080 w
         7240 10 R f
         7241 (of all)1 208 1 1165 1080 t
         7242 10 CW f
         7243 (Frames)1398 1080 w
         7244 10 R f
         7245 (in front of the)3 552 1 1783 1080 t
         7246 10 CW f
         7247 (Frame)2360 1080 w
         7248 10 R f
         7249 (being modified, and the remainder is copied to the display.)9 2350 1 2685 1080 t
         7250 ( than recreating the image off-screen for every change, or clipping all the changes)13 3301(This is much faster)3 769 2 970 1236 t
         7251 ( amounts of)2 476( these caches can also consume prohibitive)6 1731( Unfortunately,)1 638(made to the image during its update.)6 1475 4 720 1356 t
         7252 ( freed fairly liberally \320 after every change to the front-to-back order of the)13 3030(memory, so they are)3 818 2 720 1476 t
         7253 10 CW f
         7254 (Flayers)4595 1476 w
         7255 10 R f
         7256 (.)5015 1476 w
         7257 (The result is that the off-screen)5 1274 1 720 1596 t
         7258 10 CW f
         7259 (Bitmaps)2025 1596 w
         7260 10 R f
         7261 (exist only while multi-window changes are occurring, which is)8 2564 1 2476 1596 t
         7262 ( the user interface causes fully-)5 1278( Also,)1 271( improvement they provide is needed.)5 1544(the only time the performance)4 1227 4 720 1716 t
         7263 ( creating a canonically sized and placed window requires)8 2357(obscured windows to be the easiest to make \320)8 1963 2 720 1836 t
         7264 (only a button click \320 which reduces the need for caching still further.)12 2803 1 720 1956 t
         7265 10 B f
         7266 (Screen update)1 608 1 720 2232 t
         7267 10 R f
         7268 ( update:)1 321(Only two low-level primitives are needed for incremental)7 2305 2 720 2388 t
         7269 10 CW f
         7270 (bitblt)3373 2388 w
         7271 10 R f
         7272 (, which copies rectangles of pix-)5 1307 1 3733 2388 t
         7273 (els, and)1 328 1 720 2508 t
         7274 10 CW f
         7275 (string)1096 2508 w
         7276 10 R f
         7277 (\(which in turn calls)3 840 1 1503 2508 t
         7278 10 CW f
         7279 (bitblt)2390 2508 w
         7280 10 R f
         7281 (\), which draws a null-terminated character string in a)8 2290 1 2750 2508 t
         7282 10 CW f
         7283 (Bitmap)720 2628 w
         7284 10 R f
         7285 (. A)1 153 1 1080 2628 t
         7286 10 CW f
         7287 (Frame)1264 2628 w
         7288 10 R f
         7289 (contains a list of)3 676 1 1595 2628 t
         7290 10 CW f
         7291 (Boxes)2302 2628 w
         7292 10 R f
         7293 ( win-)1 215(, each of which defines a horizontal strip of text in the)11 2223 2 2602 2628 t
         7294 ( A)1 126(dow \(see Figure 7\).)3 788 2 720 2748 t
         7295 10 CW f
         7296 (Box)1663 2748 w
         7297 10 R f
         7298 (has a character string)3 856 1 1872 2748 t
         7299 10 CW f
         7300 (str)2757 2748 w
         7301 10 R f
         7302 (, and a)2 271 1 2937 2748 t
         7303 10 CW f
         7304 (Rectangle rect)1 809 1 3237 2748 t
         7305 10 R f
         7306 (that defines the location)3 966 1 4074 2748 t
         7307 ( text in)2 280( \(The)1 239(of the strip in the window.)5 1060 3 720 2868 t
         7308 10 CW f
         7309 (str)2325 2868 w
         7310 10 R f
         7311 (is stored in the)3 592 1 2531 2868 t
         7312 10 CW f
         7313 (Box)3150 2868 w
         7314 10 R f
         7315 (separately from the)2 774 1 3357 2868 t
         7316 10 CW f
         7317 (Rasp)4158 2868 w
         7318 10 R f
         7319 (associated with)1 615 1 4425 2868 t
         7320 (the window's file, so)3 853 1 720 2988 t
         7321 10 CW f
         7322 (Boxes)1603 2988 w
         7323 10 R f
         7324 ( the)1 151( invariant is that the image of)6 1201( The)1 210(are self-contained.\))1 774 4 1933 2988 t
         7325 10 CW f
         7326 (Box)4298 2988 w
         7327 10 R f
         7328 (can be repro-)2 533 1 4507 2988 t
         7329 (duced by calling)2 660 1 720 3108 t
         7330 10 CW f
         7331 (string)1405 3108 w
         7332 10 R f
         7333 (with argument)1 581 1 1790 3108 t
         7334 10 CW f
         7335 (str)2397 3108 w
         7336 10 R f
         7337 (to draw the string in)4 809 1 2603 3108 t
         7338 10 CW f
         7339 (rect)3438 3108 w
         7340 10 R f
         7341 (, and the resulting picture fits per-)6 1362 1 3678 3108 t
         7342 (fectly within)1 509 1 720 3228 t
         7343 10 CW f
         7344 (rect)1255 3228 w
         7345 10 R f
         7346 ( other words, the)3 674(. In)1 159 2 1495 3228 t
         7347 10 CW f
         7348 (Boxes)2354 3228 w
         7349 10 R f
         7350 ( tiling may be compli-)4 889( The)1 206(define the tiling of the window.)5 1265 3 2680 3228 t
         7351 ( editors use horizontal scrolling to)5 1413( Some)1 288( of text, which are folded onto the next line.)9 1840(cated by long lines)3 779 4 720 3348 t
         7352 ( be)1 119(avoid this complication, but to be comfortable this technique requires that lines not)12 3329 2 720 3468 t
         7353 10 I f
         7354 (too)4193 3468 w
         7355 10 R f
         7356 (long;)4346 3468 w
         7357 10 CW f
         7358 (sam)4577 3468 w
         7359 10 R f
         7360 (has no)1 258 1 4782 3468 t
         7361 ( programs and terminals traditionally fold long)6 1907( and perhaps more importantly, Unix)5 1501( Also,)1 269(such restriction.)1 643 4 720 3588 t
         7362 (lines to make their contents fully visible.)6 1630 1 720 3708 t
         7363 (Two special kinds of)3 841 1 970 3864 t
         7364 10 CW f
         7365 (Boxes)1839 3864 w
         7366 10 R f
         7367 ( and tabs)2 361( Newlines)1 430(contain a single character: either a newline or a tab.)9 2082 3 2167 3864 t
         7368 ( newline)1 353( A)1 134(are white space.)2 663 3 720 3984 t
         7369 10 CW f
         7370 (Box)1907 3984 w
         7371 10 R f
         7372 ( following)1 425(always extends to the right edge of the window, forcing the)10 2491 2 2124 3984 t
         7373 10 CW f
         7374 (Box)720 4104 w
         7375 10 R f
         7376 ( on where it is located: it forces the next)9 1618( width of a tab depends)5 934( The)1 206(to the next line.)3 625 4 926 4104 t
         7377 10 CW f
         7378 (Box)4336 4104 w
         7379 10 R f
         7380 (to begin at a)3 497 1 4543 4104 t
         7381 ( a minimum width equivalent to a blank \(blanks are drawn by)11 2472( also have)2 403( Tabs)1 246(tab location.)1 496 4 720 4224 t
         7382 10 CW f
         7383 (string)4363 4224 w
         7384 10 R f
         7385 (and are)1 291 1 4749 4224 t
         7386 (not treated specially\); newlines have a minimum width of zero.)9 2524 1 720 4344 t
         7387 929 4506 929 4614 Dl
         7388 1505 4506 929 4506 Dl
         7389 1505 4614 1505 4506 Dl
         7390 929 4614 1505 4614 Dl
         7391 1505 4506 1505 4614 Dl
         7392 2700 4506 1505 4506 Dl
         7393 2700 4614 2700 4506 Dl
         7394 1505 4614 2700 4614 Dl
         7395 10 CW f
         7396 (for\(i=0; i<NL; i++\){)2 1200 1 1502 4580 t
         7397 2700 4506 2700 4614 Dl
         7398 3132 4506 2700 4506 Dl
         7399 3132 4614 3132 4506 Dl
         7400 2700 4614 3132 4614 Dl
         7401 3132 4506 3132 4614 Dl
         7402 4471 4506 3132 4506 Dl
         7403 4471 4614 4471 4506 Dl
         7404 3132 4614 4471 4614 Dl
         7405 (/* for each element */)4 1320 1 3141 4580 t
         7406 4471 4506 4471 4614 Dl
         7407 4831 4506 4471 4506 Dl
         7408 4831 4614 4831 4506 Dl
         7409 4471 4614 4831 4614 Dl
         7410 8 I f
         7411 ( line of text showing its)5 747(Figure 7. A)2 368 2 720 4852 t
         7412 8 CW f
         7413 (Boxes)1857 4852 w
         7414 8 I f
         7415 ( first two blank)3 487(. The)1 182 2 2097 4852 t
         7416 8 CW f
         7417 (Boxes)2788 4852 w
         7418 8 I f
         7419 ( are handled)2 407( Spaces)1 263(contain tabs; the last contains a newline.)6 1320 3 3050 4852 t
         7420 (as ordinary characters.)2 750 1 720 4952 t
         7421 10 R f
         7422 (The update algorithms always use the)5 1631 1 970 5228 t
         7423 10 CW f
         7424 (Bitmap)2651 5228 w
         7425 10 R f
         7426 (image of the text \(either the display or cache)8 1979 1 3061 5228 t
         7427 10 CW f
         7428 (Bitmap)720 5348 w
         7429 10 R f
         7430 ( examine the characters within a)5 1318(\); they never)2 518 2 1080 5348 t
         7431 10 CW f
         7432 (Box)2947 5348 w
         7433 10 R f
         7434 (except when the)2 660 1 3158 5348 t
         7435 10 CW f
         7436 (Box)3849 5348 w
         7437 10 R f
         7438 (needs to be split in two.)5 980 1 4060 5348 t
         7439 ( the window consists of a tiling of)7 1365(Before a change,)2 672 2 720 5468 t
         7440 10 CW f
         7441 (Boxes)2783 5468 w
         7442 10 R f
         7443 (; after the change the window is tiled differently.)8 1957 1 3083 5468 t
         7444 ( algorithms are not strictly)4 1075( The)1 210( rearrange the tiles in place, without backup storage.)8 2124(The update algorithms)2 911 4 720 5588 t
         7445 ( move)1 250(optimal \320 for example, they can clear a pixel that is later going to be written upon \320 but they never)20 4070 2 720 5708 t
         7446 ( that doesn't need to be moved, and they move each tile at most once.)14 2975(a tile)1 212 2 720 5828 t
         7447 10 CW f
         7448 (Frinsert)3971 5828 w
         7449 10 R f
         7450 (on a Blit can)3 550 1 4490 5828 t
         7451 (absorb over a thousand characters a second if the strings being inserted are a few tens of characters long.)18 4174 1 720 5948 t
         7452 (Consider)970 6104 w
         7453 10 CW f
         7454 (frdelete)1368 6104 w
         7455 10 R f
         7456 ( job is to delete a substring from a)8 1456(. Its)1 187 2 1848 6104 t
         7457 10 CW f
         7458 (Frame)3528 6104 w
         7459 10 R f
         7460 ( the image of the)4 723(and restore)1 452 2 3865 6104 t
         7461 10 CW f
         7462 (Frame)720 6224 w
         7463 10 R f
         7464 ( comprising possibly a partial line,)5 1428( image of a substring has a peculiar shape \(see Figure 2\))11 2352(. The)1 240 3 1020 6224 t
         7465 ( reference, call this the)4 937( For)1 197( line.)1 208(zero or more full lines, and possibly a final partial)9 2060 4 720 6344 t
         7466 10 I f
         7467 (Z-shape.)4155 6344 w
         7468 10 CW f
         7469 (Frdelete)4560 6344 w
         7470 10 R f
         7471 ( necessary, the)2 584(begins by splitting, if)3 854 2 720 6464 t
         7472 10 CW f
         7473 (Boxes)2183 6464 w
         7474 10 R f
         7475 (containing the ends of the substring so the substring begins and)10 2532 1 2508 6464 t
         7476 (ends on)1 311 1 720 6584 t
         7477 10 CW f
         7478 (Box)1059 6584 w
         7479 10 R f
         7480 ( Z-shape is)2 446( the substring is being deleted, its image is not needed, so the)12 2479(boundaries. Because)1 848 3 1267 6584 t
         7481 ( tiles \(that is, the images of)6 1092( Then,)1 282(then cleared.)1 511 3 720 6704 t
         7482 10 CW f
         7483 (Boxes)2632 6704 w
         7484 10 R f
         7485 (\) are copied, using)3 743 1 2932 6704 t
         7486 10 CW f
         7487 (bitblt)3701 6704 w
         7488 10 R f
         7489 (, from immediately after)3 979 1 4061 6704 t
         7490 ( \()1 92(the Z-shape to the beginning of the Z-shape, resulting in a new Z-shape.)12 2986 2 720 6824 t
         7491 10 CW f
         7492 (Boxes)3798 6824 w
         7493 10 R f
         7494 (whose contents would)2 908 1 4132 6824 t
         7495 (span two lines in the new position must first be split.\))10 2142 1 720 6944 t
         7496 ( the)1 158(Copying the remainder of)3 1059 2 970 7100 t
         7497 10 CW f
         7498 (Frame)2223 7100 w
         7499 10 R f
         7500 (tile by tile this way will clearly accomplish the deletion but)10 2481 1 2559 7100 t
         7501 ( new)1 221(eventually, typically when the copying algorithm encounters a tab or newline, the old and)13 3984 2 720 7220 t
         7502 10 CW f
         7503 (x)4980 7220 w
         7504 cleartomark
         7505 showpage
         7506 saveobj restore
         7507 %%EndPage: 23 23
         7508 %%Page: 24 24
         7509 /saveobj save def
         7510 mark
         7511 24 pagesetup
         7512 10 R f
         7513 (- 24 -)2 216 1 2772 480 t
         7514 ( correspondence implies that the Z-shape has its)7 2021( This)1 243( same.)1 270(coordinates of the tile to be copied are the)8 1786 4 720 840 t
         7515 ( aligned vertically, and a sequence of at most two)9 2073(beginning and ending edges)3 1154 2 720 960 t
         7516 10 CW f
         7517 (bitblts)3983 960 w
         7518 10 R f
         7519 (can be used to)3 601 1 4439 960 t
         7520 ( clear out the resulting empty space at the bottom of the win-)12 2526( last step is to)4 573( The)1 212(copy the remaining tiles.)3 1009 4 720 1080 t
         7521 ( number of complete lines in the Z-shape closed by the final)11 2476(dow; the number of lines to be cleared is the)9 1844 2 720 1200 t
         7522 10 CW f
         7523 (bitblts.)720 1320 w
         7524 10 R f
         7525 ( horizontally adjacent)2 877(The final step is to merge)5 1043 2 1230 1320 t
         7526 10 CW f
         7527 (Boxes)3181 1320 w
         7528 10 R f
         7529 ( complete source to)3 797( The)1 211(of plain text.)2 520 3 3512 1320 t
         7530 10 CW f
         7531 (frdelete)720 1440 w
         7532 10 R f
         7533 (is less than 100 lines of C.)6 1053 1 1225 1440 t
         7534 10 CW f
         7535 (frinsert)970 1596 w
         7536 10 R f
         7537 ( the)1 150(is more complicated because it must do four passes: one to construct)11 2760 2 1477 1596 t
         7538 10 CW f
         7539 (Box)4415 1596 w
         7540 10 R f
         7541 (list for the)2 417 1 4623 1596 t
         7542 ( one to reconnoitre, one to copy \(in opposite order to)10 2175(inserted string,)1 602 2 720 1716 t
         7543 10 CW f
         7544 (frdelete)3529 1716 w
         7545 10 R f
         7546 (\) the)1 187 1 4009 1716 t
         7547 10 CW f
         7548 (Boxes)4228 1716 w
         7549 10 R f
         7550 (to make the)2 480 1 4560 1716 t
         7551 ( though,)1 335( Overall,)1 381(hole for the new text, and finally one to copy the new text into place.)14 2849 3 720 1836 t
         7552 10 CW f
         7553 (frinsert)4317 1836 w
         7554 10 R f
         7555 (has a)1 210 1 4830 1836 t
         7556 (similar flavor to)2 676 1 720 1956 t
         7557 10 CW f
         7558 (frdelete)1437 1956 w
         7559 10 R f
         7560 (, and needn't be described further.)5 1445 1 1917 1956 t
         7561 10 CW f
         7562 (Frinsert)3428 1956 w
         7563 10 R f
         7564 (and its subsidiary routines)3 1092 1 3948 1956 t
         7565 (comprise 211 lines of C.)4 980 1 720 2076 t
         7566 (The terminal source code is 3024 lines of C, and the host source is 5797 lines.)15 3116 1 970 2232 t
         7567 10 B f
         7568 (Discussion)720 2472 w
         7569 (History)720 2712 w
         7570 10 R f
         7571 ( of)1 113(The immediate ancestor)2 967 2 720 2868 t
         7572 10 CW f
         7573 (sam)1830 2868 w
         7574 10 R f
         7575 (was the original text editor for the Blit, called)8 1863 1 2040 2868 t
         7576 10 CW f
         7577 (jim)3933 2868 w
         7578 10 R f
         7579 (.)4113 2868 w
         7580 10 CW f
         7581 (Sam)4193 2868 w
         7582 10 R f
         7583 (inherited)4403 2868 w
         7584 10 CW f
         7585 (jim)4788 2868 w
         7586 10 R f
         7587 ('s)4968 2868 w
         7588 (two-process structure and mouse language almost unchanged, but)7 2721 1 720 2988 t
         7589 10 CW f
         7590 (jim)3480 2988 w
         7591 10 R f
         7592 (suffered from several drawbacks)3 1342 1 3698 2988 t
         7593 ( addressed in the design of)5 1112(that were)1 377 2 720 3108 t
         7594 10 CW f
         7595 (sam)2244 3108 w
         7596 10 R f
         7597 ( most important of these was the lack of a command lan-)11 2376(. The)1 240 2 2424 3108 t
         7598 (guage. Although)1 694 1 720 3228 t
         7599 10 CW f
         7600 (jim)1442 3228 w
         7601 10 R f
         7602 ( direct help with large or repetitive)6 1398(was easy to use for simple editing, it provided no)9 1992 2 1650 3228 t
         7603 ( but this was no)4 640( it provided a command to pass selected text through a shell pipeline,)12 2785( Instead,)1 365(editing tasks.)1 530 4 720 3348 t
         7604 (more satisfactory than could be expected of a stopgap measure.)9 2527 1 720 3468 t
         7605 10 CW f
         7606 (Jim)970 3624 w
         7607 10 R f
         7608 ( interface to text, and)4 877(was written primarily as a vehicle for experimenting with a mouse-based)10 2981 2 1182 3624 t
         7609 (the experiment was successful.)3 1263 1 720 3744 t
         7610 10 CW f
         7611 (Jim)2041 3744 w
         7612 10 R f
         7613 (had some spin-offs:)2 804 1 2254 3744 t
         7614 10 CW f
         7615 (mux)3091 3744 w
         7616 10 R f
         7617 (, the second window system for the Blit, is)8 1769 1 3271 3744 t
         7618 ( the terminal part of)4 829(essentially a multiplexed version of)4 1453 2 720 3864 t
         7619 10 CW f
         7620 (jim)3036 3864 w
         7621 10 R f
         7622 (; and the debugger)3 767 1 3216 3864 t
         7623 10 CW f
         7624 (pi)4017 3864 w
         7625 10 R f
         7626 ('s user interface)2 654 1 4137 3864 t
         7627 6 R f
         7628 (20)4791 3814 w
         7629 10 R f
         7630 (was)4885 3864 w
         7631 (closely modeled on)2 785 1 720 3984 t
         7632 10 CW f
         7633 (jim)1534 3984 w
         7634 10 R f
         7635 ( after a couple of years,)5 955('s. But)1 296 2 1714 3984 t
         7636 10 CW f
         7637 (jim)2994 3984 w
         7638 10 R f
         7639 ( maintain and limiting)3 896(had become difficult to)3 941 2 3203 3984 t
         7640 (to use, and its replacement was overdue.)6 1613 1 720 4104 t
         7641 (I began the design of)4 837 1 970 4260 t
         7642 10 CW f
         7643 (sam)1832 4260 w
         7644 10 R f
         7645 (by asking)1 386 1 2037 4260 t
         7646 10 CW f
         7647 (jim)2448 4260 w
         7648 10 R f
         7649 ( was probably a mistake;)4 997( This)1 229( they wanted.)2 537(customers what)1 624 4 2653 4260 t
         7650 ( of the)2 259(the answers were essentially a list of features to be found in other editors, which did not provide any)18 4061 2 720 4380 t
         7651 ( for a ``global substitute,'' but no)6 1359( instance, one common request was)5 1434( For)1 193(guiding principles I was seeking.)4 1334 4 720 4500 t
         7652 ( was looking for a scheme that would sup-)8 1724( I)1 87( it within a cut-and-paste editor.)5 1296(one suggested how to provide)4 1213 4 720 4620 t
         7653 ( were)1 225( Ideas)1 267( context of some general command language.)6 1852(port such specialized features comfortably in the)6 1976 4 720 4740 t
         7654 ( line lengths)2 499(not forthcoming, though, particularly given my insistence on removing all limits on file sizes,)13 3821 2 720 4860 t
         7655 ( a region of the screen that)6 1088( worse, I recognized that, since the mouse could easily indicate)10 2557( Even)1 259(and so on.)2 416 4 720 4980 t
         7656 (was not an integral number of lines, the command language would best forget about newlines altogether,)15 4320 1 720 5100 t
         7657 (and that meant the command language had to treat the file as a single string, not an array of lines.)19 3885 1 720 5220 t
         7658 ( I)1 96( very far and it was time to try building.)9 1710(Eventually, I decided that thinking was not getting me)8 2264 3 970 5376 t
         7659 ( of)1 115(knew that the terminal part could be built easily \320 that part)11 2477 2 720 5496 t
         7660 10 CW f
         7661 (jim)3344 5496 w
         7662 10 R f
         7663 (behaved acceptably well \320 and that)5 1484 1 3556 5496 t
         7664 ( hard work was going to be in the host part: the file interface, command interpreter and so on.)18 3858(most of the)2 462 2 720 5616 t
         7665 (Moreover, I had some ideas about how the architecture of)9 2386 1 720 5736 t
         7666 10 CW f
         7667 (jim)3140 5736 w
         7668 10 R f
         7669 (could be improved without destroying its)5 1687 1 3353 5736 t
         7670 ( I began)2 331( So)1 161( worked out as well as I had hoped.)8 1451(basic structure, which I liked in principle but which hadn't)9 2377 4 720 5856 t
         7671 ( with the way)3 556(by designing the file data structure, starting)6 1770 2 720 5976 t
         7672 10 CW f
         7673 (jim)3076 5976 w
         7674 10 R f
         7675 (worked \320 comparable to a single structure)6 1754 1 3286 5976 t
         7676 (merging)720 6096 w
         7677 10 CW f
         7678 (Disc)1080 6096 w
         7679 10 R f
         7680 (and)1347 6096 w
         7681 10 CW f
         7682 (Buffer)1518 6096 w
         7683 10 R f
         7684 ( cache more general \320 and thinking about how glo-)9 2109(, which I split to make the)6 1053 2 1878 6096 t
         7685 ( answer was clearly that it had to be done in two passes, and the)14 2618( The)1 210( implemented.)1 577(bal substitute could be)3 915 4 720 6216 t
         7686 (transcript-oriented implementation fell out naturally.)4 2106 1 720 6336 t
         7687 10 CW f
         7688 (Sam)970 6492 w
         7689 10 R f
         7690 ( data structures and algorithms for manipulating text,)7 2190(was written bottom-up, starting from the)5 1666 2 1184 6492 t
         7691 ( retrospect, it turned out)4 973( In)1 138(through the command language and up to the code for maintaining the display.)12 3209 3 720 6612 t
         7692 ( were several times when I had)6 1247( There)1 284( general.)1 345(well, but this implementation method is not recommended in)8 2444 4 720 6732 t
         7693 ( command language, in)3 938( The)1 207( proceed with it.)3 655(a large body of interesting code assembled and no clue how to)11 2520 4 720 6852 t
         7694 ( beginning)1 429(particular, took almost a year to figure out, but can be implemented \(given what was there at the)17 3891 2 720 6972 t
         7695 ( inventing the)2 568( Similarly,)1 457(of that year\) in a day or two.)7 1199 3 720 7092 t
         7696 10 CW f
         7697 (Rasp)2978 7092 w
         7698 10 R f
         7699 (data structure delayed the connection of the)6 1788 1 3252 7092 t
         7700 (host and terminal pieces by another few months.)7 1978 1 720 7212 t
         7701 10 CW f
         7702 (Sam)2754 7212 w
         7703 10 R f
         7704 (took about two years to write, although only about)8 2074 1 2966 7212 t
         7705 cleartomark
         7706 showpage
         7707 saveobj restore
         7708 %%EndPage: 24 24
         7709 %%Page: 25 25
         7710 /saveobj save def
         7711 mark
         7712 25 pagesetup
         7713 10 R f
         7714 (- 25 -)2 216 1 2772 480 t
         7715 (four months were spent actually working on it.)7 1870 1 720 840 t
         7716 ( process was unusual: the subset of the protocol that maintains the)11 2661(Part of the design)3 705 2 970 996 t
         7717 10 CW f
         7718 (Rasp)4363 996 w
         7719 10 R f
         7720 (was simu-)1 410 1 4630 996 t
         7721 (lated, debugged and verified by an automatic protocol analyzer,)8 2568 1 720 1116 t
         7722 6 R f
         7723 (21)3288 1066 w
         7724 10 R f
         7725 ( rest)1 171( The)1 207( from the start.)3 594(and was bug-free)2 692 4 3376 1116 t
         7726 ( keeping menus up to date, was unfortunately too unwieldy for such)11 2757(of the protocol, concerned mostly with)5 1563 2 720 1236 t
         7727 ( in and)2 276(analysis, and was debugged by more traditional methods, primarily by logging in a file all messages)15 4044 2 720 1356 t
         7728 (out of the host.)3 600 1 720 1476 t
         7729 10 B f
         7730 (Reflections)720 1716 w
         7731 10 CW f
         7732 (Sam)720 1872 w
         7733 10 R f
         7734 ( of the computing science)4 1078(is essentially the only interactive editor used by the sixty or so members)12 3025 2 937 1872 t
         7735 ( same could not be said of)6 1055( The)1 207(research center in which I work.)5 1294 3 720 1992 t
         7736 10 CW f
         7737 (jim)3303 1992 w
         7738 10 R f
         7739 ( kept)1 198(; the lack of a command language)6 1359 2 3483 1992 t
         7740 ( of a user interface as comfortable as)7 1485( union)1 255( The)1 207(some people from adopting it.)4 1210 4 720 2112 t
         7741 10 CW f
         7742 (jim)3905 2112 w
         7743 10 R f
         7744 ('s with a command lan-)4 955 1 4085 2112 t
         7745 (guage as powerful as)3 851 1 720 2232 t
         7746 10 CW f
         7747 (ed)1600 2232 w
         7748 10 R f
         7749 ( to)1 108('s\262 is essential)2 591 2 1720 2232 t
         7750 10 CW f
         7751 (sam)2449 2232 w
         7752 10 R f
         7753 ( When)1 293('s success.)1 426 2 2629 2232 t
         7754 10 CW f
         7755 (sam)3378 2232 w
         7756 10 R f
         7757 (was first made available to the)5 1242 1 3588 2232 t
         7758 10 CW f
         7759 (jim)4860 2232 w
         7760 10 R f
         7761 ( the months that followed, even)5 1315( In)1 144( to it within two or three days.)7 1282(community, almost everyone switched)3 1579 4 720 2352 t
         7762 (people who had never adopted)4 1219 1 720 2472 t
         7763 10 CW f
         7764 (jim)1964 2472 w
         7765 10 R f
         7766 (started using)1 508 1 2169 2472 t
         7767 10 CW f
         7768 (sam)2702 2472 w
         7769 10 R f
         7770 (exclusively.)2907 2472 w
         7771 (To be honest,)2 555 1 970 2628 t
         7772 10 CW f
         7773 (ed)1558 2628 w
         7774 10 R f
         7775 (still gets occasional use, but usually when something quick needs to be done and)13 3329 1 1711 2628 t
         7776 (the overhead of downloading the terminal part of)7 1981 1 720 2748 t
         7777 10 CW f
         7778 (sam)2729 2748 w
         7779 10 R f
         7780 ( as a `line' editor,)4 709( Also,)1 266(isn't worth the trouble.)3 922 3 2936 2748 t
         7781 10 CW f
         7782 (sam)4860 2748 w
         7783 (-d)720 2868 w
         7784 10 R f
         7785 ( it is)2 183( But)1 200( line editor.)2 468(is a bit odd; when using a good old ASCII terminal, it's comforting to have a true)16 3320 4 869 2868 t
         7786 (fair to say that)3 598 1 720 2988 t
         7787 10 CW f
         7788 (sam)1351 2988 w
         7789 10 R f
         7790 ('s command language has displaced)4 1464 1 1531 2988 t
         7791 10 CW f
         7792 (ed)3027 2988 w
         7793 10 R f
         7794 ('s for most of the complicated editing that has)8 1893 1 3147 2988 t
         7795 (kept line editors \(that is, command-driven editors\) with us.)8 2348 1 720 3108 t
         7796 10 CW f
         7797 (Sam)970 3264 w
         7798 10 R f
         7799 ('s command language is even fancier than)6 1745 1 1150 3264 t
         7800 10 CW f
         7801 (ed)2931 3264 w
         7802 10 R f
         7803 ('s, and most)2 508 1 3051 3264 t
         7804 10 CW f
         7805 (sam)3595 3264 w
         7806 10 R f
         7807 (customers don't come near to)4 1229 1 3811 3264 t
         7808 ( think the answer is yes, for two reasons.)8 1625( I)1 83( it need to be so sophisticated?)6 1221( Does)1 255(using all its capabilities.)3 967 5 720 3384 t
         7809 (First, the)1 362 1 970 3540 t
         7810 10 I f
         7811 (model)1363 3540 w
         7812 10 R f
         7813 (for)1638 3540 w
         7814 10 CW f
         7815 (sam)1786 3540 w
         7816 10 R f
         7817 ('s command language is really relatively simple, and certainly simpler than)10 3074 1 1966 3540 t
         7818 (that of)1 262 1 720 3660 t
         7819 10 CW f
         7820 (ed)1011 3660 w
         7821 10 R f
         7822 ( instance, there is only one kind of textual loop in)10 2009(. For)1 217 2 1131 3660 t
         7823 10 CW f
         7824 (sam)3385 3660 w
         7825 10 R f
         7826 (\320 the)1 250 1 3593 3660 t
         7827 10 CW f
         7828 (x)3871 3660 w
         7829 10 R f
         7830 (command \320 while)2 772 1 3959 3660 t
         7831 10 CW f
         7832 (ed)4759 3660 w
         7833 10 R f
         7834 (has)4907 3660 w
         7835 (three \(the)1 381 1 720 3780 t
         7836 10 CW f
         7837 (g)1128 3780 w
         7838 10 R f
         7839 ( implicit loop over lines in multi-line substi-)7 1792(command, the global flag on substitutions, and the)7 2033 2 1215 3780 t
         7840 (tutions\). Also,)1 598 1 720 3900 t
         7841 10 CW f
         7842 (ed)1346 3900 w
         7843 10 R f
         7844 ( within lines, but in)4 784('s substitute command is necessary to make changes)7 2115 2 1466 3900 t
         7845 10 CW f
         7846 (sam)4392 3900 w
         7847 10 R f
         7848 (the)4599 3900 w
         7849 10 CW f
         7850 (s)4748 3900 w
         7851 10 R f
         7852 (com-)4835 3900 w
         7853 (mand is more of a familiar convenience than a necessity;)9 2270 1 720 4020 t
         7854 10 CW f
         7855 (c)3015 4020 w
         7856 10 R f
         7857 (and)3100 4020 w
         7858 10 CW f
         7859 (t)3269 4020 w
         7860 10 R f
         7861 (can do all the work.)4 790 1 3354 4020 t
         7862 ( to be about as powerful as)6 1082(Second, given a community that expects an editor)7 1999 2 970 4176 t
         7863 10 CW f
         7864 (ed)4078 4176 w
         7865 10 R f
         7866 (, it's hard to see how)5 842 1 4198 4176 t
         7867 10 CW f
         7868 (sam)720 4296 w
         7869 10 R f
         7870 ( want to do ``global substi-)5 1150( People)1 336( that expectation.)2 713(could really be much simpler and still satisfy)7 1901 4 940 4296 t
         7871 ( sophistication)1 587( The)1 211( fancy changes.)2 629(tutes,'' and most are content to have the recipe for that and a few other)14 2893 4 720 4416 t
         7872 ( do global substitutes)3 848(of the command language is really just a veneer over a design that makes it possible to)16 3472 2 720 4536 t
         7873 ( always want something more, however, and it's gratifying to be able)11 2831( people will)2 482( Some)1 283(in a screen editor.)3 724 4 720 4656 t
         7874 ( real power of)3 595( The)1 218(to provide it.)2 542 3 720 4776 t
         7875 10 CW f
         7876 (sam)2113 4776 w
         7877 10 R f
         7878 ('s command language comes from composability of the operators,)8 2747 1 2293 4776 t
         7879 ( other words,)2 542( In)1 142( orthogonal to the underlying model.)5 1511(which is by nature)3 759 4 720 4896 t
         7880 10 CW f
         7881 (sam)3708 4896 w
         7882 10 R f
         7883 (is not itself complex, but it)5 1118 1 3922 4896 t
         7884 ( you don't want to do anything complex, you can ignore the complexity)12 2915( If)1 120( things possible.)2 656(makes complex)1 629 4 720 5016 t
         7885 (altogether, and many people do so.)5 1395 1 720 5136 t
         7886 (Sometimes I am asked the opposite question: why didn't I just make)11 2801 1 970 5292 t
         7887 10 CW f
         7888 (sam)3802 5292 w
         7889 10 R f
         7890 (a real programmable edi-)3 1026 1 4014 5292 t
         7891 ( main reason is a matter of taste: I like the editor to be the)14 2400( The)1 212( macros and variables and so on?)6 1361(tor, with)1 347 4 720 5412 t
         7892 ( a wor-)2 284( is one technical reason, though: programmability in editors is largely)10 2778( There)1 282(same every time I use it.)5 976 4 720 5532 t
         7893 ( usually short-)2 604( editors are used to make particular,)6 1529( Programmable)1 655(karound for insufficient interactivity.)3 1532 4 720 5652 t
         7894 ( things are generally easy)4 1038( If)1 122( providing shorthands for common actions.)5 1751(term, things easy to do, such as by)7 1409 4 720 5772 t
         7895 (to do in the first place, shorthands are not as helpful.)10 2197 1 720 5892 t
         7896 10 CW f
         7897 (Sam)2977 5892 w
         7898 10 R f
         7899 (makes common editing operations very easy,)5 1848 1 3192 5892 t
         7900 ( Also,)1 274( to complex editing problems seem commensurate with the problems themselves.)10 3350(and the solutions)2 696 3 720 6012 t
         7901 (the ability to edit the)4 840 1 720 6132 t
         7902 10 CW f
         7903 (sam)1588 6132 w
         7904 10 R f
         7905 ( only takes a mouse button click)6 1300(window makes it easy to repeat commands \320 it)8 1944 2 1796 6132 t
         7906 (to execute a command again.)4 1161 1 720 6252 t
         7907 8 S1 f
         7908 (__________________)720 6900 w
         7909 8 R f
         7910 (\262 The people who criticize)4 872 1 720 6990 t
         7911 8 CW f
         7912 (ed)1618 6990 w
         7913 8 R f
         7914 ( and its close relative)4 698(as an interactive program often forget that it)7 1441 2 1740 6990 t
         7915 8 CW f
         7916 (sed)3906 6990 w
         7917 4 R f
         7918 (7)4050 6950 w
         7919 8 R f
         7920 (still thrive as pro-)3 583 1 4097 6990 t
         7921 ( strength of these programs is independent of their convenience for interactive editing.)12 2742( The)1 164(grammable editors.)1 613 3 720 7080 t
         7922 cleartomark
         7923 showpage
         7924 saveobj restore
         7925 %%EndPage: 25 25
         7926 %%Page: 26 26
         7927 /saveobj save def
         7928 mark
         7929 26 pagesetup
         7930 10 R f
         7931 (- 26 -)2 216 1 2772 480 t
         7932 10 B f
         7933 (Pros and cons)2 595 1 720 840 t
         7934 10 CW f
         7935 (Sam)720 996 w
         7936 10 R f
         7937 ( the good things is the idea of struc-)8 1472( Among)1 355( its share of problems.)4 905(has several other good points, and)5 1379 4 929 996 t
         7938 ( were arrived at serendipi-)4 1054( They)1 258(tural regular expressions, whose usefulness has only begun to be explored.)10 3008 3 720 1116 t
         7939 (tously when I attempted to distill the essence of)8 1936 1 720 1236 t
         7940 10 CW f
         7941 (ed)2685 1236 w
         7942 10 R f
         7943 ( global substitution and recognized that)5 1599('s way of doing)3 636 2 2805 1236 t
         7944 (the looping command in)3 975 1 720 1356 t
         7945 10 CW f
         7946 (ed)1720 1356 w
         7947 10 R f
         7948 (was implicitly imposing a structure \(an array of lines\) on the file.)11 2602 1 1865 1356 t
         7949 (Another of)1 444 1 970 1512 t
         7950 10 CW f
         7951 (sam)1448 1512 w
         7952 10 R f
         7953 ( used an editor with a true)6 1097( had never before)3 721( I)1 92('s good things is its undo capability.)6 1502 4 1628 1512 t
         7954 ( Undo)1 276(undo, but I would never go back now.)7 1545 2 720 1632 t
         7955 10 I f
         7956 (must)2570 1632 w
         7957 10 R f
         7958 ( exam-)1 278( For)1 193(be done well, but if it is, it can be relied on.)11 1781 3 2788 1632 t
         7959 ( not sure how to write some intricate command, because if you make a)13 2869(ple, it's safe to experiment if you're)6 1451 2 720 1752 t
         7960 ( from writing)2 545( learned two things about undo)5 1270( I)1 90(mistake, it can be fixed simply and reliably.)7 1800 4 720 1872 t
         7961 10 CW f
         7962 (sam)4456 1872 w
         7963 10 R f
         7964 (: first, it's)2 404 1 4636 1872 t
         7965 ( the system)2 458(easy to provide if you design it in from the beginning, and second, it's necessary, particularly if)16 3862 2 720 1992 t
         7966 (has some subtle properties that may be unfamiliar or error-prone for users.)11 2971 1 720 2112 t
         7967 10 CW f
         7968 (Sam)970 2268 w
         7969 10 R f
         7970 ( avoids all fixed-size tables and data)6 1519( it)1 92( Because)1 393('s lack of internal limits and sizes is a virtue.)9 1886 4 1150 2268 t
         7971 (structures,)720 2388 w
         7972 10 CW f
         7973 (sam)1159 2388 w
         7974 10 R f
         7975 ( More-)1 299( to make global changes to files that some of our other tools cannot even read.)15 3117(is able)1 259 3 1365 2388 t
         7976 ( admit)1 255(over, the design keeps the performance linear when doing such operations, although I must)13 3648 2 720 2508 t
         7977 10 CW f
         7978 (sam)4650 2508 w
         7979 10 R f
         7980 (does)4857 2508 w
         7981 (get slow when editing a huge file.)6 1351 1 720 2628 t
         7982 ( is poorly integrated into the surrounding)6 1680( the most obvious is that it)6 1093( Externally,)1 497(Now, the problems.)2 800 4 970 2784 t
         7983 ( design, the user interface in)5 1135( By)1 169(window system.)1 653 3 720 2904 t
         7984 10 CW f
         7985 (sam)2704 2904 w
         7986 10 R f
         7987 (feels almost identical to that of)5 1245 1 2911 2904 t
         7988 10 CW f
         7989 (mux)4183 2904 w
         7990 10 R f
         7991 (, but a thick wall)4 677 1 4363 2904 t
         7992 (separates text in)2 655 1 720 3024 t
         7993 10 CW f
         7994 (sam)1406 3024 w
         7995 10 R f
         7996 (from the programs running in)4 1206 1 1617 3024 t
         7997 10 CW f
         7998 (mux)2854 3024 w
         7999 10 R f
         8000 ( instance, the `snarf buffer' in)5 1220(. For)1 221 2 3034 3024 t
         8001 10 CW f
         8002 (sam)4507 3024 w
         8003 10 R f
         8004 (must be)1 321 1 4719 3024 t
         8005 ( that in)2 284(maintained separately from)2 1100 2 720 3144 t
         8006 10 CW f
         8007 (mux)2132 3144 w
         8008 10 R f
         8009 ( is regrettable, but probably necessary given the unusual con-)9 2472(. This)1 256 2 2312 3144 t
         8010 (figuration of the system, with a programmable terminal on the far end of an RS-232 link.)15 3554 1 720 3264 t
         8011 10 CW f
         8012 (Sam)970 3420 w
         8013 10 R f
         8014 ( it was written over such a long time, and has)10 1846( But)1 199( it.)1 110(is reliable; otherwise, people wouldn't use)5 1707 4 1178 3420 t
         8015 ( to clean up the code and remove)7 1323(so many new \(to me\) ideas in it, that I would like to see it done over again)17 2997 2 720 3540 t
         8016 ( worst part is in the interconnection of the host)9 1898( The)1 209( problems in the implementation.)4 1341(many of the lingering)3 872 4 720 3660 t
         8017 ( a redesign for a more conventional window sys-)8 1946(and terminal parts, which might even be able to go away in)11 2374 2 720 3780 t
         8018 ( of the connec-)3 598( program must be split in two to use the terminal effectively, but the low bandwidth)15 3342(tem. The)1 380 3 720 3900 t
         8019 ( design if performance is to be acceptable.)7 1712(tion forces the separation to occur in an inconvenient part of the)11 2608 2 720 4020 t
         8020 ( procedure call protocol driven by the host, emitting only graphics commands, would be)13 3638(A simple remote)2 682 2 720 4140 t
         8021 ( the other hand, if the terminal)6 1284( On)1 184(easy to write but wouldn't have nearly the necessary responsiveness.)9 2852 3 720 4260 t
         8022 ( simpler file services from the host, regular expression searches would)10 2868(were in control and requested much)5 1452 2 720 4380 t
         8023 ( A)1 131( would be unreasonably slow.)4 1226(require that the terminal read the entire file over its RS-232 link, which)12 2963 3 720 4500 t
         8024 ( retrospect, the communications protocol)4 1658( In)1 139(compromise in which either end can take control is necessary.)9 2523 3 720 4620 t
         8025 ( designed and verified formally, although I do not know of any tool that can adequately)15 3609(should have been)2 711 2 720 4740 t
         8026 (relate the protocol to its implementation.)5 1627 1 720 4860 t
         8027 (Not all of)2 385 1 970 5016 t
         8028 10 CW f
         8029 (sam)1382 5016 w
         8030 10 R f
         8031 ( \(vener-)1 314( Some)1 280('s users are comfortable with its command language, and few are adept.)11 2884 3 1562 5016 t
         8032 ( a sort of ``)4 471(able\) people use)2 664 2 720 5136 t
         8033 10 CW f
         8034 (ed)1855 5136 w
         8035 10 R f
         8036 (subset'' of)1 431 1 2007 5136 t
         8037 10 CW f
         8038 (sam)2470 5136 w
         8039 10 R f
         8040 ('s command language, and even ask why)6 1680 1 2650 5136 t
         8041 10 CW f
         8042 (sam)4362 5136 w
         8043 10 R f
         8044 ('s command)1 498 1 4542 5136 t
         8045 (language is not exactly)3 942 1 720 5256 t
         8046 10 CW f
         8047 (ed)1695 5256 w
         8048 10 R f
         8049 ( course, is that)3 604( reason, of)2 434('s. \(The)1 343 3 1815 5256 t
         8050 10 CW f
         8051 (sam)3230 5256 w
         8052 10 R f
         8053 ('s model for text does not include new-)7 1630 1 3410 5256 t
         8054 ( central to)2 399(lines, which are)2 631 2 720 5376 t
         8055 10 CW f
         8056 (ed)1775 5376 w
         8057 10 R f
         8058 ( the text an array of newlines to the command language would be too)13 2759(. Making)1 386 2 1895 5376 t
         8059 ( editors, such as)3 647( Some)1 281( mouse.)1 314(much of a break from the seamless model provided by the)10 2338 4 720 5496 t
         8060 10 CW f
         8061 (vi)4328 5496 w
         8062 10 R f
         8063 (, are willing to)3 592 1 4448 5496 t
         8064 ( difficulty is that)3 706( The)1 219( though.\))1 375(make this break,)2 687 4 720 5616 t
         8065 10 CW f
         8066 (sam)2746 5616 w
         8067 10 R f
         8068 ('s syntax is so close to)5 967 1 2926 5616 t
         8069 10 CW f
         8070 (ed)3932 5616 w
         8071 10 R f
         8072 ('s that people believe it)4 988 1 4052 5616 t
         8073 10 I f
         8074 (should)720 5736 w
         8075 10 R f
         8076 ( in hindsight, that making)4 1050( thought, with some justification)4 1318( I)1 88(be the same.)2 506 4 1017 5736 t
         8077 10 CW f
         8078 (sam)4010 5736 w
         8079 10 R f
         8080 (similar to)1 387 1 4221 5736 t
         8081 10 CW f
         8082 (ed)4639 5736 w
         8083 10 R f
         8084 (would)4790 5736 w
         8085 ( and raised the users' expectations too)6 1573( I may have overstepped)4 1015( But)1 205(make it easier to learn and to accept.)7 1527 4 720 5856 t
         8086 ( hard to decide which way to resolve this problem.)9 2019(much. It's)1 430 2 720 5976 t
         8087 (Finally, there is a tradeoff in)5 1187 1 970 6132 t
         8088 10 CW f
         8089 (sam)2192 6132 w
         8090 10 R f
         8091 (that was decided by the environment in which it runs:)9 2235 1 2407 6132 t
         8092 10 CW f
         8093 (sam)4677 6132 w
         8094 10 R f
         8095 (is a)1 147 1 4893 6132 t
         8096 ( The)1 220( system there might instead be multiple single-file editors.)8 2444(multi-file editor, although in a different)5 1656 3 720 6252 t
         8097 ( choice)1 298( the)1 159( If)1 128(decision was made primarily because starting a new program in a Blit is time-consuming.)13 3735 4 720 6372 t
         8098 ( still choose the multi-file architecture, because it allows groups of)10 2700(could be made freely, however, I would)6 1620 2 720 6492 t
         8099 ( is delightful)2 518( It)1 117( a unit; the usefulness of the multi-file commands is incontrovertible.)10 2822(files to be handled as)4 863 4 720 6612 t
         8100 (to have the source to an entire program available at your fingertips.)11 2683 1 720 6732 t
         8101 cleartomark
         8102 showpage
         8103 saveobj restore
         8104 %%EndPage: 26 26
         8105 %%Page: 27 27
         8106 /saveobj save def
         8107 mark
         8108 27 pagesetup
         8109 10 R f
         8110 (- 27 -)2 216 1 2772 480 t
         8111 10 B f
         8112 (Acknowledgements)720 840 w
         8113 10 R f
         8114 (Tom Cargill suggested the idea behind the)6 1699 1 720 996 t
         8115 10 CW f
         8116 (Rasp)2445 996 w
         8117 10 R f
         8118 ( Wilson and Ken Thompson influ-)5 1384( Norman)1 379(data structure.)1 566 3 2711 996 t
         8119 ( improved by comments from Al Aho, Jon Bentley, Chris)9 2392( paper was)2 448( This)1 239(enced the command language.)3 1241 4 720 1116 t
         8120 (Fraser, Gerard Holzmann, Brian Kernighan, Ted Kowalski, Doug McIlroy and Dennis Ritchie.)11 3787 1 720 1236 t
         8121 9 B f
         8122 (REFERENCES)720 1476 w
         8123 8 R f
         8124 ( Pike, `The Blit: a multiplexed graphics terminal,')7 1588(1. R.)1 184 2 760 1648 t
         8125 8 I f
         8126 (AT&T Bell Labs. Tech. J.,)4 835 1 2552 1648 t
         8127 8 B f
         8128 (63)3407 1648 w
         8129 8 R f
         8130 (, \(8\), 1607-1631 \(1984\).)3 770 1 3487 1648 t
         8131 ( Johnson,)1 302(2. L.)1 179 2 760 1784 t
         8132 8 I f
         8133 (MacWrite,)1261 1784 w
         8134 8 R f
         8135 (Apple Computer Inc., Cupertino, Calif. 1983.)5 1453 1 1618 1784 t
         8136 ( Lampson, `Bravo Manual,' in)4 969(3. B.)1 184 2 760 1920 t
         8137 8 I f
         8138 (Alto User's Handbook,)2 738 1 1933 1920 t
         8139 8 R f
         8140 ( 1979.)1 220(pp. 31-62, Xerox Palo Alto Research Center, Palo Alto, Calif.)9 1975 2 2691 1920 t
         8141 ( Teitelman, `A tour through Cedar,')5 1138(4. W.)1 205 2 760 2056 t
         8142 8 I f
         8143 (IEEE Software,)1 497 1 2123 2056 t
         8144 8 B f
         8145 (1)2640 2056 w
         8146 8 R f
         8147 (\(2\), 44-73 \(1984\).)2 570 1 2700 2056 t
         8148 ( Gutknecht, `Concepts of the text editor Lara,')7 1473(5. J.)1 161 2 760 2192 t
         8149 8 I f
         8150 (Comm. ACM,)1 439 1 2414 2192 t
         8151 8 B f
         8152 (28)2873 2192 w
         8153 8 R f
         8154 (, \(9\), 942-960 \(1985\).)3 690 1 2953 2192 t
         8155 ( Telephone Laboratories,)2 797(6. Bell)1 243 2 760 2328 t
         8156 8 I f
         8157 (UNIX Programmer's Manual,)2 965 1 1820 2328 t
         8158 8 R f
         8159 (Holt, Rinehart and Winston, New York 1983.)6 1456 1 2805 2328 t
         8160 ( W. Kernighan and R. Pike,)5 882(7. B.)1 184 2 760 2464 t
         8161 8 I f
         8162 (The Unix Programming Environment,)3 1216 1 1846 2464 t
         8163 8 R f
         8164 (Prentice-Hall, Englewood Cliffs, New Jersey 1984.)5 1637 1 3082 2464 t
         8165 (8.)760 2600 w
         8166 8 I f
         8167 ( Programmer's Manual, Research Version, Ninth Edition, Volume 1,)8 2215(Unix Time-Sharing System)2 857 2 870 2600 t
         8168 8 R f
         8169 (AT&T Bell Laboratories, Murray)3 1076 1 3964 2600 t
         8170 (Hill, New Jersey 1986.)3 733 1 870 2700 t
         8171 (9.)760 2836 w
         8172 8 I f
         8173 ( Distribution, Volumes 1 and 2C,)5 1174(Unix Time-Sharing System Programmer's Manual, 4.1 Berkeley Software)7 2508 2 870 2836 t
         8174 8 R f
         8175 (University of)1 445 1 4595 2836 t
         8176 (California, Berkeley, Calif. 1981.)3 1068 1 870 2936 t
         8177 ( Pike, `Structural Regular Expressions,')4 1264(10. R.)1 224 2 720 3072 t
         8178 8 I f
         8179 (Proc. EUUG Spring Conf., Helsinki 1987,)5 1357 1 2229 3072 t
         8180 8 R f
         8181 (Eur. Unix User's Group, Buntingford, Herts,)5 1433 1 3607 3072 t
         8182 (UK 1987.)1 316 1 870 3172 t
         8183 ( Goldberg,)1 341(11. A.)1 228 2 720 3308 t
         8184 8 I f
         8185 (Smalltalk-80 \261 The Interactive Programming Environment,)5 1891 1 1309 3308 t
         8186 8 R f
         8187 (Addison-Wesley, Reading, Mass. 1984.)3 1269 1 3220 3308 t
         8188 ( Thompson, `Regular expression search algorithm,')5 1637(12. K.)1 228 2 720 3444 t
         8189 8 I f
         8190 (Comm. ACM,)1 439 1 2605 3444 t
         8191 8 B f
         8192 (11)3064 3444 w
         8193 8 R f
         8194 (, \(6\), 419-422 \(1968\).)3 690 1 3144 3444 t
         8195 ( V. Aho, J. E. Hopcroft and J. D. Ullman,)9 1344(13. A.)1 228 2 720 3580 t
         8196 8 I f
         8197 ( of Computer Algorithms,)3 826(The Design and Analysis)3 802 2 2314 3580 t
         8198 8 R f
         8199 (Addison-Wesley, Reading, Mass.)2 1075 1 3965 3580 t
         8200 (1974.)870 3680 w
         8201 ( W. Kernighan and D. M. Ritchie,)6 1085(14. B.)1 224 2 720 3816 t
         8202 8 I f
         8203 (The C Programming Language,)3 1023 1 2049 3816 t
         8204 8 R f
         8205 (Prentice-Hall, Englewood Cliffs, New Jersey 1978.)5 1637 1 3092 3816 t
         8206 ( M. Waite, `The cost of lexical analysis,')7 1297(15. W.)1 245 2 720 3952 t
         8207 8 I f
         8208 (Softw. Pract. Exp.,)2 599 1 2282 3952 t
         8209 8 B f
         8210 (16)2901 3952 w
         8211 8 R f
         8212 (, \(5\), 473-488 \(1986\).)3 690 1 2981 3952 t
         8213 ( W. Fraser, `A generalized text editor,')6 1232(16. C.)1 224 2 720 4088 t
         8214 8 I f
         8215 (Comm. ACM,)1 439 1 2196 4088 t
         8216 8 B f
         8217 (23)2655 4088 w
         8218 8 R f
         8219 (, \(3\), 154-158 \(1980\).)3 690 1 2735 4088 t
         8220 ( Pike, `Graphics in overlapping bitmap layers,')6 1493(17. R.)1 224 2 720 4224 t
         8221 8 I f
         8222 (ACM Trans. on Graph.,)3 765 1 2457 4224 t
         8223 8 B f
         8224 (2)3242 4224 w
         8225 8 R f
         8226 (, \(2\) 135-160 \(1983\).)3 670 1 3282 4224 t
         8227 ( J. Guibas and J. Stolfi, `A language for bitmap manipulation,')10 1990(18. L.)1 219 2 720 4360 t
         8228 8 I f
         8229 (ACM Trans. on Graph.,)3 765 1 2949 4360 t
         8230 8 B f
         8231 (1)3734 4360 w
         8232 8 R f
         8233 (, \(3\), 191-214 \(1982\).)3 690 1 3774 4360 t
         8234 ( Pike, B. Locanthi and J. Reiser, `Hardware/software trade-offs for bitmap graphics on the Blit,')14 3180(19. R.)1 224 2 720 4496 t
         8235 8 I f
         8236 (Softw. Pract. Exp.,)2 617 1 4153 4496 t
         8237 8 B f
         8238 (15)4799 4496 w
         8239 8 R f
         8240 (, \(2\),)1 161 1 4879 4496 t
         8241 (131-151 \(1985\).)1 518 1 870 4596 t
         8242 ( A. Cargill, `The feel of Pi,')6 886(20. T.)1 219 2 720 4732 t
         8243 8 I f
         8244 (Winter USENIX Conference Proceedings, Denver 1986,)5 1791 1 1845 4732 t
         8245 8 R f
         8246 (62-71, USENIX Assoc., El Cerrito, CA.)5 1283 1 3656 4732 t
         8247 ( J. Holzmann, `Tracing protocols,')4 1098(21. G.)1 228 2 720 4868 t
         8248 8 I f
         8249 (AT&T Tech. J.,)2 491 1 2066 4868 t
         8250 8 B f
         8251 (64)2577 4868 w
         8252 8 R f
         8253 (, \(10\), 2413-2434 \(1985\).)3 810 1 2657 4868 t
         8254 cleartomark
         8255 showpage
         8256 saveobj restore
         8257 %%EndPage: 27 27
         8258 %%Trailer
         8259 done
         8260 %%Pages: 27
         8261 %%DocumentFonts: Courier Times-Bold Times-Italic Times-Roman Times-Roman Symbol