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