%!PS-Adobe-2.0 %%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software %%Title: ug.dvi %%Pages: 64 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentPaperSizes: Letter %%EndComments %DVIPSCommandLine: dvips ug.dvi -o ug.ps %DVIPSParameters: dpi=300, comments removed %DVIPSSource: TeX output 1998.10.27:1457 %%BeginProcSet: tex.pro /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]{ch-image}imagemask restore}B /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 %%EndProcSet %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 40258431 52099146 1000 300 300 (ug.dvi) @start /Fa 46 122 df<00F0030188070304070604020E1C021C1C041C08041C000838 00303BC0503E41881C22081842043C4404778584700784E00308E00008E00008E00010E0 00106000207000403000801C070003F800181A7B991D>38 D<183C3C1C08080810204080 060B78990C>I<1838783808101020204080050B7D830C>44 DI<3078F06005047C830C>I<003E0000C1800100800200C00600C00600C00E01800703 0007860003CC0001F00001F800067C000C3E00181E00300700600700600700C00600C006 00400C006018003070000FC00012187D9714>56 D<0000200000600000E00000E00001E0 0001F0000270000270000470000870000870001070001070002070004070004070008038 00FFF8010038020038020038040038040038080038180038FE01FF181A7E991D>65 D<03FFF800700E00700600700700E00700E00700E00700E00701C00E01C01C01C03801C0 7003FFE003807803803803801C07001C07001C07001C07001C0E00380E00380E00700E00 E01C03C0FFFF00181A7D991B>I<000F8200706200C01603801E07000C0E000C1C000C18 000C380008300008700000700000E00000E00000E00000E00000E00020E00020E00020E0 00406000406000803001001006000C180003E000171A7A991B>I<03FFF80000700E0000 7007000070030000E0018000E0018000E0018000E001C001C001C001C001C001C001C001 C001C003800380038003800380038003800300070007000700070007000E0007000C000E 001C000E0038000E0070000E00E0001C038000FFFE00001A1A7D991D>I<03FFFF007007 00700300700100E00100E00100E00100E00101C08001C08001C08001C18003FF00038100 0381000381000702000700040700040700080E00080E00180E00100E00301C00E0FFFFE0 181A7D991A>I<000FC100302100C01301800F0700060E00060C00061800063800043000 04700000700000E00000E00000E00000E007FEE00070E00070E00070E000706000E06000 E03000E01801E00C064003F840181A7A991E>71 D<03FF1FF80070038000700380007003 8000E0070000E0070000E0070000E0070001C00E0001C00E0001C00E0001C00E0003FFFC 0003801C0003801C0003801C00070038000700380007003800070038000E0070000E0070 000E0070000E0070001C00E000FF87FC001D1A7D991D>I<03FF00700070007000E000E0 00E000E001C001C001C001C0038003800380038007000700070007000E000E000E000E00 1C00FF80101A7D990F>I<00FFC0000E00000E00000E00001C00001C00001C00001C0000 380000380000380000380000700000700000700000700000E00000E00000E00000E00061 C000E1C000E180008380004700003C0000121A7C9914>I<03FF03F0007001C000700100 0070020000E0040000E0080000E0100000E0400001C0800001C1000001C3000001C70000 038B80000393800003C380000381C0000701C0000701C0000700E0000700E0000E00E000 0E0070000E0070000E0070001C007800FF81FE001C1A7D991D>I<03FF00007000007000 00700000E00000E00000E00000E00001C00001C00001C00001C000038000038000038000 0380000700000700100700100700200E00200E00600E00400E00C01C0380FFFF80141A7D 9918>I<03F8001FC00078003C000078003C000078005C0000B800B80000B800B800009C 013800009C013800011C027000011C027000011C047000011C087000021C08E000021C10 E000021C10E000021C20E000041C41C000041C41C000041C81C000041C81C000080F0380 00080F038000080E038000180C038000180C070000FE083FE000221A7D9922>I<03FFF8 00701C00700600700700E00700E00700E00700E00701C00E01C00E01C01C01C038038060 03FF800380000380000700000700000700000700000E00000E00000E00000E00001C0000 FF8000181A7D991A>80 D<03FFF000701C00700E00700700E00700E00700E00700E00701 C00E01C01C01C03801C0E003FF800380C00380600380700700700700700700700700700E 00E00E00E00E00E10E00E21C0062FF803C181A7D991C>82 D<003F100060900180700100 7003002006002006002006002006000007000007C00003F80001FE00007F00000F800003 80000180000180200180200180600300600300600600700C00C8180087E000141A7D9916 >I<3FFFFC381C0C201C04401C0440380480380480380480380400700000700000700000 700000E00000E00000E00000E00001C00001C00001C00001C00003800003800003800003 8000078000FFF800161A79991B>I<7FE0FF0E00180E00100E00101C00201C00201C0020 1C0020380040380040380040380040700080700080700080700080E00100E00100E00100 E00200E00200E004006008006010003860000F8000181A78991D>III<03CC0E2E181C381C301C701C E038E038E038E038C072C072C07260F261341E180F107C8F14>97 D<7E000E000E000E001C001C001C001C00380038003BC03C307830701870187018E038E0 38E038E038C070C060C0E060C063801E000D1A7C9912>I<01E006180C18183830107000 6000E000E000E000E000E008E010602030C01F000D107C8F12>I<001F80000380000380 000380000700000700000700000700000E00000E0003CE000E2E00181C00381C00301C00 701C00E03800E03800E03800E03800C07200C07200C0720060F2006134001E1800111A7C 9914>I<01E00E181C08380870087010FFE0E000E000E000E000E0086010602030C01F00 0D107C8F12>I<000700000980001B80003B000038000030000070000070000070000070 0007FF0000E00000E00000E00000E00000E00001C00001C00001C00001C00001C0000380 00038000038000038000030000070000070000060000660000E40000CC00007000001121 81990C>I<00F300038B800607000E07000C07001C0700380E00380E00380E00380E0030 1C00301C00301C00183C0018780007B800003800003800007000607000E0E000C1C0007F 000011177E8F12>I<1F80000380000380000380000700000700000700000700000E0000 0E00000E7C000F86001E07001E07001C07001C0700380E00380E00380E00381C00701C80 701C80703880703900E01900600E00111A7E9914>I<030706000000000000384C4E8E9C 9C1C3838707272E2E4643808197C980C>I<1F8003800380038007000700070007000E00 0E000E0E0E131C271C431C801F003C003F8039C038E070E270E270E270E4E0646038101A 7E9912>107 D<1F0707070E0E0E0E1C1C1C1C3838383870707070E4E4E4E4E830081A7D 990A>I<307C1E00598663009E0783809E0703809C0703809C070380380E0700380E0700 380E0700380E0E00701C0E40701C0E40701C1C40701C1C80E0380C80601807001A107C8F 1F>I<307C005986009E07009E07009C07009C0700380E00380E00380E00381C00701C80 701C80703880703900E01900600E0011107C8F16>I<01F006180C0C180E300E700E600E E00EE00EE00CE01CE018E030606030C01F000F107C8F14>I<030F000590C009E0C009C0 6009C06009C0600380E00380E00380E00380E00701C00701800703800703000E8E000E78 000E00000E00001C00001C00001C00001C0000FF00001317808F14>I<30F05D189E389C 189C009C0038003800380038007000700070007000E00060000D107C8F10>114 D<03E004300830187018601C001F801FC00FE000E00060E060E06080C041803E000C107D 8F10>I<06000E000E000E000E001C001C00FFC01C003800380038003800700070007000 7000E100E100E100E200E40038000A177C960D>I<38064C074E0E8E0E9C0E9C0E1C1C38 1C381C381C7039703970393079389A0F0C10107C8F15>I<078F0008D18010F38020E180 20E00020E00001C00001C00001C00001C000038200038200C38200E78400C5880078F000 11107E8F12>120 D<38064C074E0E8E0E9C0E9C0E1C1C381C381C381C70387038703830 7838F00F700070006060E0E1C0C18047003C0010177C8F13>I E /Fb 81 126 df34 D<071C00071C00071C00071C00071C00FFFF80FFFF807FFF800E38000E38000E38000E38 000E38000E38000E38007FFF80FFFF80FFFF801C70001C70001C70001C70001C70001117 7F9614>I<00800180018007E01FF039BC619CC18EC18EC18EE18471807F801FE00FF001 F8019C018E4186E186E186E186718C39B81FF00FC00180018000800F1D7E9914>I<3806 007C0E006C0E00EE1C00EE1C00EE3800EE38006C38007C700038700000700000E00000E0 0001C00001C00001C000038000038000070000070E00071F000E1B000E3B800E3B801C3B 801C3B80381B00381F00180E00111D7F9914>I<60F0F878181818303060C080050C7896 14>39 D<0180038006000C001C0018003800700070007000E000E000E000E000E000E000 E000E000E000700070007000380018001C000C00060003800180091D799914>I<80C060 3038181C0E0E0E0707070707070707070E0E0E1C18383060C080081D7C9914>I<038003 800380638CF39E7FFC3FF80FE00FE03FF87FFCF39E638C0380038003800F107E9214>I< 01C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8001C00001C000 01C00001C00001C00001C00001C00011117F9314>I<70F8FCFC7C0C1830E0C0060A7984 14>II<70F8F8F8700505798414>I<0006000E000E001C00 1C003800380070007000E000E001C001C0038003800380070007000E000E001C001C0038 00380070007000E000E000C0000F1D7E9914>I<07C00FE01C7038383018701C701CE00E E00EE00EE00EE00EE00EE00EE00EE00E701C701C383838381C700FE007C00F177E9614> I<0300030007000F003F00F7004700070007000700070007000700070007000700070007 000700070007007FF07FF00C177C9614>I<0FC01FF03838701CE00EE00EE00E400E000E 001C001C00380030007000E001C0030006000C00180E300E7FFE7FFE0F177E9614>I<0F C01FF03838701C701C201C001C0018003800700FE00FF00038001C000E000E400EE00EE0 0E701C78383FF00FC00F177E9614>I<00780000F80001B80001B8000338000338000638 000E38000C38001C3800383800303800703800E03800FFFF80FFFF800038000038000038 0000380000380001FF0001FF0011177F9614>I<7FFC7FFC700070007000700070007000 700077C07FF07838601C000C000E000E400EE00EE01C601C78783FF00FC00F177E9614> I<01F007F80E1C1C1C381C300070007000E000E7C0EFF0F838F01CF00CE00EE00E600E70 0E700C381C1C380FF007C00F177E9614>I I<0FE03FF8783C701CE00EE00EE00EE00E701C1EF003801FF03838701CE00EE00EE00EE0 0EF01E701C38381FF007C00F177E9614>I<70F8F8F87000000000000070F8F8F8700510 798F14>58 D<70F8F8F87000000000000060F0F8F878183070E0800515798F14>I<0006 001E003E00F801F003C00F801F003C00F800F000F8003C001F000F8003C001F000F8003E 001E00060F157E9514>II<01C00003E00003E000036000036000077000077000077000077000 0630000E38000E38000E38000E38001C1C001FFC001FFC001C1C001C1C00380E00380E00 FE3F80FE3F8011177F9614>65 DI<01F18007FF 800E1F801C0780380780700380700380700380E00000E00000E00000E00000E00000E000 00E000007003807003807003803807001C07000E0E0007FC0001F00011177F9614>IIII<03C60FFE1C3E181E381E700E700E600EE000E000E000E000E0 7FE07FE00E600E700E700E381E181E1C3E0FFE03CE10177F9614>III<07FC07FC00700070007000700070007000700070007000 70007000700070007000700070E070E070F0E07FC01F000E177D9614>I76 DII<1FF07FFC783C701CE00EE00EE00EE00E E00EE00EE00EE00EE00EE00EE00EE00EE00EE00EE00E701C783C7FFC1FF00F177E9614> II<1FF07FFC783C701CE00EE00EE00EE00EE00E E00EE00EE00EE00EE00EE00EE00EE00EE38EE1CE71DC78FC7FFC1FF000780038003C001C 001E0F1C7E9614>II<0FCC1FFC307C603CE01CE01CE01CE00070007E003FE00F F001F8001C001E000E600EE00EE00EF01CF838FFF0C7E00F177E9614>I<7FFF80FFFF80 E1C380E1C380E1C380E1C38001C00001C00001C00001C00001C00001C00001C00001C000 01C00001C00001C00001C00001C00001C00001C0000FF8000FF80011177F9614>IIII<7E3E007E3E001C3C001E38000E78000F700007700007E00003E0 0003C00001C00003C00003E00003E0000770000770000E78000E38001C3C001C1C003C1E 00FE3F80FE3F8011177F9614>II<7FFEFFFEE01CE01CE038E038007000E000E0 01C001C00380070007000E000E001C00380E380E700E700EFFFEFFFE0F177E9614>IIII95 D<1FC0007FF000707800201800001C00001C0007FC001FFC003C1C00701C00E01C00E01C 00E01C00707C003FFF800F8F8011107E8F14>97 DI<03F80FFE1C0E3804700060 00E000E000E000E00060007000380E1C1E0FFC03F00F107E8F14>I<007E00007E00000E 00000E00000E00000E00000E0007CE000FFE001C3E00301E00700E00E00E00E00E00E00E 00E00E00E00E00E00E00700E00301E00383E001FEFC007CFC012177F9614>I<07E00FF0 1C38301C700CE00EE00EFFFEFFFEE00060007000380E1C1E0FFC03F00F107E8F14>I<00 FC01FE038E07040700070007007FFEFFFE07000700070007000700070007000700070007 0007000700FFF8FFF80F177F9614>I<07CF001FFF80383B80301800701C00701C00701C 003018003838003FF00037C0007000007000003FF8001FFC003FFE00700F00E00380E003 80E00380E003807007003C1E001FFC0007F00011197F8F14>II<06000F000F00 06000000000000000000FF00FF0007000700070007000700070007000700070007000700 0700FFF8FFF80D187C9714>I<006000F000F0006000000000000000001FF01FF0007000 70007000700070007000700070007000700070007000700070007000700070007040E0E0 C07F803F000C207E9714>IIIII<07 C01FF03C78701C701CE00EE00EE00EE00EE00EE00E701C783C3C781FF007C00F107E8F14 >II114 D<0FD83FF86038C038C038F0007F803FF007F8001C6006E006F006F81CFFF8CFE00F107E 8F14>I<06000E000E000E000E007FFCFFFC0E000E000E000E000E000E000E000E000E0E 0E0E0E0E0E1C07F801F00F157F9414>II< FE3F80FE3F803C1E001C1C001C1C001C1C000E38000E38000E3800063000077000077000 07700003E00003E00003E00011107F8F14>II<7E3F007E3F001E3C000E780007700007E00003E00001C00003C00003E0000770000E 78000E38001C1C00FE3F80FE3F8011107F8F14>II<003E00FE01E00380 0380038003800380038003800380038003807F00FE007F00038003800380038003800380 038003800380038001E000FE003E0F1D7E9914>123 D<7800FE000F0003800380038003 8003800380038003800380038001FC00FE01FC0380038003800380038003800380038003 8003800F00FE0078000F1D7E9914>125 D E /Fc 19 118 df<00008000010000020000 040000080000100000300000600000C00000C0000180000300000300000600000600000E 00000C00001C0000180000180000380000300000300000700000700000600000600000E0 0000E00000E00000C00000C00000C00000C00000C00000C00000C00000C00000C00000C0 0000C00000C00000C00000400000600000600000200000300000100000080000113278A4 14>40 D<0008000004000006000002000003000003000001000001800001800001800001 800001800001800001800001800001800001800001800001800001800003800003800003 80000300000300000700000700000600000600000E00000C00000C00001C000018000038 0000300000300000600000600000C0000180000180000300000600000400000800001000 00200000400000800000113280A414>I<00F8C00185C00705C00E03800E03801C03803C 0380380700780700780700780700F00E00F00E00F00E00F00E10F01C20701C20703C2030 5C40308C400F078014157B9419>97 D<03C01F8003800380038007000700070007000E00 0E000E000E001C001CF81D0C1E0E3C0638073807380F700F700F700F700FE01EE01EE01E E03CE038E038607060E031C01F0010237BA216>I<007E0001C1000301800703800E0780 1C07803C0000380000780000780000780000F00000F00000F00000F00000F00100700100 700200300C001830000FC00011157B9416>I<00003C0003F80000380000380000380000 700000700000700000700000E00000E00000E00000E00001C000F9C00185C00705C00E03 800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E10F01C 20701C20703C20305C40308C400F078016237BA219>I<00F803840E021C023C02380278 04F018FFE0F000F000E000E000E000E000E002E0026004701830600F800F157A9416>I< 00F0000FE00000E00000E00000E00001C00001C00001C00001C000038000038000038000 038000070000071F0007218007C0C00F00E00F00E00E00E00E00E01C01C01C01C01C01C0 1C01C0380380380380380380380704700708700E08700E10700610E006206003C016237D A219>104 D<0000E00001E00001E00000C0000000000000000000000000000000000000 000000000000001E00002300004380008380008380010380010380000700000700000700 000700000E00000E00000E00000E00001C00001C00001C00001C00003800003800003800 00380000700000700000700070E000F0C000F180006300003C0000132B82A00F>106 D<01E00FC001C001C001C0038003800380038007000700070007000E000E000E000E001C 001C001C001C0038003800380038007000700070007100E200E200E200E200640038000B 237CA20C>108 D<1C0F80F8002610C10C00476066060087807807008780780700870070 070087007007000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C001C01C01C 001C01C01C001C01C0382038038038403803807040380380708038038030807007003100 3003001E0023157B9428>I<380F804C30C04E40608E80708F00708E00708E00701C00E0 1C00E01C00E01C00E03801C03801C03801C0380384700388700308700708700310E00310 6001E016157B941B>I<007E0001C3000381800701C00E01C01C01E03C01E03801E07801 E07801E07801E0F003C0F003C0F00380F00780700700700E00700C0030180018700007C0 0013157B9419>I<01C1F002621804741C08780C08700E08700E08701E00E01E00E01E00 E01E00E01E01C03C01C03C01C03C01C07803807003807003C0E003C1C0072380071E0007 00000700000E00000E00000E00000E00001C00001C00001C0000FFC000171F7F9419>I< 00F8400184C00705C00E03800E03801C03803C0380380700780700780700780700F00E00 F00E00F00E00F00E00F01C00701C00703C00305C0030B8000F3800003800003800007000 00700000700000700000E00000E00000E0000FFC00121F7B9416>I<1C1F002620804741 C08783C08703C08701808700000E00000E00000E00000E00001C00001C00001C00001C00 0038000038000038000038000070000030000012157B9415>I<00FC0001830002008004 01800C03800C03000C00000F00000FF00007FC0003FE00003E00000F00000700700700F0 0600F00600E004004008002030001FC00011157D9414>I<00C001C001C001C001C00380 0380038003800700FFF8070007000E000E000E000E001C001C001C001C00380038003800 3810702070207040708031001E000D1F7C9E10>I<1E00602300E04380E04381C08381C0 8701C08701C00703800E03800E03800E03801C07001C07001C07001C07081C0E10180E10 1C0E101C1E200C262007C3C015157B941A>I E /Fd 2 63 df<00000018000000780000 01E00000078000001E00000078000003E000000F8000003C000000F0000003C000000F00 00003C000000F0000000F00000003C0000000F00000003C0000000F00000003C0000000F 80000003E0000000780000001E0000000780000001E000000078000000181D1C7C9926> 60 D62 D E /Fe 1 51 df<1F0060C06060F070F03060300070 0070006000C001C00180020004000810101020207FE0FFE00C137E9211>50 D E /Ff 6 118 df<3C000C001800180018001800300033803C60302060306030603060 30C060C06040C0608023001E000C147F930F>98 D<0780184030206040C040FF80C00080 008000C020C04061803E000B0D7E8C10>101 D<30F87C00590C86004E0D06009C0E0600 980C0600180C0600180C060030180C0030180C8030181880301818806030190060300E00 190D7F8C1D>109 D<30F8590C4E0C9C0C980C180C180C30183019303130316032601C10 0D7F8C15>I<31E05A704C709C609800180018003000300030003000600060000C0D7F8C 0F>114 D<380C4C0C4C0C8C18981818181818303030323032307218B40F1C0F0D7F8C14> 117 D E /Fg 48 122 df<701CF01EF01EF01EF01EF01EF01EF01E701C701C701C701C70 1C600C0F0E7B9D1A>34 D<183C3E1E0E0E0E0E0E1C1C38F8F060070F779D1A>39 D<0038007800F001E003C007800F000E001C001C0038003800700070007000E000E000E0 00E000E000E000E000E000E000E000700070007000380038001C001C000E000F00078003 C001E000F8007800380D2878A21A>I<6000F00078003C001E000F000780038001C001C0 00E000E00070007000700038003800380038003800380038003800380038007000700070 00E000E001C001C0038007800F001E003C007800F00060000D287CA21A>I<183E7E7F3F 1F070E0E1CFCF860080D77851A>44 D<3078FCFC7830060676851A>46 D<7FFFF0FFFFF8FFFFF87FFFF00000000000000000000000007FFFF0FFFFF8FFFFF87FFF F0150C7E941A>61 D<07FC001FFF007FFF807803C0E001E0F000E0F000E06001E00003C0 000F80001F00003C0000780000700000E00000E00000E00000E00000E00000C000000000 00000000000000000000000000000000C00001E00001E00000C000131E7D9D1A>63 D<003800007C00007C00006C0000EE0000EE0000EE0000C60000C60001C70001C70001C7 000183000383800383800383800383800701C00701C007FFC007FFC00FFFE00E00E00E00 E00E00E01E00F01C00707F01FCFF83FE7F01FC171E7F9D1A>65 DI<007C3801FF3807FFF80F83F81E00F81C00783800 78380038700038700038700000E00000E00000E00000E00000E00000E00000E00000E000 007000007000387000383800383800381C00701E00F00F83E007FFC001FF80007C00151E 7E9D1A>I69 DI<7FFF00FFFF807FFF0001 C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001 C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007F FF00FFFF807FFF00111E7C9D1A>73 D<01FFC003FFC001FFC0000E00000E00000E00000E 00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E 00000E00000E00000E00000E00600E00F00E00F01E00F03C007FF8003FF0000FC000121E 7C9D1A>I<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E 00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E 001C0E001C0E001C0E001C0E001C7FFFFCFFFFFC7FFFFC161E7F9D1A>76 DII<0FFE003FFF807FFFC07C07C07001C0F001E0E000E0 E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0 E000E0E000E0E000E0E000E0F001E0F001E07001C07C07C07FFFC03FFF800FFE00131E7D 9D1A>II82 D<03F8E00FFEE01FFFE03C07E07801E0F001 E0E000E0E000E0E000E0E000007000007800003F80001FF80007FF00007FC00007E00000 F0000070000038000038600038E00038E00038E00070F000F0FE01E0FFFFC0EFFF80E1FE 00151E7E9D1A>I<7FFFFEFFFFFEFFFFFEE0380EE0380EE0380EE0380E00380000380000 380000380000380000380000380000380000380000380000380000380000380000380000 380000380000380000380000380000380003FF8003FF8003FF80171E7F9D1A>I87 D91 D93 D<1FF0003FFC007FFE00780F00300700000380000380 007F8007FF801FFF803F8380780380700380E00380E00380E00380700780780F803FFFFC 1FFDFC07F0FC16157D941A>97 D<7E0000FE00007E00000E00000E00000E00000E00000E 00000E00000E3E000EFF800FFFE00FC1F00F80700F00380E00380E001C0E001C0E001C0E 001C0E001C0E001C0E001C0F00380F00780F80F00FC1E00FFFC00EFF80063E00161E7F9D 1A>I<00FF8003FFC00FFFE01F01E03C00C0780000700000700000E00000E00000E00000 E00000E000007000007000007800703C00701F01F00FFFE003FFC000FE0014157D941A> I<000FC0001FC0000FC00001C00001C00001C00001C00001C00001C001F1C007FDC00FFF C01E0FC03C07C07803C07001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C07003 C07003C03807C03E0FC01FFFF807FDFC01F1F8161E7E9D1A>I<01F80007FF000FFF801E 07C03C01C07800E07000E0E00070E00070FFFFF0FFFFF0FFFFF0E0000070000070000078 00703C00701F01F00FFFE003FF8000FE0014157D941A>I<0007E0001FF0003FF8007878 00F03000E00000E00000E00000E0007FFFF0FFFFF0FFFFF000E00000E00000E00000E000 00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0003FFF80 7FFFC03FFF80151E7F9D1A>I<01F87C07FFFE0FFFFE1E078C1C03803801C03801C03801 C03801C03801C01C03801E07801FFF001FFE0039F8003800003800001C00001FFF801FFF E03FFFF878007C70001CE0000EE0000EE0000EE0000E70001C78003C3E00F81FFFF007FF C001FF0017217F941A>I<00C00001E00001E00000C00000000000000000000000000000 00000000007FE0007FE0007FE00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E0007FFF80FFFFC07FFF80121F7C9E 1A>105 D<000C001E001E000C00000000000000000000000007FE0FFE07FE000E000E00 0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00 0E000E000E001C601CF038FFF87FF01FC00F2A7E9E1A>II<7FE000FFE0007FE00000E00000E00000E00000E00000E0 0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0 0000E00000E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131E7D9D1A >I<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C 1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C 1C007F1F1F00FFBFBF807F1F1F00191580941A>I<7E3E00FEFF807FFFC00FC1C00F80E0 0F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0 0E00E07FC3FCFFE7FE7FC3FC17157F941A>I<01F00007FC001FFF003E0F803C07807803 C07001C0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F 801FFF0007FC0001F00013157D941A>I<7E3E00FEFF807FFFE00FC1F00F80700F00380E 00380E001C0E001C0E001C0E001C0E001C0E001C0E001C0F00380F00780F80F00FC1E00F FFC00EFF800E3E000E00000E00000E00000E00000E00000E00000E00000E00007FC000FF E0007FC00016207F941A>I<7F81F8FF8FFC7F9FFE03FE1E03F80C03E00003E00003C000 0380000380000380000380000380000380000380000380000380000380007FFF00FFFF00 7FFF0017157F941A>114 D<07FB801FFF807FFF80780780E00380E00380E00380780000 7FC0001FFC0007FE00003F800007806001C0E001C0E001C0F003C0FC0780FFFF00EFFE00 E3F80012157C941A>I<0180000380000380000380000380000380000380007FFFE0FFFF E0FFFFE00380000380000380000380000380000380000380000380000380000380000380 7003807003807003807001C1E001FFE000FF80003F00141C7F9B1A>I<7E07E0FE0FE07E 07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E 00E00E00E00E01E00F03E007FFFC03FFFE00FCFC17157F941A>I<7F83FCFFC7FE7F83FC 0E00E00E00E00E00E00701C00701C00701C003838003838003838001C70001C70001C700 00EE0000EE0000EE00007C00007C0000380017157F941A>II<7F83FCFFC7FE7F83FC0E00E00E 00E00700E00701C00701C00381C003838003C38001C38001C70000E70000E70000E60000 6600006E00003C00003C00003C0000380000380000380000700000700030F00078E00071 E0007FC0003F80001E000017207F941A>121 D E /Fh 57 123 df<000FF000007FFC00 01F80E0003E01F0007C03F000F803F000F803F000F801E000F800C000F8000000F800000 0F8000000F800000FFFFFF00FFFFFF000F801F000F801F000F801F000F801F000F801F00 0F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F00 0F801F000F801F000F801F000F801F007FF0FFE07FF0FFE01B237FA21F>12 D<387CFEFFFF7F3B03030306060C1C18702008117C8610>44 DI<387CFEFEFE7C3807077C8610>I<00180000780001F800FFF800FFF80001F800 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 7FFFE07FFFE013207C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE 03F8FE01F87C01F83803F80003F80003F00003F00007E00007C0000F80001F00003E0000 380000700000E01801C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FF FFF015207D9F1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F8 1F03F00003F00003E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC 3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E 9F1C>I<0000E00001E00003E00003E00007E0000FE0001FE0001FE00037E00077E000E7 E001C7E00187E00307E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFFFFFF FF0007E00007E00007E00007E00007E00007E00007E000FFFF00FFFF18207E9F1C>I<30 00203E01E03FFFC03FFF803FFF003FFE003FF80033C00030000030000030000030000031 FC0037FF003E0FC03807E03003E00003F00003F00003F80003F83803F87C03F8FE03F8FE 03F8FC03F0FC03F07007E03007C03C1F800FFF0003F80015207D9F1C>I<001F8000FFE0 03E07007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFFE0 FD80F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C 3E007C1E00F80F00F00783E003FFC000FF0017207E9F1C>I<6000007800007FFFFE7FFF FE7FFFFC7FFFF87FFFF87FFFF0E00060E000C0C00180C00300C00300000600000C00001C 0000180000380000780000780000F00000F00000F00001F00001F00001F00003F00003F0 0003F00003F00003F00003F00003F00001E00017227DA11C>I<00FE0003FFC00703E00E 00F01C00F01C00783C00783E00783F00783F80783FE0F01FF9E01FFFC00FFF8007FFC003 FFE007FFF01E7FF83C1FFC7807FC7801FEF000FEF0003EF0001EF0001EF0001EF8001C78 00383C00381F00F00FFFC001FF0017207E9F1C>I<07FC001FFF00380F807007C0F807E0 FC07E0FC07E0FC07E07807E0000FC0001F80001F00003C0000780000700000E00000E000 00C00000C00000C00000C00000C00000C00000000000000000000000000000000001C000 03E00007F00007F00007F00003E00001C00013237DA21A>63 D<00007000000000700000 0000F800000000F800000000F800000001FC00000001FC00000003FE00000003FE000000 03FE000000067F000000067F0000000C7F8000000C3F8000000C3F800000181FC0000018 1FC00000301FE00000300FE00000700FF000006007F000006007F00000C007F80000FFFF F80001FFFFFC00018001FC00018001FC00030001FE00030000FE00070000FF000600007F 000600007F00FFE007FFF8FFE007FFF825227EA12A>65 DI<0003FE0080001FFF818000FF01E380 01F8003F8003E0001F8007C0000F800F800007801F800007803F000003803F000003807F 000001807E000001807E00000180FE00000000FE00000000FE00000000FE00000000FE00 000000FE00000000FE00000000FE000000007E000000007E000001807F000001803F0000 01803F000003801F800003000F8000030007C000060003F0000C0001F800380000FF00F0 00001FFFC0000003FE000021227DA128>IIII<0003FE0040001FFFC0C0007F00F1C001F8003FC003F000 0FC007C00007C00FC00003C01F800003C03F000001C03F000001C07F000000C07E000000 C07E000000C0FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 FE00000000FE000FFFFC7E000FFFFC7F00001FC07F00001FC03F00001FC03F00001FC01F 80001FC00FC0001FC007E0001FC003F0001FC001FC003FC0007F80E7C0001FFFC3C00003 FF00C026227DA12C>I73 D<01FFFF8001FFFF800003F8000003F8000003F8000003F800 0003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800 0003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800 1803F8007E03F800FF03F800FF03F800FF03F800FF03F0007E07E0007C0FC0001FFF8000 07FC0000192280A11D>I76 DII80 D82 D<01FE0207FF861F01FE3C007E7C001E78000E78000EF80006F80006FC0006FC0000FF00 00FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FE00007F00003F0000 3FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA11F >I<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E003F801 C0E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F80000 0003F800000003F800000003F800000003F800000003F800000003F800000003F8000000 03F800000003F800000003F800000003F800000003F800000003F800000003F800000003 F800000003F800000003F800000003F8000001FFFFF00001FFFFF00022227EA127>II87 D<0FFC003FFF807E07C07E 03E07E01E07E01F03C01F00001F00001F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC 01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97 DI<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC00 00FC0000FC0000FC00007C00007E00007E00003E00181F00300FC06007FFC000FF001516 7E9519>I<0001FE000001FE0000003E0000003E0000003E0000003E0000003E0000003E 0000003E0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E 003E003E007E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E 00FC003E00FC003E007C003E007C003E003E007E001F00FE000F83BE0007FF3FC001FC3F C01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FF FFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003FFC000 FF0015167E951A>I<001FC0007FE000F1F001E3F003E3F007C3F007C1E007C00007C000 07C00007C00007C00007C000FFFE00FFFE0007C00007C00007C00007C00007C00007C000 07C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000 3FFC003FFC00142380A211>I<01FE0F0007FFBF800F87C7801F03E7801E01E0003E01F0 003E01F0003E01F0003E01F0003E01F0001E01E0001F03E0000F87C0000FFF800009FE00 0018000000180000001C0000001FFFE0000FFFF80007FFFE001FFFFF003C003F0078000F 80F0000780F0000780F0000780F000078078000F003C001E001F007C000FFFF80001FFC0 0019217F951C>II<1C003E007F007F007F003E001C000000000000000000000000 000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F001F001F00FFE0FFE00B247EA310>I<0038007C00FE00FE00FE007C003800000000 0000000000000000000003FE03FE003E003E003E003E003E003E003E003E003E003E003E 003E003E003E003E003E003E003E003E003E003E003E003E783EFC3EFC3CFC7C78F87FE0 1F800F2E83A311>IIIII<00 FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC 007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C>I< FF0FE000FF3FF8001FE07C001F803E001F001F001F001F801F001F801F000FC01F000FC0 1F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F001F801F001F801F803F00 1FC03E001FE0FC001F3FF8001F0FC0001F0000001F0000001F0000001F0000001F000000 1F0000001F0000001F000000FFE00000FFE000001A207E951F>I<00FE030007FF87000F C1C7001F006F003F003F007E003F007E001F007C001F00FC001F00FC001F00FC001F00FC 001F00FC001F00FC001F00FC001F007E001F007E001F003E003F001F007F000FC1DF0007 FF9F0001FC1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000 001F000000FFE00000FFE01B207E951E>II<0FF3003FFF00781F00600700E00300E003 00F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E00380E003 80F00700FC0E00EFFC00C7F00011167E9516>I<01800001800001800001800003800003 80000780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F 80000F80000F80000F80000F80000F80000F81800F81800F81800F81800F81800F830007 C30003FE0000F80011207F9F16>IIIIII<7FFFF07FFFF07C03E07007C0600FC0E01F80C01F00C03E00 C07E0000FC0000F80001F00003F03007E03007C0300F80701F80703F00603E00E07C03E0 FFFFE0FFFFE014167E9519>I E /Fi 23 122 df<00F800030C000E06041C0704380308 300388700390700390E003A0E003A0E003C0E00380E00380E00380600780600B88307190 0F80E016127E911B>11 D<0001F000061800080C00100C00200E00400E00800E00801C01 001C010018010038020FF00210C0020FE002003004003004003004003804003808007008 00700800700800E01800E01801C0140180140300230E0020F80020000020000040000040 000040000040000080000080000017257F9C17>I<60F0F06004047C830C>58 D<000001800000078000001E00000078000001E00000078000000E00000038000000F000 0003C000000F0000003C000000F0000000F00000003C0000000F00000003C0000000F000 0000380000000E0000000780000001E0000000780000001E000000078000000180191A7D 9620>60 D62 D<00000C0000000C0000001C0000001C0000003C0000005C0000005C 0000009E0000008E0000010E0000020E0000020E0000040E0000040E0000080E0000100E 0000100E0000200700003FFF000040070000800700008007000100070001000700020007 0004000700040007001C000780FF803FF01C1D7F9C1F>65 D<01FFFF00003C01C0003800 E0003800F0003800700038007000700070007000F0007000F0007001E000E003C000E007 8000E01F0000FFFC0001C00F0001C0078001C003C001C003C0038003C0038003C0038003 C0038003C0070007800700070007000E0007001C000E007800FFFFC0001C1C7E9B1F>I< 0001F808000E061800380138006000F001C0007003800070070000300F0000200E000020 1C0000203C0000203C000000780000007800000078000000F0000000F0000000F0000000 F0000000F0000100F0000100F0000100700002007000020030000400380008001C001000 0E0060000701800000FE00001D1E7E9C1E>I<01FFE0003C000038000038000038000038 0000700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C0 0003800203800203800203800407000407000C0700180700380E00F0FFFFF0171C7E9B1C >76 D<01E3000717000C0F00180F00380E00300E00700E00700E00E01C00E01C00E01C00 E01C00E03880E03880E038806078803199001E0E0011127E9116>97 D<3F00070007000E000E000E000E001C001C001C001C0039E03A303C1838187018701C70 1C701CE038E038E038E030E070E060E0C061C023001E000E1D7E9C12>I<01F007080C08 18043808300870307FC0E000E000E000E000E000E0046008601030600F800E127E9113> 101 D<01C003C003C001800000000000000000000000001C00270047004700870087000E 000E001C001C001C003800388038807080710032001C000A1C7E9B0E>105 D<381F81F04E20C6184640E81C4680F01C8F00F01C8E00E01C0E00E01C0E00E01C1C01C0 381C01C0381C01C0381C01C0703803807138038071380380E1380380E270070064300300 3820127E9124>109 D<3C1F004E61804681C04701C08F01C08E01C00E01C00E01C01C03 801C03801C03801C0700380710380710380E10380E2070064030038014127E9119>I<00 F800030C000E06001C0300180300300300700380700380E00700E00700E00700E00E00E0 0E00E01C0060180060300030E0000F800011127E9114>I<07878009C86008D03008E030 11C03011C03801C03801C0380380700380700380700380600700E00700C0070180078300 0E86000E78000E00000E00001C00001C00001C00001C00003C0000FF0000151A819115> I<3C3C4E424687470F8E1E8E0C0E000E001C001C001C001C003800380038003800700030 0010127E9113>114 D<01F0060C0C040C0E180C1C001F000FE00FF003F80038201C7018 F018F010803060601F800F127E9113>I<00C001C001C001C00380038003800380FFF007 00070007000E000E000E000E001C001C001C001C00382038203840384018800F000C1A80 990F>I<1C00C02701C04701C04701C08703808703800E03800E03801C07001C07001C07 001C0700180E20180E20180E201C1E200C264007C38013127E9118>I<07878008C84010 F0C020F1E020E3C040E18000E00000E00001C00001C00001C00001C000638080F38080F3 8100E5810084C60078780013127E9118>120 D<1C00C02701C04701C04701C087038087 03800E03800E03801C07001C07001C07001C0700180E00180E00180E001C1E000C3C0007 DC00001C00001800603800F03000F06000E0C0004180003E0000121A7E9114>I E /Fj 4 22 df0 D<400020C000606000C030018018 03000C0600060C0003180001B00000E00000E00001B000031800060C000C060018030030 01806000C0C0006040002013147A9320>2 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFF FFFFFF7FFE7FFE3FFC1FF80FF003C010107E9115>15 D21 D E /Fk 49 122 df<0001FF81FE00000FFFEFFF00007F81FF8F8000FE01FF1FC001F803 FE1FC003F803FC1FC007F003FC1FC007F003FC0F8007F001FC000007F001FC000007F001 FC000007F001FC000007F001FC000007F001FC000007F001FC0000FFFFFFFFF000FFFFFF FFF000FFFFFFFFF00007F001FC000007F001FC000007F001FC000007F001FC000007F001 FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001 FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001 FC000007F001FC000007F001FC000007F001FC000007F001FC00007FFF1FFFE0007FFF1F FFE0007FFF1FFFE0002A2A7FA927>11 D<1C007F007F00FF80FF80FF807F007F001C0009 097B8813>46 D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE00FFFFFEFFFFFEFFFFFE17277BA622>49 D<00FF800007FFF0000FFFFC00 1E03FE003800FF807C003F80FE003FC0FF001FC0FF001FE0FF000FE0FF000FE07E000FE0 3C001FE000001FE000001FC000001FC000003F8000003F0000007E000000FC000000F800 0001F0000003E00000078000000F0000001E0000003C00E0007000E000E000E001C001C0 038001C0060001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF80 1B277DA622>I<007F800003FFF00007FFFC000F81FE001F007F003F807F003F803F803F 803F803F803F801F803F801F003F8000007F0000007F0000007E000000FC000001F80000 07F00000FFC00000FFC0000001F80000007E0000003F0000003F8000001FC000001FC000 001FE000001FE03C001FE07E001FE0FF001FE0FF001FE0FF001FC0FF003FC0FE003F807C 007F003F01FE001FFFFC0007FFF00000FF80001B277DA622>I<00000F0000000F000000 1F0000003F0000007F000000FF000001FF000001FF000003BF0000073F00000E3F00001C 3F00003C3F0000383F0000703F0000E03F0001C03F0003803F0007803F0007003F000E00 3F001C003F0038003F0070003F00F0003F00FFFFFFF8FFFFFFF8FFFFFFF800007F000000 7F0000007F0000007F0000007F0000007F0000007F0000007F00001FFFF8001FFFF8001F FFF81D277EA622>I<180003001F801F001FFFFE001FFFFC001FFFF8001FFFF0001FFFC0 001FFF00001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C7FC0 001DFFF8001F80FC001E003F0008003F0000001F8000001FC000001FC000001FE000001F E018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC001FC078003F8078003F 803C007F001F01FE000FFFFC0003FFF00000FF80001B277DA622>I<0007F800003FFE00 00FFFF0001FC078003F00FC007C01FC00F801FC01F801FC01F001FC03F000F803F000000 7E0000007E0000007E000000FE020000FE1FF000FE3FFC00FE603E00FE801F00FF801F80 FF000FC0FF000FC0FE000FE0FE000FE0FE000FE0FE000FE07E000FE07E000FE07E000FE0 7E000FE03E000FE03F000FC01F000FC01F001F800F801F0007E07E0003FFFC0001FFF800 003FC0001B277DA622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07F FFFFC07FFFFF807FFFFF0070000E0070000E0070001C00E0003800E0007000E000E00000 01C0000001C000000380000007800000070000000F0000001F0000001E0000003E000000 3E0000007E0000007C0000007C000000FC000000FC000000FC000000FC000001FC000001 FC000001FC000001FC000001FC000001FC000001FC000000F80000007000001C297CA822 >I<00000780000000000780000000000FC0000000000FC0000000000FC0000000001FE0 000000001FE0000000003FF0000000003FF0000000003FF00000000077F80000000077F8 00000000F7FC00000000E3FC00000000E3FC00000001C1FE00000001C1FE00000003C1FF 0000000380FF0000000380FF00000007007F80000007007F8000000F007FC000000E003F C000000E003FC000001C001FE000001C001FE000003FFFFFF000003FFFFFF000003FFFFF F00000700007F80000700007F80000F00007FC0000E00003FC0001E00003FE0001C00001 FE0001C00001FE0003C00001FF00FFFE003FFFFCFFFE003FFFFCFFFE003FFFFC2E297EA8 33>65 D<00007FE0030007FFFC07001FFFFF0F007FF00F9F00FF0001FF01FC0000FF03F8 00007F07F000003F0FE000001F1FC000001F1FC000000F3F8000000F3F800000077F8000 00077F800000077F00000000FF00000000FF00000000FF00000000FF00000000FF000000 00FF00000000FF00000000FF00000000FF000000007F000000007F800000007F80000007 3F800000073F800000071FC00000071FC000000E0FE000000E07F000001C03F800003C01 FC00007800FF0001F0007FF007C0001FFFFF800007FFFE0000007FF00028297CA831>67 DIII<00007FE00300 0007FFFC0700001FFFFF0F00007FF00F9F0000FF0001FF0001FC0000FF0003F800007F00 07F000003F000FE000001F001FC000001F001FC000000F003F8000000F003F8000000700 7F80000007007F80000007007F0000000000FF0000000000FF0000000000FF0000000000 FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000FFFFF8 7F0000FFFFF87F8000FFFFF87F800000FF003F800000FF003F800000FF001FC00000FF00 1FC00000FF000FE00000FF0007F00000FF0003F80000FF0001FC0000FF0000FF0001FF00 007FF007FF00001FFFFF9F000007FFFE0F0000007FF003002D297CA835>III<00FFFFF800FFFFF800FFFFF80000FF000000 FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF001800FF007E00 FF00FF00FF00FF00FF00FF00FF00FF00FE007E01FC007C01F8003E07F0000FFFE00003FF 00001D297EA823>I77 DI<0000FFC00000000FFFFC0000003F 807F000000FE001FC00001F80007E00003F00003F00007E00001F8000FE00001FC001FC0 0000FE001FC00000FE003F8000007F003F8000007F007F8000007F807F0000003F807F00 00003F807F0000003F80FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF00 00003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC07F00 00003F807F8000007F807F8000007F803F8000007F003F8000007F001FC00000FE001FC0 0000FE000FE00001FC0007F00003F80003F80007F00001FC000FE00000FE001FC000003F C0FF0000000FFFFC00000000FFC000002A297CA833>II82 D<00FF806003FFF0E00FFFF8E01F80FD E03F001FE03E0007E07C0003E07C0003E0FC0001E0FC0001E0FC0000E0FE0000E0FE0000 E0FF000000FFC000007FFC00007FFFE0003FFFF8001FFFFE001FFFFF0007FFFF8003FFFF C000FFFFC0000FFFE000007FE000001FF000000FF0000007F0E00003F0E00003F0E00003 F0E00003F0F00003E0F00003E0F80007E0FC0007C0FF000F80FFE03F80E3FFFE00E1FFFC 00C01FF0001C297CA825>I<7FFFFFFFFF807FFFFFFFFF807FFFFFFFFF807F807F807F80 7C007F800F8078007F80078078007F80078070007F800380F0007F8003C0F0007F8003C0 E0007F8001C0E0007F8001C0E0007F8001C0E0007F8001C0E0007F8001C000007F800000 00007F80000000007F80000000007F80000000007F80000000007F80000000007F800000 00007F80000000007F80000000007F80000000007F80000000007F80000000007F800000 00007F80000000007F80000000007F80000000007F80000000007F80000000007F800000 00007F80000000007F80000000007F80000000FFFFFFC00000FFFFFFC00000FFFFFFC000 2A287EA72F>II<03FF80000FFFF0001F01FC003F80FE003F807F003F803F003F803F80 1F003F8000003F8000003F8000003F8000003F80003FFF8001FC3F800FE03F801F803F80 3F003F807E003F80FC003F80FC003F80FC003F80FC003F80FC005F807E00DF803F839FFC 1FFE0FFC03FC03FC1E1B7E9A21>97 DI<003FF00001FFFC0003F03E000FC07F001F807F003F007F003F 007F007F003E007E0000007E000000FE000000FE000000FE000000FE000000FE000000FE 000000FE0000007E0000007E0000007F0000003F0003803F8003801F8007000FE00E0003 F83C0001FFF800003FC000191B7E9A1E>I<00007FF000007FF000007FF0000007F00000 07F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000 07F0000007F0003F87F001FFF7F007F03FF00FC00FF01F8007F03F0007F03F0007F07E00 07F07E0007F07E0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE00 07F0FE0007F07E0007F07E0007F03F0007F03F0007F01F800FF00FC01FF007E07FFF01FF E7FF007F87FF202A7EA925>I<003FC00001FFF00003E07C000F803E001F801F001F001F 003F000F807E000F807E000FC07E000FC0FE0007C0FE0007C0FFFFFFC0FFFFFFC0FE0000 00FE000000FE0000007E0000007E0000007F0000003F0001C01F0001C00F80038007C007 0003F01E0000FFFC00003FE0001A1B7E9A1F>I<0007F8003FFC007E3E01FC7F03F87F03 F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFFC0FFFFC0FF FFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007 F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF807FFF807F FF80182A7EA915>I<00FF80F003FFE3F80FC1FE1C1F007C7C3F007E7C3E003E107E003F 007E003F007E003F007E003F007E003F007E003F003E003E003F007E001F007C000FC1F8 000BFFE00018FF80001800000038000000380000003C0000003FFFF8003FFFFF001FFFFF C00FFFFFE007FFFFF01FFFFFF03C0007F07C0001F8F80000F8F80000F8F80000F8F80000 F87C0001F07C0001F03F0007E00FC01F8007FFFF00007FF0001E287E9A22>II<07000F801FC03FE03F E03FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE00FE00FE00FE00F E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FF FEFFFEFFFE0F2B7EAA12>I<000700000F80001FC0003FE0003FE0003FE0001FC0000F80 00070000000000000000000000000000000000000000000000FFE000FFE000FFE0000FE0 000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0 000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0 000FE0000FE0000FE07C0FE0FE0FE0FE0FC0FE1F80FE1F007C3E003FFC000FF000133784 AA15>I108 DII<003FE00001FFFC0003F07E000FC01F801F800FC03F0007E0 3F0007E07E0003F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8 FE0003F8FE0003F8FE0003F87E0003F07E0003F03F0007E03F0007E01F800FC00FC01F80 07F07F0001FFFC00003FE0001D1B7E9A22>II114 D<03FE300FFFF03E03F07800F07000F0F0 0070F00070F80070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800FFF80007FC00 00FCE0007CE0003CF0003CF00038F80038FC0070FF01E0E7FFC0C1FF00161B7E9A1B>I< 00E00000E00000E00000E00001E00001E00001E00003E00003E00007E0000FE0001FFFE0 FFFFE0FFFFE00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000 0FE0000FE0000FE0000FE0700FE0700FE0700FE0700FE0700FE0700FE07007F0E003F0C0 01FF80007F0014267FA51A>IIIIII E /Fl 25 121 df<00003C000000007C00000001FC00000007FC0000003F FC0000FFFFFC0000FFFFFC0000FFFFFC0000FFCFFC0000000FFC0000000FFC0000000FFC 0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC00 00000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000 000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC000000 0FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000F FC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC 0000000FFC0000000FFC0000000FFC0000000FFC00007FFFFFFF807FFFFFFF807FFFFFFF 807FFFFFFF80213879B730>49 D<0007FC0000007FFFC00001FFFFF00003FFFFFC0007E0 1FFE000F8007FF001E0003FF803C0001FFC07E0000FFE07F80007FE07FC0007FF0FFC000 7FF0FFE0003FF8FFE0003FF8FFE0003FF8FFE0003FF87FC0003FF83F80003FF81F00003F F80000003FF80000003FF00000007FF00000007FE00000007FE0000000FFC0000000FF80 000001FF80000001FF00000003FE00000007FC00000007F80000000FE00000001FC00000 003F800000007F00000000FC00000001F800000001F000000003E000780007800078000F 000078001E000078003C0000F000780000F000F00000F001E00001F003FFFFFFF007FFFF FFF00FFFFFFFF01FFFFFFFF03FFFFFFFF07FFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFF E0FFFFFFFFE025387BB730>I<0003FF0000001FFFF000007FFFFC0000FC07FE0001F001 FF0003C000FF800780007FC00FE0007FE00FF0007FE01FF8007FF01FFC007FF01FFC007F F01FFC007FF01FFC007FF00FF8007FF007F0007FE003E0007FE0008000FFE0000000FFC0 000000FF80000001FF00000001FE00000003FC00000007F80000001FF000000FFFC00000 0FFF8000000FFFF000000007FE00000000FF000000007FC00000007FE00000003FF00000 003FF80000003FF80000001FFC0000001FFC0000001FFE0000001FFE1F80001FFE3FC000 1FFE7FE0001FFEFFF0001FFEFFF0001FFEFFF0001FFCFFF0001FFCFFF0001FFCFFE0003F F87FC0003FF87F80007FF03E00007FE01FC000FFC00FF803FF8007FFFFFF0001FFFFFC00 007FFFF0000007FF000027397CB730>I<0000000F80000000000F80000000001F800000 00003F80000000007F8000000000FF8000000000FF8000000001FF8000000003FF800000 0007FF8000000007FF800000000FFF800000001EFF800000003EFF800000007CFF800000 0078FF80000000F0FF80000001E0FF80000003E0FF80000003C0FF8000000780FF800000 0F00FF8000001F00FF8000003E00FF8000003C00FF8000007800FF800000F000FF800001 F000FF800001E000FF800003C000FF8000078000FF80000F8000FF80001F0000FF80001E 0000FF80003C0000FF8000780000FF8000F80000FF8000FFFFFFFFFF80FFFFFFFFFF80FF FFFFFFFF80FFFFFFFFFF80000001FF8000000001FF8000000001FF8000000001FF800000 0001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF800000 03FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF8029377DB630>I<0C000000C00F 800007C00FF8007FC00FFFFFFF800FFFFFFF000FFFFFFE000FFFFFFC000FFFFFF8000FFF FFF0000FFFFFC0000FFFFF00000FFFFC00000F1F8000000F000000000F000000000F0000 00000F000000000F000000000F000000000F000000000F000000000F03FE00000F1FFFE0 000F7FFFF8000FFC07FC000FE001FE000FC000FF000F80007F800F00007FC00E00007FE0 0000003FE00000003FF00000003FF00000003FF00000003FF80000003FF80000003FF81F 00003FF83F80003FF87FC0003FF8FFC0003FF8FFE0003FF8FFE0003FF8FFE0003FF0FFC0 003FF0FF80003FF07F00007FE07C00007FE03C00007FC03E0000FF801F0001FF000FC003 FE0007F00FFC0003FFFFF80001FFFFE000007FFF8000000FF8000025397BB730>I<0000 0FF8000000FFFE000003FFFF80000FF80FC0001FE003E0007F8001F000FF0003F001FE00 07F003FC000FF803FC001FF807F8001FF80FF8001FF80FF0001FF81FF0000FF01FF00007 E03FF00003C03FF00000003FE00000007FE00000007FE00000007FE00000007FE07FF000 FFE1FFFC00FFE3FFFE00FFE7007F80FFEE003FC0FFEC001FE0FFF8001FF0FFF8001FF0FF F0000FF8FFF0000FF8FFF0000FFCFFF0000FFCFFE0000FFEFFE0000FFEFFE0000FFEFFE0 000FFE7FE0000FFE7FE0000FFE7FE0000FFE7FE0000FFE7FE0000FFE3FE0000FFE3FE000 0FFE3FE0000FFC1FF0000FFC1FF0000FF80FF0000FF80FF0001FF007F8001FF003FC003F E001FE007FC000FF81FF80007FFFFE00003FFFFC00000FFFF0000001FF800027397CB730 >I<3C00000000003E00000000003FE0000000003FFFFFFFFF803FFFFFFFFF803FFFFFFF FF803FFFFFFFFF803FFFFFFFFF007FFFFFFFFE007FFFFFFFFC007FFFFFFFF8007FFFFFFF F0007FFFFFFFF0007C000003E00078000007C0007800000F80007800000F0000F000001E 0000F000003E0000F000007C0000F00000F80000000001F00000000001E00000000003E0 0000000007C0000000000780000000000F80000000001F00000000001F00000000003F00 000000003E00000000007E0000000000FE0000000000FC0000000000FC0000000001FC00 00000001FC0000000003FC0000000003FC0000000007F80000000007F80000000007F800 00000007F8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800 0000001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF800 0000001FF8000000001FF8000000000FF0000000000FF00000000003C0000000293B7BB9 30>I<00000001E00000000000000003F00000000000000003F00000000000000007F800 00000000000007F80000000000000007F8000000000000000FFC000000000000000FFC00 0000000000001FFE000000000000001FFE000000000000001FFE000000000000003FFF00 0000000000003FFF000000000000007FFF800000000000007BFF800000000000007BFF80 000000000000F3FFC0000000000000F1FFC0000000000001F1FFE0000000000001E0FFE0 000000000003E0FFF0000000000003C0FFF0000000000003C07FF0000000000007C07FF8 000000000007803FF800000000000F803FFC00000000000F001FFC00000000000F001FFC 00000000001F001FFE00000000001E000FFE00000000003E000FFF00000000003C0007FF 00000000003C0007FF0000000000780007FF8000000000780003FF8000000000F80003FF C000000000F00001FFC000000000F00001FFC000000001FFFFFFFFE000000001FFFFFFFF E000000003FFFFFFFFF000000003FFFFFFFFF000000007C000007FF8000000078000007F F8000000078000003FF80000000F8000003FFC0000000F0000001FFC0000001F0000001F FE0000001E0000000FFE0000001E0000000FFE0000003E0000000FFF0000003C00000007 FF0000007C00000007FF8000007800000003FF800000FC00000003FF8000FFFFF00003FF FFFFC0FFFFF00003FFFFFFC0FFFFF00003FFFFFFC0FFFFF00003FFFFFFC0423B7DBA49> 65 DI<0000001FFE000060000003FFFFE000E000001FFFFFF8 01E000007FFFFFFE03E00001FFFC00FF07E00007FFC0001FCFE0000FFF000007FFE0001F FC000001FFE0003FF0000000FFE0007FE00000007FE000FFC00000003FE001FF80000000 1FE003FF000000000FE007FF000000000FE00FFE0000000007E00FFE0000000007E01FFC 0000000003E01FFC0000000003E03FF80000000003E03FF80000000001E03FF800000000 01E07FF80000000001E07FF80000000001E07FF00000000000007FF0000000000000FFF0 000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000000000 0000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0 000000000000FFF00000000000007FF00000000000007FF00000000000007FF800000000 00007FF80000000001E03FF80000000001E03FF80000000001E03FF80000000001E01FFC 0000000001E01FFC0000000003C00FFE0000000003C00FFE0000000003C007FF00000000 078003FF00000000078001FF800000000F0000FFC00000001F00007FE00000003E00003F F00000007C00001FFC000000F800000FFF000003F0000007FFC0000FE0000001FFFC007F 800000007FFFFFFF000000001FFFFFFC0000000003FFFFE000000000001FFE0000003B3D 7BBB46>IIII<0000001FFC0000C0 00000003FFFFC001C00000001FFFFFF003C00000007FFFFFFC07C0000001FFFC00FE0FC0 000007FFC0001F9FC000000FFE000007FFC000003FF8000003FFC000007FF0000000FFC0 0000FFE00000007FC00001FFC00000007FC00001FF800000003FC00003FF000000001FC0 0007FE000000001FC0000FFE000000000FC0000FFC000000000FC0001FFC0000000007C0 001FFC0000000007C0003FF80000000007C0003FF80000000003C0003FF80000000003C0 007FF80000000003C0007FF80000000003C0007FF0000000000000007FF0000000000000 00FFF000000000000000FFF000000000000000FFF000000000000000FFF0000000000000 00FFF000000000000000FFF000000000000000FFF000000000000000FFF0000000000000 00FFF000000000000000FFF000000000000000FFF000001FFFFFFF807FF000001FFFFFFF 807FF000001FFFFFFF807FF800001FFFFFFF807FF800000001FFC0003FF800000001FFC0 003FF800000001FFC0003FF800000001FFC0001FFC00000001FFC0001FFC00000001FFC0 000FFE00000001FFC0000FFE00000001FFC00007FF00000001FFC00003FF00000001FFC0 0001FF80000001FFC00001FFC0000001FFC00000FFE0000001FFC000007FF0000003FFC0 00003FFC000003FFC000000FFF000007FFC0000007FFC0001FBFC0000001FFFC00FF1FC0 0000007FFFFFFE0FC00000001FFFFFF803C000000003FFFFE000C0000000001FFE000000 00413D7BBB4C>II<003FFE00000001FFFFE0000007FFFFF800000FE007FC00000FF001FE0000 1FF800FF00001FF8007F80001FF8007FC0001FF8003FC0000FF0003FE00007E0003FE000 03C0003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000FFFFE000 001FFFFFE000007FF83FE00003FF803FE00007FC003FE0000FF0003FE0001FE0003FE000 3FE0003FE0007FC0003FE0007FC0003FE000FF80003FE000FF80003FE000FF80003FE000 FF80003FE000FF80007FE0007FC0007FE0007FC000DFE0003FE0039FF0001FF80F0FFFE0 07FFFE0FFFE001FFFC07FFE0003FE000FFE02B267DA52F>97 D<000000003F800000003F FF800000003FFF800000003FFF800000003FFF8000000001FF8000000000FF8000000000 FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000 FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000 FF8000000000FF8000000000FF800000FF80FF80000FFFF0FF80003FFFFCFF8000FFC03F FF8001FE000FFF8003FC0003FF8007F80001FF800FF00000FF801FF00000FF803FE00000 FF803FE00000FF807FE00000FF807FC00000FF807FC00000FF807FC00000FF80FFC00000 FF80FFC00000FF80FFC00000FF80FFC00000FF80FFC00000FF80FFC00000FF80FFC00000 FF80FFC00000FF80FFC00000FF807FC00000FF807FC00000FF807FC00000FF803FE00000 FF803FE00000FF801FE00000FF800FF00001FF8007F80003FF8003F80007FF8001FE001F FFC000FF807EFFFE007FFFF8FFFE000FFFE0FFFE0001FF00FFFE2F3C7DBB36>100 D<0001FF8000000FFFF000007FFFFC0000FF81FE0003FE007F8007F8003F800FF0001FC0 0FF0000FE01FE0000FE03FE0000FF03FE00007F07FC00007F07FC00007F87FC00007F8FF C00007F8FFC00007F8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFC0000000FFC0000000FFC0 000000FFC00000007FC00000007FC00000007FC00000003FE00000003FE00000781FE000 00781FF00000780FF00000F007F80001F003FC0003E001FE000FC000FFC07F80003FFFFE 00000FFFF8000000FFC00025267DA52C>I<00FE00000000FFFE00000000FFFE00000000 FFFE00000000FFFE0000000007FE0000000003FE0000000003FE0000000003FE00000000 03FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE00000000 03FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE00000000 03FE0000000003FE00FF800003FE03FFF00003FE0FFFF80003FE1E03FC0003FE3801FE00 03FE6001FF0003FEC000FF0003FFC000FF8003FF8000FF8003FF0000FF8003FF0000FF80 03FF0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF80 03FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF80 03FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF80 03FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF80FFFFF83FFFFE FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFE2F3C7CBB36>104 D<01E00007F8000FFC00 0FFC001FFE001FFE001FFE001FFE000FFC000FFC0007F80001E000000000000000000000 00000000000000000000000000000000000000000000000000FE007FFE007FFE007FFE00 7FFE0007FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00 03FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE0003FE00 03FE0003FE0003FE0003FE0003FE0003FE00FFFFF0FFFFF0FFFFF0FFFFF0143D7DBC1A> I<01FC00FF8000FFFC03FFF000FFFC0FFFF800FFFC1E03FC00FFFC3801FE0007FC6001FF 0003FCC000FF0003FDC000FF8003FD8000FF8003FF0000FF8003FF0000FF8003FF0000FF 8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF 8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF 8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF 8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF80FFFFF83FFFFEFFFFF83FFF FEFFFFF83FFFFEFFFFF83FFFFE2F267CA536>110 D<00FE01FF0000FFFE1FFFF000FFFE 7FFFFC00FFFEFC07FE00FFFFF001FF0007FFC0007F8003FF00003FC003FE00003FE003FE 00001FF003FE00001FF803FE00000FF803FE00000FFC03FE00000FFC03FE000007FC03FE 000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE 000007FE03FE000007FE03FE000007FE03FE000007FC03FE00000FFC03FE00000FFC03FE 00000FFC03FE00000FF803FE00001FF003FE00001FF003FF00003FE003FF80007FC003FF C000FF8003FFE001FF0003FEFC07FE0003FE7FFFF80003FE1FFFE00003FE03FE000003FE 0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE 0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE 00000000FFFFF8000000FFFFF8000000FFFFF8000000FFFFF80000002F377DA536>112 D<01FC03F000FFFC0FFC00FFFC1FFF00FFFC3C3F80FFFC707F8007FCE0FFC003FCC0FFC0 03FD80FFC003FD80FFC003FF807F8003FF003F0003FF001E0003FF00000003FE00000003 FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE 00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00 000003FE00000003FE00000003FE00000003FE00000003FE000000FFFFFC0000FFFFFC00 00FFFFFC0000FFFFFC000022267DA528>114 D<000F0000000F0000000F0000000F0000 000F0000001F0000001F0000001F0000001F0000003F0000003F0000007F0000007F0000 00FF000001FF000003FF000007FF00001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FF0000 01FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF0000 01FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF0000 01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C00FF0078 00FF8078007F80F0003FC1E0001FFFC0000FFF800001FE001E377EB626>116 D120 D E /Fm 91 126 df<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600000000060F0F0600419779816>33 DI<038700038700 038700038700038700038700FFFFE0FFFFE07FFFE0070E00070E00070E000E1C000E1C00 0E1C000E1C007FFFE0FFFFE0FFFFE01C38001C38001C38001C38001C38001C380013197F 9816>I<00C00001C00001C00001C00007F0001FFC003FFE007DCF0071C780E1C380E1C7 80E1C780F1C30079C0003FC0001FF00007FC0001FE0001CF0001C70061C380F1C380F1C3 80E1C38071C70079DF003FFE001FF80007E00001C00001C00000C00011207E9C16>I<38 01807C03807C0380EE0700EE0700EE0E00EE0E00EE0E00EE1C007C1C007C380038380000 700000700000700000E00000E00001C00001C00001C0000380000383800707C00707C00E 0EE00E0EE00E0EE01C0EE01C0EE03807C03807C018038013207F9C16>I<03800007E000 0FE0001E70001C70001C70001C70001CF7E01CE7E01DC7E00FC7000F8E000F0E001F0E00 3F1C007B9C00739C00E1F800E1F800E0F0E0E0F0E071F8E07FFFC03F9FC01E070013197F 9816>I<30787C3C1C1C1C1C3878F0E040060D789816>I<00E001E0038007000E001C001C 0038003800700070007000E000E000E000E000E000E000E000E000E00070007000700038 0038001C001C000E000700038001E000E00B217A9C16>II<0380038003800380E38EF3 9EFFFE3FF80FE00FE03FF8FFFEF39EE38E03800380038003800F127D9516>I<00E00000 E00000E00000E00000E00000E00000E00000E000FFFFE0FFFFE0FFFFE000E00000E00000 E00000E00000E00000E00000E00000E00013137F9516>I<387C7E7E3E0E1E1C78F06007 0B798416>II<70F8F8F8700505788416>I<000180 000380000380000700000700000E00000E00001C00001C00003800003800007000007000 00E00000E00001C00001C0000380000380000700000700000E00000E00001C00001C0000 380000380000700000700000E00000E00000C0000011207E9C16>I<03E0000FF8001FFC 001E3C00380E00780F00700700700700E00380E00380E00380E00380E00380E00380E003 80E00380F00780700700700700780F003C1E001E3C001FFC000FF80003E00011197E9816 >I<0300070007000F001F00FF00FF00E700070007000700070007000700070007000700 07000700070007000700FFF8FFF8FFF80D197B9816>I<07E0001FF8003FFC00783E00E0 0700F00780F00380600380000380000380000700000700000E00001C0000380000700000 E00001C0000380000F00001E03803803807FFF80FFFF807FFF8011197E9816>I<07E000 1FF8003FFC00781E00780700300700000700000700000E00003E0007FC0007F00007FC00 001E00000700000300000380000380600380F00380E00700781E003FFC001FF80007E000 11197E9816>I<007C0000FC0000DC0001DC00039C00039C00071C000F1C000E1C001E1C 003C1C00381C00781C00F01C00FFFFE0FFFFE0FFFFE0001C00001C00001C00001C00001C 0001FFC001FFC001FFC013197F9816>I<3FFE007FFE007FFE0070000070000070000070 000070000070000070000077F0007FFC007FFE00780F00300700000380000380600380F0 0380F00380E00700781E003FFC001FF80007E00011197E9816>I<00F80003FC0007FE00 0F07001C0F00380F00780600700000700000E3F800EFFC00FFFE00F80F00F00700F00380 E00380E003807003807003807007803807003C1E001FFC000FF80003E00011197E9816> II<07F0001FFC003FFE007C1F00F00780E00380E00380E0 03807007007C1F001FFC0007F0001FFC003C1E00700700F00780E00380E00380E00380F0 07807007007C1F003FFE001FFC0007F00011197E9816>I<03E0000FF8001FFC003C1E00 700E00700700E00700E00780E00380E00380E00780700780780F803FFF801FFB800FE380 000700000700300700780E00781C00707C003FF8001FE0000F800011197E9816>I<70F8 F8F870000000000000000070F8F8F8700512789116>I<387C7C7C380000000000000000 38787C7C3C1C1C3870F0400618799116>I<000180000780001F80003E0000F80001F000 07C0000F80003E0000FC0000F00000FC00003E00000F800007C00001F00000F800003E00 001F8000078000018011157E9616>III<0FF0003FFE007FFF00F00F80F00380F00380 600780001F00003E0000780000F00001C00001C00001C00001C00001C000018000000000 00000000000000000001800003C00003C00001800011197E9816>I<00F80003FC0007FE 000F07001C3B8038FF8079FF8073C7C07383C0E701C0E701C0E701C0E701C0E701C0E701 C0E701C073838073C78079FF0038FE001C38000F03C007FFC003FF0000FC0012197E9816 >I<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C0007 1C00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007E0FC0FF 1FE07E0FC013197F9816>I<7FF800FFFE007FFF001C07001C07801C03801C03801C0380 1C03801C07001FFF001FFE001FFE001C1F001C03801C03C01C01C01C01C01C01C01C01C0 1C03C01C07807FFF80FFFF007FFC0012197F9816>I<01F18007FB800FFF801F0F803C07 80380380700380700380F00000E00000E00000E00000E00000E00000E00000E00000F000 007003807003803803803C07001F0F000FFE0007FC0001F00011197E9816>I<7FF800FF FE007FFF001C0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00E01C00E01C 00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C0F807FFF00FFFE007FF80013 19809816>I<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C00 1C1C001FFC001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E0 7FFFE0FFFFE07FFFE013197F9816>I<7FFFE0FFFFE07FFFE01C00E01C00E01C00E01C00 E01C00001C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00001C00 001C00001C00001C00007F8000FFC0007F800013197F9816>I<01F18007FB800FFF801F 0F803C0780380380700380700380F00000E00000E00000E00000E00000E01FC0E01FE0E0 1FC0F003807003807007803807803C07801E0F800FFF8007FB8001F38013197F9816>I< 7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC0 1FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF8 7F07F01519809816>I<7FFCFFFE7FFC0380038003800380038003800380038003800380 0380038003800380038003800380038003807FFCFFFE7FFC0F197D9816>I<01FF0003FF 8001FF00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C 00001C00001C00001C00001C00001C00601C00F01C00F038007FF8007FF0001FC0001119 7E9816>I<7F0FE0FF8FF07F0FE01C07801C0F001C0E001C1C001C3C001C78001CF0001C E0001DF0001FF0001FF8001F38001E1C001C1C001C0E001C0E001C07001C07001C03807F 07E0FF8FF07F07E01419809816>III<7E 07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CE1C01CE1C01C61C01C71C01C 71C01C71C01C31C01C39C01C39C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F 03C01519809816>I<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E00380 E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780F00780 780F007FFF003FFE001FFC0011197E9816>I<7FF800FFFE007FFF001C0F801C03801C03 C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FF8001C00001C00001C00 001C00001C00001C00001C00007F0000FF80007F000012197F9816>I<1FFC003FFE007F FF00780F00F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E0 0380E00380E00380E00380E0E380E1E380F0F780787F007FFF003FFE001FFC00001C0000 1E00000E00000F00000700000700111F7E9816>I<7FF000FFFC007FFE001C0F001C0780 1C03801C03801C03801C03801C07801C0F001FFE001FFC001FFE001C0E001C07001C0700 1C07001C07001C07101C07381C07387F03F0FF83F07F01E01519809816>I<07E3001FFF 003FFF00781F00F00700E00700E00700E00000F000007800003F80001FF00007FC0000FE 00000F00000700000380000380600380E00380E00700F80F00FFFE00FFFC00C7F0001119 7E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00007 FC000FFE0007FC0013197F9816>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C0 1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C0 0E03800E038007070007FF0003FE0000F8001519809816>II<7E 03F0FF07F87E03F03800E03800E03800E03800E01C01C01C01C01C01C01C71C01CF9C01C F9C01CD9C01CD9C00CD9800CD9800CD9800DDD800D8D800D8D800D8D80078F00078F0007 07001519809816>I<7F1F807F3FC07F1F800E1E000E1C00071C0007380003B80003F000 01F00001E00000E00001E00001F00003F00003B80007B800071C000F1C000E0E000E0E00 1C07007E0FC0FF1FE07E0FC013197F9816>II91 DII95 D<081C3C7870E0E0E0E0F0F87830060D789B16>I<1FE0003F F0007FF800783C00300E00000E00000E0003FE001FFE003E0E00700E00E00E00E00E00E0 0E00783E007FFFE03FE7E00F83E013127E9116>II<03F80FFC1F FE3C1E780C7000E000E000E000E000E000F000700778073E0E1FFC0FF803F010127D9116 >I<003F00003F00003F0000070000070000070000070003C7000FF7001FFF003C1F0078 0F00700700E00700E00700E00700E00700E00700E00700700F00780F003C1F001FFFE00F F7E007C7E013197F9816>I<03F0000FFC001FFE003C0F00780700700380E00380FFFF80 FFFF80FFFF80E00000E000007003807803803E07801FFF0007FE0001F80011127E9116> I<001E00007F0001FF8001C7800383000380000380007FFF00FFFF00FFFF000380000380 000380000380000380000380000380000380000380000380000380000380007FFC00FFFE 007FFC0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E00380E00380E00380E0038 0E001C1C000FF8001FF0001BE0003800001800001FFC001FFF003FFF807003C0E000E0E0 00E0E000E0E000E07001C07C07C03FFF800FFE0003F800131C7F9116>II<03000780078003000000000000000000FF80FF80FF8003800380038003800380 0380038003800380038003800380FFFCFFFEFFFC0F1A7C9916>I<003000780078003000 000000000000000FF81FF80FF80038003800380038003800380038003800380038003800 3800380038003800380038003800386070F0F0FFE07FC03F800D237E9916>I<7E0000FE 00007E00000E00000E00000E00000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E 78000EF0000FF0000FF8000FBC000F1E000E0E000E07000E07807F87F0FFCFF07F87F014 19809816>I<7FC000FFC0007FC00001C00001C00001C00001C00001C00001C00001C000 01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 7FFF00FFFF807FFF0011197E9816>III<03E0000FF800 1FFC003C1E00780F00700700E00380E00380E00380E00380E00380F00780700700780F00 3C1E001FFC000FF80003E00011127E9116>II<03 E3800FF3801FFB803E0F80780780700780E00380E00380E00380E00380E00380E0038070 07807807803C1F801FFB800FF38003E38000038000038000038000038000038000038000 1FF0003FF8001FF0151B7F9116>I<7F0FC0FF3FE07F7FE007F04007C000078000078000 0700000700000700000700000700000700000700000700007FFC00FFFC007FFC0013127F 9116>I<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00EF00EF81EFFFC FFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF0007 000007000007000007000007000007000007000007010007038007038007038007870003 FE0001FC0000F80011177F9616>II<7F1FC0FF9FE07F1FC01C07001C07000E0E000E0E000E0E00071C00071C00071C 00071C0003B80003B80003B80001F00001F00000E00013127F9116>II<7F1FC07F3FC07F1FC00F1E00073C0003B800 03F00001F00000E00001E00001F00003B800073C00071C000E0E007F1FC0FF3FE07F1FC0 13127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C00071C 00039C00039C0003980001B80001B80000F00000F00000F00000E00000E00000E00001C0 0079C0007BC0007F80007F00003C0000131B7F9116>I<3FFFC07FFFC07FFFC070078070 0F00701E00003C0000780001F00003E0000780000F00001E01C03C01C07801C0FFFFC0FF FFC0FFFFC012127F9116>I<001F80007F8000FF8001E00001C00001C00001C00001C000 01C00001C00001C00001C00001C00003C0007F8000FF0000FF00007F800003C00001C000 01C00001C00001C00001C00001C00001C00001C00001C00001E00000FF80007F80001F80 11207E9C16>II<7C0000FF0000FF800003C00001C00001C00001C00001C00001C0 0001C00001C00001C00001C00001E00000FF00007F80007F8000FF0001E00001C00001C0 0001C00001C00001C00001C00001C00001C00001C00003C000FF8000FF00007C00001120 7E9C16>I E /Fn 41 122 df<0000000FFF800000000001FFFFE0000000000FFFFFF800 0000003FFC01FC00000000FFE0003E00000003FF80003F00000007FE0000FF8000000FFC 0001FFC000001FFC0003FFC000001FF80003FFC000003FF80003FFC000003FF00003FFC0 00007FF00003FFC000007FF00003FFC000007FF00003FFC000007FF00001FF8000007FF0 0000FF0000007FF000007E0000007FF00000000000007FF00000000000007FF000000000 00007FF00000000000007FF00000000000007FF00000000000007FF00000000000007FF0 007FFFE000FFFFFFFFFFFFE000FFFFFFFFFFFFE000FFFFFFFFFFFFE000FFFFFFFFFFFFE0 00007FF00001FFE000007FF00000FFE000007FF00000FFE000007FF00000FFE000007FF0 0000FFE000007FF00000FFE000007FF00000FFE000007FF00000FFE000007FF00000FFE0 00007FF00000FFE000007FF00000FFE000007FF00000FFE000007FF00000FFE000007FF0 0000FFE000007FF00000FFE000007FF00000FFE000007FF00000FFE000007FF00000FFE0 00007FF00000FFE000007FF00000FFE000007FF00000FFE000007FF00000FFE000007FF0 0000FFE000007FF00000FFE000007FF00000FFE000007FF00000FFE000007FF00000FFE0 00007FF00000FFE000007FF00000FFE000007FF00000FFE000007FF00000FFE000007FF0 0000FFE000007FF00000FFE000007FF00000FFE000007FF00000FFE000007FF00000FFE0 00007FF00000FFE000007FF00000FFE0003FFFFFE07FFFFFC03FFFFFE07FFFFFC03FFFFF E07FFFFFC03FFFFFE07FFFFFC03A487EC741>12 D<07C01FE03FF87FF87FFCFFFEFFFEFF FEFFFFFFFF7FFF7FFF3FFF1FF707C700070007000F000E000E000E001C001C001C003800 38007000F000E001C0038007000E001C0008001023788E20>44 DI<0000 000007C000000000000000000FE000000000000000000FE000000000000000001FF00000 0000000000001FF000000000000000001FF000000000000000003FF80000000000000000 3FF800000000000000007FFC00000000000000007FFC00000000000000007FFC00000000 00000000FFFE0000000000000000FFFE0000000000000001FFFF0000000000000001FFFF 0000000000000001FFFF0000000000000003FFFF8000000000000003FFFF800000000000 0007FFFFC000000000000007DFFFC000000000000007CFFFC00000000000000FCFFFE000 00000000000F87FFE00000000000001F87FFF00000000000001F07FFF00000000000001F 03FFF00000000000003F03FFF80000000000003E01FFF80000000000007E01FFFC000000 0000007C01FFFC0000000000007C00FFFC000000000000FC00FFFE000000000000F8007F FE000000000001F8007FFF000000000001F0007FFF000000000001F0003FFF0000000000 03F0003FFF800000000003E0001FFF800000000007E0001FFFC00000000007C0001FFFC0 0000000007C0000FFFC0000000000FC0000FFFE0000000000F800007FFE0000000001F80 0007FFF0000000001F000007FFF0000000001F000003FFF0000000003F000003FFF80000 00003E000001FFF8000000007FFFFFFFFFFC000000007FFFFFFFFFFC000000007FFFFFFF FFFC00000000FFFFFFFFFFFE00000000F80000007FFE00000001F80000007FFF00000001 F00000003FFF00000001F00000003FFF00000003F00000003FFF80000003E00000001FFF 80000007E00000001FFFC0000007C00000000FFFC0000007C00000000FFFC000000F8000 00000FFFE000000F8000000007FFE000001F8000000007FFF000001F0000000003FFF000 001F0000000003FFF000003E0000000003FFF80000FFC000000001FFF800FFFFFF800007 FFFFFFFEFFFFFF800007FFFFFFFEFFFFFF800007FFFFFFFEFFFFFF800007FFFFFFFE4F48 7CC758>65 DI<000000007FFE0000060000000FFFFFC0001E0000007FFFFFF8003E000003FFFF FFFE007E00000FFFF800FF80FE00003FFF80001FC1FE0000FFFC000007F3FE0001FFF000 0001FFFE0007FFC00000007FFE000FFF000000003FFE001FFE000000001FFE003FFC0000 00000FFE007FF80000000007FE00FFF00000000007FE01FFF00000000003FE01FFE00000 000001FE03FFE00000000001FE07FFC00000000000FE07FFC00000000000FE0FFF800000 000000FE0FFF8000000000007E1FFF8000000000007E1FFF0000000000007E3FFF000000 0000003E3FFF0000000000003E3FFF0000000000003E7FFF0000000000003E7FFE000000 000000007FFE000000000000007FFE00000000000000FFFE00000000000000FFFE000000 00000000FFFE00000000000000FFFE00000000000000FFFE00000000000000FFFE000000 00000000FFFE00000000000000FFFE00000000000000FFFE00000000000000FFFE000000 00000000FFFE00000000000000FFFE00000000000000FFFE000000000000007FFE000000 000000007FFE000000000000007FFE000000000000007FFF000000000000003FFF000000 0000001E3FFF0000000000001E3FFF0000000000001E1FFF0000000000001E1FFF800000 0000001E0FFF8000000000003E0FFF8000000000003C07FFC000000000003C07FFC00000 0000003C03FFE000000000007801FFE000000000007801FFF00000000000F000FFF00000 000001F0007FF80000000001E0003FFC0000000003C0001FFE000000000780000FFF8000 00000F000007FFC00000003E000001FFF00000007C000000FFFC000001F80000003FFF80 000FF00000000FFFF8007FC000000003FFFFFFFF00000000007FFFFFFC00000000000FFF FFE00000000000007FFE00000047497AC754>IIII73 D<0003FFFFFFFFC00003FFFFFFFFC00003FFFFFF FFC00003FFFFFFFFC00000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0 000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC000 0000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC00000 00000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000 000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC000000000 0FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000F FFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFF C0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0 000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC0000000000FFFC000 0000000FFFC0000000000FFFC0000000000FFFC0000FE0000FFFC0001FF0000FFFC0003F F8000FFFC0007FFC000FFFC0007FFC000FFFC000FFFE000FFFC000FFFE000FFFC000FFFE 000FFF8000FFFE000FFF8000FFFE001FFF80007FFC001FFF00007FFC001FFF00003FF800 3FFE00003FE0003FFC00001F80007FF800000FE000FFF0000003FC03FFC0000001FFFFFF 000000003FFFFC0000000007FF8000000032487EC63C>I77 DI80 D82 D<00007FF00003000007FFFF000700 001FFFFFE00F00007FFFFFF01F0000FFC00FFC3F0001FE0000FE7F0003F800003FFF0007 F000000FFF000FE0000007FF001FC0000003FF001FC0000001FF003FC0000000FF003F80 0000007F007F800000007F007F800000003F007F800000003F00FF800000001F00FF8000 00001F00FFC00000001F00FFC00000001F00FFC00000000F00FFE00000000F00FFF00000 000F00FFF80000000F00FFFE00000000007FFF80000000007FFFF8000000007FFFFF8000 00003FFFFFFC0000003FFFFFFFC000001FFFFFFFF800000FFFFFFFFF000007FFFFFFFF80 0007FFFFFFFFE00003FFFFFFFFF00001FFFFFFFFF800007FFFFFFFFC00003FFFFFFFFE00 000FFFFFFFFF000003FFFFFFFF0000007FFFFFFF80000003FFFFFFC00000003FFFFFC000 000001FFFFE0000000001FFFE00000000007FFE00000000003FFF00000000000FFF00000 000000FFF070000000007FF0F0000000003FF0F0000000003FF0F0000000003FF0F00000 00001FF0F0000000001FF0F8000000001FF0F8000000001FE0F8000000001FE0FC000000 001FE0FC000000001FC0FE000000003FC0FF000000003FC0FF000000003F80FFC0000000 7F00FFE00000007F00FFF8000000FE00FFFE000003FC00FE7FC00007F800FC3FFC003FF0 00F80FFFFFFFC000F003FFFFFF0000E0007FFFFC0000C00003FFE0000034497AC741>I< 3FFFFFFFFFFFFFFFFC3FFFFFFFFFFFFFFFFC3FFFFFFFFFFFFFFFFC3FFFFFFFFFFFFFFFFC 3FFE0007FFE0007FFC3FF00007FFE0000FFC7FC00007FFE00003FE7F800007FFE00001FE 7F000007FFE00000FE7E000007FFE000007E7E000007FFE000007E7C000007FFE000003E 7C000007FFE000003E7C000007FFE000003E78000007FFE000001E78000007FFE000001E 78000007FFE000001E78000007FFE000001EF8000007FFE000001FF0000007FFE000000F F0000007FFE000000FF0000007FFE000000FF0000007FFE000000FF0000007FFE000000F 00000007FFE000000000000007FFE000000000000007FFE000000000000007FFE0000000 00000007FFE000000000000007FFE000000000000007FFE000000000000007FFE0000000 00000007FFE000000000000007FFE000000000000007FFE000000000000007FFE0000000 00000007FFE000000000000007FFE000000000000007FFE000000000000007FFE0000000 00000007FFE000000000000007FFE000000000000007FFE000000000000007FFE0000000 00000007FFE000000000000007FFE000000000000007FFE000000000000007FFE0000000 00000007FFE000000000000007FFE000000000000007FFE000000000000007FFE0000000 00000007FFE000000000000007FFE000000000000007FFE000000000000007FFE0000000 00000007FFE000000000000007FFE000000000000007FFE000000000000007FFE0000000 00000007FFE000000000000007FFE000000000000007FFE000000000000007FFE0000000 00000007FFE000000000000007FFE00000000003FFFFFFFFFFC0000003FFFFFFFFFFC000 0003FFFFFFFFFFC0000003FFFFFFFFFFC00048467CC551>II<000FFFF0 00000000FFFFFF00000003FFFFFFC0000007F8007FF000000FFC001FFC00000FFC0007FE 00001FFE0003FF00001FFE0003FF80001FFE0001FF80001FFE0001FFC0001FFE0000FFC0 000FFC0000FFE00007F80000FFE00003F00000FFE00000000000FFE00000000000FFE000 00000000FFE00000000000FFE00000000000FFE0000000007FFFE00000003FFFFFE00000 03FFFFFFE000001FFFF0FFE000007FFE00FFE00001FFE000FFE00003FF8000FFE0000FFE 0000FFE0001FFC0000FFE0001FF80000FFE0003FF80000FFE0007FF00000FFE0007FF000 00FFE000FFE00000FFE000FFE00000FFE000FFE00000FFE000FFE00000FFE000FFE00001 FFE000FFE00001FFE0007FF00003FFE0007FF000077FE0003FF8000F7FE0001FFC003E7F F8000FFF80F83FFFE003FFFFF01FFFE000FFFFC00FFFE0000FFE0003FFE0332E7CAD38> 97 D<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC00000 000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000 0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000 01FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001 FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF C00000000001FFC01FFC000001FFC0FFFF800001FFC3FFFFF00001FFCFE01FFC0001FFDF 0003FE0001FFFC0001FF0001FFF80000FF8001FFF000007FC001FFE000003FE001FFC000 003FF001FFC000001FF801FFC000001FF801FFC000001FFC01FFC000001FFC01FFC00000 0FFE01FFC000000FFE01FFC000000FFE01FFC000000FFE01FFC000000FFF01FFC000000F FF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF 01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFE01FFC000000FFE01 FFC000000FFE01FFC000000FFC01FFC000001FFC01FFC000001FFC01FFC000001FF801FF C000003FF001FFC000003FF001FFE000007FE001FFF000007FC001FFF80000FF8001FF3C 0001FF0001FE1F0007FE0001FC0FC03FF80001F803FFFFE00001F000FFFF800001E0001F F8000038487CC741>I<00001FFFC0000001FFFFFC000007FFFFFF00001FF8007F80007F E000FFC000FF8000FFC001FF0001FFE003FE0001FFE007FE0001FFE00FFC0001FFE00FFC 0001FFE01FF80000FFC03FF800007F803FF800003F007FF8000000007FF0000000007FF0 000000007FF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0 00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000007FF0 000000007FF0000000007FF8000000007FF8000000003FF8000000003FF8000000001FFC 000000F00FFC000000F00FFE000001E007FE000001E003FF000003C001FF8000078000FF C0000F00007FF0003E00001FFC01FC000007FFFFF0000001FFFFC00000001FFC00002C2E 7CAD34>I<0000000000FF8000000001FFFF8000000001FFFF8000000001FFFF80000000 01FFFF800000000007FF800000000003FF800000000003FF800000000003FF8000000000 03FF800000000003FF800000000003FF800000000003FF800000000003FF800000000003 FF800000000003FF800000000003FF800000000003FF800000000003FF800000000003FF 800000000003FF800000000003FF800000000003FF800000000003FF800000000003FF80 0000000003FF8000001FFC03FF800001FFFF83FF800007FFFFE3FF80001FFC03F3FF8000 7FE0007FFF8000FF80003FFF8001FF00000FFF8003FE000007FF8007FE000003FF800FFC 000003FF800FFC000003FF801FF8000003FF803FF8000003FF803FF8000003FF803FF000 0003FF807FF0000003FF807FF0000003FF807FF0000003FF80FFF0000003FF80FFF00000 03FF80FFF0000003FF80FFF0000003FF80FFF0000003FF80FFF0000003FF80FFF0000003 FF80FFF0000003FF80FFF0000003FF80FFF0000003FF807FF0000003FF807FF0000003FF 807FF0000003FF807FF0000003FF803FF8000003FF803FF8000003FF801FF8000003FF80 1FF8000003FF800FFC000003FF8007FC000007FF8003FE00000FFF8001FF00001FFF8000 FF80007FFF80007FC000FBFFC0003FF807E3FFFF000FFFFFC3FFFF0001FFFF03FFFF0000 3FF003FFFF38487CC741>I<00001FFC00000001FFFFC0000007FFFFF000001FF80FFC00 007FC001FE0000FF8000FF0001FF00007F8003FE00003FC007FC00001FE00FFC00001FE0 1FF800001FF01FF800000FF03FF800000FF83FF800000FF83FF000000FF87FF0000007F8 7FF0000007FC7FF0000007FCFFF0000007FCFFF0000007FCFFFFFFFFFFFCFFFFFFFFFFFC FFFFFFFFFFFCFFF000000000FFF000000000FFF000000000FFF000000000FFF000000000 7FF0000000007FF0000000007FF0000000003FF8000000003FF8000000001FF80000003C 1FF80000003C0FFC0000003C0FFC0000007807FE000000F803FF000001F001FF800003E0 00FFC00007C0003FE0001F80001FFC01FF000007FFFFFC000000FFFFE00000000FFF0000 2E2E7DAD35>I<000000FFC00000001FFFF00000007FFFFC000001FFC0FE000003FF01FF 000007FC03FF00000FF807FF80001FF807FF80003FF007FF80007FF007FF80007FE007FF 8000FFE003FF0000FFE001FE0000FFE000FC0000FFE000300000FFE000000000FFE00000 0000FFE000000000FFE000000000FFE000000000FFE000000000FFE000000000FFE00000 0000FFE000000000FFE000000000FFE0000000FFFFFFFE0000FFFFFFFE0000FFFFFFFE00 00FFFFFFFE000000FFE000000000FFE000000000FFE000000000FFE000000000FFE00000 0000FFE000000000FFE000000000FFE000000000FFE000000000FFE000000000FFE00000 0000FFE000000000FFE000000000FFE000000000FFE000000000FFE000000000FFE00000 0000FFE000000000FFE000000000FFE000000000FFE000000000FFE000000000FFE00000 0000FFE000000000FFE000000000FFE000000000FFE000000000FFE000000000FFE00000 0000FFE000000000FFE000000000FFE000000000FFE000000000FFE000000000FFE00000 0000FFE000000000FFE000000000FFE00000007FFFFFF000007FFFFFF000007FFFFFF000 007FFFFFF0000029487DC724>I<00000000001F0000007FF000FFC00007FFFF03FFE000 1FFFFFC7E7E0007FE03FFF0FF000FF800FFC0FF001FF0007FC0FF003FE0003FE0FF007FE 0003FF07E007FC0001FF03C00FFC0001FF80000FFC0001FF80001FFC0001FFC0001FFC00 01FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001 FFC0001FFC0001FFC0000FFC0001FF80000FFC0001FF800007FC0001FF000007FE0003FF 000003FE0003FE000001FF0007FC000000FF800FF8000000FFE03FF0000001DFFFFFC000 0003C7FFFF00000003C07FF0000000078000000000000780000000000007800000000000 07C0000000000007C0000000000007E0000000000007E0000000000007F8000000000007 FFFFFFF0000003FFFFFFFF000003FFFFFFFFE00001FFFFFFFFF00001FFFFFFFFFC0000FF FFFFFFFE00007FFFFFFFFF0001FFFFFFFFFF8007FFFFFFFFFF800FF000001FFFC01FC000 0001FFC03F800000007FC07F800000003FE0FF000000003FE0FF000000001FE0FF000000 001FE0FF000000001FE0FF000000001FE0FF000000001FE07F800000003FC07F80000000 3FC03FC00000007F801FE0000000FF000FF8000003FE0003FE00000FF80001FFE000FFF0 00007FFFFFFFC000000FFFFFFE000000007FFFC0000034447DAE3A>I<007FC000000000 FFFFC000000000FFFFC000000000FFFFC000000000FFFFC00000000003FFC00000000001 FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000 00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC007FE 000001FFC03FFFC00001FFC07FFFF00001FFC1F81FF80001FFC3C00FFC0001FFC70007FE 0001FFCE0007FE0001FFDC0007FF0001FFF80003FF0001FFF80003FF8001FFF00003FF80 01FFF00003FF8001FFE00003FF8001FFE00003FF8001FFE00003FF8001FFC00003FF8001 FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC0 0003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC000 03FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003 FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF 80FFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFF38487BC741>I< 007C0001FF0003FF8007FFC007FFC00FFFE00FFFE00FFFE00FFFE00FFFE007FFC007FFC0 03FF8001FF00007C00000000000000000000000000000000000000000000000000000000 000000000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001FFC001FFC0 01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0 01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0 01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFF FFFFFF18497CC820>I<007FC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFF FF80FFFFFF80FFFFFF8019487CC720>108 D<00FF8003FF000003FF000000FFFF801FFF E0001FFFE00000FFFF807FFFF8007FFFF80000FFFF81F80FFC01F80FFC0000FFFF83C007 FE03C007FE000003FF878003FF078003FF000001FF8E0003FF0E0003FF000001FF9C0003 FF9C0003FF800001FFB80001FFB80001FF800001FFB80001FFF80001FFC00001FFF00001 FFF00001FFC00001FFF00001FFF00001FFC00001FFE00001FFE00001FFC00001FFE00001 FFE00001FFC00001FFE00001FFE00001FFC00001FFC00001FFC00001FFC00001FFC00001 FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80FF FFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80592E7BAD62 >I<00FF8007FE0000FFFF803FFFC000FFFF807FFFF000FFFF81F81FF800FFFF83C00FFC 0003FF870007FE0001FF8E0007FE0001FF9C0007FF0001FFB80003FF0001FFB80003FF80 01FFF00003FF8001FFF00003FF8001FFE00003FF8001FFE00003FF8001FFE00003FF8001 FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC0 0003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC000 03FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003 FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF 8001FFC00003FF80FFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFF 382E7BAD41>I<00000FFE0000000001FFFFF000000007FFFFFC0000001FF803FF000000 7FE000FFC00000FF80003FE00001FF00001FF00003FE00000FF80007FC000007FC000FFC 000007FE000FF8000003FE001FF8000003FF003FF8000003FF803FF0000001FF803FF000 0001FF807FF0000001FFC07FF0000001FFC07FF0000001FFC0FFF0000001FFE0FFF00000 01FFE0FFF0000001FFE0FFF0000001FFE0FFF0000001FFE0FFF0000001FFE0FFF0000001 FFE0FFF0000001FFE0FFF0000001FFE0FFF0000001FFE07FF0000001FFC07FF0000001FF C07FF0000001FFC07FF0000001FFC03FF8000003FF803FF8000003FF801FF8000003FF00 1FFC000007FF000FFC000007FE0007FE00000FFC0003FE00000FF80001FF00001FF00000 FF80003FE000007FE000FFC000001FFC07FF00000007FFFFFC00000001FFFFF000000000 1FFF000000332E7DAD3A>I<007FC01FFC0000FFFFC0FFFF8000FFFFC3FFFFF000FFFFCF E03FFC00FFFFDF0007FE0003FFFC0003FF0001FFF80001FF8001FFF00000FFC001FFE000 007FE001FFC000007FF001FFC000003FF801FFC000003FF801FFC000001FFC01FFC00000 1FFC01FFC000001FFE01FFC000001FFE01FFC000000FFE01FFC000000FFE01FFC000000F FF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF 01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFE01 FFC000001FFE01FFC000001FFE01FFC000001FFC01FFC000001FFC01FFC000003FFC01FF C000003FF801FFC000003FF001FFC000007FF001FFE00000FFE001FFF00000FFC001FFF8 0001FF8001FFFC0003FF0001FFDF000FFE0001FFCFC03FF80001FFC3FFFFE00001FFC0FF FF800001FFC01FF8000001FFC00000000001FFC00000000001FFC00000000001FFC00000 000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000 0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000 01FFC00000000001FFC000000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FF FFFF8000000038427CAD41>I<00001FF80007800001FFFF000F800007FFFF801F80001F FC07E01F80007FF000F03F8000FFC000787F8001FF80003C7F8003FF00001EFF8007FE00 000FFF800FFE00000FFF800FFC000007FF801FFC000007FF803FFC000003FF803FF80000 03FF803FF8000003FF807FF8000003FF807FF8000003FF807FF0000003FF80FFF0000003 FF80FFF0000003FF80FFF0000003FF80FFF0000003FF80FFF0000003FF80FFF0000003FF 80FFF0000003FF80FFF0000003FF80FFF0000003FF80FFF0000003FF807FF0000003FF80 7FF0000003FF807FF8000003FF807FF8000003FF803FF8000003FF803FF8000003FF801F FC000003FF801FFC000007FF800FFE000007FF8007FE00000FFF8003FF00001FFF8001FF 80003FFF8000FFC0007BFF80007FE001F3FF80003FF80FE3FF80000FFFFF83FF800003FF FE03FF8000003FF003FF800000000003FF800000000003FF800000000003FF8000000000 03FF800000000003FF800000000003FF800000000003FF800000000003FF800000000003 FF800000000003FF800000000003FF800000000003FF800000000003FF800000000003FF 800000000003FF800000000003FF8000000001FFFFFF00000001FFFFFF00000001FFFFFF 00000001FFFFFF38427CAD3D>I<007F803F80FFFF80FFE0FFFF81FFF8FFFF83C3FCFFFF 8707FE03FF8E07FE01FF9C0FFF01FFB80FFF01FFB80FFF01FFF00FFF01FFF00FFF01FFF0 07FE01FFE003FC01FFE001F801FFE0000001FFE0000001FFC0000001FFC0000001FFC000 0001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC00000 01FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001 FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FF C0000001FFC00000FFFFFFE000FFFFFFE000FFFFFFE000FFFFFFE000282E7DAD2F>I<00 0FFE01C000FFFFC7C003FFFFFFC007F801FFC00FC0007FC01F00001FC03F00000FC07E00 0007C07E000007C07E000003C0FE000003C0FE000003C0FF000003C0FF800003C0FFE000 0000FFF80000007FFFC000007FFFFF00003FFFFFE0003FFFFFF8001FFFFFFC000FFFFFFF 0007FFFFFF8001FFFFFFC0007FFFFFE0001FFFFFE00000FFFFF0000003FFF00000007FF8 7000001FF8F000000FF8F0000007F8F8000007F8F8000003F8F8000003F8FC000003F0FC 000003F0FE000003F0FF000007E0FF800007E0FFC0000FC0FFF0001F80FEFC00FF00F87F FFFC00F01FFFF000E003FF8000252E7CAD2E>I<0001E000000001E000000001E0000000 01E000000001E000000001E000000003E000000003E000000003E000000007E000000007 E000000007E00000000FE00000000FE00000001FE00000003FE00000003FE00000007FE0 000001FFE0000003FFE000000FFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC000FFE000 0000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00000 00FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000 FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF E0000000FFE0000000FFE000F000FFE000F000FFE000F000FFE000F000FFE000F000FFE0 00F000FFE000F000FFE000F000FFE000F0007FE000E0007FF001E0003FF001E0003FF003 C0001FF80380000FFE0F000007FFFE000001FFFC0000001FF00024427EC12D>I<007FC0 0000FF80FFFFC001FFFF80FFFFC001FFFF80FFFFC001FFFF80FFFFC001FFFF8003FFC000 07FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003 FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF 8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF80 01FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001 FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF C00003FF8001FFC00003FF8001FFC00003FF8001FFC00007FF8001FFC00007FF8001FFC0 0007FF8000FFC0000FFF8000FFC0001FFF8000FFC0001FFF80007FE0003BFF80003FE000 F3FFC0001FF803E3FFFF000FFFFF83FFFF0003FFFF03FFFF00003FF803FFFF382E7BAD41 >IIIII E /Fo 36 122 df<0000FE000003018000060180000C0380 001C0180001C0000001800000038000000380000003800000038000003FFFE0000700E00 00700E0000700E0000701C0000701C0000E01C0000E01C0000E0380000E0380000E03800 01C0380001C0720001C0720001C0720001C0720003803400038018000380000003000000 0300000007000000C6000000E6000000CC000000780000001925819C17>12 D<183C3C3C0404080810204080060C779C0D>39 D45 D<3078F06005047C830D>I<01FFFF00003C0380003801C0003800E0003800E0003800E0 007000E0007001E0007001E0007003C000E0038000E00F0000E01E0000FFFC0001C00E00 01C0070001C0078001C007800380078003800780038007800380078007000F0007000E00 07001E0007003C000E00F000FFFFC0001B1C7E9B1D>66 D<01FFFF00003C03C0003800E0 003800E000380070003800700070007800700038007000380070007800E0007800E00078 00E0007800E0007801C000F001C000F001C000F001C000E0038001E0038001C0038003C0 038003800700070007000E0007001C00070038000E00E000FFFF80001D1C7E9B1F>68 D<01FFFFF0003C00F0003800300038002000380020003800200070002000700020007008 200070080000E0100000E0100000E0300000FFF00001C0200001C0200001C0200001C020 0003804000038000000380000003800000070000000700000007000000070000000F0000 00FFF000001C1C7E9B1B>70 D<03FF0078007000700070007000E000E000E000E001C001 C001C001C0038003800380038007000700070007000E000E000E000E001E00FFC0101C7D 9B10>73 D<01FFC0003C0000380000380000380000380000700000700000700000700000 E00000E00000E00000E00001C00001C00001C00001C00003800203800203800203800407 000407000C0700180700380E00F0FFFFF0171C7E9B1A>76 D<01FC00FF80001C001C0000 2E001800002E001000002E00100000270010000047002000004300200000438020000043 8020000081C040000081C040000081C040000080E040000100E080000100708000010070 8000010070800002003900000200390000020039000002001D000004001E000004000E00 0004000E00000C000E00001C00040000FF80040000211C7E9B1F>78 D<000F8400304C00403C0080180100180300180300180600100600100600000700000700 0003E00003FC0001FF00007F800007C00001C00001C00000C00000C02000C02000C06001 80600180600300600200F00400CC180083E000161E7D9C17>83 D<01E307170C0F180F38 0E300E700E700EE01CE01CE01CE01CE039E039E0396079319A1E0C10127C9115>97 D<3F00070007000E000E000E000E001C001C001C001C0039E03A183C0C380C700C700E70 0E700EE01CE01CE01CE018E038E030E06060C031801E000F1D7C9C13>I<00F803040E04 1C0E181C300070007000E000E000E000E000E000E0046008601030600F800F127C9113> I<0007E00000E00000E00001C00001C00001C00001C000038000038000038000038001E7 000717000C0F00180F00380E00300E00700E00700E00E01C00E01C00E01C00E01C00E039 00E03900E03900607900319A001E0C00131D7C9C15>I<00F807040C0418023804300470 087FF0E000E000E000E000E00060046008301030600F800F127C9113>I<0003C0000670 000C70001C60001C00001C0000380000380000380000380000380003FF80007000007000 00700000700000700000E00000E00000E00000E00000E00001C00001C00001C00001C000 01C000038000038000038000030000030000070000C60000E60000CC0000780000142581 9C0D>I<0078C001C5C00303C00603C00E03800C03801C03801C03803807003807003807 00380700380E00380E00380E00181E000C7C00079C00001C00001C00003800003800C030 00E07000C1C0007F0000121A7E9113>I<0FC00001C00001C00003800003800003800003 80000700000700000700000700000E3E000EC3000F03800E03801E03801C03801C03801C 0380380700380700380700380E00700E40700E40701C40701C80E00C80600700121D7E9C 15>I<01800380010000000000000000000000000000001C002600470047008E008E000E 001C001C001C0038003800710071007100720072003C00091C7C9B0D>I<000300070003 00000000000000000000000000000078008C010C020C021C041C001C001C003800380038 0038007000700070007000E000E000E000E001C001C0C180E300C60078001024819B0D> I<0FC00001C00001C0000380000380000380000380000700000700000700000700000E07 800E08800E11C00E21C01C41801C80001D00001E00003FC00038E0003870003870007071 00707100707100707200E03200601C00121D7E9C13>I<1F800380038007000700070007 000E000E000E000E001C001C001C001C0038003800380038007000700070007000E200E2 00E200E40064003800091D7D9C0B>I<1C1E0780266318C04683A0E04703C0E08E0380E0 8E0380E00E0380E00E0380E01C0701C01C0701C01C0701C01C070380380E0388380E0388 380E0708380E0710701C0320300C01C01D127C9122>I<383E004CC3004D03804E03809E 03809C03801C03801C0380380700380700380700380E00700E40700E40701C40701C80E0 0C8060070012127C9117>I<00F800030C000E06001C0300180300300300700380700380 E00700E00700E00700E00E00E00E00E01C0060180060300030E0000F800011127C9115> I<03878004C86004D03004E03009C03009C03801C03801C0380380700380700380700380 600700E00700C00701800783000E86000E78000E00000E00001C00001C00001C00001C00 00380000FF0000151A809115>I<01E107130C0F180F380E300E700E700EE01CE01CE01C E01CE038E038E038607831F01E700070007000E000E000E000E001C00FF8101A7C9113> I<1C3C2642468747078E068E000E000E001C001C001C001C003800380038003800700030 0010127C9112>I<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030 C030806060C01F000E127D9111>I<03000700070007000E000E000E000E00FFE01C001C 001C0038003800380038007000700070007000E080E080E100E100660038000B1A7C990E >I<1C01802E03804E03804E03808E07008E07001C07001C0700380E00380E00380E0038 0E00301C80301C80301C80383C80184D000F860011127C9116>I<1C062E0E4E064E068E 028E021C021C023804380438043808300830083010382018400F800F127C9113>I<1E01 832703874703874703838707018707010E07010E07011C0E021C0E021C0E021C0E04180C 04181C04181C081C1E080C263007C3C018127C911C>I<0387800CC8400870E01070E020 E0C020E00000E00000E00001C00001C00001C00001C000038100638100E38200C5820085 840078780013127E9113>I<1C01802E03804E03804E03808E07008E07001C07001C0700 380E00380E00380E00380E00301C00301C00301C00383C001878000FB800003800003000 007000E06000E0C0008180004300003C0000111A7C9114>I E /Fp 82 123 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0 000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0 000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0 000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C0 0E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C00E01C0 0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F8 151D809C17>I<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E01C00E01 C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<003F07E00001C0 9C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00E000000E00E0 00000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E00E01C 000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00 0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23> I<60F0F0F0F0F0F0F060606060606060606060606060000000000060F0F060041E7C9D0C >33 D<6060F0F0F8F86868080808080808101010102020404080800D0C7F9C15>I<60F0 F8680808081010204080050C7C9C0C>39 D<00800100020006000C000C00180018003000 300030006000600060006000E000E000E000E000E000E000E000E000E000E000E000E000 6000600060006000300030003000180018000C000C000600020001000080092A7C9E10> I<8000400020003000180018000C000C0006000600060003000300030003000380038003 8003800380038003800380038003800380038003000300030003000600060006000C000C 00180018003000200040008000092A7E9E10>I<0300030003000300C30CE31C73381FE0 078007801FE07338E31CC30C03000300030003000E127D9E15>I<000600000006000000 060000000600000006000000060000000600000006000000060000000600000006000000 06000000060000FFFFFFE0FFFFFFE0000600000006000000060000000600000006000000 060000000600000006000000060000000600000006000000060000000600001B1C7E9720 >I<60F0F0701010101020204080040C7C830C>II<60F0F06004 047C830C>I<00010003000600060006000C000C000C0018001800180030003000300060 006000C000C000C0018001800180030003000300060006000C000C000C00180018001800 300030003000600060006000C000C00010297E9E15>I<03C00C301818300C300C700E60 066006E007E007E007E007E007E007E007E007E007E007E007E007E00760066006700E30 0C300C18180C3007E0101D7E9B15>I<010007003F00C700070007000700070007000700 07000700070007000700070007000700070007000700070007000700070007000700FFF8 0D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C00 1C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07E0 1830201C201C781E780E781E381E001C001C00180030006007C00030001C001C000E000F 000F700FF80FF80FF80FF00E401C201C183007C0101D7E9B15>I<000C00000C00001C00 003C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C00 301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C00001C00 01FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E02C303018 301C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D7E9B 15>I<00F0030C04040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E0 07E007E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<4000007F FF807FFF007FFF0040020080040080040080080000100000100000200000600000400000 C00000C00001C00001800001800003800003800003800003800007800007800007800007 8000078000078000030000111D7E9B15>I<03E00C301008200C20066006600670067006 7C0C3E183FB01FE007F007F818FC307E601E600FC007C003C003C003C00360026004300C 1C1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007E0 076007700F300F18170C2707C700060006000E300C780C78187018203010C00F80101D7E 9B15>I<60F0F0600000000000000000000060F0F06004127C910C>I<60F0F06000000000 00000000000060F0F0701010101020204080041A7C910C>I61 D<0FE03038401CE00EF00EF00EF00E000C001C0030006000C0008001 800100010001000100010001000000000000000000000003000780078003000F1D7E9C14 >63 D<000600000006000000060000000F0000000F0000000F0000001780000017800000 37C0000023C0000023C0000043E0000041E0000041E0000080F0000080F0000080F00001 0078000100780001FFF80002003C0002003C0002003C0004001E0004001E000C001F000C 000F001E001F00FF00FFF01C1D7F9C1F>65 DI<001F808000E0 618001801980070007800E0003801C0003801C0001803800018078000080780000807000 0080F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00000007000 00807800008078000080380000801C0001001C0001000E000200070004000180080000E0 3000001FC000191E7E9C1E>IIII<001F808000E061800180 1980070007800E0003801C0003801C00018038000180780000807800008070000080F000 0000F0000000F0000000F0000000F0000000F0000000F000FFF0F0000F80700007807800 078078000780380007801C0007801C0007800E00078007000B800180118000E06080001F 80001C1E7E9C21>III<07FF80007C00003C00003C00003C00003C00003C00003C0000 3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 3C00703C00F83C00F83C00F8380070780040700030E0000F8000111D7F9B15>IIIII<003F800000E0E0000380380007001C000E000E001C0007003C000780380003 80780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001 E0F00001E0F00001E0700001C0780003C0780003C0380003803C0007801C0007000E000E 0007001C000380380000E0E000003F80001B1E7E9C20>II82 D<07E0801C198030058030038060 0180E00180E00080E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000 FF80000F800007C00003C00001C08001C08001C08001C0C00180C00180E00300D00200CC 0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020 800F0020800F0020800F0020000F0000000F0000000F0000000F0000000F0000000F0000 000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 000F0000000F0000001F800003FFFC001B1C7F9B1E>IIIII< FFF003FC0F8001E0078000C007C0008003C0010003E0030001E0020000F0040000F80400 00780800007C1800003C1000003E2000001F2000000F4000000FC0000007800000078000 000780000007800000078000000780000007800000078000000780000007800000078000 007FF8001E1C809B1F>I91 D<080810102020404040408080 80808080B0B0F8F8787830300D0C7A9C15>II<1FC0003070 00783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C 40E01C40603C40304E801F870012127E9115>97 DI<03F80C0C181E301E700C6000E000E000E000E000E000E0006000700230 0218040C1803E00F127F9112>I<001F8000038000038000038000038000038000038000 038000038000038000038003F3800E0B80180780300380700380600380E00380E00380E0 0380E00380E00380E003806003807003803003801807800E1B8003E3F0141D7F9C17>I< 07E00C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803E0 0F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E 000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I< 00038007C4C01C78C0383880301800701C00701C00701C00701C003018003838001C7000 27C0002000002000003000003FF8001FFF001FFF802003806001C0C000C0C000C0C000C0 6001803003001C0E0007F800121C7F9215>II<18003C003C0018000000000000000000000000000000FC001C001C001C001C 001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<00C0 01E001E000C0000000000000000000000000000007E000E000E000E000E000E000E000E0 00E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F1C061803E00 0B25839C0D>IIIII< 03F0000E1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001C0 6001807003803003001806000E1C0003F00012127F9115>II<03E0800E1980180580380780700380700380E00380E00380E00380E00380E00380E0 03807003807003803807801807800E1B8003E38000038000038000038000038000038000 0380000380001FF0141A7F9116>II<1F9020704030C010C010E010F800 7F803FE00FF000F880388018C018C018E010D0608FC00D127F9110>I<04000400040004 000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C 101C100C100E2003C00C1A7F9910>III III<7FFC70386038407040F040E041C003C0038007000F040E041C043C0C3808700870 38FFF80E127F9112>I E /Fq 57 122 df<003FC00001F0300003C0380007C07C000F80 7C000F807C000F8038000F8000000F8000000F8000000F800000FFFFFC00FFFFFC000F80 7C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F80 7C000F807C000F807C000F807C000F807C007FE1FF807FE1FF80191D809C1B>12 D<70F8FCFCFC7C0404080808102040060E7D850D>44 DI<03F8000F1E001C07003C07803803807803C07803C07803C0F803E0F803E0F803E0F8 03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E07803C07803C03803803C 07801C07000F1E0003F800131B7E9A18>48 D<00600001E0000FE000FFE000F3E00003E0 0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 0003E00003E00003E00003E00003E00003E00003E0007FFF807FFF80111B7D9A18>I<07 F8001FFE00383F80780FC0FC07C0FC07E0FC03E0FC03E07803E00007E00007C00007C000 0F80001F00001E0000380000700000E0000180600300600600600800E01FFFC03FFFC07F FFC0FFFFC0FFFFC0131B7E9A18>I<07F8001FFE003C1F003C0F807C07C07E07C07C07C0 3807C0000F80000F80001E00003C0003F800001E00000F800007C00007C00007E03007E0 7807E0FC07E0FC07E0FC07C0780F80781F001FFE0007F800131B7E9A18>I<0001800003 80000780000F80001F80003F80006F8000CF80008F80018F80030F80060F800C0F80180F 80300F80600F80C00F80FFFFF8FFFFF8000F80000F80000F80000F80000F80000F8000FF F800FFF8151B7F9A18>I<3801803FFF003FFE003FFC003FF8003FC00030000030000030 000030000031F800361E00380F803007800007C00007E00007E00007E07807E0F807E0F8 07E0F807C0F007C0600F80381F001FFE0007F000131B7E9A18>I<007E0003FF00078180 0F03C01E07C03C07C07C0380780000780000F80000F8F800FB0E00FA0780FC0380FC03C0 F803E0F803E0F803E0F803E07803E07803E07803C03C03C03C07801E0F0007FE0003F800 131B7E9A18>I<6000007FFFE07FFFE07FFFC07FFF807FFF80E00300C00600C00C00C018 0000300000300000600000E00000E00001E00001C00003C00003C00003C00003C00007C0 0007C00007C00007C00007C00007C000038000131C7D9B18>I<03F8000FFE001E0F8038 07803803C07803C07C03C07E03C07F83803FC7003FFE001FFC000FFE0007FF001DFF8038 7FC0781FE0700FE0F003E0F001E0F001E0F001E07801C07803803E07801FFE0003F80013 1B7E9A18>I<03F8000FFE001E0F003C07807807807803C0F803C0F803C0F803E0F803E0 F803E0F803E07807E03807E03C0BE00E1BE003E3E00003E00003C00003C03807C07C0780 7C0700780F00383C001FF8000FE000131B7E9A18>I<00038000000380000007C0000007 C0000007C000000FE000000FE000001FF000001BF000003BF8000031F8000031F8000060 FC000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF8003001F800700 1FC006000FC006000FC00C0007E00C0007E0FF803FFEFF803FFE1F1C7E9B24>65 DI<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E0 3E0000E03E0000607E0000607C000060FC000000FC000000FC000000FC000000FC000000 FC000000FC000000FC0000007C0000607E0000603E0000603E0000C01F0000C00F800180 07C0030003F80E0000FFFC00001FE0001B1C7D9B22>IIII<000FF008007FFE3801FC07F807E001F8 0F8000781F0000783F0000383E0000387E0000187C000018FC000000FC000000FC000000 FC000000FC000000FC000000FC007FFFFC007FFF7C0001F87E0001F83E0001F83F0001F8 1F0001F80F8001F807E001F801FC07F8007FFE78000FF818201C7D9B26>III<07FFF0 07FFF0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80 001F80001F80001F80001F80001F80001F80001F80301F80781F80FC1F80FC1F80FC1F00 783E00387C000FF000141C7F9B19>I77 DI<003FE00001 F07C0003C01E000F800F801F0007C01E0003C03E0003E07E0003F07C0001F07C0001F0FC 0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F87C0001F07E 0003F07E0003F03E0003E03F0007E01F0007C00F800F8003C01E0001F07C00003FE0001D 1C7D9B24>II82 D<07F8201FFEE03C07E07801E07000E0 F000E0F00060F00060F80000FE0000FFE0007FFE003FFF003FFF800FFFC007FFE0007FE0 0003F00001F00000F0C000F0C000F0C000E0E000E0F001C0FC03C0EFFF0083FC00141C7D 9B1B>I<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060E01F8070C01F8030C01F8030 C01F8030C01F8030001F8000001F8000001F8000001F8000001F8000001F8000001F8000 001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 07FFFE0007FFFE001C1C7E9B21>IIII<0FF8001C1E003E0F803E0780 3E07C01C07C00007C0007FC007E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC0 3E13F80FE1F815127F9117>97 DI< 03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000F80000 7800007801803C01801C03000E0E0003F80011127E9115>I<000FF0000FF00001F00001 F00001F00001F00001F00001F00001F00001F00001F001F9F00F07F01C03F03C01F07801 F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801F07801F03C01F01C03F00F0F FE03F9FE171D7E9C1B>I<03FC000F07001C03803C01C07801C07801E0F801E0F801E0FF FFE0F80000F80000F800007800007800603C00601E00C00F038001FC0013127F9116>I< 007F0001E38003C7C00787C00F87C00F83800F80000F80000F80000F80000F8000FFF800 FFF8000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000 0F80000F80000F80007FF0007FF000121D809C0F>I<03F0F00E1F383C0F383807307807 807807807807807807803807003C0F001E1C0033F0003000003000003000003FFF003FFF C01FFFE01FFFF07801F8F00078F00078F000787000707800F01E03C007FF00151B7F9118 >II<1E003F003F003F003F001E00 0000000000000000000000007F007F001F001F001F001F001F001F001F001F001F001F00 1F001F001F001F00FFC0FFC00A1E7F9D0E>I107 DI< FF0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C01F00F807C01F 00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00 F807C01F00F807C0FFE7FF3FF8FFE7FF3FF825127F9128>II<01FC000F07801C01C03C01E07800F07800F0F800F8F8 00F8F800F8F800F8F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F91 18>II<03F0600F0CE01E07E03C03E07C03E07803E0F803 E0F803E0F803E0F803E0F803E0F803E07803E07C03E03C03E01C07E00E0FE003F3E00003 E00003E00003E00003E00003E00003E0001FFC001FFC161A7E9119>II<1FD830786018E018E018F000FF807FE07FF0 1FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<0300030003000300070007 000F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F 08079803F00E1A7F9913>I IIIII E /Fr 1 16 df<07801FE03FF07FF87FF8FFFCFFFCFFFCFFFCFFFCFFFC7FF87FF83FF01F E007800E107E9013>15 D E /Fs 66 124 df<60F0F86808080810102040050B7D990B> 39 D<00800100020004000C00080018003000300030006000600060006000E000E000E0 00E000E000E000E000E000E000E0006000600060006000300030003000180008000C0004 0002000100008009267D9B0F>I<8000400020001000180008000C000600060006000300 030003000300038003800380038003800380038003800380038003000300030003000600 060006000C0008001800100020004000800009267E9B0F>I<60F0F07010101020204040 040B7D830B>44 DI<60F0F06004047D830B>I<07E01C38381C30 0C700E60066006E007E007E007E007E007E007E007E007E007E00760066006700E300C38 1C1C3807E010187F9713>48 D<03000700FF000700070007000700070007000700070007 00070007000700070007000700070007000700070007007FF80D187D9713>I<0F801060 20304038803CC01CE01C401C003C003800380070006000C0018001000200040408041004 30083FF87FF8FFF80E187E9713>I<07E01838201C601E700E201E001E001C001C003800 7007E00038001C000E000F000FE00FE00FC00F400E601C183807E010187F9713>I<0018 00180038007800F800B8013802380238043808381838103820384038C038FFFF00380038 003800380038003803FF10187F9713>I<30183FF03FE03F80200020002000200020002F C03060203000380018001C001C401CE01CE01C80184038403030E00F800E187E9713>I< 01F807040C06180E300E300070006000E000E3E0E418E80CF00EE006E007E007E0076007 60077006300E180C0C3807E010187F9713>I<40007FFF7FFE7FFE400480088010801000 2000400040008001800100030003000700060006000E000E000E000E000E00040010197E 9813>I<07E01818300C2006600660067006780C3E181F3007C003E00CF8307C601E600F C007C003C003C00360022004181807E010187F9713>I<07E01C303018700C600EE006E0 06E007E007E0076007700F3017182707C700070006000E000C700C7018603030600F8010 187F9713>I<60F0F060000000000000000060F0F06004107D8F0B>I<000C0000000C0000 000C0000001E0000001E0000002F00000027000000270000004380000043800000438000 0081C0000081C0000181E0000100E0000100E00003FFF000020070000200700004003800 040038000400380008001C0008001C003C001E00FF00FFC01A1A7F991D>65 DI<003F0201C0C603002E0E001E1C000E1C000638000678 0002700002700002F00000F00000F00000F00000F00000F0000070000270000278000238 00041C00041C00080E000803003001C0C0003F00171A7E991C>III<003F020001C0C60003002E000E001E001C000E001C0006003800060078 0002007000020070000200F0000000F0000000F0000000F0000000F0000000F001FFC070 000E0070000E0078000E0038000E001C000E001C000E000E000E000300160001C0660000 3F82001A1A7E991E>71 DI I<0FFE007000700070007000700070007000700070007000700070007000700070007000 70007000704070E070E07040E061C01F000F1A7E9914>IIIII<007F000001C1C000070070000E0038001C001C003C001E003800 0E0078000F0070000700F0000780F0000780F0000780F0000780F0000780F0000780F000 0780F000078078000F0078000F0038000E003C001E001C001C000E0038000700700001C1 C000007F0000191A7E991E>II82 D<0FC21836200E6006C006C002C002C002E00070007E003FE01FF803FC007E000E000700 03800380038003C002C006E004D81887E0101A7E9915>I<7FFFFF00701C0700401C0100 401C0100C01C0180801C0080801C0080801C0080001C0000001C0000001C0000001C0000 001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000 001C0000001C0000001C0000001C000003FFE000191A7F991C>IIII90 DI93 D<1FC000387000383800101C00001C00 001C0003FC001E1C00381C00701C00E01C00E01C80E01C80E03C80705F801F8F0011107F 8F13>97 DI<07F81C1C381C70087000E000E000E000E000 E000E0007000700438081C1807E00E107F8F11>I<003F00000700000700000700000700 00070000070000070000070000070003E7000C1700180F00300700700700E00700E00700 E00700E00700E00700E00700600700700700380F001C370007C7E0131A7F9915>I<07C0 1C3030187018600CE00CFFFCE000E000E000E0006000700438081C1807E00E107F8F11> I<01F007180E381C101C001C001C001C001C001C00FFC01C001C001C001C001C001C001C 001C001C001C001C001C001C001C00FF800D1A80990C>I<0FCF00187180303000703800 7038007038007038003030001860002FC0006000006000007000003FF0003FFC001FFE00 600F00C00300C00300C00300C00300600600381C0007E00011187F8F13>II<183C3C18000000000000FC1C1C1C1C1C1C1C1C1C1C1C1C1C1CFF081A 80990A>I107 DIII<07E01C38300C700E6006E0 07E007E007E007E007E0076006700E381C1C3807E010107F8F13>II114 D<1F2060E04020C020C020F0007F003FC01FE000F080708030C030C020F0408F800C107F 8F0F>I<0800080008000800180018003800FFC038003800380038003800380038003800 382038203820382018201C4007800B177F960F>IIIIIIII E /Ft 3 52 df<187898181818181818181818181818FF08107D8F0F>49 D<1F00618040C08060C060 0060006000C00180030006000C00102020207FC0FFC00B107F8F0F>I<1F00218060C060 C000C0008001001F00008000400060C060C060804060801F000B107F8F0F>I E /Fu 3 52 df<06000E00FE000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E000E000E00FFE00B157D9412>49 D<0F8030E040708030C038E038403800 3800700070006000C00180030006000C08080810183FF07FF0FFF00D157E9412>I<0FE0 30306018701C701C001C00180038006007E000300018000C000E000EE00EE00EC00C4018 30300FE00F157F9412>I E /Fv 33 123 df<70F8FCFC7404040404080810102040060F 7C840E>44 D<008003800F80F38003800380038003800380038003800380038003800380 038003800380038003800380038003800380038003800380038003800380038007C0FFFE 0F217CA018>49 D<03F0000C1C001007002007804003C04003C08003E0F003E0F801E0F8 01E0F801E02003E00003E00003C00003C0000780000700000E00001C0000180000300000 600000C0000180000100000200200400200800201800603000403FFFC07FFFC0FFFFC013 217EA018>I<4000006000007FFFE07FFFC07FFFC0400080C00100800100800200800200 00040000080000080000100000200000200000600000400000C00000C00001C00001C000 018000038000038000038000038000078000078000078000078000078000078000078000 03000013237DA118>55 D<01F800060E000803001001802001806000C06000C06000C070 00C07000C07801803E01003F02001FC4000FF80003F80001FC00067E00083F00100F8030 07C06003C06000E0C000E0C00060C00060C00060C000606000406000C03000801803000E 0E0003F00013227EA018>I<01F000060C000C0600180700380380700380700380F001C0 F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E0 0619E003E1E00001C00001C00001C0000380000380300380780700780600700C00201800 1030000FC00013227EA018>I<0001800000018000000180000003C0000003C0000003C0 000005E0000005E0000009F0000008F0000008F00000107800001078000010780000203C 0000203C0000203C0000401E0000401E0000C01F0000800F0000800F0001FFFF80010007 8001000780020003C0020003C0020003C0040001E0040001E0040001E0080000F01C0000 F03E0001F8FF800FFF20237EA225>65 D<0007E0100038183000E0063001C00170038000 F0070000F00E0000701E0000701C0000303C0000303C0000307C00001078000010780000 10F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000780000 00780000107C0000103C0000103C0000101C0000201E0000200E00004007000040038000 8001C0010000E0020000381C000007E0001C247DA223>67 DI72 D<03FFE0001F00000F00000F00 000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00 000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00700F00F80F00 F80F00F80E00F01E00401C0020380018700007C00013237EA119>74 DI<000F E00000783C0000E00E0003C00780078003C00F0001E00E0000E01E0000F03C0000783C00 00787C00007C7C00007C7800003C7800003CF800003EF800003EF800003EF800003EF800 003EF800003EF800003EF800003EF800003E7800003C7C00007C7C00007C3C0000783E00 00F81E0000F00F0001E00F0001E0078003C003C0078000E00E0000783C00000FE0001F24 7DA226>79 D87 D<1FE000303800780C00780E0030070000070000070000070000FF0007 C7001E07003C0700780700700700F00708F00708F00708F00F087817083C23900FC1E015 157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00 000E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E003C0E001C0E00 1E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C80600C41 C0083F0017237FA21B>I<01FE000703000C07801C0780380300780000700000F00000F0 0000F00000F00000F00000F00000F000007000007800403800401C00800C010007060001 F80012157E9416>I<0000E0000FE00001E00000E00000E00000E00000E00000E00000E0 0000E00000E00000E00000E00000E001F8E00704E00C02E01C01E03800E07800E07000E0 F000E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03800E01801E00C02E0 070CF001F0FE17237EA21B>I<01FC000707000C03801C01C03801C07801E07000E0F000 E0FFFFE0F00000F00000F00000F00000F000007000007800203800201C00400E00800703 0000FC0013157F9416>I<00007003F1980E1E181C0E1838070038070078078078078078 07807807803807003807001C0E001E1C0033F0002000002000003000003800003FFE001F FFC00FFFE03000F0600030C00018C00018C00018C000186000306000303800E00E038003 FE0015217F9518>103 D<1C003E003E003E001C00000000000000000000000000000000 000E007E001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E00FFC00A227FA10E>105 D<0E0000FE00001E00000E00000E00000E00000E00 000E00000E00000E00000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E02 000E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E01 C00E01E00E00F00E00F8FFE3FE17237FA21A>107 D<0E00FE001E000E000E000E000E00 0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00 0E000E000E000E000E000E000E000E000E00FFE00B237FA20E>I<0E1F80FE60C01E80E0 0F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070 0E00700E00700E00700E00700E0070FFE7FF18157F941B>110 D<01FC000707000C0180 1800C03800E0700070700070F00078F00078F00078F00078F00078F00078F00078700070 7800F03800E01C01C00E038007070001FC0015157F9418>I<0E3CFE461E8F0F0F0F060F 000E000E000E000E000E000E000E000E000E000E000E000E000E000F00FFF010157F9413 >114 D<0F8830786018C018C008C008E008F0007F003FE00FF001F8003C801C800C800C C00CC008E018D0308FC00E157E9413>I<02000200020002000600060006000E001E003E 00FFFC0E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E040E 040708030801F00E1F7F9E13>I118 DIII<3FFFC038038030078020070060 0E00401C00403C0040380000700000E00001E00001C0000380400700400F00400E00C01C 0080380080780180700780FFFF8012157F9416>I E /Fw 17 120 df<3C7EFFFFFFFF7E3C0808728725>46 D<000000E0000001F0000001F0000003F00000 03E0000007E0000007C0000007C000000FC000000F8000001F8000001F0000003F000000 3E0000007E0000007C000000FC000000F8000000F8000001F8000001F0000003F0000003 E0000007E0000007C000000FC000000F8000001F8000001F0000001F0000003F0000003E 0000007E0000007C000000FC000000F8000001F8000001F0000001F0000003F0000003E0 000007E0000007C000000FC000000F8000001F8000001F0000003F0000003E0000003E00 00007E0000007C000000FC000000F8000000F8000000700000001C387CB125>I<3C7EFF FFFFFF7E3C0000000000000000000000000000003C7EFFFFFFFF7E3C081F729E25>58 D<001FFC00007FFF0001FFFF8003FFFFC007F00FC00FC00FC01F8007803F0003003E0000 007C0000007C000000FC000000F8000000F8000000F8000000F8000000F8000000F80000 00F8000000FC0000007C0000007C0000003E0001C03F0003E01F8003E00FC007E007F03F C003FFFF8001FFFF00007FFE00001FF0001B1F7B9E25>99 D<00007FC0000000FFE00000 00FFE00000007FE000000003E000000003E000000003E000000003E000000003E0000000 03E000000003E000000003E000000003E000001FC3E000007FF3E00001FFFBE00003FFFF E00007F07FE0000FC01FE0001F800FE0003F0007E0003E0007E0007C0003E0007C0003E0 00FC0003E000F80003E000F80003E000F80003E000F80003E000F80003E000F80003E000 F80003E000FC0003E0007C0007E0007C0007E0003E0007E0003E000FE0001F001FE0000F C01FE00007F07FE00003FFFFFF0001FFFBFF8000FFF3FF80003FC1FF00212C7EAB25>I< 001FE00000FFF80001FFFE0003FFFF0007F07F800FC00F801F0007C03F0007E03E0003E0 7C0003E07C0003F0FC0001F0F80001F0FFFFFFF0FFFFFFF0FFFFFFF0FFFFFFE0F8000000 F8000000FC0000007C0000007E0000003E0000E03F0001F01F8001F00FC007F007F81FE0 03FFFFC001FFFF80007FFE00001FF8001C1F7C9E25>I<7FC0000000FFE0000000FFE000 00007FE000000003E000000003E000000003E000000003E000000003E000000003E00000 0003E000000003E000000003E000000003E0FE000003E3FF000003EFFF800003FFFFC000 03FF87E00003FE03E00003F801F00003F801F00003F001F00003F001F00003E001F00003 E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E0 01F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001 F00003E001F0007FFF0FFF80FFFF9FFFC0FFFF9FFFC07FFF0FFF80222C7FAB25>104 D<7F80000000FFC0000000FFC00000007FC000000003C000000003C000000003C0000000 03C000000003C000000003C000000003C000000003C000000003C000000003C03FFF0003 C07FFF8003C07FFF8003C03FFF0003C003E00003C007C00003C00F800003C01F000003C0 3E000003C0FC000003C1F8000003C3F0000003C7E0000003CFE0000003DFF0000003FEF0 000003FCF8000003F87C000003F03E000003E01E000003C01F000003C00F800003C007C0 0003C003C00003C003E00003C001F00003C000F8007FFE07FF80FFFF0FFFC0FFFF0FFFC0 7FFE07FF80222C7FAB25>107 D<7FFE0000FFFF0000FFFF00007FFF0000001F0000001F 0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F 0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F 0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F 0000001F0000001F0000001F0000001F0000001F0000001F0000001F00007FFFFFC0FFFF FFE0FFFFFFE07FFFFFC01B2C7BAB25>I<7FC0FE0000FFE3FF0000FFEFFF80007FFFFFC0 0003FF87E00003FE03E00003F801F00003F801F00003F001F00003F001F00003E001F000 03E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003 E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E0 01F00003E001F0007FFF0FFF80FFFF9FFFC0FFFF9FFFC07FFF0FFF80221F7F9E25>110 D<003FC00000FFF00003FFFC0007FFFE000FE07F001F801F801F000F803E0007C03E0007 C07C0003E07C0003E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001 F0F80001F0FC0003F07C0003E07C0003E03E0007C03F000FC01F801F801FC03F800FE07F 0007FFFE0003FFFC0000FFF000003FC0001C1F7C9E25>I<7FC1FE0000FFE7FF8000FFEF FFC0007FFFFFE00003FF07F00003FC01F80003F8007C0003F0003E0003F0003E0003E000 1F0003E0001F0003E0001F8003E0000F8003E0000F8003E0000F8003E0000F8003E0000F 8003E0000F8003E0000F8003E0001F8003E0001F0003F0001F0003F0003E0003F8007E00 03F800FC0003FC01F80003FF07F00003FFFFE00003EFFFC00003E7FF000003E1FC000003 E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0 00000003E000000003E000000003E000000003E00000007FFF000000FFFF800000FFFF80 00007FFF000000212F7F9E25>I<01FFC60007FFFF001FFFFF003FFFFF007F00FF007C00 3F00F0001F00F0001F00F0001F00F0000E00FC0000007F8000003FFC00001FFFE0000FFF F80003FFFC00001FFE000000FF0000001F80700007C0F80003C0F80003C0FC0003C0FC00 03C0FE0007C0FF000F80FFC07F00FFFFFE00FFFFFC00F3FFF800607FC0001A1F7B9E25> 115 D<0070000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000 F800007FFFFFC0FFFFFFE0FFFFFFE07FFFFFC000F8000000F8000000F8000000F8000000 F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000 F8000000F8000000F8007000F800F800F800F800F800F800F800F800F800F800FC01F800 7E07F0003FFFE0001FFFC0000FFF800003FE001D287EA725>I<7FC03FE000FFE07FF000 FFE07FF0007FE03FF00003E001F00003E001F00003E001F00003E001F00003E001F00003 E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E0 01F00003E001F00003E001F00003E001F00003E001F00003E001F00003E001F00003E003 F00003E003F00003F007F00001F81FF00001FFFFFF8000FFFFFFC0007FFDFFC0001FF0FF 80221F7F9E25>I<7FF00FFEFFF81FFFFFF81FFF7FF00FFE0F8001F0078001E0078001E0 07C003E003C003C003C003C003E007C001E0078001E0078001F00F8000F00F0000F00F00 00F81F0000781E0000781E00007C3E00003C3C00003C3C00003E7C00001E7800001E7800 001FF800000FF000000FF000000FF0000007E0000003C000201F7E9E25>I<7FF807FF80 FFFC0FFFC0FFFC0FFFC07FF807FF800F00003C000F00003C000F00003C000F00003C000F 00003C000F00003C00078000780007800078000781E078000783F078000783F078000783 F0780003C7F8F00003C738F00003C738F00003C738F00003CF3CF00003CF3CF00001CF3C E00001CE1CE00001EE1DE00001EE1DE00001FE1FE00000FC0FC00000FC0FC00000FC0FC0 000078078000221F7F9E25>I E /Fx 21 119 df<78FCFCFEFE7A020202020204040408 081020204007147AB112>39 D<78FCFCFCFC7806067A8512>46 D<000800003800007800 01F8003FF800FE7800C07800007800007800007800007800007800007800007800007800 007800007800007800007800007800007800007800007800007800007800007800007800 007800007800007800007800007800007800007800007800007800007800007800007800 00780000780000780000780000780000FC007FFFF87FFFF8152F7AAE21>49 D<007F800001FFF0000701F8000C007E0018001F0010000F0020000F80400007C0400007 C0400003E0B00003E0F80003E0FC0003E0FC0003E0FC0003E0780003E0000003E0000007 C0000007C00000078000000F8000000F0000001F0000001E0000003C0000007800000070 000000E0000001C0000003800000070000000E0000000C00000018000000300000006000 0000C000200180002003000020060000400C00004008000040100000C03FFFFFC07FFFFF 80FFFFFF80FFFFFF801B2F7DAE21>I<00001FE000800000FFFC01800007F00F0180000F 80018380003E0000C38000780000278000F00000178001E000000F8003C000000F800780 000007800780000003800F00000003801F00000001801E00000001803E00000001803C00 000001803C00000000807C00000000807C0000000080780000000000F80000000000F800 00000000F80000000000F80000000000F80000000000F80000000000F80000000000F800 00000000F80000000000F80000000000F800000FFFFC7800000FFFFC7C0000001FC07C00 00000F803C0000000F803C0000000F803E0000000F801E0000000F801F0000000F800F00 00000F80078000000F8007C000000F8003C000000F8001E000000F8000F000001780007C 00001780003E00006380000F8000C3800007F00781800000FFFE008000001FF000002E33 7CB134>71 D78 D<007F802001FFE02007C078600F001C60 1E0006E03C0003E0380001E0780000E0700000E070000060F0000060F0000060F0000020 F0000020F0000020F8000020F80000007C0000007E0000003F0000003FC000001FF80000 0FFF800007FFF00003FFFC0000FFFF00000FFF800000FFC000001FE0000007E0000003F0 000001F0000000F0000000F8000000F88000007880000078800000788000007880000078 C0000078C0000070E00000F0E00000E0F00000E0F80001C0EC000380C7000700C1F01E00 807FFC00800FF0001D337CB125>83 D85 D<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E001E 0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F001E 003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478003E 047C005E043E008F080F0307F003FC03E01E1F7D9E21>97 D<0780000000FF80000000FF 800000000F80000000078000000007800000000780000000078000000007800000000780 000000078000000007800000000780000000078000000007800000000780000000078000 0000078000000007800000000781FC00000786078000078801C000079000E00007A00070 0007C00038000780003C000780001E000780001E000780001F000780000F000780000F00 0780000F800780000F800780000F800780000F800780000F800780000F800780000F8007 80000F000780000F000780001F000780001E000780001E000780003C0007C00038000720 007000072000E000061801C00006060700000401F8000021327EB125>I<000000F00000 001FF00000001FF000000001F000000000F000000000F000000000F000000000F0000000 00F000000000F000000000F000000000F000000000F000000000F000000000F000000000 F000000000F000000000F000000000F000000FC0F000007030F00001C00CF000038002F0 00070001F0000E0001F0001E0000F0003C0000F0003C0000F0007C0000F000780000F000 780000F000F80000F000F80000F000F80000F000F80000F000F80000F000F80000F000F8 0000F000780000F000780000F0007C0000F0003C0000F0003C0000F0001E0000F0000E00 01F000070002F000038004F00001C008F80000F030FF80001FC0FF8021327EB125>100 D<003F800000E0E0000380380007003C000E001E001E001E001C000F003C000F007C000F 0078000F8078000780F8000780F8000780FFFFFF80F8000000F8000000F8000000F80000 00F8000000F8000000780000007C0000003C0000003C0000801E0000800E0001000F0002 000700020001C00C0000F03000001FC000191F7E9E1D>I<0F001F801F801F801F800F00 0000000000000000000000000000000000000000000007807F807F800F80078007800780 078007800780078007800780078007800780078007800780078007800780078007800780 0780078007800FC0FFF8FFF80D307EAF12>105 D<0780FF80FF800F8007800780078007 800780078007800780078007800780078007800780078007800780078007800780078007 800780078007800780078007800780078007800780078007800780078007800780078007 800780078007800FC0FFFCFFFC0E327EB112>108 D<0780FE0000FF83078000FF8C03C0 000F9001E00007A001E00007A000F00007C000F00007C000F000078000F000078000F000 078000F000078000F000078000F000078000F000078000F000078000F000078000F00007 8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780 00F000078000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF80211F7E 9E25>110 D<001FC00000F0780001C01C00070007000F0007801E0003C01C0001C03C00 01E03C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8F800 00F8F80000F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E00 03C00F00078007800F0001C01C0000F07800001FC0001D1F7E9E21>I<0783E0FF8418FF 887C0F907C07A07C07A03807C00007C00007C00007800007800007800007800007800007 800007800007800007800007800007800007800007800007800007800007800007800007 80000780000FC000FFFE00FFFE00161F7E9E19>114 D<01FC100E03301800F030007060 0030E00030E00010E00010E00010F00010F800007E00003FF0001FFF000FFFC003FFE000 3FF00001F80000F880003C80003C80001CC0001CC0001CE0001CE00018F00038F00030CC 0060C301C080FE00161F7E9E1A>I<00400000400000400000400000400000C00000C000 00C00001C00001C00003C00007C0000FC0001FFFE0FFFFE003C00003C00003C00003C000 03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000 03C01003C01003C01003C01003C01003C01003C01003C01001C02001E02000E0400078C0 001F00142C7FAB19>I<078000F000FF801FF000FF801FF0000F8001F000078000F00007 8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780 00F000078000F000078000F000078000F000078000F000078000F000078000F000078000 F000078000F000078000F000078000F000078001F000078001F000078001F000038002F0 0003C004F00001C008F800007030FF80001FC0FF80211F7E9E25>II E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%PaperSize: Letter %%EndSetup %%Page: 0 1 0 0 bop 568 981 a Fx(Users')22 b(Guide)f(to)h(NetSolv)n(e)694 1163 y(v)n(ersion)g(1.2.b)r(eta)376 1255 y Fw (http://www.cs.utk.edu/netsolve)-4 1437 y Fv(Henri)15 b(Casano)o(v)m(a)329 1419 y Fu(1)452 1437 y Fv(Jac)o(k)g(Dongarra)761 1419 y Fu(1)t(2)904 1437 y Fv(Alexander)g(Karaino)o(v)1348 1419 y Fu(3)1469 1437 y Fv(Jerzy)h(W)l(asniewski)1845 1419 y Fu(3)748 1561 y Fv(Octob)q(er)g(27,)h(1998)7 2596 y Ft(1)24 2612 y Fs(Departmen)o(t)d(of)f(Computer)g(Science,)h(Univ)o (ersit)o(y)h(of)e(T)m(ennessee,)g(TN)f(37996)7 2642 y Ft(2)24 2658 y Fs(Mathematical)j(Science)g(Section,)f(Oak)f(Ridge)h (National)h(Lab)q(oratory)m(,)f(Oak)f(Ridge,)h(TN)e(37831)7 2688 y Ft(3)24 2704 y Fs(Danish)j(Computing)f(Cen)o(tre)f(for)g (Researc)o(h)h(and)g(Education)h(\(UNI)p Fr(\017)p Fs(C\),)c(DTU,)i (Bldg.)18 b(304,)13 b(DK-2800)g(Lyngb)o(y)m(,)h(Denmark)p eop %%Page: 0 2 0 1 bop 839 897 a Fq(Abstract)-45 991 y Fp(The)18 b(NetSolv)o(e)f (system,)g(dev)o(elop)q(ed)h(at)f(the)g(Univ)o(ersit)o(y)g(of)g(T)m (ennessee,)i(is)e(a)g(clien)o(t-serv)o(er)i(application)c(designed)j (to)-45 1041 y(solv)o(e)10 b(computational)f(science)j(problems)e(o)o (v)o(er)g(a)g(net)o(w)o(ork.)18 b(This)10 b(do)q(cumen)o(t)g(is)h (organized)f(in)g(eigh)o(t)h(c)o(hapters.)18 b(The)11 b(\014rst)-45 1091 y(c)o(hapter)16 b(presen)o(ts)h(the)f(basic)f (concepts)i(of)d(NetSolv)o(e)h(and)g(giv)o(es)g(references)j(to)d(sev)o (eral)g(publications)g(concerning)g(the)-45 1140 y(pro)r(ject.)23 b(The)16 b(second)g(c)o(hapter)g(describ)q(es)h(the)f(sp)q (eci\014cation)g(of)f(NetSolv)o(e)g(problems.)21 b(The)16 b(third)f(c)o(hapter)h(describ)q(es)-45 1190 y(ho)o(w)f(to)g(do)o (wnload,)f(install)g(and)h(test)h(the)g(NetSolv)o(e)g(soft)o(w)o(are.) 22 b(The)16 b(fourth)f(c)o(hapter)h(describ)q(es)i(the)d(NetSolv)o(e)h (clien)o(t)-45 1240 y(in)o(terfaces)i(that)g(are)f(pro)o(vided)h(with)f (the)g(pac)o(k)n(age)g(\(Matlab,)g(Mathematica,)g(Ja)o(v)n(a,)g(C)g (and)g(F)m(ortran)g(APIs)h(and)f(the)-45 1290 y(Ja)o(v)n(a)h(GUI\).)g (The)h(\014fth)f(c)o(hapter)i(describ)q(es)g(a)f(new)g(feature)g(of)f (NetSolv)o(e:)27 b(request)20 b(farming.)30 b(The)19 b(sixth)g(c)o(hapters)-45 1340 y(giv)o(es)d(details)g(ab)q(out)g(the)h (agen)o(t/serv)o(er)g(side)f(of)g(NetSolv)o(e,)g(esp)q(ecially)h(ho)o (w)e(to)h(customize)g(a)g(NetSolv)o(e)g(serv)o(er.)27 b(The)-45 1389 y(sev)o(en)o(th)12 b(and)f(last)g(c)o(hapter)h(describ)q (es)i(ho)o(w)c(NetSolv)o(e)i(handles)f Fo(user-pr)n(ovide)n(d)h (functions)p Fp(.)18 b(Finally)m(,)9 b(complete)h(reference)-45 1439 y(man)o(uals)i(as)i(w)o(ell)f(as)h(complete)f(API)h(examples)f (are)i(found)e(in)h(app)q(endices.)p eop %%Page: 1 3 1 2 bop -45 530 a Fn(Con)m(ten)m(ts)-45 791 y Fq(1)38 b(The)16 b(NetSolv)o(e)e(System)1411 b(4)17 843 y Fp(1.1)42 b(In)o(tro)q(duction)13 b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) 66 b(4)17 896 y(1.2)42 b(Ov)o(erview)14 b(of)f(the)i(NetSolv)o(e)f (System)f(Arc)o(hitecture)42 b(.)20 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)66 b(4)-45 991 y Fq(2)38 b(NetSolv)o(e)14 b(Problem)g(Sp)q(eci\014cation) 1200 b(7)17 1043 y Fp(2.1)42 b(Ob)r(ject)15 b(and)f(Data)f(t)o(yp)q(e) 34 b(.)20 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)66 b(7)17 1096 y(2.2)42 b(Relev)n(ance)14 b(to)g(the)g(di\013eren)o(t)h(user)g(In)o(terfaces)h(.)21 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)66 b(7)17 1149 y(2.3)42 b(Problems)13 b(that)h(can)g(b)q(e)g(solv)o(ed)g(with)g (NetSolv)o(e)36 b(.)20 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)66 b(8)-45 1243 y Fq(3)38 b(Do)o(wnloading,)13 b(Installing)o(,)h(and)h(T) l(esting)f(the)h(Soft)o(w)o(are)814 b(9)17 1296 y Fp(3.1)42 b(Do)o(wnloading)34 b(.)20 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)66 b(9)17 1349 y(3.2)42 b(Setting)14 b(the)g(NetSolv)o(e)g(Ro)q(ot)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)66 b(9)17 1402 y(3.3)42 b(Setting)14 b(the)g(Arc)o (hitecture)28 b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)66 b(9)17 1455 y(3.4)42 b(Compiling)18 b(.)i(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(10)113 1507 y(3.4.1)h(Customizing)12 b(the)i(Compilation)21 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(10)113 1560 y(3.4.2)h(T)o(ypical)12 b(Compiling)26 b(.)20 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)45 b(11)17 1613 y(3.5)d(T)m(esting)13 b(the)i(Soft)o(w)o(are)27 b(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(12)113 1666 y(3.5.1)h(Agen)o(t-Serv)o(er-Clien)o(t)14 b(T)m(est)f(.)20 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)45 b(12)113 1719 y(3.5.2)h(Clien)o(t)13 b(T)m(est)36 b(.)20 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(12)-45 1813 y Fq(4)38 b(Pro)o(vided)13 b(NetSolv)o(e)i(Clien)o(t)e(In)o(terfaces)1085 b(13)17 1866 y Fp(4.1)42 b(Getting)13 b(Started)19 b(.)i(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)45 b(13)113 1919 y(4.1.1)h(Setting)14 b(an)f(Agen)o(t)h(Name)34 b(.)20 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(13)17 1971 y(4.2)d(Matlab)13 b(In)o(terface)36 b(.)20 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(13)113 2024 y(4.2.1)h(In)o(tro)q(duction)41 b(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)45 b(13)113 2077 y(4.2.2)h(What)13 b(to)h(Do)f(First)g(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(14)113 2130 y(4.2.3)h(Calling)12 b Fm(netsolve\(\))f Fp(to)j(p)q(erform)f (computation)37 b(.)21 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(15)113 2183 y(4.2.4)h(Calling)12 b Fm(netsolve)p 568 2183 14 2 v 14 w(nb\(\))41 b Fp(.)20 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)45 b(16)113 2235 y(4.2.5)h(What)13 b(Can)h(Go)f(W)m(rong?)18 b(.)i(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(18)113 2288 y(4.2.6)h(Catc)o(hing)13 b(NetSolv)o(e)h(errors)41 b(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)45 b(18)113 2341 y(4.2.7)h(Demo)32 b(.)20 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(19)17 2394 y(4.3)d(C)14 b(and)f(F)m(ortran)h(In)o(terfaces)k(.)i(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(19)113 2447 y(4.3.1)h(In)o(tro)q(duction)41 b(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)45 b(19)113 2499 y(4.3.2)h(What)13 b(Calling)f(Sequence)k(?)36 b(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(19)113 2552 y(4.3.3)h(Blo)q(c)o(king)13 b(Call)22 b(.)f(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(21)113 2605 y(4.3.4)h(Non)o(blo)q (c)o(king)12 b(Call)20 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(22)113 2658 y(4.3.5)h(Catc)o(hing)13 b(errors)22 b(.)e(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(22)920 2828 y(1)p eop %%Page: 2 4 2 3 bop 113 195 a Fp(4.3.6)46 b(Ro)o(w-)12 b(or)i(column-ma)r(jor)i(.)k (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(23)113 248 y(4.3.7)h(Limitations)11 b(of)i(the)i(F)m(ortran)e(in)o (terface)43 b(.)20 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(23)113 301 y(4.3.8)h(Built-in)13 b(examples)g(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)45 b(23)17 354 y(4.4)d(Mathematica)12 b(In)o(terface)25 b(.)20 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)g(.)h(.)45 b(23)113 406 y(4.4.1)h(In)o(tro)q(duction)41 b(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(23)113 459 y(4.4.2)h(What)13 b(to)h(do)f(\014rst)38 b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(23)113 512 y(4.4.3)h(Blo)q(c)o(king)13 b(call)g(to)h(NetSolv)o(e)36 b(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(26)113 565 y(4.4.4)h(Non)o(blo)q(c)o(king)12 b(Call)h(to)h(NetSolv)o (e)22 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(28)113 618 y(4.4.5)h(Catc)o(hing)13 b(Errors)44 b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)45 b(29)17 670 y(4.5)d(Ja)o(v)n(a)13 b(API)39 b(.)20 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(30)17 723 y(4.6)d(Ja)o(v)n(a)13 b(GUI)34 b(.)20 b(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)g(.)h(.)45 b(30)-45 818 y Fq(5)38 b(NetSolv)o(e)14 b(Request)h(F)l(arming)1278 b(31)17 870 y Fp(5.1)42 b(Ho)o(w)13 b(to)h(call)f(farming)38 b(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(31)113 923 y(5.1.1)h Fm(ns)p 293 923 14 2 v 15 w(int\(\))35 b Fp(.)20 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(31)113 976 y(5.1.2)h Fm(ns)p 293 976 V 15 w(int)p 374 976 V 15 w(array\(\))39 b Fp(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)45 b(32)113 1029 y(5.1.3)h Fm(ns)p 293 1029 V 15 w(ptr)p 374 1029 V 15 w(array\(\))39 b Fp(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)45 b(32)17 1082 y(5.2)d(An)14 b(example)22 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(32)17 1134 y(5.3)d(Catc)o(hing)13 b(errors)25 b(.)c(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)45 b(33)17 1187 y(5.4)d(Curren)o(t)15 b(Implemen)o(tation)10 b(and)k(F)m(uture)h(Impro)o(v)o(emen)o(ts)22 b(.)e(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) 45 b(33)-45 1282 y Fq(6)38 b(The)16 b(NetSolv)o(e)e(Agen)o(t)g(and)i (Serv)o(er)1170 b(34)17 1334 y Fp(6.1)42 b(The)14 b(Agen)o(t)h(.)20 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(34)17 1387 y(6.2)d(The)14 b(Serv)o(er)43 b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)45 b(34)113 1440 y(6.2.1)h(Starting)13 b(a)h(Serv)o(er)25 b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)45 b(34)113 1493 y(6.2.2)h(The)14 b(Serv)o(er)h(Con\014guration)e(File)i(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(35)113 1546 y(6.2.3)h(Customizing)12 b(the)i(Serv)o(er)39 b(.)20 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)45 b(36)17 1598 y(6.3)d(Expanding)13 b(the)i(Serv)o(er)41 b(.)20 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(36)113 1651 y(6.3.1)h(Mnemonics)31 b(.)20 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(36)113 1704 y(6.3.2)h(Sections)14 b(of)g(a)f(Problem)g(Description)39 b(.)20 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(37)113 1757 y(6.3.3)h(Calling)12 b(Sequence)27 b(.)20 b(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(38)113 1810 y(6.3.4)h(A)14 b(Simple)e(Example)24 b(.)c(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(40)113 1862 y(6.3.5)h(Ja)o(v)n(a)13 b(Applet)18 b(.)i(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)45 b(42)17 1915 y(6.4)d(NetSolv)o(e)14 b(Managemen)o(t)f(T)m(o)q (ols)e(.)21 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)45 b(42)113 1968 y(6.4.1)h Fm(NS)p 293 1968 V 15 w(conf)24 b Fp(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(42)113 2021 y(6.4.2)h Fm(NS)p 293 2021 V 15 w(problems)33 b Fp(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(42)113 2074 y(6.4.3)h Fm(NS)p 293 2074 V 15 w(probdesc)33 b Fp(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(43)113 2127 y(6.4.4)h Fm(NS)p 293 2127 V 15 w(killagent)11 b Fp(.)21 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(43)113 2179 y(6.4.5)h Fm(NS)p 293 2179 V 15 w(killserver)22 b Fp(.)e(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(43)113 2232 y(6.4.6)h Fm(NS)p 293 2232 V 15 w(killall)23 b Fp(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(44)-45 2326 y Fq(7)38 b(The)16 b(User-Suppl)o(i)o(ed)d(F)l(unction)g(F)l(eature)1075 b(45)17 2379 y Fp(7.1)42 b(Motiv)n(ation)e(.)20 b(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)45 b(45)17 2432 y(7.2)d(Solution)24 b(.)d(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(45)17 2485 y(7.3)d(F)m(or)13 b(the)i(Clien)o(t)h(.)k(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)45 b(45)113 2538 y(7.3.1)h(Determining)12 b(the)i(F)m(ormat)e(of)i(the)g(F)m(unction)g(to)f(Supply)21 b(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)45 b(45)113 2591 y(7.3.2)h(F)m(rom)12 b(Matlab,)g (Mathematica,)g(C)i(and)g(F)m(ortran)27 b(.)20 b(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(46)113 2643 y(7.3.3)h(F)m(rom)12 b(the)i(NetSolv)o(e)g(Ja)o(v)n(a)f (API)36 b(.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(46)113 2696 y(7.3.4)h(F)m(rom)12 b(the)i(Ja)o(v)n(a)f(GUI)e(.)20 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) g(.)h(.)45 b(46)920 2828 y(2)p eop %%Page: 3 5 3 4 bop 17 195 a Fp(7.4)42 b(F)m(or)13 b(the)i(Serv)o(er)f(.)20 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(46)17 248 y(7.5)d(Conclusion)f (.)20 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 b(47)-45 342 y Fq(A)26 b(Matlab)15 b(Reference)f(Man)o(ual)1295 b(48)-45 437 y(B)28 b(C)17 b(Reference)d(Man)o(ual)1410 b(50)-45 531 y(C)28 b(F)l(ortran)15 b(Reference)f(Man)o(ual)1287 b(52)-45 625 y(D)25 b(Error)15 b(Co)q(des)h(for)f(C)i(and)e(F)l(ortran) 1191 b(54)-45 720 y(E)31 b(NetSolv)o(e)14 b(Ja)o(v)m(a)j(API)e (Reference)1219 b(56)-45 814 y(F)32 b(Complete)14 b(C)j(Example)1391 b(57)-45 908 y(G)24 b(Complete)14 b(F)l(ortran)h(Example)1268 b(59)-45 1002 y(H)25 b(Complete)14 b(Ja)o(v)m(a)j(Example)1333 b(61)920 2828 y Fp(3)p eop %%Page: 4 6 4 5 bop -45 509 a Fl(Chapter)31 b(1)-45 720 y Fn(The)38 b(NetSolv)m(e)h(System)-45 964 y Fk(1.1)66 b(In)n(tro)r(duction)-45 1058 y Fp(The)18 b(e\016cien)o(t)g(solution)e(of)h(large)g(problems)f (is)h(an)g(ongoing)f(thread)i(of)f(researc)o(h)i(in)e(scien)o(ti\014c)h (computing.)27 b(V)m(arious)-45 1107 y(mec)o(hanisms)17 b(ha)o(v)o(e)h(b)q(een)h(dev)o(elop)q(ed)h(to)e(p)q(erform)g (computations)f(across)i(div)o(erse)h(platforms.)30 b(The)18 b(most)g(common)-45 1157 y(mec)o(hanism)c(in)o(v)o(olv)o(es)g(soft)o(w) o(are)i(libraries.)24 b(Unfortunately)m(,)15 b(the)i(use)f(of)f(suc)o (h)i(libraries)f(presen)o(ts)h(sev)o(eral)g(di\016culties.)-45 1207 y(Some)g(soft)o(w)o(are)h(libraries)g(are)h(highly)e(optimized)g (for)h(only)f(certain)i(platforms)d(and)i(do)g(not)h(pro)o(vide)f(a)g (con)o(v)o(enien)o(t)-45 1257 y(in)o(terface)12 b(to)g(other)g (computer)g(systems.)17 b(Other)c(libraries)f(demand)f(considerable)h (programming)c(e\013ort)13 b(from)d(the)i(user.)-45 1307 y(While)18 b(sev)o(eral)i(to)q(ols)f(ha)o(v)o(e)f(b)q(een)j(dev)o(elop) q(ed)e(to)g(alleviate)f(these)j(di\016culties,)f(suc)o(h)f(to)q(ols)g (themselv)o(es)g(are)h(usually)-45 1357 y(a)o(v)n(ailable)15 b(on)j(only)f(a)g(limited)f(n)o(um)o(b)q(er)h(of)g(computer)g(systems)h (and)g(are)g(rarely)g(freely)f(distributed.)31 b(Matlab)17 b([1)o(])g(or)-45 1406 y(Mathematica)c([2)o(])g(are)h(examples)f(of)h (suc)o(h)g(a)g(to)q(ols.)-45 1459 y(These)19 b(considerations)g(motiv)n (ated)d(the)j(establishmen)o(t)e(of)h(the)h(NetSolv)o(e)f(pro)r(ject.) 32 b(The)18 b(basic)h(philosoph)o(y)e(b)q(ehind)-45 1509 y(NetSolv)o(e)11 b(is)f(to)g(pro)o(vide)g(a)h(uniform,)d(p)q(ortable)j (and)f(e\016cien)o(t)h(w)o(a)o(y)e(to)i(access)h(computational)c (resources)13 b(o)o(v)o(er)d(a)g(net)o(w)o(ork.)-45 1559 y(NetSolv)o(e)i(is)g(a)g(clien)o(t-serv)o(er)i(application,)c(and)i(a)g (n)o(um)o(b)q(er)g(of)f(di\013eren)o(t)i(clien)o(t)f(in)o(terfaces)h (ha)o(v)o(e)f(b)q(een)i(dev)o(elop)q(ed)e(to)g(the)-45 1609 y(NetSolv)o(e)i(soft)o(w)o(are.)19 b(Users)d(of)e(C,)f(F)m (ortran,)h(Matlab,)f(Mathematica,)f(Ja)o(v)n(a)i(or)g(the)g(W)m(orld)f (Wide)h(W)m(eb)g(can)g(easily)g(use)-45 1658 y(NetSolv)o(e.)-45 1799 y Fk(1.2)66 b(Ov)n(erview)23 b(of)f(the)g(NetSolv)n(e)h(System)g (Arc)n(hitecture)-45 1893 y Fp(The)c(NetSolv)o(e)g(system)f(is)g(a)g (set)i(of)d(lo)q(osely)h(connected)j(mac)o(hines.)30 b(By)19 b Fo(lo)n(osely)f Fp(connected,)j(w)o(e)e(mean)e(that)i(these) -45 1942 y(mac)o(hines)14 b(can)h(b)q(e)g(on)g(the)g(same)f(lo)q(cal)g (net)o(w)o(ork)h(or)f(on)h(an)f(in)o(ternational)g(net)o(w)o(ork,)h (and)f(administrated)f(b)o(y)i(di\013eren)o(t)-45 1992 y(institutions)g(and)g(organizations.)22 b(Moreo)o(v)o(er,)16 b(the)g(NetSolv)o(e)g(system)f(can)h(b)q(e)g(running)f(in)g(a)g Fo(heter)n(o)n(gene)n(ous)h Fp(en)o(viron-)-45 2042 y(men)o(t,)e(whic)o (h)i(means)e(that)i(mac)o(hines)f(with)g(di\013eren)o(t)h(in)o(ternal)f (data)g(represen)o(tations)j(can)e(b)q(e)g(in)f(the)h(system)f(at)g (the)-45 2092 y(same)e(time.)-45 2145 y(Figure)i(1.1)e(sho)o(ws)i(the)h (global)d(conceptual)i(picture)h(of)e(the)h(NetSolv)o(e)g(system.)20 b(In)15 b(this)g(\014gure,)g(w)o(e)g(can)f(see)i(the)g(three)-45 2194 y(ma)r(jor)c(comp)q(onen)o(ts)i(of)f(the)i(system:)17 2289 y Fj(\017)21 b Fp(The)14 b(NetSolv)o(e)g(clien)o(t,)17 2372 y Fj(\017)21 b Fp(The)14 b(NetSolv)o(e)g(agen)o(t,)17 2455 y Fj(\017)21 b Fp(The)14 b(NetSolv)o(e)g(computational)e (resources)k(\(or)e(serv)o(ers\).)-45 2549 y(Conceptually)m(,)i (solving)f(a)h(problem)f(with)h(NetSolv)o(e)h(is)f(done)h(in)f(four)g (steps:)25 b(\(i\))16 b(the)h(clien)o(t)f(sends)i(a)e(request)i(to)e (the)-45 2599 y(agen)o(t;)f(\(ii\))g(the)g(agen)o(t)g(c)o(ho)q(oses)i (the)e(\\b)q(est")h(NetSolv)o(e)g(resource)h(according)e(to)g(the)g (size)h(and)f(nature)h(of)f(the)g(problem)-45 2649 y(to)f(b)q(e)g(solv) o(ed;)g(\(iii\))e(the)j(problem)d(is)i(solv)o(ed)g(on)f(the)i(c)o (hosen)g(serv)o(er;)g(\(iv\))e(and)h(the)g(result)h(is)f(sen)o(t)h(bac) o(k)e(to)h(the)h(clien)o(t.)920 2828 y(4)p eop %%Page: 5 7 5 6 bop 240 154 a 21786947 17524246 7367557 14537768 35061678 46441922 startTexFig 240 154 a %%BeginDocument: conceptual.ps /arrowHeight 10 def /arrowWidth 5 def /IdrawDict 51 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright /parenleft/parenright/asterisk/plus/comma/minus/period/slash /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Helvetica-Bold reencodeISO def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def %I Idraw 10 Grid 8 8 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.799705 0 0 0.799705 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 7 326 617 342 649 382 673 438 633 446 569 374 561 334 593 7 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 8 518 617 534 657 582 673 630 641 630 585 622 577 574 561 526 593 8 CBSpl End Begin %I CBSpl %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 8 438 521 510 529 550 513 558 449 494 433 438 449 430 489 430 489 8 CBSpl End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 438 601 526 633 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 582 569 526 521 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 462 521 414 569 Line %I 1 End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 334 601 318 593 Line %I 1 End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 -70 119 ] concat %I 302 577 318 593 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 358 657 350 673 Line %I 1 End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 -70 119 ] concat %I 334 673 350 689 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 566 665 558 681 Line %I 1 End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Orange 1 0.647059 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 -70 119 ] concat %I 542 681 558 697 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 614 649 630 657 Line %I 1 End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Brown 0.647059 0.164706 0.164706 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 -70 119 ] concat %I 630 657 646 673 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 614 577 622 561 Line %I 1 End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 -70 119 ] concat %I 622 545 638 561 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 550 489 566 497 Line %I 1 End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Orange 1 0.647059 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 -70 119 ] concat %I 566 497 582 513 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 470 441 462 425 Line %I 1 End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Red 1 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 -70 119 ] concat %I 446 409 462 425 Rect End Begin %I Line %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 430 489 414 481 Line %I 1 End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Orange 1 0.647059 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 0 0 1 -70 119 ] concat %I 398 465 414 481 Rect End Begin %I CBSpl %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 11 454 377 342 409 238 513 214 649 278 737 422 761 598 753 702 689 710 569 662 433 566 393 11 CBSpl End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f fixed Helvetica-Bold 14 SetF %I t [ 1.22936 0 0 1.22936 206.829 372.147 ] concat %I [ (NetSolve Client) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f fixed Helvetica-Bold 14 SetF %I t [ 1.24771 0 0 1.24771 508.047 362.539 ] concat %I [ (NetSolve Agent) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f fixed Helvetica-Bold 14 SetF %I t [ 1.17647 0 0 1.17647 360.176 846.782 ] concat %I [ (NetSolve System) ] Text End Begin %I CBSpl %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 7 558 273 638 305 718 297 734 241 726 185 606 161 534 225 7 CBSpl End Begin %I BSpl %I b 65535 3 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -70 119 ] concat %I 6 606 289 582 329 582 337 614 321 622 321 574 401 6 BSpl %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f fixed Helvetica-Bold 14 SetF %I t [ 1.59323 0 0 1.59323 383.094 327.966 ] concat %I [ (Request) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f fixed Helvetica-Bold 14 SetF %I t [ 1.6 0 0 1.6 553.6 488 ] concat %I [ (Choice) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f fixed Helvetica-Bold 14 SetF %I t [ 1.70732 0 0 1.70732 178.207 496.537 ] concat %I [ (Reply) ] Text End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg Blue 0 0 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 162 220 ] concat %I 102 572 118 588 Rect End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg Blue 0 0 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 274 -43.9999 ] concat %I 102 572 118 588 Rect End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg Blue 0 0 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 130 124 ] concat %I 102 572 118 588 Rect End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg Blue 0 0 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 226 12 ] concat %I 102 572 118 588 Rect End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg Blue 0 0 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 394 44 ] concat %I 102 572 118 588 Rect End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg Blue 0 0 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 450 92 ] concat %I 102 572 118 588 Rect End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg Blue 0 0 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 458 204 ] concat %I 102 572 118 588 Rect End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg Blue 0 0 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 370 228 ] concat %I 102 572 118 588 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f fixed Helvetica-Bold 14 SetF %I t [ 1 0 0 1 225 672 ] concat %I [ (Resource) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f fixed Helvetica-Bold 14 SetF %I t [ 1 0 0 1 225 688 ] concat %I [ (NetSolve) ] Text End Begin %I CBSpl %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 80 139 ] concat %I 8 136 293 208 293 256 253 272 197 240 157 192 149 136 173 104 229 8 CBSpl End Begin %I BSpl %I b 65535 3 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 56 107 ] concat %I 6 288 245 368 277 376 277 344 245 336 237 424 261 6 BSpl %I 1 End Begin %I BSpl %I b 65535 3 0 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 56 107 ] concat %I 6 256 413 232 357 224 349 224 389 216 389 200 325 6 BSpl %I 1 End End %I eop showpage end %%EndDocument endTexFig 628 1355 a Fp(Figure)14 b(1.1:)j(The)d(NetSolv)o(e)g(System)-45 1488 y(The)g(system)g(is)f(fault)g(toleran)o(t,)g(meaning)f(that)i (fault-reco)o(v)o(ery)f(is)h(transparen)o(t)h(to)e(the)i(end)f(user)h (and)e(that)h(an)f(answ)o(er)-45 1537 y(to)e(a)g(request)h(is)f (returned)i(unless)f(ev)o(ery)f(resource)i(in)e(the)h(system)e(has)i (failed)e(or)h(is)f(una)o(v)n(ailable.)15 b(The)d(NetSolv)o(e)f(agen)o (t)g(is)-45 1587 y(the)h(k)o(ey)g(to)g(the)h(load-balancing)c(strategy) m(,)j(and)g(details)g(ab)q(out)f(its)h(design)g(can)g(b)q(e)h(found)e (in)h([3)o(].)17 b(Recen)o(t)12 b(dev)o(elopmen)o(ts)-45 1637 y(and)i(applications)e(of)h(NetSolv)o(e)h(are)h(describ)q(ed)g(in) e([4].)k(Lastly)m(,)c(tec)o(hnical)g(details)h(ab)q(out)g(NetSolv)o (e's)f(implemen)o(tation)-45 1687 y(are)h(to)g(b)q(e)h(found)e(in)g ([5].)-45 1740 y(Figure)h(1.2)f(sho)o(ws)h(the)h(new)f(soft)o(w)o(are)g (hierarc)o(h)o(y)g(of)f(NetSolv)o(e)i(v)o(ersion)f(1.2.)920 2828 y(5)p eop %%Page: 6 8 6 7 bop -264 346 a 37692948 32627753 1512980 11643371 39205928 44271124 startTexFig -264 346 a %%BeginDocument: newsoftwared.ps /arrowHeight 10 def /arrowWidth 5 def /IdrawDict 52 dict def IdrawDict begin /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding ISOLatin1Encoding def currentdict end definefont } def /ISOLatin1Encoding [ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright /parenleft/parenright/asterisk/plus/comma/minus/period/slash /zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon /less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N /O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright /asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m /n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve /dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut /ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar /section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot /hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior /acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown /Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute /Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave /iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex /otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis ] def /Helvetica-Bold reencodeISO def /Helvetica reencodeISO def /none null def /numGraphicParameters 17 def /stringLimit 65535 def /Begin { save numGraphicParameters dict begin } def /End { end restore } def /SetB { dup type /nulltype eq { pop false /brushRightArrow idef false /brushLeftArrow idef true /brushNone idef } { /brushDashOffset idef /brushDashArray idef 0 ne /brushRightArrow idef 0 ne /brushLeftArrow idef /brushWidth idef false /brushNone idef } ifelse } def /SetCFg { /fgblue idef /fggreen idef /fgred idef } def /SetCBg { /bgblue idef /bggreen idef /bgred idef } def /SetF { /printSize idef /printFont idef } def /SetP { dup type /nulltype eq { pop true /patternNone idef } { dup -1 eq { /patternGrayLevel idef /patternString idef } { /patternGrayLevel idef } ifelse false /patternNone idef } ifelse } def /BSpl { 0 begin storexyn newpath n 1 gt { 0 0 0 0 0 0 1 1 true subspline n 2 gt { 0 0 0 0 1 1 2 2 false subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline } if n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Circ { newpath 0 360 arc patternNone not { ifill } if brushNone not { istroke } if } def /CBSpl { 0 begin dup 2 gt { storexyn newpath n 1 sub dup 0 0 1 1 2 2 true subspline 1 1 n 3 sub { /i exch def i 1 sub dup i dup i 1 add dup i 2 add dup false subspline } for n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline n 2 sub dup n 1 sub dup 0 0 1 1 false subspline patternNone not { ifill } if brushNone not { istroke } if } { Poly } ifelse end } dup 0 4 dict put def /Elli { 0 begin newpath 4 2 roll translate scale 0 0 1 0 360 arc patternNone not { ifill } if brushNone not { istroke } if end } dup 0 1 dict put def /Line { 0 begin 2 storexyn newpath x 0 get y 0 get moveto x 1 get y 1 get lineto brushNone not { istroke } if 0 0 1 1 leftarrow 0 0 1 1 rightarrow end } dup 0 4 dict put def /MLine { 0 begin storexyn newpath n 1 gt { x 0 get y 0 get moveto 1 1 n 1 sub { /i exch def x i get y i get lineto } for patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if brushNone not { istroke } if 0 0 1 1 leftarrow n 2 sub dup n 1 sub dup rightarrow } if end } dup 0 4 dict put def /Poly { 3 1 roll newpath moveto -1 add { lineto } repeat closepath patternNone not { ifill } if brushNone not { istroke } if } def /Rect { 0 begin /t exch def /r exch def /b exch def /l exch def newpath l b moveto l t lineto r t lineto r b lineto closepath patternNone not { ifill } if brushNone not { istroke } if end } dup 0 4 dict put def /Text { ishow } def /idef { dup where { pop pop pop } { exch def } ifelse } def /ifill { 0 begin gsave patternGrayLevel -1 ne { fgred bgred fgred sub patternGrayLevel mul add fggreen bggreen fggreen sub patternGrayLevel mul add fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor eofill } { eoclip originalCTM setmatrix pathbbox /t exch def /r exch def /b exch def /l exch def /w r l sub ceiling cvi def /h t b sub ceiling cvi def /imageByteWidth w 8 div ceiling cvi def /imageHeight h def bgred bggreen bgblue setrgbcolor eofill fgred fggreen fgblue setrgbcolor w 0 gt h 0 gt and { l b translate w h scale w h true [w 0 0 h neg 0 h] { patternproc } imagemask } if } ifelse grestore end } dup 0 8 dict put def /istroke { gsave brushDashOffset -1 eq { [] 0 setdash 1 setgray } { brushDashArray brushDashOffset setdash fgred fggreen fgblue setrgbcolor } ifelse brushWidth setlinewidth originalCTM setmatrix stroke grestore } def /ishow { 0 begin gsave fgred fggreen fgblue setrgbcolor /fontDict printFont printSize scalefont dup setfont def /descender fontDict begin 0 [FontBBox] 1 get FontMatrix end transform exch pop def /vertoffset 1 printSize sub descender sub def { 0 vertoffset moveto show /vertoffset vertoffset printSize sub def } forall grestore end } dup 0 3 dict put def /patternproc { 0 begin /patternByteLength patternString length def /patternHeight patternByteLength 8 mul sqrt cvi def /patternWidth patternHeight def /patternByteWidth patternWidth 8 idiv def /imageByteMaxLength imageByteWidth imageHeight mul stringLimit patternByteWidth sub min def /imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv patternHeight mul patternHeight max def /imageHeight imageHeight imageMaxHeight sub store /imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def 0 1 imageMaxHeight 1 sub { /y exch def /patternRow y patternByteWidth mul patternByteLength mod def /patternRowString patternString patternRow patternByteWidth getinterval def /imageRow y imageByteWidth mul def 0 patternByteWidth imageByteWidth 1 sub { /x exch def imageString imageRow x add patternRowString putinterval } for } for imageString end } dup 0 12 dict put def /min { dup 3 2 roll dup 4 3 roll lt { exch } if pop } def /max { dup 3 2 roll dup 4 3 roll gt { exch } if pop } def /midpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 x1 add 2 div y0 y1 add 2 div end } dup 0 4 dict put def /thirdpoint { 0 begin /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 2 mul x1 add 3 div y0 2 mul y1 add 3 div end } dup 0 4 dict put def /subspline { 0 begin /movetoNeeded exch def y exch get /y3 exch def x exch get /x3 exch def y exch get /y2 exch def x exch get /x2 exch def y exch get /y1 exch def x exch get /x1 exch def y exch get /y0 exch def x exch get /x0 exch def x1 y1 x2 y2 thirdpoint /p1y exch def /p1x exch def x2 y2 x1 y1 thirdpoint /p2y exch def /p2x exch def x1 y1 x0 y0 thirdpoint p1x p1y midpoint /p0y exch def /p0x exch def x2 y2 x3 y3 thirdpoint p2x p2y midpoint /p3y exch def /p3x exch def movetoNeeded { p0x p0y moveto } if p1x p1y p2x p2y p3x p3y curveto end } dup 0 17 dict put def /storexyn { /n exch def /y n array def /x n array def n 1 sub -1 0 { /i exch def y i 3 2 roll put x i 3 2 roll put } for } def /arrowhead { 0 begin transform originalCTM itransform /taily exch def /tailx exch def transform originalCTM itransform /tipy exch def /tipx exch def /dy tipy taily sub def /dx tipx tailx sub def /angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def gsave originalCTM setmatrix tipx tipy translate angle rotate newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto patternNone not { originalCTM setmatrix /padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul arrowWidth div def /padtail brushWidth 2 div def tipx tipy translate angle rotate padtip 0 translate arrowHeight padtip add padtail add arrowHeight div dup scale arrowheadpath ifill } if brushNone not { originalCTM setmatrix tipx tipy translate angle rotate arrowheadpath istroke } if grestore end } dup 0 9 dict put def /arrowheadpath { newpath arrowHeight neg arrowWidth 2 div moveto 0 0 lineto arrowHeight neg arrowWidth 2 div neg lineto } def /leftarrow { 0 begin y exch get /taily exch def x exch get /tailx exch def y exch get /tipy exch def x exch get /tipx exch def brushLeftArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def /rightarrow { 0 begin y exch get /tipy exch def x exch get /tipx exch def y exch get /taily exch def x exch get /tailx exch def brushRightArrow { tipx tipy tailx taily arrowhead } if end } dup 0 4 dict put def %I Idraw 10 Grid 8 8 Begin %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 0.799705 0 0 0.799705 0 0 ] concat /originalCTM matrix currentmatrix def Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 240 -56.0001 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 320 645 ] concat %I [ (Core Functions) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 336 685 ] concat %I [ (Client core) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-120-* Helvetica 12 SetF %I t [ 1 0 0 1 416 725 ] concat %I [ (Mathematica) ] Text End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 110 229 ] concat %I 4 298 475 386 475 386 507 298 507 4 Poly End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-120-* Helvetica 12 SetF %I t [ 1 0 0 1 360 723 ] concat %I [ (Matlab) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -74 229 ] concat %I 426 475 474 507 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-120-* Helvetica 12 SetF %I t [ 1 0 0 1 328 723 ] concat %I [ (C) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -114 253 ] concat %I 434 451 458 483 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-medium-r-*-120-* Helvetica 12 SetF %I t [ 1 0 0 1 264 723 ] concat %I [ (Fortran) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -186 293 ] concat %I 442 411 498 443 Rect End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 62 181 ] concat %I 4 194 483 434 483 434 515 194 515 4 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 62 181 ] concat %I 4 194 443 434 443 434 475 194 475 4 Poly End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 208 687 ] concat %I [ (Java) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 62 181 ] concat %I 138 443 186 555 Rect End Begin %I Rect %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 62 181 ] concat %I 130 435 442 563 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 304 765 ] concat %I [ (NetSolve Client) ] Text End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I p u %I t [ 1 0 0 1 -344 -48 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 536 413 ] concat %I [ (Server daemon) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 512 349 ] concat %I [ ( Core) (Functions) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 16 -64 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 592 373 ] concat %I [ (Numerical) ( Software) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 214 157 ] concat %I 370 179 458 227 Rect End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 608 373 ] concat %I [ ( Server) (Modules) ] Text End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 222 101 ] concat %I 4 370 235 458 235 458 283 370 283 4 Poly End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 222 101 ] concat %I 282 179 362 283 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 222 101 ] concat %I 282 291 458 323 Rect End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 536 453 ] concat %I [ (NetSolve Server) ] Text End Begin %I Poly %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -8 101 ] concat %I 6 504 331 696 331 696 227 600 227 600 171 504 171 6 Poly End End %I eop Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 24 0 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1.51724 0 0 1.51724 289.517 519.586 ] concat %I [ (Network) ] Text End Begin %I Elli %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 -16 157 ] concat %I 344 355 64 40 Elli End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 80 717 ] concat %I [ (NetSolve Agent) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 48 637 ] concat %I [ (Scheduler) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 144 637 ] concat %I [ (Data base) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 22 429 ] concat %I 18 187 106 219 Rect End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 22 429 ] concat %I 114 187 202 219 Rect End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t u Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 80 597 ] concat %I [ (Core Functions) ] Text End Begin %I Rect %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 22 429 ] concat %I 18 147 202 179 Rect End End %I eop Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -6.99998 358 ] concat %I 4 47 298 231 298 231 330 47 330 4 Poly End Begin %I Poly %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 0 0 1 -6.99998 358 ] concat %I 4 39 210 239 210 239 338 39 338 4 Poly End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 88 677 ] concat %I [ (Agent daemon) ] Text End Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 0 47.9999 ] concat Begin %I Pict %I b u %I cfg u %I cbg u %I f u %I p u %I t [ 1 0 0 1 -128 -88 ] concat Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 576 461 ] concat %I [ () ( NetSolve) (Code Generator) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 608 397 ] concat %I [ (Parser) ] Text End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 576 357 ] concat %I [ (Code Generator) ] Text End Begin %I Rect %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 -59 99 ] concat %I 627 237 755 269 Rect End Begin %I Poly %I b 65535 0 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 -59 99 ] concat %I 4 627 277 755 277 755 309 627 309 4 Poly End Begin %I Rect %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 -59 99 ] concat %I 619 229 763 317 Rect End End %I eop Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 624 325 ] concat %I [ ( Problem) (Description) ( Files) ] Text End Begin %I Poly %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 -0 -0 1 -59 99 ] concat %I 9 627 205 643 221 635 213 675 213 667 205 675 197 635 197 643 189 635 197 9 Poly End Begin %I Poly %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg %I p 0.5 SetP %I t [ 1 -0 -0 1 -59 99 ] concat %I 9 395 165 411 181 403 173 499 173 491 165 499 157 403 157 411 149 403 157 9 Poly End End %I eop Begin %I BSpl %I b 65535 2 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 -43 111 ] concat %I 3 179 465 251 401 331 401 3 BSpl %I 1 End Begin %I BSpl %I b 65535 2 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 -43 111 ] concat %I 3 611 457 547 409 459 401 3 BSpl %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 288 757 ] concat %I [ (Core Functions) ] Text End Begin %I BSpl %I b 65535 2 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 -43 111 ] concat %I 3 355 617 355 537 395 441 3 BSpl %I 1 End Begin %I BSpl %I b 65535 2 1 1 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 -43 111 ] concat %I 3 203 201 115 321 339 385 3 BSpl %I 1 End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 288 837 ] concat %I [ (NetSolve Tools) ] Text End Begin %I Poly %I b 65535 2 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 -43 111 ] concat %I 4 283 617 483 617 483 705 283 705 4 Poly End Begin %I Text %I cfg Black 0 0 0 SetCFg %I f *-helvetica-bold-r-*-140-* Helvetica-Bold 14 SetF %I t [ 1 0 0 1 272 797 ] concat %I [ (Client Core) ] Text End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 -43 111 ] concat %I 4 291 665 435 665 435 697 291 697 4 Poly End Begin %I Poly %I b 65535 1 0 0 [] 0 SetB %I cfg Black 0 0 0 SetCFg %I cbg White 1 1 1 SetCBg none SetP %I p n %I t [ 1 -0 -0 1 -43 111 ] concat %I 6 291 657 443 657 443 697 475 697 475 625 291 625 6 Poly End End %I eop showpage end %%EndDocument endTexFig 480 2504 a Fp(Figure)14 b(1.2:)j(NetSolv)o(e's)d(in)o(ternal)g(soft)o (w)o(are)g(hierarc)o(h)o(y)920 2828 y(6)p eop %%Page: 7 9 7 8 bop -45 509 a Fl(Chapter)31 b(2)-45 720 y Fn(NetSolv)m(e)39 b(Problem)f(Sp)s(eci\014cation)-45 964 y Fk(2.1)66 b(Ob)t(ject)21 b(and)i(Data)f(t)n(yp)r(e)-45 1058 y Fp(Solving)12 b(a)i(computational) d(problem)i(with)h(NetSolv)o(e)g(is)f(really)h(a)f(function)h(ev)n (aluation:)600 1140 y Fi(<)e(output)f(>)p Fp(=)p Fi(<)i(name)f(>)g Fp(\()p Fi(<)g(input)f(>)p Fp(\))-45 1223 y(where)17 1300 y Fj(\017)21 b Fi(<)12 b(name)g(>)i Fp(is)g(a)f(c)o(haracter)i (string)f(con)o(taining)f(the)i(name)d(of)i(the)g(problem,)17 1378 y Fj(\017)21 b Fi(<)12 b(inputs)f(>)k Fp(is)e(a)h(list)f(of)h (input)f(ob)r(jects,)17 1457 y Fj(\017)21 b Fi(<)12 b(outputs)f(>)j Fp(is)g(a)g(list)f(of)g(output)h(ob)r(jects.)-45 1534 y(An)g(ob)r(ject)g(is)g(itself)f(describ)q(ed)j(b)o(y)d(an)h Fo(obje)n(ct)h(typ)n(e)e Fp(and)h(a)f Fo(data)j(typ)n(e)p Fp(.)i(The)c(t)o(yp)q(es)g(a)o(v)n(ailable)e(in)h(the)h(curren)o(t)i(v) o(ersion)e(of)-45 1583 y(NetSolv)o(e)f(are)h(sho)o(wn)f(in)g(table)g (2.1.)k(Rather)c(than)g(giving)f(here)i(examples)f(for)f(eac)o(h)i(ob)r (ject)g(t)o(yp)q(e,)f(w)o(e)h(refer)g(the)g(reader)-45 1633 y(to)g(the)g(programs)f(in:)k Fm(NetSolve-1.2.x/src/E)o(xamp)o(le) 11 b Fp(and)j Fm(NetSolve-1.2.x/s)o(rc/T)o(estin)o(g)p Fp(.)-45 1854 y Fk(2.2)66 b(Relev)l(ance)23 b(to)f(the)h(di\013eren)n (t)h(user)f(In)n(terfaces)-45 1948 y Fp(In)16 b(the)h(previous)f (section,)h(w)o(e)f(describ)q(ed)i(the)f(input)f(and)g(output)g(of)g(a) f(NetSolv)o(e)i(problem)d(as)j(lists)f(of)f Fo(obje)n(cts)p Fp(.)25 b(The)-45 1998 y(Matlab,)16 b(Mathematica,)f(and)h(Ja)o(v)n(a)f (in)o(terfaces)i(to)f(NetSolv)o(e)h(can)f(manipulate)f(ob)r(jects)i (directly)f(and)h(it)e(is)h(therefore)-45 2048 y(v)o(ery)f(easy)f(to)g (call)g(NetSolv)o(e)g(from)f(there)i(in)o(terfaces)g(once)g(problem)e (descriptions)i(are)g(kno)o(wn.)j(F)m(rom)13 b(in)o(terfaces)i(that)-45 2098 y(are)f(not)g(ob)r(ject-orien)o(ted)h(\(C)f(and)g(F)m(ortran\),)f (it)h(is)g(necessary)h(to)f(use)h(a)f Fo(c)n(al)r(ling)g(se)n(quenc)n (e)h Fp(that)f(describ)q(es)i(the)e(ob)r(jects')-45 2147 y(features)e(individually)m(.)j(Let)c(us)h(illustrate)f(this)h(with)f (an)g(example.)k(Let)d(us)g(supp)q(ose)h(that)e(there)i(is)e(a)g (NetSolv)o(e)g(problem)-45 2197 y(named)f Fo(fo)n(o)h Fp(that)g(tak)o(es)h(an)f(in)o(teger)h(v)o(ector)g(in)e(input)h(and)g (return)i(the)f(sum)e(of)g(its)i(comp)q(onen)o(ts.)k(A)c(call)e(to)h (that)g(problem)-45 2247 y(from)h(the)j(Matlab)e(in)o(terface)h(w)o (ould)f(lo)q(ok)g(lik)o(e:)-45 2324 y Fm(x)22 b(=)f(rand\(10,1\))85 b(//)22 b(creates)e(a)i(random)e(vector)h(of)g(size)g(10)-45 2374 y(sum)g(=)h(netsolve\('foo',x)o(\))-45 2450 y Fp(where)15 b Fm(x)f Fp(is)f(the)i(input)f(v)o(ector.)k(A)c(call)f(from)g(the)h(C)g (in)o(terface)g(on)g(the)h(other)f(hand)g(is)g(more)e(complex:)-45 2527 y Fm(netsolve\('foo\(\)',)o(x,10,)o(&sum\))o(;)-45 2604 y Fp(Indeed,)i(the)g(call)e(to)h(the)h(C)f(in)o(terface)h(has)f (to)g(pass)h(the)f(size)h(of)f(the)g(v)o(ector)h(\(10)f(is)g(the)h (example\),)e(whereas)i(that)f(size)h(is)-45 2654 y(part)g(of)g(the)h (Matlab)f(v)o(ector)h(ob)r(ject.)20 b(It)14 b(is)h(also)e(clear)i(that) f(there)i(can)f(b)q(e)f(sev)o(eral)h(calling)e(sequences)k(from)c(the)i (C)f(\(or)-45 2704 y(F)m(ortran\))g(in)o(terface:)920 2828 y(7)p eop %%Page: 8 10 8 9 bop -45 155 1857 2 v -45 164 V -46 213 2 50 v -37 213 V -12 198 a Fp(Data)13 b(T)o(yp)q(e)p 549 213 V 519 w(Description)p 1063 213 V 481 w(Note)p 1803 213 V 1812 213 V -45 215 1857 2 v -46 265 2 50 v -37 265 V -12 250 a(NETSOL)-5 b(VE)p 214 250 13 2 v 17 w(I)p 549 265 2 50 v 499 w(In)o(teger)p 1063 265 V 1803 265 V 1812 265 V -46 315 V -37 315 V -12 300 a(NETSOL)g(VE)p 214 300 13 2 v 17 w(CHAR)p 549 315 2 50 v 365 w(Character)p 1063 315 V 1803 315 V 1812 315 V -46 364 V -37 364 V -12 350 a(NETSOL)g(VE)p 214 350 13 2 v 17 w(BYTE)p 549 364 2 50 v 417 w(Byte)p 1063 364 V 403 w(nev)o(er)14 b(XDR)g(enco)q(ded)p 1803 364 V 1812 364 V -46 414 V -37 414 V -12 399 a(NETSOL)-5 b(VE)p 214 399 13 2 v 17 w(FLO)o(A)m(T)p 549 414 2 50 v 255 w(Single)13 b(precision)h(real)p 1063 414 V 1803 414 V 1812 414 V -46 464 V -37 464 V -12 449 a(NETSOL)-5 b(VE)p 214 449 13 2 v 17 w(DOUBLE)p 549 464 2 50 v 209 w(Double)13 b(precision)h(real)p 1063 464 V 1803 464 V 1812 464 V -46 514 V -37 514 V -12 499 a(NETSOL)-5 b(VE)p 214 499 13 2 v 17 w(SCOMPLEX)p 549 514 2 50 v 120 w(Single)13 b(precision)h(complex)p 1063 514 V 1803 514 V 1812 514 V -46 564 V -37 564 V -12 549 a(NETSOL)-5 b(VE)p 214 549 13 2 v 17 w(DCOMPLEX)p 549 564 2 50 v 101 w(Double)13 b(precision)h(complex)p 1063 564 V 1803 564 V 1812 564 V -45 565 1857 2 v -45 574 V -46 623 2 50 v -37 623 V -12 609 a(Ob)r(ject)h(T)o(yp)q(e)p 549 623 V 485 w(Description)p 1063 623 V 481 w(Note)p 1803 623 V 1812 623 V -45 625 1857 2 v -46 675 2 50 v -37 675 V -12 660 a(NETSOL)-5 b(VE)p 214 660 13 2 v 17 w(SCALAR)p 549 675 2 50 v 354 w(scalar)p 1063 675 V 1803 675 V 1812 675 V -46 725 V -37 725 V -12 710 a(NETSOL)g(VE)p 214 710 13 2 v 17 w(VECTOR)p 549 725 2 50 v 341 w(v)o(ector)p 1063 725 V 1803 725 V 1812 725 V -46 775 V -37 775 V -12 760 a(NETSOL)g(VE)p 214 760 13 2 v 17 w(MA)m(TRIX)p 549 775 2 50 v 344 w(matrix)p 1063 775 V 1803 775 V 1812 775 V -46 824 V -37 824 V -12 809 a(NETSOL)g(VE)p 214 809 13 2 v 17 w(FILE)p 549 824 2 50 v 455 w(\014le)p 1063 824 V 256 w(only)13 b(of)g(data)h(t)o(yp)q(e)g(NETSOL)-5 b(VE)p 1641 809 13 2 v 17 w(CHAR)p 1803 824 2 50 v 1812 824 V -46 874 V -37 874 V -12 859 a(NETSOL)g(VE)p 214 859 13 2 v 17 w(P)m(A)o(CKEDFILES)p 549 874 2 50 v 179 w(pac)o(k)o(ed)14 b(\014les)p 1063 874 V 179 w(only)f(of)g(data)h(t)o (yp)q(e)g(NETSOL)-5 b(VE)p 1641 859 13 2 v 17 w(CHAR)p 1803 874 2 50 v 1812 874 V -46 924 V -37 924 V -12 909 a(NETSOL)g(VE)p 214 909 13 2 v 17 w(UPF)p 549 924 2 50 v 276 w(User)15 b(Pro)o(vided)f(F)m(unction)p 1063 924 V 66 w(only)f(of)g(data)h(t)o(yp)q(e)g(NETSOL)-5 b(VE)p 1641 909 13 2 v 17 w(CHAR)p 1803 924 2 50 v 1812 924 V -46 974 V -37 974 V -12 959 a(NETSOL)g(VE)p 214 959 13 2 v 17 w(STRING)p 549 974 2 50 v 266 w(Character)15 b(string)p 1063 974 V 133 w(only)e(of)g(data)h(t)o(yp)q(e)g(NETSOL)-5 b(VE)p 1641 959 13 2 v 17 w(CHAR)p 1803 974 2 50 v 1812 974 V -46 1024 V -37 1024 V -12 1009 a(NETSOL)g(VE)p 214 1009 13 2 v 17 w(STRINGLIST)p 549 1024 2 50 v 137 w(Character)15 b(string)f(list)p 1063 1024 V 98 w(only)f(of)g(data)h(t) o(yp)q(e)g(NETSOL)-5 b(VE)p 1641 1009 13 2 v 17 w(CHAR)p 1803 1024 2 50 v 1812 1024 V -45 1025 1857 2 v 542 1100 a(T)m(able)13 b(2.1:)k(Av)n(ailable)12 b(data)i(and)g(ob)r(ject)g(t)o (yp)q(es)-45 1232 y Fm(netsolve\('foo\(\)',)o(&sum,)o(10,x\))o(;)-45 1282 y(netsolve\('foo\(\)',)o(&sum,)o(x,10\))o(;)-45 1368 y Fp(could)i(b)q(e)h(v)n(alid)e(calls.)25 b(In)16 b(fact,)g(NetSolv)o(e)h(serv)o(ers)h(imp)q(ose)d(\(see)j(Section)f (6.3.3\))d(a)i(giv)o(en)g(calling)f(sequence)j(to)e(users)-45 1418 y(of)g(the)i(non-ob)r(ject-orien)o(ted)g(in)o(terfaces.)28 b(There)18 b(are)f(sev)o(eral)g(other)h(di\013erences)h(b)q(et)o(w)o (een)f(the)g(Matlab)e(and)h(C)f(calls)-45 1468 y(and)d(the)h(sp)q (eci\014cs)h(are)f(giv)o(en)f(in)g(Section)h(4.2)e(and)h(4.3.)k (Section)d(4.3)e(also)h(con)o(tains)g(an)g(en)o(tire)h(example,)e (including)g(the)-45 1518 y(disco)o(v)o(ery)i(of)g(a)f(problem)g(b)o(y) g(the)i(user)g(and)e(more)g(imp)q(ortan)o(tly)f(of)h(its)h(calling)f (sequence)j(from)c(C)i(or)f(F)m(ortran.)-45 1658 y Fk(2.3)66 b(Problems)23 b(that)g(can)f(b)r(e)g(solv)n(ed)h(with)g(NetSolv)n(e)-45 1752 y Fp(Before)17 b(actually)e(using)h(NetSolv)o(e)g(with)g(an)o(y)g (in)o(terface,)h(the)f(user)i(needs)f(to)f(kno)o(w)g(what)g(problems)f (are)h(solv)n(able.)24 b(It)-45 1802 y(is)15 b(p)q(ossible)h(to)f (query)h(NetSolv)o(e)f(agen)o(ts)h(in)f(order)h(to)f(obtain)g(a)g(list) g(and)g(descriptions)h(of)f(the)h(problems)e(that)i(can)f(b)q(e)-45 1852 y(solv)o(ed)f(b)o(y)f(the)i(serv)o(ers)h(kno)o(wn)d(to)h(that)g (agen)o(t.)k(There)d(are)f(sev)o(eral)h(w)o(a)o(ys)e(of)g(sending)h (suc)o(h)h(queries.)-45 1904 y(First,)g(from)e(the)j(NetSolv)o(e)f (homepage,)e(it)h(is)h(p)q(ossible)g(to)g(sp)q(ecify)g(an)g(agen)o(t)g (name)e(and)i(run)g(CGI)g(scripts)h(to)e(obtains)-45 1954 y(detailed)k(informations)d(ab)q(out)j(NetSolv)o(e)g(problems,)f (including)g(C)g(and)h(F)m(ortran)g(calling)e(sequences)k(sp)q (eci\014cations.)-45 2004 y(Problem)13 b(lists)g(and)h(descriptions)g (are)h(also)e(directly)h(a)o(v)n(ailable)d(from)h(the)i(Matlab)f(in)o (terface,)h(the)h(Mathematica)d(in)o(ter-)-45 2054 y(face,)i(and)h(the) g(Ja)o(v)n(a)f(GUI.)f(Lastly)m(,)g(the)j(to)q(ols)e(describ)q(ed)i(in)e (Section)h(6.4)e(also)h(giv)o(e)g(access)i(to)f(that)f(information)e (from)-45 2104 y(the)i(UNIX)h(prompt.)-45 2156 y(The)c(full)d(name)h (of)h(a)f(problem)g(has)h(t)o(w)o(o)g(parts:)17 b(\(i\))9 b(the)i Fo(p)n(ath)p Fp(,)g(and)f(\(ii\))f(the)i Fo(nickname)p Fp(.)17 b(Let)11 b(us)f(demonstrate)g(this)g(with)g(an)-45 2206 y(example.)17 b(The)d(problem)e(nic)o(knamed)g Fm(ddot)p Fp(,)g(whic)o(h)i(computes)f(the)h(inner)g(pro)q(duct)h(of)d(t)o(w)o(o) i(double-precision)f(v)o(ectors,)-45 2256 y(can)i(ha)o(v)o(e)f(full)g (name)f Fm(/BLAS/Level1/ddot)o Fp(.)k(This)e(full)e(name)h(has)g(t)o(w) o(o)g(purp)q(oses.)22 b(First,)15 b(when)g(w)o(e)g(displa)o(y)e(a)h (list)h(of)-45 2306 y(problems,)f(they)i(are)f(sorted)i(alphab)q (etically)c(on)i(their)h(full)e(name,)g(and)h(the)h(problems)e(are)h (group)q(ed)h(b)o(y)f(\\directory".)-45 2356 y(Second,)h(b)o(y)g(con)o (v)o(en)o(tion,)f(the)h(\014rst)h(elemen)o(t)e(of)g(the)h(full)f(name)f (\(e.g.,)h Fm(BLAS)p Fp(\))g(is)h(the)g(name)e(of)h(the)i(n)o(umerical) d(library)-45 2405 y(the)g(problem)f(uses.)19 b(This)14 b(con)o(v)o(en)o(tion)g(has)g(pro)o(v)o(en)g(to)f(b)q(e)i(useful,)e(as) h(seen)i(in)d(Section)h(4.3.2.)920 2828 y(8)p eop %%Page: 9 11 9 10 bop -45 509 a Fl(Chapter)31 b(3)-45 720 y Fn(Do)m(wnloading,)39 b(Installing,)h(and)e(T)-10 b(esting)-45 845 y(the)38 b(Soft)m(w)m(are)-45 1088 y Fk(3.1)66 b(Do)n(wnloading)-45 1182 y Fp(The)12 b(soft)o(w)o(are)f(can)h(b)q(e)g(do)o(wnloaded)e(from) g(the)i(NetSolv)o(e)g(homepage)e(and)h(the)h(follo)o(wing)d(UNIX)j (commands)d(will)g(create)-45 1232 y(the)14 b Fm(Netsolve-1.2.x)d Fp(directory)m(,)j(where)h Fm(x)f Fp(is)g(the)g(latex)g(sub-v)o(ersion) g(n)o(um)o(b)q(er:)-45 1318 y Fm(\045)22 b(gunzip)e(NetSolve-1.2.x.tar) o(.gz)-45 1368 y(\045)i(tar)f(-xf)g(NetSolve-1.2.x.ta)o(r)-45 1508 y Fk(3.2)66 b(Setting)24 b(the)e(NetSolv)n(e)h(Ro)r(ot)-45 1602 y Fp(It)16 b(is)f(necessary)i(to)f(set)g(an)f(en)o(vironmen)o(t)g (v)n(ariable)f(that)i(con)o(tains)f(the)h(path)g(to)f(the)h Fm(Netsolve-1.2.x)d Fp(directory)m(.)23 b(It)-45 1652 y(should)14 b(b)q(e)g(de\014ned)h(in)f(the)g Fm(.cshrc)f Fp(as:)-45 1738 y Fm(setenv)21 b(NETSOLVE_ROOT)e(/home/me/Netsolv)o (e-1.2)o(.x)40 b(\(for)21 b(csh\))-45 1824 y Fp(or,)-45 1910 y Fm(export)g(NETSOLVE_ROOT=/)o(home/)o(me/Ne)o(tsolv)o(e-1.2)o (.x)40 b(\(for)21 b(ksh\))-45 1996 y Fp(for)14 b(instance.)k(F)m(rom)12 b(no)o(w)i(on,)f(w)o(e)h(assume)g(that)g(the)g(Shell)g(is)f(from)f(the) j Fm(csh)e Fp(family)m(.)-45 2136 y Fk(3.3)66 b(Setting)24 b(the)e(Arc)n(hitecture)-45 2230 y Fp(In)13 b(addition)e(to)h(the)i Fm(NETSOLVE)p 467 2230 14 2 v 14 w(ROOT)d Fp(v)n(ariable,)g(one)i(m)o (ust)f(also)g(set)h(a)f(v)n(ariable)g(that)g(con)o(tains)h(the)g(arc)o (hitecture)h(of)e(the)-45 2280 y(platform)i(for)j(whic)o(h)f(the)h (soft)o(w)o(are)g(is)g(going)e(to)h(b)q(e)i(compiled.)24 b(The)17 b Fm(Netsolve-1.2.x)d Fp(directory)j(con)o(tains)g(a)f(Shell) -45 2330 y(script)g(called)e Fm(netsolvegetarch)e Fp(that)j(can)g(b)q (e)h(used)g(to)f(return)h(a)e(c)o(haracter)j(string)e(describing)g(the) h(arc)o(hitecture)h(of)-45 2380 y(the)d(mac)o(hine)f(of)g(the)i(user.)k (Supp)q(ose,)14 b(for)g(instance,)g(that)g(one)g(wishes)h(to)e(run)i (the)f(script)h(on)e(an)h(IBM)g(RS/6000:)-45 2466 y Fm(\045)22 b(netsolvegetarch)-1 2515 y(RS6K)-45 2601 y Fp(In)14 b(that)g(case,)g(the)h Fm(NETSOLVE)p 447 2601 V 14 w(ARCH)e Fp(en)o(vironmen)o(t)g(v)n(ariable)f(should)i(b)q(e)h(de\014ned)g(in)e (the)h Fm(.cshrc)f Fp(\014le)h(as:)-45 2687 y Fm(setenv)21 b(NETSOLVE_ARCH)e(RS6K)920 2828 y Fp(9)p eop %%Page: 10 12 10 11 bop -45 195 a Fp(Preferably)m(,)14 b(one)g(can)g(set)h(the)f(v)n (ariable)f(in)g(a)h(platform-indep)q(enden)o(t)f(fashion:)-45 281 y Fm(setenv)21 b(NETSOLVE_ARCH)e(`$NETSOLVE_ROOT/)o(netso)o(lveg)o (etarc)o(h`)-45 367 y Fp(T)m(o)14 b(date,)i(NetSolv)o(e)f(has)h(b)q (een)g(fully)e(p)q(orted)i(to)f(the)h(arc)o(hitectures)i(in)c(table)i (3.1.)21 b(In)15 b(addition,)f(the)i(NetSolv)o(e)f(distri-)-45 417 y(bution)e(also)h(con)o(tains)g(Matlab)f(and)g(C)h(APIs)h(for)e (Win32.)p 353 510 1154 2 v 352 560 2 50 v 361 560 V 387 545 a Fm($NETSOLVE)p 588 545 14 2 v 13 w(ARCH)p 710 560 2 50 v 49 w Fp(Platform)p 1498 560 V 1507 560 V 353 561 1154 2 v 352 611 2 50 v 361 611 V 492 596 a Fm(SUN4)p 710 611 V 155 w Fp(Sun)h(4,)f(4c,)h(SP)m(AR)o(C,)f(etc.)p 1498 611 V 1507 611 V 352 661 V 361 661 V 449 646 a Fm(SUN4SOL2)p 710 661 V 110 w Fp(Sun)h(4)g(running)g(Solaris)f(2.x)p 1498 661 V 1507 661 V 352 711 V 361 711 V 482 696 a Fm(ALPHA)p 710 711 V 143 w Fp(DEC)h(Alpha/OSF-1)p 1498 711 V 1507 711 V 352 761 V 361 761 V 492 746 a Fm(PMAX)p 710 761 V 155 w Fp(DEC)g(Pmax)e(running)i(NetBSd)p 1498 761 V 1507 761 V 352 810 V 361 810 V 492 796 a Fm(NEXT)p 710 810 V 155 w Fp(NeXT)p 1498 810 V 1507 810 V 352 860 V 361 860 V 492 845 a Fm(SGI5)p 710 860 V 155 w Fp(Silicon)f(Graphics)h (IRIX)g(running)f(OS)h Fj(\025)g Fp(5.0)p 1498 860 V 1507 860 V 352 910 V 361 910 V 482 895 a Fm(SGI64)p 710 910 V 143 w Fp(Silicon)f(Graphics)h(IRIX)g(running)f(OS)h Fj(\025)g Fp(6.0)p 1498 910 V 1507 910 V 352 960 V 361 960 V 492 945 a Fm(HPPA)p 710 960 V 155 w Fp(HP)h(9000)d(P)m(A-Risc)p 1498 960 V 1507 960 V 352 1010 V 361 1010 V 492 995 a Fm(RS6K)p 710 1010 V 155 w Fp(IBM)j(RS/6000)p 1498 1010 V 1507 1010 V 352 1060 V 361 1060 V 482 1045 a Fm(LINUX)p 710 1060 V 143 w Fp(Lin)o(ux)p 1498 1060 V 1507 1060 V 352 1109 V 361 1109 V 503 1094 a Fm(SCO)p 710 1109 V 166 w Fp(F)m(reeBS)p 1498 1109 V 1507 1109 V 352 1159 V 361 1159 V 503 1144 a Fm(T3E)p 710 1159 V 166 w Fp(Cra)o(y)f(T3E)p 1498 1159 V 1507 1159 V 353 1161 1154 2 v 471 1235 a(T)m(able)f(3.1:)k (UNIX)d(platforms)e(supp)q(orted)j(b)o(y)f(NetSolv)o(e)-45 1472 y Fk(3.4)66 b(Compiling)-45 1566 y Fp(No)o(w)14 b(that)g(the)h Fm(NETSOLVE)p 391 1566 14 2 v 14 w(ARCH)e Fp(and)h Fm(NETSOLVE)p 763 1566 V 15 w(ROOT)f Fp(en)o(vironmen)o(t)g(v) n(ariables)h(ha)o(v)o(e)g(b)q(een)h(set)g(as)f(describ)q(ed)i(in)e (Sec-)-45 1616 y(tion)f(3.3,)g(the)h(soft)o(w)o(are)g(can)g(b)q(e)h (compiled.)-45 1735 y Fh(3.4.1)55 b(Customizing)17 b(the)i(Compilation) -45 1815 y Fp(Ev)o(en)c(though)f(suitable)g(default)g(options)g(are)h (pro)o(vided)f(for)g(the)h(compilation)d(of)i(the)h(soft)o(w)o(are,)f (one)h(ma)o(y)d(lo)q(ok)h(in)h(the)-45 1864 y Fm(Netsolve-1.2.x/co)o (nf)e Fp(directory)j(to)f(edit)h(the)g Fm(conf.def)e Fp(\014le.)20 b(This)14 b(\014le)h(con)o(tains)f(custom)g(parameters)h (ab)q(out)f(the)-45 1914 y(NetSolv)o(e)g(installation,)e(for)h (example:)-45 2000 y Fm(#)-45 2050 y(#)22 b(directories)-45 2100 y(#)-45 2150 y(OBJDIR)217 b(=)43 b($\(NETSOLVE_ROOT\)/o)o(bj/$\()o (NETS)o(OLVE_)o(ARCH\))-45 2199 y(XDIR)261 b(=)43 b ($\(NETSOLVE_ROOT\)/b)o(in/$\()o(NETS)o(OLVE_)o(ARCH\))-45 2249 y(LIBDIR)217 b(=)43 b($\(NETSOLVE_ROOT\)/l)o(ib/$\()o(NETS)o (OLVE_)o(ARCH\))-45 2299 y(MATLABOBJDIR)85 b(=)43 b($\(OBJDIR\)/Matlab) -45 2399 y(#)22 b(verbosity)-45 2449 y(#)-45 2498 y(#)152 b(DEBUG)21 b(:)h(For)f(total)g(debugging)f(information)-45 2548 y(#)152 b(VIEW)43 b(:)22 b(For)f(smooth)f(information)g(during)g (the)i(execution)-45 2598 y(#)152 b(NONE)43 b(:)22 b(No)f(visual)g (output)-45 2648 y(DEBUGING)f(=)i(VIEW)909 2828 y Fp(10)p eop %%Page: 11 13 11 12 bop -45 195 a Fm(#)22 b(Globus)e(Heart)h(Beat)g(Monitor)-45 245 y(#)-45 295 y(#HBMLM)108 b(=)43 b()-45 345 y(#HBMDC)108 b(=)43 b()-45 394 y(#HBMDCPORT)f(=)43 b()-45 444 y(#HBMLIB)86 b(=)43 b()-45 494 y(#HBMINCDIR)f(=)43 b()-45 544 y(#HBMFLAG)64 b(=)21 b(-I$\(HBMINCDIR\))e(-DHBMLM=$\(HBMLM\))g (-DHBMDC=$\(HBMDC\))f(-DHBMDCPORT=$\(HBMD)o(CPORT)o(\))-45 643 y(#)k(MPI)-45 693 y(#)-45 743 y(MPI_INCDIR)e(=)h (/src/icl/MPI/mpich1)o(.1/in)o(clude)-45 829 y Fp(Let)14 b(us)h(review)f(the)h(four)e(elemen)o(ts)h(of)f(the)i(custom)e (installation)f(in)h(this)h(v)o(ersion)g(of)g(NetSolv)o(e:)-45 940 y Fq(Directories)38 b Fp(:)18 b(The)c(\014rst)h(section)f(of)g(the) g Fm(conf.def)e Fp(\014le)i(con)o(tains)f(the)i(name)d(of)i(the)g (directories)h(where)g(the)f(ob)r(ject)-45 990 y(\014les,)g (executables,)h(libraries,)e(and)h(sp)q(ecial)g(Matlab)f(ob)r(ject)i (\014les)f(should)g(b)q(e)g(generated.)-45 1101 y Fq(V)l(erb)q(osit)o (y)39 b Fp(:)28 b(This)18 b(section)i(sp)q(eci\014es)g(ho)o(w)e(m)o(uc) o(h)g(output)g(should)h(b)q(e)g(generated)h(on)e(the)i(screen)g(when)f (running)-45 1150 y(agen)o(ts,)14 b(serv)o(ers,)h(or)f(clien)o(ts.)-45 1261 y Fq(Globus)j(Heart)h(Beat)h(Monitor)40 b Fp(:)23 b(If)17 b(the)g(6)f(v)n(ariables)g(in)g(the)i(third)e(section)i(are)f (uncommen)o(ted)e(and)i(assigned)-45 1311 y(the)d(appropriate)f(v)n (alues,)f(then)i(NetSolv)o(e)f(uses)h(the)g(Globus)e(HeartBeat)i (Monitor)f(for)f(failure)h(detection.)18 b(The)c(Globus)-45 1361 y(pro)r(ject)h(homepage)e(is)g(lo)q(cated)i(at:)695 1447 y Fm(http://www.globus.o)o(rg)p Fp(,)-45 1533 y(where)g(the)g (soft)o(w)o(are)e(and)h(do)q(cumen)o(tation)f(are)h(a)o(v)n(ailable.) -45 1644 y Fq(MPI)42 b Fp(:)12 b(In)i(the)g(case)g(of)f(a)g(parallel)g (serv)o(er)i(\(see)f(Section)g(6\),)f(it)g(is)g(necessary)j(to)d(set)h (the)h Fm(MPI)p 1486 1644 14 2 v 15 w(INCDIR)d Fp(v)n(ariable)g(to)h (the)-45 1694 y(path)h(to)g(the)g Fm("mpi.h")e Fp(\014le.)-3 1805 y(The)20 b(\014les)g Fm($NETSOLVE)p 378 1805 V 14 w(ROOT/conf/$NETSOLV)o(E)p 809 1805 V 13 w(ARCH.def)e Fp(con)o(tain)i(settings)g(for)g(compilers/link)o(ers/system)e(li-)-45 1854 y(braries)d(for)e(the)i(di\013eren)o(t)f(platform)e(and)i(should)f (b)q(e)i(mo)q(di\014ed)d(only)i(in)f(the)h(case)h(of)f(compilation)d (problems.)-45 1974 y Fh(3.4.2)55 b(T)n(ypical)18 b(Compiling)-45 2053 y Fp(T)o(yping)d Fm(make)f Fp(in)h(the)h Fm(Netsolve-1.2.x)d Fp(directory)j(will)e(giv)o(e)h(instructions)i(to)e(complete)g(the)h (compilation.)k(T)o(ypical)-45 2103 y(compilations)11 b(include:)-45 2189 y Fm(make)21 b(standard)-45 2275 y Fp(builds)13 b(the)i(agen)o(t,)e(serv)o(er,)i(the)g(NetSolv)o(e)f (test)h(suite)f(\(see)h(Section)g(3.5\))e(and)g(examples,)-45 2361 y Fm(make)21 b(C_client)f(Fortran_client)f(Matlab)i(mathematica)e (java)-45 2447 y Fp(builds)13 b(all)g(the)i(clien)o(t)e(in)o(terfaces)i (pro)o(vided)f(in)f(the)i(NetSolv)o(e)f(distribution,)f(and)-45 2533 y Fm(make)21 b(tool)-45 2619 y Fp(builds)13 b(the)i(NetSolv)o(e)f (managemen)o(t)d(to)q(ols)j(\(see)h(Section)f(6.4\).)909 2828 y(11)p eop %%Page: 12 14 12 13 bop -45 195 a Fk(3.5)66 b(T)-6 b(esting)23 b(the)f(Soft)n(w)n (are)-45 289 y Fp(T)m(esting)c(the)g(soft)o(w)o(are)h(consists)g(in)e (starting)h(an)g(agen)o(t)g(and)g(a)f(serv)o(er)j(and)e(running)g(a)f (clien)o(t)h(test)h(\(Section)g(3.5.1\).)-45 339 y(Alternativ)o(ely)m (,)14 b(the)h(default)g(agen)o(t)f(and)h(serv)o(ers)i(running)d(at)h (the)h(Univ)o(ersit)o(y)e(of)h(T)m(ennessee)i(can)e(b)q(e)g(used)h(to)e (test)i(the)-45 389 y(clien)o(t)c(only)f(\(see)j(Section)e(3.5.2\).)k (W)m(e)c(describ)q(e)h(here)g(the)g(step-b)o(y-step)h(pro)q(cedure)g (that)e(in)o(v)o(olv)o(es)f(manipulatio)o(ns)f(that)-45 438 y(will)i(b)q(e)j(detailed)f(and)f(explained)h(in)g(the)g(follo)o (wing)d(c)o(hapters.)20 b(W)m(e)13 b(assume)h(that)g(the)g(Shell)g(is)f Fm(csh)p Fp(.)-45 557 y Fh(3.5.1)55 b(Agen)n(t-Serv)n(er-Clien)n(t)17 b(T)-5 b(est)6 637 y Fp(1.)20 b(Cho)q(ose)14 b(a)g(mac)o(hine)e(to)i (run)g(the)h(agen)o(t,)e(serv)o(er)j(and)d(clien)o(t)h(\(sa)o(y)g Fm(netsolve.net.worl)o(d)p Fp(\),)6 719 y(2.)20 b(On)14 b(that)g(mac)o(hine,)e(set)j(the)f(t)o(w)o(o)g(en)o(vironmen)o(t)f(v)n (ariables)g(of)g(Sections)i(3.2)e(and)g(3.3,)6 801 y(3.)20 b Fm(cd)h($NETSOLVE)p 325 801 14 2 v 14 w(ROOT)p Fp(,)6 883 y(4.)f(edit)14 b(the)g(\014le)g Fm(./server)p 459 883 V 14 w(config)p Fp(,)6 965 y(5.)20 b(replace)15 b Fm(bluegrass.cs.ut)o(k.edu)10 b Fp(b)o(y)k Fm(netsolve.net.worl)o(d)p Fp(,)6 1048 y(6.)20 b(sa)o(v)o(e)14 b(the)g(\014le,)6 1130 y(7.)20 b Fm(make)h(agent)g(server)f(test)6 1212 y Fp(8.)g(start)14 b(three)h Fm(xterm)e Fp(sessions.)6 1294 y(9.)20 b(In)14 b(the)g(\014rst)h Fm(xterm)p Fp(:)76 1376 y(\(a\))21 b Fm(cd)g($NETSOLVE)p 416 1376 V 14 w (ROOT/bin/$NETSOLVE)p 825 1376 V 12 w(ARCH)74 1442 y Fp(\(b\))g Fm(agent)-15 1524 y Fp(10.)f(In)14 b(the)g(second)h Fm(xterm)p Fp(:)76 1606 y(\(a\))21 b Fm(cd)g($NETSOLVE)p 416 1606 V 14 w(ROOT/bin/$NETSOLVE)p 825 1606 V 12 w(ARCH)74 1671 y Fp(\(b\))g Fm(server)-15 1754 y Fp(11.)f(In)14 b(the)g(third)g Fm(xterm)p Fp(,)e(once)j(the)f(serv)o(er)i(is)e (running:)76 1836 y(\(a\))21 b Fm(setenv)g(NETSOLVE)p 482 1836 V 14 w(AGENT)f(netsolve.world.net)74 1901 y Fp(\(b\))h Fm(cd)g($NETSOLVE)p 416 1901 V 14 w(ROOT)79 1967 y Fp(\(c\))g Fm(Test)-45 2059 y Fp(While)15 b(the)h(test)g(suite)g (is)g(running,)f(it)g(prin)o(ts)h(out)f(messages)h(ab)q(out)f(its)g (execution.)24 b(This)15 b(test)i(tests)g(only)e(the)h(C)f(and)-45 2109 y(F)m(ortran)f(clien)o(ts.)k(See)d(Chapters)g(4.2,)d(4.4,)h(and)g (4.6)g(for)h(details)f(on)h(ho)o(w)g(to)f(test)i(the)g(other)f(in)o (terfaces.)-45 2228 y Fh(3.5.2)55 b(Clien)n(t)18 b(T)-5 b(est)6 2307 y Fp(1.)20 b Fm(cd)h($NETSOLVE)p 325 2307 V 14 w(ROOT)6 2389 y Fp(2.)f Fm(make)h(test)6 2471 y Fp(3.)f Fm(setenv)g(NETSOLVE)p 390 2471 V 14 w(AGENT)h (bluegrass.cs.utk.e)o(du)6 2554 y Fp(4.)f Fm(Test)-45 2646 y Fp(While)10 b(the)i(tester)h(is)d(running,)h(it)g(prin)o(ts)g (out)g(messages)g(ab)q(out)g(its)g(execution.)18 b(This)11 b(test)h(tests)g(only)f(the)g(C)g(and)g(F)m(ortran)-45 2696 y(clien)o(ts.)18 b(See)d(Sections)g(4.2,)d(4.4,)h(and)g(4.6)g(for) h(details)f(on)h(ho)o(w)g(to)f(test)i(the)g(other)f(in)o(terfaces.)909 2828 y(12)p eop %%Page: 13 15 13 14 bop -45 509 a Fl(Chapter)31 b(4)-45 720 y Fn(Pro)m(vided)39 b(NetSolv)m(e)g(Clien)m(t)g(In)m(terfaces)-45 964 y Fk(4.1)66 b(Getting)23 b(Started)-45 1066 y Fh(4.1.1)55 b(Setting)18 b(an)h(Agen)n(t)g(Name)-45 1146 y Fp(As)e(describ)q(ed)i(in)d(Section)h (1.2,)f(to)h(solv)o(e)f(a)h(problem)e(a)h(clien)o(t)h(m)o(ust)f(con)o (tact)h(an)g(agen)o(t.)26 b(The)17 b(C,)f(F)m(ortran,)h(Matlab,)-45 1195 y(and)12 b(Mathematica)f(in)o(terfaces)i(require)g(the)g(en)o (vironmen)o(t)e(v)n(ariable)g Fm(NETSOLVE)p 1246 1195 14 2 v 14 w(AGENT)g Fp(to)h(b)q(e)h(set)g(to)f(con)o(tain)f(the)i(name) -45 1245 y(of)j(a)h(host)g(running)f(a)h(NetSolv)o(e)g(agen)o(t.)27 b(If)16 b(the)i(user)f(kno)o(ws)g(of)f(a)h(NetSolv)o(e)g(system)g (installed)f(somewhere,)h(he)g(will)-45 1295 y(ha)o(v)o(e)g(to)g(ask)g (the)h(NetSolv)o(e)g(administrator)d(for)i(the)h(name)e(of)g(suc)o(h)i (a)f(host.)28 b(The)18 b(NetSolv)o(e)g(homepage)e(includes)h(a)-45 1345 y(list)g(of)g(registered)j(agen)o(ts)e(on)f(the)h(In)o(ternet.)31 b(The)18 b(constan)o(tly)g(running)f(agen)o(t)h(at)f(the)i(Univ)o (ersit)o(y)e(of)g(T)m(ennessee)j(is)-45 1395 y Fm(bluegrass.cs.utk.)o (edu)p Fp(.)14 b(If)e(the)h(user)g(wishes)g(to)f(set)i(his)e(agen)o(t)g (to)g(b)q(e)h(this)f(one,)h(he)f(will)f(ha)o(v)o(e)h(to)g(mo)q(dify)e (his)i Fm(.cshrc)-45 1444 y Fp(as)i(follo)o(ws:)-45 1530 y Fm(setenv)21 b(NETSOLVE_AGENT)d(bluegrass.cs.utk.edu)-45 1617 y Fp(Note)12 b(that)f(the)i(Ja)o(v)n(a)d(GUI)h(and)h(API)f(do)h (not)f(require)h(the)g Fm(NETSOLVE)p 1068 1617 V 14 w(AGENT)f Fp(en)o(vironmen)o(t)f(v)n(ariable)h(to)g(b)q(e)h(set.)18 b(Instead)-45 1666 y(of)13 b(sp)q(ecifying)h(a)g(hostname,)e(one)i(can) g(also)g(sp)q(ecify)g(an)g(IP)g(address.)-45 1807 y Fk(4.2)66 b(Matlab)23 b(In)n(terface)-45 1909 y Fh(4.2.1)55 b(In)n(tro)r(duction) -45 1988 y Fp(Building)13 b(the)h(Matlab)f(in)o(terface)i(b)o(y)f(t)o (yping)-45 2074 y Fm(make)21 b(matlab)-45 2160 y Fp(in)13 b(the)i(directory)g Fm(NetSolve-1.2.x)c Fp(pro)q(duces)k(the)f(four)g (follo)o(wing)d Fo(mex-\014les)j Fp(:)17 2246 y Fj(\017)21 b Fm(Netsolve)p 238 2246 V 14 w(client/bin/$NETSO)o(LVE)p 690 2246 V 12 w(ARCH/netsolve.mex##)o(#)17 2330 y Fj(\017)g Fm(Netsolve)p 238 2330 V 14 w(client/bin/$NETSO)o(LVE)p 690 2330 V 12 w(ARCH/netsolve)p 989 2330 V 13 w(nb.mex###)17 2413 y Fj(\017)g Fm(Netsolve)p 238 2413 V 14 w(client/bin/$NETSO)o(LVE) p 690 2413 V 12 w(ARCH/netsolve)p 989 2413 V 13 w(err.mex###)17 2496 y Fj(\017)g Fm(Netsolve)p 238 2496 V 14 w(client/bin/$NETSO)o(LVE) p 690 2496 V 12 w(ARCH/netsolve)p 989 2496 V 13 w(errmsg.mex###)-45 2582 y Fp(The)16 b Fm(###)g Fp(part)g(of)f(the)i(extension)g(dep)q (ends)g(on)f(the)h(arc)o(hitecture)g(\(for)f(instance,)h(the)g (extension)f(is)g Fm(.mexsol)f Fp(for)g(the)-45 2631 y(Solaris)j(Op)q(erating)i(System\).)33 b(These)20 b(four)f(\014les)g (alone)g(are)h(the)f(Matlab)f(in)o(terface)i(to)f(NetSolv)o(e.)34 b(Mo)q(difying)17 b(the)-45 2681 y Fm(MATLABPATH)12 b Fp(en)o(vironmen)o(t)h(v)n(ariable)f(as)909 2828 y(13)p eop %%Page: 14 16 14 15 bop -45 195 a Fm(setenv)21 b(MATLABPATH)e($NETSOLVE_ROOT/bin/)o ($NETS)o(OLVE)o(_ARCH)-45 281 y Fp(will)12 b(mak)o(e)g(these)j(four)e (\014les)h(accessible)g(to)g(Matlab.)j(It)c(is)h(also)e(p)q(ossible)i (to)f(use)i(the)f(Matlab)e(command)f Fm(addpath)p Fp(.)16 b(F)m(or)-45 331 y(more)d(information)f(ab)q(out)i(mex-\014les,)f(the)i (user)h(can)e(refer)i(to)e([1)o(].)19 b(Basically)m(,)13 b(the)i(user)g(will)e(no)o(w)h(b)q(e)h(able)f(to)h(call)e(four)-45 381 y(new)i(functions)g(from)e(Matlab:)19 b Fm(netsolve\(\))p Fp(,)12 b Fm(netsolve)p 905 381 14 2 v 14 w(nb\(\))p Fp(,)i Fm(netsolve)p 1209 381 V 14 w(err\(\))p Fp(,)f(and)i Fm(netsolve)p 1616 381 V 14 w(errmsg\(\))p Fp(.)k(The)-45 431 y(follo)o(wing)11 b(sections)k(explain)e(ho)o(w)h(to)g(use)g(those) h(functions.)-45 550 y Fh(4.2.2)55 b(What)19 b(to)f(Do)h(First)-45 629 y Fp(Let)d(us)h(no)o(w)e(assume)g(that)h(the)h(user)f(has)g (compiled)f(the)h(Matlab)f(in)o(terface,)i(set)f(an)g(agen)o(t)g(name,) e(started)j(a)f(Matlab)-45 679 y(session)i(and)e(is)h(no)o(w)g(ready)g (to)g(try)g(NetSolv)o(e.)27 b(In)17 b(this)g(section)g(w)o(e)g(describ) q(e)i(those)f(features)g(of)e(the)h(in)o(terface)h(that)-45 729 y(allo)o(w)12 b(the)j(user)g(to)e(get)i(information)c(ab)q(out)i (the)i(curren)o(tly)g(a)o(v)n(ailable)c(NetSolv)o(e)j(system.)-45 782 y(As)f(stated)h(brie\015y)f(in)g(Section)g(2.3,)f(it)g(is)h(p)q (ossible)g(to)g(obtain)f(the)i(list)e(of)h(solv)n(able)f(problems)g (from)f(Matlab.)17 b(Let)c(us)h(try)-45 832 y(that)g(\014rst:)-45 918 y Fm(>>)21 b(netsolve)-45 967 y(NetSolve)f(-)i(List)f(of)g (problems)f(available)g(-)-45 1017 y(/BLAS/Matrices/ma)o(tmul)-45 1067 y(/ItPack/jsi)-45 1117 y(/LaPack/Matrices/)o(Eigen)o(Value)o (s/eig)-45 1167 y(/LaPack/Matrices/)o(Singu)o(larVa)o(lues/)o(svd)-45 1217 y(>>)-45 1303 y Fp(Ev)o(ery)14 b(line)f(con)o(tains)h(a)f(full)g (problem)f(name.)17 b(Let)d(us)g(no)o(w)f(assume)h(that)f(the)i(user)f (is)g(w)o(ondering)f(ab)q(out)h(what)f(kind)h(of)-45 1352 y(problem)f Fm(eig)g Fp(is.)18 b(He)c(can)g(t)o(yp)q(e)-45 1438 y Fm(>>)21 b(netsolve\('eig'\))-45 1524 y Fp(This)d(command)e (will)h(pro)o(vide)i(detailed)f(information)e(ab)q(out)j(this)f (particular)h(problem.)30 b(Let)19 b(us)g(split)g(the)g(output)-45 1574 y(pro)q(duced)c(b)o(y)f(this)g(command)d(in)o(to)i(di\013eren)o(t) i(pieces:)-45 1660 y Fm(--)21 b(eig)h(--)43 b(From)21 b(LAPACK)f(-)-45 1710 y(Simplified)g(version)-45 1760 y(Computes)g(the)h(eigenvalues)f(of)h(a)h(double-precision)c(real)-45 1810 y(square)j(matrix)f(A.)h(Returns)g(two)g(double-precision)d(real) -45 1859 y(vectors)i(containing)g(respectively)f(the)j(real)f(parts)f (and)-45 1909 y(the)h(imaginary)f(parts)h(of)g(the)g(eigenvalues.)-45 2009 y(Matlab)g(Example)f(:)h([r)h(i])f(=)h(netsolve\('eig',a\))-45 2095 y Fp(The)14 b(same)f(kind)h(of)f(information)e(is)i(also)h(a)o(v)n (ailable)d(from)h(the)j(homepage)d(CGI)i(scripts)h(or)f(the)g (managemen)o(t)d(to)q(ols.)18 b(It)-45 2145 y(giv)o(es)c(a)g(short)g (description)h(of)e(what)h(the)h(problem)d(is.)18 b(In)c(this)g(case,)h (it)f(also)f(includes)h(an)g(example)f(for)g(Matlab,)g(using)-45 2195 y Fm(netsolve\(\))p Fp(.)-45 2281 y Fm(*)22 b(1)f(objects)g(in)g (INPUT)-23 2330 y(-)g(input)g(0:)h(Matrix)e(Double)h(Precision)f(Real.) -23 2380 y(Matrix)g(A)-45 2466 y Fp(This)15 b(is)g(the)g(description)h (of)e(the)h(input)g(the)h(user)g(needs)g(to)f(giv)o(e)f(NetSolv)o(e.)22 b(This)14 b(particular)h(problem)f(requires)i(only)-45 2516 y(one)e(double-precision)g(matrix)e(in)h(input.)18 b(Notice)c(that)g(this)g(matrix)e(has)i(to)f(b)q(e)i(square)f(\(as)g (stated)h(in)e(the)h(description)-45 2566 y(of)e(the)i(problem\).)j(If) 12 b(the)i(user)g(tries)g(to)f(call)f(NetSolv)o(e)i(for)f(this)g (problem)e(with)i(a)g(rectangular)h(matrix,)c(he)k(will)e(receiv)o(e) -45 2616 y(an)i(error)g(message)g(stating)g(that)g(the)g(dimensions)f (of)g(the)h(input)g(are)g(in)o(v)n(alid.)-45 2702 y Fm(*)22 b(2)f(objects)g(in)g(OUTPUT)909 2828 y Fp(14)p eop %%Page: 15 17 15 16 bop -23 195 a Fm(-)21 b(output)g(0:)g(Vector)g(Double)f (Precision)g(Real.)-23 245 y(Real)h(parts)g(of)g(the)g(eigen)g(values) -23 295 y(-)g(output)g(1:)g(Vector)g(Double)f(Precision)g(Real.)-23 345 y(Imaginary)g(parts)g(of)i(the)f(eigen)g(values)-45 431 y Fp(The)11 b(output)f(of)g(the)h(problem)e(is)h(describ)q(ed)j (here.)18 b(The)10 b(problem)f Fm(eig)h Fp(will)f(return)j(t)o(w)o(o)e (v)o(ectors,)h(the)g(real)g(and)f(imaginary)-45 480 y(parts)k(of)g(the) g(eigen)o(v)n(alues)g(of)f(the)i(input)e(matrix,)f(resp)q(ectiv)o(ely)m (.)-45 575 y Fm(-----------------)o(-----)o(-----)o(-----)o(-----)o (-----)o(----)o(-)-45 625 y(Output)21 b(Objects)f(0)h(and)h(1)f(can)g (be)h(merged.)-45 719 y Fp(This)12 b(last)g(part)h(do)q(es)g(not)f(app) q(ear)h(for)f(ev)o(ery)h(problem)f(and)g(is)g(relev)n(an)o(t)g(only)g (for)g(the)h(Matlab)f(in)o(terface.)18 b(Since)13 b(Matlab)-45 769 y(pro)o(vides)k(a)f(mec)o(hanism)d(to)k(manipulate)d(complex)h(ob)r (jects,)i(it)f(is)h(probable)f(that)g(the)h(user)g(w)o(ould)f(lik)o(e)f (to)i(ha)o(v)o(e)f Fm(eig)-45 818 y Fp(return)e(one)g(single)f(complex) f(v)o(ector)i(instead)f(of)g(t)o(w)o(o)g(separate)h(real)f(v)o(ectors.) 19 b(This)14 b(p)q(oin)o(t)e(is)h(further)i(dev)o(elop)q(ed)f(in)e(the) -45 868 y(next)i(section.)-45 921 y(The)j(Matlab)e(in)o(terface)i(has)f (another)h(feature)g(that)g(is)f(concerned)i(not)e(with)g(the)h(actual) f(problem)f(solving)g(but)h(with)-45 971 y(pro)o(viding)g(information)e (ab)q(out)j(the)h(NetSolv)o(e)f(con\014guration)g(itself.)27 b(W)m(e)16 b(ha)o(v)o(e)h(just)h(seen)g(ho)o(w)f(to)g(get)g (information)-45 1021 y(ab)q(out)f(the)g(problems)f(handled)g(b)o(y)h (the)g(NetSolv)o(e)g(serv)o(ers;)i(it)e(is)f(also)g(p)q(ossible)h(to)g (obtain)f(the)h(ph)o(ysical)f(lo)q(cations)h(of)-45 1071 y(these)c(serv)o(ers.)18 b(Let)11 b(us)g(assume)f(that)g(our)g Fm(NETSOLVE)p 805 1071 14 2 v 14 w(AGENT)f Fp(en)o(vironmen)o(t)h(v)n (ariable)f(is)h(set)h(to)f Fm(bluegrass.cs.utk.e)o(du)-45 1120 y Fp(\(see)15 b(Section)g(4.1.1\).)h(Let)e(us)h(try)f(the)g(follo) o(wing)e(command:)-45 1206 y Fm(>>)21 b(netsolve\('?'\))-45 1292 y Fp(this)14 b(command)d(pro)q(duces)16 b(the)e(follo)o(wing)d (output)j(:)-45 1378 y Fm(NetSolve)20 b(-)i(List)f(of)g(available)f (agents)h(-)-45 1428 y(bluegrass.cs.utk.)o(edu\(1)o(28.16)o(9.92.)o (78\))-45 1478 y(NetSolve)f(-)i(List)f(of)g(available)f(servers)g(-)-45 1528 y(maruti.cs.berkele)o(y.edu)o(\(128.)o(32.36)o(.83\))-45 1578 y(cupid.cs.utk.edu\()o(128.1)o(69.94)o(.221\))-45 1664 y Fp(W)m(e)c(can)g(see)i(that)e(there)i(are)f(three)g(serv)o(ers)h (in)e(the)h(NetSolv)o(e)g(system)f(con)o(taining)f(the)i(mac)o(hine)e Fm(bluegrass)f Fp(at)i(the)-45 1713 y(Univ)o(ersit)o(y)e(of)f(T)m (ennessee:)6 1800 y(1.)20 b Fm(bluegrass)12 b Fp(itself,)h(whic)o(h)h (runs)g(an)g(agen)o(t,)6 1883 y(2.)20 b Fm(cupid)13 b Fp(at)g(the)i(same)e(lo)q(cation,)f(whic)o(h)i(runs)h(a)e(serv)o(er,)6 1966 y(3.)20 b Fm(maruti)12 b Fp(at)i(U.C.)f(Berk)o(eley)m(,)h(whic)o (h)g(is)g(also)f(a)h(computational)d(serv)o(er.)-45 2052 y(The)j(same)f(information)e(can)j(b)q(e)h(obtained)f(from)e(the)i (homepage)f(CGI)g(scripts)i(or)f(the)h(managemen)o(t)c(to)q(ols.)-45 2171 y Fh(4.2.3)55 b(Calling)18 b Fg(netsolve\(\))d Fh(to)k(p)r(erform) e(computation)-45 2250 y Fp(The)g(simplest)f(w)o(a)o(y)h(to)f(p)q (erform)h(an)f(actual)h(n)o(umerical)e(computation)g(is)i(to)g(call)f (the)i(function)e Fm(netsolve\(\))p Fp(.)26 b(With)-45 2300 y(this)15 b(function,)e(the)i(user)h(can)f(send)g(a)f(blo)q(c)o (king)g(request)i(to)e(NetSolv)o(e.)20 b(By)15 b Fo(blo)n(cking)f Fp(w)o(e)h(mean)e(that)i(after)g(t)o(yping)e(the)-45 2350 y(command)c(in)j(the)h(Matlab)e(session,)i(the)g(user)h(gets)e (bac)o(k)h(con)o(trol)f(only)f(when)i(the)g(computation)d(has)i(b)q (een)i(successfully)-45 2400 y(completed)e(on)g(a)g(serv)o(er.)19 b(The)13 b(other)g(w)o(a)o(y)f(to)h(p)q(erform)e(computation)g(is)h(to) h(send)g(a)f(non)o(blo)q(c)o(king)f(request)k(as)d(describ)q(ed)-45 2450 y(in)h(Section)i(4.2.4.)-45 2502 y(Let)e(us)g(go)f(on)h(with)f (the)h Fm(eig)f Fp(example)g(w)o(e)h(started)g(to)g(dev)o(elop)g(in)f (the)h(preceding)h(section.)k(The)13 b(user)h(no)o(w)e(kno)o(ws)h(that) -45 2552 y(he)j(has)g(to)g(pro)o(vide)f(a)h(double-precision)g(square)g (matrix)e(to)h(NetSolv)o(e,)h(and)g(he)g(kno)o(ws)g(that)g(he)g(is)f (going)g(to)g(get)h(t)o(w)o(o)-45 2602 y(real)e(v)o(ectors)h(bac)o(k)f (\(or)g(one)g(single)f(complex)g(v)o(ector\).)19 b(He)14 b(\014rst)h(creates)h(a)d(300)c Fj(\002)g Fp(300)k(matrix,)f(for)h (instance,)-45 2688 y Fm(>>)21 b(a)h(=)g(rand\(300\);)909 2828 y Fp(15)p eop %%Page: 16 18 16 17 bop -45 195 a Fp(The)14 b(call)f(to)h(NetSolv)o(e)g(is)g(no)o(w) -45 280 y Fm(>>)21 b([x)h(y])f(=)h(netsolve\('eig',a)o(\))-45 365 y Fp(All)14 b(the)i(calls)f(to)g Fm(netsolve\(\))e Fp(will)h(lo)q(ok)g(the)i(same.)21 b(The)16 b(left-hand)e(side)i(m)o (ust)e(con)o(tain)h(the)h(output)f(argumen)o(ts,)f(in)-45 415 y(the)h(same)f(order)h(as)g(listed)g(in)f(the)h Fo(output)i (description)d Fp(\(see)i(Section)f(4.2.2\).)k(The)c(\014rst)g(argumen) o(t)f(to)h Fm(netsolve\(\))d Fp(is)-45 465 y(alw)o(a)o(ys)g(the)h(name) f(of)g(the)i(problem.)i(After)e(this)f(\014rst)g(argumen)o(t)f(the)i (input)e(argumen)o(ts)g(are)i(listed,)e(in)h(the)g(same)f(order)-45 515 y(as)17 b(they)g(are)f(listed)h(in)f(the)h Fo(input)h(description)e Fp(\(see)i(Section)f(4.2.2\).)24 b(This)16 b(function)g(do)q(es)i(not)e (ha)o(v)o(e)g(a)g(\014xed)h(calling)-45 565 y(sequence,)f(since)e(the)h (n)o(um)o(b)q(er)e(of)g(inputs)h(and)g(outputs)g(dep)q(ends)i(on)e(the) g(problem)f(the)h(user)h(wishes)g(to)e(solv)o(e.)-45 617 y(Let)h(us)h(see)g(what)f(happ)q(ens)g(when)h(w)o(e)f(t)o(yp)q(e:) -45 702 y Fm(>>)21 b([x)h(y])f(=)h(netsolve\('eig',a)o(\))-45 752 y(Contacting)e(server)g(on)i(cupid.cs.utk.edu)-45 852 y(x)g(=)217 b(y)22 b(=)42 902 y(10.1204)282 b(0)42 952 y(-0.9801)173 b(0.8991)42 1001 y(-0.9801)151 b(-0.8991)42 1051 y(-1.0195)282 b(0)42 1101 y(-0.6416)173 b(0.6511)86 1151 y(...)239 b(...)86 1201 y(...)g(...)-45 1286 y Fp(As)16 b(men)o(tioned)e(earlier,)h(the)h(user)g(can)f(decide)h(to)f(regroup)h Fi(x)f Fp(and)g Fi(y)i Fp(in)o(to)d(one)i(single)f(complex)f(v)o (ector.)22 b(Let)16 b(us)f(mak)o(e)-45 1336 y(it)f(clear)h(again)e (that)i(this)f(p)q(ossibilit)o(y)g(is)g(a)g(sp)q(eci\014cit)o(y)i(of)e Fm(eig)f Fp(and)i(is)f(not)g(a)o(v)n(ailable)f(in)h(general)g(for)h (all)e(problems.)19 b(T)m(o)-45 1385 y(merge)13 b Fi(x)h Fp(and)g Fi(y)q Fp(,)g(the)g(user)h(just)f(has)g(to)g(t)o(yp)q(e:)-45 1470 y Fm(>>)21 b([x])h(=)f(netsolve\('eig',a\))-45 1520 y(Contacting)f(server)g(on)i(cupid.cs.utk.edu)-45 1620 y(x)g(=)42 1670 y(10.1204)42 1719 y(-0.9801)f(+)g(0.8991i)42 1769 y(-0.9801)g(-)g(0.8991i)42 1819 y(-1.0195)42 1869 y(-0.6416)g(+)g(0.6511i)129 1919 y(.........)129 1969 y(.........)-45 2137 y Fh(4.2.4)55 b(Calling)18 b Fg(netsolve)p 529 2137 16 2 v 16 w(nb\(\))-45 2217 y Fp(The)11 b(ob)o(vious)e(dra)o (wbac)o(k)h(of)f(the)i(function)f Fm(netsolve\(\))e Fp(is)i(that)g (while)g(the)h(computation)d(is)i(b)q(eing)g(p)q(erformed)g(remotely)m (,)-45 2267 y(the)16 b(user)g(m)o(ust)f(simply)e(w)o(ait)i(to)g(get)g (bac)o(k)h(the)g(prompt.)21 b(T)m(o)14 b(address)j(this)e(dra)o(wbac)o (k,)h(w)o(e)f(pro)o(vide)g Fm(netsolve)p 1795 2267 14 2 v 14 w(nb\(\))p Fp(.)-45 2317 y(This)i(second)h(function)e(allo)o(ws) g(the)i(user)g(to)e(send)i(non)o(blo)q(c)o(king)e(requests)j(to)d (NetSolv)o(e.)28 b(Once)18 b(the)f(user)h(has)f(called)-45 2366 y Fm(netsolve)p 134 2366 V 14 w(nb\(\))p Fp(,)11 b(he)h(gets)h(bac)o(k)f(the)h(con)o(trol.)k(He)12 b(can)g(then)h(do)f (some)f(w)o(ork)g(in)h Fo(p)n(ar)n(al)r(lel)f Fp(and)h(c)o(hec)o(k)h (for)e(the)i(completion)-45 2416 y(of)i(the)h(request)h(later.)23 b(He)16 b(can)g(ev)o(en)g(send)h(m)o(ultiple)c(requests)k(to)f(NetSolv) o(e.)23 b(Thanks)16 b(to)f(the)h(load-balancing)d(strat-)-45 2466 y(egy)j(implemen)o(ted)e(in)h(the)i(NetSolv)o(e)f(agen)o(t,)h(all) d(these)k(requests)g(will)c(b)q(e)j(solv)o(ed)f(on)g(di\013eren)o(t)h (mac)o(hines)e(if)g(p)q(ossible,)-45 2516 y(ac)o(hieving)e(some)g Fo(NetSolve-p)n(ar)n(al)r(lelism)p Fp(.)k(Let)d(us)g(no)o(w)g(describ)q (e)h(this)f(function)g(on)g(the)g Fm(eig)f Fp(example.)-45 2569 y(As)h(in)g(Section)g(4.2.3,)e(the)i(user)h(creates)h(a)e(300)8 b Fj(\002)i Fp(300)j(matrix)f(and)h(calls)h(NetSolv)o(e:)-45 2654 y Fm(>>)21 b(a)h(=)g(rand\(300\);)-45 2704 y(>>)f([r])h(=)f (netsolve_nb\('send')o(,'eig)o(',a\))909 2828 y Fp(16)p eop %%Page: 17 19 17 18 bop -45 195 a Fp(Ob)o(viously)m(,)18 b(the)g(calling)f(sequence)k (to)d Fm(netsolve)p 786 195 14 2 v 14 w(nb\(\))f Fp(is)h(a)g(little)g (di\013eren)o(t)h(from)d(the)j(one)g(to)f Fm(netsolve\(\))p Fp(.)29 b(The)-45 245 y(left-hand)14 b(side)g(alw)o(a)o(ys)f(con)o (tains)h(one)g(single)g(argumen)o(t.)j(Up)q(on)d(completion)e(of)i (this)g(call,)f(it)g(will)g(con)o(tain)g(a)h Fo(NetSolve)-45 295 y(r)n(e)n(quest)j(hand)r(ler)p Fp(.)27 b(The)17 b(righ)o(t-hand)f (side)h(is)g(comp)q(osed)f(of)h(t)o(w)o(o)f(parts:)h(the)g Fo(action)g Fp(to)g(p)q(erform)f(and)g(the)i(argumen)o(ts)-45 345 y(that)d(w)o(ould)f(b)q(e)i(passed)g(to)f Fm(netsolve\(\))p Fp(.)k(In)c(this)g(example,)e(the)j(action)f(to)f(p)q(erform)h(is)f Fm('send')p Fp(,)g(whic)o(h)h(means)f(that)-45 394 y(w)o(e)f(send)h(a)f (request)h(to)f(NetSolv)o(e.)18 b(Throughout)12 b(this)h(section,)h(w)o (e)f(will)e(encoun)o(ter)k(all)c(the)j(p)q(ossible)f(actions,)g(and)f (they)-45 444 y(will)g(b)q(e)j(summarized)d(in)h(App)q(endix)i(A.)-45 497 y(Let)f(us)h(resume)f(our)g(example)e(and)i(see)h(what)f(NetSolv)o (e)g(answ)o(ers)h(to)f(the)g(\014rst)h(call)e(to)h Fm(netsolve)p 1554 497 V 14 w(nb\(\))f Fp(:)-45 583 y Fm(>>)21 b([r])h(=)f (netsolve_nb\('send')o(,'eig)o(',a\))-45 633 y(Contacting)f(server)g (cupid.cs.utk.edu)-45 683 y(r)i(=)f(0)-45 769 y(netsolve)p 134 769 V 14 w(nb\(\))15 b Fp(returns)i(a)f(request)h(handler:)23 b Fm(0)p Fp(.)g(This)16 b(request)i(handler)e(will)e(b)q(e)i(used)h(in) f(the)g(subsequen)o(t)i(calls)d(to)-45 818 y(the)g(function.)20 b(The)15 b(request)h(is)f(b)q(eing)f(pro)q(cessed)j(on)e Fm(cupid)p Fp(,)e(and)h(the)h(result)h(will)d(ev)o(en)o(tually)h(come)g (bac)o(k.)20 b(The)15 b(user)-45 868 y(can)f(obtain)f(this)h(result)h (in)e(one)h(of)g(t)o(w)o(o)f(w)o(a)o(ys.)18 b(The)c(\014rst)h(one)f(is) g(to)f(call)g Fm(netsolve)p 1318 868 V 14 w(nb\(\))g Fp(with)h(the)h Fm('probe')d Fp(action)h(:)-45 954 y Fm(>>)21 b([status])g(=)g(netsolve_nb\('probe)o(',r\))-45 1040 y(netsolve)p 134 1040 V 14 w(nb\(\))9 b Fp(returns)j(the)e Fo(status)g Fp(of)f(a)h(p)q(ending)g(request.)18 b(The)11 b(righ)o(t-hand)e(side)h(con)o(tains)g(the)g(action,)g(as)g(is)g (required)-45 1090 y(for)j Fm(netsolve)p 197 1090 V 14 w(nb\(\))p Fp(,)f(and)i(the)g(request)h(handler.)j(This)13 b(call)g(returns)i(imm)o(ediately)m(,)10 b(and)j(prin)o(ts)h(out)f(a)g (message.)18 b(Here)-45 1140 y(are)c(the)h(t)o(w)o(o)e(p)q(ossible)h (scenarios:)-45 1226 y Fm(>>)21 b([status])g(=)g(netsolve_nb\('probe)o (',r\))-45 1276 y(Not)g(ready)g(yet)-45 1326 y(status)g(=)g(-1)-45 1375 y(...)-45 1425 y(>>)g([status])g(=)g(netsolve_nb\('probe)o(',r\)) -45 1475 y(Result)g(available)-45 1525 y(status)g(=)g(0)-45 1611 y Fp(T)m(o)13 b(obtain)g(the)i(result)f(of)g(the)g(computation)e (one)i(m)o(ust)f(call)g Fm(netsolve)p 1127 1611 V 14 w(nb\(\))g Fp(with)h(the)g Fm('wait')f Fp(action:)-45 1697 y Fm(>>)21 b([x)h(y])f(=)h(netsolve_nb\('wai)o(t',r\))-45 1747 y(x)g(=)217 b(y)22 b(=)42 1797 y(10.1204)282 b(0)42 1846 y(-0.9801)173 b(0.8991)42 1896 y(-0.9801)151 b(-0.8991)42 1946 y(-1.0195)282 b(0)42 1996 y(-0.6416)173 b(0.6511)86 2046 y(...)239 b(...)86 2095 y(...)g(...)-45 2181 y Fp(As)15 b(for)g Fm(netsolve\(\))p Fp(,)d(one)j(can)g(merge)f(the)i(real)f(part) g(and)f(the)i(imaginary)11 b(part)k(in)o(to)g(a)f(single)g(complex)g(v) o(ector.)22 b(The)-45 2231 y(t)o(ypical)13 b(scenario)i(is)f(to)h(call) e Fm(netsolve)p 600 2231 V 14 w(nb\(\))h Fp(with)f(the)i(action)f Fm('send')p Fp(,)f(then)i(mak)o(e)e(rep)q(eated)j(calls)d(with)h(the)h (action)-45 2281 y Fm('probe')d Fp(un)o(til)g(there)i(is)f(nothing)g (more)f(to)h(do)g(than)g(w)o(ait)f(for)h(the)g(result.)19 b(The)13 b(user)i(then)e(calls)g Fm(netsolve)p 1713 2281 V 14 w(nb\(\))f Fp(with)-45 2331 y(the)i(action)e Fm('wait')p Fp(.)17 b(It)c(is)g(of)g(course)h(p)q(ossible)f(to)g(call)g Fm(netsolve)p 1028 2331 V 14 w(nb\(\))f Fp(with)h(the)g(action)g Fm('wait')f Fp(b)q(efore)i(making)c(an)o(y)-45 2381 y(call)j(with)h (the)g(action)g Fm('probe')p Fp(.)i(One)f(last)e(action)h(can)g(b)q(e)h (passed)g(to)e Fm(netsolve)p 1289 2381 V 14 w(nb\(\))p Fp(,)g(as)h(sho)o(wn)g(here:)-45 2467 y Fm(>>)21 b (netsolve_nb\('status)o('\))-45 2553 y Fp(This)c(command)c(will)j (return)h(a)g(description)g(of)f(all)g(the)h(p)q(ending)f(requests.)29 b(Let)17 b(us)g(see)h(ho)o(w)e(it)g(w)o(orks)h(on)f(this)h(last)-45 2603 y(complete)c(example:)-45 2689 y Fm(>>)21 b(a)h(=)g(rand\(800\);)d (b)j(=)f(rand\(800\);)909 2828 y Fp(17)p eop %%Page: 18 20 18 19 bop -45 195 a Fm(>>)21 b([r1])g(=)h(netsolve_nb\('send)o(','ei)o (g',a\))-45 245 y(Contacting)e(server)g(on)i(cupid.cs.utk.edu)-45 295 y(r1)f(=)h(0)-45 345 y(>>)f([r2])g(=)h(netsolve_nb\('send)o(','ei)o (g',b\))-45 394 y(Contacting)e(server)g(on)i(vw.cs.Berkeley.e)o(du)-45 444 y(r2)f(=)h(1)-45 526 y Fp(No)o(w)14 b(let)g(us)g(see)h(what)f Fm(status)e Fp(do)q(es:)-45 608 y Fm(>>)21 b(netsolve_nb\('status)o ('\))-45 657 y(Pending)f(NetSolve)g(requests)h(:)-45 707 y(Request)f(#0:)i('eig',)e(submitted)g(to)h(cupid.cs.utk.edu\(12)o (8.169)o(.94.2)o(21\))129 757 y(Result)g(available)-45 807 y(Request)f(#1)i(-)f(eig)129 857 y(Assigned)f(to)i (vw.cs.Berkeley.ed)o(u)d(3)j(seconds)e(ago)129 906 y(Should)h(complete) f(in)h(202)h(seconds)-45 988 y Fp(The)11 b(user)h(can)f(c)o(hec)o(k)h (what)e(requests)j(he)e(has)g(sen)o(t)h(so)e(far)h(and)f(obtain)g(an)h (estimation)e(ab)q(out)h(the)i(completion)d(times.)16 b(By)-45 1038 y(using)d(the)g Fm(status)e Fp(action,)i(the)g(user)h (can)f(also)f(\014nd)h(out)f(whether)j(a)d(request)i(is)f(still)f (running)g(or)h(has)g(b)q(een)h(completed.)-45 1088 y(By)f(sending)g(m) o(ultiple)e(non)i(blo)q(c)o(king)f(requests)j(to)e(NetSolv)o(e)g(and)g (relying)f(on)h(the)g(agen)o(t)g(for)g(load)f(balancing,)f(the)j(user) -45 1138 y(can)g(ac)o(hiev)o(e)g(parallelism.)-45 1256 y Fh(4.2.5)55 b(What)19 b(Can)g(Go)g(W)-5 b(rong?)-45 1336 y Fp(During)12 b(a)g(computation,)f(t)o(w)o(o)h(classes)h(of)f (error)i(can)f(o)q(ccur:)18 b(NetSolv)o(e)13 b(failures)f(and)g(user)i (mistak)o(es.)i(Let)d(us)g(sho)o(w)g(here)-45 1385 y(a)h(few)g (examples:)-45 1474 y Fm(>>)21 b(netsolve)-45 1524 y(No)g(agent)g (running)f(on)i(demidoff.cs.utk.e)o(du)-45 1574 y(...)-45 1624 y(>>[x])f(=)g(netsolve\('foo',a\))-45 1674 y(Unknown)f(problem)h ('foo')-45 1723 y(...)-45 1773 y(>>)g([a)h(b])f(=)h(netsolve_nb\('sen)o (d','e)o(ig',a)o(\))-45 1823 y(Matrix)f('a')g(should)f(be)i(square)-45 1912 y Fp(In)16 b(case)h(of)f(error,)h(the)f(di\013eren)o(t)h(NetSolv)o (e)g(functions)f(prin)o(t)g(out)g(appropiate)g(error)h(messages.)24 b(Ho)o(w)o(ev)o(er,)17 b(when)f(the)-45 1962 y(user)k(writes)f(Matlab)f (scripts)h(that)g(call)f(NetSolv)o(e,)h(he/she)h(needs)g(W)m(a)o(ys)d (to)h(catc)o(h)i(the)f(errors)h(while)e(the)h(script)g(is)-45 2012 y(running.)f(Hence)d(the)g(functions)f(describ)q(ed)h(in)f(the)g (next)h(section.)-45 2130 y Fh(4.2.6)55 b(Catc)n(hing)20 b(NetSolv)n(e)d(errors)-45 2209 y Fp(There)22 b(are)f(t)o(w)o(o)f (NetSolv)o(e)h(functions)f(that)h(can)g(b)q(e)g(called)f(from)f(Matlab) h(to)h(catc)o(h)g(errors.)39 b(The)21 b(\014rst)h(function,)-45 2259 y Fm(netsolve)p 134 2259 14 2 v 14 w(err\(\))14 b Fp(tak)o(es)h(no)g(argumen)o(ts)g(and)f(returns)j(an)e(in)o(teger)g (that)g(is)g(the)h(NetSolv)o(e)f(error)h(co)q(de)g(returns)h(b)o(y)d (the)-45 2309 y(last)g(call)f(to)g(a)h(NetSolv)o(e)g(function)g(\(see)h (Appp)q(endix)f(D)g(for)f(a)h(list)f(of)h(the)g(p)q(ossible)g(error)h (co)q(des\).)20 b(Here)15 b(is)e(a)h(call:)-45 2391 y Fm(>>)21 b(e)h(=)g(netsolve_err)-45 2441 y(e)g(=)f(-4)-45 2522 y Fp(The)14 b(other)f(function,)g Fm(netsolve)p 500 2522 V 14 w(errmsg\(\))f Fp(tak)o(es)h(an)g(error)h(co)q(de)g(as)g (argumen)o(t)e(and)h(returns)i(a)d(string)i(that)f(con)o(tains)-45 2572 y(the)h(corresp)q(onding)h(error)g(message.)j(It)c(is)g(usual)f (to)h(call)f Fm(netsolve)p 1072 2572 V 14 w(errmsg\(\))f Fp(as)i(follo)o(ws:)-45 2654 y Fm(>>)21 b([msg])g(=)h (netsolve_errmsg\()o(netso)o(lve_e)o(rr\))-45 2704 y(msg)f(=)h (Impossible)d(to)j(contact)e(Agent)909 2828 y Fp(18)p eop %%Page: 19 21 19 20 bop -45 195 a Fp(With)10 b(these)j(t)o(w)o(o)e(functions,)g(it)g (is)g(p)q(ossible)g(to)g(write)h(Matlab)e(scripts)i(that)f(call)g (NetSolv)o(e)g(and)g(handle)g(all)f(the)i(NetSolv)o(e)-45 245 y(errors)j(at)f(run)o(time.)-45 364 y Fh(4.2.7)55 b(Demo)-45 444 y Fp(A)15 b(NetSolv)o(e-Matlab)g(demo)f(is)i(a)o(v)n (ailable)d(with)i(the)h(NetSolv)o(e)f(distribution.)22 b(It)16 b(consists)g(of)f(a)g(set)h(of)f(Matlab)g(scripts)-45 494 y(that)c(call)g(NetSolv)o(e)g(to)g(compute)g(parts)h(of)f(the)g (Mandelbrot)h(set.)18 b(The)12 b(main)d(script)j(is)f(called)g Fm(mandel.m)e Fp(and)j(is)f(lo)q(cated)-45 543 y(in)i Fm($NETSOLVE)p 204 543 14 2 v 14 w(ROOT/src/Demo/mande)o(lbrot)o(/)p Fp(.)i(T)m(o)e(run)h(the)h(demo,)d(just)i(t)o(yp)q(e)h Fm(mandel)d Fp(at)i(the)g(Matlab)g(prompt.)-45 684 y Fk(4.3)66 b(C)22 b(and)h(F)-6 b(ortran)24 b(In)n(terfaces)-45 786 y Fh(4.3.1)55 b(In)n(tro)r(duction)-45 865 y Fp(The)16 b(F)m(ortran)g(in)o(terface)g(is)g(built)f(on)g(top)h(of)f(the)i(C)e (in)o(terface,)i(since)f(all)f(the)h(net)o(w)o(orking)g(underneath)h (NetSolv)o(e)f(has)-45 915 y(to)d(b)q(e)h(done)g(in)f(C.)g(Ho)o(w)o(ev) o(er,)g(w)o(e)h(c)o(hose)g(to)f(write)h(the)g(F)m(ortran)f(in)o (terface)h(with)f(subroutines)h(instead)g(of)f(functions)g(\(for)-45 965 y(reasons)h(of)f(compiler)f(compatibilities\).)j(The)f(C)f (functions)h(all)e(return)j(an)e(NetSolv)o(e)g Fo(err)n(or)g(c)n(o)n (de)h Fp(equal)f(to)g Fm(0)g Fp(in)g(case)i(of)-45 1015 y(success)h(or)e(to)g(a)f(negativ)o(e)h(v)n(alue)f(in)g(case)i(of)e (error.)19 b(App)q(endix)14 b(D)g(con)o(tains)f(the)i(list)e(of)g(all)g (p)q(ossible)h(error)g(co)q(des.)20 b(The)-45 1065 y(F)m(ortran)15 b(subroutines)g(just)g(tak)o(e)g(an)g(extra)g(in)o(teger)g(argumen)o(t) f(\(passed)i(b)o(y)e(reference\))k(that)c(con)o(tains)h(the)g(error)h (co)q(de)-45 1115 y(after)e(completion)e(of)i(the)g(call.)j(The)e (reference)h(man)o(uals)c(for)h(C)h(and)g(F)m(ortran)g(are)g(in)f(App)q (endices)j(B)e(and)g(C.)-45 1167 y(The)f(basic)f(concepts)i(here)g(are) f(the)g(same)e(as)i(the)g(ones)g(w)o(e)g(ha)o(v)o(e)f(in)o(tro)q(duced) h(in)f(Section)h(4.2)e(for)h(the)h(Matlab)f(in)o(terface,)-45 1217 y(esp)q(ecially)i(the)h(abilit)o(y)d(to)h(call)h(NetSolv)o(e)g(in) f(a)h(blo)q(c)o(king)f(or)g(non)o(blo)q(c)o(king)g(fashion.)-45 1270 y(Compiling)e(the)j(C/F)m(ortran)g(in)o(terface)g(as)g(explained)g (in)f(Section)h(3.4)f(pro)q(duces)j(the)e(t)o(w)o(o)g(follo)o(wing)d (arc)o(hiv)o(e)j(\014les:)17 1356 y Fj(\017)21 b Fm(Netsolve-1.2.x/l)o (ib/$N)o(ETSOL)o(VE)p 675 1356 V 13 w(ARCH/libnetsolve)o(.a)11 b Fp(:)18 b(the)c(C)g(library)17 1439 y Fj(\017)21 b Fm(Netsolve-1.2.x/l)o(ib/$N)o(ETSOL)o(VE)p 675 1439 V 13 w(ARCH/libfnetsolv)o(e.a)11 b Fp(:)18 b(the)c(F)m(ortran)g(library) -45 1525 y(Before)h(linking)d(to)i(one)g(of)f(those)i(libraries,)e(the) h(user)h(m)o(ust)e(include)h(the)h(appropriate)f(header)h(\014le)e(in)h (his)g(program:)17 1611 y Fj(\017)21 b Fm(Netsolve-1.2.x/i)o(nclud)o (e/net)o(solve)o(.h)11 b Fp(in)i(C,)17 1694 y Fj(\017)21 b Fm(Netsolve-1.2.x/i)o(nclud)o(e/fne)o(tsolv)o(e.h)11 b Fp(in)i(F)m(ortran.)-45 1780 y(The)d(F)m(ortran)g(\014le)f(inclusion) g(is)h(not)f(mandatory)m(,)f(but)i(simply)e(allo)o(ws)g(calling)g (subroutines)j(to)f(manipulates)d(the)k(NetSolv)o(e)-45 1830 y(error)k(co)q(des)g(b)o(y)f(v)n(ariable)e(name)h(rather)i(than)f (b)o(y)f(v)n(ariable)g(v)n(alue)g(to)h(increase)h(source)g(readabilit)o (y)m(.)-45 1883 y(W)m(e)i(describ)q(e)h(the)g(C)f(and)g(F)m(ortran)g (in)o(terfaces)h(b)o(y)e(the)i(mean)e(of)g(an)h(examples.)26 b(In)17 b(the)h(follo)o(wing)c(section)k(w)o(e)f(start)-45 1933 y(dev)o(eloping)g(the)h(example)e(b)o(y)h(demonstrating)f(ho)o(w)h (a)g(user)h(can)g(et)f(information)e(ab)q(out)i(the)h(calling)e (sequence)j(to)e(a)-45 1982 y(giv)o(en)c(problem.)-45 2102 y Fh(4.3.2)55 b(What)19 b(Calling)f(Sequence)f(?)-45 2181 y Fp(In)f(Section)g(2.2)f(w)o(e)g(already)h(describ)q(ed)h(the)g (reasons)f(wh)o(y)g(the)g(C)g(and)f(F)m(ortran)h(in)o(terfaces,)h(as)e (they)i(are)f(not)f(ob)r(ject-)-45 2231 y(capable,)i(need)g(to)f(use)i (sp)q(eci\014c)g(calling)d(sequences)k(that)d(are)h(more)f(in)o(v)o (olv)o(ed)f(than)h(the)h(ones)g(used)h(from)c(Matlab)i(or)-45 2281 y(Mathematica)d(.)-45 2334 y(Let)j(us)f(tak)o(e)h(a)e(v)o(ery)i (simple)e(example:)19 b(the)d(user)g(w)o(an)o(ts)f(to)g(p)q(erform)g(a) g(dense)h(linear)f(system)g(solv)o(e.)22 b(The)15 b(\014rst)h(thing)-45 2383 y(to)f(kno)o(w,)g(as)h(stated)g(in)f(earlier)h(c)o(hapters,)h(is)e (the)h(name)f(or)g(IP)h(address)h(of)d(a)i(host)f(running)h(a)f (NetSolv)o(e)h(agen)o(t.)23 b(The)-45 2433 y(default)16 b(NetSolv)o(e)h(agen)o(t)f(running)h(at)f(the)h(Univ)o(ersit)o(y)f(of)g (T)m(ennessee)j(is)d(a)o(w)o(are)h(of)f(man)o(y)e(serv)o(ers)19 b(that)d(can)h(p)q(erform)-45 2483 y(the)c(computation.)j(In)d(fact,)g (a)f(dense)i(linear)e(system)h(solv)o(e)g(is)f(pro)o(vided)h(with)f (the)i(NetSolv)o(e)f(distribution)f(as)h(a)f(default)-45 2533 y(n)o(umerical)j(soft)o(w)o(are)i(for)f(the)i(serv)o(er.)28 b(The)17 b(user)h(has)f(no)o(w)f(t)o(w)o(o)h(p)q(ossible)g(courses)h (of)e(action)h(to)f(\014nd)h(out)g(ab)q(out)f(the)-45 2583 y(problem)11 b(\(see)j(Section)f(2.3\).)k(Let)c(us)g(assume)f (that)h(the)g(user)h(c)o(ho)q(oses)g(to)e(use)h(the)h(UNIX)f(command)c (line)k(managemen)o(t)-45 2632 y(to)q(ols)j(\(see)h(Section)f(6.4)f (for)g(a)h(complete)f(description)i(of)e(these)i(to)q(ols\).)24 b(The)16 b(alternativ)o(e)g(w)o(ould)f(b)q(e)i(to)e(use)i(the)f(CGI)-45 2682 y(scripts)f(on)f(the)g(NetSolv)o(e)g(homepage.)j(Here)e(is)f(a)g (t)o(ypical)f(session:)909 2828 y(19)p eop %%Page: 20 22 20 21 bop -45 195 a Fm(\045)22 b(NS_problems)d(bluegrass.cs.utk.e)o(du) -45 245 y(/ImageProcessing/)o(Filte)o(rs/bl)o(ur)-45 295 y(/LinearAlgebra/LA)o(PACK/)o(Linea)o(rSyst)o(ems/d)o(gesv)-45 345 y(/LinearAlgebra/LA)o(PACK/)o(Linea)o(rSyst)o(ems/l)o(insol)-45 394 y(\045)j(NS_probdesc)d(bluegrass.cs.utk.e)o(du)g(dgesv)-45 444 y(--)i(dgesv)g(--)h(From)e(LAPACK)h(-)-45 494 y(Compute)f(the)i (solution)e(to)h(a)h(real)f(system)f(of)i(linear)e(equations)-1 544 y(A)h(*)h(X)f(=)h(b)-45 594 y(where)f(A)g(is)h(an)f(N-by-B)g (matrix)f(and)h(X)h(and)f(B)h(are)f(N-by-NRHS)f(matrices.)-45 643 y(Matlab)h(Example)f(:)h([x)h(y)f(z)h(info)f(])h(=)f (netsolve\('dgesv',a)o(,b\))-45 693 y(http://www.netlib)o(.org/)o (lapac)o(k/ind)o(ex.ht)o(ml)-45 743 y(*)h(2)f(objects)g(in)g(INPUT)-23 793 y(-)g(input)g(0:)h(Matrix)e(Double)h(Precision)f(Real.)-23 843 y(Matrix)g(A)-23 892 y(-)h(input)g(1:)h(Matrix)e(Double)h (Precision)f(Real.)-23 942 y(Right)h(hand)g(side)-45 992 y(*)h(4)f(objects)g(in)g(OUTPUT)-23 1042 y(-)g(output)g(0:)g (Matrix)g(Double)f(Precision)g(Real.)-23 1092 y(LU)h(factors)g(\()g(A)h (=)f(P*L*U\))-23 1142 y(-)g(output)g(1:)g(Vector)g(Integer.)-23 1191 y(Vector)f(of)i(pivots)e(\(defines)g(the)i(P)f(matrix\))-23 1241 y(-)g(output)g(2:)g(Matrix)g(Double)f(Precision)g(Real.)-23 1291 y(Solution)-23 1341 y(-)h(output)g(3:)g(Scalar)g(Integer.)-23 1391 y(INFO)-1 1440 y(0)43 b(successful)-1 1490 y(<0)21 b(error)g(on)g(calling)f(?)-1 1540 y(>0)h(QR)g(algorithm)f(failed)-45 1590 y(...[to)h(be)g(continued]...)-45 1672 y Fp(W)m(e)15 b(will)f(see)i(in)f(Chapter)h(6.3)f(ho)o(w)g(the)h(serv)o(ers)h(sp)q (ecify)f(the)g(calling)e(sequence)j(to)e(a)h(giv)o(en)e(problem.)22 b(It)15 b(is)g(usual)g(for)-45 1722 y(serv)o(ers)j(to)f(enforce)g(the)h (same)d(calling)g(sequence)k(as)e(the)g(original)e(n)o(umerical)g(soft) o(w)o(are)h(and)h(to)f(giv)o(e)g(a)g(problem)f(the)-45 1772 y(name)f(of)h(the)h(original)d(library)i(function.)21 b(In)16 b(the)g(example,)d Fm(dgesv\(\))h Fp(is)h(the)h(name)e(of)h(a)g (LAP)m(A)o(CK)g(subroutine)h(and)-45 1821 y(the)d(user)g(can)f (therefore)i(exp)q(ect)g(the)e(calling)f(sequence)j(for)e(the)h (problem)d Fm(dgesv)i Fp(to)f(matc)o(h)g(the)i(one)f(of)g(the)h (subroutine.)-45 1871 y(One)k(can)f(see)g(in)g(the)g(problem)f(list)g (returned)i(b)o(y)f Fm(NS)p 827 1871 14 2 v 15 w(problems)e Fp(a)i(problem)e(called)i Fm(linsol)p Fp(.)22 b(In)16 b(this)g(v)o(ery)g(example,)-45 1921 y Fm(linsol)d Fp(is)g(a)h (simpli\014ed)e(v)o(ersion)i(of)f Fm(dgesv)g Fp(and)g(has)h(a)g (simpli\014ed)e(calling)g(sequence)k(c)o(hosen)f(b)o(y)f(who)q(ev)o(er) g(started)h(the)-45 1971 y(\014rst)h(serv)o(er)h(that)e(pro)o(vides)g (access)i(to)e(that)h(problem.)k(Since)c Fm(linsol)e Fp(is)h(not)g(the)h(name)e(of)h(a)f(LAP)m(A)o(CK)i(subroutine,)-45 2021 y(that)e(calling)e(sequence)k(can)f(b)q(e)f(arbitrary)m(.)-45 2074 y(No)o(w,)e(t)o(w)o(o)h(situations)g(are)g(p)q(ossible.)18 b(First,)13 b(the)h(user)g(already)f(kno)o(ws)g(the)h(n)o(umerical)d (soft)o(w)o(are)i(\(here)i(LAP)m(A)o(CK\))e(and)-45 2123 y(ma)o(y)h(ev)o(en)j(ha)o(v)o(e)f(co)q(de)h(already)f(written)h(in)f (terms)g(of)g(this)g(soft)o(w)o(are.)25 b(Then,)17 b Fo(switching)f Fp(to)g(NetSolv)o(e)g(is)g(immediate.)-45 2173 y(The)f(second)h(p)q(ossibilit)o(y)e(is)h(that)g(the)g(user)i(do)q (es)e(not)g(kno)o(w)g(the)g(soft)o(w)o(are.)21 b(Then)16 b(he)f(needs)h(to)f(pa)o(y)g(atten)o(tion)g(to)f(the)-45 2223 y(end)g(of)g(the)g(output)g(giv)o(en)g(b)o(y)f Fm(NS)p 501 2223 V 16 w(probdesc)p Fp(:)-45 2305 y Fm(*)22 b(Calling)e (sequence)g(from)h(C)h(or)f(Fortran)-45 2355 y(8)h(arguments)-23 2405 y(-)f(Argument)g(#0:)20 2455 y(-)h(number)f(of)g(rows)g(of)g (input)g(object)g(#0)g(\(A\))20 2504 y(-)h(number)f(of)g(columbs)f(of)i (input)e(object)h(#0)g(\(A\))20 2554 y(-)h(number)f(of)g(rows)g(of)g (input)g(object)g(#1)g(\(RHS\))-23 2604 y(-)g(Argument)g(#1:)20 2654 y(-)h(number)f(of)g(columbs)f(of)i(input)e(object)h(#1)g(\(RHS\)) -23 2704 y(-)g(Argument)g(#2:)909 2828 y Fp(20)p eop %%Page: 21 23 21 22 bop 20 195 a Fm(-)22 b(pointer)e(to)i(input)e(object)h(#0)g (\(A\))20 245 y(-)h(pointer)e(to)i(output)e(object)h(#0)g(\(LU\))20 295 y(-)h(pointer)e(to)i(output)e(object)h(#0)g(\(LU\))-23 345 y(-)g(Argument)g(#3:)20 394 y(-)h(leading)e(dimension)g(of)i(input) e(object)h(#0)g(\(A\))-23 444 y(-)g(Argument)g(#4:)20 494 y(-)h(pointer)e(to)i(output)e(object)h(#1)g(\(PIVOT\))-23 544 y(-)g(Argument)g(#5:)20 594 y(-)h(pointer)e(to)i(input)e(object)h (#1)g(\(RHS\))20 643 y(-)h(pointer)e(to)i(output)e(object)h(#1)g (\(PIVOT\))20 693 y(-)h(pointer)e(to)i(output)e(object)h(#2)g (\(SOLUTION\))-23 743 y(-)g(Argument)g(#6:)20 793 y(-)h(leading)e (dimension)g(of)i(input)e(object)h(#1)g(\(RHS\))-23 843 y(-)g(Argument)g(#7:)20 892 y(-)h(pointer)e(to)i(output)e(object)h(#3)g (\(INFO\))-45 978 y Fp(This)16 b(output)g(can)f(app)q(ear)i(rather)f (cryptic)h(at)e(\014rst.)25 b(Let)16 b(us)g(w)o(ork)f(through)h(it)f (step)i(b)o(y)f(step.)24 b(First,)16 b(the)h(n)o(um)o(b)q(er)e(of)-45 1028 y(argumen)o(ts)e(in)h(the)g(calling)f(sequence)j(is)d(8.)18 b(This)c(means)f(that)h(the)g(call)f(from)g(C)g(will)g(lo)q(ok)g(lik)o (e:)-45 1113 y Fm(status)21 b(=)g(netsl\('dgesv\(\)',X0)o(,X1,X)o (2,X3,)o(X4,X5)o(,X6,)o(X7\);)-45 1199 y Fp(No)o(w,)14 b(eac)o(h)i(argumen)o(t)d(is)i(describ)q(ed)i(in)d(the)h(output)g(of)g Fm(NS)p 925 1199 14 2 v 15 w(probdesc)e Fp(and)i(this)f(description)i (can)f(b)q(e)g(translated)h(in)o(to)-45 1249 y(meaningful)10 b(v)n(ariable)h(names)h(in)g(the)h(user)g(source)h(co)q(de.)k(F)m(or)13 b(instance,)g Fm(X2)f Fp(should)g(b)q(e)h(a)f(p)q(oin)o(ter)h(to)f(the) h(matrix)e(of)g(the)-45 1298 y(linear)k(system,)f(and)h Fm(X3)g Fp(should)f(b)q(e)i(an)f(in)o(teger)g(that)g(is)g(the)h (leading)e(dimension)f(of)i(the)h(matrix.)j(W)m(e)c(can)g(no)o(w)g(mo)o (v)o(e)-45 1348 y(on)f(to)f(the)i(descriptions)g(of)e(the)i(di\013eren) o(t)f(w)o(a)o(ys)g(of)f(calling)g(NetSolv)o(e)h(from)e(C)i(or)g(F)m (ortran.)-45 1467 y Fh(4.3.3)55 b(Blo)r(c)n(king)18 b(Call)-45 1547 y Fp(The)f(blo)q(c)o(king)f(call)h(to)g(NetSolv)o(e)g(from)e(C)i (or)g(F)m(ortran)g(is)g(the)g(simplest.)27 b(Sp)q(eci\014cally)m(,)16 b(one)i(calls)e(a)h(single)g(function,)-45 1597 y Fm(netsl\(\))p Fp(.)24 b(This)17 b(function)f(returns)i(an)e(error)i(co)q(de.)26 b(It)17 b(tak)o(es)g(as)g(argumen)o(ts)e(the)i(name)f(of)g(a)g(problem) f(and)h(the)h(list)-45 1647 y(of)e(input)g(data.)23 b(These)17 b(inputs)f(are)g(listed)g(according)f(to)h(the)g(calling)e(sequence)k (discussed)f(in)e(Section)h(4.3.2.)22 b(The)16 b(C)-45 1696 y(protot)o(yp)q(e)e(of)g(the)g(function)g(is)-45 1782 y Fm(int)21 b(netsl\(char)f(*problem_name,)f(...)i(<)h(argument)e (list)h(>)g(...\))-45 1867 y Fp(and)14 b(the)g(F)m(ortran)g(protot)o (yp)q(e)g(is)-45 1953 y Fm(SUBROUTINE)20 b(FNETSL\(PROBLEM_N)o(AME,)e (INFO,)j(...)g(<)h(argument)e(list)h(>)h(...\))-45 2038 y Fp(where)15 b Fm(PROBLEM)p 232 2038 V 14 w(NAME)e Fp(is)h(a)g(string) g(and)f Fm(INFO)g Fp(is)h(the)h(status)f(co)q(de)h(returned)h(b)o(y)d (NetSolv)o(e.)-45 2091 y(Let)h(us)h(resume)f(our)g(example)e(of)h(the)i (call)e(to)h Fm(dgesv)p Fp(.)j(In)d(F)m(ortran,)f(the)h(direct)h(call)e (to)h(LAP)m(A)o(CK)g(lo)q(oks)f(lik)o(e)86 2177 y Fm(call)21 b(DGESV\(N,1,A,MAX,)o(IPIV,)o(B,MAX)o(,IERR)o(\))-45 2262 y Fp(The)14 b(equiv)n(alen)o(t)g(blo)q(c)o(king)e(call)i(to)f (NetSolv)o(e)h(is)86 2348 y Fm(call)21 b(FNETSL\('DGESV\(\)')o(,INFO)o (,)325 2397 y(N,1,A,MAX,IPIV,B,MAX)o(,IERR)o(\))-45 2483 y Fp(The)14 b(call)f(in)h(C)g(is)-45 2568 y Fm(info)21 b(=)h(netsl\('dgesv\(\)')o(,n,1,)o(a,max)o(,ipiv)o(,b,ma)o(x,&i)o (nfo\))-45 2654 y Fp(Notice)14 b(that)f(the)i(name)d(of)h(the)h (problem)e(is)h Fo(c)n(ase)i(insensitive)e Fp(and)h(that)f(it)g(is)h(p) q(ost\014xed)g(b)o(y)f(an)h(op)q(ening)f(and)g(a)h(closing)-45 2704 y(paren)o(thesis.)k(The)11 b(paren)o(theses)h(are)f(used)g(b)o(y)f (NetSolv)o(e)g(to)g(handle)g(F)m(ortran/C)g(in)o(terop)q(erabilit)o(y)g (on)g(certain)g(platforms.)909 2828 y(21)p eop %%Page: 22 24 22 23 bop -45 195 a Fp(In)14 b(F)m(ortran,)f(ev)o(ery)i(iden)o (ti\014er)f(represen)o(ts)j(a)c(p)q(oin)o(ter,)h(but)g(in)f(C)h(w)o(e)g (actually)f(had)h(the)g(c)o(hoice)h(to)e(use)i(p)q(oin)o(ters)g(or)f (not.)-45 245 y(W)m(e)f(c)o(hose)i(to)f(use)h(in)o(teger)f(\()p Fm(int)p Fp(\))g(for)f(the)i(sizes)g(of)e(the)h(matrices/v)o(ectors,)g (but)g(p)q(oin)o(ters)h(for)e(ev)o(erything)i(else.)-45 298 y(F)m(rom)e(the)j(user's)g(p)q(oin)o(t)f(of)f(view,)h(the)h(call)e (to)h(NetSolv)o(e)h(is)f(exactly)g(equiv)n(alen)o(t)f(to)h(a)g(call)f (to)h(LAP)m(A)o(CK.)g(One)h(detail,)-45 348 y(ho)o(w)o(ev)o(er,)c (needs)h(to)f(b)q(e)h(men)o(tioned.)j(Most)c(n)o(umerical)f(soft)o(w)o (are)h(is)f(written)i(in)e(F)m(ortran)h(and)g(requires)h(users)g(to)f (pro)o(vide)-45 397 y(w)o(orkspace)k(arra)o(ys)f(as)h(w)o(ell)e(as)i (data,)f(since)h(there)g(is)f(no)h(p)q(ossibilit)o(y)e(for)h(dynamic)e (memory)g(allo)q(cation.)21 b(Because)c(w)o(e)-45 447 y(preserv)o(ed)c(the)e(exact)h(calling)d(sequence)k(of)d(the)h(n)o (umerical)e(soft)o(w)o(ares,)j(w)o(e)f(require)g(the)h(user)f(to)g (pass)g(those)h(arra)o(ys.)17 b(But,)-45 497 y(since)d(the)f (computation)f(is)g(p)q(erformed)h(remotely)m(,)e(w)o(orkspace)j(on)f (the)g(clien)o(t)g(side)h(is)e(meaningless.)17 b(It)c(will,)e(in)i (fact,)f(b)q(e)-45 547 y(dynamically)h(created)18 b(on)d(the)i(serv)o (er)h(side.)24 b(Therefore,)18 b(when)e(the)h(n)o(umerical)d(soft)o(w)o (are)j(w)o(ould)e(require)i(w)o(orkspace,)-45 597 y(the)f(NetSolv)o(e)g (user)h(ma)o(y)c(pro)o(vide)i(an)h(empt)o(y)e(w)o(orkspace!)24 b(This)16 b(is)f(signaled)g(in)g(the)h(output)g(of)f Fm(NS)p 1600 597 14 2 v 15 w(probdesc)f Fp(b)o(y)h(an)-45 646 y(argumen)o(t)e(description)h(suc)o(h)h(as:)-23 728 y Fm(-)21 b(Argument)g(#6:)20 778 y(-)h(ignored)-45 896 y Fh(4.3.4)55 b(Non)n(blo)r(c)n(king)18 b(Call)-45 976 y Fp(W)m(e)13 b(dev)o(elop)q(ed)i(this)e(non)o(blo)q(c)o(king)g(call)f (for)i(the)g(same)f(reason)h(w)o(e)g(dev)o(elop)q(ed)g(one)g(for)f (Matlab)g(\(see)i(Section)f(4.2.4\):)i(to)-45 1026 y(allo)o(w)e(the)i (user)g(to)g(ha)o(v)o(e)f(some)f Fo(NetSolve-p)n(ar)n(al)r(lelism)p Fp(.)21 b(The)16 b(non)o(blo)q(c)o(king)e(v)o(ersion)i(of)f Fm(netsl\(\))f Fp(is)h Fm(netslnb\(\))p Fp(.)21 b(The)-45 1075 y(user)d(calls)f(it)g(exacly)h(as)f(he)h(w)o(ould)e(call)h Fm(netsl\(\))p Fp(.)27 b(If)17 b(the)h(call)e(to)h Fm(netslnb\(\))f Fp(is)h(successful,)i(it)e(returns)i(a)e(request)-45 1125 y(handler)d(in)f(the)i(form)d(of)h(an)h(\(p)q(ositiv)o(e\))g(in)o (teger.)k(If)c(it)f(is)h(not)g(successul,)h(it)f(returns)h(an)f(error)h (co)q(de.)k(Con)o(tin)o(uing)12 b(with)-45 1175 y(our)i(example:)86 1257 y Fm(call)21 b(FNETSLNB\('DGESV\()o(\)',RE)o(QUEST)o(,)325 1306 y(N,1,A,MAX,IPIV,B,MAX)o(,IERR)o(\))-45 1388 y Fp(and)14 b(in)f(C)h(:)-45 1470 y Fm(request)20 b(=)i(netslnb\('dgesv\(\)')o (,n,1,)o(a,max)o(,ipiv)o(,b,m)o(ax,&i)o(err\))-45 1551 y Fp(In)14 b(case)h(of)e(an)h(error,)g(the)h(request)g(handler)f (actually)f(con)o(tains)h(the)g(\(negativ)o(e\))g(NetSolv)o(e)g(error)h (co)q(de.)-45 1604 y(The)f(next)h(step)g(is)f(to)f(c)o(hec)o(k)i(the)g (status)g(of)e(the)h(request.)20 b(As)15 b(in)e(the)i(Matlab)e(in)o (terface,)h(the)g(user)h(can)g(c)o(hose)f(to)g(prob)q(e)-45 1654 y(or)g(to)g(w)o(ait)f(for)g(the)i(request.)k(Probing)14 b(is)g(done)g(b)o(y)f(calling)g Fm(netslpr\(\))p Fp(whic)o(h)f(returns) j(a)f(NetSolv)o(e)g(error)h(co)q(de:)86 1735 y Fm(call)21 b(FNETSLPR\(REQUEST)o(,INFO)o(\))-45 1817 y Fp(and)14 b(in)f(C)h(:)-45 1899 y Fm(info)21 b(=)h(netslpr\(request)o(\);)-45 1980 y Fp(T)o(ypical)14 b(error)j(co)q(des)g(returned)g(are)f Fm(NetSolveNotReady)c Fp(and)j Fm(NetSolveOK)e Fp(\(see)k(Section)f (D\).)23 b(W)m(aiting)13 b(is)i(done)h(b)o(y)-45 2030 y(using)f Fm(netslwt\(\))p Fp(.)20 b(This)14 b(function)h(blo)q(c)o(ks) g(un)o(til)g(the)g(computation)f(is)h(complete)f(and)h(the)h(result)f (is)g(a)o(v)n(ailable.)20 b(Here)-45 2080 y(is)14 b(the)g(F)m(ortran)g (call:)86 2161 y Fm(call)21 b(FNETSLWT\(REQUEST)o(,INFO)o(\))-45 2243 y Fp(and)14 b(the)g(C)g(call)f(:)-45 2325 y Fm(info)21 b(=)h(netslwt\(request)o(\);)-45 2406 y Fp(If)12 b(the)i(call)d(is)i (successful,)h(the)f(function)g(returns)h(the)f(error)h(co)q(de)f Fm(NetSolveOK)e Fp(and)h(the)h(result)h(is)e(in)g(the)i(user)f(memory) -45 2456 y(space.)-45 2574 y Fh(4.3.5)55 b(Catc)n(hing)20 b(errors)-45 2654 y Fp(There)d(is)f(a)g(function)g(in)f(the)i(C)f(and)g (F)m(ortran)f(in)o(terface)i(that)f(prin)o(ts)g(out)g(explicit)g(error) h(messages)f(to)g(the)h(standard)-45 2704 y(error,)d(giv)o(en)g(a)f (NetSolv)o(e)h(error)h(co)q(de.)k(The)14 b(C)g(call)f(is)h(:)909 2828 y(22)p eop %%Page: 23 25 23 24 bop -45 195 a Fm(netslerr\(info\);)-45 281 y Fp(and)14 b(in)f(F)m(ortran)108 367 y Fm(call)21 b(FNETSLERR\(INFO\))-45 486 y Fh(4.3.6)55 b(Ro)n(w-)19 b(or)g(column-ma)s(jor)-45 566 y Fp(T)m(o)e(allo)o(w)f(the)i(NetSolv)o(e)g(user)h(to)f(store)h (her/his)f(matrices)f(either)i(in)e(ro)o(w-wise)h(or)f(column-wise)g (fashions,)h(w)o(e)g(also)-45 616 y(pro)o(vide)13 b(the)g(function)g Fm(netslmajor\(\))d Fp(in)j(C)f(and)h Fm(FNETSLMAJOR\(\))d Fp(in)j(F)m(ortran.)k(This)c(function)f(can)i(b)q(e)f(called)g(at)f(an) o(y)-45 666 y(time)h(in)g(the)h(user's)h(program)e(in)g(C:)-45 752 y Fm(netslmajor\("col"\))o(;)-45 801 y(netslmajor\("row"\))o(;)-45 887 y Fp(or)h(in)f(F)m(ortran:)-45 973 y Fm(call)21 b (FNETSLMAJOR\('col')o(\);)-45 1023 y(call)g(FNETSLMAJOR\('row')o(\);) -45 1109 y Fp(All)13 b(the)i(subsequen)o(t)h(calls)e(to)g(NetSolv)o(e)g (will)f(assume)g(the)i(corresp)q(onding)g(ma)r(jor.)i(The)e(default)f (v)n(alues)g(are)g(of)g(course)-45 1159 y(ro)o(w-wise)g(for)f(C)h(and)g (column-wise)e(for)i(F)m(ortran.)-45 1278 y Fh(4.3.7)55 b(Limitations)16 b(of)j(the)f(F)-5 b(ortran)19 b(in)n(terface)-45 1358 y Fp(Due)14 b(to)g(to)g(F)m(ortran's)g(restrictions)i(for)e(the)g (use)h(of)f(p)q(oin)o(ter)g(and)g(its)h(inabilit)o(y)d(to)i (dynamically)d(allo)q(cate)j(memory)m(,)c(the)-45 1408 y(F)m(ortran)k(in)o(terface)i(in)o(terface)f(to)f(NetSolv)o(e)h(do)q (es)h(not)e(supp)q(ort)i(the)f Fm(PACKEDFILES)d Fp(and)j Fm(STRINGLIST)e Fp(ob)r(ject)i(t)o(yp)q(e.)21 b(It)-45 1458 y(also)13 b(do)q(es)i(not)f(supp)q(ort)g(output)g(ob)r(jects)i(of) d(t)o(yp)q(e)h Fm(STRING)p Fp(.)-45 1577 y Fh(4.3.8)55 b(Built-in)17 b(examples)-45 1656 y Fp(C)d(and)g(F)m(ortran)g(and)g(Ja) o(v)n(a)f(examples)g(are)i(included)f(in)g(the)h(NetSolv)o(e)f (distribution)g(in)f Fm(Netsolve-1.2.x/Exam)o(ples)o Fp(.)-45 1706 y(T)m(o)f(build)g(them,)g(the)i(user)g(simply)d(t)o(yp)q (es)j Fm(make)21 b(examples)11 b Fp(in)h(the)i(top)f(directory)m(.)18 b(The)13 b(examples)f(use)i(di\013eren)o(t)g(prob-)-45 1756 y(lems)f(that)h(ha)o(v)o(e)g(b)q(een)i(giv)o(en)d(serv)o(ers)j(at) e(the)h(Univ)o(ersit)o(y)f(of)g(T)m(ennessee.)21 b(They)14 b(should)g(help)h(the)f(user)i(to)e(understand)-45 1806 y(ho)o(w)f(the)i(system)f(w)o(orks.)k(W)m(e)13 b(also)h(ha)o(v)o(e)f (full)g(examples)g(in)g(C)h(and)g(F)m(ortran)f(in)h(App)q(endixes)h(F)f (and)g(G.)-45 1946 y Fk(4.4)66 b(Mathematica)22 b(In)n(terface)-45 2048 y Fh(4.4.1)55 b(In)n(tro)r(duction)-45 2128 y Fp(Details)13 b(on)h(this)g(in)o(terface)g(can)h(b)q(e)f(found)f(in)h([6)o(])g(and)f (instructions)i(for)e(building)g(it)g(are)i(in)e(the)i(\014le:)519 2214 y Fm($NETSOLVE)p 720 2214 14 2 v 14 w(ROOT/src/Mathemat)o(ica/)o (INSTA)o(LL)-45 2333 y Fh(4.4.2)55 b(What)19 b(to)f(do)h(\014rst)-45 2413 y Fp(Once)c(the)g(in)o(terface)f(is)g(successfully)h(installed,)e (the)h(\014rst)h(thing)e(to)h(do)g(is)f(to)h(start)h(a)e(Mathematica)g (clien)o(t)h(and)f(t)o(yp)q(e)42 2499 y Fm(NetSolve[])-45 2585 y Fp(whic)o(h)h(prin)o(ts)g(out)g(information)d(on)i(ho)o(w)h(to)g (use)g(the)h(in)o(terface:)909 2828 y(23)p eop %%Page: 24 26 24 25 bop -45 195 a Fm(In[1]:=)20 b(NetSolve[])-45 245 y(usage:)-1 295 y(NetSolve[FuncNa)o(me[ar)o(g1,)f(...]])64 b(-)22 b(blocking)e(problem)g(call)-1 345 y(NetSolveNB[FUNC)o(NAME[)o (arg1,)e(...]])j(-)h(nonblocking)d(problem)h(call)-1 394 y(NetSolveProbe[r)o(eques)o(t])215 b(-)22 b(checks)e(if)h(a)h (request)e(is)i(completed)-1 444 y(NetSolveWait[re)o(quest)o(])237 b(-)22 b(waits)e(for)h(a)h(request)e(to)i(complete)-1 494 y(NetSolveGetAgen)o(t[])302 b(-)22 b(returns)e(the)h(current)f (agent)h(name)-1 544 y(NetSolveSetAgen)o(t[Age)o(ntNam)o(e])106 b(-)22 b(changes)e(the)h(agent)g(we)g(are)g(working)g(with)-1 594 y(NetSolveError[])367 b(-)22 b(returns)e(the)h(result)g(code)g(of)g (the)g(last)783 643 y(executed)f(NetSolve)g(function)-1 693 y(NetSolveErrorMs)o(g[rc])258 b(-)22 b(returns)e(a)h(string)g (describing)783 743 y(the)g(result)g(code)g(passed)-1 793 y(NetSolve["?prob)o(lems")o(])193 b(-)22 b(shows)f(a)g(list)g(of)h (available)e(problems)-1 843 y(NetSolve["?serv)o(ers"])214 b(-)22 b(shows)f(a)g(list)g(of)h(available)e(servers)-1 892 y(NetSolve["?Func)o(Name[)o(]"])149 b(-)22 b(shows)f(a)g(problem)g (description)-45 979 y Fp(Let)14 b(us)h(review)f(the)h(p)q (ossibilities:)17 1073 y Fj(\017)21 b Fp(Information)11 b(functions)59 1123 y Fm(NetSolve["?probl)o(ems"])o(,)19 b(NetSolve["?servers)o("])g(and)i(NetSolve["?FuncNa)o(me[]")o(])17 1206 y Fj(\017)g Fp(Blo)q(c)o(king)13 b(problem)g(solving)59 1255 y Fm(NetSolve[Problem)o(Name[)o(argum)o(ents,)18 b(...)43 b(]])59 1322 y Fp(In)o(v)o(o)q(cations)13 b(of)g(this)h(t)o (yp)q(e)g(call)e(NetSolv)o(e)i(to)g(solv)o(e)f(a)g(certain)i(problem.)h (When)e(the)g(result)h(b)q(ecome)e(a)o(v)n(ailable)e(it)59 1372 y(is)j(returned)h(to)f(the)g(user.)19 b(If)14 b(the)g(result)h(is) f(more)f(than)h(one)g(ob)r(ject)g(it)g(is)g(returned)h(in)f(a)f(list.) 17 1455 y Fj(\017)21 b Fp(Non)o(blo)q(c)o(king)12 b(problem)h(solving) 59 1505 y Fm(NetSolveNB[Probl)o(emNam)o(e[arg)o(ument)o(s,)19 b(...)43 b(]])59 1571 y Fp(The)13 b(di\013erence)h(b)q(et)o(w)o(een)f (blo)q(c)o(king)f(and)g(non)o(blo)q(c)o(king)f(calls)h(is)g(that)g(the) h(later)g(unlik)o(e)e(the)i(former)e(the)i(execution)59 1621 y(con)o(trol)g(is)h(returned)i(immedia)o(tely)11 b(to)j(the)h(user)g(as)f(w)o(ell)f(as)h(a)g(request)h(handler.)j(The)d (last)e(is)h(used)h(for)f(c)o(hec)o(king)59 1671 y(if)f(the)h(result)h (is)f(a)o(v)n(ailable)d(or)j(the)h(calculation)e(is)g(still)g(in)h (progress.)17 1754 y Fj(\017)21 b Fp(Getting/setting)13 b(an)h(agen)o(t)59 1803 y Fm(NetSolveGetAgent)o([],)19 b(NetSolveSetAgent)o([Agen)o(tNam)o(e])59 1870 y(NetsolveGetAgent)o([]) 8 b Fp(returns)k(bac)o(k)e(a)h(string)g(con)o(taining)e(the)i(host)g (name)f(of)g(the)h(agen)o(t.)17 b(The)11 b(user)h(can)f(c)o(hange)59 1920 y(the)j(curren)o(t)i(agen)o(t)d(b)o(y)i Fm(NetSolveSetAgent)o([])c Fp(function)i(at)h(an)o(y)g(time.)59 1986 y(This)i(set)h(of)e (functions)i(is)f(v)o(ery)g(imp)q(ortan)o(t)f(b)q(ecause)i(they)g(pro)o (vide)f(information)d(ab)q(out)j(the)h(calling)e(sequence)59 2036 y(and)e(what)h(problems)f(and)h(serv)o(ers)i(are)e(a)o(v)n (ailable)e(trough)h(the)i(user's)g(agen)o(t.)-45 2130 y(Let)e(us)g(no)o(w)g(assume)f(that)h(the)h(user)f(has)g(started)h (Mathematica)e(and)g(is)h(ready)g(to)g(try)g(NetSolv)o(e.)18 b(W)m(e)12 b(can)h(c)o(hec)o(k)h(what)-45 2180 y(our)g(agen)o(t)g(is)g (b)o(y)f(t)o(yping)42 2274 y Fm(In[1]:=)21 b(NetSolveGetAgen)o(t[])42 2374 y(Out[1]=)g(unidhp.uni-c.dk)-45 2468 y Fp(If)15 b(there)i(is)e(no)g(agen)o(t)h(set,)g(the)g(result)h(w)o(ould)d(b)q(e)i (the)g Fm($Null)f Fp(sym)o(b)q(ol.)21 b(One)16 b(can)g(c)o(hange)f(the) h(agen)o(t)g(b)o(y)f(the)h(function)-45 2518 y Fm(NetSolveSetAgent[)o (])p Fp(.)f(F)m(or)f(instance)42 2612 y Fm(In[2]:=)21 b(NetSolveSetAgen)o(t["bl)o(uegra)o(ss.cs)o(.utk)o(.edu")o(])909 2828 y Fp(24)p eop %%Page: 25 27 25 26 bop -45 195 a Fp(The)14 b(agen)o(t)f(can)g(b)q(e)h(c)o(hanged)f (at)g(an)o(y)g(time)f(pro)o(viding)g(there)i(is)f(running)g(another)h (NetSolv)o(e)f(agen)o(t)g(on)g(the)h(host)f(whic)o(h)-45 245 y(name)h(has)i(b)q(een)h(passed)f(as)g(argumen)o(t.)22 b(By)16 b(doing)f(this)g(w)o(e)h(actually)f(c)o(hange)h(the)g(set)h(of) e(serv)o(ers)i(and)e(probably)g(the)-45 295 y(set)g(of)e(solv)n(able)g (problems.)-45 348 y(A)g(list)f(of)g(the)i(solv)n(able)e(problems)g (can)h(b)q(e)g(obtained)g(b)o(y)f(the)i(function)e Fm (NetSolve["?problem)o(s"])p Fp(.)i(Here)h(is)d(a)h(p)q(ossible)-45 397 y(list)g(\(clipp)q(ed)i(to)e(sa)o(v)o(e)h(space\).)42 478 y Fm(In[3]:=)21 b(NetSolve["?prob)o(lems")o(])42 527 y(/BLAS/Matrices/dge)o(mm)42 577 y(/BLAS/Matrices/dma)o(tmul)42 627 y(/BLAS/Matrices/zge)o(mm)42 677 y(/BLAS/Matrices/zma)o(tmul)42 727 y(/BLAS/Vectors/daxp)o(y)42 777 y(/BLAS/Vectors/ddot)42 826 y(/BLAS/Vectors/zaxp)o(y)42 876 y(/LaPack/Matrices/E)o(igenV)o (alues)o(/eig)42 926 y(/LaPack/Matrices/L)o(inear)o(Syste)o(m/dge)o(sv) 42 976 y(/LaPack/Matrices/L)o(inear)o(Syste)o(m/lin)o(sol)42 1026 y(/MinPack/hybrd1)42 1075 y(/MinPack/lmdif1)42 1125 y(/QuickSort/DoubleP)o(recis)o(ion/d)o(qsort)42 1175 y(/QuickSort/Integer)o(/iqso)o(rt)42 1225 y(.)44 b(.)f(.)-45 1305 y Fp(Similarly)l(,)11 b(a)i(list)h(of)f(the)h(serv)o(ers)i(can)e (b)q(e)h(prin)o(ted)f(b)o(y)g(the)g(function)g Fm(NetSolve["?serve)o (rs"])42 1386 y(In[4]:=)21 b(NetSolve["?serv)o(ers"])42 1435 y(bluegrass.cs.utk.e)o(du)e(\(128.169.92.41\))42 1485 y(NetSolve)h(Agent)42 1535 y(Host:)h(Up)43 b(Server:)20 b(Running)42 1585 y(cetus1a.cs.utk.edu)e(\(128.169.94.21\))42 1635 y(Handles)j(24)g(problems)42 1684 y(Host:)g(Up)43 b(Server:)20 b(Running)42 1734 y(cetus1b.cs.utk.edu)e (\(128.169.94.22\))42 1784 y(Handles)j(24)g(problems)42 1834 y(Host:)g(Up)43 b(Server:)20 b(Running)42 1884 y (cetus1c.cs.utk.edu)e(\(128.169.94.23\))42 1933 y(Handles)j(24)g (problems)42 1983 y(Host:)g(Up)43 b(Server:)20 b(Running)42 2033 y(.)44 b(.)f(.)-45 2113 y Fp(F)m(or)15 b(ev)o(ery)h(serv)o(er)h (or)e(agen)o(t)h(are)g(prin)o(ted)f(its)h(name,)e(host)i(and)f(serv)o (er)i(status,)f(IP)g(address)g(and)f(ho)o(w)g(man)o(y)f(di\013eren)o(t) -45 2163 y(problems)f(it)g(can)i(solv)o(e)e(\(for)h(serv)o(ers)i (only\).)-45 2216 y(The)e(user)h(can)f(easily)g(\014nd)g(out)g (information)d(ab)q(out)i(a)h(problem,)e Fm(iqsort)h Fp(for)g(instance,)h(b)o(y)g(t)o(yping)42 2296 y Fm(NetSolve["?iqsort[) o(]"])-45 2377 y Fp(Please)k(note)f(the)g(brac)o(k)o(ets)h(after)f(the) h(problem)d(name.)26 b(They)17 b(are)g(necessary)i(b)q(ecause)g(ev)o (ery)f(NetSolv)o(e)f(problem)e(is)-45 2427 y(treated)f(as)f(a)f (function)h(de\014ned)g(in)g(Mathematica.)j(The)d(output)g(of)f(that)h (command)d(can)j(b)q(e)g(divided)f(to)h(sev)o(eral)g(parts.)-45 2476 y(Let)h(us)h(lo)q(ok)e(at)g(them)g(one)i(b)o(y)e(one.)-45 2529 y(The)h(\014rst)h(part)f(is)g(a)f(brief)h(general)g(description)h (of)e(the)i(problem:)42 2604 y Fm(In[5]:=)21 b(NetSolve["?iqso)o(rt[]") o(])42 2654 y(iqsort:)g(Quicksort)e(-)42 2704 y(Sorts)i(a)h(vector)e (of)h(integers)909 2828 y Fp(25)p eop %%Page: 26 28 26 27 bop -45 195 a Fp(The)15 b(second)h(part)f(describ)q(es)i(the)e (input)g(and)f(output)h(ob)r(jects,)h(their)f(t)o(yp)q(e)g(and)g (description.)21 b(The)15 b(input)g(ob)r(jects)h(are)-45 245 y(what)e(the)g(problem)f(requires)i(as)f(input,)f(while)h(the)g (output)g(ob)r(jects)h(are)f(the)h(result)g(it)e(pro)q(duces:)42 339 y Fm(Input:)86 389 y(#)21 b(0)h(:)g(Integer)e(Vector)86 439 y(Vector)g(of)i(integers)e(to)h(Sort)42 538 y(Output:)86 588 y(#)g(0)h(:)g(Integer)e(Vector)86 638 y(Sorted)g(Vector)-45 732 y Fp(The)e(last)f(parts)h(is)g(in)o(tended)g(to)f(ease)h(the)g (user)h(b)o(y)e(pro)o(viding)g(him)e(an)i(example.)28 b(The)18 b(argumen)o(ts)f(sho)o(w)o(ed)g(in)g(the)-45 782 y(example)c(are)h(v)n(ariables)f(but)h(the)h(user)g(ma)o(y)d(wish)h (to)h(pass)g(n)o(umerical)f(v)n(alues.)-45 868 y Fm(Mathematica)20 b(example:)-1 918 y(rI0)43 b(=)21 b(NetSolve[iqsort[I0)o(]])-45 1018 y(examples)f(for)h(types:)151 1117 y(Char)108 b(Byte/Integer)41 b(Single/Double)g(Complex)-45 1167 y(Scalar:)20 b("c")239 b(42)218 b(66.32)151 b(4)22 b(-)g(7)f(I)-45 1217 y(Vector:)f("vector") 86 b({1,2,3})107 b({3,4.5,7})g({3,)22 b(-5+3I,)e(8})-45 1267 y(Matrix:)g({"line)h(1",)g({{1,2,3},)64 b({{6.4,2,1},)84 b({{1+2I,)21 b(3+4I},)151 1317 y("line)g(2"})43 b({4,5,6}})85 b({-7,1.2,4}})g({5-6I,)21 b(7}})-45 1403 y Fp(The)c(n)o(um)o(b)q(er,)f (the)h(t)o(yp)q(e)g(and)f(the)h(sequence)i(of)d(argumen)o(ts)g(is)g (imp)q(ortan)o(t.)24 b(If)16 b(the)h(user)h(do)q(es)f(not)f(pro)o(vide) h(them)e(in)-45 1452 y(a)f(prop)q(er)i(w)o(a)o(y)e(then)i(the)f(result) g(w)o(ould)f(b)q(e)i(an)e(error)i(message)e(stating)h(that)f(the)i(n)o (um)o(b)q(er)e(of)g(argumen)o(ts)g(is)g(wrong)h(or)-45 1502 y(that)f(a)g(certain)g(argumen)o(t)f(is)h(not)f(of)h(a)f(correct)j (t)o(yp)q(e.)-45 1555 y(When)h Fm(NetSolve[])f Fp(is)h(called)g(to)g (solv)o(e)g(a)g(particular)g(problem)f(an)h(argumen)o(t)f(m)o(ust)g(b)q (e)i(pro)o(vided)f(for)g(ev)o(ery)h(input)-45 1605 y(ob)r(ject)c(as)f (w)o(ell)g(as)g(for)g(ev)o(ery)h(output)f(ob)r(ject)i(of)d(t)o(yp)q(e)i (\014le.)k(The)13 b(reason)h(for)f(the)h(last)f(is)g(that)g(NetSolv)o (e)h(needs)g(to)f(kno)o(w)-45 1655 y(where)i(to)f(place)g(the)g (result.)-45 1707 y(The)g(t)o(yp)q(e)h(and)e(the)i(dimension)d(of)h (the)i(argumen)o(ts)e(should)h(conform)e(to)i(the)g(problem)f (de\014nition,)g(otherwise)h(an)g(error)-45 1757 y(message)d(will)g(b)q (e)h(prin)o(ted)g(and)g(the)g Fm($Null)e Fp(sym)o(b)q(ol)g(will)g(b)q (e)j(returned.)19 b(The)12 b(user)h(can)f(pass)g(n)o(umerical)e(v)n (alues,)h(sym)o(b)q(ols)-45 1807 y(with)j(assigned)g(data)f(to)h(them)f (or)h(function)g(calls.)j(All)c(of)g(them)h(m)o(ust)e(ha)o(v)o(e)i (prop)q(er)h(t)o(yp)q(e.)-45 1860 y(Here)g(are)f(some)f(rules)i(the)f (user)h(m)o(ust)e(tak)o(e)h(in)o(to)f(accoun)o(t.)6 1954 y(1.)20 b(Characters)15 b(are)f(passed)h(as)f(strings)h(\(only)e(the)h (\014rst)h(c)o(haracter)g(is)f(used\).)6 2037 y(2.)20 b(In)o(tegers)15 b(can)f(b)q(e)h(passed)f(instead)h(of)e(reals)h(and)g (vice)g(v)o(ersa)g(\(con)o(v)o(ersion)h(is)e(p)q(erformed)h (automatically\).)6 2120 y(3.)20 b(In)o(tegers)15 b(and)f(reals)g(can)g (b)q(e)g(passed)h(instead)g(of)e(complexes.)6 2203 y(4.)20 b(V)m(ectors)15 b(of)e(c)o(haracters)j(are)e(passed)h(as)f(strings.)6 2286 y(5.)20 b(Matrixex)14 b(of)f(c)o(haracters)j(are)e(passed)h(as)f (v)o(ectors)h(of)e(strings.)-45 2406 y Fh(4.4.3)55 b(Blo)r(c)n(king)18 b(call)g(to)g(NetSolv)n(e)-45 2485 y Fp(In)h(the)h(previous)f(section)h (w)o(e)f(explained)g(ho)o(w)g(the)h(user)g(can)f(get)h(information)c (ab)q(out)j(a)g(problem)e(and)i(its)g(calling)-45 2535 y(sequence.)26 b(F)m(or)15 b(the)h(call)f(itself,)g(the)h(problem)f (name)f(is)i(passed)g(together)h(with)e(its)h(argumen)o(ts)f(\(just)h (lik)o(e)f(a)g(function)-45 2585 y(de\014ned)20 b(in)e(Mathematica\))g (to)h(the)g(function)g(NetSolv)o(e)g(whic)o(h)g(p)q(erforms)f(the)i (computation.)31 b(Let)20 b(us)f(resume)g(our)-45 2635 y(example:)909 2828 y(26)p eop %%Page: 27 29 27 28 bop 42 195 a Fm(In[6]:=)21 b(NetSolve[iqsort)o([{7,2)o(,3,5,)o (1}]])42 245 y(contacting)f(server)g(merlin.comlab)g(...)42 345 y(Out[6]=)h({1,)g(2,)g(3,)g(5,)h(7})-45 439 y Fp(As)15 b(stated)g(earlier)f(the)h(user)g(can)g(pass)f(not)g(only)g(n)o (umerical)e(v)n(alues,)i(but)g(also)g(sym)o(b)q(ols)f(that)h(con)o (tain)g(data)f(of)h(prop)q(er)-45 489 y(t)o(yp)q(e)j(or)f(functions)h (that)f(return)i(a)e(result)h(of)f(this)h(t)o(yp)q(e.)26 b(Indeed,)17 b(Mathematica)e(calculates)i(these)h(expressions)g(and)-45 538 y(passes)d(the)g(argumen)o(ts)e(b)o(y)h(v)n(alue.)j(F)m(or)c (example)42 633 y Fm(In[7]:=)21 b(v)g(=)h(-Range[5])42 732 y(Out[7]=)f({-1,)f(-2,)i(-3,)f(-4,)g(-5})42 832 y(In[8]:=)g (NetSolve[iqsort)o([v]])42 882 y(contacting)f(server)g(merlin.comlab)g (...)42 982 y(Out[8]=)h({-5,)f(-4,)i(-3,)f(-2,)g(-1})-45 1076 y Fp(or)14 b(to)g(sort)g(a)g(random)e(v)o(ector)j(of)e(size)h(7)42 1170 y Fm(In[9]:=)21 b(NetSolve[iqsort)o([Tabl)o(e[Cei)o(ling[)o(10*R)o (andom)o([]],)d({7}]]])42 1220 y(contacting)i(server)g(merlin.comlab)g (...)42 1320 y(Out[9]=)h({1,)g(2,)g(2,)g(2,)h(4,)f(6,)h(7})-45 1414 y(NetSolve[])12 b Fp(is)i(a)f(function)h(de\014ned)h(in)e (Mathematica.)k(That)d(is)f(wh)o(y)h(it)f(can)i(b)q(e)f(used)h(in)e (expressions)j(lik)o(e)d(this)42 1500 y Fm(In[9]:=)21 b(NetSolve[iqsort)o([Tabl)o(e[Cei)o(ling[)o(10*R)o(andom)o([]],)d ({7}]]])42 1550 y(contacting)i(server)g(merlin.comlab)g(...)42 1649 y(Out[9]=)h({1,)g(2,)g(2,)g(2,)h(4,)f(6,)h(7})42 1749 y(In[10]:=)e(Print["The)g(minimal)g(element)h(of)g(v)h(is)f(",)g (NetSolve[iqsort[v]][)o([1]])o(])42 1799 y(contacting)f(server)g (merlin.comlab)g(...)42 1849 y(The)h(minimal)g(element)f(of)h(v)h(is)f (-5)-45 1935 y Fp(Let)12 b(us)f(try)g(a)g(more)f(complex)g(problem.)16 b(F)m(or)10 b(instance)i Fm(dgemm[])p Fp(,)e(whic)o(h)h(is)g(a)g(BLAS)g (lev)o(el)g(3)g(subroutine)h(and)f(calculates)-45 1987 y Fi(\013)j(:)f(op)p Fp(\()p Fi(A)p Fp(\))h Fi(:)g(op)p Fp(\()p Fi(B)r Fp(\))c(+)f Fi(\014)17 b(:)c(C)s Fp(,)-45 2040 y(where)i(op\(X\))f(=)g(X)g(or)g(op\(X\))g(=)g(X')-45 2093 y Fm(dgemm[])e Fp(requires)k(the)e(follo)o(wing)d(7)j(argumen)o (ts.)6 2187 y(1.)20 b(Character)15 b(Scalar)e(-)h(sp)q(eci\014es)i(the) e(form)e(of)i(op\()f(A)h(\))g(to)g(b)q(e)h(used)f(in)g(the)g(matrix)e (m)o(ultiplication)f(as)j(follo)o(ws:)59 2237 y('N')f(or)h('n',)e(op\() i(A)g(\))g(=)g(A)59 2287 y('T')f(or)h('t',)e(op\()i(A)g(\))g(=)g(A')59 2337 y('C')f(or)h('c',)e(op\()i(A)g(\))g(=)g(A')6 2470 y(2.)20 b(Character)13 b(Scalar)f(-)g(sp)q(eci\014es)j(the)d(form)f(of) h(op\(B\))h(to)f(b)q(e)h(used)g(in)f(the)h(matrix)d(m)o(ultiplication)f (\(see)14 b(the)f(previous)59 2519 y(argumen)o(t\))6 2603 y(3.)20 b(Double)13 b(precision)h(real)g(Scalar)g(-)g Fi(\013)6 2686 y Fp(4.)20 b(Double)13 b(precision)h(real)g(Matrix)g(-)f (Matrix)h(A)909 2828 y(27)p eop %%Page: 28 30 28 29 bop 6 195 a Fp(5.)20 b(Double)13 b(precision)h(real)g(Matrix)g(-) f(Matrix)h(B)6 276 y(6.)20 b(Double)13 b(precision)h(real)g(Scalar)g(-) g Fi(\014)6 357 y Fp(7.)20 b(Double)13 b(precision)h(real)g(Matrix)g(-) f(Matrix)h(C)-45 447 y(Let)g(us)h(generate)g(three)g(random)d (matrices.)42 537 y Fm(In[11]:=)20 b(RandomMatrix[m_,n_])e(:=)k (Table[Ceiling[1)o(0*Ran)o(dom[])o(],)d({m},)i({n}])42 636 y(In[12]:=)f(a)i(=)f(RandomMatrix[2,3])42 736 y(Out[12]=)f({{9,)h (2,)h(3},)f({6,)g(3,)g(9}})42 836 y(In[13]:=)f(b)i(=)f (RandomMatrix[3,2])42 935 y(Out[13]=)f({{6,)h(4},)g({4,)h(10},)f({2,)g (9}})42 1035 y(In[14]:=)f(c)i(=)f(RandomMatrix[2,2])42 1135 y(Out[14]=)f({{4,)h(7},)g({4,)h(8}})-45 1224 y Fp(and)14 b(call)f Fm(dgemm[])p Fp(.)42 1314 y Fm(In[15]:=)20 b (NetSolve[dgemm["N",)e("N",)j(2,)h(a,)f(b,)g(3,)h(c]])42 1364 y(contacting)e(server)g(cetus2a.cs.utk.edu)f(...)42 1463 y(Out[15]=)h({{148.,)h(187.},)f({144.,)h(294.}})42 1563 y(In[16]:=)f(2)i(a)f(.)h(b)g(+)f(3)h(c)42 1663 y(Out[16]=)e ({{148,)h(187},)g({144,)f(294}})-45 1781 y Fh(4.4.4)55 b(Non)n(blo)r(c)n(king)18 b(Call)h(to)f(NetSolv)n(e)-45 1861 y Fp(As)j(the)h(Matlab)e(in)o(terface)h(\(see)h(Section)f(4.2\),)g (the)h(Mathematica)d(can)i(b)q(e)g(called)g(in)f(an)h(async)o(hronous)g (fashion.)-45 1911 y(Non)o(blo)q(c)o(king)13 b(calls)g(are)i(p)q (erformed)f(b)o(y)f(the)i(function)f Fm(NetSolveNB[])p Fp(.)i(Its)e(calling)f(sequence)j(is)e(absolutely)f(the)i(same)-45 1960 y(as)f(blo)q(c)o(king)g Fm(NetSolve[])p Fp(.)j(The)e(di\013erence) h(is)e(the)h(result)g(returned.)p Fm(NetSolveNB[])e Fp(alw)o(a)o(ys)g (returns)j(bac)o(k)e(a)g(request)-45 2010 y(handler.)-45 2063 y Fm(NetSolveProbe[])e Fp(returns)17 b(an)d(in)o(teger)i(v)n(alue) e(that)i(sho)o(ws)f(if)f(the)i(problem)e(has)h(b)q(een)h(solv)o(ed.)22 b(A)15 b(v)n(alue)f(of)h(0)g(means)-45 2113 y(that)f(the)g(result)h(is) f(a)o(v)n(ailable)d(and)j(1)g(if)f(not.)18 b(Other)d(v)n(alues)e(are)i (error)g(co)q(de)f(\(see)i(Section)e(4.4.5\).)-45 2166 y(Let)19 b(us)g(m)o(ultiply)d(t)o(w)o(o)i(complex)g(matrices)g(using)h Fm(NetSolveNB[])p Fp(.)30 b(W)m(e)19 b(generate)h(the)f(matrices)f Fm(ac)g Fp(and)h Fm(bc)f Fp(using)-45 2215 y(already)c(generated)h (matrices)e Fm(a)p Fp(,)g Fm(b)h Fp(and)g Fm(c)p Fp(.)-45 2305 y Fm(In[17]:=)20 b(ac)i(=)f(a)h(-)f(2)h(a)f(I)-45 2405 y(Out[17]=)f({{9)h(-)h(18)f(I,)h(2)f(-)h(4)f(I,)h(3)f(-)h(6)g(I},) f({6)g(-)h(12)f(I,)g(3)h(-)g(6)f(I,)h(9)f(-)h(18)f(I}})-45 2504 y(In[18]:=)f(bc)i(=)f(b)h(-)f(3)h(b)f(I)-45 2604 y(Out[18]=)f({{6)h(-)h(18)f(I,)h(4)f(-)h(12)f(I},)g({4)h(-)f(12)h(I,)f (10)g(-)h(30)f(I},)h({2)f(-)h(6)f(I,)h(9)f(-)h(27)f(I}})-45 2704 y(In[19]:=)f(request)g(=)i(NetSolve[zmatmul[a)o(c,)d(bc]])909 2828 y Fp(28)p eop %%Page: 29 31 29 30 bop -45 195 a Fm(contacting)20 b(server)g(cetus2a.cs.utk.edu)e (...)-45 295 y(Out[19]=)i(0)-45 394 y(In[20]:=)g(NetSolveProbe[requ)o (est])-45 494 y(Out[20]=)g(0)-45 588 y Fp(Not)14 b(ready)g(y)o(et.)k(W) m(e)c(can)g(do)g(some)f(other)h(w)o(ork)g(.)6 b(.)h(.)-45 683 y Fm(In[21]:=)20 b(NetSolveWait[reque)o(st])-45 782 y(Out[21]=)g({{-340.)g(-)i(340.)f(I,)g(-415.)g(-)h(415.)f(I},)g({-330.) f(-)i(330.)f(I,)g(-675.)g(-)h(675.)f(I}})-45 901 y Fh(4.4.5)55 b(Catc)n(hing)20 b(Errors)-45 981 y Fp(Similarly)13 b(to)k(the)g (Matlab)f(in)o(terface,)h(it)f(is)h(p)q(ossible)g(to)f(detect)j(errors) e(with)g(the)g(functions)g Fm(NetSolveError[])c Fp(and)-45 1031 y Fm(NetSolveErrorMsg[)o(])p Fp(.)26 b(The)18 b(\014rst)g(returns) h(an)e(in)o(teger)h(whic)o(h)f(is)g(the)h(error)g(co)q(de)h(of)d(the)i (last)f(executed)j(NetSolv)o(e)-45 1081 y(function.)e Fm(NetSolveErrorMsg)o([])11 b Fp(tak)o(es)j(an)g(error)h(co)q(de)f(as)g (argumen)o(t)f(and)h(returns)h(a)f(string)g(describing)g(the)h(error.) -45 1134 y(When)f(an)f(error)i(o)q(ccurs)g(a)e(message)g(is)h(prin)o (ted)g(on)f(the)h(user's)h(displa)o(y)m(.)i(In)c(this)h(case)g(the)h (user)f(do)g(not)f(need)i(the)f(error)-45 1183 y(functions.)k(They)c (are)h(only)e(useful)h(when)g(the)h(user)g(w)o(ould)e(lik)o(e)g(to)h (write)g(a)f(fault)g(toleran)o(t)h(Mathematica)f(script.)909 2828 y(29)p eop %%Page: 30 32 30 31 bop -45 195 a Fk(4.5)66 b(Ja)n(v)l(a)23 b(API)-45 289 y Fp(The)14 b(Ja)o(v)n(a)f(API)i(is)e(b)q(eing)h(con)o(v)o(erted)h (to)f(NetSolv)o(e)g(1.2.)-45 429 y Fk(4.6)66 b(Ja)n(v)l(a)23 b(GUI)-45 523 y Fp(The)14 b(Ja)o(v)n(a)f(GUI)h(is)g(b)q(eing)g(con)o(v) o(erted)h(to)e(NetSolv)o(e)i(1.2.)909 2828 y(30)p eop %%Page: 31 33 31 32 bop -45 509 a Fl(Chapter)31 b(5)-45 720 y Fn(NetSolv)m(e)39 b(Request)f(F)-10 b(arming)-45 939 y Fp(F)m(arming)9 b(is)j(a)f(new)h(w)o(a)o(y)f(of)g(calling)f(NetSolv)o(e)i(to)g(manage)e (large)h(n)o(um)o(b)q(ers)g(of)g(requests)j(for)d(a)h(single)f(NetSolv) o(e)h(problem.)-45 989 y(Man)o(y)20 b(NetSolv)o(e)h(users)g(are)g (confron)o(ted)g(to)f(situations)g(when)h(man)o(y)e(somewhat)g(similar) f(computations)h(m)o(ust)g(b)q(e)-45 1038 y(p)q(erformed)f(in)g (parallel.)29 b(The)19 b(w)o(a)o(y)f(to)g(do)g(this)g(in)g(NetSolv)o(e) g(is)g(to)g(write)h(calls)f(to)g Fm(netslnb\(\))e Fp(in)i(C)g(for)g (instance.)-45 1088 y(Ho)o(w)o(ev)o(er,)13 b(this)g(b)q(ecomes)h(v)o (ery)f(cum)o(b)q(ersome.)k(Not)c(only)f(b)q(ecause)j(the)e(user)h(has)g (to)e(manage)g(all)g(the)h(requests)i(himself,)-45 1138 y(but)f(also)e(b)q(ecause)k(the)e(NetSolv)o(e)f(system)h(is)f(at)g(a)g (loss)h(trying)f(to)g(manage)f(suc)o(h)i(a)f(large)g(n)o(um)o(b)q(er)g (of)g(requests)i(without)-45 1188 y(\015o)q(o)q(ding)j(the)i(serv)o (ers.)35 b(This)19 b(is)g(the)g(motiv)n(ation)d(for)j(distributing)f(a) h(new)g(call)f(in)h(NetSolv)o(e:)28 b Fm(netsl)p 1679 1188 14 2 v 15 w(farm\(\))p Fp(.)k(In)-45 1238 y(the)18 b(presen)o(t)g(distribution,)f(this)g(call)f(is)h(only)f(a)o(v)n (ailable)f(from)g(C,)i(but)g(will)f(so)q(on)h(b)q(e)g(made)f(a)o(v)n (ailable)f(from)g(Matlab,)-45 1288 y(Mathematica,)9 b(and)i(Ja)o(v)n (a.)16 b(F)m(ortran)10 b(will)f(most)g(lik)o(ely)g(b)q(e)j(left)e(out)g (b)q(ecause)i(of)e(p)q(oin)o(ter)h(managemen)o(t.)j(F)m(or)c(no)o(w,)h (linking)-45 1337 y(to)i(the)i(C)e(NetSolv)o(e)h(clien)o(t)f(library)g (\(generated)i(as)f(explained)f(in)g(Section)h(3.4\))f(mak)o(es)f Fm(netsl)p 1494 1337 V 15 w(farm\(\))g Fp(a)o(v)n(ailable)g(from)-45 1387 y(the)i(user's)h(program.)-45 1526 y Fk(5.1)66 b(Ho)n(w)21 b(to)i(call)g(farming)-45 1620 y Fp(Lik)o(e)16 b Fm(netsl\(\))f Fp(and)h Fm(netslnb\(\))p Fp(,)f(the)i Fm(netsl)p 712 1620 V 15 w(farm\(\))e Fp(function)h(tak)o(es)h(a)f(v)n(ariable)f(n)o (um)o(b)q(er)h(of)f(argumen)o(ts.)25 b(Its)17 b(\014rst)-45 1670 y(argumen)o(t)e(is)h(a)f(string)h(that)g(describ)q(es)i(the)f Fo(iter)n(ation)f(r)n(ange)p Fp(.)24 b(This)16 b(string)g(is)g(of)g (the)g(form)e Fm("i=\045d,\045d")g Fp(\(in)i(C)g(string)-45 1720 y(format)i(sym)o(b)q(ols\).)35 b(The)20 b(second)i(argumen)o(t)c (is)i(a)g(problem)e(name)h(p)q(ostp)q(ended)j(with)e(an)f(op)q(ening)h (and)g(a)g(closing)-45 1770 y(paren)o(thesis.)e(The)12 b(argumen)o(ts)f(follo)o(wings)e(are)i(similar)e(in)i(in)o(ten)o(t)g (to)g(the)h(ones)g(supplied)f(to)g Fm(netsl\(\))p Fp(,)f(but)i(are)f Fo(iter)n(ators)-45 1820 y Fp(as)j(opp)q(osed)g(to)g(in)o(tegers)g(or)g (p)q(oin)o(ter.)k(Where)c(the)h(user)f(w)o(as)g(passing,)f(sa)o(y)g(an) h(in)o(teger,)g(to)f Fm(netsl\(\))p Fp(,)f(he)i(no)o(w)f(needs)i(to)-45 1869 y(pass)e(an)f(arra)o(y)g(of)g(in)o(tegers)h(and)f(tell)g Fm(netsl)p 667 1869 V 14 w(farm\(\))f Fp(whic)o(h)i(elemen)o(t)e(of)h (this)g(arra)o(y)g(is)g(to)h(b)q(e)g(used)g(for)f(whic)o(h)g (iteration.)-45 1919 y(This)i(information)d(is)i(encapsulated)i(in)f (an)g Fo(iter)n(ator)e Fp(and)i(w)o(e)g(pro)o(vide)g(three)h(functions) f(to)g(generate)h(iterators:)17 2001 y Fj(\017)21 b Fm(ns)p 106 2001 V 15 w(int\(\))17 2081 y Fj(\017)g Fm(ns)p 106 2081 V 15 w(int)p 187 2081 V 15 w(array\(\))17 2162 y Fj(\017)g Fm(ns)p 106 2162 V 15 w(ptr)p 187 2162 V 15 w(array\(\))-45 2243 y Fp(Let)14 b(us)h(review)f(these)h(functions)f (one)g(b)o(y)g(one.)-45 2362 y Fh(5.1.1)55 b Fg(ns)p 181 2362 16 2 v 18 w(int\(\))-45 2441 y Fp(This)15 b(function)g(tak)o (es)g(only)f(one)i(argumen)o(t:)j(a)c(c)o(haracter)h(string)f(that)g (con)o(tains)g(an)g Fo(expr)n(ession)g Fp(that)g(is)g(ev)n(aluated)g (to)-45 2491 y(an)e(in)o(teger)i(at)e(eac)o(h)h(iteration.)k(The)c (format)e(of)h(that)g(string)h(is)g(based)g(on)f(a)h(Shell)f(syn)o (tax.)18 b Fm($i)13 b Fp(represen)o(ts)j(the)e(curren)o(t)-45 2541 y(iteration)f(index,)h(and)g(classic)g(arithmetic)f(op)q(erators)h (are)h(allo)o(w)o(ed.)h(F)m(or)e(instance:)-45 2622 y Fm(ns_int\("$i+1"\))-45 2704 y Fp(returns)h(an)f(iterator)g(that)g (generates)i(an)d(in)o(teger)i(equal)e(to)h(one)g(plus)g(the)g(curren)o (t)i(iteration)d(index)h(at)g(eac)o(h)g(iteration.)909 2828 y(31)p eop %%Page: 32 34 32 33 bop -45 195 a Fh(5.1.2)55 b Fg(ns)p 181 195 16 2 v 18 w(int)p 277 195 V 17 w(array\(\))-45 275 y Fp(This)17 b(function)f(tak)o(es)h(t)o(w)o(o)g(argumen)o(ts:)23 b(\(i\))17 b(a)f(p)q(oin)o(ter)h(to)g(an)f(in)o(teger)i(arra)o(y)e(\()p Fm(int)21 b(*)p Fp(\);)d(\(ii\))e(a)h(c)o(haracter)h(string)f(that)-45 325 y(con)o(tains)d(an)f(expression.)20 b(F)m(or)13 b(instance,)-45 408 y Fm(ns_int_array\(ptr,)o("$i"\))-45 491 y Fp(returns)19 b(an)e(iterator)g(that)g(generates)i(at)e(eac)o(h)h(iteration)f(an)g (in)o(teger)g(equal)g(to)g(the)h Fi(i)p Fp(-th)g(elemen)o(t)e(of)h(the) h(arra)o(y)f Fm(ptr)-45 541 y Fp(where)e Fi(i)f Fp(is)g(the)g(curren)o (t)i(iteration)d(index.)-45 659 y Fh(5.1.3)55 b Fg(ns)p 181 659 V 18 w(ptr)p 277 659 V 17 w(array\(\))-45 739 y Fp(This)15 b(function)f(tak)o(es)h(t)o(w)o(o)g(argumen)o(ts:)k(\(i\)) 14 b(a)h(p)q(oin)o(ter)g(to)f(an)h(arra)o(y)f(of)h(p)q(oin)o(ters)g(\() p Fm(void)21 b(**)p Fp(\);)14 b(\(ii\))29 b(a)15 b(c)o(haracter)h (string)-45 789 y(that)e(con)o(tains)g(an)f(expression.)20 b(F)m(or)13 b(instance,)-45 872 y Fm(ns_ptr_array\(ptr,)o("$i"\))-45 955 y Fp(returns)g(an)f(iterator)f(that)h(generates)h(at)f(eac)o(h)g (iteration)f(a)g(p)q(oin)o(ter)h(whic)o(h)g(is)f(the)h Fi(i)p Fp(-th)g(elemen)o(t)f(of)g(the)i(arra)o(y)e Fm(ptr)g Fp(where)-45 1005 y Fi(i)j Fp(is)g(the)g(curren)o(t)i(iteration)d (index.)-45 1145 y Fk(5.2)66 b(An)23 b(example)-45 1239 y Fp(Let)17 b(us)f(assume)g(that)g(the)g(user)h(w)o(an)o(ts)f(to)g (sort)h(an)f(arra)o(y)f(of)h(in)o(tegers)h(with)e(NetSolv)o(e)i(using)e (the)i(C)f(in)o(terfaces.)26 b(The)-45 1288 y(default)18 b(NetSolv)o(e)g(serv)o(er)h(comes)f(with)f(a)h(default)g(problem)e (called)i Fm(iqsort)f Fp(that)h(do)q(es)g(a)g(quic)o(ksort)g(on)g(an)g (in)o(teger)-45 1338 y(v)o(ector.)h(The)14 b(call)f(lo)q(oks)h(lik)o(e) -45 1421 y Fm(status)21 b(=)g(netsl\('iqsort\(\)',s)o(ize,p)o(tr,so)o (rted\))o(;)-45 1505 y Fp(where)16 b Fm(size)d Fp(is)i(the)g(size)g(of) f(the)h(arra)o(y)f(to)g(sort,)h Fm(array)f Fp(is)g(a)g(p)q(oin)o(ter)h (to)f(the)h(\014rst)h(elemen)o(t)d(of)h(the)h(arra)o(y)m(,)f(and)g Fm(sorted)-45 1554 y Fp(is)k(a)h(p)q(oin)o(ter)f(to)h(the)g(memory)d (space)j(that)g(will)e(hold)h(the)h(sorted)g(arra)o(y)g(on)f(return.)33 b(What)18 b(if)g(the)h(user)h(w)o(an)o(ts)e(to)-45 1604 y(sort)g(200)f(arra)o(ys?)30 b(On)18 b(w)o(a)o(y)f(is)g(to)h(write)g (200)f(calls)g(as)h(the)g(one)g(ab)q(o)o(v)o(e.)29 b(Not)18 b(only)f(w)o(ould)g(it)g(b)q(e)h(tedious,)h(but)f(also)-45 1654 y(ine\016cien)o(t)c(as)g(the)g(sorts)h(w)o(ould)e(b)q(e)h(done)g (successiv)o(ely)m(,)h(with)e(no)h(parallelism.)h(In)f(order)g(to)g (obtain)f(some)g(parallelism,)-45 1704 y(one)k(m)o(ust)f(call)g Fm(netslnb\(\))e Fp(and)j(mak)o(e)e(the)i(corresp)q(onding)h(calls)e (to)h Fm(netslpr\(\))e Fp(and)h Fm(netslwt\(\))f Fp(as)i(explained)f (in)-45 1754 y(Section)c(4.3.)k(Again,)11 b(this)g(is)g(prett)o(y)i (tedious)e(and)h(as)f(it)g(is)g(a)h(prett)o(y)g(common)c(situation)j(w) o(e)h(decided)g(to)g(address)g(it)f(with)-45 1803 y Fm(netsl)p 68 1803 14 2 v 15 w(farm\(\))p Fp(.)16 b(Before)d(calling)d Fm(netsl)p 610 1803 V 15 w(farm\(\))p Fp(,)g(the)j(user)g(needs)g(to)f (construct)i(arra)o(ys)e(of)f(p)q(oin)o(ters)h(and)g(in)o(tegers)h (that)-45 1853 y(con)o(tain)j(the)h(argumen)o(ts)f(of)f(eac)o(h)i(of)f (the)h(NetSolv)o(e)g(call.)25 b(This)16 b(is)g(prett)o(y)h(straigh)o (tforw)o(ard:)23 b(where)17 b(the)g(user)h(w)o(ould)-45 1903 y(ha)o(v)o(e)c(called)f(NetSolv)o(e)h(as:)-45 1986 y Fm(requests1)20 b(=)i(netslnb\('iqsort)o(',siz)o(e1,pt)o(r1,so)o (rted)o(1\);)-45 2036 y(requests2)e(=)i(netslnb\('iqsort)o(',siz)o (e2,pt)o(r2,so)o(rted)o(2\);)-45 2086 y(...)-45 2136 y(requests200)e(=)h(netslnb\('iqsort',s)o(ize20)o(0,arr)o(ay20)o(0,sor) o(ted20)o(0\);)-45 2219 y Fp(and)14 b(then)g(to)g(ha)o(v)o(e)g(calls)f (to)h Fm(netslpr\(\))e Fp(and)i Fm(netslwt\(\))e Fp(for)h(eac)o(h)i (request.)-45 2272 y(With)e(farming,)e(one)j(just)g(needs)i(to)d (construct)j(three)f(arra)o(ys)f(as:)-45 2355 y Fm(int)21 b(size_array[200];)-45 2405 y(void)g(*ptr_array[200];)-45 2455 y(void)g(*sorted_array[200)o(];)-45 2554 y(size_array[0])e(=)j (size1;)-45 2604 y(ptr_array[0])d(=)j(ptr1;)-45 2654 y(sorted_array[0])d(=)i(sorted1;)-45 2704 y(...)909 2828 y Fp(32)p eop %%Page: 33 35 33 34 bop -45 195 a Fp(Then,)14 b Fm(netsl)p 188 195 14 2 v 15 w(farm\(\))e Fp(can)i(b)q(e)h(called)e(as:)-45 281 y Fm(status_array)19 b(=)j(netsl_farm\("i=0,1)o(99",n)o(etsl_)o (int_)o(array)o(\(size)o(_arra)o(y,"$i)o("\),)740 331 y(netsl_ptr_array)o(\(ptr_)o(array)o(,"$i")o(\),)740 381 y(netsl_ptr_array)o(\(sort)o(ed_ar)o(ray,")o($i"\)\))o(;)-45 467 y Fp(In)16 b(short,)h Fm(netsl)p 243 467 V 15 w(farm\(\))e Fp(is)h(a)g(concise,)h(con)o(v)o(enien)o(t)g(w)o(a)o(y)e(of)h(farming)e (out)i(groups)g(of)g(requests.)27 b(Of)16 b(course,)i(it)e(uses)-45 517 y Fm(netslnb\(\))c Fp(underneath,)j(thereb)o(y)g(ensuring)f (fault-tolerance)g(and)g(load-balancing.)-45 657 y Fk(5.3)66 b(Catc)n(hing)23 b(errors)-45 751 y Fm(netsl)p 68 751 V 15 w(farm\(\))13 b Fp(returns)j(an)e(in)o(teger)h(arra)o(y)m(.)k (That)c(arra)o(y)f(is)g(dynamically)e(allo)q(cated)i(and)g(m)o(ust)g(b) q(e)h(freed)g(b)o(y)g(the)g(user)-45 801 y(after)f(the)g(call.)j(The)d (arra)o(y)f(is)g(at)g(least)h(of)e(size)j(1.)i(If)c(the)h(\014rst)g (elemen)o(t)f(of)g(the)h(arra)o(y)f(is)g(either)h(0)g(or)f(-1.)k(If)c (it)g(is)h(0,)e(then)-45 850 y(the)i(call)e(w)o(as)h(completed)g (successfully)h(and)f(the)h(arra)o(y)f(is)g(of)f(size)i(1.)k(If)13 b(\014rst)h(elemen)o(t)e(of)h(the)h(arra)o(y)e(is)i(-1,)e(then)i(at)f (least)-45 900 y(one)j(requests)h(failed.)k(The)16 b(arra)o(y)f(is)h (then)g(of)e(size)j(one)e(plus)h(the)f(n)o(um)o(b)q(er)g(of)g(requests) i(and)e(the)h(\(1+i\)-th)g(elemen)o(t)f(of)-45 950 y(the)f(arra)o(y)g (is)g(the)g(error)h(co)q(de)g(for)e(the)i(i-th)e(request.)20 b(Here)15 b(is)f(an)f(example)g(on)h(ho)o(w)f(to)h(prin)o(t)g(out)f (error)i(messages:)-45 1036 y Fm(status)21 b(=)g(netsl_farm\("i=0,20)o (0",..)o(..\);)-45 1086 y(if)g(\(status[0])f(==)h(0\){)20 1136 y(fprintf\(stderr,"Suc)o(cess\\)o(n"\);)20 1185 y(free\(status\);)-45 1235 y(})h(else)f({)-1 1285 y(for)g (\(i=1;i<201;i++\))d({)42 1335 y(fprintf\(stderr,"Re)o(quest)g (#\045d:",i\);)42 1385 y(netslerr\(status[i])o(\);)-1 1435 y(})-45 1484 y(})-45 1534 y(free\(status\);)-45 1674 y Fk(5.4)66 b(Curren)n(t)24 b(Implemen)n(tation)g(and)f(F)-6 b(uture)24 b(Impro)n(v)n(emen)n(ts)-45 1768 y Fp(One)13 b(of)e(the)h(adv)n(an)o(tages)g(of)f(farming)e(is)j(that)g(the)h(user)g (do)q(es)f(not)g(ha)o(v)o(e)g(the)g(resp)q(onsibilit)o(y)g(to)f(handle) h(the)h(managemen)o(t)-45 1818 y(of)h(requests.)23 b(F)m(or)15 b(instance,)g(it)g(w)o(ould)f(b)q(e)i(unreasonable)f(to)g(send)h(all)d (the)j(requests)h(if)d(there)i(are)f(not)g(enough)g(serv)o(ers)-45 1868 y(to)h(p)q(erform)f(the)h(computations.)23 b(Instead,)17 b Fm(netsl)p 795 1868 V 14 w(farm\(\))p Fp('s)e(implemen)o(tatio)o(n)e (tak)o(es)k(care)f(of)g(that.)24 b(Without)15 b(going)-45 1918 y(in)o(to)f(detail,)g(let)h(us)g(just)h(sa)o(y)e(that)h(the)h (farming)c(algorithm)g(dynamically)g(tunes)k(the)g(maxim)n(um)10 b(n)o(um)o(b)q(er)15 b(of)f(p)q(ending)-45 1968 y(requests)20 b(to)e(re\015ect)i(c)o(hanges)f(in)e(the)i(computational)c(serv)o(er)20 b(p)q(o)q(ol)d(\(size)i(and)f(load\).)30 b(This)18 b(is)g(done)g(b)o(y) g(constan)o(tly)-45 2017 y(measuring)13 b(the)h(throughput)g(of)g(the)g (computations.)909 2828 y(33)p eop %%Page: 34 36 34 35 bop -45 509 a Fl(Chapter)31 b(6)-45 720 y Fn(The)38 b(NetSolv)m(e)h(Agen)m(t)f(and)g(Serv)m(er)-45 964 y Fk(6.1)66 b(The)22 b(Agen)n(t)-45 1058 y Fp(After)15 b(compiling)c(the)j(agen)o(t)g(as)g(explained)g(in)f(Section)h(3.4,)f (the)h(executable)h(of)f(the)g(NetSolv)o(e)g(agen)o(t)g(is)g(lo)q (cated)g(in:)-45 1139 y Fm($NETSOLVE_ROOT/bi)o(n/$NE)o(TSOLV)o(E_ARC)o (H/age)o(nt.)-45 1220 y Fp(This)g(executable)h(can)f(b)q(e)g(called)g (with)g(no)f(argumen)o(t)g(as)-1 1302 y Fm(\045)21 b(agent)g(&)-45 1383 y Fp(and)c(this)h(starts)h(a)e(stand-alone)h(agen)o(t.)29 b(This)18 b(agen)o(t)f(will)f(b)q(e)j(a)o(v)n(ailable)c(for)i(NetSolv)o (e)h(serv)o(ers)i(to)d(participate)h(in)f(a)-45 1433 y(new)d(NetSolv)o(e)h(system.)j(The)c(executable)h(can)g(also)e(tak)o (e)h(one)g(single)g(argumen)o(t)f(that)h(is)g(the)g(name)f(of)g(a)h (host)g(already)-45 1483 y(running)g(a)f(NetSolv)o(e)h(agen)o(t:)-1 1564 y Fm(\045)21 b(agent)g(bluegrass.cs.utk.)o(edu)-45 1645 y Fp(for)13 b(instance.)19 b(This)13 b(starts)i(a)e(NetSolv)o(e)h (agen)o(t)f(on)g(the)h(lo)q(cal)f(hosts)h(and)f(connects)j(it)d(to)g (an)g(existing)g(NetSolv)o(e)h(system)-45 1695 y(that)g(can)g(consist)h (of)e(m)o(ultiple)f(agen)o(ts)j(\(and)f(serv)o(ers\).)20 b(The)15 b(lo)q(cal)e(agen)o(t)h(b)q(ecomes)g(then)h(a)f(new)g(clien)o (t)g(en)o(try-p)q(oin)o(t)g(to)-45 1745 y(that)g(system.)-45 1884 y Fk(6.2)66 b(The)22 b(Serv)n(er)-45 1986 y Fh(6.2.1)55 b(Starting)18 b(a)h(Serv)n(er)-45 2066 y Fp(After)c(compiling)c(the)j (serv)o(er)h(as)f(explained)g(in)g(section)g(3.4,)f(the)h(executable)h (of)e(the)i(NetSolv)o(e)f(serv)o(er)h(is)f(lo)q(cated)g(in:)-45 2147 y Fm($NETSOLVE_ROOT/bi)o(n/$NE)o(TSOLV)o(E_ARC)o(H/ser)o(ver.)-45 2229 y Fp(This)c(executable)i(uses)f(a)f Fo(c)n(on\014gur)n(ation)j (\014le)d Fp(for)g(initializing)e(the)j(NetSolv)o(e)g(serv)o(er.)18 b(It)10 b(can)h(b)q(e)g(called)f(with)g(no)g(argumen)o(t)-45 2279 y(as:)-1 2360 y Fm(\045)21 b(server)g(&)-45 2441 y Fp(in)14 b(whic)o(h)h(case)h(the)f(default)g(con\014guration)f (\014le)h(lo)q(cated)g(in)f Fm($NETSOLVE)p 1141 2441 14 2 v 14 w(ROOT/server)p 1397 2441 V 13 w(config)g Fp(is)g(used.)22 b(This)15 b(is)f(the)-45 2491 y(\014le)h(that)h(should)f(b)q(e)h(used)g (for)f(\014rst)i(exp)q(erimen)o(ts)e(and)g(for)g(testing)h(the)g (system.)23 b(Ho)o(w)o(ev)o(er,)15 b(it)g(is)h(p)q(ossible)f(to)g(sp)q (ecify)-45 2541 y(another)f(con\014guration)g(\014le)g(b)o(y)f(calling) g(the)h(executable)h(as:)-1 2622 y Fm(\045)21 b(server)g (/home/me/my_conf)o(ig)e(&)-45 2704 y Fp(for)14 b(instance.)k(In)c(the) h(follo)o(wing)c(section,)j(w)o(e)g(explain)f(the)i(structure)h(of)d (the)i(serv)o(er)g(con\014guration)f(\014le.)909 2828 y(34)p eop %%Page: 35 37 35 36 bop -45 195 a Fh(6.2.2)55 b(The)19 b(Serv)n(er)e(Con\014guration) j(File)-45 275 y Fp(The)14 b(con\014guration)f(\014le)g(is)g(organized) h(in)f(lines.)k(A)d(line)f(can)g(start)h(with)f(a)h Fm('#')e Fp(in)h(whic)o(h)g(case)i(the)f(line)f(is)g(ignored)g(and)-45 325 y(can)j(b)q(e)h(used)g(for)f(commen)o(ts.)23 b(A)17 b(line)e(can)i(also)e(start)i(with)f(a)g Fo(keywor)n(d)g Fp(that)g(is)g(pre\014xed)i(b)o(y)e(a)g Fm('@')p Fp(.)24 b(Suc)o(h)16 b(a)g(line)g(is)-45 374 y(said)d(to)h(start)g(a)g Fo(se)n(ction)g Fp(of)f(the)h(con\014guration)f(\014le.)18 b(A)c(section)h(can)f(consist)g(of)f(only)g(the)h(line)g(with)f(the)i (k)o(eyw)o(ord.)i(Let)-45 424 y(us)e(review)h(all)e(the)h(p)q(ossible)h (k)o(eyw)o(ords)f(and)g(ho)o(w)g(they)g(can)g(b)q(e)h(used)g(to)f (precisely)h(de\014ne)g(a)f(NetSolv)o(e)g(serv)o(er)h(as)f(it)g(is)-45 474 y(done)f(in)g(the)g(default)g(con\014guration)f(\014le.)17 568 y Fj(\017)21 b Fm('@AGENT:'[*)o(])p 59 578 480 2 v 11 w Fp(sp)q(eci\014es)16 b(the)e(agen)o(t)g(that)g(the) h(NetSolv)o(e)f(serv)o(er)h(m)o(ust)e(con)o(tact)h(to)g(register)h(in)o (to)e(a)59 618 y(NetSolv)o(e)g(system.)18 b(The)13 b(agen)o(t)g(is)g (iden)o(ti\014ed)h(b)o(y)f(the)g(name)f(of)h(the)g(host)h(on)f(whic)o (h)g(it)f(is)h(running)g(and)g(there)i(can)59 668 y(b)q(e)h(only)e(one) i(suc)o(h)g(line)e(in)h(the)h(con\014guration)f(\014le.)22 b(If)15 b(the)h('*')e(is)h(presen)o(t,)i(then)f(the)g(serv)o(er)g(will) e(broadcast)i(its)59 718 y(existence)g(to)e(all)f(NetSolv)o(e)h(agen)o (ts)g(kno)o(wn)g(to)g(the)h(one)f(running)g(on)g Fm()p Fp(.)j(Otherwise,)e(the)g(serv)o(er)g(will)59 768 y(only)e(b)q(e)h(kno) o(wn)g(to)g(the)g(agen)o(t)g(on)g Fm()p Fp(.)17 851 y Fj(\017)21 b Fm('@PROCS:)o(')p 59 858 371 2 v 16 w Fp(sp)q(eci\014es)g(the)f(n)o(um)o(b)q(er)e(of)h(pro)q (cessors)i(that)e(can)g(b)q(e)h(used)g(b)o(y)f(the)g(serv)o(er)i(to)e (p)q(erform)59 900 y(sim)o(ultaneous)c(computations)f(on)i(the)h(lo)q (cal)f(hosts.)25 b(There)18 b(can)e(only)g(b)q(e)h(one)f(suc)o(h)h (line)f(in)g(the)g(con\014guration)59 950 y(\014le.)17 1033 y Fj(\017)21 b Fm('@MPIHOSTS)f(')p 59 1040 480 2 v 11 w Fp(sp)q(eci\014es)d(the)e(path)f(to)g(the)h(\014le)f (that)g(con)o(tains)h(the)g(list)e(of)h(mac)o(hines)f(that)i(can)f(b)q (e)59 1083 y(used)h(b)o(y)e(MPI.)17 1166 y Fj(\017)21 b Fm('@MPIPATH)f(')p 59 1182 371 2 v 7 w Fp(sp)q(eci\014es)12 b(the)d(path)h(to)f(the)h(directory)g(that)f(con)o(tains)g(the)h(MPI)g (executables)h(\(e.g.)16 b Fm(mpirun)p Fp(\).)17 1249 y Fj(\017)21 b Fm('@WORKLOADMAX:')p 59 1256 436 2 v 13 w Fp(sp)q(eci\014es)e(the)e(v)n(alue)f(of)g(the)i(w)o(orkload)d (b)q(ey)o(ond)i(whic)o(h)g(the)g(serv)o(er)h(refuses)g(new)f(re-)59 1299 y(quests)d(\(e.g.)j Fm('@WORKLOADMAX:100')p Fp(\).)d(A)f(v)n(alue) g(of)f Fm(-1)g Fp(means)g(that)h(the)h(serv)o(er)g(accepts)h(requests)f (regardless)h(of)59 1349 y(the)f(w)o(orkload.)17 1432 y Fj(\017)21 b Fm('@SCRATCH:)o(')p 59 1448 371 2 v 13 w Fp(sp)q(eci\014es)c(where)g(the)f(NetSolv)o(e)g(serv)o(er)h (can)f(put)f(temp)q(orary)g(directories)i(and)e(\014le.)24 b(The)59 1482 y(default)13 b(is)h Fm(/tmp/)p Fp(.)17 1565 y Fj(\017)21 b Fm('@CONDOR:')p 59 1580 349 2 v 14 w Fp(sp)q(eci\014es)f(that)e(the)h(NetSolv)o(e)f(serv)o(er)i(is) d(using)h(a)g(Condor)g([7)o(,)f(8])h(p)q(o)q(ol)f(as)h(a)g(computing)59 1614 y(resource.)23 b(The)15 b(path)g(to)g(the)h(Condor)f(base)g (directory)h(m)o(ust)e(b)q(e)h(pro)o(vided.)21 b(There)c(can)e(b)q(e)g (only)g(one)g(suc)o(h)g(line)59 1664 y(in)e(the)i(con\014guration)e (\014le.)17 1747 y Fj(\017)21 b Fm('@PROBLEMS:')p 59 1754 262 2 v 16 w Fp(marks)c(the)i(b)q(eginning)f(of)g(the)h(list)f(of) f Fo(description)i(\014le)g Fp(names.)31 b(The)18 b(problems)g(from)f (these)59 1797 y(description)d(\014les)h(m)o(ust)d(b)q(e)j(added)f(to)g (the)g(serv)o(er.)20 b(Details)13 b(on)h(description)g(\014les)h(are)f (giv)o(en)f(in)h(Section)g(6.3.)17 1880 y Fj(\017)21 b Fm('@RESTRICTIONS:')p 59 1887 349 2 v 15 w Fp(marks)c(the)i(b)q (eginning)e(of)h(the)h(list)f(of)f(access)j(restrictions)g(that)e(are)h (applicable)e(to)h(the)59 1930 y(NetSolv)o(e)c(serv)o(er.)19 b(The)c(list)e(consists)i(of)e(lines)h(formatted)f(as:)102 2029 y Fm()42 b()59 2129 y Fp(The)14 b(sym)o(b)q(ol)e Fm('*')h Fp(is)h(used)h(as)f(a)f(wildcard)h(in)f(the)i(domain)c(name.)17 b(F)m(or)d(instance,)g(the)g(line:)407 2229 y Fm(*.edu)21 b(10)59 2328 y Fp(means)14 b(that)h(only)f(10)h(requests)i(from)c (clien)o(ts)j(residing)f(on)g(a)f Fm(.edu)h Fp(mac)o(hine)e(can)j(b)q (e)f(serviced)i(sim)o(ultaneously)m(.)59 2378 y(When)f(the)h(serv)o(er) h(receiv)o(es)g(a)e(request)i(from)c(some)i(mac)o(hine,)f(it)h (determines)g(whic)o(h)h(line)e(in)h(the)h(list)f(m)o(ust)f(b)q(e)59 2428 y(used)g(to)f(accept)i(or)e(reject)i(the)e(request)i(b)o(y)e (taking)g(the)h(most)e(re\014ned)i(domain)d(name.)18 b(F)m(or)c(instance,)h(if)f(the)g(list)59 2478 y(of)f(the)i (restrictions)g(is:)407 2577 y Fm(*.edu)21 b(5)407 2627 y(*.utk.edu)f(10)909 2828 y Fp(35)p eop %%Page: 36 38 36 37 bop 59 195 a Fp(then)11 b(the)h(serv)o(er)g(accepts)h(at)d(most)g (5)h(sim)o(ultaneous)e(requests)k(coming)c(from)g Fm(.edu)h Fp(mac)o(hines)g(that)h(are)g Fq(not)f Fp(in)g(the)59 245 y Fo(.utk.e)n(du)15 b Fp(sub-domain,)e(and)h(at)h(most)f(10)g (requests)j(that)e(come)f(from)g(mac)o(hines)g(in)g(the)i Fm(.utk.edu)d Fp(sub-domain)59 295 y(for)g(a)h(total)f(of)g(15)h(p)q (ossible)g(sim)o(ultaneous)e(requests.)-45 374 y(The)18 b(default)f(con\014guration)g(\014le)g(in)g Fm($NETSOLVE)p 765 374 14 2 v 14 w(ROOT/server)p 1021 374 V 14 w(config)f Fp(should)h(b)q(e)h(used)g(as)g(a)f(template)f(to)h(create)-45 424 y(new)d(con\014guration)g(\014les.)-45 541 y Fh(6.2.3)55 b(Customizing)17 b(the)i(Serv)n(er)-45 621 y Fp(The)11 b(default)f(serv)o(er)i(con\014guration)e(\014le)g(con)o(tains)h(sev)o (eral)f(lines)h(that)f(sp)q(ecify)h(description)g(\014les.)17 b(These)12 b(\014les)f(are)g(lo)q(cated)-45 670 y(in)g(the)i Fm($NETSOLVE)p 272 670 V 14 w(ROOT/problems)c Fp(directory)m(.)17 b(This)12 b(directory)h(con)o(tains)f(man)o(y)d(description)k(\014les)f (that)g(are)g(not)g(used)-45 720 y(b)o(y)i(the)h(default)f(NetSolv)o(e) h(serv)o(er.)21 b(These)16 b(\014les)f(corresp)q(ond)h(to)e(problems)f (that)i(are)g(solv)o(ed)f(with)g(n)o(umerical)f(soft)o(w)o(are)-45 770 y(that)k(is)h(not)f(distributed)h(with)f(NetSolv)o(e)g(but)h(can)g (b)q(e)g(added)f(b)o(y)g(uncommen)o(ting)e(the)j(corresp)q(onding)g (lines)f(in)g(the)-45 820 y(serv)o(er)e(description)g(\014le.)j(The)c (serv)o(er)i(can)e(then)g(b)q(e)h(recompiled)e(b)o(y)g(t)o(yping)-45 894 y Fm(\045)22 b(make)f(server)-45 968 y Fp(in)13 b(the)i Fm($NETSOLVE)p 276 968 V 14 w(ROOT)e Fp(directory)m(.)18 b(Section)c(6.3)f(giv)o(es)h(details)g(on)f(the)i(creation)f(of)f(new)i (problem)d(description)j(\014les.)-45 1106 y Fk(6.3)66 b(Expanding)25 b(the)d(Serv)n(er)-45 1200 y Fp(As)17 b(already)f(indicated)h(in)f(Section)h(6.2.3,)f(it)g(is)g(p)q(ossible)h (to)g(add)f(new)h(functionalities)f(to)g(a)h(NetSolv)o(e)g(computation) -45 1250 y(serv)o(er)f(b)o(y)f(sp)q(ecifying)f(additional)f (description)i(\014les)g(in)f(the)i(serv)o(er)g(con\014guration)e (\014le.)20 b(In)15 b(what)f(follo)o(ws)f(w)o(e)i(describ)q(e)-45 1300 y(ho)o(w)h(a)g(description)h(\014le)f(can)g(b)q(e)h(created.)27 b(It)16 b(is)g(strongly)g(advised)h(to)f(use)h(the)g(existing)f (\014les)g(as)g(templates.)25 b(A)o(t)16 b(the)-45 1350 y(momen)o(t)10 b(this)i(do)q(cumen)o(t)g(is)g(b)q(eing)g(written,)h (the)f(NetSolv)o(e)h(dev)o(elopmen)o(t)e(team)g(is)i(testing)f(a)g(Ja)o (v)n(a)g(applet)g(that)g(should)-45 1399 y(mak)o(e)i(the)j(generation)f (of)f(problem)f(description)j(\014les)f(easy)g(and)g(in)o(teractiv)o (e.)24 b(When)16 b(this)g(applet)g(reac)o(hes)h(a)f(mature)-45 1449 y(enough)e(state,)g(it)g(will)e(b)q(e)j(put)f(on)f(the)i(NetSolv)o (e)f(homepage.)-45 1502 y(The)j(rationale)e(b)q(ehind)h(ev)o(erything)h (that)f(is)g(explained)g(in)f(what)h(follo)o(ws)f(comes)g(from)g([9)o (].)24 b(Eac)o(h)16 b(description)h(\014le)f(is)-45 1552 y(comp)q(osed)d(of)h(sev)o(eral)g Fo(pr)n(oblem)g(descriptions)p Fp(.)k(Before)d(explaining)d(ho)o(w)h(to)h(create)h(a)f(problem)e (description,)i(w)o(e)g(de\014ne)-45 1602 y(the)g(concept)i(of)d Fo(mnemonics)p Fp(.)-45 1718 y Fh(6.3.1)55 b(Mnemonics)-45 1798 y Fp(A)14 b(NetSolv)o(e)g(problem)e(tak)o(es)i(some)f(ob)r(jects)i (in)e(input)g(and)h(pro)q(duces)h(some)e(ob)r(jects)i(as)e(output.)18 b(T)m(o)13 b(b)q(e)i(able)e(to)g(relate)-45 1848 y(high-lev)o(el)f(and) h(lo)o(w-lev)o(el)f(descriptions)i(of)f(the)g(input)g(and)g(output)h (ob)r(jects)g(of)e(a)h(giv)o(en)g(problem,)e(w)o(e)j(need)g(to)f(dev)o (elop)-45 1898 y(some)k(kind)h(of)g(syn)o(tax.)31 b(W)m(e)17 b(decided)j(to)e(call)f(the)i(mem)o(b)q(er)d(of)i(this)g(syn)o(tax)g Fo(mnemonics)p Fp(.)32 b(A)18 b(mnemonic)e(is)i(just)g(a)-45 1947 y(c)o(haracter)h(string)f(\(t)o(ypically)f(2)g(or)h(3)g(c)o (haracters)h(long\))e(that)h(is)g(used)h(to)f(access)h(lo)o(w)e(lev)o (el)h(details)f(of)h(the)g(di\013eren)o(t)-45 1997 y(input)c(and)g (output)g(ob)r(jects.)20 b(W)m(e)13 b(index)h(the)h(list)f(of)f(ob)r (jects,)i(starting)f(at)g(0.)k(Therefore,)d(the)g(\014rst)g(ob)r(ject)g (in)e(input)h(to)-45 2047 y(a)i(problem)f(is)h(the)g(input)g(ob)r(ject) h(n)o(um)o(b)q(er)e(0)h(and)g(the)h(third)f(ob)r(ject)h(in)e(output)i (to)f(a)f(problem)g(is)h(the)h(output)f(ob)r(ject)-45 2097 y(n)o(um)o(b)q(er)f(2,)g(for)g(instance.)24 b(W)m(e)15 b(use)h(an)f Fm(I)h Fp(or)f(an)g Fm(O)h Fp(to)f(sp)q(ecify)h(whether)h (an)e(ob)r(ject)i(is)e(in)g(input)g(or)h(output.)23 b(Here)17 b(are)-45 2147 y(the)d(four)g(t)o(yp)q(es)h(of)e(mnemonics)f(for)h(an)h (ob)r(ject)h(indexed)f Fi(x)p Fp(:)17 2221 y Fj(\017)21 b Fp(P)o(oin)o(ter)14 b(to)f(the)i(data)f(:)k Fm([I|O])p Fi(x)p Fp(,)17 2298 y Fj(\017)j Fp(Num)o(b)q(er)13 b(of)g(ro)o(ws)i(:)i Fm(m[I|O])p Fi(x)c Fp(\(only)g(for)h(matrices,)e(v)o(ectors,)j(pac)o(k) o(ed)f(\014les)h(and)e(string)h(lists\),)17 2375 y Fj(\017)21 b Fp(Num)o(b)q(er)13 b(of)g(columns)g(:)18 b Fm(n[I|O])p Fi(x)12 b Fp(\(only)i(for)f(matrices\),)17 2452 y Fj(\017)21 b Fp(Leading)13 b(dimensions)g(:)18 b Fm(l[I|O])p Fi(x)12 b Fp(\(only)h(for)h(matrices\).)17 2530 y Fj(\017)21 b Fp(Sp)q(ecial)14 b(descriptor)h(:)j Fm(d[I|O])p Fi(x)12 b Fp(\(only)h(for)h(distributed)g(memory)e(ob)r(jects\).)-45 2604 y(F)m(or)j(example,)g Fm(mI4)g Fp(designates)i(the)f(n)o(um)o(b)q (er)f(of)h(ro)o(ws)g(of)f(the)h(input)g(ob)r(ject)g(n)o(um)o(b)q(er)g (4,)f(whereas)i Fm(O1)f Fp(designates)g(the)-45 2654 y(p)q(oin)o(ter)f(to)g(the)h(data)f(of)f(output)h(ob)r(ject)h(n)o(um)o (b)q(er)f(1.)21 b(In)15 b(the)h(next)f(section,)h(w)o(e)f(describ)q(e)i (the)f(di\013eren)o(t)g(sections)g(that)-45 2704 y(are)e(necessary)i (to)e(build)f(a)h(problem)e(description)j(and)e(will)g(see)i(ho)o(w)e (the)i(mnemonics)d(are)i(used.)909 2828 y(36)p eop %%Page: 37 39 37 38 bop -45 195 a Fh(6.3.2)55 b(Sections)18 b(of)h(a)g(Problem)e (Description)-45 275 y Fp(The)d(structure)i(of)d(a)g(problem)f (description)i(\014le)g(is)f(v)o(ery)h(similar)d(to)i(the)h(one)g(of)f (a)g(serv)o(er)i(con\014guration)e(\014le.)18 b(The)c(lines)-45 325 y(starting)h(with)g(a)h Fm('#')e Fp(are)i(considered)h(commen)o (ts.)k(Keyw)o(ords)16 b(are)g(pre\014xed)h(b)o(y)e(a)g Fm('@')g Fp(and)g(mark)f(the)i(b)q(eginning)f(of)-45 374 y(sub-sections.)21 b(In)14 b(what)g(follo)o(ws,)e(w)o(e)j(describ)q (e)h(eac)o(h)e(section)h(separately)g(as)g(w)o(ell)e(as)h(eac)o(h)h(k)o (eyw)o(ord)f(and)h(sub-sections)-45 424 y(within)10 b(eac)o(h)i (section.)17 b(Keep)c(in)d(mind)f(to)i(lo)q(ok)f(at)h(one)g(existing)g (problem)e(description)j(\014le)f(as)g(a)g(template)f(when)h(reading) -45 474 y(this)j(section.)-45 585 y Fq(Problem)g(ID)h(and)g(General)f (Information)17 664 y Fj(\017)21 b Fm('@PROBLEM)f(')p 59 671 458 2 v 14 w Fp(sp)q(eci\014es)f(the)f(name)d(of)i(a)f(problem)g (as)h(it)g(will)e(b)q(e)j(visible)e(to)h(the)g(NetSolv)o(e)g(users)59 714 y(\(clien)o(ts\).)17 797 y Fj(\017)k Fm('@INCLUDE)f(')p 59 804 371 2 v 12 w Fp(sp)q(eci\014es)15 b(a)f(C)f(header)i(\014le)f (to)f(include)h(\(See)h(the)f(example)e(in)h(Section)i(6.3.4\).)h (There)f(can)59 847 y(b)q(e)f(sev)o(eral)h(suc)o(h)f(lines)g(as)g(a)g (problem)e(can)i(call)f(sev)o(eral)i(functions.)17 930 y Fj(\017)21 b Fm('@DASHI)f(')p 59 946 327 2 v 14 w Fp(sp)q(eci\014es)d(a)e(default)g(directory)h(in)f(whic)o(h)g (header)h(\014les)g(are)f(to)g(b)q(e)h(lo)q(ok)o(ed)f(for,)g(in)f(a)h (similar)59 980 y(w)o(a)o(y)c(as)h(the)g Fm(-I)g Fp(option)f(of)g(most) f(C)i(compilers.)k(There)d(can)f(b)q(e)h(sev)o(eral)f(suc)o(h)h(lines)e (as)h(a)g(problem)e(can)i(call)f(sev)o(eral)59 1030 y(functions.)17 1113 y Fj(\017)21 b Fm('@LIB)g(')p 59 1120 284 2 v 18 w Fp(sp)q(eci\014es)g(a)f(library)f(or)h(an)f(ob)r(ject)i (\014le)e(to)h(link)f(to,)h(or)g(a)g Fj(\000)p Fi(L)g Fp(option)f(for)g(the)i(link)o(er)e(\(See)59 1163 y(the)h(example)e(in) h(Section)g(6.3.4\).)33 b(There)21 b(can)e(b)q(e)h(sev)o(eral)g(suc)o (h)g(lines)f(and)g(the)h(lines)g(can)f(con)o(tain)g(v)n(ariable)59 1212 y(substitutions)14 b(suc)o(h)h(as)f Fm($\(NETSOLVE)p 674 1212 14 2 v 13 w(ROOT\))p Fp(.)17 1295 y Fj(\017)21 b Fm('@FUNCTION)f(')p 59 1302 393 2 v 12 w Fp(sp)q(eci\014es)c (the)f(name)d(of)i(a)g(function)f(from)g(the)h(underlying)g(n)o (umerical)f(soft)o(w)o(are)h(library)59 1345 y(that)f(is)g(b)q(eing)g (called)f(to)h(solv)o(e)g(the)h(problem.)i(There)e(can)g(b)q(e)f(sev)o (eral)h(suc)o(h)g(lines)e(as)i(a)e(problem)g(can)h(call)f(sev)o(eral)59 1395 y(functions.)17 1478 y Fj(\017)21 b Fm('@LANGUAGE)f([C|FORTRAN]')p 59 1488 502 2 v 14 w Fp(sp)q(eci\014es)g(whether)f(the)f(underlying)f (n)o(umerical)f(library)g(is)i(written)g(in)f(C)g(or)g(in)59 1528 y(F)m(ortran.)24 b(This)16 b(is)f(used)i(in)f(conjunction)g(with)f (the)i(function)e(names)h(sp)q(eci\014ed)h(with)f Fm('@FUNCTION')d Fp(to)j(handle)59 1578 y(m)o(ulti-lang)o(uage)11 b(in)o(terop)q (erabilit)o(y)m(.)17 1661 y Fj(\017)21 b Fm('@MAJOR)f([COL|ROW]')p 59 1671 393 2 v 14 w Fp(sp)q(eci\014es)e(what)e(ma)r(jor)e(should)i(b)q (e)h(used)g(to)f(store)h(the)f(input)g(matrices)g(b)q(efore)g(calling) 59 1711 y(the)f(underlying)g(n)o(umerical)e(soft)o(w)o(are.)22 b(F)m(or)14 b(instance,)i(if)e(the)h(n)o(umerical)f(library)g(is)h(LAP) m(A)o(CK)g([10)o(],)f(the)i(ma)r(jor)59 1760 y(has)e(to)g(b)q(e)g Fm('COL')p Fp(.)17 1843 y Fj(\017)21 b Fm('@PATH)f(')p 59 1859 306 2 v 14 w Fp(sp)q(eci\014es)d(a)e(path-lik)o(e)f(name)g(for) g(the)i(problems.)21 b(This)15 b(path)g(is)f(only)h(a)g(naming)d(con)o (v)o(en)o(tion)59 1893 y(and)h(is)h(used)h(for)f(presen)o(tation)g (purp)q(oses.)17 1976 y Fj(\017)21 b Fm('@DESCRIPTION')p 59 1983 V 13 w Fp(marks)15 b(the)i(b)q(eginning)e(of)h(the)h(textual)f (description)h(of)e(the)i(problem.)24 b(This)16 b(sub-section)h(is)59 2026 y(mandatory)12 b(as)i(it)f(allo)o(ws)g(NetSolv)o(e)h(users)h (\(clien)o(ts\))g(to)f(\014nd)g(out)g(what)f(a)h(problem)e(can)j(do.) -45 2137 y Fq(Input)f(Sp)q(eci\014cation)17 2217 y Fj(\017)21 b Fm('@INPUT)f(')p 59 2224 371 2 v 13 w Fp(sp)q(eci\014es)c (the)f(n)o(um)o(b)q(er)f(of)g(ob)r(jects)i(in)e(input)g(to)h(the)g (problem.)j(This)d(line)f(is)g(follo)o(w)o(ed)f(b)o(y)59 2266 y(a)g(corresp)q(onding)i(n)o(um)o(b)q(er)e(of)h(ob)r(ject)g (descriptions)h(\(see)g(b)q(elo)o(w\).)17 2349 y Fj(\017)21 b Fm('@OBJECT)f()h()g(')p 59 2365 916 2 v 11 w Fp(sp)q(eci\014es)14 b(an)e(ob)r(ject)i(t)o(yp)q (e,)f(data)f(t)o(yp)q(e,)h(and)f(name.)17 b(The)59 2399 y(name)11 b(is)i(really)e(only)h(for)g(presen)o(tation)i(purp)q(oses.) 19 b(This)12 b(line)g(is)h(follo)o(w)o(ed)e(b)o(y)h(a)g(mandatory)f (textual)h(description)59 2449 y(of)h(the)h(ob)r(ject.)k(The)c(t)o(yp)q (es)g(are)g(abbreviated)g(b)o(y)f(replacing)g Fm(NETSOLVE)p 1221 2449 14 2 v 15 w(X)g Fp(b)o(y)g Fm(X)g Fp(\(see)i(table)e(2.1\).)k (The)d(ob)r(jects)h(of)59 2499 y(ob)r(ject)f(t)o(yp)q(e)h Fm(FILE)p Fp(,)d Fm(STRING)p Fp(,)h Fm(UPF)p Fp(,)f(and)i Fm(PACKEDFILES)e Fp(do)h(not)h(ha)o(v)o(e)g(a)f(data)h(t)o(yp)q(e.)k (Here)e(are)e(a)f(few)h(examples:)59 2598 y Fm(@OBJECT)20 b(VECTOR)h(I)g(X)59 2648 y(An)g(integer)g(vector)f(named)h('X')909 2828 y Fp(37)p eop %%Page: 38 40 38 39 bop 59 195 a Fm(@OBJECT)20 b(MATRIX)h(D)g(A)59 245 y(A)g(double)g(precision)f(real)h(matrix)f(named)h('A')59 345 y(@OBJECT)f(FILE)h(foo)59 394 y(A)g(file)g(named)g('foo')-45 504 y Fq(Output)13 b(Sp)q(eci\014cation)17 583 y Fj(\017)21 b Fm('@OUTPUT)f(')p 59 590 393 2 v 13 w Fp(sp)q(eci\014es)d (the)f(n)o(um)o(b)q(er)f(of)f(ob)r(jects)j(in)e(output)g(to)g(the)h (problem.)21 b(This)15 b(line)f(is)i(follo)o(w)o(ed)59 633 y(b)o(y)d(a)h(corresp)q(onding)h(n)o(um)o(b)q(er)e(of)g(ob)r(ject)i (descriptions)g(\(see)g(b)q(elo)o(w\).)17 713 y Fj(\017)21 b Fm('@OBJECT)f()h()g(')p 59 729 916 2 v 14 w Fp(sp)q(eci\014es)d(an)e(ob)r(ject)h(t)o(yp)q(e,)f (a)g(data)g(t)o(yp)q(e)g(and)g(a)g(name.)59 763 y(This)e(line)f(is)h (follo)o(w)o(ed)e(b)o(y)i(a)f(mandatory)f(textual)i(description)h(of)e (the)h(ob)r(ject.)-45 872 y Fq(Additional)e(Information)17 952 y Fj(\017)21 b Fm('@MATLAB)p 238 952 14 2 v 14 w(MERGE)g (,')p 59 964 757 2 v 9 w Fp(sp)q(eci\014es)15 b(that)e(the)h(output)f(ob)r(jects)h(n)o(um)o(b)q(er)f Fi(<)e(number)q Fp(1)h Fi(>)h Fp(and)59 1002 y Fi(<)j(number)q Fp(2)g Fi(>)h Fp(can)f(b)q(e)h(merged)f(as)h(a)f(complex)f(ob)r(ject)j (up)q(on)e(reception)i(of)e(the)h(n)o(umerical)e(results)j(from)c(the) 59 1052 y(Matlab)f(clien)o(t)h(in)o(terface)g(\(see)h(Section)g (4.2.2\).)17 1132 y Fj(\017)21 b Fm('@COMPLEXITY)e(,')p 59 1144 720 2 v 10 w Fp(sp)q(eci\014es)14 b(that)f(giv)o(en)g (the)g(size)h(of)e(the)i(problem,)d(sa)o(y)i Fi(n)p Fp(,)f(the)h (asymp-)59 1181 y(totic)h(complexit)o(y)m(,)d(sa)o(y)i Fi(C)s Fp(,)g(of)h(the)g(problem)f(in)g(n)o(um)o(b)q(er)g(of)h (\015oating)f(p)q(oin)o(t)g(op)q(erations)h(is)745 1265 y Fi(C)h Fp(=)c Fi(number)q Fp(1)f Fj(\002)f Fi(n)1072 1247 y Ff(number)q Fe(2)1207 1265 y Fi(:)-45 1382 y Fh(6.3.3)55 b(Calling)18 b(Sequence)-45 1462 y Fp(The)13 b(calling)e(sequence)k(to) d(the)h(problem)f(m)o(ust)f(b)q(e)i(de\014ned)h(here)g(so)e(that)h(the) g(NetSolv)o(e)g(clien)o(t)g(using)f(the)h(C)g(or)f(F)m(ortran)-45 1512 y(in)o(terfaces)h(can)f(call)e(the)j(problem.)j(The)c(material)d (describ)q(ed)14 b(in)d(this)h(section)g(is)g(ignored)f(b)o(y)h (NetSolv)o(e)g(when)g(the)g(clien)o(t)-45 1562 y(is)g(Matlab,)g (Mathematica)f(or)i(Ja)o(v)n(a.)k(T)m(o)12 b(clarify)m(,)f(let)h(us)h (tak)o(e)g(an)f(example.)17 b(Let)c(us)g(sa)o(y)f(that)h(the)g(problem) e Fo('toto')i Fp(tak)o(es)-45 1612 y(a)h(matrix)e(in)h(input)h(and)f (returns)j(a)d(matrix)g(in)g(output.)18 b(The)c(call)g(from)e(the)i (Matlab)f(in)o(terface)i(lo)q(oks)e(lik)o(e:)-45 1691 y Fm(>>)21 b([b])h(=)f(netsolve\('toto',a\))-45 1771 y Fp(for)c(instance.)30 b(Ho)o(w)o(ev)o(er,)18 b(there)h(can)f(b)q(e)g (sev)o(eral)g(p)q(ossible)g(calling)e(sequences)k(from)c(C)i(or)f(F)m (ortran.)29 b(Assuming)16 b(the)-45 1821 y(follo)o(wing)11 b(declarations)j(in)g(F)m(ortran:)-45 1900 y Fm(DOUBLE)21 b(PRECISION)e(A\(M,N\))129 1950 y(DOUBLE)i(PRECISION)f(B\(K,L\))-45 2030 y Fp(the)14 b(follo)o(wing)e(calling)g(sequences)17 b(are)d(all)f(p)q(ossible:)-45 2109 y Fm(CALL)21 b (FNETSL\('toto\(\)',A)o(,B,M,)o(N,K,L)o(\))-45 2159 y(CALL)g (FNETSL\('toto\(\)',A)o(,M,N,)o(B,K,L)o(\))-45 2209 y(CALL)g (FNETSL\('toto\(\)',M)o(,N,A,)o(K,L,B)o(\))129 2259 y(etc.....)-45 2338 y Fp(The)15 b(Calling)e(sequence)k(sub-section)f(in)e(the)i (problem)d(description)j(is)f(used)g(to)g(sp)q(ecify)g(whic)o(h)g (calling)e(sequence)k(is)e(to)-45 2388 y(b)q(e)f(used)h(thanks)f(to)g (mnemonics.)h(Indeed,)g(still)d(with)i(the)g(same)f(example,)f(the)i (in)o(teger)h Fm(N)e Fp(can)h(b)q(e)g(represen)o(ted)j(b)o(y)c(the)-45 2438 y(mnemonic)e Fm(nI0)p Fp(,)i(and)h(the)g(p)q(oin)o(ter)g Fo(B)g Fp(can)h(b)q(e)f(represen)o(ted)j(b)o(y)c(the)i(mnemonic)c Fm(O0)p Fp(.)17 2524 y Fj(\017)21 b Fm('@CALLINGSEQUENC)o(E')p 59 2537 393 2 v 10 w Fp(marks)13 b(the)g(b)q(eginning)g(of)g(a)g (calling)f(sequence)j(description.)k(This)13 b(description)h(consists) 59 2574 y(of)f(a)h(list)f(of)g(argumen)o(t)g(sp)q(eci\014cations)i (\(see)g(b)q(elo)o(w\).)17 2654 y Fj(\017)21 b Fm('@ARG)g (')p 59 2670 916 2 v 13 w Fp(sp)q(eci\014es)c(an)e(argumen)o(t)g(of)f(the)i(calling) e(sequence.)24 b(F)m(or)59 2704 y(instance)14 b(the)h(line)909 2828 y(38)p eop %%Page: 39 41 39 40 bop 277 195 a Fm(@ARG)21 b(I0)59 292 y Fp(sp)q(eci\014es)14 b(that)f(the)h(curren)o(t)g(argumen)o(t)e(in)g(the)i(calling)d (sequence)k(is)e(the)g(p)q(oin)o(ter)g(to)g(the)g(data)g(of)f(the)i (\014rst)f(ob)r(ject)59 342 y(in)g(input.)18 b(The)c(line)277 438 y Fm(@ARG)21 b(mI0,lI0)59 535 y Fp(sp)q(eci\014es)f(that)e(the)h (curren)o(t)h(argumen)o(t)e(in)g(the)h(calling)d(sequence)21 b(is)d(the)h(n)o(um)o(b)q(er)f(of)g(ro)o(ws)g Fq(and)g Fp(the)h(leading)59 585 y(dimension)12 b(of)h(the)i(\014rst)f(ob)r (ject)h(in)f(input)f(\(whic)o(h)h(in)g(this)g(case)g(is)g(a)g (matrix\).)i(The)e(line)277 681 y Fm(@ARG)21 b(?)59 778 y Fp(sp)q(eci\014es)d(that)e(the)h(curren)o(t)g(argumen)o(t)e(in)h(the) g(calling)f(sequence)j(should)e(b)q(e)h(ignored)f(b)o(y)g(NetSolv)o(e)g (\(useful)g(in)59 828 y(some)d(cases\).)19 b(Note)c(that)f(no)f (argumen)o(t)g(description)i(con)o(tains)e(mnemonics)f(of)h(the)i(form) d Fm([m|n]O*)p Fp(.)17 910 y Fj(\017)21 b Fm('@CONST)f (=')p 59 917 611 2 v 6 w Fp(sp)q(eci\014es)11 b(that)f(the)g(n)o(um)o(b)q(er)e(of)h(ro)o(ws)h(or)f(columns)f(or)h (the)h(leading)f(dimension)59 959 y(of)k(an)h(input)f(ob)r(ject)i(is)f (constan)o(t)g(and)g(can)g(not)g(b)q(e)g(found)g(in)f(the)i(calling)d (sequence.)20 b(F)m(or)14 b(instance,)g(the)h(line)277 1056 y Fm(@CONST)20 b(mI4=12)59 1153 y Fp(means)15 b(that)h(the)h(n)o (um)o(b)q(er)f(of)f(ro)o(ws)i(of)e(the)i(\014fth)f(ob)r(ject)h(in)f (input)g(is)g(alw)o(a)o(ys)f(12)h(and)g(is)g(not)g(passed)i(in)d(b)o(y) h(the)59 1202 y(NetSolv)o(e)e(user.)17 1284 y Fj(\017)21 b Fm('@COMP)f(=')p 59 1300 676 2 v 17 w Fp(sp)q(eci\014es)j(that)e(the)g(n)o(um)o(b)q(er)f(of)g(ro)o (ws)h(or)g(columns)f(or)g(the)i(leading)59 1334 y(dimension)17 b(of)g(an)i(input)f(ob)r(ject)h(can)g(b)q(e)g(computed)f(from)f(the)i (calling)e(sequence)k(but)d(can)h(not)f(b)q(e)h(found)f(in)59 1384 y(the)c(calling)f(sequence.)20 b(Here)15 b(are)f(some)f(examples:) 277 1481 y Fm(@COMP)20 b(mI1=mI0)277 1530 y(@COMP)g(mI0=op\(+,mI3,1\)) 63 b(//)21 b(performs)f(an)i(addition)277 1580 y(@COMP)e (mI3=array\(I2,0\))63 b(//)21 b(performs)f(an)i(indirection)277 1630 y(@COMP)e(mI1=op\(-,array\(I0,op)o(\(-,mI)o(0,1\))o(\),1\))277 1680 y(@COMP)g(mI2=op\(+,op\(+,array\()o(I1,0\))o(,1\),)o(op\(*,)o (array)o(\(I0,0)o(\),2\)\))277 1730 y(@COMP)g(mI2=if\(array\(I0,0\)=')o (N',mI)o(1,if)o(\(arra)o(y\(I0,)o(0\)='T)o(',nI1)o(,op\(-)o(,0,1)o (\)\)\))647 1779 y(//)i(conditionals)59 1876 y Fp(Things)16 b(can)g(get)h(quite)g(complex.)24 b(Ho)o(w)o(ev)o(er,)17 b(our)f(exp)q(erience)j(pro)o(v)o(es)e(that)f(this)h(feature)g(is)f (used)h(only)f(rarely)m(.)59 1926 y(Therefore,)c(w)o(e)g(ha)o(v)o(e)f (not)g(y)o(et)g(concen)o(trated)i(our)f(e\013orts)g(on)f(making)e(this) i(particular)g(pro)q(cess)i(easier.)18 b(Esp)q(ecially)59 1976 y(since)13 b(the)f(aforemen)o(tioned)f(Ja)o(v)n(a)g(applet)h(will) e(mak)o(e)h(the)i(creation)f(of)f(the)i(problem)d(description)j (\014les)f(automatic.)-45 2086 y Fq(Pseudo-Co)q(de)17 2166 y Fj(\017)21 b Fm('@CODE')p 59 2173 153 2 v 12 w Fp(marks)13 b(the)h(b)q(eginning)g(of)f(the)h(pseudo-co)q(de)i (section.)17 2248 y Fj(\017)21 b Fm('@END)p 172 2248 14 2 v 14 w(CODE')p 59 2255 234 2 v 13 w Fp(marks)13 b(the)h(end)h(of)e(the)i(pseudo-co)q(de)g(section.)-45 2339 y(The)h(pseudo-co)q(de)h(is)e(C)g(co)q(de)i(that)e(uses)i(the)f (mnemonics)d(describ)q(ed)k(in)e(Section)h(6.3.1.)21 b(This)15 b(co)q(de)i(con)o(tains)e(call\(s\))-45 2389 y(to)k(the)h(n)o(umerical)e(library)g(function\(s\))i(that)f(the)h (problem)e(is)h(supp)q(osed)h(to)f(use)i(as)e(part)g(of)g(its)g (algorithm.)32 b(The)-45 2439 y(argumen)o(ts)15 b(in)h(the)h(calling)e (sequences)k(of)c(these)j(library)d(routines)i(will)e(b)q(e)i (primarily)c(the)k(di\013eren)o(t)g(mnemonics.)23 b(In)-45 2488 y(the)17 b(pseudo-co)q(de,)h(the)f(mnemonics)d(are)j(pre-)g(and)f (p)q(ost-\014xed)h(b)o(y)f(a)g Fm('@')g Fp(to)g(facilitate)g(the)h (parsing.)25 b(Let)17 b(us)f(review)-45 2538 y(again)d(the)h(meaning)e (of)i(some)f(p)q(ossible)h(mnemonics)d(in)j(the)g(pseudo-co)q(de:)17 2622 y Fj(\017)21 b Fm('@I0@')p Fp(:)c(p)q(oin)o(ter)d(to)f(the)i (elemen)o(ts)f(of)f(the)h(\014rst)h(ob)r(ject)g(in)e(input.)17 2704 y Fj(\017)21 b Fm('@mI0@')p Fp(:)16 b Fq(p)q(oin)o(ter)11 b Fp(to)j(an)g(in)o(teger)g(that)g(is)g(n)o(um)o(b)q(er)f(of)g(ro)o(ws) h(of)g(the)g(\014rst)h(ob)r(ject)f(in)g(input.)909 2828 y(39)p eop %%Page: 40 42 40 41 bop 17 195 a Fj(\017)21 b Fm('@nO1@')p Fp(:)16 b Fq(p)q(oin)o(ter)11 b Fp(to)j(an)g(in)o(teger)g(that)g(is)g(n)o(um)o (b)q(er)f(of)g(columns)g(of)g(the)i(second)g(ob)r(ject)f(in)g(output.) -45 281 y(Usually)m(,)19 b(the)h(pseudo-co)q(de)h(is)e(organized)h(in)f (three)h(parts.)36 b(First,)20 b(the)g Fo(pr)n(ep)n(ar)n(ation)f Fp(of)g(the)h(input)g(\(if)e(necessary\).)-45 331 y(Second,)d(the)h (call)e(the)h(n)o(umerical)e(library)h(function\(s\).)21 b(Third,)14 b(the)i(up)q(date)f(of)f(the)h(output)g(\(p)q(oin)o(ter)g (and)g(sizes\).)22 b(A)o(t)-45 381 y(this)15 b(p)q(oin)o(t,)f(it)g(is)h (b)q(est)h(to)e(giv)o(e)h(an)f(example.)19 b(Let)d(us)f(assume)f(that)h (w)o(e)g(ha)o(v)o(e)g(access)h(to)f(a)f(h)o(yp)q(othetical)h(n)o (umerical)e(C)-45 431 y(library)f(that)i(p)q(ossesses)h(a)e(function)g Fm(matvec\(\))f Fp(that)h(p)q(erforms)f(a)h(matrix-v)o(ector)f(m)o (ultiply)f(for)h(square)i(matrices.)k(The)-45 480 y(protot)o(yp)q(e)c (of)g(the)g(function)g(is)434 566 y Fm(void)21 b(matvec\(float)e(*a,)i (float)g(*b,)g(int)g(n,)h(int)f(l\))p Fp(,)-45 652 y(where)c Fm(a)e Fp(is)h(a)g(p)q(oin)o(ter)g(to)f(the)i(matrix,)d Fm(b)h Fp(is)h(a)f(p)q(oin)o(ter)h(to)g(the)g(v)o(ector,)h Fm(n)e Fp(is)h(the)g(dimension)f(of)g(the)h(matrix,)e Fm(l)i Fp(is)f(the)-45 702 y(leading)h(dimension)e(of)i(the)h(matrix)e (and)h(the)h(result)g(is)f(stored)i(in)e Fm(b)g Fp(\(o)o(v)o(erwriting) g(the)h(input\).)25 b(W)m(e)16 b(ma)o(y)f(de\014ne)i(the)-45 752 y(problem)12 b(suc)o(h)j(that)e(the)i(matrix)c(is)j(the)g(\014rst)h (ob)r(ject)f(in)f(the)i(input,)e(the)h(v)o(ector)g(the)g(second)h(ob)r (ject)g(in)e(the)h(input,)f(and)-45 802 y(the)i(result)g(the)g(only)e (ob)r(ject)j(in)d(output.)20 b(P)o(ossible)14 b(preparations)h(could)f (b)q(e)h(for)f(instance)h(the)g(creation)g(of)f(w)o(orkspace,)-45 852 y(test)f(of)f(input)g(v)n(alues)g(to)g(detect)i(mistak)o(es,)d (test)i(of)f(matc)o(hing)e(dimensions.)16 b(In)d(this)f(case,)h(w)o(e)g (ma)o(y)d(w)o(an)o(t)i(to)g(c)o(hec)o(k)h(that)-45 901 y(the)h(dimension)f(of)g(v)o(ector)i Fm(b)e Fp(agrees)i(with)f(the)g(n) o(um)o(b)q(er)f(of)h(columns)e(of)i(matrix)e Fm(a)p Fp(.)17 b(This)d(can)g(b)q(e)h(done)f(as)g(follo)o(ws:)-45 988 y Fm(@CODE)-45 1037 y(if)21 b(\(*@mI1@)g(!=)g(*@nI0@\))-1 1087 y(return)f(NS_PROT_DIM_MISMAT)o(CH;)-45 1173 y Fp(The)14 b(macro)f Fm(NS)p 212 1173 14 2 v 15 w(PROT)p 315 1173 V 15 w(DIM)p 396 1173 V 15 w(MISMATCH)g Fp(is)g(de\014ned)i(b)o(y)f (NetSolv)o(e.)19 b(Other)c(macros)e(a)o(v)n(ailable)f(are)i Fm(NS)p 1578 1173 V 15 w(PROT)p 1681 1173 V 15 w(BAD)p 1762 1173 V 15 w(VALUES)-45 1223 y Fp(\(for)f(in)o(v)n(alid)f(input)h (parameters\),)g Fm(NS)p 567 1223 V 16 w(PROT)p 671 1223 V 15 w(INTERNAL)p 862 1223 V 14 w(FAILURE)f Fp(\(for)h(a)g(malfunction) e(of)i(the)h(n)o(umerical)e(soft)o(w)o(are\))i(or)-45 1273 y Fm(NS)p 2 1273 V 15 w(PROT)p 105 1273 V 15 w(NO)p 164 1273 V 15 w(SOLUTION)9 b Fp(\(sometimes)g(useful)h(if)f(no)h(n)o (umerical)f(solution)g(has)i(b)q(een)g(found)f(and)g(the)h(clien)o(t)f (is)g(in)o(teractiv)o(e\).)-45 1323 y(Notice)k(the)h(use)g(of)e Fm('*')g Fp(for)h(accessing)h(the)f(in)o(tegers)h(at)f(addresses)i Fm(@mI1@)c Fp(and)i Fm(@nI0@)p Fp(.)-45 1375 y(The)g(second)h(part)f (of)g(the)g(pseudo-co)q(de)h(consists)g(in)f(calling)e(the)j(function)e Fm(matvec)g Fp(and)h(is:)-45 1461 y Fm(matvec\(@I0@,@I1@,)o(*@mI0)o (@,*@m)o(I0@\);)-45 1547 y Fp(A)g(few)g(things)g(can)g(b)q(e)h(said)f (on)f(this)h(call.)k(First,)c(w)o(e)g(use)h(the)g Fm('*')e Fp(to)h(access)i(in)o(tegers)f(via)e(the)h(p)q(oin)o(ters.)19 b(Note)c(that)f(if)-45 1597 y Fm(matvec\(\))d Fp(w)o(ere)j(a)e(F)m (ortran)h(subroutine,)g(w)o(e)g(w)o(ould)f(pass)h(the)g(addresses)i (themselv)o(es)e(\(see)h(Example)d(b)q(elo)o(w\).)18 b(Second,)-45 1647 y(the)c(leading)e(dimension)f(is)i(tak)o(en)h(to)f (b)q(e)g(equal)g(to)g(the)h(dimension.)i(This)d(co)q(de)h(is)f (executed)i(at)e(the)g(serv)o(er)i(lev)o(el)e(where)-45 1697 y(the)i(matrix)e(\(or)h(sub-matrix\))f(has)i(b)q(een)g(receiv)o (ed)h(from)d(the)i(clien)o(t)f(o)o(v)o(er)g(the)h(net)o(w)o(ork.)20 b(As)15 b(suc)o(h,)g(it)f(has)g(b)q(een)i(stored)-45 1747 y(con)o(tiguously)g(in)g(memory)e(and)i(has)h(a)f(leading)f (dimension)g(equal)h(to)h(its)f(n)o(um)o(b)q(er)g(of)g(ro)o(ws.)26 b(As)17 b(a)f(general)g(rule,)h(the)-45 1797 y(mnemonics)11 b Fm(@l[I|O]*@)h Fp(nev)o(er)j(app)q(ear)f(in)f(the)h(pseudo-co)q(de.) 20 b(The)14 b(last)f(thing)h(to)f(do)h(at)f(this)h(p)q(oin)o(t)f(is)h (to)f(up)q(date)h(the)-45 1846 y(output:)-45 1932 y Fm(@O0@)21 b(=)h(@I1@;)-45 1982 y(*@mO0@)f(=)g(*@mI1@;)-45 2032 y(@END_CODE)-45 2118 y Fp(The)14 b(\014rst)f(line)g(expresses)j(the)d (fact)g(that)h(the)f(input)g(has)g(b)q(een)i(o)o(v)o(erwritten)e(b)o(y) g(the)h(output.)k(The)13 b(second)h(line)f(sets)h(the)-45 2168 y(n)o(um)o(b)q(er)g(of)g(ro)o(ws)h(of)f(the)h(output.)21 b(The)15 b(follo)o(wing)d(section)j(giv)o(es)g(a)f(complete)g(example,) f(with)i(all)e(the)j(sections)f(of)f(the)-45 2218 y(problem)f (description.)-45 2337 y Fh(6.3.4)55 b(A)19 b(Simple)e(Example)-45 2416 y Fp(Let)e(us)g(imagine)d(that)i(w)o(e)h(ha)o(v)o(e)f(access)j(to) d(a)g(F)m(ortran)g(n)o(umerical)f(library)h(that)h(con)o(tains)f(a)g (function,)g(sa)o(y)g Fm(LINSOL)p Fp(,)f(to)-45 2466 y(solv)o(e)h(a)f(linear)h(system)f(according)h(to)g(the)h(follo)o(wing) c(protot)o(yp)q(e:)-45 2552 y Fm(SUBROUTINE)20 b(LINSOL\(A,B,N,NRH)o (S,LDA)o(,LDB\))-45 2652 y(DOUBLE)h(PRECISION)e(A\(LDA,*\))42 b(//)22 b(Left-hand)e(side)h(\(NxN\))-45 2702 y(DOUBLE)g(PRECISION)e (B\(LDB,*\))42 b(//)22 b(Right-hand)e(side)g(\(NxNRHS\),)909 2828 y Fp(40)p eop %%Page: 41 43 41 42 bop 543 195 a Fm(//)22 b(overwritten)d(with)i(the)g(solution)-45 245 y(INTEGER)f(N)-45 295 y(INTEGER)g(NRHS)-45 345 y(INTEGER)g(LDA)327 b(//)21 b(Leading)f(Dimension)g(of)i(A)-45 394 y(INTEGER)e(LDB)327 b(//)21 b(Leading)f(Dimension)g(of)i(B)-45 530 y Fp(Then,)16 b(an)f(appropriate)g(description)h(for)f(a)g(problem)f(that)h(solv)o (es)h(a)f(linear)f(system)i(using)f Fm(LINSOL)f Fp(and)h(that)g(exp)q (ects)-45 580 y(from)d(the)j(clien)o(t)e(the)i(same)e(calling)f (sequence)k(as)e(the)h(one)f(for)g Fm(LINSOL)e Fp(is:)-45 674 y Fm(@PROBLEM)20 b(linsol)-45 724 y(@INCLUDE)g()-45 774 y(@INCLUDE)g("/home/me/my_heade)o(r.h")-45 824 y(@LIB)h (-L/home/lib/)-45 874 y(@LIB)g(-lstuff)-45 923 y(@LIB)g (/home/me/lib_$\(NE)o(TSOLV)o(E_ARC)o(H\).a)-45 973 y(@LIB)g (/home/stuff/add.o)-45 1023 y(@FUNCTION)f(linsol)-45 1073 y(@LANGUAGE)g(FORTRAN)-45 1123 y(@MAJOR)h(COL)-45 1172 y(@PATH)86 b(LinearAlgebra/Line)o(arSys)o(tems/)-45 1222 y(@DESCRIPTION)-45 1272 y(Solves)21 b(the)g(square)f(linear)h (system)f(A*X)i(=)f(B.)h(Where:)-23 1322 y(A)f(is)h(a)f (double-precision)e(matrix)h(of)i(dimension)e(NxN)-23 1372 y(B)h(is)h(a)f(double-precision)e(matrix)h(of)i(dimension)e (NxNRHS)-23 1422 y(X)h(is)h(the)f(solution)-45 1471 y(@INPUT)g(2)-45 1521 y(@OBJECT)f(MATRIX)h(D)g(A)-45 1571 y(Matrix)g(A)g(\(NxN\))-45 1621 y(@OBJECT)f(MATRIX)h(D)g(B)-45 1671 y(Matrix)g(B)g(\(NxNRHS\))-45 1720 y(@OUTPUT)f(1)-45 1770 y(@OBJECT)g(MATRIX)h(D)g(X)-45 1820 y(Solution)f(X)i(\(NxNRHS\))-45 1870 y(@COMPLEXITY)e(3,3)-45 1920 y(@CALLINGSEQUENCE)-45 1969 y(@ARG)h(I0)-45 2019 y(@ARG)g(I1,O0)-45 2069 y(@ARG)g(nI0,mI0,mI1)-45 2119 y(@ARG)g(nI1)-45 2169 y(@ARG)g(lI0)-45 2219 y(@ARG)g(lI1,lO0)-45 2268 y(@CODE)-45 2368 y(linsol\(@I0@,@I1@,)o(@mI0@)o(,@nI1)o(@,@lI)o (0@,@l)o(I1@\);)-45 2468 y(@O0@)g(=@I1@;)151 b(/*)22 b(Pointing)e(to)h(the)g(overwritten)f(input)h(*/)-45 2517 y(*@mO0@)g(=)g(*@mI1@;)42 b(/*)22 b(Setting)e(the)h(number)g(of)g (rows)174 b(*/)-45 2567 y(*@nO0@)21 b(=)g(*@nI1@;)42 b(/*)22 b(Setting)e(the)h(number)g(of)g(columns)108 b(*/)-45 2667 y(@END_CODE)909 2828 y Fp(41)p eop %%Page: 42 44 42 43 bop -45 195 a Fh(6.3.5)55 b(Ja)n(v)m(a)19 b(Applet)-45 275 y Fp(It)c(app)q(ears)h(that)f(the)g(pro)q(cess)i(of)d(creating)i (new)f(problem)f(descriptions)i(can)f(b)q(e)g(v)o(ery)h(di\016cult,)e (esp)q(ecially)h(for)g(a)f(\014rst)-45 325 y(time)e(user.)19 b(It)13 b(is)g(true)i(that)e(after)h(writing)e(a)h(few)g(\014les,)h(it) f(b)q(ecomes)g(rather)h(routine)g(and)f(sev)o(eral)h(NetSolv)o(e)f (users)i(ha)o(v)o(e)-45 374 y(already)j(generated)h(a)e(go)q(o)q(d)h(n) o(um)o(b)q(er)f(of)g(w)o(orking)g(description)i(\014les)f(for)f(a)h(v)n (ariet)o(y)f(of)h(purp)q(oses)h(\(including)e(Linear)-45 424 y(Algebra,)g(Optimization,)d(Image)i(pro)q(cessing,)i(etc.\).)27 b(Ho)o(w)o(ev)o(er,)17 b(w)o(e)g(ha)o(v)o(e)f(designed)i(a)e(graphical) g(Ja)o(v)n(a)g(Applet)h(that)-45 474 y(helps)e(users)h(in)e(creating)h (problem)e(description)j(\014les.)k(This)15 b(applet)f(is)h(not)f(y)o (et)h(a)o(v)n(ailable)d(from)h(the)i(W)m(eb)g(at)f(the)h(time)-45 524 y(this)e(do)q(cumen)o(t)g(is)h(b)q(eing)f(written)h(but)f(should)g (b)q(e)h(added)g(to)f(the)h(NetSolv)o(e)g(homepage)e(as)h(so)q(on)h(as) f(the)h(last)f(tests)i(and)-45 574 y(con)o(v)o(ersion)f(to)g(Ja)o(v)n (a1.1)e(ha)o(v)o(e)i(b)q(een)h(completed.)-45 714 y Fk(6.4)66 b(NetSolv)n(e)23 b(Managemen)n(t)f(T)-6 b(o)r(ols)-45 808 y Fp(The)13 b(NetSolv)o(e)g(distribution)f(comes)g(with)g(a)g(set)h (of)f(rudimen)o(tary)g(to)q(ols)g(to)g(manage/query)f(a)h(NetSolv)o(e)h (system.)k(After)-45 858 y(compiling)11 b(the)k(to)q(ols)e(as)h (explained)g(in)f(Section)h(3.4,)f(the)h(follo)o(wing)e(six)h (executables)j(are)e(a)o(v)n(ailable:)17 944 y Fj(\017)21 b Fm($NETSOLVE)p 260 944 14 2 v 14 w(ROOT/bin/$NETSOL)o(VE)p 668 944 V 13 w(ARCH/NS)p 836 944 V 14 w(conf)17 1027 y Fj(\017)g Fm($NETSOLVE)p 260 1027 V 14 w(ROOT/bin/$NETSOL)o(VE)p 668 1027 V 13 w(ARCH/NS)p 836 1027 V 14 w(problems)17 1110 y Fj(\017)g Fm($NETSOLVE)p 260 1110 V 14 w(ROOT/bin/$NETSOL)o(VE)p 668 1110 V 13 w(ARCH/NS)p 836 1110 V 14 w(probdesc)17 1193 y Fj(\017)g Fm($NETSOLVE)p 260 1193 V 14 w(ROOT/bin/$NETSOL)o(VE)p 668 1193 V 13 w(ARCH/NS)p 836 1193 V 14 w(killagent)17 1276 y Fj(\017)g Fm($NETSOLVE)p 260 1276 V 14 w(ROOT/bin/$NETSOL)o(VE)p 668 1276 V 13 w(ARCH/NS)p 836 1276 V 14 w(killserver)17 1359 y Fj(\017)g Fm($NETSOLVE)p 260 1359 V 14 w(ROOT/bin/$NETSOL)o(VE)p 668 1359 V 13 w(ARCH/NS)p 836 1359 V 14 w(killall)-45 1445 y Fp(Let)14 b(us)h(review)f(those)h(executables)g(one)f(b)o(y)g (one.)-45 1564 y Fh(6.4.1)55 b Fg(NS)p 181 1564 16 2 v 18 w(conf)-45 1644 y Fp(This)14 b(executable)h(tak)o(es)f(one)g (argumen)o(t)f(on)h(the)g(command)d(line,)i(the)i(name)d(of)i(a)f(host) h(running)g(a)g(NetSolv)o(e)g(agen)o(t:)-45 1730 y Fm(\045)22 b(NS_conf)e(bluegrass.cs.utk.)o(edu)-45 1816 y Fp(It)14 b(prin)o(ts)g(out)g(the)g(list)g(of)f(hosts)i(participating)d(in)i(the) g(NetSolv)o(e)h(system:)-45 1902 y Fm(AGENT:)21 b(bluegrass.cs.ut)o (k.edu)d(\(128.169.92.78\))-45 1951 y(SERVER:)i(maruti.cs.berkeley.)o (edu)f(\(128.32.36.83\))-45 2001 y(SERVER:)h(cupid.cs.utk.edu)f (\(128.169.94.221\))-45 2120 y Fh(6.4.2)55 b Fg(NS)p 181 2120 V 18 w(problems)-45 2200 y Fp(This)12 b(executable)h(tak)o(es) f(the)h(name)e(of)g(a)h(host)g(running)g(an)f(agen)o(t)h(as)g(single)g (argumen)o(t)f(on)h(its)g(command)d(line.)17 b(It)12 b(prin)o(ts)-45 2250 y(out)i(the)g(list)g(of)f(problems)g(that)h(can)g (b)q(e)g(solv)o(ed)g(b)o(y)g(con)o(tacting)g(that)g(agen)o(t:)-45 2336 y Fm(\045)22 b(NS_problems)d(bluegrass.cs.utk.e)o(du)-45 2386 y(/BLAS/Matrices/ma)o(tmul)-45 2436 y(/ItPack/jsi)-45 2485 y(/LaPack/Matrices/)o(Eigen)o(Value)o(s/eig)-45 2535 y(/LaPack/Matrices/)o(Singu)o(larVa)o(lues/)o(svd)909 2828 y Fp(42)p eop %%Page: 43 45 43 44 bop -45 195 a Fh(6.4.3)55 b Fg(NS)p 181 195 16 2 v 18 w(probdesc)-45 275 y Fp(This)12 b(executable)h(tak)o(es)g(t)o(w) o(o)e(argumen)o(ts)h(on)g(its)g(command)d(line:)17 b(the)12 b(name)f(of)h(a)g(host)g(running)g(a)g(NetSolv)o(e)g(agen)o(t)g(and)-45 325 y(the)i(nic)o(k)g(name)f(of)g(a)h(NetSolv)o(e)g(problem.)i(It)e (prin)o(ts)h(out)e(the)i(description)f(of)g(the)g(problem:)-45 405 y Fm(\045)22 b(NS_probdesc)d(bluegrass.cs.utk.e)o(du)g(linsol)-45 455 y(--)i(linsol)g(--)g(From)g(LAPACK)g(-)-45 504 y(Compute)f(the)i (solution)e(to)h(a)h(real)f(system)f(of)i(linear)e(equations)-1 554 y(A)h(*)h(X)f(=)h(b)-45 604 y(where)f(A)g(is)h(an)f(N-by-B)g (matrix)f(and)h(X)h(and)f(B)h(are)f(N-by-NRHS)f(matrices.)-45 654 y(Matlab)h(Example)f(:)h([x])h(=)f(netsolve\('dgesv',a,)o(b\))-45 704 y(http://www.netlib)o(.org/)o(lapac)o(k/ind)o(ex.ht)o(ml)-45 753 y(*)h(2)f(objects)g(in)g(INPUT)-23 803 y(-)g(input)g(0:)h(Matrix)e (Double)h(Precision)f(Real.)-23 853 y(Matrix)g(A)-23 903 y(-)h(input)g(1:)h(Matrix)e(Double)h(Precision)f(Real.)-23 953 y(Right)h(hand)g(side)-45 1002 y(*)h(1)f(objects)g(in)g(OUTPUT)-23 1052 y(-)g(output)g(0:)g(Matrix)g(Double)f(Precision)g(Real.)-23 1102 y(Solution)-45 1152 y(*)i(Calling)e(sequence)g(from)h(C)h(or)f (Fortran)-45 1202 y(6)h(arguments)-23 1252 y(-)f(Argument)g(#0:)20 1301 y(-)h(number)f(of)g(rows)g(of)g(input)g(object)g(#0)g(\(A\))20 1351 y(-)h(number)f(of)g(columbs)f(of)i(input)e(object)h(#0)g(\(A\))20 1401 y(-)h(number)f(of)g(rows)g(of)g(input)g(object)g(#1)g(\(RHS\))-23 1451 y(-)g(Argument)g(#1:)20 1501 y(-)h(number)f(of)g(columbs)f(of)i (input)e(object)h(#1)g(\(RHS\))-23 1550 y(-)g(Argument)g(#2:)20 1600 y(-)h(pointer)e(to)i(input)e(object)h(#0)g(\(A\))-23 1650 y(-)g(Argument)g(#3:)20 1700 y(-)h(leading)e(dimension)g(of)i (input)e(object)h(#0)g(\(A\))-23 1750 y(-)g(Argument)g(#4:)20 1799 y(-)h(pointer)e(to)i(input)e(object)h(#1)g(\(RHS\))20 1849 y(-)h(pointer)e(to)i(output)e(object)h(#0)g(\(SOLUTION\))-23 1899 y(-)g(Argument)g(#5:)20 1949 y(-)h(leading)e(dimension)g(of)i (input)e(object)h(#1)g(\(RHS\))-45 2067 y Fh(6.4.4)55 b Fg(NS)p 181 2067 V 18 w(killagent)-45 2146 y Fp(This)18 b(executable)h(tak)o(es)f(one)g(single)g(argumen)o(t)f(on)g(its)h (command)d(line,)j(the)h(name)d(of)i(a)f(host)h(running)g(a)g(NetSolv)o (e)-45 2196 y(agen)o(t.)g(After)c(a)g(\(basic\))g(user)h(authen)o (tication,)e(that)h(executable)i(kills)c(the)j(agen)o(t.)-45 2276 y Fm(\045)22 b(NS_killagent)d(bluegrass.cs.utk.)o(edu)-45 2326 y(Agent)i(on)g(bluegrass.cs.utk.e)o(du)e(:)43 b(killed)-45 2444 y Fh(6.4.5)55 b Fg(NS)p 181 2444 V 18 w(killserver)-45 2524 y Fp(This)11 b(executable)i(tak)o(es)f(t)o(w)o(o)e(single)h (argumen)o(t)g(on)g(its)g(command)e(line,)i(the)h(name)e(of)h(a)g(host) g(running)g(a)g(NetSolv)o(e)h(agen)o(t)-45 2574 y(and)h(the)h(name)f (of)g(a)g(host)h(running)f(a)g(NetSolv)o(e)h(serv)o(er.)19 b(After)14 b(a)g(\(basic\))f(user)i(authen)o(tication,)e(that)g (executable)i(kills)-45 2623 y(the)f(serv)o(er,)h(using)f(the)h(agen)o (t)e(as)h(an)g(en)o(try-p)q(oin)o(t)g(in)o(to)f(the)i(system.)-45 2704 y Fm(\045)22 b(NS_killserver)d(bluegrass.cs.utk)o(.edu)f (cupid.cs.utk.edu)909 2828 y Fp(43)p eop %%Page: 44 46 44 45 bop -45 195 a Fm(Server)21 b(on)g(cupid.cs.utk.edu)d(killed)j(:)h (killed)-45 314 y Fh(6.4.6)55 b Fg(NS)p 181 314 16 2 v 18 w(killall)-45 394 y Fp(This)17 b(Shell)f(script)i(tak)o(es)g(one)f (single)f(argumen)o(t)g(on)h(its)g(command)d(line,)j(the)g(name)f(of)g (a)h(host)g(running)g(a)g(NetSolv)o(e)-45 444 y(agen)o(t.)28 b(After)18 b(a)f(\(basic\))h(user)g(authen)o(tication,)g(that)f (executable)i(kills)d(the)i(agen)o(t,)g(along)e(with)h(all)f(other)i (NetSolv)o(e)-45 494 y(pro)q(cesses)f(\(agen)o(ts)d(and)g(serv)o(ers\)) i(kno)o(wn)d(to)h(that)g(agen)o(t:)-45 580 y Fm(Server)21 b(on)g(cupid.cs.utk.edu)d(:)k(killed)-45 629 y(Server)f(on)g (maruti.cs.berkele)o(y.edu)d(:)k(killed)-45 679 y(Agent)f(on)g (bluegrass.cs.utk.e)o(du)e(:)i(killed)909 2828 y Fp(44)p eop %%Page: 45 47 45 46 bop -45 509 a Fl(Chapter)31 b(7)-45 720 y Fn(The)38 b(User-Supplied)f(F)-10 b(unction)38 b(F)-10 b(eature)-45 964 y Fk(7.1)66 b(Motiv)l(ation)-45 1058 y Fp(In)11 b(the)h(preceding)h (sections,)f(w)o(e)f(describ)q(ed)j(all)c(the)h(clien)o(t)h(in)o (terfaces)g(to)f(NetSolv)o(e.)18 b(In)11 b(these)i(descriptions)f(w)o (e)f(assumed)-45 1107 y(that)17 b(the)g(only)f(input)g(the)h(user)h (had)e(to)h(supply)f(to)h(NetSolv)o(e)f(w)o(as)h(n)o(umerical)e(data,)h (that)h(is,)g(matrices,)f(v)o(ectors,)i(or)-45 1157 y(scalars.)g(This)c (assumption)f(is)g(v)n(alid)f(for)i(a)f(lot)h(of)f(n)o(umerical)f(soft) o(w)o(are.)18 b(Ho)o(w)o(ev)o(er,)c(for)f(some)g(soft)o(w)o(are)h(that) g(w)o(e)g(w)o(ould)-45 1207 y(lik)o(e)g(to)g(include)g(in)g(NetSolv)o (e)h(via)f(NetSolv)o(e)g(serv)o(ers,)i(w)o(e)f(need)g(an)f(additional)f (feature.)20 b(Indeed,)15 b(n)o(umerous)f(scien)o(ti\014c)-45 1257 y(pac)o(k)n(ages)k(require)h(the)g(user)g(to)f(pro)o(vide)g(n)o (umerical)f(data)h(as)g(w)o(ell)g(as)g(a)g Fo(function)p Fp(.)31 b(T)o(ypically)m(,)17 b(nonlinear)h(soft)o(w)o(are)-45 1307 y(requires)d(the)f(user)h(to)f(pass)g(a)g(p)q(oin)o(ter)g(to)g(a)f (subroutine)i(that)e(computes)h(the)g(nonlinear)g(function.)j(This)d (is)g(a)f(problem)-45 1357 y(in)j(NetSolv)o(e)g(b)q(ecause)i(the)f (computation)d(is)i(p)q(erformed)g(remotely)f(and)h(the)h(user)h (cannot)e(pro)o(vide)g(NetSolv)o(e)g(with)g(a)-45 1406 y(p)q(oin)o(ter)d(to)g(one)g(of)g(his)g(link)o(ed-in)e(subroutines.)19 b(The)14 b(only)e(solution)g(is)h(to)g(send)h(co)q(de)g(o)o(v)o(er)f (the)g(net)o(w)o(ork)g(to)g(the)h(serv)o(er.)-45 1456 y(This)g(approac)o(h)g(raises)g(a)g(lot)f(of)g(issues,)i(including)e Fo(se)n(curity)p Fp(.)-45 1596 y Fk(7.2)66 b(Solution)-45 1690 y Fp(Let)18 b(us)g(describ)q(e)h(here)g(the)f(solution)f(w)o(e)g (ha)o(v)o(e)h(adopted.)29 b(This)17 b(is)h(really)f(a)g(\014rst)h (attempt,)f(and)h(there)g(is)g(de\014nitely)-45 1740 y(ro)q(om)e(for)h(impro)o(v)o(emen)o(t.)26 b(Ho)o(w)o(ev)o(er,)19 b(w)o(e)e(b)q(eliev)o(e)h(that)g(it)f(pro)o(vides)h(reasonable)f (capabilities)g(for)g(no)o(w,)h(considering)-45 1790 y(that)h(NetSolv)o(e)f(is)h(still)e(at)i(an)f(early)g(stage)h(of)f(dev) o(elopmen)o(t.)31 b(As)19 b(w)o(e)g(noted,)g(w)o(e)g(need)g(to)g(ship)f (co)q(de)h(o)o(v)o(er)g(to)f(the)-45 1840 y(computational)c(serv)o(er.) 26 b(Since)16 b(NetSolv)o(e)g(w)o(orks)g(in)g(a)g(heterogeneous)i(en)o (vironmen)o(t,)d(it)h(is)f(not)h(p)q(ossible)h(to)f(migrate)-45 1890 y(compiled)f(co)q(de.)28 b(Th)o(us,)18 b(w)o(e)f(require)h(that)f (the)g(user)h(ha)o(v)o(e)f(his)g(subroutine)g(or)g(function)g(in)f(a)h (separate)h(\014le,)f(written)-45 1939 y(either)g(in)f(C)g(or)h(F)m (ortran.)25 b(W)m(e)16 b(send)h(this)f(\014le)h(to)f(the)h (computational)d(serv)o(er.)26 b(The)17 b(serv)o(er)h(compiles)d(it)h (and)g(is)g(then)-45 1989 y(able)e(to)f(use)i(this)f(user-supplied)h (function.)-45 2042 y(The)k(securit)o(y)g(implemen)o(tation)c(is)k (quite)f(simple.)31 b(When)18 b(compiling)e(the)j(user's)h(function,)e (w)o(e)h(use)g(the)h Fm(nm)e Fp(UNIX)-45 2092 y(command)f(to)j(disallo) o(w)f(an)o(y)h(system)g(call.)36 b(The)20 b(approac)o(h)g(is)g(v)o(ery) h(restrictiv)o(e)g(for)f(the)h(user,)h(but)f(t)o(ypically)d(the)-45 2142 y(subroutine)e(that)g(has)g(to)g(b)q(e)g(passed)h(needs)g(only)e (to)g(p)q(erform)g(computations.)23 b(If)15 b(course,)i(there)g(are)f (a)g(lot)f(of)g Fo(hacker)-45 2191 y Fp(w)o(a)o(ys)f(to)h(go)f(around)h (this)f(problem,)g(and)g(our)h(system)f(curren)o(tly)i(do)q(es)f(not)g (pretend)h(to)f(b)q(e)g(a)g(real)f(securit)o(y)i(manager.)-45 2241 y(W)m(e)d(are)i(in)o(v)o(estigating)d(Ja)o(v)n(a)h(to)h(deal)g (with)f(this)h(user-supplied)h(function)f(issue.)-45 2382 y Fk(7.3)66 b(F)-6 b(or)23 b(the)g(Clien)n(t)-45 2484 y Fh(7.3.1)55 b(Determining)16 b(the)i(F)-5 b(ormat)18 b(of)h(the)f(F)-5 b(unction)19 b(to)f(Supply)-45 2563 y Fp(W)m(e)h(no)o(w)g(understand)h(that)g(the)g(user)g(has)f(to)g (write)h(a)f(F)m(ortran)g(subroutine)h(or)f(a)g(C)h(function)f(to)g (call)f(a)h(problem)-45 2613 y(that)c(requires)h(a)f(user-supplied)h (function.)k(F)m(or)15 b(no)o(w,)f(the)i(protot)o(yp)q(e)f(of)f(this)h (subroutine/function)g(can)g(b)q(e)h(found)e(in)-45 2663 y(the)k(description)g(of)f(the)h(problem,)f(a)o(v)n(ailable)e(from)h (Matlab)h(or)g(the)i(CGI)e(scripts)h(of)f(the)h(NetSolv)o(e)g(homepage) f(\(see)909 2828 y(45)p eop %%Page: 46 48 46 47 bop -45 195 a Fp(Section)19 b(2.3\).)31 b(F)m(ollo)o(wing)16 b(the)j(usual)f(philosoph)o(y)g(of)g(NetSolv)o(e,)h(the)g(protot)o(yp)q (e)g(of)f(the)h(user-supplied)h(function)e(is)-45 245 y(exactly)d(the)g(same)f(as)h(if)e(the)j(user)f(w)o(ere)h(using)e(the)i (n)o(umerical)d(soft)o(w)o(are)h(directly)m(.)21 b(Some)13 b(soft)o(w)o(ares)i(require)h(the)f(user)-45 295 y(to)g(pro)o(vide)g (more)f(than)h(one)g(function.)21 b(When)15 b(that)g(is)g(the)h(case,)g (the)f(description)h(of)e(the)i(problem)e(men)o(tions)f(it)i(and)-45 345 y(giv)o(es)f(all)e(the)j(protot)o(yp)q(es)g(for)e(all)g(the)h (functions)g(to)g(supply)m(.)-45 464 y Fh(7.3.2)55 b(F)-5 b(rom)18 b(Matlab,)g(Mathematica,)f(C)i(and)g(F)-5 b(ortran)-45 543 y Fp(A)15 b(UPF)f(is)h(passed)g(to)g(NetSolv)o(e)f(as)h(a)f(string) g(that)h(con)o(tains)f(the)h(path)g(to)f(the)h(\014le)g(that)f(con)o (tains)g(the)i(source)f(co)q(de)h(of)-45 593 y(the)e(function.)-45 712 y Fh(7.3.3)55 b(F)-5 b(rom)18 b(the)g(NetSolv)n(e)f(Ja)n(v)m(a)i (API)-45 792 y Fp(Users)f(of)e(the)i(NetSolv)o(e)e(API)h(ma)o(y)e(sp)q (ecify)i(a)g(UPF)g(input)f(item)g(as)g(they)i(w)o(ould)d(an)o(y)i (other)g(input)f(item,)g(using)g(the)-45 842 y Fm(pushArg\(\))c Fp(metho)q(d.)19 b(Ho)o(w)o(ev)o(er,)c(an)f(extra)h(argumen)o(t)e(is)h (required)i(when)f(pushing)f(a)g(UPF)h(item:)i(the)e(language)f(that) -45 892 y(the)g(UPF)h(is)f(written)g(in.)k(F)m(or)13 b(example:)-45 978 y Fm(n.pushArg\(new)19 b(String\(upf0,0\),Glo)o (balDe)o(fs.LA)o(NG_F)o(ORTRA)o(N\);)-45 1027 y(n.pushArg\(new)g (String\(upf1,0\),Glo)o(balDe)o(fs.LA)o(NG_C)o(\);)-45 1113 y Fp(Curren)o(tly)m(,)14 b(the)h(user)g(m)o(ust)f(pass)h(the)g (UPF)f(as)h(a)f(String.)19 b(Therefore,)d(if)d(the)i(UPF)g(is)f(stored) h(in)f(a)g(\014le,)g(it)g(is)h(up)f(to)g(the)-45 1163 y(user)g(to)g(read)f(the)h(\014le)g(in)o(to)e(a)h(String.)18 b(F)m(uture)c(v)o(ersions)f(of)g(the)h(API)g(will)d(allo)o(w)h(the)i (user)g(to)f(simply)f(pass)i(the)f(name)g(of)-45 1213 y(the)h(\014le.)-45 1332 y Fh(7.3.4)55 b(F)-5 b(rom)18 b(the)g(Ja)n(v)m(a)h(GUI)-45 1412 y Fp(En)o(tering)g(a)f(user-supplied) h(function)f(via)f(the)i(Ja)o(v)n(a)f(in)o(terface)g(is)g(v)o(ery)h(m)o (uc)o(h)e(similar)f(to)i(en)o(tering)h(an)o(y)f(other)g(kind)-45 1462 y(of)f(data.)29 b(If)17 b(the)h(problem)f(requires)h(a)g (user-supplied)g(function,)g(there)h(will)d(b)q(e)i(an)g(en)o(try)g(in) f(the)h Fo(Input)h(List)e Fp(called)-45 1512 y(\\User)e(Pro)o(vided)f (F)m(unction")f(for)h(whic)o(h)g(data)f(m)o(ust)g(b)q(e)i(sp)q (eci\014ed,)g(just)f(lik)o(e)f(an)o(y)g(other)i(input)f(ob)r(ject.)19 b(The)14 b(user)h(ma)o(y)-45 1561 y(c)o(ho)q(ose)h(to)f(en)o(ter)h(the) f(user-supplied)h(function)f(man)o(ually)d(in)o(to)i(the)i Fo(Data)g(Input)h(Box)e Fp(or)g(from)f(a)g(\014le)h(sp)q(eci\014ed)i (in)d(the)-45 1611 y Fo(Filename)k(Sele)n(ction)f(Box)p Fp(.)27 b(If)17 b(the)g(user)h(en)o(ters)g(the)f(function)f(man)o (ually)m(,)e(the)j(language)f(m)o(ust)g(also)g(b)q(e)h(sp)q(eci\014ed)h (b)o(y)-45 1661 y(c)o(ho)q(osing)12 b(either)i(C)f(or)g(F)o(OR)m(TRAN)e (from)h(an)g(\\option)g(men)o(u")f(that)i(app)q(ears)h(just)f(ab)q(o)o (v)o(e)f(the)i Fo(Data)g(Input)h(Box)p Fp(.)j(If)12 b(the)-45 1711 y(user-supplied)17 b(function)f(comes)g(from)f(a)h(\014le,)g(the)h (\014le)g(m)o(ust)e(end)i(with)f(either)h(\\.c")f(or)g(\\.f)s(")g (\(with)g(names)f(ending)h(in)-45 1761 y(\\.c")d(in)o(terpreted)j(as)e (C)g(functions)g(and)f(names)g(ending)h(in)g(\\.f)s(")e(in)o(terpreted) k(as)e(F)o(OR)m(TRAN)f(functions\).)-45 1901 y Fk(7.4)66 b(F)-6 b(or)23 b(the)g(Serv)n(er)-45 1995 y Fp(The)13 b(problem)e(description)j(of)e(a)g(problem)f(that)i(requires)h(one)e (or)h(more)f(user-supplied)h(functions)g(m)o(ust)e(con)o(tain)i(a)f (line:)-45 2081 y Fm(@OBJECT)20 b(UPF)i(CHAR)-45 2167 y Fp(for)12 b(eac)o(h)g(function)f(as)h(an)g(input)g(ob)r(ject)g(so)g (that)g(mnemonics)e(can)i(b)q(e)h(used)f(in)g(the)g(description)h(of)e (the)h(calling)f(sequence)-45 2217 y(\(after)j(the)h Fm('@FORMAT')d Fp(clause\).)18 b(In)c(the)h(pseudo-co)q(de)g(section,)f (the)h(functions)f(should)f(b)q(e)i(declared)g(as)f(extern)h(lik)o(e:) -45 2303 y Fm(extern)21 b(int)g(upf0\(\);)-45 2352 y(extern)g(double)f (upf1\(\);)-45 2402 y(etc....)-45 2488 y Fp(for)d(instance.)29 b(The)18 b(iden)o(ti\014ers)g Fm(upf0)p Fp(,)f Fm(upf1)p Fp(,)g(...)28 b(can)17 b(b)q(e)h(used)h(in)e(the)h(rest)g(of)f(the)h (pseudo)g(co)q(de)g(to)f(designate)h(the)-45 2538 y(user-supplied)g (functions.)26 b(This)17 b(is)f(not)h(v)o(ery)g(natural.)26 b(It)16 b(w)o(ould)g(b)q(e)i(b)q(etter)g(to)e(b)q(e)i(able)e(to)h(use)g (mnemonics)e(as)h(for)-45 2588 y(classic)e(ob)r(jects,)h(but)f(it)g (mak)o(es)e(compilation)f(di\016cult)i(on)h(some)f(platforms.)909 2828 y(46)p eop %%Page: 47 49 47 48 bop -45 195 a Fk(7.5)66 b(Conclusion)-45 289 y Fp(This)15 b(new)h(feature)g(of)e(NetSolv)o(e)h(is)h(still)e(under)i (in)o(v)o(estigation.)k(W)m(e)15 b(are)h(a)o(w)o(are)f(that)g(securit)o (y)h(is)f(an)g(imp)q(ortan)o(t)e(issue)-45 339 y(here.)23 b(F)m(or)14 b(no)o(w,)h(NetSolv)o(e)g(is)g(still)f(a)h(researc)o(h)h (pro)r(ject)h(dev)o(elop)q(ed)e(to)g(allo)o(w)e(exp)q(erimen)o(tations) i(with)g(this)g(relativ)o(ely)-45 389 y(new)h(t)o(yp)q(e)g(of)f(soft)o (w)o(are.)22 b(In)16 b(the)g(future,)g(more)e(atten)o(tion)h(will)f(b)q (e)i(giv)o(en)f(to)h(the)g(user-supplied)g(mec)o(hanism)d(in)i(order) -45 438 y(to)h(mak)o(e)e(it)h(as)h(safe)g(as)g(p)q(ossible.)24 b(As)16 b(men)o(tioned)f(earlier,)h(w)o(e)g(ma)o(y)e(use)i(Ja)o(v)n(a)f (in)h(order)g(to)g(set)h(up)f(a)f(viable)g(securit)o(y)-45 488 y(manager.)21 b(Using)16 b(Ja)o(v)n(a)e(curren)o(tly)j(app)q(ears)f (to)f(b)q(e)i(the)f(b)q(est)g(solution)f(for)g(securit)o(y)m(,)h(but)g (it)f(has)g(ob)o(vious)g(dra)o(wbac)o(ks.)-45 538 y(First,)h(the)h (user)g(w)o(ould)e(ha)o(v)o(e)h(to)g(write)g(his)g(function)g(in)f(Ja)o (v)n(a:)22 b(the)17 b(t)o(ypical)e(NetSolv)o(e)h(user)h(is)f(a)g(scien) o(tist)g(who)g(do)q(es)-45 588 y(not)g(ha)o(v)o(e)f(the)h(time)f(or)g (inclination)f(to)i(learn)g(new)g(languages,)f(esp)q(ecially)h(ob)r (ject-orien)o(ted)h(ones.)24 b(Second,)16 b(with)f(the)-45 638 y(curren)o(t)g(implemen)o(tations)c(of)i(Ja)o(v)n(a,)g(e\016ciency) i(w)o(ould)e(also)g(b)q(e)i(a)e(problem.)909 2828 y(47)p eop %%Page: 48 50 48 49 bop -45 509 a Fl(App)s(endix)33 b(A)-45 720 y Fn(Matlab)40 b(Reference)e(Man)m(ual)-45 939 y Fp(W)m(e)11 b(describ)q(e)j(here)e (all)f(the)h(p)q(ossible)g(calls)f(to)g(NetSolv)o(e)h(from)e(Matlab.)16 b(In)c(these)h(descriptions)g(w)o(e)e(assume)g(correctness.)-45 989 y(In)j(case)h(of)e(errors,)i(all)d(these)k(calls)d(prin)o(t)h(out)g (v)o(ery)g(simple)e(and)i(explicit)f(messages.)-45 1088 y Fd(>>)26 b Fg(netsolve)p -45 1096 307 2 v -45 1188 a Fp(Prin)o(ts)14 b(out)g(on)g(the)g(screen)i(the)f(list)e(of)g(all)g (the)h(problems)f(that)h(are)h(a)o(v)n(ailable)c(in)j(the)g(NetSolv)o (e)g(system.)-45 1340 y Fd(>>)26 b Fg(netsolve\()o(')p Fd(<)p Fc(pr)m(oblem)15 b(name)p Fd(>)p Fg('\))p -45 1357 782 2 v -45 1443 a Fp(Prin)o(ts)f(out)g(all)f(the)h(information)d (a)o(v)n(ailable)h(from)g(Matlab)h(ab)q(out)h(a)f(sp)q(eci\014c)j (problem.)-45 1595 y Fd(>>)26 b Fg(netsolve\()o('?)o('\))p -45 1606 435 2 v -45 1698 a Fp(Prin)o(ts)13 b(out)f(the)h(list)f(of)g (all)f(the)i(agen)o(ts)g(and)f(serv)o(ers)i(in)e(the)h(NetSolv)o(e)g (system,)f(that)h(is,)f(the)h(NetSolv)o(e)f(system)h(con)o(tain-)-45 1748 y(ing)g(the)i(host)f(whose)g(name)f(is)h(in)f(the)i(en)o(vironmen) o(t)d(v)n(ariable)h Fm(NETSOLVE)p 1154 1748 14 2 v 14 w(AGENT)p Fp(.)-45 1900 y Fd(>>)26 b Fg([)f(...)50 b(])h(=)25 b(netsolve\(')o Fd(<)p Fc(pr)m(oblem)16 b(name)p Fd(>)p Fg(',)25 b(...\))p -45 1917 1218 2 v -45 2003 a Fp(Sends)16 b(a)e Fq(blo)q(c)o(king)f Fp(request)j(to)e(NetSolv)o(e.)21 b(The)15 b(left-hand)g(side)g(con)o(tains)f(the)i(output)f(argumen)o (ts.)k(The)d(righ)o(t-hand)-45 2053 y(side)11 b(con)o(tains)g(the)h (problem)d(name)h(and)h(the)g(input)g(argumen)o(ts.)16 b(The)c(argumen)o(ts)e(are)h(listed)g(according)g(to)g(the)g(problem) -45 2103 y(description.)19 b(Up)q(on)14 b(completion)e(of)h(this)h (call,)f(the)h(output)g(argumen)o(ts)f(con)o(tain)h(the)g(result)h(of)e (the)i(computation.)-45 2255 y Fd(>>)26 b Fg([r])e(=)h(netsolve)p 421 2255 16 2 v 16 w(nb\('send',)o(')p Fd(<)p Fc(pr)m(oblem)15 b(name)p Fd(>)p Fg(',)26 b(...\))p -45 2271 1314 2 v -45 2358 a Fp(Sends)17 b(a)e Fq(non-blo)q(c)o(king)d Fp(request)17 b(to)f(NetSolv)o(e.)24 b(The)16 b(righ)o(t-hand)f(side)h (con)o(tains)f(the)i(k)o(eyw)o(ord)e Fm(send)p Fp(,)g(the)h(problem)-45 2407 y(name,)g(and)g(the)h(list)f(of)g(input)h(argumen)o(ts.)25 b(These)18 b(argumen)o(ts)e(are)h(listed)f(according)h(to)f(the)i (problem)d(description.)-45 2457 y(The)f(left-hand)g(side)g(will)e(con) o(tain)i(a)f(request)j(handler)e(up)q(on)g(completion)e(of)h(the)i (call.)-45 2610 y Fd(>>)26 b Fg([)f(...)50 b(])h(=)25 b(netsolve)p 575 2610 16 2 v 16 w(nb\('wait')o(,r\))p -45 2623 941 2 v 909 2828 a Fp(48)p eop %%Page: 49 51 49 50 bop -45 195 a Fm(Waits)14 b Fp(for)h(a)g(requests)i(completion.)k (The)16 b(righ)o(t-hand)e(side)i(con)o(tains)f(the)h(k)o(eyw)o(ord)f Fm(wait)f Fp(and)i(the)f(request)i(handler.)-45 245 y(The)h(left-hand)f (side)h(con)o(tains)f(the)h(output)g(argumen)o(ts.)28 b(These)18 b(argumen)o(ts)f(are)h(listed)f(according)h(to)f(the)h (problem)-45 295 y(description.)23 b(The)16 b(righ)o(t-hand)f(side)h (con)o(tains)f(the)h(k)o(eyw)o(ord)g Fm(wait)e Fp(and)h(the)h(request)h (handler.)23 b(Up)q(on)16 b(completion)e(of)-45 345 y(this)g(call,)f (the)h(output)g(argumen)o(ts)f(con)o(tain)h(the)g(result)h(of)e(the)i (computation.)-45 497 y Fd(>>)26 b Fg([)f(status)e(])i(=)h(netsolve)p 601 497 16 2 v 15 w(nb\('probe',)o(r\))p -45 515 992 2 v -45 600 a Fm(Probes)12 b Fp(for)i(a)f(request)i(completion.)h(The)e (righ)o(t-hand)f(side)h(con)o(tains)g(the)g(k)o(eyw)o(ord)g Fm(probe)e Fp(and)i(the)g(request)h(handler.)-45 649 y(The)j(left-hand)f(side)h(con)o(tains)f(the)h(output)g(argumen)o(ts.) 28 b(These)18 b(argumen)o(ts)f(are)h(listed)f(according)h(to)f(the)h (problem)-45 699 y(description.)i(The)14 b(righ)o(t-hand)g(side)g(con)o (tains)h(the)f(k)o(eyw)o(ord)h Fm(probe)e Fp(and)h(the)h(request)h (handler.)j(Up)q(on)14 b(completion)f(of)-45 749 y(this)h(call,)f(the)h (output)g(argumen)o(ts)f(con)o(tain)h(the)g(result)h(of)e(the)i (computation.)-45 901 y Fd(>>)26 b Fg(netsolve)p 268 901 16 2 v 15 w(nb\('status)o('\))p -45 912 633 2 v -45 1004 a Fp(Prin)o(ts)15 b(out)f(the)i(list)e(of)g(all)f(the)i(p)q (ending)g(requests.)22 b(This)14 b(list)g(con)o(tains)g(estimated)g (time)g(of)g(completion,)e(the)j(compu-)-45 1054 y(tational)e(serv)o (ers)i(handling)e(the)h(requests)i(and)e(the)g(curren)o(t)i(status.)j (The)14 b(status)h(can)f(b)q(e)g Fm(COMPLETED)e Fp(or)i Fm(RUNNING)p Fp(.)-45 1206 y Fd(>>)26 b Fg(nesolve)p 242 1206 16 2 v 15 w(err)p -45 1214 377 2 v -45 1309 a Fp(Returns)15 b(the)f(error)h(co)q(de)g(of)e(the)i(most)d(recen)o (tly)j(called)f(NetSolv)o(e)g(function.)-45 1461 y Fd(>>)26 b Fg(netsolve)p 268 1461 16 2 v 15 w(errmsg\(e\))p -45 1479 556 2 v -45 1564 a Fp(Returns)13 b(a)g(string)f(that)h(con)o (tains)f(he)h(error)h(message)e(that)g(corresp)q(onds)j(to)d(the)h (error)h(co)q(de)f(passed)h(as)e(the)i(argumen)o(t.)909 2828 y(49)p eop %%Page: 50 52 50 51 bop -45 509 a Fl(App)s(endix)33 b(B)-45 720 y Fn(C)39 b(Reference)e(Man)m(ual)-45 939 y Fp(W)m(e)11 b(describ)q(e)j(here)f (all)e(the)h(p)q(ossible)g(calls)g(to)g(NetSolv)o(e)g(from)e(C.)h(All)g (these)i(calls)f(return)h(a)f(NetSolv)o(e)g(co)q(de)g(status.)19 b(The)-45 989 y(list)13 b(of)h(the)g(p)q(ossible)g(co)q(de)h(status)g (is)e(giv)o(en)h(in)f(App)q(endix)i(D.)-45 1141 y Fg(status)23 b(=)j(netsl\(")p Fd(<)p Fc(pr)m(oblem)16 b(name\(\))p Fd(>)p Fg(\(\)",)24 b(...\))p -45 1160 1054 2 v -45 1244 a Fp(Sends)15 b(a)e Fq(blo)q(c)o(king)f Fp(request)j(to)e(NetSolv)o(e.) 19 b Fm(netsl\(\))12 b Fp(tak)o(es)i(as)g(argumen)o(t)f(the)h(name)e (of)i(the)g(problem)e(and)i(the)g(list)g(of)-45 1294 y(argumen)o(ts)f(in)h(the)h(calling)d(sequence.)21 b(See)15 b(Section)f(4.3.2)f(for)g(a)h(discussion)h(ab)q(out)f(this)g(calling)f (sequence.)20 b(It)14 b(returns)-45 1343 y(the)i(NetSolv)o(e)f(status)h (co)q(de)g(\(in)o(teger)g Fm(status)p Fp(\).)k(If)15 b(the)h(call)e(is)h(successful,)i(the)e(result)h(of)f(the)h (computation)d(is)i(stored)-45 1393 y(in)e(the)i(output)f(argumen)o (ts.)j(The)e(output)f(argumen)o(ts)f(are)h(sp)q(eci\014ed)i(in)d(the)h (calling)f(sequence.)-45 1546 y Fg(status)23 b(=)j(netslnb\(")o Fd(<)p Fc(pr)m(oblem)16 b(name\(\))p Fd(>)p Fg(\(\)",)24 b(...\))p -45 1565 1105 2 v -45 1648 a Fp(Sends)18 b(a)f Fq(non)o(blo)q(c)o(kin)o(g)d Fp(request)19 b(to)e(NetSolv)o(e.)28 b Fm(netslnb\(\))15 b Fp(tak)o(es)i(as)g(argumen)o(t)f(the)i(name)e(of) g(the)i(problem,)e(and)-45 1698 y(the)f(list)f(of)g(argumen)o(ts)f(in)h (the)h(calling)e(sequence.)21 b(See)16 b(Section)e(4.3.2)f(for)h(a)g (discussion)h(ab)q(out)f(this)g(calling)f(sequence.)-45 1748 y(It)i(returns)i(the)f(NetSolv)o(e)g(status)g(co)q(de)g(\(in)o (teger)g Fm(status)p Fp(\).)21 b(If)15 b(the)h(call)f(is)g(successful,) i Fm(status)d Fp(con)o(tains)h(the)h(request)-45 1798 y(handler.)-45 1950 y Fg(status)23 b(=)j(netslwt\()p Fd(<)p Fc(r)m(e)n(quest)15 b(hand)r(ler)p Fd(>)p Fg(\))p -45 1966 860 2 v -45 2053 a Fq(W)l(aits)g Fp(for)h(a)g(request)i (completion.)23 b Fm(netslwt\(\))14 b Fp(tak)o(es)j(as)f(argumen)o(t)f (a)h(request)h(handler)g(\(an)f(in)o(teger\).)25 b(If)16 b(the)h(call)-45 2103 y(is)f(successful,)i(the)f(result)f(of)g(the)h (computation)d(is)i(stored)h(in)f(the)g(output)h(argumen)o(ts.)23 b(The)17 b(output)f(argumen)o(ts)g(are)-45 2152 y(sp)q(eci\014ed)f(in)f (the)g(calling)f(sequence)j(during)d(the)i(call)e(to)h Fm(netslnb\(\))p Fp(.)-45 2305 y Fg(status)23 b(=)j(netslpr\()p Fd(<)p Fc(r)m(e)n(quest)15 b(hand)r(ler)p Fd(>)p Fg(\))p -45 2322 V -45 2407 a Fq(Prob)q(es)f Fp(for)g(a)h(request)h (completion.)j Fm(netslpr\(\))13 b Fp(tak)o(es)j(as)f(argumen)o(t)e(a)i (request)h(handler)f(\(an)g(in)o(teger\).)22 b(If)14 b(the)i(call)-45 2457 y(is)g(successful,)i(the)f(result)f(of)g(the)h (computation)d(is)i(stored)h(in)f(the)g(output)h(argumen)o(ts.)23 b(The)17 b(output)f(argumen)o(ts)g(are)-45 2507 y(sp)q(eci\014ed)f(in)f (the)g(calling)f(sequence)j(during)d(the)i(call)e(to)h Fm(netslnb\(\))p Fp(.)-45 2659 y Fg(netslerr\()p Fd(<)p Fc(err)m(or)g(c)n(o)n(de)p Fd(>)p Fg(\))p -45 2670 546 2 v 909 2828 a Fp(50)p eop %%Page: 51 53 51 52 bop -45 248 a Fp(Displa)o(ys)13 b(an)h(explicit)f(error)i (message)e(giv)o(en)h(a)f(NetSolv)o(e)i(error)f(co)q(de.)-45 400 y Fg(netslmajor)o(\(")p Fd(<)p Fc(m)o(ajor)p Fd(>)p Fg(")o(\))p -45 418 560 2 v -45 503 a Fp(Sets)g(the)g(w)o(a)o(y)e(the)h (user)h(has)f(stored)h(her)g(matrices)f(\(ro)o(w-)f(or)h (column-wise\).)k(The)c(argumen)o(t)f(can)h(b)q(e)h Fm("col")e Fp(or)h Fm("row")p Fp(.)-45 553 y(It)h(is)g(case-insensitiv)o(e)h(and)e (in)h(fact)g(only)f(the)h(\014rst)h(c)o(haracter)g(is)f(used)h(b)o(y)e (NetSolv)o(e.)909 2828 y(51)p eop %%Page: 52 54 52 53 bop -45 509 a Fl(App)s(endix)33 b(C)-45 720 y Fn(F)-10 b(ortran)40 b(Reference)e(Man)m(ual)-45 939 y Fp(W)m(e)17 b(describ)q(e)j(here)f(all)e(the)h(p)q(ossible)g(calls)g(to)g(NetSolv)o (e)g(from)e(F)m(ortran.)30 b(All)17 b(these)i(calls)e(return)i(a)f (NetSolv)o(e)g(co)q(de)-45 989 y(status.)h(The)14 b(list)g(of)f(the)h (p)q(ossible)g(co)q(de)h(status)g(is)f(giv)o(en)f(in)g(App)q(endix)i (D.)-45 1141 y Fg(CALL)24 b(FNETSL\(')p Fd(<)p Fc(pr)m(oblem)16 b(name\(\))p Fd(>)p Fg(\(\)',INFO,)22 b(...\))p -45 1160 1105 2 v -45 1244 a Fp(Sends)16 b(a)f Fq(blo)q(c)o(king)e Fp(request)k(to)e(NetSolv)o(e.)23 b Fm(FNETSL\(\))14 b Fp(tak)o(es)i(as)f(argumen)o(t)f(the)i(name)e(of)h(the)h(problem,)e (an)h(in)o(teger,)-45 1294 y(and)h(the)h(list)f(of)g(argumen)o(ts)f(in) h(the)h(calling)e(sequence.)27 b(See)18 b(Section)e(4.3.2)f(for)h(a)g (discussion)h(ab)q(out)f(this)g(calling)f(se-)-45 1343 y(quence.)20 b(When)14 b(the)h(call)e(returns,)i(the)g(in)o(teger)f Fm(INFO)f Fp(con)o(tains)h(the)h(NetSolv)o(e)f(status)h(co)q(de.)k(If) 14 b(the)h(call)e(is)h(successful,)-45 1393 y(the)g(result)h(of)d(the)j (computation)c(is)j(stored)g(in)g(the)g(output)f(argumen)o(ts.)18 b(The)c(output)f(argumen)o(ts)g(are)h(sp)q(eci\014ed)h(in)e(the)-45 1443 y(calling)f(sequence.)-45 1595 y Fg(CALL)24 b(FNETSLNB\(')o Fd(<)p Fc(pr)m(oblem)16 b(name\(\))p Fd(>)p Fg(\(\)',INFO,)23 b(...\))p -45 1615 1157 2 v -45 1698 a Fp(Sends)18 b(a)f Fq(non)o(blo)q(c)o(kin)o(g)d Fp(request)19 b(to)e(NetSolv)o(e.)28 b Fm(FNETSLNB\(\))15 b Fp(tak)o(es)j(as)f(argumen)o(t)f(the)i(name)e (of)g(the)i(problem,)e(an)-45 1748 y(in)o(teger,)c(and)g(the)g(list)f (of)g(argumen)o(ts)g(in)g(the)i(calling)d(sequence.)19 b(See)13 b(Section)f(4.3.2)e(for)h(a)h(discussion)g(ab)q(out)g(this)f (calling)-45 1798 y(sequence.)20 b(It)13 b(returns)h(the)f(NetSolv)o(e) g(status)h(co)q(de)f(\(in)o(teger)g Fm(status)p Fp(\).)k(If)12 b(the)i(call)d(is)i(successful,)h Fm(status)e Fp(con)o(tains)g(the)-45 1847 y(request)j(handler.)-45 2000 y Fg(CALL)24 b(FNETSLWT\()p Fd(<)p Fc(r)m(e)n(quest)15 b(hand)r(ler)p Fd(>)p Fg(,INFO\))p -45 2016 912 2 v -45 2103 a Fq(W)l(aits)c Fp(for)h(a)f(request)j (completion.)i Fm(FNETSLWT\(\))9 b Fp(tak)o(es)k(as)f(argumen)o(t)f(a)g (request)j(handler)e(and)g(an)f(in)o(teger.)18 b(When)12 b(the)-45 2152 y(call)h(returns,)h(INF)o(O)g(con)o(tains)f(the)h (NetSolv)o(e)g(status)g(co)q(de.)19 b(If)13 b(the)h(call)f(is)g (successful,)i(the)f(result)g(of)f(the)h(computation)-45 2202 y(is)i(stored)h(in)e(the)i(output)f(argumen)o(ts.)23 b(The)16 b(output)g(argumen)o(ts)g(are)g(sp)q(eci\014ed)h(in)f(the)g (calling)f(sequence)j(during)d(the)-45 2252 y(call)e(to)h Fm(FNETSLNB\(\))p Fp(.)-45 2404 y Fg(CALL)24 b(FNETSLPR\()p Fd(<)p Fc(r)m(e)n(quest)15 b(hand)r(ler)p Fd(>)p Fg(,INFO\))p -45 2421 V -45 2507 a Fq(Prob)q(es)e Fp(for)i(a)f(request)j (completion.)i Fm(FNETSLPR\(\))13 b Fp(tak)o(es)i(as)g(argumen)o(t)e(a) i(request)h(handler)f(and)g(an)g(in)o(teger.)21 b(When)-45 2557 y(the)15 b(call)f(returns,)i(INF)o(O)f(con)o(tains)g(the)g (NetSolv)o(e)g(status)g(co)q(de.)21 b(If)15 b(the)g(call)f(is)g (successful,)i(the)g(result)f(of)f(the)h(compu-)-45 2607 y(tation)d(is)h(stored)h(in)e(the)i(output)f(argumen)o(ts.)k(The)d (output)f(argumen)o(ts)f(are)h(sp)q(eci\014ed)i(in)d(the)i(calling)d (sequence)k(during)-45 2656 y(the)f(call)g(to)f Fm(FNETSLNB\(\))p Fp(.)909 2828 y(52)p eop %%Page: 53 55 53 54 bop -45 298 a Fg(CALL)24 b(FNETSLERR\()o Fd(<)p Fc(err)m(or)14 b(c)n(o)n(de)p Fd(>)p Fg(\))p -45 309 700 2 v -45 400 a Fp(Displa)o(ys)f(an)h(explicit)f(error)i(message)e (giv)o(en)h(a)f(NetSolv)o(e)i(error)f(co)q(de.)-45 553 y Fg(CALL)24 b(FNETSLMAJO)o(R\(')o Fd(<)p Fc(major)o Fd(>)p Fg('\))p -45 569 714 2 v -45 655 a Fp(Sets)14 b(the)g(w)o(a)o(y)e(the)h(user)h(has)f(stored)h(her)g(matrices)f(\(ro)o (w-)f(or)h(column-wise\).)k(The)c(argumen)o(t)f(can)h(b)q(e)h Fm('col')e Fp(or)h Fm('row')p Fp(.)-45 705 y(It)h(is)g(case-insensitiv) o(e)h(and)e(in)h(fact)g(only)f(the)h(\014rst)h(c)o(haracter)g(is)f (used)h(b)o(y)e(NetSolv)o(e.)909 2828 y(53)p eop %%Page: 54 56 54 55 bop -45 509 a Fl(App)s(endix)33 b(D)-45 720 y Fn(Error)40 b(Co)s(des)f(for)g(C)f(and)h(F)-10 b(ortran)909 2828 y Fp(54)p eop %%Page: 55 57 55 56 bop 95 155 1671 2 v 94 205 2 50 v 103 205 V 128 190 a Fp(ERR)o(OR)13 b(CODE)p 792 205 V 403 w(V)-5 b(ALUE)p 985 205 V 51 w(MEANING)p 1765 205 V 95 207 1671 2 v 94 257 2 50 v 103 257 V 128 242 a(NetSolv)o(eOK)p 792 257 V 527 w(0)p 985 257 V 111 w(No)14 b(NetSolv)o(e)g(error)p 1765 257 V 94 306 V 103 306 V 128 291 a(NetSolv)o(eNotReady)p 792 306 V 401 w(-1)p 985 306 V 104 w(Request)h(still)e(p)q(ending)p 1765 306 V 94 356 V 103 356 V 128 341 a(NetSolv)o(eSetNetSolv)o(eAgen)o (t)p 792 356 V 259 w(-2)p 985 356 V 104 w Fm(NETSOLVE)p 1190 341 14 2 v 14 w(AGENT)g Fp(v)n(ariable)g(should)g(b)q(e)i(set)p 1765 356 2 50 v 94 406 V 103 406 V 128 391 a(NetSolv)o(eSetNetSolv)o (eRo)q(ot)p 792 406 V 277 w(-3)p 985 406 V 104 w Fm(NETSOLVE)p 1190 391 14 2 v 14 w(ROOT)e Fp(v)n(ariable)g(should)g(b)q(e)i(set)p 1765 406 2 50 v 94 456 V 103 456 V 128 441 a(NetSolv)o(eSetNetSolv)o (eArc)o(h)p 792 456 V 280 w(-4)p 985 456 V 104 w Fm(NETSOLVE)p 1190 441 14 2 v 14 w(ARCH)e Fp(v)n(ariable)g(should)g(b)q(e)i(set)p 1765 456 2 50 v 94 506 V 103 506 V 128 491 a(NetSolv)o(eIn)o (ternalError)p 792 506 V 344 w(-5)p 985 506 V 104 w(In)o(ternal)f (NetSolv)o(e)g(error)p 1765 506 V 94 555 V 103 555 V 128 540 a(NetSolv)o(eUnkno)o(wnHost)p 792 555 V 328 w(-6)p 985 555 V 104 w(Imp)q(ossible)f(to)g(resolv)o(e)i(hostname)p 1765 555 V 94 605 V 103 605 V 128 590 a(NetSolv)o(eNet)o(w)o(orkError)p 792 605 V 335 w(-7)p 985 605 V 104 w(Net)o(w)o(ork)f(error)p 1765 605 V 94 655 V 103 655 V 128 640 a(NetSolv)o(eUnkno)o(wnProblem)p 792 655 V 258 w(-8)p 985 655 V 104 w(Unkno)o(wn)g(problem)e(nic)o (kname)p 1765 655 V 94 705 V 103 705 V 128 690 a(NetSolv)o(eProto)q (colError)p 792 705 V 333 w(-9)p 985 705 V 104 w(Proto)q(col)i(error)p 1765 705 V 94 755 V 103 755 V 128 740 a(NetSolv)o(eNoServ)o(er)p 792 755 V 410 w(-10)p 985 755 V 93 w(No)g(serv)o(er)h(a)o(v)n(ailable)d (for)h(this)h(computation)p 1765 755 V 94 804 V 103 804 V 128 790 a(NetSolv)o(eBadProblemSp)q(eci\014cation)p 792 804 V 118 w(-11)p 985 804 V 93 w(Bad)g(input)g(of)f(output)h (supplied)p 1765 804 V 94 854 V 103 854 V 128 839 a(NetSolv)o(eNotAllo) o(w)o(ed)p 792 854 V 361 w(-12)p 985 854 V 93 w(Op)q(eration)g(not)g (allo)o(w)o(ed)p 1765 854 V 94 904 V 103 904 V 128 889 a(NetSolv)o(eBadV)m(alues)p 792 904 V 383 w(-13)p 985 904 V 93 w(Bad)g(input)g(data)f(supplied)p 1765 904 V 94 954 V 103 954 V 128 939 a(NetSolv)o(eDimensionMismatc)o(h)p 792 954 V 202 w(-14)p 985 954 V 93 w(Matrix)g(or)h(V)m(ector)h (dimension)d(mismatc)o(h)p 1765 954 V 94 1004 V 103 1004 V 128 989 a(NetSolv)o(eNoSolution)p 792 1004 V 371 w(-15)p 985 1004 V 93 w(No)i(solution)f(for)g(this)h(problem)p 1765 1004 V 94 1054 V 103 1054 V 128 1039 a(NetSolv)o(eUnkno)o(wnError) p 792 1054 V 305 w(-16)p 985 1054 V 93 w(Unkno)o(wn)g(error)p 1765 1054 V 94 1103 V 103 1103 V 128 1088 a(NetSolv)o(eIn)o(v)n (alidRequestID)p 792 1103 V 258 w(-17)p 985 1103 V 93 w(In)o(v)n(alid)e(request)k(handle)p 1765 1103 V 94 1153 V 103 1153 V 128 1138 a(NetSolv)o(eBadProblemName)p 792 1153 V 241 w(-18)p 985 1153 V 93 w(In)o(v)n(alid)c(problem)h(nic)o (kname)p 1765 1153 V 94 1203 V 103 1203 V 128 1188 a(NetSolv)o(eIn)o(v) n(alidMa)r(jor)p 792 1203 V 345 w(19)p 985 1203 V 100 w(In)o(v)n(alid)f(ma)r(jor)g(sp)q(eci\014cation)p 1765 1203 V 94 1253 V 103 1253 V 128 1238 a(NetSolv)o(eT)m(o)q(oMan)o(yP)o (endingRequests)p 792 1253 V 94 w(-20)p 985 1253 V 93 w(T)m(o)q(o)h(man)o(y)f(p)q(ending)i(requests)p 1765 1253 V 94 1303 V 103 1303 V 128 1288 a(NetSolv)o(eFileError)p 792 1303 V 408 w(-21)p 985 1303 V 93 w(Error)h (accessing/creating/deleting)f(a)g(\014le)p 1765 1303 V 94 1352 V 103 1352 V 128 1337 a(NetSolv)o(eUnkno)o(wnDataF)m(ormat)p 792 1352 V 178 w(-22)p 985 1352 V 93 w(Unkno)o(wn)g(host)g(arc)o (hitecture)p 1765 1352 V 94 1402 V 103 1402 V 128 1387 a(NetSolv)o(eIn)o(v)n(alidUPFFilename)p 792 1402 V 196 w(-23)p 985 1402 V 93 w(Filename)e(do)q(es)j(not)f(end)g(in)f Fm(.c)h Fp(or)g Fm(.f)p 1765 1402 V 94 1452 V 103 1452 V 128 1437 a Fp(NetSolv)o(eMismatc)o(h)p 792 1452 V 395 w(-24)p 985 1452 V 93 w(In)o(ternal)g(mismatc)o(h)p 1765 1452 V 94 1502 V 103 1502 V 128 1487 a(NetSolv)o(eSystemError)p 792 1502 V 346 w(-25)p 985 1502 V 93 w(System)f(error)p 1765 1502 V 94 1552 V 103 1552 V 128 1537 a(NetSolv)o (eConnectionRefused)p 792 1552 V 227 w(-26)p 985 1552 V 93 w(Imp)q(ossible)g(to)g(connect)j(to)d(host)p 1765 1552 V 94 1601 V 103 1601 V 128 1587 a(NetSolv)o(eCannotBind)p 792 1601 V 353 w(-27)p 985 1601 V 93 w(Cannot)g(bind)h(to)g(p)q(ort)p 1765 1601 V 94 1651 V 103 1651 V 128 1636 a(NetSolv)o(eUPFError)p 792 1651 V 391 w(-28)p 985 1651 V 93 w(Imp)q(ossible)f(to)g(compile)g (UPF)p 1765 1651 V 94 1701 V 103 1701 V 128 1686 a(NetSolv)o (eUPFUnsafe)p 792 1701 V 366 w(-29)p 985 1701 V 93 w(UPF)h(is)g(unsafe) p 1765 1701 V 94 1751 V 103 1751 V 128 1736 a(NetSolv)o(eServ)o (erError)p 792 1751 V 365 w(-30)p 985 1751 V 93 w(Serv)o(er)h(in)o (ternal)e(error)p 1765 1751 V 94 1801 V 103 1801 V 128 1786 a(NetSolv)o(eBadIterationRange)p 792 1801 V 229 w(-31)p 985 1801 V 93 w(Bad)h(farming)d(range)k(sp)q(eci\014cation)p 1765 1801 V 94 1851 V 103 1851 V 128 1836 a(NetSolv)o(eF)m(armingError) p 792 1851 V 324 w(-32)p 985 1851 V 93 w(One)g(or)e(more)g(farming)f (request)j(failed)p 1765 1851 V 95 1852 1671 2 v 909 2828 a(55)p eop %%Page: 56 58 56 57 bop -45 509 a Fl(App)s(endix)33 b(E)-45 720 y Fn(NetSolv)m(e)39 b(Ja)m(v)-6 b(a)39 b(API)g(Reference)-45 939 y Fp(The)14 b(Ja)o(v)n(a)f(API)i(is)e(b)q(eing)h(con)o(v)o(erted)h(to)f(NetSolv)o (e)g(1.2.)909 2828 y(56)p eop %%Page: 57 59 57 58 bop -45 509 a Fl(App)s(endix)33 b(F)-45 720 y Fn(Complete)38 b(C)g(Example)-45 935 y Fb(#include)17 b("netsolv)o(e.h)o(")-45 980 y(#define)g(SIZE)h(100)-45 1072 y(main\(\))-45 1117 y({)-6 1163 y(double)g(a[SIZE*S)o(IZE)o(];)-6 1209 y(double)g(x1[SIZE]) o(,y1)o([SI)o(ZE)o(],x)o(2[)o(SIZ)o(E])o(,y2)o([SI)o(ZE)o(];)-6 1254 y(int)h(info,stat)o(us)o(;)-6 1300 y(int)g(i,init)e(=)i(1325;)-6 1391 y(for)g(\(i=0;i