Latest MPI/RT Chapter

Robert George (robert@erc.msstate.edu)
Mon, 1 Jul 1996 15:36:48 -0500

--2941_daa-7811_433-74dd_2cb6
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-MD5: rQAy9qivUrKtvpMSEdsnZw==
X-Sun-Data-Type: text

Here's the latest version of the MPI Real-time and Embedded Extensions.

The majority of the changes consist of editorial corrections. In addition, the
MIP/RT software abstraction model diagram has been changed to reflect
discussions at the last meeting. MPI_WTIME_DRIFT is now a DOUBLE.
MPI_START_AT() has become MPI_START_TIME(). Finally, the requestout object of
the MPI_START_TIME() call has been changed to a function pointer for handling of
failures.

Please note that we need to fill out the priority-driven and event-driven
paradigms!

We will be releasing another version of the chapter by the July 5th deadline for
inclusion in next meeting's chapter. Please send any feedback as soon as
possible for inclusion in Friday's chapter.

Thanks,

Robert

-- 
Robert George                              Engineering Research Center 
(601) 325-4585                             P.O. Box 6176
http://www.erc.msstate.edu/~robert         Mississippi State, MS 39762
   "Skill and confidence are an unconquered army." - George Herbert

--2941_daa-7811_433-74dd_2cb6 Content-Type: application/postscript Content-Transfer-Encoding: 7bit Content-MD5: Hp5bTOn88QdrvE+sGBBVSA== Content-Description: mpi-rt.ps X-Sun-Data-Type: postscript-file

%!PS (but not EPSF; comments have been disabled) %DVIPSCommandLine: dvips -o mpi-rt.ps mpi-rt.dvi %DVIPSParameters: dpi=600, compressed, comments removed %DVIPSSource: TeX output 1996.07.01:1524 /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}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{dup dup 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 /IE 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 IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /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 dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup 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 /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]/id ch-image N /rw ch-width 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 dup 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 dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 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}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] }if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 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 dup 1 get dup mul exch 0 get dup 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 /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 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 /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /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 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 TeXDict begin 40258431 52099146 1000 600 600 (mpi-rt.dvi) @start /Fa 8 118 df<EA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F80C7FC ABEA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F800D2579A41B>58 D<B87E17F817FF18C028007FF8000713F09338007FF8EF1FFE717E050313807113C0A271 13E0F07FF0A2F03FF8A219FC181FA219FEA419FFAC19FEA419FC183FA219F8187F19F0F0 FFE0A24D13C04D13804D1300EF1FFEEF7FFC933807FFF0B912C095C7FC17FC178040397D B849>68 D<903801FFC0010F13FC017F13FFD9FF8013802603FE0013C048485AEA0FF812 1F13F0123F6E13804848EB7F00151C92C7FC12FFA9127FA27F123FED01E06C7E15036C6C EB07C06C6C14806C6C131FC69038C07E006DB45A010F13F00101138023257DA42A>99 D<EA01F0EA07FC487EA2487EA56C5AA26C5AEA01F0C8FCA913FF127FA412077EB3A9B512 F8A4153B7DBA1B>105 D<01FEEB7FC000FF903803FFF8020F13FE91381F03FFDA3C0113 80000713780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430257DA435> 110 D<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D7E4848 6D7EA2003F81491303007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA26C6C49 5A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>I<9038 3FF0383903FFFEF8000F13FF381FC00F383F0003007E1301007C130012FC15787E7E6D13 0013FCEBFFE06C13FCECFF806C14C06C14F06C14F81203C614FC131F9038007FFE140700 F0130114007E157E7E157C6C14FC6C14F8EB80019038F007F090B512C000F8140038E01F F81F257DA426>115 D<01FFEC3FC0B5EB3FFFA4000714016C80B3A35DA25DA26C5C6E48 13E06CD9C03E13FF90387FFFFC011F13F00103138030257DA435>117 D E /Fb 19 118 df<EC07F8A24A7EA24A7EA2157EEC3F7F143EA291387E3F80A2147C02 FC7F151FA2D901F87F150F01038014F0A201076D7E14E0A2010F6D7E14C0A2011F6D7E14 80013F808191C7FC4981167F137E01FE6E7E90B7FCA24882A3D803F8C7EA0FF05B000782 16075B000F8216035B001F8216015B003F6F7EA248C91380177F127E00FE17C0323A7EB9 37>65 D<913803FF80021F13F891B6FC4915C013075B4948C61380D97FF0130FD9FFC013 034A13014890C9FC485A485A5B120F5B485AA2485AA3485AA448CAFCAC6C7EA46C7EA36C 7EA26C7E7F12077F6C7E6C6C15206C6D14E06E1301D97FF0130FD91FFE137F6DB6FC6D15 C0010115006D5C021F13F0020313802B3E7BBB35>67 D<B712F0A690C9FCB390B612C0A5 90C9FCB3A390B612FCA7263A78B932>69 D<12FFB3B3B3A4083A79B917>73 D<D8FFC0ED07FFA36D5DA26D5D00FE177FA26D153F0178153EA2017C157EA26D15FCA301 3F14016D15F8A26E1303010F15F06E1307A2010715E06E130FA2010315C06E131FA20101 15806E133FA2010015006E5B027C137E027E13FEA2023E5BEC3F01A2021F5B1583A2020F 5B15C702075BA3913803EFC0A215FF6E5BA26E90C7FCA392C8FCA2383A78B949>77 D<D8FFE0EC1FC0A27FA27FA2487EA2137EA2137F7F80131FA26D7EA28013078013038013 0180130080A2147FA2EC3F80A2EC1FC0A2140F15E0140715F0140315F8140115FC1400A2 157EA2157F153F169F151FA2ED0FDFA2ED07FFA281A281A22A3A78B93B>I<EC07F89138 7FFF8049B512E04980010F14FC90391FFC0FFE90393FE001FF903A7F80007F8049C76C7E 48486E7E48486E7E49140700078248486E7E491401001F82491400A2003F824981007F17 80A390C9123FA24817C0AC6C6CED7F80A56C6CEDFF00A26D5C001F5EA26C6C4A5AA26C6C 4A5A6C6C4A5A6D141F00015E6C6C4A5AD97FC0EBFF806D6C4890C7FC90391FFC0FFE6DB5 5A6D5C010114E06D6C1380DA07F8C8FC323E7BBB3D>I<B612C015F815FF8216E090C77F ED1FF8ED07FC15036F7E150082821780A2163FA4167FA217005E5E15014B5A1507ED1FF8 EDFFF090B65A168093C7FC15F815C090CAFCB3A6293A79B935>I<B67E15F815FE6F7E82 90C77FED1FF06F7EED03FC150182150082A282A35EA25E15015E1503ED0FF84B5AEDFFE0 90B65A5E4BC7FC15F815E09038000FF01407811403811401816E7E8182153F826F7EA26F 7EA26F7E1503826F7EA26F7EA2EE7F80EE3FC0A2EE1FE02B3A78B936>82 D<EB03FF011F13F0017F13FE48B612804815C05A4848C6FCD81FF0EB1F80484813070180 1303007F140090C9FCA212FEA67E7E7F7FEA3FF013FC381FFFC06C13FC6CEBFF806C14E0 6C14F86C80013F7F01077FD9007F1380020713C0020013E0157FED1FF0150FA2ED07F8A2 1503A6ED07F0124012600078EC0FE0007C141FB4EC3FC001C0EBFF80EBFC036CB6120000 1F5C6C14F800015C6C6C13C0D907FEC7FC253E7CBB2E>I<B4ED1FC0B3B3A76CED3F807F A36C6CEC7F00A26C6C14FE6C6C13016D495A6C6C495A6C6CEB1FF03A01FFC07FE06C90B5 5A013F5C6D49C7FC010713F89038007FC02A3C79B939>85 D<B46CED07F0170F6C6CED1F E06C6C16C0173F6C6CED7F806D1600000F5E6C6C4A5A6D5D000315036C6C4A5A806C4B5A 6D6C495A80013F4A5A6D6C5C167F6D6C49C7FC6D6C5B15016D6C485A01015CECFF076DEB 87F091387F8FE015CF91383FDFC06EB45AA26E90C8FC5D14076E5AB3A6343A7FB937>89 D<EB1FF0EBFFFC000313FF000F14804814C09038E01FE09038000FF0001C13070018EB03 F81210C7FCEC01FCA7143FEB0FFF90B5FC1203120F381FFE01EA3FE0EA7F80130012FEA4 14037E387F800FEBE03F6CB5FC7E6C13F96C13E1D801FEC7FC1E287DA628>97 D<EB07F8EB1FFE90387FFF8048B512C04814E03907FC0FF0390FF003F8EBE001391FC000 FC49137C003F147E90C7123E5A127E151F12FEB7FCA500FCC8FCA27EA2127EA2127F7E7F 6C7E6D13026C6C130E6C6C133E3903FE01FE6CB5FC6C14FC6D13F0011F13C0903803FE00 20287EA625>101 D<903907F03F80EB3FFCEBFFFE48EBFFBF4814FF3807FE07380FF801 48487E5B4848137F5B007F143F90C7FCA312FEA97E7EA27F123F6D137F6C7E15FF380FF8 013807FE0790B6FC6C143FC613FEEB7FF8EB1FE090C7FCAF21367DA52B>113 D<14F0EAFC07130F133F137F13FF00FD130013FCEAFFF05B5BA25B90C7FCA35AB3A41426 7AA51C>I<EB7FE03801FFFC0007EBFF804814C05A383FC03F90380007801401007E90C7 FCA4127FA26C7E13F0EBFF806C13F06C13FC6C7F6C7FC61480131F010013C0143FEC0FE0 A21407A3124012600078EB0FC000FE131F39FFC07F8090B5FC6C1400001F5B000313F838 007FC01B287EA620>I<EA01FCAAB6FCA5D801FCC7FCB3A76D138014013900FF07C014FF A26D1300EB3FFCEB1FE01A307FAE1E>I<00FEEB01FCB3AA1403A214076C131F387F807F 90B5FC6C13F914F1000F13C1D803FCC7FC1E267AA42B>I E /Fc 44 123 df<DA0FF813FC91397FFF07FF903B01F807DF83C0903A07E001FF0F903B1F8007 FE1FE090393F000FFC137E16F85B9338F007804848010790C7FC1503ACB812F8A32801F8 0003F0C7FCB3AB486C497E267FFFE0B512F0A3333B7FBA30>11 D<EC0FF8EC7FFE903901 F80780903907E001C090391F8000E090383F0007017E497EA25BA2485A6F5AED018092C8 FCA9ED03F0B7FCA33901F8000F1503B3AA486C497E267FFFE0B512C0A32A3B7FBA2E>I< 121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A5A5A12 600A1979B917>39 D<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA2 12075B120F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F 1203A26C7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>I<12C0 7E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7FA21480 A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A25BA248 5A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<121C127FEAFF80A213C0A3127F 121C1200A412011380A2120313005A1206120E5A5A5A12600A19798817>44 D<B512FCA516057F941C>I<121C127FEAFF80A5EA7F00121C0909798817>I<150C151E15 3EA2153C157CA2157815F8A215F01401A215E01403A215C01407A21580140FA215005CA2 141E143EA2143C147CA2147814F8A25C1301A25C1303A2495AA25C130FA291C7FC5BA213 1E133EA2133C137CA2137813F8A25B1201A25B1203A25B1207A25B120FA290C8FC5AA212 1E123EA2123C127CA2127812F8A25A12601F537BBD2A>I<1538A3157CA315FEA34A7EA3 4A6C7EA202077FEC063FA2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC 6003A202C07F1501A2D901807F81A249C77F167FA20106810107B6FCA24981010CC7121F A2496E7EA3496E7EA3496E7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3 373C7DBB3E>65 D<B812F8A30001903880001F6C90C71201EE00FC177C173C171CA2170C A4170E1706A2ED0180A21700A41503A21507151F91B5FCA3EC001F15071503A21501A692 C8FCAD4813C0B612C0A32F397DB836>70 D<B612C0A3C6EBC0006D5AB3B3AD497EB612C0 A31A397EB81E>73 D<B5913807FFFE8080C69238007FE06EEC1F80D9DFF0EC0F001706EB CFF8EBC7FCA2EBC3FEEBC1FFA201C07F6E7EA26E7E6E7E81140F6E7E8114036E7E168080 ED7FC016E0153FED1FF0ED0FF8A2ED07FCED03FEA2ED01FF6F1386A2EE7FC6EE3FE6A2EE 1FF6EE0FFEA216071603A216011600A2177E486C153E487ED80FFC151EB500C0140EA217 0637397DB83E>78 D<EC03FF021F13E09138FE01FC903901F8007ED907E0EB1F8049486D 7ED93F80EB07F049C76C7E01FE6E7E48486E7E49157E0003167F4848ED3F80A24848ED1F C0A2001F17E049150F003F17F0A3007F17F8491507A300FF17FCAC007F17F86D150FA300 3F17F0A26C6CED1FE0A36C6CED3FC0000717806D157F000317006C6C15FEA26C6C4A5A01 7F4A5A6D6C495A6D6C495AD907E0EB1F80D903F8017FC7FC903900FE01FC91381FFFE002 0390C8FC363D7BBA41>I<B712C016F816FE000190398001FF806C90C7EA3FC0EE0FE0EE 07F0EE03F817FC17FE1601A217FFA717FEA2EE03FCA2EE07F817F0EE0FE0EE3FC0923801 FF0091B512FC16F091C9FCB3A5487FB6FCA330397DB839>I<B612FEEDFFE016F8000190 388007FE6C90C76C7EEE3FC0707E707E707EA2707EA283A65FA24C5AA24C5A4C5AEE3F80 04FFC8FCED07FC91B512E05E9138000FF0ED03F8ED00FE82707E707EA2161F83A583A6F0 0180A217F8160F1803486D01071400B66D6C5A04011306933800FE0ECAEA3FFCEF07F039 3B7DB83D>82 D<003FB812E0A3D9C003EB001F273E0001FE130348EE01F0007816000070 1770A300601730A400E01738481718A4C71600B3B0913807FF80011FB612E0A335397DB8 3C>84 D<B6903807FFFEA3000101809038007FE06C90C8EA1F80EF0F001706B3B2170E6D 150C80171C133F17186D6C14385F6D6C14F06D6C5C6D6C495A6D6CEB07806D6C49C7FC91 387F807E91381FFFF8020713E09138007F80373B7DB83E>I<EB1FE0EBFFFC3803E03F39 07000F80390F8007E0486C6C7E13E06E7EA26E7E6C5A6C5AC8FCA4147FEB07FFEB3FE0EB FE00EA03F8EA0FF0EA1FC0123F485A90C7FC160C12FEA31401A26C13036CEB077C903980 063E18383FC01E3A0FE0781FF03A03FFF00FE03A007F8007C026277DA52A>97 D<EA03F012FFA3120F1203B0EC1FE0EC7FF89038F1E03E9039F3801F809039F7000FC001 FEEB07E049EB03F049EB01F85BED00FCA216FEA2167E167FAA167E16FEA216FC15016D14 F8ED03F07F01EEEB07E001C6EB0FC09039C7801F00903881E07E903800FFF8C7EA1FC028 3B7EB92E>I<EB03FC90381FFF8090387E03E03901F80070484813F83907E001FC380FC0 03A2EA1F80123F90380001F848EB00F01500A2127E12FEAA127E127FA26C14067F001F14 0E6D130C000F141C6C6C13386C6C13706C6C13E039007C07C090381FFF00EB07F81F277D A525>I<ED0FC0EC03FFA3EC003F150FB0EB03F8EB1FFF90387E078F9038F801EF3903F0 007F4848133F4848131FA24848130F123F90C7FC5AA2127E12FEAA127E127FA27EA26C6C 131FA26C6C133F6C6C137F6C6CEBEFF03A01F801CFFF39007C078F90381FFE0FD907F813 C0283B7DB92E>I<EB07F8EB1FFF90387C0FC03901F803E03903F001F0D807E013F8380F C0004848137CA248C7127E153E5A153F127E12FEA3B7FCA248C8FCA5127EA2127FA26C14 037F001F14076C6C13060007140E6D131CD801F013386C6C137090387E03E090381FFF80 903803FC0020277EA525>I<147E903803FF8090380FC1E0EB1F8790383F0FF0137EA213 FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A31C3B7FBA19>I< ED03F090390FF00FF890393FFC3C3C9039F81F707C3901F00FE03903E007C03A07C003E0 10000FECF000A248486C7EA86C6C485AA200075C6C6C485A6D485A6D48C7FC38073FFC38 060FF0000EC9FCA4120FA213C06CB512C015F86C14FE6CECFF804815C03A0F80007FE048 C7EA0FF0003E140348140116F8481400A56C1401007C15F06CEC03E0003F1407D80F80EB 0F80D807E0EB3F003901FC01FC39007FFFF0010790C7FC26387EA52A>I<EA03F012FFA3 120F1203B0EC0FF0EC3FFCECF03F9039F1C01F809039F3800FC0EBF70013FE496D7EA25B A35BB3A3486C497EB500C1B51280A3293A7EB92E>I<EA0380EA0FE0487EA56C5AEA0380 C8FCAAEA03F012FFA312071203B3AA487EB512C0A312387EB717>I<EB01C0EB07F0EB0F F8A5EB07F0EB01C090C7FCAAEB01F813FFA313071301B3B3A2123C127E00FF13F01303A2 14E038FE07C0127C383C0F00EA0FFEEA03F8154984B719>I<EA03F012FFA3120F1203B1 913801FFFCA39138007FC01600157C15705D4A5A4A5A4AC7FC141E1438147814FC13F1EB F3FEEBF73F01FE7FEBF81F496C7E8114076E7E6E7E811400157E157F811680ED1FC0486C EB3FF0B500C0B5FCA3283A7EB92C>I<EA03F012FFA3120F1203B3B3AD487EB512C0A312 3A7EB917>I<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E07E903BF1C01F8380 3F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2495CA3495CB3A348 6C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00FF000FFEB3FFCECF03F90 39F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C497EB500C1B51280 A329257EA42E>I<EB03FE90380FFF8090383E03E09038F800F84848137C48487F48487F 4848EB0F80001F15C090C712074815E0A2007EEC03F0A400FE15F8A9007E15F0A2007F14 076C15E0A26C6CEB0FC0000F15806D131F6C6CEB3F006C6C137EC66C13F890387E03F090 381FFFC0D903FEC7FC25277EA52A>I<3903F01FE000FFEB7FF89038F1E07E9039F3801F 803A07F7000FC0D803FEEB07E049EB03F04914F849130116FC150016FEA3167FAA16FEA3 ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F009038F1E07E9038F0FF F8EC1FC091C8FCAB487EB512C0A328357EA42E>I<D903F813C090381FFE0190387E0781 9038FC01C33903F000E3000714774848133749133F001F141F485A150F48C7FCA312FEAA 127FA37E6D131F121F6D133F120F6C6C137F6C6C13EF3901F801CF39007E078F90381FFE 0FEB07F890C7FCABED1FE00203B5FCA328357DA42C>I<3807E01F00FFEB7FC09038E1E3 E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300A45BB3A2487EB512 F0A31C257EA421>I<EBFF03000313E7380F80FF381E003F487F487F00707F12F0A2807E A27EB490C7FCEA7FE013FF6C13E06C13F86C7F00037FC67F01071380EB007F141F00C0EB 0FC01407A26C1303A37E15806C13077EEC0F00B4131E38F3C07C38E1FFF038C03F801A27 7DA521>I<1318A51338A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215 C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220>I<D803F0EB07E0 00FFEB01FFA3000FEB001F00031407B3A4150FA3151F12016D133F0000EC77F86D9038E7 FF8090383F03C790381FFF87903A03FC07E00029267EA42E>I<B538803FFEA33A0FF800 0FF06C48EB07E00003EC03C06D148000011500A26C6C1306A26D130E017E130CA26D5BA2 EC8038011F1330A26D6C5AA214E001075BA2903803F180A3D901FBC7FCA214FF6D5AA214 7CA31438A227257EA32C>I<B53A1FFFE03FFEA3260FF8009038000FF86C48017EEB03E0 18C00003023EEB0180A26C6C013FEB0300A36C6CEC8006156FA2017E9038EFC00C15C7A2 D93F016D5A15830281EBF038D91F831430150102C3EBF87090260FC6001360A2D907E66D 5A02EC137CA2D903FCEB7F804A133FA2010192C7FC4A7FA20100141E4A130E0260130C37 257EA33C>I<B538807FFFA33A03FE003FF00001EC1F80000092C7FC017E131C6D13186D 6C5AECC070010F5B6D6C5AECF180EB03FB6DB4C8FC6D5AA2147F804A7E8114CF903801C7 E090380383F090380703F8EB0601496C7E011C137E49137F01787F496D7E486C80000FEC 3FF0D8FFFE90B51280A329247FA32C>I<B538803FFEA33A0FF8000FF06C48EB07C00003 EC03806C7E16007F00001406A2017E5BA2137F6D5BA26D6C5AA2ECC070010F1360A26D6C 5AA214F101035BA2D901FBC7FCA214FF6D5AA2147CA31438A21430A214701460A25CA2EA 7C0100FE5B130391C8FC1306EAFC0EEA701C6C5AEA1FF0EA0FC027357EA32C>I<003FB5 12FCA2EB8003D83E0013F8003CEB07F00038EB0FE012300070EB1FC0EC3F800060137F15 0014FE495AA2C6485A495AA2495A495A495AA290387F000613FEA2485A485A0007140E5B 4848130C4848131CA24848133C48C7127C48EB03FC90B5FCA21F247EA325>I E /Fd 55 126 df<EB07E0EB1FF8497E137F497E803801FC7F497E810003131F13F0A614 3F92C8FC91387F0FFF9026F87E1F1380000113FEEBF9FC13FB4A6C1300D9FFF013C06C13 E0151F02C05BEB7F809038FF003F4892C7FC485C48EB807E5A15FE391FDFC0FC383F8FE0 14E1397F07F1F8EB03F300FEEBFBF0EB01FF5D7FEDC006027F130F91393F801F8015C06C 137F6CEBFFE049EBF83F018701FC1300263FFFFBB5FC6C01F15B14E06C9038C03FFC0003 9038001FF8D801FCEB07E0293A7DB830>38 D<141E147F14FF5BEB03FEEB07FCEB0FF0EB 1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F5BA2127F90C7FCA4 12FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7EEB7F80EB3FC0EB1F E0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>40 D<127812FE7E7F6C7E6C7E EA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB03F8A214FC1301 A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14E0EB1FC0133F14 80137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A1278184778BE30>I<EA03 E0EA0FF0EA1FF813FCEA3FFEA213FFA27EA27E1203EA007FA2137E13FEEA01FC1203EA07 F8EA3FF0127FEAFFE0EA7F801300123C1019708B30>44 D<120FEA3FC0EA7FE0A2EAFFF0 A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>46 D<16F01501ED03F8A21507A2ED0FF0A2ED1F E0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA24A5AA24A5AA24A5AA2 4AC7FCA2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249C8FCA2485AA25B1203 A2485AA2485AA2485AA2485AA2485AA248C9FCA25AA2127CA225477BBE30>I<14FE9038 07FFC0497F013F13F8497F90B57E48EB83FF4848C6138049137F4848EB3FC04848EB1FE0 49130F001F15F0491307A24848EB03F8A290C712014815FCA400FEEC00FEAD6C14016C15 FCA36D1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A26C6CEB3FC06C6CEB7F 806D13FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FEC7FC273A7CB830>I< EB03C0497EA2130FA2131FA2133F137F13FF1203123FB5FCA213EF138FEA7E0F1200B3B0 003FB512F84814FCB612FEA26C14FC6C14F81F3977B830>I<EB03FF013F13E090B512F8 4814FE4880481580260FFE0113C09038F0007F4848EB1FE0150F16F01507A26C5A6C5AC8 FC150F16E0A2151FED3FC0157FEDFF8002071300903807FFFE495B5D8115FF6D1480D900 0113C09138003FE0ED1FF0ED07F8150316FC150116FE1500A21218127EB4FCA2150116FC 4814036C15F86C6C13076DEB1FF0D83FF0133F3A1FFE01FFE06CB612C06C15806CECFE00 C65C013F13F001031380273A7CB830>51 D<EC03FC4A7E140F141FA2143F147F157E14FE A2EB01FCEB03F8A2EB07F0A2EB0FE0EB1FC0A2EB3F80A2EB7F0013FEA2485A485AA2485A A2485A485AA2485AA248C7FC12FEB8FC1780A46C1600C8007EC7FCAA91387FFFFE91B6FC A46E5B29397DB830>I<EA03C0EA0FF0EA1FF8A2EA3FFCA4EA1FF8A2EA0FF0EA03C0C7FC AFEA03C0EA0FF0121F13F8123F13FCA3121FA2120F12031200120113F8120313F01207EA 1FE0123FEA7FC0EAFF80EA7F00127E12380E3470A630>59 D<007FB7FCA2B81280A36C16 006C5DCBFCA7003FB612FE4881B81280A36C1600A229157DA530>61 D<147F4A7EA2497FA4497F14F7A401077F14E3A3010F7FA314C1A2011F7FA490383F80FE A590387F007FA4498049133F90B6FCA34881A39038FC001F00038149130FA40007814913 07A2D87FFFEB7FFFB56CB51280A46C496C130029397DB830>65 D<91387F803C903903FF F03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48EB801F3903FE000F484813075B4848 1303A2484813015B123F491300A2127F90C8FC167C16005A5AAC7E7EA2167C6D14FE123F A27F121F6D13016C6C14FCA26C6CEB03F86D13076C6CEB0FF03901FF801F6C9038E07FE0 6DB512C06D14806D1400010713FC6D13F09038007FC0273A7CB830>67 D<007FB7FCB81280A47ED803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FCA6EBF800 A4157C92C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>69 D<003FB712804816C0B8FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157FA490B6FC A69038FC007FA4153E92C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>I<02FF13F0 0103EBC0F8010F13F1013F13FD4913FF90B6FC4813C1EC007F4848133F4848131F49130F 485A491307121F5B123F491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C 7F6C6D1400ED03F8A27F003F1407A27F121F6D130F120F7F6C6C131FA2D803FE133F6C6C 137FECC1FF6C90B5FC7F6D13FB010F13F30103EBC1F0010090C8FC293A7DB830>I<007F B6FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C1500213879B730>73 D<383FFFF8487FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8FCA2 7E6C16802A387EB730>76 D<D83FF8ECFFE0486C4913F0486C4913F8A2007F16F06C6C49 13E00007160001EF14BFEC800FA39039E7C01F3FA4ECE03F01E3133EA2ECF07EA201E113 7CA2ECF8FCA201E013F8A214FDEC7DF0A3147FEC3FE0A3EC1FC0A2EC070091C7FCADD83F FC903801FFE0486C4913F0B54913F8A26C486D13F06C486D13E02D387FB730>I<D83FFC 90381FFF80486C4913C0B54913E0A26C6D6C13C06C6E13800003913801F800EBF7C0A3EB F3E0A314F013F1A214F8A213F014FCA2147C147EA2143E143FA2141FA21581A2140F15C1 A2140715E1A2140315F1A21401A215F91400A3157DA3153FEA3FFF481380B5EAC01FA26C EB800F6C496C5A2B387EB730>I<90383FFFE048B512FC000714FF4815804815C04815E0 EBF80001E0133FD87F80EB0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A36D 130FA26D131F6C6CEB3FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13E0 253A7BB830>I<007FB512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE15016F 7EA2821780163FA6167F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F0 01F8C9FCB0387FFFC0B57EA46C5B29387EB730>I<003FB57E4814F0B612FC15FF6C816C 812603F8017F9138003FF0151F6F7E15071503821501A515035E1507150F4B5A153F4AB4 5A90B65A5E93C7FC5D8182D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF80 03FB4801C0EBFFF8B56C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>82 D<90390FF803C0D97FFF13E048B512C74814F74814FF5A381FF80F383FE001497E484813 7F90C7123F5A48141FA2150FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C 14E0000114F86C80011F13FF01031480D9003F13C014019138007FE0151FED0FF0A2ED07 F8A2007C140312FEA56C140716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B5128016 0000FD5CD8FC7F13F8D8F81F5BD878011380253A7BB830>I<003FB712C04816E0B8FCA4 3AFE003F800FA8007CED07C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I< 3B7FFFC007FFFCB56C4813FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600A36C 6C14FE6D13016D5CEC800390393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038 007FFCEC1FF02F3980B730>I<D83FFC903801FFE0486C4913F000FF16F8A2007F16F06C 486D13E0D81FC09038001FC0000F1680A76D143F00071600A7000390380F803E9039F01F C07EEC3FE0A3EC7FF0A2147D0001157CA29039F8FDF8FCA314F8A300005D01F913FCA2EC F07CA201FD137DA2017D5CECE03DA3017F133FA2ECC01FA2013F5CA2EC800F6D486C5A2D 397FB730>87 D<D87FFF90381FFFC0B56C4813E0A46C496C13C0D803F8903803F8006D13 07A26C6C495AA26C6C5C151F6D5CEC803F013F5CECC07F011F91C7FCA290380FE0FEA214 F101075BA2903803FBF8A201015B14FF6D5BA26E5AA36E5AB1903803FFF8497F497FA26D 5B6D5B2B387EB730>89 D<007FB612F0A2B712F8A36C15F0A225077B7D30>95 D<EB3FFC48B57E4814E04880488048809038F00FFE9038E001FF806F7E6C48133F6C4880 C8121FA491B5FC130F137F48B6FC12075A48EBC01F383FFC00EA7FE0138048C7FC5AA46C 143FA26C6C137F9038C001FF263FF80FEBFFC06CB712E0A2000714F76C14C3C6020013C0 D93FF090C7FC2B2A7CA830>97 D<EA3FFC487E12FFA2127F123F1200AAEC03FE91381FFF 80027F13E091B57E90B612FC82ECFE079138F001FF4A6C13804A137F4AEB3FC091C7121F 4915E0160FA217F01607A8160FA217E07F161F6EEB3FC0A26EEB7F806E13FFDAF0031300 9138FC0FFE91B55A5E495CD97E7F13C0D93C1F90C7FC90380003FC2C3980B730>I<ECFF E0010713FC011F7F017F7F90B612804815C048EB807F3907FC003F485A485A49EB1F8048 48EB0F004990C7FC127F90C9FCA25A5AA87E7EA27F003FEC07C06DEB0FE06C7E6D131F6C 6C14C0D807FE133F9039FFC0FF806C90B5FCC615006D5B011F13F801075B01011380232A 7AA830>I<913801FFE04A7F5CA28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A 481303380FFC00D81FF0133F49131F485A150F4848130790C7FCA25AA25AA87E6C140FA2 7F003F141F6D133F6C7E6D137F390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D 01C713E0011F010313C0D907FCC8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F 90B57E488048018113803A07FC007FC04848133FD81FE0EB1FE0150F484814F049130712 7F90C7FCED03F85A5AB7FCA516F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D13 07D807FEEB1FF03A03FFC07FE06C90B5FC6C15C0013F14806DEBFE00010713F8010013C0 252A7CA830>I<EDFF80020713E0021F13F05C4A13F891B5FC491387903803FE079138FC 03F0903907F800C04A1300A8003FB612C04815E0B7FCA36C15C0260007F0C7FCB3A9003F B512FE4880B71280A26C15006C5C25397DB830>I<D903FC13FF90261FFF8713C04913DF 90B712E05A5A2607FE07138F903AF801FE07C048486C6CC7FCA2497F001F8149133FA56D 137F000F92C7FC6D5BA26C6C485AEBFE0790B55A5D485C15C001DF5BD9C3FCC8FC01C0C9 FCA37F7F6CB512F015FF6C15C04815F0488148813A3FE0001FFE0180130148C8127F007E 8100FE168048151FA56C153F007FED7F006D5C6C6C495A01F013076CB4EB7FFC6C90B55A 6C5D000115C06C6C91C7FC011F13FC010113C02B3E7DA730>I<EA3FFC487E12FFA2127F 123F1200AAEC01FE91380FFF80023F13E091B57E90B67EA29138FE07FCECF8039138E001 FE14C0EC8000A291C7FCA25BB3A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14 FC6C496C13F82F3880B730>I<14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8 487F5AA27E7EEA0001B3A9003FB612C04815E0B7FCA27E6C15C023397AB830>I<EC01C0 EC07F0A2EC0FF8A3EC07F0A2EC01C091C7FCA990B512F04814F8A47EEB0003B3B3A5EC07 F0A2123C007EEB0FE0B4131FEC3FC0147F90B512806C14005C6C5B000F13F0000313C01D 4E7CB830>I<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB7 30>108 D<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13 872607FE07EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF07 FF80B548018F13C0A46C486C01071380322881A730>I<EC01FE3A3FFC0FFF80267FFE3F 13E000FF90B57E90B67E7E6C9038FE07FCC6EBF8039138E001FE14C0EC8000A291C7FCA2 5BB3A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C496C13F82F2880A730 >I<49B4FC010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3FE0 D81FE0EB0FF0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15FC A26D1303003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B5 12806C15006C6C13FC6D5B010F13E0010190C7FC272A7CA830>I<EC03FE3A3FFC1FFF80 267FFE7F13E000FF90B57E90B612FC6C816CEBFE07C69038F001FF4A6C13804A137F4AEB 3FC091C7121F4915E0160FA217F01607A8160FA217E07F161F6EEB3FC0A26EEB7F806E13 FFDAF00313009138FC0FFE91B55A5E495C6E13C0021F90C7FCEC03FC91C9FCAD383FFFF8 487FB57EA26C5B6C5B2C3C80A730>I<49B413F8010FEBC1FC013F13F14913FD48B6FC5A 481381390FFC007F49131F4848130F491307485A491303127F90C7FC15015A5AA77E7E15 037FA26C6C1307150F6C6C131F6C6C133F01FC137F3907FF01FF6C90B5FC6C14FD6C14F9 013F13F1010F13C1903803FE0190C7FCAD92B512F84A14FCA46E14F82E3C7DA730>I<ED 07F83A3FFF803FFF486DB51280B512C302CF14C06C13DF6C9038FFFC3FD8001F13E09238 801F809238000F004A90C7FC5C5C5CA25CA45CAF003FB512FC4880B7FCA26C5C6C5C2A28 7EA730>I<90381FFC1E48B5129F000714FF5A5A5A387FF007EB800100FEC7FC4880A46C 143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C6C7F01037F9038000F FF02001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D137F9039FC03FF0090 B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>I<EB0780497E131FA9003F B612E04815F0B7FCA36C15E026001FC0C7FCB216F8ED01FCA5ECE003010FEB07F814F091 38FC1FF06DB512E06D14C016806D14009038007FFCEC1FF026337EB130>I<D83FFCEB3F FC486C497E00FF14FFA2007F147F003F143F00001400B3A41501A2150315076D130F903A 7FC07FFFF891B612FC6D15FE7F6D4913FC6D9038F87FF8010001C0C7FC2F2880A630>I< 3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F80003F000A26D130700 005DA26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E5A010F137EA2ECE0FE 01075BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3FFFC0 1FFFE0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00A26D5C0003157EA56D 14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A3017E 13FBA290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA630>I<3B3FFFC07FFF 80486DB512C0B515E0A26C16C06C496C13803B01FC0003F000A2000014076D5C137E150F 017F5C7F151FD91F805BA214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01F8 5DA2EB00F9ECFDF0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE48 6C5AEA3FC1EBC3F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>121 D<ED3FF0913803FFF8140F5C147F16F09138FFF00092C7FC495A5CB3A21303495A133F38 3FFFF0B55A5C91C8FC14C080003F7F38003FF813076D7E1301B3A2806D7E15F091387FFF F016F8141F8014039138003FF025477BBE30>123 D<EA7FE0EAFFFE6D7E8014F07EC66C 7E13076D7E1301B3A2806D7E15E091387FFFE06E13F8801407141F5C4A13E09138FFE000 92C7FC495A5CB3A21303495A137F387FFFF0B5FC14C05C49C8FCEA7FE025477BBE30> 125 D E /Fe 1 15 df<EC01C0EC0FFF023F13E0027913F0ECE03F903801C00FEC8007ED 01E0010390C7FCA280130180A280A26D7E80A2147E147F6E7EA26E7E81140FEC7FF09038 01F7F8EB07C790381F83FCEB3E03EB7C0101F87F12013803F000485AA24848137E485AA2 123F90C7FCA25A127EA300FE147C5A15FCA25D1401A25D007C13035DA26C495A4A5A6C91 C7FC6C131E6C6C5A3803E0783800FFE0EB3F8024427CC028>14 D E /Ff 46 123 df<B612C0A61A067F9821>45 D<12FFA8080877871B>I<1618163C167C A2167816F8A216F01501A216E01503A216C01507A21680150FA2ED1F00A2151E153EA215 3C157CA2157815F8A25D1401A24A5AA25D1407A25D140FA292C7FC5CA2141E143EA2143C 147CA25CA25C1301A25C1303A25C1307A25C130FA291C8FC5BA2133EA2133C137CA21378 13F8A25B1201A25B1203A2485AA25B120FA290C9FC5AA2121E123EA2123C127CA2127812 F8A25A126026647BCA31>I<1418147814F81303130F137FB5FCA413F71387EA0007B3B3 AD007FB61280A6214378C231>49 D<EB03FE90381FFFE0017F13F890B57E4814FF481580 2607FC0713C0380FF000D81FC0EB7FE049EB3FF0003F141F90C7EA0FF8481407007E15FC A200FE14034815FE127C123C0038140112181208C8FC1503A316FCA2150716F8150F16F0 ED1FE0A2ED3FC0ED7F80EDFF00A24A5A4A5A4A5A4A5A4A5A4A5A4A5A02FEC7FC495A495A 495A495A495A495A49C8FC13FE5B485A485A485A485A485A48C9FC48B612FEA627437CC2 31>I<49B4FC010F13E0013F13F890B512FE48800007158048010113C03A1FF8007FE0D8 3FE0133F49EB1FF048C7120F123E16F8001C140712181208C8FC150FA216F0A2151F16E0 153F16C0157FEDFF8002031300EC1FFE90380FFFFC5D15E08115FC15FFD9000113809138 007FC0ED1FE0ED0FF016F8ED07FCA2ED03FEA3ED01FFA80040EC03FE1260A200F0EC07FC 7E00FEEC0FF8127FD83FC0EB1FF0D81FF0EB7FE0390FFE01FF6CB612806C15006C5C6C6C 13F8011F13E0010190C7FC28457CC231>I<EDFF805C5CA2EC077FA2140FA2141E143EA2 147E147C14FCA2EB01F8130314F01307A2EB0FE0A2EB1FC0133F1480137F14005B5B1201 5B1203485AA2485A5B121F5B123F485AA248C7FC90B712C0A6C8387F8000B12A417DC031 >I<000FB612F8A601F0C8FCB1EC3FC09038F1FFF001F313FC90B57EEDFF8016C002E013 E0EC003F49EB1FF049EB0FF84913074914FC15034914FEC8FCA2150116FFAAED03FE1210 1230003815FC007C1407007E15F800FE140FD87F80EB1FF06DEB3FE0D83FF0137F3A1FFE 03FFC06CB61280000315006C14FC6C6C5B011F13C0D903FEC7FC28437DC031>I<EC07FC 91383FFF8091B512E013035B5B90381FFC0390393FE000604948130049C8FC485A5B1203 485A5B120F5B121FA25B123FA29038803FF8397F81FFFE01877F018F1480019F14C0D93F F713E039FF7F007F01FCEB1FF049EB0FF84913074914FC15035BED01FE5BA2150016FFA2 90C8FCA36C7E90C8FCA27FA3123F16FE6D1301A2121F6DEB03FC120F6DEB07F812076DEB 0FF06C6CEB1FE06DEB3FC03901FF80FF6C90B512806D14006D13FC010F5B6D13E0010090 C7FC28457CC231>I<49B47E010F13F0013F13FC497F48B612804815C048010013E0D80F FCEB3FF001F0130F4848EB07F84913034848EB01FCA2007F15FE90C8FCA76C6CEB01FCA2 6C6CEB03F8A26C6CEB07F06C6CEB0FE0D803FCEB3FC03A01FF81FF806C90B51200013F13 FC010F13F0A2013F13FC90B6FC4801001380D803FCEB3FC04848EB1FE04848EB0FF04848 EB07F84848EB03FCA24848EB01FEA290C8FC4815FFA86C15FE6D1301A26D1303003F15FC 6D13076C6CEB0FF86C6CEB1FF06D133F3A07FF81FFE06C90B512C06C15806C6CEBFE006D 5B010F13F0010090C7FC28457CC231>56 D<14FF010713E0011F13F8497F497F90B6FC48 018113803A03FE007FC0D807F8133F4848EB1FE0001FEC0FF0491307484814F81503485A 16FCA290C712015A16FEA31500A216FFA45DA27E7FA25D6C7E5D7F001F5C6D5B6C6C5BD8 07FE13FE9038FFEFFC6C9038FFF8FE6C14F16C14E16D138190381FFC0190C713FC1503A2 16F8150716F0150FA2ED1FE016C0153FED7F800006ECFF0000075B390FC003FE9038F01F FC48B55A6C5C6C14C000015C6C49C7FCEB1FF028457CC231>I<EDFF804A7FA34A7FA391 3807EFF0A215E7020F7F15C7A2021F7F15C391383F83FEA21581027F7F1501814A805CA2 01016E7E5CA201036E7E5CA201076E7E5CA2010F6E7E5C011F8116075C013F8116035C01 7F818291B7FC90B87EA34883A201FCC8127F0003707EA2484882171F5B000F83170F5B00 1F8317075B003F8317035B007F838390C9FC48701380A239457DC440>65 D<B612F8EDFF8016E016F816FE82902680003F13C003037F03007F163F707E707E160716 03831601A516035F16075F160F4C5AEE7FE04C5A03035B033F90C7FC90B612FC16F016C0 8216FC16FF902680003F13C003037F9238007FF0EE1FF8707E707E707E82701380177F18 C0A2173FA4177FA2188017FF5E4C13004C5A160FEE3FFCEEFFF8030F5B90B75A178094C7 FC16FC16E04BC8FC324577C441>I<ED3FFE0203B512F0020F14FE023FECFF8091B7FC5B 49D9E0071300010F90C7FCD91FFC141F49481407D97FE0804A91C7FC495A4890CAFC5A5B 485AA2485AA2485AA2485AA3485AA5485AAD6C7EA56C7EA36C7EA26C7EA26C7EA26C7E7F 7E6C6D15806D6C14016E1403D93FF8140F6D6CEC1FC06DB4147F01039038E003FF6D90B6 12806DEDFE00023F5C020F14F0020314C09126003FFCC7FC32497AC63E>I<B612FEEDFF E016F816FE707E83902680000713F003007FEE3FFCEE0FFE1607707E7013807013C0177F EF3FE018F0171F170F18F8A2EF07FCA2170318FEA31701A218FFAC18FEA21703A3EF07FC A3EF0FF8A2EF1FF0A2EF3FE0177FEFFFC04C13805E4C13004C5AEE3FFCEEFFF803075B90 B75A17804CC7FC16F816E04BC8FC384578C446>I<B812F0A60180C9FCB3A690B71280A6 0180C9FCB3A890B712F8A72D4578C43A>I<B46CED3FE0B3AC90B8FCA60180C8123FB3AF 334578C444>72 D<EAFF80B3B3B3AF094577C41B>I<D8FFF0933803FFC06D5EA36D5EA3 017EEE1FBFA2017F163FA26D173F6E157FA2011F167E6E15FEA26E1401010F16FCA26E14 03010716F8A26E1407010316F0A26E140F010116E06E141FA2010016C06E143FA26E1580 6F137FA2023F15006F5B021F5CA2EDE001020F5CA2EDF00302075CA2EDF80702035CA26E 6C485AA36E6C485AA392387F3F80A3033F90C7FCA2ED1FFEA36F5AA36F5A92C9FCA24245 77C455>77 D<ED3FE0913803FFFE021FEBFFC04A8091B612F8010315FE499038C01FFF49 D900077FD91FFC01017FD93FF06D6C7E49486E7E49486E7E4A140F4890C86C7E48486F7E 49150100078348486F1380A249167F001F18C049163F003F18E0A249161F007F18F0A449 160F00FF18F8AC6D161F007F18F0A46D163F003F18E0A36C6CEE7FC0A26D16FF000F1880 6D5D000718006D5D6C6C4B5A6C5F6E140F6C6D4A5A6D6C4A5AD93FF8ECFFE06D6C495B6D B401075B6DD9E03F90C7FC6D90B55A010015F86E5C021F14C0020349C8FC9138007FF03D 497BC648>79 D<B612FCEDFFC016F016FC16FF1780902680000F13C0030113E09238007F F0EE1FF8160FEE07FCA2EE03FE1601A217FFA282A45EA217FEA21603EE07FCA2EE0FF816 1FEE7FF0923801FFE0030F13C090B71280170016FC16F016C003FCC7FC0180C9FCB3AB30 4578C43E>I<B612F8EDFF8016F016FC82707E902680000F7F03017F6F6C7EEE1FF8707E 1607707EA2160183A282A35EA25F1603A24C5A160F4C5AEE7FF04B485A030F5B90B75A4C C7FC5E16F0168093C8FCEB800082157F82153F826F7EA26F7E1507821503821501826F7F A2707E163F83161F83707EA2707EA2707E160183701380A2EF7FC0324577C43F>82 D<EC3FF80103B57E010F14E0013F14F84914FE90B7FC5A48EBC00F4890380001FED80FFC EB007E49141E4848140E484814064991C7FCA2485AA77FA26C7E7F7F6C7E6CB4FC14E06C 13FE6CEBFFC06C14FC6C14FF6D14C06D80010F14F8010380D9003F7F02037FEC007F030F 1380030313C01500167FEE3FE0A2161F17F0A2160FA7EE1FE012600070153F007816C000 7E157F007FEDFF80D8FFE049130001F813079039FF803FFE6C90B55A001F5D00075D0001 15C06C6C5C010F01FCC7FC010013E02C497CC636>I<BA12F0A6C8D83FE0C8FCB3B3B3A9 3C457DC443>I<EB07FE90387FFFC00003B57E000F14F84880819038F803FFEB8001001E C713800018147F0010EC3FC0C8FC16E0151FA8EC7FFF010FB5FC133F48B6FC5A000FEBF0 1F381FFE00EA3FF8EA7FE05B485A90C7FCA4153F7F6C6C137F9038E001FFEBF80F6CB6FC 7E15DF6C141F000313F8C60180C7FC232F7CAD2F>97 D<B4FCB3A6EC3FC0903803FFF001 0F13FC013F7F497F90B61280D9FE0313C0D9F00013E049137F49EB1FF05B90C7EA0FF815 0716FC1503A316FE1501AAED03FCA3150716F8150F16F06D131F6DEB3FE06D137F9039F0 01FFC0D9FC07138090B612006D5B6D5B6D5B010713E0C790C7FC274679C432>I<EC7FE0 903803FFFE010FEBFF80013F14E04914F090B6FC48EB801F3A03FE0003E0484813004848 1460491400485AA2485AA2485AA390C9FC5AAA6C7EA37F123FA26C6C14106D14306C6C14 F06C6C13016C6C13079038FF803F6C90B5FC6C6C14E06D14806D1400010713F8010013C0 242F7DAD2B>I<ED01FEB3A6EB03FC90380FFFC1013F13F14913F948B6FC5AECC07F48EB 001FD80FFC1307484813035B48481301A25B127F5BA348C7FCAA7F127FA36C7EA26D1303 6C7E1507D80FFC130F6C6C133F9038FF80FF6C90B5FC6C14FD6C14F1013F13E16D1381D9 03FCC7FC27467DC432>I<EB01FE903807FFC0011F13F0017F7F90B57E488048EB03FF38 07FC004848EB7F8049133F4848EB1FC0150F484814E0491307127FA290C7FCED03F0B7FC A648C9FCA37EA27EA27F123F7FA26C7E6D14106C6C14706C6CEB01F06C6C13079038FF80 3F6C90B5FC6C15E0013F14806DEBFE00010713F8010013C0242F7DAD2B>I<EC1FF0ECFF FE5B13075B5B90383FF01EECC00290387F800091C7FC13FEA21201AEB61280A6D801FEC7 FCB3B3A21F467EC51E>I<D901FCEB07E090390FFF80FF013F13E74990B512F090B7FC5A 2603FE03EBC0002607F80090C7FC497F000F8149133FA248486D7EA86C6C495AA26D137F 000792C7FC6D5B3903FE03FE90B55A485C485C5D018F1380261F81FCC8FC0180C9FCA47F 7F6CB512F8EDFF806C15E016F86C81488148815A273FE0000F1380D87F80130090C8127F 48ED3FC048151FA5007FED3F806D147F6C6CECFF0001F813076CB4EB3FFE6C90B55A6C5D 000115E06C6C1480011F49C7FC010113E02C427DAC31>I<B4FCB3A6EC7FC0903801FFF8 01077F011F7F497F491480EBFE03D9F80013C049137F49133F4914E0151F5BA390C7FCB3 AC234579C432>I<EAFF80A9C7FCB0EA7F80B3B3A809457AC417>I<B4FCB3A7ED7FE0EDFF C04A13804A13004A5A4A5A4A5A5D4A5A4A5A4A5A4990C7FC495A1307495A495A495A137F 13FF8080A2EBFDFEEBF9FF13F0496C7E01C07F143F01807F496C7E140F8114076E7E8114 016E7E1680157FED3FC016E0151FED0FF016F8254579C42F>107 D<12FFB3B3B3AF084579C417>I<DA7FC0EB0FF827FF01FFF8EB3FFF01076D90B5128001 1FD9FE0314C0496D4814E049028F14F0D9FE0390389FC07FD9F8009039FF001FF8496D48 130F496D481307494A14FC031F1403495CA390C75BB3AC3E2D79AC4D>I<EC7FC039FF01 FFF801077F011F7F497F491480EBFE03D9F80013C049137F49133F4914E0151F5BA390C7 FCB3AC232D79AC32>I<EC7F80903803FFF0010F13FC013F13FF498090B67E4801C07F3A 03FE001FF048486D7E48486D7E49130348486D7E491300003F814980007F1680A390C812 3F4816C0AA6C6CEC7F80A36D14FF003F16006D5B001F5D6D13036C6C495A6C6C495A6D13 1F3A03FFC0FFF06C90B55A6C5D013F91C7FC6D5B010313F09038007F802A2F7DAD31>I< EC3FC039FF03FFF0010F13FC013F7F497F90B61280D9FE0713C0D9F00013E049137F49EB 3FF049131F90C7EA0FF8A2ED07FCA21503A216FE1501AAED03FCA3150716F8150FED1FF0 7F6DEB3FE06D13FF6D4813C0D9FC0F138090B612006D5B6D5B6D5B010713E0010090C7FC 91C8FCB2274079AC32>I<141F00FE13FF13035B131F5B5BEBFFF0148038FFFE005B5B5B 5B5BA25BA390C7FCB3A8182D79AC21>114 D<EB3FF848B5FC4814C0000F14F04814F85A EBE00F397F8001F090C7127000FE14301500A57E7FEA7FE013FC383FFFE06C13FC14FF00 0714806C14E06C14F06C7E010713F89038003FFC14071403EC01FEA21400A412400070EB 01FC1278007E130339FFE01FF890B512F0A26C14E0001F14800003EBFE0038003FF01F2F 7DAD25>I<EA01FEADB612F0A6D801FEC7FCB3AB7F150815386CEB81F8ECFFFC7FA26D13 F06D138090380FF8001E3A7EB823>I<B4EC1FE0B3AE153FA2157FA26D13FF1403387FE0 0F90B6FC6C14DF151F6C13FC000713F0000190C8FC232D79AB32>I<B415FFA27F007FEC 01FEA27F003FEC03FCA27F001FEC07F8A26C6C14F0150FA26C6CEB1FE0A36C6CEB3FC0A2 7F0001EC7F80A26C6C14005DA26D5B1481A2013F5B14C114C3011F5B14E314E7010F5BA2 01075B14F7A26DB45AA36D5BA2282C7EAB2D>I<B415FFA27F007FEC01FE7F123FED03FC 7F001FEC07F87F120FED0FF07F12076DEB1FE0120316C06C6C133FA216806C6C137FA26D 14006E5A5D133F14C1011F5BA2ECE1F8EB0FE3A201075B14F3A2903803F7E0A201015BA2 EB00FF5DA2147F92C7FCA2147E14FEA25C1301A25C13035C13075CEA400F38781FC0EA7F FF5C91C8FC5B5BEA0FF028407EAB2D>121 D<007FB612E0A516C0C8138016005C4A5A4A 5AA24A5A4A5A4A5AA24A5A4A5A92C7FC5B495A495AA2495A495A5C133F495A495AA24890 C8FC485A485AA2485A485A5B123F48B612E0B7FCA5232C7DAB2A>I E /Fg 10 58 df<13FF000313C0380781E0380F00F0001E137848133CA248131EA400F8 131FAD0078131EA2007C133E003C133CA26C13786C13F0380781E03803FFC0C613001822 7DA01E>48 D<13E01201120712FF12F91201B3A7487EB512C0A212217AA01E>I<EA01FC 3807FF80381C0FC0383003E0386001F0EB00F812F86C13FCA2147C1278003013FCC7FC14 F8A2EB01F0EB03E014C0EB0780EB0F00131E13385B5B3801C00CEA0380380600185A5A38 3FFFF85AB512F0A216217CA01E>I<13FF000313C0380F03E0381C00F014F8003E13FC14 7CA2001E13FC120CC712F8A2EB01F0EB03E0EB0FC03801FF00A2380003E0EB00F0147814 7C143E143F1230127812FCA2143E48137E0060137C003813F8381E03F0380FFFC0000113 0018227DA01E>I<14E01301A213031307A2130D131D13391331136113E113C1EA018112 03EA07011206120C121C12181230127012E0B6FCA2380001E0A6EB03F0EB3FFFA218227D A11E>I<00101330381E01F0381FFFE014C01480EBFE00EA1BF00018C7FCA513FE381BFF 80381F03C0381C01E0381800F014F8C71278A2147CA21230127812F8A214784813F80060 13F0387001E01238381E07803807FF00EA01F816227CA01E>I<EB0FC0EB7FF03801F038 3803C0183807803C380F007C121E001C1338003C1300A2127C1278EB7FC038F9FFE038FB 80F038FE0038143C48131EA248131FA41278A36C131EA2001C133C001E13386C13703807 81E03801FFC038007F0018227DA01E>I<1230123C003FB5FCA24813FE14FC3860001C14 3814704813E014C0EA0001EB0380EB07001306130E5BA25BA21378A35BA41201A76C5A18 237CA11E>I<137F3803FFC0380781E0380E00704813380018131C1238A3123C003F1338 381FC078EBE0F0380FF9E03807FF80120114C0000713F0380F0FF8381C03FC383801FE38 70007E141F48130F1407A314060070130E0078130C6C1338001F13F03807FFC0C6130018 227DA01E>I<13FE3803FFC0380781E0380E0070481378003C133848133CA200F8131EA3 141FA40078133FA26C137F121C380F01DF3807FF9F3803FE1EC7FCA2143E143C001C1338 003E13781470003C13E0381801C0381C0780380FFE00EA03F818227DA01E>I E /Fh 30 90 df<007FB5FCA2B512FEA418067C961E>45 D<121EEA3F80EA7FC012FFA4 1380EA7F00123C0A0A788919>I<1703EF0780170FA2EF1F00A2173EA25FA25FA24C5AA2 4C5AA24C5AA24C5AA24CC7FCA2163E167E167C5EA24B5AA24B5AA24B5AA24B5AA24BC8FC A2153EA25DA25DA24A5AA24A5AA24A5AA24A5AA24AC9FCA2143EA25CA25CA2495AA2495A A2495AA2495A131F91CAFC133EA25BA25BA2485AA2485AA2485AA2485AA248CBFCA2123E A25AA25AA21270315B7FC32D>I<157015F014011407143F903803FFE0137FEBFFCFEBF8 0F1300141F15C0A5143F1580A5147F1500A55C5CA513015CA513035CA513075CA5130F5C A3131F497EB612F8A31D3D78BC2D>49 D<EC01FE91380FFFE0023F13F89138FC07FC9039 01E001FE903907C000FF49C7EA7F80011E15C0163F4915E05B0170141F13FF80A35A163F A26C90C7FC137E0118EC7FC090C8FCEEFF80A24B1300A24B5A5E4B5A4B5A4B5A5E4B5A4B C7FC15FEEC01F84A5A4A5A4A5A4AC8FC143E5C5CEB01E04948130E49485B49C7FC131E49 5C13705B48485C484814F0000FB6FC5A485D5AB7FC5EA22B3D7CBC2D>I<161C163C167C A216FCED01F815031507150FA2151DED3BF0157315E315C31401EC038391380707E0140E 141CA2143814709138E00FC0EB01C014801303EB0700130E49EB1F805B133013705B485A 4848EB3F0090C7FC5A120E5A5A48147E1260B8FCA3C73801FE00A25DA41403A25DA31407 4A7E0107B512F8A3283E7BBD2D>52 D<01061403D90780131F90390FF801FE91B512FC16 F816F016E0168049EBFE0015F890381C7FC091C8FCA3133C1338A513781370A2EC1FE0EC FFF8903873E03E9038FF001F01FCEB0F804914C049EB07E04914F049130390C7FC16F8A6 1507A21206EA3F80487EA2150F00FF15F0A24914E090C7121F00FC15C000F0143F007015 80ED7F0012786C14FE4A5A6C495A390F800FE03907E03FC06CB5C7FCC613FCEB1FE0283F 7ABC2D>I<EC03FC91381FFF8091387C07E0903901F001F0903903C000F84948137C49C7 123E131E013E141F133C137C137813F8A3163F486C143E167E6D147C6C6C14FC6E13F891 38C001F09138F003E090397FF807C09138FC0F0090383FFF3E6D13F86D13E06D7F01017F 8101077F90391F1FFF80D93E0F13C0EBF8072601F00113E048486C13F04848137F484813 1F001FEC0FF890C71207003E1403A2481401A300FC15F05AA3ED03E0A26CEC07C0007C15 80007E140F003EEC1F00003F143E6C6C5B6C6C485A3907F00FE00001B512806C6C48C7FC EB0FF0283F7ABC2D>56 D<EC07F8EC3FFE9138FC0F80903901F007C0903907E003E0D90F C013F090381F8001013F14F8EB7F004914FC48481300A24848EB01FEA21207A3485AA415 03121F5BA31507A2000F15FC150FA2151F1207153F000315F86C6C137F000014EF90387C 01CF90393E078FF090380FFE1FEB03F890C713E0A2ED3FC0A3ED7F8016005D003F5C487E 4A5A00FF495A5D4A5A49485A48495A007049C7FC0078137E383E03FC381FFFF06C13C0D8 01FEC8FC273F79BC2D>I<17E016011603831607A2160FA2161F83163FA2167F167716F7 EEE7FCED01E316C3150316831507EE03FEED0F01150E151E151C153C03387FED78001570 15F05D4A4880177F4A5AA24AC7FCA2020E81173F5C021FB6FC5CA20270C7EA3FE0171F5C A2495AA2494881170F49C8FCA2130EA24982013C1507A2137CD801FE4B7E2607FF80EC3F FEB500F00107B512FC19F85E3E417DC044>65 D<013FB7FC18E018FC903B007FE00007FE 6E48903801FF809438007FC05DF03FE0F01FF0A3027F16F892C8FCA54A16F04A153F19E0 187F19C0F0FF8001014B13004A4A5A4D5AEF1FF04D5ADC03FFC7FC49B612F8EFFF8002F8 C7EA3FE0EF0FF0EF07FC717E010715014A81711380A319C0130F5CA5011F4B13805C1900 5F601707013F4B5A4A4A5A4D5A4D5A017F913801FF8001FF020F90C7FCB812FC17F094C8 FC3D3E7DBD40>I<DCFFC01338030F01F01378037F01FC13F0913A01FF803F01913A07FC 000781DA1FE0EB03C3DA7FC0EB01E74AC812FF4948ED7FE0D907FC153F495A4948151F49 5A4948150F494816C018074890C9FC485AA2485A000F1880491603121FA248481607A295 C7FC485AA412FF5BA75BA2181C183C1838A27F007F1778187018F0003F5F6D150160001F 16036C6C4B5A95C7FC6C6C5D6C6C151E6C6C5D6C6C15F86D6C495A6D6CEB07C0D91FF0EB 1F80D907FE01FEC8FC0101B512F86D6C13E0DA07FEC9FC3D4276BF42>I<013FB7FC18E0 18F8903B007FF0000FFE6E48EB01FF9438007FC04B6E7E180F85727E727E147F4B6E7EA2 727EA302FF178092C9FCA54918C05CA41A8013034A5DA41A0013074A5DA261A24E5A130F 4A5E180F61181F61011F4C5A5C4E5A4EC7FC4D5A4D5A013F4B5A4A4A5AEF3FE0EF7F8001 7F4A48C8FC01FFEC1FFCB812F0178004FCC9FC423E7DBD45>I<013FB812F8A39026007F F0C7127F6E48140F18034B14011800A31978147F4B1570A502FF143892C7FCA319001778 4915704A14F016011603160F91B6FC495DA29138FC001F16071603160101075D5CA21970 19F019E0010F4A5A4A90C7120119C0A218031980011F16075CF00F00A260181E013F163E 4A157E4D5A1703017F150F01FFEDFFF8B9FCA2603D3E7DBD3E>I<4BB46C1370031F01F0 13F0037F9038FC01E0913A03FF807E03913A0FF8000F83DA1FE0EB07C7DA7F80EB01EF4A C812FFD903FE16C04948157F4948153F495A4948151F495A4948168091C9120F5A485AA2 485A000F18004982121FA248485EA295C7FC485AA412FF5BA6043FB512E05BA29339001F FC00715AA2607F127FA2171F123F6D5EA2121F7F000F163F6C7E6C6C4B5A7F6C6C15FF6C 6DEB01EFD93FC0EB07C7D91FF0EB1F87D907FE9038FE03800101B5EAF8016D6C01E0C8FC DA07FEC9FC3C4276BF47>71 D<013FB5D8F807B6FC04F015FEA29026007FF0C7380FFE00 6E486E5AA24B5DA4180F147F4B5DA4181F14FF92C85BA4183F5B4A5EA491B8FC5B6102FC C8127FA318FF13074A93C7FCA45F130F4A5DA41703131F4A5DA41707133F4A5DA3017F15 0F496C4A7EB6D8E01FB512FC6115C0483E7DBD44>I<011FB512FC5BA29039003FF8006E 5AA25DA5143F5DA5147F5DA514FF92C7FCA55B5CA513035CA513075CA5130F5CA5131F5C A3133F497E007FB512F0A2B6FC263E7EBD21>I<013FB512FEA25E9026007FF8C8FCEC3F E0A25DA5147F5DA514FF92C9FCA55B5CA513035CA513075CA21838A21870130F5CA218E0 A3011F15014A15C01703A21707EF0F80013F151F4A143F177FEFFF00017F140301FF143F B9FC5FA2353E7DBD39>76 D<90263FFFF0933807FFFE5013FC629026007FF8EFFC00023F 4D5AA2023BEF77F0A2DA39FC16E7A2F101CF0279EE038FDA70FE5FF1070FA2190E1A1FDA F07F151C02E060193819706F7EF1E03F130102C0DB01C05BA26F6CEB0380A2953807007F 0103160E4A6C6C93C7FC60A2606201076D6C5B02005F60A26F6C485A94380380015B010E DB07005BA2923801FC0EA24D1303131E011C6D6C485C5FA25F1907013CEC7FC001386001 3C5D137C01FE6EC7120F2607FF80013E4A7EB500FC031FB512F8043C5E4A131C573E7DBD 53>I<90263FFFE0023FB5FC6F16FEA29026003FF8020313C0021F030013004A6C157C02 3B163C6F15381439810238167802787FDA707F157082153F82031F15F002F07FDAE00F5D 8215078203031401010180DAC0015D82811780047F1303010315C04A013F5C17E0161F17 F0040F1307010715F891C7000791C7FC17FC160317FE04015B4915FF010E6E130E188E17 7F18CEEF3FDE011E16FE011C6F5AA2170FA21707133C01386F5A133C017C150113FE2607 FF801400B512FC18705C483E7DBD44>I<923803FF80031F13F09238FE01FE913903F000 3FDA0FC0EB1FC0DA3F80EB07E0027EC76C7E49486E7E49488149486E7E4948157F495A01 3F17804948ED3FC049C9FCA24848EE1FE012035B000718F05B120FA2485A19F8123F5BA2 127FA219F04848163FA5F07FE0A35BF0FFC0A219805F19007F4D5A127F4D5A60003F160F 6D5E001F4C5A4D5A6C6C4B5A95C7FC6C6C15FE00034B5A6C6C4A5A6C6C4A5A017FEC1FC0 6D6C495AD90FE001FEC8FC903903F807F80100B512C0DA0FFCC9FC3D4276BF47>I<013F B612FEEFFFE018F8903B007FF0000FFC6E48EB01FF7113804BEC7FC0183F19E0F01FF0A2 147F5D19F8A402FFED3FF092C8FCA219E0A2F07FC05B4AEDFF8019004D5A4D5AEF0FF801 03ED3FE04A903801FF8091B648C7FC17F002FCCAFCA213075CA5130F5CA5131F5CA5133F 5CA3137F497EB612E0A25D3D3E7DBD3E>I<923803FF80031F13F09238FE01FE913903F8 003FDA0FE0EB1FC0DA3F806D7E4AC7EA03F0D901FC8149486E7E49486E7E010F82494881 494816804948ED3FC013FF91C9FC484817E00003171F5B000718F0A2485AA2485A19F812 3FA25B127FA219F04848163FA519E0187F5BA219C018FF1980A24D1300A24D5A6C7E4D5A 60003F160F037C5C6C6C48B4495A913A0783803FC0000F90260E01C05B9026F00C0049C7 FC0007011CEBE0FE2603F818EB61FCD801FCEC73F8D800FEEC77F0017FEC7FC0D93F985C D90FFC01FEC8FC902703FE07F813030100B5FC91260FFC3C5B91C7FC180E163E181E043F 137CEF81FC17FF60A260A2705B60705B7048C7FCEE01F83D5276BF47>I<013FB612F017 FF18E0903B007FF0003FF86E48EB07FCEF01FE4B6D7EF07F8019C0183F19E0147F4B15F0 A502FFED7FE092C8FCA219C0F0FF80A2494B13004A5D4D5AEF0FF04D5AEF7F800103DA07 FEC7FC91B612F017809139FC0007E0EE03F8EE00FC0107814A147F717EA284A2130F5CA4 84011F157F5CA41902013F17075CA2F0F00F017F170E496C143FB600E0011F131C94380F F83C4B01071378CA3801FFE09438003F8040407DBD43>I<9239FF8003800207EBF00702 1F9038FC0F0091387F00FE02FCEB1F1FD903F0EB07BF49486DB4FC49487F4A6D5A49C8FC 49157E133E137E173E49153CA57F1738A26D92C7FC808080EB7FFEECFFE06D13FEEDFFC0 6D14F06D14FC010380010080143F020380DA003F7F15031500707E163F161FA2160F121C A31607160F003C5EA35F003E151F94C7FC007E5D007F153E6D5C16FC01E0495AD87DF049 5AD8FCFCEB0FC03AF87F803F8027F01FFFFEC8FCD8E00713F839C0007FC031427BBF33> I<0007B912F0A33C0FFE000FF8003F01F0160F01C04A13034848160190C7FC121EF000E0 48141F5E1238A212781270153F5E5AA3C81600157F5EA515FF93C9FCA55C5DA514035DA5 14075DA5140F5DA3141FEC7FFC0003B7FCA33C3D76BC42>I<B600E090B512FC4B15F8A2 000101C0C7000F13006C49EC03FCEF01F091C9FC60A317015A495EA417031203495EA417 0712074993C7FCA45F120F49150EA4171E121F49151CA4173C123F491538A31778177017 F05F001F15015F16036D4A5A000F93C8FC5E6C6C141E6C6C5C000115F86C6C495A017FEB 07C090393FC03F8090260FFFFEC9FC010313F89038007FC03E4073BD44>I<B6020FB5FC 19FEA2000301E0020113E06C01809138007F8091C9EA7E006C173C18386E15781870017F 16F0604D5A804D5A133F4DC7FCA26E140E171E011F151C173C17386E1478010F15705FA2 4C5A8001074A5AA24CC8FC5E6E130E0103141E161C163C16386E5B13015EA24B5A14FF6D 495AA24BC9FC5D158EEC7F9E159C15B8A215F0143F5DA25DA26E5AA292CAFCA2140E4040 74BD44>I<010FB500F090B512F85B5FD9003F902680003F1300DA0FFEC7EA1FF84BEC0F E00207168096C7FC6E6C141E181C6E6C143C606E6D5B4D5ADB7FC05B4D5A92383FE0074D C8FC92381FF01E171C6F6C5A5F923807FCF0EEFDE06FB45A5F6F90C9FCA26F7FA2707EA2 16FF4B7FED03DF9238079FF0ED0F1F92380E0FF8151C92383C07FC15784B6C7EEC01E04B 6C7EEC038002076D7F4AC7FC021E6E7E5C02386E7E5C02F06E7E495A49486E7E13074948 6E7E497E017F4B7E2603FFF091383FFF80007F01FC49B512FEB55CA2453E7EBD44>88 D<B66C0103B51280A3000101F0C8EBF0006C49ED7FC06D486FC7FC6E153E013F163C606D 6C5D606D6C4A5A17036D6C4A5A95C8FC6E140E0103151E5F6D6C14385F6D6D13F04C5ADA 7FC05B4C5AEDE007023F49C9FC161E91381FF01C5E91380FF8785E6E6C5AEDFDC015FF6E 5B93CAFC6E5AA35DA21403A45DA21407A45DA2140FA4141F4A7E013FB512F0A3413E75BD 44>I E /Fi 35 124 df<EC0780140F141FEC3E0014FE495A495A5C495A130F495A495A A249C7FC5B5B1201485AA212075BA2120F5B121FA3485AA4127F5BA512FFB0127FA57F12 3FA46C7EA3120F7F1207A27F1203A26C7E12007F7F6D7EA26D7E6D7E13076D7E806D7E6D 7E143EEC1F80140F1407195A77C329>40 D<127012F8127C7EEA3F806C7E6C7E12076C7E 7F6C7E6C7EA2137F80133F806D7EA280130FA280130780A36D7EA4807FA51580B01500A5 5B5CA4495AA35C130F5CA2131F5CA2495A5C137F91C7FC13FEA2485A485A5B485A120F48 5A485A003EC8FC5A5A1270195A7AC329>I<EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA6EA7F F8EA3FF0EA1FE0EA0FC0C7FCACEA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA6EA7FF8EA3FF0EA 1FE0EA0FC00E2879A71D>58 D<90381FFF8090B512F0000314FC000F14FF261FF8071380 263FC00113C0018014E0486C7E486C14F07FA56C5A4A13E0EA3FC0260F000313C0C71480 4A13004A5A4A5A15F04A5A4A5A5D92C7FC14FE5C13015CA25CAA90C9FCA8EB03F0497E49 7E497E497EA66D5A6D5A6D5A6D5A24407ABF31>63 D<16FCA24B7EA24B7EA34B7FA24B7F A34B7FA24B7FA34B7F157C03FC7FEDF87FA2020180EDF03F0203804B7E02078115C08202 0F814B7E021F811500824A81023E7F027E81027C7FA202FC814A147F49B77EA34982A2D9 07E0C7001F7F4A80010F835C83011F8391C87E4983133E83017E83017C81B500FC91B612 FCA5463F7CBE4F>65 D<B812F8EFFF8018F018FC18FF26003FFCC76C13C005077F05017F 716C7E727E727E727E721380A27213C0A27213E0A21AF084A21AF8A41AFCA5197FA319FF A51AF8A41AF0A2601AE0A24E13C0A24E13804E1300604E5A4E5A4D485A050713E0057F5B BA5A4EC7FC18F818C005F8C8FC463E7DBD50>68 D<BAFCA4198026003FFEC7123F170717 0183183FA2181FF00FC0A31807EE07C0A3F003E0A3160F95C7FC161F163F16FF91B6FCA5 4AC6FC163F161F040F147CA2160719F8A593C71201A219F01803A21807A2180FF01FE018 3F18FF1703173FBAFCA219C0A33E3D7DBC45>I<B71280A526003FFEC7FCB3B3B0B71280 A5213E7DBD28>73 D<B6051FB512C06F5EA26F5EA2D8003F97C7FC6F16F7A26E6CED01E7 A26E6CED03C7A36E6CED0787A26E6CED0F07A26E6C151EA36E6D143CA26E6D1478A26E6D 14F0A26F6CEB01E0A36F6CEB03C0A26F6CEB0780A26F6CEB0F00A36F6C131EA26F6D5AA2 6F6D5AA26F6D5AA393387FF1E0A293383FFBC0A270B45AA37090C7FCA2705AA2705AB600 C0031FB612C0A2705AA2705A5A3E7CBD63>77 D<B812F017FF18C018F018FC26003FFCC7 7FEF1FFF7113807113C07113E0A27113F0A319F8A819F0A34D13E019C05F4D1380053F13 00EFFFFE91B712F860188005FCC7FC4ACAFCB3A4B77EA53D3E7DBD47>80 D<B87E17FCEFFF8018F08428003FFC000113FE9338003FFF050F7F717F717FA2858385A7 61A25F61614D5B4D90C8FCEF3FFE4CB45A91B712F018C04DC9FC717E9126FC000F7F0401 13F0707F717EA2717EA2717EA685A6F207C019C0A271140F07E01380B76DEBF01F719038 FC3F007190B5FC716C5B061F13F8CB000113E04A3F7DBD4E>82 D<903A03FFC001C0011F EBF803017FEBFE0748B6128F4815DF48010013FFD80FF8130F48481303497F4848EB007F 127F49143F161F12FF160FA27F1607A27F7F01FC91C7FCEBFF806C13F8ECFFC06C14FCED FF806C15E016F86C816C816C816C16806C6C15C07F010715E0EB007F020714F0EC003F15 03030013F8167F163F127800F8151FA2160FA27EA217F07E161F6C16E06D143F01E015C0 01F8EC7F8001FEEB01FF9026FFE00713004890B55A486C14F8D8F81F5CD8F00314C027E0 003FFEC7FC2D407ABE3A>I<003FB912FCA5903BFE003FFE003FD87FF0EE0FFE01C01603 49160190C71500197E127EA2007C183EA400FC183F48181FA5C81600B3AF010FB712F8A5 403D7CBC49>I<903807FFC0013F13F848B6FC48812607FE037F260FF8007F6DEB3FF048 6C806F7EA36F7EA26C5A6C5AEA01E0C8FC153F91B5FC130F137F3901FFFE0F4813E0000F 1380381FFE00485A5B485A12FF5BA4151F7F007F143F6D90387BFF806C6C01FB13FE391F FF07F36CEBFFE100031480C6EC003FD91FF890C7FC2F2B7DA933>97 D<13FFB5FCA512077EAFEDFFE0020713FC021FEBFF80027F80DAFF8113F09139FC003FF8 02F06D7E4A6D7E4A13074A80701380A218C082A318E0AA18C0A25E1880A218005E6E5C6E 495A6E495A02FCEB7FF0903AFCFF01FFE0496CB55AD9F01F91C7FCD9E00713FCC7000113 C033407DBE3A>I<EC7FF00107B5FC011F14C0017F14E09039FFF01FF0489038800FF848 EB001F4848EB3FFC120F485AA2485AA2007FEC1FF849EB0FF0ED03C000FF91C7FCAB127F 7FA3003F153E7F001F157E6C6C147C6C6C14FC91388001F86C9038C003F0C69038F81FE0 6DB512C0011F14800107EBFE009038007FF0272B7DA92E>I<ECFFF0010713FE011F6D7E 017F809039FFE07FE0489038801FF048496C7E48486D7E48486D7E121F491301003F81A2 485A6F1380A212FFA290B7FCA401F0C9FCA5127FA27F123FEE0F806C7E161F6C6C15006C 6C5C6C6D137E6C9038E001FC6C9038F80FF8013FB55A6D14C0010391C7FC9038007FF829 2B7DA930>101 D<EC07FE91387FFF8049B512C0010714E090390FFE3FF0EB1FF090393F E07FF8EB7FC013FF1480A2489038003FF0ED1FE0ED0FC092C7FCAAB612E0A500010180C7 FCB3AC007FEBFF80A525407DBF20>I<903A03FF8007F0013F9038F83FF8499038FCFFFC 48B712FE48018313F93A07FC007FC34848EB3FE1001FEDF1FC4990381FF0F81700003F81 A7001F5DA26D133F000F5D6C6C495A3A03FF83FF8091B5C7FC4814FC01BF5BD80F031380 90CAFCA2487EA27F13F06CB6FC16F016FC6C15FF17806C16C06C16E01207001F16F0393F E000034848EB003F49EC1FF800FF150F90C81207A56C6CEC0FF06D141F003F16E001F014 7FD81FFC903801FFC02707FF800F13006C90B55AC615F8013F14E0010101FCC7FC2F3D7D A834>I<EA01F8487E487E487E481380A66C13006C5A6C5A6C5AC8FCA913FFB5FCA51207 7EB3ABB512F8A515407CBF1D>105 D<EC0FC0EC1FE0EC3FF0EC7FF8ECFFFCA6EC7FF8EC 3FF0EC1FE0EC0FC091C7FCA9EC03FCEB07FFA5EB001F140FB3B3A2EA1F80EA3FC0EA7FE0 EAFFF0EC1FF8A3EC3FF015E0397FE07FC0393FC1FF806CB512006C5B6C13F8C613801E53 86BF20>I<13FFB5FCA512077EB092380FFFFEA5DB01FEC7FC4B5AED07F0ED1FE04B5A4B 5A4BC8FCEC03FC4A5A4A5A141FEC7FF84A7EA2818102E77F02C37F148102007F826F7E6F 7E151F6F7E826F7F6F7F816F7FB5D8FC07EBFFC0A5323F7DBE37>I<13FFB5FCA512077E B3B3AFB512FCA5163F7CBE1D>I<01FFD91FF8ECFFC0B590B5010713F80203DAC01F13FE 4A6E487FDA0FE09026F07F077F91261F003FEBF8010007013EDAF9F0806C0178ECFBC04A 6DB4486C7FA24A92C7FC4A5CA34A5CB3A4B5D8FE07B5D8F03FEBFF80A551297CA858>I< 01FFEB1FF8B5EBFFFE02036D7E4A80DA0FE07F91381F007F0007013C806C5B4A6D7E5CA2 5CA35CB3A4B5D8FE0FB512E0A533297CA83A>I<EC7FF0903803FFFE011FEBFFC0017F14 F09039FFE03FF8489038800FFC3A03FE0003FE48486D7E000F168048486D13C0A2003F16 E049147F007F16F0A400FF16F8AA007F16F0A46C6CECFFE0A2001F16C06C6C491380A26C 6C4913003A03FF800FFE6C9038E03FFC6C6CB512F0011F14C0010791C7FC9038007FF02D 2B7DA934>I<01FFEBFFE0B5000713FC021FEBFF80027F80DAFF8113F09139FC007FF800 0301F06D7E4A6D7E4A130F4A6D7E1880A27013C0A38218E0AA4C13C0A318805E18005E6E 5C6E495A6E495A02FCEBFFF0DAFF035B92B55A029F91C7FC028713FC028113C00280C9FC ACB512FEA5333B7DA83A>I<3901FE01FE00FF903807FF804A13E04A13F0EC3F1F91387C 3FF8000713F8000313F0EBFFE0A29138C01FF0ED0FE091388007C092C7FCA391C8FCB3A2 B6FCA525297DA82B>114 D<90383FFC1E48B512BE000714FE5A381FF00F383F800148C7 FC007E147EA200FE143EA27E7F6D90C7FC13F8EBFFE06C13FF15C06C14F06C806C806C80 6C80C61580131F1300020713C014000078147F00F8143F151F7EA27E16806C143F6D1400 01E013FF9038F803FE90B55A15F0D8F87F13C026E00FFEC7FC222B7DA929>I<EB07C0A5 130FA4131FA3133F137FA213FF5A1207001FEBFFFEB6FCA40001EBC000B3151FA96CEBE0 3EA2017F137EECF8FC90383FFFF86D13F0010713E001001380203B7EB929>I<D9FF80EB 0FF8B5EB0FFFA50007EC007F6C153FB3A5167FA316FF6C5C4B7F6C903AC007DFFFE09138 F01F9F6DB5121F6D13FE010F13F8010101E0EBE000332A7CA83A>I<B500FC90383FFFC0 A5000101C0903803E0006E1307A26C5E6E130F017F5D6E131F013F92C7FC6E5B011F143E 6E137E010F147C6E13FCA26D5C15816D5C15C36D5C15E76D5C15FF6E5BA36E90C8FCA26E 5AA26E5AA26E5AA26E5AA232287EA737>I<B53CFC3FFFFC03FFFEA50003D980009039C0 000F806E161F6C037F15006E496C5B6C183E836E48157E017F177C6E486D13FC013F02EF 5C83DAFC071401011F02C75CDAFE0FEBFE03010F02835C17FFDAFF1F14076D02015C03BF 148F6DD9BE005C18CF03FE14DF6D49017F90C7FC18FF6D496D5AA36E486D5AA26E486D5A A36E486D5AA26E486D5A47287EA74C>I<B500FC90383FFFC0A5000101C0903803E0006E 1307A26C5E6E130F017F5D6E131F013F92C7FC6E5B011F143E6E137E010F147C6E13FCA2 6D5C15816D5C15C36D5C15E76D5C15FF6E5BA36E90C8FCA26E5AA26E5AA26E5AA26E5AA3 5D14075D000E130FD83F805B387FC01FD8FFE090C9FC5C143E147E5CEBC1F8387FC3F038 7E0FE06CB45A6C5B6C48CAFCEA03F8323B7EA737>121 D<B912E0A43304809A34>123 D E /Fj 25 122 df<933807FF80043F13E09338FE00F8DB01F0133EDB07E0130E4B4813 1F4C137F031F14FF4BC7FCA218FE157E1878180015FE5DA31401A25DA414030103B712F0 A218E0903A0003F000070207140F4B14C0A3171F020F15805DA2173F1800141F5D5F177E A2143F92C712FE5FA34A1301027EECF81CA3160302FEECF03C4A1538A21878187013014A 010113F018E0933800F1C0EF7F804948EC1F0094C7FCA35C1307A2001E5B127F130F00FF 5BA249CAFC12FEEAF81EEA703CEA7878EA1FF0EA07C0385383BF33>12 D<120FEA3FC0127FA212FFA31380EA7F00123C0A0A77891C>46 D<171C173C177CA217FC A216011603A21607A24C7EA2161DA216391679167116E1A2ED01C1A2ED03811507160115 0EA2031C7FA24B7EA25D15F05D4A5AA24A5AA24AC7FC5C140E5C021FB6FC4A81A20270C7 127FA25C13015C495AA249C8FCA2130E131E131C133C5B01F882487ED807FEEC01FFB500 E0017FEBFF80A25C39417BC044>65 D<49B812F8A390260003FEC7121F18074B14031801 F000F014075DA3140F5D19E0A2141F4B1338A2EF7801023F027013C04B91C7FCA217F002 7F5CED80011603160F91B65AA3ED001F49EC07805CA3010392C8FC5CF003804C13070107 020E14005C93C75A180E010F161E4A151C183CA2011F5E5C60A2013F15014A4A5A170701 7F150F4D5A4A147F01FF913807FF80B9FCA295C7FC3D3E7BBD3E>69 D<147E49B47E903907C1C38090391F80EFC090383F00FF017E137F4914804848133F485A A248481400120F5B001F5C157E485AA215FE007F5C90C7FCA21401485C5AA21403EDF038 5AA21407EDE078020F1370127C021F13F0007E013F13E0003E137FECF3E1261F01E313C0 3A0F8781E3803A03FF00FF00D800FC133E252977A72E>97 D<EB1FC0EA0FFF5CA2EA003F A291C7FCA25BA2137EA213FEA25BA21201A25BA21203A25B147E3907F1FF809038F783E0 9038EF01F013FE390FF800F8A24913FC49137C485A157E5B15FE123FA290C7FCA2481301 15FC127EA2140300FE14F85AA2EC07F0A215E048130F15C0141F15800078EB3F00127C14 7E003C5B383E01F8381E03E06C485A6CB4C7FCEA01F81F4076BE2A>I<EC1FE0ECFFF890 3803F03E903807C00F90381F8007D93F001380017E131F49137F485A485A000715005B00 0F147E484890C7FCA2485AA3127F90C9FCA35A5AA6481403007E5C5D151E003E5C5D6C5C EC03E0390F800F802603E07EC7FC3801FFF838003FC0212977A72A>I<EE3F80ED1FFF17 00A2ED007FA2167EA216FEA25EA21501A25EA21503A25EA21507A25E147E903801FF8F90 3807C1CF90391F80EFC090383F00FF017E137F5B48486D5A485AA2485A000F92C7FC5B00 1F5CA24848137EA215FE127F90C75AA214015A485CA2140316384814F0A2140716789138 0FE070127C021F13F0007E013F5B003E137FECF3E1261F01E35B3A0F8781E3802703FF00 FFC7FCD800FC133E294077BE2E>I<EC3F80903801FFE0903807E0F890381F803CEB3E00 01FC131E485A485A12074848133E49133C121F4848137C15F8EC03F0397F000FE0ECFF80 B5EAFC0014C048C8FCA45AA61506150E151E007C143C15786C14F0EC01E06CEB07C0390F 801F003807C0FC3801FFF038007F801F2976A72A>I<167C4BB4FC923807C78092380F83 C0ED1F87161FED3F3FA2157EA21780EE0E004BC7FCA414015DA414035DA30103B512F8A3 90260007E0C7FCA3140F5DA5141F5DA4143F92C8FCA45C147EA414FE5CA413015CA4495A A4495AA4495A121E127F5C12FF49C9FCA2EAFE1EEAF83C1270EA7878EA3FE0EA0F802A53 83BF1C>I<EC03F0EC0FFC91383E0E1C9138FC077E903901F003FE1303903807E001D90F C013FCEB1F80A2EB3F004914F8137E01FE1303A2484814F0A2150712034914E0A2150F12 074914C0A2151FA216805B153F1203ED7F006D5BA200015B0000495A9038F80F7E90387C 1EFEEB1FF8903807E0FC90C7FC1401A25DA21403A25D001C1307007F5C48130F5D4A5A4A C7FC48137E00F85B387C03F0381FFFC0D803FEC8FC273B7CA72A>I<EB01FC13FF5CA213 03A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C8FCEC03F890387F0FFE91383E 0F80D97E7813C0ECE007D9FFC013E014801400A2485A5BA25B0003140F16C05BA2000714 1F16805BA2000F143F16005B5D001F147EEDFE074913FCA2003F0101130FEDF80E130016 1E48ECF01CA2007E1538A200FE1570020013E048EC7FC00038EC1F0028407ABE2E>I<14 78EB01FCA21303A314F8EB00E01400AD137C48B4FC38038F80EA0707000E13C0121E121C EA3C0F1238A2EA781F00701380A2EAF03F140012005B137E13FE5BA212015BA212035B14 38120713E0000F1378EBC070A214F0EB80E0A2EB81C01383148038078700EA03FEEA00F8 163E79BC1C>I<EB01FC13FF5CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133F A291C8FCED03E049EB0FF8ED3C3C017EEB707CEDE1FC9038FE01C1EC03839038FC070314 0E0001011C13F891383800E0494813001460000313E0EBF9C0EBF78001FEC8FC1207EBFF E0EBE7F8EBE0FE000F137F6E7EEBC01F6E7E121F16701380A2003F15F0021F13E0010013 80A248148116C0007EEB0F83168000FE14879138078F0048EB03FE0038EB00F826407ABE 2A>107 D<EB07F0EA03FF14E0A2EA000FA214C0A2131FA21480A2133FA21400A25BA213 7EA213FEA25BA21201A25BA21203A25BA21207A25BA2120FA25BA2121FA25BA2123FA290 C7FCA25A1307127EA2EAFE0F130E12FCA2131E131CA2EA7C381378EA3C70EA1FE0EA0780 144079BE17>I<D801F0D93F80137F3D07FC01FFE003FFC03D0F3E07C1F80F83F03D0E1F 0F00FC1E01F8001E011C90387C3800001C49D97E707F003C01F05C0038157F4A5C26783F C05C12704A91C7FC91C7127E00F003FE1301494A5CEA007EA20301140301FE5F495CA203 031407000160495C180F03075D0003051F13E0494A1480A2030FEC3F810007F001C0495C A2031F91383E0380120F494AEC0700A2033F150E001FEF1E1C4991C7EA0FF80007C7000E EC03E0432979A74A>I<D801F0EB3F803A07FC01FFE03A0F3E07C1F83A0E1F0F00FC001E 011C137C001C49137E003C13F012385C38783FC012705C91C7FC00F015FE495CEA007EA2 150101FE5C5BA2150300015D5B15075E0003020F13704914C0A2031F13F00007ED80E05B 1681EE01C0120F49EC0380A2EE0700001FEC0F0E49EB07FC0007C7EA01F02C2979A733> I<EC1FC0ECFFF8903803F07C90380FC01FEB1F8090393F000F80017E14C0491307484814 E0485A12075B000F15F0485AA2485AA2ED0FE0127F90C7FCA2151F4815C05AA2ED3F80A2 ED7F00A248147E007C5C007E13015D4A5A003E495A6C495A4A5A260F803EC7FC3807C0FC 3801FFF038003F80242977A72E>I<903903E001F890390FF807FE903A1E7C1E0F80903A 1C3E3C07C0013C137801389038E003E0EB783F017001C013F0ED80019038F07F0001E015 F8147E1603000113FEA2C75AA20101140717F05CA20103140F17E05CA20107EC1FC0A24A 1480163F010F15005E167E5E131F4B5A6E485A4B5A90393FB80F80DA9C1FC7FCEC0FFCEC 03E049C9FCA2137EA213FEA25BA21201A25BA21203A2387FFFE0B5FCA22D3A80A72E>I< D801F013FC3A07FC07FF803A0F3E0F03C0260E1F1C13E0001EEB380F001C1370003CEBE0 1F123814C0D8783F14C00070903880070092C7FC91C8FC12F05BEA007EA313FE5BA31201 5BA312035BA312075BA3120F5BA3121F5B0007C9FC232979A726>114 D<EC7F80903801FFE0903807C0F890381F003C013E131C013C131E017C133E49137E15FE A2000114FCA215706D13007FEBFFC014FC6C13FF15806D13C06D13E0010F13F01300140F 14071403120C123F387F80011403D8FF0013E0A300FCEB07C000F0EB0F8012700078EB1F 006C133C381F01F83807FFE0C690C7FC1F297AA725>I<EB01C0EB03F01307A25CA2130F A25CA2131FA25CA2133FA291C7FCA2007FB51280B6FC1500D8007EC7FC13FEA25BA21201 A25BA21203A25BA21207A25BA2120FA25BA2121F141C1380A2003F133C1438EB00781470 14F05C495AEA1F03495A6C48C7FCEA07FCEA01F0193A78B81E>I<137C48B4141C26038F 80137EEA0707000E7F001E15FE121CD83C0F5C12381501EA781F007001805BA2D8F03F13 03140000005D5B017E1307A201FE5C5B150F1201495CA2151F0003EDC1C0491481A2153F 1683EE0380A2ED7F07000102FF13005C01F8EBDF0F00009038079F0E90397C0F0F1C9039 1FFC07F8903907F001F02A2979A731>I<017CEB01C048B4EB07F038038F80EA0707000E 01C013F8121E001C1403EA3C0F0038EC01F0A2D8781F130000705BA2EAF03F91C712E012 005B017E130116C013FE5B1503000115805BA2ED07001203495B150EA25DA25D15780001 14706D5B0000495A6D485AD97E0FC7FCEB1FFEEB03F0252979A72A>I<137C48B4143826 038F8013FCEA0707000E7F001E1401001C15F8EA3C0F12381503D8781F14F000701380A2 D8F03F1307020013E012005B017E130F16C013FE5B151F1201491480A2153F000315005B A25D157EA315FE5D00011301EBF8030000130790387C1FF8EB3FF9EB07E1EB00035DA214 07000E5CEA3F80007F495AA24A5AD8FF0090C7FC143E007C137E00705B387801F0383803 E0381E0FC06CB4C8FCEA03F8263B79A72C>121 D E /Fk 2 16 df<007FB812FEBAFCA2 6C17FE3804799847>0 D<EB0FFCEB3FFF90B512C0000314F04880488048804880A24815 80A3B712C0AA6C1580A36C1500A26C5C6C5C6C5C6C5CC614C0013F90C7FCEB0FFC22227B A72D>15 D E /Fl 53 122 df<14FCEB01F8EB03F0EB07E0EB0FC0131F1480EB3F005B13 7E5B12015B1203A2485AA25B120FA25B121FA25B123FA448C7FCA712FEB3A2127FA76C7E A4121F7FA2120F7FA212077FA26C7EA212017F1200137E137F7FEB1F8014C0130FEB07E0 EB03F0EB01F8EB00FC165A79C323>40 D<12FC127E7E6C7E6C7E7F12076C7E7F12016C7E 7F137E137FA2EB3F80A2131F14C0A2130F14E0A2130714F0A4EB03F8A7EB01FCB3A2EB03 F8A7EB07F0A414E0130FA214C0131FA21480133FA2EB7F00A2137E13FE5B485A12035B48 5A120F5B485A48C7FC127E5A165A7BC323>I<EA7F80A8120FEA1F00A2121E123EA2123C 127C1278A212F80913798719>44 D<B512FEA617067F961E>I<ED0180ED03C01507A216 80150FA216005DA2151E153EA2153C157CA2157815F8A25D1401A25D1403A25D1407A25D 140FA24AC7FCA2141E143EA2143C147CA2147814F8A25C1301A25C1303A25C1307A25C13 0FA291C8FC5BA2131E133EA25BA2137813F8A25B1201A25B1203A25B1207A25B120FA290 C9FC5AA2121E123EA2123C127CA2127812F8A25A1260225B7BC32D>47 D<EB0FF8EB3FFF90B512C04814F048804880390FF01FFE391FC003FF4848C6138090C712 7F48EC3FC0127EED1FE012FE48140F007C15F0123C1238001814071208C8FCA2150FA216 E0A2151F16C0153F1680ED7F005D5D4A5A4A5A4A5A4A5A4A5A4A5A4AC7FC14FE495A495A 495A495A495A495A49C8FC13FC485A485A485A485A485A48C9FC48B612F0B7FCA6243E7C BD2D>50 D<EC01FE4A7EA34A7FA391380FDFC0159F021F7F158FA291383F0FF0A2150702 7E7FA2150302FC7FA201016D7E14F8A201036D7E5CA201076E7E5C010F6E7EA25C011F6E 7E5CA2013F6E7E91C7FC49811607137E90B77EA34882A2D803F8C7EA01FF825B00071780 177F5B000FEE3FC05B001F17E0171F5B003F17F0170F90C9FC48EE07F8A200FE17FC1703 5A363F7DBE3D>65 D<B612E015FCEDFF8016E08248C713FCED1FFEED03FF819238007F80 EE3FC0161FA2EE0FE0A6EE1FC0163F1780167F923801FF004B5AED0FFCED7FF8B75A16C0 4BC7FC8116E016F848C713FEED0FFF030113806F13C0EE3FE0EE1FF0160FEE07F8160317 FCA21601A4160317F81607A2EE0FF0161FEE7FE0EEFFC003031380033F1300B75A16F816 E0168003F8C7FC2E3F77BE3D>I<EDFFF0020FEBFF80023F14F091B612FC5B1307499038 803FF890391FFC0003D93FF01300D97FC01438494814184890C9FC485A5B12075B485AA2 485AA2485AA3485AA448CAFCAD6C7EA46C7EA36C7EA26C7EA26C7E7F12037F6C6C15046C 6D140C6D6C143CD93FF0147CD91FFCEB01FE90390FFF801F6D90B5FC010115FC6D15F002 3F14C0020F1400020013F02F437AC03A>I<B612F8EDFF8016E016F88290C7EA1FFF0303 7F03007F707EEE1FF0707E707E1603707EA2707EEF7F80A2173F18C0A2171F18E0A2170F A218F0AC18E0171FA318C0173FA2EF7F80A2EFFF00A24C5A16034C5A4C5A4C5A4C5AEEFF C003035B031F90C7FC90B65A16F816E0168003F8C8FC343F78BE42>I<B8FCA690CAFCB3 A390B612FCA690CAFCB3A590B71280A7293F78BE36>I<B712FEA690C9FCB3A490B612E0 A690C9FCB3AB273F78BE34>I<EDFFF0020713FF023F14E091B612F84915FE130749EB80 3F903A1FFC0003FCD93FF013004948143CD9FF80141C4890C8120C491500485A12075B48 5AA2485AA2485AA3485AA448CAFCAA0307B5FCA36C7EA392C7127F6C7EA36C7EA26C7EA2 6C7E7F12036C7E7F6C7FEB7FE06D7ED91FFCEB01FF90390FFF801F6D90B6FC13016D15FC 023F14F002071400020013F030437AC03D>I<B4ED01FEB3A990B7FCA690C81201B3AC2F 3F78BE40>I<12FFB3B3B3A9083F78BE19>I<B4EEFF804C13004C5A4C5A4C5A4C5A4C5A4C 5A4C5A4B90C7FC4B5A4B5A4B5A4B5A4B5A4B5A4B5A4A90C8FC4A5A4A5A4A5A5D4A5A4A5A 4A5A14FF497F497F5B497F90381FEFF8133F90387FC7FCEBFF83EC03FE496C7E497E4980 496D7E49133F4980496D7E90C7120F826F7E1503826F7E8183707E163F83707E160F8370 7E160383707E821880EF7FC0323F78BE3F>75 D<B4FCB3B3B3A390B612F0A6243F78BE31 >I<D8FFE0EE3FF8A36D167FA26D16FFA200FE17FB6D1501A2017EED03F3A36DED07E3A3 6D6CEC0FC3A26E141F010F1683A26E143F01071603A26E147F0103157E6E14FEA2010115 FC6E1301A2010015F86E1303027E14F0027F1307A26E14E0ED800FA2021F14C0EDC01F02 0F1480A2EDE03F02071400A26F5A0203137EA26E6C5AA3913800FDF8A215FF6F5AA26F5A A36F5A92C8FCA23D3F77BE50>I<D8FFF015FEA27FA27FA27F12FE137FA280133F80131F 80130F801307801303801301801300808081143F81141F81140F81140781140381140181 140081811680153F16C0151F16E0150F16F0150716F8150316FC1501A2ED00FE16FF167F A2163FA2161FA22F3F78BE40>I<4AB47E020F13F0027F13FE91B6FC010315C04981011F 010013F8D93FF8EB1FFCD97FE0EB07FE4A130349486D7E4890C813804848ED7FC049153F 4848ED1FE04848ED0FF0A24848ED07F8A2491503003F17FCA2491501007F17FEA390CAFC 4817FFAC6D5D007F17FEA46D1503003F17FCA26D1507001F17F86D150F000F17F06D151F 6C6CED3FE0A26C6CED7FC06C6CEDFF806C6D4913006E5BD97FF0EB0FFE6D6C495A6DB4EB FFF8010790B512E06D5D010092C7FC6E5B020F13F00201138038437BC043>I<B612F015 FEEDFFC08216F890C7EA3FFCED07FEED01FF6F1380167FEE3FC0EE1FE0A2160F17F01607 A6160F17E0161FA2EE3FC0167FEEFF804B1300ED07FEED3FFC90B65A5E16C093C7FC15FC 90CAFCB3A92C3F78BE3A>I<4AB47E020F13F0027F13FE91B6FC010315C04981011F0100 13F8D93FF8EB1FFC49486D7E02C0130349486D7E4890C813804848ED7FC049153F4848ED 1FE0000F17F049150F001F17F8491507A24848ED03FCA34848ED01FEA448CA12FFAD6C6C ED01FEA56C6CED03FCA26D9038FF8007001F027F14F8ED3FC06C6C9138E00FF06D90381F F01F0007020F14E06DECF83F6C6C903907FC7FC06C6C903903FEFF806C6D6CB5120014C0 6D6C6C5BD93FF86D5A6DB4495A010790B512E06D8101008180020FEBF7FC0201EB83FE91 C7EA03FF8270138018C0EF7FE0173FEF1FF018F8EF0FFC384C7BC043>I<B612F015FF16 C016F016FC90C7EA3FFEED03FF03001380EE3FC0EE1FE0160F17F0160717F81603A51607 17F0160FA2EE1FE0EE3FC016FF03031380031F130090B65A16F85E16C04BC7FC5DEB0001 811400816F7E153F82151F826F7EA26F7E1503826F7EA26F7EA2EE7F80163F17C0EE1FE0 A2EE0FF0A2EE07F8EE03FCA2EE01FE2F3F78BE3B>I<ECFFF0010713FF011F14C0017F14 F890B67E5A48EB803F3A07FC0007F848481301D81FE0EB0078491438003F15184991C7FC A248CAFCA67FA26C7E7F7F6C7EEA0FFEEBFFC06C13FC6CEBFFC06C14F86C14FE013F6D7E 010F80010380D9003F7F02037F9138007FFC150F6F7E15018281821780163FA7EE7F0012 601270007815FE007C1401007F4A5AD8FFC0130701F0EB1FF801FFEB7FF06C90B55A001F 5D000792C7FC00015CD8003F13F8010113C029437CC033>I<B912FEA6C890C8FCB3B3B3 A2373E7DBD3E>I<B4ED01FCB3B3AB6C6CEC03F8A36C6CEC07F0A26C6CEC0FE0A26C6CEC 1FC06D143F6C6CEC7F806C6CECFF003A01FF8003FE6C9038E01FFC6DB55A011F14E00107 5C010149C7FC9038003FF02E4178BE3F>I<B46CEE1FC0007FEF3F807F003FEF7F00A27F 001F17FE7F000F4C5AA27F00074C5AA26C6C4B5AA27F00014C5AA27F6C4C5A80017F4B5A A280013F4BC7FCA26D6C14FEA280010F4A5AA26D6C5C1603A26D6C495AA26D6C5C160FA2 6D6C5C161FA2DA7F805B163FDA3FC090C8FC5EA291381FE07E16FE020F5B15F015F10207 5B15F902035B15FB15FF6E5BA26E5BA36F5A3A3F7FBE3D>I<B4DB07FEED0FE06C6C1AC0 1B1F4C7E6C6C1A801B3F5EEFBF806C6C033F160063163F6C6C6F6C147E1BFE167E846C6C 030F5D1A0116FC6C6C705C0507140316F80301806C6C03035D1A07ED03F0846C6C03015D 1A0FED07E0D97F806F5C0500141F5E030F80D93FC06F5C1A3F5E011F011F038090C7FC02 E0153F6293C7FC010F49EDC07E02F0151F033E16FE010760037EEC0FE0A2DAF87C15E101 036003FC14074B15F1D901FC5FF003F3A25DD900FDEEFBE01801DAFFE015FF027F5F84A2 5D023F5F197F533F7FBE56>I<D87FC0ED0FF86C6CED1FF06D16E0001FEE3FC06C6C157F 6C6CEDFF806C6C16004C5A6C6C14036C6D5C6D6C495A160F6D6C495A6D6C5C6D6C495A16 7F6D6C5C6D6C49C7FC0101495A903800FF03ED83FC91387FC7F8EC3FCF91381FEFF0EDFF E06E5B806E5B93C8FC6E5A814A7F5C824A7F91381FEFF015CF91383FC7F891387F83FC91 38FF03FE150149486C7E49486D7E0107814A6D7E4948131F49486D7E8349486D7E494813 0301FF8191C76C7E48486E13800003167F484816C049ED3FE04848ED1FF0001F17F84915 0F4848ED07FC007FEE03FE484816FF90C97E383F7EBE3D>I<B46CEE1FC06D163F007FEF 7F806C6CEEFF007F001F4C5A6C6C4B5A7F00074C5A6C6C4B5A7F6C4C5A6C6D4A5A6E5D01 7F157F6D6C4AC7FC6E5C011F14016D6C495A6D6C5C16076D6C495A6D6C5C161F6D6D485A DA7FC05B167F6E6C48C8FC6E6C5AEDF1FCEC0FFB6EB45A5E806E5B5E806F5AB3A83A3F7F BE3D>I<EB0FF890B5FC00031480000F14E04814F0A29038F00FF890388003FC381E0001 001814FE00101300C812FF157FA7EC7FFF010FB5FC137F48B6FC120748EBF07F383FFC00 13C048C7FC12FE5AA315FF7E5C387F8007EBE01F6CB6FCA26C147F6C13FC6C13F0000190 C7FC202B7CA92C>97 D<12FEB3A414FF010713E0011F7F017F7FB67E819038F80FFFEBE0 01D98000138090C7EA7FC0153F48141F16E0150FA3ED07F0AAED0FE0A3151FED3FC07E6D EB7F8015FFD9E00313009038F81FFE90B55A485C6D5B6D5B010F1380260001FEC7FC2440 79BE2F>I<49B47E010F13F0013F13FC4913FF90B612805A481300D807FCEB1F00D80FF0 130748487F4990C7FC123F5B127F90C9FCA312FEAA127FA36C7EA26C6C14406DEB01C06C 6C13036C6C131F01FF13FF6C90B5FC7E6C6C14806DEBFE00010F13F001011380222B7DA9 28>I<ED07F0B3A4EB07F8EB3FFF4913C748B512F74814FF5A1480390FFC003FD81FF013 1F49130F48481307A2485A90C7FCA312FEAA127FA37F003F140F7F6C6C131F6D133F6C6C 137F9038FF01FF6C90B5FC6C14F76C14E76C148790383FFE07D90FF0C7FC24407DBE2F> I<EB03F8EB1FFF017F13C090B57E488048803807FE07390FF801FC9038E000FE4848137E 003F143E49133F90C77E5A127EED0F80B7FCA600FCC9FCA37E127EA2127FA26C7EA26C7E 6D14806C6C1303D807FC131F01FF13FF6C90B5FC7E6C6C14006D13FC010F13E0010190C7 FC212B7DA928>I<EC1FF0ECFFFC5B13075BA290381FE03C90383F800491C7FC5B137E13 FEADB6FCA6C648C7FCB3B01E407FBF1C>I<D903FC133F90390FFF03FF013F13DF4990B5 128090B7FC5A9026FE07FCC7FC3803F80148486C7E49137EA248487FA86C6C137EA26D13 FE6C6C485A3901FE07F848B5FC5D485C5DD80FCF90C8FCEBC3FC0180C9FC7FA37F6CB512 F015FF6C15C0824881001F81823A3FE0001FFED87F80130390C8FC48814881A46C5D6C5D 01C01303D83FF0EB0FFCD81FFEEB7FF86CB65A6C5D6C5DC692C7FC011F13F8010313C029 3D7EA82D>I<12FEB3A449B4FC010713C0011F13F0017F13F890B512FCB6FC9038F80FFE EBE003EBC00190388000FFA290C7127FA35AB3A9203F79BE2F>I<12FFA81200AF127FB3 B3A4083F7ABE16>I<EB03FCA890C7FCAFEB01FCB3B3AE384003F8EA7007387C1FF0B5FC 14E014C06C1380001F1300EA01FC165286BE18>I<12FEB3A5EDFF804A13004A5A4A5A4A 5A4A5A4A5A4A5A4A5A4990C7FC495A495A495A5C495A495A497E13FFB57E8013FBEBF1FC EBE0FE497E497E496C7E488048131F6E7E8114076E7E8114016E7E157F1680153FED1FC0 16E0233F79BE2C>I<12FEB3B3B3A9073F79BE16>I<26FC01FFECFF800107D9C00313E001 1FD9F00F13F8017FD9F83F7F90B56C487F00FD92B5FC3CFFF80FFFFC07FFD9E003EBF001 496C497E496C49EB7F80A290C76C48133FA34892C7FCB3A9392979A848>I<38FC01FF01 0713C0011F13F0017F13F890B512FC12FD39FFF80FFEEBE003EBC00190388000FFA290C7 127FA35AB3A9202979A82F>I<EB01FE90380FFFC0013F13F0497F90B57E000314FF1403 3A07F8007F804848EB3FC04848EB1FE049130F4848EB07F0A290C712034815F8A2007E14 0100FE15FCA96C14036C15F8A36C6CEB07F06D130FA26C6CEB1FE06C6CEB3FC001FC13FF 2607FF0313806C90B512006C5C6C5C013F13F0010F13C0D901FEC7FC262B7DA92D>I<14 FFD8FE0713E0011F7F017F7FB67E819038F80FFFEBE003D98000138090C7EA7FC0153F5A ED1FE0A2150FA216F01507A8150F16E0A2151FA2ED3FC06C147F6DEBFF805CD9E0031300 9038F81FFE90B55A485C6D5B6D5B010F1380D901FEC7FC90C9FCB1243B79A82F>I<9039 03F807F0EB1FFF017F13C790B512E74814F74814FF481381390FFC007F4848133F49131F 4848130F5B48481307A290C7FCA25A5AA87E7EA27FA26C7E150F6C6C131F6D133FD80FFC 137F9038FF01FF6C90B5FC6C14F76C14E76C148790383FFE07EB0FF090C7FCB1243B7DA8 2F>I<00FC137CEB03FC130F131F133F137FEBFFC038FDFE00EAFFF85B5B5BA25BA290C7 FCA25AB3A6162979A81F>I<EB1FF890B51280000314E04814F85A5A393FE00FF0EB8000 007F143090C8FCA57F6C7E13F06CB4FC14F06C13FE6C7F000114C06C14E0011F13F01301 9038001FF81407EC03FCA21401A3124012700078EB03F8007E130738FFE01F90B512F015 E06C14C0001F14800003EBFE0038003FF01E2B7EA923>I<EA01F8ACB612E0A6D801F8C7 FCB3A77F152015E03800FE0790B512F0A27F6D13C06D1300EB0FF01C357EB321>I<00FE 147FB3AC15FFA25C6C5B6C130FEBC03F90B6FC6CEBFE7F6C13FC6C13E0000390C7FC2029 79A72F>I<00FEDA7F80EB0FE0007F6F14C0181F15FF6C6C6E148003FB143F140101C013 F3001F6FEB7F00140315F1D80FE06E137E03E114FE1407D807F0D9E0FC5B170115C0140F D803F8027E5B1703EC1F8000015F01FC143F17070000D93F005C161F01FE1587023E148F 017E5E027E130F17CFD93E7C5D013FEC07DFA21478D91FF86DB4C7FCA25C010F5D16013B 287FA73E>119 D<B415FE6CEC01FC7F003FEC03F87F121FED07F07F000FEC0FE07F1207 ED1FC06C7E16806C6C133FA2ED7F006C7E157E017F13FEA26D5B14815D131F14C190380F C3F0A2903807E3E014E7A201035BA2903801F780A2EB00FF92C7FCA2147EA3147CA214FC 5C13015CA213035C13075CEA200F383C1F80D83FFFC8FCA25B5BEA07F0273B7FA72A> 121 D E /Fm 46 122 df<B612FEA71F077F9D27>45 D<EAFFC0AA0A0A758921>I<1738 177CA217FC17F8A2160117F0A2160317E0A2160717C0A2160F1780161F1700A25E163EA2 167E167CA216FC5EA215015E15035EA215075EA2150F5EA2151F93C7FCA25D153E157E15 7CA215FC5DA214015DA214035DA214075D140F5DA2141F92C8FCA25C143EA2147E147CA2 14FC5CA213015C13035CA213075CA2130F5CA2131F91C9FCA25B133E137E137CA213FC5B A212015BA212035BA212075B120F5BA2121F90CAFCA25A123EA2127E127CA212FC5AA212 702E787AD93B>I<EC1FF891B5FC010314C04980011F14F8498049809039FFF81FFF48D9 C00313804A7E4890C713C04848EC7FE049143F4848EC1FF0A249140F001F16F8491407A2 003F16FCA2491403A2007F16FEA3491401A300FF16FFB3A6007F16FE6D1403A66C6CEC07 FCA46C6CEC0FF8A26C6CEC1FF0A26D143F000716E06D147F6C6CECFFC06C6D481380ECE0 076CD9F81F13006DB55A6D5C6D5C6D5C010314C0010091C7FCEC1FF830527BCF3B>I<14 075C5C147F5C1307133F0007B5FCB6FCA413F913C1EAF8011200B3B3B3A4B712FEA72750 75CF3B>I<EC7FF0903803FFFE010FEBFFC0013F804914F890B67E4881488148D9807F13 80270FFC000F13C049010313E0484813004848EC7FF049143F007F16F849141FEE0FFC48 C8FC1607127E003E16FE121E121C000C15031204C9FCA21607A317FCA2160F17F8A2EE1F F0A2EE3FE0167F17C0EEFF804B13004B5AA24B5A4B5A4B5A4B5A4B5A4B5A4A48C7FC4A5A 4A5A4A5A4A5A4A5A4A5A4AC8FC495A495A495A495A495A495A495A49C9FC485A485A485A 485A485A48B712FE5AA82F507BCF3B>I<EC1FF849B5FC010714E0011F80017F14FC90B6 7E00038148D9E00F138048D9000313C0D81FFC010013E04848147F01E0EC3FF0485A6C48 141F90C813F87E000E150F120C1204C9FC161FA217F0A2163F17E0167FEEFFC0A24B1380 4B1300150FED3FFE913807FFFC0103B55A16E05E5E16E016F88290C7EA1FFF0303138003 0013C0EE7FE0EE3FF0161F17F8EE0FFCA2EE07FEA3EE03FFA90040ED07FE1260A2007015 0F00F816FC6C151FB416F86D143FD87FE0EC7FF0D83FF814FF01FE010313E0271FFFE00F 13C06C90B61280000316006C5D6C5D013F14F0010F14C0010191C7FC9038003FF830527B CF3B>I<ED07FF5DA25DA2153EA2157E5DA214015D140314075D140F5D141F4A5AA24A5A A24A5AA2495A13035C13075C130F495AA2495AA2495A5C13FF4890C7FCA2485AA2485A48 5AA2485AA2485A127F5B485A90B812F0A7C8000190C7FCB3A3344E7DCD3B>I<0007B712 E0A801F8C9FCB3A2EC07F8EC3FFF91B512C001FB14F090B67E8216FFECF80FDAE0031380 DA800013C091C7EA7FE05B49EC3FF049141F17F85BC9EA0FFCA3160717FEABEE0FFCA212 080018151F001C16F8123E007EED3FF0007F157F486CECFFE0D87FE05B6D4913C0D83FFC 010F1380271FFF803F13006C90B55A6C5D6C5D6C5D6C6C14C0011F91C7FC010713FC9038 007FE02F507BCD3B>I<ED3FF80203B51280020F14E0143F5C49B6FC5B49EBC0074990C7 1260D91FFC1400EB3FF0495A5C495A4890C9FC5B1203485AA2485AA25B121FA25B123FED FF80D9C00F13E0007F013F13F891B57E01C38001C78049158027FF9FF80713C09026BFC0 0113E09039FF80007F49C7EA3FF05B49EC1FF8160F4915FC16074915FE16035BA2160117 FFA5127FA6123FA26D15FE1603121F7FEE07FC120F6D140F17F86C6C141F6DEC3FF06C6C EC7FE06C6D13FF6E4813C06CD9F80F13806DB612006D5C6D5C6D5C6D5C010114C06D6C90 C7FCEC0FF830527BCF3B>I<B9FCA9C9EA01FEEE03FCEE07F8A2EE0FF0EE1FE0EE3FC016 7F178016FF4B13005E15034B5AA24B5A5E151F4B5AA24B5AA24B5AA25C93C7FC5C5D1407 5DA2140F5DA2141F5D143FA25D147FA35D14FFA35D5BA54990C8FCA75C1307AA304F7BCD 3B>I<EC1FF849B57E010714E0011F14F8498090B7FC48168048D9F00F13C048D9800113 E049C7127FD80FF8EC1FF04848EC0FF8A24848EC07FC491403A2007F16FE491401A86C6C EC03FCA26C6CEC07F8A26C6CEC0FF06D141F6C6CEC3FE06CB4ECFFC06CD9C00313806C90 B61200013F14FC010F14F0010314C0A2011F14F849809039FFFC3FFF48D9C00313804890 C713C04848EC7FE04848EC3FF049141F4848EC0FF84848EC07FCA24848EC03FEA34848EC 01FFA96D5C007F16FEA36C6CEC07FC6D140F001F16F86D141F6C6CEC3FF06D147F3B07FF 8001FFE06CD9F00F13C06C90B612806C16006D5C6D5C010F14F06D5C010091C7FCEC1FF8 30527BCF3B>I<EC1FF891B5FC010314C04980011F14F8498049809039FFF00FFF48EBC0 0348D90001138048489038007FC05B4848EC3FE0001F151F4915F04848140F17F85B007F 150717FCA249140312FF17FEA416011603A217FFA5127F7FA25E7F003F5D7F001F5D7F6C 6C5C5E6C6C49B5FC9039FF8003FD6C9038E01FF96C90B5EAF3FE6C15E36D14C36D14036D 13FC010701F013FC0101EB000790C8FCA2EE0FF8A3EE1FF0A2EE3FE0A2EE7FC016FF1780 4B13005D00034A5A6DEB1FFCD807E0495A9038FC01FF48B65A16C0485D6C92C7FC00035C C614F8013F13E0010790C8FC30527BCF3B>I<ED03FF4B7FA34B7FA34B7FA292383FDFF0 169FA2037F7F168F160F03FF7F160715FE020180A21603DA03FC7FA202076D7F15F8A202 0F6D7F5DA2021F6E7E5DA2023F6E7E5DA2027F6E7E5D02FF81170F92C7FC498217075C01 036F7EA25C01076F7F5CA2010F6F7F5C011F8391B8FCA24983A34983A20280C8121F01FF 83180F91C9FC48717E5B000384845B00071980845B000F19C0845B001F19E0197F5B003F 19F0193F484818F8191F5B00FF19FC46537DD24D>65 D<EEFFF8030FEBFFE0037F14FC4A B71280020716E0141F5C91B812C049EC001F4901F813014901E0EB003F490180140F4990 C81203D93FFCED01804A92C7FC495A495A485BA2485B91CBFC5A5B120F5B121F5BA2485A A3127F5BA412FF5BAD7F127FA47F123FA36C7EA27F120F7F12077F7E806C7FA26C7F6D6C 16206D6C16606EED01E06DB415036D6D14076D01E0EC1FF06D01F814FF6D01FF13076D91 B6FC023F16E06E168002071600020115FC6E6C14F0030F1480030001F8C7FC3C5778D44B >67 D<B712F8EEFF8017E017F817FE717E8401C0C7003F13F004077F04007FEF3FFE717E 05077F83717F717F727E183F85181F727EA2727EA2727EA2841A80A2841AC0A3197FA21A E0AE1AC0A219FFA31A8060A21A0060A24E5AA24E5A181F61183F4E5A4E5A5F4D5B4D5B05 1F90C7FC4D5AEFFFFC04075B043F5B90B85A18804DC8FC5F17E0178004F8C9FC435376D2 54>I<B912F8A801C0CAFCB3AA90B81280A701C0CAFCB3AD90B812FCA9365376D246>I<B9 12C0A801C0CAFCB3AC90B712F8A701C0CAFCB3B3A2325376D242>I<D8FFC0EE1FF8B3B2 90B9FCA701C0C9121FB3B3A43D5376D252>72 D<EAFFC0B3B3B3B3AB0A5375D220>I<D8 FFFCF07FFEA36D18FFA26D5FA36E5E01BF18FBA26E1607019F18F36E160FA2018F18E36E 161FA3D987F8EE3FC3A26E167F01831883A26E16FF01811803A26E5D018017FE6F1403A2 027F16FC6F1407A2023F16F86F140F021F16F0A26F141F020F16E06F143FA2020716C06F 147FA2020316806F14FF02011600A26F5B6E5DEE8003A2037F5CEEC007A2033F5CEEE00F 031F5CA2EEF01F030F5CA2EEF83F03075CA26F6C485AA3030191C7FC705AA26F6C5AA270 5AA3705AA3705A93C9FCA24F5375D266>77 D<B712E016FEEEFFC017F08317FE8301C0C7 80040F7F04017F707FEF3FF8717E170F717EA2717EA2831980A283A65FA219005FA24D5A A24D5A171F4D5AEFFFF04C5B040F5B93B55A90B8C7FC5F17F85F17C04CC8FC16E001C0CB FCB3B1395376D24A>80 D<B712E016FEEEFFC017F017FC17FF8401C0C76C7F040713F004 007F173F717E717E1707717E711380A28319C0A2187FA518FFA219805FA24D13004D5A17 0F4D5A4D5A17FF04075B047F13C090B85A95C7FC17FC17F017C04CC8FC5E9039C00007FE 15038281836F7F167F83163F83707EA2707E160783707EA2707F8284717EA2717E171F84 717EA2717EA2717E711380A27113C0A2F07FE0F03FF0A2F01FF83D5376D24B>82 D<913803FFC0023F13FE49B612C0010715F04915FC013F15FF49168090B8FC489038FC00 7F4801E001071300480180130191C87ED80FFC814848811707484815024992C7FCA3485A A67FA2123F7F7FA26C7E13FF6C7F6C13E014FC6CEBFFC06C14FC6CECFFC06D14F86D14FE 010F6E7E6D81010115F0D9003F80020780DA007F7F03077FED007F041F1380040713C082 040013E0A2EF7FF0173FA2171F18F8170FA8EF1FF0A212200070EE3FE0127C007E167F00 7FEEFFC001C05C01F04A1380D8FFFC020F1300D9FF80EB3FFE9139F801FFFC6C90B65A00 1F5E00075E00015E6C6C92C7FC010F14FC010114F0D9000F90C8FC35577BD441>I<BB12 FEA8C800010180C8FCB3B3B3B3A247527CD150>I<D8FFC0EF01FF7F007FF003FEA27F00 3FF007FCA27F001FF00FF87F000FF01FF0A27F0007F03FE0A27F6CF07FC0806CF0FF80A2 806C4D1300A280017F4C5AA26D6C4B5AA280011F4C5AA280010F4C5AA26D6C5E183F806D 4C5AA2816D4C5AA26D6D92C7FC5FA26E6C5C170381023F4A5AA26E6C5C170FA26E6C5C17 1FA26E6C5C173F02035D81177F6E5D168017FF6E92C8FC8216C1037F5B16E192383FE3FC A216F392381FF7F8A216FF6F5BA26F5BA36F5BA348537ED24D>86 D<903801FFC0011F13F8017F13FE0003B67E000F814881829138007FF801F0EB1FFCD80F C0130F90C76C7E000E1403000C81C87EA26F1380AA0207B5FC91B6FC1307133F90B7FC5A 000714004813E04848C7FCEA3FF813E0485A5B48C8FCA55D7F6C6C5B6D130F6D5B263FFE 01B5FC90B7FC7E6C5C6C14F86C14E06C140026007FE090C7FC29387BB638>97 D<B47EB3ABEC07FC91383FFF800181B512E0018780019F8001BF8090B67E9138C07FFF90 26FE000F138001F81303496D13C0497F49EC7FE05BEE3FF0161FA217F8160FA317FC1607 ABEE0FF8A4161F17F0163F17E06D147FEEFFC06D5B6D4913806D5B6D011F13009039FF80 FFFE91B55A01BF5C019F5C01875C01831480018049C7FCC7EA0FF02E5477D23C>I<EC0F FF027F13F049B512FC010714FF4915C0013F15E05B9038FFF801489039E0003FC0480180 130F91C71203484814014848EC0040491500485AA2485AA3485AA4485AAB6C7EA46C7EA2 6C7EA26D15206C6C15600007ED01E001FF14036C6DEB0FF06C01E0133F6C9038F803FF6D B6FC6D15E06D15800107ECFE00010114F86D6C13E0DA0FFEC7FC2C387CB634>I<EE07FC B3ABEC7FC0903803FFF8010F13FF4914C74914E74914FF90B7FC48EBFC0748EBE0004801 80137F91C7121F485A4848140F491407485AA25B127F5BA312FF5BAB7F127FA37F123FA2 6D140F6C7E161F6C6C143F6D147F6C6C6C13FF6C6D5AECF80F6C90B512F76C15E76D14C7 011F14076D13FE010313F001000180C7FC2E547CD23C>I<EC1FF0ECFFFE01036D7E010F 14E04980017F8090B67E489038F01FFEECC0074890380001FF48487F4848EC7F8049143F 484815C0161F485AEE0FE05B127F49140717F090B7FCB8FCA690CAFCA47FA2127FA27FA2 123F7F121F7F6C6C15406D15C00007150101FF14076C6DEB1FE06C01E0137F6C9038F803 FF6DB6FC6D15C06D150001075C010114F86D6C13C0DA0FFCC7FC2C387CB634>I<DA3FE0 EB07F0902601FFFC13FF0107EBFF0F4914BF4991B512F85B5B9026FFE03FEBC000489026 800FFCC7FC9038FE000300038149130148486D7EA348486E7EA86C6C4AC7FCA36C6C495A 6D130300015D9038FF800F6C9038E03FF84890B55A485D5E485D01F791C8FC01E113FC39 0FE03FE091CAFCA47FA2EA07FC90B612E016FF6C16C017F06C16FC830007824817804817 C001F8C7121FD83FE0020313E04848EC007F49153FEF1FF048C9FC170FA56D151F6C6CED 3FE06D157F6C6CEDFFC0D81FFC0203138001FF140F6C01F090B512006C90B65A000116F8 6C5E013F15C0010F92C7FC010114F8D9001F1380354F7DB53B>103 D<B47EB3ABEC07FC91387FFF800181B512E0018380018F80019F8013BF9039FFC07FFE90 38FE000F496D7E497F497F17805B815BA45BB3B1295377D23C>I<EAFFC0AAC7FCB3EA7F C0B3B3B10A5278D11C>I<B47EB3AC923801FFE04B13C04B138017004B5A4B5A4B5A4B5A 4B5A4A5B4A5B4A90C7FC4A5A4A5A4A5A4A5A4A5A01815B01835B018790C8FCEB8FFEEB9F FF13BF90B57E81A2ECBFE081EC1FF8EBFE0F01FC7F496C7EEBF00301E07F496C7F497E90 C77F6F7E153F826F7E150F826F7E1503826F13808117C0EE7FE0163F17F0EE1FF82D5377 D239>107 D<EAFF80B3B3B3B3AB095377D21C>I<B4D907FEEC03FF91263FFFC0011F13E0 91B56C017F7F0103DAF801B512FC010FDAFC0780496E4880495D902A7FC03FFF3FE01F13 809026FF000790387F800301FC6D9026FE000113C0496D497F6F167F494B15E0495D047F 153F495DA4495DB3B14B3677B55E>I<B4EB07FC91387FFF8049B512E04980010F804980 5B90397FC07FFE9038FE000F496D7E497F497F17805B815BA45BB3B1293677B53C>I<EC 0FFC91387FFF8049B512E0010714F84980013F14FF49819026FFF8077F48D9E0017F4890 3980007FF091C7123FD807FCEC0FF8000F8249140748486E7EA248486E7EA24980007F17 80A349157F00FF17C0AB6C6CEDFF80A36D5C003F1700A26D5C001F5E6D14076C6C4A5A6C 6C4A5A6D143F6C6D495A6C9039E001FFE06CD9F8075B6DB65A6D92C7FC6D5C010714F801 0114E06D6C1380DA0FFCC8FC32387CB63B>I<91393FC007FC903801FFF8010713FE011F EBFF874914C74914E790B612F7489038FC07FF48EBE001489038C0007F91C7123F485A49 141F485A160F485A16075B127F5BA3485AAB7F127FA27FA2123F7F160F6C7E6D141F6C6C 143F6D147F6C6D13FF6CEBE001ECF80F6C90B512F76C15E76D14C7011F14076D13FE0103 13F00100138091C7FCB3A42E4D7CB53C>113 D<B4EB01F0140F147F14FF13035B5B5B90 383FFE00EB7FF0EBFFC05C91C7FC13FCA25B5BA25BA25BA35BB3AD1C3677B528>I<9038 03FFC0013F13FC90B6FC4815E04815F05A5A3A1FFC007FE001F0130F4848130349130016 2048481400A57FA26C7E7F13FC381FFFE06C13FEECFFE06C14F86C14FE6C806C6C148001 1F14C0010714E0D9003F13F014019138007FF8151F150FED07FCA21503A512700078EC07 F8127C007F140F01E0EB3FF0D8FFFC13FF90B612E016C06C1580001F1500000314FCC66C 13F00107138026387DB62D>I<EB3FC0AFB712C0A726003FC0C7FCB3B26E134016C09039 1FF003E0ECF81F91B5FC6D14F0A26D14C06D14006D13F86D138024457EC32A>I<B46CEC FF80B3B3A35DA25DA25D6D5B007F5C6D137FD9FC01B5FC6CB55A6C5C6C14F06C14C06C49 C6FC26007FE090C7FC293677B43C>I<B46CEDFF80A26C6C4A1300A27F003F4B5AA27F00 1F4B5AA27F000F4B5AA26C6C4A5AA27F00034B5AA27F6C4B5AA26C6D5C16FFA26D6C91C7 FC5DA26D6C485AA36D6C485AA2010F5C14F8150F01075C14FC151F01035C14FE0101495A A3D900FF5B157FA2027F90C8FC5D6E5AA36E5AA231357EB436>I<B46CEDFF807F007F4B 1300A27F003F4B5A7F001F15076D5D120F4C5A7F12076D4A5A12034C5A7F7E6E495A7E5F 6D6C13FFA294C7FC6D6C5AA2D91FF05B15035EEB0FF8150701075C14FC0103495AA214FE 01015C151F130002FF5BA26E485AA2EC3FBF93C8FC141F15BE15FE140F5D1407A25DA25D A2140F5DA24A5AA2143F5DA24AC9FCA25C5CEA3001383E03FCEA3FFF5C5C5C6C5B5CD803 FECAFC314D7EB436>121 D E /Fn 16 121 df<BA12F0B33C137DB74D>45 D[<C212F8A48DA5C7000303C0C9123FF5007F1E0F0C0180787E1F1F8B8B1F018BA27A7E 8C8CA28CA28CA28C8EA28CA38CA38EA2E21FF0157FA67B7EA40A3F93C8FCA41C7FA21CFF A26363631B1F1B7F0807B5FC95B8FCA99538C00007F2007F1B1F1B07878787A21C7FA21C 3FA3FA7FC01C1FA2FAFF80A6571300A299CAFCA369A26AA22107A3210F6AA2211FA2213F A2575AA221FFA26868565BA26868207F9DB5FC555C1F071F1F1F7F0C03B6FC1E3F0B1FB7 FCC35AA66AA3>138 141 120 268 153 69 D[<BD12FCF4FFFCF5FFE01EFCF6FFC01FF0 1FFE797E20E0C700030380C86C15F80A0181E2003F14FF0B07810B0115E0776C80788078 80788078808A78818E7881A28E8B8EA37980A48EAA6AA3676AA26AA29CB65AA26A545D9F CAFC66545C545C545C545C9BB612C0535D0B074ACBFC0B3F5C52B612F00A7F15C095BBCC FC1FF81FC054CDFC66F6FF801FE00680C7000315F8E1003F14FE0A0F800A0315C0768176 6C807780778077808C7781898D898D898DA38A8DAD8DACA1EB1FC0A1EB3FE08D8AA37880 A1137FA114C078817818FF7C1580785F786F1500BB00FE6F6F5B796E495A7902FEEB1FFC 799139FFC07FF80D0792B55A0D015F796C5E0E1F5E0E034BC7FCD4001F14F8E7003F13C0 >163 144 120 269 173 82 D[<000FC312F8A6488EA304C0C7001F4AC7120103F8C8F0 000F03C01C0192C9737E02FC1E1F4A1E0702E08A4A8A4A8A4890CA757EA249203F49201F A349200FA2492007A4492003007F8EA4498CA848487A1380A6CC99C7FCB3B3B3B3AA030F BD12FCA9>145 140 120 267 162 84 D<93B512FC037FECFFF00207B8FC023F17E091B9 12F84918FE0107727E499126C0007F14E04901E0C7000F80496D020380496D020014FE6F 6F7F90B570806F6F8085486E6F807380A27380A28885886C5CA26D4982886D5B6D5B0107 13C0010190CAFC90CCFCA90603B7FC050FB8FC0403B9FC167F0307BAFC153F4AB7EA807F 020FEDE000023F02FCC7FC91B612E0010392C8FC4914FC011F14F04914C0495C90B548C9 FC485C485C485C485C5A5D485CA24891CAFCA3B6FC5CA397B6FCA461806C60F107EF6C6E 150F6F16CF6C183F6FDB7F8F806C6EDBFF0F14E06C02FCDA03FE15FE6C6E91260FFC0791 B5FC6C6E6CD93FF817806C923AF803FFF003013F91B6487E010FEF8000010394C77E0100 04FC141F021F03F0140702010380DA007F1400DA000701F8CDFC695F79DD71>97 D[<ED1FF0017FB5FCB7FCA9EA003F1307A27FB3B296383FFFC00607B512FE063FECFFE0 4DB712F8050716FF051F17C0057F17F094B5D8C00F8004F301FCC714FE04F701E0023F7F 93B50080020F804DC86C14E005F80301804D6F804D707F05808294CA804C717F4C7180A2 4C71808BA27680A28B88A28BA28BA3888BA52080B02000A56764A267A3676467A2525CA2 67647062704D91C7FC704D5BA2714C5B7193B55A05F04B5CDCBFF84B5CDC1FFC030F5C4B 6CB44B91C8FC7001C0027F5B4B6C01F00103B55A4BC601FF013F14F04B6D90B712C04B01 1F94C9FC4B6D16FC4B010316F092C86C15804A030F02F8CAFC90CB49CBFC>113 144 121 270 129 I[<F53FE098B6FC4FB7FCA996C77E1B0FA287B3B294383FFF80040F B512FC93B71280030716E0031F16F8037F16FE4AB9128702074AC66C13C7021F02E00107 13F74A91C890B6FC4A01FC153F49B548150F4902E081494A81494A814991CA7E495B8749 498390B548835A5D5AA2485CA25A5D5AA35AA25D5AA5B6FCB07EA57E81A37EA27EA2817E A26C80A26C626C6E5F636D7F6D6D94B6FC6D606D6D1607705D6D6E4B81010102F0157F6D 6E92B712FE6E01FE020301EF91B512806E6D6C011F13CF020FDAF801B5120F020391B612 FE6E17F86E6C16E0030F16800301EDFC00DB003F14E0040049C74AC8FC>113 144 120 270 129 100 D<94387FFFC0040FB6FC93B712E0030716FC031F16FF037F17C0 4AB912F00207DAF80380021F912680003F13FE4A49C7000F7F4A01F802038049B5486E80 4902C06E6C7F494A6F7F4991C9FC49727F4949707F4B84498490B548707F5A4B19804885 5D481CC086481CE05D5A871DF05AA25D5AA21DF887A2B6FCA392BBFCA51DF00380CDFCA7 7EA4817EA37EA2817EA26CF307F06FF00FF87E816C1B1F6F19F06C1B3F6D6DF07FE06D7F F4FFC06D6E4C13806D6E5E6D02F04C13006D6EEE1FFE6D6E4C5A6D6C01FFEEFFF86E02E0 02035B6E02FC021F5B02079126FFC003B55A6E92B7C7FC020060033F17F8030F17E00301 1780DB003F03FCC8FC040315C0DC000F01F8C9FC5D5F7ADD6A>I[<EC3FC0ECFFF0010313 FC497F497F498049804980A290B67EA24881A86C5DA26D5CA26D5C6D5C6D91C8FC6D5B6D 5B010013F0EC3FC091CAFCB3A3ED1FF0017FB5FCB7FCA9EA003F1307A27FB3B3B3B0B912 80A9>49 144 119 271 65 105 D[<ED1FF0017FB5FCB7FCA9EA003F1307A27FB3B3B3B3 B3B3ACB912C0A9>50 143 119 270 65 108 D<DB3FE0912601FFFC943801FFFC017FB5 031FD9FFE0041FEBFFE0B792B600FC93B612FC060303FF030315FF060F04C0020F16C006 3F04F0023F16F095B86C91B87E4DD9FC036E49D9FC03804DD9C0006E49D9C000804D48C7 003F6D4948C7003F7FDD0FF86EDB0FF880D8003F4B48714848830107DB3FC06E9126C03F C06E804D484E5A6D4BC86F48C881DCE1FE6FDAE1FE814D61DCE3F8DEF3F884DCE7F0F0F7 F04D6F4B81DCEFC0F0FFC0A2DCFF804F84A294C993C9FCA24C61A34C61A44C61B3B3AFB9 00E090B900E090B912E0A9B35D77DCC2>I<DB3FE0913803FFFC017FB5033FEBFFE0B792 B612F8060715FE061F6F7E4E16E095B87E4DD9FC03804DD9C000804D48C76C7FDD0FF880 D8003FDB1FE08201074B486E804D5A6D03FEC881DCE1FC815F04E385EEE7F04D81EEEFC0 A2DCFF8084A294C9FCA25EA35EA45EB3B3AFB9D8E001B912C0A9725D77DC81>I<94381F FFF00407B612C0047F15FC0303B87E030F17E0037F17FC4ABAFC4A9126FC007F80020F02 C0010714E04A49C880027F01F8033F13FC91B5486F7F4902C003077F494A6F804991C96C 80494970804949717F49874949717FA290B548717F48884B83481D80A2481DC04B83481D E0A2481DF0A3484A7114F8A4481DFCA5B61BFEAF6C1DFCA56C6E4D14F8A36C1DF0A36C1D E06F5F6C1DC0A26C6E4D1480A26C1D006F5F6C646D6D4D5B6F94B5FC6D636D6D4C5C6D6E 4B5C6D6E4B5C6D02F0031F5C6D6E4B91C7FC6D6C01FE92B512FC6ED9FFC001075C6E02FC 017F5C020791B812C0020196C8FC6E6C17FC031F17F003031780DB007F03FCC9FC040715 C0DC001F01F0CAFC675F7ADD74>I<92261FFFF814F80203B638C001FC023FEDFC0791B8 121F010317FF130F013F9038F8001F4990C8FCD9FFF8153F4801E0150F48491503484981 4890CAFC197F4848173F191F485AA2007F180FA31907487EA27FA28002E0705A6E93C8FC 14FC14FF15F06CECFF8016FCEEFFF06CEEFF8018F06C17FE727E6C18E0856C18FC6C846C 727E6C856D84011F846D841303010084023F83140F020183EC001FDB007F16801603DC00 0F15C01700183F060F14E0007F1703486C82727E857F85857FA2857F1BC07FA27F1B806D 5F7F1B006E5E6E5F6E163F6E4C5A02FC4C5A6E03035B6E6C4A5B03F0023F5B03FF0107B5 5A01F991B7C7FCD9F07F16FCD9E01F16F0D9800716C0D9000193C8FC48D9003F14F8007C 020349C9FC4B5F78DD5C>115 D[<ED03FEA81507A5150FA4151FA3153FA2157FA215FFA2 5CA25C5CA25C5C5C5C91B5FC13035B131F017F91B712F00007BAFCBBFCA7C74AC9FCB3B3 AAF101FFB1616E17FE82A219076E17FC836EEE0FF871131F6E6EEB3FF071137F6E6EEBFF E06EDAFF0313C06E92B512806E1700033F5D6F5D03075D030015E0041F1480040001FCC7 FC>72 132 124 258 90 I<007FB86C49B712FEA9C792C9000F02C0C7FC6E6E030101F0 C8FC715F6E6E4B5B6E6E4B5B6E4E90C9FC6E6E5E71151F6E6E4B5A6E6E4B5A6E4E5A6F6E 495B72495B6F6E495B6F806F6E4990CAFC6F4C5A72495A6F6E495A6F6E495A6F03815B70 5E7014C307E75B7091B5CBFC705D705D705D6282705D715C838671807180718083718086 4D814D815F4D81874D814D81DDFFF3804C13E14C01C1804C0180814E6C804C6E804C487F 4C48824C486D804C486D804B496D804B497F73804B49834B90C86C804B486F804B48814B 486F804B48844C6F804A71804A496F804A49814A90CA814A487180023F7280010FB500E0 7080B8031FB812E0A9735C7CDB7B>120 D E /Fo 8 117 df<93B57E031F14FC92B77E02 0316F0020F16FC023F16FF4A8349B5D8800314E04901F8C7003F7F4901C0020F7F4990C8 00037FD91FFC6F7F49486F6C7E137F4A7013804948827313C05A4A821BE05AA285487FA3 8080806E5E8003C017C08103F85D03FE17806F6C5C6C6F160004F05C04FC4A5A6C6F5D70 6C13FFDDE0015B6CDCF8035BDDFC0F13C06DDBFF1F5B6D93B5C7FC19FC6D17F06D5F6D17 806D17E06D836D6C16FC6E16FF020F836E17E06E83020F83023F8391B97E4984010701F0 178049D9C07F16C0013FD9801F16E049EB00074948010116F048497F4849023F15F84849 140F4A6E15FC48160148496E6C14FE4A151F488391C9120348050014FF193F49838500FF 84854983A28586A3861BFEA27FA2007F1AFC7F1A7F1BF86C7FF2FFF06C7F6E4C13E06C6D 4C13C06C6D5E6E4C13806C6D4C13006C6D6CED7FFE6C02E04A485A013F01FC020F13F06D 9026FFC001B55A010791B712806D95C7FC010017FC021F16F002071680DA007F02FCC8FC 030191C9FC507378F061>56 D<96267FFFE01670063FB6ED01F80503B700F01403053F04 FC14074CB96C130F040706E0131F043F72133F93BA00FC137F0303DC00076D13FF030F03 C09039003FFF814B02FCC8000713C3037F02E0030113F792B600806F6CB5FC02034ACA12 1F4A02F8834A02E0834A4A1701027F4A8391B548CC7E494A85495C4C854988494A85494A 85495C8A4991CDFC90B54886A2484A1B7FA2481E3F5D481E1F5D5A1F0FA2485CA3481E07 5DA2F703F0489BC7FCA45DA2B6FCB27EA281A47EA2F703F06FF307F87EA36C80A21F0F7E 6F1CF07E6F1B1F7E20E06C6E1B3F816DF57FC06D80F7FF806D806D6E4F13006D6E616D52 5A826D6E4F5A6D6E4F5A6E6D6C4E5A021F6EF0FFE06E6E4D5B6E02F84D5B6E02FE050F90 C7FC02006E6CEE3FFE6F02F0EEFFFC031F02FE03035B6FDAFFC0021F13E0030303FF0103 B55A030093B7C8FC043F18FC040718F0040118C0DC003F94C9FC050316F8DD003F1580DE 007F01F0CAFC757A75F78C>67 D<92383FFFF80207B612E0027F15FC49B87E010717E001 1F83499026F0007F13FC4948C7000F7F90B502036D7E486E6D806F6D80727F486E6E7F84 86727FA28684A26C5C72806C5C6D90C8FC6D5AEB0FF8EB03E090CAFCA70507B6FC041FB7 FC0303B8FC157F0203B9FC021FECFE0391B612800103ECF800010F14C04991C7FC017F13 FC90B512F04814C0485C4891C8FC485B5A485B5C5A5CA2B5FC5CA360A36E5DA26C5F6E5D 187E6C6D846E4A48806C6D4A4814FC6C6ED90FF0ECFFFC6C02E090263FE07F14FE000191 39FC03FFC06C91B6487E013F4B487E010F4B1307010303F01301D9003F0280D9003F13FC 020101F8CBFC57507ACE5E>97 D<93387FFF80030FB512FC037FECFF804AB712E0020716 F8021F16FE027FD9F8077F49B5D8C000804991C7003F13E04901FC020F7F49496E7F4949 8049496E7F49496E7F90B55A48727E92C914804884485B1BC048841BE0485BA27313F05A A25C5AA21BF885A2B5FCA391BAFCA41BF002F8CCFCA67EA3807EA47E806CF103F0F207F8 6C7F1A0F6C6E17F06C191F6F17E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13806D6D4B13 006D6D6CEC0FFE6D02E0EC3FFC6D02F8ECFFF86D9126FFC00F5B023F91B65A020F178002 034CC7FC020016F8031F15E0030392C8FCDB000F13E04D507BCE58>101 D<903801FFFCB6FCA8C67E131F7FB3AD95380FFFE095B512FE05036E7E050F15E0053F15 F84D81932701FFF01F7F4CD900077FDC07FC6D80DC0FF06D80DC1FC07F4C48824CC8FC04 7E6F7F5EEDFDF85E03FF707F5EA25EA25EA293C9FCA45DB3B3A6B8D8E003B81280A86178 79F76C>104 D<902601FFFCEC7FFEB6020FB512F0057F14FE4CB712C0040716F0041F82 047F16FE93B5C66C7F92B500F0010F14C0C66C0380010380011F4AC76C806D4A6E8004F0 6F7F4C6F7F4C6F7F4C8193C915804B7014C0861DE0A27414F0A27414F8A47513FCA57513 FEAF5113FCA598B512F8A31DF0621DE0621DC0621D806F5E701800704B5B505B704B5B70 92B55A04FC4A5C704A5C706C010F5C05E0013F49C7FC9227FE7FFC01B55A70B712F0040F 16C0040393C8FC040015F8053F14C0050301F0C9FC94CCFCB3A6B812E0A85F6F7ACD6C> 112 D<902601FFF8EB07FEB691383FFFC094B512F00403804C14FE4C8093261FFC3F1380 93263FE07F13C0DC7F80B5FCC66C5D011FDAFE0114E06DEBF9FC16F815FB16F016E015FF 16C07114C05E72138095381FFE0093C76C5AF001E095C8FCA25DA65DB3B3A2B812F8A843 4E7ACD4F>114 D<15FFA75CA55CA45CA25CA25CA25CA25C91B5FCA25B5B5B131F5B90B9 FC120FBAFCA6D8000791C9FCB3B3A3F01FE0AE183F7014C07F187F7014806D16FF826D4B 13006E6D485AEEFE0F6E90B55A020F5D6E5D020115C06E6C5C031F49C7FC030113F03B6E 7CEC4B>116 D E /Fp 82 125 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901 FC90383FF03FD907F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00 EF003E01FE6D91C7FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339 407FBF35>11 D<4AB4FC021F13C091387F01F0903901FC0078D907F0131C4948133E4948 13FF49485A137F1400A213FE6F5A163893C7FCAA167FB8FCA33900FE00018182B3AC486C ECFF80007FD9FC3F13FEA32F407FBF33>I<4AB47E021F13F791387F00FFEB01F8903807 F001EB0FE0EB1FC0EB3F80137F14008101FE80AEB8FCA3C648C77EB3AE486CECFF80007F D9FC3F13FEA32F407FBF33>I<4AB4ECFF80021FD9C00F13E0913B7F01F03F80F8903C01 F80078FE003CD907F0D93FF8130E49484948131F49484948EB7F804948484913FF137F02 005CA201FE92C7FC6FED7F0070141C96C7FCAAF13F80BBFCA3C648C76CC7FC197F193FB3 AC486C4A6CEB7FC0007FD9FC3FD9FE1FB5FCA348407FBF4C>I<001E130F397F803FC000 FF137F01C013E0A201E013F0A3007F133F391E600F3000001300A401E01370491360A300 0114E04913C00003130101001380481303000EEB070048130E0018130C0038131C003013 181C1C7DBE2D>34 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312 011380120313005A120E5A1218123812300B1C79BE19>39 D<1430147014E0EB01C0EB03 801307EB0F00131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FCA25A A3123E127EA6127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA21201 7F12007F13787F133E131E7FEB07801303EB01C0EB00E014701430145A77C323>I<12C0 7E12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA21480130FA214 C0A3130714E0A6130314F0B214E01307A614C0130FA31480A2131F1400A25B133EA25BA2 137813F85B12015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>I<1506150FB3 A9007FB912E0BA12F0A26C18E0C8000FC9FCB3A915063C3C7BB447>43 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A 120E5A1218123812300B1C798919>I<B512FEA617067F961E>I<121EEA7F80A2EAFFC0A4 EA7F80A2EA1E000A0A798919>I<ED0180ED03C01507A21680150FA216005DA2151E153E A2153C157CA2157815F8A25D1401A25D1403A25D1407A25D140FA24AC7FCA2141E143EA2 143C147CA2147814F8A25C1301A25C1303A25C1307A25C130FA291C8FC5BA2131E133EA2 5BA2137813F8A25B1201A25B1203A25B1207A25B120FA290C9FC5AA2121E123EA2123C12 7CA2127812F8A25A1260225B7BC32D>I<EB01FE90380FFFC090383F03F090387C00F849 137C48487F48487F4848EB0F80A2000F15C04848EB07E0A3003F15F0A290C712034815F8 A64815FCB3A26C15F8A56C6CEB07F0A3001F15E0A36C6CEB0FC0A26C6CEB1F8000031500 6C6C133E6C6C5B017C5B90383F03F090380FFFC0D901FEC7FC263F7DBC2D>I<EB01C013 031307131F137FEA07FFB5FC139FEAF81F1200B3B3ACEB7FF0B612F8A31D3D78BC2D>I< EB07FC90383FFF8090B512E03903F01FF83907C007FC390F0001FE001E6D7E001C158000 3CEC7FC05AED3FE01270B4FC6DEB1FF07FA56C5A6CC7FC120CC813E0153FA216C0157F16 8015FF16004A5A5D4A5A4A5A5D4A5A4A5A4AC7FC147E147C5C495A495A495A495A49C712 70133E133C5B4914E0485A485A485A48C7120148B6FCA25A4815C0B7FCA3243D7CBC2D> I<EB07FC90383FFF809038F80FE03901E003F839078001FCD80F007F000E6D7E001E1580 D81F80137F486C14C07FA27F5BA2121F6C5AC8138015FF1600A24A5AA24A5A5DEC07E04A 5A023FC7FCEB1FFCECFF809038000FE0EC07F86E7E6E7E6E7E1680ED7FC0A216E0153FA2 16F0A2120C123F487E487EA316E0A249137F6CC713C01278EDFF807E6C4913006C495A39 07C007FC3903F80FF0C6B55A013F1380D907F8C7FC243F7CBC2D>I<150E151E153EA215 7EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01C0A2EB0380EB0700 A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00AC 4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5FC5D5D5D15C092C7 FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F8496C7E49137E497F 90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA416E090C7121F12FC 007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6B5 5A013F90C7FCEB07F8243F7CBC2D>I<EC1FE0ECFFF8903803F03E90380FC00F90391F00 0780133E017EEB1FC049133F4848137F12035B12074848EB3F80ED1F00001F91C7FC5BA2 123FA3485AA214FE903887FF8039FF8F07E090389C01F09038B800FC01B0137E13F0497F 16804914C0A2ED1FE0A34914F0A5127FA6123F6D14E0A2121FED3FC0A26C6C1480A20007 EC7F006C6C137E6C6C5B6C6C485A90387E07F06DB45A010F1380D903FCC7FC243F7CBC2D >I<1238123C123F90B612FCA316F85A16F016E00078C712010070EC03C0ED078016005D 48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8A2 13015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D>I<EB03FC90 381FFF8090387C07E09038F001F83901E0007C48487F48487F48C7FCED0F80121E16C000 3E1407A4123FA26DEB0F807F6C6C131F6D140001FC133E6C6C5B9038FF80786C6D5A6CEB F3E06CEBFF806C91C7FC133F6D13C06D7F013F13F801787F48486C7E3903E01FFF48486C 1380260F800313C048487E489038007FE0003E143F007E141F007CEC0FF01507481403A3 1501A46C15E0007C1403A2007E15C06C14076CEC0F806DEB1F006C6C133ED807F05B3901 FC03F86CB512E0011F1380D903FCC7FC243F7CBC2D>I<EB03FCEB1FFF90387E07C09038 FC03F048486C7E48486C7E4848137C000F147E4848137F81003F15805B007F15C0A2151F 12FF16E0A516F0A5127F153FA36C7EA2001F147F120F6C6C13FF6D13DF000313013900F8 039F90387E0F1FD91FFE13E0EB07F090C7FCA2ED3FC0A41680157FD80F801400487E486C 13FEA24A5A5D49485AEB8007391E000FE0001F495A260FC07FC7FC3803FFFE6C13F83800 3FC0243F7CBC2D>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EA FFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FC B3121E127FEAFF80A213C0A4127F121E1200A412011380A3120313005A1206120E120C12 1C5A1230A20A3979A619>I<EB1FF890B5FC3903E01FC0390F0007F0001EEB03F848EB01 FC4814FE140000FE14FF7E7FA46CC7FC123EC7EA01FEA2EC03FCEC07F815F0EC0FC0EC1F 80EC3F00143E5C147814F85C13015CA2495AA25CAB91C7FC90C8FCA8EB0780EB1FE0A249 7EA46D5AA2EB078020407BBF2B>63 D<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A291 3801C7FC15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D 7EA349486D7E91B6FCA249819138800001A249C87EA24982010E157FA2011E82011C153F A2013C820138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D41 7DC044>65 D<B712FCEEFF8017F00001903980000FF86C6CC7EA03FE707E701380EF7FC0 EF3FE0A2EF1FF0A218F8A3170F171FA318F0A2EF3FE0177F18C0EFFF804C1300EE03FCEE 0FF8EE7FE091B6C7FC17E091C7EA07FCEE01FE933800FF80EF7FC0EF3FE0EF1FF018F817 0F18FC1707A218FEA718FC170FA2EF1FF818F0173FEF7FE0EFFFC00403138048486C9038 0FFE00B85A17E094C7FC373E7DBD40>I<DB3FF01306912603FFFE130E020F9038FF801E 913A3FF007E03E9139FF8000F8D903FEC7EA7C7ED907F8EC1EFE4948140FD93FE0140749 481403495A91C812014848150012034848167E5B000F173EA24848161EA2123F5B180E12 7FA349160012FFAC127F7F180EA2123FA27F001F171E181C6C7EA20007173C6D16386C6C 1678000117706C6C16F06EEC01E06D6C15C06D6C1403D90FF0EC07806D6CEC1F00D903FE 143E902600FF8013F891393FF007F0020FB512C0020391C7FC9138003FF037427BBF42> I<B712FCEEFF8017E000019039C0001FF86C6C48EB03FEEE00FF717E717EEF0FE084717E 717E170184717EA21980187F19C0A3F03FE0A519F0AB19E0A5F07FC0A21980A218FF1900 4D5AA24D5A6017074D5A4D5AEF7FC04DC7FCEE03FE48486CEB1FF8B85A178004FCC8FC3C 3E7DBD45>I<B912E0A300019038C000016C6C48EB001FEF0FF01703A217011700A31870 A41838161CA41800A2163CA2167C16FC150391B5FCA3EC80031500167C163CA2161CA218 07A3180E93C7FCA4181E181CA2183CA2187CA218F8170117031707171F48486CEB01FFB9 12F0A3383E7DBD3E>I<B91280A300019038C000036C6C48EB007FEF1FC0170F1707A217 03A31701A4EF00E0A21638A31800A31678A216F81501150791B5FCA3EC80071501150016 78A21638A693C8FCAF3801FFE0B612F0A3333E7DBD3B>I<DB3FE0130C912603FFFE131C 021F9038FF803C913A7FF00FC07C9139FF0001F0D903FC90380078FC4948143DD91FE014 1F4948140F4948140701FF15034890C8FC491501485A000716005B000F177C5B001F173C A2485AA2181C127FA25B95C7FC12FFAB041FB512F0127FA26D9139000FFE00EF03FC123F A27F121FA26C7EA212077F12036C7E7F6C7F6D6C14076D7E6D6C140FD907F8141ED903FE EC3C7C902600FF80EBF83C913A7FF007F01C021FB5EAC00C020391C8FC9138003FF03C42 7BBF47>I<B6D8C01FB512F8A3000101E0C7383FFC0026007F80EC0FF0B3A691B7FCA302 80C7120FB3A92601FFE0EC3FFCB6D8C01FB512F8A33D3E7DBD44>I<B612F0A3C6EBF000 EB3FC0B3B3B2EBFFF0B612F0A31C3E7EBD21>I<B600C090387FFFFCA3000101E0C7000F 138026007F80913807FE0018F818E0604D5A4DC7FC173E5F5F4C5A4C5A4C5A4C5A4CC8FC 163E5E5E4B5A4B5AED07804B7E151F4B7E4B7E15FF913881EFF8913883C7FCEC87879138 8F03FE91389E01FF14BCDAF8007F4A6D7E5C4A6D7E4A6D7EA2707E707EA2707E707EA270 7F717E84173F717E717EA2717E848419802601FFE04A13C0B600C090B6FCA3403E7DBD47 >75 D<B612F8A3000101E0C9FC38007F80B3B0EF0380A517071800A45FA35FA25F5F5F4C 5A160748486C133FB8FCA3313E7DBD39>I<B500C093383FFFF0A300016D93387FF800D8 007F18E0D977F016EFA3D973F8ED01CFA2D971FCED038FA3D970FEED070FA26E150E80A2 6E6C141CA36E6C1438A26E6C1470A36E6C14E0A26E6CEB01C0A36E6CEB0380A36E6CEB07 00A2037F130EA36F6C5AA26F6C5AA36F6C5AA25FED07F0A2923803F9C0A36FB45AA26F90 C7FCA213F8486C147ED807FFEF3FF8B500F8013C011FB512F0A34C3E7DBD53>I<B56C91 B512F88080D8007F030713006EEC01FC6E6E5A1870EB77FCEB73FEA2EB71FF01707FA26E 7E6E7EA26E7E6E7EA26E7E6E7EA26E7E6E7FA26F7E6F7EA26F7E6F7EA26F7E6F7EA26F7E 6F1380A2EE7FC0EE3FE0A2EE1FF0EE0FF8A2EE07FCEE03FEA2EE01FF7013F0A2177F173F A2171F170FA2170701F81503487ED807FF1501B500F81400A218703D3E7DBD44>I<ED7F E0913807FFFE91391FC03F8091397E0007E04948EB03F8D907F0EB00FE4948147F49486E 7E49486E7E49C86C7E01FE6F7E00018349150300038348486F7EA248486F7EA2001F1880 49167F003F18C0A3007F18E049163FA300FF18F0AC007F18E06D167FA4003F18C0A26C6C EEFF80A36C6C4B1300A26C6C4B5A00035F6D150700015F6C6C4B5A6D5E6D6C4A5A6D6C4A 5A6D6C4AC7FC6D6C14FED901FCEB03F8D9007FEB0FE091391FC03F80912607FFFEC8FC91 38007FE03C427BBF47>I<B712F8EEFF8017E000019039C0003FF86C6C48EB07FCEE01FE 707EEF7F80EF3FC018E0A2EF1FF0A218F8A818F0A2EF3FE0A218C0EF7F80EFFF004C5AEE 07FCEE3FF091B612C04CC7FC0280C9FCB3A73801FFE0B612C0A3353E7DBD3E>I<ED7FE0 913807FFFE91391FC03F8091397F000FE0D901FCEB03F8D907F0EB00FE4948147F49486E 7E49486E7E49C86C7E498248486F7E49150300038348486F7EA2000F834981001F1880A2 4848EE7FC0A3007F18E0A249163FA200FF18F0AC007F18E0A26D167FA3003F18C0A26C6C EEFF80A3000F18006D5D0007DA0F805B6C6C90393FE003FCED70706C6C496C485A6C6C48 486C485A017FD9800E5BD93F819038061FC0D91FC19038073F80D90FE14AC7FCD907F1EB 03FE902601FDC013F8903A007EE007E091271FF03FC013180207B5FC9139007FE1E0DB00 01143883711378A2706C13F0EFFF0318FFA27113E0A37113C0711380711300715AEF01F8 3D527BBF47>I<B712C016FCEEFF800001D9C00013E06C6C48EB1FF0EE07FCEE01FE707E 84717EA2717EA284A760177F606017FF95C7FCEE01FCEE07F8EE1FE0EEFF8091B500FCC8 FC16F091388001FCED003FEE1FC0707E707E83160383160183A383A484A4F0C004190EA2 8218E0057F131E2601FFE0161CB600C0EB3FF094381FF83805071370CA3801FFE0943800 3F803F407DBD43>I<D907FC130C90391FFF801C017FEBF03C3901FC03F83A03F0007E7C D807C0EB1FFC4848130F001F140748C71203003E1401007E1400A2007C157C12FCA2163C A36C151CA27EA26C6C14007F7FEA3FF8EBFF806C13F86CEBFF806C14F06C14FC6C14FF6C 15C0013F14E0010714F0EB007F020713F89138007FFC150FED07FE15031501ED00FFA200 E0157FA3163FA27EA3163E7E167E6C157C6C15FC6C15F86D13016DEB03F06DEB07E0D8F9 FCEB0FC03AF07F803F8090391FFFFE00D8E00713F839C0007FC028427BBF33>I<003FB9 1280A3903AF0007FE001018090393FC0003F48C7ED1FC0007E1707127C00781703A30070 1701A548EF00E0A5C81600B3B14B7E4B7E0107B612FEA33B3D7DBC42>I<B600C090B512 F8A3000101E0C70007130026007F80EC01FC715A1870B3B3A4013F16F06E5DA21701011F 5E80010F15036E4A5A010793C7FC6D6C5C6D6C141E6D6C5C027F14F86E6C485A91390FF0 0FE00203B51280020049C8FCED1FF03D407DBD44>I<B691380FFFFEA3000301E0020113 E06C01809138007F806CEF3F00017F163E181C6E153C013F1638A26E1578011F1670A26D 6C5DA26E140101075EA26E140301035EA26D6C4AC7FCA2806D150EA26F131E027F141CA2 6F133C023F1438A26E6C5BA26F13F0020F5CA2EDF80102075CA26E6C485AA2EDFE070201 91C8FCA26F5A6E130EA2ED7F9CA216DCED3FF8A36F5AA36F5AA26F5AA36F5A3F407EBD44 >I<B500FE017FB5D88007B5FCA3000301C0010101E0C713F86C90C849EC3FE07148EC0F 807E7215006E143F017F190E84A26D6C60A24D7E6D6C60A2EFE7F86D6C60A2933801C3FC 6E18F001076104037F6E0281140101036104077F17006D6C4D5AA2040EEB7F806D6C4DC7 FCA24CEB3FC0DA7F80160EA24CEB1FE003C0161E023F171C047814F0DBE070010F133C02 1F173804F014F84C1307DA0FF05EA2DBF1C0EB03FCDA07F95EA2DBFB80EB01FEDA03FF6F 5AA293C8FCA26E5FA24B157F020094C8FCA24B81037C153EA20378151E0338151C58407E BD5D>I<007FB5D8C003B512E0A3C649C7EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC 171E6D6C141C6D6C143C5F6D6C14706D6D13F04C5ADA7FC05B023F13036F485ADA1FF090 C8FC020F5BEDF81E913807FC1C163C6E6C5A913801FF7016F06E5B6F5AA26F7E6F7EA282 82153FED3BFEED71FF15F103E07F913801C07F0203804B6C7EEC07004A6D7E020E6D7E5C 023C6D7E02386D7E14784A6D7E4A6D7F130149486E7E4A6E7E130749C86C7E496F7E497E D9FFC04A7E00076DEC7FFFB500FC0103B512FEA33F3E7EBD44>I<B66C0103B51280A300 0101F0C8EBF8006C6C48ED3FC0725A013F041EC7FC6D7E606D6C15386D6C1578606D6C5D 6E14016D5E6D6D1303606E6C49C8FC6E6C5B170E6E6C131E171C6E6C5B6E6C137817706E 6C13F06F5B6E13016EEB83C05FED7FC7DB3FE7C9FC16EFED1FFE5E150F6F5AB3A4ED1FFC 020FB512FCA3413E7FBD44>I<003FB712F8A391C7EA1FF013F801E0EC3FE00180EC7FC0 90C8FC003EEDFF80A2003C4A1300007C4A5A12784B5A4B5AA200704A5AA24B5A4B5AA2C8 485A4A90C7FCA24A5A4A5AA24A5AA24A5A4A5AA24A5A4A5AA24990C8FCA2495A4948141C A2495A495AA2495A495A173C495AA24890C8FC485A1778485A484815F8A2484814011603 4848140F4848143FED01FFB8FCA32E3E7BBD38>I<EAFFFCA4EAF000B3B3B3B3ABEAFFFC A40E5B77C319>I<486C13C00003130101001380481303000EEB070048130E0018130C00 38131C003013180070133800601330A300E01370481360A400CFEB678039FFC07FE001E0 13F0A3007F133FA2003F131F01C013E0390F0007801C1C73BE2D>I<EAFFFCA4EA003CB3 B3B3B3ABEAFFFCA40E5B7FC319>I<EB0FF8EBFFFE3903F01F8039078007E0000F6D7E90 38E001F8D81FF07F6E7EA3157F6C5AEA0380C8FCA4EC1FFF0103B5FC90381FF87FEB7F80 3801FC00EA07F8EA0FE0485A485AA248C7FCEE038012FEA315FFA3007F5BEC03BF3B3F80 071F8700261FC00E13CF3A07F03C0FFE3A01FFF807FC3A003FC001F0292A7DA82D>97 D<EA01FC12FFA3120712031201B1EC03FC91381FFF8091387C07E09039FDE001F09039FF C000FC4A137E91C77E49158049141F17C0EE0FE0A217F0A2160717F8AA17F0A2160FA217 E0161F17C06D1580EE3F006D5C6E13FE9039F3C001F89039F1E003F09039E0780FC09026 C03FFFC7FCC7EA07F82D407EBE33>I<49B4FC010F13E090383F00F8017C131E4848131F 4848137F0007ECFF80485A5B121FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3 003FEC01C07F001F140316806C6C13076C6C14000003140E6C6C131E6C6C137890383F01 F090380FFFC0D901FEC7FC222A7DA828>I<ED01FC15FFA3150715031501B114FF010713 E190381F80F990387E003D49131FD803F81307485A49130348481301121F123F5B127FA2 90C7FCA25AAA7E7FA2123FA26C7E000F14037F000714076C6C497E6C6C497ED8007C0179 13F890383F01F190380FFFC1903A01FE01FC002D407DBE33>I<EB01FE90380FFFC09038 3F03F09038FC01F848486C7E4848137E48487F000F158049131F001F15C04848130FA212 7F16E090C7FCA25AA290B6FCA290C9FCA67EA27F123F16E06C7E1501000F15C06C6C1303 6DEB07806C6C1400C66C131E017E5B90381F80F8903807FFE0010090C7FC232A7EA828> I<EC1FC0EC7FF8903801F83C903807E07E90380FC0FFEB1FC1EB3F811401137FEC00FE01 FE137C1500AEB6FCA3C648C7FCB3AE487E007F13FFA320407EBF1C>I<167C903903F801 FF903A1FFF078F8090397E0FDE1F9038F803F83803F001A23B07E000FC0600000F6EC7FC 49137E001F147FA8000F147E6D13FE00075C6C6C485AA23901F803E03903FE0FC026071F FFC8FCEB03F80006CAFC120EA3120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A 0FC0001FFC48C7EA01FE003E140048157E825A82A46C5D007C153E007E157E6C5D6C6C49 5A6C6C495AD803F0EB0FC0D800FE017FC7FC90383FFFFC010313C0293D7EA82D>I<EA01 FC12FFA3120712031201B1EC01FE913807FFC091381E07E091387803F09138E001F8D9FD C07F148001FF6D7E91C7FCA25BA25BB3A6486C497EB5D8F87F13FCA32E3F7DBE33>I<EA 01E0EA07F8A2487EA46C5AA2EA01E0C8FCACEA01FC127FA3120712031201B3AC487EB512 F0A3143E7DBD1A>I<1478EB01FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313 017F147FB3B3A5123E127F38FF807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380F FF803801FC00185185BD1C>I<EA01FC12FFA3120712031201B292B51280A392383FFC00 16E0168093C7FC153C5D5D4A5AEC07C04A5A4AC8FC143E147F4A7E13FD9038FFDFC0EC9F E0140F496C7E01FC7F496C7E1401816E7E81826F7E151F826F7EA282486C14FEB539F07F FFE0A32B3F7EBE30>I<EA01FC12FFA3120712031201B3B3B1487EB512F8A3153F7DBE1A> I<2701F801FE14FF00FF902707FFC00313E0913B1E07E00F03F0913B7803F03C01F80007 903BE001F87000FC2603F9C06D487F000101805C01FBD900FF147F91C75B13FF4992C7FC A2495CB3A6486C496CECFF80B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF 903807FFC091381E07E091387803F000079038E001F82603F9C07F0001138001FB6D7E91 C7FC13FF5BA25BB3A6486C497EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F 81F890387E007E01F8131F4848EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2 003F15FCA248C812FEA44815FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6C EB07E06C6CEB0FC06C6CEB1F80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A 7EA82D>I<3901FC03FC00FF90381FFF8091387C0FE09039FDE003F03A03FFC001FC6C49 6C7E91C7127F49EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC0 6D1580EE7F007F6E13FE9138C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891 C9FCAD487EB512F8A32D3A7EA733>I<02FF131C0107EBC03C90381F80F090397F00387C 01FC131CD803F8130E4848EB0FFC150748481303121F485A1501485AA448C7FCAA6C7EA3 6C7EA2001F14036C7E15076C6C130F6C7E6C6C133DD8007E137990383F81F190380FFFC1 903801FE0190C7FCAD4B7E92B512F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787C ECE1FE3807F9C100031381EA01FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA3 1F287EA724>I<90383FC0603901FFF8E03807C03F381F000F003E1307003C1303127C00 78130112F81400A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8 003F13E0010313F0EB001FEC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB 03C0903880078039F3E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA2 13FCA2120112031207001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB 7F03013F138090381F8700EB07FEEB01F81B397EB723>I<D801FC14FE00FF147FA30007 14030003140100011400B3A51501A31503120015076DEB06FF017E010E13806D4913FC90 381FC078903807FFE00100903880FE002E297DA733>I<B539E00FFFE0A32707FE000313 006C48EB00FC5E00015D7F00005DA26D13016D5CA26D6C485AA2ECC007011F91C7FCA290 380FE00EA2ECF01E0107131CA26D6C5AA2ECFC7801011370A2ECFEF001005BA2EC7FC0A3 6E5AA26EC8FCA3140E2B287EA630>I<B53BC3FFFE03FFF8A3290FFE003FE00013C06C48 6D48EB3F806C4817006D010F141E00016F131C15076D163C00004A6C1338A2017F5E4B7E 151DD93F805DED3DFC1538D91FC04A5AED78FE9238707E03D90FE0017F5BEDE03F02F014 0701070387C7FC9138F1C01F02F9148F010315CE9138FB800F02FF14DE6D15FCED00076D 5DA24A1303027E5CA2027C1301023C5C023813003D287EA642>I<B539F01FFFE0A30003 D9C00F1300C690388007F8D97F0013E002805BD93FC05B011F49C7FC90380FE00EECF01E 6D6C5A01035B6D6C5A6E5AEB00FF6E5A6E5A81141F814A7E81147BECF1FC903801E1FEEC C0FF01037F49486C7ED90F007F011E6D7E013E130F496D7E01FC80486C80000F4A7EB539 803FFFF8A32D277FA630>I<B539E00FFFE0A32707FE000313006C48EB01FC6F5A00015D 7F00005DA2017F495AA2EC8003013F5CA26D6C48C7FCA26E5A010F130EA26D6C5AA2ECF8 3C01031338A26D6C5AA2ECFEF001005BA2EC7FC0A36E5AA36EC8FCA2140EA2141E141C14 3C1438A2147800181370127EB45BA2495AA248485AD87E07C9FCEA780EEA3C3CEA1FF8EA 07E02B3A7EA630>I<001FB61280A2EBE0000180140049485A001E495A121C4A5A003C49 5A141F00385C4A5A147F5D4AC7FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F 80EBFF005A5B484813071207491400485A48485BA248485B4848137F00FF495A90B6FCA2 21277EA628>I<B812F0A22C0280982D>I<BE12C0A25A0280985B>I E /Fq 46 122 df<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A31201 1380120313005A1206120E5A5A5A12600B1D78891B>44 D<B612C0A61A067F9721>I<12 1EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A78891B>I<14FF010713E090381F81F89038 3E007C01FC133F4848EB1F8049130F4848EB07C04848EB03E0A2000F15F0491301001F15 F8A2003F15FCA390C8FC4815FEA54815FFB3A46C15FEA56D1301003F15FCA3001F15F8A2 6C6CEB03F0A36C6CEB07E0000315C06D130F6C6CEB1F806C6CEB3F00013E137C90381F81 F8903807FFE0010090C7FC28447CC131>48 D<143014F013011303131F13FFB5FC13E713 071200B3B3B0497E497E007FB6FCA3204278C131>I<49B4FC010F13E0013F13FC9038FE 01FE3A01F0007F80D803C0EB3FC048C7EA1FE0120EED0FF0EA0FE0486C14F8A215077F5B A26C48130FEA03C0C813F0A3ED1FE0A2ED3FC01680ED7F0015FE4A5AEC03F0EC1FC0D90F FFC7FC15F090380001FCEC007FED3F80ED1FC0ED0FE016F0ED07F816FC150316FEA21501 16FFA3121EEA7F80487EA416FE491303A2007EC713FC00701407003015F80038140F6C15 F06CEC1FE06C6CEB3FC0D803E0EB7F803A01FE01FE0039007FFFF8010F13E0010190C7FC 28447CC131>51 D<ED0380A21507150FA2151F153FA2157F15FFA25CEC03BF153F140714 06140C141C141814301470146014C013011480EB03005B13065B131C13185B1370136013 E0485A5B120390C7FC1206120E120C5A123812305A12E0B812C0A3C8383F8000ADEDFFE0 027FEBFFC0A32A437DC231>I<000615C0D807C0130701FCEB7F8090B612005D5D5D15E0 158026063FFCC7FC90C9FCAE14FF010713C090381F01F090383800FC01F0137ED807C07F 49EB1F8016C090C7120F000615E0C8EA07F0A316F81503A216FCA5123E127F487EA416F8 90C712075A006015F0A20070140F003015E00038EC1FC07E001EEC3F806CEC7F006C6C13 FE6C6C485A3901F807F039007FFFE0011F90C7FCEB07F826447BC131>I<EC07FCEC3FFF 91B512C0903903FC03E0903907E000F0D91FC0133849C71258017EEB01FC01FE13034913 07485A485AA24848EB03F8000FEC01F092C7FC485AA3485AA3127FA29038007F80903801 FFF090380780FC39FF0E003E49EB1F8049EB0FC049EB07E0136001E0EB03F04914F81501 16FC5BED00FEA390C812FFA47EA57F123FA216FE121F15016D14FC120FED03F86C7EED07 F06C6C14E06C6CEB0FC06C6CEB1F80017EEB3F0090383F80FE90380FFFF8010313E00100 138028447CC131>I<14FF010713E0011F13F890387F00FE01FC133FD801F0EB1F804848 EB0FC049EB07E00007EC03F048481301A290C713F8481400A47FA26D130116F07F6C6CEB 03E013FC6C6CEB07C09039FF800F806C9038C01F006CEBF03EECF87839007FFEF090383F FFC07F01077F6D13F8497F90381E7FFFD97C1F1380496C13C02601E00313E048486C13F0 00079038007FF84848EB3FFC48C7120F003EEC07FE150148140016FF167F48153FA2161F A56C151E007C153EA2007E153C003E157C6C15F86DEB01F06C6CEB03E06C6CEB07C0D803 F8EB1F80C6B4EBFF0090383FFFFC010F13F00101138028447CC131>56 D<14FF010713E0011F13F890387F80FC9038FC007E48487F4848EB1F804848EB0FC0000F EC07E0485AED03F0485A16F8007F140190C713FCA25AA216FE1500A516FFA46C5CA36C7E 5D121F7F000F5C6C6C1306150E6C6C5B6C6C5BD8007C5B90383F01E090390FFF80FE9038 01FE0090C8FC150116FCA4ED03F8A216F0D80F801307486C14E0486C130F16C0ED1F80A2 49EB3F0049137E001EC75A001C495A000F495A3907E01FE06CB51280C649C7FCEB1FF028 447CC131>I<16C04B7EA34B7EA34B7EA34B7EA3ED19FEA3ED30FFA203707FED607FA203 E07FEDC03FA2020180ED801FA2DA03007F160FA20206801607A24A6D7EA34A6D7EA34A6D 7EA20270810260147FA202E08191B7FCA249820280C7121FA249C87F170FA20106821707 A2496F7EA3496F7EA3496F7EA201788313F8486C83D80FFF03037FB500E0027FEBFFC0A3 42477DC649>65 D<DB0FFE146092B500C013E0020314F0913A0FFC01FC0191393FC0003E 02FFC7EA0F83D903FCEC03C74948EC01E74948EC00FF4948157F4948153F4948151F49C9 120F485A491607120348481603A248481601A248481600A2123FA2491760127FA3190048 5AAE6C7EA21960A2123F7FA2001F18E07F000F18C0A26C6C160119806C6C160312016DEE 07006C6C16066D6C150E6D6C5D6D6C5D6D6C15786D6C5D6D6C4A5AD900FFEC0780DA3FC0 011FC7FCDA0FFC13FC0203B512F0020014C0DB0FFEC8FC3B487BC546>67 D<B912F8A3000101C0C7127F6C6C48EC07FC17011700187C183C181CA284A31806A41807 04067FA395C7FCA4160EA2161E163E16FE91B5FCA3EC8000163E161E160EA21606A319C0 A3F0018093C7FCA41803A21900A260A260A2181EA2183E187EEF01FE170748486C147FB9 5AA33A447CC342>69 D<B912F0A3000101C0C7127F6C6C48EC0FF8170317011700187818 38A2181CA3180CA4180E1806160CA21800A5161CA2163C167CED01FC91B5FCA3EC8001ED 007C163C161CA2160CA793C8FCB08048487EB612F8A337447CC340>I<B612F0A3C6EBF0 006D5A6D5AB3B3B3A4497E497EB612F0A31C447DC323>73 D<010FB512FEA3D900031380 6E130080B3B3AB123F487E487EA44A5A13801300006C495A00705C6C13076C5C6C495A6C EB1F802603E07FC7FC3800FFFCEB1FE027467BC332>I<B56C933807FFFC6E5EA20001F1 FE0026006FE0EE1BF8A3D967F01633A2D963F81663A3D961FC16C3A3D960FEED0183A202 7FED0303A36E6C1406A36E6C140CA26E6C1418A36E6C1430A36E6C1460A26E6C14C0A36E 6CEB0180A3037FEB0300A292383F8006A36F6C5AA36F6C5AA26F6C5AA36F6C5AA36F6C5A A26FB45AA370C7FC13F0A2486C143ED80FFFEF0FFEB500F0011C0107B512FCA34E447BC3 59>77 D<B56C020FB5FC8080C6040013F06D6CED1F80D96FF8ED0F00A2D967FC1506EB63 FEA2EB61FF01607FA26E7E6E7EA26E7E6E7EA26E7E6E7EA26E7E6E7FA26F7E6F7EA26F7E 6F7EA26F7E6F7EA26F7E6F1380A2EE7FC0EE3FE0A2EE1FF0EE0FF8A2EE07FCEE03FEA2EE 01FF701386A2EF7FC6EF3FE6A2EF1FF6EF0FFEA217071703A217011700A201F0167E183E 487ED80FFF161EB500F0150EA2180640447CC349>I<B712FCEEFFC017F800019039C000 0FFC6C6C48EB01FF9338007F80EF1FE0170FEF07F018F8EF03FCA218FE1701A218FFA718 FEA2170318FCA2EF07F818F0EF0FE0EF1FC0EF7F80933801FE00EE0FFC91B612F0178002 80C9FCB3AA3801FFE0B612C0A338447CC342>80 D<B712E016FF17C000019039C0003FF8 6C6C48EB03FCEE00FF717E717E717E717E717EA284170384A760A21707604D5AA24D5A4D 5A4DC8FCEE01FEEE07F8EE3FE091B6C9FC16FC913980007F80EE0FE0707EEE03FC707E16 0083717EA2717EA784A71A6084171FA21AE0716C13C02601FFE002071301B600C0168094 3801FC03943900FE0700CBEA3FFEF007F843467CC348>82 D<49B41303010FEBE007013F 13F89039FE00FE0FD801F8131FD807E0EB079F49EB03DF48486DB4FC48C8FC4881003E81 127E82127C00FC81A282A37E82A27EA26C6C91C7FC7F7FEA3FF813FE381FFFE06C13FE6C EBFFE06C14FC6C14FF6C15C0013F14F0010F80010180D9001F7F14019138001FFF030313 80816F13C0167F163F161F17E000C0150FA31607A37EA36C16C0160F7E17806C151F6C16 006C5D6D147ED8FBC05CD8F9F0495AD8F07C495A90393FC00FE0D8E00FB51280010149C7 FC39C0003FF02B487BC536>I<003FB912F8A3903BF0001FF8001F01806D481303003EC7 150048187C0078183CA20070181CA30060180CA5481806A5C81600B3B3A54B7EED7FFE49 B77EA33F447DC346>I<EB07FC90383FFF809038F80FE03903C003F048C66C7E000E6D7E D80FC0137E486C137F6D6D7EA36F7EA26C5AEA0380C8FCA4EC0FFF49B5FC90380FFE1FEB 3FC0EBFF00EA03FC485A485A485A485A127F5B176048C7FCA3153FA36D137F007F14EF6D 9038C7E0C0003F13013A1FE00783F13B07F81E03FF802701FFFC0113003A001FE0007C2B 2E7CAC31>97 D<EA01FC12FFA3120712031201B3EC03FC91380FFF8091383C07E0913870 01F89039FDE0007E02807F01FFEC1F8091C713C049EC0FE049140717F0A2EE03F8A217FC A2160117FEAB17FC1603A217F8A2EE07F0A26DEC0FE017C06D141F01FBEC3F80D9F380EB 7E00D9E1C05B9039E0F001F89039C03C07E09039801FFF80C7D803FCC7FC2F467DC436> I<EC7F80903803FFF090380FC07C90383F000F01FCEB03804848EB01C00003140F4848EB 1FE049133F120F485AA2485AED1FC0007FEC070092C7FCA290C9FC5AAB7E7FA2123F1630 7F001F15706C6C146016E06C6C14C06C6C13010001EC03806C6CEB0700013F131E90381F C078903807FFF001001380242E7DAC2B>I<167FED3FFFA315018182B3EC7F80903803FF F090380FC07C90383F000E017E1307496D5AD803F87F48487F5B000F81485AA2485AA212 7FA290C8FC5AAB7E7FA2123FA26C7EA2000F5D7F6C6C5B00035C6C6C9038077F806C6C01 0E13C0013F011C13FE90380FC0F8903803FFE09026007F0013002F467DC436>I<EB01FE 903807FFC090381F03F090387E00FC49137E48487F485A4848EB1F80000F15C049130F12 1F484814E01507A2007F15F090C7FCA25AA390B6FCA290C9FCA67EA27FA2123F16306C7E 1670000F15606D14E06C6C14C0000314016C6CEB03806C6CEB0700013E131E90381F80F8 903803FFE0010090C7FC242E7DAC2B>I<EC0FE0EC7FF8903801F81E903803F03F90390F E07F8090381FC0FF5C133F495AA2ED7F0001FE131C92C7FCAFB67EA3C648C8FCB3B2486C 7E007F13FFA321467EC51E>I<EE0F80D901FCEB7FE0903A0FFF81F0F090393F07E38190 39FC01FF033A01F800FE014848017E13E00007027FC7FC497F000F8149131F001F81A900 0F5D6D133F000792C7FC6D5B0003147E6C6C5B6D485A3903BF07E090380FFF80260701FC C8FC90CAFCA25AA37F6C7E7F90B512F86C14FF16E06C15F86C6C8048B67E3A07C0000FFF 48481300003FC8EA3F80003E151F48ED0FC0A2481507A56C150F007C1680007E151F003E 16006C153E6C6C5CD807E0495AD801F8EB07E0D8007FEB3F8090261FFFFEC7FC010113E0 2C427DAC31>I<EA01FC12FFA3120712031201B3EC01FE913807FFC091381E07F0913838 01F802707FECE000D9FDC07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80B5D8F83F13 FEA32F457DC436>I<EA01E0EA07F8A2487EA46C5AA2EA01E0C8FCADEA01FC12FFA31207 12031201B3B0487EB512F8A315437DC21C>I<143C14FFA2491380A46D1300A2143C91C7 FCADEC7F80EB3FFFA31300147F143FB3B3AA123E127F39FF807F00A2147EA25C6C485A38 3C01F06C485A3807FF80D801FEC7FC195785C21E>I<EA01FC12FFA3120712031201B3A2 92381FFFE0A36F1300ED07F816E05E5E030EC7FC5D5D5D5D4A5A4A5A4AC8FC5CEC3F804A 7E14FF9038FDCFE09038FF8FF01407496C7E01FC7F14016E7E81816F7E82151F6F7E8215 07826F7E8282486C491380B5D8F81F13F8A32D457DC433>I<EA01FC12FFA31207120312 01B3B3B3A5487EB512F8A315457DC41C>I<D801FC01FFEC1FE000FF010701E0EBFFFC91 3B0F03F801E07F913C3C01FC07803F800007903C7000FE0E001FC0000349D97E1C130F26 01FDC0D97F38804A143001FFDA3FF06D7E91C75BA2495DA3495DB3A8486C4A6C497EB5D8 F81FB50003B512E0A34B2C7DAB52>I<3901FC01FE00FF903807FFC091381E07F0913838 01F8000701707F0003EBE0002601FDC07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80 B5D8F83F13FEA32F2C7DAB36>I<EC7F80903803FFF090380FC0FC90383E001F496D7E49 6D7E48486D7E48486D7E48486D7E000F81A24848147E003F157FA290C87E481680A44816 C0AA6C1680A26D147F003F1600A2001F157E6D14FE000F5D6D130100075D6C6C495A6C6C 495A6C6C495A013E49C7FC90381FC0FE903807FFF89038007F802A2E7DAC31>I<3901FC 03FC00FF90380FFF8091383C07E091387001F83A07FDE000FE00010180137F01FFEC3F80 91C7EA1FC04915E049140F17F0160717F8160317FCA3EE01FEABEE03FCA3EE07F8A217F0 160F6D15E0EE1FC06D143F17806EEB7E00D9FDC05B9039FCF003F891383C0FE091381FFF 80DA03FCC7FC91C9FCAE487EB512F8A32F3F7DAB36>I<3903F803F000FFEB1FFCEC3C3E EC707F0007EBE0FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512 FEA3202C7DAB26>114 D<90383FE0183901FFFC383907E01F78390F0003F8001E130148 1300007C1478127800F81438A21518A27EA27E6C6C13006C7E13FC383FFFE06C13FC6C13 FF6C14C06C14E0C614F0011F13F81300EC0FFC140300C0EB01FE1400157E7E153EA27EA3 6C143C6C147C15786C14F86CEB01F039F38003E039F1F00F8039E07FFE0038C00FF01F2E 7DAC26>I<1306A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7 FCB3A4150CAA017E131C017F1318A26D133890381F8030ECC070903807E0E0903801FFC0 9038007F001E3E7EBC26>I<D801FC147F00FFEC3FFFA300071401000380000181B3A85E A35DA212006D5B017E9038077F80017F010E13C06D011C13FE90380FC078903803FFF090 26007F8013002F2D7DAB36>I<B539F001FFFCA3000790C7EA7FE06C48EC1F8000011600 160E1200160C017F5CA280013F5CA26E1370011F146080010F5CA2ECF00101075CA26D6C 48C7FCA26E5A01011306A26D6C5AA214FF6E5AA215B8EC3FB015F06E5AA36E5AA26E5AA3 6EC8FC2E2C7EAA33>I<B500E0B539E03FFF80A30007903C000FFE000FFC00D803FCD903 F8EB03F8F001E0120103015D6D80000060A26D6E13036DD9037E91C7FCA20280017F5B01 3FD9063F1306A2D91FC06E5AED0C1FA2D90FE06E5AED180FA2D907F06E5AED3007A2D903 F86E5AED6003A2902601FCE06D5AEDC00117FCD900FFECFD80ED800017FF027F92C8FC92 C77EA26E147E023E143EA2021E143C021C141CA2412C7EAA46>I<B539F001FFFCA30007 90C7EA7FE06C48EC1F8000011600160E0000150C6D141C6D1418A26E1338013F1430A26D 6C5BA26E13E0010F5CA26D6C485AA2ECF803010391C7FCA2903801FC06A2ECFE0E010013 0CA2EC7F18A215B8EC3FB0A2EC1FE0A36E5AA26E5AA36EC8FCA21406A35CA25CA2123C00 7E5BB4FC5CA25CEAFE01387C0380D87007C9FCEA3C1EEA0FFCEA03F02E3F7EAA33>121 D E /Fr 20 118 df<B712F0A7240780A12B>45 D<B912F018FF19E019F8C601FCC8EA7F FED93FF892380FFF80011F04017F9538007FF0F11FF8737EF103FE737E737F747E747E74 7E1A0F87747E1A0387747EA2741380A2F37FC0A21CE01B3FA21CF0A21B1F1CF8A31CFCA2 1B0FA41CFEAF1CFCA51B1F1CF8A4F33FF0A21CE0A21B7F1CC01BFF1C80A2501300A2505A 505AA2505A505A505A505A1AFF4F5B4F90C7FCF107FCF11FF8F17FF0953801FFC0013F04 075BD9FFFCDB7FFEC8FCBA12F819E096C9FC18F0576279E165>68 D<B712C0A4C66CEB8000D91FFEC7FC6D5AB3B3B3B3AE497E90387FFF80B712C0A422627A E12F>73 D<B500FC071FB51280A36E61C6F58000013F51C7FCD91DFFF177FCA2011C6D18 E7A36E6CEF01C7A36E6CEF0387A36E6CEF0707A26E6C170EA36E6C171CA36E6C1738A36E 6C1770A26E6D16E0A36F6CED01C0A36F6CED0380A36F6CED0700A26F6C150EA36F6C5DA3 6F6C5DA36F6C5DA26F6D5CA3706C495AA3706C495AA3706C49C7FCA2706C130EA3706C5B A3706C5BA3706C5BA3706D5AA294387FC1C0A394383FE380A3DD1FF7C8FCA3EF0FFEA201 3E6F5AA2137F715A2601FFC04F7E000701F896383FFF80B66C6D48023FB61280A3715A69 6278E17A>77 D<B912C018FEF0FFC019F0C601FCC813FCD93FF8ED0FFF011F04037F0600 7FF13FF0737E737E1907737E86731380A27313C0A31BE01A7FA21BF0A91BE0A21AFF1BC0 A34F13801B00614F5A624F5A4F5AF17FE04F5A060390C7FCF01FFE943801FFF891B812E0 96C8FC18F802F8CCFCB3B3A4497E90B5FCB7FCA44C6279E15A>80 D<DA07FF1403023F01F05B49B512FC010702FF5B90260FFC0013C0D93FE090380FF01FD9 7F80EB03F801FEC86C5A4848157E4848ED1F7F48486F5A4848815B001F824981003F8290 CAFC4883A2007E83A212FE84A384A27EA36D82A26C7EA26D93C7FC6C7E7F7F6C7E6D7E6C 13E06C13FCECFFC06C14F86CECFF806C15F86DECFF80011F15E06D15F8010315FE01006F 7E021F81020181DA003F80030380DB003F7F04037FEE007FEF1FFF71138017037113C083 A2F07FE0183FA2181F00E018F0180FA41807A27EA47E19E0180F7E19C07E6C171F19806D 163F6D17006D5E6D16FE486C5E6D4B5AD8FC7F1503D91F80EC0FF026F80FE04A5AD907FC EC7F8029F001FFE003FFC7FC6D6CB512FC48011F14F0020314C0489026001FFEC8FC3C66 7AE349>83 D<EC3FF0903803FFFE010F6D7E90393FC03FE090397E0007F801F86D7ED801 E06D7E48486D7E48486E7E48C86C7E7F01F06E7E487E6D6E7EA3707EA36C5AEA03E0C9FC A6167FED7FFF020FB5FC91387FF807903801FF80903807FC00EB1FF0EB7FC0495AD803FE C7FC485A120F5B485A485AA2484817E0A312FF5BA2160FA3161F6D141B007F153B16736D 913971FC01C06C6C14E1001FEC01C1D80FFC903A0780FE03806C6C903A0F00FF07002701 FF807E6DB4FC27007FFFF86D5A011F01E0EB1FF8010190C7EA07E03B417ABF42>97 D<4AB47E020F13F8023F13FE9139FF007F80D903FCEB07E0D907F0EB01F0D91FE0EB0078 49488049488049C87E48485D4915FF00034B138048485CA2485AA2485AA2003F6F130049 EC007C94C7FC127FA35B12FFAD127F7FA4123F7FA2001FEE01C07F000F16036D16801207 6C6C15076D160000015E6C6C151E6D6C5C6D6C5C6D6C5CD90FF8495AD903FCEB07C0903A 00FF803F8091263FFFFEC7FC020F13F80201138032417CBF3A>99 D<181EEF3FFEEE07FFA4EE000F1703A21701B3AAEDFF80020F13F8023F13FE9139FF803F 81903A03FC0007C14948EB01E1D91FE0EB00F94948147D4948143D49C8121F4848150F49 1507120348481503491501120F121F5BA2123F5B127FA45B12FFAD127F7FA3123FA27F12 1FA26C6C1503A26C6C150712036D150F6C6C151F0000163D137F6D6CECF9FF6D6CEB01F1 D90FF0D903C113C06D6CD90F81EBFF80D901FFEB7F019039007FFFFC021F13E002010100 91C7FC41657CE349>I<EC03FE91381FFFE091B512F8903901FE03FE903A07F0007F8049 486D7ED93FC06D7E49C76C7E496E7E49140348488148481401000782491400000F828348 5A1880123F49153FA2007F17C0A35BA212FF90B8FCA30180CAFCA9127F7FA3123FA27F12 1FEF01C06C7E17036C6C1680A26C6C15070001EE0F006D150E6C6C151E6D6C5C6D6C5C6D 6C5CD907F0EB03E0D903FC495A902700FF803FC7FC91383FFFFC020F13F0020113803241 7CBF3A>I<ED0FF0ED7FFC4AB5FC913907F81F8091390FE00FC091381FC03F91393F807F E0EC7F005C495A5C0103EC3FC0A24948EB0F0093C7FCA2495AB3A5B712F0A426000FF0C8 FCB3B3B0497EEB3FFE003FB6FCA42B657EE428>I<F03F80DA03FC903801FFE091273FFF C00713F091B539F01FC1F8903B03FC03FC3E03903A07F000FE784948EB7FE04948EB3FC0 4948011FEB01F049C76C6CC7FC01FE6E7EA248486E7EA2000382A2491401000782AA0003 5E6D1403A200015EA26C6C4A5AA2017F4A5A6D6C495A6D6C495A496C49C8FCD937F013FE 903973FC03FC0160B512F0D9E03F13C0DA03FCC9FC4848CBFCA57FA27FA27F6C7E13FF91 B512FE6DECFFF06D15FE6D6F7E6D16E084013F16FC01FEC700017FD803F8EC001FD807E0 ED03FF4848030013804848167F003FEF3FC090CA121F127EF00FE012FE481707A66C170F 007E18C0A2007F171F6C6CEE3F806C6CEE7F00000F177ED807F04B5A6C6C4B5A6C6C4B5A D8007FED1FC0D93FE0ECFF80D90FFED90FFEC7FC0101B612F0D9003F1480020101F0C8FC 3D5E7DBF42>I<133C13FF487F487FA66C5B6C90C7FC133C90C8FCB3A2EB03C0EA07FF12 7FA41201EA007FA2133FB3B3AC497E497EB612E0A41B5F7DDE23>105 D<D903C0D9FFC0EC07FED807FF010301F891381FFFC0B5010F01FE027F13F0923D3F00FF 8001F807FC0378903B3FC003C001FEDAC1E090261FE00FC77E0001D9C3C090260FF01E6E 7ED8007F49902607F81C6E7E02C7C75CD93FCE6E6C486E7E02CC166002DC16E002D85E02 F8DA01FF6F7E4A5EA24A93C8FCA44A5DB3B3496C4A6C4B7E496C4A6D4A7EB6D8F007B6D8 803FB512FCA4663F7CBE6F>109 D<D903C0EB7FE0D807FF903803FFFCB5010F13FFDB3F 0013C00378EB1FE04B6D7E0001D9C1C06D7E27007FC3808002C7C71203D93FCE81170114 DC14D802F86E7E5CA35CA35CB3B3496C4A7F496C4A7FB6D8F003B612C0A4423F7DBE49> I<EDFF80020F13F8023F13FE9139FF007F80D903FCEB1FE0D907F0EB07F0D90FC0EB01F8 D93F80EB00FE49C8127F017E81496F7E48486F7E00038349150700078348486F7EA2001F 83491501A2003F83A348486F7EA400FF1880AC007F1800A26D5DA2003F5FA36C6C4B5AA3 6C6C4B5A00075FA26C6C4B5A6C6C4B5AA26C6C4B5A017F4BC7FC6D6C14FE6D6C495AD90F F0EB07F8D903FCEB1FE0D900FFEB7F806EB5C8FC020F13F8020113C039417CBF42>I<90 39078003F8D807FFEB0FFFB5013F13C092387C0FE0913881F01F9238E03FF00001EB8380 39007F8700148FEB3F8E029CEB1FE0EE0FC00298EB030002B890C7FCA214B014F0A25CA5 5CB3B0497EEBFFF8B612FCA42C3F7CBE33>114 D<9139FFE00180010FEBFC03017FEBFF 073A01FF001FCFD803F8EB03EFD807E0EB01FF48487F4848147F48C8123F003E151F007E 150F127CA200FC1507A316037EA27E7F6C7E6D91C7FC13F8EA3FFE381FFFF06CEBFF806C 14F86C14FF6C15C06C6C14F0011F80010714FED9007F7F02031480DA003F13C015030300 13E0167F00E0ED1FF0160F17F86C15071603A36C1501A37EA26C16F016037E17E06D1407 6DEC0FC06D1580D8FDF0141FD8F8F8EC7F00013E14FC3AF01FC00FF80107B512E0D8E001 148027C0003FF8C7FC2D417DBF34>I<1438A71478A414F8A31301A31303A21307130F13 1FA2137F13FF1203000F90B6FCB8FCA3260007F8C8FCB3AE17E0AE6D6CEB01C0A316036D 6C148016076D6C14006E6C5A91383FC01E91381FF07C6EB45A020313E09138007F802B59 7FD733>I<D903C0150FD807FFED1FFFB50203B5FCA40001ED0007D8007F1501A2013F81 B3B25FA35FA35F011F15066E140E5F130F6E4A7F01075D6D6C494813E0D901FE4948EBFF C0903A00FFC01F8091393FFFFE00020F13F8020001C0EC800042407DBE49>I E /Fs 5 85 df<1A1E1A1F6262A262A261A26161A2618761A26161197B19FB19F3F001E3 A2F003C318071983180F1903061E80A2183C85187818F818F0EF01E0A2EF03C0A2EF0780 170F1800171E875FA24D7F17F85F4C5AA24C5AA24C5A160F94C8FC5E161E4C82A25E04F8 157F5E15015E4BB8FCA25DA24BC9127F5D151E4B83A25D1A3F5D14015D4A5AA24A5AA24A CAFC5C141E5C875C14F81A1F495A13031307010F183F131FD97FF84D7E2603FFFE0403B5 7E007FD9FFE092B7FC4E1680B61A006C5C596678E568>65 D<92B912F04A18FEF3FFC06E 19F0DB007F90C700017F70489138003FFE7048ED0FFF043F04037F757F4D6F7F767E047F 173F767E4D707EA204FF717EA24D707EA24B1A80885FA24B1AC0A25F885D1EE094CBFCA2 5D645EA2151FA25EA2153F645E1EC0157FA24C5FA215FF1E804C5FA25C1E004C5FA24A62 A24C173F655C525A93CBFCA24A4F5AA24B4D5BA2021F62515B5D5190C7FC023F611B0F4B 4D5A64027F183F515A4B60515A02FF4D5B5090C8FC4B4C5A1A0F49F01FF8505A4B4C5A50 5A494D5B070790C9FC4BED1FFC4F5A49933801FFE04904071380013FDC7FFECAFC007FB9 12F8BA12E096CBFC18F0636276E16A>68 D<92BB12FC5CA280DB007F90C8120F70481500 7048EE3FF8043F170F1C074D1603A2167F1C014D17F0A216FFA25FA25D1DE05FA25DA25F 1C034B19C0A294CAFC1AE04B4B6C14805090C7FC5EA2031F1503625E1907153F624C140F 191F157F077FC9FC4C5C180F92B8FC61A34A9038E0000FF001FC4C1300A25C19785E19F8 5C6193C8FCA24A1501615DA2021F5E95CBFC5DA2143FA25DA2147FA25DA214FFA25DA25B A25DA25BA25DA25B5B013F13F0007FB612FEB7FCA35E6276E15C>70 D<92B812FCF2FFC04A18F86E18FEDB007F90C7383FFF80704802037F7048020013F0043F EE3FF8757E4D6F7E1B07047F837513805F1DC016FFA25F1DE05DA25FA25D5113C05FA25D 51138094C9FC1D004B5F644C4C5AA2031F4D5A644C4C5A505B033F4C5B5048C7FC4C4B5A F23FF0037F4C5A963801FF804CDA0FFEC8FCF1FFF892B812C04FC9FC619339E00003FF4A 9238007FC0737E4C6E7E737E4A1607864C8119034A83A293C8FCA24A84A25DA2021F5EA2 4B94C8FCA2023F5EA25DA2027F5EA25DA202FF5E625DA2491BE01C015DA2491A031DC04B 18071D80491A0F49051F1500013F01E060007FB600F0020F143EB76F6C5B735C4C6EEB83 F0CD6CB45A081F1380E003FEC7FC5B6576E166>82 D<017FBB12FC1CFE90BCFCA292C727 7FFC000113FC4801F06E48EB001F0280027F150791C81603D803FC4C14015B4903FF16F8 49190000075F5B5E48481AF06090C8FC484B1601A2001E5F003E1BE0003C5DA2007C94C8 FC00781A034C17C012F8485EA2161F481B80C94992C7FCA2163FA25FA2167FA25FA216FF A25FA25DA25FA25DA25FA25DA294CBFCA25DA25EA2151FA25EA2153FA25EA2157FA25EA2 15FFA25EA25CA25EA25CA25EA25CA293CCFC5CA25C49B512E0001FB8FC5AA25F576166E0 64>84 D E end TeXDict begin

0 0 bop 1597 1821 a Fs(D)50 b(R)h(A)f(F)g(T)449 2004 y Fr(Do)t(cumen)l(t)44 b(for)f(a)g(Standard)h(Message-P)l(assing)f(In)l (terface)1242 2393 y Fq(Message)34 b(P)m(assing)f(In)m(terface)h(F)-8 b(orum)1691 2646 y(July)32 b(1,)g(1996)155 2762 y(This)h(w)m(ork)g(w)m (as)g(supp)s(orted)h(in)e(part)g(b)m(y)i(ARP)-8 b(A)32 b(and)h(NSF)g(under)g(gran)m(t)f(ASC-9310330,)g(the)384 2878 y(National)f(Science)i(F)-8 b(oundation)31 b(Science)j(and)e(T)-8 b(ec)m(hnology)34 b(Cen)m(ter)g(Co)s(op)s(erativ)m(e)152 2994 y(Agreemen)m(t)f(No.)43 b(CCR-8809615,)31 b(and)i(b)m(y)h(the)f (Commission)d(of)i(the)h(Europ)s(ean)g(Comm)m(unit)m(y)1308 3110 y(through)f(Esprit)h(pro)5 b(ject)33 b(P6643.)p eop 1 1 bop 332 99 a Fp(This)38 b(is)g(the)i(result)f(of)h(a)g(LaT)-8 b(eX)40 b(run)f(of)g(a)i(draft)e(of)h(a)g(single)e(c)m(hapter)i(of)g (the)g(MPIF)g(Final)150 211 y(Rep)s(ort)30 b(do)s(cumen)m(t.)1937 5656 y(i)p eop 1 2 bop 150 721 a Fo(Chapter)65 b(8)150 1136 y Fn(Real-Time)77 b(and)g(Em)-6 b(b)6 b(edded)150 1385 y(Extensions)150 1867 y Fm(8.1)116 b(Intro)s(duction)150 2070 y Fp(The)27 b(goal)h(of)g(real-time)f Fl(MPI)g Fp(\()p Fl(MPI)p Fp(/R)-8 b(T\))28 b(is)f(to)h(pro)m(vide)f(the)g(to)s(ols)h(for)f(programmers)g (to)h(create)h(real-)150 2183 y(time)36 b(applications)e(with)g(p)s (erformance)h(p)s(ortabilit)m(y)-8 b(.)56 b Fl(MPI)p Fp(/R)-8 b(T)36 b(is)f(to)h(pro)m(vide)f(a)h(consisten)m(t)g(set)h(of) 150 2296 y(extensions)e(and,)h(in)e(some)i(cases,)h(restrictions)d(of)i Fl(MPI)p Fp(.)f(The)g(goal)h(of)f Fl(MPI)p Fp(/R)-8 b(T)36 b(is)e(to)i(add)f(greater)150 2409 y(predictabilit)m(y)28 b(and)i(sc)m(hedulabilit)m(y)d(to)k(message-passing)g(programming.)332 2521 y(The)f(design)f(philosoph)m(y)f(of)j Fl(MPI)p Fp(/R)-8 b(T)30 b(is)g(as)g(follo)m(ws:)286 2702 y Fk(\017)46 b Fl(MPI)p Fp(/R)-8 b(T)35 b(will)c Fj(not)k Fp(determine)f(implemen)m (tation)f(p)s(olicy)-8 b(,)34 b(but)g(will)d(instead)j(pro)m(vide)f(to) s(ols)h(to)377 2815 y(implemen)m(t)29 b(real-time)h(paradigms)f(suc)m (h)i(as:)480 3000 y Fi({)45 b Fp(Time-driv)m(en)480 3144 y Fi({)g Fp(Ev)m(en)m(t-driv)m(en)480 3287 y Fi({)g Fp(Priorit)m (y-driv)m(en)480 3430 y Fi({)g Fp(Ad)30 b(ho)s(c)g(\(critical)g (cycle\))286 3615 y Fk(\017)46 b Fl(MPI)p Fp(/R)-8 b(T)37 b(will)d(mak)m(e)j(minimal)c(c)m(hanges)38 b(to)f Fl(MPI)p Fp(,)f(so)h(that)g Fl(MPI)p Fp(/R)-8 b(T)36 b(programs)g(can)h(b)s (ene\014t)377 3728 y(from)30 b(existing)g Fl(MPI)g Fp(libraries,)d(at) 32 b(least)e(for)g(non-critical)f(parts)h(of)h(real-time)f (applications,)286 3913 y Fk(\017)46 b Fp(E\013orts)40 b(will)c(b)s(e)j(made)g(to)h(mak)m(e)g(existing)e Fl(MPI)h Fp(libraries)d(w)m(ork)j(as)h(seamlessly)e(as)h(p)s(ossible)377 4026 y(within)28 b(these)j(real-time)f(pro\014les.)286 4211 y Fk(\017)46 b Fl(MPI)p Fp(/R)-8 b(T)33 b(m)m(ust)e(allo)m(w)h (not)g(only)f(p)s(ortabilit)m(y)f(but)i(also)f(p)s(erformance)h(p)s (ortabilit)m(y)-8 b(,)31 b(insofar)g(as)377 4324 y(p)s(ossible.)286 4509 y Fk(\017)46 b Fl(MPI)p Fp(/R)-8 b(T)35 b(will)d(not)j(replace)f (the)h(nativ)m(e)f(run)m(time)g(system)g(or)h(sc)m(heduler,)f(but)g (will)e(pro)m(vide)i(a)377 4622 y(p)s(ortable)c(means)g(to)h(comm)m (unicate)g(with)e(these)i(systems.)377 4771 y(Figure)f(8.1)i(sho)m(w)e (the)g(mo)s(del)g(of)g(soft)m(w)m(are)i(abstraction)e(la)m(y)m(ers)h (for)f(MPI/R)-8 b(T.)286 4956 y Fk(\017)46 b Fp(F)-8 b(or)31 b(em)m(b)s(edded)e(users,)h(the)g(adv)-5 b(an)m(tages)32 b(of)e(a)g(la)m(y)m(ered)h(approac)m(h)f(indicate)g(that)g(\\subset)g (pro-)377 5068 y(\014les")k(b)s(ear)f(consideration)g(as)i(part)f(of)g (this)f(e\013ort.)53 b(The)33 b(smallest)h(subsets)f(should)f(b)s(e)i (quite)377 5181 y(minimal)k(to)k(allo)m(w)f(the)g(widest)f(p)s(ossible) e(em)m(b)s(edding)h(of)i Fl(MPI)g Fp(with)f(and)g(without)g(sp)s (eci\014c)377 5294 y(real-time)31 b(features.)43 b(A)31 b(feature-driv)m(en)g(rather)g(than)f(call-driv)m(en)g(approac)m(h)h (to)h(suc)m(h)e(pro\014les)377 5407 y(is)41 b(indicated.)75 b(Some)42 b(real-time,)j(em)m(b)s(edded)c(k)m(ernels)g(migh)m(t)h(c)m (ho)s(ose)h(to)g(add)f(the)g(smallest)1927 5656 y(1)p eop 2 3 bop 150 -200 a Fp(2)960 b Fh(CHAPTER)30 b(8.)71 b(REAL-TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)1050 1645 y @beginspecial 34 @llx 394 @lly 433 @urx 757 @ury 2160 @rwi @setspecial

/tgifdict 36 dict def tgifdict begin

/tgifpatdict 10 dict def

/tgifpatbyte { currentdict /retstr get exch pat i cellsz mod get put } def

/tgifpatproc { 0 1 widthlim {tgifpatbyte} for retstr /i i 1 add def } def

/tgifpatfill { tgifpatdict begin /h exch def /w exch def /lty exch def /ltx exch def /cellsz exch def /pat exch def

/widthlim w cellsz div cvi 1 sub def /retstr widthlim 1 add string def /i 0 def

tgiforigctm setmatrix ltx lty translate w h true [1 0 0 1 0 0] {tgifpatproc} imagemask ltx neg lty neg translate end } def

/pat3 <8000000008000000> def /pat4 <8800000022000000> def /pat5 <8800220088002200> def /pat6 <8822882288228822> def /pat7 <aa55aa55aa55aa55> def /pat8 <77dd77dd77dd77dd> def /pat9 <77ffddff77ffddff> def /pat10 <77ffffff77ffffff> def /pat11 <7fffffff7fffffff> def /pat12 <8040200002040800> def /pat13 <40a00000040a0000> def /pat14 <ff888888ff888888> def /pat15 <ff808080ff080808> def /pat16 <f87422478f172271> def /pat17 <038448300c020101> def /pat18 <081c22c180010204> def /pat19 <8080413e080814e3> def /pat20 <8040201008040201> def /pat21 <8844221188442211> def /pat22 <77bbddee77bbddee> def /pat23 <c1e070381c0e0783> def /pat24 <7fbfdfeff7fbfdfe> def /pat25 <3e1f8fc7e3f1f87c> def /pat26 <0102040810204080> def /pat27 <1122448811224488> def /pat28 <eeddbb77eeddbb77> def /pat29 <83070e1c3870e0c1> def /pat30 <fefdfbf7efdfbf7f> def /pat31 <7cf8f1e3c78f1f3e> def

/tgifcentertext { dup stringwidth pop 2 div neg 0 rmoveto } def

end

tgifdict begin /tgifsavedpage save def

1 setmiterlimit 1 setlinewidth

0 setgray

72 0 mul 72 11.00 mul translate 72 128 div 100.000 mul 100 div dup neg scale

gsave

/tgiforigctm matrix currentmatrix def

% POLYGON/CLOSED-SPLINE 0 setgray newpath 64 64 moveto 64 704 lineto 768 704 lineto 768 64 lineto closepath gsave grestore gsave stroke grestore

% TEXT 0 setgray /Courier findfont [17 0 0 -17 0 0] makefont setfont gsave 416 389 moveto () tgifcentertext show grestore

% POLY/OPEN-SPLINE 0 setgray gsave newpath 64 192 moveto 640 192 lineto 640 704 lineto 640 688 lineto tgiforigctm setmatrix 1 setlinewidth stroke grestore

% POLY/OPEN-SPLINE 0 setgray gsave newpath 64 576 moveto 320 576 lineto 320 704 lineto tgiforigctm setmatrix 1 setlinewidth stroke grestore

% POLY/OPEN-SPLINE 0 setgray gsave newpath 64 448 moveto 320 448 lineto 320 576 lineto tgiforigctm setmatrix 1 setlinewidth stroke grestore

% POLY/OPEN-SPLINE 0 setgray gsave newpath 640 576 moveto 384 576 lineto 384 704 lineto tgiforigctm setmatrix 1 setlinewidth stroke grestore

% POLY/OPEN-SPLINE 0 setgray gsave newpath 640 448 moveto 384 448 lineto 384 576 lineto tgiforigctm setmatrix 1 setlinewidth stroke grestore

% POLY/OPEN-SPLINE 0 setgray gsave newpath 640 320 moveto 384 320 lineto 384 448 lineto tgiforigctm setmatrix 1 setlinewidth stroke grestore

% POLYGON/CLOSED-SPLINE 0 setgray newpath 320 448 moveto 320 704 lineto 384 704 lineto 384 448 lineto closepath gsave 1 setgray eofill grestore gsave eoclip newpath pat5 8 312 440 80 272 tgifpatfill grestore gsave stroke grestore

% BOX 0 setgray gsave newpath 324 452 moveto 380 452 lineto 380 700 lineto 324 700 lineto closepath 1 setgray fill 0 setgray newpath 324 452 moveto 380 452 lineto 380 700 lineto 324 700 lineto closepath eoclip newpath pat5 8 320 448 64 256 tgifpatfill grestore

% TEXT 0 setgray gsave newpath 351 565 moveto 352 565 lineto 352 585 lineto 351 585 lineto closepath 1 setgray fill 0 setgray newpath 351 565 moveto 352 565 lineto 352 585 lineto 351 585 lineto closepath eoclip newpath pat5 8 344 560 16 32 tgifpatfill grestore /Courier findfont [17 0 0 -17 0 0] makefont setfont gsave 352 581 moveto () tgifcentertext show grestore

% TEXT 0 setgray /Courier findfont [25 0 0 -25 0 0] makefont setfont gsave 416 133 moveto (Application) tgifcentertext show grestore

% TEXT 0 setgray /Courier findfont [25 0 0 -25 0 0] makefont setfont gsave 256 293 moveto (MPI/RT) tgifcentertext show grestore

% TEXT 0 setgray /Courier findfont [25 0 0 -25 0 0] makefont setfont gsave 512 389 moveto (OS) tgifcentertext show grestore

% TEXT 0 setgray /Courier findfont [25 0 0 -25 0 0] makefont setfont gsave 512 517 moveto (Runtime System) tgifcentertext show grestore

% TEXT 0 setgray /Courier findfont [25 0 0 -25 0 0] makefont setfont gsave 512 645 moveto (Hardware) tgifcentertext show grestore

% TEXT 0 setgray /Courier findfont [25 0 0 -25 0 0] makefont setfont gsave 192 645 moveto (Network) tgifcentertext show grestore

% TEXT 0 setgray /Courier findfont [25 0 0 -25 0 0] makefont setfont gsave 192 517 moveto (Runtime System) tgifcentertext show grestore

grestore tgifsavedpage restore end %MatchingCreationDate: Mon Jul 1 15:22:41 1996 @endspecial 675 1841 a Fp(Figure)e(8.1:)42 b(Mo)s(del)29 b(of)i(Soft)m(w)m(are)g(Abstraction)g(La)m(y)m(ers)g(for)f(MPI/R)-8 b(T.)377 2121 y(set)34 b(of)g(features)f(to)i(the)e(k)m(ernel,)h(with)e (la)m(y)m(ering)h(of)h(additional)d(features)j(for)f(less)g (constrained)377 2234 y(situations.)286 2421 y Fk(\017)46 b Fp(The)40 b(results)e(of)i(the)g(real-time)g Fl(MPI)f Fp(e\013ort)i(will)c(b)s(e)i(a)i(single)d(set)j(of)f(real-time)f (extensions,)377 2534 y(restrictions,)31 b(and)h(recommendations,)f (suitable)g(for)g(realization)g(as)h(an)g Fl(MPI)p Fp(/R)-8 b(T)32 b(implemen-)377 2647 y(tation.)39 b(It)24 b(is)f(exp)s(ected)h (that)g(users)f(will)e(select)j(op)s(erations)f(in)g(order)g(to)h(supp) s(ort)e(the)i(real-time)377 2760 y(paradigms)29 b(of)i(their)e(c)m(ho)s (osing.)286 2948 y Fk(\017)46 b Fp(W)-8 b(e)26 b(exp)s(ect)f(this)e(c)m (hapter)i(to)h(b)s(e)d(adopted)i(separately)g(from)f(the)g Fl(MPI-2)h Fp(standard,)g(but)f(related)377 3061 y(to)30 b(it)e(whereev)m(er)i(p)s(ossible.)37 b(That)29 b(is,)g(not)g(all)e Fl(MPI-2)j Fp(implemen)m(tations)d(will)f(need)j(to)h(supp)s(ort)377 3174 y(the)h(real-time)f(and)g(em)m(b)s(edded)f(features)i(describ)s (ed)d(here.)332 3361 y(Real-time)k Fl(MPI)g Fp(will)e(serv)m(e)i(as)h (an)f(op)s(en)g(standard)f(for)h(a)g(wide)f(v)-5 b(ariet)m(y)33 b(of)f(high-p)s(erformance,)150 3474 y(real-time,)25 b(em)m(b)s(edded,)f(and)f(heterogeneous)i(parallel)c(computing)i (systems)h(encompassing)f(a)h(div)m(erse)150 3587 y(mix)33 b(of)i(computational)f(paradigms.)51 b(W)-8 b(e)36 b(in)m(tend)d(that)i Fl(MPI)p Fp(/R)-8 b(T)35 b(will)c(mak)m(e)36 b Fl(MPI)e Fp(relev)-5 b(an)m(t)35 b(to)g(the)150 3700 y(real-time)30 b(comm)m(unit)m(y)g(as)g(w)m(ell)f(as)h(enable)g(dev)m(elopmen)m(t)h (of)f(v)m(endor-indep)s(enden)m(t)e(real-time)i(appli-)150 3813 y(cations.)63 b(It)38 b(should)e(also)i(assist)f(in)g(bridging)e (the)j(gap)g(b)s(et)m(w)m(een)h(theory)f(and)f(implemen)m(tation)f(in) 150 3926 y(parallel)28 b(real-time)j(computing)e(and)h(comm)m (unications.)150 4212 y Fm(8.2)116 b(Real-time)37 b(Message-P)m(assing) g(Requirements)150 4415 y Fp(Although)42 b(dev)m(elop)s(ers)h(ha)m(v)m (e)h(an)f(in)m(tuitiv)m(e)f(sense)h(of)g(what)g(they)g(mean)g(b)m(y)g (a)h(real-time)f(system,)150 4528 y(de\014nitions)34 b(v)-5 b(ary)36 b(widely)-8 b(.)57 b(The)36 b(distinction)e(b)s(et)m(w) m(een)j(real-time)f(computer)g(systems)g(and)g(general)150 4641 y(purp)s(ose)d(computer)h(systems)h(lies)e(not)i(in)f(their)f(p)s (erformance)h(sp)s(eci\014cations,)h(but)f(in)f(the)i(relativ)m(e)150 4754 y(imp)s(ortance)27 b(of)i(the)f(system)g(timing)f(considerations.) 38 b(In)28 b(real-time)g(computing,)g(the)g(correctness)h(of)150 4867 y(a)34 b(computation)g(dep)s(ends)e(not)i(only)f(on)g(the)h (results)f(of)h(a)g(computation,)g(but)f(also)h(on)g(the)g(time)f(at) 150 4980 y(whic)m(h)c(the)i(results)e(of)h(the)h(computation)f(are)h (generated.)332 5093 y(The)f(measures)g(of)g(merit)g(in)f(a)i (real-time)f(system)g(include)f([]:)286 5305 y Fk(\017)46 b Fp(Timing)28 b(correctness)k(as)e(w)m(ell)g(as)g(program)g (correctness.)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 3 4 bop 150 -200 a Fh(8.2.)72 b(REAL-TIME)30 b(MESSA)m(GE-P)-8 b(ASSING)31 b(REQUIREMENTS)1123 b Fp(3)286 99 y Fk(\017)46 b Fp(Deterministic)29 b(op)s(eration)h({)h(ev)m(en)g(at)g(the)g(cost)g (of)g(p)s(erformance.)286 286 y Fk(\017)46 b Fp(Predictably)29 b(fast)i(resp)s(onse)e(to)i(urgen)m(t)g(ev)m(en)m(ts.)286 474 y Fk(\017)46 b Fp(High)33 b(degree)h(of)g(sc)m(hedulabilit)m(y)-8 b(.)47 b(W)-8 b(e)35 b(de\014ne)d Fj(sche)-5 b(dulability)35 b Fp(as)f(the)f(degree)i(of)e(resource)h(uti-)377 587 y(lization)c(at)h(or)f(b)s(elo)m(w)g(whic)m(h)f(the)h(timing)f (requiremen)m(ts)h(of)g(all)f(tasks)i(can)g(b)s(e)f(guaran)m(teed)h ([].)286 774 y Fk(\017)46 b Fp(Stabilit)m(y)27 b(under)f(transien)m(t)i (load.)39 b(When)28 b(the)g(system)g(is)f(o)m(v)m(erloaded)i(b)m(y)f (ev)m(en)m(ts)h(and)f(meeting)377 887 y(all)35 b(deadlines)g(is)g(imp)s (ossible,)g(w)m(e)i(m)m(ust)f(still)e(guaran)m(tee)k(the)e(deadlines)f (of)h(selected)h(critical)377 1000 y(tasks.)286 1188 y Fk(\017)46 b Fp(Dep)s(endabilit)m(y)28 b({)j(rigid)e(fault)g (tolerance,)j(again)e(sometimes)g(at)i(the)e(cost)h(of)g(p)s (erformance.)286 1375 y Fk(\017)46 b Fp(P)m(ortabilit)m(y)-8 b(,)31 b(in)e(the)h(case)i(of)e Fl(MPI)p Fp(/R)-8 b(T,)31 b(with)e(minimal)f(impact)i(on)g(p)s(erformance.)150 1619 y Ff(8.2.1)97 b(Synchronized)33 b(Clo)s(cks)150 1790 y Fp(Designers)23 b(of)g(parallel)d(pro)s(cessing)i(systems)h(who) f(ha)m(v)m(e)i(though)m(t)g(ab)s(out)e(real-time)h(applications)e(ha)m (v)m(e)150 1903 y(included)34 b(tigh)m(tly)i(sync)m(hronized)g(system)h (clo)s(c)m(ks,)i(whic)m(h)d(are)h(dep)s(enden)m(t)f(up)s(on)f(sp)s (ecial)g(hardw)m(are)150 2016 y(supp)s(ort.)62 b(These)38 b(include)e(sev)m(eral)i(MPP)g(platforms,)h(suc)m(h)f(as)g(the)h(In)m (tel)e(P)m(aragon)j(and)d(the)h(Mer-)150 2129 y(cury)32 b(RA)m(CE)g(systems.)46 b(There)32 b(are)g(sev)m(eral)h(comp)s(elling)d (reasons)i(for)g(ha)m(ving)g(highly)e(sync)m(hronized)150 2242 y(clo)s(c)m(ks)h([)p Fi(?)p Fp(]:)261 2455 y(1.)46 b(Fine-grained,)22 b(accurate)g(instrumen)m(tation)c(is)i(needed)g(for) g(all)f(approac)m(hes)i(to)g(real-time)f(message-)377 2568 y(passing)29 b(systems,)i(and)f(ev)m(en)h(for)f(p)s(erformance)g (measuremen)m(ts)g(in)f(non)h(real-time)g(systems.)261 2755 y(2.)46 b(Real-time)31 b(applications)d(require)h(precise)h (timing)e(correctness.)42 b(These)30 b(systems)g(also)g(require)377 2868 y(demonstrations)g(of)g(this)f(correctness,)i(and)f(often)g (require)f(delicate)h(tuning)f(for)h(optimal)f(p)s(er-)377 2981 y(formance.)42 b(W)-8 b(ell-sync)m(hronized)30 b(clo)s(c)m(ks)h (are)g(necessary)g(to)g(supp)s(ort)e(these)i(requiremen)m(ts)f(in)g(a) 377 3094 y(parallel)f(en)m(vironmen)m(t.)261 3282 y(3.)46 b(Applications)27 b(should)g(b)s(e)h(able)g(to)h(adjust)f(sc)m(heduled) g(times)g(for)h(p)s(ortabilit)m(y)-8 b(,)27 b(based)i(up)s(on)e(the)377 3394 y(qualit)m(y)d(of)h(the)f(sync)m(hronized)f(clo)s(c)m(ks.)39 b(F)-8 b(or)26 b(example,)f(time)f(padding)f(will)f(b)s(e)h(needed)i (to)g(adapt)377 3507 y(sc)m(heduled)k(message-passing)i(op)s(erations)f (on)g(heterogeneous)i(pro)s(cessing)d(no)s(des.)261 3695 y(4.)46 b(The)29 b(primary)e(goal)i(of)h(time-driv)m(en)d(real-time)i Fl(MPI)g Fp(is)f(to)i(supp)s(ort)d(application)g(sp)s(eci\014cation)377 3808 y(of)d(resource)h(usage.)39 b(F)-8 b(or)25 b(time-driv)m(en)d Fl(MPI)p Fp(/R)-8 b(T,)25 b(all)e(resources)h(whic)m(h)e(are)j(used)e (for)h(comm)m(uni-)377 3921 y(cation)i(need)g(to)h(b)s(e)e(sc)m (heduled)f(in)h(order)g(to)i(ac)m(hiev)m(e)g(predictable)d(b)s(eha)m (vior.)39 b(These)25 b(sc)m(heduled)377 4034 y(resources)31 b(can)f(include:)416 4246 y(\(a\))46 b(Distributed)29 b(Memory)411 4392 y(\(b\))45 b(Shared)30 b(Memory)421 4538 y(\(c\))46 b(Comm)m(unication)29 b(Bandwidth)377 4751 y(as)j(w)m(ell)e(as)h(others,)h(suc)m(h)f(as)g(platform)g(sp)s (eci\014c)f(resources)h(related)g(to)h(in)m(ter-pro)s(cess)e(comm)m(u-) 377 4864 y(nication.)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 4 5 bop 150 -200 a Fp(4)960 b Fh(CHAPTER)30 b(8.)71 b(REAL-TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)150 99 y Ff(8.2.2)97 b(Description)34 b(of)e(the)h(Clo)s(cks)150 270 y Fp(The)23 b(pro)s(cessing)e(no)s(des)i (whic)m(h)e(comprise)h(a)i(real-time)f(parallel)e(pro)s(cessing)h (system)h(ma)m(y)g(ha)m(v)m(e)i(access)150 383 y(to)k(sev)m(eral)f(clo) s(c)m(ks.)41 b(W)-8 b(e)29 b(designate)f(one)g(of)h(the)f(clo)s(c)m(ks) g(as)h(a)f(globally)f(sync)m(hronized)g(clo)s(c)m(k.)40 b(F)-8 b(or)29 b(eac)m(h)150 496 y(pro)s(cess)k(in)f(an)i Fl(MPI)p Fp(/R)-8 b(T)33 b(program,)h(this)f(clo)s(c)m(k)h(will)d(the)i (b)s(e)g(one)h(read)f(b)m(y)g(the)h(MPI)p 3190 496 28 4 v 33 w(WTIME)f(call.)150 609 y(There)f(is)g(an)h(underlying)d (assumption)h(that)j(eac)m(h)g(pro)s(cess)f(is)f(asso)s(ciated)h(with)f (a)h(\014xed)f(pro)s(cessing)150 722 y(no)s(de.)40 b(The)30 b(pro)s(cess)g(accesses)i(its)e(globally)e(sync)m(hronized)i(clo)s(c)m (k)g(through)g(its)g(asso)s(ciated)h(CPU.)332 835 y(F)-8 b(or)35 b(most)g(platforms,)g(eac)m(h)g(no)s(de)f(has)g(a)h(lo)s(cal)f (clo)s(c)m(k,)i(and)e(this)f(is)h(p)s(erio)s(dically)d(corrected)k(in) 150 948 y(order)d(for)f(it)h(to)h(serv)m(e)g(as)f(a)g(sync)m(hronized)f (clo)s(c)m(k)i(for)e(all)g Fl(MPI)p Fp(/R)-8 b(T)33 b(pro)s(cesses)f (activ)m(e)h(at)g(that)f(no)s(de.)150 1060 y(Ho)m(w)m(ev)m(er,)42 b(other)c(alternativ)m(es)g(are)g(not)g(precluded.)61 b(F)-8 b(or)38 b(example,)i(there)d(ma)m(y)i(ev)m(en)f(b)s(e)f(a)h (single)150 1173 y(clo)s(c)m(k)24 b(at)g(one)g(of)g(the)g(no)s(des)f (or)g(ev)m(en)i(completely)e(outside)g(of)h(the)g(participating)d(no)s (des,)k(whic)m(h)d(all)h(the)150 1286 y(pro)s(cessing)33 b(no)s(des)g(access)j(o)m(v)m(er)f(a)g(net)m(w)m(ork)g(\(whic)m(h)e(ma) m(y)i(also)f(b)s(e)g(used)f(for)h(regular)g(data)g(transfer)150 1399 y(op)s(erations\))c(to)h(get)h(a)e(sync)m(hronized)g(clo)s(c)m(k)g (v)-5 b(alue.)150 1642 y Ff(8.2.3)97 b(Clo)s(ck)33 b(Synchronization)g (P)m(a)m(rameters)150 1814 y Fp(In)k(this)g(section)g(w)m(e)h(presen)m (t)g(sev)m(eral)g(parameters)g(whic)m(h)f(describ)s(e)f(the)i(sync)m (hronized)e(clo)s(c)m(ks,)k(all)150 1926 y(of)33 b(whic)m(h)e(m)m(ust)h (b)s(e)g(accessible)g(at)h(run)e(time)h(and)g(compile)f(time.)47 b(The)32 b(v)-5 b(alues)31 b(of)i(all)e(these)i(param-)150 2039 y(eters)j(are)g(exp)s(ected)h(to)f(b)s(e)f(double)f(precision)g (\015oating-p)s(oin)m(t)h(v)-5 b(alues)35 b(measured)h(in)e(seconds,)j (with)150 2152 y(exception)31 b(of)f(the)h(drift,)e(whic)m(h)g(is)g (dimensionless.)150 2360 y Fi(Resolution)36 b(\(Tic)m(k\))45 b Fp(Resolution)21 b(represen)m(ts)h(the)g(time)g(b)s(et)m(w)m(een)g(t) m(w)m(o)i(successiv)m(e)e(clo)s(c)m(k)g(tic)m(ks.)38 b(The)377 2473 y(resolution)29 b(of)i(the)f(v)-5 b(arious)30 b(sync)m(hronized)f(clo)s(c)m(ks)i(in)e(a)h(heterogeneous)i(system)e (ma)m(y)h(di\013er.)577 2683 y Fj(A)-5 b(dvic)g(e)24 b(to)f(implementors.)77 b Fp(W)-8 b(e)21 b(ha)m(v)m(e)h(prop)s(osed)d (a)h(subtle)f(mo)s(di\014cation)g(to)i(MPI)p 3437 2683 V 33 w(WTICK,)577 2796 y(so)35 b(that)h(the)f(call)f(will)e(return)h (the)i(resolution)f(of)h(the)g(sync)m(hronized)e(clo)s(c)m(k)i(of)g (the)g(pro-)577 2909 y(cessing)42 b(no)s(de)f(asso)s(ciated)i(with)d (the)i(calling)f(pro)s(cess.)75 b(In)41 b(order)g(to)i(supp)s(ort)d (tigh)m(tly)577 3022 y(sync)m(hronized)c(system)g(clo)s(c)m(ks,)j(w)m (e)e(exp)s(ect)g(clo)s(c)m(k)g(resolution)e(to)i(b)s(e)f(at)i(most)f (one)f(mil-)577 3135 y(lisecond.)k(\()p Fj(End)33 b(of)g(advic)-5 b(e)33 b(to)g(implementors.)p Fp(\))150 3345 y Fi(Drift)45 b Fp(Drift)30 b(indicates,)g(for)g(eac)m(h)i(sync)m(hronized)d(clo)s(c) m(k,)j(a)f(guaran)m(teed)g(upp)s(er)e(b)s(ound)f(on)j(the)f(error)377 3458 y(in)35 b(the)i(rate)g(of)f(the)h(clo)s(c)m(k.)59 b(That)36 b(is,)h(if)e(the)i(drift)e(is)g Fe(\016)s Fp(,)k(then)d(the)g (clo)s(c)m(k)h(rate)g(\(measured)f(in)377 3571 y(seconds)i(p)s(er)f (actually)h(elapsed)f(second\))i(is)e(guaran)m(teed)i(to)g(b)s(e)e(b)s (et)m(w)m(een)i(1)26 b Fk(\000)f Fe(\016)42 b Fp(and)37 b(1)26 b(+)f Fe(\016)s Fp(.)377 3683 y(Drift)30 b(is)f(dimensionless.) 377 3833 y(Drift)40 b(can)g(b)s(e)g(e\013ectiv)m(ely)h(used)e(to)i(b)s (ound)d(the)i(accuracy)h(of)g(measuremen)m(t)f(of)h(small)d(time)377 3946 y(in)m(terv)-5 b(als,)27 b(when)f(they)h(are)g(measured)g(b)m(y)f (the)h(di\013erence)g(b)s(et)m(w)m(een)g(t)m(w)m(o)i(readings)c(of)i (the)h(same)377 4059 y(sync)m(hronized)h(clo)s(c)m(k.)150 4245 y Fi(Sk)m(ew)45 b Fp(Sk)m(ew)31 b(is)e(a)i(maxim)m(um)e(b)s(ound)g (on)h(the)h(absolute)f(v)-5 b(alue)30 b(of)g(the)h(di\013erence)f(b)s (et)m(w)m(een)h(sim)m(ulta-)377 4358 y(neous)f(v)-5 b(alues)29 b(of)h(the)g(sync)m(hronized)f(clo)s(c)m(ks.)41 b(Note)31 b(that)g(this)e(refers)g(to)i(ideal)e(v)-5 b(alues,)30 b(not)g(the)377 4471 y(result)g(of)g(an)m(y)h(real)f(reading)f(op)s (erations.)150 4657 y Fi(Accuracy)47 b Fp(Accuracy)31 b(is)e(a)h(maxim)m(um)f(b)s(ound)e(on)j(the)g(absolute)g(v)-5 b(alue)29 b(of)h(the)g(di\013erence)f(b)s(et)m(w)m(een)377 4770 y(sim)m(ultaneous)j(v)-5 b(alues)32 b(of)i(the)f(sync)m(hronized)f (clo)s(c)m(k)i(and)e(an)h(ideal)f(clo)s(c)m(k)i(started)f(at)h(the)f (syn-)377 4882 y(c)m(hronized)d(clo)s(c)m(k)h(h)m(yp)s(othetical)f (starting)g(time)g(\(some)h(critical)e(instan)m(t)h(in)f(time\).)377 5032 y(If)e(sync)m(hronized)f(clo)s(c)m(ks)h(are)h(p)s(erio)s(dically) 23 b(corrected)28 b(in)e(order)h(to)g(deal)g(with)f(drifts)f(and)i (other)377 5145 y(inaccuracies,)45 b(the)e(calculation)f(of)h(the)f(in) m(terv)-5 b(al)42 b(accuracy)i(based)e(up)s(on)f(drift)g(will)e(b)s(e)j (to)s(o)377 5258 y(p)s(essimistic)28 b(for)i(large)g(in)m(terv)-5 b(als.)377 5407 y(This)29 b(v)-5 b(alue)30 b(can)g(also)h(b)s(e)e(used) h(for)g(cross-platform)g(sync)m(hronization.)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 5 6 bop 150 -200 a Fh(8.2.)72 b(REAL-TIME)30 b(MESSA)m(GE-P)-8 b(ASSING)31 b(REQUIREMENTS)1123 b Fp(5)150 99 y Fi(Access)36 b(Time)44 b Fp(Access)22 b(Time)d(is)g(a)i(maxim)m(um)e(b)s(ound)f(on)j (the)f(time)g(to)h(execute)h(a)e(call)g(of)g(MPI)p 3484 99 28 4 v 33 w(WTIME,)377 211 y(This,)34 b(of)g(course,)h(assumes)f (that)g(the)g(execution)h(of)f(the)g(call)f(is)g(not)h(in)m(terrupted)f (b)m(y)h(the)g(op-)377 324 y(erating)29 b(system.)41 b(This)27 b(undesirable)f(and)j(am)m(biguous)f(ca)m(v)m(eat)k(is)c (necessary)h(with)f(the)h(curren)m(t)377 437 y(op)s(erating)k(systems)g (\(esp)s(ecially)f(those)h(with)f(virtual)f(memory\))j(b)s(ecause)f(an) g(absolute)g(guar-)377 550 y(an)m(tee)f(w)m(ould)d(b)s(e)h(so)h(long)f (as)g(to)h(b)s(e)f(practically)f(un)m(usable.)377 700 y(Implemen)m(tations)h(that)h(are)g(based)f(on)h(accessing)g(the)g (same)g(global)f(clo)s(c)m(k)h(instead)f(of)h(a)g(lo)s(cal)377 813 y(sync)m(hronized)c(one)h(will)d(ha)m(v)m(e)k(the)f(same)g (resolution)f(for)g(all)g(no)s(des,)h(with)e(zero)j(sk)m(ew,)g(no)e (drift,)377 926 y(and)36 b(iden)m(tical)e(accuracy)k(\(sub)5 b(ject)36 b(to)g(the)h(propagation)f(dela)m(y)f(of)i(the)f(clo)s(c)m(k) g(signal\))f(for)h(all)377 1039 y(pro)s(cessing)31 b(no)s(des.)44 b(Ho)m(w)m(ev)m(er,)34 b(the)e(access)h(times)e(could)g(still)e(v)-5 b(ary)32 b(at)g(eac)m(h)h(pro)s(cessing)e(no)s(de)377 1152 y(and)f(across)h(all)e(the)i(pro)s(cessing)e(no)s(des.)40 b(A)30 b(b)s(ound)f(on)h(this)f(v)-5 b(ariabilit)m(y)28 b(is)i(needed.)150 1395 y Ff(8.2.4)97 b(MPI/RT)31 b(Clo)s(ck)i(A)m (ttributes)150 1567 y Fp(In)i(order)g(for)g Fl(MPI)p Fp(/R)-8 b(T)36 b(to)g(allo)m(w)f(p)s(ortable)f(applications)g(across)i (a)g(wide)e(v)-5 b(ariet)m(y)36 b(of)f(parallel)f(real-)150 1680 y(time)j(systems,)i(it)e(is)f(necessary)i(to)g(encapsulate)f(the)g (clo)s(c)m(k)h(sync)m(hronization)e(parameters)i(of)f(sec-)150 1793 y(tion)j(8.2.3)j(in)c(a)j(system)f(indep)s(enden)m(t)d(w)m(a)m(y) -8 b(.)74 b Fl(MPI)40 b Fp(pro)m(vides)g(a)h(cac)m(hing)h(facilit)m(y)d (that)j(allo)m(ws)e(an)150 1906 y(application)i(to)j(attac)m(h)h (arbitrary)d(pieces)h(of)g(information,)j(called)c Fi(attributes)p Fp(,)k(to)e(b)s(oth)e(in)m(tra-)150 2019 y(and)h(in)m(tercomm)m (unicators.)84 b(This)43 b(information)g(is)h(retriev)m(ed)h(b)m(y)f (referencing)h(a)g Fj(key)p Fp(.)83 b(A)45 b(set)h(of)150 2132 y(attributes)j(that)h(describ)s(e)e(the)i(execution)f(en)m (vironmen)m(t)g(are)h(attac)m(hed)i(to)e(the)g(comm)m(unicator)150 2245 y(MPI)p 333 2245 V 33 w(COMM)p 669 2245 V 33 w(W)m(ORLD)39 b(when)f Fl(MPI)g Fp(is)g(initialized.)63 b(The)38 b(v)-5 b(alue)38 b(of)h(these)g(attributes)g(can)g(b)s(e)f(in-)150 2357 y(quired)f(b)m(y)h(using)f(the)h(function)f(MPI)p 1530 2357 V 33 w(A)-8 b(TTR)p 1822 2357 V 32 w(GET.)39 b(A)m(t)g(initialization)c(time,)41 b Fl(MPI)p Fp(/R)-8 b(T)38 b(adds)g(the)150 2470 y(follo)m(wing)29 b(k)m(eys)i(to)g(MPI)p 1028 2470 V 33 w(COMM)p 1364 2470 V 32 w(W)m(ORLD:)286 2683 y Fk(\017)46 b Fp(MPI)p 560 2683 V 33 w(WTIME)p 930 2683 V 33 w(DRIFT)30 b(\(DOUBLE\))286 2871 y Fk(\017)46 b Fp(MPI)p 560 2871 V 33 w(WTIME)p 930 2871 V 33 w(SKEW)30 b(\(DOUBLE\))286 3058 y Fk(\017)46 b Fp(MPI)p 560 3058 V 33 w(WTIME)p 930 3058 V 33 w(A)m(CCURA)m(CY)31 b(\(DOUBLE\))286 3246 y Fk(\017)46 b Fp(MPI)p 560 3246 V 33 w(WTIME)p 930 3246 V 33 w(A)m(CCESS)p 1324 3246 V 31 w(TIME)30 b(\(DOUBLE\))332 3458 y(The)22 b(v)-5 b(alues)23 b(of)g(the)g(listed)f (parameters)h(do)g(not)g(dep)s(end)f(on)h(what)g(applications)e(are)i (running)e(but)150 3571 y(rather)29 b(on)f(the)h(parallel)e(en)m (vironmen)m(t.)40 b(These)29 b(parameters)g(represen)m(t)f(constrain)m (ts)h(on)g(the)g(c)m(hanges)150 3684 y(to)e(the)g(en)m(vironmen)m(t.)39 b(F)-8 b(or)27 b(example,)g(the)g(sk)m(ew)f(should)f(not)h(b)s(e)g (increased)g(when)f(new)h(pro)s(cesses)h(are)150 3797 y(added)j(while)e(an)i(application)f(is)g(running.)150 4041 y Ff(8.2.5)97 b(Comments)150 4212 y Fp(Q:)30 b(Can)g(clo)s(c)m(k)h (sync)m(hronization)e(b)s(e)h(message)h(based)g(using)d(the)j(net)m(w)m (ork)g(used)f(for)g(data)h(transfer?)150 4325 y(A:)g(Y)-8 b(es,)31 b(but)f(it)g(probably)e(will)g(not)j(ha)m(v)m(e)g(v)m(ery)g (go)s(o)s(d)f(p)s(erformance.)150 4438 y(Q:)g(Can)g(it)g(b)s(e)g (message)h(based?)150 4551 y(A:)26 b(It)g(probably)d(will)g(b)s(e)i (message)i(based,)f(but)f(will)e(use)i(a)h(separate)g(dedicated)g(net)m (w)m(ork.)39 b(This)24 b(is)h(the)150 4664 y(w)m(a)m(y)31 b(sev)m(eral)g(MPPs)f(already)g(do)h(it,)f(lik)m(e)f(the)i(Mercury)f (RA)m(CE)g(Systems)g(and)g(the)h(In)m(tel)f(P)m(aragon.)150 4777 y(Q:)f(Should)d(w)m(e)j(ha)m(v)m(e)h(a)f(maxim)m(um)f(allo)m(w)m (able)g(b)s(ound)f(on)h(the)h(sk)m(ew)g(and)f(if)g(y)m(es,)i(what)f (should)d(it)j(b)s(e?)150 4890 y(Q:)38 b(What)g(a\013ects)i(access)f (time)f(to)h(the)f(sync)m(hronized)e(clo)s(c)m(k?)64 b(Where)38 b(is)f(the)h(sync)m(hronized)f(time)150 5003 y(stored?)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 6 7 bop 150 -200 a Fp(6)960 b Fh(CHAPTER)30 b(8.)71 b(REAL-TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)150 99 y Fm(8.3)116 b(Instrumentation)150 301 y Fp(Instrumen)m(tation)36 b(is)f(an)h(essen)m(tial)h(asp)s(ect)f (to)i(pro)m(viding)c(the)j(to)s(ols)f(needed)g(to)h(pro)m(vide)f (program-)150 414 y(mers)c(with)f(qualit)m(y)h(of)g(service)g (assurances)h(and)e(for)h(tuning)f(on)i(sp)s(eci\014c)e(hardw)m(are)h (con\014gurations)150 527 y(\(ac)m(hieving)h(the)g(p)s(erformance)f (part)h(of)h(p)s(erformance)e(p)s(ortabilit)m(y)f(without)h(resorting)g (to)i(rewriting)150 640 y(applications)29 b(from)g(scratc)m(h\).)332 753 y(F)-8 b(or)44 b(all)e(v)m(ersions)g(of)i(real-time)f Fl(MPI)g Fp(more)g(instrumen)m(tation)f(is)g(needed)h(than)g(is)f (curren)m(tly)150 866 y(a)m(v)-5 b(ailable)31 b(in)f(existing)h(to)s (ols.)44 b(Ho)m(w)m(ev)m(er,)34 b(for)d(initial)e(implemen)m(tations)h (w)m(e)i(ha)m(v)m(e)h(c)m(hosen)f(a)g(minimal)150 979 y(approac)m(h)i(to)h(instrumen)m(tation.)49 b(W)-8 b(e)35 b(ha)m(v)m(e)g(added)e(a)h(few)g(ev)m(en)m(ts)h(\(states\))g(that)g (are)f(b)s(e)f(logged)h(for)150 1092 y(the)f(op)s(erations)g(presen)m (ted)g(ab)s(o)m(v)m(e.)49 b(An)33 b(initial)d(implemen)m(tation)i(can)h (c)m(ho)s(ose)h(either)f(to)h(add)e(them)150 1205 y(directly)23 b(to)i(the)g(list)e(of)i(logged)f(ev)m(en)m(ts)i(\(states\))h(or)d(pro) m(vide)f(an)i(external)f(in)m(terface)h(for)f(them.)39 b(Notice)150 1318 y(that)24 b(some)g(ev)m(en)m(ts,)j(suc)m(h)c(as)h (the)g(completion)f(of)g(sc)m(heduled)g(sends)f(and)h(receiv)m(es,)j (are)e(in)m(ternal)f(ev)m(en)m(ts)150 1431 y(of)31 b(the)f Fl(MPI)g Fp(implemen)m(tation.)332 1543 y(The)h(primary)f(goal)i(for)f (the)h(addition)e(of)i(real-time)f(instrumen)m(tation)g(is)f(to)j (enable)e(the)h(appli-)150 1656 y(cation)c(to)h(get)g(a)g(clear)f (picture)f(of)h(when)f(and)g(for)h(what)g(op)s(eration)f(di\013eren)m (t)h(systems)g(resources)g(are)150 1769 y(used.)39 b(Ideally)-8 b(,)26 b(w)m(e)g(w)m(ould)f(lik)m(e)h(to)g(record)g(the)h(information)d (for)i(eac)m(h)h(resource)g(individually)-8 b(.)34 b(Again,)150 1882 y(there)c(is)e(a)i(distinction)d(b)s(et)m(w)m(een)j(global)f(and)g (lo)s(cal)g(resources.)40 b(As)29 b(stated)i(b)s(efore,)e(implemen)m (tation)150 1995 y(of)g(the)f(instrumen)m(tation)f(ma)m(y)i(b)s(e)f (handicapp)s(ed)d(b)m(y)k(inadequacies)e(of)i(op)s(erating)e(systems,)i (comm)m(u-)150 2108 y(nication)34 b(proto)s(cols)h(and)f(so)h(on.)54 b(The)35 b Fl(MPI)f Fp(implemen)m(tation)g(ma)m(y)i(not)f(ev)m(en)g(b)s (e)g(a)m(w)m(are)h(of)f(all)f(the)150 2221 y(resources)28 b(b)s(eing)f(used)h(b)m(y)g(the)h(host)f(comm)m(unication)g(facilities) f(that)i(are)f(called)g(b)m(y)g Fl(MPI)p Fp(.)h(Ho)m(w)m(ev)m(er,)150 2334 y(it)e(should)f(b)s(e)h(clear)h(that)h(in)d(some)j(circumstances)e (where)g(timing)g(is)g(critical,)g(an)h(application)e(w)m(ould)150 2447 y(lik)m(e)37 b(to)i(kno)m(w)f(information)e(ab)s(out)i(times)f(of) i(resource)f(use)f(b)m(y)h(in)m(ternal)f Fl(MPI)h Fp(\(and)f(nativ)m (e\))i(com-)150 2560 y(m)m(unication)33 b(ev)m(en)m(ts)j(\(and)d (states\).)54 b(Curren)m(tly)-8 b(,)34 b(there)g(is)g(little)f (information)f(a)m(v)-5 b(ailable)34 b(concerning)150 2673 y(in)m(ternal)29 b Fl(MPI)h Fp(ev)m(en)m(ts,)i(with)d(the)i (notable)f(exception)h(of)f(the)h(arriv)-5 b(al)29 b(of)h(a)h(message.) 332 2785 y(W)-8 b(e)27 b(defer)g(sp)s(eci\014cation)e(of)h(ho)m(w)h (the)g(data)g(is)e(recorded,)j(k)m(ept,)g(and)e(stored)g(un)m(til)f(w)m (e)i(ha)m(v)m(e)h(some)150 2898 y(exp)s(erience)34 b(with)f(implemen)m (tations.)52 b(But)34 b(it)g(should)f(b)s(e)h(clear)g(that)h(one)g(w)m (ould)e(lik)m(e)h(to)h(minimize)150 3011 y(the)c(impact)f(of)g (instrumen)m(tation)f(on)h(the)h(timing)e(b)s(eha)m(vior)g(of)i(an)f (application.)150 3210 y Fi(Ev)m(en)m(ts:)525 3323 y Fp(Starting)g(time)g(of)h(a)g(message)g(transfer)525 3436 y(Execution)f(time)g(of)h(a)g(message)g(transfer)525 3549 y(Completion)e(time)h(of)h(a)g(message)g(transfer)525 3662 y(Execution)f(time)g(of)h(timeout)f(handlers)525 3775 y(Starting)g(time)g(for)g(v)-5 b(arious)30 b(other)g(system)h (resources)525 3888 y(Execution)f(time)g(for)h(v)-5 b(arious)29 b(other)i(system)f(resources)525 4000 y(Completion)f(time)h(for)h(v)-5 b(arious)29 b(other)h(system)h(resources)150 4398 y Fm(8.4)116 b(Timing)36 b(Co)m(rrectness)150 4601 y Fp(Timing)28 b(correctness)j(has)f(these)h(prop)s(erties:)286 4799 y Fk(\017)46 b Fp(Program)28 b(can)f(pro)s(ceed,)h(in)e(a)i(meaningful) d(w)m(a)m(y)-8 b(,)30 b(only)c(if)g(all)h(previous)e(steps)j(are)f (time-correct.)286 4983 y Fk(\017)46 b Fp(Most)26 b(basic)f Fl(MPI)g Fp(\(curren)m(t\))h(functions)d(should)h(ha)m(v)m(e)i (analogous)g(functions)d(for)i(real-time)g(that)377 5095 y(guaran)m(tee)32 b(message)g(passing)d(in)g(a)i(timely)e(fashion.)332 5294 y(F)-8 b(or)23 b(practicalit)m(y)-8 b(,)24 b(the)f(w)m(ork)f(of)h (this)e(c)m(hapter)i(should)e(b)s(e)g(to)j(minimize)19 b(the)k(n)m(um)m(b)s(er)e(of)i(new)f(func-)150 5407 y(tions)h(in)m(tro) s(duced)f(in)m(to)i Fl(MPI)g Fp(pro\014les)e(to)j(pro)m(vide)e(these)h (features.)39 b(F)-8 b(or)24 b(instance,)h(w)m(e)g(should)c(not)k(add) 3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 7 8 bop 150 -200 a Fh(8.5.)72 b(VIR)-8 b(TUAL)31 b(CHANNELS)2385 b Fp(7)150 99 y(new)28 b(v)m(ersions)g(of)g(eac)m(h)i(send)e(and)f (receiv)m(e)j(mo)s(de,)e(increasing)f(the)i(n)m(um)m(b)s(er)e(of)i (calls)e(m)m(ultiplicitiv)m(ely)-8 b(,)150 211 y(but)30 b(rather)g(seek)h(solutions)e(that)i(cause)g(additiv)m(e)e(additions)f (in)i(the)g(n)m(um)m(b)s(er)f(of)i(calls.)150 494 y Fm(8.5)116 b(Virtual)38 b(Channels)150 697 y Fp(The)c(idea)g(of)g(a)h(soft)m(w)m (are)h(virtual)c(c)m(hannel)i(\(V)m(C's\))i(is)d(not)i(new)e(in)g(a)i (parallel)e(mac)m(hine.)52 b(Thinking)150 810 y(Mac)m(hines)28 b(has)f(it)h(on)f(the)h(CM-5)g(via)g(CMMD)g(where)f(the)h(motiv)-5 b(ation)28 b(is)e(to)j(minimize)c(handshaking)150 923 y(o)m(v)m(erhead.)42 b(Our)29 b(motiv)-5 b(ations)30 b(for)g(ha)m(ving)g(V)m(C's)h(in)e Fl(MPI)p Fp(/R)-8 b(T)30 b(are)h(as)g(follo)m(ws:)286 1088 y Fk(\017)46 b Fp(Abilit)m(y)29 b(to)i(exploit)e(p)s(ersisten)m(t)h(comm)m (unication)286 1267 y Fk(\017)46 b Fp(Deadlo)s(c)m(k)31 b(a)m(v)m(oidance)286 1446 y Fk(\017)46 b Fp(Once)24 b(established,)g(V)m(C's)g(should)e(guaran)m(tee)j(prop)s(erties)d (critical)h(for)g(timing)g(correctness)h(lik)m(e:)480 1625 y Fi({)45 b Fp(Bounds)30 b(on)g(end-to-end)h(dela)m(y)480 1763 y Fi({)45 b Fp(Minim)m(um)28 b(bandwidth)480 1900 y Fi({)45 b Fp(Bu\013er)31 b(space)332 2079 y(A)m(t)45 b(the)g(Marc)m(h)g(meeting,)j(the)c(group)g(agreed)h(that)g(V)m(C's)f (w)m(ould)f(an)i(excellen)m(t)f(v)m(ehicle)g(for)150 2192 y(implemen)m(tation,)29 b(but)h(w)m(ere)h(not)f(strongly)g (committed)h(to)g(their)e(use)h(as)h(an)f(in)m(terface.)150 2474 y Fm(8.6)116 b(Deadlo)s(ck)38 b(Avoidance/Recovery)150 2677 y Fp(It)e(is)f(imp)s(ortan)m(t)g(to)h(b)s(e)g(able)f(to)i(prev)m (en)m(t,)h(a)m(v)m(oid)e(or)g(in)e(the)i(w)m(orst)h(case)f(detect)i (and)d(reco)m(v)m(er)i(from)150 2790 y(deadlo)s(c)m(ks.)50 b(The)34 b(problem)e(of)i(deadlo)s(c)m(ks)f(is)g(di\016cult)e(in)i (distributed)d(real-time)k(systems)g(and)f(it)g(is)150 2903 y(exacerbated)f(with)d(prioritization.)332 3016 y(Tw)m(o)h(p)s(ossible)e(side)i(issues)f(are)h(as)h(follo)m(ws:)286 3182 y Fk(\017)46 b Fp(Liv)m(elo)s(c)m(k)37 b(|)g(it)f(happ)s(ens)g (when)f(t)m(w)m(o)k(in)m(teracting)e(tasks)g(miss)f(deadlines)f(due)h (to)i(one)f(doing)377 3295 y(some)31 b(secondary)g(activit)m(y)f(when)g (the)g(other)h(tries)f(to)h(rendezv)m(ous.)286 3474 y Fk(\017)46 b Fp(Orphan)38 b(pro)s(cesses)i(|)g(in)f(the)h(presence)g (of)g(spa)m(wn)f(capabilit)m(y)g(\(a)i(pro)s(cess)e(creating)i(other) 377 3587 y(pro)s(cesses\))31 b(and)f(failures.)332 3753 y Fl(MPI)p Fp(/R)-8 b(T)40 b(will)e(utilize)g(timeouts)i(to)h(help)e (applications)f(deal)i(with)f(deadlo)s(c)m(k)h(in)e(the)j(face)g(of)150 3866 y(p)s(ossible)h(remote)j(faults)f(or)g(remote)i(resource)e (exhaustion.)83 b(Both)45 b(sender-)f(and)f(receiv)m(er-based)150 3979 y(timeouts)30 b(are)h(to)g(b)s(e)f(considered.)332 4092 y(Sp)s(eci\014cally)-8 b(,)35 b(w)m(e)h(exp)s(ect)h(non-blo)s(c)m (king,)f(p)s(ersisten)m(t)f(comm)m(unication)g(to)h(b)s(e)g(used)f(to)h (reco)m(v)m(er)150 4204 y(from)d(deadlo)s(c)m(k.)50 b(The)33 b(follo)m(wing)f(allo)m(ws)h(one)h(to)h(async)m(hronously)d(start)i(a)g (receiv)m(e,)i(and)d(then)g(w)m(ait)150 4317 y(immediately)c(for)h(its) g(completion,)f(with)h(a)g(de\014ned)f(timeout.)150 4504 y Fd(MPI_Status)45 b(status;)150 4617 y(MPI_Request)g(request;)150 4730 y(MPI_Receive_init\(buf,)d(count,)k(datatype,)f(src,)i(tag,)g (comm,)f(&request\);)150 4843 y(...)150 4956 y(for\(;;\))150 5068 y({)293 5181 y(MPI_Start\(request\);)293 5294 y (MPI_Wait_timeout\(request,)41 b(&status\);)150 5407 y(})-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 8 9 bop 150 -200 a Fp(8)960 b Fh(CHAPTER)30 b(8.)71 b(REAL-TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)332 99 y Fp(Alternativ)m(ely)-8 b(,)30 b(a)h(single)e(call,)150 311 y Fd(MPI_Start_and_wait\(reque)o (st,)41 b(status,)46 b(timeout\);)332 524 y Fp(could)33 b(b)s(e)h(considered,)g(and)g(migh)m(t)g(ha)m(v)m(e)h(v)-5 b(alue)34 b(in)f(that)i(it)e(is)h(atomic.)53 b(T)-8 b(o)34 b(b)s(e)g(complete,)i(this)150 636 y(prop)s(osal)29 b(should)f(address) i(\\all")g(mo)s(des,)g(as)h(w)m(ell)e(as)i(single)e(p)s(ersisten)m(t)g (op)s(erations.)332 749 y(A)e(similar)e(sequence)i(of)h(calls)e(w)m (ould)g(b)s(e)g(used)h(to)h(ac)m(hiev)m(e)g(send)f(with)f(timeout.)39 b(This)26 b(approac)m(h)150 862 y(mak)m(es)31 b(only)f(an)g(additiv)m (e)f(addition)g(to)i(the)g(n)m(um)m(b)s(er)e(of)h(calls)g(in)f(MPI.)150 1149 y Fm(8.7)116 b(F)m(ault)39 b(T)-10 b(olerance)150 1352 y Fp(Issues)30 b(of)g(fault)g(tolerance)h(are)g(imp)s(ortan)m(t)e (for)h(real-time)g(and)g(em)m(b)s(edded)g(systems:)286 1564 y Fk(\017)46 b Fp(Limit)29 b(failures)286 1752 y Fk(\017)46 b Fp(F)-8 b(ault)31 b(detection)286 1939 y Fk(\017)46 b Fp(Pro)s(cess)31 b(migration)e(\(extend)i(dynamic)e(pro)s (cesses)h(in)f Fl(MPI-2)p Fp(?\))286 2127 y Fk(\017)46 b Fp(Lo)s(cal)30 b(bu\013er)g(managemen)m(t)286 2315 y Fk(\017)46 b Fp(Replication)286 2502 y Fk(\017)g Fp(History)30 b(preserv)-5 b(ation)332 2715 y(Our)34 b(curren)m(t)i(idea)f(for)h(ho)m (w)f(fault)g(tolerance)i(is)e(to)h(b)s(e)f(accomplished)g(is)f(via)i Fd(MPI)p 3302 2715 29 4 v 33 w(SPAWN)f Fp(and)150 2828 y Fd(MPI)p 300 2828 V 34 w(NOTIFY)p Fp(,)28 b(b)s(oth)i(describ)s(ed)e (in)h(the)i(Dynamic)f(c)m(hapter)h(of)g Fl(MPI-2)p Fp(.)332 2941 y(Another)k(approac)m(h,)i(discussed)d(early)h(on)g(at)h(the)g Fl(MPI-2)g Fp(F)-8 b(orum,)37 b(and)d(expanded)h(here,)i(is)d(to)150 3054 y(pro)m(vide)29 b(a)i(reco)m(v)m(erable)h(comm)m(unicator.)41 b(This)29 b(w)m(ould)g(b)s(e)g(handled)g(as)i(follo)m(ws:)286 3266 y Fk(\017)46 b Fp(A)31 b(fault)e(o)s(ccurs)h(in)g(some)g(no)s(de)g (or)g(no)s(des)g(of)g(a)h(comm)m(unicator)286 3454 y Fk(\017)46 b Fp(The)30 b(paren)m(t)h(of)f(the)h(spa)m(wned)f(group)f (is)h(noti\014ed)f(of)i(the)f(fault)g(or)g(faults)286 3641 y Fk(\017)46 b Fp(The)28 b(paren)m(t,)h(at)g(its)e(option,)h (kills)e(the)i(fault)m(y)g(no)s(de)f(or)h(no)s(des)g(of)g(the)g(comm)m (unicator)h(through)377 3754 y(an)i(async)m(hronous)e(mec)m(hanism)h (\()p Fj(e.g.)p Fp(,)g Fd(MPI)p 1913 3754 V 34 w(SIGNAL)p Fp(\))286 3942 y Fk(\017)46 b Fp(The)28 b(paren)m(t)g(signals)f(the)i (remaining)d(pro)s(cesses)i(of)g(the)h(comm)m(unicator)f(async)m (hronously)-8 b(,)29 b(and)377 4055 y(they)i(execute)h(a)e(signal)f (handler)g(as)i(follo)m(ws:)377 4305 y Fd(MPI_COMM_RECREATE\(IN)43 b(oldcomm,)i(IN)i(newgroup,)f(OUT)g(newcomm,)g(OUT)h(status\);)377 4555 y Fp(where)31 b(the)h Fd(newgroup)d Fp(has)i(b)s(een)g(passed)g (as)h(part)f(of)h(the)f(fault)g(reco)m(v)m(ery)-8 b(,)34 b(through)d(a)h(mec)m(ha-)377 4668 y(nism)27 b(to)h(b)s(e)g(de\014ned.) 39 b(It)28 b(ma)m(y)h(b)s(e)e(necessary)h(for)g(a)h(single)e(no)s(de)g (to)i(execute)g(sev)m(eral)g(handlers,)377 4780 y(if)k(it)g(is)g(in)m (v)m(olv)m(ed)g(in)g(a)h(n)m(um)m(b)s(er)e(of)i(comm)m(unicators,)h (and)e(implemen)m(tations)g(should)e(b)s(e)i(able)377 4893 y(to)e(do)g(this)e(e\016cien)m(tly)-8 b(.)332 5106 y(The)30 b(seman)m(tics)g(of)h Fd(MPI)p 1185 5106 V 33 w(COMM)p 1410 5106 V 34 w(RECREATE)d Fp(are)j(that)g(it)e(sync)m (hronizes)h(o)m(v)m(er)i(the)e Fd(newgroup)p Fp(.)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 9 10 bop 150 -200 a Fh(8.8.)72 b(REAL-TIME)30 b(PERSISTENT)e(CHANNELS) 1661 b Fp(9)150 99 y Fm(8.8)116 b(Real-time)37 b(P)m(ersistent)i (Channels)150 301 y Fp(One)h(of)h(the)g(primary)e(goals)i(of)f Fl(MPI)p Fp(/R)-8 b(T)41 b(is)f(to)h(pro)m(vide)f(real-time)g (functionalit)m(y)f(with)h(minimal)150 414 y(mo)s(di\014cation)31 b(of)i(the)g(existing)e(MPI)i(standard.)47 b(Th)m(us,)32 b(one)h(should)e(minimize)f Fj(additive)j Fp(new)g(func-)150 527 y(tions)e(for)h(MPI)f(whic)m(h)g(mo)s(dify)f(the)i(man)m(y)f(send)g (and)g(receiv)m(e)i(calls)e(and)g(result)g(in)f(a)i(m)m(ultiplicativ)m (e)150 640 y(c)m(hange)j(to)g(the)g(MPI)f(standard.)51 b(One)34 b(w)m(a)m(y)h(this)e(can)i(b)s(e)e(accomplished)g(is)g(with)g (the)i(mo)s(di\014cation)150 753 y(of)c(the)f Fl(MPI)g Fp(p)s(ersisten)m(t)g(comm)m(unications)f(to)i(pro)m(vide)f(sc)m (heduled)f(sends)h(and)f(receiv)m(es.)332 866 y(P)m(ersisten)m(t)23 b(c)m(hannels)f(are)h(prop)s(osed)e(in)g(the)i Fl(MPI-2)g Fp(collectiv)m(e)g(c)m(hapter.)39 b(The)22 b(real-time)g(v)-5 b(arian)m(ts)150 979 y(pro)m(vide)29 b(the)i(follo)m(wing)e(features:) 286 1191 y Fk(\017)46 b Fp(Negotiation)32 b(of)e(adv)-5 b(ance)31 b(reserv)-5 b(ations)30 b(on)g(net)m(w)m(ork)i(or)e(PV)m(Cs)g (...)286 1379 y Fk(\017)46 b Fp(Addressing)29 b(an)m(y)h(sp)s(ecial)f (issues)g(of)i(alignmen)m(t/misalignmen)m(t)286 1567 y Fk(\017)46 b Fp(Negotiation)32 b(for)e(who)g(do)s(es)g(an)m(y)h (needed)f(data)h(con)m(v)m(ersion)286 1754 y Fk(\017)46 b Fp(Change)31 b(of)f(proto)s(col)g(as)h(function)e(of)i(length)e(of)i (data)332 1967 y(with)e(the)h(addition)f(of)i(qualit)m(y)e(of)i (service)f(and)g(priorit)m(y)e(options.)332 2080 y(W)-8 b(e)31 b(prop)s(ose:)150 2382 y Fl(MPI)p 318 2382 28 4 v 33 w(RTCHANNEL)p 886 2382 V 33 w(SEND)p 1154 2382 V 33 w(INIT\(buf,)g(count,)g(t)m(yp)s(e,)g(dest,)g(qosblo)s(ck,)g (comm,)h(request)f(\))233 2536 y Fc(IN)312 b Fl(buf)1051 b Fc(address)27 b(of)g(send)h(bu\013er)g(\(c)n(hoice\))233 2686 y(IN)312 b Fl(count)961 b Fc(in)n(teger)18 b(arra)n(y)e(\(of)j (length)f(group)g(size\))g(sp)r(ecifying)g(the)h(n)n(um-)1810 2799 y(b)r(er)28 b(of)g(elemen)n(ts)f(to)g(send)233 2950 y(IN)312 b Fl(t)m(yp)s(e)1011 b Fc(data)28 b(t)n(yp)r(e)f(of)h(send)f (bu\013er)h(\(handle\).)233 3100 y(IN)312 b Fl(dest)1018 b Fc(rank)27 b(of)h(destination)f(data)g(\(in)n(teger\).)233 3250 y(INOUT)125 b Fl(qosblo)s(ck)845 b Fc(opaque)27 b(qualit)n(y)g(of)h(service)e(parameters.)233 3400 y(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(\(handle\).)233 3551 y(OUT)217 b Fl(request)900 b Fc(request)27 b(ob)5 b(ject)28 b(\(p)r(ersisten)n(t)f(request\))332 3800 y Fp(This)34 b(is)h(a)h(collectiv)m(e)h(op)s(eration)e(with)g(a)h(single) f(no)s(de)g(in)g(the)h(comm)m(unicator,)i(namely)d Fd(dest)p Fp(,)150 3912 y(whic)m(h)29 b(is)h(to)h(call)332 4025 y Fl(MPI)p 500 4025 V 32 w(CHANNEL)p 946 4025 V 35 w(RECV)p 1213 4025 V 32 w(INIT\(\))p Fp(,)332 4138 y(de\014ned)e(next.)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 10 11 bop 150 -200 a Fp(10)915 b Fh(CHAPTER)30 b(8.)71 b(REAL-TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)150 99 y Fl(MPI)p 318 99 28 4 v 33 w(RTCHANNEL)p 886 99 V 33 w(RECV)p 1151 99 V 33 w(INIT\(buf,)f(count,)g(t)m(yp)s(e,)g(src,)g(qosblo)s(ck,) g(comm,)h(request)f(\))233 253 y Fc(IN)312 b Fl(buf)1051 b Fc(address)27 b(of)g(receiv)n(e)g(bu\013er)g(\(c)n(hoice\))233 403 y(IN)312 b Fl(count)961 b Fc(in)n(teger)18 b(arra)n(y)e(\(of)j (length)f(group)g(size\))g(sp)r(ecifying)g(the)h(n)n(um-)1810 516 y(b)r(er)28 b(of)g(elemen)n(ts)f(to)g(send)233 666 y(IN)312 b Fl(t)m(yp)s(e)1011 b Fc(data)28 b(t)n(yp)r(e)f(of)h(send)f (bu\013er)h(\(handle\).)233 817 y(IN)312 b Fl(src)1067 b Fc(rank)27 b(of)h(source)e(data)h(\(in)n(teger\).)233 967 y(INOUT)125 b Fl(qosblo)s(ck)845 b Fc(opaque)27 b(qualit)n(y)g(of)h (service)e(parameters.)233 1117 y(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(\(handle\).)233 1267 y(OUT)217 b Fl(request)900 b Fc(request)27 b(ob)5 b(ject)28 b(\(p)r(ersisten)n(t) f(request\))332 1516 y Fp(A)k(full)f(c)m(hannel)h(can)h(b)s(e)e (constructed)i(b)m(y)g(the)f(use)h(of)f(t)m(w)m(o)i(half-c)m(hannel)d (initializations.)41 b(They)150 1629 y(are)31 b(logically)e(unrelated,) g(ev)m(en)i(if)f(they)g(share)g(the)h(same)g(comm)m(unicator.)332 1742 y(In)f(order)f(to)j(maximally)c(allo)m(w)i(for)g(sp)s (eci\014cation)f(of)i(desired)e(bu\013ering)g(sc)m(hemes)i(in)e(the)h (c)m(han-)150 1855 y(nels,)g(a)g(ready)h(v)-5 b(arian)m(t)30 b(and)g(a)g(sync)m(hronous)g(v)-5 b(arian)m(t)30 b(are)h(needed:)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 11 12 bop 150 -200 a Fh(8.8.)72 b(REAL-TIME)30 b(PERSISTENT)e(CHANNELS) 1615 b Fp(11)150 99 y Fl(MPI)p 318 99 28 4 v 33 w(RTCHANNEL)p 886 99 V 33 w(SSEND)p 1205 99 V 32 w(INIT\(buf,)32 b(count,)f(t)m(yp)s (e,)g(dest,)f(qosblo)s(ck,)i(comm,)f(request)g(\))233 253 y Fc(IN)312 b Fl(buf)1051 b Fc(address)27 b(of)g(send)h(bu\013er)g (\(c)n(hoice\))233 395 y(IN)312 b Fl(count)961 b Fc(in)n(teger)18 b(arra)n(y)e(\(of)j(length)f(group)g(size\))g(sp)r(ecifying)g(the)h(n)n (um-)1810 508 y(b)r(er)28 b(of)g(elemen)n(ts)f(to)g(send)233 650 y(IN)312 b Fl(t)m(yp)s(e)1011 b Fc(data)28 b(t)n(yp)r(e)f(of)h (send)f(bu\013er)h(\(handle\).)233 792 y(IN)312 b Fl(dest)1018 b Fc(rank)27 b(of)h(destination)f(data)g(\(in)n(teger\).)233 934 y(INOUT)125 b Fl(qosblo)s(ck)845 b Fc(opaque)27 b(qualit)n(y)g(of)h (service)e(parameters.)233 1076 y(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(\(handle\).)233 1218 y(OUT)217 b Fl(request)900 b Fc(request)27 b(ob)5 b(ject)28 b(\(p)r(ersisten)n(t) f(request\))150 1656 y Fl(MPI)p 318 1656 V 33 w(RTCHANNEL)p 886 1656 V 33 w(SRECV)p 1202 1656 V 32 w(INIT\(buf,)32 b(count,)f(t)m(yp)s(e,)f(src,)h(qosblo)s(ck,)h(comm,)g(request)e(\))233 1810 y Fc(IN)312 b Fl(buf)1051 b Fc(address)27 b(of)g(receiv)n(e)g (bu\013er)g(\(c)n(hoice\))233 1952 y(IN)312 b Fl(count)961 b Fc(in)n(teger)18 b(arra)n(y)e(\(of)j(length)f(group)g(size\))g(sp)r (ecifying)g(the)h(n)n(um-)1810 2065 y(b)r(er)28 b(of)g(elemen)n(ts)f (to)g(send)233 2207 y(IN)312 b Fl(t)m(yp)s(e)1011 b Fc(data)28 b(t)n(yp)r(e)f(of)h(send)f(bu\013er)h(\(handle\).)233 2349 y(IN)312 b Fl(src)1067 b Fc(rank)27 b(of)h(source)e(data)h(\(in)n (teger\).)233 2491 y(INOUT)125 b Fl(qosblo)s(ck)845 b Fc(opaque)27 b(qualit)n(y)g(of)h(service)e(parameters.)233 2633 y(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(\(handle\).)233 2775 y(OUT)217 b Fl(request)900 b Fc(request)27 b(ob)5 b(ject)28 b(\(p)r(ersisten)n(t)f(request\))150 3213 y Fl(MPI)p 318 3213 V 33 w(RTCHANNEL)p 886 3213 V 33 w(RSEND)p 1213 3213 V 33 w(INIT\(buf,)k(count,)g(t)m(yp)s(e,)g(dest,)f(qosblo)s (ck,)i(comm,)g(request)e(\))233 3367 y Fc(IN)312 b Fl(buf)1051 b Fc(address)27 b(of)g(send)h(bu\013er)g(\(c)n(hoice\))233 3509 y(IN)312 b Fl(count)961 b Fc(in)n(teger)18 b(arra)n(y)e(\(of)j (length)f(group)g(size\))g(sp)r(ecifying)g(the)h(n)n(um-)1810 3622 y(b)r(er)28 b(of)g(elemen)n(ts)f(to)g(send)233 3764 y(IN)312 b Fl(t)m(yp)s(e)1011 b Fc(data)28 b(t)n(yp)r(e)f(of)h(send)f (bu\013er)h(\(handle\).)233 3906 y(IN)312 b Fl(dest)1018 b Fc(rank)27 b(of)h(destination)f(data)g(\(in)n(teger\).)233 4048 y(INOUT)125 b Fl(qosblo)s(ck)845 b Fc(opaque)27 b(qualit)n(y)g(of)h(service)e(parameters.)233 4190 y(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(\(handle\).)233 4332 y(OUT)217 b Fl(request)900 b Fc(request)27 b(ob)5 b(ject)28 b(\(p)r(ersisten)n(t)f(request\))150 4770 y Fl(MPI)p 318 4770 V 33 w(RTCHANNEL)p 886 4770 V 33 w(RRECV)p 1210 4770 V 32 w(INIT\(buf,)32 b(count,)f(t)m(yp)s(e,)g(src,)g(qosblo)s (ck,)g(comm,)h(request)f(\))233 4924 y Fc(IN)312 b Fl(buf)1051 b Fc(address)27 b(of)g(send)h(bu\013er)g(\(c)n(hoice\))233 5066 y(IN)312 b Fl(count)961 b Fc(in)n(teger)18 b(arra)n(y)e(\(of)j (length)f(group)g(size\))g(sp)r(ecifying)g(the)h(n)n(um-)1810 5179 y(b)r(er)28 b(of)g(elemen)n(ts)f(to)g(send)233 5321 y(IN)312 b Fl(t)m(yp)s(e)1011 b Fc(data)28 b(t)n(yp)r(e)f(of)h(send)f (bu\013er)h(\(handle\).)233 5463 y(IN)312 b Fl(src)1067 b Fc(rank)27 b(of)h(source)e(data)h(\(in)n(teger\).)233 5605 y(INOUT)125 b Fl(qosblo)s(ck)845 b Fc(opaque)27 b(qualit)n(y)g(of)h(service)e(parameters.)233 5747 y(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(\(handle\).)233 5889 y(OUT)217 b Fl(request)900 b Fc(request)27 b(ob)5 b(ject)28 b(\(p)r(ersisten)n(t)f(request\))332 6138 y Fp(Unlik)m(e)g(send)h(and)f(receiv)m(e,)j(that)f(p)s(ermit)e(mixing)f (and)i(matc)m(hing)g(of)h(t)m(yp)s(es)f(of)h(op)s(erations,)f(only)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 12 13 bop 150 -200 a Fp(12)915 b Fh(CHAPTER)30 b(8.)71 b(REAL-TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)150 99 y Fp(exactly)39 b(the)g(same)g(t)m(yp)s(e)g(of)g(c)m(hannel)f(calls)g(ma) m(y)h(b)s(e)f(matc)m(hed.)67 b Fl(MPI)p 2679 99 28 4 v 32 w(ANYSOURCE)37 b Fp(ma)m(y)j(not)f(b)s(e)150 211 y(p)s(osed)e(as)h(a)f(source)h(for)f(the)h(completion)f(of)h(a)g(c)m (hannel)f(initialization.)59 b(Only)36 b(built-in)e(datat)m(yp)s(es)150 324 y(ma)m(y)d(b)s(e)f(sp)s(eci\014ed)e(in)h(c)m(hannels.)332 437 y(The)24 b(qualit)m(y)g(of)h(service)f(parameters)h(will)d(b)s(e)i (de\014ned)g(for)g(this)g(new)g(opaque)h(ob)5 b(ject,)27 b Fl(MPI)p 3513 437 V 32 w(QOS)p Fp(.)150 550 y(These)j(ma)m(y)h(not)g (all)e(b)s(e)h(supp)s(orted)e(on)j(all)e(comm)m(unicators.)150 837 y Fm(8.9)116 b(Time-driven)36 b(MPI/RT)150 1040 y Fp(The)e(primary)f(goal)i(of)f(the)h(time-driv)m(en)e(approac)m(h)i(to) g Fl(MPI)p Fp(/R)-8 b(T)35 b(is)f(to)h(allo)m(w)f(the)h(real-time)f (appli-)150 1152 y(cation)f(su\016cien)m(t)g(con)m(trol)g(of)g(the)h (en)m(vironmen)m(t)e(in)g(whic)m(h)g(it)g(is)g(running)f(so)i(that)h (it)e(can)h(explicitly)150 1265 y(sc)m(hedule)42 b(its)h (message-passing)g(activities)g(and)f(resource)i(usage.)79 b(Since)42 b(MPI)h(is)f(designed)g(as)i(a)150 1378 y(message-passing)30 b(library)-8 b(,)29 b(it)g(can)h(not)g(sc)m(hedule)g(b)m(y)g(itself,)f (but)g(m)m(ust)h(dep)s(end)e(up)s(on)g(the)i(op)s(erating)150 1491 y(system)h(and)e(comm)m(unication)h(and)g(net)m(w)m(ork)h(proto)s (cols)f(to)h(enforce)g(sp)s(eci\014ed)e(sc)m(hedules.)332 1604 y(An)43 b(application)f(using)h(time-driv)m(en)f Fl(MPI)p Fp(/R)-8 b(T)44 b(will)d(b)s(e)j(able)f(to)h(sp)s(ecify)f (time)g(in)m(terv)-5 b(als)43 b(to)150 1717 y(b)s(ound)34 b(the)j(resource)g(usage)g(of)f(comm)m(unication)g(op)s(erations)g (using)f(globally)g(sync)m(hronized)h(clo)s(c)m(k)150 1830 y(v)-5 b(alues,)31 b(and)g(the)h(implemen)m(tation)e(of)h (time-driv)m(en)g Fl(MPI)p Fp(/R)-8 b(T)31 b(will)e(ful\014ll)f(these)k (requiremen)m(ts)e(with)150 1943 y(minimal)e(c)m(hanges)j(to)g(the)g (MPI)f(standard.)332 2056 y(F)-8 b(or)46 b(practicalit)m(y)-8 b(,)49 b(the)d(w)m(ork)f(of)g(our)g(e\013orts)h(has)f(b)s(een)g(to)h (minimize)d(the)i(n)m(um)m(b)s(er)f(of)h(new)150 2169 y(functions)20 b(in)m(tro)s(duced)h(in)m(to)h Fl(MPI)p Fp(/R)-8 b(T)22 b(pro\014les)e(to)j(pro)m(vide)e(these)h(real-time)g (features.)38 b(MPI)22 b(supp)s(orts)150 2282 y(b)s(oth)h(blo)s(c)m (king)f(and)g(non-blo)s(c)m(king)g(sends)g(and)h(receiv)m(es,)j(as)d(w) m(ell)g(bu\013ered,)g(sync)m(hronous,)h(and)f(ready)150 2394 y(v)m(ersions)g(of)h(eac)m(h.)40 b(W)-8 b(e)25 b(decided)e(it)h(w) m(as)g(imp)s(ortan)m(t)f(not)h(add)g(new)f(v)m(ersions)g(of)h(eac)m(h)i (send)d(and)g(receiv)m(e)150 2507 y(mo)s(de,)j(increasing)e(the)h(n)m (um)m(b)s(er)f(of)h Fl(MPI)g Fp(calls)f(m)m(ultiplicativ)m(ely)-8 b(.)37 b(Rather,)27 b(w)m(e)e(sough)m(t)h(solutions)d(that)150 2620 y(w)m(ould)29 b(in)m(v)m(olv)m(e)i(additiv)m(e)e(additions)g(in)g (the)h(n)m(um)m(b)s(er)f(of)i(MPI)f(functions.)150 2864 y Ff(8.9.1)97 b(Scheduling)33 b(Message)g(T)-8 b(ransfers)150 3035 y Fp(The)22 b(existing)f Fl(MPI)h Fp(message)i(transfer)e(op)s (erations)f(lac)m(k)i(t)m(w)m(o)h(parameters)f(whic)m(h)e(w)m(e)i (consider)e(critical)150 3148 y(for)41 b(real-time)g(applications,)h (esp)s(ecially)e(for)h(the)g(time-driv)m(en)f(programming)g(paradigm.) 72 b(These)150 3261 y(are)37 b(a)g(starting)f(time)h(of)f(the)h(op)s (eration)f(and)g(a)h(timeout)g(for)f(completion)g(of)h(the)g(op)s (eration.)58 b(The)150 3374 y(starting)39 b(time)f(of)h(an)g(op)s (eration)f(should)f(b)s(e)h(considered)g(as)h(a)g(sp)s(ecial)f(case)i (of)f(an)f(ev)m(en)m(t.)68 b(While)150 3487 y(certain)31 b(applications)e(\(esp)s(ecially)g(em)m(b)s(edded)h(ones\))i(prefer)e (an)h(ev)m(en)g(\014ner)f(gran)m(ularit)m(y)g(of)h(con)m(trol,)150 3600 y(w)m(e)36 b(tried)f(to)i(strik)m(e)e(a)h(balance)g(b)s(et)m(w)m (een)h(the)f(feasibilit)m(y)d(of)j(an)g(implemen)m(tation)e(and)h(what) h(time-)150 3713 y(driv)m(en)29 b(application)f(designers)h(w)m(an)m(t) i(to)g(use.)40 b(F)-8 b(or)31 b(example,)f(there)h(is)e(a)h(hard)f(lo)m (w)m(er)i(b)s(ound)d(for)i(the)150 3826 y(starting)g(time,)g(but)g(no)g (hard)g(upp)s(er)e(b)s(ound)g(on)j(the)f(starting)g(time.)332 3939 y(One)25 b(distinctiv)m(e)f(c)m(haracteristic)i(of)g(the)g (time-driv)m(en)e(approac)m(h)i(to)g(real-time)g(message-passing)150 4052 y(is)37 b(its)h(lac)m(k)g(of)h(need)f(for)g(queues)f(and)h(system) g(bu\013ers.)63 b(Applications)36 b(use)i Fj(r)-5 b(e)g(ady)42 b(mo)-5 b(de)40 b Fp(message-)150 4164 y(passing)f(implicitly)-8 b(.)69 b(A)40 b(ready-mo)s(de)h(send)f(ma)m(y)h(b)s(e)f(started)h Fj(only)h Fp(if)d(the)i(matc)m(hing)g(receiv)m(e)g(has)150 4277 y(already)g(b)s(een)f(p)s(osted)g([].)73 b(On)40 b(man)m(y)h(systems,)j(this)c(allo)m(ws)g(the)h(remo)m(v)-5 b(al)41 b(of)h(a)f(hand-shak)m(e)g(op-)150 4390 y(eration)c(and)f (results)g(in)g(impro)m(v)m(ed)g(p)s(erformance.)60 b(Since)36 b(a)h(parallel)f(time-driv)m(en)f(program)i(m)m(ust)150 4503 y(globally)d(sc)m(hedule)h(all)g(message)i(transmissions,)e(the)h (message)h(receiv)m(er)f(alw)m(a)m(ys)g(kno)m(ws)g(to)g(exp)s(ect)150 4616 y(an)28 b(incoming)e(message.)41 b(Th)m(us,)28 b(for)f(reasons)h (of)g(e\016ciency)g(and)f(simplicit)m(y)-8 b(,)27 b(a)h(time-driv)m(en) f(MPI/R)-8 b(T)150 4729 y(implemen)m(tation)32 b(should)f(not)i(do)g (an)m(y)g(handshaking)e(\(as)j(man)m(y)f(of)g(the)g(existing)f (implemen)m(tations)150 4842 y(do\).)45 b(It)32 b(is)f(up)g(to)i(the)f (application)e(to)j(sp)s(ecify)d(times)i(\(for)g(start)g(and)f (timeout\))i(to)f(ensure)f(that)i(the)150 4955 y(sender/receiv)m(er)e (\(lo)s(cal/remote\))g(pairs)e(are)i(w)m(orking)f(in)f(sync)m(hron)m(y) -8 b(.)332 5068 y(Another)39 b(distinctiv)m(e)e(feature)i(is)f(a)h(p)s (oten)m(tially)e(more)i(e\016cien)m(t)g(w)m(a)m(y)h(of)f(using)e (noti\014cations,)150 5181 y(whic)m(h)21 b(can)h(b)s(e)g(more)g (minimal)d(than)j(with)f(other)h(approac)m(hes.)39 b(A)22 b(time-driv)m(en)f(MPI/R)-8 b(T)23 b(application)150 5294 y(do)s(es)g(not)h(need)g(to)h(b)s(e)e(noti\014ed)f(when)h(a)h (message)h(is)e(transmitted)g(successfully)f(and)h(on)h(time;)i (instead)150 5406 y(it)36 b(is)f(noti\014ed)g(only)h(when)f(an)h(error) g(o)s(ccurs)g(\(e.g.,)j(a)e(timeout)f(expires\).)58 b(A)36 b(matter)i(of)e(signi\014can)m(t)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 13 14 bop 150 -200 a Fh(8.9.)72 b(TIME-DRIVEN)31 b Fl(MPI)p Fh(/R)-8 b(T)2292 b Fp(13)150 99 y(discussion)34 b(in)h(the)h(MPI/R)-8 b(T)37 b(group)f(concerns)g(precisely)f(what)i(should)d(happ)s(en)h(to) i(messages)g(left)150 211 y(on)30 b(the)h(net)m(w)m(ork)g(when)e(a)i (timeout)g(expires.)150 455 y Ff(8.9.2)97 b(Time-driven)32 b(MPI/RT)150 626 y Fp(An)g(activit)m(y)h(in)m(terv)-5 b(al,)32 b(sp)s(eci\014ed)f(b)m(y)h(a)h(starting)f(time)g(and)g(a)h (timeout,)g(is)f(an)g(input)e(parameter)j(for)150 739 y(a)41 b(sc)m(heduled)e(message)j(send.)71 b(The)40 b(purp)s(ose)f(of)i (this)f(parameter)h(is)e(to)j(ensure)e(that)h(the)g(system)150 852 y(resources)d(required)f(to)i(satisfy)e(this)g(op)s(eration)h(will) e(not)i(b)s(e)g(used)f(outside)h(of)g(sp)s(eci\014ed)f(in)m(terv)-5 b(al.)150 965 y(These)37 b(resources)h(can)g(b)s(e)f(narro)m(wly)f(in)m (terpreted)h(to)h(refer)g(to)g(the)g(in)m(terpro)s(cess)f(comm)m (unications)150 1078 y(net)m(w)m(ork.)58 b(A)36 b(broader)f(in)m (terpretation)g(w)m(ould)g(include)e(memory)j(accesses,)j(no)s(de)c (busses,)h(net)m(w)m(ork)150 1191 y(in)m(terface)g(cards,)i(and)d(so)h (on.)57 b(Again,)37 b(while)d(w)m(e)i(prefer)f(a)i(\014ner)d(gran)m (ularit)m(y)i(of)g(con)m(trol,)h(w)m(e)g(ha)m(v)m(e)150 1304 y(tried)26 b(to)j(strik)m(e)e(a)h(balance)f(b)s(et)m(w)m(een)h (the)g(feasibilit)m(y)d(of)j(an)f(implemen)m(tation)f(and)h(what)g (time-driv)m(en)150 1417 y(sc)m(hedule)j(designers)f(w)m(an)m(t)i(to)g (use.)332 1530 y(The)37 b(starting)g(time)g(and)g(timeout)h(are)g (somewhat)g(symmetric.)61 b(The)37 b(starting)h(time)f(ensures)150 1643 y(that)i(the)g(resources)f(needed)h(for)f(a)h(data)g(transfer)f (op)s(eration)g(will)e(b)s(e)i(a)m(v)-5 b(ailable)38 b(at)h(the)g(sp)s(eci\014ed)150 1756 y(start)g(time.)63 b(The)37 b(timeout)h(parameter,)j(in)36 b(con)m(trast,)42 b(w)m(ould)37 b(ideally)f(sp)s(ecify)g(the)i(time)g(when)f(all)150 1868 y(resources)f(used)f(b)m(y)g(the)h(message)h(transfer)e(op)s (eration)g(are)h(no)g(longer)f(in)f(use.)57 b(That)35 b(is,)i(after)f(the)150 1981 y(time)31 b(sp)s(eci\014ed)f(in)g(the)h (timeout,)h(irresp)s(ectiv)m(e)e(of)i(whether)e(the)i(op)s(eration)f (completed)g(successfully)150 2094 y(or)25 b(not,)i(all)d(system)h (resources)g(\(ph)m(ysical)g(net)m(w)m(ork,)i(net)m(w)m(ork)f(in)m (terface)g(cards,)g(no)s(de)e(buses,)i(message)150 2207 y(bu\013ers,)d(etc.\))39 b(ha)m(v)m(e)23 b(b)s(een)f(released)g(and)f (can)h(b)s(e)g(used)f(for)h(subsequen)m(t)f(message-passing)h(op)s (erations.)332 2320 y(Unfortunately)-8 b(,)25 b(in)d(practice)j(these)f (guaran)m(tees)h(often)g(cannot)f(b)s(e)f(met.)39 b(The)24 b(MIP/R)-8 b(T)24 b(timeout)150 2433 y(therefore)32 b(sp)s(eci\014es)e (that)i(the)f(message)i(transfer)e(should)e(b)s(e)i(stopp)s(ed)f(and)h (the)h(calling)e(application)150 2546 y(should)20 b(b)s(e)h(noti\014ed) g(if)g(the)h(op)s(eration)f(has)h(not)g(completed)g(b)m(y)f(the)h (timeout)g(time.)38 b(Since)21 b(the)h(message)150 2659 y(ma)m(y)29 b(b)s(e)f(progressing)f(through)h(a)h(m)m(ulti-stage)g(net) m(w)m(ork,)g(a)g(time-driv)m(en)e(MPI/R)-8 b(T)29 b(implemen)m(tation) 150 2772 y(ma)m(y)43 b(need)f(to)h(send)f(a)h(message)g(from)f(the)h (receiv)m(er)g(no)s(de)f(to)h(the)f(sender)g(to)h(indicate)f(that)h (the)150 2885 y(timeout)37 b(has)g(o)s(ccurred.)60 b(The)37 b(resulting)e(error)i(messages)h(ma)m(y)f(not)h(b)s(e)e(receiv)m(ed)i (b)m(y)f(the)g(timeout)150 2998 y(deadline,)29 b(and)g(they)i(ma)m(y)g (use)f(resources)g(after)h(the)f(timeout.)41 b(Th)m(us)29 b(the)i(application)d(ma)m(y)j(need)f(to)150 3110 y(reserv)m(e)h (resources)g(to)g(handle)e(suc)m(h)i(ev)m(en)m(ts.)43 b(It)30 b(should)f(not)i(b)s(e)f(the)h(resp)s(onsibilit)m(y)26 b(of)31 b(the)g Fl(MPI)p Fp(/R)-8 b(T)150 3223 y(implemen)m(tation)33 b(to)j(pro)m(vide)e(this)f(b)s(ound,)h(since)g(an)m(y)h(guaran)m(tees)h (whic)m(h)e(can)h(b)s(e)f(giv)m(en)h(from)f(the)150 3336 y(p)s(ersp)s(ectiv)m(e)j(of)g(a)h(user-lev)m(el)f(message-passing)h (library)d(w)m(ould)i(b)s(e)g(to)s(o)h(naiv)m(e)g(to)g(b)s(e)f(useful.) 60 b(The)150 3449 y(application)43 b(itself)g(is)h(in)f(a)j(m)m(uc)m(h) e(b)s(etter)h(p)s(osition)e(to)i(kno)m(w)g(timing)e(and)h(p)s (erformance)g(details)150 3562 y(relev)-5 b(an)m(t)35 b(to)h(establishing)c(suc)m(h)j(a)g(b)s(ound,)f(including)e(details)i (of)h(the)g(platform)f(and)g(kno)m(wledge)h(of)150 3675 y(the)k(run-time)e(patterns)i(of)f(comm)m(unication.)65 b(Ev)m(en)39 b(for)f(the)h(application,)h(it)e(ma)m(y)h(b)s(e)f (extremely)150 3788 y(di\016cult)29 b(to)k(establish)c(suc)m(h)i(b)s (ounds,)f(esp)s(ecially)g(if)g(the)i(real-time)f(p)s(erformance)g(c)m (haracteristics)h(of)150 3901 y(the)25 b(op)s(erating)f(system)g(or)h (the)g(underlying)c(run)m(time)i(system)i(are)g(p)s(o)s(orly)e(kno)m (wn)h(or)g(highly)f(v)-5 b(ariable.)150 4144 y Ff(8.9.3)97 b(MPI/RT)31 b(Time)h(Handle)150 4316 y Fp(The)c(starting)g(times)f(and) h(timeouts)g(in)f(time-driv)m(en)g(MPI/R)-8 b(T)28 b(message)i (transfers)d(are)i(sp)s(eci\014ed)d(b)m(y)150 4429 y(a)39 b(time)g Fj(hand)5 b(le)39 b Fp(called)f(an)h Fi(MPI)p 1365 4429 32 4 v 38 w(Timeob)6 b(j)p Fp(.)65 b(A)38 b Fi(MPI)p 2195 4429 V 38 w(Timeob)6 b(j)38 b Fp(has)h(three)f(\014elds,) i Fi(T)m(yp)s(e)f Fp(and)150 4542 y Fi(Start)p 390 4542 V 37 w(Time)30 b Fp(and)h Fi(Timeout)p Fp(.)43 b Fi(T)m(yp)s(e)31 b Fp(m)m(ust)h(ha)m(v)m(e)h(one)e(of)h(three)g(v)-5 b(alues,)31 b Fi(Ignorable)p Fp(,)h Fi(Absolute)p Fp(,)150 4655 y(or)44 b Fi(Relativ)m(e)p Fp(.)81 b(When)43 b(a)i(starting)e(time)h(is)e(giv)m (en)i(b)m(y)g(a)g Fi(MPI)p 2498 4655 V 38 w(Timeob)6 b(j)43 b Fp(of)h(t)m(yp)s(e)g Fi(Ignorable)p Fp(,)150 4768 y(there)33 b(is)f(no)h(hard)f(constrain)m(t)h(on)g(when)f(the)h (op)s(eration)g(should)e(start.)49 b(Implicitly)-8 b(,)31 b(it)h(should)f(start)150 4880 y(as)42 b(so)s(on)g(as)g(p)s(ossible,)g (just)f(as)i(with)d(the)i(curren)m(t)g Fl(MPI)f Fp(calls.)75 b(Similarly)-8 b(,)41 b(when)g(a)h Fi(Timeout)f Fp(is)150 4993 y(giv)m(en)e(b)m(y)g(a)g Fi(MPI)p 831 4993 V 38 w(Timeob)6 b(j)38 b Fp(of)h(t)m(yp)s(e)g Fi(Ignorable)p Fp(,)j(there)d(is)f(no)h(hard)f(constrain)m(t)h(on)g(when)f(the)150 5106 y(op)s(eration)28 b(should)e(end.)39 b(The)28 b(second)g(\014eld)f (of)i(a)f Fi(MPI)p 2109 5106 V 38 w(Timeob)6 b(j)28 b Fp(can)g(b)s(e)g(ignored)f(if)g(the)i(\014rst)e(\014eld)150 5219 y(is)i Fi(Ignorable)p Fp(.)332 5332 y(F)-8 b(or)28 b(a)h Fi(MPI)p 782 5332 V 38 w(Timeob)6 b(j)26 b Fp(whose)i(\014rst)f (\014eld)g(is)g Fi(Absolute)h Fp(or)g Fi(Relativ)m(e)p Fp(,)g(the)h(second)e(and)h(third)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 14 15 bop 150 -200 a Fp(14)915 b Fh(CHAPTER)30 b(8.)71 b(REAL-TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)150 99 y Fp(\014elds,)j Fi(Start)p 654 99 32 4 v 36 w(Time)f Fp(and)g Fi(Timeout)p Fp(,)h(should)e(b)s(e)h(a)h(\014elds)e(con)m(taining)i (double)e(precision)g(\015oating)150 211 y(p)s(oin)m(t)i(n)m(um)m(b)s (ers.)57 b(In)36 b(either)f(case,)k Fi(Absolute)e Fp(or)f Fi(Relativ)m(e)p Fp(,)i Fi(Start)p 2660 211 V 37 w(Time)d Fp(and)g Fi(Timeout)g Fp(refer)150 324 y(to)42 b(the)g(global)f(sync)m (hronized)g(clo)s(c)m(k,)k(but)c(in)f(the)i(relativ)m(e)g(case,)k(an)41 b(actual)i(constrain)m(t)e(is)g(to)i(b)s(e)150 437 y(deriv)m(ed)30 b(at)h(run-time)f(b)m(y)g(adding)g Fi(Start)p 1620 437 V 36 w(Time)g Fp(or)h Fi(Timeout)e Fp(to)j(the)f(v)-5 b(alue)30 b(returned)f(b)m(y)i(as)g(fresh)150 550 y(as)g(p)s(ossible)d (a)j(read)f(of)h(the)f(global)g(sync)m(hronized)f(clo)s(c)m(k.)42 b(Note)31 b(that)g(ev)m(en)h(in)d(the)h Fi(Absolute)h Fp(form,)150 663 y(an)36 b(actual)h(time)f(requiremen)m(t)g(cannot)h (necessarily)f(b)s(e)g(constructed)g(un)m(til)f(the)i(v)-5 b(alue)36 b(of)h(the)f(time)150 776 y(ob)5 b(ject)31 b(at)g(the)g(time)f(of)h(the)f(execution)h(of)f(the)h(call)e(is)h(kno)m (wn.)150 1062 y Fm(8.10)115 b(Time-Driven)36 b(Channel)j(Calls)150 1265 y Fp(Using)30 b(p)s(ersisten)m(t)g(c)m(hannels)g(to)h(sc)m(hedule) f(a)h(time-driv)m(en)f(message)h(transaction)g(in)m(v)m(olv)m(es)g(the) g(addi-)150 1378 y(tion)36 b(of)g(an)g Fl(MPI)p 752 1378 28 4 v 32 w(Timeobj)h Fp(parameter)g(to)g(the)f Fl(MPI)p 2016 1378 V 32 w(ST)-8 b(ART\(\))36 b Fp(call,)h(whic)m(h)e(activ)-5 b(ates)37 b(a)g(p)s(ersisten)m(t)150 1491 y(comm)m(unications)j (handle.)70 b Fl(MPI)p 1357 1491 V 32 w(ST)-8 b(ART)p Fp(,)40 b Fl(MPI)p 1904 1491 V 33 w(ST)-8 b(ART)g(ALL)40 b Fp(and)f Fl(MPI)p 2764 1491 V 33 w(W)-8 b(AIT/TEST)41 b Fp(op)s(erate)g(as)150 1604 y(with)30 b(other)i(non-blo)s(c)m(king)d (op)s(erations)i(to)h(con)m(v)m(ert)h(a)f Fb(request)f Fp(in)m(to)g(a)h Fb(status)e Fp(and)h(mark)g(as)g(complete)150 1717 y(the)g(op)s(eration.)150 2019 y Fl(MPI)p 318 2019 V 33 w(ST)-8 b(ART)p 638 2019 V 31 w(TIME\(request,)32 b(timehandle,)e(requestout\))233 2173 y Fc(IN)312 b Fl(request)900 b Fc(primitiv)n(e)28 b(request)f(ob)5 b(ject)27 b(\(p)r(ersisten)n(t)h (request\))233 2324 y(IN)312 b Fl(timehandle)759 b Fc(message)27 b(timing)h(parameters)233 2474 y(IN)312 b Fl(f)1145 b Fc(function)29 b(to)e(call)g(on)h(failure)332 2723 y Fp(As)37 b(an)g(example)g(of)g(this)f(approac)m(h,)k(the)d(follo)m (wing)f(co)s(de)h(sc)m(hedules)f(a)i(send)e(at)i(a)g(particular)150 2836 y(time:)150 3123 y Fd(MPI_Timeobject)44 b(timehandle;)150 3236 y(MPI_Comm)i(comm;)150 3349 y(MPI_Request)f(request;)150 3462 y(MPI_Rtchannel_Send_init\()o(buf,)c(count,)46 b(type,)245 3575 y(dest,)h(timehandle,)e(comm,)h(&request\);)150 3687 y(...)150 3800 y(for\(;;\))150 3913 y({)293 4026 y(timehandle.Type)e(=)j(Relative;)293 4139 y(timehandle.Start_Time)42 b(=)48 b(0.3)150 4252 y(//)f(Send)g(the)g(message)f(in)h(300)g(msecs) 293 4365 y(timehandle.Timeout)c(=)k(0.4;)150 4478 y(//)g(Message)f (must)h(complete)e(in)i(100)g(msecs)293 4591 y (MPI_Start_Time\(request,)42 b(timehandle,)i(f\);)293 4704 y(MPI_Wait_timeout\(request,)d(&status\);)150 4817 y(})332 5004 y Fp(F)-8 b(or)35 b(time-driv)m(en)e Fl(MPI)p Fp(/R)-8 b(T,)34 b(it)g(is)f(su\016cien)m(t)h(to)h(map)f(a)g(request)g (in)m(to)g(a)h(function)e(call)g(sp)s(eci\014-)150 5117 y(cation)g(\(p)s(er)f(in)m(v)m(o)s(cation\),)h(so)g(that)g(no)f(status) h(is)e(formed,)i(and)f(no)g(sp)s(ecial)f(action)i(is)e(tak)m(en,)k (unless)150 5230 y(a)30 b(timeout)g(o)s(ccurs.)40 b(Other)29 b(violations)f(could)h(o)s(ccur,)h(in)e(the)i(c)m(hannel)f(situation,)g (and)g(an)h(analogous)150 5343 y(mec)m(hanism)g(to)h(the)f(timeout)h (ev)m(en)m(t)h(m)m(ust)e(b)s(e)g(pro)m(vided.)39 b(W)-8 b(e)32 b(prop)s(ose:)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 15 16 bop 150 -200 a Fh(8.11.)73 b(EVENT-DRIVEN)30 b Fl(MPI)p Fh(/R)-8 b(T)2165 b Fp(15)150 99 y Fl(MPI)p 318 99 28 4 v 33 w(REQUEST)p 761 99 V 31 w(EVENT\(request,)32 b(f)6 b(\))233 253 y Fc(INOUT)125 b Fl(request)900 b Fc(primitiv)n(e)28 b(request)f(ob)5 b(ject)27 b(\(p)r(ersisten)n(t)h (request\))233 402 y(IN)312 b Fl(f)1145 b Fc(F)-7 b(unction)29 b(to)e(call)g(f\(comm,request,co)r(de\))h(if)g(failure)332 650 y Fp(The)g(request)i(is)e(subsumed)f(b)m(y)i(this)f(call,)h(and)g (nev)m(er)g(re-emerges)h(unless)e(the)h(function)f Fd(f)h Fp(m)m(ust)150 763 y(b)s(e)h(called)f(on)i(the)f(error.)150 1048 y Fm(8.11)115 b(Event-Driven)38 b(MPI/RT)150 1251 y Fp(The)31 b(functionalit)m(y)g(for)h(ev)m(en)m(t-driv)m(en)g (programming)f(is)g(in)m(tro)s(duced)f(in)h Fl(MPI-2)p Fp(.)46 b(In)31 b(particular,)g(the)150 1364 y(handler)24 b(concept)j(in)m(tro)s(duced)e(in)g(the)h(one-sided)f(comm)m (unications)h(c)m(hapter)h(is)e(an)h(ideal)f(mec)m(hanism)150 1477 y(for)33 b(implemen)m(ting)d(ev)m(en)m(t-driv)m(en)k(systems.)48 b(In)32 b(situations)f(where)i(fault-tolerance)g(is)f(required,)f(w)m (e)150 1590 y(recommend)f(the)h(fault-toleran)m(t)f(handler)f(mec)m (hanism)h(giv)m(en)g(ab)s(o)m(v)m(e.)332 1703 y(Ev)m(en)m(t-driv)m(en)f (applications)e(will)f(b)s(e)i(supp)s(orted)f(via)h(message)i(handlers) d(describ)s(ed)f(in)i(the)h(Ex-)150 1816 y(ternal)h(In)m(terfaces)h(c)m (hapter.)150 2101 y Fm(8.12)115 b(Prio)m(rit)m(y-based)37 b(MPI/RT)150 2307 y Ff(8.12.1)97 b(Prio)m(ritization)150 2478 y Fp(P)m(ossible)29 b(candidates)h(for)h(prioritization)d(in)h (MPI)h(include:)39 b(messages,)31 b(pro)s(cesses,)g(and/or)f(comm)m(u-) 150 2591 y(nicators.)332 2704 y(Issues)f(include:)286 2907 y Fk(\017)46 b Fp(Static)32 b(vs)f(Dynamic)g(priorities)e(|)i(It)g (is)f(con)m(v)m(enien)m(t)j(to)f(ha)m(v)m(e)g(static)g(priorities,)d (but)i(without)377 3020 y(the)41 b(preemption)d(capabilit)m(y)-8 b(,)42 b(priorities)c(need)i(to)g(b)s(e)g(dynamically)d(c)m(hanged)k (to)g(cop)s(e)f(with)377 3132 y(un)m(b)s(ounded)28 b(priorit)m(y)h(in)m (v)m(ersion.)286 3317 y Fk(\017)46 b Fp(Resource)32 b(Allo)s(cation)f (|)g(It's)h(ob)m(vious)f(that)h(if)f(an)g(en)m(tit)m(y)i(has)e(a)h (priorit)m(y)e(then)h(the)h(resource)377 3430 y(that)37 b(it)e(o)s(ccupies)g(should)f(inherit)f(that)k(priorit)m(y)-8 b(.)56 b(Then)35 b(w)m(e)h(should)e(outline)g(ho)m(w)i(resources)377 3543 y(are)31 b(allo)s(cated)f(and)g(freed)g(and)g(ho)m(w)g(con)m(ten)m (tions)i(are)e(resolv)m(ed.)286 3727 y Fk(\017)46 b Fp(E\013ect)24 b(on)e(Progress)h(Rule)e(|)i(In)f(the)g(presence)h(of)g(prioritized)d (comm)m(unication)i(and)g(deadlines,)377 3840 y(w)m(e)39 b(need)f(to)h(establish)d(deterministic)g(progress)i(rules)e(for)i(in)m (tra-comm)m(unicator)h(and)e(in)m(ter-)377 3953 y(comm)m(unicator)31 b(comm)m(unication.)150 4195 y Ff(8.12.2)97 b(Message)33 b(Preemption)150 4366 y Fp(In)42 b(addition)f(to)j(pro)m(viding)d (priorit)m(y)g(in)h(messaging,)k(a)e(mo)s(del)e(for)g(ho)m(w)h (messages)h(preempt)f(one)150 4479 y(another)31 b(ma)m(y)g(b)s(e)e (useful,)g(but)h(sp)s(eci\014c)f(prop)s(osals)g(are)i(needed)f(in)f (this)g(area.)150 4718 y Fl(Ho)m(w)j(p)m(rio)m(rit)m(y)f(messaging)g (in)f(MPI)g(should)h(w)m(o)m(rk)h(\(a)m(rea)f(of)f(lots)h(of)f (discussion\))150 4889 y Fp(Curren)m(tly)-8 b(,)26 b Fl(MPI)g Fp(do)s(es)f(not)h(p)s(ose)g(ordering)f(requiremen)m(ts)g(b)s (et)m(w)m(een)h(comm)m(unicators.)40 b(F)-8 b(urthermore,)150 5002 y(all)29 b(messaging)i(on)f(a)h(comm)m(unicator)f(is)g(at)h(a)g (single)e(lev)m(el)h(of)g(priorit)m(y)-8 b(.)332 5115 y Fl(MPI)30 b Fp(implemen)m(tations)f(m)m(ust)h(do)g(at)h(least)g(the)g (follo)m(wing:)286 5294 y Fk(\017)46 b Fp(When)41 b(it)g(is)f(p)s (ossible)f(to)j(handle)d(t)m(w)m(o)k(or)e(more)g(receiv)m(e)h(requests) f(at)h(the)f(same)h(time,)i(the)377 5407 y(highest)30 b(priorit)m(y)f(request)h(is)g(handled)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 16 17 bop 150 -200 a Fp(16)915 b Fh(CHAPTER)30 b(8.)71 b(REAL-TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)286 99 y Fk(\017)46 b Fp(When)32 b(t)m(w)m(o)i(or)e(more)h(send)e(requests)h (are)h(in)e(progress,)i(the)f(highest)g(priorit)m(y)f(request)h(should) 377 211 y(b)s(e)e(handled.)286 399 y Fk(\017)46 b Fp(The)i(system)h(m)m (ust)f(accept)i(en)m(v)m(elop)s(es)e(from)g(remote)i(senders)d(in)g (order)h(to)h(supp)s(ort)e(the)377 512 y(progress)30 b(rule)286 700 y Fk(\017)46 b Fp(When)26 b(higher)f(priorit)m(y)g (transmissions)e(are)k(blo)s(c)m(k)m(ed,)g(lo)m(w)m(er)g(priorit)m(y)d (messages)k(m)m(ust)e(b)s(e)f(han-)377 812 y(dled)35 b(\(this)g(means)h(that)h(some)g(priorit)m(y)d(in)m(v)m(ersion)h (e\013ects)j(are)e(inevitable,)g(and)g(w)m(e)g(need)g(to)377 925 y(discuss)29 b(ho)m(w)h(w)m(e)h(w)m(an)m(t)g(MPI)g(to)g(b)s(eha)m (v)m(e\))150 1166 y Fl(Other)f(Comments)286 1337 y Fk(\017)46 b Fp(W)-8 b(e)46 b(m)m(ust)e(consider)f(whether)g(some)i(statemen)m(t)h (ab)s(out)d(fairness)g(is)g(useful)g(in)f(the)j(face)g(of)377 1450 y(priorit)m(y)29 b(comm)m(unication.)40 b(F)-8 b(airness)30 b(is)g(not)g(necessarily)g(go)s(o)s(d.)286 1638 y Fk(\017)46 b Fp(W)-8 b(e)27 b(need)f(a)g(mec)m(hanism)g(to)g(a)m(v)m(oid)h(deadlo) s(c)m(ks)f(due)f(to)h(priorit)m(y)f(messaging)h({)g(ceiling)e (priorities)377 1751 y(/)31 b(priorit)m(y)e(inheritance)150 1963 y(And)f(w)m(e)i(need)e(to)i(en)m(umerate)g(the)f(kinds)e(of)i (problems)e(that)j(can)f(arise)g(b)s(ecause)g(of)g(priorities)d(in)i (the)150 2076 y(lo)m(w)i(lev)m(els)g(of)h(the)f(implemen)m(tation.)150 2316 y Fl(Other)g(situations)150 2488 y Fp(The)f(follo)m(wing)f (conditions)g(will)f(b)s(e)i(addressed)g(in)f(the)i(next)f(v)m(ersion)g (of)h(the)g(priorit)m(y)e(sub-prop)s(osal:)286 2675 y Fk(\017)46 b Fp(Priorit)m(y)29 b(maps)h(when)g(comms)g(split)286 2863 y Fk(\017)46 b Fp(Priorit)m(y)29 b(maps)h(when)g(w)m(orlds)f (merge)150 3106 y Ff(8.12.3)97 b(Other)33 b(issues)150 3278 y Fp(Sev)m(eral)d(other)h(attributes)f(can)h(b)s(e)e(attac)m(hed)k (to)e(comm)m(unicators)f(in)f(a)i(similar)d(w)m(a)m(y)j(:)261 3466 y(1.)46 b(time-out)31 b(for)f(op)s(erations)261 3653 y(2.)46 b(guaran)m(teed)32 b(bandwidth)27 b(/)k (latency-for-zero-message)261 3841 y(3.)46 b(maxlength)30 b(for)g(message)i(/)f(guaran)m(teed)g(bu\013erspace)f(a)m(v)-5 b(ailable)150 4084 y Ff(8.12.4)97 b(Prio)m(rit)m(y-Based)33 b(Message)g(P)m(assing)150 4256 y Fp(In)f(the)h(priorit)m(y-based)e (real-time)h(programming)g(paradigm,)g(pro)s(cess)g(and)h(message)g (priorities)e(are)150 4369 y(used)f(to)h(meet)g(timing)e(sp)s (eci\014cations.)150 4612 y Ff(8.12.5)97 b(Pro)s(cess)34 b(Prio)m(rit)m(y)150 4784 y Fp(Because)i(pro)s(cess)f(priorities)d(can) j(b)s(e)g(handled)e(in)g(a)i(v)-5 b(ariet)m(y)36 b(of)f(w)m(a)m(ys,)i (it)d(is)g(extremely)h(di\016cult)e(to)150 4897 y(pro)m(vide)f(p)s (ortable)g(mec)m(hanisms)g(to)i(sp)s(ecify)e(them,)i(and)e Fl(MPI)p Fp(/R)-8 b(T)33 b(do)s(es)g(not)g(directly)f(address)g(this) 150 5010 y(issue.)38 b(The)24 b(one)i(circumstance)f(in)f(whic)m(h)g (pro)s(cess)h(priorit)m(y)e(is)h(undoubtedly)f(relev)-5 b(an)m(t)26 b(to)f Fl(MPI)p Fp(/R)-8 b(T)26 b(is)150 5123 y(in)f(the)i(transmission)c(of)k(priorit)m(y)e(information)f(to)j (the)g(run)m(time)e(system)h(in)f Fl(MPI-2)i Fp(dynamic)e(pro)s(cess) 150 5236 y(creation)c(calls.)37 b(W)-8 b(e)21 b(recommend)g(that)g(suc) m(h)f(information)f(b)s(e)h(sp)s(eci\014ed)f(in)g(a)i(system-sp)s (eci\014c)f(manner)150 5349 y(via)30 b(the)h Fl(info)f Fp(argumen)m(t.)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 17 18 bop 150 -200 a Fh(8.12.)73 b(PRIORITY-BASED)29 b Fl(MPI)p Fh(/R)-8 b(T)2078 b Fp(17)332 99 y(Arguably)-8 b(,)25 b Fl(MPI)p Fp(/R)-8 b(T)26 b(should)d(also)i(address)f(the)h (issue)f(of)h(priorit)m(y)e(in)m(v)m(ersion)h(\(a)h(phenomenon)f(in)150 211 y(whic)m(h)30 b(a)h(lo)m(w-priorit)m(y)e(pro)s(cess)i(susp)s(ends)d (a)k(high-priorit)m(y)c(pro)s(cess)i(b)m(y)h(preempting)f(lo)m(w)m (er-priorit)m(y)150 324 y(pro)s(cesses)38 b(whic)m(h)e(w)m(ould)h(send) g(messages)i(to)f(the)g(high-priorit)m(y)d(pro)s(cess\).)63 b(W)-8 b(e)39 b(put)e(forw)m(ard)h(t)m(w)m(o)150 437 y(prop)s(osals)29 b(on)h(that)h(fron)m(t.)332 702 y Fa(Discussion:)332 815 y Fc(Programmers)c(m)n(ust)j(a)n(v)n(oid)e(priorit)n(y)h(in)n(v)n (ersion)g(b)n(y)h(assigning)e(priorities)h(in)i(suc)n(h)e(a)h(w)n(a)n (y)f(that)h(priorit)n(y)150 928 y(in)n(v)n(ersion)22 b(do)r(es)h(not)g(happ)r(en.)36 b(In)23 b(short,)g(an)n(y)g(program)e (whic)n(h)i(has)g(a)g(lo)n(w-priorit)n(y)e(pro)r(cess)h(sending)h (messages)150 1041 y(to)33 b(a)g(high-priorit)n(y)e(pro)r(cess)h(is)h (asking)f(for)g(trouble.)53 b(Note,)35 b(to)r(o,)f(that)g(priorit)n(y)d (in)n(v)n(ersion)h(can)h(result)f(from)150 1154 y(a)j(n)n(um)n(b)r(er)g (of)g(resource)e(con)n(ten)n(tion)i(situations,)h(so)f(eliminating)g (it)h(in)f(message-passing)d(do)r(es)j(not)g(\014x)h(the)150 1267 y(problem.)f(Also,)24 b(the)g(priorit)n(y)e(inheritance)h(mec)n (hanisms)g(necessary)e(to)j(alleviate)e(priorit)n(y)h(in)n(v)n(ersion)e (ma)n(y)i(not)150 1380 y(b)r(e)28 b(univ)n(ersally)e(implemen)n(table.) 332 1810 y Fa(Discussion:)332 1923 y Fc(The)h Fb(MPI)p Fc(/R)-7 b(T)27 b(implemen)n(tation)g(m)n(ust)g(ensure)g(that)g(a)g (pro)r(cess)f(inherits)h(a)g(priorit)n(y)e(at)i(least)g(as)g(high)g(as) 150 2036 y(an)n(y)33 b(pro)r(cess)h(whic)n(h)g(is)g(blo)r(c)n(k)n(ed)f (receiving)g(a)h(message)f(from)h(it.)57 b(This)34 b(ma)n(y)g(mean)g (that)h(in)f(circumstances)150 2149 y(where)j(a)g(pro)r(cess)f(is)h (receiving)f(from)h Fb(MPI)p 1589 2149 25 4 v 29 w(ANY)p 1787 2149 V 31 w(SOURCE)f Fc(in)i(a)f(comm)n(unicator,)h(that)g(pro)r (cess's)d(priorit)n(y)150 2262 y(information)27 b(m)n(ust)h(b)r(e)g (broadcasted)e(to)h(all)g(of)h(the)g(p)r(oten)n(tial)f(senders.)150 2670 y Ff(8.12.6)97 b(Message)33 b(Prio)m(rities)150 2842 y Fp(With)25 b(regard)g(to)h(message)h(priorities,)d(ho)m(w)m(ev)m (er,)k Fl(MPI)p Fp(/R)-8 b(T)26 b(certainly)e(m)m(ust)h(pro)m(vide)g (explicit)f(mec)m(ha-)150 2955 y(nisms)c(for)i(their)e(sp)s (eci\014cation)h(and)g(main)m(tenance.)38 b(Message)24 b(priorit)m(y)c(w)m(orks)i(basically)e(as)i(one)g(w)m(ould)150 3068 y(exp)s(ect:)39 b(Giv)m(en)25 b(the)h(c)m(hoice)g(b)s(et)m(w)m (een)g(p)s(erforming)d(t)m(w)m(o)k(di\013eren)m(t)e(comm)m(unication)g (op)s(erations)g(\(suc)m(h)150 3181 y(as)k(receiving)f(one)h(message)g (or)g(another\),)h(the)e(higher)g(priorit)m(y)f(comm)m(unication)h(is)f (p)s(erformed)g(\014rst.)150 3294 y(If)34 b(the)h(high)e(priorit)m(y)g (comm)m(unication)h(blo)s(c)m(ks)g(or)h(stalls,)g(lo)m(w)m(er)f (priorit)m(y)f(comm)m(unication)h(ma)m(y)i(b)s(e)150 3407 y(initiated.)j(Notice)31 b(that)f(in)f(the)h(general)g(case,)i (this)c(implies)g(that)i(comm)m(unication)g(ma)m(y)g(need)g(to)h(b)s(e) 150 3520 y(preempted.)56 b(F)-8 b(or)36 b(example,)h(if)d(the)i(user)f (initiates)f(a)i(lo)m(w-priorit)m(y)e(non)m(blo)s(c)m(king)g(send,)j (the)e(b)s(egins)150 3632 y(a)41 b(high-priorit)m(y)d(send,)k(the)e(lo) m(w-priorit)m(y)f(send)h(w)m(ould)f(b)s(e)h(stalled)f(in)g(fa)m(v)m(or) i(of)g(the)f(high-priorit)m(y)150 3745 y(send.)70 b(Also,)43 b(as)e(with)e(priorities)f(in)h(other)i(situations,)h(it)e(is)g(p)s (ossible)e(that)j(deadlo)s(c)m(k)f(situations)150 3858 y(could)28 b(result.)39 b(Whether)29 b(or)g(not)g Fl(MPI)p Fp(/R)-8 b(T)29 b(systems)g(should)e(attempt)j(to)g(address)e(this)g (is)g(sub)5 b(ject)28 b(to)150 3971 y(debate.)41 b(Certainly)29 b(man)m(y)h(systems)g(pro)m(vide)f(no)h(supp)s(ort)f(for)h(deadlo)s(c)m (k)g(detection)h(and)e(resolution.)150 4084 y(In)c(some)g (circumstances)h(timeouts)f(pro)m(vide)f(a)i(w)m(a)m(y)h(to)f(break)f (out)h(of)f(deadlo)s(c)m(k)h(\(although)f(a)h(liv)m(elo)s(c)m(k)150 4197 y(situation)e(ma)m(y)i(just)f(as)g(easily)g(result,)g(unless)f (the)h(programmer)g(uses)g(the)h(opp)s(ortunit)m(y)d(to)j(explicitly) 150 4310 y(a)m(v)m(oid)36 b(the)g(recurrence)f(of)g(deadlo)s(c)m(k\).) 57 b(Finally)-8 b(,)35 b(message)i(priorit)m(y)c(ma)m(y)j(result)f(in)f (\\unfair")g(situa-)150 4423 y(tions.)49 b(Suc)m(h)32 b(circumstances)h(are)h(fully)d(the)j(programmer's)f(resp)s(onsibilit)m (y)c(to)34 b(a)m(v)m(oid,)h(if)d(necessary)-8 b(.)150 4536 y(W)g(e)32 b(put)d(forw)m(ard)h(t)m(w)m(o)i(prop)s(osals)d(for)h (sp)s(ecifying)e(message)j(priorit)m(y)-8 b(.)150 4776 y Fl(Message)30 b(Prio)m(rities)h(using)f(T)-8 b(ags)150 4947 y(MPI)21 b Fp(already)f(pro)m(vides)g(a)i(mec)m(hanism)e(to)h (allo)m(w)g(the)g(programmer)g(to)g(distinguish)c(b)s(et)m(w)m(een)22 b(messages)150 5060 y(sen)m(t)30 b(under)e(a)i(comm)m(unicator,)g (namely)e(message)j(tags.)41 b(T)-8 b(o)30 b(receiv)m(e)g(the)g (highest)f(priorit)m(y)f(message,)150 5173 y(a)38 b(pro)s(cess)g(w)m (ould)f(simply)e(receiv)m(e)k(using)d(a)j(new)e(prede\014ned)g(v)-5 b(alue,)39 b Fl(MPI)p 2843 5173 28 4 v 33 w(MAX)p 3078 5173 V 31 w(T)-8 b(A)m(G)p Fp(,)38 b(as)h(the)f(tag)150 5286 y(parameter.)47 b(\()p Fl(MPI)p Fp(/R)-8 b(T)34 b(w)m(ould)d(also)h(pro)m(vide)g(an)g(analogous)h(v)-5 b(alue,)33 b Fl(MPI)p 2786 5286 V 32 w(MIN)p 2987 5286 V 33 w(T)-8 b(A)m(G)p Fp(,)33 b(for)f(pro)s(cesses)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 18 19 bop 150 -200 a Fp(18)915 b Fh(CHAPTER)30 b(8.)71 b(REAL-TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)150 99 y Fp(that)38 b(use)g(lo)m(w)m(er)g(n)m(um)m(b)s(ers)f(for)g(higher)g (logical)g(priorities.\))61 b(This)36 b(allo)m(ws)i(priorit)m(y)e (information)g(to)150 211 y(easily)30 b(b)s(e)f(sp)s(eci\014ed)g(on)h (a)h(message-b)m(y-message)i(basis,)d(unlik)m(e)e(the)j(next)f(prop)s (osal.)150 513 y Fl(MPI)p 318 513 28 4 v 33 w(COMM)p 636 513 V 31 w(GET)p 844 513 V 33 w(PRIORITY\(comm,)i(p)m(rio)m(rit)m (y\))233 668 y Fc(IN)312 b Fl(comm)944 b Fc(comm)n(unicator)27 b(for)g(whic)n(h)g(priorit)n(y)f(is)i(to)f(b)r(e)h(returned)233 818 y(OUT)217 b Fl(p)m(rio)m(rit)m(y)909 b Fc(priorit)n(y)27 b(of)g(the)h(comm)n(unicator)332 1067 y Fl(MPI)p Fp(/R)-8 b(T)26 b(priorit)m(y-based)d(message)k(passing)d(w)m(ould)g(op)s(erate) i(on)g(the)f(same)h(p)s(ersisten)m(t)f(c)m(hannels)150 1180 y(from)30 b(section)g(8.8:)150 1482 y Fl(MPI)p 318 1482 V 33 w(ST)-8 b(ART)p 638 1482 V 31 w(PRIORITY\(request,)31 b(p)m(rio)m(rit)m(y)-8 b(,)32 b(requestout\))233 1636 y Fc(IN)312 b Fl(request)900 b Fc(primitiv)n(e)28 b(request)f(ob)5 b(ject)27 b(\(p)r(ersisten)n(t)h(request\))233 1786 y(IN)312 b Fl(p)m(rio)m(rit)m(y)909 b Fc(in)n(teger)31 b(quan)n(tit)n(y)f(sp)r (ecifying)i(priorit)n(y)e(of)h(c)n(hannel)f(op)r(era-)1810 1899 y(tion)e(\(in)n(t\))233 2050 y(OUT)217 b Fl(requestout)775 b Fc(revised)27 b(request)g(ob)5 b(ject)28 b(\(non-p)r(ersisten)n(t)f (request\))332 2298 y Fp(The)j(in)m(ten)m(tion)g(of)g(this)f(formalism) g(is)g(as)i(follo)m(ws:)286 2511 y Fk(\017)46 b Fp(T)-8 b(o)36 b(p)s(ermit)d(sp)s(ecialized)h(requests)h(to)h(b)s(e)e(formed,)i (so)g(c)m(hannels)e(can)i(b)s(e)e(used)g(with)g(m)m(ultiple)377 2624 y(op)s(erations)22 b(sim)m(ultaneously)-8 b(.)37 b(The)22 b(priorities)e(therefore)j(\014gure)f(in)g(the)h(same)g(role)f (as)h(tags)h(in)d(an)377 2737 y(implemen)m(tation,)j(and)f(the)g(same)h (mec)m(hanism)e(migh)m(t)h(b)s(e)g(o)m(v)m(erloaded)h(to)g(pro)s(duce)e (this)g(feature)377 2850 y(for)42 b(c)m(hannels.)76 b(These)42 b(non-p)s(ersisten)m(t)f(requests)h(are)g(treated)h(in)e(the)i(same)f (w)m(a)m(y)h(as)g(other)377 2963 y(requests)29 b(in)f Fl(MPI)p Fp(.)h(If)g(a)g(mec)m(hanism)f(is)g(used)h(to)g(a)m(v)m(oid)h (con)m(v)m(erting)g(requests)f(in)m(to)g(statuses,)h(as)377 3076 y(for)g(timebased)g Fl(MPI)p Fp(,)h(it)f(ma)m(y)h(also)f(apply)f (here.)286 3263 y Fk(\017)46 b Fp(No)29 b(sp)s(eci\014c)f(meaning)g(is) f(attac)m(hed)k(to)e(the)g(priorities)d(b)m(y)j Fl(MPI)p Fp(.)f(This)f(is)h(strictly)f(a)i(function)f(of)377 3376 y(the)j(underlying)c(implemen)m(tation.)286 3564 y Fk(\017)46 b Fp(A)30 b(w)m(ait)g(op)s(eration)f(on)h(the)g(non-p)s(ersisten)m(t)f (request)g(of)h(the)g(call)f(is)g(supp)s(osed)f(for)i(completing)377 3677 y(the)36 b(call.)55 b(Ho)m(w)m(ev)m(er,)40 b(this)34 b(ma)m(y)i(b)s(e)f(skipp)s(ed,)f(as)i(noted)g(for)f(timebased)g(op)s (erations,)i(using)d(a)377 3790 y(call)c(to)h(b)s(e)f(de\014ned)f(b)s (elo)m(w.)286 3977 y Fk(\017)46 b Fp(The)40 b(primitiv)m(e)f(and)g (non-primitiv)m(e)g(forms)g(of)i(the)g(request)f(ma)m(y)i(b)s(e)d(used) h(sim)m(ultaneously)377 4090 y(for)29 b(transmission,)e(with)h(a)h (default)g(priorit)m(y)e(setting)i(from)g(the)g(qualit)m(y)f(of)i (service)e(parameter)377 4203 y(used)i(in)f(the)h(primitiv)m(e)f(form.) 150 4489 y Fm(8.13)115 b(Ad)40 b(Ho)s(c)e(MPI/RT)150 4692 y Fp(F)-8 b(or)43 b(ad)e(ho)s(c)h(real-time)g(programming)f(the)h (user)f(desires)g(particularly)e(fast)j(implemen)m(tations)f(of)150 4805 y Fl(MPI)d Fp(routines)f(but)g(do)s(es)h(not)h(ha)m(v)m(e)g(hard)e (deadlines.)62 b(\(This)37 b(migh)m(t)h(b)s(e)f(seen)i(as)f(a)h(soft)f (real-time)150 4918 y(system.\))77 b(Examples)41 b(of)h(suc)m(h)g (applications)f(include)f(in)m(teractiv)m(e)j(parallel)d (visualization,)j(whic)m(h)150 5031 y(ma)m(y)i(mak)m(e)g(great)h (demands)d(on)i(a)g(system)f(but)g(is)f(toleran)m(t)j(to)f(o)s (ccasional)f(dela)m(ys)h(or)f(dropp)s(ed)150 5144 y(frames.)49 b(What)34 b(exactly)g Fl(MPI)p Fp(/R)-8 b(T)33 b(w)m(ould)f(include)f (or)j(mandate)f(for)g(implemen)m(tations)f(to)i(supp)s(ort)150 5257 y(suc)m(h)c(a)h(programming)e(mo)s(del)g(remains)g(to)i(b)s(e)f (discussed.)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop 19 20 bop 150 -200 a Fh(8.14.)73 b(ISSUES)28 b(ON)i(EMBEDDED)i(SYSTEMS) 1734 b Fp(19)150 99 y Fm(8.14)115 b(Issues)39 b(on)f(Emb)s(edded)g (Systems)150 301 y Fp(F)-8 b(or)35 b(em)m(b)s(edded)d(systems,)j(the)f (follo)m(wing)f(issues)f(b)s(ecome)i(more)g(imp)s(ortan)m(t)f(than)h (in)e(other)i(uses)g(of)150 414 y Fl(MPI)p Fp(:)286 602 y Fk(\017)46 b Fp(Small)29 b(amoun)m(ts)h(of)h(program)f(space)h(\(co)s (de)g(bloat)f(unacceptable\),)286 790 y Fk(\017)46 b Fp(Small)31 b(amoun)m(t)i(of)g(data)g(space)g(\(bu\013ering)e(limited,) g(maxim)m(um)g(message)j(sizes)e(ma)m(y)i(b)s(e)d(lim-)377 903 y(ited\),)286 1090 y Fk(\017)46 b Fp(Simpli\014ed)27 b(programming)i(en)m(vironmen)m(ts)g(as)i(compared)f(to)i(full-blo)m (wn)27 b(OS's,)286 1278 y Fk(\017)46 b Fp(Static)31 b(loading)e(en)m (vironmen)m(ts)h(more)g(nearly)g(compatible)g(with)f Fl(MPI-2)p Fp('s)i(view)e(of)i(the)f(w)m(orld.)150 1465 y(Suc)m(h)g(systems)g(ma)m(y)h(also)f(ha)m(v)m(e)i(real-time)e (requiremen)m(ts.)332 1578 y Fl(MPI)43 b Fp(is)g(already)g(migrating)g (in)m(to)h(em)m(b)s(edded)e(protot)m(yp)s(e)i(systems;)51 b(hence)44 b(it)f(is)g(in)m(teresting)150 1691 y(to)h(o\013er)f (suggestions,)j(and)c(p)s(ossibly)e(additional)h(pro\014le)g(language,) 47 b(to)c(address)f(this)g(particular)150 1804 y(space)32 b(of)f(applications)f(and)g(systems.)43 b(One)31 b(particular)f (approac)m(h)h(will)e(b)s(e)h(to)i(o\013er)g(a)f(set)h(of)g(subset)150 1917 y(implemen)m(tation)27 b(pro\014les)f(for)i(em)m(b)s(edded)e (systems,)j(so)f(that)h(if)e(subsetting)g(should)e(o)s(ccur,)k(it)e (can)i(b)s(e)150 2030 y(done)h(according)h(to)g(a)f(systematic)h(con)m (v)m(en)m(tion)h(do)s(cumen)m(ted)e(in)f(the)i Fl(MPI-2)g Fp(standard.)150 2273 y Ff(8.14.1)97 b(Emb)s(edded)33 b(MPI)150 2445 y Fp(There)28 b(are)h(users)f(within)e(the)i(em)m(b)s (edded)g(computing)f(arena)i(that)g(w)m(ould)f(lik)m(e)g(to)h(use)f (MPI,)h(but)f(are)150 2558 y(constrained)k(b)m(y)h(extreme)g (limitations)e(on)i(lo)s(cal)f(memory)h(and)f(storage)i(space.)49 b(These)32 b(users)h(often)150 2671 y(run)k(co)s(des)h(stored)g(in)f (non-v)m(olatile)h(memory)-8 b(,)41 b(suc)m(h)d(as)g(as)h(FLASH,)f(or)h (R)m(OM.)f(While)f(the)i(use)f(of)150 2784 y(an)c(e\016cien)m(t)g(link) m(er)f(can)h(dramatically)e(reduce)i(the)g(size)g(of)g(MPI)g (libraries,)e(the)i(resulting)e(binaries)150 2897 y(are)g(still)d(far)i (to)s(o)h(large)f(to)h(b)s(e)f(incorp)s(orated)f(in)m(to)h(\014rm)m(w)m (are.)43 b(There)31 b(are)h(three)f(particular)f(areas)i(of)150 3010 y(concern.)286 3222 y Fk(\017)46 b Fp(Large)38 b(executable)h (size)e(due)g(to)h(the)g(man)m(y)f(functions)f(in)h Fl(MPI)g Fp(and)g(their)f(in)m(terdep)s(endence)377 3335 y(in)j(man)m(y)i (cases.)71 b(\(I.e.,)44 b(em)m(b)s(edded)39 b Fl(MPI)p Fp(/R)-8 b(T)40 b(ma)m(y)h(only)f(b)s(e)f(able)h(to)h(supp)s(ort)d(a)j (subset)f(of)377 3448 y Fl(MPI)p Fp(/R)-8 b(T)31 b(functionalit)m(y)-8 b(.\))286 3636 y Fk(\017)46 b Fp(The)25 b(amoun)m(t)h(of)f(bu\013er)f (space)i(on)f(the)h(receiv)m(er)g(side.)38 b(\(I.e.,)27 b(the)f(illusion)21 b(of)26 b(in\014nite)d(slac)m(k)i(ma)m(y)377 3748 y(b)s(e)30 b(particularly)e(un)m(tenable.\))286 3936 y Fk(\017)46 b Fp(The)c(amoun)m(t)h(of)g(bu\013er)f(space)h(on)f (the)h(sender)f(side.)76 b(\(I.e.,)47 b(the)c(abilit)m(y)e(to)j(pac)m (k)f(deriv)m(ed)377 4049 y(datat)m(yp)s(es)31 b(ma)m(y)g(b)s(e)f (restricted.\))332 4262 y(As)24 b(a)h(result,)g(w)m(e)h(recommend)e (that)h(only)f(a)h(core)g(set)h(of)e Fl(MPI)p Fp(/R)-8 b(T)25 b(functionalit)m(y)e(b)s(e)h(required)f(for)150 4374 y(em)m(b)s(edded)28 b Fl(MPI)p Fp(/R)-8 b(T.)30 b(\(Exactly)f(whic)m(h)f(routines)g(should)f(b)s(e)h(preserv)m(ed)h (remains)f(to)i(b)s(e)e(discussed.\))150 4487 y(In)23 b(fact,)j(b)s(ecause)d(bu\013er)g(space)h(ma)m(y)g(b)s(e)f(limited)e (or)j(nonexisten)m(t,)h(the)e(user)g(should)f(only)g(exp)s(ect)i(that) 150 4600 y(the)29 b(sync)m(hronous)f(and)h(ready)g(send)f(op)s (erations)g(are)i(a)m(v)-5 b(ailable)28 b(\(these)i(routines)e(require) g(no)h(explicit)150 4713 y(bu\013er)e(space)j(at)f(the)f(receiv)m(er\)) i(and)e(that)h(only)e(the)i Fl(MPI)p 2171 4713 28 4 v 33 w(BYTE)f Fp(and)f Fl(MPI)p 2807 4713 V 33 w(P)-8 b(A)m(CKED)29 b Fp(datat)m(yp)s(es)h(are)150 4826 y(pro)m(vided)h(\(neither)h (requires)g(bu\013er)f(space)j(at)f(the)g(sender)f(or)h(the)g(receiv)m (er\).)48 b(The)33 b(com)m(bination)f(of)150 4939 y(these)27 b(t)m(w)m(o)g(restrictions)f(w)m(ould)f(seem)h(to)i(completely)e (eliminate)e(the)j(need)f(for)g(bu\013er)f(space)i(\(except,)150 5052 y(p)s(erhaps,)e(for)h(the)f(case)i(of)f(collectiv)m(e)g(comm)m (unication,)h(whic)m(h)d(ma)m(y)i(require)f(space)h(for)f(in)m (termediate)150 5165 y(v)-5 b(alues\).)71 b(Alternativ)m(ely)-8 b(,)43 b(the)e(user)f(could)g(b)s(e)f(exp)s(ected)i(to)h(pro)m(vide)d (bu\013er)h(space)h(explicitly)d(via)150 5278 y(routines)26 b(suc)m(h)g(as)h Fl(MPI)p 973 5278 V 33 w(BUFFER)p 1347 5278 V 31 w(A)-8 b(TT)g(A)m(CH)28 b Fp(and)e(b)s(e)g(restricted)g(to)i (using)d(bu\013ered)h(send)g(op)s(erations)150 5391 y(\(as)k(w)m(ell)e (as)i(sync)m(hronous)e(and)h(ready)g(ones\).)41 b(Also,)30 b(direct)f(memory)g(transfer)g(b)s(et)m(w)m(een)h(source)g(and)-64 92 y Fg(1)-64 205 y(2)-64 318 y(3)-64 431 y(4)-64 544 y(5)-64 657 y(6)-64 770 y(7)-64 882 y(8)-64 995 y(9)-80 1108 y(10)-80 1221 y(11)-80 1334 y(12)-80 1447 y(13)-80 1560 y(14)-80 1673 y(15)-80 1786 y(16)-80 1899 y(17)-80 2012 y(18)-80 2124 y(19)-80 2237 y(20)-80 2350 y(21)-80 2463 y(22)-80 2576 y(23)-80 2689 y(24)-80 2802 y(25)-80 2915 y(26)-80 3028 y(27)-80 3141 y(28)-80 3254 y(29)-80 3366 y(30)-80 3479 y(31)-80 3592 y(32)-80 3705 y(33)-80 3818 y(34)-80 3931 y(35)-80 4044 y(36)-80 4157 y(37)-80 4270 y(38)-80 4383 y(39)-80 4496 y(40)-80 4609 y(41)-80 4721 y(42)-80 4834 y(43)-80 4947 y(44)-80 5060 y(45)-80 5173 y(46)-80 5286 y(47)-80 5399 y(48)p eop 20 21 bop 150 -200 a Fp(20)915 b Fh(CHAPTER)30 b(8.)71 b(REAL-TIME)30 b(AND)i(EMBEDDED)g(EXTENSIONS)150 99 y Fp(destination)h(bu\013ers)g(ma)m(y)i(b)s(e)e(implemen)m(table)f(only)i (when)f(the)h(source)g(of)h(a)f(message)h(is)e(explicitly)150 211 y(sp)s(eci\014ed)c(in)g(a)h(receiv)m(e)i(call,)e(so)g(the)h(use)f (of)g Fl(MPI)p 1885 211 28 4 v 33 w(ANY)p 2104 211 V 32 w(SOURCE)g Fp(ma)m(y)h(b)s(e)e(precluded.)332 324 y(As)g(a)h(result,)e(w)m(e)i(recommend)f(the)g(follo)m(wing)f(subset)g (of)i(MPI-1)f(functionalit)m(y)f(b)s(e)h(retained)f(for)150 437 y(an)i(em)m(b)s(edded)g Fj(pr)-5 b(o\014le)32 b Fp(of)e Fl(MPI)p Fp(/R)-8 b(T:)286 650 y Fk(\017)46 b Fp(MPI)p 560 650 V 33 w(INIT\(\))286 837 y Fk(\017)g Fp(MPI)p 560 837 V 33 w(FINALIZE\(\))286 1025 y Fk(\017)g Fp(MPI)p 560 1025 V 33 w(COMM)p 896 1025 V 33 w(RANK\(\))286 1213 y Fk(\017)g Fp(MPI)p 560 1213 V 33 w(COMM)p 896 1213 V 33 w(SIZE\(\))286 1400 y Fk(\017)g Fp(MPI)p 560 1400 V 33 w(SEND\(\))286 1588 y Fk(\017)g Fp(MPI)p 560 1588 V 33 w(ISEND\(\))286 1776 y Fk(\017)g Fp(MPI)p 560 1776 V 33 w(RECV\(\))286 1963 y Fk(\017)g Fp(MPI)p 560 1963 V 33 w(IRECV\(\))286 2151 y Fk(\017)g Fp(MPI)p 560 2151 V 33 w(BCAST\(\))286 2338 y Fk(\017)g Fp(MPI)p 560 2338 V 33 w(GA)-8 b(THER\(\))332 2551 y(These)32 b(ten)h(function)f(calls,)g (supp)s(orting)f(only)h(elemen)m(tal)h(MPI)f(datat)m(yp)s(es,)j(pro)m (vide)c(su\016cien)m(t)150 2664 y(co)m(v)m(er)k(for)e(a)h(wide)e(v)-5 b(ariet)m(y)34 b(of)f(parallel)f(programming)g(paradigms,)h(without)f (requiring)f(the)i(library)150 2777 y(o)m(v)m(erhead)f(of)e(deriv)m(ed) g(datat)m(yp)s(es)h(and)e(top)s(ologies.)332 2890 y(F)-8 b(rom)37 b(our)f(exp)s(erimen)m(ts)f(with)g(the)i(MSU)f(eMPI)h(pro)5 b(ject,)39 b(w)m(e)e(feel)f(that)h(w)m(e)g(can)f(incorp)s(orate)150 3003 y(all)28 b(of)i(this)e(functionalit)m(y)g(in)g(less)h(than)g(5K)g (b)m(ytes,)h(not)g(including)c(the)k(device)f(dep)s(enden)m(t)f(soft)m (w)m(are.)150 3116 y(Ev)m(en)40 b(with)e(a)i(lib)s(eral)c(allo)m(w)m (ance)41 b(of)e(co)s(de)h(for)f(device)h(driv)m(ers,)g(the)g(resulting) e(eMPI)h(library)f(will)150 3228 y(easily)30 b(\014t)g(within)d(a)k (standard)f(R)m(OM)h(or)f(FLASH)g(device.)3934 92 y Fg(1)3934 205 y(2)3934 318 y(3)3934 431 y(4)3934 544 y(5)3934 657 y(6)3934 770 y(7)3934 882 y(8)3934 995 y(9)3919 1108 y(10)3919 1221 y(11)3919 1334 y(12)3919 1447 y(13)3919 1560 y(14)3919 1673 y(15)3919 1786 y(16)3919 1899 y(17)3919 2012 y(18)3919 2124 y(19)3919 2237 y(20)3919 2350 y(21)3919 2463 y(22)3919 2576 y(23)3919 2689 y(24)3919 2802 y(25)3919 2915 y(26)3919 3028 y(27)3919 3141 y(28)3919 3254 y(29)3919 3366 y(30)3919 3479 y(31)3919 3592 y(32)3919 3705 y(33)3919 3818 y(34)3919 3931 y(35)3919 4044 y(36)3919 4157 y(37)3919 4270 y(38)3919 4383 y(39)3919 4496 y(40)3919 4609 y(41)3919 4721 y(42)3919 4834 y(43)3919 4947 y(44)3919 5060 y(45)3919 5173 y(46)3919 5286 y(47)3919 5399 y(48)p eop end userdict /end-hook known{end-hook}if --2941_daa-7811_433-74dd_2cb6--