forked from cstrahan/aduni
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProblem_Set_03.ps
More file actions
954 lines (950 loc) · 62.5 KB
/
Problem_Set_03.ps
File metadata and controls
954 lines (950 loc) · 62.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
%%Title: ps3.dvi
%%Pages: 3
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips ps3 -o ps3.ps
%DVIPSParameters: dpi=600, compressed
%DVIPSSource: TeX output 2001.01.18:0923
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{A length product length le{A length product exch 0
exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
%%EndProcSet
%%BeginProcSet: special.pro
%!
TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
{userdict/md get type/dicttype eq{userdict begin md length 10 add md
maxlength ge{/md md dup length 20 add dict copy def}if end md begin
/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
save N userdict maxlength dict begin/magscale true def normalscale
currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{
psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict
begin/SpecialSave save N gsave normalscale currentpoint TR
@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{
CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N
/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX
currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY
moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X
/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0
1 startangle endangle arc savematrix setmatrix}N end
%%EndProcSet
%%BeginProcSet: color.pro
%!
TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
%%EndProcSet
TeXDict begin 39158280 55380996 1000 600 600 (ps3.dvi)
@start
%DVIPSBitmapFont: Fa cmbx10 10 36
/Fa 36 122 df<49B4FC010F13E0017F13FC9038FF83FE4848C67E4848EB7F804848EB3F
C04848EB1FE0A2001F15F0A24848EB0FF8A3007F15FCA500FF15FEB3007F15FCA4003F15
F8A26D131F001F15F0A2000F15E06D133F000715C06C6CEB7F806C6CEBFF003900FF83FE
6DB45A011F13F0010190C7FC27387CB630>48 D<141E143E14FE1307133FB5FCA313CFEA
000FB3B3A6007FB61280A4213779B630>I<EB0FFC90387FFFC048B512F0000714FC390F
F03FFF261F800F1380263F000313C05AD9C00113E0486C6C13F07FA2ED7FF8A46C5A6C5A
000FC7FCC8FCEDFFF0A216E05C16C04A138016004A5A5D4A5A4A5A4A5AEC7F8092C7FC14
FEEB01F849481378495A495A495A013EC712F84914F05B4848130148B6FCA25A5A5A5A48
15E0B7FCA425377BB630>I<EB03FF011F13F0017F13FC3901FC07FF2603F00313804848
6C13C0496C13E0EA0FF001FC14F0121F7FA56C4814E0A23803F001C714C04A138016004A
5A4A5AEC3FF090380FFFC092C7FC15F090380007FE913801FF806E13C016E0ED7FF016F8
16FC153FA216FEEA1FC0487E487E487EA416FCA249EB7FF8127F01C0EBFFF06C4814E06C
6C4813C0260FFC0713806CB61200000114FC6C6C13F0010790C7FC27387CB630>I<ED07
C0150FA2151F153F157F15FFA25C5C5C5CA2141E5C147C5C5C495A495A1307495A5C131E
5B137C5B5B485A485A1207485A90C7FC121E5A127C5AB81280A4C70001EBC000AA0103B6
1280A429377DB630>I<001C15C0D81F80130701F8137F90B61280A216005D5D15F05D15
804AC7FC14F090C9FCA8EB07FE90383FFFE090B512F89038FC07FC9038E003FFD9800113
8090C713C0120EC813E0157F16F0A216F8A21206EA3F80EA7FE012FF7FA44914F0A26C48
13FF90C713E0007C15C06C5B6C491380D9C0071300390FF01FFE6CB512F8000114E06C6C
1380D90FF8C7FC25387BB630>I<EC0FF8ECFFFE0103EBFF8090390FF80FC090393FE003
E090397FC001F09038FF000F48EC1FF84848133F485A120F5B121FA2003FEC1FF0ED0FE0
4990C7FC127FA21408EC7FF039FFF1FFFC01F313FFD9F78013809039FF007FC049EB3FE0
4914F0ED1FF85B16FCA34914FEA5127FA5123F16FCA26C7E16F8000F143F6C6C14F0ED7F
E06C6C14C03A01FF81FF806C90B51200013F13FC010F13F00101138027387CB630>I<12
3C123EEA3FE090B71280A41700485D5E5E5EA25E007CC7EA0FC000784A5A4BC7FC00F814
7E48147C15FC4A5A4A5AC7485A5D140F4A5A143F92C8FC5C147E14FE1301A2495AA31307
A2130F5CA2131FA5133FA96D5A6D5A6D5A293A7BB830>I<49B47E010F13F0013F13FC90
38FE01FF3A01F8007F804848EB3FC04848EB1FE0150F485AED07F0121FA27FA27F7F01FE
EB0FE0EBFF809138E01FC06CEBF03F02FC13809138FF7F006C14FC6C5C7E6C14FE6D7F6D
14C04914E048B612F0EA07F848486C13F8261FE01F13FC383FC007EB8001007F6D13FE90
C7123F48140F48140715031501A21500A216FC7E6C14016D14F86C6CEB03F06D13076C6C
EB0FE0D80FFEEB7FC00003B61200C614FC013F13F00103138027387CB630>I<EB03FF01
1F13E0017F13F83901FF03FE4848C67E4848EB7F80484814C0001FEC3FE0123F49EB1FF0
127F16F8A212FF16FCA516FEA5007F143FA3123F157F6C7E000F14FF6C6C5A3903FE03DF
6CB5129F6C6C131FD91FFC13FCEB00201400A216F8D80FE0133F487E486C14F0A216E015
7F16C0EDFF80495A6C4848130090388007FE390FE01FF86CB55A6C14C0C691C7FCEB1FF0
27387CB630>I<EA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F80C7FCABEA0F
80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F800D2579A41B>I<B912C0A43A007F
F800039338007FE0171F170F1707A21703A21701A318F0EE7800A41800A216F8A2150115
0791B5FCA4ECF80715011500A21678A693C8FCADB7FCA434397DB83C>70
D<DB3FFCEB01C00203B5EAC003021FECF00791B6EAFC0F01039039FC00FF3F4901C0EB1F
FFD91FFEC77E49481403D97FF080494880485B48177F4849153F4890C9FC181F485A180F
123F5B1807127FA24993C8FC12FFAB043FB61280A2127F7FDC0003EBC000123FA27F121F
A26C7EA26C7F6C7F6C7F7ED97FF85C6D7E6DB45C010701C05B6D01FCEBFF3F010090B5EA
FE0F021FECF8030203ECE0009126003FFEC9FC413B7BB94B>I<B500FC0203B512F0A280
80C66C6D90390003F0006F6E5A81017B7F13798101787F6E7E6E7E6E7F6E7FA26E7F6E7F
6E7F6E7F6F7E153F826F13806F13C06F13E06F13F06F13F88117FCEE7FFEEE3FFF701381
7013C17013E18218F17013F97013FDEF7FFF8383A28383838383187FA2183F181F01FC16
0FB500FC150718031801A244397DB84B>78 D<EDFFF8020FEBFF80027F14F0903A01FFC0
1FFC010790380007FFD91FFC010113C0D93FF06D6C7E49486E7E49486E7E48496E7E4883
4890C86C7EA248486F1380A248486F13C0A2003F18E0A348486F13F0A400FF18F8AC007F
18F06D5DA3003F18E0A26D5D001F18C0A26C6C4B13806C18006E5C6C6D4A5A6C5F6C6D4A
5A6D6C4A5AD93FFC49485A6DB401075B0107D9C01F90C7FC010190B512FC6D6C14F0020F
1480020001F8C8FC3D3B7BB948>I<B8FC17F017FEEFFF8028007FF8000F13C0040113E0
7013F0EF7FF8EF3FFCA2EF1FFEA218FFA818FEA2EF3FFCA2EF7FF8EFFFF04C13E0040F13
C091B7120017FC17E002F8C9FCB3A4B612FCA438397DB841>I<B712FCEEFFE017FC17FF
28007FF8000F13C004017F707F717E717EA2717EA284A760A24D5A604D5A4D5A04035B04
1F90C8FC91B612FC17E0839139F8003FFCEE0FFF707F707F8284A2707FA584A51A601AF0
84177F1901DD3FFE13E0B600FC011F130394390FFF87C071EBFF8005011400CBEA1FFC44
3A7DB848>82 D<D907FF130E013FEBE01E90B5EAF83E0003ECFE7E3A07FC01FFFE390FF0
001F4848130F48481303491301007F140090C8FC167E5A163EA27F161E7F7F6D91C7FC13
FC387FFFE014FEECFFF06C14FE6F7E6C816C15F06C816C81C681133F010F801301D9000F
1480EC007F030F13C01503818100F0157FA3163FA27E17807E167F6C16007E6D14FE01E0
495A01F813039039FF801FF800FC90B512E0D8F83F5CD8F00749C7FC39E0007FF02A3B7B
B935>I<003FB91280A4D9F800EBF003D87FC09238007FC049161F007EC7150FA2007C17
07A200781703A400F818E0481701A4C892C7FCB3AE010FB7FCA43B387DB742>I<EB3FFE
0003B512E0000F14F8391FF00FFE003FEB03FF6D6C7F6E7FA26F7EA26C5A6C5AEA0380C8
FCA2EC3FFF010FB5FC137F3901FFF87F00071380380FFE00EA3FF85B485A12FF5BA415FF
6D5A127F263FF00713F83B1FFC1FBFFFC0390FFFFE1F0003EBF80F39003FE0032A257DA4
2E>97 D<903801FFC0010F13FC017F13FFD9FF8013802603FE0013C048485AEA0FF8121F
13F0123F6E13804848EB7F00151C92C7FC12FFA9127FA27F123FED01E06C7E15036C6CEB
07C06C6C14806C6C131FC69038C07E006DB45A010F13F00101138023257DA42A>99
D<903803FF80011F13F0017F13FC3901FF83FE3A03FE007F804848133F484814C0001FEC
1FE05B003FEC0FF0A2485A16F8150712FFA290B6FCA301E0C8FCA4127FA36C7E1678121F
6C6C14F86D14F000071403D801FFEB0FE06C9038C07FC06DB51200010F13FC010113E025
257DA42C>101 D<13FFB5FCA412077EAFED7FC0913803FFF8020F13FE91381F03FFDA3C
01138014784A7E4A14C05CA25CA291C7FCB3A3B5D8FC3F13FFA4303A7DB935>104
D<EA01F0EA07FC487EA2487EA56C5AA26C5AEA01F0C8FCA913FF127FA412077EB3A9B512
F8A4153B7DBA1B>I<13FFB5FCA412077EAF92380FFFE0A4923803FC0016F0ED0FE0ED1F
804BC7FC157E5DEC03F8EC07E04A5A141FEC7FE04A7E8181A2ECCFFEEC0FFF496C7F806E
7F6E7F82157F6F7E6F7E82150F82B5D8F83F13F8A42D3A7EB932>107
D<13FFB5FCA412077EB3B3ACB512FCA4163A7DB91B>I<01FEEB7FC000FF903803FFF802
0F13FE91381F03FFDA3C011380000713780003497E6D4814C05CA25CA291C7FCB3A3B5D8
FC3F13FFA430257DA435>110 D<903801FFC0010F13F8017F13FFD9FF807F3A03FE003F
E048486D7E48486D7E48486D7EA2003F81491303007F81A300FF1680A9007F1600A3003F
5D6D1307001F5DA26C6C495A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC0101
13C029257DA430>I<9039FF01FF80B5000F13F0023F13FC9138FE07FFDAF00113800007
496C13C06C0180EB7FE091C713F0EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA217F8163F17
F06E137F6E14E06EEBFFC0DAF00313809139FC07FE0091383FFFF8020F13E0020390C7FC
91C9FCACB512FCA42F357EA435>I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8
FFC000075B6C6C5A5CA29138807F80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA4
27>114 D<90383FF0383903FFFEF8000F13FF381FC00F383F0003007E1301007C130012
FC15787E7E6D130013FCEBFFE06C13FCECFF806C14C06C14F06C14F81203C614FC131F90
38007FFE140700F0130114007E157E7E157C6C14FC6C14F8EB80019038F007F090B512C0
00F8140038E01FF81F257DA426>I<130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA3
000390C7FCB21578A815F86CEB80F014816CEBC3E090383FFFC06D1380903803FE001D35
7EB425>I<01FFEC3FC0B5EB3FFFA4000714016C80B3A35DA25DA26C5C6E4813E06CD9C0
3E13FF90387FFFFC011F13F00103138030257DA435>I<B539F001FFF8A4000390C7EA3F
00161E6E133E6C153C6E137C6C15786E13F8017F5CECF001013F5C14F8011F495AA2ECFC
07010F5CECFE0F010791C7FC6E5A6D131E15BE6D13BC15FC6D5BA36E5AA26E5AA26E5AA2
6E5AA22D257EA432>I<B500F1B538803FFFA43D07FE000FF80003E06C6C010715C08202
8015076C6E6C148015076C01C0ED0F00826E485C017FED801E5D90273FF01E7F5B17C0DA
F83E147C011F90393C3FE078037C14F8903B0FFC781FF0F0A29139FEF00FF10107EDF9E0
02FF14FB6D496CB45AA24B7E6D5EA26D496C90C7FCA292C7FC6E5CA2023E147C023C143C
40257EA445>I<B539F001FFF8A4000390C7EA3F00161E6E133E6C153C6E137C6C15786E
13F8017F5CECF001013F5C14F8011F495AA2ECFC07010F5CECFE0F010791C7FC6E5A6D13
1E15BE6D13BC15FC6D5BA36E5AA26E5AA26E5AA26E5AA292C8FCA25C141E003F133E387F
803C38FFC07C147814F8EBC1F0EBC3E06C485A387D1F80D83FFFC9FCEA1FFCEA07F02D35
7EA432>121 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fb cmsy10 10 1
/Fb 1 16 df<EB1FF0EBFFFE487F000714C04814E04814F04814F8A24814FCA3B612FEA9
6C14FCA36C14F8A26C14F06C14E06C14C0000114006C5BEB1FF01F1F7BA42A>15
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fc cmtt10 10 22
/Fc 22 122 df<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B708A2C>46
D<1507ED0F80151FA2153F16005D157E15FE5D14015D14035DA214075D140F5D141F5D14
3F92C7FC5C147E14FE5CA213015C13035C13075C130F5C131F5CA2133F91C8FC5B137E13
FE5B12015B12035B12075BA2120F5B121F5B123F90C9FC5A127E12FE5AA25A127821417B
B92C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCAE121FEA3F80EA7FC0
EAFFE0A5EA7FC0EA3F80EA1F000B2470A32C>58 D<3801FFF0000713FE001F6D7E15E048
809038C01FF81407EC01FC381F80000006C77EC8127EA3ECFFFE131F90B5FC1203120F48
EB807E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB8003383FE01F6CB612FC6C15FE
6C14BF0001EBFE1F3A003FF007FC27247CA32C>97 D<903803FFE0011F13F8017F13FE48
B5FC48804848C6FCEA0FF0485A49137E4848131890C9FC5A127EA25AA8127EA2127F6C14
0F6DEB1F806C7E6D133F6C6CEB7F003907FE03FF6CB55A6C5C6C6C5B011F13E0010390C7
FC21247AA32C>99 D<EB03FE90381FFFC0017F13F048B57E48803907FE03FE390FF800FF
D81FE0EB3F805B4848EB1FC090C7120F5A007E15E015075AB7FCA416C000FCC9FC7E127E
A2127F6CEC03C06DEB07E06C7ED80FF0130F6C6CEB3FC001FF13FF000190B512806C1500
013F13FC010F13F00101138023247CA32C>101 D<EC0FF8EC3FFE91B5FC4914805B9038
07FC7F14F090390FE03F0014C092C7FCA6007FB512FEB7FCA36C5C26000FC0C7FCB3A800
3FB512F04880A36C5C21337DB22C>I<ED03F8903907F80FFC90391FFE3FFE017FB6FC48
B7FC48ECFE7F9038FC0FF82607F003133E3A0FE001FC1CD9C0001300001F8049137EA66D
13FE000F5CEBE0016C6C485A3903FC0FF048B5FC5D481480D99FFEC7FCEB87F80180C8FC
A37F6C7E90B512F06C14FE48ECFF804815E04815F03A3FC0001FF848C7EA03FC007E1400
007C157C00FC157E48153EA46C157E007E15FCD87F801303D83FE0EB0FF8D81FFCEB7FF0
6CB612E0000315806C1500D8003F13F8010713C028387EA42C>I<EA7FF0487EA3127F12
01AAEC1FE0EC7FFC9038F9FFFE01FB7F90B6FC9138F03F80ECC01F02807FEC000F5B5BA2
5BB3267FFFE0B5FCB500F11480A36C01E0140029337FB22C>I<1307EB1FC0A2497EA36D
5AA20107C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007FB512FCB612FEA36C14FC
1F3479B32C>I<387FFFE0B57EA37EEA0003B3B3A5007FB61280B712C0A36C158022337B
B22C>108 D<3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD87FFF13FF91B57E3A07FE1F
FC3E01FCEBF83F496C487E01F013E001E013C0A301C01380B33B7FFC3FF87FF0027F13FF
D8FFFE6D13F8D87FFC4913F0023F137F2D2481A32C>I<397FF01FE039FFF87FFC9038F9
FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B5BA25BB3267FFFE0B5FCB5
00F11480A36C01E0140029247FA32C>I<EB07FCEB1FFF017F13C048B512F048803907FC
07FC390FF001FE48486C7E0180133F003F158090C7121F007EEC0FC0A348EC07E0A76C14
0F007E15C0A2007F141F6C15806D133F6C6CEB7F006D5B6C6C485A3907FC07FC6CB55A6C
5C6C6C13C0011F90C7FCEB07FC23247CA32C>I<397FF01FE039FFF8FFF801FB13FE90B6
FC6C158000019038F07FC09138801FE091380007F049EB03F85BED01FC491300A216FE16
7EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE09138E07FC091B512801600
01FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B27367FA32C>I<D87FFEEB3FC0
B53801FFF0020713F8021F13FC6C5B39003F7FE1ECFF019138FC00F84A13704A13005CA2
5C5CA391C8FCAF007FB512E0B67EA36C5C26247EA32C>114 D<90387FF8700003B512F8
120F5A5A387FC00F387E00034813015AA36CEB00F0007F140013F0383FFFC06C13FE6CEB
FF80000314E0C66C13F8010113FCEB0007EC00FE0078147F00FC143F151F7EA26C143F6D
133E6D13FE9038F007FC90B5FC15F815E000F8148039701FFC0020247AA32C>I<131E13
3FA9007FB6FCB71280A36C1500D8003FC8FCB1ED03C0ED07E0A5EC800F011FEB1FC0ECE0
7F6DB51280160001035B6D13F89038003FE0232E7EAD2C>I<3A7FF003FF80486C487FA3
007F7F0001EB000FB3A3151FA2153F6D137F3900FE03FF90B7FC6D15807F6D13CF902603
FE07130029247FA32C>I<3A7FFF01FFFCB514FE148314016C15FC3A03E0000F80A26D13
1F00011500A26D5B0000143EA26D137E017C137CA2017E13FC013E5BA2EB3F01011F5BA2
1483010F5BA214C701075BA214EF01035BA214FF6D90C7FCA26D5A147C27247EA32C>I<
D87FFFEB7FFF6EB5FCB515806C16004A7ED807C0EB01F0A66C6C495AA3143E147FA2D801
F0495AECFF87A214F7A201F113C700005D9038F9E3CFA201FB13EFA3D97BC190C7FC017F
13FFA21480A2013F5B90381F007C29247FA32C>I<3A7FFF01FFFCB5008113FE14831481
6C010113FC3A03E0000F806C7E151F6D140012005D6D133E137C017E137E013E137CA201
3F13FC6D5BA2EB0F815DA2EB07C1ECC3E0A2EB03E3ECE7C0130114F75DEB00FFA292C7FC
80A2143EA2147E147CA214FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F495A387FFF806C
90C8FC6C5A6C5AEA07E027367EA32C>121 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fd cmti10 10 6
/Fd 6 119 df<147F903803FFC090380FC1E090383F00F0017E13785B485A485A485A12
0F4913F8001F14F0383F8001EC07E0EC1F80397F81FF00EBFFF891C7FC90C8FC5A5AA55A
A21530007C14381578007E14F0003EEB01E0EC03C06CEB0F806CEB3E00380781F83803FF
E0C690C7FC1D2677A426>101 D<D801E013FE3A07F803FF803A0E3C0F07C03A1E3E3C03
E0261C1F787F39383FF00114E0007813C000708114804A485AEAF07FEAE07EA200001407
01FE5C5BA2150F00015D5B151F5E12034990383F8380160316070007027F130049137EA2
160E000F147C49141E161C5E001FEC3C7849EB1FE00007C7EA0780292679A42F>110
D<3903C003F0390FF01FFC391E783C0F381C7C703A3C3EE03F8038383FC0EB7F80007815
0000701300151CD8F07E90C7FCEAE0FE5BA2120012015BA312035BA312075BA3120F5BA3
121F5BA3123F90C9FC120E212679A423>114 D<14FE903807FF8090380F83C090383E00
E04913F00178137001F813F00001130313F0A215E00003EB01C06DC7FC7FEBFFC06C13F8
14FE6C7F6D13807F010F13C01300143F141F140F123E127E00FE1480A348EB1F0012E06C
133E00705B6C5B381E03E06CB45AD801FEC7FC1C267AA422>I<EB0380EB07C0130FA413
1F1480A3133F1400A35B137E007FB5FCA2B6FC3800FC00A312015BA312035BA312075BA3
120F5BA3121FEB801CA2143C003F1338EB0078147014F014E0EB01C0EA3E03381F078038
0F0F00EA07FCEA01F0183579B31C>I<01F0130ED803FC133FD8071EEB7F80EA0E1F121C
123C0038143F49131F0070140FA25BD8F07E140000E08013FEC6485B150E12015B151E00
03141C5BA2153C000714385B5DA35DA24A5A140300035C6D48C7FC0001130E3800F83CEB
7FF8EB0FC0212679A426>118 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fe cmr10 10 64
/Fe 64 123 df<DA0FF813FC91397FFF07FF903B01F807DF83C0903A07E001FF0F903B1F
8007FE1FE090393F000FFC137E16F85B9338F007804848010790C7FC1503ACB812F8A328
01F80003F0C7FCB3AB486C497E267FFFE0B512F0A3333B7FBA30>11
D<EC0FF8EC7FFE903901F80780903907E001C090391F8000E090383F0007017E497EA25B
A2485A6F5AED018092C8FCA9ED03F0B7FCA33901F8000F1503B3AA486C497E267FFFE0B5
12C0A32A3B7FBA2E>I<DA0FF0EB1FF0DA7FFEEBFFFC903B01F80F83F00F903C07E001CF
C00380903C1F8000FF0001C090273F0007FE130F017E4948497EA2495CA248485C03076E
5A03030203C7FC95C8FCA9F007E0BAFCA33C01F80003F0001F1807B3AA486C496C497E26
7FFFE0B500C1B51280A3413B7FBA45>14 D<121C127FEAFF80A8EA7F00AB123EAB121CAB
C7FCA8121C127FEAFF80A5EA7F00121C093C79BB17>33 D<001C131C007F137F39FF80FF
80A26D13C0A3007F137F001C131C00001300A40001130101801380A20003130301001300
485B00061306000E130E485B485B485B006013601A197DB92A>I<121C127FEAFF80A213
C0A3127F121C1200A412011380A2120313005A1206120E5A5A5A12600A1979B917>39
D<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B120F90C7FC
A25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C7EA26C7E
1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>I<12C07E12707E7E7E120F
6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7FA21480A3EB07C0A6EB03E0
B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A25BA2485A485AA2485A48C7
FC120E5A5A5A5A5A13527CBD20>I<121C127FEAFF80A213C0A3127F121C1200A4120113
80A2120313005A1206120E5A5A5A12600A19798817>44 D<B512FCA516057F941C>I<12
1C127FEAFF80A5EA7F00121C0909798817>I<150C151E153EA2153C157CA2157815F8A2
15F01401A215E01403A215C01407A21580140FA215005CA2141E143EA2143C147CA21478
14F8A25C1301A25C1303A2495AA25C130FA291C7FC5BA2131E133EA2133C137CA2137813
F8A25B1201A25B1203A25B1207A25B120FA290C8FC5AA2121E123EA2123C127CA2127812
F8A25A12601F537BBD2A>I<EB01C013031307131F13FFB5FCA2131F1200B3B3A8497E00
7FB512F0A31C3879B72A>49 D<EB0FF0EB7FFE48B57E3903E03FE0390F000FF0000E6D7E
486D7E486D7E123000706D7E126012FCB4EC7F807FA56CC7FC121CC8FCEDFF00A34A5A5D
14035D4A5A5D140F4A5A4A5A92C7FC147C5C495A495A495A495A91C8FC011EEB01805B5B
49130348481400485A485A000EC75A000FB6FC5A5A485CB6FCA321387CB72A>I<EB07F8
EB3FFF4913C03901F80FF03903C007F848486C7E380E0001000F80381FE0006D7FA56C5A
6C5AC85A1401A25D4A5AA24A5A5DEC0F80027EC7FCEB1FFCECFF809038000FE06E7EEC01
FC816E7EED7F80A216C0A2153F16E0A2121EEA7F80487EA416C049137F007F1580007EC7
FC0070ECFF006C495A121E390F8003F83907F00FF00001B512C06C6C90C7FCEB0FF8233A
7DB72A>I<121C127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C0924
79A317>58 D<121C127FEAFF80A5EA7F00121CC7FCB2121C127F5A1380A4127F121D1201
A412031300A25A1206A2120E5A121812385A1260093479A317>I<1538A3157CA315FEA3
4A7EA34A6C7EA202077FEC063FA2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202
707FEC6003A202C07F1501A2D901807F81A249C77F167FA20106810107B6FCA24981010C
C7121FA2496E7EA3496E7EA3496E7EA213E0707E1201486C81D80FFC02071380B56C90B5
12FEA3373C7DBB3E>65 D<B712E016FC16FF0001903980007FC06C90C7EA1FE0707E707E
707EA2707EA283A75F16035F4C5A4C5A4C5A4C5AEEFF8091B500FCC7FCA291C7EA7F80EE
1FE0EE07F0707E707E83707EA21880177F18C0A7188017FFA24C13005F16034C5AEE1FF8
486DEB7FF0B812C094C7FC16F832397DB83B>I<913A01FF800180020FEBE003027F13F8
903A01FF807E07903A03FC000F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01
FE153F12014848151F4848150FA248481507A2485A1703123F5B007F1601A35B00FF93C7
FCAD127F6DED0180A3123F7F001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618
017F15386D6C5CD91FE05C6D6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC
020F13F002011380313D7BBA3C>I<B712C016F816FE000190398001FF806C90C7EA3FE0
EE0FF0EE03F8707E707E177FA2EF3F8018C0171F18E0170F18F0A3EF07F8A418FCAC18F8
A4EF0FF0A218E0A2171F18C0EF3F80A2EF7F0017FE4C5A4C5AEE0FF0EE3FE0486DEBFF80
B8C7FC16F816C036397DB83F>I<B812FCA30001903880000F6C90C71201EE007E173E17
1E170EA31706A317078316C0A394C7FCA31501A21503150F91B5FCA3EC000F15031501A2
1500A21860A318E093C712C0A41701A3EF0380A21707A2170F173F177F486D903807FF00
B9FCA333397DB839>I<B812F8A30001903880001F6C90C71201EE00FC177C173C171CA2
170CA4170E1706A2ED0180A21700A41503A21507151F91B5FCA3EC001F15071503A21501
A692C8FCAD4813C0B612C0A32F397DB836>I<DBFF8013C0020FEBF001023F13FC9139FF
803F03903A03FC000787D90FF0EB03CF4948EB00EF4948147F4948143F49C8121F485A48
48150F48481507A248481503A2485A1701123F5B007F1600A448481600AB93B6FCA26C7E
9338007FE0EF3FC0A2123F7F121FA26C7EA26C7EA26C7E6C7E6C6C157F6D7E6D6C14FF6D
6C14EFD90FF8EB03C7D903FEEB0783903A00FFC03F0191393FFFFC00020F01F013000200
1380383D7CBA41>I<B648B512FEA30001902680000313006C90C76C5AB3A491B6FCA391
C71201B3A6486D497EB648B512FEA337397DB83E>I<B612C0A3C6EBC0006D5AB3B3AD49
7EB612C0A31A397EB81E>I<013FB512E0A39039001FFC00EC07F8B3B3A3123FEA7F80EA
FFC0A44A5A1380D87F005B0070131F6C5C6C495A6C49C7FC380781FC3801FFF038007F80
233B7DB82B>I<B612E0A3000101C0C8FC6C90C9FCB3AD1718A517381730A31770A317F0
A216011603160FEE1FE0486D13FFB8FCA32D397DB834>76 D<B5933807FFF86E5DA20001
F0FC002600DFC0ED1BF8A2D9CFE01533A3D9C7F01563A3D9C3F815C3A2D9C1FCEC0183A3
D9C0FEEC0303A2027F1406A36E6C130CA36E6C1318A26E6C1330A36E6C1360A26E6C13C0
A3913901FC0180A3913900FE0300A2ED7F06A3ED3F8CA2ED1FD8A3ED0FF0A3486C6D5A48
7ED80FFC6D48497EB500C00203B512F8A2ED018045397DB84C>I<B5913807FFFE8080C6
9238007FE06EEC1F80D9DFF0EC0F001706EBCFF8EBC7FCA2EBC3FEEBC1FFA201C07F6E7E
A26E7E6E7E81140F6E7E8114036E7E168080ED7FC016E0153FED1FF0ED0FF8A2ED07FCED
03FEA2ED01FF6F1386A2EE7FC6EE3FE6A2EE1FF6EE0FFEA216071603A216011600A2177E
486C153E487ED80FFC151EB500C0140EA2170637397DB83E>I<EC03FF021F13E09138FE
01FC903901F8007ED907E0EB1F8049486D7ED93F80EB07F049C76C7E01FE6E7E48486E7E
49157E0003167F4848ED3F80A24848ED1FC0A2001F17E049150F003F17F0A3007F17F849
1507A300FF17FCAC007F17F86D150FA3003F17F0A26C6CED1FE0A36C6CED3FC000071780
6D157F000317006C6C15FEA26C6C4A5A017F4A5A6D6C495A6D6C495AD907E0EB1F80D903
F8017FC7FC903900FE01FC91381FFFE0020390C8FC363D7BBA41>I<B712C016F816FE00
0190398001FF806C90C7EA3FC0EE0FE0EE07F0EE03F817FC17FE1601A217FFA717FEA2EE
03FCA2EE07F817F0EE0FE0EE3FC0923801FF0091B512FC16F091C9FCB3A5487FB6FCA330
397DB839>I<B612FEEDFFE016F8000190388007FE6C90C76C7EEE3FC0707E707E707EA2
707EA283A65FA24C5AA24C5A4C5AEE3F8004FFC8FCED07FC91B512E05E9138000FF0ED03
F8ED00FE82707E707EA2161F83A583A6F00180A217F8160F1803486D01071400B66D6C5A
04011306933800FE0ECAEA3FFCEF07F0393B7DB83D>82 D<D90FF813C090383FFE0190B5
12813903F807E33907E000F74848137F4848133F48C7121F003E140F007E1407A2007C14
0312FC1501A36C1400A37E6D14006C7E7F13F86CB47E6C13F8ECFF806C14E06C14F86C14
FEC680013F1480010714C0EB007F020713E0EC007FED3FF0151F150FED07F8A200C01403
A21501A37EA216F07E15036C15E06C14076C15C06C140F6DEB1F80D8FBF0EB3F00D8F0FE
13FE39E03FFFF8010F13E0D8C00190C7FC253D7CBA2E>I<003FB812E0A3D9C003EB001F
273E0001FE130348EE01F00078160000701770A300601730A400E01738481718A4C71600
B3B0913807FF80011FB612E0A335397DB83C>I<B6903807FFFEA3000101809038007FE0
6C90C8EA1F80EF0F001706B3B2170E6D150C80171C133F17186D6C14385F6D6C14F06D6C
5C6D6C495A6D6CEB07806D6C49C7FC91387F807E91381FFFF8020713E09138007F80373B
7DB83E>I<B5D8FC07B5D8F001B5FCA30007902780001FFEC7EA1FF86C48C7D80FF8EC07
E000010307ED03C01B807F6C6F6C1500A26E5F017F6E6C1406A280013F4A6C5CA280011F
4A6D5BEE067FA26D6C010E6D5BEE0C3FA26D6C011C6D5BEE181FA26D6C6F5BEE300FA26D
6C6F485AEE6007A26D6C4CC7FC9338C003FCA203805D913B7F818001FE06A203C1150EDA
3FC3C7EAFF0CA203E3151CDA1FE6EC7F98A215F6DA0FFCEC3FF0A302075E4B141FA20203
5E4B140FA202015E4B1407A2020093C8FC4B80503B7EB855>87 D<B500FE91383FFFE0A3
000301E0913807FE00C649EC03F0017F6F5A606D6C5D6D6C140395C7FC6D6C1406A26D6C
5C6D6C141C17186D6C143817306D6D5B6E6C13E05F91383FE0015F91381FF003DA0FF890
C8FC1606913807FC0E160C913803FE1C913801FF185E6E13B016E0157F6F5AB3A24B7E02
3FB512C0A33B397FB83E>89 D<EB1FE0EBFFFC3803E03F3907000F80390F8007E0486C6C
7E13E06E7EA26E7E6C5A6C5AC8FCA4147FEB07FFEB3FE0EBFE00EA03F8EA0FF0EA1FC012
3F485A90C7FC160C12FEA31401A26C13036CEB077C903980063E18383FC01E3A0FE0781F
F03A03FFF00FE03A007F8007C026277DA52A>97 D<EA03F012FFA3120F1203B0EC1FE0EC
7FF89038F1E03E9039F3801F809039F7000FC001FEEB07E049EB03F049EB01F85BED00FC
A216FEA2167E167FAA167E16FEA216FC15016D14F8ED03F07F01EEEB07E001C6EB0FC090
39C7801F00903881E07E903800FFF8C7EA1FC0283B7EB92E>I<EB03FC90381FFF809038
7E03E03901F80070484813F83907E001FC380FC003A2EA1F80123F90380001F848EB00F0
1500A2127E12FEAA127E127FA26C14067F001F140E6D130C000F141C6C6C13386C6C1370
6C6C13E039007C07C090381FFF00EB07F81F277DA525>I<ED0FC0EC03FFA3EC003F150F
B0EB03F8EB1FFF90387E078F9038F801EF3903F0007F4848133F4848131FA24848130F12
3F90C7FC5AA2127E12FEAA127E127FA27EA26C6C131FA26C6C133F6C6C137F6C6CEBEFF0
3A01F801CFFF39007C078F90381FFE0FD907F813C0283B7DB92E>I<EB07F8EB1FFF9038
7C0FC03901F803E03903F001F0D807E013F8380FC0004848137CA248C7127E153E5A153F
127E12FEA3B7FCA248C8FCA5127EA2127FA26C14037F001F14076C6C13060007140E6D13
1CD801F013386C6C137090387E03E090381FFF80903803FC0020277EA525>I<147E9038
03FF8090380FC1E0EB1F8790383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D8
01F8C7FCB3AB487E387FFFF8A31C3B7FBA19>I<ED03F090390FF00FF890393FFC3C3C90
39F81F707C3901F00FE03903E007C03A07C003E010000FECF000A248486C7EA86C6C485A
A200075C6C6C485A6D485A6D48C7FC38073FFC38060FF0000EC9FCA4120FA213C06CB512
C015F86C14FE6CECFF804815C03A0F80007FE048C7EA0FF0003E140348140116F8481400
A56C1401007C15F06CEC03E0003F1407D80F80EB0F80D807E0EB3F003901FC01FC39007F
FFF0010790C7FC26387EA52A>I<EA03F012FFA3120F1203B0EC0FF0EC3FFCECF03F9039
F1C01F809039F3800FC0EBF70013FE496D7EA25BA35BB3A3486C497EB500C1B51280A329
3A7EB92E>I<EA0380EA0FE0487EA56C5AEA0380C8FCAAEA03F012FFA312071203B3AA48
7EB512C0A312387EB717>I<EB01C0EB07F0EB0FF8A5EB07F0EB01C090C7FCAAEB01F813
FFA313071301B3B3A2123C127E00FF13F01303A214E038FE07C0127C383C0F00EA0FFEEA
03F8154984B719>I<EA03F012FFA3120F1203B1913801FFFCA39138007FC01600157C15
705D4A5A4A5A4AC7FC141E1438147814FC13F1EBF3FEEBF73F01FE7FEBF81F496C7E8114
076E7E6E7E811400157E157F811680ED1FC0486CEB3FF0B500C0B5FCA3283A7EB92C>I<
EA03F012FFA3120F1203B3B3AD487EB512C0A3123A7EB917>I<2703F00FF0EB1FE000FF
D93FFCEB7FF8913AF03F01E07E903BF1C01F83803F3D0FF3800FC7001F802603F70013CE
01FE14DC49D907F8EB0FC0A2495CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA340
257EA445>I<3903F00FF000FFEB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013
FE496D7EA25BA35BB3A3486C497EB500C1B51280A329257EA42E>I<EB03FE90380FFF80
90383E03E09038F800F84848137C48487F48487F4848EB0F80001F15C090C712074815E0
A2007EEC03F0A400FE15F8A9007E15F0A2007F14076C15E0A26C6CEB0FC0000F15806D13
1F6C6CEB3F006C6C137EC66C13F890387E03F090381FFFC0D903FEC7FC25277EA52A>I<
3903F01FE000FFEB7FF89038F1E07E9039F3801F803A0FF7000FC0D803FEEB07E049EB03
F04914F849130116FC150016FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0F
E001F614C09039F7803F009038F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A32835
7EA42E>I<D903F813C090381FFE0190387E07819038FC01C33903F000E3000714774848
133749133F001F141F485A150F48C7FCA312FEAA127FA37E6D131F121F6D133F120F6C6C
137F6C6C13EF3901F801CF39007E078F90381FFE0FEB07F890C7FCABED1FE00203B5FCA3
28357DA42C>I<3807E01F00FFEB7FC09038E1E3E09038E387F0380FE707EA03E613EE90
38EC03E09038FC0080491300A45BB3A2487EB512F0A31C257EA421>I<EBFF03000313E7
380F80FF381E003F487F487F00707F12F0A2807EA27EB490C7FCEA7FE013FF6C13E06C13
F86C7F00037FC67F01071380EB007F141F00C0EB0FC01407A26C1303A37E15806C13077E
EC0F00B4131E38F3C07C38E1FFF038C03F801A277DA521>I<1318A51338A31378A313F8
120112031207001FB5FCB6FCA2D801F8C7FCB215C0A93800FC011580EB7C03017E13006D
5AEB0FFEEB01F81A347FB220>I<D803F0EB07E000FFEB01FFA3000FEB001F00031407B3
A4150FA3151F12016D133F0000EC77F86D9038E7FF8090383F03C790381FFF87903A03FC
07E00029267EA42E>I<B538803FFEA33A0FF8000FF06C48EB07E00003EC03C06D148000
011500A26C6C1306A26D130E017E130CA26D5BA2EC8038011F1330A26D6C5AA214E00107
5BA2903803F180A3D901FBC7FCA214FF6D5AA2147CA31438A227257EA32C>I<B53A1FFF
E03FFEA3260FF8009038000FF86C48017EEB03E018C00003023EEB0180A26C6C013FEB03
00A36C6CEC8006156FA2017E9038EFC00C15C7A2D93F016D5A15830281EBF038D91F8314
30150102C3EBF87090260FC6001360A2D907E66D5A02EC137CA2D903FCEB7F804A133FA2
010192C7FC4A7FA20100141E4A130E0260130C37257EA33C>I<B538807FFFA33A03FE00
3FF00001EC1F80000092C7FC017E131C6D13186D6C5AECC070010F5B6D6C5AECF180EB03
FB6DB4C8FC6D5AA2147F804A7E8114CF903801C7E090380383F090380703F8EB0601496C
7E011C137E49137F01787F496D7E486C80000FEC3FF0D8FFFE90B51280A329247FA32C>
I<B538803FFEA33A0FF8000FF06C48EB07C00003EC03806C7E16007F00001406A2017E5B
A2137F6D5BA26D6C5AA2ECC070010F1360A26D6C5AA214F101035BA2D901FBC7FCA214FF
6D5AA2147CA31438A21430A214701460A25CA2EA7C0100FE5B130391C8FC1306EAFC0EEA
701C6C5AEA1FF0EA0FC027357EA32C>I<003FB512FCA2EB8003D83E0013F8003CEB07F0
0038EB0FE012300070EB1FC0EC3F800060137F150014FE495AA2C6485A495AA2495A495A
495AA290387F000613FEA2485A485A0007140E5B4848130C4848131CA24848133C48C712
7C48EB03FC90B5FCA21F247EA325>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Ff cmbx12 14.4 25
/Ff 25 118 df<EA07F0EA1FF8487E487E7FB5FC1480A314C0A37EA27E7EEA07F3EA0003
A213071480A3130F1400A25B131E133E133C137C5BA2485A485A485A485A48C7FC121E12
0C1228769025>44 D<913803FFC0023F13FC91B6FC010315C0010F018113F0903A1FFC00
3FF849486D7E49486D7E49486D7E48496D138048496D13C0A24817E04890C813F0A34817
F8A24817FC49157FA3007F17FEA600FF17FFB3A5007F17FEA6003F17FCA26D15FFA26C17
F8A36C17F0A26C6D4913E0A26C6D4913C06C17806E5B6C6D4913006D6C495AD91FFCEB3F
F8903A0FFF81FFF06D90B55A01011580D9003F01FCC7FC020313C0384F7BCD43>48
D<157815FC14031407141F14FF130F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A600
7FB712FEA52F4E76CD43>I<EC3FFE0103B512E0010F14FC013F14FF90B712C048D9C07F
7F2703FE000F13F8D807F801037FD80FE06D7F48486D7F48488001F01680486C6E13C07F
486C6E13E07FA27013F0A56C5AA26C5AEA0FF0EA03C0C914E05EA218C05E1880A24C1300
5F4C5A4B5B5F4B5B5F4B5B4B90C7FC4B5A5E4B5AED7FE04B5A4A5B4A48C8FC4A5A5D4A48
EB01F04A5AEC3F804AC7FC02FEEC03E0495A495A495A495AD91F80140749C8FC013E150F
017FB7FC90B812C05A5A5A5A5A5A5AB9FC1880A4344E79CD43>I<91380FFFC091B512FC
0107ECFF80011F15E090263FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D8
07FC8048B416C080486D15E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005F
A24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113
F89238007FFE707E7013807013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8
487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A13
80D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F
1380374F7ACD43>I<121F7F7FEBFF8091B81280A45A1900606060A2606060485F0180C8
6CC7FC007EC95A4C5A007C4B5A5F4C5A160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E
4B5A150F4B5AA24B5AA24B5A15FFA24A90C9FCA25C5D1407A2140FA25D141FA2143FA414
7F5DA314FFA55BAC6D5BA2EC3FC06E5A395279D043>55 D<EA07F0487E487E487E487EB5
1280A76C13006C5A6C5A6C5A6C5AC8FCB3EA07F0487E487E487E487EB51280A76C13006C
5A6C5A6C5A6C5A113576B425>58 D<BA7E19FCF1FF801AF01AFCD8000701F0C7000F13FF
060014C0071F7F070713F807017F737F747E747F747F86747F747F8886888688A2757EA3
1D8087A21DC0A51DE0A387A963A31DC0A51D80A2631D00A3515AA2646264505B6264505B
505B5090C7FCF2FFFE4F5B07075B071F5B96B512C0060F91C8FCBB5A1AF01AC007FCC9FC
19805B527CD167>68 D<932601FFFCEC01C0047FD9FFC013030307B600F81307033F03FE
131F92B8EA803F0203DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203
B5FC494848C9FC4901F8824949824949824949824949824990CA7E494883A2484983485B
1B7F485B481A3FA24849181FA3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280
A36C94C7003FEBC000A36C7FA36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F
6D01FC93B5FC6D13FF6D6C6D5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE002
0091B6EAC07F033FEE001F030703FC1307DB007F02E01301040149CAFC5B5479D26A>71
D<027FB71280A591C76C90C7FCB3B3B3EA07F0EA1FFC487E487EA2B57EA44C5AA34A485B
7E49495BD83FF8495BD81FE05DD80FFC011F5B2707FF807F90C8FC000190B512FC6C6C14
F0011F14C0010101F8C9FC39537DD145>74 D<BAFC19F819FF1AE086D8000701F0C7001F
13FC060113FF726C13807313C0070F13E01BF0857313F81BFCA27313FEA41BFFA81BFEA3
1BFC61A21BF84F13F04F13E0614F13C04F13004E485A061F5B92B812F01AC04FC7FC19E0
03F8CBFCB3AEB812C0A550527CD15C>80 D<91260FFF80130791B500F85B010702FF5B01
1FEDC03F49EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5FC4848C87E48488149
150F001F824981123F4981007F82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F0
14FF15F86CECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C836C836D826D82010F82
1303010082021F16801400030F15C0ED007F040714E01600173F050F13F08383A2007882
00F882A3187FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A
02C04A5A02F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F
14F048D9007F90C8FC3C5479D24B>83 D<EC7FFF0107B512F0013F14FE90B77E48D9E00F
7F2703FE000113F0486C6D7F6EEB3FFC48826E131F83707FA36C496D7FA26C90C7FC6C5A
C9FCA6037FB5FC020FB6FC91B7FC01071487013FEBF0074913803901FFFC004813F0485B
485B485B4890C7FC5A5BA2485AA45EA26D5C007F151D163D6C6C02797F6C6D01F113F86C
9026C003E1EBFFE06C9026F81FC014F06C90B5487EC6ED001F011F01FC010713E0010101
E090C8FC3C387CB641>97 D<EB3FF0B5FCA51203C6FCB3A4923801FFE0030F13FE033FEB
FFC092B612F002F301017F913AF7F8003FFEDAFFE0EB0FFF03806D7F92C76C7F4A6E7F4A
824A6E7FA2727EA285A28584A31A80AC1A00A44E5AA36118FF616E4A5BA26E4A5B6E4A5B
6F495BDACFC04990C7FCDA87F0EB7FFC913A03FE03FFF849C6B612E0496D148049011F01
FCC8FC90C7000313C041547BD24B>I<913801FFF8021FEBFF8091B612F0010315FC010F
9038C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F13
8091C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C0
7E6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390
B55A01001580023F49C7FC020113E033387CB63C>I<913803FFC0023F13FC49B6FC0107
15C04901817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18
C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218
E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91F
FEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>
101 D<157FEDFF80020313E04A13F0A24A13F8A76E13F0A26E13E002001380ED7F0092C7
FCADED1FF891B5FCA51401EC007FB3B3B1EA0780EA1FE0487E487E486C13FF16F0A216E0
5C16C04A13806C4848130049485A003F495A000FB512F06C5C0001148026001FFCC7FC25
6C87D329>106 D<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C537BD225>108
D<D93FF0D91FFCEDFFE0B591B500C0010713FE030302F0011F6D7E030F6E017F8092271F
E07FFCD9FF037F922A3F001FFE01F8007F0003027C9126FF03E080C602F06DD90780137F
DAF1E0038FC77FDAF3C0159EDAF7806D01BC143F07FC8102FFC75C4A5EA24A5EA44A5EB3
ACB6D8F807B6D8C03FB512FEA567367BB570>I<D93FF0EB1FFCB591B512C0030314F003
0F8092391FE07FFC92393F001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7807F8502
FFC7FC5CA25CA45CB3ACB6D8F807B612C0A542367BB54B>I<913801FFE0021F13FE91B6
12C0010315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F4849
6D7F4A147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3
003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE
011F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<
903A3FF001FFE0B5010F13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9
FFE0EB1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A
0060A36118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FB
FE075B02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<
90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013
FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612
FCA52F367CB537>114 D<143EA6147EA414FEA21301A313031307A2130F131F133F13FF
5A000F90B6FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEB
C03E6DEBF0FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>116
D<D93FF8913801FFC0B50207B5FCA50003ED001FC61607B3AE5FA35FA2017F5D173B177B
6D6C14F3DC01E313F06D6CD907C3EBFFC0903A0FFFC03F836D90B51203010114FE6D6C13
F8020701E091C7FC42377BB54B>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fg cmr17 17.28 18
/Fg 18 119 df<B712F0A7240780A12B>45 D<020FB612FCA4DA0001EBFE009238003FFC
5F161FB3B3B3AE1207EA3FE0487EA2487EA34C5AA35B6C484A5A13800078C8485A6C5E5D
6C93C7FC6C4A5A6C6C495AD803E0495AD801F8EB3FE0D8007FEBFFC06DB5C8FC010713F8
010013C036647AE144>74 D<933801FFE0043F13FF4BB612E003079038003FF8DB1FF0EB
03FEDB7FC0903800FF804A48C8EA3FE0DA03FCED0FF0DA0FF0ED03FC4A486F7E4A486F7E
4A48707E4ACA6C7E4948717E4948717E4948717E4948717E4948717E013F854A83017F86
4948727EA24890CC6C7EA24848737EA24848737EA2000F87491907001F87A34848737EA4
007F1C80A24985A400FF1CC0AF6C6C4F1380A5003F1C006D61A3001F63A26D190F000F63
A26C6C4F5AA36C6C4F5AA26C6D4E5A6C636E18FF017F626D6C4D90C7FC6E5F011F616D6C
4D5A6D6C4D5A0103616E171F6D6C4D5A6D6D4C5ADA3FC04CC8FCDA1FF0ED03FE6E6C4B5A
6E6C4B5ADA01FFED3FE09126007FC0ECFF80DB1FF0D903FEC9FCDB07FFEB3FF8030190B5
12E0DB003F91CAFC040113E05A667AE367>79 D<B912C018FEF0FFC019F0C601FCC813FC
D93FF8ED0FFF011F04037F06007FF13FF0737E737E1907737E86731380A27313C0A31BE0
1A7FA21BF0A91BE0A21AFF1BC0A34F13801B00614F5A624F5A4F5AF17FE04F5A060390C7
FCF01FFE943801FFF891B812E096C8FC18F802F8CCFCB3B3A4497E90B5FCB7FCA44C6279
E15A>I<EC3FF0903803FFFE010F6D7E90393FC03FE090397E0007F801F86D7ED801E06D
7E48486D7E48486E7E48C86C7E7F01F06E7E487E6D6E7EA3707EA36C5AEA03E0C9FCA616
7FED7FFF020FB5FC91387FF807903801FF80903807FC00EB1FF0EB7FC0495AD803FEC7FC
485A120F5B485A485AA2484817E0A312FF5BA2160FA3161F6D141B007F153B16736D9139
71FC01C06C6C14E1001FEC01C1D80FFC903A0780FE03806C6C903A0F00FF07002701FF80
7E6DB4FC27007FFFF86D5A011F01E0EB1FF8010190C7EA07E03B417ABF42>97
D<EB03C0EA07FFB5FCA41201EA007FA2133FB3AAEE7FC0923807FFFC031F13FF92397F00
7FC003F8EB0FF0DAC3E06D7EDAC780EB01FC02CFC87E02DE157F02FC6F7E4A824A6F7E18
0F4A82727E5C727EA2851801A285A3841A80AD1A0060A461180361A21807616E5E180F6E
4B5A6E5E02B8153F023C4B5A6E4BC7FC6E4A5A90263E0780495A6E6CEB0FF090263C01F0
495ADA007EEBFF806FB448C8FC0138010F13F890C8138041657DE349>I<4AB47E020F13
F8023F13FE9139FF007F80D903FCEB07E0D907F0EB01F0D91FE0EB007849488049488049
C87E48485D4915FF00034B138048485CA2485AA2485AA2003F6F130049EC007C94C7FC12
7FA35B12FFAD127F7FA4123F7FA2001FEE01C07F000F16036D168012076C6C15076D1600
00015E6C6C151E6D6C5C6D6C5C6D6C5CD90FF8495AD903FCEB07C0903A00FF803F809126
3FFFFEC7FC020F13F80201138032417CBF3A>I<181EEF3FFEEE07FFA4EE000F1703A217
01B3AAEDFF80020F13F8023F13FE9139FF803F81903A03FC0007C14948EB01E1D91FE0EB
00F94948147D4948143D49C8121F4848150F491507120348481503491501120F121F5BA2
123F5B127FA45B12FFAD127F7FA3123FA27F121FA26C6C1503A26C6C150712036D150F6C
6C151F0000163D137F6D6CECF9FF6D6CEB01F1D90FF0D903C113C06D6CD90F81EBFF80D9
01FFEB7F019039007FFFFC021F13E00201010091C7FC41657CE349>I<EC03FE91381FFF
E091B512F8903901FE03FE903A07F0007F8049486D7ED93FC06D7E49C76C7E496E7E4914
0348488148481401000782491400000F8283485A1880123F49153FA2007F17C0A35BA212
FF90B8FCA30180CAFCA9127F7FA3123FA27F121FEF01C06C7E17036C6C1680A26C6C1507
0001EE0F006D150E6C6C151E6D6C5C6D6C5C6D6C5CD907F0EB03E0D903FC495A902700FF
803FC7FC91383FFFFC020F13F00201138032417CBF3A>I<F03F80DA03FC903801FFE091
273FFFC00713F091B539F01FC1F8903B03FC03FC3E03903A07F000FE784948EB7FE04948
EB3FC04948011FEB01F049C76C6CC7FC01FE6E7EA248486E7EA2000382A2491401000782
AA00035E6D1403A200015EA26C6C4A5AA2017F4A5A6D6C495A6D6C495A496C49C8FCD937
F013FE903973FC03FC0160B512F0D9E03F13C0DA03FCC9FC4848CBFCA57FA27FA27F6C7E
13FF91B512FE6DECFFF06D15FE6D6F7E6D16E084013F16FC01FEC700017FD803F8EC001F
D807E0ED03FF4848030013804848167F003FEF3FC090CA121F127EF00FE012FE481707A6
6C170F007E18C0A2007F171F6C6CEE3F806C6CEE7F00000F177ED807F04B5A6C6C4B5A6C
6C4B5AD8007FED1FC0D93FE0ECFF80D90FFED90FFEC7FC0101B612F0D9003F1480020101
F0C8FC3D5E7DBF42>103 D<133C13FF487F487FA66C5B6C90C7FC133C90C8FCB3A2EB03
C0EA07FF127FA41201EA007FA2133FB3B3AC497E497EB612E0A41B5F7DDE23>105
D<15F0EC03FCEC07FEEC0FFFA6EC07FEEC03FCEC00F01500B3A2151FEC3FFF0107B5FCA4
EB000F14038080B3B3B3AE001FEB01FEEA7FC0EAFFE015FCA2EC03F8A2EC07F0D87FC013
E09038800FC0393E001F80391FC07F00380FFFFE000313F838007FC0207C86DE28>I<D9
03C0D9FFC0EC07FED807FF010301F891381FFFC0B5010F01FE027F13F0923D3F00FF8001
F807FC0378903B3FC003C001FEDAC1E090261FE00FC77E0001D9C3C090260FF01E6E7ED8
007F49902607F81C6E7E02C7C75CD93FCE6E6C486E7E02CC166002DC16E002D85E02F8DA
01FF6F7E4A5EA24A93C8FCA44A5DB3B3496C4A6C4B7E496C4A6D4A7EB6D8F007B6D8803F
B512FCA4663F7CBE6F>109 D<D903C0EB7FE0D807FF903803FFFCB5010F13FFDB3F0013
C00378EB1FE04B6D7E0001D9C1C06D7E27007FC3808002C7C71203D93FCE81170114DC14
D802F86E7E5CA35CA35CB3B3496C4A7F496C4A7FB6D8F003B612C0A4423F7DBE49>I<ED
FF80020F13F8023F13FE9139FF007F80D903FCEB1FE0D907F0EB07F0D90FC0EB01F8D93F
80EB00FE49C8127F017E81496F7E48486F7E00038349150700078348486F7EA2001F8349
1501A2003F83A348486F7EA400FF1880AC007F1800A26D5DA2003F5FA36C6C4B5AA36C6C
4B5A00075FA26C6C4B5A6C6C4B5AA26C6C4B5A017F4BC7FC6D6C14FE6D6C495AD90FF0EB
07F8D903FCEB1FE0D900FFEB7F806EB5C8FC020F13F8020113C039417CBF42>I<903907
8003F8D807FFEB0FFFB5013F13C092387C0FE0913881F01F9238E03FF00001EB83803900
7F8700148FEB3F8E029CEB1FE0EE0FC00298EB030002B890C7FCA214B014F0A25CA55CB3
B0497EEBFFF8B612FCA42C3F7CBE33>114 D<1438A71478A414F8A31301A31303A21307
130F131FA2137F13FF1203000F90B6FCB8FCA3260007F8C8FCB3AE17E0AE6D6CEB01C0A3
16036D6C148016076D6C14006E6C5A91383FC01E91381FF07C6EB45A020313E09138007F
802B597FD733>116 D<B66C49B512E0A4000101F8C8387FFE0026007FE0ED1FF819E001
3F705A61131F6E93C7FC130F180E6E151E0107161C8001035EA26E157801011670806D5E
A26F1301027F5DA26E6C495AA26F1307021F92C8FCA26E6C130EA26F131E0207141CA26F
133C020314388102015CA26F13F06E5C168092387F81C0A216C3033F5B16E3DB1FE7C9FC
A216FF6F5AA26F5AA36F5AA26F5AA36F5A433F7FBD46>118 D E
%EndDVIPSBitmapFont
end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%PaperSize: A4
%%EndSetup
%%Page: 1 1
1 0 bop Black Black Black Black 992 400 a Fg(Ob)7 b(ject-Orien)l(ted)46
b(Programming)d(in)i(Ja)l(v)-7 b(a)300 755 y Ff(Problem)45
b(Set)h(3)1679 b(Due:)60 b(Jan)45 b(17,)h(2001)p 300
782 3600 4 v 300 1018 a(Group)e(Pro)7 b(ject:)61 b(Gn)l(utella)425
1271 y Fe(Gn)n(utella)28 b(is)h(a)f(p)r(eer-to-p)r(eer)f(net)n(w)n(ork)
n(ed)g(\014le)i(sharing)e(program.)38 b(Its)29 b(functionalit)n(y)f(is)
h(similar)f(to)g(that)h(of)300 1370 y(Napster)c(from)h(the)g(user's)f
(p)r(oin)n(t)h(of)g(view,)g(except)g(that)h(it)f(is)g(not)g(sp)r
(eci\014c)g(to)g(audio)f(\014les,)h(and)g(the)g(index)g(and)300
1470 y(searc)n(h)g(capabilities)h(are)g(not)g(cen)n(tralized)g(as)g(in)
h(Napster,)f(but)h(distributed)g(among)f(all)g(the)h(Gn)n(utella)f(no)r
(des.)425 1623 y(Eac)n(h)21 b(Gn)n(utella)h(program)f(is)h(b)r(oth)h(a)
f(clien)n(t)g(that)h(can)f(initiate)h(searc)n(hes)e(and)h(do)n(wnload)f
(\014les,)j(and)e(a)g(serv)n(er)300 1723 y(that)27 b(can)e(upload)h(lo)
r(cal)g(\014les)g(and)g(p)r(erform)g(searc)n(hes)e(on)i(b)r(ehalf)h(of)
f(clien)n(ts.)37 b(The)26 b(term)g Fd(servent)g Fe(is)h(often)f(used)
300 1823 y(to)k(describ)r(e)g(this)g(sort)f(of)h(clien)n(t-serv)n(er)e
(com)n(bination)h(\(Note)i(that)f(this)g(is)g(di\013eren)n(t)g(from)g
Fc(servant)d Fe(in)k(b)r(oth)300 1922 y(sp)r(elling)d(and)f
(connotation\).)425 2075 y(Eac)n(h)i(Gn)n(utella)i(serv)n(en)n(t)e
(running)h(on)h(an)f(individual)h(mac)n(hine)f(is)g(connected)h(via)f
(the)h(net)n(w)n(ork)e(to)i(some)300 2175 y(small)22
b(set)g(of)h(other)e(serv)n(en)n(ts)g(\(also)h(called)g(no)r(des)g(to)g
(emphasize)g(their)g(b)r(eing)h(part)f(of)g(a)g(net)n(w)n(ork)f
(graph\).)34 b(This)300 2275 y(in)n(terconnected)29 b(set)g(of)g(serv)n
(en)n(ts)e(is)i(the)h(Gn)n(utella)f(net)n(w)n(ork.)40
b(The)29 b(no)r(des)g(of)g(the)h(net)n(w)n(ork)d(w)n(ork)h(together)g
(to)300 2374 y(op)r(erate)f(as)g(one)g(large)f(searc)n(h)g(engine.)425
2528 y(The)h(prop)r(erties)g(that)h(mak)n(e)f(Gn)n(utella)g(an)g
(suitable)h(pro)5 b(ject)27 b(for)g(this)h(class)e(are:)p
Black 425 2747 a Fb(\017)p Black 41 w Fe(F)-7 b(unctional)24
b(requiremen)n(ts)f(that)i(demand)f(net)n(w)n(ork,)g(stream)f(IO,)h
(GUI,)h(and)f(m)n(ulti-threaded)g(program-)508 2847 y(ming)j(tec)n
(hniques,)p Black 425 2980 a Fb(\017)p Black 41 w Fe(Su\016cien)n(t)e
(complexit)n(y)g(for)f(a)h(c)n(hallenging)e(short-term)h(group)g(pro)5
b(ject,)25 b(without)h(b)r(eing)f(o)n(v)n(erwhelming,)p
Black 425 3113 a Fb(\017)p Black 41 w Fe(An)j(op)r(erational)e(net)n(w)
n(ork)g(arc)n(hitecture,)p Black 425 3245 a Fb(\017)p
Black 41 w Fe(A)h(published)i(and)e(w)n(ell-de\014ned)g(proto)r(col)g
(sp)r(eci\014cation)g(to)g(implemen)n(t,)p Black 425
3378 a Fb(\017)p Black 41 w Fe(A)g(collection)g(of)h(reference)f(clien)
n(ts)g(to)h(test)g(against,)p Black 425 3511 a Fb(\017)p
Black 41 w Fe(A)f(n)n(um)n(b)r(er)g(of)h(W)-7 b(eb)28
b(sites)f(dev)n(oted)g(to)g(it)h(pro)n(vided)e(do)r(cumen)n(tation)h
(and)h(reference)e(implemen)n(tations,)508 3611 y(and)p
Black 425 3743 a Fb(\017)p Black 41 w Fe(An)i(activ)n(e)e(net)n(w)n
(ork)h(to)g(connect)h(to)f(once)g(the)h(pro)5 b(ject)27
b(is)g(complete.)300 4063 y Fa(Gn)m(utella)32 b(Serv)m(en)m(t)h(Op)s
(eration)425 4216 y Fe(When)j(the)h(Gn)n(utella)g(serv)n(en)n(t)e(is)h
(started,)i(it)f(is)f(con\014gured)f(with)i(a)f(directory)f(on)h(the)h
(users)f(mac)n(hine)300 4316 y(con)n(taining)22 b(\014les)h(to)g
(share,)g(a)g(directory)e(to)i(store)g(do)n(wnloaded)e(\014les,)j(and)f
(the)h(IP)e(address)g(of)h(a)g(Gn)n(utella)g(no)r(de)300
4415 y(to)k(initially)h(connect)f(to.)37 b(Once)27 b(the)h(serv)n(en)n
(t)f(program)e(is)j(connected,)f(the)h(user)f(can)g(initiate)h(k)n(eyw)
n(ord-based)300 4515 y(searc)n(hes.)41 b(The)30 b(serv)n(en)n(t)f(forw)
n(ards)e(searc)n(h)i(requests)f(on)n(to)h(the)h(net)n(w)n(ork)f(and)g
(displa)n(ys)g(results)g(as)g(they)h(\014lter)300 4615
y(bac)n(k.)58 b(Unlik)n(e)36 b(a)e(cen)n(tralized)g(searc)n(h)g(engine)
h(lik)n(e)f(Go)r(ogle,)j(a)d(Gn)n(utella)h(no)r(de)g(c)n(hec)n(ks)f(an)
h(incoming)g(query)300 4714 y(against)24 b(the)i(\014les)f(it)h(is)g
(sharing)e(and)h(then)h(forw)n(ards)d(the)j(query)f(to)g(the)h(other)f
(no)r(des)g(it)h(is)f(directly)g(connected)300 4814 y(to.)37
b(Also)27 b(unlik)n(e)g(Go)r(ogle,)g(searc)n(h)f(is)i(based)f(only)g
(on)g(\014le)h(name,)f(not)h(con)n(ten)n(t.)425 4967
y(When)37 b(a)g(searc)n(h)f(is)h(successful,)j(the)d(user)g(can)g
(request)f(to)h(do)n(wnload)f(an)n(y)h(of)g(the)h(\014les)f(matc)n
(hing)g(the)300 5067 y(searc)n(h.)73 b(This)40 b(causes)f(the)i(Gn)n
(utella)f(serv)n(en)n(t)e(to)i(directly)g(connect)g(to)g(the)h(no)r(de)
f(sharing)f(that)h(\014le)g(and)300 5166 y(request)26
b(a)g(do)n(wnload.)35 b(If)27 b(the)g(request)f(is)g(successful,)g(it)h
(do)n(wnloads)e(the)i(\014le,)g(displa)n(ying)e(the)i(progress)d(of)j
(the)300 5266 y(do)n(wnload)f(as)h(it)h(pro)r(ceeds.)425
5419 y(While)41 b(it)h(is)g(op)r(erating,)h(the)f(Gn)n(utella)f(serv)n
(en)n(t)g(is)g(also)f(functioning)i(as)e(a)h(serv)n(er:)63
b(matc)n(hing)41 b(query)300 5519 y(requests)33 b(against)g(the)i
(\014les)f(it)h(is)f(sharing,)g(uploading)g(requested)g(\014les)g(to)g
(remote)f(no)r(des,)j(and)e(forw)n(arding)300 5618 y(searc)n(h)26
b(requests)h(through)g(the)h(net)n(w)n(ork.)p Black 2079
5949 a(1)p Black eop
%%Page: 2 2
2 1 bop Black Black 300 358 a Fa(The)32 b(Gn)m(utella)g(Net)m(w)m(ork)
425 511 y Fe(The)h(no)r(des)g(in)h(the)g(Gn)n(utella)g(net)n(w)n(ork)e
(comm)n(unicate)h(via)g(the)g(Gn)n(utella)h(proto)r(col,)g(whic)n(h)f
(de\014nes)h(the)300 611 y(b)r(eha)n(vior)28 b(of)i(a)g(Gn)n(utella)f
(serv)n(en)n(t.)43 b(Because)28 b(the)j(Gn)n(utella)e(serv)n(en)n(ts)g
(are)f(connected)i(via)f(this)h(proto)r(col,)g(the)300
710 y(individual)22 b(serv)n(en)n(t)f(programs)f(do)i(not)g(ha)n(v)n(e)
f(to)h(b)r(e)h(the)g(same.)34 b(An)n(y)22 b(program)e(that)j(implemen)n
(ts)g(the)f(Gn)n(utella)300 810 y(proto)r(col)30 b(can)h(b)r(e)g(a)g
(legitimate)g(no)r(de)g(in)g(the)h(Gn)n(utella)f(net)n(w)n(ork.)46
b(In)31 b(fact)h(there)f(are)f(sev)n(eral)f(serv)n(en)n(ts)h(that)300
909 y(are)d(a)n(v)-5 b(ailable)26 b(on)h(the)h(In)n(ternet,)g
(including)g(sev)n(eral)d(for)i(Windo)n(ws)h(and)f(t)n(w)n(o)g(written)
h(in)g(Ja)n(v)-5 b(a.)425 1063 y(The)21 b(Gn)n(utella)g(net)n(w)n(ork)e
(is)i(activ)n(ely)f(used)h(on)g(the)g(In)n(ternet)g(and)g(there)g(are)f
(sev)n(eral)f(thousand)i(no)r(des)g(activ)n(e)300 1162
y(at)29 b(an)n(y)f(giv)n(en)g(time.)41 b(The)29 b(distributed)g(nature)
g(of)g(the)g(Gn)n(utella)g(net)n(w)n(ork)e(and)i(its)g(searc)n(h)e
(algorithms)h(mak)n(e)300 1262 y(it)e(an)f(in)n(teresting)f(study)i(in)
f(net)n(w)n(ork)f(arc)n(hitecture.)35 b(It)26 b(has)f(sho)n(wn)f(some)h
(in)n(teresting)g(e\013ects)g(as)g(the)g(net)n(w)n(ork)300
1362 y(has)k(scaled)h(in)g(size.)43 b(The)30 b(arc)n(hitectural)e
(issues,)i(ho)n(w)n(ev)n(er)e(in)n(teresting,)i(are)f(b)r(ey)n(ond)g
(the)i(scop)r(e)e(of)h(this)g(class)300 1461 y(\(there)e(are)e(sev)n
(eral)g(pap)r(ers)h(on)g(the)h(W)-7 b(eb)28 b(discussing)f(these)h
(issues)f(if)h(y)n(ou)f(are)f(in)n(terested\).)300 1714
y Fa(Resources)425 1867 y Fe(A)k(cop)n(y)f(of)g(the)i(Gn)n(utella)e
(proto)r(col)g(sp)r(eci\014cation)g(is)h(a)n(v)-5 b(ailable)28
b(on)i(our)f(W)-7 b(eb)30 b(site.)44 b(\(Note:)d(This)30
b(PDF)g(is)300 1967 y(apparen)n(tly)c(only)i(view)n(able)e(from)h
(acroread.\))425 2120 y(The)37 b(master)g(site)g(for)g(information)g
(on)g(Gn)n(utella)h(is)f Fc(http://gnutella.)o(we)o(go.)o(co)o(m/)p
Fe(.)60 b(This)38 b(site)f(lists)300 2220 y(p)r(oin)n(ters)26
b(to)g(other)f(sites)h(with)h(additional)f(information)g(and/or)e
(clien)n(ts.)37 b(A)26 b(W)-7 b(eb)27 b(searc)n(h)e(on)h("Gn)n(utella")
f(will)300 2319 y(turn)j(up)g(more)f(information.)37
b(Use)28 b(the)g(W)-7 b(eb)28 b(and)g(the)g(attac)n(hed)f(proto)r(col)g
(do)r(cumen)n(t)h(as)f(y)n(our)g(main)h(sources)300 2419
y(of)g(information)e(for)i(this)f(pro)5 b(ject.)425 2572
y(The)19 b(sta\013)g(will)g(set)g(up)h(a)e(n)n(um)n(b)r(er)h(of)g(Gn)n
(utella)h(serv)n(en)n(ts)d(do)n(wnloaded)h(from)h(the)g(W)-7
b(eb)20 b(on)f(the)g(T)-7 b(A)20 b(mac)n(hines.)300 2672
y(These)27 b(serv)n(en)n(ts)f(can)i(b)r(e)g(used)f(to)h(test)g(against)
e(as)h(w)n(ell)g(as)g(for)g(UI)h(inspiration.)300 2925
y Fa(Serv)m(en)m(t)33 b(F)-8 b(unctionalit)m(y)425 3078
y Fe(The)27 b(functionalit)n(y)h(w)n(e)f(exp)r(ect)h(y)n(ou)f(to)g
(supp)r(ort)h(includes:)p Black 425 3298 a Fb(\017)p
Black 41 w Fe(F)-7 b(ull)36 b(implemen)n(tation)h(of)f(the)h(net)n(w)n
(ork)e(proto)r(col)g(as)g(b)r(oth)i(a)f(clien)n(t)g(and)h(serv)n(er,)f
(su\016cien)n(t)h(to)f(b)r(e)g(a)508 3397 y(functioning)27
b(no)r(de)h(in)g(the)g(Gn)n(utella)f(net)n(w)n(ork.)p
Black 425 3530 a Fb(\017)p Black 41 w Fe(Main)n(tenance)19
b(of)h(user)f(con\014guration)g(information,)i(suc)n(h)e(as)h(no)r(de)g
(to)g(connect)f(to)h(on)g(startup,)h(directory)508 3630
y(to)26 b(share)f(for)h(upload)g(and)g(share,)g(directory)f(in)i(whic)n
(h)f(to)h(do)n(wnload)e(\014les.)36 b(This)26 b(con\014guration)f
(should)508 3729 y(b)r(e)j(k)n(ept)f(in)h(a)f(\014le)h(and)f(b)r(e)h(p)
r(ersisten)n(t)g(b)r(et)n(w)n(een)f(program)f(executions.)p
Black 425 3862 a Fb(\017)p Black 41 w Fe(The)h(abilit)n(y)h(to)f
(connect)g(to)h(a)f(set)h(of)f(no)r(des)h(on)f(startup.)p
Black 425 3995 a Fb(\017)p Black 41 w Fe(A)36 b(GUI)g(that)g(allo)n(ws)
f(the)h(user)f(to)h(c)n(hange)f(the)h(con\014guration)e(info,)k
(connect)e(to)g(a)f(no)r(de,)j(initiate)e(a)508 4095
y(searc)n(h,)31 b(displa)n(y)g(the)h(results)f(of)h(a)f(searc)n(h)g
(\(a)g(list)h(of)g(\014les)g(with)g(asso)r(ciated)f(no)r(de)g(data\),)i
(do)n(wnload)d(a)508 4194 y(\014le)d(from)h(a)f(searc)n(h)f(result,)h
(and)h(monitor)e(who)i(is)f(uploading)g(what)h(from)f(this)h(no)r(de.)p
Black 425 4327 a Fb(\017)p Black 41 w Fe(A)21 b(certain)g(amoun)n(t)h
(of)f(securit)n(y)g(on)g(the)h(\014le)g(sharing.)33 b(In)22
b(particular,)g(that)f(the)h(serv)n(en)n(t)f(do)r(es)g(not)h(p)r(ermit)
508 4427 y(access)30 b(to)h(\014les)g(outside)g(of)g(the)h(upload)e
(directory)-7 b(.)47 b(\(Be)31 b(careful)g(of)g(paths)g(suc)n(h)g(as)g
Fc(../../yourfile)508 4526 y Fe(whic)n(h)c(will)h(allo)n(w)e(outside)i
(access)e(if)i(y)n(ou)f(are)g(not)g(careful\).)300 4846
y Fa(Plan)425 4999 y Fe(This)f(is)h(a)f(ma)5 b(jor)26
b(implemen)n(tation)h(e\013ort)g(in)n(v)n(olving)e(sev)n(eral)g(p)r
(eople.)37 b(It)27 b(is)f(an)h(exercise)f(is)g(group)g(organi-)300
5099 y(zation)h(and)h(pro)5 b(ject)27 b(managemen)n(t)g(\(without)i(an)
f(actual)f(manager!\))37 b(as)27 b(w)n(ell)h(as)f(a)g(programming)f(c)n
(hallenge.)300 5198 y(W)-7 b(e)28 b(highly)f(recommend)g(follo)n(wing)g
(these)h(steps.)300 5351 y Fa(Step)64 b(1:)41 b Fe(T)-7
b(ak)n(e)27 b(a)g(deep)h(breath,)f(stop,)g(and)h(think.)300
5505 y Fa(Step)73 b(2:)51 b Fe(Read)31 b(the)h(proto)r(col)e(sp)r(ec)i
(thoroughly)-7 b(.)47 b(Read)32 b(an)n(y)e(do)r(cumen)n(tation)i(a)n(v)
-5 b(ailable)30 b(on)h(the)h(In)n(ternet,)300 5604 y(and)27
b(c)n(hec)n(k)g(out)h(the)g(reference)e(clien)n(ts.)p
Black 2079 5949 a(2)p Black eop
%%Page: 3 3
3 2 bop Black Black 300 358 a Fa(Step)68 b(3:)47 b Fe(In)29
b(y)n(our)g(groups,)f(dev)n(elop)h(y)n(our)g(design)g(from)g(the)h(top)
g(do)n(wn.)42 b(Decide)30 b(\014rst)f(on)h(what)f(the)h(ma)5
b(jor)300 457 y(mo)r(dules)33 b(or)f(sub-systems)g(are)g(and)g(ho)n(w)g
(they)i(comm)n(unicate.)52 b(De\014ne)33 b(the)g(in)n(terfaces)f(b)r
(et)n(w)n(een)h(them)g(and)300 557 y(what)28 b(data)f(is)g(shared.)36
b(Do)r(cumen)n(t)28 b(these)g(decisions.)300 710 y Fa(Step)84
b(4:)62 b Fe(Decide)37 b(ho)n(w)f(the)h(pro)5 b(ject)36
b(is)g(to)h(b)r(e)g(divided)f(among)g(the)h(group)e(mem)n(b)r(ers.)63
b(It)37 b(could)g(b)r(e)f(one)300 810 y(sub-system)f(p)r(er)g(p)r
(erson,)i(or)e(m)n(ultiple)h(p)r(eople)g(w)n(orking)e(together)g(on)i
(a)f(single)g(piece)g(\(the)i(prop)r(onen)n(ts)d(of)300
909 y(Extreme)23 b(Programming)e(b)r(eliev)n(e)j(in)g(pair)f
(programming;)g(t)n(w)n(o)g(p)r(eople)g(w)n(orking)f(together)h(on)h
(the)g(same)f(co)r(de,)300 1009 y(one)k(t)n(yping)g(and)h(one)f(w)n
(atc)n(hing,)g(to)g(c)n(hec)n(k)g(eac)n(h)g(other's)g(errors)e(and)i
(design)g(decisions\).)300 1162 y Fa(Step)64 b(5:)41
b Fe(Decide)28 b(on)g(ho)n(w)f(the)h(group)e(is)h(going)g(to)g(co)r
(ordinate)g(and)g(share)g(\014les,)g(data,)g(and)h(testing.)300
1316 y Fa(Step)58 b(6:)40 b Fe(Come)24 b(up)i(with)f(a)g(plan)f(for)h
(testing)g(eac)n(h)f(sub-system)g(indep)r(enden)n(tly)i(and)f(a)f(plan)
h(for)g(testing)g(the)300 1415 y(en)n(tire)i(program.)300
1568 y Fa(Step)58 b(7:)40 b Fe(Eac)n(h)24 b(sub-group)g(should)h(then)g
(design)g(their)g(sub-system,)g(again)f(top)h(do)n(wn.)36
b(F)-7 b(ollo)n(wing)24 b(the)h(steps)300 1668 y(from)33
b(PS2,)i(de\014ne)e(the)h(ma)5 b(jor)33 b(classes)f(and)h(in)n
(terfaces,)h(and)g(the)g(metho)r(ds)f(b)n(y)h(whic)n(h)f(they)h(in)n
(teract.)54 b(The)300 1768 y(design)22 b(the)h(data)g(represen)n
(tations)d(and)j(an)n(y)f(utilit)n(y)h(classes)e(and)i(metho)r(ds.)36
b(Do)r(cumen)n(t)23 b(these)g(decisions.)34 b(Y)-7 b(ou)300
1867 y(should)27 b(ha)n(v)n(e)g(substan)n(tial)g(Ja)n(v)-5
b(ado)r(c)26 b(written)i(and)f(w)n(orking)f(b)r(efore)h(actually)g
(implemen)n(ting)h(an)n(y)f(metho)r(ds.)300 2021 y Fa(Step)77
b(8:)55 b Fe(Finally)-7 b(,)35 b(start)e(implemen)n(ting)h(b)r
(ottom-up,)h(testing)e(eac)n(h)g(new)h(set)f(of)g(metho)r(ds)h(and)f
(eac)n(h)g(new)300 2120 y(functionalit)n(y)j(as)g(it)g(get)g(dev)n
(elop)r(ed.)62 b(Consider)36 b(an)g(implemen)n(tation)g(strategy)f
(that)h(w)n(ould)g(allo)n(w)f(partial)300 2220 y(sub-system)27
b(testing)g(and)g(early)f(testing)i(of)f(the)h(in)n(tegration)e(of)h
(these)g(in)n(to)g(the)h(o)n(v)n(erall)d(program)h(in)h(order)f(to)300
2319 y(v)-5 b(alidate)27 b(y)n(our)g(design.)300 2473
y Fa(Step)64 b(9:)41 b Fe(Complete)28 b(sub-system)f(testing)h(and)f
(com)n(bine)g(in)n(to)g(the)h(complete)g(program.)300
2626 y Fa(Step)66 b(10:)45 b Fe(T)-7 b(est)29 b(the)g(program.)38
b(Connect)29 b(with)g(other)g(no)r(des)f(in)h(ADU)h(and)f(searc)n(h)e
(for)h(in)n(teresting)g(\014les)h(to)300 2726 y(do)n(wnload.)36
b(Host)27 b(some)g(\014les)h(on)f(y)n(our)f(mac)n(hine)h(\(k)n(eep)h
(it)g(legal,)f(please\))g(for)g(others)g(to)g(upload.)300
2879 y Fa(Step)79 b(11:)56 b Fe(Once)34 b(y)n(ou)f(ha)n(v)n(e)g(v)n
(eri\014ed)h(y)n(our)e(program)h(against)g(the)h(reference)f(clien)n(t)
i(\(and)f(those)g(of)g(other)300 2978 y(groups\),)27
b(try)g(to)g(connect)h(to)f(the)h(Gn)n(utella)g(net)n(w)n(ork)e
(outside)h(of)h(ADU.)425 3231 y(Go)r(o)r(d)f(Luc)n(k)p
Black 2079 5949 a(3)p Black eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF